您的位置:首页 > 其它

RHEL6基础二十二之RHEL软件包管理②yum

2013-11-01 15:18 197 查看

YUM介绍和配置本地YUM源
[strong]简介[/strong]yum(全称为 Yellow dog Updater, Modified)是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,并且可以同时配置多个资源库Repository(/etc/yum.repo.d目录下),全局配置文件(/etc/yum.conf)简洁,使用起来很方便。 [strong][/strong]


1.安装软件包:
yum install package            #安装指定软件,eg:yum install httpd;yum -y install otrs-6.0.9-01.noarch.rpm  自动安装依赖包

                                            #参数--downloadonly   只下,yum install --downloadonly <package-name>,下载的RPM包默认保存在下面的目录中:/var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages;[repository]表示下载包的来源仓库的名称(例如:base、fedora、updates)

                                            #参数--downloaddir=指定下载目录,yum install --downloadonly --downloaddir=/tmp <package-name>,如果下载的包包含了任何没有满足的依赖关系,yum将会把所有的依赖关系包下载,但是都不会被安装。

                                            #CentOS/RHEL 6或更早期的版本中,需要单独yum插件(yum install yum-plugin-downloadonly )

                                            #还有一个包下载工具yumdownloader,这个工具是yum工具包(包含了用来进行yum包管理的帮助工具套件)的子集。yum install yum-utils

                                            #yumdownloader <package-name>    下载的包会被保存在当前目录中。你需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件。与yum命令不同的是,任何依赖包不会被下载。
                                             #yumdownloader lsof --resolve --destdir=/data/mydepot/  #resolve下载依赖

yum localinstall package     #从本机目录安装软件包, --nogpgcheck 参数来禁止检查gpg签名(例如提示NOKEY),eg:yum localinstall VirtualBox-3.1-3.1.0_55467_fedora12-1.i686.rpm

yum groupinstall group         #安装某个组件的全部软件包,eg:yum groupinstall "Games and Entertainment"

2.更新软件包:
yum update                     #更新所有可更新的软件包

yum update package            #更新指定包,eg:yum update kernel;yum update mysql*

yum check-update             #列出所有可更新的软件包

yum list updates mysql*     #查找mysql的更新

yum groupupdate group         #更新某个组件的所有软件包
 
3.删除软件包:
yum remove package            #删除软件,eg:yum remove httpd

yum groupremove group         #删除某个组件的全部软件包

4.清除软件包
yum clean packages             #清除遗留在缓存里的包文件

yum clean metadata             #清除遗留在缓存里的元数据

yum clean headers             #清除遗留在缓存里的头文件

yum clean oldheaders          #清除暂存中旧的rpm头文件

yum clean all                 #清除暂存中旧的rpm头文件和包文件(相当于yum clean packages + yum clean oldheaders)

5.搜索软件包:

yum replist bash        #查看程序的依赖程序

yum info                      #列出资源库中所有可以安装或更新的rpm包的信息

yum info package             #查找一个软件包的信息,eg:yum info mozilla ;yum info mozilla*

yum list                     #列出所有已安装和仓库中可用的软件包

yum list package             #列出包含指定信息的软件包,g:yum list mozilla;yum list mozilla*

yum list installed             #列出已安装的软件包

yum list extras             #列出不是通过软件仓库安装的软件包

yum list updates             #列出可以更新的软件包

yum list recent             #列出新加入仓库的软件包

yum list available             #列出仓库中所有可用的软件包

yum grouplist                 #查找组列表

yum repolist enabled        #查看启用的仓库

yum repolist all             #查看所有的仓库

yum history                 #查看yum安装的历史

yum search package          #搜索匹配特定的rpm包,eg:yum search mozilla

yum provides filename        #查看特定文件属于哪个软件包 :yum provides "*/ifconfig"   yum provides /usr/sbin/semanage

yum whatprovides filename        #查找特定文件、模块等是由什么软件包提供的,eg:yum whatprovides httpd.conf

                                                     #查找Bundle::LWP模块需要的rpm包,yum whatprovides  */Bundle*L*


6.repo源管理

yum-config-manager工具在yum-utils里,默认系统最小化安装未安装这个工具,通过yum install yum-utils -y安装工具。

