Linux基礎(chǔ)命令介紹十一:軟件包管理
linux中軟件包的管理隨著系統(tǒng)發(fā)行版本的不同而不同,RPM和DPKG為最常見(jiàn)的兩類軟件包管理工具,分別應(yīng)用于基于rpm軟件包的linux發(fā)行版和基于deb軟件包的linux發(fā)行版。本文只描述RPM的使用方法,另一種命令不同,但用法類似,就不做介紹了。
1、rpm RPM包管理器
選項(xiàng)-q表示查詢系統(tǒng)安裝的軟件包
- [root@centos7 ~]# rpm -q sudo
- sudo-1.8.6p7-16.el7.x86_64
- [root@centos7 ~]# rpm -q nginx
- 未安裝軟件包 nginx
- [root@centos7 ~]#
選項(xiàng)-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 ~]#
選項(xiàng)-f file表示查詢文件所屬軟件包
- [root@centos7 ~]# rpm -qf /usr/bin/ls
- coreutils-8.22-15.el7.x86_64
- [root@centos7 ~]#
選項(xiàng)-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 ~]#
選項(xiàng)-e表示卸載軟件包
- [root@centos7 ~]# rpm -e sudo
- 警告:/etc/sudoers 已另存為 /etc/sudoers.rpmsave
- [root@centos7 ~]# rpm -q sudo
- 未安裝軟件包 sudo
- [root@centos7 ~]#
選項(xiàng)-i表示安裝 -v表示顯示詳細(xì)信息 -h表示顯示安裝進(jìn)度
- #下載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
- 準(zhǔn)備中... ################################# [100%]
- 正在升級(jí)/安裝...
- 1:sudo-1.8.6p7-16.el7 ################################# [100%]
有很多軟件并不是只有一個(gè)rpm包,它們之間有各種各樣的依賴關(guān)系,當(dāng)安裝(或卸載)時(shí),需要將所有依賴的包都安裝(或卸載)之后才能安裝(或卸載)成功
- [root@centos7 tmp]# rpm -e vim-common
- 錯(cuò)誤:依賴檢測(cè)失?。?nbsp;
- vim-common = 2:7.4.160-1.el7 被 (已安裝) vim-enhanced-2:7.4.160-1.el7.x86_64 需要
選項(xiàng)--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
選項(xiàng)-U表示對(duì)軟件包升級(jí)
- [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
- 準(zhǔn)備中... ################################# [100%]
- 正在升級(jí)/安裝...
- 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是一個(gè)基于rpm的交互式軟件包管理器。yum在安裝軟件時(shí)并不需要像rpm那樣手動(dòng)查找安裝,它在工作時(shí)會(huì)搜索源中的rpm包,并自動(dòng)解決依賴關(guān)系,自動(dòng)下載并安裝。yum默認(rèn)源配置文件位于目錄/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 #需要在這里輸入確認(rèn)是否安裝
- 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ù)庫(kù)已被非 yum 程序修改。
- ** 發(fā)現(xiàn) 1 個(gè)已存在的 RPM 數(shù)據(jù)庫(kù)問(wèn)題, '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
- 驗(yàn)證中 : 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表示升級(jí)
命令search表示搜索軟件包
命令list表示列出可用軟件包
命令remove表示卸載
命令clean表示清除yum緩存目錄內(nèi)容
選項(xiàng)-y表示在所有需要交互式確認(rèn)的地方默認(rèn)輸入yes
當(dāng)yum源中沒(méi)有所需要安裝的包時(shí),會(huì)報(bào)沒(méi)有可用軟件包的錯(cuò)誤。此時(shí)可以通過(guò)添加新的yum源來(lái)解決
如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
- 準(zhǔn)備中... ################################# [100%]
- 正在升級(jí)/安裝...
- 1:nginx-release-centos-7-0.el7.ngx ################################# [100%]
此時(shí)/etc/yum.repos.d中增加了一個(gè)新文件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)在就可以通過(guò)命令yum install -y nginx安裝nginx了
當(dāng)服務(wù)器沒(méi)有網(wǎng)絡(luò)可用時(shí),還能夠設(shè)置本地yum源。此時(shí)需要手動(dòng)配置repo文件
首先將安裝光盤或ios文件掛載至系統(tǒng)(關(guān)于掛載的更多內(nèi)容請(qǐng)看這一篇)
- [root@centos7 tmp]# mount CentOS-7-x86_64-DVD-1611.iso /media
- mount: /dev/loop2 寫保護(hù),將以只讀方式掛載
- [root@centos7 tmp]#
- #如果是光盤則如此掛載:
- [root@centos7 tmp]# mount /dev/cdrom /media
- mount: /dev/sr0 寫保護(hù),將以只讀方式掛載
- [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://)+掛載點(diǎn)
- enabled=1
- gpgcheck=0
然后將原有網(wǎng)絡(luò)源配置文件備份到另一個(gè)目錄,/etc/yum.repo.d中只保留local.repo文件。安裝軟件:
- yum install bc -y
3、源碼包
前面所說(shuō)的rpm和deb都是二進(jìn)制軟件包,由于這些軟件包都是已經(jīng)經(jīng)過(guò)編譯的,用戶不能設(shè)置編譯選項(xiàng),也不能對(duì)軟件做任何更改。相對(duì)來(lái)說(shuō),使用源碼包編譯安裝軟件提供了更多的靈活性,在編譯時(shí)可指定各種選項(xiàng),對(duì)于有能力的用戶,還可以修改源代碼。下面介紹一下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
這里配置選項(xiàng)--prefix=/usr/local/nginx表示指定nginx的安裝路徑為/usr/local/nginx。
可以執(zhí)行./configure --help查看有哪些配置參數(shù),此步驟的執(zhí)行會(huì)檢查系統(tǒng)是否符合編譯要求。如果報(bào)錯(cuò),很多情況下是因?yàn)樯倭艘恍┚幾g工具,可以使用yum安裝這些工具(當(dāng)然也可以裝源碼)。
在本例中報(bào)錯(cuò):./configure: error: the HTTP rewrite module requires the PCRE library.。
說(shuō)明少了pcre庫(kù),查看一下系統(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安裝,但沒(méi)有devel包,使用yum安裝
- [root@idc-v-71252 nginx-1.9.6]# yum install pcre-devel -y
再次執(zhí)行configure發(fā)現(xiàn)報(bào)錯(cuò)變了:./configure: error: the HTTP gzip module requires the zlib library.
重復(fù)上述操作直到所需軟件都安裝完畢,之后再次執(zhí)行./configure --prefix=/usr/local/nginx
4、編譯
- [root@idc-v-71252 nginx-1.9.6]# make -j8
使用make進(jìn)行編譯,選項(xiàng)-j表示指定并發(fā)執(zhí)行的數(shù)量,這里指定了和系統(tǒng)邏輯CPU數(shù)(可以使用命令grep -c "^processor" /proc/cpuinfo查看邏輯CPU數(shù))相同的并發(fā)數(shù)。
此步驟也可能會(huì)出現(xiàn)報(bào)錯(cuò),一般也是因?yàn)槿鄙侔?,仔?xì)閱讀報(bào)錯(cuò)信息,一般都不難解決。
5、安裝
- [root@idc-v-71252 nginx-1.9.6]# make install
如果沒(méi)有錯(cuò)誤,這個(gè)軟件包就安裝完畢了,可以在/usr/local/nginx中找到安裝后的文件。
這里說(shuō)了源碼包的一般安裝過(guò)程,有些源碼包的安裝可能會(huì)有所不同,一般源碼包中都有相應(yīng)的安裝說(shuō)明文件(README或INSTALL),仔細(xì)閱讀這些文件或者通過(guò)查詢軟件官網(wǎng),就能找到它們的安裝方法。