Poldek i multilib
Jacek Konieczny
jajcus w jajcus.net
Pon, 15 Maj 2006, 19:32:41 CEST
Poldek z opcją "multilib" w systemie z podwójną architekturą ma
drobny problem polegający na tym, że do usunięcia zaznaczane są pakiety
wszystkich architektur, a nie tylko tej, której dotyczy operacja. Sam RPM
zachowuje się lepiej, bo nie rusza pakietów z innej architektury. Wydaje mi się,
że poprawka do Poldka byłaby banalna, niestety nie umiem znaleźć fragmentu kodu
odpowiedzialnego za wybranie pakietów do odinstalowania. Mógłby się temu
przyjrzeć ktoś lepiej znający Poldka?
Na razie radzę sobie z "just-install" i "uninstall --nodeps --nofollow", ale to
ani wygodne, ani eleganckie.
Poniżej fragmenty sesji z poldkiem i rpmem, z komentarzami:
poldek:/all-avail> ls -I poldek
poldek-0.20-6.amd64
poldek-0.20-6.i686
2 packages
(aktywne jest tylko amd64, więc i686 mogę usunąć)
poldek:/all-avail> uninstall poldek-0.20-6.i686
mark poldek-0.20-6.i686
mark poldek-0.20-6.amd64
Processing dependencies...
There are 2 packages to remove:
R poldek-0.20-6.i686, poldek-0.20-6.amd64
Proceed? [y/N]
(... a poldek chce usuwać oba :-()
RPM nie widzi problemu:
# rpm -e poldek-0.20-6.i686
#
poldek:/all-avail> ls -I poldek
poldek-0.20-6.amd64
1 package
Druga sprawa, to wszelkie upgrade'y w przypadku gdy pakiet (zwykle biblioteka) jest zainstalowany
dla dwóch architektur:
poldek:/all-avail> ls -I libselinux
libselinux-1.26-1.i686
libselinux-1.28-2.amd64
2 packages
poldek:/all-avail> upgrade libselinux-1.28-2.i686
Processing dependencies...
libselinux-1.26-1.i686 obsoleted by libselinux-1.28-2.i686
libselinux-1.28-2.amd64 obsoleted by libselinux-1.28-2.i686
greedy upgrade libselinux-devel-1.26-1.i686 to 1.28-2 (unresolved libselinux = 1.26-1)
libselinux-devel-1.26-1.i686 obsoleted by libselinux-devel-1.28-2.i686
error: libselinux.so.1()(64bit) is required by rpm-lib-4.4.2-31.amd64
error: libselinux.so.1()(64bit) is required by rpm-4.4.2-31.amd64
error: libselinux.so.1()(64bit) is required by poldek-libs-0.20-6.amd64
error: libselinux.so.1()(64bit) is required by poldek-0.20-6.amd64
error: libselinux.so.1()(64bit) is required by pam-libs-0.80.1-9.amd64
libselinux-1.28-2.i686 marks libsepol-1.10-2.i686 (cap libsepol.so.1)
libsepol-1.10-2.amd64 obsoleted by libsepol-1.10-2.i686
There are 3 packages to install (2 marked by dependencies), 4 to uninstall:
I libselinux-1.28-2.i686
D libselinux-devel-1.28-2.i686, libsepol-1.10-2.i686
R libselinux-devel-1.26-1.i686, libselinux-1.26-1.i686, libselinux-1.28-2.amd64, libsepol-1.10-2.amd64
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Need to get 184.6KB of archives (184.6KB to download).
After unpacking 395.8KB will be used.
error: 5 unresolved dependencies
There were errors
Sam upgrade robi już RPM, a on taki głupi nie jest. Wystarczy, że dodam --nodeps, żbey poldek olał zależności:
...
Preparing... ########################################### [100%]
1:libselinux-devel ########################################### [ 33%]
2:libsepol ########################################### [ 67%]
3:libselinux ########################################### [100%]
poldek:/all-avail> ls -I libselinux
libselinux-1.28-2.i686
1 package
Poldek twierdzi, że usunął pakiet amd64... ale...
# rpm -q libselinux --queryformat '%{name} %{arch}\n'
libselinux amd64
libselinux i686
Po "touch /var/lib/rpm/*" i restarcie poldka:
poldek:/all-avail> ls -I libselinux
libselinux-1.28-2.amd64
libselinux-1.28-2.i686
2 packages
Pozdrowienia,
Jacek
Więcej informacji o liście dyskusyjnej pld-devel-pl