• linux包之包管理rpm-yum


    背景
    
    YUM(Yellow dog Updater, Modified)为多个Linux发行版的前端软件包管理器,例如 Redhat RHEL, CentOS & Fedora.  YUM通过调用RPM的软件包信息让用户更方便地进行软件安装,升级,卸载等软件包管理操作。
    yum客户端采用python编写,采用sqlite存储

    rpm客户端采用c编写,采用bdb存储

    http://www.rpm.org/
    The RPM Package Manager (RPM) is a powerful command line driven package management system capable of installing, uninstalling, verifying, querying, and updating computer software packages.
    http://yum.baseurl.org/
    Yum Package Manager
    Yum is an automatic updater and package installer/remover for rpm systems.

    https://trac.edgewall.org/about
    Trac是基于web的软件项目管理和缺陷/事务追踪系统. 强调使用方便, 而不是其外在形式. 它提供了集成Wiki/版本控制系统界面, 以及更多方便的项目管理渠道, 来掌控项目的事件和变化.

    http://refspecs.linuxfoundation.org/lsb.shtm
    相关包及文件centos7

    [root@my yum.repos.d]# rpm -qa|grep yum yum-metadata-parser-1.1.4-10.el7.x86_64 yum-plugin-fastestmirror-1.1.31-29.el7.noarch yum-3.4.3-125.el7.centos.noarch

    [root@my yum.repos.d]# rpm -qa|grep rpm
    rpm-build-libs-4.11.1-25.el7.x86_64
    rpm-libs-4.11.1-25.el7.x86_64
    rpm-4.11.1-25.el7.x86_64
    rpm-python-4.11.1-25.el7.x86_64 fastestmirror配置文件:(一般不用动) /etc/yum/pluginconf.d/fastestmirror.conf 你的yum镜像的速度测试记录文件: /var/cache/yum/timedhosts.txt

    [root@manage ~]# file /tmp/yum_save_tx-2016-03-29-17-24zCwK6e.yumtx
    /tmp/yum_save_tx-2016-03-29-17-24zCwK6e.yumtx: ASCII text
    [root@manage ~]# less /tmp/yum_save_tx-2016-03-29-17-24zCwK6e.yumtx

    [root@localhost ~]# cat /etc/yum.conf

    [main]
    cachedir=/var/cache/yum/$basearch/$releasever         #yum下载的RPM包的缓存目录
    keepcache=0             #缓存是否保存,1保存,0不保存。
    debuglevel=2             #调试级别(0-10),默认为2(具体调试级别的应用,我也不了解)。
    logfile=/var/log/yum.log         #yum的日志文件所在的位置
    exactarch=1             #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。
    obsoletes=1             #这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
    gpgcheck=1             #是否检查GPG(GNU Private Guard),一种密钥方式签名。
    plugins=1             #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。
    installonly_limit=3         #允许保留多少个内核包。
    exclude=selinux*         #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。
    distroverpkg=centos-release
    bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum

    [root@localhost ~]# cat /etc/yum.repos.d/CentOS-Base.repo

    name,是对repository的描述,支持像$releasever $basearch这样的变量;  
    $releasever,发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
    $arch,cpu体系,如i686,athlon等
    $basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。

    [fedora]      #方括号里面的是软件源的名称,将被yum取得并识别
    name=Fedora $releasever - $basearch   #这里也定义了软件仓库的名称,通常是为了方便阅读配置文件,一般没什么作用,$releasever变量定义了发行版本,通常是8,9,10等数字,$basearch变量定义了系统的架构,可以是i386、x86_64、ppc等值,这两个变量根据当前系统的版本架构不同而有不同的取值,这可以方便yum升级的时候选择适合当前系统的软件包,以下同……
    failovermethod=priority   #failovermethod 有两个值可以选择,priority是默认值,表示从列出的baseurl中顺序选择镜像服务器地址,roundrobin表示在列出的服务器中随机选择
    exclude=compiz* *compiz* fusion-icon* #exclude这个选项是后来我自己加上去的,用来禁止这个软件仓库中的某些软件包的安装和更新,可以使用通配符,并以空格分隔,可以视情况需要自行添加
    #baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
    #上面的一行baseurl第一个字符是'#'表示该行已经被注释,将不会被读取,这一行的意思是指定一个baseurl(源的镜像服务器地址)
    #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
    #上面的这一行是指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,将$releasever和$basearch替换成自己对应的版本和架构,例如10和i386,在浏览器中打开,我们就能看到一长串镜可用的镜像服务器地址列表。
    http://mirrors.fedoraproject.org/mirrorlist?repo=rhel-7&arch=x86_64
    http://mirrors.fedoraproject.org/mirrorlist?repo=rhel-6&arch=x86_64

    http://mirror.symnds.com/distributions/CentOS/6.5/os/x86_64/repodata/
    http://mirror.symnds.com/distributions/CentOS/$releasever/os/$basearch/

    yum命令
    
    怎么使用YUM命令升级所有RPM软件包?
    yum update
    怎么使用YUM命令升级单个RPM软件包
    yum update 软件名称
    使用YUM安装RPM软件包
    yum install 软件名称
    使用YUM升级全部软件时怎么排除个别软件,假如你想升级所有软件包,但不想升级内核,就可以用下面的命令:
    yum --exclude=package kernel* update
    怎么使用YUM来确定某个软件需要升级,下面的命令会检测 Fedora/CentOS/RHEL上的所有软件是否需要升级
    check-update
    使用YUM卸载软件
    yum remove 软件名称 或者 yum erase 软件名称
    使用YUM查看软件包相关信息
    yum list可以让你获取软件包相关信息,后面不指定软件包名的话,它会列出所有软件包的信息。 yum list 软件名称
    使用yum了解软件的主要功能
    比如你想知道httpd这个软件是干吗的,可以输入下面的的命令: yum provides httpd
    使用YUM查找软件包
    如果你不知道某个软件包的全称,这个命令就非常有用了,它会根据你提供的关键词在RPM的软件包数据库里搜索相适配的软件包。比方说我想找 samba这个软件的全称,我只需要输入下面的命令即可: yum search samba
    使用YUM查看软件包的基本信息
    yum info samba
    怎么清除YUM缓存和下载包文件
    每安装一个软件包,YUM都是先下载一个RPM软件包然后再安装,安装完后并不会自动删除。时间长了,这些文件占很多空间的。所以,需要定时清理: yum clean all
    怎么使用YUM安装本地RPM包
    如果你想要自己创建一个RPM软件包,你可以用YUM来确定存在哪些依赖关系: yum localinstall 软件名称.rpm
    使用YUM升级本地RPM软件包
    如果你想升级一个本地RPM软件包,可以用下面的命令: yum localupdate update-package.rpm
    确定RPM包依赖哪些组件
    如果你想自己源码安装软件,了解安装的软件包依赖哪些软件非常有必要的。deplist可以让你知道软件包依赖哪些组件,这些组件的全称是什么。 yum deplist 软件名称
    查看YUM的版本信息
    yum -v
    使用YUM安装软件包到chroot环境(chroot)
    你可以使用下面的命令把软件安装到chroot: yum --installroot=/path/to/chroot/
    使用YUM启用已存在的软件源
    如果你安装了第三方的软件源,你需要先启用该软件源才能从其安装软件,输入下面的命令启用EPEL软件源: yum --enablerepo=epel install rsnapshot
    使用YUM禁用软件源
    如果你安装了第三方软件源但不想从其安装软件,可以用下面的命令禁用: yum --disablerepo=epel install 软件名称
    YUM软件集合
    YUM软件集合是指多个共同协作的软件统称,比如“Development Tools”(开发工具)。 下面介绍下怎么用yum groupinstall命令来查看/安装/卸载yum软件集合
    安装yum软件集合
    yum groupinstall 'Development Tools'
    卸载yum软件集合
    yum groupremove 'Development Tools'
    升级yum软件集合
    yum groupupdate 'Development Tools'
    查看yum软件集合信息
    yum groupinfo 'Development Tools'
    查看有哪些软件集合
    yum grouplist | more
    使用YUM输出已安装软件包列表
    该命令适用所有使用YUM为软件管理器的linux版本,如CentOS, Fedora, RHEL: yum list installed

    yum [options] COMMAND package_name
    其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。
    安装最快镜像插件:       yum install yum-fastestmirror
    安装yum图形窗口插件:    yum install yumex
    显示所有已经安装和可以安装的程序包    yum list 蓝色已安装,白色未安装
    显示库    yum repolist

    [root@localhost ~]# yum list installed|wc -l
    276
    [root@localhost ~]# rpm -qa|wc -l
    220
    这两个的数量是有差异的


    可以在命令前加help查看具体的帮助,非常方便,意识到这一点是对yum的一次本质提升(20160412才意识到)
    [root@localhost ~]# yum help list
    Loaded plugins: fastestmirror
    list [PACKAGE|all|installed|updates|extras|obsoletes|recent]

    List a package or groups of packages

    [root@localhost ~]# yum search varnish
    [root@localhost ~]# yum search all varnish
    [root@localhost ~]# yum provides varnish
    [root@localhost ~]# yum list varnish
    [root@localhost ~]# yum install varnish
    [root@localhost ~]# yum info varnish
    [root@localhost ~]# yum localinstall varnish.rpm
    [root@localhost ~]# yum deplist httpd
    [root@localhost ~]# cat /etc/yum.conf
    [root@localhost ~]# cat /etc/yum.repos.d/CentOS-Base.repo
    yum clean all
    yum makecache
    rm -rf /var/cache/yum/*

    [root@localhost dd]# yum repolist
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    repo id                                                                 repo name                                                                       status
    base                                                                    CentOS-6 - Base                                                                 6,367
    repolist: 6,367

    可以用whatprovides来确定哪个包提供了这个命令
    [root@localhost base]# yum whatprovides which
    [root@localhost base]# yum whatprovides awk
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Warning: 3.0.x versions of yum would erroneously match against filenames.
     You can use "*/awk" and/or "*bin/awk" to get that behaviour
    No Matches found

    erroneously
    adv. 错误地;不正确
    下面这两个输出是不一样的
    [root@localhost base]# yum whatprovides *awk
    [root@localhost base]# yum whatprovides */awk

    [root@localhost dd]# yum clean
    Loaded plugins: fastestmirror
    Error: clean requires an option: headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all
    [root@localhost dd]# yum history
    Loaded plugins: fastestmirror
    ID     | Login user               | Date and time    | Action(s)      | Altered
    -------------------------------------------------------------------------------
         9 | root <root>              | 2014-09-20 00:23 | Install        |    2
         8 | root <root>              | 2014-09-20 00:21 | Install        |    2
         7 | root <root>              | 2014-09-20 00:20 | Install        |    1
         6 | root <root>              | 2014-09-20 00:06 | Erase          |    1
         5 | root <root>              | 2014-09-20 00:02 | Install        |    1
         4 | root <root>              | 2014-09-20 00:01 | Erase          |    1
         3 | root <root>              | 2014-09-19 23:46 | Install        |    1
         2 | root <root>              | 2014-09-18 17:46 | Install        |    7
         1 | System <unset>           | 2014-09-18 17:32 | Install        |  205
    history list

    [root@localhost dd]# yum --help |egrep "remove|erase"
    erase          Remove a package or packages from your system
    groupremove    Remove the packages in a group from your system

    [root@localhost dd]# yum deplist gcc
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Finding dependencies:
    package: gcc.x86_64 4.4.7-4.el6
      dependency: libgcc >= 4.4.7-4.el6
       provider: libgcc.i686 4.4.7-4.el6
       provider: libgcc.x86_64 4.4.7-4.el6
      dependency: /sbin/install-info
       provider: info.x86_64 4.13a-8.el6
      dependency: libgomp.so.1()(64bit)
       provider: libgomp.x86_64 4.4.7-4.el6
      dependency: cloog-ppl >= 0.15
       provider: cloog-ppl.x86_64 0.15.7-1.2.el6
       provider: cloog-ppl.i686 0.15.7-1.2.el6
      dependency: glibc-devel >= 2.2.90-12
       provider: glibc-devel.x86_64 2.12-1.132.el6
       provider: glibc-devel.i686 2.12-1.132.el6
      dependency: cpp = 4.4.7-4.el6
       provider: cpp.x86_64 4.4.7-4.el6
      dependency: binutils >= 2.19.51.0.14-33
       provider: binutils.x86_64 2.20.51.0.2-5.36.el6
      dependency: libgomp = 4.4.7-4.el6
       provider: libgomp.x86_64 4.4.7-4.el6
       provider: libgomp.i686 4.4.7-4.el6
      dependency: rtld(GNU_HASH)
       provider: glibc.i686 2.12-1.132.el6
       provider: glibc.x86_64 2.12-1.132.el6
      dependency: libc.so.6(GLIBC_2.7)(64bit)
       provider: glibc.x86_64 2.12-1.132.el6
      dependency: /bin/sh
       provider: bash.x86_64 4.1.2-15.el6_4
      dependency: libgcc_s.so.1()(64bit)
       provider: libgcc.x86_64 4.4.7-4.el6
    [root@localhost dd]# yum search w3m
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    ====================================================================== N/S Matched: w3m ======================================================================
    w3m-img.x86_64 : A helper program to display the inline images for w3m
    w3m.x86_64 : A pager with Web browsing abilities

      Name and summary matches only, use "search all" for everything.



    必须选择下面的基本模式:Query, Verify,  Signature  Check, Install/Upgrade/Freshen, Uninstall, Initialize Database, Rebuild Database, Resign, Add Signature, Set Owners/Groups, Show Querytags, and Show Configuration。

    rpm一般选项:可以用于所有的不同的模式中。
    -vv

    rpm查询选项的通用格式:
    rpm {-q|--query} [select-options] [query-options]
    有两个查询的子集选项:包选择和包查询选择。即[select-options]和[query-options]
    包选择选项:[select-options]
    rpm -q tcpdump
    rpm -qa
    rpm -qf /usr/bin/bash
    rpm -qg 组包名

    包查询选择:[query-options]
    rpm -q pam --changelog    查询包更改历史
    rpm -qc pam    只列出配置文件
    rpm -qc pam -vv
    rpm -qd pam    只列出帮助文件
    rpm -qi pam    显示包信息
    rpm -qa --last|more      以包安装的顺序来列出包内容,结果是最后一个安装的包在最上层列出。
    rpm -ql pam
    rpm -q pam --provides
    rpm -qR pam    列出依赖的包
    rpm -q pam --scripts

    rpm -qpl http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

    rpm安装的通用命令如下:
    rpm {-i|--install} [install-options] PACKAGE_FILE ...

    PACKAGE_FILE    形如oracle-instantclient-sqlplus-10.2.0.3-1.x86_64.rpm
    PACKAGE_NAME    形如oracle-instantclient-sqlplus
    yum源(软件仓库)
    yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以是本地软件源(光盘,iso,自定义的rpm包等),但必须包含rpm的header,header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。
    在执行yum update命令的时候,这一步就是yum会从服务器的header目录下载rpm的header,放在本地的缓存中。
    yum 的大致原理: yum会检查 $baseurl/repodata/repomd.xml,这个索引文件,找不到的会失败的。所以添加软件库的时候要注意一下,特别是第3方软件库.
    注:当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长.
    [root@localhost ~]# cd /var/cache/yum/x86_64/6/;ls
    /etc/yum.repos.d/下面启用的源,cache目录下才会有相关的目录。
    yum就是根据存放在这里的这些rpm的header来检测系统中安装的软件(rpm软件包)是不是最新版本,需不需要update.
    如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,
    [root@localhost yum]# yum clean
    Loaded plugins: fastestmirror
    Error: clean requires an option: headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all
    默认启用了base,updates,extras三个源
    [root@localhost yum]# grep '[' /etc/yum.repos.d/CentOS-Base.repo
    [base]
    [updates]
    [extras]
    [centosplus]
    [contrib]

    yum的配置一般有两种方式,一种是直接配置/etc目录下的yum.conf文件,另外一种是在/etc/yum.repos.d目录下增加.repo文件。
    http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/09/2203916.html

    1.构建本地yum源
    本地软件源(光盘,iso,自定义的rpm包等)

    光盘

    默认有这个文件,就不需要新建repo文件了
    [root@localhost yum]# less /etc/yum.repos.d/CentOS-Media.repo
    [root@localhost yum]# mkdir /media/cdrom;mount /dev/sr0 /media/cdrom
    [root@localhost yum]# rm -rf /var/cache/yum/*
    [root@localhost yum]# rm -rf /tmp/yum*

    yum --disablerepo=* --enablerepo=c6-media
    yum --disablerepo=base,updates,extras --enablerepo=c6-media
    [root@localhost yum]# yum --enablerepo=c6-media --disablerepo=* install perl
    Loaded plugins: fastestmirror
    Determining fastest mirrors
     * c6-media:
    file:///media/CentOS/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/CentOS/repodata/repomd.xml
    Trying other mirror.
    file:///media/cdrecorder/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/cdrecorder/repodata/repomd.xml
    Trying other mirror.
    c6-media                                                 | 4.0 kB     00:00 ...
    c6-media/primary_db                                      | 4.4 MB     00:00 ...
    Setting up Install Process
    自定义rpm

    1、将所有的rpm包拷贝到一个目录中,此处放在/mnt/local/下
    2、安装createrepo包
    rpm -ivh createrepo-0.9.8-4.el6.noarch或者
    yum install createrepo
    3、createrepo -v /mnt/local    #-v指定
    #vi local.repo
    [local]
    name=local
    baseurl=file:///mnt/local/
    gpgcheck=0
    #yum clean all
    #yum --enablerepo=local --disablerepo=* install 包名

    iso

    mount -o loop -t iso9660 rhel6.iso /mnt/iso/
    这时在local.repo文件添加
    [server]                             
    name=RHEL                       
    baseurl=file:///mnt/iso/   
    gpgcheck=0                     
    #yum clean all
    #yum --enablerepo=server --disablerepo=* install perl
    与上相同

    2.构建远程yum源

    架设本地,远程(ftp,http都可以)
    首先架设vsftp服务器
    rpm -ivh Createrepo-xxx.rpm
    createrepo /var/ftp/pub/     #生成数据库
    /etc/init.d/vsftpd start     #启动ftp服务
    baseurl=ftp://192.168.1.88/pub/
    安装单个服务已经可以了,下面我们来解决安装组包的问题
    修改文件:/usr/lib/python2.4/sit-pachages/yum/yumRepo.py
    #第441行vi +441 /usr/lib/python2.4/sit-pachages/yum/yumRepo.py
    #敲命令将 remote= url + '/' +relative  修改为  remote= "/var/ftp/pub/Server" + '/' +relative
    http类似于ftp,只是路径不同,协议不同而已。http方式是将源文件放入html目录中

    http源
    # vim /etc/yum.repos.d/cloudstack.repo
    [cloudstack]
    name=cloudstack
    baseurl=http://cloudstack.apt-get.eu/rhel/4.2/
    enabled=1
    gpgcheck=0

    因网络慢问题,可以先下载所有安装包,然后创建本地源:
    yum -y install httpd createrepo
    wget -c -r -nd -A rpm http://cloudstack.apt-get.eu/rhel/4.2/ -P /var/www/html/4.2
    createrepo /var/www/html/4.2/
    service httpd start

    -c 断点续传
    -nd 递归下载时不创建一层一层的目录,把所有的文件下载到当前目录
    -A 指定分号分隔的被接受扩展名的列表

    yum配置改为:
    [cloudstack]
    name=cloudstack
    baseurl=http://<http_server_ip>/4.2  #修改成自己服务器的IP地址
    enabled=1
    gpgcheck=0
    3.第三方源
    epel源
    Extra Packages for Enterprise Linux(企业版 Linux 附加软件包)(以下简称 EPEL)是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS、 Scientific Linux)的一个高质量附加软件包项目。 EPEL 的软件包通常不会与企业版Linux官方源中的软件包发生冲突,或者互相替换文件。EPEL与Fedora项目基本一致,包含完整的构建系统、升级管理器、镜像管理器等等。 EPEL 包含一个叫做epel-release的包,这个包包含了EPEL源的gpg密钥和软件源信息。您可以通过yum安装到您的企业版Linux发行版上。除了epel-release源,还有一个叫做epel-testing的源,这个源包含最新的测试软件包,其版本很新但是安装有风险,请自行斟酌。 注意: 有些第三方软件源需要 EPEL 的'epel-testing'源来安装依赖组件,请务必在系统设置中启用本源。这里有相关的开启教程。(相关配置文件位于:/etc/yum.repos.d/epel-testing.repo)。 首先安装epel包,下面两种方法均可以 #yum install epel-release或者下面的 #rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm #rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
    先查看一下这个包都安装了那些文件
    rpm -qpl http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
    导入key: # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 注意: 1、要安装最新版本的EPEL,请前往 http://mirrors.ustc.edu.cn/fedora/epel/ 中查找最新版本的URL地址,这里采用的是6.8版本 32位:http://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm 64位:http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm 2、若出现下面类似错误,则表示对应的URL已经不存在,需要重新找EPEL的版本,请前往 http://mirrors.ustc.edu.cn/fedora/epel/ 获取需要的版本 如下报错,安装epel-release成功,但没有提示导入key。 [root@localhost ~]# yum install epel-release [root@localhost ~]# yum install x2goserver x2goserver-xsession Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again 解决办法是 处理很简单,修改文件“/etc/yum.repos.d/epel.repo”, 将baseurl的注释取消, mirrorlist注释掉。即可。

    163的yum源

    1.导入CentOS-6的GPG证书
    rpm –import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
    http://mirrors.163.com/.help/centos.html
    2.让yum使用163的yum源:
    cd /etc/yum.repos.d/
    wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

    先备份
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    再下载对应版本的库文件
    curl -O http://mirrors.163.com/.help/CentOS7-Base-163.repo
    curl -O http://mirrors.163.com/.help/CentOS6-Base-163.repo
    再生成缓存
    yum clean all
    yum makecache

    3.修改repo文件
    在所有mirrorlist前面加上#,把所有$releasever替换成6,保存
    sed -i ‘/mirrorlist/d’ CentOS-Base-163.repo
    sed -i ‘/[addons]/,/^$/d’ CentOS-Base-163.repo
    sed -i ‘s/$releasever/6/’ CentOS-Base-163.repo
    sed -i ‘s/RPM-GPG-KEY-CentOS-5/RPM-GPG-KEY-CentOS-6/’ CentOS-Base-163.repo
    4.清理并重新生成yum缓存
    yum clean metadata

    安装额外的软件仓库:
    rpm.livna.org 的软件包仓库:
    rpm -ivh http://livna-dl.reloumirrors.net … ease-7-2.noarch.rpm
    freshrpms.net 的软件包仓库:
    rpm –ivh http://ftp.freshrpms.net/pub/fre … 1.1-1.fc.noarch.rpm

    问题:
    [root@name user]# yum
    File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
    原因:
    这是因为yum采用python作为命令解释器,这可以从/usr/bin/yum文件中第一行#!/usr/bin/python发现。而python版本之间兼容性不太好,使得2.X版本与3.0版本之间存在语法不一致问题。而CentOS 5自带的yum采用的是python2.4,当系统将python升级到2.6或3.0后,出现语法解释错误。
    解决办法:
    很简单,一是升级yum,一是修改yum的解释器为旧版本python2.4(如果你没有采用覆盖升级的话)
    升级yum的作法就不详述了;
    修改yum的解释器为旧版本python2.4:
         vi /usr/bin/yum
         将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2.4"即可
    当YUM时,注:如出现:Existing lock /var/run/yum.pid: another copy is running. Aborting.错误,
    要运行: rm -f /var/run/yum.pid 将该文件删除!
    yum Existing lock 错误的解决办法
    如果系统启动的时候, yum 出现Existing lock /var/run/yum.pid: another copy is running as pid 3380. Aborting.
    可以用下面的办法解决:
    可以 /etc/init.d/yum-updatesd stop
    也可以 rm -f /var/run/yum.pid
    
    主要原因就是yum在自动更新,所以再运行yum就会报这个错。
    只要关掉正在执行的yum更新就可以了就可以了,停止正在运行的yum进程,或者禁用开机自动启动yum进程。
    1。rm -rf /var/run/yum.pid
    2./etc/init.d/yum-updatesd stop
    为什么会有一个yum进程在执行呢?
    原来是yum自动更新机制自动激活了yum进程,用下面的命令停止自动更新:
    如果我们不需要自动更新服务,可以直接删除它。
    #yum remove yum-updatesd
    不过删除该服务之后,以后的更新要用下面的命令手工来完成了。
    #yum update
  • 相关阅读:
    迁移
    zendframework 2 链接数据库
    zendframework 2
    merge sort and quick sort 自己去理解吧
    ubuntu git 使用
    resumablejs 分块上传 断点续传
    video.js html5 视频播放器
    swfupload 例子
    php 润年 星期 天数
    ubuntu 安装 axel
  • 原文地址:https://www.cnblogs.com/createyuan/p/3848745.html
Copyright © 2020-2023  润新知