您好,登錄后才能下訂單哦!
這篇文章主要為大家詳細介紹了程序包管理器rpm和yum的使用,文中示例代碼介紹的非常詳細,圖文詳解容易學習,非常適合初學者入門,感興趣的小伙伴們可以參考一下。
在早期我們在Linux上安裝程序時,都采用的源代碼來安裝應用程序,這就意味著我們每次都要經過預處理,編譯,匯編,鏈接最后生成可執行的二進制文件;這樣的操作太過繁瑣,為簡化安裝步驟,便于廣大用戶的安裝部署程序,程序提供商就在特定的系統上面編譯好相關程序的安裝文件并進行打包,提供給大家下載,而對這些程序包進行管理的就是程序包管理器;
不同Linux發行版本,就有不同的程序包管理器;在這里列舉一些常用的程序包管理器;
在Debian中dpkg工具來管理所有.deb后綴名的包文件;Redhat中就使用最為經典的rpm程序包管理器,rpm是Linux的程序包管理器的行業標準,使用perl語言編寫,在此基礎上有人用C語言對其進行重新編寫,提高了其運行效率;dpkg最早是由 Debian Linux 社群所開發出來的, 只要是衍生亍 Debian 的其他 Linux distributions 大多使用 dpkg 這個機制來管理軟件的, 包括B2D, Ubuntu 等等,其前端工具有apt-get;
在這里給大家主要介紹關于rpm程序包管理器的相關功能;
首先必須要清楚關于rpm的源代碼包以及二進制包的命名規則,能夠熟悉其中所給予的信息;
源代碼包:software_name-VERSION.src.rpm
二進制包:software_name-VERSION-[release].[os].arch.rpm
software_name:軟件名;
VERSION:版本號,分為主版本號major,次版本號minor以及發行版本號release
[os]:所支持的操作系統版本信息,el6,el7,suse11,fedora22...
arch:硬件平臺類型,i386,i686,x64,ppc,sparc,noarch
rpm在制作時,制作者通常會制作主包和次包兩種,二者存在依賴關系,即先安裝某部分程序才能按照他所依賴的部分進行接下去的安裝,否則,安裝無法進行;
主程序包:
software_name-VERSION-[release].[os].arch.rpm
附屬功能包:
software_name-function-VERSION-[release].[os].arch.rpm
rpm命令行工具:
①可以將編譯好的程序進行打包,封裝在一起;
②可以進行安裝,卸載,查看,升級,校驗及數據庫管理功能;
在使用rpm程序包進行安裝時,rpm程序管理器會自動生成程序的文件,文件清單(保存文件名和依賴 關系)以及在安裝程序所需要的一些固定的腳本內容如安裝前腳本preinstall,安裝后腳本
postinstall,卸載前腳本preunistall,卸載后腳本postunistall等;還需要安裝rpm數據庫,對所 安裝的程序進行比對,看是否版本為最新;該數據庫路徑為/var/lib/rpm;在進行安裝,卸載等操作 時,要在光盤掛載點下的Packets下進行;
rpm命令:
-v:顯示安裝例程的詳細信息;
-vv:顯示非常詳細的安裝信息;
安裝:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
install-option:
-h,--hash:用50個#來表示安裝進度;
--test:并不是真正的安裝軟件包,僅僅測試在安裝時能否正常完成,如果失敗,則說出原 因;
--nodeps:忽略因為依賴關系導致的安裝錯誤;(不建議使用)
--replacefiles:在安裝軟件包時,軟件包中的文件會直接將原來安裝的文件替換;
--replacekgs:不卸載軟件包而重新安裝;
--noscripts:不運行任何腳本;
--nopre:不運行安裝前腳本;
--nopost:不運行安裝后腳本;
--nosignature:不去考慮軟件包的來源是否合法;
--nodigest:不考慮軟件包是否完整;
常見組合選項:-ivh
例 安裝tree命令 ######即為-h選項安裝進度,tree-1.6.0-10.el7.x86_64.rpm即為-v選項的安裝例 程信息;
使用--test進行測試操作,對安裝進行測試,看是否能行,并不進行實質性安裝;
升級:
升級安裝有兩種方式:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
如果事先未安裝程序,則直接安裝最新版本的程序,若已經安裝程序,就在該程序基礎上進行升級安 裝;
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
僅僅只能對已經安裝的低版本的程序包進行升級安裝;
注意:為了保證系統的正常運行最好不要對內核進行升級;
常用選項與安裝相同:
-h,--hash:用50個#來表示安裝進度;
--test:并不是真正的安裝軟件包,僅僅測試在安裝時能否正常完成,如果失敗,則說出原 因;
--nodeps:忽略因為依賴關系導致的安裝錯誤;(不建議使用)
--replacefiles:在安裝軟件包時,軟件包中的文件會直接將原來安裝的文件替換;
--replacekgs:不卸載軟件包而重新安裝;
--noscripts:不運行任何腳本;
--nopre:不運行安裝前腳本;
--nopost:不運行安裝后腳本;
--nosignature:不去考慮軟件包的來源是否合法;
--nodigest:不考慮軟件包是否完整;
--oldpackage:降級安裝,用老版本的程序包替換新版本的程序包;
卸載:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME(軟件名) ...
常用選項:
--allmatches:卸載時所有匹配指定名稱的程序包的各個版本;
--test:測試卸載;
--nodeps:卸載時忽略一欄關系,不建議使用;
例
卸載操作較為簡單,直接命令+選項+卸載的軟件名;
查詢:
安裝之前需要查詢,卸載之前需要查詢,做任何操作哦之前都要進行查詢操作;
rpm {-q|--query} [select-options] [query-options](直接給出程序包名)
select options:
-a,--all:查詢所有已經安裝的程序包信息;
例 查找相關的軟件包
-f,--file FILE:查找指定文件由那個程序包提供的;
--whatprovides CAPABILITY:查詢指定的CAPABILITY是有哪個程序包提供
例 查找文件/bin/chown由哪個程序包提供
-p,--package PACKAGE_FILE(程序包文件名稱):
對還沒有安裝的程序包文件執行查詢操作;跟p配合的必須是程序包文件
[root@localhost wjq]# rpm -qpl /media/guangpan/Packages/tree-1.6.0-10.el7.x86_64.rpm
query options:
--changelog:查詢rpm程序包的changelog
-c,--configfiles:查詢指定程序包中有哪些配置信息;
-d,--docfiles:查詢指定程序包中有哪些文檔文件;
例 查看tree程序包中有哪些文檔文件
-i,--info:查詢程序包相關信息,包括版本號,發行號,大小;
例 查看tree程序相關信息
-l,--list:列表顯示程序生成哪些文件;
例
--provides:列出制定程序包提供的所有的CAPABILITY;
-R,--requires:查詢程序包的依賴關系
--scripts:查看程序包所攜帶的腳本的內容
校驗:用于檢查包安裝生成的文件屬性是否發生變化
rpm {-V|--verify} [select-options] [verify-options]
select options與查詢的select options一樣;
常用選項:
-V :后面加的是程序名稱,若該程序屬有的文件發生改變就會顯示;
例
-Va :顯示目前系統上面所有可能被修改過的文件;
例
-Vp :后面加的是文件名,顯示該程序內可能被更改過的文件;
-Vf :后面加的是文件名,顯示某個文件是否被修改過。
對應屬性位說明:只有在對應的屬性為發生改變后,屬性才會顯示;
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 mTime differs 文件的修改時間發生改變
P caPabilities differ 包的能力發生改變
數據庫管理:數據庫路徑為/var/lib/rpm若該路徑下的數據遭到破壞則系統無法知道有哪些軟件在 系統中,那些軟件的詳細信息都無法顯示;
rpm數據庫管理主要分為初始化與重建兩個部分,初始化,若已安裝數據庫則初始化結果不變,若 未安裝數據庫,則對數據庫進行安裝,重建就是在原有數據庫的基礎上進行覆蓋安裝操作;
rpm {--initdb|--rebuilddb} --dbpath /PATH/TO/FILE
--initdb:初始化數據庫;
--rebuilddb:重建數據庫;
yum程序包管理器:
yum(全稱Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。yum提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令,而且命令簡潔而又好記。yum是客戶機服務器模式,服務器也稱為軟件倉庫,存儲著許多的軟件包以供安裝;客戶端是用來指定服務器以及程序包的路徑喝一些必要的控制操作;
yum的主配置文件/etc/yum.conf
該文件一般情況下是不修改的,只提供yum軟件包的公共配置信息;
yum的次配置文件/etc/yum.repos.d/*.repo
在yum.repos.d目錄下創建以repo為后綴的文本文件,每個文件可以配置指向多個軟件倉庫;yum命令在安裝或更新時,通過查找這些配置文件所指向的路徑,得到多個軟件倉庫,從這些軟件倉庫中得到最新版本進行安裝或更新;
在/etc/yum.repos.d下創建的文本文件中的格式:
[repoid]
name=
baseurl=schema://hostname/PATH/TO/REPODATA (hostname可省略不寫)
schema:
http,ftp,nfs:網絡服務器指向
file:本地服務器指向
enabled={0|1},0表示禁用此倉庫指向,1表示啟用,如果沒有enable語句,默認為啟動狀態;
gpgcheck={0|1}:0表示不進行程序包認證,1表示認證,如果為1,需要指定認證所需要的公鑰文 件,需要使用gpgkey語句;
gpgkey=schema://hostname//PATH/TO/PUBLIC_KEY_FILE 軟件包公鑰,當為本地服務器指向時可省略公鑰路徑;
例
注意:同一個文本文件下的不同配置信息之間使用[repoid]進行隔離,所有配置信息生效的范圍是從一個[]開始到下一個[]結束;
主配置文件解析:
cachedir:yum緩存的目錄,yum在此存儲下載的rpm包和數據庫,一般是/var/cache/yum。
debuglevel:除錯級別,0──10,默認是2
logfile:yum的日志文件,默認是/var/log/yum.log。
exactarch,有兩個選項1和0,代表是否只升級和你安裝軟件包cpu體系一致的包,如果設為1,則如你 安裝了一個i386的rpm,則yum不會用686的包來升級。
gpgchkeck= 有1和0兩個選擇,分別代表是否是否進行gpg校驗,如果沒有這一項,默認好像也是檢查 的。
自定義配置軟件倉庫
1.創建一個目錄將需要的程序包放入目錄中;
2.使用createrepo命令創建倉庫;產生repodata;
3.在/etc/yum.repos.d下創建一個關于該軟件倉庫的配置文件,以repo為后綴;
yum命令(該命令的使用要在聯網的情況下):
yum [options] [command] [package ...]
option:
-q:安靜模式,使yum沒有輸出任何的信息,不顯示安裝過程;
-y:yum命令下的所有交互操作yes or no全部以yes表示;
yum安裝:
yum install:全部安裝
install package1 [package2] [...]:指定程序包安裝
yum卸載:
yum remove|erase package1 [package2] [...]
yum更新:
update [package1] [package2] [...]:對所更新的程序包進行最新更新
update-to [package1] [package2] [...]:指定目的版本號的更新;
yum list [...]查詢操作,可查看當前系統下的安裝的,未安裝但可用的程序包;
查看所有程序包:
yum list all
查看所有已安裝的程序包:
yum list installed
顯示所有尚未安裝但可以安裝的程序包:
yum list available
顯示最近安裝的程序包:
yum list recent
顯示所有可以升級更新的程序包:
yum list updates
yum清除緩存:
清理本地緩存信息;
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
清除緩存目錄下的軟件包
yum clean packages
程序包組的管理命令:
groups [...]
組安裝:
groupinstall group1 [group2] [...]等于groups install
組更新:
groupupdate group1 [group2] [...]等于groups update
顯示當前組列表:
grouplist [hidden] [groupwildcard] [...]
卸載安裝的組:
groupremove group1 [group2] [...]
顯示組信息:
groupinfo group1 [...]
根據關鍵字進行匹配,默認情況下,搜索程序包名稱及匯總信息,模糊搜索;
search string1 [string2] [...]
yum重新安裝
reinstall package1 [package2] [...]
顯示每個程序包所有的依賴關系
deplist package1 [package2] [...]
以上就是程序包管理器rpm和yum的使用方法介紹,詳細使用情況還得要大家自己使用過才能知道具體要領。如果想了解更多相關內容,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。