二十一、安裝軟件包的三種方法、RPM包介紹、rpm工具用法、yum工具用法、yum搭建本地倉庫
一、安裝軟件包的三種方法
rpm工具、yum工具、源碼包
RPM工具:是以一種數據庫記錄的方式將需要的套件安裝到Linux主機的一套管理程序。就是說,你的Linux系統中有一個關於RPM的數據庫,它記錄了安裝的包以及包與包之間的依賴關系。RPM包是預先在Linux機器上編譯並打包的文件,安裝快捷。缺點:安裝環境必須與編譯時的環境一致或相當,包與包之間存在著相互依賴的情況,卸載包時需先把依賴的包卸載。若依賴的包是系統必需的,就不能卸載這個包,否則系統崩潰。
yum工具:優勢:可聯網下載所需要的RPM包,然後自動安裝。若安裝的RPM包有依賴關系,yum工具會自動依次安裝相關的RPM包。
源碼包:優點:可以看到源代碼,可以自定義修改源代碼,還可以定制相關的功能,因為源碼包在編譯時可以附加額外的選項。安裝時,需要把源代碼編譯成可執行的二進制文件。若能讀懂這些源代碼,就能修改源代碼的自定義功能,再按你的需求編譯。
二、RPM包介紹
若你的虛擬機光驅中海油系統安裝盤鏡像,就可以通過執行以下命令把光驅掛載到/mnt目錄下。先檢查VMware右下角小光驅圖標是否點亮,若沒有,點擊一下,再點連接就可點亮。當掛載光驅後,會在/mnt/Packages目錄下看到很多後綴為.rpm的文件,這些文件就是RPM包。
# mount /dev/cdrom /mnt
mount: /dev/sr0 寫保護,將以只讀方式掛載 //光驅是以只讀方式掛載的
# ls /mnt/
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
# ls /mnt/Packages/|head
389-ds-base-1.3.6.1-16.el7.x86_64.rpm
389-ds-base-libs-1.3.6.1-16.el7.x86_64.rpm
abattis-cantarell-fonts-0.0.25-1.el7.noarch.rpm
abrt-2.1.11-48.el7.centos.x86_64.rpm
abrt-addon-ccpp-2.1.11-48.el7.centos.x86_64.rpm
abrt-addon-kerneloops-2.1.11-48.el7.centos.x86_64.rpm
abrt-addon-pstoreoops-2.1.11-48.el7.centos.x86_64.rpm
abrt-addon-python-2.1.11-48.el7.centos.x86_64.rpm
abrt-addon-vmcore-2.1.11-48.el7.centos.x86_64.rpm
abrt-addon-xorg-2.1.11-48.el7.centos.x86_64.rpm
解析:abrt-2.1.11-48.el7.centos.x86_64.rpm
abrt:RPM包名。
2.1.11:版本號。2為主版本號,1為次版本號,11是更小的版本號、又叫修正版本。
48.el7:發布版本號。el7代表centos7,6則代表centos6。
centos.x86_64:運行平臺。CPU:64位或32位,centos7已經不區分32和64位了,默認全都是64位。centos6或5、4都區分32或64位。常見運行平臺:i386、i586、i686和x86_64。32位平臺:i386、i586、i686;64位平臺:x86_64。有些RPM包沒有寫運行平臺而是noarch,說明這個RPM包沒有硬件平臺限制。
.rpm:後綴名。
三、RPM工具用法
# rpm -ivh rpm包名文件 //安裝
i:install
v:可視化,執行過程。
h:顯示安裝進度。
舉例:# rpm -ivh abrt-2.1.11-48.el7.centos.x86_64.rpm
錯誤:依賴檢測失敗:
abrt-libs = 2.1.11-48.el7.centos 被 abrt-2.1.11-48.el7.centos.x86_64 需要
abrt-python = 2.1.11-48.el7.centos 被 abrt-2.1.11-48.el7.centos.x86_64 需要
libabrt.so.0()(64bit) 被 abrt-2.1.11-48.el7.centos.x86_64 需要
libreport >= 2.1.11-38 被 abrt-2.1.11-48.el7.centos.x86_64 需要
libreport-plugin-rhtsupport 被 abrt-2.1.11-48.el7.centos.x86_64 需要
libreport-plugin-ureport >= 2.1.11-38 被 abrt-2.1.11-48.el7.centos.x86_64 需要
libreport.so.0()(64bit) 被 abrt-2.1.11-48.el7.centos.x86_64 需要
libsatyr.so.3()(64bit) 被 abrt-2.1.11-48.el7.centos.x86_64 需要
python-augeas 被 abrt-2.1.11-48.el7.centos.x86_64 需要
python-dmidecode 被 abrt-2.1.11-48.el7.centos.x86_64 需要
satyr >= 0.13-10 被 abrt-2.1.11-48.el7.centos.x86_64 需要
sos 被 abrt-2.1.11-48.el7.centos.x86_64 需要
由於沒有安裝依賴的包,故不能安裝此包。
舉例:# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm
準備中... ################################# [100%]
正在升級/安裝...
1:zsh-5.0.2-28.el7 ################################# [100%]
沒有依賴關系的則會正常安裝。
-i選項,安裝rpm包,跟rpm包文件名。示例:
# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm
加-U選項代表升級這個包,跟rpm包文件名。示例:
# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm
-e:卸載rpm包名。示例:
# rpm -e zsh(跟包名就可以了)也可加上v和h。
查詢安裝的包,跟rpm包名。示例:
# rpm -qa (列出來的都是已經安裝的包)
裏面的包可以直接卸載。
# rpm -q+包名 查詢此包是否安裝,安裝了就會顯示詳情,未安裝就會顯示未安裝。
# rpm -qi+包名 查詢指定包信息,i:信息
# rpm -ql+包名 列出包安裝的文件
# rpm -qf+文件的絕對路徑 查看一個文件是由哪個包安裝的
# rpm -qf `which cd` 忘記了命令的絕對路徑,就可使用反引號再which查詢。
bash-4.2.46-28.el7.x86_64
四、yum工具用法
yum list 列出可用的rpm包
zenity.x86_64 3.22.0-1.el7 base
包名;版本號 平臺版本號 倉庫名字
/etc/yum.repos.d/ yum的配置文件
# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
CentOS-Base.repo(核心文件)
# cat /etc/yum.repos.d/CentOS-Base.repo
文件中有倉庫的鏈接地址:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
安裝RPM包:# yum install -y [rpm包名],不加-y,則會以與用戶交互的方式安裝。
搜索包:
yum search +包名(如vim,network等,該搜索只能搜到大概,包含搜索的名字的都會搜出來)
yum list |grep 'vim'(可以過濾掉不需要的東西,搜索更精準,將yum list輸出的東西給後面輸入)
yum grouplist 把可用的組全列出來
yum groupinstall ‘vir host’ 中間有空格的包就用groupinstall,沒有就用install。不加-y可以查看裏面有多少包。
Install 65 Packages (+185 Dependent packages)
Upgrade ( 6 Dependent packages)
Total download size: 73 M
解析:65個包,185個被依賴的包,6個需要升級的。
# yum remove +包名 可以查看到被卸載包的依賴的包。卸載加-y即可。
# yum update +包名 若不加包名,會把系統內所有的rpm包升級,甚至系統和內核,該操作往往在剛安裝完系統的時候進行操作,若安裝系統很久了,很多服務開啟了,升級就須謹慎。升級加-y即可。
# yum provides "/*/vim" 搜索rpm包,沒有安裝就不能用rpm -qf搜索。
五、yum搭建本地倉庫
yum不能用的時候可以搭建一個本地倉庫,使yum在本地倉庫內查找rpm包。
做該操作的條件:
1.有一個光盤鏡像文件,再將它掛載。
# mount /dev/cdrom /mnt
2.刪除/etc/yum.repos.d目錄下的所有repo文件(刪除前,最好先做備份)
# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
# rm -rf /etc/yum.repos.d/*
3.創建新文件dvd.repo,如下:
# vim dvd.repo //加入以下內容
[dvd]
name=install dvd 倉庫名
baseurl=file:///mnt rpm包的位置,光驅的位置。
enabled=1 yum原是否可用,1代表可用,0代表不可用。
gpgcheck=0 是否需要檢測
4.# yum clean all 把之前的repo的文件的緩存進行清除。
5.刷新repos生成緩存,如下所示:
# yum makecache
# yum list 可以查看到已經安裝的rpm包。示例一個:
xz-libs.x86_64 5.2.2-1.el7 @anaconda
以@開頭的代表已經安裝的rpm包,以dvd為後綴的代表可以安裝的包。
然後就可以使用yum命令安裝所需要的軟件包了!示例:
# yum install -y tftp
若rpm包循環依賴,yum本地倉庫即可搞定。
二十一、安裝軟件包的三種方法、RPM包介紹、rpm工具用法、yum工具用法、yum搭建本地倉庫