linux软件包rpm的使用 一rpm包管理器 (一)rpm的介绍 (二)包文件组成 (每个包独有)  (三)数据库(公共):/var/lib/rpm (四)程序包的来源 二rpm包管理 (一)使用rpm命令安装包 (二)rpm包安装的相关设置 (三)rpm包升级

(一)rpm的介绍

rpm不仅是文件的后缀,也是一个工具,外部命令,程序包管理器

功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作。

[root@centos71 ~]# which   rpm
/usr/bin/rpm

(二)包文件组成 (每个包独有) 

1RPM包内的文件    

2RPM的元数据,如名称,版本,依赖性,描述等。打包但没有压缩。  

3安装或卸载时运行的脚本。

rpm所谓的安装大部分是解压包,并且复制到设置好的路径。

要对复制的目录或者文件设置好相应的属性,比如文件的所有者和所属组。

如果系统没有这个账号那么就要编写脚本创建出来了。这是安装前的脚本。

系统中安装的软件是以rpm方式安装的。

安装好了之后那么Linux的数据库就会记录以rpm这种方式安装的所有包的信息。

可以查询在系统中安装了哪些rpm包,哪时候安装的,生成了哪些文件,在哪些目录里面。

 从光盘里面拷贝一个文件

[root@centos71 ~]# cd  /mnt/Packages/
[root@centos71 Packages]# cp    tree-1.6.0-10.el7.x86_64.rpm     /app/
[root@centos71 Packages]# cd /app/
[root@centos71 app]# ls
tree-1.6.0-10.el7.x86_64.rpm

(三)数据库(公共):/var/lib/rpm


程序包名称及版本
依赖关系
功能说明
包安装后生成的各文件路径及校验码信息

 /var/lib/rpm/下面的文件是很重要的,为了安全可以做备份。

[root@centos71 app]# cd  /var/lib/rpm/
[root@centos71 rpm]# ls
Basenames  Conflictname  __db.001  __db.002  __db.003  Dirnames  Group  Installtid  Name  Obsoletename  Packages  Providename  Requirename  Sha1header  Sigmd5  Triggername
[root@centos71 rpm]# ll
total 93708
-rw-r--r--. 1 root root  4247552 Jan 10 17:13 Basenames
-rw-r--r--. 1 root root    16384 Jan 10 12:08 Conflictname
-rw-r--r--. 1 root root   270336 Jan 10 17:13 __db.001
-rw-r--r--. 1 root root    81920 Jan 10 17:13 __db.002
-rw-r--r--. 1 root root  1318912 Jan 10 17:13 __db.003
-rw-r--r--. 1 root root  1146880 Jan 10 17:13 Dirnames
-rw-r--r--. 1 root root    32768 Jan 10 17:13 Group
-rw-r--r--. 1 root root    20480 Jan 10 17:13 Installtid
-rw-r--r--. 1 root root    69632 Jan 10 17:13 Name
-rw-r--r--. 1 root root    32768 Jan 10 12:08 Obsoletename
-rw-r--r--. 1 root root 85598208 Jan 10 17:13 Packages
-rw-r--r--. 1 root root  2486272 Jan 10 17:13 Providename
-rw-r--r--. 1 root root   544768 Jan 10 17:13 Requirename
-rw-r--r--. 1 root root   131072 Jan 10 17:13 Sha1header
-rw-r--r--. 1 root root    73728 Jan 10 17:13 Sigmd5
-rw-r--r--. 1 root root     8192 Jan 10 12:05 Triggername

在6上查看

[root@centos65 ~]# ls  /var/lib/rpm/
Basenames     Dirnames     Group       Name          Packages     Provideversion  Requirename     Sha1header  Triggername
Conflictname  Filedigests  Installtid  Obsoletename  Providename  Pubkeys         Requireversion  Sigmd5
[root@centos65 ~]# ls  /var/lib/rpm/  -lh
total 46M
-rw-r--r--. 1 root root 2.7M Mar  3 17:51 Basenames
-rw-r--r--. 1 root root  12K Jan 23 18:38 Conflictname
-rw-r--r--. 1 root root 908K Mar  3 17:51 Dirnames
-rw-r--r--. 1 root root 4.6M Mar  3 17:51 Filedigests
-rw-r--r--. 1 root root  16K Mar  3 17:51 Group
-rw-r--r--. 1 root root  16K Mar  3 17:51 Installtid
-rw-r--r--. 1 root root  24K Mar  3 17:51 Name
-rw-r--r--. 1 root root  12K Jan 23 18:45 Obsoletename
-rw-r--r--. 1 root root  39M Mar  3 17:51 Packages
-rw-r--r--. 1 root root 1.3M Mar  3 17:51 Providename
-rw-r--r--. 1 root root 640K Mar  3 17:51 Provideversion
-rw-r--r--. 1 root root  12K Jan 23 16:50 Pubkeys
-rw-r--r--. 1 root root 212K Mar  3 17:51 Requirename
-rw-r--r--. 1 root root 144K Mar  3 17:51 Requireversion
-rw-r--r--. 1 root root  80K Mar  3 17:51 Sha1header
-rw-r--r--. 1 root root  44K Mar  3 17:51 Sigmd5
-rw-r--r--. 1 root root  12K Jan 23 19:10 Triggername

