Linux rpm包及yum工具简介
发布时间:2016-12-30 10:41:34 来源:51推一把
【摘要】在windows下安装一个软件很轻松,只要双击.exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件似乎并不那么轻松了,因为我们不是在图形界面下。所以你要学会如何在linux下安装一个软件。
yum是Redhat所特有的安装RPM程序包的工具,使用起来相当方便。因为使用RPM安装某一个程序包有可能会因为该程序包依赖另一个程序包而无法安装。而使用yum工具就可以连同依赖的程序包一起安装。当然CentOS同样可以使用yum工具,而且在CentOS中你可以免费使用yum,但Redhat中只有当你付费后才能使用yum,默认是无法使用yum的。
#RPM工具
RPM是”Redhat Package Manager”的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
如果你的光驱中还有系统安装盘的话,你可以通过”mount /dev/cdrom /mnt”命令把光驱挂载到/mnt目录下,那么你会在/mnt/CentOS目录下看到很多.rpm的文件,这就是RPM包了。
每一个rpm包的名称都由”-“和”.”分成了若干部分。
就拿 a2ps-4.13b-57.2.el5.i386.rpm 这个包来解释一下,a2ps 为包名;4.13b则为版本信息;57.2.el5为发布版本号;i386为运行平台。
其中运行平台常见的有i386, i586, i686, x86_64 ,需要你注意的是cpu目前是分32位和64位的,i386,i586和i686都为32位平台,x86_64则代表为64位的平台。
另外有些rpm包并没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。
例如 alacarte-0.10.0-1.fc6.noarch.rpm 。
#rpm常用的命令
1)安装一个rpm包
eg:rpm -ivh alacarte-0.10.0-1.fc6.noarch.rpm
-i :安装的意思
-v :可视化
-h :显示安装进度
另外在安装一个rpm包时常用的附带参数有:
--force 强制安装,即使覆盖属于其他包的文件也要安装
--nodeps 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包
2)升级一个rpm包
rpm -Uvh filename -U :即升级的意思
3)卸载一个rpm包
rpm -e filename 这里的filename是通过rpm的查询功能所查询到的,稍后会作介绍。
ps:卸载时后边跟的filename和安装时的是有区别的。
4)查询一个包是否安装
rpm -q rpm包名(这里的包名,是不带有平台信息以及后缀名的)
eg: rpm -qa | grep alacarte #列出包含alacarte的安装包名称
如果加上了平台信息以及后缀名反而不能查出来。你还可以查询当前系统中所安装的所有rpm包。
eg:rpm -qa |head #显示前十个安装包
5)得到一个rpm包的相关信息
rpm -qi 包名 (同样不需要加平台信息与后缀名)
6)列出一个rpm包安装的文件
rpm -ql 包名
eg:rpm -ql vim-enhanced-7.0.109-6.el5
通过上面的命令可以看出vim是通过安装vim-enhanced-7.0.109-6.el5这个rpm包得来的。那么反过来如何通过一个文件去查找是由安装哪个rpm包得来的?
7)列出某一个文件属于哪个rpm包
rpm -qf 文件的绝对路径
eg:rpm -qf /usr/bin/vim
vim-enhanced-7.0.109-6.el5
前面讲过如何查找一个文件(可执行命令)的绝对路径
#which vim
所以你也可以把这两条命令连起来写
#rpm -qf `which vim`
vim-enhanced-7.0.109-6.el5
看到了吗,which vim 这条命令是由两个反引号引起来的,这代表引用反引号里面的命令所产生的结果。
#yum工具
介绍完rpm工具后,还需要你掌握最常用的yum工具,这个工具比rpm工具好用多了,当然前提是你使用的linux系统是支持yum的。yum最大的优势在于可以联网去下载所需要的rpm包,
然后自动安装,在这个工程中如果要安装的rpm包有依赖关系,yum会帮你解决掉这些依赖关系依次安装所有rpm包。
1)列出所有可用的rpm包
#yum list | head -n 15 显示前15个包信息
从上例中可以看到有”mirrors.163.com”信息出现,这是在告诉用户,它是从mirrors.163.com这里下载到的rpm包资源。
如果你使用的是CentOS则你可以从/etc/yum.repos.d/CentOS-Base.repo这个文件下看到相关的配置信息。
从上面的例子中你还可以看到最左侧是rpm包名字,中间是版本信息,最右侧是安装信息,
如果安装了就显示installed,
未安装则显示base或者extras,
如果是该rpm包已安装但需要升级则显示updates。
2)搜索一个rpm包 “yum search [相关关键词]”
#yum search vim
#yum list | grep vim 利用grep来过滤
第二种方式的显示列表更简明。
3)安装一个rpm包 “yum install [-y] [rpm包名]”
如果不加-y选项,则会以与用户交互的方式安装,首先是列出需要安装的rpm包信息,然后会问用户是否需要安装,输入y则安装,输入n则不安装。
4)卸载一个rpm包 “yum remove [-y] [rpm包名]”
卸载和安装一样,你也可以直接加上-y选项来省略掉和用户交互的步骤。卸载某个rpm包一定要看清楚了,不要连其他重要的rpm包一起卸载了,以免影响正常的业务。
5)升级一个rpm包 “yum update [-y] [rpm包]”
#使用本地的光盘来制作一个yum源
有时候你的linux系统不能联网,当然就不能很便捷的使用联网的yum源了,这时候就需要你自己会利用linux系统光盘制作一个yum源。
具体步骤如下:
a.挂载光盘
[root@fortest Server]# mount -t iso9660 -o loop /dev/cdrom /mnt
b.删除/etc/yum.repos.d目录所有的repo文件
[root@fortest Server]# rm -rf /etc/yum.repos.d/*
c.创建新文件dvd.repo
[root@fortest Server]# vim /etc/yum.repos.d/dvd.repo
加入以下内容:
[dvd]
name=install dvd
baseurl=file:///mnt
enabled=1
gpgcheck=0
d.刷新repos,生成缓存
[root@fortest Server]#yum makecache
然后就可以使用yum命令安装你所需要的软件包了
#利用yum工具下载一个rpm包
有时,我们需要下载一个rpm包,只是下载下来,拷贝给其他机器使用,前面也介绍过yum安装rpm包的时候,首先得下载这个rpm包然后再去安装,所以使用yum完全可以做到只下载而不安装。
a. 首选要安装 yum-downloadonly
# yum install -y yum-downloadonly.noarch
b. 下载一个rpm包而不安装
# yum install test.rpm -y --downloadonly //这样虽然下载了,但是并没有保存到我们想要的目录下,那么如何指定目录呢?
c. 下载到指定目录
# yum install test.rpm -y --downloadonly --downloaddir=/usr/local/src
#RPM工具
RPM是”Redhat Package Manager”的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。
如果你的光驱中还有系统安装盘的话,你可以通过”mount /dev/cdrom /mnt”命令把光驱挂载到/mnt目录下,那么你会在/mnt/CentOS目录下看到很多.rpm的文件,这就是RPM包了。
每一个rpm包的名称都由”-“和”.”分成了若干部分。
就拿 a2ps-4.13b-57.2.el5.i386.rpm 这个包来解释一下,a2ps 为包名;4.13b则为版本信息;57.2.el5为发布版本号;i386为运行平台。
其中运行平台常见的有i386, i586, i686, x86_64 ,需要你注意的是cpu目前是分32位和64位的,i386,i586和i686都为32位平台,x86_64则代表为64位的平台。
另外有些rpm包并没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。
例如 alacarte-0.10.0-1.fc6.noarch.rpm 。
#rpm常用的命令
1)安装一个rpm包
eg:rpm -ivh alacarte-0.10.0-1.fc6.noarch.rpm
-i :安装的意思
-v :可视化
-h :显示安装进度
另外在安装一个rpm包时常用的附带参数有:
--force 强制安装,即使覆盖属于其他包的文件也要安装
--nodeps 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包
2)升级一个rpm包
rpm -Uvh filename -U :即升级的意思
3)卸载一个rpm包
rpm -e filename 这里的filename是通过rpm的查询功能所查询到的,稍后会作介绍。
ps:卸载时后边跟的filename和安装时的是有区别的。
4)查询一个包是否安装
rpm -q rpm包名(这里的包名,是不带有平台信息以及后缀名的)
eg: rpm -qa | grep alacarte #列出包含alacarte的安装包名称
如果加上了平台信息以及后缀名反而不能查出来。你还可以查询当前系统中所安装的所有rpm包。
eg:rpm -qa |head #显示前十个安装包
5)得到一个rpm包的相关信息
rpm -qi 包名 (同样不需要加平台信息与后缀名)
6)列出一个rpm包安装的文件
rpm -ql 包名
eg:rpm -ql vim-enhanced-7.0.109-6.el5
通过上面的命令可以看出vim是通过安装vim-enhanced-7.0.109-6.el5这个rpm包得来的。那么反过来如何通过一个文件去查找是由安装哪个rpm包得来的?
7)列出某一个文件属于哪个rpm包
rpm -qf 文件的绝对路径
eg:rpm -qf /usr/bin/vim
vim-enhanced-7.0.109-6.el5
前面讲过如何查找一个文件(可执行命令)的绝对路径
#which vim
所以你也可以把这两条命令连起来写
#rpm -qf `which vim`
vim-enhanced-7.0.109-6.el5
看到了吗,which vim 这条命令是由两个反引号引起来的,这代表引用反引号里面的命令所产生的结果。
#yum工具
介绍完rpm工具后,还需要你掌握最常用的yum工具,这个工具比rpm工具好用多了,当然前提是你使用的linux系统是支持yum的。yum最大的优势在于可以联网去下载所需要的rpm包,
然后自动安装,在这个工程中如果要安装的rpm包有依赖关系,yum会帮你解决掉这些依赖关系依次安装所有rpm包。
1)列出所有可用的rpm包
#yum list | head -n 15 显示前15个包信息
从上例中可以看到有”mirrors.163.com”信息出现,这是在告诉用户,它是从mirrors.163.com这里下载到的rpm包资源。
如果你使用的是CentOS则你可以从/etc/yum.repos.d/CentOS-Base.repo这个文件下看到相关的配置信息。
从上面的例子中你还可以看到最左侧是rpm包名字,中间是版本信息,最右侧是安装信息,
如果安装了就显示installed,
未安装则显示base或者extras,
如果是该rpm包已安装但需要升级则显示updates。
2)搜索一个rpm包 “yum search [相关关键词]”
#yum search vim
#yum list | grep vim 利用grep来过滤
第二种方式的显示列表更简明。
3)安装一个rpm包 “yum install [-y] [rpm包名]”
如果不加-y选项,则会以与用户交互的方式安装,首先是列出需要安装的rpm包信息,然后会问用户是否需要安装,输入y则安装,输入n则不安装。
4)卸载一个rpm包 “yum remove [-y] [rpm包名]”
卸载和安装一样,你也可以直接加上-y选项来省略掉和用户交互的步骤。卸载某个rpm包一定要看清楚了,不要连其他重要的rpm包一起卸载了,以免影响正常的业务。
5)升级一个rpm包 “yum update [-y] [rpm包]”
#使用本地的光盘来制作一个yum源
有时候你的linux系统不能联网,当然就不能很便捷的使用联网的yum源了,这时候就需要你自己会利用linux系统光盘制作一个yum源。
具体步骤如下:
a.挂载光盘
[root@fortest Server]# mount -t iso9660 -o loop /dev/cdrom /mnt
b.删除/etc/yum.repos.d目录所有的repo文件
[root@fortest Server]# rm -rf /etc/yum.repos.d/*
c.创建新文件dvd.repo
[root@fortest Server]# vim /etc/yum.repos.d/dvd.repo
加入以下内容:
[dvd]
name=install dvd
baseurl=file:///mnt
enabled=1
gpgcheck=0
d.刷新repos,生成缓存
[root@fortest Server]#yum makecache
然后就可以使用yum命令安装你所需要的软件包了
#利用yum工具下载一个rpm包
有时,我们需要下载一个rpm包,只是下载下来,拷贝给其他机器使用,前面也介绍过yum安装rpm包的时候,首先得下载这个rpm包然后再去安装,所以使用yum完全可以做到只下载而不安装。
a. 首选要安装 yum-downloadonly
# yum install -y yum-downloadonly.noarch
b. 下载一个rpm包而不安装
# yum install test.rpm -y --downloadonly //这样虽然下载了,但是并没有保存到我们想要的目录下,那么如何指定目录呢?
c. 下载到指定目录
# yum install test.rpm -y --downloadonly --downloaddir=/usr/local/src