Назад | Перейти на главную страницу

Конфликт пакетов yum между разными архитектурами

У меня есть машина с 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, сгенерированный при бэкпорте.

  • Установите репозиторий EPEL
  • yum install mock
  • mock -r epel-5-i386 freetype-2.4.src.rpm