У меня есть машина с CentOS 5.5, которую я хочу обновить до последней версии 5.x. Это спотыкается о freetype.
Freetype имеет установленную версию i386 и x86_64. Это нормально, но версия x86_64 существенно новее (поддерживается версия 2.4 для поддержки нескольких других пакетов; у меня даже нет 32-разрядной машины для сборки версии i386).
[sh-beta@localhost ~]$ yum list installed | grep freetype
freetype.i386 2.2.1-28.el5_7.2 installed
freetype.x86_64 2.4.8-1 installed
[sh-beta@localhost ~]$ yum list updates | grep freetype
freetype.i386 2.2.1-31.el5_8.1 updates
[sh-beta@localhost ~]$ sudo yum -y update freetype.i386
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cicku.me
* extras: mirrors.sonic.net
* updates: centos.sonn.com
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package freetype.i386 0:2.2.1-31.el5_8.1 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
====================================================================================================================================================================================
Package Arch Version Repository Size
====================================================================================================================================================================================
Updating:
freetype i386 2.2.1-31.el5_8.1 updates 312 k
Transaction Summary
====================================================================================================================================================================================
Install 0 Package(s)
Upgrade 1 Package(s)
Total size: 312 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Check Error:
package freetype-2.4.8-1.x86_64 (which is newer than freetype-2.2.1-31.el5_8.1.i386) is already installed
Error Summary
-------------
[sh-beta@localhost ~]$
На этой тестовой машине я могу вручную понизить версию пакета x86_64 до базовой версии CentOS 5.5, а затем без проблем обновить оба до версии 5.8.
[sh-beta@localhost ~]$ sudo yum -y downgrade freetype-2.2.1-28.el5_7.2.x86_64
<...snip...>
[sh-beta@localhost ~]$ yum list installed | grep freetype
freetype.i386 2.2.1-28.el5_7.2 installed
freetype.x86_64 2.2.1-28.el5_7.2 installed
[sh-beta@localhost ~]$ sudo yum update freetype-2.2.1-31.el5_8.1
<...snip...>
[sh-beta@localhost ~]$ yum list installed | grep freetype
freetype.i386 2.2.1-31.el5_8.1 installed
freetype.x86_64 2.2.1-31.el5_8.1 installed
[sh-beta@localhost ~]$
Что тут происходит? Как я могу это исправить? Понижение версии - это последнее средство на моих серверах, поскольку у меня есть другие пакеты, которые зависят от версии 2.4.
Если вам не нужна версия i386 freetype
затем удалите его:
rpm -e freetype.i386
Если он вам нужен или от него зависят другие системные пакеты, сделайте это вместо этого: перестройте его для i386. Это довольно тривиально, если у вас все еще есть исходный RPM, сгенерированный при бэкпорте.
yum install mock
mock -r epel-5-i386 freetype-2.4.src.rpm