RPM包管理器及YUM的使用

RPM包管理器常见的使用场景:


安装程序包:

rpm [OPTIONS]  PACKAGEFILE

    -i: --install 安装指定程序包

    -v: verbose 显示详细附加信息

    -vv: 显示许多丑陋的debug信息,调试信息

    --test: 仅做测试,不进行真正安装

    --nodeps: 忽略依赖关系

    --replacepkgs: 重新安装

    --justdb: rpm数据库出错时,可以仅升级安装数据库


常用的安装选项组合: -ivh

#挂载光盘
[root@bogon ~]# mount /dev/cdrom /media
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@bogon ~]# cd /media/Packages

#安装nmap
#测试安装环境
[root@bogon Packages]#rpm -ivh --test nmap-5.51-3.el6.x86_64.rpm 
Preparing...                ########################################### [100%]

#然后安装
[root@bogon Packages]#rpm -ivh nmap-5.51-3.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:nmap                   ########################################### [100%]

#安装成功,重新安装
[root@bogon Packages]#rpm -ivh --replacepkgs nmap-5.51-3.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:nmap                   ########################################### [100%]

   
#安装wireshark
[root@bogon Packages]#rpm -ivh --test wireshark-1.8.10-4.el6.x86_64.rpm 
error: Failed dependencies:
 libsmi.so.2()(64bit) is needed by wireshark-1.8.10-4.el6.x86_64

#需要依赖关系,用--nodeps忽略依赖关系
[root@bogon Packages]#rpm -ivh --nodeps wireshark-1.8.10-4.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:wireshark              ########################################### [100%]

卸载程序包:

rpm [OPTION] PKG_NAME

    -e: --erase 卸载程序包

    --nodeps:忽略依赖关系

    --test:仅测试,不真正卸载

    --allmatches: 卸载匹配软件名的所有版本的程序包


如果包的配置文件安装后曾被改动过,卸载时,此文件将不会卸载,而是被重命名并保留,例如warning: /etc/zprofile saved as /etc/zprofile.rpmsave

#卸载nmap
[root@bogon Packages]#rpm -e nmap

#卸载libsmi
[root@bogon Packages]#rpm -e libsmi
error: Failed dependencies:
 libsmi.so.2()(64bit) is needed by (installed) wireshark-1.8.10-4.el6.x86_64
#忽略依赖关系
[root@bogon Packages]#rpm -e --nodeps libsmi


升级程序包:

    -U: 升级或安装;已安装老版本,就升级为新版本,没有老版本就安装新版本

    -F:升级;只有安装了老版本才会升级为新版本

    --force: 强制升级

    内核不应该进行升级操作,而应该安装,操作系统允许多个内核并存


查询操作:

    rpm -q PKG_NAME...: 查询某程序包是否已安装

    rpm -qa :查询所有已经安装的包  rpm -qa | grep 'PATTERN'

    rpm -qi PKG_NAME : 查询包的描述信息

    rpm -ql PKG_NAME: 查询某包安装生成了哪些文件

    rpm -qc PKG_NAME:: 查询某包安装生成了哪些配置文件   

    rpm -qd PKG_NAME: 查询某包安装生成了哪些帮助文件

    rpm -qf /path/to/some_file: 查询某文件是由哪个包安装生成的

    rpm -q --scripts PKG_NAME: 查询程序包的相关脚本

        脚本有四类:
           preinstall:安装前脚本
           postinstall: 安装后脚本
           preuninstall: 卸载前脚本
           postuninstall: 年前后脚本  

    对尚未安装的包执行查询
       rpm [option] /path/to/package_file
           -qpi; -qpl; -qpc; -qpd

#查询nmap是否安装
[root@bogon Packages]#rpm -q nmap
nmap-5.51-3.el6.x86_64
[root@bogon Packages]#rpm -qa |grep "^nmap"
nmap-5.51-3.el6.x86_64

