linux软件包管理-rpm
1.程序包管理
功能:將編譯好的應用程序的各組件組成文件打包成一個或幾個程序包文件,從而更方便快捷實現程序包的安裝升級,卸載和查詢等管理操作
?
?1 程序包的組成清單(每個程序包都單獨實現)
?文件清單
?安裝或卸載是運行的腳本
2 數據庫部分(公共)
程序包名稱和版本
依賴關系
功能說明
安裝生成各文件位置路徑及校驗碼信息
程序包我們在哪獲取了?
1)系統發行的光盤或官方文件服務器或鏡像站點:
最常用的例如像
http://mirrors.aliyun.com
http://mirrors.souhu.com
http://mirrors.163.com
2)程序官方站點下載
3)第三方組織的rpm包
(a)EPEL:紅帽站點論壇組織,提供高效的yum原?
(b)搜索引擎搜索
pkgs.org
rpmfind.net
rpm.pbone.net
4)自己做
ps:下載時注意其合法性,來源合法
rpm?:readhat package manager ;rpm is package manager?
2.rpm包命名格式
tree-1.5.3-3.el6.x86_64.rpm
name-version-release.arch.rpm
versiom:是指源代碼版本
release.arch:rpm包的發行號
archetecture:架構號:i386,x64(amd64)..
? e16適用平臺 6
3.rpm 特性
1,rpm分包機制
? ? 將一個包的功能拆成n個不同功能支包
? 主包:name-version-release.arch.rpm
? 支包:name-function-version-release.arch.rpm
? function:功能 例如:devel開發功能
? ? ? ? untils工具程序
? ? ? ? libs庫文件等
2,依賴關系
? ?依賴關系:因為linux程序做到短小精湛,程序彼此之間依賴其他程序提供的功能,然后才能運行,所以導致包和包之間有著復雜的依賴關系
3,解決依賴
前端工具的出現自動解決包之間的依賴關系;
yum :rpm包管理器的前端工具
apt-get(apt-cache)deb包管理器的前端工具 用于debian?
zypper :suse的rpm管理器前端工具
dnf:fedora-22+系統上的rpm包管理器的前端工具
4.rpm命令管理程序包:
安裝升級、卸載、查詢、效驗、數據庫維護、幫助
使用方法
rpm?[OPTION]?[PACKAGE_FILE]? ?
安裝?
例如:安裝tree包
[root@localhost?Packages]#?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??升級?
?rpm?{-U|--upgrade}?[install-options]?PACKAGE_FILE?...rpm?{-F|--freshen}?[install-options]?PACKAGE_FILE?... -U?升級或安裝 -F升級 rpm?-Uvh? rpm?-Fvh --oldpackage:降級; --force:強制升級;升級會影響依賴關系可能 #ps:1)不要對內核做升級操作;linux支持多內核,直接安裝新版本內核即可; #????2)如果原程序包配置文件安裝后被修改過,升級是,新版本程序提供的同一個配置文件不會 覆蓋原有版本的配置文件,會將新文件重命名后保留;例如:驗證?如果原程序包配置文件安裝后被修改過,升級是,新版本程序提供的同一個配置文件不會覆蓋原有版本的配置文件,會將新文件重命名后保留;
[root@localhost?Packages]#?rpm?-ivh?vsftpd-3.0.2-10.el7.x86_64.rpm? warning:?vsftpd-3.0.2-10.el7.x86_64.rpm:?Header?V3?RSA/SHA256?Signature,?key?ID?f4a80eb5:?NOKEY Preparing...??????????????????????????#################################?[100%] Updating?/?installing...1:vsftpd-3.0.2-10.el7??????????????#################################?[100%] [root@localhost?Packages]#? #安裝vsftp[root@localhost?vsftpd]#?cat?vsftpd.conf|wc?-l 127 [root@localhost?vsftpd]#?vim?vsftpd.conf [root@localhost?vsftpd]#?cat?vsftpd.conf|wc?-l 27 #修改其配置文件(刪除文件中100行內容)[root@localhost?Packages]#?rpm?-Uvh?vsftpd-3.0.2-10.el7.x86_64.rpm?--force warning:?vsftpd-3.0.2-10.el7.x86_64.rpm:?Header?V3?RSA/SHA256?Signature,?key?ID?f4a80eb5:?NOKEY Preparing...??????????????????????????#################################?[100%] Updating?/?installing...1:vsftpd-3.0.2-10.el7??????????????#################################?[100%] #升級安裝vsftpd??? [root@localhost?vsftpd]#?cat?vsftpd.conf|wc?-l 27 #配置文件行數與之前安裝修改行數一樣卸載
rpm?{-e|--erase}?[--allmatches]?[--nodeps]?[--noscripts][--notriggers]?[--test]?PACKAGE_NAME?... --allmatches:刪除所有所匹配指定名稱的程序包版本 --nodeps:忽略依賴關系 --test?測試卸載,不真正執行卸載例如:卸載vsftpd
[root@localhost?Packages]#?rpm?-e?--nodeps?vsftpd? warning:?/etc/vsftpd/vsftpd.conf?saved?as?/etc/vsftpd/vsftpd.conf.rpmsave #卸載vsftpd包 [root@localhost?~]#?ll?/etc/vsftpd/ total?4 -rw-------.?1?root?root?1127?Aug?23?21:10?vsftpd.conf.rpmsave [root@localhost?~]#?cat?/etc/vsftpd/vsftpd.conf.rpmsave?|ec?-l bash:?ec:?command?not?found... [root@localhost?~]#?cat?/etc/vsftpd/vsftpd.conf.rpmsave?|wc?-l 27 #卸載后將配置文件備份成了一個新文件查詢?
rpm?{-q|--query}?[select-options]?[query-options] 1)select-options: PACKAGE_NAME?直接給出包名查看是否已經安裝 -a,--all?查詢所有已安裝的包?rpm?-qa [root@localhost?~]#?rpm?-qa?|grep?http -f,--file?查詢文件的生成安裝包 [root@localhost?~]#?rpm?-qf?/etc/fstab? setup-2.8.71-6.el7.noarch -p?--pachage?查尋未安裝的包 --whatprovides?CAPABILITY:查詢指定的CAPABILITY安裝包--whatrequires?CAPABILITY:查詢指定的CAPABILITY安裝包有哪些依賴包 2)query-options: --changelog?查看rpm改進日志 -l,?--list?安裝生成的文件 rpm?-ql?查看安裝這個程序包后生成了哪些文件 -i?--info?查詢程序包相關的信息(版本,大小,所屬的包組) rpm?-qi?程序名-c,?--configfiles?查詢指定程序包提供的配置文件-d,?--docfiles?查詢指定程序包提供的文檔--provides?列出程序提供的CAPABTLITY--scripts?查看指定程序安裝后的腳本查詢舉例:?
#查詢某個包是否已經安裝的多個方法 [root@localhost?vsftpd]#?rpm?-q?vsftpd package?vsftpd?is?not?installed [root@localhost?vsftpd]#?rpm?-qa?vsftpd [root@localhost?vsftpd]#?rpm?-qa?|grep?vsftpd [root@localhost?vsftpd]#?rpm?-q?vsftpd vsftpd-3.0.2-10.el7.x86_64 [root@localhost?vsftpd]#?rpm?-qa?|grep?vsftpd vsftpd-3.0.2-10.el7.x86_64。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#查詢某個文件是由哪個安裝包生成的 [root@localhost?vsftpd]#?rpm?-qf?/etc/vsftpd/ vsftpd-3.0.2-10.el7.x86_64。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#查詢指定程序包包含的配置文件 [root@localhost?Packages]#?rpm?-qc?vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
#查詢指定程序包提供的文檔 [root@localhost?Packages]#?rpm?-qd?vsftpd /usr/share/doc/vsftpd-3.0.2/AUDIT /usr/share/doc/vsftpd-3.0.2/BENCHMARKS /usr/share/doc/vsftpd-3.0.2/BUGS /usr/share/doc/vsftpd-3.0.2/COPYING /usr/share/doc/vsftpd-3.0.2/Changelog /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE/vsftpd.xinetd /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/PER_IP_CONFIG/hosts.allow /usr/share/doc/vsftpd-3.0.2/EXAMPLE/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/README.configuration /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/logins.txt /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.conf /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS_2/README /usr/share/doc/vsftpd-3.0.2/FAQ /usr/share/doc/vsftpd-3.0.2/INSTALL /usr/share/doc/vsftpd-3.0.2/LICENSE /usr/share/doc/vsftpd-3.0.2/README /usr/share/doc/vsftpd-3.0.2/README.security /usr/share/doc/vsftpd-3.0.2/REWARD /usr/share/doc/vsftpd-3.0.2/SECURITY/DESIGN /usr/share/doc/vsftpd-3.0.2/SECURITY/IMPLEMENTATION /usr/share/doc/vsftpd-3.0.2/SECURITY/OVERVIEW /usr/share/doc/vsftpd-3.0.2/SECURITY/TRUST /usr/share/doc/vsftpd-3.0.2/SIZE /usr/share/doc/vsftpd-3.0.2/SPEED /usr/share/doc/vsftpd-3.0.2/TODO /usr/share/doc/vsftpd-3.0.2/TUNING /usr/share/doc/vsftpd-3.0.2/vsftpd.xinetd /usr/share/man/man5/vsftpd.conf.5.gz /usr/share/man/man8/vsftpd.8.gz效驗 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
rpm?{-V|--verify}?[select-options]?[verify-options]--nodepsDon't?verify?dependencies?of?packages.--nodigestDon't?verify?package?or?header?digests?when?reading.--nofilesDon't?verify?any?attributes?of?package?files.--noscriptsDon't??execute??the??%verifyscript??scriptlet?(ifany).S?file?Size?differsM?Mode?differs?(includes?permissions?and?file?type)5?digest?(formerly?MD5?sum)?differsD?Device?major/minor?number?mismatchL?readLink(2)?path?mismatchU?User?ownership?differsG?Group?ownership?differsT?mTime?differsP?caPabilities?differ 不添加任何參數默認就是檢查所有參數 rpm?-V?--nodeps程序包的合法性驗證:
????來源合法:由制作者提供,依賴于制作者的數字簽名,簽名是作者使用自己的私鑰加密程序包的特性碼進行的;
????內容合法:包未被二次修改,依賴于:制作者提供的程序特征碼;
? ? ?驗正方式:安裝者用同樣的特征碼提取算法提取程序包的特征碼,并與原作者提供的相比較;
舉例:
rpm?--import?/misc/cd/RPM-GPG-KEY-CentOS-6? rpm?-K?vsftpd-3.0.2-10.el7.x86_64.rpm? vsftpd-3.0.2-10.el7.x86_64.rpm:?rsa?sha1?(md5)?pgp?md5?OK??
數據庫維護
rpm管理器數據庫:/var/lib/rpm rpmdb?{--initdb|--rebuilddb}?[-v]?[--dbpath?DIRECTORY]--initdb:?初始化數據庫,數據庫不存在,才會新建;--rebuilddb:?無論當前數據庫是否存在,都會直接重建此庫;舉例:
#刪除庫 [root@localhost?rpm]#?ls Basenames?????__db.001??__db.003??Group???????Name??????????Packages?????Requirename??Sigmd5 Conflictname??__db.002??Dirnames??Installtid??Obsoletename??Providename??Sha1header???Triggername [root@localhost?rpm]#?rm?-fr?* [root@localhost?rpm]#?ls #使用查詢重新生成庫 [root@localhost?rpm]#?rpm?-qa?vsftpd [root@localhost?rpm]#?ls Basenames?????__db.001??__db.003??Group???????Name??????????Packages?????Requirename??Sigmd5 Conflictname??__db.002??Dirnames??Installtid??Obsoletename??Providename??Sha1header???Triggername [root@localhost?rpm]# #使用命令rpmdb?--initdb生成庫 [root@localhost?rpm]#?rm?-fr?* [root@localhost?rpm]#?ll total?0 [root@localhost?rpm]#?rpmdb?--initdb [root@localhost?rpm]#?ll total?388 -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Basenames -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Conflictname -rw-r--r--.?1?root?root?270336?Aug?23?22:19?__db.001 -rw-r--r--.?1?root?root??81920?Aug?23?22:19?__db.002 -rw-r--r--.?1?root?root?107048?Aug?23?22:19?__db.003 -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Dirnames -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Group -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Installtid -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Name -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Obsoletename -rw-r--r--.?1?root?root??12288?Aug?23?22:19?Packages -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Providename -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Requirename -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Sha1header -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Sigmd5 -rw-r--r--.?1?root?root???8192?Aug?23?22:19?Triggername??
幫助
? 1. man?rpm??
2.?man?rpmdb
轉載于:https://blog.51cto.com/liaoxz/1841791
總結
以上是生活随笔為你收集整理的linux软件包管理-rpm的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 格式化大容量硬盘为fat32
- 下一篇: Jdk1.6 JUC源码解析(13)-L