首頁 > php教程 > PHP开发 > 筆記005 RRM軟體管理程序

筆記005 RRM軟體管理程序

黄舟
發布: 2016-12-26 10:53:51
原創
1520 人瀏覽過

RPM 預設的安裝路徑

一般來說,RPM 類型的檔案在安裝的時候,會先去讀取檔案內記載的設定參數內容,然後將該資料用來比對Linux 系統的環境,以找出是否有屬性相依的軟體尚未安裝的問題。

例如 Openssh 依賴 Openssl 這個加密軟體,所以得先安裝 openssl 才能裝 openssh。如果環境中沒有 openssl , 你就無法安裝 openssh。

若環境檢查合格,則 RPM 檔案就會開始安裝到 Linux 系統上,安裝完畢以後,軟體相關的資訊資訊會寫入到/var/lib/rpm/目錄下的資料庫檔案中。 /var/lib/rpm/這個目錄很重要,未來任何軟體的升級需求、版本比較都是來自於這個資料庫,如果想要查詢已經安裝的軟體,也是從這裡進行對應的查詢。

軟體內對應檔案的安裝位置如下:

/etc                                 一些運作檔案

/usr/lib                  函式庫

/usr/share/doc       一些基本的軟體使用手冊與說明檔

/usr/share/man      機man page 檔案

RPM root。

如果要安裝一個文檔名為rp-pppoe-3.5-32.1.i386.rpm的文件,最簡單的命令可以是:

[root@www ~]# rpm -i rp-pppoe-3.5-32.1.i386.rpm
登入後複製

不過這樣的安裝並不會顯示相應的進度信息,為了方便查看安裝狀態,可以這樣寫:

[root@www ~]# rpm -ivh package_name选项与参数:
-i :install 的意思
-v :察看更细部的安装资讯画面
-h :以安装资讯列显示安装进度

范例一:安装 rp-pppoe-3.5-32.1.i386.rpm
[root@www ~]# rpm -ivh rp-pppoe-3.5-32.1.i386.rpmPreparing...     ####################################### [100%]
   1:rp-pppoe    ####################################### [100%] 

范例二、一口气安装两个以上的软件时:
[root@www ~]# rpm -ivh a.i386.rpm b.i386.rpm *.rpm# 后面直接接上许多的软件文件!范例三、直接由网络上面的某个文件安装,以网址来安装:
[root@www ~]# rpm -ivh http://website.name/path/pkgname.rpm
登入後複製

其它的安裝參數如下:

RPM 升級

筆記005 RRM軟體管理程序使用RPM 來升級真是太簡單了!就以 -Uvh 或 -Fvh 來升級即可,而 -Uvh 與 -Fvh 可以用的選項與參數,跟 install 是一樣的。不過, -U 與-F 的意義還是不太一樣的,基本的差別是這樣的:

-Uvh    后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装过旧版,则系统自动升级至新版;
-Fvh    如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』!
登入後複製

由上面的說明來看,如果你想要大量的升級系統舊版本的軟體時,使用-Fvh 則是比較好的作法,因為沒有安裝的軟體才不會被不小心安裝進系統中。但要注意的是,如果你使用的是-Fvh ,偏偏你的機器上尚無這一個軟體,那麼很抱歉,該軟體並不會被安裝在你的Linux 主機上面,所以請重新以ivh 來安裝吧!

RPM 查詢

RPM 在查詢的時候,其實查詢的地方是在 /var/lib/rpm/ 這個目錄下的資料庫檔案啦!另外, RPM 也可以查詢未安裝的 RPM 檔案內的資訊喔!那如何去查詢呢? 我們先來談談可用的選項有哪些?

[root@www ~]# rpm -qa                              <==已安装软件
[root@www ~]# rpm -q[licdR] 已安装的软件名称       <==已安装软件
[root@www ~]# rpm -qf 存在於系统上面的某个档名     <==已安装软件
[root@www ~]# rpm -qp[licdR] 未安装的某个文件名称  <==查阅RPM文件选项与参数:
查询已安装软件的资讯:
-q  :仅查询,后面接的软件名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
-qi :列出该软件的详细资讯 (information),包含开发商、版本与说明等;
-ql :列出该软件所有的文件与目录所在完整档名 (list);
-qc :列出该软件的所有配置档 (找出在 /etc/ 底下的档名而已)
-qd :列出该软件的所有说明档 (找出与 man 有关的文件而已)
-qR :列出与该软件有关的相依软件所含的文件 (Required 的意思)
-qf :由后面接的文件名称,找出该文件属於哪一个已安装的软件;
查询某个 RPM 文件内含有的资讯:
-qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在於找出
        某个 RPM 文件内的资讯,而非已安装的软件资讯!注意!
登入後複製

在查詢的部分,所有的參數之前都需要加上 -q 才是所謂的查詢!查詢主要分為兩部分, 一個是查已安裝到系統上面的軟體資訊,這部的資訊都是由 /var/lib/rpm/ 所提供。另一個則是查某個 rpm 檔案內容, 等於是由 RPM 檔案內找出一些要寫入資料庫內的資訊就是了,這部份就得要使用 -qp (p 是 package 的意思)。 那就來看看幾個簡單的範例吧!

