軟件包管理系統
首先yum、rpm、repo這三個詞都是屬於軟件包管理系統下的。我今天遇到的重裝R語言的問題就是血與淚的教訓:不到萬不得不以不要自己編譯安裝軟件,否則時間久了管理起來會一團糟,大多數軟件都能通過Linux的軟件包管理系統進行統一安裝與管理。Linux 發行版主要有兩大包管理技術陣營: Debian 的.deb,和紅帽的.rpm:
包管理系統 | 發行版 (部分列表) |
---|---|
Debian Style (.deb) | Debian, Ubuntu, Xandros, Linspire |
Red Hat Style (.rpm) | Fedora, CentOS, Red Hat Enterprise Linux, OpenSUSE, Mandriva, PCLinuxOS |
更直白一點說,就是Ubuntu的.deb 相當於 CentOS的.rpm 相當於 Windows的.exe 相當於 OSX的.dmg。
上層和底層軟件包工具
軟件包管理系統通常由兩種工具類型組成:底層工具用來安裝和刪除軟件包文件(rpm);上層工具完成元數據搜索和依賴解析(yum)。
我們用yum與rpm都可以安裝軟件:
yum install package_name rpm -i package_file
但是yum會從一個資源庫(repository)中下載軟件包,並經過完全依賴解析來安裝它,這也是爲什麼每次運行yum install的時候會看到安裝一堆相關軟件;而rpm則需要先下載好一個rpm文件然後進行安裝,並且如果rpm程序發現缺少了一個依賴,就會報錯並退出。
資源庫(repository)
剛纔我們提到yum會從一個資源庫(repository)中下載並安裝軟件包,而標題中的repo指的就是資源庫,它的路徑在/etc/yum.repos.d/下,我們可以看看這個目錄裏有些什麼:
[root@n1 logos]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Vault.repo devtools-2.repo
所以如果你發現:yum install R報錯說找不到相應的包,那就是因爲你的資源庫不夠強大,沒有包含R這個軟件。
在R語言官網介紹如何在Red Hat上安裝R的文檔中有這麼一句話:“The Fedora RPMs for R have been ported to RHEL by the project Extra Packages for Enterprise Linux (EPEL).”
Google一下”EPEL”,可以在EPEL的中國官網上看到介紹:“企業版 Linux 附加軟件包(以下簡稱 EPEL)是一個由特別興趣小組創建、維護並管理的,針對 紅帽企業版 Linux(RHEL)及其衍生髮行版(比如 CentOS、Scientific Linux、Oracle Enterprise Linux)的一個高質量附加軟件包項目。”
也就是說EPEL是一個彙集了各種附加軟件包的項目,而R語言就包含在這個項目,我們可以通過如下命令安裝並啓用 EPEL 源:
yum install epel-release
此時我們會發現資源庫的目錄/etc/yum.repos.d/下多出了兩個.repo文件epel.repo與epel-testing.repo,現在再來運行yum install R就可以順利安裝了!
本文參考了The Linux Command Line中文版,並結合了自己在實際項目中遇到的問題。當然,yum還有查找、更新、刪除等操作,這個相信大家都會用man自己去了解,希望對大家有幫助。