#查询nmap包信息
[root@bogon Packages]#rpm -qi nmap
Name        : nmap                         Relocations: (not relocatable)
Version     : 5.51                              Vendor: CentOS
Release     : 3.el6                         Build Date: Fri May 31 00:25:05 2013
Install Date: Sun Jul 27 09:40:22 2014         Build Host: c6b8.bsys.dev.centos.org
Group       : Applications/System           Source RPM: nmap-5.51-3.el6.src.rpm
Size        : 10153050                         License: GPLv2 and LGPLv2+ and GPLv2+ and BSD
Signature   : RSA/SHA1, Fri May 31 00:30:40 2013, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://nmap.org/
Summary     : Network exploration tool and security scanner
Description :
Nmap is a utility for network exploration or security auditing.
...

#查询libsmi相关脚本
[root@bogon Packages]#rpm -q --scripts libsmi
postinstall program: /sbin/ldconfig
postuninstall program: /sbin/ldconfig


校验:

    用于检查包安装生成的文件属性是否发生变化

        rpm -V PKG_NAME

        rpm -Va 检查所有包生成文件是否发生变化

[root@bogon Packages]#rpm -Va
....L....  c /etc/pam.d/fingerprint-auth
....L....  c /etc/pam.d/password-auth
....L....  c /etc/pam.d/smartcard-auth
....L....  c /etc/pam.d/system-auth
S.5....T.  c /etc/udev/rules.d/99-fuse.rules
S.5....T.    /sbin/mount.fuse
S.5....T.  c /etc/rsyslog.conf
.M.......    /media
.M.......    /tmp
S.5....T.  c /etc/issue
S.5....T.  c /root/.bash_profile
..5....T.  c /usr/lib64/security/classpath.security
.......T.  c /etc/inittab

# 9个标识位分别对应以下,某属性无变化则显示为.
# S file Size differs 大小改变
# M Mode differs (includes permissions and file type) 权限模型改变,包括权限和文件类型
# 5 digest (formerly MD5 sum) differs MD5改变
# D Device major/minor number mismatch 设备主/次设备号不匹配
# L readLink(2) path mismatch  readlink路径不匹配
# U User ownership differs 属主改变
# G Group ownership differs 属组改变
# T mTime differs 修改时间mtime改变
# P caPabilities differ 能力改变
文件类型c,d,g,l,r: configurefile, documentfile, ghost file, license file, readme file

       

rpm包来源合法性及完整性检验:

    前提:在当前系统上导入包的制作者的公钥
    导入: rpm --import /path/to/key_file

   # rpm -qa gpg-pubkey*   显示所有已经导入的gpg格式的公钥  

   # rpm -qi gpg-pubkey-NAME 显示密钥的详细信息    

[root@bogon media]#rpm --import RPM-GPG-KEY-CentOS-6
[root@bogon media]#rpm -qa gpg-pubkey*
gpg-pubkey-c105b9de-4e0fd3a3
[root@bogon media]#rpm -qi gpg-pubkey-c105b9de-4e0fd3a3
Name        : gpg-pubkey                   Relocations: (not relocatable)
Version     : c105b9de                          Vendor: (none)
Release     : 4e0fd3a3                      Build Date: Wed Jul  2 22:09:51 2014
Install Date: Wed Jul  2 22:09:51 2014         Build Host: localhost
Group       : Public Keys                   Source RPM: (none)
Size        : 0                                License: pubkey
Signature   : (none)
Summary     : gpg(CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>)
Description :
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: rpm-4.8.0 (NSS-3)
mQINBE4P06MBEACqn48FZgYkG2QrtUAVDV58H6LpDYEcTcv4CIFSkgs6dJ9TavCW
NyPBZRpM2R+Rg5eVqlborp7TmktBP/sSsxc8eJ+3P2aQWSWc5ol74Y0OznJUCrBr
...

    检查包:安装过程中会自动执行

    手动检查:
        rpm -K /path/to/package_file
        rpm --checksig /path/to/package_file

    不检查包完整性:
        rpm -K --nodigest
    不检查来源合法性:
        rpm -K --nosignature

