アップグレード中にrpmに依存関係を確認するように強制する方法は?

アップグレード中にrpmに依存関係を確認するように強制する方法は?

私たちのソフトウェアの現在のバージョンは、RPMの要件で指定されたMySQL 5.1を使用しています。

新しいリリースではMySQL 5.5が必要になり、RPM要件に割り当てられます。

[root@NEC03 ~]# rpm -q -R mypackage
/bin/sh  
/bin/sh  
/bin/sh  
/bin/sh  
/usr/bin/mysql  
config(flux) = 2.0.0.0-1
jdk >= 1.6
mysql-server >= 5.5.21
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1

ただし、実行するとrpm -Uvh mypackage.rpmMySQL 5.1のみがインストールされていても依存関係エラー例外は発生しません。

[root@NEC03 ~]# rpm -qa | grep -i mysql
MySQL-server-community-5.1.51-1.rhel5
MySQL-shared-community-5.1.51-1.rhel5
MySQL-client-community-5.1.51-1.rhel5

アップグレード中にrpmが失敗しない理由をご存知ですか?

修正する:

MySQL-server-community問題はバージョン番号が提供されていないようですmysql-server

[root@NEC03 ~]# rpm -q --provides MySQL-server-community
MySQL  
MySQL-server  
config(MySQL-server-community) = 5.1.51-1.rhel5
ha_innodb_plugin.so.0()(64bit)  
msqlormysql  
mysql  
mysql-server  
MySQL-server-community = 5.1.51-1.rhel5

したがって、要件のバージョンチェックはほとんど役に立ちません。バージョンチェックが必要な場合は、要件で「MySQL-server-community」を使用する必要がありますが、MySQL 5.5はMySQL-serverバージョンのみを提供します。

[root@NEC02 dependencies2.0]# rpm -q --provides MySQL-server
MySQL  
MySQL-server  
adt_null.so()(64bit)  
auth.so()(64bit)  
auth_socket.so()(64bit)  
auth_test_plugin.so()(64bit)  
config(MySQL-server) = 5.5.21-1.rhel5
libdaemon_example.so()(64bit)  
libtcmalloc_minimal.so.0()(64bit)  
msqlormysql  
mypluglib.so()(64bit)  
mysql  
mysql-server  
qa_auth_client.so()(64bit)  
qa_auth_interface.so()(64bit)  
qa_auth_server.so()(64bit)  
semisync_master.so()(64bit)  
semisync_slave.so()(64bit)  
MySQL-server = 5.5.21-1.rhel5

したがって、MySQL 5.1もバージョンなしで「MySQL-server」を提供するので、問題に対する解決策はないようです。

答え1

実際に使用すると問題を解決できます。

クラッシュ:MySQLサーバー< 5.5

答え2

RPMに次のプレインストールスクリプトを追加することでこの問題を解決しました。

# Check that MySQL version is not 5.1
rpm -qa | grep -i mysql-server.*5.1 > /dev/null
if [ $? -eq 0 ]
then
    echo "Flux can not be installed because MySQL 5.1 is still installed. Please upgrade MySQL to 5.5 or above."
    echo
exit 1
fi

紛争の中でうまくいきませんでした。クラッシュを追加しましたが、MySQL-server-communityアプリは引き続きインストールされます。

[root@NEC01 ~]# rpm -q --conflicts myapplication
MySQL-server-community <= 5.1

MySQL-server-communityをインストールしたとき:

[root@NEC01 ~]# rpm -q --provides MySQL-server-community
MySQL  
MySQL-server  
config(MySQL-server-community) = 5.1.44-1.rhel5
ha_example.so.0()(64bit)  
ha_innodb_plugin.so.0()(64bit)  
msqlormysql  
mysql  
mysql-server  
MySQL-server-community = 5.1.44-1.rhel5

答え3

Obsoletesrpm定義にいくつかのステートメントを含めることもできます。

関連情報