Linux 软件管理工具之rpm、yum
? ? ? RedHat linux下軟件包安裝方法通常有以下三種。
? ? ? rpm方式安裝,rpm是由紅帽公司開(kāi)發(fā)的軟件包管理方式,使用rpm我們可以方便進(jìn)行軟件的校驗(yàn)、安裝、查詢、卸載、升級(jí)等工作。但是rpm軟件包之間的依賴性問(wèn)題往往會(huì)很繁瑣,尤其是軟件由多個(gè)rpm包組成時(shí)。
? ? ? yum安裝,Yum(全稱為YellowdogUpdater,Modified)是一個(gè)在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。基于RPM包管理,能夠從指定的服務(wù)器自動(dòng)下載RPM包并且安裝,可以自動(dòng)處理依賴性關(guān)系,并且一次安裝所有依賴的軟件包,無(wú)須繁瑣地一次次下載、安裝。
? ? ?編譯安裝,編譯安裝源碼包在某些情況下是必須的,如定制安裝包的各種屬性,優(yōu)化軟件
的運(yùn)行環(huán)境,添加額外的功能模塊等,也是比較常用的一種安裝形式。編譯安裝需要相應(yīng)的編譯環(huán)境。Linux下的編譯器如gcc、g++。
? ? ? ?rpm包分為源碼rpm和二進(jìn)制rpm包,二進(jìn)制的rpm包可以直接安裝,源碼rpm需經(jīng)過(guò)編譯再生成rpm包。rpm來(lái)源有系統(tǒng)安裝光盤(pán)以及各社區(qū)發(fā)行版的網(wǎng)站,常用的有:
? ? ? ?http://mirrors.sohu.com
? ? ? ?http://rpmfind.net
? ? ? ?http://rpm.pbone.net/
rpm包通常表現(xiàn)為:Program-version-release.arch.[src].rpm
? ?Program軟件包名稱
? ?version軟件包版本號(hào)
? ?releaserpm的修訂號(hào),有時(shí)會(huì)包含支持的OS,el5:rhel5
? ?arch系統(tǒng)平臺(tái)類型,getconf LONG_BIT可以獲取系統(tǒng)平臺(tái)的位數(shù)
? ?src表明此rpm包需要再編譯安裝。
如:zsh-4.2.6-3.el5.i386.rpm
rpm命令常用選項(xiàng):
rpm
安裝:
? ?-i--install ? ? ? 跟完整包名,安裝軟件包
? ?-v\-vv\-vvv ? ?顯示詳細(xì)信息
? ?-h ? ? ? ? ? ? ? ? ?以#顯示進(jìn)度
卸載:
? ?-e跟程序名(下同,非完整包名)進(jìn)行卸載
查詢:
? ?-q跟程序名,查詢此軟件有沒(méi)有安裝
? ?-qa查詢所有安裝的軟件包,配合通過(guò)管道送給grep進(jìn)行模糊查詢
? ?-ql跟程序名,查詢此軟件包生成的文件列表
? ?-qf跟文件名,查詢此文件是哪個(gè)軟件包生成的
? ?-qc跟程序名,此軟件生成的配置文件
? ?-q --scripts跟程序名,查詢此包安裝時(shí)執(zhí)行的腳本
? ?-qd跟程序名,查詢此軟件的幫助文檔
? ?-qi跟程序名,查詢此軟件的簡(jiǎn)要信息
升級(jí):
? ?-U跟完整包名,沒(méi)有此軟件直接安裝,有就升級(jí)
? ?-F跟完整包名,只是升級(jí)
校驗(yàn):
? ?-V跟程序名,檢查程序生成的文件的屬性有沒(méi)有改動(dòng)
? ?-K跟完整安裝包名,對(duì)軟件的來(lái)源的合法性和軟件的完整性進(jìn)行校驗(yàn)需事先
導(dǎo)入GPG-KEY
導(dǎo)入系統(tǒng)安裝光盤(pán)上的GPG-KEY: [root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 導(dǎo)入其他軟件源的GPG-KEY: [root@localhost ~]# rpm --import http://mirror.sohu.com/fedora-epel/RPM-GPG-KEY-EPEL-5 [root@localhost Server]# rpm -K zsh-4.2.6-3.el5.i386.rpm zsh-4.2.6-3.el5.i386.rpm: (sha1) dsa sha1 md5 gpg OK [root@localhost Server]# rpm -K --nodigest zsh-4.2.6-3.el5.i386.rpm zsh-4.2.6-3.el5.i386.rpm: (sha1) dsa gpg OK [root@localhost Server]# rpm -K --nosignature zsh-4.2.6-3.el5.i386.rpm zsh-4.2.6-3.el5.i386.rpm: sha1 md5 OK
生成、重建數(shù)據(jù)庫(kù):
? ?--initdb新建rpm數(shù)據(jù)庫(kù),位于/var/lib/rpm,用以存儲(chǔ)軟件包的屬性以及依賴關(guān)系等內(nèi)容。
? ?--rebuilddb重建rpm數(shù)據(jù)庫(kù)(當(dāng)數(shù)據(jù)庫(kù)發(fā)生損壞時(shí)重建)
源碼格式的rpm:
? ? ?src格式rpm通過(guò)使用rpmbuild根據(jù)spec文件對(duì)數(shù)據(jù)包進(jìn)行編譯來(lái)生成二進(jìn)制類型的rpm包
具體步驟:(系統(tǒng)平臺(tái):RHEL6 x86_64 )
[root@station117 ~]# rpm -ivh nginx-1.0.15-5.el6.src.rpm [root@station117 ~]# cd rpmbuild/ [root@station117 rpmbuild]# rpmbuild -ba SPECS/nginx.spec [root@station117 rpmbuild]# rpm -ivh /RPMS/x86_64/nginx-1.0.15-5.el6.x86_64.rpm [root@station117 rpmbuild]# service nginx start [root@station117 rpmbuild]# netstat -tnl | grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 在安裝過(guò)程中會(huì)遇到軟件依賴的問(wèn)題,用yum來(lái)解決比較方便,yum在后面有介紹: 部分安裝包的下載路徑: http://125.39.91.76:1234/sources/GeoIP-1.4.8-1.el6.x86_64.rpm http://125.39.91.76:1234/sources/GeoIP-devel-1.4.8-1.el6.x86_64.rpm http://125.39.91.76:1234/sources/httpd-2.2.25.tar.bz2 http://125.39.91.76:1234/sources/nginx-1.0.15-5.el6.src.rpm
yum:
使用yum之前需要先設(shè)置yum倉(cāng)庫(kù),yum倉(cāng)庫(kù)可以是本地文件夾也可以是其他的文件服務(wù)器
設(shè)置yum倉(cāng)庫(kù)的配置文件在/etc/yum.repos.d/下有repo為后綴的文件
[mycd] ----------> 倉(cāng)庫(kù)id name=My CD ------------> 倉(cāng)庫(kù)名稱 baseurl=file:///media/cdrom/Server ----------> 倉(cāng)庫(kù)位置 enabled=1 -------------> 啟用此倉(cāng)庫(kù) gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release ----> 驗(yàn)證軟件包來(lái)源合法性以及包的完整性。 [Mirror.sohu] name=Mirror.sohu.com baseurl=http://mirror.sohu.com/centos/5/os/$basearch/ 由于rhel5和centos5兼容,所以rhel5也可以用centos5的yum源,sohu上是5而不是5Server,所以只能寫(xiě)5了。如果是其他版本就直接寫(xiě)數(shù)字。 enabled=1 gpecheck=0 gpgkey=http://mirror.sohu.com/centos/5/os/$basearch/RPM-GPG-KEY-CentOS-5 [fedora-epel] name=fedora-epel baseurl=http://mirror.sohu.com/fedora-epel/5/$basearch/ enabled=1 gpgcheck=0 gpgkey=http://mirror.sohu.com/fedora-epel/RPM-GPG-KEY-EPEL-5 yum.conf中的變量: $releasever:代表發(fā)行版本的版本號(hào)。如果系統(tǒng)是fedora core 6的話,則返回6,rhel $basearch:顯示基本架構(gòu)類型。如果系統(tǒng)為i386或i686等,則均返回i386 [root@localhost work]# yum list all Loaded plugins: rhnplugin, security This system is not registered with RHN. RHN support will be disabled. http://mirror.sohu.com/centos/5Server/os/i386/repodata/repomd.xml: [Errno 14] HTTP Error 404: Not Found Trying other mirror. 出錯(cuò)的原因是yum變量$releasever在替換時(shí)成了5Server,而mirror.sohu.com上的目錄為5.改成5之后,更新成功。/etc/yum.conf文件詳解 [main] cachedir=/var/cache/yum ----> yum更新軟件時(shí)的緩存目錄 keepcache=0 ----> 是否保存曾經(jīng)安裝過(guò)的包的源程序,0表示不保存。 debuglevel=2 -------> debug信息輸出等級(jí),范圍為0-10,缺省為2 logfile=/var/log/yum.log ---> 存放系統(tǒng)更新軟件的日志 pkgpolicy=newest -----> 包的策略。有兩個(gè)選項(xiàng),newest和last,如果設(shè)置了多個(gè)repository,而同一軟件在不同的repository中同時(shí)存在,如果是newest,則yum會(huì)安裝最新的那個(gè)版本。如果是last,則yum會(huì)將倉(cāng)庫(kù)id以字母表排序,并選擇最后的那個(gè) 倉(cāng)庫(kù)的軟件安裝。默認(rèn)選newest。 distroverpkg=redhat-release ---> yum會(huì)根據(jù)這個(gè)包判斷你的發(fā)行版本,默認(rèn)是redhat-release,也可以是安裝的任何針對(duì)自己發(fā)行版的rpm包。 tolerant=1 #如果值為1,則yum會(huì)忽略任何的有關(guān)包的錯(cuò)誤。舉例來(lái)說(shuō),當(dāng)執(zhí)行yum來(lái)安裝baz時(shí),如果baz包已經(jīng)安裝在系統(tǒng)中了,則yum會(huì)繼續(xù)重復(fù)安裝baz,而不會(huì)報(bào)錯(cuò)。默認(rèn)值為1。 exactarch=1 ------> 設(shè)置為1,則yum只會(huì)安裝和系統(tǒng)架構(gòu)匹配的軟件包,如,yum不會(huì)將i686的軟件包安裝在適合i386的系統(tǒng)中。默認(rèn)為1 retries=20 -------> 網(wǎng)絡(luò)連接發(fā)生錯(cuò)誤后的重試次數(shù),如果設(shè)為0,則會(huì)無(wú)限重試。默認(rèn)值為6 obsoletes=1 -------> 此選項(xiàng)在進(jìn)行發(fā)行版跨版本升級(jí)的時(shí)候會(huì)用到。 gpgcheck=1 -----------> gpg校驗(yàn)。這個(gè)選項(xiàng)如果設(shè)置在[main]部分,則對(duì)每個(gè)repository都有效。默認(rèn)值為0.
創(chuàng)建本地源:
? ? ?把rpm包放在一個(gè)目錄中,使用createrepo命令生成repodata,repodata中包含軟件的屬性信息和依賴性等信息,如果將系統(tǒng)光盤(pán)中的軟件包拷出來(lái)做一個(gè)源的話,建議使用-g選項(xiàng)生成軟件包組的信息,便于使用yum groupinstall “組名”進(jìn)行安裝。
yum 常用選項(xiàng):
yum
安裝:
? ?install 跟程序名,可模糊匹配,安裝軟件
? ?localinstall 跟完整包名,從本機(jī)目錄安裝軟件包
? ?groupinstall 安裝某個(gè)組件的全部軟件包,可事先用yum grouplist查看可用包組
更新:
? ?update 跟程序名,更新所選軟件
? ?check-update 列出所有可更新的軟件包
? ?list updates 查找可用的更新
? ?update 更新所有可更新的軟件包(慎用)
? ?groupupdate 跟組名,更新某個(gè)組件的所有軟件包
查詢:
? ?list all列出所有已安裝和倉(cāng)庫(kù)中可用的軟件包
? ?list available 列出倉(cāng)庫(kù)中所有可用的軟件包
? ?list updates 列出倉(cāng)庫(kù)中比當(dāng)前系統(tǒng)更新的軟件包
? ?list installed 列出已安裝的軟件包
? ?list recent 列出新加入倉(cāng)庫(kù)的軟件包
? ?info 跟程序名,查詢軟件包信息
? ?whatprovides 跟文件名,查詢此文件時(shí)哪個(gè)軟件生成的
卸載:
? ?remove跟程序名,卸載軟件包
? ?groupremove 跟組名,刪除某個(gè)組件的全部軟件包
清除信息:
? ?clean packages清除遺留在緩存里的包文件
? ?clean metadata 清除遺留在緩存里的元數(shù)據(jù)
? ?clean headers 清除遺留在緩存里的頭文件
? ?clean all 清除包文件,元數(shù)據(jù),頭文件
轉(zhuǎn)載于:https://blog.51cto.com/jackyan/1260023
總結(jié)
以上是生活随笔為你收集整理的Linux 软件管理工具之rpm、yum的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 怎么用u盘安装ios文件 利用U盘安装i
- 下一篇: [转载] 七龙珠第一部——第125话 神