在 Linux 作業系統下,幾乎所有的軟體均透過RPM 進行安裝、卸載及管理等操作。 RPM 的全稱為Redhat Package Manager ,是由Redhat 公司提出的,用於管理Linux 下軟體包的軟體。 Linux 安裝時,除了幾個核心模組以外,其餘幾乎所有的模組都透過RPM 完成安裝。 RPM 有五種操作模式,分別為:安裝、卸載、升級、查詢和驗證。
RPM 安裝作業
#指令:
rpm -i 需要安裝的套件檔案名稱
舉例如下:
rpm -i example.rpm 安装 example.rpm 包; rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息; rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度;
RPM 查詢操作
#指令:
rpm -q …
附加查詢指令:
a 查詢所有已經安裝的套件以下兩個附加指令用於查詢安裝套件的資訊;
i 顯示安裝套件的資訊;
l 顯示安裝包中的所有檔案被安裝到哪些目錄下;
s 顯示安裝版中的所有檔案狀態及被安裝到哪些目錄下;以下兩個附加指令用於指定需要查詢的是安裝套件還是已安裝後的檔案;
p 查詢的是安裝套件的資訊;
f 查詢的是已安裝的某一文件資訊;
舉例如下:
rpm -qa | grep tomcat4 查看 tomcat4 是否被安装; rpm -qip example.rpm 查看 example.rpm 安装包的信息; rpm -qif /bin/df 查看/bin/df 文件所在安装包的信息; rpm -qlf /bin/df 查看/bin/df 文件所在安装包中的各个文件分别被安装到哪个目录下;
RPM 卸載操作
指令:
rpm -e
需要卸載的安裝套件
在卸載之前,通常需要使用rpm -q …指令找出需要解除安裝的安裝包名稱。
舉例如下:
rpm -e tomcat4
卸載 tomcat4 軟體包
RPM 升級操作
#指令:
rpm -U 需要升級的套件
舉例如下:
rpm -Uvh example.rpm
升級 example.rpm 軟體包
RPM 驗證操作
命令:
rpm -V 需要驗證的套件
舉例如下:
rpm -Vf /etc/tomcat4/tomcat4.conf
輸出資訊類似如下:
S.5....T c /etc/tomcat4/tomcat4.conf
#
其中,S 表示檔案大小已修改過,T 表示檔案日期已修改過。限於篇幅,更多的驗證資訊請您參考rpm 幫助文件:man rpm
RPM 的其他附加指令
--force 強制操作 如強制安裝刪除等;
--requires 顯示該套件的依賴關係;
--nodeps 忽略依賴關係並繼續操作;
rpm指令是RPM軟體包的管理工具。 rpm原本是Red Hat Linux發行版專門用來管理Linux各項套件的程序,由於它遵循GPL規則且功能強大方便,因而廣受歡迎。逐漸受到其他發行版的採用。 RPM套件管理方式的出現,讓Linux易於安裝,升級,間接提升了Linux的適用度。
rpm(选项)(参数)
-a:查询所有套件; -b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称; -c:只列出组态配置文件,本参数需配合"-l"参数使用; -d:只列出文本文件,本参数需配合"-l"参数使用; -e<套件档>或--erase<套件档>:删除指定的套件; -f<文件>+:查询拥有指定文件的套件; -h或--hash:套件安装时列出标记; -i:显示套件的相关信息; -i<套件档>或--<span class="wp_keywordlink"><a href="https://www.php.cn/link/5ca41a86596a5ed567d15af0be224952" rel="nofollow" target="_blank" >install</a></span><套件档>:安装指定的套件档; -l:显示套件的文件列表; -p<套件档>+:查询指定的RPM套件档; -q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户; -R:显示套件的关联性信息; -s:显示文件状态,本参数需配合"-l"参数使用; -U<套件档>或--upgrade<套件档>:升级指定的套件档; -v:显示指令执行过程; -vv:详细显示指令执行过程,便于排错。
軟體包:指定要操縱的rpm軟體包。
如何安裝rpm軟體包
#rpm軟體包的安裝可以使用程式rpm來完成。執行下面的命令:
rpm -ivh your-package.rpm
其中your-package.rpm是你要安裝的rpm包的檔名,一般置於目前目錄下。
安裝過程中可能出現下面的警告或提示:
... conflict with ...
可能是要安裝的套件裡有一些文件可能會覆蓋現有的文件,缺省時這樣的情況下是無法正確安裝的可以用rpm --force -i
強制安裝即可
... is needed by ... ... is not installed ...
此套件需要的一些軟體你沒有安裝可以用rpm --nodeps -i
來忽略此信息,也就是說rpm -i --force --nodeps
可以忽略所有依賴關係和文件問題,什麼包都能安裝上,但這種強制安裝的軟體包不能保證完全發揮功能。
如何安裝.src.rpm軟體包
有些軟體包是以.src.rpm結尾的,這類軟體包是包含了原始碼的rpm包,在安裝時需要進行編譯。這類軟體有兩種安裝方法:
方法一:
rpm -i your-package.src.rpm <span class="wp_keywordlink"><a href="https://www.php.cn/link/01632f7b7a127233fa1188bd6c2e42e1" rel="nofollow" target="_blank" >cd</a></span> /usr/src/redhat/SPECS <span class="wp_keywordlink"><a href="https://www.php.cn/link/a2c770e3cc20139f429ebfe6e8cdea0b" rel="nofollow" target="_blank" >rpmbuild</a></span> -bp your-package.specs<span style="color: #808080"> #一个和你的软件包同名的specs文件</span> cd /usr/src/redhat/BUILD/your-package/<span style="color: #808080">#一个和你的软件包同名的目录</span> ./configure <span style="color: #808080">#这一步和编译普通的源码软件一样,可以加上参数</span> <span class="wp_keywordlink"><a href="https://www.php.cn/link/03dadd644cb5856e1bb2c75dda01a4f0" rel="nofollow" target="_blank" >make</a></span> make install
方法二:
rpm -i you-package.src.rpm cd /usr/src/redhat/SPECS
前兩步驟和方法一相同
rpmbuild -bb your-package.specs #一个和你的软件包同名的specs文件
這時在/usr/src/redhat/RPM/i386/
(根據特定套件的不同,也可能是i686,noarch等等)在這個目錄下,有一個新的rpm包,這個是編譯好的二進位。
執行rpm -i new-package.rpm
即可安裝完成。
如何卸載rpm軟體包
使用命令rpm -e
包名,包名可以包含版本號等信息,但是不可以有後綴.rpm,例如卸載軟體包proftpd-1.2.8-1,可以使用下列格式:
rpm -e proftpd-1.2.8-1 rpm -e proftpd-1.2.8 rpm -e proftpd- rpm -e proftpd
不可以是下列格式:
rpm -e proftpd-1.2.8-1.i386.rpm rpm -e proftpd-1.2.8-1.i386 rpm -e proftpd-1.2 rpm -e proftpd-1
有時會出現一些錯誤或警告:
... is needed by ...
這表示這個軟體被其他軟體需要,不能隨便卸載,可以用rpm -e --nodeps強制卸載
如何不安裝但是取得rpm套件中的檔案
rpm2cpio xxx.rpm | cpio -<span class="wp_keywordlink"><a href="https://www.php.cn/link/a8621fdfb85b64f3214f86af1e1504a2" rel="nofollow" target="_blank" >vi</a></span> rpm2cpio xxx.rpm | cpio -idmv rpm2cpio xxx.rpm | cpio --extract --make-directories
参数i和extract相同,表示提取文件。v表示指示执行进程,d和make-directory相同,表示根据包中文件原来的路径建立目录,m表示保持文件的更新时间。
如何查看与rpm包相关的文件和其他信息
下面所有的例子都假设使用软件包mysql-3.23.54a-11
1、我的系统中安装了那些rpm软件包。
rpm -qa 讲列出所有安装过的包
如果要查找所有安装过的包含某个字符串sql的软件包
rpm -qa | <span class="wp_keywordlink"><a href="https://www.php.cn/link/c467978aaae44a0e8054e174bc0da4bb" rel="nofollow" target="_blank" >grep</a></span> sql
2、如何获得某个软件包的文件全名。
rpm -q mysql
可以获得系统中安装的mysql软件包全名,从中可以获得当前软件包的版本等信息。这个例子中可以得到信息mysql-3.23.54a-11
3、一个rpm包中的文件安装到那里去了?
rpm -ql 包名
注意这里的是不包括.rpm后缀的软件包的名称,也就是说只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。如果只是想知道可执行程序放到那里去了,也可以用which,比如:
which mysql
4、一个rpm包中包含那些文件。
rpm -qlp ****.rpm
rpm -ql ****.rpm
5、如何获取关于一个软件包的版本,用途等相关信息?
rpm -qip ****.rpm
rpm -qi ****.rpm
6、某个程序是哪个软件包安装的,或者哪个软件包包含这个程序。
rpm -qf `which 程序名`<span style="color: #808080">#返回软件包的全名</span> rpm -qif `which 程序名` <span style="color: #808080">#返回软件包的有关信息</span> rpm -qlf `which 程序名` <span style="color: #808080">#返回软件包的文件列表</span>
注意,这里不是引号,而是`,就是键盘左上角的那个键。也可以使用rpm -qilf
,同时输出软件包信息和文件列表。
7、某个文件是哪个软件包安装的,或者哪个软件包包含这个文件。
注意,前一个问题中的方法,只适用与可执行的程序,而下面的方法,不仅可以用于可执行程序,也可以用于普通的任何文件。前提是知道这个文件名。首先获得这个程序的完整路径,可以用whereis或者which,然后使用rpm -qf
例如:
<span style="color: #ff0000">whereis <span class="wp_keywordlink"><a href="https://www.php.cn/link/96fca94df72984fc97ee5095410d4dec" rel="nofollow" target="_blank" >ftptop</a></span></span> ftptop: /usr/bin/ftptop /usr/share/<span class="wp_keywordlink"><a href="https://www.php.cn/link/432fd02f951f393df1591310e6811118" rel="nofollow" target="_blank" >man</a></span>/man1/ftptop.1.gz <span style="color: #ff0000">rpm -qf /usr/bin/ftptop</span> proftpd-1.2.8-1 <span style="color: #ff0000">rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt</span> proftpd-1.2.8-1
以上是Linux下RPM軟體套件的安裝、更新及卸載方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!