六、
軟件安裝
RPM
RPM 軟件的安裝、刪除、更新只有 root 權限才能使用;對於查詢功能任何用戶都可以操作;如果普通
用戶擁有安裝目錄的權限,也可以進行安裝。
初始化 rpm 數據庫
通過 rpm 命令查詢一個 rpm 包是否安裝了,也是要通過 rpm 數據庫來完成的;所以我們要經常用下面
的兩個命令來初始化 rpm 數據庫;
[root@localhost beinan]# rpm --initdb
[root@localhost beinan]# rpm --rebuilddb 注:這個要花好長時間;
注:這兩個參數是極為有用,有時 rpm 系統出了問題,不能安裝和查詢,大多是這里出了問題;
/var/lib/rpm 目錄下的數據庫記錄所有軟件的升級需求,記錄已經安裝的所有軟件,數字證書記錄等,這
個目錄下的文件非常重要。
RPM
軟件包管理的查詢功能:
命令格式
rpm {-q|--query} [select-options] [query-options]
RPM 的查詢功能是極為強大,是極為重要的功能之一;舉幾個常用的例子,更為詳細的具體的,請參考
#man rpm
1
、查詢系統已安裝的軟件;
語法:rpm -q 軟件名
舉例:
[root@localhost beinan]# rpm –q gaim
gaim-1.3.0-1.fc4
-q 就是 --query ,中文意思是“問”,此命令表示的是,是不是系統安裝了 gaim ;如果已安裝會有
信息輸出;如果沒有安裝,會輸出 gaim 沒有安裝的信息;查看系統中所有已經安裝的包,要加 -a 參
數;
[root@localhost RPMS]# rpm -qa
如果分頁查看,再加一個管道 |和 more 命令;
[root@localhost RPMS]# rpm -qa |more
在所有已經安裝的軟件包中查找某個軟件,比如說 gaim ;可以用 grep 抽取出來;
[root@localhost RPMS]# rpm -qa |grep gaim
上面這條的功能和 rpm -q gaim 輸出的結果是一樣的;
等 37448
2
、查詢一個已經安裝的文件屬於哪個軟件包;
語法 rpm -qf 文件名 注:文件名所在的絕對路徑要指出舉例:
[root@localhost RPMS]# rpm -qf /usr/lib/libacl.la
libacl-devel-2.2.23-8
3
、查詢已安裝軟件包都安裝到何處;
語法:rpm -ql 軟件名 或 rpm rpmquery -ql 軟件名
舉例:
[root@localhost RPMS]# rpm -ql lynx
[root@localhost RPMS]# rpmquery -ql lynx
4
、查詢一個已安裝軟件包的信息
語法格式: rpm -qi 軟件名
舉例:
[root@localhost RPMS]# rpm -qi lynx
5
、查看一下已安裝軟件的配置文件;
語法格式:rpm -qc 軟件名
舉例:
[root@localhost RPMS]# rpm -qc lynx
6
、查看一個已經安裝軟件的文檔安裝位置:
語法格式: rpm -qd 軟件名
舉例:
[root@localhost RPMS]# rpm -qd lynx
7
、查看一下已安裝軟件所依賴的軟件包及文件;
語法格式: rpm -qR 軟件名
舉例:
[root@localhost beinan]# rpm -qR rpm-python
查詢已安裝軟件的總結:對於一個軟件包已經安裝,我們可以把一系列的參數組合起來用;比如 rpm
-qil ;比如:
[root@localhost RPMS]# rpm -qil lynx
對已安裝軟件包查詢的一點補充;
[root@localhost RPMS]# updatedb
[root@localhost RPMS]# locate 軟件名或文件名
通過 updatedb,我們可以用 locate 來查詢一些軟件安裝到哪里了;系統初次安裝時要執行 updatedb ,
每隔一段時間也要執行一次;以保持已安裝軟件庫最新;updatedb 是 slocate 軟件包所有;如果您沒
有這個命令,就得安裝 slocate ;舉例:
[root@localhost RPMS]# locate gaim
對於未安裝的軟件包的查看:
查看的前提是您有一個.rpm 的文件,也就是說對既有軟件 file.rpm 的查看等;
1
、查看一個軟件包的用途、版本等信息;
語法: rpm -qpi file.rpm
舉例:
[root@localhost RPMS]# rpm -qpi lynx-2.8.5-23.i386.rpm
2
、查看一件軟件包所包含的文件;
語法: rpm -qpl file.rpm
舉例:
[root@localhost RPMS]# rpm -qpl lynx-2.8.5-23.i386.rpm
3
、查看軟件包的文檔所在的位置;
語法: rpm -qpd file.rpm
舉例:
[root@localhost RPMS]# rpm -qpd lynx-2.8.5-23.i386.rpm
4
、查看一個軟件包的配置文件;
語法: rpm -qpc file.rpm
舉例:
[root@localhost RPMS]# rpm -qpc lynx-2.8.5-23.i386.rpm
5
、查看一個軟件包的依賴關系
語法: rpm -qpR file.rpm
舉例:
[root@localhost archives]# rpm -qpR yumex_0.42-3.0.fc4_noarch.rpm
/bin/bash
/usr/bin/python
config(yumex) = 0.42-3.0.fc4
pygtk2
pygtk2-libglade
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
usermode
yum >= 2.3.2
軟件包的安裝、升級、刪除等;
1
、安裝和升級一個
rpm
包;
[root@localhost beinan]#rpm -vih file.rpm 注:這個是用來安裝一個新的 rpm 包;
[root@localhost beinan]#rpm -Uvh file.rpm 注:這是用來升級一個 rpm 包;
如果有依賴關系的,請解決依賴關系,其實軟件包管理器能很好的解決依賴關系,請看前面的軟件包管理器
的介紹;如果您在軟件包管理器中也找不到依賴關系的包;那只能通過編譯他所依賴的包來解決依賴關系,
或者強制安裝;語法結構:
[root@localhost beinan]# rpm -ivh file.rpm --nodeps --force
[root@localhost beinan]# rpm -Uvh file.rpm --nodeps --force
更多的參數,請查看 man rpm 舉例應用:
[root@localhost RPMS]# rpm -ivh lynx-2.8.5-23.i386.rpm
Preparing... ########################################### [100%]
1:lynx ########################################### [100%]
[root@localhost RPMS]# rpm -ivh --replacepkgs lynx-2.8.5-23.i386.rpm
Preparing... ########################################### [100%]
1:lynx ########################################### [100%]
注: --replacepkgs 參數是以已安裝的軟件再安裝一次;有時沒有太大的必要;測試安裝參數 --test ,
用來檢查依賴關系;並不是真正的安裝;
[root@localhost RPMS]# rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]
由新版本降級為舊版本,要加 --oldpackage 參數;
[root@localhost RPMS]# rpm -qa gaim
gaim-1.5.0-1.fc4
[root@localhost RPMS]# rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]
1:gaim ########################################### [100%]
[root@localhost RPMS]# rpm -qa gaim
gaim-1.3.0-1.fc4
為軟件包指定安裝目錄:要加 -relocate 參數;下面的舉例是把 gaim-1.3.0-1.fc4.i386.rpm 指定安裝在
/opt/gaim 目錄中;
[root@localhost RPMS]# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]
1:gaim ########################################### [100%]
[root@localhost RPMS]# ls /opt/
gaim
為軟件包指定安裝目錄:要加 -relocate 參數;下面的舉例是把 lynx-2.8.5-23.i386.rpm 指定安裝在
/opt/lynx 目錄中;
[root@localhost RPMS]# rpm -ivh --relocate /=/opt/lynx --badreloc lynx-2.8.5-23.i386.rpm
Preparing... ########################################### [100%]
1:lynx ########################################### [100%]
我們安裝在指定目錄中的程序如何調用呢?一般執行程序,都放在安裝目錄的 bin 或者 sbin 目錄中;看下
面的例子;如果有錯誤輸出,就做相應的鏈接,用 ln -s ;
[root@localhost RPMS]# /opt/lynx/usr/bin/lynx
Configuration file /etc/lynx.cfg is not available.
[root@localhost RPMS]# ln -s /opt/lynx/etc/lynx.cfg /etc/lynx.cfg
[root@localhost RPMS]# /opt/lynx/usr/bin/lynx www.linuxsir.org
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/fedora/core/4/i386/os/
Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
# rpm -ivh http://mirrors.kernel.org/fedora/core/4/i386/os/
Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
2
、刪除一個
rpm
包;
首先您要學會查詢 rpm 包 ;請看前面的說明; [root@localhost beinan]#rpm -e 軟件包名 舉例:我想
移除 lynx 包,完整的操作應該是:
[root@localhost RPMS]# rpm -e lynx
如果有依賴關系,您也可以用--nodeps 忽略依賴的檢查來刪除。但盡可能不要這么做,最好用軟件包管理
器 systerm-config-packages 來刪除或者添加軟件;
[root@localhost beinan]# rpm -e lynx --nodeps
RPM
驗證與數字證書:
導入簽名:
[root@localhost RPMS]# rpm --import 簽名文件 舉例:
[root@localhost fc40]# rpm --import RPM-GPG-KEY
[root@localhost fc40]# rpm --import RPM-GPG-KEY-fedora
RPM 驗證作用是使用/var/lib/rpm 下面的數據庫內容來比較目前 linux 系統的環境下的所有軟件文件,也就
是說當你有數據不小心丟失,或者不小心修改到某個軟件的文件內容,就用這個簡單的方法驗證一下原本的
文件系統
#rpm –Va
列出目前系統上面所有可能被改動過的文件
從
rpm
軟件包抽取文件;
命令格式: rpm2cpio file.rpm |cpio -div
舉例:
[root@localhost RPMS]# rpm2cpio gaim-1.3.0-1.fc4.i386.rpm |cpio -div
抽取出來的文件就在當用操作目錄中的 usr 和 etc 中;其實這樣抽到文件不如指定安裝目錄來安裝軟件來
的方便;也一樣可以抽出文件;為軟件包指定安裝目錄:要加 -relocate 參數;下面的舉例是把
gaim-1.3.0-1.fc4.i386.rpm 指定安裝在 /opt/gaim 目錄中;
[root@localhost RPMS]# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]
1:gaim ########################################### [100%]
[root@localhost RPMS]# ls /opt/
gaim
這樣也能一目了然;gaim 的所有文件都是安裝在 /opt/gaim 中,我們只是把 gaim 目錄備份一下,然后卸
掉 gaim;這樣其實也算提取文件的一點用法;
RPM
的配置文件;
RPM 包管理,的配置文件是 rpmrc ,我們可以在自己的系統中找到;比如 Fedora Core 4.0 中的 rpmrc 文
件位於;
[root@localhost RPMS]# locate rpmrc
/usr/lib/rpm/rpmrc
/usr/lib/rpm/redhat/rpmrc
我們可以通過 rpm --showrc 查看;具體的還得我們自己來學習。呵。。。不要問我,我也不懂;只要您
看了這篇文章,認為對您有用,您的水平就和我差不多;咱們水平是一樣的,所以我不能幫助您了;請
理解。
YUM
YUM
配置文件
創建容器,位置在
/etc/yum.repos.d
,擴展名必須是
.repo
#cd /etc/yum.repos.d
#vim yum.repo
新建一個倉庫文件,名字可以隨便定義,在文件中寫如下內容
[base]
#
代表容器名稱,中括號一定要存在,里面的名字可隨便取
name=base #
說明這個容器的意義,隨便寫都可以
baseurl=ftp://192.168.0.6/pub/Server
#192. 168. 0. 6
是你的
YUM
源地址,這個很重要。
enabled=1
#
是否啟動,
=0
則不啟動,不啟動就無法使用該源
gpgcheck=0 #
是否驗證
.
可不要
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
#驗證的密鑰
.
可不要
命令
:#yum repolist all
顯示目前所使用的容器有哪些
如果查詢出來的容器,
status
為
disabled
,要將配置文件,如上
enabled=1
/etc/yum.conf
yum.conf
這個配置文件主要是
yum
客戶端使用,里面主要規定了要去用的
rpm
包的
yum
服務器的信
息。
[main] #main
開頭的塊用於對客戶端進行配置,在
main
后也可以指定
yum
源(不推薦這樣做),與
/etc/yum.repo.d
中指定
yum
源相同
cachedir=/var/cache/yum
#cachedir
:
yum
緩存的目錄,
yum
在此存儲下載的
rpm
包和數據庫,一般是
/var/cache/yum
。
keepcache=0 #0
表示不保存下載的文件,
1
表示保存下載的文件,默認為不保存
debuglevel=2
#debuglevel
:除錯級別,
0
──
10,
默認是
2
貌似只記錄安裝和刪除記錄
logfile=/var/log/yum.log
#
指定
yum
的日志文件
pkgpolicy=newest
#
包的策略,如果配置多了
yum
源,同一軟件在不同的
yum
源中有不同版本,
newest
則安裝最新版本,該值為
lastest
,則
yum
會將服務器上
ID
按照字母序排列,選擇最后那個服務器上
的軟件安裝
distroverpkg=centos-release
#
指定一個軟件包,
yum
會根據這個包判斷你的發行版本,默認是
redhat-release
,也可以是安裝的任何
針對自己發行版的
rpm
包。
tolerant=1
#tolerent
,也有
1
和
0
兩個選項,表示
yum
是否容忍命令行發生與軟件包有關的錯誤,比如你要安裝
1,2,3
三個包,而其中
3
此前已經安裝了,如果你設為
1,
則
yum
不會出現錯誤信息。默認是
0
。
exactarch=1
#exactarch
,有兩個選項
1
和
0,
代表是否只升級和你安裝軟件包
cpu
體系一致的包,如果設為
1
,則如
你安裝了一個
i386
的
rpm
,則
yum
不會用
i686
的包來升級。
retries=20
#retries
,網絡連接發生錯誤后的重試次數,如果設為
0
,則會無限重試。
obsoletes=1
gpgcheck=1
#gpgchkeck=
有
1
和
0
兩個選擇,分別代表是否是否進行
gpg
校驗,如果沒有這一項,默認是檢查的。
plugins = 1
#
是否啟用插件,默認
1
為允許,
0
表示不允許
reposdir=/etc/yy.rm #
默認是
/etc/yum.repos.d/
低下的
xx.repo
后綴文件
#
默認都會被
include
進來 也就是說
/etc/yum.repos.d/xx.repo
無論配置文件有多少個 每個里面有多少
個
[name]
最后其實都被整合到 一個里面看就是了 重復的
[name]
應該是前面覆蓋后面的
--
還是后面的覆蓋前
面的呢?
enabled
測試是后面覆蓋前面
exclude=xxx
#exclude
排除某些軟件在升級名單之外,可以用通配符,列表中各個項目要用空格隔開,這個對於安
裝了諸如美化包,中文補丁的朋友特別有用。
keepcache=[1 or 0]
#
設置
keepcache=1
,
yum
在成功安裝軟件包之后保留緩存的頭文件
(headers)
和軟件包。默認值為
keepcache=0
不保存
reposdir=[
包含
.repo
文件的目錄的絕對路徑
]
#
該選項用戶指定
.repo
文件的絕對路徑。
.repo
文件包含軟件倉庫的信息
(
作用與
/etc/yum.conf
文件
中的
[repository]
片段相同
)
。中
YUM
命令
用
YUM
安裝刪除軟件
yum install xxx
,
yum
會查詢數據庫,有無這一軟件包,如果有,則檢查其依賴沖
突關系,如果沒有依賴沖突,那么最好,下載安裝
;
如果有,則會給出提示,詢問是否要同時安裝依賴,或
刪除沖突的包,你可以自己作出判斷。
刪除的命令是,
yum remove xxx
,同安裝一樣,
yum
也會查詢數據庫,給出解決依賴關系的提示。
YUM
安裝軟件包
命令:
yum install
YUM
刪除軟件包
命令:
yum remove
用
YUM
查詢軟件信息,我們常會碰到這樣的情況,想要安裝一個軟件,只知道它和某方面有關,但又
不能確切知道它的名字。這時
yum
的查詢功能就起作用了。你可以用
yum search keyword
這樣的命令來進
行搜索,比如我們要則安裝一個
Instant Messenger
,但又不知到底有哪些,這時不妨用
yum search messenger
這樣的指令進行搜索,
yum
會搜索所有可用
rpm
的描述,列出所有描述中和
messeger
有關的
rpm
包,於是
我們可能得到
gaim
,
kopete
等等,並從中選擇。有時我們還會碰到安裝了一個包,但又不知道其用途,我
們可以用
yum info packagename
這個指令來獲取信息。
1.
使用
YUM
查找軟件包
命令:
yum search
2.
列出所有可安裝的軟件包
命令:
yum list
3.
列出所有可更新的軟件包
命令:
yum list updates
4.
列出所有已安裝的軟件包
命令:
yum list installed
5.
列出所有已安裝但不在
Yum Repository
內的軟件包
命令:
yum list extras
6.
列出所指定的軟件包
命令:
yum list
7.
使用
YUM
獲取軟件包信息
命令:
yum info
8.
列出所有軟件包的信息
命令:
yum info
9.
列出所有可更新的軟件包信息
命令:
yum info updates
10.
列出所有已安裝的軟件包信息
命令:
yum info installed
11.
列出所有已安裝但不在
Yum Repository
內的軟件包信息
命令:
yum info extras
12.
列出軟件包提供哪些文件
命令:
yum provides
清除
YUM
緩存
yum
會把下載的軟件包和
header
存儲在
cache
中,而不會自動刪除。如果我們覺得它們占用了磁盤空間,
可以使用
yum clean
指令進行清除,更精確的用法是
yum clean headers
清除
header
,
yum clean packages
清
除下載的
rpm
包,
yum clean all
一股腦兒端
1.
清除緩存目錄
(/var/cache/yum)
下的軟件包
命令:
yum clean packages
2.
清除緩存目錄
(/var/cache/yum)
下的
headers
命令:
yum clean headers
3.
清除緩存目錄
(/var/cache/yum)
下舊的
headers
命令:
yum clean
Oldheaders
4.
清除緩存目錄
(/var/cache/yum)
下的軟件包及舊的
headers
命令:
yum clean, yum clean
all (= yum clean packages; yum clean oldheaders)