在Linux系統下,對於軟件包的管理有多種機制,有源代碼方式、RPM軟件包管理方式以及YUM軟件管理方式,本篇隨筆將詳細講解CentOS下源代碼形式安裝軟件以及RPM軟件包管理機制
一、源代碼形式
首先我們先來看一下源代碼的方式。我們知道,在開源的環境下,大多數的開源軟件都是以源代碼的形式來發布,通常將源代碼打包成tar.gz的歸檔壓縮文件發布到網上供我們下載使用。但是我們下載下來的源代碼方式我們還不能夠直接使用,不像在windows系統上直接下載下來可執行的二進制文件,我們需要將下載好的源碼編譯成可執行的二進制文件才能運行使用,源代碼形式安裝流程一般如下:
①./configure 檢查編譯環境、相關庫文件以及配置參數並生成makefile
②make 將源代碼編譯成可執行的二進制文件
③make install 安裝編譯好的可執行文件
基本上所有以源代碼形式發布的軟件都是按照以上流程來進行安裝,大家可能覺得其實步驟就這三個,安裝過程非常簡單!其實不然,通常以源代碼形式發布的軟件,在對其進行①、②步操作時往往會出很多很多的問題,比如說編譯過程中缺少所需的庫文件,或者說編譯源碼時又需要依賴A文件,編譯A文件時可能又需要用到B文件,這樣我們需要花大量時間去找這些依賴的問題,同時如果一個軟件特別大的話,我們在將其編譯過程中要等待非常久的時間。所以說其實源代碼形式的安裝軟件並不是我們想象的那么簡單,但是為什么源代碼形式的軟件管理還一直存在呢?必然也有其優點,因為我們的源碼都要通過編譯成可執行的二進制文件才行,所以說它適用於各種操作系統平台,我只需要在各個操作系統平台上對其源碼進行編譯即可運行起來了。
總結一下:
源代碼形式的缺點:操作復雜、編譯時間長、極易出現錯誤
源代碼形式的優點:適用於所有的操作系統、可定制
二、RPM軟件包管理
因為源代碼方式安裝軟件終究還是比較麻煩,所以說現在出現了許多代替源碼方式安裝的軟件管理機制。RPM就是其中一個,RPM(redhat Package Manager)是為了方便軟件管理使用所開發的一套開源軟件格式,它的設計目標有以下幾個:
①使用簡單 通過 rpm 命令就可以完成rpm軟件的安裝
②以單一軟件包格式發布(.rpm文件) 我們可以看到rpm軟件包都只有一個以.rpm的文件(rpm軟件包管理機制要求軟件包必須以.rpm結尾)
③可升級 rpm軟件包是可以升級的,比如說我下載好了一個新版本的rpm軟件,我們只需要通過 rpm -u 命令即可升級
④追蹤依賴關系 rpm軟件包管理機制可以追蹤軟件之間的依賴關系,這樣在安裝時就會非常的方便
⑤保存軟件基本信息
⑥軟件驗證功能
⑦支持多平台 支持多平台並不是說一個rpm軟件可以在多個操作系統平台上運行,而是說該軟件會針對多個平台發布不同的rpm軟件包
RPM軟件包常用的命名規范如下:
xiaoluo-1.1.0-5.el6.x86_64.rpm
其中xiaoluo就是我們的軟件名字,1.1.0-5是該軟件的版本號,el6.x86_64這兩個部分是指我們該rpm包的運行平台的操作系統版本。例如el6就表示是針對於RHEL6的發現版本,我們使用的是什么版本的Linux操作系統,我們就要去下載對應的rpm版本,x86_64表示是運行在64位上的系統。
RPM的基礎命令:
rpm的使用方式非常簡單,常用的一些命令如下:
安裝軟件:rpm -i xiaoluo-1.1.0-5.el6.x86_64.rpm
卸載軟件:rpm -e xiaoluo
升級形式安裝:rpm -U xiaoluo-1.1.0-5.el6.x86_64.rpm
常用參數:
-v 顯示詳細信息
-h 顯示文本進度條
例如我們這里安裝一個tigervnc的rpm軟件包實驗一下:
[root@xiaoluo home]# rpm -ivh tigervnc-1.1.0-5.el6.x86_64.rpm // 通常我們一般安裝時跟上 -ivh參數,來顯示安裝的詳細信息 Preparing... ########################################### [100%] 1:tigervnc ########################################### [100%]
安裝過程根據軟件包的大小以及機器的配置時間會不應相同,我們發現我們的這個rpm已經就安裝好了。
如果我們要將其卸載的話也非常的簡單,通過 rpm -e 軟件名字 即可卸載了,如:
[root@xiaoluo home]# rpm -e tigervnc
這樣我們的rpm軟件就已經卸載了,同樣我們可以使用 rpm -U 軟件名字 來對rpm軟件進行升級
RPM常用查詢命令:
rpm -qa 列出所有已安裝的rpm軟件
rpm -qf filename 查詢指定文件屬於哪個rpm包
rpm -qi packagename 查詢已軟件包的信息
rpm -ql packagename 查詢指定軟件包包含的文件
rpm -qip software.rpm 查詢rpm文件的信息
rpm -qilp software.rpm 查詢rpm文件包含的文件
例如我們要查看當前操作系統上所有已安裝的rpm軟件,通過 rpm -qa 命令即可查看
[root@xiaoluo home]# rpm -qa
java-1.6.0-openjdk-devel-1.6.0.0-1.50.1.11.5.el6_3.x86_64 qimageblitz-0.0.4-1.el6.x86_64 gnome-python2-gnomevfs-2.28.0-3.el6.x86_64 perl-ExtUtils-ParseXS-2.2003.0-129.el6.x86_64 iscsi-initiator-utils-6.2.0.873-2.el6.x86_64 libhbaapi-2.2.6-1.el6.x86_64 perl-BSD-Resource-1.29.03-3.el6.x86_64 sane-backends-1.0.21-3.el6.x86_64 gtkspell-2.0.16-1.el6.x86_64 libbonobo-2.24.2-5.el6.x86_64 evolution-data-server-doc-2.28.3-16.el6.noarch libhbalinux-1.0.14-1.el6.x86_64 kde-l10n-British-4.3.4-5.el6.noarch perl-CGI-3.51-129.el6.x86_64********************************此處省略N個字********************************************
如果我們需要查看剛才安裝好的 tigervnc 軟件的詳細信息,通過 rpm -qi tigervnc 命令即可查看:
[root@xiaoluo home]# rpm -qi tigervnc
Name : tigervnc Relocations: (not relocatable) Version : 1.1.0 Vendor: CentOS Release : 5.el6 Build Date: 2013年02月23日 星期六 06時28分42秒 Install Date: 2013年05月20日 星期一 20時43分01秒 Build Host: c6b9.bsys.dev.centos.org Group : User Interface/Desktops Source RPM: tigervnc-1.1.0-5.el6.src.rpm Size : 659349 License: GPLv2+ Signature : RSA/SHA1, 2013年02月24日 星期日 01時39分36秒, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://www.tigervnc.com Summary : A TigerVNC remote display system Description : Virtual Network Computing (VNC) is a remote display system which allows you to view a computing 'desktop' environment not only on the machine where it is running, but from anywhere on the Internet and from a wide variety of machine architectures. This package contains a client which will allow you to connect to other desktops running a VNC server.
如果我們需要查看當前操作系統文件下某一個文件夾是屬於哪個rpm包的,我們可以通過 rpm -qf filename 命令來進行查看
[root@xiaoluo home]# rpm -qf /usr/share/mysql/
mysql-libs-5.1.67-1.el6_3.x86_64
如果我們需要查看指定的rpm軟件包所包含的文件,可以通過 rpm -ql packagename 命令來進行查看
[root@xiaoluo home]# rpm -ql tigervnc
/usr/bin/vncviewer /usr/share/applications/vncviewer.desktop /usr/share/doc/tigervnc-1.1.0 /usr/share/doc/tigervnc-1.1.0/LICENCE.TXT /usr/share/doc/tigervnc-1.1.0/README.txt /usr/share/icons/hicolor /usr/share/icons/hicolor/16x16 /usr/share/icons/hicolor/16x16/apps /usr/share/icons/hicolor/16x16/apps/tigervnc.png /usr/share/icons/hicolor/24x24 /usr/share/icons/hicolor/24x24/apps /usr/share/icons/hicolor/24x24/apps/tigervnc.png /usr/share/icons/hicolor/48x48 /usr/share/icons/hicolor/48x48/apps /usr/share/icons/hicolor/48x48/apps/tigervnc.png /usr/share/locale/de/LC_MESSAGES/tigervnc.mo /usr/share/locale/fr/LC_MESSAGES/tigervnc.mo /usr/share/locale/pl/LC_MESSAGES/tigervnc.mo /usr/share/locale/ru/LC_MESSAGES/tigervnc.mo /usr/share/locale/sk/LC_MESSAGES/tigervnc.mo /usr/share/locale/sv/LC_MESSAGES/tigervnc.mo /usr/share/man/man1/vncviewer.1.gz
我們看到安裝 tigervnc 這個rpm軟件時,其包含了以上這么多的文件內容
以上這幾個rpm查詢命令都是對已經安裝好的rpm軟件進行查詢,如果我們有一個rpm的軟件包,但是還沒有對其進行安裝,我又想查看其軟件信息,以及軟件所包含的文件內容,那又怎么辦呢?直接加上一個參數 p 即可,例如:
我要查看 zip-3.0-1.el6.x86_64.rpm 這個rpm軟件包的信息,我們可以通過 rpm -qip zip-3.0-1.el6.x86_64.rpm 這個命令來進行查看
[root@xiaoluo home]# rpm -qip zip-3.0-1.el6.x86_64.rpm
Name : zip Relocations: (not relocatable) Version : 3.0 Vendor: CentOS Release : 1.el6 Build Date: 2010年11月11日 星期四 23時26分40秒 Install Date: (not installed) Build Host: c6b3.bsys.dev.centos.org Group : Applications/Archiving Source RPM: zip-3.0-1.el6.src.rpm Size : 823612 License: BSD Signature : RSA/8, 2011年07月03日 星期日 13時07分05秒, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://www.info-zip.org/Zip.html Summary : A file compression and packaging utility compatible with PKZIP Description : The zip program is a compression and file packaging utility. Zip is analogous to a combination of the UNIX tar and compress commands and is compatible with PKZIP (a compression and file packaging utility for MS-DOS systems). Install the zip package if you need to compress files using the zip program.
我如果想看下 zip-3.0-1.el6.x86_64.rpm 這個rpm軟件在安裝后會產生哪些文件,可以使用 rpm -qlp zip-3.0-1.el6.x86_64.rpm 命令即可
[root@xiaoluo home]# rpm -qlp zip-3.0-1.el6.x86_64.rpm
/usr/bin/zip /usr/bin/zipcloak /usr/bin/zipnote /usr/bin/zipsplit /usr/share/doc/zip-3.0 /usr/share/doc/zip-3.0/CHANGES /usr/share/doc/zip-3.0/LICENSE /usr/share/doc/zip-3.0/README /usr/share/doc/zip-3.0/README.CR /usr/share/doc/zip-3.0/TODO /usr/share/doc/zip-3.0/WHATSNEW /usr/share/doc/zip-3.0/WHERE /usr/share/doc/zip-3.0/algorith.txt /usr/share/man/man1/zip.1.gz /usr/share/man/man1/zipcloak.1.gz /usr/share/man/man1/zipnote.1.gz /usr/share/man/man1/zipsplit.1.gz
RPM軟件驗證命令:
rpm -K software.rpm 驗證rpm文件
rpm -V softname 驗證已安裝的軟件
RPM軟件包管理還具有驗證功能,因為在開源的軟件里,源代碼都是開放的,我們從網上下載的軟件可以被一些不法分子在里面植入了一些木馬程序,這樣就會損害我們的操作系統。所以為了安全起見現代操作系統都加入了對軟件的驗證功能。
驗證通常是使用非對稱的加密算法,所以就需要一個密鑰。一般的RPM軟件包里面都加入了密鑰,如果沒有加入我們可以通過 rpm --import RPM-GPG-KEY-CentOS-6 命令手動加入即可。
驗證rpm文件我們可以使用 rpm -K software.rpm 命令,例如我們要驗證剛才的 zip-3.0-1.el6.x86_64.rpm :
[root@xiaoluo home]# rpm -K zip-3.0-1.el6.x86_64.rpm
zip-3.0-1.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
驗證以后發現該軟件是沒有問題的。
驗證已安裝的軟件我們可以使用 rpm -V softname 命令,例如我要驗證一下安裝的 mysql 軟件,就可以使用如下命令:
[root@xiaoluo home]# rpm -V mysql
[root@xiaoluo home]#
如果沒有出現任何錯誤,就表示該軟件是完整的,沒有被修改。
我們使用的RHEL以及CentOS等Linux系統,其軟件包的安裝維護都是通過RPM軟件包來進行管理的,我們也看到使用RPM軟件包來對軟件進行管理非常的方便。
【注意:】但是我們需要清楚一個問題,就是RPM軟件包管理並不會給我們自動的解決軟件包直接的依賴關系,我們在安裝這個rpm包時,如果需要依賴其它的rpm包,就需要將所依賴的rpm包同時安裝才行,那么有什么方法可以自動解決軟件包的依賴關系呢?在下一篇隨筆里面我將進行詳細的記錄、講解!
本篇隨筆主要記錄了在Linux系統下安裝軟件的兩種方式,一個是源代碼形式的安裝,另一個就是我們RPM軟件包的形式安裝,在后續的學習過程中,將繼續記錄自己學習Linux的點點滴滴!!
您可以通過點擊 右下角 的按鈕 來對文章內容作出評價, 也可以通過左下方的 關注按鈕 來關注我的博客的最新動態。
如果文章內容對您有幫助, 不要忘記點擊右下角的 推薦按鈕 來支持一下哦
如果您對文章內容有任何疑問, 可以通過評論或發郵件的方式聯系我: 501395377@qq.com / lzp501395377@gmail.com