Мне нужно создать сценарий установки MariaDB с помощью команды rpm в CentOS 6.4. Я не могу использовать yum, так как это будет автономная установка, поэтому нет доступа к репозиторию.
Единственный установленный пакет MySQL - это mysql-libs, так как от него зависят различные другие пакеты в CentOS. Когда я выполнил тестовую установку MariaDB с yum, он правильно учел 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) <dbart@askmonty.org>"
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 sales@montyprogram.com.
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!
Мой вопрос: каков эквивалентный способ установки пакетов MariaDB с использованием только команды rpm, а не yum?
Если я сделаю 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 для установки rpms MariaDB и удалил mysql-lib, я не получал никаких странных сообщений, но я не уверен, что это самый чистый метод для разрешения конфликтов и выполнения установки.
Так может кто-нибудь подтвердить, что установка MariaDB с помощью следующих команд rpm будет такой же, как использование yum для установки пакетов и обработки конфликтов / удаления mysql-libs:
rpm -ivh --force MariaDB * .rpm
rpm -e mysql-libs
Спасибо за любой вклад!
Вместо «rpm -ivh ...» вы должны были использовать «rpm -Uvh ...».
За исключением, возможно, ядра, -Uvh должен ВСЕГДА использоваться.
Теги Obsoletes: не выполняются при использовании --install, -i.
Вы этого не сделаете. Ты используешь yum
так что он справляется с этой ситуацией чисто. Он отлично работает в автономном режиме, используя пакеты RPM напрямую, при условии, что все необходимые зависимости доступны или уже установлены.
Загрузите соответствующие RPM-пакеты MariaDB на USB-накопитель или DVD-диск.
yumdownloader MariaDB-client MariaDB-common MariaDB-compat MariaDB-devel MariaDB-server MariaDB-shared
Возьмите USB-накопитель или DVD-диск на целевую машину и скопируйте их.
Установите их:
yum --disablerepo=* -y install MariaDB-*.rpm
Я использую следующее репо (как /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 и т. д.)