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