我需要在CentOS 6.4中使用rpm命令来编写MariaDB的安装脚本。 我不能使用yum,因为它将会是一个离线安装,所以无法访问版本库。
唯一安装的MySQL软件包是mysql-libs,因为CentOS中的其他软件包依赖于它。 当我用yum做了一个MariaDB的testing安装,它正确地解释了mysql-libs,并且在最后卸载它,MariaDB可以在安装之后处理依赖关系:
[root@new-host-6 ~]# yum install MariaDB-client MariaDB-common MariaDB-compat MariaDB-devel MariaDB-server MariaDB-shared Loaded plugins: downloadonly, fastestmirror, refresh-packagekit, security, verify Loading mirror speeds from cached hostfile * base: mirrors.kernel.org * extras: mirror.keystealth.org * updates: mirror.umd.edu Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package MariaDB-client.x86_64 0:5.5.32-1 will be installed ---> Package MariaDB-common.x86_64 0:5.5.32-1 will be installed ---> Package MariaDB-compat.x86_64 0:5.5.32-1 will be obsoleting ---> Package MariaDB-devel.x86_64 0:5.5.32-1 will be installed ---> Package MariaDB-server.x86_64 0:5.5.32-1 will be installed ---> Package MariaDB-shared.x86_64 0:5.5.32-1 will be obsoleting ---> Package mysql-libs.x86_64 0:5.1.66-2.el6_3 will be obsoleted --> Finished Dependency Resolution Dependencies Resolved ==================================================================================================================================================================== Package Arch Version Repository Size ==================================================================================================================================================================== Installing: MariaDB-client x86_64 5.5.32-1 mariadb 10 M MariaDB-common x86_64 5.5.32-1 mariadb 23 k MariaDB-compat x86_64 5.5.32-1 mariadb 2.7 M replacing mysql-libs.x86_64 5.1.66-2.el6_3 MariaDB-devel x86_64 5.5.32-1 mariadb 5.6 M MariaDB-server x86_64 5.5.32-1 mariadb 34 M MariaDB-shared x86_64 5.5.32-1 mariadb 1.1 M replacing mysql-libs.x86_64 5.1.66-2.el6_3 Transaction Summary ==================================================================================================================================================================== Install 6 Package(s) Total download size: 53 M Is this ok [y/N]: y Downloading Packages: (1/6): MariaDB-5.5.32-centos6-x86_64-client.rpm | 10 MB 00:06 (2/6): MariaDB-5.5.32-centos6-x86_64-common.rpm | 23 kB 00:00 (3/6): MariaDB-5.5.32-centos6-x86_64-compat.rpm | 2.7 MB 00:02 (4/6): MariaDB-5.5.32-centos6-x86_64-devel.rpm | 5.6 MB 00:06 (5/6): MariaDB-5.5.32-centos6-x86_64-server.rpm | 34 MB 00:23 (6/6): MariaDB-5.5.32-centos6-x86_64-shared.rpm | 1.1 MB 00:00 -------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 1.3 MB/s | 53 MB 00:40 warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID 1bb943db: NOKEY Retrieving key from https://yum.mariadb.org/RPM-GPG-KEY-MariaDB Importing GPG key 0x1BB943DB: Userid: "Daniel Bartholomew (Monty Program signing key) <[email protected]>" From : https://yum.mariadb.org/RPM-GPG-KEY-MariaDB Is this ok [y/N]: y Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum. Installing : MariaDB-compat-5.5.32-1.x86_64 1/7 Installing : MariaDB-common-5.5.32-1.x86_64 2/7 Installing : MariaDB-server-5.5.32-1.x86_64 3/7 chown: cannot access `/var/lib/mysql': No such file or directory PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER ! To do so, start the server, then issue the following commands: '/usr/bin/mysqladmin' -u root password 'new-password' '/usr/bin/mysqladmin' -u root -h new-host-6 password 'new-password' Alternatively you can run: '/usr/bin/mysql_secure_installation' which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the MariaDB Knowledgebase at http://kb.askmonty.org or the MySQL manual for more instructions. Please report any problems with the '/usr/bin/mysqlbug' script! The latest information about MariaDB is available at http://mariadb.org/. You can find additional information about the MySQL part at: http://dev.mysql.com Support MariaDB development by buying support/new features from Monty Program Ab. You can contact us about this at [email protected]. Alternatively consider joining our community based development effort: http://kb.askmonty.org/en/contributing-to-the-mariadb-project/ Installing : MariaDB-devel-5.5.32-1.x86_64 4/7 Installing : MariaDB-client-5.5.32-1.x86_64 5/7 Installing : MariaDB-shared-5.5.32-1.x86_64 6/7 Erasing : mysql-libs-5.1.66-2.el6_3.x86_64 7/7 Verifying : MariaDB-common-5.5.32-1.x86_64 1/7 Verifying : MariaDB-server-5.5.32-1.x86_64 2/7 Verifying : MariaDB-devel-5.5.32-1.x86_64 3/7 Verifying : MariaDB-client-5.5.32-1.x86_64 4/7 Verifying : MariaDB-compat-5.5.32-1.x86_64 5/7 Verifying : MariaDB-shared-5.5.32-1.x86_64 6/7 Verifying : mysql-libs-5.1.66-2.el6_3.x86_64 7/7 Installed: MariaDB-client.x86_64 0:5.5.32-1 MariaDB-common.x86_64 0:5.5.32-1 MariaDB-compat.x86_64 0:5.5.32-1 MariaDB-devel.x86_64 0:5.5.32-1 MariaDB-server.x86_64 0:5.5.32-1 MariaDB-shared.x86_64 0:5.5.32-1 Replaced: mysql-libs.x86_64 0:5.1.66-2.el6_3 Complete!
我的问题是,与yum相比,使用rpm命令安装MariaDB软件包的等效方法是什么?
如果我使用rpm -ivh MariaDB * .rpm,我将得到如下关于与mysql-libs冲突的大量消息:
file /etc/my.cnf from install of MariaDB-common-5.5.32-1.x86_64 conflicts with file from package mysql-libs-5.1.66-2.el6_3.x86_64 file /usr/share/mysql/charsets/Index.xml from install of MariaDB-common-5.5.32-1.x86_64 conflicts with file from package mysql-libs-5.1.66-2.el6_3.x86_64
然后我用–force选项安装MariaDB rpms和卸载mysql-lib,我没有得到任何奇怪的消息,但我不知道这是处理冲突和安装的最干净的方法。
那么有人可以确认,使用下面的rpm命令安装MariaDB将和使用yum来安装软件包并处理mysql-libs冲突/删除一样:
rpm -ivh –force MariaDB * .rpm
rpm -e mysql-libs
感谢您的任何意见!
你没有。 你用yum来处理这种情况。 如果所有必需的依赖关系都可用或已经安装,它可以直接使用RPM包进行离线运行。
将相应的MariaDB RPM下载到您的USB存储棒或DVD-ROM中。
yumdownloader MariaDB-client MariaDB-common MariaDB-compat MariaDB-devel MariaDB-server MariaDB-shared
把你的U盘或DVD-ROM放到目标机器上并复制它们。
安装它们:
yum --disablerepo=* -y install MariaDB-*.rpm
而不是“rpm -ivh …”你应该做“rpm -Uvh …”。
除了可能的内核之外,应该始终使用-Uvh。
Obsoletes:标签在使用–install,-i时不执行。
我使用以下回购(作为/etc/yum.repos.d/mariadb.repo):
# MariaDB 5.5 CentOS repository list - created 2013-09-14 02:06 UTC # http://mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/5.5/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
对于应用程序来说,具有二进制兼容性是非常重要的,这是通过安装MariaDB-compat软件包(由于某种原因,我没有看到它在你的列表中):
[root@backup ~]# rpm -qlp mysql-libs-5.1.69-1.el6_4.x86_64.rpm |grep so /etc/ld.so.conf.d/mysql-x86_64.conf /usr/lib64/mysql/libmysqlclient.so.16 /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/lib64/mysql/libmysqlclient_r.so.16 /usr/lib64/mysql/libmysqlclient_r.so.16.0.0 [root@backup ~]# rpm -qlp MariaDB-5.5.32-centos6-x86_64-compat.rpm /usr/lib64/libmysqlclient.so.15 /usr/lib64/libmysqlclient.so.15.0.0 /usr/lib64/libmysqlclient.so.16 /usr/lib64/libmysqlclient.so.16.0.0 /usr/lib64/libmysqlclient_r.so.15 /usr/lib64/libmysqlclient_r.so.15.0.0 /usr/lib64/libmysqlclient_r.so.16 /usr/lib64/libmysqlclient_r.so.16.0.0
所以,你可以卸载mysql-libs,然后安装MariaDB-server软件包,它将安装所有的需求和MariaDB-compat软件包,这样就废弃了mysql-libs,所以依赖关系不会被破坏:
[root@backup ~]# rpm -qp --obsoletes MariaDB-5.5.32-centos6-x86_64-compat.rpm mysql-libs < 5.3.5 [root@backup ~]#
所以,没有问题后,rpm将不会报告任何不兼容性(提供mysql-libs = 5.3.5):
[root@backup ~]# rpm -qlp --provides MariaDB-5.5.32-centos6-x86_64-compat.rpm libmysqlclient.so.15()(64bit) libmysqlclient.so.15(libmysqlclient_15)(64bit) libmysqlclient.so.16()(64bit) libmysqlclient.so.16(libmysqlclient_16)(64bit) libmysqlclient_r.so.15()(64bit) libmysqlclient_r.so.15(libmysqlclient_15)(64bit) libmysqlclient_r.so.16()(64bit) libmysqlclient_r.so.16(libmysqlclient_16)(64bit) mysql-libs = 5.3.5 MariaDB-compat = 5.5.32-1 MariaDB-compat(x86-64) = 5.5.32-1 /usr/lib64/libmysqlclient.so.15 /usr/lib64/libmysqlclient.so.15.0.0 /usr/lib64/libmysqlclient.so.16 /usr/lib64/libmysqlclient.so.16.0.0 /usr/lib64/libmysqlclient_r.so.15 /usr/lib64/libmysqlclient_r.so.15.0.0 /usr/lib64/libmysqlclient_r.so.16 /usr/lib64/libmysqlclient_r.so.16.0.0 [root@backup ~]#
答:是的,你可以卸载mysql-libs并安装这些软件包,但是从这个软件库下载。
(yumdownloader MariaDB-client.x86_64 MariaDB-common.x86_64 MariaDB-compat.x86_64等)