2021-05-12 14:32:11
Linux RPM軟體包管理
目錄
1.軟體包的介紹
2.rpm包管理
3.rpm包管理前端工具
1.軟體包的介紹
在我們在對軟體包管理前,先對軟體包有個很好的了解,這樣更方便我們來對其進行管理。
軟體包:是具有特定功能,用來完成某一任務的特定程式或一組程式,其由基本設定和若干可選部件構成,其形式可以是原始檔碼形式也可以是目標碼形式的。
包檔案:包檔案中包含RPM包內檔案、RPM包的後設資料、安裝或解除安裝時執行的指令碼。
包的公共資料庫:包含有程式包的名稱及版本、依賴關係、功能說明、包安裝後生成的各檔案路徑以及校驗碼資訊,其位於/var/lib/rpm
目錄下。
包管理器:是將編譯好的應用程式的各組成檔案打包一個或幾個程式包檔案,從而方便快捷地實現程式包的安裝、解除安裝、查詢、升級和校驗等操作。常用到的管理器有rpm包管理器,rpm包管理器的前端工具yum。
2.rpm包管理
CentOS系統上使用rpm命令管理程式包,進行安裝、解除安裝、升級、查詢、校驗和資料庫維護。
rpm - RPM Package Manager
Usage: rpm [OPTION...]
common options:
-D, --define='MACRO EXPR'
:定義宏表示式--undefine=MACRO
:不定義宏-E, --eval='EXPR'
:列印宏表示式--rcfile=<FILE:...>,--macros=<FILE:...>
:讀取檔案來代替預設檔案--noplugins
:不啟用任何外掛--nodigest
:不檢查包完整性--nosignature
:不檢查來源合法性,忽略簽名-r, --root=ROOT
:使用ROOT作為最高階的目錄,預設‘/’--dbpath=DIRECTORY
:在目錄中使用資料庫--querytags
:顯示所知的標籤--showrc
:顯示最終的rpmrc和macro設定--quiet
:提供簡約的過程列印-v, --verbose
:列印詳細過程
1)rpm包安裝、升級和解除安裝
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...--allfiles
:安裝所有檔案--test
:測試安裝,但不真正 執行安裝,即dry run 模式--allmatches
:移除所有匹配的包--badreloc
:在不可定位的包上重定位檔案-e,--erase
:解除安裝包--excludedocs
:不安裝檔案--excludepatth=<path>
:跳過帶有領導的path內容的檔案--force
:代表--replacepakgs --replacefiles
,為強制安裝-F,--freshen=<packagefile>
:升級已經安裝的包-h,--hash
:與-v
一起,在安裝包時列印安裝過程--ignorearch
:不檢查包的結構--ignoreps
:不檢查包的作業系統--ignoresize
:在安裝前不檢查磁碟空間-i,--install
:安裝包--justdb
:更新資料庫但不修改檔案系統--nodeps
:忽略依賴關係--nofiledigest
:不檢查檔案的完整性--nocontexts
:不安裝檔案的安全環境--noorder
:do not reorder package installation to satisfy dependencies--noscripts
:不執行程式包指令碼--notriggers
:不執行任何被這個包觸發的指令碼--nocollections
:不執行任何收集行為--oldpackage
:降級安裝(慎用)--percent
:列印包安裝的百分比--replacepkgs | replacefiles
:替代安裝,覆蓋安裝-U,--upgrade=<packagefile>
:升級包
注意:
(1)不要對核心做升級操作;Linux支援多核心版本並存,因此,可以直接安裝新版本核心
(2)如果原程式包的組態檔安裝後曾被修改,升級時,新版本提供的同一個組態檔並不會直接覆蓋老版本的組態檔,而把新版本的檔案重新命名(FILENAME.rpmnew) 後保留
(3)upgrade :安裝有舊版程式包,則“升級”,如果不存在舊版程式包,則“安裝”;freshen :安裝有舊版程式包,則“升級”,如果不存在舊版程式包,則不執行升級操作。
從上面可以看出,選項真不是一般多,實際上我們只是用些一般的操作
安裝用:rpm -ivh Package_file
升級用:rpm -Uvh Package_file
和rpm -Fvh Package_file
解除安裝用:rpm -evh Package_file
實際上只有在剛安裝的系統上我們才會用到rpm命令來安裝、解除安裝、升級,系統基礎設定好後,就一般不用rpm,因為很多軟體包都是帶有依賴關係的,rpm安裝的時候會很麻煩,後期我們會用到yum包管理工具,下面會說到。
2)rpm包查詢和校驗
rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]
[select-options]:
-a, --all
:所有檔案-f, --file
:檢視指定的檔案由哪個程式包安裝生成-g, --group
:包所在組-p, --package
:針對尚未安裝的程式包檔案做查詢操作--pkgid
:包id--hdrid
:包頭識別--triggeredby
:查詢觸發包--whatrequires
:查詢指定的 CAPABILITY 被哪個包所依賴--whatprovides
:查詢指定的 CAPABILITY(能力)由哪個包所提供--nomanifest
:do not process non-package files as manifests
[query-options]:
--changelog
:查詢rpm 包的changelog-c
:查詢程式的組態檔-d
:查詢程式的文件-i
:information-l
:檢視指定的程式包安裝後生成的所有檔案--scripts
:程式包自帶的指令碼--provides
:列出指定程式包所提供的CAPABILITY-R
:查詢指定的程式包所依賴的CAPABILITY
[verify-options]:
--nofiledigest
:不校驗檔案完整性--nofiles
:不校驗包內檔案--nodeps
:不校驗包的依賴性--noscript
:不執行校驗指令碼
查詢結果所代表的意義:
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
總的來說查詢用的還挺多的,-qa,-qf,-qp,-q --whatprovides 等挺使用的,而校驗的話,我沒怎麼用過。
rpm除了上面提到的還有其他選項功能,大家可以用幫助檢視。實際上,上面也提到了,一般我們也就用rpm來做查詢用,其他的功能有更好的工具來做,例如使用yum來管理安裝包。
3.rpm包管理的前端工具:yum
YUM: Yellowdog Update Modifier ,rpm的前端程式,可解決軟體包相關依賴性,可在多個庫之間定位軟體包,up2date的替代工具。
要想使用yum工具,需要進行相關的設定。
1)yum repository設定
yum repository:yum repo,儲存了眾多的rpm包,以及包相關的後設資料檔案,放置於特定目錄repodata下。
yum 相關的檔案:
為所有repository提供公共的設定資訊:
/etc/yum.conf
為repository 的指向提供設定資訊:/etc/yum.repos.d/*.repo
安裝紀錄檔:/var/log/yum.log
快取目錄:/var/cache/yum/$basearch/$releasever
yum的repository組態檔中可用的變數:
$releasever
:當前OS 的發行版的主版本號$arch
:平台,i386,i486,i586,x86_64等 等$basearch
:基礎平台;i386, x86_64$YUM0-$YUM9
:自定義變數
yum的repository組態檔中可選用的源:
從/etc/yum.repos.d/*.repo
中我們可以看到.repo
檔案中所需的一些設定的資訊,這裡簡單說明下:
[repository id]
:這個是repo idname=
:這個是repo 名字baseurl=
:這個就是源,你可以選擇使用http://、https://、ftp://、file://中的任何幾個。enabled=
:這個表示是否要啟用這個repo,1代表啟用,0代表禁用。gpgcheck=
:這個表示是否要檢查公鑰,1表示需要公鑰,0表示不需要。gpgkey=
:這個就是公鑰所在的地址(上面填1就不用)enablegroups=
是否使用組,1要,0不要(一般不用)failovermethod=
:這個有倆個選項,roundrobin表示隨機挑釁也是預設設定,priority是按照順序存取。(一般不用)cost=
預設為1000(一般不用)
上面的就是yum repository的設定了,設定好後,yum就可以使用了,當然前提是先把yum安裝包安裝好,可以使用yum命令。
2)yum命令
yum [options] [command] [package ...]
[options]
--nogpgcheck
:禁止進行gpg check(公鑰)-y
:自動回答為“yes”-q
:靜默模式--disablerepo=repoidglob
:臨時禁用此處指定的repo--enablerepo=repoidglob
:臨時啟用此處指定的repo--noplugins
:禁用所有外掛
常用命令:
顯示倉庫列表:
yum repolist [all|enabled|disabled]
顯示程式包:yum list [all | glob_exp1 ...] {available|installed|updates} [glob_exp1][...]
安裝程式包:yum install/reinstall package1 [package2] [...]
升級程式包:yum update/downdate [package1] [package2] [...]
檢查可用升級:yum check-update
解除安裝程式包:yum remove/erase package1 [package2] [...]
檢視程式包information:yum info [...]
檢視指定的特性( 可以是某檔案) 是由哪個程式包所提供:yum provides/whatprovides feature1 [feature2][...]
清理本地快取:yum clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]
構建快取:yum makecache
搜尋:yum search string1 [string2] [...]
檢視指定包所依賴的capabilities:yum deplist package1 [package2] [...]
檢視yum 事務歷史:yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安裝裝及升級本地程式包:yum localinstall/localupdate rpmfile1 [rpmfile2] [...]
(install/update可以代替之)
組管理的相關命令:yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]
一些yum的命令我們也知道了,下面來建立所需repository吧。
3.建立系統光碟的yum repository
系統安裝光碟作為本地yum 倉庫:
(1) 掛載光碟至某目錄,例如/media/cdrom
# mount /dev/cdrom /media/cdrom
(2) 在 /etc/yum.repos.d/下建立組態檔,以".repo"結尾
[base]
name=local repository
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
4.建立多系統網路的yum repository
1)準備:
1.關閉防火牆sys
檢視防火牆是否開啟:iptables -vnL
centos7上關閉
systemctl disable firewalld.service (本次關閉)
systemctl stop firewalld.service(永久關閉)
centos6上關閉
(本次關閉)
service iptables stop(永久關閉)
2.關閉SElinux
檢視是否關閉:getenforce
設定文件來關閉
vim /etc/selinux/config
SELINUX=permissive
setenforce 0
2)建立:
1.安裝ftp服務包
rpm -ivh /run/media/root/CentOS 7 x86_64/Packages/vsftpd-3.0.2-21.el7.x86_64.rpm
rpm -ql vsftpd(兩個重要的檔案)
/usr/lib/systemd/system/vsftpd.service
/var/ftp
啟動ftp服務(21埠)
檢視埠:ss -tnl 或 netstat -ntl
啟動ftp服務:systemctl start vsftpd
設為開機自動啟動ftp服務:systemctl enable vsftpd
2.準備yum系統安裝包
mkdir -p /var/ftp/pub/centos/{6,7}
cp -r /run/media/root/CentOS 7 x86_64/* /var/ftp/pub/centos/7
cp -r /run/media/root/CentOS 6 x86_64/* /var/ftp/pub/centos/6
3.用戶端設定
vim /etc/yum.repos.d/*.repo
[base]
[ftpbase]
name=ftp repository
baseurl=ftp://172.18.253.34/pub/centos/7($releasever)
enabled=1
gpgcheck=1
gpgkey=ftp://172.18.253.34/pub/centos/7/RPM-GPG-KEY-CentOS-7
5.建立第三方的yum repository
1.安裝http服務包
yum -y install httpd
rpm -ql httpd(兩個重要的檔案)
/usr/lib/systemd/system/httpd.service
/var/www/html
啟動http服務(80埠)
檢視埠:ss -tnl 或 netstat -ntl
啟動httpd服務:systemctl start httpd
設為開機自動啟動 httpd服務:systemctl enable httpd
http頁面編輯
vim /var/www/html/index.html
<h1>welcome to Magedu.com </h1>
2.準備第三方rpm相關包
mkdir /var/www/html/app
cp *.rpm /var/www/html/app
createrepo /var/www/html/app
3.建立用戶端
vim /etc/yum.repos.d/*.repo
[http]
name=http repository
baseurl=http://172.18.253.34/app
enabled=1
gpgcheck=0
上面設定yum repository的步驟,可能會不全面,這就需要根據自己系統的條件設定了。安裝是會出現些問題,一般情況有兩個方面:一個是看掛載路徑是否正確,看地址是否對;另一個就是看下是否是快取的原因,清下快取。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-10/147268.htm
相關文章