歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 從CentOS安裝R中看yum、rpm、repo到底有什麼關系

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

日期:2017/2/28 13:55:50   编辑:Linux教程

在圖形界面下習慣了雙擊.exe(或者.dmg)安裝軟件,到了Linux服務端可能會有很大的不適。此前,我都是直接Google,然後不管三七二十一地直接把安裝命令丟到bash裡,期待順利安裝……

但今天當我要重裝R語言的時候,由於以前是手工編譯安裝的,現在需要用yum來安裝卻總是出錯(yum安裝處理了一些依賴關系才能使得rstudio-server順利運行)。再也不想忍受這種聽天由命的感覺了,於是理解了一下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自己去了解,希望對大家有幫助。

更多CentOS相關信息見CentOS 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=14

Copyright © Linux教程網 All Rights Reserved