[root@bogon Packages]#rpm -K nmap-5.51-3.el6.x86_64.rpm 
nmap-5.51-3.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
[root@bogon Packages]#rpm --checksig nmap-5.51-3.el6.x86_64.rpm 
nmap-5.51-3.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
[root@bogon Packages]#rpm -K --nodigest nmap-5.51-3.el6.x86_64.rpm 
nmap-5.51-3.el6.x86_64.rpm: rsa (md5) pgp OK
[root@bogon Packages]#rpm -K --nosignature nmap-5.51-3.el6.x86_64.rpm 
nmap-5.51-3.el6.x86_64.rpm: sha1 md5 OK

 

数据库重建:
    数据库目录:/var/lib/rpm

    初始化:  rpm --initdb     
    如果事先没有库,会新建一个;如果有,则不新建;

    重建:  rpm --rebuilddb   直接重建,覆盖原有的数据库

[root@bogon Packages]#ls /var/lib/rpm/
Basenames     Installtid    Provideversion  Sigmd5       __db.004
Conflictname  Name          Pubkeys         Triggername
Dirnames      Obsoletename  Requirename     __db.001
Filedigests   Packages      Requireversion  __db.002
Group         Providename   Sha1header      __db.003

#进行初始化
[root@bogon Packages]#rpm --initdb
[root@bogon Packages]#ls /var/lib/rpm/
Basenames     Installtid    Provideversion  Sigmd5       __db.004
Conflictname  Name          Pubkeys         Triggername
Dirnames      Obsoletename  Requirename     __db.001
Filedigests   Packages      Requireversion  __db.002
Group         Providename   Sha1header      __db.003

#可以看出已经存在,所以没有新建,那么就用 --rebuilddb直接重建
[root@bogon Packages]#rpm --rebuilddb
[root@bogon Packages]#ls /var/lib/rpm/
Basenames     Group         Packages        Requirename     Triggername
Conflictname  Installtid    Providename     Requireversion
Dirnames      Name          Provideversion  Sha1header
Filedigests   Obsoletename  Pubkeys         Sigmd5


YUM的使用

 

配置yum


主配置文件/etc/yum.conf

[main]
cachedir=/var/cache/yum/$basearch/$releasever   #yum下载的程序包缓存目录
keepcache=0    #是否保存缓存,0表示不保存
debuglevel=2    #调试级别
logfile=/var/log/yum.log    #日志文件
exactarch=1    #设置为1,则yum只会安装和系统架构匹配的软件包,例如,yum不会将i686的软件包安装在适合i386的系统中。默认为1
obsoletes=1    #安装程序包是否检查过期的仓库
gpgcheck=1    #是否进行gpg校验retries=6    #网络连接接发生错误后的重试次数,如果设为0,则会无限重试。默认值为6
plugins=1    #是否支持使用yum的插件
pkgpolicy=newest    #包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。


*.repo配置文件,位于/etc/yum.repos.d/目录下

[repositoryid]    #repo仓库的标识

name=description    #对这个repository的描述信息

baseurl=ftp://server/path/to/repository

              http://server/path/to/repository

              nfs://server/nfs_path

              file:///path/to/repository  

enabled={0|1}     #1表示启用这个repo仓库

gpgcheck={0|1}    #1表示启用gpg校验

gpgkey=URL    #gpg密钥文件的位置

mirrorlist=URL to a file    #指定一个包含baseurl列表的文件

cost=1000    #指定此仓库的开销,默认为1000,范围1~1000

[root@localhost ~]# vi /etc/yum.repos.d/yum.conf
[base]
name=cdrom packages
baseurl=file:///media
enabled=1
gpgcheck=0 

