马哥博客作业第四周

软件包管理

一、软件运行和编译

1. ABI : Application Binary Interface
2. API : Application Programming Interface

实现过程:C 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接 

主要经过的4个过程:

 

 

 二、静态链接和动态链接

静态链接

  • 把程序对应的依赖库复制一份到包
  • 生成模块文件libxxx.a
  • 嵌入程序包 升级难,需重新编译
  • 占用较多空间,迁移容易

动态链接

  • 只把依赖加做一个动态链接
  • 生成模块文件libxxx.so
  • 连接指向
  • 占用较少空间,升级方便

 三、软件包和包管理器

1.软件包的文件分类:  二进制文件  库文件  配置文件  帮助文件

2.主流的程序包管理器:redhat:rpm文件, rpm 包管理器      

             debian:deb文件, dpkg 包管理器

3.包的依赖工具:

  • yum:rpm包管理器的前端工具
  • dnf:Fedora 18+ rpm包管理器前端管理工具,CentOS 8 版代替 yum
  • apt:deb包管理器前端工具
  • zypper:suse上的rpm前端管理工具

4.程序包管理器相关文件

包文件组成(每个包独有): 包内的文件  元数据(包的名称、版本、依赖性、描述)  可能会有包安装或卸载是运行的脚本

数据库(公共)/var/lib/rpm: 程序包名称及版本  依赖关系  功能说明  包安装后生成的个文件路径及校验码信息

5.获取程序包的途径

CentOS镜像:

https://www.centod.org/download/
http://miirors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com

Fedora-EPEL
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/

 

四、包管理器rpm

功能: 安装  卸载  升级  查询  校检  数据库维护

格式:rpm {-i|--install} [install-options] PACKAGE_FILE

选项:

    -i 安装      -v: 显示过程

    -vv:        -h: 以#显示程序包管理执行进度

rpm包安装

--test:       测试安装,但不真正执行安装,即dry run模式

--nodeps:      忽略依赖关系

--replacepkgs | replacefiles

--nosignature:    不检查来源合法性

--nodigest:    不检查包完整性

--noscripts:      不执行程序包脚本

%pre:       安装前脚本 --nopre

%post:        安装后脚本 --nopost

%preun:        卸载前脚本 --nopreun

%postun:       卸载后脚本 --nopostun

升级和降级

有旧版,升级
rpm -U [install-option] PACKAGE_FILE

没有旧版,不升级
rpm -F [install-option] PACKAGE_FILE

示例
rpm -Uvh PACKAGE_FILE

[install-options]
--oldpackage降级
--force 强制安装

rpm包查询

格式:rpm {-q|--query} [select-options] [query-options]

选项

[select-options]

  • -a:所有包
  • -f:查看指定的文件由哪个程序包安装生成
  • -p rpmfile:针对尚未安装的程序包文件做查询操作

[query-options]

  • --changelog:查询rpm包的changelog
  • -c:查询程序的配置文件
  • -d:查询程序的文档
  • -i:information
  • -l:查看指定的程序包安装后生成的所有文件
  • --scripts:程序包自带的脚本

#和CAPABILITY相关

  • --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
  • --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
  • --provides:列出指定程序包所提供的CAPABILITY
  • -R:查询指定的程序包所依赖的CAPABILITY

查看指定的包安装后生成的所有文件:  rpm -ql httpd

rpm包卸载: rpm -e [OPTIONS] PACKAGE_FILE

rpm包校验:rpm -V [select-option] [verify-options]

S   file Size differs

M   Mode differs (includes permissions and file type)

5   digest (formerly MD5 sum) differs

D   Device major/minor number mismatch

L   readLink(2) path mismatch

U   User ownership differs

G   Group ownership differs

T   mTime differs

P   capabilities differ

.    (点) 表示当前位置代表的字符含义一致
c   所在的位置表示文件类型

c    配置文件

d    文件数据文件

g   该文件不属于某个文件(极少情况)

l    许可证文件(license file)

r   自述文件(READ ME)

rpm数据库

数据库重建
/var/lib/rpm

rpm {--initdb| --rebuiddb}

initdb初始化

rebuilddb 重建

五、yum和dnf

1. yum客户端配置文件

/etc/yum.conf                   #为所有仓库提供公共配置

/etc/yum.repos.d/*.repo:    #为每个仓库的提供配置文件

/var/log/yum.log      #日志文件

2、yum-config-manager命令.

#增加仓库   yum-config-manager --add-repo URL或file

#禁用仓库   yum-config-manager --disable “仓库名"

#启用仓库   yum-config-manager --enable  “仓库名”

3、yum命令

格式:yum [options] [command] [package ...]

选项:

-y                                     #自动回答为“yes”

-q                                       #静默模式

--nogpgcheck                         #禁止进行

gpg check --enablerepo=repoidglob     #临时启用此处指定的repo,支持通配符,如:”*“

--disablerepo=repoidglob           #临时禁用此处指定的repo,和上面语句同时使用,放在后面的生效

4.1显示仓库列表:yum repolist [all|enabled|disabled]

4.2显示程序包:yum list

           yum list [all | glob_exp1] [glob_exp2] [...]

        yum list {available|installed|updates} [glob_exp1] [...]

4.3安装程序包:yum install package1 [package2] [...]

           yum reinstall package1 [package2] [...]  #重新安装

4.4卸载程序包:yum remove | erase package1 [package2] [...]

4.5升级和降级:yum update [package1] [package2] [...]

           yum downgrade package1 [package2] [...] (降级)

4.6查看程序包:yum info [...]

4.7查看指定的特性(可以是某个文件)是由哪个程序包所提供的

yum provides | whatprovides feature1 [feature2] [...]

注意:文件要写全路径,而不只是文件名,否则无法查询到

4.8以指定的关键字搜索程序包名及summary信息

yum search string1 [string2] [...]

4.9查看指定包所依赖的capabilities

yum deplist package1 [package2] [...]

4.10仓库缓存:yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

4.11构建仓库:yum makecache

4.12安装及升级本地程序包:yum localinstall|install  rpmfile1 [rpmfile2] [...]

             yum localupdate|update rpmfile1 [rpmfile2] [...]

4.13包组管理的相关命令:yum grouplist [hidden] [groupwildcard] [...]

                    yum groupinstall group1 [group2] [...]

               yum groupupdate group1 [group2] [...]

               yum groupremove group1 [group2] [...]

               yum groupinfo group1 [...]

4.14创建私有yum仓库:createrepo [options] <directory>

五、DNF  用法和yum一样

5.1配置文件:

/etc/dnf/dnf.conf  

5.2仓库文件:

/etc/yum.repos.d/ *.repo

5.3日志:

/var/log/dnf.rpm.log

/var/log/dnf.log

5.4yum 和 dnf 失败主要原因:

yum的配置文件格式或路径错误   解决方法:  检查/etc/yum.repos.d/*.repo文件格式 y

um cache   解决方法:  yum clean all

网络不通:   解决方法:  网卡配置

 

posted @ 2020-04-12 09:17  郑瑞  阅读(152)  评论(0)    收藏  举报