引言
這篇文章介紹Linux四個(gè)運(yùn)用最普遍的軟件包管理器提完。使用CentOS和Ubuntu這兩個(gè)不同的Linux發(fā)行版,分別介紹rpm、yum挎峦、dpkg和apt-get的使用方法。
文章目錄
- 0×1.RPM和DPKG軟件管理機(jī)制淺析
- 0×2.使用rpm命令安裝卸載軟件
- 0×3.使用yum安裝卸載軟件
0×1.RPM和DPKG軟件管理機(jī)制淺析
目前Linux大多數(shù)發(fā)行版中RPM和DPKG是兩種比較常用的管理機(jī)制搜吧。RPM軟件管理機(jī)制的主流發(fā)行版是Red Hat市俊、CentOS、Fedora滤奈;DPKG軟件管理機(jī)制的主流發(fā)行版是Debian摆昧、Ubuntu。這里不對(duì)這兩種機(jī)制做過(guò)多的解釋蜒程,只需要知道绅你,兩種軟件管理機(jī)制使用的安裝命令不一樣就可以了。
Linux軟件包的命名有一定的規(guī)律,一般的結(jié)構(gòu)是"軟件名稱-版本-適合的系統(tǒng)平臺(tái).擴(kuò)展名"昭躺。
例如忌锯,一個(gè)rpm安裝包名稱是"softname-3.2.6-i386.rpm",按照上面的結(jié)構(gòu)就是领炫,軟件名稱"softname"偶垮,軟件版本"3.2.6",適用的平臺(tái)"i386"(x86構(gòu)架)驹吮;dpkg包的名稱只是后綴不一樣针史,其他命名規(guī)則差不多,例如"sogoupinyin_2.0.0.0068_amd64.deb"碟狞,軟件名稱"sogoupinyin"啄枕,版本"2.0.0.0068","amd64"適合64位系統(tǒng)平臺(tái)族沃,".deb"這是dpkg的安裝包频祝。
然而,不論哪種軟件管理機(jī)制封裝的安裝包脆淹,都存在相關(guān)軟件的依存問(wèn)題常空,比如使用rpm或者dpkg安裝軟件A,A需要系統(tǒng)中已經(jīng)安裝好軟件B和C盖溺,否則A將不能正常安裝漓糙,這就帶來(lái)一個(gè)非常麻煩的問(wèn)題,如果A依賴的程序不止兩個(gè)烘嘱,而是幾百個(gè)昆禽,這幾百個(gè)軟件又存在其它的軟件依賴,手動(dòng)安裝這些依存程序顯然非常麻煩蝇庭。
所以醉鳖,yum和apt-get這兩種安裝方式孕育而生。yum是RPM軟件管理機(jī)制的在線安裝方式哮内,apt-get是DPKG軟件管理機(jī)制的在線安裝方式盗棵,它們都可以自動(dòng)解決軟件的依存問(wèn)題,當(dāng)某個(gè)需要安裝的軟件存在依存軟件時(shí),安裝程序會(huì)自動(dòng)搜索指定的網(wǎng)絡(luò)服務(wù)器中是否存在這些依存的軟件纹因,如果存在喷屋,會(huì)將這些軟件一次性全部安裝好。
0×2.使用rpm命令安裝卸載軟件
這一部分實(shí)驗(yàn)是在"CentOS7"中完成的辐怕,軟件的安裝需要root權(quán)限(或?qū)?dāng)前用戶添加到/etc/sudoers文件中逼蒙,然后使用sudo),我已經(jīng)將CentOS的ISO載入光驅(qū)寄疏,在光盤的"Packages"目錄中有很多rpm的安裝包是牢,本例使用其中的"zsh-5.0.2-14.el7.x86_64.rpm"這個(gè)安裝包來(lái)演示rpm安裝命令:
#為了使普通用戶暫時(shí)獲得root權(quán)限,首先將當(dāng)前用戶添加到sudoers文件中陕截,切換到root用戶編輯sudoers文件
[qingos@qingsword.com~]$ su root
[root@qingsword.com~]# gedit /etc/sudoers
#找到下面的位置驳棱,在root下方添加一條,當(dāng)前用戶名是qingos农曲,后面的和root相同即可社搅,保存退出
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
qingos ALL=(ALL) ALL
#返回普通權(quán)限后就可以使用sudo命令了,CentOS7中默認(rèn)光盤的掛載位置是在"/run/media/當(dāng)前登陸用戶用戶名/光盤名稱"乳规,進(jìn)入光盤目錄中的"Packages"目錄
[root@qingsword.com~]# exit
[qingos@qingsword.com~]$ cd /run/media/qingos/CentOS\ 7\ x86_64/Packages/
#使用rpm命令安裝形葬,因?yàn)檫@個(gè)軟件包沒(méi)有其他的依存關(guān)系,安裝成功暮的,參數(shù)"i"是安裝的意思笙以,"v"是顯示詳細(xì)信息,"h"是顯示進(jìn)度條冻辩。
[qingos@qingsword.com Packages]$ sudo rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm
準(zhǔn)備中... ###### [100%]
正在升級(jí)/安裝...
1:zsh-5.0.2-14.el7 ###### [100%]
#查看軟件都被釋放到了系統(tǒng)的哪些位置
[qingos@qingsword.com Packages]$ rpm -qpl zsh-5.0.2-14.el7.x86_64.rpm
使用rpm卸載軟件:
#與安裝相同猖腕,只需要將參數(shù)i替換成e就能卸載軟件,所不同的是恨闪,卸載軟件只需要輸入軟件的名稱
[qingos@qingsword.com Packages]$ sudo rpm -evh zsh
0×3.使用yum安裝卸載軟件
前面已經(jīng)介紹過(guò)倘感,rpm和dpkg在安裝軟件包的時(shí)候存在依存屬性的問(wèn)題,這個(gè)問(wèn)題是軟件的發(fā)布者在封裝這個(gè)軟件的時(shí)候的系統(tǒng)環(huán)境所決定的咙咽,yum在線安裝很好的解決了這個(gè)問(wèn)題老玛。
首先復(fù)現(xiàn)一下rpm依存問(wèn)題,使用rpm安裝CentOS7系統(tǒng)盤中的"yp-tools-2.14-3.el7.x86_64.rpm"會(huì)遇到依存屬性的問(wèn)題钧敞,然后使用yum在線安裝的功能自動(dòng)搜索并安裝這些依存軟件:
#如果使用rpm安裝一個(gè)有依存屬性的軟件就會(huì)出現(xiàn)下面這樣的提示
[qingos@qingsword.com Packages]$ sudo rpm -ivh yp-tools-2.14-3.el7.x86_64.rpm
錯(cuò)誤:依賴檢測(cè)失斃:
ypbind 被 yp-tools-2.14-3.el7.x86_64 需要
#確保網(wǎng)絡(luò)暢通,使用yum來(lái)安裝
[qingos@qingsword.com~]$ sudo yum install yp-tools
#顯示需要下載的依存軟件包數(shù)量和大小
安裝 1 軟件包 (+1 依賴軟件包)
總下載量:141 k
安裝大欣缦怼:299 k
Is this ok [y/d/N]: y #輸入y回車就開(kāi)始下載安裝了
如果想要?jiǎng)h除這個(gè)軟件余素,只需要將install替換成remove豹休,對(duì)應(yīng)的依賴包也會(huì)被自動(dòng)刪除:
[qingos@qingsword.com~]$ sudo yum remove yp-tools
移除 1 軟件包 (+1 依賴軟件包)
安裝大写独ァ:299 k
是否繼續(xù)?[y/N]:y
yum自動(dòng)升級(jí)系統(tǒng)中所有軟件到最新版本:
#更新系統(tǒng)所有軟件包
[qingos@qingsword.com~]$ sudo yum update
安裝 2 軟件包 (+1 依賴軟件包)
升級(jí) 184 軟件包
總計(jì):369 M
總下載量:354 M
Is this ok [y/d/N]: y
#單獨(dú)更新一個(gè)軟件,只需要在上面的命令后面加上需要更新的軟件名稱即可
[qingos@qingsword.com~]$ sudo yum update openssh-server
列出是否已安裝某個(gè)軟件包以及這個(gè)軟件包是否有可用更新:
[qingos@qingsword.com~]$ yum list openssh-server
#如果這個(gè)軟件包已經(jīng)安裝凤巨,會(huì)在輸出列表的最后一列的關(guān)鍵字前添加一個(gè)"@"符號(hào)视乐,如果沒(méi)有"@"符號(hào),說(shuō)明這個(gè)軟件包未安裝敢茁,如果已經(jīng)安裝的軟件包有更新佑淀,會(huì)在下面出現(xiàn)一個(gè)新版本的文件名,并且最后一列提示"updates"
Installed Packages
openssh-server.x86_64 6.4p1-8.el7 @anaconda/7.0
Available Packages
openssh-server.x86_64 6.6.1p1-33.el7_3 updates
列出云服務(wù)器上是否存在某個(gè)軟件包:
[qingos@qingsword.com~]$ yum search openssh-server
N/S matched: openssh-server
openssh-server.x86_64
openssh-server-sysvinit.x86_64