1. 程式人生 > >linux安裝軟體的三種方式

linux安裝軟體的三種方式

原文:https://www.cnblogs.com/heiye123/articles/7291326.html

目錄

  • 【rpm工具】
  • 【yum工具】
  • 【安裝原始碼包】

 

正文

       在windows下安裝一個軟體很輕鬆,只要雙擊setup或者.exe的檔案,安裝提示連續“下一步”即可,然而linux系統下安裝一個軟體似乎並不那麼輕鬆了,因為我們不是在圖形介面下。所以你要學會如何在linux下安裝一個軟體。

    在前面的內容中多次提到的yum,這個yum是Redhat所特有的安裝RPM程式包的工具,使用起來相當方便。因為使用RPM安裝某一個程式包有可能會因為該程式包依賴另一個程式包而無法安裝。而使用yum工具就可以連同依賴的程式包一起安裝。當然CentOS同樣可以使用yum工具,而且在CentOS中你可以免費使用yum,但Redhat中只有當你付費後才能使用yum,預設是無法使用yum的。在介紹yum之前先說一說RPM相關的東西。

 

RPM工具

    RPM是”Redhat Package Manager”的縮寫,根據名字也能猜到這是Redhat公司開發出來的。RPM 是以一種資料庫記錄的方式來將你所需要的套件安裝到你的Linux 主機的一套管理程式。也就是說,你的linux系統中存在著一個關於RPM的資料庫,它記錄了安裝的包以及包與包之間依賴相關性。RPM包是預先在linux機器上編譯好並打包好的檔案,安裝起來非常快捷。但是也有一些缺點,比如安裝的環境必須與編譯時的環境一致或者相當;包與包之間存在著相互依賴的情況;解除安裝包時需要先把依賴的包解除安裝掉,如果依賴的包是系統所必須的,那就不能解除安裝這個包,否則會造成系統崩潰。

    每一個rpm包的名稱都由”-“和”.”分成了若干部分。就拿 a2ps-4.13b-57.2.el5.i386.rpm 這個包來解釋一下,a2ps 為包名;4.13b則為版本資訊;57.2.el5為釋出版本號;i386為執行平臺。其中執行平臺常見的有i386, i586, i686, x86_64 ,需要你注意的是cpu目前是分32位和64位的,i386,i586和i686都為32位平臺,x86_64則代表為64位的平臺。另外有些rpm包並沒有寫具體的平臺而是noarch,這代表這個rpm包沒有硬體平臺限制。例如 alacarte-0.10.0-1.fc6.noarch.rpm 。下面介紹一下rpm常用的命令。

1)安裝一個rpm包

-i :安裝的意思

-v :視覺化

-h :顯示安裝進度

另外在安裝一個rpm包時常用的附帶引數有:

--force 強制安裝,即使覆蓋屬於其他包的檔案也要安裝

--nodeps 當要安裝的rpm包依賴其他包時,即使其他包沒有安裝,也要安裝這個包

2)升級一個rpm包

rpm -Uvh filename -U :即升級的意思

3)解除安裝一個rpm包

rpm -e filename 這裡的filename是通過rpm的查詢功能所查詢到的,稍後會作介紹。

 

解除安裝時後邊跟的filename和安裝時的是有區別的。上面命令提到的 “|”在linux系統中用的非常多也非常有用,它是一個管道符,用來把前面執行的結果傳遞給後面的命令。以後會做詳細介紹,而後出現的grep命令則是用來過濾某個關鍵詞的工具,在後續章節中會做詳細介紹。

4)查詢一個包是否安裝

rpm -q rpm包名(這裡的包名,是不帶有平臺資訊以及字尾名的)

 

如果加上了平臺資訊以及字尾名反而不能查出來。你還可以查詢當前系統中所安裝的所有rpm包。

因為太多,所以筆者列出前十個。

5)得到一個rpm包的相關資訊

rpm -qi 包名 (同樣不需要加平臺資訊與字尾名)

