Kompilowanie i instalowanie oprogramowania jest problemem i problemem, którego nie mogę rozwiązać. Chcę po prostu zrozumieć moje rozumienie tego procesu z kimś bardziej kompetentnym, aby oczyścić umysł i przejść do następnego poziomu.
Wiele potrzebnych mi programów naukowych nie jest rozpowszechnianych jako pakiety. Rozumiem, że „./configure” ustawia zmienne kompilacji i sprawdzanie zależności „make” czy kompilacja „sudo make install” umieszcza wszystkie biblioteki i pojemniki na swoich miejscach. Jednak to nigdy nie działa. Rzadko wychodzę z etapu a) „./configure” bez wchodzenia w piekło zależności, a jeśli to zrobię, b) „sudo make install” prawdopodobnie nuke moje urządzenie.
a) Piekło zależności jest bardzo frustrujące. Czasami mam bibliotekę, ale to mi się nie podoba. Lub biblioteka nie chce się instalować. Lub „konfiguruj” nie może go znaleźć. Albo moja dystrybucja umieściła go gdzieś, gdzie nie powinno być. Lub są dwie wersje w moim systemie. Problem polega na tym, że nie rozumiem, jak zdiagnozować, a zatem naprawić te problemy. Jakie są dobre referencje dla kogoś, kto nie musi zostać programistą?
b) Rozumiem, że „make install” zastąpi niektóre biblioteki i zmieni ustawienia bez wiedzy mojego menedżera pakietów. Dlatego niektóre programy nie będą działać, innych nie można zaktualizować. Jeśli więc nie użyję polecenia „make install” i po prostu trzymam skompilowany plik binarny w moim katalogu użytkownika z dowiązaniem symbolicznym dodanym do ŚCIEŻKI, to czy będę w porządku?
Moje urządzenie jest jednoosobowe, ma mnóstwo darmowego HD, więc tak naprawdę nie dbam o to, aby mieć wiele (kilkadziesiąt) kopii bibliotek, jeśli to rozwiąże moje problemy. Przestrzeń jest tania.
apt-get build-dep <package>
do automatycznej instalacji niezbędnych zależności.Odpowiedzi:
Większość pakietów będzie miała
<package>-dev
(dla Debiana) lub<package>-devel
(dla Red Hata), które będą bibliotekami potrzebnymi do tworzenia linków.Na przykład, jeśli źródło mówi, że to wymaga
libxml
, w systemach opartych na Debianie znajdzieszlibxml2
ilibxml2-dev
(użyj,apt-cache search <dependancy>
aby je znaleźć).Musisz
libxml2-dev
go zbudować ilibxml2
uruchomić../configure
Krok zazwyczaj obsługuje flagi podoba--with-libxml=/usr/lib/
wskazać je w odpowiednich bibliotekach (./configure --help
należy wymienić wszystkie opcje). Zwykle obsługuje także zmianę lokalizacji instalacji--prefix=$HOME/sw
. Używanie przedrostka poza tym, co kontroluje menedżer pakietów, jest najlepszym sposobem uniknięcia konfliktów z oprogramowaniem zainstalowanym przez menedżera pakietów.Na Debianie i instrumentach pochodnych korzystanie
--prefix
z/usr/local/
lub/opt/local/
powinno być bezpieczne.Jeśli potrzebna biblioteka (lub wersja) nie jest dostępna w menedżerze pakietów, wystarczy pobrać źródło i skompilować je przy użyciu podobnych opcji. Co najważniejsze, użyj
--prefix
zewnętrznego menedżera pakietów i podczas kompilacji oprogramowania, którego naprawdę chcesz używać--with-<library>=/<path/to/installed/library>
.źródło
Istnieje narzędzie,
auto-apt
którego można do tego użyć.Od man auto-apt :
Używa się go w następujący sposób:
Innym sposobem jest użycie
apt-get build-dep <package>
w dystrybucji opartej na Debianie.źródło
apt-get build-dep <package>
pracował dla mnie. Frustrowanie./configure
się w kółko, aby nauczyć się jeszcze jednego wymaganego pakietu!W przypadku dystrybucji opartych na RPM możesz spróbować swoich sił w tworzeniu odpowiednich pakietów (nie jest to takie trudne ...).
Korzyści z posiadania odpowiedniego pakietu polegają na tym, że menedżer pakietów śledzi oprogramowanie i można łatwo replikować ustawienia w innym miejscu / na następnym komputerze. Przy właściwym przesyłaniu pakietu źródłowego do przodu (nowa wersja, poprawka błędów, zaktualizowane biblioteki podstawowe) jest łatwiejsze niż wymyślenie tego od zera następnym razem.
źródło