업그레이드 중에 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 정의에 일부 명령문을 넣을 수도 있습니다 .

관련 정보