(四)程序包的来源

(1) 系统发版的光盘或官方的服务器


CentOS镜像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com


(2) 项目官方站点

(3) 第三方组织


Fedora-EPEL:Extra Packages for Enterprise Linux

都是经过红帽测试过的,可以放心使用。

https://mirrors.aliyun.com/epel/

linux软件包rpm的使用
一rpm包管理器
(一)rpm的介绍
(二)包文件组成 (每个包独有) 
(三)数据库(公共):/var/lib/rpm
(四)程序包的来源
二rpm包管理
(一)使用rpm命令安装包
(二)rpm包安装的相关设置
(三)rpm包升级

[root@centos71 rpm]# cd
[root@centos71 ~]# wget    https://mirrors.aliyun.com/epel/7/x86_64/Packages/s/sl-5.02-1.el7.x86_64.rpm
--2019-01-10 23:43:01--  https://mirrors.aliyun.com/epel/7/x86_64/Packages/s/sl-5.02-1.el7.x86_64.rpm
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 183.136.135.213, 183.136.135.223, 183.136.135.221, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|183.136.135.213|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14244 (14K) [application/x-redhat-package-manager]
Saving to: ‘sl-5.02-1.el7.x86_64.rpm’

100%[==================================================================================================================================================>] 14,244      --.-K/s   in 0.05s   

2019-01-10 23:43:07 (284 KB/s) - ‘sl-5.02-1.el7.x86_64.rpm’ saved [14244/14244]

[root@centos71 ~]# ls
anaconda-ks.cfg  Desktop  Documents  Downloads  initial-setup-ks.cfg  Music  oCam.exe  Pictures  Public  sl-5.02-1.el7.x86_64.rpm  Templates  Videos
[root@centos71 ~]# rpm   -i   sl-5.02-1.el7.x86_64.rpm 
warning: sl-5.02-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY

[root@centos71 ~]# ls
anaconda-ks.cfg  Desktop  Documents  Downloads  initial-setup-ks.cfg  Music  oCam.exe  Pictures  Public  sl-5.02-1.el7.x86_64.rpm  Templates  Videos
[root@centos71 ~]# sl
[root@centos65 ~]# wget    https://mirrors.aliyun.com/epel/7/x86_64/Packages/s/sl-5.02-1.el7.x86_64.rpm
--2019-03-14 19:43:13--  https://mirrors.aliyun.com/epel/7/x86_64/Packages/s/sl-5.02-1.el7.x86_64.rpm
Resolving mirrors.aliyun.com... 119.96.206.233, 119.96.206.228, 119.96.206.230, ...
Connecting to mirrors.aliyun.com|119.96.206.233|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14244 (14K) [application/x-redhat-package-manager]
Saving to: “sl-5.02-1.el7.x86_64.rpm”

100%[============================================================================================>] 14,244      --.-K/s   in 0.07s   

2019-03-14 19:43:19 (200 KB/s) - “sl-5.02-1.el7.x86_64.rpm” saved [14244/14244]

[root@centos65 ~]# sl
-bash: sl: command not found
[root@centos65 ~]# ls
1Gb.file  a  anaconda-ks.cfg  bin  blkid  f1  f2  f3  install.log  install.log.syslog  restore_iptables.sh  sl-5.02-1.el7.x86_64.rpm
[root@centos65 ~]# yum install sl
Loaded plugins: fastestmirror, security
Setting up Install Process
Determining fastest mirrors
ali-centos                                                                                                     | 3.7 kB     00:00     
base                                                                                                           | 4.0 kB     00:00 ... 
epel                                                                                                           | 4.7 kB     00:00     
epel/primary_db                                                                                                | 6.0 MB     00:06     
Resolving Dependencies
--> Running transaction check
---> Package sl.x86_64 0:5.02-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================================
 Package                     Arch                            Version                              Repository                     Size
