17. Linux软件包管理
- Date:
2018-09-02
linux环境下有2种软件管理软件,分别是rpm和dpkg。
发行版代表 |
软件管理机制 |
使用命令 |
线上升级机制 |
|---|---|---|---|
Red Hat/Fedora |
RPM |
rpm,rpmbuild |
yum |
Debian/Ubuntu |
DPKG |
dpkg |
apt-get |
17.1. rpm管理
- rpm软件包的管理分为两种:
用rpm直接安装卸载管理
用yum工具管理rpm软件包
17.1.1. rpm包格式
- 样例:
ftp-0.17-54.el6.x86_64.rpm
ftp |
软件名称 |
0.17 |
软件版本 |
54 |
编译次数 |
el6 |
红帽企业6 |
x86_64 |
适合的硬件平台,有i386,i586,i686,x_86_6,noarch |
.rpm |
rpm的扩展名 |
17.1.2. rpm的优点
rpm内部宝航已经编译过程序和配置等数据,可以让用户免去重新编译的困扰。
rpm在被安装之前,会自动检查磁盘容量,操作系统环境,避免错误安装。
rpm文件本身提供软件信息,依赖性软件,方便用户了解软件信息
便于升级、移除、查询和验证工作。
17.1.3. rpm管理rpm软件包
17.1.3.1. 安装
-h |
以#来表示安装的进度 |
-v |
显示安装过程的详细信息 |
-vvv |
显示更详细的信息 |
–test |
不执行真正的安装,只是测试下 |
–nodeps |
只卸载指定软件包,不卸载依赖的软件包,忽略软件依赖关系 |
–replacepkgs |
覆盖安装 |
–force |
强制安装 |
17.1.3.2. 升级
–oldpackage |
降级到旧版本 |
-U |
升级或者安装 |
-F |
升级 |
17.1.3.3. 卸载
-e |
卸载 |
–nodeps |
只卸载指定软件包,不卸载依赖的软件包,忽略软件依赖关系 |
–allmatches |
如果一个安装包安装多个版本,就都卸载 |
17.1.3.4. 查询
查询相关选项
-q |
查询 |
-a |
所有包 |
-f |
查询文件有那个包安装的 |
-i |
查询安装的包信息 |
-l |
列出包安装提供的文件列表 |
-c |
列出安装的配置文件 |
-d |
列出安装的帮助文档信息 |
–changlog |
列出版本变化信息 |
–provides |
列出包提供的能力,能使用的命令 |
–requires |
查询包依赖于那个包 |
–scripts |
查询包安装前和安装后脚本,preinstall,preuninstall,postinstall,postuninstall |
17.1.3.5. 校验
校验包使用-V选项
S size |
文件大小被修改了 |
M mode |
文件的类型或者属性被修改了 |
5 md5 |
文件的指纹信息不同了 |
D device |
文件的主设备号变了 |
L link |
文件link路径变化了 |
U user |
所有者变了 |
G group |
所属组变了 |
T time |
创建时间变了 |
P capabilities |
提供能力变化 |
17.1.3.6. 额外选项
-K |
验证包 |
–nosignature |
不检查包来源合法性 |
–nodigest |
不检查完整性 |
–initdb |
初始化数据库 |
–rebuliddb |
重建数据库 |
17.1.4. yum管理rpm软件包
yum是通过分析rpmde 标头信息,根据各个软件的依赖关系制作出有依赖关系的解决方案, 然后可以自动处理软件的依赖问题,以解决软件安装或移除与升级的问题。
注意
yum是python语言编写的。所以一般都是默认python2.6,如果升级了python,可能会导致yum不能用需要修改yum对应的python文件。
17.1.4.1. yum的配置
yum源配置需要配置到/etc/yum.repo.d目录下,且以repo作为后缀。
如果这个yum源没有配置的选项会自动用 /etc/yum.conf 中的配置替换。
yum是用python编写的工具。yum关联的本地系统python,如果改变了python环境可以通过修改 /usr/bin/yum
来修改关联的python。
主要片段
[repoid] |
仓库名字,全局唯一的 |
name |
仓库名字 |
url |
仓库的地址,支持ftp,http,file三种协议 |
enabled |
是否启用 |
gpgcheck |
是否包校验 |
gpgkey |
gpgkey文件路径 |
cachedir=/var |
yum安装的软件包在本地的缓存路径:/var/cache/yum/$basearch/$releasever |
keepcache=1 |
是否保留yun安装过的软件包。1是报错,0是不保存。默认不保存。 |
cost |
代价,默认1000,越小越优先 |
17.1.4.2. yum命令
子命令 |
功能 |
样例 |
install |
安装包 |
yum install tree |
update |
更新包 |
yum update tree |
downgrade |
降级 |
yum downgrade tree |
check-update |
检查那些升级可用 |
yum check-update |
remove |
移除包 |
yum remove tree |
list |
列出包 |
yum list all |grep tree |
info |
查看包详细信息 |
yum info tree |
provides |
查看包提供信息 |
yum provides tree |
clean |
清空特定缓存 |
yum clean all |
makecache |
制作缓存 |
yum makecache |
groupinstall |
包组安装 |
yum groupinstall development tools |
grouplist |
包组列表 |
yum grouplist development tools |
groupremove |
包组卸载 |
yum groupremvoe development tools |
groupinfo |
包组详细信息 |
yum groupinfo development tools |
search |
搜索相关包 |
yum search top |
localinstall |
本地安装 |
yum localinstall tree*.rpm |
reinstall |
重新安装包 |
yum reinstall tree -f |
deplist |
查看包依赖列表 |
yum deplist tree |
repolist |
查看仓库列表 |
yum repolist |
history |
安装历史 |
yum histrory |
yum history 这个是个比较好用的工具,支持redo和undo的。
样例:
1[root@zzjlogin backup]# yum history
2Loaded plugins: fastestmirror
3ID | Command line | Date and time | Action(s) | Altered
4-------------------------------------------------------------------------------
5 39 | install mdadm | 2018-02-10 17:34 | Install | 2
6 38 | install MariaDB-server M | 2018-02-08 18:55 | I, O | 5 EE
7 37 | remove mysql | 2018-02-08 18:50 | Erase | 2 EE
8 36 | install mariadb-server | 2018-02-06 15:38 | Install | 4
9 35 | install libsemanage-pyth | 2018-02-06 14:47 | Install | 1
10 34 | install libselinux-stati | 2018-02-06 14:45 | Install | 4
11 33 | install cifs-utils | 2018-02-06 10:14 | Install | 1
12 32 | install samba-client | 2018-02-06 09:39 | Install | 3
13 31 | install samba | 2018-02-06 09:37 | Install | 14
14 30 | install nfs-utils | 2018-02-04 18:18 | Install | 16
15 29 | install bind bind-utils | 2018-01-21 03:10 | Install | 1
16 28 | remove bind | 2018-01-21 01:42 | Erase | 1 EE
17 27 | install psmisc | 2018-01-20 13:29 | Install | 1
18 26 | install wget | 2018-01-20 11:12 | Install | 1
19 25 | remove Maria* | 2018-01-20 10:59 | Erase | 6 EE
20 24 | install mariadb-server | 2018-01-20 10:22 | Install | 2
21 23 | remove MariaDB-server Ma | 2018-01-20 09:47 | Erase | 2
22 22 | install MariaDB-server M | 2018-01-20 09:32 | I, O | 10 EE
23 21 | reinstall mariadb-server | 2018-01-19 16:53 | Reinstall | 2
24 20 | install mariadb-server | 2018-01-19 16:51 | Install | 10
25history list
26[root@zzjlogin backup]# yum history undo 39
17.1.5. rpm软件包生成
定制生成rpm软件包。需要通过编译安装的程序。然后再打包成rpm软件包
17.1.5.1. 源码编译安装
源码编译大概流程
./configure –help
./configure
make && make install
添加bin目录到path环境变量
创建软连接到/usr/include下
在帮助文档配置文件安装的帮助man目录
额外文件的配置,比如服务文件,默认配置文件等。
17.1.5.2. 生成定制rpm软件包
17.2. dpkg软件包安装
17.3. apt-get
apt-get和rpm软件包管理工具yum类似。用来解决dpkg软件包依赖以及在线安装问题。