6)列出一個rpm包安裝的檔案

rpm -ql 包名

通過上面的命令可以看出vim是通過安裝vim-enhanced-7.0.109-6.el5這個rpm包得來的。那麼反過來如何通過一個檔案去查詢是由安裝哪個rpm包得來的?

7)列出某一個檔案屬於哪個rpm包

rpm -qf 檔案的絕對路徑

前面講過如何查詢一個檔案(可執行命令)的絕對路徑

所以你也可以把這兩條命令連起來寫

看到了嗎,which tree 這條命令是由兩個反引號引起來的,這代表引用反引號裡面的命令所產生的結果。關於rpm工具的使用還有很多內容,筆者就不一一列舉了,只要你掌握上面這些內容,完全夠你平時工作用的了。

回到頂部

yum工具

      介紹完rpm工具後,還需要你掌握最常用的yum工具,這個工具比rpm工具好用多了,當然前提是你使用的linux系統是支援yum的。yum最大的優勢在於可以聯網去下載所需要的rpm包,然後自動安裝,在這個工程中如果要安裝的rpm包有依賴關係,yum會幫你解決掉這些依賴關係依次安裝所有rpm包。下面筆者介紹常用的yum 命令。

1) 列出所有可用的rpm包 “yum list “

2)搜尋一個rpm包 “yum search [相關關鍵詞]”

除了這樣搜尋外,筆者常用的是利用grep來過濾

相信你也會喜歡用後者吧,這樣看起來簡明的多。

3)安裝一個rpm包 “yum install [-y] [rpm包名]”

如果不加-y選項,則會以與使用者互動的方式安裝,首先是列出需要安裝的rpm包資訊,然後會問使用者是否需要安裝,輸入y則安裝,輸入n則不安裝。而筆者嫌這樣太麻煩,所以直接

加上-y選項,這樣就省略掉了問使用者是否安裝的那一步

4)解除安裝一個rpm包 “yum remove [-y] [rpm包名]”

解除安裝和安裝一樣,你也可以直接加上-y選項來省略掉和使用者互動的步驟。在這裡筆者要提醒你一下,解除安裝某個rpm包一定要看清楚了,不要連其他重要的rpm包一起解除安裝了,以免影響正常的業務。

4)升級一個rpm包 “yum update [-y] [rpm包]”

以上介紹瞭如何使用yum搜尋、安裝、解除安裝以及升級一個rpm包,如果你掌握了這些那麼你就已經可以解決日常工作中遇到的與rpm包相關問題了。當然yum工具還有好多其他好用的命令,筆者不在列舉出來,如果你感興趣就去man一下吧。除此之外,筆者還會教你一些關於yum的小應用。

 

回到頂部

安裝原始碼包

    其實,在linux下面安裝一個原始碼包是最常用的,筆者在日常的管理工作中,大部分軟體都是通過原始碼安裝的。安裝一個原始碼包,是需要我們自己把原始碼編譯成二進位制的可執行檔案。如果你讀得懂這些原始碼,那麼你就可以去修改這些原始碼自定義功能,然後再去編譯成你想要的。使用原始碼包的好處除了可以自定義修改原始碼外還可以定製相關的功能,因為原始碼包在編譯的時候是可以附加額外的選項的。

原始碼包的編譯用到了linux系統裡的編譯器,常見的原始碼包一般都是用C語言開發的,這也是因為C語言為linux上最標準的程式語言。Linux上的C語言編譯器叫做gcc,利用它就可以把C語言變成可執行的二進位制檔案。所以如果你的機器上沒有安裝gcc就沒有辦法去編譯原始碼。你可以使用 yum install -y gcc 來完成安裝。

安裝一個原始碼包,通常需要三個步驟:

1. ./config 在這一步可以定製功能,加上相應的選項即可,具有有什麼選項可以通過”./config --help ”命令來檢視。在這一步會自動檢測你的linux系統與相關的套件是否有編譯該原始碼包時需要的庫,因為一旦缺少某個庫就不能完成編譯。只有檢測通過後才會生成一個Makefile檔案。