======================================================================================================================================
Installing:
 sl                          x86_64                          5.02-1.el6                           epel                           13 k

Transaction Summary
======================================================================================================================================
Install       1 Package(s)

Total download size: 13 k
Installed size: 15 k
Is this ok [y/N]: y
Downloading Packages:
sl-5.02-1.el6.x86_64.rpm                                                                                       |  13 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : sl-5.02-1.el6.x86_64                                                                                               1/1 
  Verifying  : sl-5.02-1.el6.x86_64                                                                                               1/1 

Installed:
  sl.x86_64 0:5.02-1.el6                                                                                                              

Complete!

 输入sl就会出现下面的图片

linux软件包rpm的使用
一rpm包管理器
(一)rpm的介绍
(二)包文件组成 (每个包独有) 
(三)数据库(公共):/var/lib/rpm
(四)程序包的来源
二rpm包管理
(一)使用rpm命令安装包
(二)rpm包安装的相关设置
(三)rpm包升级

Rpmforge:RHEL推荐,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/

注意搜索出来的包可能会有问题。


(4) 自己制作。注意:第三方包建议要检查其合法性,来源合法性,程序包的完整性

二rpm包管理

CentOS系统上使用rpm命令管理程序包:安装、卸载、升级、查询、校验、数据库维护

(一)使用rpm命令安装包


rpm {-i|--install} [install-options]    PACKAGE_FILE…


-v: verbose显示详细信息


-vv:显示更详细信息,可以在出现报错的时候进行排错的时候使用


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


rpm -ivh PACKAGE_FILE ..

注意安装包的时候要写明路径在哪

