ia32-apt-get - instalacja, użytkowanie, usuwanie

Archiwalne, stare wpisy FAQ i HowTo Użytkowników
ArnVaker

ia32-apt-get - instalacja, użytkowanie, usuwanie

Post autor: ArnVaker »

Ujmując sprawę w dużym uproszczeniu - ia32-apt-get umożliwia instalację 32-bitowych pakietów na 64-bitowym systemie, bezpośrednio z repozytoriów zawierających 32-bitowe pakiety.
  • Opis dotyczy ia32-apt-get w wersji 22. System to Debian Sid amd64.
Przed rozpoczęciem instalacji ia32-apt-get należy pozbyć się wszystkiego, co jest związane z ia32-libs, samego ia32-libs oraz pakietów od niego zależących.

Osobiście używam tylko aptitude. Używający apt-get powinni nadal używać apt-get.

Kod: Zaznacz cały

aptitude update
aptitude purge --purge ~nia32
aptitude safe-upgrade

Kod: Zaznacz cały

aptitude dist-upgrade
(jeżeli wszystkie zależności są spełnione)

Kod: Zaznacz cały

deborphan
Jeśli deborphan coś znajdzie, również można się tego "znaleziska" pozbyć.

Kod: Zaznacz cały

aptitude purge ~c
rm -r /emul
Z tak przygotowanym systemem można przystąpić do instalacji ia32-apt-get.

Kod: Zaznacz cały

aptitude install ia32-apt-get
Zostaniemy zapytani, do jakich 32-bitowych pakietów chcemy mieć dostęp. Do wyboru mamy: tylko biblioteki oraz wszystkie pakiety. Pierwsza opcja z założenia jest bezpieczniejsza, jeżeli jednak chcemy zainstalować na przykład 32-bitowe wine, należy wybrać wszystkie pakiety.

