Co się stało z pakietem ia32-libs?


104

ia32-libsPakiet nie jest już obecne w repozytoriach Ubuntu 12.04 dla systemu 64-bitowego. Czy są dostępne jakieś dostępne pakiety zastępcze do pobrania?



2
+1, chciałem zadać dokładnie to samo pytanie. SO ma naprawdę świetne sugestie dotyczące pytań!
ulidtko

Odpowiedzi:


97

Pakiet ia32-libs był włamaniem do zainstalowania pakietów 32-bitowych w instalacji 64-bitowej. Od wersji Ubuntu 11.10 (Oneiric) dodano Multi Arch . Jednym z celów jest usunięcie ia32-libspakietu. Zamiast tego musisz zainstalować 32-bitowe biblioteki pakietu z:

sudo apt-get install package-name:i386

Nie musisz się o to martwić w przypadku pakietów w standardowych repozytoriach (np. winePakiecie). W przypadku oprogramowania zewnętrznego jest to nieco trudniejsze, ponieważ musisz ręcznie znaleźć zależności. W takim przypadku użyj swojej ulubionej wyszukiwarki, aby znaleźć biblioteki, których potrzebujesz.

Wygląda na to, że ia32-lib nadal istnieją, ale jedynie jako pakiet wygody obejmujący wspólne biblioteki 32-bitowe. Ten pakiet używa teraz Multi Arch do prawidłowej instalacji pakietów 32-bitowych.


17
Cóż, jak można znaleźć wszystkie zależności i pierwszą instalację: i386 z nich?
user117

10
@wingman Run ldd, przekazując ścieżkę do pliku binarnego jako argument. Jeśli dane wyjściowe zawierają wiersz podobny libz.so.1 => not found, musisz znaleźć libz.so.1. Możesz użyć Package.ubuntu.com lub apt-file searchznaleźć pakiet zawierający ten plik. W podanym przykładzie musisz zainstalować zlib1g:i386.
Lekensteyn,

1
Jestem na komputerze z Ubuntu 10.10. po kilku tutorialach na temat rozwoju Androida muszę zainstalować ia32-libs. Twoja odpowiedź mówi o 11.10, ale dla tego komputera? co muszę zrobić?
nkint,

1
@nkint 10.10 nie jest już obsługiwany. Jeśli chcesz kontynuować, musisz zmienić źródła pakietu . W 10.10 musisz zainstalować ia32-libs. Ale nawet wtedy nie ma gwarancji, że zestaw SDK systemu Android będzie z tym działał.
Lekensteyn

1
@FelipeMicaroniLalli Musisz zastąpić package-namerzeczywistą nazwą. Użyj, lddaby dowiedzieć się, patrz drugi komentarz powyżej.
Lekensteyn

43

Ubuntu 13.10

Co się stało?

ia32-libsPakiet został całkowicie zastąpiony lib32z1 lib32ncurses5 lib32bz2-1.0. Nie powinno to stanowić problemu, ponieważ jego funkcjonalność nadal istnieje, tylko w innych pakietach. Jednak nie żyjemy w idealnym świecie, w którym wszyscy przechowują swoje pakiety, a całe oprogramowanie to FLOSS, więc niektóre pakiety nadal zależą od ia32-lib.

Jak mogę zainstalować pakiet x, który zależy od ia32-libs

Istnieją 2 sposoby:

  1. Możesz przepakować go ręcznie, aby nie zależało ia32-libsjuż od niego. (preferowane)
  2. Możesz zainstalować ia32-libs z repozytorium Ubuntu 13.04 (Raring Ringtail) ( wcale nie preferowane !, tylko jeśli pierwsza metoda nie działa )

1. Zapakuj stare paczki

Jako przykładu użyję odbiornika citrix, ale możesz użyć tej metody dla dowolnego pakietu .deb:

Najpierw pobierz pakiet .deb odbiornika citrix ze strony internetowej i zrób hakowanie w katalogu tymczasowym.

mkdir ica_temp

Wyodrębnij paczkę

dpkg-deb -x icaclient_13.0.0.256735_amd64.deb ica_temp
dpkg-deb --control icaclient_13.0.0.256735_amd64.deb ica_temp/DEBIAN

Otwórz plik w gedit (lub ulubionym edytorze)

sudo -H gedit ica_temp/DEBIAN/control

Znajdź linię, która zaczyna się od Depends:.... usuń ia32-libsi dodajlib32z1 lib32ncurses5 lib32bz2-1.0