yum-config-manager –add-repo=“仓库路径”    # 添加仓库,eg:yum-config-manager --add-repo=https://openresty.org/package/centos/openresty.repo

yum-config-manager –disable “仓库名"              #禁用仓库

yum-config-manager –enable  “仓库名”            # 启用仓库


[strong]配置文件[/strong]yum的配置文件分为两部分:main和repository
main部分定义了全局配置选项,整个yum配置文件应该只有一个main。常位于/etc/yum.conf中。
repository部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d目录下的各文件中。/etc/yum.conf

cachedir=/var/cache/yum/$basearch/$releasever            yum下载文件的存放位置
keepcache=1                设置是否,保存1为保存 0为不保存metadata_expire=1800                设置过期时间pkgpolicy=newest
一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同 时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。tolerant=1
如果值为1,则yum会忽略任何的有关包的错误。举例来说,当执行yum来安装baz时,如果baz包已经安装在系统中了,则yum会继续重复安装baz,而不会报错。默认值为1。
exactarch=1
设置为1,则yum只会安装和系统架构匹配的软件包,例如,yum不会将i686的软件包安装在适合i386的系统中。默认为1/etc/yum.repo.d在/etc/yum.repo.d目录下会发现一些后缀是.repo的文件,这些文件都是官方源的repo文件

[root@justin yum.repos.d]# ls
packagekit-media.repo  rhel-source.repo
[root@justin yum.repos.d]#

[strong]查看yum是否安装(RHEL6系列默认在安装系统时候就已经安装了)[/strong]

[root@justin ~]# rpm -q yum
yum-3.2.29-30.el6.noarch
[root@justin ~]#


如果系统没有安装可以挂载安装盘手动安装

[root@justin ~]# mount /dev/cdrom /mnt/cdroom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@justin ~]# cd /mnt/cdroom/Packages/
[root@justin Packages]# ls | grep yum
anaconda-yum-plugins-1.0-5.1.el6.noarch.rpm
kabi-yum-plugins-1.0-2.el6.noarch.rpm
PackageKit-yum-0.5.8-20.el6.i686.rpm
PackageKit-yum-plugin-0.5.8-20.el6.i686.rpm
yum-3.2.29-30.el6.noarch.rpm
yum-metadata-parser-1.1.2-16.el6.i686.rpm
yum-plugin-aliases-1.1.30-14.el6.noarch.rpm
yum-plugin-changelog-1.1.30-14.el6.noarch.rpm
yum-plugin-downloadonly-1.1.30-14.el6.noarch.rpm
yum-plugin-security-1.1.30-14.el6.noarch.rpm
yum-plugin-tmprepo-1.1.30-14.el6.noarch.rpm
yum-plugin-verify-1.1.30-14.el6.noarch.rpm
yum-plugin-versionlock-1.1.30-14.el6.noarch.rpm
yum-presto-0.6.2-1.el6.noarch.rpm
yum-rhn-plugin-0.9.1-40.el6.noarch.rpm
yum-utils-1.1.30-14.el6.noarch.rpm
[root@justin Packages]# rpm -ivh yum-3.2.29-30.el6.noarch.rpm


由于RHEL的yum在线更新是收费的,如果没有注册的话是不能使用的,即不能在线安装软件。在这种情况下,想使用RHEL系统,要么注册要么换用其他Yum源!

[strong]RHEL配置本地Yum源[/strong]

[root@justin yum.repos.d]# yum install php
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
Setting up Install Process
No package php available.
Error: Nothing to do
[root@justin yum.repos.d]#

挂载本地光盘使用mount发现无法挂载,提示没有发现介质

[root@justin ~]# mount /dev/cdrom /media/cdrom/
mount: No medium found

查看VMware:VM---setting---Hardware---CD/DVD--右边Device里勾选Connected;Connection里Use ISO image file里选择iso文件后确定即可
配置本地yum源

[root@justin cdrom]rpm --import RPM-GPG-KEY-redhat-legacy-release
[root@justin cdrom]rpm --import RPM-GPG-KEY-redhat-beta
[root@justin cdrom]# touch /etc/yum.repos.d/rhel-local.repo
[root@justin cdrom]# vim /etc/yum.repos.d/rhel-local.repo
[rhel-local]
name=Red Hat Enterprise Linux 6.3
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@justin cdrom]# yum clean all
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
Cleaning repos: InstallMedia rhel-local
Cleaning up Everything
[root@justin cdrom]#yum makecache