范例一:找出你的 Linux 是否有安装 logrotate 这个软件?
[root@www ~]# rpm -q logrotatelogrotate-3.7.4-8
[root@www ~]# rpm -q logrotatingpackage logrotating is not installed# 注意到,系统会去找是否有安装后面接的软件名称。注意,
# 不必要加上版本喔!至於显示的结果,一看就知道有没有安装啦!范例二:列出上题当中,属於该软件所提供的所有目录与文件:
[root@www ~]# rpm -ql logrotate/etc/cron.daily/logrotate
/etc/logrotate.conf
....(以下省略)....# 可以看出该软件到底提供了多少的文件与目录,也可以追踪软件的数据。范例三:列出 logrotate 这个软件的相关说明数据:
[root@www ~]# rpm -qi logrotateName        : logrotate             Relocations: (not relocatable)
Version     : 3.7.4                      Vendor: CentOS
Release     : 8                      Build Date: Sun 02 Dec 2007 08:38:06 AM CST
Install Date: Sat 09 May 2009 11:59:05 PM CST    Build Host: builder6
Group       : System Environment/Base  Source RPM: logrotate-3.7.4-8.src.rpm
Size        : 53618                     License: GPL
Signature   : DSA/SHA1, Sun 02 Dec 2007 09:10:01 AM CST, Key ID a8a447dce8562897
Summary     : Rotates, compresses, removes and mails system log files.
Description :
The logrotate utility is designed to simplify the administration oflog files on a system which generates a lot of log files.  Logrotate
allows for the automatic rotation compression, removal and mailing oflog files.  Logrotate can be set to handle a log file daily, weekly,
monthly or when the log file gets to a certain size.  Normally,
logrotate runs as a daily cron job.

Install the logrotate package if you need a utility to deal with thelog files on your system.
# 列出该软件的 information (资讯),里面的资讯可多著呢,包括了软件名称、
# 版本、开发商、SRPM文件名称、打包次数、简单说明资讯、软件打包者、
# 安装日期等等!如果想要详细的知道该软件的数据,用这个参数来了解一下范例四:分别仅找出 logrotate 的配置档与说明档
[root@www ~]# rpm -qc logrotate[root@www ~]# rpm -qd logrotate范例五:若要成功安装 logrotate ,他还需要什么文件的帮忙?
[root@www ~]# rpm -qR logrotate/bin/sh
config(logrotate) = 3.7.4-8libc.so.6....(以下省略)....
# 由这里看起来,呵呵~还需要很多文件的支持才行喔!范例六:由上面的范例五,找出 /bin/sh 是那个软件提供的?
[root@www ~]# rpm -qf /bin/shbash-3.2-21.el5
# 这个参数后面接的可是『文件』呐!不像前面都是接软件喔!
# 这个功能在查询系统的某个文件属於哪一个软件所有的。范例七:假设我有下载一个 RPM 文件,想要知道该文件的需求文件,该如何?
[root@www ~]# rpm -qpR filename.i386.rpm# 加上 -qpR ,找出该文件需求的数据!
登入後複製

要特别说明的是,在查询本机上面的 RPM 软件相关资讯时, 不需要加上版本的名称,只要加上软件名称即可!因为他会由 /var/lib/rpm 这个数据库里面去查询, 所以我们可以不需要加上版本名称。但是查询某个 RPM 文件就不同了,我们必须要列出整个文件的完整档名才行~ 这一点朋友们常常会搞错。底下我们就来做几个简单的练习吧!

RPM 卸载

解安装的过程一定要由最上一级往下解除以 rp-pppoe 为例,这一个软件主要是依据 ppp 这个软件来安装的,所以当你要解除 ppp 的时候,就必须要先解除 rp-pppoe 才行!否则就会发生结构上的问题啦!这个可以由建筑物来说明, 如果你要拆除五、六楼,那么当然要由六楼拆起,否则先拆的是第五楼时,那么上面的楼层难道会悬空?

移除的选项很简单,就透过 -e 即可移除。不过,很常发生软件属性相依导致无法移除某些软件的问题! 我们以底下的例子来说明:

# 1. 找出与 pam 有关的软件名称,并尝试移除 pam 这个软件:[root@www ~]# rpm -qa | grep pampam-devel-0.99.6.2-3.27.el5
pam_passwdqc-1.0.2-1.2.2pam_pkcs11-0.5.3-23pam_smb-1.1.7-7.2.1pam-0.99.6.2-3.27.el5
pam_ccreds-3-5pam_krb5-2.2.14-1[root@www ~]# rpm -e pamerror: Failed dependencies:  <==这里提到的是相依性的问题
        libpam.so.0 is needed by (installed) coreutils-5.97-14.el5.i386
        libpam.so.0 is needed by (installed) libuser-0.54.7-2.el5.5.i386
....(以下省略)....# 2. 若仅移除 pam-devel 这个之前范例安装上的软件呢?
[root@www ~]# rpm -e pam-devel  <==不会出现任何信息!
[root@www ~]# rpm -q pam-devel
package pam-devel is not installed
登入後複製

从范例一我们知道 pam 所提供的函式库是让非常多其他软件使用的,因此你不能移除 pam ,除非将其他相依软件一口气也全部移除!你当然也能加 --nodeps 来强制移除, 不过,如此一来所有会用到 pam 函式库的软件,都将成为无法运行的程序,我想,你的主机也只好准备停机休假了吧! 至於范例二中,由於 pam-devel 是依附於 pam 的开发工具,你可以单独安装与单独移除。

由於 RPM 文件常常会安装/移除/升级等,某些动作或许可能会导致 RPM 数据库 /var/lib/rpm/ 内的文件破损。果真如此的话,那你该如何是好?别担心,我们可以使用 --rebuilddb 这个选项来重建一下数据库喔! 作法如下:

[root@www ~]# rpm --rebuilddb   <==重建数据库
登入後複製

 以上就是笔记005 RRM软件管理程序的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板