1. 程式人生 > >7.1-7.4 軟件包安裝和卸載

7.1-7.4 軟件包安裝和卸載

cor 包管理 live license ims down prot light name

7.1 軟件包安裝和卸載

7.1 安裝軟件包的三種方法

  • rpm工具

    rpm(Redhat Package Manager)RPM軟件包管理器,是以一種數據庫記錄的方式來將我們所需要的套件安裝到Linux主機的一套管理程序。rpm包是預先在Linux機器上編譯好並打包好的文件,安裝起來非常快捷。但是有一個缺點:安裝環境必須與編譯時的一致或相當;包與包之間存在著相互依賴的情況,安裝或卸載包時需要先把依賴的包安裝/卸載,如果依賴的包時系統所必須的,那就不能卸載這個包。

  • yum工具

    yum命令是在Fedora和RedHat以及SUSE中基於rpm的軟件包管理器,它可以使系統管理人員交互和自動化地更細與管理RPM軟件包,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關系,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

  • 源碼包

    Linux軟件的源代碼分發是指提供了該軟件所有程序源代碼的發布形式,需要用戶自己編譯成可執行的二進制碼並進行安裝。其優點是配置靈活,可以隨意去掉或保留某些功能/模塊,適應多種硬件/操作系統平臺及編譯環境;缺點是難度較大。


7.2-7.3 rpm工具

rpm包介紹(準備工作)

掛載系統安裝盤鏡像(掛載到一個空目錄,此處/mnt/目錄未使用,所以直接掛載到/mnt/目錄下)

[root@gaohanwei ~]# df -h文件系統        容量  已用  可用 已用% 掛載點/dev/sda3        28G  1.3G   27G    5% /
devtmpfs        483M     0  483M    0% /devtmpfs           493M     0  493M    0% /dev/shmtmpfs           493M  6.8M  486M    2% /runtmpfs           493M     0  493M    0% /sys/fs/cgroup/dev/sda1       197M  109M   88M   56% /boottmpfs            99M     0   99M    0% /run/user/0[root@gaohanwei ~]# mount /dev/cdrom /mnt/mount: /dev/sr0 寫保護,將以只讀方式掛載[root@gaohanwei mnt]# lsCentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@gaohanwei Packages]# lsyum-plugin-changelog-1.1.31-40.el7.noarch.rpm
yum-plugin-fastestmirror-1.1.31-40.el7.noarch.rpm
yum-plugin-tmprepo-1.1.31-40.el7.noarch.rpm
yum-plugin-verify-1.1.31-40.el7.noarch.rpm
yum-plugin-versionlock-1.1.31-40.el7.noarch.rpm……(rpm包格式:包名、版本號、發布版本號、平臺)

rpm包存放在Packages該文件下!

rpm工具用法

安裝rpm包

  • 語法: rpm [options] [參數]

  • Options:

    -i:=install,安裝

    -v:可視化

    -h:顯示安裝進度

    在安裝一個rpm包時常用附帶選項: --force:強制安裝

    --nodeps:=no dependent 無依賴安裝(忽視與其他包之間的依賴關系)

實例

  1. 安裝一個rpm包(無依賴包)

[root@gaohanwei Packages]# rpm -ivh x86info-1.30-6.el7.x86_64.rpm準備中...                          ################################# [100%]正在升級/安裝...   1:x86info-1:1.30-6.el7             ################################# [100%]
  1. 安裝一個rpm包(有依賴包)

[root@gaohanwei Packages]# rpm -ivh yp-tools-2.14-3.el7.x86_64.rpm錯誤:依賴檢測失敗:
	ypbind 被 yp-tools-2.14-3.el7.x86_64 需要## 即,兩個包之間存在依賴關系## 解決辦法:①:[root@gaohanwei Packages]# rpm -ivh yp-tools-2.14-3.el7.x86_64.rpm yp-tools-2.14-3.el7.x86_64②:[root@adai002 Packages]# rpm -ivh --force yp-tools-2.14-3.el7.x86_64.rpm(添加--force或--nodeps選項即可安裝)

說明: 安裝有依賴關系的包時,可以先安裝其所依賴的包再安裝目標包(同時安裝存在依賴關系的包),或者使用--force或--nodeps選項進行強行安裝(不建議使用)。

升級rpm包

  • 語法: rpm [-U] [包名]

[root@gaohanwei Packages]# rpm -Uvh x86info-1.30-6.el7.x86_64.rpm
Preparing...                          ################################# [100%]
	package x86info-1:1.30-6.el7.x86_64 is already installed

說明: 如果升級一個已經安裝的最新版本的包,執行該命令後無任何操作。

卸載一個rpm包

  • 語法: rpm [-e] [包名]

[root@gaohanwei Packages]# rpm -e x86info-1.30-6.el7.x86_64.rpmerror: package x86info-1.30-6.el7.x86_64.rpm is not installed
[root@gaohanwei Packages]# rpm -e x86info

註: 卸載時直接跟報名,無需跟該包的信息;當包之間存在依賴關系時也需要先卸載其依賴包。

查詢rpm包

查詢已安裝的包
  • 語法:

    rpm [-q] [包名] 查詢指定包

    rpm [-qa] 查詢所有已安裝包

實例:

[root@gaohanwei Packages]# rpm -q kmod
kmod-20-9.el7.x86_64
#########################################
[root@gaohanwei Packages]# rpm -qa |head -5trousers-0.3.13-1.el7.x86_64
filesystem-3.2-21.el7.x86_64
net-tools-2.0-0.17.20131004git.el7.x86_64
bind-license-9.9.4-37.el7.noarch
fxload-2002_04_11-16.el7.x86_64
查詢已安裝包的相關信息
  • 語法: rpm [-qi] [包名]

    i=information

