7.1 安裝軟件包的三種方法
7.2 rpm包介紹
7.3 rpm工具用法
7.4 yum工具用法
7.5 yum搭建本地倉(cāng)庫(kù)
三種方法
linux安裝軟件比較靈活(方法多)益眉。了解linux歷史的都知道linux的出現(xiàn)和發(fā)展和自由軟件、開(kāi)源分不開(kāi)桃漾。開(kāi)源就是開(kāi)放源代碼,最初在linux上安裝軟件就是用源代碼進(jìn)行編譯,后來(lái)出現(xiàn)了各種管理工具洗贰。不同的發(fā)行版可能采用不同的包管理工具污淋,我比較熟悉的是debian系apt(dpkg)、redhat系yum(rpm)叶洞。其中rpm鲫凶、dpkg是包管理的基礎(chǔ)工具,yum衩辟、apt是基于前者的前端管理器螟炫,主要處理依賴關(guān)系。
redhat系列發(fā)行版的包管理工具是rpm艺晴,可以方便的進(jìn)行軟件的安裝昼钻、查詢、卸載封寞、升級(jí)等工作然评。但是rpm軟件包之間的依賴性問(wèn)題往往會(huì)很繁瑣,尤其是軟件由多個(gè)rpm包組成時(shí)。yum可以很好解決依賴關(guān)系狈究,由python開(kāi)發(fā)碗淌,是很重要的工具。有上面兩個(gè)工具還不夠,不同linux發(fā)行版的軟件包可能造成安裝困難亿眠,或者新開(kāi)發(fā)的軟件只有源代碼碎罚,這時(shí)就需要編譯源碼。安裝過(guò)程就是通過(guò)相應(yīng)的編譯器把源代碼編譯為可以使用的二進(jìn)制軟件纳像。
rpm
除了下在rpm軟件包荆烈,系統(tǒng)鏡像里有大量rpm包,通常用鏡像制作rpm倉(cāng)庫(kù)竟趾。
mount /dev/cdrom /mnt
掛載光驅(qū)后查看packages目錄就可以看到許多rpm包憔购。rpm是按照“包名-版本號(hào)-發(fā)布版本號(hào)-平臺(tái)”命名的√妒蓿“平臺(tái)”一般分
i686(32位)和x86_64(64位)倦始。常用的rpm命令有:
rpm -ivh #安裝包
rpm -Uvh #升級(jí)包
rpm -e #卸載,卸載成功什么都不顯示
rpm -a #列出所有安裝的包
rpm -q #查詢某包是否安裝
rpm -qi #查詢包的詳細(xì)信息
rpm -ql #列出某包所有安裝的文件
rpm -qf 文件絕對(duì)路徑 #查看該文件是由哪個(gè)包安裝的
rpm -qf `which cd` #利用反引號(hào)嵌套which命令山卦,查看cd命令是哪個(gè)包安裝的
yum
rpm只能安裝指定軟件包鞋邑,如果涉及依賴,可能很復(fù)雜账蓉。比如要安裝的A軟件依賴B軟件枚碗,B軟件依賴C軟件,C軟件依賴D軟件等等铸本,那么用rpm安裝A軟件會(huì)讓人瘋掉肮雨。yum可以處理依賴關(guān)系,自動(dòng)安裝需要的依賴軟件箱玷。之所以linux下會(huì)有軟件依賴怨规,是因?yàn)榍懊嫣岬降拈_(kāi)源。開(kāi)源軟件會(huì)發(fā)布源代碼锡足,于是在開(kāi)發(fā)新軟件時(shí)不用重復(fù)造輪子波丰,直接“引用”其他軟件的部分代碼就可以。yum工具常用的命令有:
yum list #列出可用包舶得,分三列:第一列包名掰烟,第二列是中間是版本號(hào)、發(fā)布版本號(hào)沐批,第三列是倉(cāng)庫(kù)名
#ls /etc/yum.repos.d目錄里有yum配制文件
yum search #搜索軟件包纫骑,也可以用yum list | grep ‘包’
yum install #安裝軟件包
yum grouplist #列出組包,例如gnome組九孩、web服務(wù)組等
yum groupinstall #安裝組包
yum remove #卸載包先馆,會(huì)一并卸載依賴的包
yum update #升級(jí)包,不加包名的話升級(jí)所有可升級(jí)的包躺彬、內(nèi)核
yum provides “/*/vim” #根據(jù)命令搜索
yum本地倉(cāng)庫(kù)
把光驅(qū)鏡像里的包做本地倉(cāng)庫(kù):
- 掛載光驅(qū)到/mnt
- 備份/etc/yum.repos.d
- 刪除/etc/yum.repos.d/*
- 新建/etc/yum.repos.d/dvd.repo,內(nèi)容如下
[dvd]
name=install dvd
baseurl=file:///mnt
enable=1
gpgcheck=0
- yum clean all 清除緩存
- yum list 刷新yum倉(cāng)庫(kù)
然后就可以使用本地的yum倉(cāng)庫(kù)了