우리 소프트웨어의 현재 버전은 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.rpm
MySQL 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
Obsoletes
rpm 정의에 일부 명령문을 넣을 수도 있습니다 .