Linux基礎(chǔ)命令介紹十一:軟件包管理
linux中軟件包的管理隨著系統(tǒng)發(fā)行版本的不同而不同,RPM和DPKG為最常見的兩類軟件包管理工具,分別應(yīng)用于基于rpm軟件包的linux發(fā)行版和基于deb軟件包的linux發(fā)行版。本文只描述RPM的使用方法,另一種命令不同,但用法類似,就不做介紹了。
1、rpm RPM包管理器
選項-q表示查詢系統(tǒng)安裝的軟件包
- [root@centos7 ~]# rpm -q sudo
- sudo-1.8.6p7-16.el7.x86_64
- [root@centos7 ~]# rpm -q nginx
- 未安裝軟件包 nginx
- [root@centos7 ~]#
選項-a表示查詢所有安裝的rpm包
- [root@centos7 ~]# rpm -qa|grep vim
- vim-filesystem-7.4.160-1.el7.x86_64
- vim-common-7.4.160-1.el7.x86_64
- vim-enhanced-7.4.160-1.el7.x86_64
- vim-minimal-7.4.160-1.el7.x86_64
- [root@centos7 ~]#
選項-f file表示查詢文件所屬軟件包
- [root@centos7 ~]# rpm -qf /usr/bin/ls
- coreutils-8.22-15.el7.x86_64
- [root@centos7 ~]#
選項-c表示查詢軟件包的配置文件
- [root@centos7 ~]# rpm -qc sudo
- /etc/pam.d/sudo
- /etc/pam.d/sudo-i
- /etc/sudo-ldap.conf
- /etc/sudo.conf
- /etc/sudoers
- [root@centos7 ~]#
選項-e表示卸載軟件包
- [root@centos7 ~]# rpm -e sudo
- 警告:/etc/sudoers 已另存為 /etc/sudoers.rpmsave
- [root@centos7 ~]# rpm -q sudo
- 未安裝軟件包 sudo
- [root@centos7 ~]#
選項-i表示安裝 -v表示顯示詳細信息 -h表示顯示安裝進度
- #下載rpm包
- [root@centos7 tmp]# wget ftp.scientificlinux.org/linux/scientific/7rolling/x86_64/os/Packages/sudo-1.8.6p7-16.el7.x86_64.rpm
- #安裝
- [root@centos7 tmp]# rpm -ivh sudo-1.8.6p7-16.el7.x86_64.rpm
- 警告:sudo-1.8.6p7-16.el7.x86_64.rpm: 頭V4 DSA/SHA1 Signature, 密鑰 ID 192a7d7d: NOKEY
- 準備中... ################################# [100%]
- 正在升級/安裝...
- 1:sudo-1.8.6p7-16.el7 ################################# [100%]
有很多軟件并不是只有一個rpm包,它們之間有各種各樣的依賴關(guān)系,當安裝(或卸載)時,需要將所有依賴的包都安裝(或卸載)之后才能安裝(或卸載)成功
- [root@centos7 tmp]# rpm -e vim-common
- 錯誤:依賴檢測失?。?nbsp;
- vim-common = 2:7.4.160-1.el7 被 (已安裝) vim-enhanced-2:7.4.160-1.el7.x86_64 需要
選項--nodeps表示忽略依賴關(guān)系
- [root@centos7 tmp]# rpm -q vim-common
- vim-common-7.4.160-1.el7.x86_64
- [root@centos7 tmp]# rpm -e --nodeps vim-common
- 警告:/etc/vimrc 已另存為 /etc/vimrc.rpmsave
- [root@centos7 tmp]# rpm -q vim-common
- 未安裝軟件包 vim-common
選項-U表示對軟件包升級
- [root@centos7 tmp]# rpm -q wget
- wget-1.14-10.el7_0.1.x86_64
- [root@centos7 tmp]# rpm -Uvh wget-1.14-13.el7.x86_64.rpm
- 準備中... ################################# [100%]
- 正在升級/安裝...
- 1:wget-1.14-13.el7 ################################# [ 50%]
- 正在清理/刪除...
- 2:wget-1.14-10.el7_0.1 ################################# [100%]
- [root@centos7 tmp]# rpm -q wget
- wget-1.14-13.el7.x86_64
2、yum 下載更新器
- yum [options] [command] [package ...]
yum是一個基于rpm的交互式軟件包管理器。yum在安裝軟件時并不需要像rpm那樣手動查找安裝,它在工作時會搜索源中的rpm包,并自動解決依賴關(guān)系,自動下載并安裝。yum默認源配置文件位于目錄/etc/yum.repos.d內(nèi)。
命令install表示安裝
- [root@centos7 ~]# yum install vim-common
- 已加載插件:fastestmirror
- Loading mirror speeds from cached hostfile
- * base: mirrors.yun-idc.com
- * extras: mirrors.yun-idc.com
- * updates: mirrors.yun-idc.com
- 正在解決依賴關(guān)系
- --> 正在檢查事務(wù)
- ---> 軟件包 vim-common.x86_64.2.7.4.160-1.el7 將被 安裝
- --> 解決依賴關(guān)系完成
- 依賴關(guān)系解決
- .... #省略部分輸出
- 安裝 1 軟件包
- 總下載量:5.9 M
- 安裝大?。?1 M
- Is this ok [y/d/N]:y #需要在這里輸入確認是否安裝
- Downloading packages:
- vim-common-7.4.160-1.el7.x86_64.rpm | 5.9 MB 00:00:00
- Running transaction check
- Running transaction test
- Transaction test succeeded
- Running transaction
- 警告:RPM 數(shù)據(jù)庫已被非 yum 程序修改。
- ** 發(fā)現(xiàn) 1 個已存在的 RPM 數(shù)據(jù)庫問題, 'yum check' 輸出如下:
- 2:vim-enhanced-7.4.160-1.el7.x86_64 有缺少的需求 vim-common = ('2', '7.4.160', '1.el7')
- 正在安裝 : 2:vim-common-7.4.160-1.el7.x86_64 1/1
- 驗證中 : 2:vim-common-7.4.160-1.el7.x86_64 1/1
- 已安裝:
- vim-common.x86_64 2:7.4.160-1.el7
- 完畢!
命令check-update表示檢查更新
命令update表示升級
命令search表示搜索軟件包
命令list表示列出可用軟件包
命令remove表示卸載
命令clean表示清除yum緩存目錄內(nèi)容
選項-y表示在所有需要交互式確認的地方默認輸入yes
當yum源中沒有所需要安裝的包時,會報沒有可用軟件包的錯誤。此時可以通過添加新的yum源來解決
如centos7中安裝nginx:
- #安裝repo
- [root@centos7 tmp]# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 獲取http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 警告:/var/tmp/rpm-tmp.cUANoe: 頭V4 RSA/SHA1 Signature, 密鑰 ID 7bd9bf62: NOKEY
- 準備中... ################################# [100%]
- 正在升級/安裝...
- 1:nginx-release-centos-7-0.el7.ngx ################################# [100%]
此時/etc/yum.repos.d中增加了一個新文件nginx.repo
- [root@centos7 tmp]# cat /etc/yum.repos.d/nginx.repo
- # nginx.repo
- [nginx]
- name=nginx repos #名稱
- baseurl=http://nginx.org/packages/centos/7/$basearch/ #源地址
- gpgcheck=0 #是否檢查key,0表示不檢查
- enabled=1 #這里等于0表示不啟用baseurl,為1表示啟用baseurl
現(xiàn)在就可以通過命令yum install -y nginx安裝nginx了
當服務(wù)器沒有網(wǎng)絡(luò)可用時,還能夠設(shè)置本地yum源。此時需要手動配置repo文件
首先將安裝光盤或ios文件掛載至系統(tǒng)(關(guān)于掛載的更多內(nèi)容請看這一篇)
- [root@centos7 tmp]# mount CentOS-7-x86_64-DVD-1611.iso /media
- mount: /dev/loop2 寫保護,將以只讀方式掛載
- [root@centos7 tmp]#
- #如果是光盤則如此掛載:
- [root@centos7 tmp]# mount /dev/cdrom /media
- mount: /dev/sr0 寫保護,將以只讀方式掛載
- [root@centos7 tmp]#
- #卸載用umount或eject
- [root@centos7 tmp]# umount /media
- [root@centos7 tmp]# eject
編輯yum源配置文件
- vim /etc/yum.repos.d/local.repo
- [local]
- name=test
- baseurl=file:///media #這里baseurl寫 前綴(file://)+掛載點
- enabled=1
- gpgcheck=0
然后將原有網(wǎng)絡(luò)源配置文件備份到另一個目錄,/etc/yum.repo.d中只保留local.repo文件。安裝軟件:
- yum install bc -y
3、源碼包
前面所說的rpm和deb都是二進制軟件包,由于這些軟件包都是已經(jīng)經(jīng)過編譯的,用戶不能設(shè)置編譯選項,也不能對軟件做任何更改。相對來說,使用源碼包編譯安裝軟件提供了更多的靈活性,在編譯時可指定各種選項,對于有能力的用戶,還可以修改源代碼。下面介紹一下linux中是如何安裝源碼包的
1)、獲取源碼包
- wget http://mirrors.sohu.com/nginx/nginx-1.9.6.tar.gz
2)、解壓
- tar zxf nginx-1.9.6.tar.gz
3)、配置
- [root@idc-v-71252 src]# cd nginx-1.9.6
- [root@idc-v-71252 nginx-1.9.6]# ./configure --prefix=/usr/local/nginx
這里配置選項--prefix=/usr/local/nginx表示指定nginx的安裝路徑為/usr/local/nginx。
可以執(zhí)行./configure --help查看有哪些配置參數(shù),此步驟的執(zhí)行會檢查系統(tǒng)是否符合編譯要求。如果報錯,很多情況下是因為少了一些編譯工具,可以使用yum安裝這些工具(當然也可以裝源碼)。
在本例中報錯:./configure: error: the HTTP rewrite module requires the PCRE library.。
說明少了pcre庫,查看一下系統(tǒng):
- [root@idc-v-71252 nginx-1.9.6]# rpm -qa pcre
- pcre-8.32-15.el7.x86_64
- [root@idc-v-71252 nginx-1.9.6]#
系統(tǒng)有pcre安裝,但沒有devel包,使用yum安裝
- [root@idc-v-71252 nginx-1.9.6]# yum install pcre-devel -y
再次執(zhí)行configure發(fā)現(xiàn)報錯變了:./configure: error: the HTTP gzip module requires the zlib library.
重復上述操作直到所需軟件都安裝完畢,之后再次執(zhí)行./configure --prefix=/usr/local/nginx
4、編譯
- [root@idc-v-71252 nginx-1.9.6]# make -j8
使用make進行編譯,選項-j表示指定并發(fā)執(zhí)行的數(shù)量,這里指定了和系統(tǒng)邏輯CPU數(shù)(可以使用命令grep -c "^processor" /proc/cpuinfo查看邏輯CPU數(shù))相同的并發(fā)數(shù)。
此步驟也可能會出現(xiàn)報錯,一般也是因為缺少包,仔細閱讀報錯信息,一般都不難解決。
5、安裝
- [root@idc-v-71252 nginx-1.9.6]# make install
如果沒有錯誤,這個軟件包就安裝完畢了,可以在/usr/local/nginx中找到安裝后的文件。
這里說了源碼包的一般安裝過程,有些源碼包的安裝可能會有所不同,一般源碼包中都有相應(yīng)的安裝說明文件(README或INSTALL),仔細閱讀這些文件或者通過查詢軟件官網(wǎng),就能找到它們的安裝方法。