1. 程式人生 > >安裝軟件包的三種方法rpm包rpm工具yum工具

安裝軟件包的三種方法rpm包rpm工具yum工具

ctu ever users quest ces use .rpm gpgcheck ora

7.1 安裝軟件包的三種方法

  • rpm工具
    rpm(Redhat Package Manager)RPM軟件包管理器,是以一種數據庫記錄的方式來將我們所需要的套件安裝到Linux主機的一套管理程序。rpm包是預先在Linux機器上編譯好並打包好的文件,安裝起來非常快捷。但是有一個缺點:安裝環境必須與編譯時的一致或相當;包與包之間存在著相互依賴的情況,安裝或卸載包時需要先把依賴的包安裝/卸載,如果依賴的包時系統所必須的,那就不能卸載這個包。
  • yum工具 yum命令是在Fedora和RedHat以及SUSE中基於rpm的軟件包管理器,它可以使系統管理人員交互和自動化地更細與管理RPM軟件包,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關系,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
  • 源碼包 Linux軟件的源代碼分發是指提供了該軟件所有程序源代碼的發布形式,需要用戶自己編譯成可執行的二進制碼並進行安裝。其優點是配置靈活,可以隨意去掉或保留某些功能/模塊,適應多種硬件/操作系統平臺及編譯環境;缺點是難度較大。

    7.2 rpm包介紹

先點VMware 右下角的光驅,點連接

[root@aminglinux-001 Packages]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/sda3 16G 1.4G 15G 9% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm

tmpfs 3.9G 8.6M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 197M 109M 88M 56% /boot
tmpfs 782M 0 782M 0% /run/user/0
/dev/sr0 4.1G 4.1G 0 100% /mnt
[root@aminglinux-001 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 寫保護,將以只讀方式掛載
[root@aminglinux-001 ~]# cd /mnt/
[root@aminglinux-001 mnt]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM- GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@aminglinux-001 mnt]# cd Packages/
[root@aminglinux-001 Packages]# ls
pm-utils-1.4.1-27.el7.x86_64.rpm
pnm2ppa-1.04-28.el7.x86_64.rpm
policycoreutils-2.5-8.el7.x86_64.rpm
policycoreutils-devel-2.5-8.el7.x86_64.rpm
policycoreutils-gui-2.5-8.el7.x86_64.rpm
......
(rpm包格式:包名、版本號、發布版本號、平臺)
rpm包在Packages文件下。

7.3 rpm 工具用法

安裝rpm包

語法: rpm [options] [參數]
Options:
-i:=install,安裝
-v:可視化
-h:顯示安裝進度
在安裝一個rpm包時常用附帶選項:
--force:強制安裝
--nodeps:=no dependent
無依賴安裝(忽視與其他包之間的依賴關系)

  • 安裝一個rpm包

[root@aminglinux-001 Packages]# rpm -ivh zziplib-0.13.62- 5.el7.x86_64.rpm
準備中... ################################# [100%]
正在升級/安裝...
1:zziplib-0.13.62-5.el7 ################################# [100%]

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


[root@aminglinux-001 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@aminglinux-001 Packages]# rpm -e x86info

    
  • 查詢rpm包
    查詢已安裝的包

語法:
rpm [-q] [包名] 查詢指定包
rpm [-qa] 查詢所有已安裝包

[root@aminglinux-001 Packages]# rpm -q kmod
kmod-20-9.el7.x86_64
#########################################
[root@aminglinux-001 Packages]# rpm -qa |head -5
trousers-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@aminglinux-001 Packages]# rpm -qi filesystem
Name : filesystem
Version : 3.2
Release : 21.el7
Architecture: x86_64
Install Date: Mon May 22 01:19:49 2017
Group : System Environment/Base
Size : 0
……
查詢某包所安裝的文件

語法:
rpm [-ql] [包名]
l=list

[root@aminglinux-001 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@aminglinux-001 Packages]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-1.el7_3.1.x86_64
反引號命令

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

[root@aminglinux-001 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@aminglinux-001 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@aminglinux-001 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@aminglinux-001 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=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
……
說明: 該文件下有rpm包所在庫base的鏡像地址信息!

  • 搜索rpm包
    語法: yum search [關鍵詞]

[root@aminglinux-001 Packages]# yum search vim
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
    ====================================== 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@aminglinux-001 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@aminglinux-001 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@aminglinux-001 Packages]# yum provides “//vim”