[root@centos71 app]# rpm   -ivvh   tree-1.6.0-10.el7.x86_64.rpm 
D: ============== tree-1.6.0-10.el7.x86_64.rpm
D: loading keyring from pubkeys in /var/lib/rpm/pubkeys/*.key
D: couldn't find any keys in /var/lib/rpm/pubkeys/*.key
D: loading keyring from rpmdb
D: opening  db environment /var/lib/rpm cdb:0x401
D: opening  db index       /var/lib/rpm/Packages 0x400 mode=0x0
D: locked   db index       /var/lib/rpm/Packages
D: opening  db index       /var/lib/rpm/Name 0x400 mode=0x0
D: Expected size:        47508 = lead(96)+sigs(1284)+pad(4)+data(46124)
D:   Actual size:        47508
warning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:     added binary package [0]
D: found 0 source and 1 binary packages
D: opening  db index       /var/lib/rpm/Conflictname 0x400 mode=0x0
D: ========== +++ tree-1.6.0-10.el7 x86_64/linux 0x2
D: opening  db index       /var/lib/rpm/Providename 0x400 mode=0x0
D:  read h#      47 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: libc.so.6()(64bit)                            YES (db provides)
D:  read h#      47 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: libc.so.6(GLIBC_2.14)(64bit)                  YES (db provides)
D:  read h#      47 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: libc.so.6(GLIBC_2.2.5)(64bit)                 YES (db provides)
D:  read h#      47 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: libc.so.6(GLIBC_2.3)(64bit)                   YES (db provides)
D:  read h#      47 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: libc.so.6(GLIBC_2.3.4)(64bit)                 YES (db provides)
D:  read h#      47 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: libc.so.6(GLIBC_2.4)(64bit)                   YES (db provides)
D:  Requires: rpmlib(CompressedFileNames) <= 3.0.4-1        YES (rpmlib provides)
D:  Requires: rpmlib(FileDigests) <= 4.6.0-1                YES (rpmlib provides)
D:  Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1       YES (rpmlib provides)
D:  read h#      47 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: rtld(GNU_HASH)                                YES (db provides)
D:  Requires: rpmlib(PayloadIsXz) <= 5.2-1                  YES (rpmlib provides)
D: opening  db index       /var/lib/rpm/Obsoletename 0x400 mode=0x0
D: ========== recording tsort relations
D: ========== tsorting packages (order, #predecessors, #succesors, depth)
D:     0    0    0    1   +tree-1.6.0-10.el7.x86_64
D: installing binary packages
D: closed   db index       /var/lib/rpm/Obsoletename
D: closed   db index       /var/lib/rpm/Conflictname
D: closed   db index       /var/lib/rpm/Providename
D: closed   db index       /var/lib/rpm/Name
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm
D: opening  db environment /var/lib/rpm cdb:0x401
D: opening  db index       /var/lib/rpm/Packages (none) mode=0x42
D: sanity checking 1 elements
D: opening  db index       /var/lib/rpm/Name (none) mode=0x42
D:  read h#    1363 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  read h#    1363 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D: computing 5 file fingerprints
D: opening  db index       /var/lib/rpm/Basenames (none) mode=0x42
D: opening  db index       /var/lib/rpm/Group (none) mode=0x42
D: opening  db index       /var/lib/rpm/Requirename (none) mode=0x42
D: opening  db index       /var/lib/rpm/Providename (none) mode=0x42
D: opening  db index       /var/lib/rpm/Conflictname (none) mode=0x42
D: opening  db index       /var/lib/rpm/Obsoletename (none) mode=0x42
D: opening  db index       /var/lib/rpm/Triggername (none) mode=0x42
D: opening  db index       /var/lib/rpm/Dirnames (none) mode=0x42
D: opening  db index       /var/lib/rpm/Installtid (none) mode=0x42
D: opening  db index       /var/lib/rpm/Sigmd5 (none) mode=0x42
D: opening  db index       /var/lib/rpm/Sha1header (none) mode=0x42
Preparing...                          D: computing file dispositions
D: 0x00000802     4096     12157150     26087632 /
################################# [100%]
    package tree-1.6.0-10.el7.x86_64 is already installed
D: closed   db index       /var/lib/rpm/Sha1header
D: closed   db index       /var/lib/rpm/Sigmd5
D: closed   db index       /var/lib/rpm/Installtid
D: closed   db index       /var/lib/rpm/Dirnames
D: closed   db index       /var/lib/rpm/Triggername
D: closed   db index       /var/lib/rpm/Obsoletename
D: closed   db index       /var/lib/rpm/Conflictname
D: closed   db index       /var/lib/rpm/Providename
D: closed   db index       /var/lib/rpm/Requirename
D: closed   db index       /var/lib/rpm/Group
D: closed   db index       /var/lib/rpm/Basenames
D: closed   db index       /var/lib/rpm/Name
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm

(二)rpm包安装的相关设置

[install-options]


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


--nodeps:忽略依赖关系


--replacepkgs | replacefiles


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


--nodigest:不检查包完整性


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


%pre: 安装前脚本; --nopre


%post: 安装后脚本; --nopost


%preun: 卸载前脚本; --nopreun


%postun: 卸载后脚本; --nopostun

卸载包

[root@centos71 app]# rpm  -e  sl
[root@centos71 app]#
[root@centos71 app]# cd
[root@centos71 ~]# ls
anaconda-ks.cfg   Desktop    Downloads             Music     Pictures  skipfish-2.10-0.2.b.el7.x86_64.rpm  Templates
Documents  initial-setup-ks.cfg  oCam.exe  Public    sl-5.02-1.el7.x86_64.rpm            Videos 
[root@centos71 ~]# ls
anaconda-ks.cfg  Desktop  Documents  Downloads  initial-setup-ks.cfg  Music  oCam.exe  Pictures  Public 
skipfish-2.10-0.2.b.el7.x86_64.rpm sl-5.02-1.el7.x86_64.rpm Templates Videos [root@centos71 ~]# mv sl-5.02-1.el7.x86_64.rpm /app/ [root@centos71 ~]# cd /app/ [root@centos71 app]# ls sl-5.02-1.el7.x86_64.rpm tree-1.6.0-10.el7.x86_64.rpm

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

[root@centos71 app]# rpm  -i    sl-5.02-1.el7.x86_64.rpm      --test 
warning: sl-5.02-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
[root@centos71 app]# rpm  -ivh    sl-5.02-1.el7.x86_64.rpm      --test 
warning: sl-5.02-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing...                          ################################# [100%]
[root@centos71 app]# rpm  -ivvh    sl-5.02-1.el7.x86_64.rpm      --test 
D: ============== sl-5.02-1.el7.x86_64.rpm
D: loading keyring from pubkeys in /var/lib/rpm/pubkeys/*.key
D: couldn't find any keys in /var/lib/rpm/pubkeys/*.key
D: loading keyring from rpmdb
D: opening  db environment /var/lib/rpm cdb:0x401
D: opening  db index       /var/lib/rpm/Packages 0x400 mode=0x0
D: locked   db index       /var/lib/rpm/Packages
D: opening  db index       /var/lib/rpm/Name 0x400 mode=0x0
D: Expected size:        14244 = lead(96)+sigs(1284)+pad(4)+data(12860)
D:   Actual size:        14244
warning: sl-5.02-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
D:     added binary package [0]
D: found 0 source and 1 binary packages
D: opening  db index       /var/lib/rpm/Conflictname 0x400 mode=0x0
D: ========== +++ sl-5.02-1.el7 x86_64/linux 0x2
D: opening  db index       /var/lib/rpm/Providename 0x400 mode=0x0
D:  read h#      47 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: libc.so.6()(64bit)                            YES (db provides)
D:  read h#      47 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: libc.so.6(GLIBC_2.2.5)(64bit)                 YES (db provides)
D:  read h#      53 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: libncurses.so.5()(64bit)                      YES (db provides)
D:  read h#      53 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: libtinfo.so.5()(64bit)                        YES (db provides)
D:  Requires: rpmlib(CompressedFileNames) <= 3.0.4-1        YES (rpmlib provides)
D:  Requires: rpmlib(FileDigests) <= 4.6.0-1                YES (rpmlib provides)
D:  Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1       YES (rpmlib provides)
D:  read h#      47 Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
D:  Requires: rtld(GNU_HASH)                                YES (db provides)
D:  Requires: rpmlib(PayloadIsXz) <= 5.2-1                  YES (rpmlib provides)
D: opening  db index       /var/lib/rpm/Obsoletename 0x400 mode=0x0
D: ========== recording tsort relations
D: ========== tsorting packages (order, #predecessors, #succesors, depth)
D:     0    0    0    1   +sl-5.02-1.el7.x86_64
D: installing binary packages
D: Selinux disabled.
D: sanity checking 1 elements
D: computing 7 file fingerprints
D: opening  db index       /var/lib/rpm/Basenames 0x400 mode=0x0
D: opening  db index       /var/lib/rpm/Group 0x400 mode=0x0
D: opening  db index       /var/lib/rpm/Requirename 0x400 mode=0x0
D: opening  db index       /var/lib/rpm/Triggername 0x400 mode=0x0
D: opening  db index       /var/lib/rpm/Dirnames 0x400 mode=0x0
D: opening  db index       /var/lib/rpm/Installtid 0x400 mode=0x0
D: opening  db index       /var/lib/rpm/Sigmd5 0x400 mode=0x0
D: opening  db index       /var/lib/rpm/Sha1header 0x400 mode=0x0
Preparing...                          D: computing file dispositions
D: 0x00000802     4096     12157164     26087641 /
################################# [100%]
D: ========== +++ sl-5.02-1.el7 x86_64-linux 0x2
D: Expected size:        14244 = lead(96)+sigs(1284)+pad(4)+data(12860)
D:   Actual size:        14244
D: sl-5.02-1.el7.x86_64: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
D: closed   db index       /var/lib/rpm/Sha1header
D: closed   db index       /var/lib/rpm/Sigmd5
D: closed   db index       /var/lib/rpm/Installtid
D: closed   db index       /var/lib/rpm/Dirnames
D: closed   db index       /var/lib/rpm/Triggername
D: closed   db index       /var/lib/rpm/Obsoletename
D: closed   db index       /var/lib/rpm/Conflictname
D: closed   db index       /var/lib/rpm/Providename
D: closed   db index       /var/lib/rpm/Requirename
D: closed   db index       /var/lib/rpm/Group
D: closed   db index       /var/lib/rpm/Basenames
D: closed   db index       /var/lib/rpm/Name
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm

下面显示并没有真正的安装

[root@centos71 app]# sl
-bash: /usr/bin/sl: No such file or directory

因为有依赖关系

包依赖关系就好比是楼与楼的关系。

假如A包依赖于B包,那么安装的时候就要先安装B包了。

但是在卸载的时候就要先卸载A包了。安装就相当于盖楼,B包是地基;卸载就相当于拆楼,A在楼上。

[root@centos71 app]# rpm   -ivh    /mnt/Packages/gcc-4.8.5-28.el7.x86_64.rpm 
warning: /mnt/Packages/gcc-4.8.5-28.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: Failed dependencies:
    cpp = 4.8.5-28.el7 is needed by gcc-4.8.5-28.el7.x86_64
    glibc-devel >= 2.2.90-12 is needed by gcc-4.8.5-28.el7.x86_64
    libmpc.so.3()(64bit) is needed by gcc-4.8.5-28.el7.x86_64

--replacepkgs

[root@centos71 app]# rpm  -q  tree 
tree-1.6.0-10.el7.x86_64
[root@centos71 app]# rpm  -ql  tree 安装包生成的文件。因为rpm包是打包文件,这些就相当于子文件。
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
[root@centos71 app]# which   tree 注意tree命令就是来自这个包的
/usr/bin/tree
[root@centos71 app]# rm  -f  /usr/bin/tree

后面加上选项--replacepkgs

[root@centos71 app]# rpm  -ivh     tree-1.6.0-10.el7.x86_64.rpm 
warning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
    package tree-1.6.0-10.el7.x86_64 is already installed
[root@centos71 app]# #重新安装但是提示已经安装了。
[root@centos71 app]# rpm  -ivh     tree-1.6.0-10.el7.x86_64.rpm             --replacepkgs   
warning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:tree-1.6.0-10.el7                ################################# [100%]
[root@centos71 app]# tree 
.
├── sl-5.02-1.el7.x86_64.rpm
└── tree-1.6.0-10.el7.x86_64.rpm

0 directories, 2 files

--replacepkgs的作用就是安装上包中所有的子包,已经有的文件就覆盖了。

[root@centos71 app]# ll    /usr/share/doc/tree-1.6.0/README
-rw-r--r--. 1 root root 4628 Jun 24  2011 /usr/share/doc/tree-1.6.0/README
[root@centos71 app]# echo   >>      /usr/share/doc/tree-1.6.0/README
[root@centos71 app]# ll    /usr/share/doc/tree-1.6.0/README
-rw-r--r--. 1 root root 4629 Jan 11 09:43 /usr/share/doc/tree-1.6.0/README
[root@centos71 app]# rpm  -ivh     tree-1.6.0-10.el7.x86_64.rpm             --replacepkgs   
warning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:tree-1.6.0-10.el7                ################################# [100%]
[root@centos71 app]# ll    /usr/share/doc/tree-1.6.0/README
-rw-r--r--. 1 root root 4628 Jun 24  2011 /usr/share/doc/tree-1.6.0/README

注意大部分程序是放在/usr/bin/或者/usr/sbin,并且不带版本号。

[root@centos71 app]# ls   /usr/bin/*    |   wc
   1695    1695   32695
[root@centos71 app]# ls   /usr/sbin/*    |   wc
    663     663   13361
[root@centos71 app]# ll   /usr/bin/mpstat  
-rwxr-xr-x. 1 root root 53728 Apr 11  2018 /usr/bin/mpstat

 内核文件就带版本号。几个内核是可以并存的。启动的时候可以选择。

[root@centos71 app]# cd   /boot/
[root@centos71 boot]# ls
config-3.10.0-862.el7.x86_64  grub   initramfs-0-rescue-685dc66dda59420c9a03dae9e6d67f2c.img  
symvers-3.10.0-862.el7.x86_64.gz vmlinuz-0-rescue-685dc66dda59420c9a03dae9e6d67f2cefi
grub2 initramfs-3.10.0-862.el7.x86_64.img
System.map-3.10.0-862.el7.x86_64 vmlinuz-3.10.0-862.el7.x86_64

做rpm包的人已经指定好了文件安装的路径了。

目录满了就清理,报错就提示。

每个软件包都是按照文件的分层结构FHS来装入目录的。在Linux里面每个文件都是有规定的路径的。

(三)rpm包升级

升级:


rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...


rpm {-F|--freshen} [install-options] PACKAGE_FILE ...


upgrade:安装有旧版程序包,则“升级”。如果不存在旧版程序包,则“安装”。

注意对应内核不要把进行升级,这样有风险的。内核占用的空间不大,所以可以在系统中设置双内核。

freshen:安装有旧版程序包,则“升级”。如果不存在旧版程序包,则不执行升级操作。

rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
--oldpackage:降级
--force: 强制安装

卸载-e,后面加上包名就可以了。

为什么不写路径就可以卸载和查询,是从数据库里面查的。

安装的时候就要写上完整的文件路径了。

[root@centos71 ~]# rpm  -e  tree 
[root@centos71 ~]# rpm  -q  tree 
package tree is not installed