上篇幅中我们讲述了rpm包管理器的使用命令以及使用演示方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时,所以我们今天来介绍一下rpm的前端工具yum。
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
检查yum程序包是否安装上使用命令,查看已经本机已经安装完成,并且在/etc/yum.repos.d目录下增加.repo文件。
[root@Corazon ~]# rpm -qa | grep "yum" yum-metadata-parser-1.1.2-16.el6.x86_64 yum-3.2.29-40.el6.centos.noarch yum-plugin-fastestmirror-1.1.30-14.el6.noarch
yum的配置文件分为两部分:
1)/etc/yum.conf # 其主要为所有仓库提供公共配置文件
2)/etc/yun.repos.conf/*.d # 其主要为仓库的指向提供配置
什么是repo文件?
repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我 们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!
[root@Corazon ~]# vi /etc/yum.repos.d/centos.repo [base] name=CentOS-$releasever - Base#$releasever变量定义了发行版本,通常是8,9,10等数字,$basearch变 量定义了系统的基础平台架构,可以是i386、x86_64、ppc等值,这两个变量根据当前系统的版本架构不同而有不同的取值,这可以方便yum升级的时候选择 适合当前系统的软件包 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os # 上面的这一行是指定一个镜像服务器的地址列表,mirrorlist和baseurl只是能启用一个,不启用可以#注释掉 #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ # 指向源的镜像服务器地址,可以跟多个镜像服务器地址,服务器可还有三种形式 ftp://# 链接ftp文件服务器 nfs:// # windows的ntf文件系统镜像服务器 file:///# Linux本地 failovermethod=priority #failovermethod 有两个值可以选择,priority是默认值,表示从列出的baseurl中顺序选择镜像服务器地址,roundrobin表示在列出的服务器中随机选择 enabled=1 #这个选项表示这个repo中定义的源是启用的,0为禁用 gpgcheck=1 #这个选项表示这个repo中下载的rpm将进行gpg的校验,已确定rpm包的来源是有效和安全的
我们自己来简单编写一份.repo文件,首先现将原centos.repo文件做好备份工作
然后在编写一份新的.repo文件如下:
[root@Corazon ~]# mv /etc/yum.repos.d/centos.repo /etc/yum.repos.d/centos.repo.bak [root@Corazon ~]# cd /etc/yum.repos.d/ [root@Corazon yum.repos.d]# vim centos.repo [root@Corazon yum.repos.d]#cat /centos.repo # [base] name=CentOS $releasever-Base baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ #使用的是阿里云的镜像源站点 enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 # 使用本地key进行校验
yum命令:
常用选项:
―nogpgcheck:禁止gpgcheck
-y:自动yes 确认
-q:静默模式,不输出任何消息
常用命令:
#yum list { all | glob_exp|acvailable|installed|updates} 可以根据多种类型进行显示
# yum repolist显示仓库列表
[root@Corazon yum.repos.d]# yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com repo id repo name status base CentOS-6 - Base - mirrors.aliyun.com 6,575 extras CentOS-6 - Extras - mirrors.aliyun.com 35 updates CentOS-6 - Updates - mirrors.aliyun.com 263 repolist: 6,873
构建缓存:
安装、升级、重装以及降级
# yum install python测试安装python,重装检查以及降级与安装大同小异
# yum reinstall python重新安装python
# yun update python检查python的升级包
# yum reupdate python对python进行降级
[root@Corazon ~]# yum install python Dependencies Resolved =========================================================================== Package Arch Version Repository Size =================================================================================== Updating: python x86_64 2.6.6-64.el6 base 76 k Updating for dependencies: python-libs x86_64 2.6.6-64.el6 base 5.3 M Transaction Summary ================================================================================== Upgrade 2 Package(s) Total download size: 5.4 M Is this ok [y/N]: Downloading Packages: (1/2): python-2.6.6-64.el6.x86_64.rpm | 76 kB 00:00 (2/2): python-libs-2.6.6-64.el6.x86_64.rpm | 5.3 MB 00:39 ------------------------------------------------------------------------------------------------------------------------------------ Total 138 kB/s | 5.4 MB 00:40 4/4 Updated: python.x86_64 0:2.6.6-64.el6 Dependency Updated: python-libs.x86_64 0:2.6.6-64.el6
Complete!
卸载程序包:
# yum remove python移除python程序包
[root@Corazon ~]# yum remove python Loaded plugins: fastestmirror Setting up Remove Process Resolving Dependencies --> Running transaction check ---> Package python.x86_64 0:2.6.6-64.el6 will be erased --> Processing Dependency: python(abi) = 2.6 for package: python-urlgrabber-3.9.1-9.el6.noarch --> Processing Dependency: python(abi) = 2.6 for package: python-pycurl-7.19.0-8.el6.x86_64 --> Processing Dependency: python(abi) = 2.6 for package: yum-3.2.29-40.el6.centos.noarch --> Processing Dependency: python(abi) = 2.6 for package: yum-metadata-parser-1.1.2-16.el6.x86_64
查看程序包的详细信息:
# yum info python 查看python程序包的信息
* base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Installed Packages Name : python Arch : x86_64 Version : 2.6.6 Release : 64.el6 Size : 78 k Repo : installed From repo : base Summary : An interpreted, interactive, object-oriented programming language URL : http://www.python.org/ License : Python Description : Python is an interpreted, interactive, object-oriented programming : language often compared to Tcl, Perl, Scheme or Java. Python includes : modules, classes, exceptions, very high level dynamic data types and : dynamic typing. Python supports interfaces to many system calls and : libraries, as well as to various windowing systems (X11, Motif, Tk, : Mac and MFC).
查看指定的特性(可以时某文件)是由哪个程序包所提供
# yum provides /bin/ls 查看ls命令是由哪个程序包所提供
[root@Corazon ~]# yum provides /bin/ls Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com coreutils-8.4-37.el6.x86_64 : A set of basic GNU tools commonly used in shell scripts Repo : base Matched from: Filename : /bin/ls coreutils-8.4-31.el6.x86_64 : A set of basic GNU tools commonly used in shell scripts Repo : installed Matched from: Other : Provides-match: /bin/ls
检查可用升级
# yum check-update pam查找pam是否有可用程序包
[root@Corazon ~]# yum check-update pam Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com pam.x86_64 1.1.1-20.el6_7.1 updates
构建缓存:
# yum makecache 构建元数据缓存
[root@Corazon ~]# yum makecache Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com base | 3.7 kB 00:00 base/group_gz | 219 kB 00:00 base/other_db | 2.8 MB 00:20 extras | 3.4 kB 00:00 extras/prestodelta | 601 B 00:00 extras/other_db | 30 kB 00:00 updates | 3.4 kB 00:00 updates/filelists_db | 993 kB 00:13 updates/prestodelta | 81 kB 00:01 updates/other_db | 15 MB 03:33 Metadata Cache Created [root@Corazon ~]#
查看事物历史:
# yum histroy
[root@Corazon ~]# yum history Loaded plugins: fastestmirror ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 11 | root <root> | 2015-08-30 22:01 | Update | 2 10 | root <root> | 2015-08-30 21:38 | Install | 1 9 | root <root> | 2015-08-20 02:21 | Install | 8 8 | root <root> | 2015-08-16 16:41 | Install | 1 7 | root <root> | 2015-08-16 16:38 | I, U | 4 6 | root <root> | 2015-08-16 16:00 | I, U | 12 5 | root <root> | 2015-08-16 07:11 | I, U | 2 4 | root <root> | 2015-08-16 06:54 | Install | 1 3 | root <root> | 2015-08-16 06:48 | I, U | 4 2 | root <root> | 2015-03-13 18:59 | Install | 9 1 | System <unset> | 2015-03-13 18:39 | Install | 209
history list yu
清理本地缓存:
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]# 可以根据自己需要进行选择清理缓存
包组管理的相关命令:
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
了解完yum其实不难发现,yum确实很智能,能自动安装并解决程序包之间的依赖关系问题,但是这样便捷的工具对于高端定制的需要来说还是远远不够的,Linux是GPL协议的开源系统,而Linux上的软件大多都是免费开放源代码的,而源代码的主要作用有两点
1、软件根据用户的需要加以定制;
2、二次开发;
所以我们有必须更必须了解手动编译定制自己需要的程序包,不是吗?
首 先我们在Linux系统中至少得把开发工具安装上,比如 gcc ;perl;python;glibc;gtk;make ;automake 等开发工具或基础包;
而我们可以通过安装开发工具包组解决这类问题。
# yum groupinstall “Development tools” “Server Platform Development”
大多是通过 三步骤来安装
./configure # 通过选项传递参数,指定启动特性、安装路径等
―help:获取器支持使用的选项
make # 检查依赖到的外部环境
make install # 最后一步安装
而有的软件是 两步骤来安装
make
make install
所以需要注意的是安装一定要阅读以下README或INSTALL文件!
编辑完成之后还不能正常使用还需要结合安装后的配置
1)到处二进制程序目录PATH环境变量中,可以在/etc/profile.d/目录下创建一个.sh结尾的脚本程序文件,在文件内添加内容
export= /PATH/TO/BIN:$PATH
2)导出库文件路径
在/etc/ld.so.conf/目录下创建一个以.conf配置文件 ,导出库文件路径
导入完成之后可以使用 ldconfig 让系统重新生成缓存
3) 导出头文件
基于链接方式实现
ln -sv
4)导出帮助书册
编辑/etc/man/config文件
添加一套MACPATH
完.
程序包管理器的内容全部分享结束,过几天还会给分享一下btrfs文件和磁盘管理相关的博文,欢迎批评!谢谢