Substituindo libpng-devel (1.5.3) por RPMs libpng12-devel no CentOS

4

Eu tenho uma caixa do CentOS 6.4 com muitos outros RPMs.

Eu quero substituir o libpng-devel pelo libpng12.devel. Se eu fizer um rpm -e libpng-devel , recebo o seguinte:

error: Failed dependencies:
    pkgconfig(libpng) is needed by (installed) cairo-devel-1.10.2-7.el6.x86_64
    pkgconfig(libpng15) is needed by (installed) gdk-pixbuf2-devel-2.26.1-1.el6.x86_64
    libpng-devel is needed by (installed) cairo-devel-1.10.2-7.el6.x86_64
    libpng-devel is needed by (installed) gtk2-devel-2.24.10-1.el6.x86_64
    libpng-devel(x86-64) = 2:1.5.13-2.el6 is needed by (installed) libpng-static-2:1.5.13-2.el6.x86_64

Apagar esses me leva a um buraco de coelho.

Eu tentei fazer o downgrade do yum e recebi o seguinte:

[mono@localhost ~]$ sudo yum downgrade libpng
Loaded plugins: fastestmirror
Setting up Downgrade Process
Loading mirror speeds from cached hostfile
 * base: mirror.net.cen.ct.gov
 * extras: mirror.dattobackup.com
 * rpmforge: repoforge.mirror.constant.com
 * updates: mirror.umd.edu
Resolving Dependencies
--> Running transaction check
---> Package libpng.x86_64 2:1.2.49-1.el6_2 will be a downgrade
---> Package libpng.x86_64 2:1.5.13-2.el6 will be erased
--> Finished Dependency Resolution
Error: Package: gdk-pixbuf2-devel-2.26.1-1.el6.x86_64 (installed)
           Requires: libpng15.so.15()(64bit)
           Removing: 2:libpng-1.5.13-2.el6.x86_64 (installed)
               libpng15.so.15()(64bit)
           Downgraded By: 2:libpng-1.2.49-1.el6_2.x86_64 (base)
               Not found
Error: Package: 2:libpng-devel-1.5.13-2.el6.x86_64 (installed)
           Requires: libpng(x86-64) = 2:1.5.13-2.el6
           Removing: 2:libpng-1.5.13-2.el6.x86_64 (installed)
               libpng(x86-64) = 2:1.5.13-2.el6
           Downgraded By: 2:libpng-1.2.49-1.el6_2.x86_64 (base)
               libpng(x86-64) = 2:1.2.49-1.el6_2
Error: Package: 2:libpng-devel-1.5.13-2.el6.x86_64 (installed)
           Requires: libpng15.so.15()(64bit)
           Removing: 2:libpng-1.5.13-2.el6.x86_64 (installed)
               libpng15.so.15()(64bit)
           Downgraded By: 2:libpng-1.2.49-1.el6_2.x86_64 (base)
               Not found
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
[mono@localhost ~]$

Desclassificar os outros me levou a um rabbithole semelhante.

Eu tentei localinstall / localupdate e eles não parecem funcionar:

[mono@localhost ~]$ sudo yum --nogpgcheck localinstall ~/rpmbuild/RPMS/x86_64/libpng12-devel-1.2.50-3.el6.x86_64.rpm
Loaded plugins: fastestmirror
Setting up Local Package Process
Examining /home/mono/rpmbuild/RPMS/x86_64/libpng12-devel-1.2.50-3.el6.x86_64.rpm: libpng12-devel-1.2.50-3.el6.x86_64
Marking /home/mono/rpmbuild/RPMS/x86_64/libpng12-devel-1.2.50-3.el6.x86_64.rpm to be installed
Loading mirror speeds from cached hostfile
 * base: mirror.net.cen.ct.gov
 * extras: mirror.dattobackup.com
 * rpmforge: repoforge.mirror.constant.com
 * updates: mirror.umd.edu
Resolving Dependencies
--> Running transaction check
---> Package libpng12-devel.x86_64 0:1.2.50-3.el6 will be installed
--> Processing Conflict: libpng12-devel-1.2.50-3.el6.x86_64 conflicts libpng-devel
No package matched to upgrade: libpng12-devel
--> Finished Dependency Resolution
Error: libpng12-devel conflicts with 2:libpng-devel-1.5.13-2.el6.x86_64
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
[mono@localhost ~]$ sudo yum --nogpgcheck localupdate ~/rpmbuild/RPMS/x86_64/libpng12-devel-1.2.50-3.el6.x86_64.rpm
Loaded plugins: fastestmirror
Setting up Local Package Process
Examining /home/mono/rpmbuild/RPMS/x86_64/libpng12-devel-1.2.50-3.el6.x86_64.rpm: libpng12-devel-1.2.50-3.el6.x86_64
Package libpng12-devel not installed, cannot update it. Run yum install to install it instead.
Nothing to do
[mono@localhost ~]$

Existe alguma maneira de excluir um rpm e adicionar outro no mesmo comando? Existe uma transação RPM multi-comando? Transações de RPM parecem ser para auditoria histórica, então acho que estou pesquisando a palavra errada. Eu preciso trocar muito esses RPMs no meu sistema, então se houver uma maneira de vinculá-los, modificando a especificação do rpm e reconstruindo, isso também é aceitável.

    
por Justin Dearing 15.09.2013 / 15:31

2 respostas

3

Você normalmente não faz uma remoção ( -e ) e, em seguida, uma instalação. Isso fará com que o RPM queira remover qualquer aplicativo que dependa desse RPM. Em vez disso, você quer fazer um upgrade.

$ rpm -Uvh libpng12-devel

Se este pacote for de fato uma queda na atualização para "libpng", ele será removido e instalado como um único movimento, pacificando as dependências.

Use yum

Além disso, eu usaria yum para fazer isso também, é capaz de te ajudar mais do que apenas RPMs regulares com coisas mais complicadas como essa. Use este comando:

$ yum update libpng12-devel

Você também pode instalar RPMs locais com yum :

$ yum --nogpgcheck localinstall libpng12-devel....rpm

Isso muitas vezes oferecerá sugestões sobre como lidar melhor com esses tipos de operações de gerenciamento de pacotes mais complicadas.

    
por 15.09.2013 / 16:31
1

Sim, libpng é uma bagunça quente. Aqui estão algumas dicas:

Primeiro, uma verificação de sanidade:

package-cleanup --cleandupes

O swap geralmente funciona, mas pode exigir um pouco de experimentação:

yum swap -- install libpng12 libpng12-devel -- remove libpng libpng-devel

E se você estiver se sentindo esperto, você pode pular a verificação multilib:

--setopt=protected_multilib=false
    
por 02.08.2014 / 03:29

Tags