[rhel-local]为库名称,在使用yum安装软件时显示仓库源时就是显示该项,而不是rhel-local.repo中的rhel-local;如果要开启gpg验证,需要将光盘中自带的公钥RPM-GPG-KEY-redhat-legacy-release导入系统(通过rpm 导入系统后文件放在了/etc/pki/rpm-gpg/目录下),然后通过指定公钥地址 来和软件内部的私钥匹配,手动验证:rpm -K 软件全路径全称

[root@justin Packages]# rpm -K zlib-devel-1.2.3-27.el6.i686.rpm
zlib-devel-1.2.3-27.el6.i686.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#fd431d51)
[root@justin Packages]# rpm -K zlib-devel
error: zlib-devel: open failed: No such file or directory
[root@justin Packages]# cd
[root@justin ~]# rpm -K zlib-devel-1.2.3-27.el6.i686.rpm
error: zlib-devel-1.2.3-27.el6.i686.rpm: open failed: No such file or directory
[root@justin ~]# cd -
/media/Packages
[root@justin Packages]#

使用yum时,首先搜索的是repodata文件,所以指定yum源路径时指定到repodata所在的目录即可,如果只有RPM软件包可以通过createrepo命令将一个包含RPM文件的文件夹转换为yum的仓库,也就是生成repodata文件,该命令默认未安装。
baseurl中指定本地文件路径时使用的file:///实为file://+目录路径; enabled可不指定,默认为ebabled=1,即启用该库,0为不启用。
使用yum仓库出现的错误:nsufficient space in download directory /var/cache/yum/i386/6/c6-tong/packages 解决方法:

# df -h      --查看磁盘空间,空间已满 
文件系统             容量  已用  可用 已用%% 挂载点 
/dev/mapper/VolGroup-lv_root
      6.5G  6.1G    0 100% /      --根分区空间已满,清除文件 
tmpfs                504M    0  504M  0% /dev/shm
/dev/sda1            485M  46M  414M  10% /boot
/dev/sr0              3.6G  3.6G    0 100% /mnt
[root@node1 home]#


使用yum安装软件包出现进程占用[root@localhost src]# yum grouplist Loaded plugins: product-id, refresh-packagekit, security, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. Existing lock /var/run/yum.pid: another copy is running as pid 2395. Another app is currently holding the yum lock; waiting for it to exit...   The other application is: PackageKit     Memory :  53 M RSS (374 MB VSZ)     Started: Mon Dec 14 18:08:43 2015 - 02:04 ago     State  : Sleeping, pid: 2395 Another app is currently holding the yum lock; waiting for it to exit...   The other application is: PackageKit     Memory :  53 M RSS (374 MB VSZ)     Started: Mon Dec 14 18:08:43 2015 - 02:06 ago     State  : Sleeping, pid: 2395 Another app is currently holding the yum lock; waiting for it to exit...此时直接杀掉pid2395

[code=bash;toolbar:false">[root@localhost src]# ps -ef|grep 2395 root      2395  2393  0 18:08 ?        00:00:01 /usr/bin/python /usr/share/PackageKit/helpers/yum/yumBackend.py get-packages unknown root      2427  2399  0 18:11 pts/1    00:00:00 grep 2395 [root@localhost src]# kill -9 2395 [root@localhost src]# yum grouplist Loaded plugins: product-id, refresh-packagekit, security, subscription-manager This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register. Existing lock /var/run/yum.pid: another copy is running as pid 2395. Another app is currently holding the yum lock; waiting for it to exit... Another app is currently holding the yum lock; waiting for it to exit... Another app is currently holding the yum lock; waiting for it to exit... Another app is currently holding the yum lock; waiting for it to exit... [root@localhost src]# ps -ef|grep 2395 root      2395  2393  0 18:08 ?        00:00:01 [yumBackend.py] <defunct> root      2431  2399  0 18:11 pts/1    00:00:00 grep 2395 [root@localhost src]#

此时可以通过强制关掉yum进程:rm -rf /var/run/yum.pid

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: