### RPM包安裝
1、如何安裝rpm軟件包
rmp軟件包的安裝可以使用程序rpm來完成。執行下面的命令
~~~
rpm -i 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 可以忽略所有依賴關系和文件問題,什么包都能安裝上,但這種強制安裝的軟件包不能保證完全發揮功能
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軟件包
使用命令 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強制卸載
4、如何不安裝但是獲取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表示保持文件的更新時間。
5、如何查看與rpm包相關的文件和其他信息
下面所有的例子都假設使用軟件包mysql-3.23.54a-11
1. 我的系統中安裝了那些rpm軟件包
~~~
rpm -qa 列出所有安裝過的包
~~~
如果要查找所有安裝過的包含某個字符串sql的軟件包
~~~
rpm -qa |grep 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 程序名` 返回軟件包的全名
rpm -qif `which 程序名` 返回軟件包的有關信息
rpm -qlf `which 程序名` 返回軟件包的文件列表
~~~
注意,這里不是引號,而是`,就是鍵盤左上角的那個鍵,也可以使用rpm -qilf,同時輸出軟件包信息和文件列表。
7. 某個文件是哪個軟件包安裝的,或者哪個軟件包包含這個文件
注意,前一個問題中的方法,只適用與可執行的程序,而下面的方法,不僅可以用于可執行程序,也可以用于普通的任何文件,前提是知道這個文件名,首先獲得這個程序的完整路徑,可以用whereis或者which,然后使用`rpm -qf`
例如:
~~~
# whereis ftptop
ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz
# rpm -qf /usr/bin/ftptop
proftpd-1.2.8-1
# rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt
proftpd-1.2.8-1
~~~
獲得軟件包相關的信息用rpm -q,q表示查詢query,后面可以跟其他選項,比如
~~~
i 表示info,獲得軟件包的信息;
l 表示list,獲得文件列表;
a 表示all,在所有包中執行查詢;
f 表示file,根據文件進行相關的查詢;
p 表示package,根據軟件包進行查詢
~~~
需要的查詢條件可以使用grep產生,或者從"` `"中的命令行產生
* * * * *
https://www.linuxprobe.com/linux-under-various-installation-package.html
- 目錄
- W3School
- 工具
- 手冊
- 實驗
- 慕課
- Linux軟件安裝管理
- RPM包安裝
- yum安裝
- Linux系統管理
- ps_mem
- uname
- CentOS版本
- Linux服務管理
- Linux權限管理
- Linux 權限控制的基本原理
- Linux網絡管理
- Linux計劃任務
- Crontab
- 任務啟停
- 綜合用例
- 間隔任務
- 一次任務
- 跨天任務
- 輸出重定向
- Crontab任務權限
- 多任務
- 表達式
- 視頻教程
- 不知疲倦的時間表
- 發送郵件
- nginx
- nginx入門到實踐
- Nginx配置Web服務器
- 查看進程
- 配置步驟
- nginx升級
- 腳本升級
- systemctl 命令完全指南
- Linux 軟件安裝目錄
- 查看文件安裝路徑
- 書籍
- 《Linux Shell腳本攻略》
- 《循序漸進Linux》
- 課程
- Linux典型應用
- 網址
- 通信
- MySQL開啟遠程連接
- 防火墻
- 安全組規則
- Mailx
- 介紹
- 安裝
- 配置
- 發送郵件
- 163_email
- 安全
- Linux中root賬號和普通賬號有什么區別,root賬號為什么不能刪除?
- chmod改變文件權限
- SELinux入門