Fedora / Redhat 軟體包管理指南
一 軟體安裝分類:
1、本地軟體安裝卸載,分幾種情況:
A:RPM包,這種軟體包就像windows的EXE安裝檔案一樣,各種檔案已經編譯好,並打了包,哪個檔案該放到哪個檔案夾,都指定好了,安裝非常方便,在圖形介面裡你只需要雙擊就能自動安裝。終端裡面安裝與卸載詳見下文
(二. RPM包的安裝)
B:tar.gz(bz或bz2等)結尾的原始碼包,這種軟體包裡面都是來源程式,沒有編譯過,需要編譯後才能安裝,安裝方法為:
1、開啟一個SHELL,即終端
2、用CD 命令進入原始碼壓縮包所在的目錄
3、根據壓縮包類型解壓縮檔案(*代表壓縮包名稱)
tar -zxvf ****.tar.gz
tar -jxvf ****.tar.bz(或bz2)
4、用CD命令進入解壓縮後的目錄
5、輸入編譯檔案命令:./configure(有的壓縮包已經編譯過,這一步可以省去)
6、然後是命令:make
7、再是安裝檔案命令:make install
8、安裝完畢
PS:安裝目錄:注意make install命令過程中的安裝目錄,或者閱讀安裝目錄裡面的readme檔案,當然最好的辦法是在安裝的過程中指定安裝目錄,即在. /configure命令後面加參數--prefix=/**,如:./configure --prefix=/usr/local/aaaa,即把軟體裝在/usr/local/路徑的aaaa這個目錄裡。一般的軟體的預設安裝目錄在 /usr/local或者/opt裡,可以到那裡去找找
===如何卸載===
1、開啟一個SHELL,即終端
2、用CD 命令進入編譯後的軟體目錄,即安裝時的目錄
3、執行反安裝命令:make uninstall
C:以bin結尾的安裝包,這種包類似於RPM包,安裝也比較簡單
1、開啟一個SHELL,即終端
2、用CD 命令進入原始碼壓縮包所在的目錄
3、給檔案加上可執行屬性:chmod +x ******.bin(中間是字母x,小寫)
3、執行命令:./******.bin(realplayer for linux就是這樣的安裝包)
===如何卸載:把安裝時中選擇的安裝目錄刪除就OK
===執行安裝過程中可以指定,類似於windows下安裝。
2. 線上安裝:
Redhat/Fedora通過線上安裝更新軟體包,除了系統內建的up2date以外,還有更為強大的線上升級工具 yum 和 apt-get 可用,主要資源有freshrpms.net和 rpm.livna.org 。
(一)yum 的使用
安裝軟體舉例:# yum install 軟體名
註:yum優點:軟體包依賴關係自行解決
詳見下文 四. yun的用法
(二)apt的使用
a)軟體包的安裝:# apt-get install 軟體包名稱 //註:不要加版本號碼,軟體名就好
b)移除軟體包:# apt-get remove 軟體包名
c)對系統全面升級:# apt-get upgrade
# apt-get dist-upgrade
詳見下文 五. apt的用法
3.軟體包管理器system-config-packages
Fedora Core 系統中軟體包管理工具system-config-packages,這個工具主要是對系統安裝盤中的軟體管理,比如從安裝盤中添加,有時我們在安裝系統 時沒有安裝的軟體,可以通這個軟體來補充;也可以通過軟體包管理工具來刪除通過系統安裝盤已經安裝的軟體;功能上來說並不是特彆強大;但對於補裝軟體還是 有必要的;
詳見下文 七.Fedora 軟體包管理器system-config-packages
4、安裝完軟體後如何執行。
安裝完軟體後可以有好多種方法執行軟體:
A、有些軟體安裝後會自動在應用程式列表裡加上快速鍵,和windows一樣,到那裡找就行了。
B、如果在應用程式列表裡找不到的話,可以直接在/開始/運行命令裡輸入命令:啟動命令一般就是軟體名,如firefox,realplay,xmms等
C、也可以開啟一個shell終端,輸入軟體名,和在“運行命令”裡一樣。如果不知道命令全程的話,可以輸入開頭的字母,然後按tab鍵尋找,系統會自動顯示以輸入字母開頭的所有命令
D、你也可以直接到安裝目錄下運行開機檔案,linux下的可執行表徵圖和shell終端表徵圖很像
E、到/usr/bin目錄裡找安裝的軟體開機檔案執行命令。linux系統把所有可執行檔檔案命令在/usr/bin目錄裡都作了啟動串連,你可以去那個目錄尋找你安裝的檔案的啟動命令,雙擊啟動
二. RPM包安裝
1.初始化rpm 資料庫
通過rpm 命令查詢一個rpm 包是否安裝了,也是要通過rpm 資料庫來完成的;所以我們要經常用下面的兩個命令來初始化rpm 資料庫;
# rpm --initdb
# rpm --rebuilddb 註:這個要花好長時間
註:這兩個參數是極為有用,有時rpm 系統出了問題,不能安裝和查詢,大多是這裡出了問題
2.如何查看與rpm包相關的檔案和其他資訊
命令格式:rpm {-q|--query} [select-options] [query-options]
RPM的查詢功能是極為強大,是極為重要的功能之一;舉幾個常用的例子,更為詳細的具體的,請參考#man rpm
(1)、對系統中已安裝軟體的查詢
1)查詢系統已安裝的軟體
文法:rpm -q 軟體名
舉例:# rpm -q gaim
gaim-1.3.0-1.fc4
-q就是 --query ,中文意思是“問”,此命令表示的是,是不是系統安裝了gaim ;如果已安裝會有資訊輸出;如果沒有安裝,會輸出gaim 沒有安裝的資訊;
查看系統中所有已經安裝的包,要加 -a 參數
# rpm -qa
如果分頁查看,再加一個管道 |和more命令;
# rpm -qa |more
在所有已經安裝的軟體包中尋找某個軟體,比如說 gaim ;可以用 grep 抽取出來;
# rpm -qa |grep gaim
上面這條的功能和 rpm -q gaim 輸出的結果是一樣的;
2)查詢一個已經安裝的檔案屬於哪個軟體包;
文法 rpm -qf 檔案名稱
註:檔案名稱所在的絕對路徑要指出
舉例:# rpm -qf /usr/lib/libacl.la
libacl-devel-2.2.23-8
3)查詢已安裝軟體包都安裝到何處
文法:rpm -ql 軟體名 或 rpm rpmquery -ql 軟體名
舉例:# rpm -ql lynx
# rpmquery -ql lynx
4)查詢一個已安裝軟體包的資訊
文法格式: rpm -qi 軟體名
舉例:# rpm -qi lynx
5)查看一下已安裝軟體的設定檔
文法格式:rpm -qc 軟體名
舉例:# rpm -qc lynx
6)查看一個已經安裝軟體的文檔安裝位置:
文法格式: rpm -qd 軟體名
舉例:# rpm -qd lynx
7)查看一下已安裝軟體所依賴的軟體包及檔案
文法格式: rpm -qR 軟體名
舉例:# rpm -qR rpm-python
查詢已安裝軟體的總結:對於一個軟體包已經安裝,我們可以把一系列的參數組合起來用;比如 rpm -qil ;比如:# rpm -qil lynx
(2)、對於未安裝的軟體包的查看:
查看的前提是您有一個.rpm 的檔案,也就是說對既有軟體file.rpm的查看等;
1)查看一個軟體包的用途、版本等資訊
文法: rpm -qpi file.rpm
舉例:# rpm -qpi lynx-2.8.5-23.i386.rpm
2)查看一件軟體包所包含的檔案
文法: rpm -qpl file.rpm
舉例:# rpm -qpl lynx-2.8.5-23.i386.rpm
3)查看軟體包的文檔所在的位置
文法: rpm -qpd file.rpm
舉例:# rpm -qpd lynx-2.8.5-23.i386.rpm
4)查看一個軟體包的設定檔
文法: rpm -qpc file.rpm
舉例:# rpm -qpc lynx-2.8.5-23.i386.rpm
5)查看一個軟體包的依賴關係
文法: rpm -qpR file.rpm
總結:
獲得軟體包相關的資訊用rpm -q,q表示查詢query,後面可以跟其他選項,比如
i 表示info,獲得軟體包的資訊;
l 表示list,獲得檔案清單;
a 表示all,在所有包中執行查詢;
f 表示file,根據檔案進行相關的查詢;
p 表示package,根據軟體包進行查詢
需要的查詢條件可以使用grep產生,或者從"` `"中的命令列產生
3.軟體包的安裝、升級、刪除等
(1)、安裝和升級一個rpm 包
#rpm -vih file.rpm 註:這個是用來安裝一個新的rpm 包;
#rpm -Uvh file.rpm 註:這是用來升級一個rpm 包;
如果有依賴關係的,請解決依賴關係,其實軟體包管理器能很好的解決依賴關係,請看前面的軟體包管理器的介紹;如果您在軟體包管理器中也找不到依賴關係的包;那隻能通過編譯他所依賴的包來解決依賴關係,或者強制安裝;
文法結構:# rpm -ivh file.rpm --nodeps --force
# rpm -Uvh file.rpm --nodeps --force
註:--replacepkgs 參數是以已安裝的軟體再安裝一次;有時沒有太大的必要;
測試安裝參數 --test ,用來檢查依賴關係;並不是真正的安裝;
由新版本降級為舊版本,要加 --oldpackage 參數:# rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm
為軟體包指定安裝目錄,要加 -relocate 參數:rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
(2).如何安裝.src.rpm軟體包
有些軟體包是以.src.rpm結尾的,這類軟體包是包含了原始碼的rpm包,在安裝時需要進行編譯。這類軟體包有兩種安裝方法,
方法一:
(1). 執行rpm -i your-package.src.rpm
(2). cd /usr/src/redhat/SPECS
(3). rpmbuild -bp your-package.specs 一個和你的軟體包同名的specs檔案
(4). cd /usr/src/redhat/BUILD/your-package/ 一個和你的軟體包同名的目錄
(5). ./configure 這一步和編譯普通的源碼軟體一樣,可以加上參數
(6). make
(7). make install
方法二:
(1). 執行rpm -i you-package.src.rpm
(2). cd /usr/src/redhat/SPECS 前兩步和方法一相同
(3). rpmbuild -bb your-package.specs 一個和你的軟體包同名的specs檔案
這時,在/usr/src/redhat/RPM/i386/ (根據具體包的不同,也可能是i686,noarch等等)這個目錄下,有一個新的rpm包,這個是編譯好的二進位檔案。執行rpm -i new-package.rpm即可安裝完成。
(3).從rpm軟體包抽取檔案
使用工具rpm2cpio和cpio
rpm2cpio xxx.rpm | cpio -vi
rpm2cpio xxx.rpm | cpio -idmv
rpm2cpio xxx.rpm | cpio --extract --make-directories
參數i和extract相同,表示提取檔案,v表示指示執行進程,d和make-directory相同,表示根據包中檔案原來的路徑建立目錄,m表示保持檔案的更新時間。
舉例:
# rpm2cpio gaim-1.3.0-1.fc4.i386.rpm |cpio -div
抽取出來的檔案就在當用操作目錄中的 usr 和etc中;其實這樣抽到檔案不如指定安裝目錄來安裝軟體來的方便,也一樣可以抽出檔案;
# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
gaim的所有檔案都是安裝在 /opt/gaim 中,我們只是把gaim 目錄備份一下,然後卸掉gaim;這樣其實也算提取檔案的一點用法.
(4)、刪除一個rpm 包
首先您要學會查詢rpm 包,請看前面的說明
#rpm -e 軟體包名
舉例:我想移除lynx 包,完整的操作應該是:# rpm -e lynx
如果有依賴關係,您也可以用--nodeps 忽略依賴的檢查來刪除。但儘可能不要這麼做,最好用軟體包管理器 systerm-config-packages 來刪除或者添加軟體
# rpm -e lynx --nodeps
(5)匯入簽名
# rpm --import 簽名檔案
舉例:# rpm --import RPM-GPG-KEY
關於RPM的簽名功能,詳情請參見 man rpm
(6)RPM管理組件管理器支援網路安裝和查詢;
比如我們想通過 Fedora Core 4.0 的一個鏡像查詢、安裝軟體包,地址:http://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/
舉例:
命令格式:rpm 參數 rpm包檔案的http或者ftp的地址
# rpm -qpi
http://mirrors.kernel.org/fedo... Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
(7) RPM的設定檔;
RPM包管理的設定檔是rpmrc ,可以在自己的系統中找到;比如Fedora Core 4.0中的rpmrc 檔案位於
# locate rpmrc
/usr/lib/rpm/rpmrc
/usr/lib/rpm/redhat/rpmrc
我們可以通過 rpm --showrc 查看
4.關於rpm軟體包的一些相關知識
(1).什麼是rpm
RPM 是 Red Hat Package Manager 的縮寫,本意是Red Hat 軟體包管理,顧名思義是Red Hat 貢獻出來的軟體包管理;在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流發行版本,以及在這些版本基礎上二次開發出來的發行版採用;
RPM包裡面都包含什嗎?裡麵包含可執行檔二進位程式,這個程式和Windows的軟體包中的.exe檔案類似是可執行檔;RPM包中還包括程式運行時所需要的檔案,這也和Windows的軟體包類似,Windows的程式的運行,除了.exe檔案以外,也有其它的檔案;
一個RPM 包中的應用程式,有時除了自身所帶的附加檔案保證其正常以外,還需要其它特定版本檔案,這就是軟體包的依賴關係;依賴關係並不是Linux特有的, Windows作業系統中也是同樣存在的;比如我們在Windows系統中運行3D遊戲,在安裝的時候,他可能會提示,要安裝Direct 9 ;Linux和Windows原理是差不多的;
軟體安裝流程圖:
(2).RPM包管理的用途
a、可以安裝、刪除、升級和管理軟體;當然也支援線上安裝和升級軟體;
b、通過RPM包管理能知道軟體包包含哪些檔案,也能知道系統中的某個檔案屬於哪個軟體包;
c、可以在查詢系統中的軟體包是否安裝以及其版本;
d、作為開發人員可以把自己的程式打包為RPM 包發布;
e、軟體包簽名GPG和MD5的匯入、驗證和簽名發布
f、依賴性的檢查,查看是否有軟體包由於不相容而擾亂了系統;
(3).RPM 的使用許可權;
RPM軟體的安裝、刪除、更新只有root許可權才能使用;對於查詢功能任何使用者都可以操作;如果普通使用者擁有安裝目錄的許可權,也可以進行安裝;
(4).是不是所有的linux都使用rpm
任何系統都需要包管理系統,因此很多linux都使用rpm系統。但rpm系統是為RH專門但是TL,Mandrake等系統也都使用rpm。由於rpm 的來源程式可以在別的系統上進行編譯,所以有可能在別的系統上也使用rpm除了rpm,其他一些系統也有自己的軟體包管理程式,例如debian的deb 包,
slakware也都有自己的包管理系統
(5).rpm包的檔案名稱為什麼那麼長
rpm包的檔案名稱中包含了這個軟體包的版本資訊,作業系統資訊,硬體要求等等。比如mypackage-1.1-2TL.i386.rpm,其中 mypackage是在系統中登記的軟體包的名字1.1是軟體的版本號碼,2是發行號,TL表示用於TL作業系統,還可能是RH等。i386表示用於 intel x86平台,還可能是sparc等。
(6).軟體包檔案名稱中的i386,i686是什麼意思
rpm軟體包的檔案名稱中,不僅包含了軟體名稱,版本資訊,還包括了適用的硬體架構的資訊。
i386指這個軟體包適用於intel 80386以上的x86架構的電腦(AI32)
i686指這個軟體包適用於intel 80686以上(奔騰pro以上)的x86架構的電腦(IA32)
noarch指這個軟體包於硬體架構無關,可以通用。
i686軟體包的程式通常針對CPU進行了最佳化,所以,向後相容比較用以,i386的包在x86機器上都可以用。向前一般不相容。不過現在的電腦,奔騰pro以下的CPU已經很少用,通常配置的機器都可以使用i686軟體包
(7).不同作業系統發行的rpm包可否混用?
對於已經編譯成二進位的rpm包,由於作業系統環境不同,一般不能混用。對於以src.rpm發行的軟體包,由於需要安裝時進行本地編譯,所以通常可以在不同系統下安裝。
(8).使用rpm時遇到的一些特殊問題
Q 我用rpm -e **.rpm無法刪除rpm包
A 包名不要包括rpm,
rpm -e 包名,可以包含版本號碼等資訊,但是不可以有尾碼.rpm
Q 在MS的系統下有沒有讀RPM檔案的工具?
A wincmd with rpm plugins.....
Q 是否可以通過ftp安裝安裝升級rpm包?
A 可以。rpm -ivh
ftp://xxxxxxxx/PATH2SomeRPM
Q rpm安裝時已有的包版本過高怎麼辦?
A 有時由於安裝的軟體包太老,而系統中相關的軟體包版本比較新,所以可能需要安裝的包依賴的一些檔案會找不到。這時有兩種解決辦法,
第一是在系統檔案中找到和需要的檔案功能相同或相似的檔案,做一個符號連結到需要的目錄下。
來自http://blog.sina.com.cn/s/blog_4de1e95001009tci.html~type=v5_one&label=rela_nextarticle
軟體安裝常用方法
1、軟體安裝卸載,分幾種情況:
A:RPM包,這種軟體包就像windows的EXE安裝檔案一樣,各種檔案已經編譯好,並打了包,哪個檔案該放到哪個檔案夾,都指定好了,安裝非常方便,在圖形介面裡你只需要雙擊就能自動安裝。
==如何卸載:
1、開啟一個SHELL終端
2、因為LINUX下的軟體名都包括版本號碼,所以卸載前最好先確定這個軟體的完整名稱。
尋找RPM包軟體:rpm -qa ×××*
注意:×××指軟體名稱開頭的幾個字母,不要求寫全,但別錯,*就是萬用字元號“*”,即星號,如你想尋找機子裡安裝的REALPLAYER軟體,可以輸入:rpm -qa realplay*
3、找到軟體後,顯示出來的是軟體完整名稱,如firefox-1.0.1-1.3.2
執行卸載命令:rpm -e firefox-1.0.1-1.3.2
===安裝目錄,執行命令尋找:rpm -ql firefox-1.0.1-1.3.2
===參考文章:http://blog.chinaunix.net/article.p...178&blogId=1438
B:tar.gz(bz或bz2等)結尾的原始碼包,這種軟體包裡面都是來源程式,沒有編譯過,需要編譯後才能安裝,安裝方法為:
1、開啟一個SHELL,即終端
2、用CD 命令進入原始碼壓縮包所在的目錄
3、根據壓縮包類型解壓縮檔案(*代表壓縮包名稱)
tar -zxvf ****.tar.gz
tar -jxvf ****.tar.bz(或bz2)
4、用CD命令進入解壓縮後的目錄
5、輸入編譯檔案命令:./configure(有的壓縮包已經編譯過,這一步可以省去)
6、然後是命令:make
7、再是安裝檔案命令:make install
8、安裝完畢
===如何卸載:
1、開啟一個SHELL,即終端
2、用CD 命令進入編譯後的軟體目錄,即安裝時的目錄
3、執行反安裝命令:make uninstall
====安裝目錄:注意make install命令過程中的安裝目錄,或者閱讀安裝目錄裡面的readme檔案,當然最好的辦法是在安裝的過程中指定安裝目錄,即在./configure命令後面加參數--prefix=/**,
如:./configure --prefix=/usr/local/aaaa,即把軟體裝在/usr/local/路徑的aaaa這個目錄裡。一般的軟體的預設安裝目錄在/usr/local或者/opt裡,可以到那裡去找找
C:以bin結尾的安裝包,這種包類似於RPM包,安裝也比較簡單
1、開啟一個SHELL,即終端
2、用CD 命令進入原始碼壓縮包所在的目錄
3、給檔案加上可執行屬性:chmod +x ******.bin(中間是字母x,小寫)
3、執行命令:./******.bin(realplayer for linux就是這樣的安裝包)
===如何卸載:把安裝時中選擇的安裝目錄刪除就OK
===執行安裝過程中可以指定,類似於windows下安裝。
2、安裝完軟體後如何執行。 安裝完軟體後可以有好多種方法執行軟體:
A、有些軟體安裝後會自動在應用程式列表裡加上快速鍵,和windows一樣,到那裡找就行了。
B、如果在應用程式列表裡找不到的話,可以直接在/開始/運行命令裡輸入命令:啟動命令一般就是軟體名,如firefox,realplay,xmms等
C、也可以開啟一個shell終端,輸入軟體名,和在“運行命令”裡一樣。如果不知道命令全程的話,可以輸入開頭的字母,然後按tab鍵尋找,系統會自動顯示以輸入字母開頭的所有命令/
D、你也可以直接到安裝目錄下運行開機檔案,linux下的可執行表徵圖和shell終端表徵圖很像
E、到/usr/bin目錄裡找安裝的軟體開機檔案執行命令。linux系統把所有可執行檔檔案命令在/usr/bin目錄裡都作了啟動串連,你可以去那個目錄尋找你安裝的檔案的啟動命令,雙擊啟動
還有一種方法是用yum,假如我要刪除pidgin,則先yum info pidgin*找出有哪些相關的包,然後yum remove pidgin就ok了