[root@gaohanwei Packages]# rpm -qi filesystem
Name        : filesystem
Version     : 3.2
Release     : 21.el7
Architecture: x86_64
Install Date: Mon May 22 01:19:49 2017Group       : System Environment/Base
Size        : 0……
查詢某包所安裝的文件
  • 語法: rpm [-ql] [包名]

    l=list

[root@gaohanwei Packages]# rpm -ql vim-enhanced/etc/profile.d/vim.csh/etc/profile.d/vim.sh/usr/bin/rvim/usr/bin/vim/usr/bin/vimdiff/usr/bin/vimtutor
查看某文件的安裝包
  • 語法: rpm [-qf] [文件絕對路徑]

[root@gaohanwei Packages]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-1.el7_3.1.x86_64

即,通過其絕對路徑查詢到其安裝包,當不知道其絕對路徑時,使用which命令查詢。

反引號命令

反引號的作用就是將反引號內的Linux命令先執行,然後將執行結果賦予變量。即,在命令行上把Linux命令放在反引號中,這個命令會首先被執行,然後將其結果作為為該命令行的一個參數。

[root@gaohanwei Packages]# rpm -qf `which cd`bash-4.2.46-20.el7_2.x86_64

說明: 先執行“which cd”命令,其次將“which cd”的結果作為“rpm -qf”的參數執行該命令。


7.4 yum工具用法

列出所有rpm包

  • 語法: yum list

[root@gaohanwei Packages]# yum list 
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.tuna.tsinghua.edu.cn
Installed Packages
NetworkManager-libnm.x86_64                1:1.4.0-12.el7              @anaconda
NetworkManager-team.x86_64                 1:1.4.0-12.el7              @anaconda
zsh.x86_64                                        5.0.2-25.el7_3.1                    updates  
zsh-html.x86_64                                   5.0.2-25.el7_3.1                    updates  
zziplib.i686                                      0.13.62-5.el7                       base     
zziplib.x86_64                                    0.13.62-5.el7                       base   
……Exiting on Broken Pipe

說明: 第一列是包名,第二列是版本號,第三列是庫,庫所在位置有“@”表示已安裝;“updates”表示已安裝,有新版本,需要升級;其他的表示可安裝但還未安裝的rpm包。

  • yum配置文件

[root@gaohanwei Packages]# ls /etc/yum.repos.d/CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Sources.repo  CentOS-fasttrack.repo
CentOS-CR.repo    CentOS-Media.repo      CentOS-Vault.repo
  • 配置文件base的信息

[root@gaohanwei Packages]# cat /etc/yum.repos.d/CentOS-Base.repo# CentOS-Base.repo#……[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7……

說明: 該文件下有rpm包所在庫base的鏡像地址信息!

搜索rpm包

  • 語法: yum search [關鍵詞]

[root@gaohanwei Packages]# yum search vimFailed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.tuna.tsinghua.edu.cn====================================== N/S matched: vim =============================
golang-vim.noarch : Vim plugins for Go
protobuf-vim.x86_64 : Vim syntax highlighting 
vim-minimal.x86_64 : A minimal version of the VIM editor

  Name and summary matches only, use "search all" for everything.

說明: 使用該命令搜索時會列出所有包含‘vim’(關鍵詞)的信息,不精確,為了只搜索相關rpm包,可用如下方法:

[root@gaohanwei Packages]# yum list |grep vim
Failed to set locale, defaulting to C
vim-common.x86_64                          2:7.4.160-1.el7_3.1         @updates vim-enhanced.x86_64                        2:7.4.160-1.el7_3.1         @updates vim-filesystem.x86_64                      2:7.4.160-1.el7_3.1         @updates vim-minimal.x86_64                         2:7.4.160-1.el7             @anaconda

說明: grep表示過濾。

列出rpm包組

  • 語法: yum grouplist

[root@gaohanwei Packages]# yum grouplist
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.tuna.tsinghua.edu.cn
Available Environment Groups:
   Minimal Install
   Compute Node……Available Groups:
   Compatibility Libraries   Console Internet Tools……Done

安裝rpm包

  • 語法: yum install [-y] [包名]

  • 說明: 如果不加‘-y’選項,則會以與用戶交互的方式安裝。首先是列出需要安裝的rpm包,然後會問用戶是否需要安裝,輸入‘y’則安裝,輸入‘n’則不安裝,這樣太麻煩,所以直接加上‘-y’選項,省略與用戶之間的交互。

安裝rpm包組

語法: yum groupinstall [-y] [包的組名] 如果不知道組名,可用yum grouplist查看(註:進行安裝時只能用英文名)。

卸載rpm包

  • 語法: yum remove [-y] [包名]

  • 說明: ‘-y’選項同install的用法,需要註意的是,在使用該命令進行卸載時會將目標文件所依賴的所有包同時刪除,所以要謹慎使用!

升級rpm包

  • 語法: yum update [-y] [包名]

  • 說明: 如果不加包名,則會升級系統內所有包以及系統本身(慎用,一般只在剛安裝完系統時使用)。

yum provides(該命令的作用是通過已知命令名稱來搜索其rpm包名。)

用法:

[root@gaohanwei Packages]# yum provides “/*/vim”

說明: 因為該命令位置不確定,所以進行搜索時使用‘*’(通配符)來代表其路徑。


7.1-7.4 軟件包安裝和卸載