說明: 因為該命令位置不確定,所以進行搜索時使用‘’(通配符)來代表其路徑。

7.5 yum搭建本地倉庫

有時候Linux系統無法聯網,此時無法使用網上的yum源,需要我們利用Linux系統光盤制作一個yum源。
掛載光盤——刪除/etc/yum.repos.d/目錄所有repo文件——創建新文件dvd.repo——清除原有緩存‘yum clean all’。

[root@aminglinux-001 ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak 備份原.repo文件
[root@aminglinux-001 ~]# cd /etc/yum.repos.d 切換目錄
[root@aminglinux-001 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-fasttrack.repo
CentOS-CR.repo CentOS-Media.repo CentOS-Vault.repo
[root@aminglinux-001 yum.repos.d]# rm -rf ./*
刪除原有repo文件
[root@aminglinux-001 yum.repos.d]# vim dvd.repo

[dvd]
name=install dvd
baseurl=file:///mnt
enable=1
gpgcheck=0

此部分內容除baseurl目錄根據個人實際操作更改外,其余內容固定。

[root@aminglinux-001 yum.repos.d]# yum clean all
清除系統原有緩存
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Cleaning repos: dvd
Cleaning up everything
Cleaning up list of fastest mirrors
[root@aminglinux-001 ~]# yum list
……
Available Packages 還未安裝的可安裝rpm包的庫都變成dvd
ypserv.x86_64 2.31-8.el7 dvd
yum-langpacks.noarch 0.4.2-7.el7 dvd
yum-plugin-aliases.noarch 1.1.31-40.el7 dvd
yum-plugin-changelog.noarch 1.1.31-40.el7 dvd
yum-plugin-tmprepo.noarch 1.1.31-40.el7 dvd ……
配置完成後便可直接使用yum安裝所需要的rpm包。如果不想使用本地yum源,需要刪除/etc/yum.repos.d/dvd.repo文件,然後恢復原來的配置文件。

  • 擴展1:yum保留已經安裝過的包

可以設置使yum保留已經下載的rpm包,供以後升級或重新安裝時使用。 修改/etc/yum/conf即可:

[main] cachedir=/home/soft1/yumcache keepcache=1 debuglevel=2 cachedir是放置下載的包的地方,可以修改成自己想放置的位置。 keepcache為1時表示保存已經下載的rpm包。

  • 擴展2:yum局域網軟件源搭建

搭建Apache服務器或ftp服務器

yum安裝或二進制包安裝.

準備RPM包

把CentOS的DVD1和DVD2.iso都下載下來,把DVD1.iso裏的所有內容解壓出來,放到/var/www/html/centos-6目錄下,然後把DVD2.iso解壓出來的Packages目錄下的rpm包復制到/var/html/centos-6/Packages目錄下,這樣/var/html/centos-6/Packages裏面就有了6000多個rpm包。

創建yum倉庫

準備createrepo:yum -y install createrepo

創建repository:createrepo /var/www/html/centos-6/

創建完成之後,會在/var/www/html/centos-6/repodata下生成一些文件。

使用軟件源

在其他centos機器上試試軟件源能不能用。

首先修改機器上軟件源配置文件:

#cd /etc/yum.repos.d/
#mkdir bk
#mv *.repo bk/
#cp bk/CentOS-Base.repo ./
#vi CentOS-Base.repo
CentOS-Base.repo文件修改之後如下:

[base]
name=CentOS-$releasever - Base
baseurl=http://*.*.*.*/centos-6/
gpgcheck=1(改成0下面那行就不用設置了)
gpgkey=http:///*.*.*.*/centos-6/RPM-GPG-KEY-CentOS-6
enabled=1
#released updates
#[updates]
#name=CentOS-$releasever - Updates
#baseurl=http:///*.*.*.*/centos-6/
#gpgcheck=1
#gpgkey=http:///.../centos-6/RPM-GPG-KEY-CentOS-6 #enabled = 1

保存之後,就可以使用局域網的軟件源了:

#yum update
擴展

yum保留已經安裝過的包 http://www.360doc.com/content/11/0218/15/4171006_94080041.shtml
搭建局域網yum源 http://ask.apelearn.com/question/7627

安裝軟件包的三種方法rpm包rpm工具yum工具