CentOS安裝R中看yum、rpm、repo到底有什麼關係

軟件包管理系統

首先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自己去了解,希望對大家有幫助。


發佈了7 篇原創文章 · 獲贊 5 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章