Linux 軟件包
- 源碼包:由源代碼組成的安裝文件,在安裝時(shí)需要編譯谢谦,因此速度較慢
- 二進(jìn)制包:經(jīng)過源碼包編譯之后的安裝文件,為linux系統(tǒng)下默認(rèn)的軟件安裝包
- RPM包:Fedora回挽、CentOS没咙、SuSE所支持的二進(jìn)制軟件包管理系統(tǒng)
- DPKG包:Debian、Ubuntu所支持的二進(jìn)制軟件包管理系統(tǒng)
RPM包
命名規(guī)則
軟件包名-包的版本號(hào)-發(fā)布次數(shù).軟件發(fā)行商.操作系統(tǒng).硬件平臺(tái).rpm
注意區(qū)分包名和包全名厅各,包名是指軟件包名
镜撩,而包全名是指軟件包的全部名稱
rpm命令
-
安裝
-
rpm -ivh 包全名
(-i:安裝;-v:顯示詳細(xì)信息队塘;-h:顯示安裝進(jìn)度)
-
-
升級(jí)
- 如果軟件沒有安裝則安裝袁梗,安裝過則升級(jí),使用此命令
rpm -Uvh 包全名
- 如果軟件沒有安裝則不安裝憔古,安裝過低版本才會(huì)升級(jí)遮怜,使用此命令
rpm -Fvh 包全名
- 如果軟件沒有安裝則安裝袁梗,安裝過則升級(jí),使用此命令
-
卸載
- linux軟件包卸載時(shí)要考慮軟件包之間依賴性的問題
-
rpm -e 包名
(e代表erase)
-
查詢
- 查詢軟件包是否已安裝
rpm -q 包名
- 查詢系統(tǒng)中所有安裝的軟件包
rpm -qa
- 查詢軟件包的詳細(xì)信息
rpm -qi 包名
(i代表information) - 查詢未安裝軟件包的詳細(xì)信息
rpm -qip 包全名
(p代表package) - 查詢軟件包的所有文件列表
rpm -ql 包名
- 查詢?yōu)榘惭b軟件包的所有文件及欲安裝的路徑
rpm -qlp 包全名
(注意由于軟件包還未安裝,因此需要使用“絕對(duì)路徑+包全名”的方式才能確定包) - 查詢系統(tǒng)文件屬于哪個(gè)RPM包
rpm -qf 系統(tǒng)文件名
- 查詢軟件包的依賴關(guān)系
rpm -qR 包名
(R代表requires) - 查詢未安裝軟件包的依賴關(guān)系
rpm -qRp 包名
(注意由于軟件包還未安裝鸿市,因此需要使用“絕對(duì)路徑+包全名”的方式才能確定包)
- 查詢軟件包是否已安裝
-
RPM包監(jiān)控
- RPM包校驗(yàn):將已安裝文件和 /var/lib/rpm/ 目錄下的數(shù)據(jù)庫內(nèi)容進(jìn)行比較锯梁,確定文件內(nèi)容是否被修改
- RPM包數(shù)字證書校驗(yàn):用來校驗(yàn) RPM 包本身是否被修改
SRPM包
- SRPM直譯為源代碼形式的RPM包即碗,此時(shí)SRPM包中不再是經(jīng)過編譯的二進(jìn)制文件
- 命名規(guī)則
包名-版本號(hào)-發(fā)布次數(shù)-發(fā)行商-src.rpm
- 使用時(shí)首先將SPRPM包編譯為二進(jìn)制RPM包,使用編譯完成的RPM包安裝軟件
文件格式 | 文件名格式 | 直接安裝與否 | 內(nèi)含程序類型 | 可否修改參數(shù)并編譯 |
---|---|---|---|---|
RPM | xxx.rpm | 可 | 已編譯 | 不可 |
SRPM | xxx.src.rpm | 不可 | 未編譯的源代碼 | 可 |
安裝方法
- 利用
rpmbuild
命令可以直接使用 SRPM 包安裝軟件 - 利用 *.spec 文件可實(shí)現(xiàn)將 SRPM 包編譯成 RPM 包陌凳,再使用 RPM 包安裝軟件
yum
yum(Yellow dog Updater剥懒,Modified)是一個(gè)專門為解決包依賴問題的軟件包管理器
安裝 yum
|
為linux命令的管道操作符,表示將前一個(gè)命令的輸出的內(nèi)容輸入到后一個(gè)命令中grep命令用于查找文件里符合條件的字符串合敦,基本格式為
grep [選項(xiàng)] 文本 文件或目錄
[panjianqiao@localhost ~]$ rpm -qa | grep yum #檢查centos7是否已經(jīng)安裝yum
yum-3.4.3-161.el7.centos.noarch
yum-langpacks-0.4.2-7.el7.noarch
yum-plugin-fastestmirror-1.1.31-50.el7.noarch
PackageKit-yum-1.1.10-1.el7.centos.x86_64
yum-metadata-parser-1.1.4-10.el7.x86_64
yum-utils-1.1.31-50.el7.noarch
如出現(xiàn)上述字段說明centos已經(jīng)預(yù)先安裝好了yum
yum 源
yum源是指軟件安裝包的來源初橘,一般有兩種:
-
網(wǎng)絡(luò) yum 源
網(wǎng)絡(luò)源配置文件為于/etc/yum.repos.d/ 目錄下,文件擴(kuò)展名為
.repo
ls -l /etc/yum.repos.d total 32 -rw-r--r--. 1 root root 1664 Nov 23 2018 CentOS-Base.repo -rw-r--r--. 1 root root 1309 Nov 23 2018 CentOS-CR.repo -rw-r--r--. 1 root root 649 Nov 23 2018 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 314 Nov 23 2018 CentOS-fasttrack.repo -rw-r--r--. 1 root root 630 Nov 23 2018 CentOS-Media.repo -rw-r--r--. 1 root root 1331 Nov 23 2018 CentOS-Sources.repo -rw-r--r--. 1 root root 5701 Nov 23 2018 CentOS-Vault.repo
一般情況下充岛,只要主機(jī)網(wǎng)絡(luò)正常就可以直接使用yum源保檐,無需對(duì)做任何配置修改
-
本地 yum 源
在無法聯(lián)網(wǎng)的情況下,yum 可以考慮用本地光盤(或安裝映像文件)作為 yum 源
yum 命令
-
安裝
-
yum -y install 包名
(-y為自動(dòng)回答yes崔梗,如果不加-y需要手動(dòng)回答)例如我們在安裝mpi之前需要gcc編譯器夜只,由于安裝gcc相關(guān)的依賴包太多,建議使用yum安裝
[panjianqiao@localhost ~]$ su #此步驟開啟管理員模式 Password: [root@localhost panjianqiao]# yum -y install gcc #使用yum安裝gcc ... Complete! #省略之前的自動(dòng)安裝過程蒜魄,這里表示gcc安裝成功 [root@localhost panjianqiao]# gcc -v #顯示gcc版本 ... gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) #省略部分信息
-
-
升級(jí)
使用升級(jí)命令之前確保yum源服務(wù)器上的軟件版本比本機(jī)安裝軟件版本高
- 升級(jí)所有軟件包扔亥,但是考慮服務(wù)器穩(wěn)定性,此命令不推薦
yum -y update
- 升級(jí)指定軟件包
yum -y update 包名
- 升級(jí)所有軟件包扔亥,但是考慮服務(wù)器穩(wěn)定性,此命令不推薦
-
卸載
yum命令卸載軟件包可以一并卸載所有的依賴包权悟,即使依賴包屬于系統(tǒng)運(yùn)行必備文件也會(huì)一并刪除砸王,因此不推薦直接用yum卸載軟件包
yum remove 包名
-
查詢
- 查詢所有已安裝和可安裝的軟件包
yum list
- 查詢指定軟件包的安裝情況
yum list 包名
- 從yum源上查詢指定關(guān)鍵字相關(guān)的軟件包
yum search 關(guān)鍵字
- 查詢指定軟件包的詳細(xì)信息
yum info 包名
[root@localhost panjianqiao]# yum list mpi* #查詢和mpi有關(guān)軟件包的安裝情況 Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.neusoft.edu.cn * extras: mirrors.neusoft.edu.cn * updates: mirrors.neusoft.edu.cn Available Packages mpich-3.0.i686 3.0.4-10.el7 base mpich-3.0.x86_64 3.0.4-10.el7 base mpich-3.0-autoload.x86_64 3.0.4-10.el7 base mpich-3.0-devel.i686 3.0.4-10.el7 base mpich-3.0-devel.x86_64 3.0.4-10.el7 base mpich-3.0-doc.noarch 3.0.4-10.el7 base mpich-3.2.i686 3.2-2.el7 base mpich-3.2.x86_64 3.2-2.el7 base mpich-3.2-autoload.x86_64 3.2-2.el7 base mpich-3.2-devel.i686 3.2-2.el7 base mpich-3.2-devel.x86_64 3.2-2.el7 base mpich-3.2-doc.noarch 3.2-2.el7 base mpitests-compat-openmpi16.x86_64 5.4.2-1.el7 base mpitests-mpich.x86_64 5.4.2-1.el7 base mpitests-mpich32.x86_64 5.4.2-1.el7 base mpitests-mvapich2.x86_64 5.4.2-1.el7 base mpitests-mvapich2-psm.x86_64 5.4.2-1.el7 base mpitests-mvapich222.x86_64 5.4.2-1.el7 base mpitests-mvapich222-psm.x86_64 5.4.2-1.el7 base mpitests-mvapich222-psm2.x86_64 5.4.2-1.el7 base mpitests-mvapich23.x86_64 5.4.2-1.el7 base mpitests-mvapich23-psm.x86_64 5.4.2-1.el7 base mpitests-mvapich23-psm2.x86_64 5.4.2-1.el7 base mpitests-openmpi.x86_64 5.4.2-1.el7 base mpitests-openmpi3.x86_64 5.4.2-1.el7 base
- 查詢所有已安裝和可安裝的軟件包
源碼包
源碼包是指軟件所有源代碼的壓縮包,后綴為"tar.gz"或"tar.bz2"峦阁,而前面提到的SRPM指的是源代碼形式的RPM包,二者本質(zhì)并不相同耘成。
linux中大部分的軟件均以C語言編寫榔昔,因此需要預(yù)先安裝gcc編譯器
[panjianqiao@localhost ~]$ rpm -q gcc #檢查安裝的gcc版本,如何安裝請見上文 gcc-4.8.5-36.el7_6.2.x86_64
另外還需要make命令完成對(duì)源碼包的自動(dòng)編譯
[panjianqiao@localhost ~]$ rpm -q make #檢查安裝的make版本 make-3.82-23.el7.x86_64
安裝
學(xué)習(xí)Linux的過程中瘪菌,有一個(gè)約定促成的規(guī)定:對(duì)于內(nèi)核的源代碼撒会,一般保存在
/usr/src
;對(duì)于用戶下載的源代碼一般保存在/usr/local/src
(src指用戶自行設(shè)定的文件夾)
- 下載源代碼包师妙,得到源代碼的壓縮包格式為"tar.gz"或"tar.bz2"
- 使用解壓縮命令
- 進(jìn)入解壓縮目錄
-
./configure
軟件配置和檢查- (configure不是一個(gè)系統(tǒng)命令诵肛,而是源碼包自帶命令因此需要
./
) - 檢測系統(tǒng)環(huán)境是否符合安裝要求
- 定義需要的功能選項(xiàng)(例如
./configure --prefix=安裝路徑
可以指定安裝路徑) - 把環(huán)境檢測結(jié)果和定義好的功能選項(xiàng)寫入Makefile文件
- (configure不是一個(gè)系統(tǒng)命令诵肛,而是源碼包自帶命令因此需要
- make編譯
make
- 調(diào)用編譯器
- 讀取Makefile文件信息進(jìn)行系統(tǒng)軟件編譯
- 正式安裝軟件
make install
<u>注意:如果在 "./configure" 或 "make" 編譯中報(bào)錯(cuò),則在重新執(zhí)行命令前一定要執(zhí)行 make clean
命令默穴,它會(huì)清空 Makefile 文件或編譯產(chǎn)生的 ".o" 頭文件怔檩。</u>
卸載
在卸載軟件時(shí)需要保證軟件停止服務(wù),由于源碼包的安裝文件全部都在/usr/local/src下蓄诽,因此卸載軟件只需刪除該文件夾即可rm -rf /usr/local/src