赞
踩
yum在线管理
rpm包的管理分为 rpm命令管理和yum在线管理,rpm命令管理由于可能需要解决各种依赖问题,在安装软件的时候可能显得比较麻烦,然而,yum在线管理正好和它相反。Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。SO,SO,SO它用起来是相当的方便,特别适合初学者使用。 不过yum的安装源可以是网上的,也可以是光盘上的呢,要是我们使用网络上的yum源,那么,这些yum源来自于哪里呢?在我们的/etc/yum.repo.d/目录下,我们可以看到我们可以使用的yum源,如果/etc/yum.repos.d/里的所有文件不改动,默认启用网络yum源,如果把除CentOS-Media.repo以外的yum源暂时修改,并将CentOS-Media.repo里面的内容做下修改,就能启用本地光盘yum源
一般,只要我们的网络连通, 上面的yum源都是合法的yum源。一般在有网络的情况下,默认会从“Base”yum源中下载我们需要的rpm包以及各种依赖包进行自动安装,在没有网络的情况下,则会选择“Media”yum源——本地光盘yum源.
/etc/yum.repos.d/
CentOS-Base.repo
CentOS-Debuginfo.repo
CentOS-Media.repo
CentOS-Vault.repo
其中CentOS-Base.repo用于网络yum源的配置
CentOS-Media.repo 用于光盘yum源的配置
除了上面的方法外,我们还可以自己手动写一个yum源配置,方法十分的简单,首先我们要在 创建一个后缀为repo的文件,至于这个文件的名字,我们可以自己随意起名,比如我起的名字是:
[root@CT71 ~]#vim locate.repo
接下来我们需要知道在这个文件里面都写什么东西:
[base] 容器名称,一定要放在[]里(必须写,一般第一个我们默认写成base)
name 容器说明,可以自己写(可以不写)
mirrorlist 镜像站点,可以注释掉(可以不写)
baseurl 我们yum源的地址。默认是centOS官方的yum源服务器,是可以使用的(必须写)
enabled 如果enabled=1或者不写,此容器都是生效的,enabled=0容器无效(默认是1)
gpgcheck 如果是1 则RPM数字证书生效,如果是0不生效
gpgkey 数字证书的公钥文件保存位置,不用管
enablegroups={1|0}开启组
failovermethod={roundrobin|priority}
roundrobin: 意为随机挑选,默认值
priority:按顺序访问
cost= 默认为1000
在上面的说明中,baseurl的值就是我们的yum源的路径,它不能识别空格,所以路径中有空格的要用“\”进行转译,我们所要获取的软件包都是从这个路径里面来的,由于yum的最大作用就是为了解决我们的依赖问题,所以在我们的路径打开后我们需要能够看到一个名字为repodata的目录,这里面记录的就是我们安装文件需要的依赖,要想repo可以使用,其实很简单,我们以一个简单的例子试下就知道了:
挂载光驱:
[root@CT71 yum.repos.d]#df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 4811976 47591224 10% /
/dev/sda3 52403200 339132 52064068 1% /app
/dev/sda1 1038336 172128 866208 17% /boot
/dev/sr0 8086368 8086368 0 100% /mnt/cdrom
[root@CT71 yum.repos.d]#
[root@CT71 yum.repos.d]#ll /mnt/cdrom/
total 1550
-rw-r--r--. 1 root root 14 Dec 5 2016 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 Dec 5 2016 EFI
-rw-r--r--. 1 root root 215 Dec 10 2015 EULA
-rw-r--r--. 1 root root 18009 Dec 10 2015 GPL
drwxr-xr-x. 3 root root 2048 Dec 5 2016 images
drwxr-xr-x. 2 root root 2048 Dec 5 2016 isolinux
drwxr-xr-x. 2 root root 2048 Dec 5 2016 LiveOS
drwxrwxr-x. 2 root root 1548288 Dec 5 2016 Packages
drwxrwxr-x. 2 root root 4096 Dec 5 2016 repodata
-rw-r--r--. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-7 ------------------------------------校验码
-rw-r--r--. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 Dec 5 2016 TRANS.TBL
1 [base]
2 name=my own yum
3 baseurl=file:///mnt/cdrom/
[root@CT71 yum.repos.d]#yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
repo id repo name status
base my own yum 9,363
repolist: 9,363
是不是感觉很简单,但是这样是有一个问题的,那就是我们无法对安装包进行各种验证,无法保证我们的安装包是安全的,也是是说我们需要对我们安装的包进行校验,校验,就是要验证包来源的合法性和完整性。这很重要,能够保证我们安装的软件没有被人修改过,我们上面做的那个小示例是没有进行校验的,是存在安全性问题的。
rpm包的校验是基于非对称加密方式的,通过秘钥对我们的软件包进行校验,如果人为的修改软件包,就无法针对秘钥验证成功手动验证方式我们参考rpm包管理。这里我们就说一下如何在域名配置中添加校验:
我们在上面的代码中有一个校验码,一般的yum仓库都会有这个校验码,用于我们在安装软件的时候进行校验。我们以一个小例子说明如何写这个repo:
1 [base]
2 name=my own yum
3 baseurl=file:///mnt/cdrom/
4 enable=1
5 gpgcheck=1
6 gpgkey=file:///mnt/cdrom/
这里面的gpgcheck就是打开软件校验,默认情况下是打开的,这里就是为了让大家看明白,gpgkey是我们的包校验码的地址(空格一样要进行转译),我写的依然是我上面挂载的光驱里面的,没毛病。我们在下面的图片中一样可以看到官方是如何写repo的。
我们在上面的图片中似乎还发现了变量。比如
r
e
l
e
a
s
e
v
e
r
,
releasever ,
releasever,basearch 这有什么用呢?最大的好处就是便于移植。
$releasever: 当前OS的发行版的主版本号
$arch: 平台, i386,i486,i586,x86_64等
$basearch:基础平台; i386, x86_64
YUM0−YUM9:自定义变量
这是变量代表的含义,要是我们的yum仓库就是按照平台路径进行存放的话,我们使用变量,无论什么仓库我们都不用再更改我们编写的仓库路径,它们自己都可以通过路径找到我们想要的软件包,很是方便的。
除了系统自带的repo和我们自己写的repo,我们也可以到一些镜像网站上去找,比如说阿里云的:http://mirrors.aliyun.com/repo/ 等。
我在上述的网站上下载了一个yum源,我们来看一下它们都写了什么:
# CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # # [base] name=CentOS-$releasever - Base - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-$releasever - Updates - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus gpgcheck=1 enabled=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib gpgcheck=1 enabled=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
除了手动设置repo外,其实我们也可以进行自动设置,设置命令如下:
yum-config-manager --add-repo= 源地址
例如:
yum-config-manager --add-repo=http://172.17.0.1/centos/6
[root@CT6 ~]# yum-config-manager --add-repo=http://172.17.0.1/centos/6 aded plugins: fastestmirror, refresh-packagekit adding repo from: http://172.17.0.1/centos/6 [172.17.0.1_centos_6] name=added from: http://172.17.0.1/centos/6 baseurl=http://172.17.0.1/centos/6 enabled=1 [root@CT6 ~]# cd /etc/yum. yum.conf yum.repos.d/ [root@CT6 ~]# cd /etc/yum.repos.d/ [root@CT6 yum.repos.d]# ls 172.17.0.1_centos_6.repo own.repo tmp [root@CT6 yum.repos.d]# vim 172.17.0.1_centos_6.repo 1 2 [172.17.0.1_centos_6] 3 name=added from: http://172.17.0.1/centos/6 4 baseurl=http://172.17.0.1/centos/6 5 enabled=1 6 ~
从上面我们可以看出了,自动设置的话,文件名和repo里面的name也是自动设置的,感觉不是很好,但是也节省了一定的时间,我们也可是使用这个命令对repo仓库进行开启关闭:
yum-config-manager --disable “仓库名" 禁用仓库
yum-config-manager --enable “仓库名” 启用仓库
还有一种情况就是我们将很多的软件包搜集到一起来创建repo仓库,这样就有一个问题,仓库软件都有,但是不能解决依赖关系,因为依赖关系是记录咋repodata中的,这是我们可以执行一天命令来创建依赖关系:
[root@CT6 ~]# createrepo /app/packages/
Spawning worker 0 with 120 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
yum -y update 包名
检查可用升级:
yum check-update
yum downgrade package [降级]
要是yum -y update后面没有跟包名,那就意味着所有的东西都会升级,包括内核。可是有时候内核需要在本地进行一定的配置才能使用,如果在远程执行这样的命令,可能无论如何都链接不上,只能让在本地的人配置后才能使用,这样就非常的麻烦。
yum -y remove | erase 包名
按照安装的顺序进行卸载a>b>c
这样卸载是连依赖包一起给卸载掉的,但是要注意,这些依赖包也许不光这个软件本身依赖,还有可能系统也在依赖,所以,卸载后可能会造成系统崩溃,所以,安装的软件包,最好不要卸载。
yum info […]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1
[root@CT6 ~]# yum info httpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
Available Packages
Name : httpd
Arch : x86_64
Version : 2.2.15
Release : 59.el6.centos
Size : 834 k
Repo : 172.17.0.1_centos_6
Summary : Apache HTTP Server
URL : http://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
清理本地缓存:
清除/var/cache/yum/basearch/releasever缓存
yum clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]
我们使用最多的就是yum clean all
构建缓存
yum makecache
由于缓存清空后一般会自动建立,所以我们很少会用到这个命令
有时候我们不是从yum仓库安装的软件,而是在网上下载的软件包,这时候我们可以采用下面的命令,可以很好的解决安装本地程序包的依赖问题
yum localinstall rpmfile1 [rpmfile2] […]
(用install替代)
yum localupdate rpmfile1 [rpmfile2] […]
(用update替代)
yum中不仅有单个的RPM包可以安装,还可以安装软件组,比如 语言,桌面,等等都是一组软件,我们可以很方便的把一组软件安装上去,同时卸载的时候,也可以把这组软件都给卸载掉
yum grouplist
[可以查出所有可以安装的软件组]
yum groupinstall 软件包组
在安装的时候,如果软件组名字之间有空格一定要用“”包起来
yum groupupdate group1 [group2] […]
yum groupinfo group1 […]
[root@CT6 ~]# yum groupinfo "Web Server" Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Group Process Loading mirror speeds from cached hostfile Group: Web Server Description: Allows the system to act as a web server, and run Perl and Python web applications. Mandatory Packages: httpd Default Packages: crypto-utils httpd-manual mod_perl mod_ssl mod_wsgi webalizer Optional Packages: certmonger libmemcached memcached mod_auth_kerb mod_auth_mellon mod_auth_mysql mod_auth_pgsql mod_authnz_pam mod_authz_ldap mod_intercept_form_submit mod_lookup_identity mod_nss mod_revocator perl-CGI perl-CGI-Session perl-Cache-Memcached python-memcached squid
yum groupremove 软件包组
转载请标明出处:http://www.cnblogs.com/duzhaoqi/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。