[root@localhost yum.repos.d]# yum repolist
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, refresh-packagekit, security
Determining fastest mirrors
base                                                     | 4.0 kB     00:00 ... 
base/primary_db                                          | 4.4 MB     00:00 ... 
repo id                          repo name                                status
base                             cdrom packages                           6367
repolist: 6367

  $releasever: 系统的release版本,只替换为主版本号,如RedHat 6.5,则替换为6; 因为yum仓库中的主版本好默认指向最新的版本
  $arch: 系统架构
  $basearch: 系统基本架构,如i686,i586等的基本架构为i386;
  $uuid: 机器的UUID

yum客户端命令的使用:


1、列出所有可用的repo仓库

        # yum repolist {enabled|disabled|all}

        列出已激活、未激活和所有的repo仓库

[root@localhost ~]# yum repolist 
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.btte.net
 * updates: mirrors.btte.net
repo id                        repo name                                  status
base                           CentOS-6 - Base                            6367
extras                         CentOS-6 - Extras                            14
updates                        CentOS-6 - Updates                         1224
repolist: 7605

2、列出所有的rpm包

        # yum list {all|installed|available}

        列出所有的rpm包,已安装或者可安装的包

3、查看包的描述信息

        # yum info PKG_NAME

[root@localhost ~]# yum info nmap
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.btte.net
 * updates: mirrors.btte.net
Installed Packages
Name        : nmap
Arch        : x86_64
Epoch       : 2
Version     : 5.51
Release     : 3.el6
Size        : 9.7 M
Repo        : installed
Summary     : Network exploration tool and security scanner
URL         : http://nmap.org/
License     : GPLv2 and LGPLv2+ and GPLv2+ and BSD
Description : Nmap is a utility for network exploration or security auditing.
            : It supports ping scanning (determin...

4、列出所有包组信息

        # yum grouplist

5、显示包组信息

        # yum groupinfo "GRP_NAME"

6、清理缓存

        # yum clean {all|packages|metadata|expire-cache|rpmdb|plugins}

     清理所有缓存信息,清理缓存的packages,清理元数据,清理过期缓存,清理rpmdb,清理插件

7、安装程序包

        # yum install PKG_NAME

     重新安装程序包

        # yum reinstall PKG_NAME

8、升级

    检查可用的升级包

        # yum check-update

    升级程序包

        # yum update PKG_NAME

    降级程序包

        # yum downgrade PKG_NAME

        可要升级或降级到指定的版本

9、卸载程序包

        # yum remove | erase PKG_NAME

[root@localhost yum.repos.d]# yum remove nmap
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package nmap.x86_64 2:5.51-3.el6 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package        Arch             Version                  Repository       Size
================================================================================
Removing:
 nmap           x86_64           2:5.51-3.el6             @base           9.7 M
Transaction Summary
================================================================================
Remove        1 Package(s)
Installed size: 9.7 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing    : 2:nmap-5.51-3.el6.x86_64                                     1/1 
  Verifying  : 2:nmap-5.51-3.el6.x86_64                                     1/1
Removed:
  nmap.x86_64 2:5.51-3.el6                                                     
Complete!

10、查询某文件是由哪个包安装产生的

        # yum whatprovides | provides /path/to/somefile

[root@localhost yum.repos.d]# yum provides /etc/inittab 
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
initscripts-9.03.40-2.el6.centos.x86_64 : The inittab file and the /etc/init.d
                                        : scripts
Repo        : base
Matched from:
Filename    : /etc/inittab

initscripts-9.03.40-2.el6.centos.x86_64 : The inittab file and the /etc/init.d
                                        : scripts
Repo        : installed
Matched from:
Other       : Provides-match: /etc/inittab
#可以看出/etc/inittab文件是由 iniscripts程序包安装产生的

11、安装包组

        # yum groupinstall "GRP_NAME"

12、卸载包组

        # yum groupremove | grouperase "GRP_NAME"



你可能感兴趣的:(rpm,yum)