rpm工具使用
如果在虚拟机上,先将光盘连接,然后挂载到系统中,一般我们都挂载到mnt下
首先,先查看一下mnt是否有挂载其他的设备
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 926M 27G 4% /
devtmpfs 485M 0 485M 0% /dev
tmpfs 495M 0 495M 0% /dev/shm
tmpfs 495M 6.8M 488M 2% /run
tmpfs 495M 0 495M 0% /sys/fs/cgroup
/dev/sda1 197M 97M 100M 50% /boot
tmpfs 99M 0 99M 0% /run/user/0
查看后发现没有挂载其他的设备,然后我们开始挂载,挂载的命令是mount
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
挂载完后他会有一个提示写保护,因为我们的光盘只能读取,不能写入。
然后我们到mnt目录下
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ll
总用量 1586
-rw-rw-r--. 3 root root 14 9月 5 21:25 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 9月 5 21:36 EFI
-rw-rw-r--. 3 root root 227 8月 30 22:33 EULA
-rw-rw-r--. 3 root root 18009 12月 10 2015 GPL
drwxr-xr-x. 3 root root 2048 9月 6 18:52 images
drwxr-xr-x. 2 root root 2048 9月 5 21:36 isolinux
drwxr-xr-x. 2 root root 2048 9月 5 21:36 LiveOS
drwxrwxr-x. 2 root root 1585152 9月 6 05:48 Packages
drwxrwxr-x. 2 root root 4096 9月 6 05:57 repodata
-rw-rw-r--. 3 root root 1690 12月 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 3 root root 1690 12月 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 9月 6 18:53 TRANS.TBL
然后发现里面有很多的目录和文件,我们安装系统的时候就是用的这些文件。其中有个目录是Packages
[root@localhost Packages]# ls | head -5
389-ds-base-1.3.6.1-16.el7.x86_64.rpm
389-ds-base-devel-1.3.6.1-16.el7.x86_64.rpm
389-ds-base-libs-1.3.6.1-16.el7.x86_64.rpm
389-ds-base-snmp-1.3.6.1-16.el7.x86_64.rpm
进入后发现这里面有很多的rpm文件,这就是rpm包
rpm包文件名有如下的特点,我们拿zziplib-0.13.62-5.el7.x86_64.rpm这个文件做例子,这个包名它是由符号“-”,符号“.”,数字,字符串组成。
首先,最前面的字符串叫包名,包名后面的符号“-”和数字组成包名的版本号,版本号中也包括主版本号,次版本号,修正版本号和发布版本号。后面的由x86和数字组成的是运行平台。其中64位可以安装32位的包,但是32位不能安装64位的包,最后是后缀名。
rpm包的使用方法
比如我们要安装zsh-5.0.2-28.el7.x86_64.rpm这个包
[root@localhost Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:zsh-5.0.2-28.el7 ################################# [100%]
其中,i表示install,v表示可视化,h表示更人性的可视化。
如果我们发现更高版本的话就要升级这个包,rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm,其中U是大写。
如果要卸载一个包,那么在rpm后面加 -e,后面直接加包名即可,不用输入包的文件名。
[root@localhost Packages]# rpm -e zsh-5.0.2-28.el7.x86_64.rpm
错误:未安装软件包 zsh-5.0.2-28.el7.x86_64.rpm
如果卸载错误,它就会出现提示。
[root@localhost Packages]# rpm -e zsh
正常卸载则不会出现提示。
查询安装的包
如果我们想查询当前系统系下安装的包,就输入命令rpm -qa
[root@localhost Packages]# rpm -qa | tail -5
alsa-tools-firmware-1.1.0-1.el7.x86_64
dmidecode-3.0-5.el7.x86_64
kbd-misc-1.15.5-13.el7.noarch
kbd-legacy-1.15.5-13.el7.noarch
kernel-3.10.0-693.el7.x86_64
所列出的就都是现在系统下所有的安装的包
然后我们就可以对某个包进行操作。
这里需要我们注意的是如果要卸载一个包,他会出现提示,某个包会被其他包所需要,也就是说你想卸载某个包,你就要卸载其他所需要的包。所以说rpm这个工具不是很方便。
我们也可以查指定的包是否安装,命令是rpm -q加包名
[root@localhost Packages]# rpm -q kbd
kbd-1.15.5-13.el7.x86_64
如果安装了,它就会显示这个包
[root@localhost Packages]# rpm -q ppp
未安装软件包 ppp
如果没有安装,它就会提示为安装。
我们也可以查询指定包的信息,命令是rpm -qi,然后就会出现这个包的详细信息。
[root@localhost Packages]# rpm -qi kbd
Name : kbd
Version : 1.15.5
Release : 13.el7
Architecture: x86_64
Install Date: 2017年12月14日 星期四 21时59分09秒
Group : System Environment/Base
Size : 1380661
License : GPLv2+
Signature : RSA/SHA256, 2017年08月11日 星期五 00时56分40秒, Key ID 24c6a8a7f4a80eb5
Source RPM : kbd-1.15.5-13.el7.src.rpm
Build Date : 2017年08月02日 星期三 21时09分13秒
Build Host : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://ftp.altlinux.org/pub/people/legion/kbd
Summary : Tools for configuring the console (keyboard, virtual terminals, etc.)
Description :
The kbd package contains tools for managing a Linux
system‘s console‘s behavior, including the keyboard, the screen
fonts, the virtual terminals and font files.
我们也可以查询这个包安装的文件,比如我们安装了一个rpm包,那这个包会帮助我们安装那些文件呢?就通过命令rpm -ql加包名来查询。
[root@localhost 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
通过查询,我们可以发现vim-enhanced这个包安装了这些文件。
也可以通过文件的绝对路径去查询这时由哪个包安装的,命令是rpm -qf。
比如vim这个名命令,它的路径是/usr/bin/vim,然后我们反向查询
[root@localhost Packages]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-2.el7.x86_64
然后我们就可以发现,vim命令是由vim-enhanced-7.4.160-2.el7.x86_64来安装的。
这里有一个很实用命令 ""反引号,如果我们不知道这个命令的路径,那么我们可以通过
反引号来查询
[root@localhost Packages]# rpm -qf which cd
bash-4.2.46-28.el7.x86_64
查询结果是cd这个命令是有bash这个包安装的,但是which查询命令输出的结果必须是一行,如果两行则查不出结果,不如ls这个命令,它which的结果是[root@localhost Packages]# which ls
alias ls=‘ls --color=auto‘
/usr/bin/ls
我们不能以两行作为参数,那么rpm -qf就不能显示出结果
[root@localhost Packages]# rpm -qf which ls
rpm: --color=auto‘: 未知的选项
如果出现这种情况,我们只能先查询路径,然后再查询。
yum工具
rpm工具在安装包时会出现一种情况,你安装一个包时他会提示安装替他依赖的包,比较麻烦。但是yum工具不会,他会自动的去安装你需要的包和其他依赖的包,这就是yum的优势。
如果我们想查看那些rpm包可以安装,输入命令yum list可以列出可用的rpm包。
[root@localhost Packages]# yum list
zlib.i686 1.2.7-17.el7 base
zlib-devel.i686 1.2.7-17.el7 base
zlib-devel.x86_64 1.2.7-17.el7 base
zlib-static.i686 1.2.7-17.el7 base
zlib-static.x86_64 1.2.7-17.el7 base
zsh.x86_64 5.0.2-28.el7 base
zsh-html.x86_64 5.0.2-28.el7 base
zziplib.i686 0.13.62-5.el7 base
zziplib.x86_64 0.13.62-5.el7 base
zziplib-devel.i686 0.13.62-5.el7 base
zziplib-devel.x86_64 0.13.62-5.el7 base
zziplib-utils.x86_64 0.13.62-5.el7 base
最左侧是包名加相关信息,中间这一列是版本号和平台版本号,最后这一列是仓库名字。
仓库名是哪里来的呢?我们可以看一下yum的配置文件,/etc/yum.repos.d/
[root@localhost Packages]# ll /etc/yum.repos.d/
总用量 28
-rw-r--r--. 1 root root 1664 8月 30 23:53 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 8月 30 23:53 CentOS-CR.repo
-rw-r--r--. 1 root root 649 8月 30 23:53 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 8月 30 23:53 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 8月 30 23:53 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 8月 30 23:53 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 8月 30 23:53 CentOS-Vault.repo
其中最核心的配置文件是第一个-rw-r--r--. 1 root root 1664 8月 30 23:53 CentOS-Base.repo
我们查看一下这个文件
[root@localhost Packages]# cat /etc/yum.repos.d/CentOS-Base.repo
#
#
#
#
[base](rpm包的仓库名)
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
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[base](rpm包的仓库名)
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/
我们可以通过这个网址,找到所需要的rpm包。
我们也可以搜索一个包,命令是yum search,比如我们要搜索vim这个包
[root@localhost Packages]# yum search vim
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
updates: mirror.bit.edu.cn
================================================================== N/S matched: vim ==================================================================
protobuf-vim.x86_64 : Vim syntax highlighting for Google Protocol Buffers descriptions
vim-X11.x86_64 : The VIM version of the vi editor for the X Window System
vim-common.x86_64 : The common files needed by any version of the VIM editor
vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements
vim-filesystem.x86_64 : VIM filesystem layout
vim-minimal.x86_64 : A minimal version of the VIM editor
名称和简介匹配 only,使用“search all”试试
他可以搜索出很多和vim有关的包。但是这种搜不是很精确,如我们想精确的搜索,可以通过grep来过滤
[root@localhost Packages]# yum list |grep ‘vim‘
vim-common.x86_64 2:7.4.160-2.el7 @base
vim-enhanced.x86_64 2:7.4.160-2.el7 @base
vim-filesystem.x86_64 2:7.4.160-2.el7 @base
vim-minimal.x86_64 2:7.4.160-2.el7 @anaconda
protobuf-vim.x86_64 2.5.0-8.el7 base
vim-X11.x86_64 2:7.4.160-2.el7 base
这样就可以精确的搜索我们想要的了
安装yum包,命令是yum install -y(加-y可以不用询问),比如我们要安装zip这个命令
[root@localhost Packages]# yum install -y zip
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
依赖关系解决
正在安装:
zip x86_64 3.0-11.el7 base 260 k
安装 1 软件包
总下载量:260 k
安装大小:796 k
Downloading packages:
zip-3.0-11.el7.x86_64.rpm | 260 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : zip-3.0-11.el7.x86_64 1/1
验证中 : zip-3.0-11.el7.x86_64 1/1
已安装:
zip.x86_64 0:3.0-11.el7
完毕
这样就安装完成了。
我们也可以查询可用的组,命令是yum grouplist
[root@localhost Packages]# yum grouplist
已加载插件:fastestmirror
没有安装组信息文件
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
能安装,就能卸载。yum照比rpm的优势就是可以帮你安装和卸载依赖包,那么yum的卸载命令就是就是yum remove,这是一个很危险的操作,因为你卸载一个包,那么其他的依赖包yum也一并给你卸载了,会影响我们的使用。所以我们要谨慎使用。
[root@localhost Packages]# yum remove vim
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package vim-enhanced.x86_64 2:7.4.160-2.el7 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
Removing:
vim-enhanced x86_64 2:7.4.160-2.el7 @base 2.2 M
Remove 1 Package
Installed size: 2.2 M
Is this ok [y/N]:
yum也可以去升级一个包,命令是yum update,如果我们不加包名,他会默认把所有的包都升级,也会将你的系统升级到最新的版本。不仅仅是系统,还有内核也会升级。这个操作我们会在刚安装完系统时去操作,如果系统已经运行了一些服务,安装了一些环境,就不要去操作了,会出现问题。
我们也可以通过去搜有一个命令,然后决定用哪一个包,命令是yum provides “/*/命令”,比如我们要搜vim这个命令
yum搭建本机仓库
有时候我们在安装好centos后没有联网,所以就不能用在线的yum工具,所以这时候我们要建立一个本地的yum仓库来供我们使用。使用这个的前提是你要有一个光驱,一个光盘,一个镜像文件,将这个光驱挂在。
首先先挂载镜像在mnt下,然后将repos中的rpm包作为本地的仓库。首先我们先备份一些文件
[root@localhost ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
然后进入到yum.repos.d目录
[root@localhost ~]# cd /etc/yum.repos.d
备份后要将yum.repos.d中的文件删除。
[root@localhost yum.repos.d]# ll
总用量 28
-rw-r--r--. 1 root root 1664 8月 30 23:53 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 8月 30 23:53 CentOS-CR.repo
-rw-r--r--. 1 root root 649 8月 30 23:53 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 8月 30 23:53 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 8月 30 23:53 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 8月 30 23:53 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 8月 30 23:53 CentOS-Vault.repo
[root@localhost yum.repos.d]# \rm ./*
然后创建一个dvd.repo,里面输入一下内容
[root@localhost yum.repos.d]# vi ded.repo
[dvd] (仓库名)
name=install dvd (自定义描述,基本没啥用)
baseurl=file:///mnt (rpm包的地址)
enable=1 (是否可用,1为可用,0为不可用)
gpcheck=0 (是否检测,1为检测,0为不检测)
然后保存退出
然后进行一个缓存清除操作
[root@localhost yum.repos.d]# yum clean all
然后我们再打开yum的列表查看
[root@localhost yum.repos.d]# yum list(由于篇幅问题这里只显示部分)
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
已安装的软件包
GeoIP.x86_64 1.5.0-11.el7 @anaconda
NetworkManager.x86_64 1:1.8.0-9.el7 @anaconda
NetworkManager-libnm.x86_64 1:1.8.0-9.el7 @anaconda
NetworkManager-team.x86_64 1:1.8.0-9.el7 @anaconda
NetworkManager-tui.x86_64 1:1.8.0-9.el7 @anaconda
NetworkManager-wifi.x86_64 1:1.8.0-9.el7 @anaconda
acl.x86_64 2.2.51-12.el7 @anaconda
zziplib.i686 0.13.62-5.el7 dvd
zziplib.x86_64 0.13.62-5.el7 dvd
zziplib-devel.i686 0.13.62-5.el7 dvd
zziplib-devel.x86_64 0.13.62-5.el7 dvd
zziplib-utils.x86_64 0.13.62-5.el7 dvd
其中@anaconda是已安装的程序,而dvd是可以安装的程序。
然后我们来安装一个软件
[root@localhost yum.repos.d]# yum install GConf2
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 GConf2.x86_64.0.3.2.6-8.el7 将被 安装
--> 正在处理依赖关系 /usr/bin/killall,它被软件包 GConf2-3.2.6-8.el7.x86_64 需要
--> 正在检查事务
---> 软件包 psmisc.x86_64.0.22.20-15.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
正在安装:
GConf2 x86_64 3.2.6-8.el7 dvd 1.0 M
为依赖而安装:
psmisc x86_64 22.20-15.el7 dvd 141 k
安装 1 软件包 (+1 依赖软件包)
总计 16 MB/s | 1.1 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : psmisc-22.20-15.el7.x86_64 1/2
正在安装 : GConf2-3.2.6-8.el7.x86_64 2/2
验证中 : psmisc-22.20-15.el7.x86_64 1/2
验证中 : GConf2-3.2.6-8.el7.x86_64 2/2
已安装:
GConf2.x86_64 0:3.2.6-8.el7
作为依赖被安装:
psmisc.x86_64 0:22.20-15.el7
完毕!
这样就安装好了,这样方便我们用本地的光盘去作为他的仓库,很方便的去安装它依赖的包。
原文地址:http://blog.51cto.com/13067688/2082886