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的优点

  1. rpm内部宝航已经编译过程序和配置等数据,可以让用户免去重新编译的困扰。

  2. rpm在被安装之前,会自动检查磁盘容量,操作系统环境,避免错误安装。

  3. rpm文件本身提供软件信息,依赖性软件,方便用户了解软件信息

  4. 便于升级、移除、查询和验证工作。

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. 源码编译安装

源码编译大概流程

  1. ./configure –help

  2. ./configure

  3. make && make install

  4. 添加bin目录到path环境变量

  5. 创建软连接到/usr/include下

  6. 在帮助文档配置文件安装的帮助man目录

  7. 额外文件的配置,比如服务文件,默认配置文件等。

17.1.5.2. 生成定制rpm软件包

17.2. dpkg软件包安装

17.3. apt-get

apt-get和rpm软件包管理工具yum类似。用来解决dpkg软件包依赖以及在线安装问题。