Przed zaktualizowaniem listy pakietów z wykorzystaniem ia32-apt-get warto poczynić pewne przygotowania dla zachowania porządku w systemie.
  1. Skopiowanie listy pakietów do lokalizacji używanej przez ia32-apt-get. W przypadku pominięcia tego kroku nie zostaną uwzględnione informacje o automatycznie zainstalowanych pakietach.

    Kod: Zaznacz cały

    cp /var/lib/apt/extended_states /var/lib/ia32-apt/
    mv /var/lib/apt/extended_states /var/lib/apt/extended_states.old
  2. Skopiowanie pobranych wcześniej pakietów do lokalizacji używanej przez ia32-apt-get.

    Kod: Zaznacz cały

    cp /var/cache/apt/archives/*.deb /var/cache/ia32-apt/archives/
  3. ia32-apt-get nie używa pliku /etc/apt/sources.list. Pozbycie się go zapobiegnie przypadkowym pomyłkom podczas użytkowania.

    Kod: Zaznacz cały

    mv /etc/apt/sources.list /etc/apt/sources.list.old
  4. Wyczyszczenie listy pakietów dostępnych dla dotychczas używanych narzędzi. Zapobiegnie to przypadkowym pomyłkom podczas użytkowania.

    Kod: Zaznacz cały

    aptitude update
  5. Usunięcie pobranych pakietów (zostały wcześniej skopiowane do nowej lokalizacji). Nie ma sensu trzymać tych samych pakietów w dwóch miejscach w systemie.

    Kod: Zaznacz cały

    aptitude clean
Od tej chwili możemy zapomnieć o pliku /etc/apt/sources.list, wszystkie wpisy repozytoriów należy umieszczać w /etc/ia32-apt/sources.list. Mój plik /etc/ia32-apt/sources.list:

Kod: Zaznacz cały

deb [url]http://ftp.pl.debian.org/debian/[/url] lenny main contrib non-free
deb [url]http://ftp.pl.debian.org/debian/[/url] squeeze main contrib non-free
deb [url]http://ftp.pl.debian.org/debian/[/url] sid main contrib non-free
deb [url]http://ftp.pl.debian.org/debian/[/url] experimental main contrib non-free

deb [url]http://www.debian-multimedia.org[/url] sid main
deb [arch=amd64] [url]http://www.debian-multimedia.org[/url] experimental main

deb [url]http://sidux.com/debian/[/url] sid main contrib non-free fix.main fix.contrib fix.non-free
deb [url]http://deb.opera.com/opera/[/url] sid non-free
deb [url]http://download.virtualbox.org/virtualbox/debian/[/url] lenny non-free
deb [url]http://kernel-archive.buildserver.net/debian-kernel/[/url] trunk main
deb [arch=i386] [url]http://download.skype.com/linux/repos/debian/[/url] stable non-free
  • [arch=amd64] - pod uwagę będą brane wyłącznie 64-bitowe pakiety,
  • [arch=i386] - pod uwagę będą brane wyłącznie 32-bitowe pakiety,
  • w przypadku braku dodatkowego wpisu pobrana zostanie zarówno lista pakietów 64-bitowych, jak i 32-bitowych, dostępnych w danym repozytorium.
Zawsze po dokonaniu zmian w /etc/ia32-apt/sources.list należy wykonać polecenie:

Kod: Zaznacz cały

/usr/share/ia32-apt-get/convert-all-sources.list
W oparciu o /etc/ia32-apt/sources.list zostaną wygenerowane osobne listy dla poszczególnych architektur. Jeśli mamy już przygotowane wpisy, można przystąpić do aktualizacji listy pakietów:

Kod: Zaznacz cały

ia32-aptitude update
Jeżeli pojawi się komunikat o niewystarczającej ilości pomięci podręcznej, należy zwiększyć jej rozmiar, wykorzystując do tego plik /etc/apt/apt.conf.

Kod: Zaznacz cały

nano /etc/apt/apt.conf

Kod: Zaznacz cały

APT::Cache-Limit "100000000";
Po czym ponownie wykonać polecenie:

Kod: Zaznacz cały

ia32-aptitude update
Zanim zaczniemy cokolwiek instalować, należy ustawić 32-bitowym pakietom niższy priorytet niż 64-bitowym, aby zapobiec niezamierzonemu wymieszaniu pakietów.

Kod: Zaznacz cały

nano /etc/apt/preferences
Mój plik /etc/apt/preferences:

Kod: Zaznacz cały

Package: *
Pin: release a=experimental-i386
Pin-Priority: 400

Package: *
Pin: release a=unstable-i386
Pin-Priority: 400

Package: *
Pin: release a=testing-i386
Pin-Priority: 400

Package: *
Pin: release a=stable-i386
Pin-Priority: 400

Package: *
Pin: release a=unstable
Pin-Priority: 800

Package: *
Pin: release a=experimental
Pin-Priority: 700

Package: *
Pin: release a=testing
Pin-Priority: 600

Package: *
Pin: release a=stable
Pin-Priority: 500

Package: libc6
Pin: release a=unstable
Pin-Priority: 1050

Package: libc6-i386
Pin: release a=unstable
Pin-Priority: 1050

Package: libc6-dev
Pin: release a=unstable
Pin-Priority: 1050

Package: aptitude
Pin: release a=unstable
Pin-Priority: 1050
Od tej pory do zarządzania pakietami (aktualizacji, instalacji, usuwania, wyszukiwania) należy używać wyłącznie narzędzi wspieranych przez ia32-apt-get, dodając na początku "ia32". Graficzne menedżery pakietów nie są na razie wspierane.
  • ia32-dpkg zamiast dpkg
  • ia32-dpkg-deb zamiast dpkg-deb
  • ia32-apt-get zamiast apt-get
  • ia32-apt-cache zamiast apt-cache
  • ia32-aptitude zamiast aptitude
Wszystko gotowe, można przystąpić do dalszej instalacji.

Instalacja Wine:

Kod: Zaznacz cały

# ia32-aptitude search wine |awk '{print $2}'
arc-wine
gnome-wine-icon-theme
ia32-libkwineffects1
ia32-libwine
ia32-libwine-alsa
ia32-libwine-capi
ia32-libwine-cms
ia32-libwine-dbg
ia32-libwine-dev
ia32-libwine-esd
ia32-libwine-gl
ia32-libwine-gphoto2
ia32-libwine-jack
ia32-libwine-ldap
ia32-libwine-nas
ia32-libwine-oss
ia32-libwine-print
ia32-libwine-sane
ia32-libwine-twain
ia32-wine
ia32-wine-bin
ia32-wine-utils
libkwineffects1
libwine
libwine-alsa
libwine-capi
libwine-cms
libwine-dbg
libwine-dev
libwine-esd
libwine-gl
libwine-gphoto2
libwine-jack
libwine-ldap
libwine-nas
libwine-oss
libwine-print
libwine-sane
libwine-twain
shiki-wine-theme
wine
wine-bin
wine-doc
wine-utils
Wersja wine poprzedzona przez "ia32" pochodzi z 32-bitowego repozytorium.

Kod: Zaznacz cały

# ia32-apt-cache policy ia32-wine
ia32-wine:
  Zainstalowana: (brak)
  Kandydująca: 1.0.1-2~22
  Tabela wersji:
     1.1.24-1~22 0
        400 [url]http://ftp.pl.debian.org[/url] experimental-i386/main Packages
     1.0.1-2~22 0
        400 [url]http://ftp.pl.debian.org[/url] squeeze-i386/main Packages
        400 [url]http://ftp.pl.debian.org[/url] sid-i386/main Packages
     1.0.1-1~22 0
        400 [url]http://ftp.pl.debian.org[/url] lenny-i386/main Packages

Kod: Zaznacz cały

ia32-aptitude install ia32-wine
ia32-aptitude purge libnss-mdns
A jak ktoś woli wersję z repozytorium experimental:

Kod: Zaznacz cały

ia32-aptitude -t experimental install ia32-wine
ia32-aptitude purge libnss-mdns
Instalacja Skype:

Kod: Zaznacz cały

# ia32-aptitude search skype |awk '{print $2}'
bitlbee-plugin-skype
python-skype
skype
skyped
Skype dostępny jest wyłącznie w 32-bitowym repozytorium, zatem jego nazwa nie jest poprzedzona przez "ia32".

Kod: Zaznacz cały

# ia32-apt-cache policy skype
skype:
  Zainstalowana: (brak)
  Kandydująca: 2.0.0.72-1~22
  Tabela wersji:
     2.0.0.72-1~22 0
        500 [url]http://download.skype.com[/url] stable-i386/non-free Packages

Kod: Zaznacz cały

ia32-aptitude install skype
Zainstalowane w ten sposób programy działają prawidłowo.


Warto jeszcze ułatwić sobie trochę życie, poprzez utworzenie kilku aliasów.

Jako root:

Kod: Zaznacz cały

nano /root/.bashrc

Kod: Zaznacz cały

alias dpkg='ia32-dpkg'
alias dpkg-deb='ia32-dpkg-deb'
alias aptitude='ia32-aptitude'
alias apt-get='ia32-apt-get'
alias apt-cache='ia32-apt-cache'
alias sources='nano /etc/ia32-apt/sources.list && /usr/share/ia32-apt-get/convert-all-sources.list'
Jako zwykły użytkownik:

Kod: Zaznacz cały

nano ~/.bashrc

Kod: Zaznacz cały

alias dpkg='ia32-dpkg'
alias dpkg-deb='ia32-dpkg-deb'
alias aptitude='ia32-aptitude'
alias apt-get='ia32-apt-get'
alias apt-cache='ia32-apt-cache'
Po wprowadzeniu zmian należy się wylogować i ponownie zalogować.

Dzięki takim zabiegom korzystanie z ia32-apt-get staje się bardziej "przyjazne".



Usuwanie ia32-apt-get. (Przy założeniu, że został zainstalowany według opisu.)
  1. Najlepiej w pełni zaktualizować system przed tym zabiegiem.

    Kod: Zaznacz cały

    ia32-aptitude update
    ia32-aptitude safe-upgrade

    Kod: Zaznacz cały

    ia32-aptitude dist-upgrade
    (jeżeli wszystkie zależności są spełnione)
  2. Usunięcie aliasów związanych z ia32-apt-get, jeżeli zostały utworzone.
  3. Skopiowanie aktualnej listy pakietów do "starej" lokalizacji.

    Kod: Zaznacz cały

    cp /var/lib/ia32-apt/extended_states /var/lib/apt/
  4. Skopiowanie pobranych pakietów do "starej" lokalizacji.

    Kod: Zaznacz cały

    cp /var/cache/ia32-apt/archives/*.deb /var/cache/apt/archives/
  5. Usunięcie pobranych pakietów z lokalizacji używanej przez ia32-apt-get.

    Kod: Zaznacz cały

    ia32-aptitude clean
  6. Przywrócenie "starej" listy repozytoriów.

    Kod: Zaznacz cały

    mv /etc/apt/sources.list.old /etc/apt/sources.list
  7. Kolejne polecenia należy wykonać bez użycia narzędzi "ia32". Warto się upewnić, że nie są ustawione żadne aliasy związane z ia32-apt-get.

    Kod: Zaznacz cały

    aptitude update
    aptitude safe-upgrade
    aptitude purge --purge ~nia32
    aptitude safe-upgrade
    orphaner
    aptitude purge ~c
    aptitude autoclean
Po takich operacjach system powróci do stanu sprzed instalacji ia32-apt-get, z uwzględnieniem wszystkich zmian wykonanych za pomocą narzędzi "ia32".
Zablokowany