Odbuduj zmodyfikowany pakiet

dpkg -b ica_temp icaclient-modified.deb

I zainstaluj to

sudo dpkg -i icaclient-modified.deb
sudo apt-get install -f

Zainstalowanie odbiornika citrix również wymaga hakowania. Pełną instrukcję instalacji można znaleźć na wiki Ubuntu

Możesz to zrobić z dowolnym starym pakietem .deb, który nadal zależy od ia32-libs.

2. Zainstaluj ia32-libs z repozytorium Raring

Pamiętaj, że instalowanie starych pakietów jest bardzo złą praktyką! Niestety, w przypadku niektórych instalatorów binarnych nie masz innego wyboru.

Możesz pobrać pakiet ia32-libs z rzadkiego repozytorium . Pobierz go i zainstaluj ręcznie, a następnie zależności powinny zostać rozwiązane.


Co to jest „FOS”? Próbowałem: acronyms.thefreedictionary.com/FOS
Eliptyczny widok

1
@Elipticalview „Bezpłatne i otwarte oprogramowanie”. Zmieniono na FLOSS (darmowy / darmowy i oprogramowanie typu open source), co jest bardziej powszechne.
Galgalesh

„Przepakowywanie starych pakietów” działa głównie w Ubuntu 16.04 Xenial - wystarczy dodać kilka dostosowań do nazw pakietów, zwykle dodając przestrzeń nazw „: i386” na końcu nazw pakietów. Niektóre pakiety mają również inne nazwy, na przykład libbz2-1.0: i386
Christian Benke

6

Przeczytałem, że ia32-libs-multiarchzamiast tego powinieneś zainstalować pakiet. Jednak to nie zadziałało i pojawia się ten błąd

ia32-libs-multiarch:i386 : Depends: libgphoto2-2:i386 but it is not going to be installed.

Rozwiązaniem, które działało dla mnie, było zainstalowanie następujących pakietów:

sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386

Działa również dla elementarnego systemu operacyjnego luna
camelCaseD

4

Jeśli pojawi się ten błąd, spróbuj:

sudo apt-get update

Następnie spróbuj ponownie:

sudo apt-get install ia32-libs

Właśnie wykonałem nową instalację 12.04, ten pakiet jest nadal dostępny w repozytoriach. W rzeczywistości sam dostałem ten błąd, zanim uruchomiłem aktualizację. Potem działało dobrze.


1

Uważam, że ten konkretny przypadek użycia został zastąpiony pakietami „lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2”, co jest prawdopodobnie bardziej szczegółową i przydatną odpowiedzią niż stwierdzenie „możesz używać wielu programów”.


2
Co? W tym pytaniu nie ma konkretnego przypadku użycia.
gertvdijk

1
@gertvdijk: Sam pakiet reprezentuje ograniczony przypadek użycia; dla bardziej ogólnego celu możesz korzystać z wielu programów, ale dla osób, które korzystały wcześniej z tego jednego pakietu, wydaje się, że został on zastąpiony przez „lib32z1 lib32ncurses5 lib32bz2-1.0 lib32asound2”, który możesz zainstalować bez konieczności korzystania z multi-arch : obejmuje te same przypadki użycia, co poprzedni pakiet. Zasadniczo uznałem te odpowiedzi za nieprzydatne, ponieważ multi-arch był przesadny z powodu istnienia ia32-libs, był zaskoczony, że nie było bardziej bezpośredniego zastąpienia, i nie zawiodłem się, gdy zbadałem to dalej.
saurik

To była najprostsza odpowiedź, która rozwiązała dla mnie podobny problem. Chociaż wskazane biblioteki nie wydają się mieć nic wspólnego z uruchomieniem ogólnego pliku binarnego, działało.
Per Knytt,

-2

Zainstalowałem biblioteki ia32-lib w ten sposób (uruchamiam Ubuntu 13.04 Raring Ringtail na komputerze 64-bitowym):

Sprawdź własną architekturę:

$ dpkg --print-architecture

Sprawdź, czy jest zainstalowana obca architektura:

$ dpkg --print-foreign-architectures

W zależności od wyników dwóch powyższych poleceń mogą działać następujące trzy polecenia (w moim przypadku zajęło to dużo czasu):

$ sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install ia32-libs

4
Dostaję:Package ia32-libs is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: lib32z1 lib32ncurses5 lib32bz2-1.0
foobarbecue
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.