2. make 使用這個命令會根據Makefile檔案中預設的引數進行編譯,這一步其實就是gcc在工作了。

3. make install 安裝步驟,生成相關的軟體存放目錄和配置檔案的過程。

上面介紹的3步並不是所有的原始碼包軟體都一樣的,筆者以前也曾經遇到過,安裝步驟並不是這樣,也就是說原始碼包的安裝並非具有一定的標準安裝步驟。這就需要你拿到原始碼包解壓後,然後進入到目錄找相關的幫助文件,通常會以INSTALL或者README為檔名。所以,你一定要去看一下。下面筆者會編譯安裝一個原始碼包來幫你更深刻的去理解如何安裝原始碼包。

0. 安裝前的準備工作:

1)chkconfig iptables off或service iptables stop 禁防火牆(centos6)

      systemctl  disable firewalld.service 或systemctl  stop firewalld.services(centos7)

2)關閉selinux

     vim /etc/selinux/config  

         中selinux=permisssive

    setenforce   0                          

 

    getenforce 驗證是否有效

3)去掉所有與http有關的包:yum remove httpd

4)  下載開發包組:yum groupinstall "Development tools"

1. 下載一個原始碼包

這裡要提一下,建議以後你把所有下載的原始碼包放到/usr/local/src/目錄下,這個並不是必須的,只是一個約定。方便你和你的同事將來更好的去運維這臺伺服器。wget即為下載的命令,後邊跟原始碼包的下載地址。該地址為筆者從網上找的一個apache的下載地址。

2. 解壓原始碼包

一般的原始碼包都是一個壓縮包,如何解壓一個.tar.gz的包上一章講過的。

3. 配置相關的選項,並生成Makefile

使用./config --help 可以檢視可用的選項。一般常用的有”--prefix=PREFIX “ 這個選項的意思是定義軟體包安裝到哪裡。到這裡,筆者再提一個小小的約定,通常原始碼包都是安裝在/usr/local/目錄下的。

筆者在這裡只定義了apache的安裝目錄,其他都是預設。回車後,開始執行check操作。

等check結束後生成了Makefile檔案

除了檢視有沒有生成Makefile檔案來判定有沒有完成./config 的操作外,還可以通過這個命令”echo $?”來判定,如果是0,則表示上一步操作成功完成,否則就是沒有成功。

4. 進行編譯執行make命令即可

這一步操作,就是把原始碼編譯成二進位制的可執行檔案,這一步也是最漫長的一步,編譯時間的長短取決於原始碼的多少和機器配置。

5. 安裝

在安裝前,用echo $?先確認上一步操作是否成功完成。

make install 會建立相應的目錄以及檔案。當完成安裝後,會在/app/目錄下多了一個httpd22目錄,這就是apache所安裝的目錄了。

其實在日常的原始碼安裝工作中,並不是每個都像筆者這樣順利完成安裝的,遇到錯誤不能完成安裝的情況是很多的。通常都是因為缺少某一個庫檔案導致的。這就需要你仔細琢磨報錯資訊或者檢視當前目錄下的config.log去得到相關的資訊。另外,如果自己不能解決那就去網上google一下吧,通常你會得到你想要的答案。

)6.軟體配置

  echo `export PATH=/app/httpd22/bin:$PATH`>/etc/profile.d/httpd22.sh

  echo $PATH確認路徑新增至PATH路徑前方

  apachectl  start或apachctl 啟動apache服務

   ss -ntl確認80埠開啟,即apache服務開啟

  vim  /etc/manconfig 中加一行 MANPATH /app/httpd22/man 指定man幫助來源

  html網頁檔案在/app/httpd22/htdocs/index.com中

 網頁測試:

 測試成功,apache成功執行!httpd原始碼包正常安裝!