Wyróżnikiem Gentoo jest samodzielna kompilacja bibliotek i programów. Nie uważam tego za przesadnie sensowne (szkoda czasu i prądu) ale nawet pod Debianem i Ubuntu czasem trzeba. I warto wiedzieć jak.
Trzeba w dwóch wypadkach. Jednym jest przeciąganie pakietów z nowszej czy starszej dystrybucji. Drugi, rzadki, ma miejsce gdy developerom coś się nie uda. Tak jak nie udało się ostatnio:
$ pgadmin3 pgadmin3: relocation error: pgadmin3: symbol _ZN21wxMemoryFSHandlerBase19AddFileWithMimeTypeERK8wxStringPKvjS2_, version WXU_2.8 not defined in file libwx_baseu-2.8.so.0 with link time reference
Ups.
Ta urokliwa informacja oznacza, że
pgadmin3, dynamicznie zlinkowany zlibwx_baseu-2.8.so.0, nie znajduje w tej bibliotece potrzebnych funkcji. Prawdobnie autorzylibwxwgrali nową, niekompatybilną binarnie wersję (zgaduję, że jakaś metoda została przerobiona z pełnoprawnej funkcji na inline) ale zapomnieli przy tym o zmianie numeru.Niezależnie od winnego, najprostszym rozwiązaniem jest zrekompilowanie programu.
Niezbędne komendy są tylko nieznacznie trudniejsze od normalnej instalacji.
sudo apt-get build-dep pgadmin3 apt-get --compile source pgadmin3 sudo dpkg -i pgadmin3*.deb rm -rf pgadmin*.*
Wstępne build-dep sprawdza, czy są zainstalowane wszystkie potrzebne biblioteki i
narzędzia i w razie potrzeby je doinstalowuje (build-dep to skrót
od build dependencies czyli rzeczy potrzebne do zbudowania).
Główne apt-get source ściąga do bieżącego katalogu źródła pakietu z repozytorium (pliki
pgadmin3_1.10.2.orig.tar.gz - oryginalne źródła, pgadmin3_1.10.2-1.diff.gz - nakładane na nie zmiany
autorów dystrybucji, pgadmin3_1.10.2-1.dsc - opis pakietu, pgadmin3_1.10.2-1_i386.changes - opis zmian)
i rozpakowywuje całość w podkatalogu pgadmin3_1.10.2. Jeśli jest zadana opcja --compile zostaje
też od razu uruchomiona kompilacja (która potrafi trochę potrwać), jej efektem jest powstanie
jednego lub więcej pliku .deb (tu akurat powstają dwa, pgadmin3_1.10.2-1_i386.deb oraz
pgadmin3-data_1.10.2-1_all.deb).
Potem pozostaje te pliki zainstalować (zamiast dpkg -i można się
posłużyć także dwuklikiem) i skasować niepotrzebne już archiwa,
pakiety i katalog roboczy (tu oczywiście także, kto nie lubi rm,
może ciągać do kosza czy wciskać Del w nautilusie).
I już.
Oczywiście wszystkie numerki zależą od aktualnej wersji pakietu.
Uwaga: aby
apt-get sourcemogło działać, muszą być odkomentowane wierszedeb-srcw/etc/apt/sources.list(czyli adresy repozytoriów źródeł), co można też odklikać w konfiguracji aktualizacji.
Jeśli zachodzi potrzeba jakiegoś wpłynięcia na sposób kompilacji (tu akurat nie było to potrzebne ale zdarzyło mi się kiedyś poprawiać nazwę katalogu w Makefile jakiegoś egzotycznego pakietu, można też rozważyć korygowanie opcji optymalizacji), sekwencję odrobinę wydłużamy:
sudo apt-get build-dep pgadmin3 apt-get source pgadmin3 cd pgadmin3_1.10.2-1 # ... Tu ewentualne edycje dpkg-buildpackage sudo dpkg -i ../pgadmin3_1.10.2-1_i386.deb ../pgadmin3-data_1.10.2-1_all.deb rm -rf pgadmin*.*
Pierwszym kandydatem do edycji jest plik debian/rules, czyli główne
Makefile, ustalające min. sposób uruchomienia configure.