日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

linux软件包管理-rpm

發布時間:2025/5/22 167 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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]

? ?

安裝?


rpm?????{-i|--install}????[install-options]?PACKAGE_FILE?...


?[GENERAL?OPTIONS]:通用選項-v?詳細信息輸出-vv?更詳細信息輸出


[install-options]:安裝選項 -h?顯示以hash標記輸出進度條yum?-ivh --test測試安裝(不實際安裝,僅測試,檢查依賴及沖突關系); --nodeps?忽略依賴關系安裝; --replacepkgs?重新安裝; ps:rpm可以自帶腳本?--noscripts 四類:prelnstall:安裝過程之前運行的腳本%pre?--noprepostinstall:安裝過程完成之后運行的腳本,%pot?--postpreuninstall:卸載過程真正開始執行之前運行的腳本?%preun?--nopreunpostuninstall:卸載過程完成之后運行腳本?%postun??--nopostun --nosignature:不檢查包簽名信息,不檢查來源合法性; --nodigest:不檢查包完整性信息


例如:安裝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?vsftpd]#?rpm?-ql?vsftpd? /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd_conf_migrate.sh /usr/lib/systemd/system-generators/vsftpd-generator /usr/lib/systemd/system/vsftpd.service /usr/lib/systemd/system/vsftpd.target /usr/lib/systemd/system/vsftpd@.service /usr/sbin/vsftpd /usr/share/doc/vsftpd-3.0.2 /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 /usr/share/doc/vsftpd-3.0.2/EXAMPLE/INTERNET_SITE /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 /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 /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 /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_HOSTS/README /usr/share/doc/vsftpd-3.0.2/EXAMPLE/VIRTUAL_USERS /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 /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 /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 /var/ftp /var/ftp/pub

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

#查詢指定程序包包含的配置文件 [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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。