【Linux】安裝軟體的三種方式--rpm、yum、原始碼包
說明:此文首發於本人原創公眾號【媛測】中,如有轉載,請著明出處!
在windows系統下安裝軟體很簡單,下載軟體包後雙擊.exe檔案,點選下一步即可。然而在linux安裝軟體就沒那麼容易了,不同的Linux發行版有所差異,下面以centos7系統為例說明,如何在linux下安裝軟體。
linux系統下安裝軟體一般有3種方法:①rpm工具 ②yum工具 ③原始碼包安裝
目錄
一、三種安裝方式
在Linux下安裝軟體包,主要有3種辦法
(1)rpm工具(redhat package manager,手動安裝,難點在於包的依賴關係)
rpm包類似於windows下的.exe檔案,安裝路徑和檔名基本都是固定的。
rpm -ivh [rpm完整包名]
(2)yum工具(python開發出來的工具,操作物件rpm包,能自動解決軟體包的依賴關係,是最常用的方式)
yum install -y 【包名簡稱】
(3)原始碼包(需要通過編譯器把該原始碼包編譯成可執行的檔案)【安裝難度大】
./configure---->make---->make install
二、 rpm包及rpm工具使用
要想使用rpm工具,得先有rpm包。
1、rpm包格式說明
上圖所示:
abrt是包名、2.1.11是版本資訊、48.el7.centos是釋出版本號、x86_64是執行平臺;
另外有一些rpm包沒有寫具體平臺而是noarch:說明沒有平臺限制。
2、rpm工具用法
(1)rpm常用選項:
-a:查詢所有已安裝rpm包
-e:刪除指定rpm包
-f:查詢指定rpm包
-i:顯示指定rpm包的詳細資訊
-h:顯示安裝rpm包列出標記
-v:顯示指令的執行過程,即視覺化過程
-U:升級指定rpm包
-q:使用詢問模式
-l:顯示指定rpm包的檔案列表
(2)常用命令
安裝rpm包:rpm -ivh [rpm包名] ; 【注意包名一定要寫全到.rpm,不能簡寫】
升級rpm包:rpm -Uvh [rpm包名]; 【注意同上】
解除安裝rpm包:rpm -e [rpm包名] ;如:rpm -e bc;【這裡需要注意的是:解除安裝可以不用寫全包名】
檢視已安裝rpm包:rpm -q [指定rpm包名] 或者rpm -qa 表示列出所有已安裝包 如:rpm -q vim-enhanced;查詢所有:rpm -qa;
檢視已安裝rpm包的具體資訊:rpm -qi [rpm包名] 如:rpm -qi vim-enhanced
列出rpm包的安裝檔案:rpm -ql [rpm包名] 如:rpm -ql vim-enhanced
檢視某個檔案屬於哪個rpm包安裝的:rpm -qf [檔案絕對路徑] 如:rpm -qf /usr/bin/vim
當某個命令忘記了絕對路徑,又不想分2步來查詢。那麼可以後面跟which cd(這裡的符號時反引號):rpm -qf `which cd` /這裡寫入的命令不能是帶有alias的
【溫馨提示】
當你執行rpm -ivh 安裝rpm包的時候你會發現,其實rpm安裝需要很多的依賴包,並且需要手動安裝依賴後才能rpm -ivh安裝。執行rpm -e 也是一樣的;所以一般也很少使用rpm進行軟體的安裝,最常用的安裝工具是yum。
二、yum工具用法
yum工具相比rpm工具的優勢是:yum安裝會聯網自動安裝依賴包,不需要手動安裝依賴。還有一個好處是使用yum安裝時,僅僅是寫入包名即可,而rpm安裝時,是需要寫入包全名的。
yum配置檔案路徑:/etc/yum.repos.d/
1、常見的yum用法:
列出所有可用的rpm包:yum list (第一列是包名,第二列是版本號,第三列是配置檔案/etc/yum.repos.d/中配置的倉庫名)
精準搜尋指定的rpm包:yum list | grep 'vim' (只顯示出包名中包含vim的rpm包)
搜尋指定名稱相關的所有rpm包:yum search vim (顯示所有包名和介紹中包含vim的rpm包,比較模糊)
yum安裝rpm包:yum install -y 【包名簡稱】;-y表示安裝時不再詢問是否安裝
yum解除安裝rpm包:yum remove 【包名簡稱】;//解除安裝時不要加-y選項,因為如果要解除安裝的依賴包又是系統所需要的,那麼繼續解除安裝有可能會導致系統異常,不加-y也可以檢視到它所依賴的包都有哪些
yum更新rpm包:yum update 【包名簡稱】;//使用在剛安裝完系統可以使用。如果系統中有已經運行了一段時間的服務,那麼這時去升級可能會出現問題【注意:如果直接yum update 不加包名,則會直接升級所有包和升級系統】
查詢一個命令是由哪個包來安裝的:yum provides "/*/vim"
2、yum使用光碟搭建本地倉庫:
當Linux不能聯網的時候,我們就不能使用聯網的yum源了。這時需要自己在系統中使用光碟製作yum源, 搭建本地的yum源,讓它在本地中尋找RPM包。具體步驟如下:
(1)掛載光碟映象到/mnt目錄:mount /dev/cdrom /mnt
(2)刪除/etc/yum.repos.d/目錄下的所有repo檔案(刪除前注意先備份,不然等下無法還原了)
cp -r /etc/yum.repos.d/ /etc/yum.repos.d_bak/
rm -rf /etc/yum.repos.d/*
(3)建立新檔案dvd.repo
vim /etc/yum.repos.d/dvd.repo,加入如下內容:
(enabled--是否可用,1可用,0不可用; gpgcheck--是否檢測,0不檢測,1檢測)
(4)清理之前的快取:yum clean all
(5)yum list 檢視本地倉庫是否配置成功(能看到自己配置的倉庫名,就是成功了)
這時就能安裝你需要的rpm包了!
3、配置yum.conf 保留下載的rpm包
可以設定使yum保留已經下載的rpm包,供以後升級或者重新安裝時使用 。只需
修改/etc/yum.conf即可(這是個新檔案)
[main]
cachedir=/home/soft1/yumcache
keepcache=1
debuglevel=2
其中cachedir是放置下載的包的地方,可以自定義
keepcache=1表示儲存已經下載的rpm包,0表示不儲存
到這裡,你應該熟悉yum工具了。不知道你有沒有注意到使用yum安裝的時候會非常慢,那是因為預設的yum源是使用國外的yum倉庫的。
下面我們來介紹使用國內的倉庫作為yum源。
在操作之前,我們先恢復之前的yum源,否則使用的yum時會出問題的。操作如下:
rm -rf /etc/yum.repos.d
mv /etc/yum.repos.d_bak /etc/yum.repos.d
yum list (這一步必須執行,生成快取,方便下次使用。)
4、更改國內yum倉庫源:
(1)進入yum配置目錄,刪除CentOS-Base.repo(注意備份:mv CentOS-Base.repo CentOS-Base.repo_bak)
(2)下載一份新的國內的CentOS-Base.repo檔案代替
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo 或者 curl -O http://mirrors.163.com/.help/CentOS7-Base-163.repo
可以開啟檢視一下這個檔案的內容:
(3)替換成功後,安裝一個rpm包測試一下,例如: yum install -y zsh
除了CentOS-Base.repo這個標準的rpm源外,還可以安裝yum擴充套件源epel
yum install -y epel-release
5、利用yum工具下載rpm包:
(1)下載rpm包不安裝:yum install [包名] -y --downloadonly ;
預設存放路徑為/var/cache/yum/x86_64/7/xxx/packets ; xxx為倉庫源,如:base、epel、dvd等等
(2)下載rpm包不安裝,指定存放路徑:yum install [包名] -y --downloadonly --downloaddir=/usr/local/src
(3)如果是已安裝的rpm包:yum reinstall -y [包名] --downloadonly
三、原始碼包安裝:
1、獲取原始碼
下載軟體原始碼包,一般存放在/usr/local/src,解壓原始碼包。
2、檢視INSTALL與README檔案
解壓後檢視INSTALL與README檔案,這兩個檔案中詳細介紹了本軟體的安裝方法和注意事項。
3、執行configure,生成Makefile檔案
執行./configure命令,生成Makefile檔案。
./configure --prefix=/usr/local/xxx
常用prefix引數指定軟體安裝目錄,當執行make install命令時,會將軟體安裝在此路徑中。
4、執行make,從Makefile中讀取指令,編譯原始碼成二進位制檔案
make clean;make
PS:make clean命令用來清除上一次編譯生成的目標檔案。這個步驟可有可無,但為了確保編譯的成功,還是加上為好。防止由於軟體中含有殘留的目標檔案導致編譯失敗。
5、執行make install,將軟體安裝到指定目錄
make install
此時二進位制檔案會被安裝到先前configure prefix引數設定的路徑中去。
說明:此文首發於本人原創公眾號【媛測】中,如有轉載,請著明出處!