Czy lepiej jest skompilować ze źródła lub zainstalować z pakietu .deb?

18

Czasami, gdy pobieram oprogramowanie z Internetu, okazuje się, że jest gotowy pakiet .deb do mojego Debiana / Ubuntu, a także tarballa do skompilowania. Na początku używałbym tego pakietu ze względu na łatwość instalacji i nie odważyłbym się nawet na kompilację. Nawet dźwięk tego mnie trochę przestraszył. Jednak w dzisiejszych czasach, gdy mam taką opcję, czasami mam dylemat: czy kompilacja ze źródła jest niepopularna w porównaniu z pakietem .deb? Mam nadzieję, że się tutaj dowiem, dziękuję.

the_midget_17
źródło

Odpowiedzi:

24

Zaletą kompilacji ze źródła jest to, że możesz kompilować pakiety z pewnymi flagami / opcjami, których może brakować / być wyłączone w standardowych pakietach Ubuntu. Ponadto ułatwia zainstalowanie wielu wersji tego samego programu. Możesz także wybrać dokładną wersję pakietu, który może być już usunięty z repozytoriów Ubuntu lub nie być jeszcze obecny (przykład: Mam kilka wersji Python 2.4.x w moim katalogu / opt /, ponieważ potrzebuję go, aby uruchomić starszą wersję oprogramowanie).

Wadą kompilacji ze źródła jest to, że o ile nie zbudujesz .deb, a następnie go nie zainstalujesz, normalna procedura „./configure; make; sudo make install” całkowicie uniemożliwia menedżerowi pakietów Ubuntu zmian, które wprowadzasz, więc nie otrzymają żadnych aktualizacji dla ręcznie skompilowanego oprogramowania; i możliwe, że menedżer pakietów później zastąpi / zepsuje pakiet, jeśli nie będziesz ostrożny, aby zainstalować go w oddzielnym miejscu.

Krótko mówiąc: zawsze najpierw rozważ instalację ze standardowych repozytoriów Ubuntu, a następnie rozważ zainstalowanie .deb; kompiluj tylko ze źródeł, jeśli wiesz dokładnie, dlaczego musisz to zrobić.

Siergiej
źródło
Przeczytałem również, jaka może być wydajność pakietu, kiedy jest skompilowany, rodzaj lepszej zgodności z bieżącym jądrem. Nie porównałem go osobiście.
Fedir RYKHTIK,
@Fedir: Nie jestem pewien, czy jądro ma coś z tym wspólnego, jest to raczej architektura procesora - na przykład w dawnych czasach wiele dystrybucji zawierało pakiety skompilowane z zestawem instrukcji 80386 dla maksymalnej kompatybilności, a ręczne kompilowanie programu dla Pentium to umożliwiłoby korzystać z bardziej wydajnych instrukcji. Z tego powodu istnieją całe dystrybucje, takie jak Gentoo, które są kompilowane ze źródła na maszynie głównej. Różnica jest jednak zwykle minimalna i można ją zauważyć tylko w bardzo specyficznych zastosowaniach.
Sergey
1
Zauważ, że użycie checkinstall zamiast make install łagodzi wiele wspomnianych wad. Zobacz help.ubuntu.com/community/CompilingEasyHowTo
ndemou
1
Przepraszam za nitpicking, @EliahKagan, ale chociaż virtualenv jest niesamowity, to bardziej służy do utrzymywania wielu środowisk Python z zainstalowanymi różnymi bibliotekami lib. Jeśli potrzebujesz konkretnej wersji Pythona, być może skompilowanej z określonymi ustawieniami - nadal musisz zainstalować rzeczywisty plik binarny - albo z .deb, albo skompilowany od podstaw.
Siergiej
@Sergey Masz rację. (I nie widzę nic, co powiedziałeś jako nitpickiing - jeśli cokolwiek powinienem przeprosić za mój zły i wprowadzający w błąd komentarz!) Rozumiem, że menedżerowie pakietów, jak condato, automatycznie tworzą środowiska wirtualne i instalują dla nich różne instalacje Pythona , tworzenie i utrzymywanie wersji dla poszczególnych projektów. Ale jak mówisz, virtualenv sam tego nie zrobi.
Eliah Kagan
1

Kłóciłem się o to wczoraj. Uważam, że niezwykle ważne jest, aby nie budować niczego kruchego, ponieważ wiadomo, że nie ma czegoś takiego jak aktualna i dobra dokumentacja, szczególnie gdy pracujesz z delikatnym systemem, nie będzie czasu na walkę z ogniem i pisanie dokumentacja, a tam gdzie wszystko jest solidne, dokumentacja nie jest tak bardzo potrzebna. Dlatego nigdy nie należy nigdy kompilować ze źródła, znajdować innego rozwiązania, używać innego oprogramowania, zmieniać architektury, ale nie używać czegoś, co ulegnie awarii po aktualizacji. I tak, nie ma to nic wspólnego z wersją jądra, chodzi o architekturę twojego komputera, a w dzisiejszych czasach trudno jest uzyskać znaczącą różnicę przy kompilacji z kodu źródłowego, założę się, że nie dostaniesz żadnej.

Edik Mkoyan
źródło
0

Z pewnością znacznie łatwiej jest zainstalować .deb, chociaż jeśli możesz, najlepszym rozwiązaniem jest znalezienie go w repozytorium lub ppa, abyś mógł otrzymywać aktualizacje.

AFAIK nie ma prawdziwej korzyści z samodzielnego skompilowania go, chyba że planujesz go najpierw zmienić. Jeśli chcesz tylko oprogramowanie w obecnej postaci, zainstaluj .deb

Chris Wayne
źródło