rmp 程 序 包 管 理 介 绍
※包管理器
◎二进制应用程序的组成部分:
二进制文件、库文件、配置文件、帮助文件
◎程序包管理器:
debian:deb文件, dpkg包管理器
redhat: rpm文件, rpm包管理器
rpm: Redhat Package Manager
RPM P ackage Manager
※rmp常用命令介绍
*安装
◎安装符合FHS标准,程序员把文件放在什么地方都有文件路径存放路径
◎CentOS系统上使用rpm命令管理程序包:安装、卸载、升级、查询、校验、数据库维护
安装:
rpm {-i|–install} [install-options] PACKAGE_FILE…
-v : verbose
-vv :
-h : 以#显示程序包管理执行进度
rpm -ivh PACKAGE_FILE …[常用的安装命令
rpm -i(install)v(详细信息)h(显示进度条) ]安装:
*升级:
◎升级:
◎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:降级[降级
rpm -ivh –oldpackage 旧版本包名]
–force: 强行升级
*卸载:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …
*查询:
◎rpm {-q|–query} [select-options] [query-options]
◎[select-options]
-a: 所有包
-f: 查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作;
–whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
–whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
◎rpm2cpio 包文件|cpio–itv预览包内文件[
查看rpm的包内的文件。
◎rpm2cpio 包文件|cpio –id “*.conf”释放包内文件[把rpm单个的文件解压出来]
◎[query-options]
–changelog:查询rpm包的changelog[更新日志]
-c: 查询程序的配置文件
-d: 查询程序的文档
-i: information
-l: 查看指定的程序包安装后生成的所有文件;
–scripts:程序包自带的脚本片断
-R: 查询指定的程序包所依赖的CAPABILITY;
–provides: 列出指定程序包所提供的CAPABILITY;
◎查询用法:
-qi PACKAGE, -qfFILE, -qc PACKAGE, -qlPACKAGE, -qdPACKAGE
-qpi PACKAGE_FILE, -qplPACKAGE_FILE, …
-qa :查询所有的安装包
*校验:
◎rpm {-V|–verify} [select-options] [verify-options][rpm -V tree 查看文件包哪些属性被修改过。
可以修改帮助文件内容,测试用一用。
查询所有包的校验
rpm -Va
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 mTimediffers
P capabilities differ
◎包来源合法性验正及完整性验正:
完整性验正:SHA256
来源合法性验正:RSA
◎公钥加密:
对称加密:加密、解密使用同一密钥;
非对称加密:密钥是成对儿的
public key: 公钥,公开所有人
secret key: 私钥, 不能公开
◎导入所需要公钥:
rpm -K | checksigrpmfile检查包的完整性和签名
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7[R
oot@Centos7 /]# rpm -qa | grep gpg
gpg-pubkey-f4a80eb5-53a7ff4b
删除 gpg-pubkey-f4a80eb5-53a7ff4b即可删除公钥
CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7
rpm -qa gpg-pubkey*
*数据库:
◎数据库重建:
/var/lib/rpm
◎rpm {–initdb | –rebuilddb}
initdb: 初始化
如果事先不存在数据库,则新建之
否则,不执行任何操作
rebuilddb:重建
无论当前存在与否,直接重新创建数据库
※rmp使用实例介绍
*安装tree命令最新版,下载后校验数据包的完整性,安装前测试安装,看看需要安装后有哪些文件,该程序包依赖哪些软件包?(主要在于熟悉软件包的命令)
解:
1.我们在系统软件光盘中查找 tree。
[root@Centos7 Packages]# ls | grep "^tree" tree-1.6.0-10.el7.x86_64.rpm [root@Centos7 Packages]# pwd /run/media/root/CentOS 7 x86_64/Packages [root@Centos7 Packages]#
2.需要校验文件包,我们需要导入公钥。
[root@Centos7 Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm #检测包的完整性 tree-1.6.0-10.el7.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#f4a80eb5) [root@Centos7 Packages]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #导入公钥 [root@Centos7 Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK [root@Centos7 Packages]#
[root@Centos7 Packages]# rpm -qi gpg-pubkey-f4a80eb5-53a7ff4b #查看公钥信息 Name : gpg-pubkey Version : f4a80eb5 Release : 53a7ff4b Architecture: (none) Install Date: Fri 19 Aug 2016 05:05:56 PM CST Group : Public Keys Size : 0 License : pubkey Signature : (none) Source RPM : (none) Build Date : Mon 23 Jun 2014 06:19:55 PM CST Build Host : localhost Relocations : (not relocatable) Packager : CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org> Summary : gpg(CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>) Description : -----BEGIN PGP PUBLIC KEY BLOCK----- Version: rpm-4.11.3 (NSS-3) mQINBFOn/0sBEADLDyZ+DQHkcTHDQSE0a0B2iYAEXwpPvs67cJ4tmhe/iMOyVMh9 Yw/vBIF8scm6T/vPN5fopsKiW9UsAhGKg0epC6y5ed+NAUHTEa6pSOdo7CyFDwtn 4HF61Esyb4gzPT6QiSr0zvdTtgYBRZjAEPFVu3Dio0oZ5UQZ7fzdZfeixMQ8VMTQ 4y4x5vik9B+cqmGiq9AW71ixlDYVWasgR093fXiD9NLT4DTtK+KLGYNjJ8eMRqfZ Ws7g7C+9aEGHfsGZ/SxLOumx/GfiTloal0dnq8TC7XQ/JuNdB9qjoXzRF+faDUsj WuvNSQEqUXW1dzJjBvroEvgTdfCJfRpIgOrc256qvDMp1SxchMFltPlo5mbSMKu1 x1p4UkAzx543meMlRXOgx2/hnBm6H6L0FsSyDS6P224yF+30eeODD4Ju4BCyQ0jO IpUxmUnApo/m0eRelI6TRl7jK6aGqSYUNhFBuFxSPKgKYBpFhVzRM63Jsvib82rY 438q3sIOUdxZY6pvMOWRkdUVoz7WBExTdx5NtGX4kdW5QtcQHM+2kht6sBnJsvcB JYcYIwAUeA5vdRfwLKuZn6SgAUKdgeOtuf+cPR3/E68LZr784SlokiHLtQkfk98j NXm6fJjXwJvwiM2IiFyg8aUwEEDX5U+QOCA0wYrgUQ/h8iathvBJKSc9jQARAQAB tEJDZW50T1MtNyBLZXkgKENlbnRPUyA3IE9mZmljaWFsIFNpZ25pbmcgS2V5KSA8 c2VjdXJpdHlAY2VudG9zLm9yZz6JAjUEEwECAB8FAlOn/0sCGwMGCwkIBwMCBBUC CAMDFgIBAh4BAheAAAoJECTGqKf0qA61TN0P/2730Th8cM+d1pEON7n0F1YiyxqG QzwpC2Fhr2UIsXpi/lWTXIG6AlRvrajjFhw9HktYjlF4oMG032SnI0XPdmrN29lL F+ee1ANdyvtkw4mMu2yQweVxU7Ku4oATPBvWRv+6pCQPTOMe5xPG0ZPjPGNiJ0xw 4Ns+f5Q6Gqm927oHXpylUQEmuHKsCp3dK/kZaxJOXsmq6syY1gbrLj2Anq0iWWP4 Tq8WMktUrTcc+zQ2pFR7ovEihK0Rvhmk6/N4+4JwAGijfhejxwNX8T6PCuYs5Jiv hQvsI9FdIIlTP4XhFZ4N9ndnEwA4AH7tNBsmB3HEbLqUSmu2Rr8hGiT2Plc4Y9AO aliW1kOMsZFYrX39krfRk2n2NXvieQJ/lw318gSGR67uckkz2ZekbCEpj/0mnHWD 3R6V7m95R6UYqjcw++Q5CtZ2tzmxomZTf42IGIKBbSVmIS75WY+cBULUx3PcZYHD ZqAbB0Dl4MbdEH61kOI8EbN/TLl1i077r+9LXR1mOnlC3GLD03+XfY8eEBQf7137 YSMiW5r/5xwQk7xEcKlbZdmUJp3ZDTQBXT06vavvp3jlkqqH9QOE8ViZZ6aKQLqv pL+4bs52jzuGwTMT7gOR5MzD+vT0fVS7Xm8MjOxvZgbHsAgzyFGlI1ggUQmU7lu3 uPNL0eRx4S1G4Jn5 =OGYX -----END PGP PUBLIC KEY BLOCK-----
3.测试模式安装tree,查询
[root@Centos7 Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm --test #测试安装 Preparing... ################################# [100%] package tree-1.6.0-10.el7.x86_64 is already installed [root@Centos7 Packages]# rpm -qa | grep tree-1.6.0-10.el7.x86_64.rpm [root@Centos7 Packages]#
[root@Centos7 Packages]# rpm -qpi tree-1.6.0-10.el7.x86_64.rpm #查询未安装的包文件信息 Name : tree Version : 1.6.0 Release : 10.el7 Architecture: x86_64 Install Date: (not installed) Group : Applications/File Size : 89505 License : GPLv2+ Signature : RSA/SHA256, Fri 04 Jul 2014 01:36:46 PM CST, Key ID 24c6a8a7f4a80eb5 Source RPM : tree-1.6.0-10.el7.src.rpm Build Date : Tue 10 Jun 2014 03:28:53 AM CST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://mama.indstate.edu/users/ice/tree/ Summary : File system tree viewer Description : The tree utility recursively displays the contents of directories in a tree-like format. Tree is basically a UNIX port of the DOS tree utility.
[root@Centos7 Packages]# rpm -qpl tree-1.6.0-10.el7.x86_64.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@Centos7 Packages]# rpm -qpR tree-1.6.0-10.el7.x86_64.rpm #查询包安装需要的库文件 libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1
4.rpm程序包安装。
前3步没有实际的安装程序包,只是对文件包做检测,查询程序包的信息,查询生成的文件,查询需要的依赖库文件等等。
#安装rpm程序包[root@Centos7 Packages]# rpm -qa | grep tree [root@Centos7 Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm #安装程序包Preparing... ################################# [100%]Updating / installing... 1:tree-1.6.0-10.el7 ################################# [100%][root@Centos7 Packages]# rpm -qa | grep treetree-1.6.0-10.el7.x86_64
小结:
以上是rpm包常用的安装命令,由于rpm命令无法解决包与包之间的依赖关系,需要手工解决。手工卸载软件时,当你卸载的软件有其它软件依赖时,无法正常的卸载,但是可以忽略依赖关系,但是不建议。例如你卸载bash时是无法正常卸载的,卸载的时候带 –-nodeps 参数可以卸载,但是系统重启后无法启动,切记不要 –-nodeps卸载软件。
原创文章,作者:linux_root,如若转载,请注明出处:http://www.178linux.com/37718