zoukankan      html  css  js  c++  java
  • 创建本地RPM源之更新系统旧版软件mysql

    事情起因

    系统版本为Centos6.6 ,因为之前同事没有采用最小化选择性安装,所以系统安装好后自带有mysql5.1的三个安装包:

    [root@test ~]# rpm -qa | grep mysql
    mysql-5.1.73-3.el6_6.x86_64
    mysql-devel-5.1.73-3.el6_6.x86_64
    mysql-lib-5.1.73-3.el6_6.x86_64

    在安装新版本mysql前卸载旧版本

    卸载掉了 mysql 和 mysql-devel,但没能成功卸载 mysql-libs,因为存在着依赖关系,所以打算采用rpm更新操作来将其更替:

    [root@test ~/Downloads/V137788-01]# rpm -Uvh mysql-commercial-libs-5.7.12-1.1.el6.x86_64.rpm 
    warning: mysql-commercial-client-5.7.12-1.1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    error: Failed dependencies:
        mysql-commercial-common(x86-64) = 5.7.12-1.1.el6 is needed by mysql-commercial-libs-5.7.12-1.1.el6.x86_64
        libmysqlclient.so.16()(64bit) is needed by (installed) postfix-2:2.6.6-6.el6_5.x86_64
        libmysqlclient.so.16(libmysqlclient_16)(64bit) is needed by (installed) postfix-2:2.6.6-6.el6_5.x86_64

    看来还需要添加上:mysql-commercial-common

    [root@test ~/Downloads/V137788-01]# rpm -U mysql-commercial-libs-5.7.12-1.1.el6.x86_64.rpm mysql-commercial-common-5.7.12-1.1.el6.x86_64.rpm 
    warning: mysql-commercial-libs-5.7.12-1.1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    error: Failed dependencies:
        libmysqlclient.so.16()(64bit) is needed by (installed) postfix-2:2.6.6-6.el6_5.x86_64
        libmysqlclient.so.16(libmysqlclient_16)(64bit) is needed by (installed) postfix-2:2.6.6-6.el6_5.x86_64

    但是这样还是没能解决,而且卸载postfix会引发更多的rpm包卸载,这样的实施成本就提高了,不是愿意看到的,所以又想到创建本地yum源来更新软件。

    安装createrepo包

    [root@test ~/Downloads/V137788-01]# yum install -y createrepo
    
    [root@test ~/Downloads/V137788-01]# mkdir /opt/soft; cd /opt/soft/
    将mysql的rpm包文件移动到这个目录下
    [root@test
    /opt/soft]# mv ~/Downloads/V137788-01/mysql* ./
    =================================================================================
    查看 [root@test
    /opt/soft]# ls libmcrypt-2.5.8-4.3.x86_64.rpm libmcrypt-devel-2.5.8-4.3.x86_64.rpm mysql-commercial-client-5.7.12-1.1.el6.x86_64.rpm mysql-commercial-common-5.7.12-1.1.el6.x86_64.rpm mysql-commercial-devel-5.7.12-1.1.el6.x86_64.rpm mysql-commercial-embedded-5.7.12-1.1.el6.x86_64.rpm mysql-commercial-embedded-devel-5.7.12-1.1.el6.x86_64.rpm mysql-commercial-libs-5.7.12-1.1.el6.x86_64.rpm mysql-commercial-libs-compat-5.7.12-1.1.el6.x86_64.rpm mysql-commercial-server-5.7.12-1.1.el6.x86_64.rpm mysql-commercial-test-5.7.12-1.1.el6.x86_64.rpm nginx-1.9.15-1.el6.icefox.x86_64.rpm

    使用createrepo创建本地yum源

    这时会在本地yum源目录中多出一个repodata目录(存放有本地yum源的rpm包的文件信息)

    [root@test /]# createrepo -v /opt/soft/
    
    [root@test /opt/soft]# ls
    libmcrypt-2.5.8-4.3.x86_64.rpm
    libmcrypt-devel-2.5.8-4.3.x86_64.rpm
    mysql-commercial-client-5.7.12-1.1.el6.x86_64.rpm
    mysql-commercial-common-5.7.12-1.1.el6.x86_64.rpm
    mysql-commercial-devel-5.7.12-1.1.el6.x86_64.rpm
    mysql-commercial-embedded-5.7.12-1.1.el6.x86_64.rpm
    mysql-commercial-embedded-devel-5.7.12-1.1.el6.x86_64.rpm
    mysql-commercial-libs-5.7.12-1.1.el6.x86_64.rpm
    mysql-commercial-libs-compat-5.7.12-1.1.el6.x86_64.rpm
    mysql-commercial-server-5.7.12-1.1.el6.x86_64.rpm
    mysql-commercial-test-5.7.12-1.1.el6.x86_64.rpm
    nginx-1.9.15-1.el6.icefox.x86_64.rpm
    repodata
    
    编辑repo文件
    [root@test /]# vim /etc/yum.repos.d/local.repo
    [LC]
    name=local-rpm
    baseurl=file:///opt/soft
    enabled=1
    gpgcheck=0

    安装新版mysql

    [root@test /]# yum install mysql-commercial-libs mysql-commercial-server mysql-commercial-client mysql-commercial-devel
    ...
    Installed:
      mysql-commercial-client.x86_64 0:5.7.12-1.1.el6                               
      mysql-commercial-devel.x86_64 0:5.7.12-1.1.el6                                
      mysql-commercial-libs.x86_64 0:5.7.12-1.1.el6                                 
      mysql-commercial-libs-compat.x86_64 0:5.7.12-1.1.el6                          
      mysql-commercial-server.x86_64 0:5.7.12-1.1.el6                               
    
    Dependency Installed:
      mysql-commercial-common.x86_64 0:5.7.12-1.1.el6                               
    
    Replaced:
      mysql-libs.x86_64 0:5.1.73-3.el6_5                                            
    
    Complete!

    这里问题算是解决了,安装新版mysql并将旧版移除。

    总结

    1) 在使用createrepo命令创建本地rpm源信息时,要使用绝对路径而非相对路径;

    2) 如果有新的软件包需要放在本地yum源中,需要再次执行createrepo更新本地rpm源信息;

    3) 本地yum源能很好解决旧版软件间的依赖关系,不再需要手动一步步解决。

  • 相关阅读:
    Java中的责任链设计模式,太牛了!
    醒醒吧,世界上有技术驱动型公司!
    现身说法:37岁老码农找工作
    如何快速安全的插入千万条数据?
    这个函数,1987年在这了,别动它!
    word自动备份,word误删内容恢复
    给Ubuntu 16.04更换更新源
    Django分别使用Memcached和Redis作为缓存的配置(Linux环境)
    Pycharm远程连接服务器,并在本地调试服务器代码
    Navicat远程连接阿里云服务器的mysql
  • 原文地址:https://www.cnblogs.com/jonsea/p/5503267.html
Copyright © 2011-2022 走看看