Co dokładnie robi --prefiks, gdy jest używany w ./configure?

29

Miałem więc proste pytanie, które prawdopodobnie sprawi, że będę wyglądał głupio, ale się uczę

Kiedy zrobię

./configure --prefix/usr/bin/

Co robi przedrostek? Czy to tylko instalacja pakietu w tej lokalizacji

I czy odpowiedź może dać bardziej skomplikowaną odpowiedź na skomplikowaną instalację i szczegółowo wyjaśnić związane z nią prefiksy i opcje.

Gdybym miał uruchomić apt-get install, w jaki sposób miałbym zainstalować go w określonej lokalizacji z prefiksem

Też widziałem

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

Jeśli prefiks jest wywoływany w ./configure, dlaczego zawsze jest tworzony w tych dwóch przykładach?

Z góry dziękuję!


źródło
Kilka informacji tutaj: Standardy kodowania GNU: Zmienne katalogowe
steeldriver
sprawdź zaktualizowaną odpowiedź
luv.preet
freetds.org/userguide/config.htm , to ci pomoże
luv.preet
Recenzenci: Chodzi o instalację oprogramowania . Ma trzy nie-tematyczne głosowania na zakończenie jako „nie o Ubuntu”. Jeśli zamknięcie to jest w jakiś sposób zgodny z jakiegokolwiek rzeczywistego stronie polityki , proponuję komentowania. W przeciwnym razie zostanie to prawdopodobnie ponownie otwarte, nawet jeśli zostanie zamknięte.
Eliah Kagan

Odpowiedzi:

32

Podczas instalowania oprogramowania z make installlub sudo make installróżne pliki są umieszczane w różnych katalogach. Pliki wykonywalne, które udostępniają polecenia, które użytkownik ma uruchamiać, zwykle idą do binkatalogu, biblioteki zwykle idą do libkatalogu, strony podręcznika zwykle idą do mankatalogu i tak dalej.

Po uruchomieniu ./configure, opcja pozwala określić, gdzie te katalogi . Jest wywoływany, ponieważ pozwala podać prefiks, który pojawia się w ścieżkach do każdego z katalogów, w których mają być zainstalowane pliki z programu lub biblioteki, którą budujesz. Większość skryptów obsługuje , a pominięcie go i uruchomienie jest zwykle równoważne z .--prefix--prefixconfigure--prefix./configure./configure --prefix=/usr/local

Aby odpowiedzieć na to szerzej, ja powielana dwie sekcje z moją odpowiedź do Jak zainstalować plik tar „globalnie”? (w systemach Unix i Linux ), które dotyczą tego pytania:

Konfigurowanie twojej kompilacji

Jeśli masz kod źródłowy, który jest kompilowany przez uruchomienie ./configure i make, zwykle użyjesz make install(lub sudo make install), aby go zainstalować. Spowoduje to skopiowanie plików z katalogu kompilacji do lokalizacji instalacji. Gdy instalowana rzecz zawiera komendy wykonywalne, te pliki wykonywalne są zwykle kopiowane do katalogu, który znajduje się w $PATHlub do którego należy rozważyć dodanie $PATH.

Chociaż budowanie i instalowanie oprogramowania jest często tak proste, jak uruchamianie ./configure, makeczasami make checklub make test, a następnie make installlub sudo make install, czasami będziesz chciał przekazać opcje do configureskryptu, aby skonfigurować kompilację. W szczególności, jak mówi pfnuesel , w ten sposób konfigurujesz miejsce instalacji oprogramowania. Chociaż make installkrok faktycznie instaluje oprogramowanie, lokalizacje, w których wszystko zostanie zainstalowane, są zwykle ustalane na tym ./configureetapie.

Najczęstszą opcją jest to --prefix. Domyślny prefiks, gdy nie configurewiesz, czego użyć, to zwykle /usr/local. (Czasami kod źródłowy programu lub biblioteki ma domyślnie inny prefiks. Na szczęście jest to rzadkie.)

Tak ./configurejest zazwyczaj równoważne ./configure --prefix=/usr/local. Aby zainstalować oprogramowanie w katalogu domowym, możesz użyć ./configure --prefix=/home/galahad(jeśli /home/galahadjest to katalog domowy) lub --prefix="$HOME". Oczywiście nadal musisz zbudować i zainstalować oprogramowanie make. Powinienem powiedzieć, że nie całe oprogramowanie dystrybuowane w postaci kodu źródłowego jest zbudowane w ten sposób. Zawsze należy szukać dokumentacji w rozpakowanym archiwum kodu źródłowego.

Co to --prefixznaczy

Po uruchomieniu wskazujesz, że oprogramowanie powinno zostać zainstalowane w katalogu. Ale to rzadko, jeśli w ogóle, umieszcza luźne pliki . Zamiast tego umieszcza pliki, które służą różnym celom, w różnych podkatalogach . Jeśli te podkatalogi nie istnieją, tworzy je../configure --prefix=directorydirectorydirectorydirectory

Pliki wykonywalne zwykle wchodzą directory/bin, ale mogą się pojawiać, directory/sbinjeśli są powszechnie używane do administrowania systemem lub mogą (w rzadszych przypadkach obecnie) wchodzić w directory/gamesgry. Biblioteki wchodzą do directory/libinnego katalogu o podobnej nazwie, np directory/lib32. Pliki nagłówka wchodzą directory/include. Wchodzą strony podręcznika directory/man. Pliki danych używane przez oprogramowanie wchodzą directory/share.

To właśnie znaczy directorybyć prefiksem . Jest to katalog nadrzędny zawierający lokalizacje, w których zostaną zainstalowane różne pliki. Dlatego pojawia się jako przedrostek w bezwzględnych ścieżkach większości plików i katalogów utworzonych przez uruchomienie make install lub sudo make install.

Istnieją pewne wyjątki od tego. Systemowe pliki konfiguracyjne - które są czasami tworzone podczas instalacji oprogramowania, które będą ich używać, choć nie zawsze - zwykle wchodzą /etc. Zazwyczaj nie ma na to wpływu określenie innego prefiksu. Nawet jeśli zainstalujesz dużo oprogramowania /usr/local, nadal będzie ono w większości używane /etc, a twój /usr/local/etckatalog prawdopodobnie nie będzie istniał, będzie pusty lub będzie zawierał bardzo mało plików.

W wielu systemach można znaleźć więcej informacji o typowym układzie systemu plików, uruchamiając man hier. Jeśli korzystasz z systemu GNU / Linux, możesz zainteresować się standardem hierarchii systemów plików .

Eliah Kagan
źródło
2

Podaje lokalizację rzeczy wymaganych do skonfigurowania bieżącego pakietu lub oprogramowania.

Podobnie jak w prostym przypadku, może określić lokalizację bibliotek ssl:

--with-libssh2=/usr/local  #used in configuring nagios

a także informuje, których pakietów nie należy konfigurować, aby wykonać odpowiednie kompilacje programu zgodnie z systemem:

--disable-shared  # used in configuring nagios
--disable-link-balancer  # used in configuring Firehol

To tylko dodatkowe opcje, dzięki którym kompilacja będzie odpowiednia dla twojego systemu. Tak myślę. Popraw mnie, jeśli to coś innego.

--prefix=PREFIXOpcja instaluje niezależny od architektury pliki PREFIX. Po uruchomieniu make installpolecenia biblioteki zostaną umieszczone w PREFIX/libkatalogu, pliki wykonywalne w PREFIX/binkatalogu i tak dalej.

Jeśli ten argument nie zostanie przekazany do configurepolecenia, wówczas wartością domyślną jest /usr/local.

luv.preet
źródło