Chcę uruchomić „make install”, więc mam wszystko, czego potrzebuję, ale chciałbym, aby instalował rzeczy w ich własnym folderze, a nie w systemie / usr / bin itp. Czy to możliwe? nawet jeśli odwołuje się do narzędzi w / usr / bin itp.?
Chcę uruchomić „make install”, więc mam wszystko, czego potrzebuję, ale chciałbym, aby instalował rzeczy w ich własnym folderze, a nie w systemie / usr / bin itp. Czy to możliwe? nawet jeśli odwołuje się do narzędzi w / usr / bin itp.?
Odpowiedzi:
To zależy od pakietu. Jeśli plik Makefile jest generowany przez GNU autotools ( ./configure
), zwykle możesz ustawić lokalizację docelową w następujący sposób:
./configure --prefix=/somewhere/else/than/usr/local
Jeśli plik Makefile nie jest generowany przez autotools, ale rozprowadzany wraz z oprogramowaniem, po prostu otwórz go w edytorze i zmień. Katalog docelowy instalacji jest prawdopodobnie zdefiniowany gdzieś w zmiennej.
make && make install
przestrzegać klauzuli configure?
--prefix
polega na tym, że jeśli strings
później uruchomisz a na wynikowym pliku binarnym, zobaczysz, że ścieżka jest przechowywana w środku. Nie wiem, dlaczego tak się dzieje, ale z pewnością nie chcę, aby moje ścieżki maszynowe w plikach binarnych były wysyłane do innych użytkowników.
Ponieważ nie wiesz, której wersji automake możesz użyć zmiennej środowiskowej DESTDIR .
Zobacz Makefile, aby się upewnić.
Na przykład:
export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
make DESTDIR=./new/customized/path install
To szybkie polecenie zadziałało dla mnie w przypadku instalacji opencv w wersji 3.2.0 na Ubuntu 16. Ścieżka DESTDIR może być względna lub bezwzględna.
Takie przekierowanie może być również przydatne w przypadku, gdy użytkownik nie ma uprawnień administratora, o ile lokalizacja DESTDIR ma uprawnienia dostępu dla użytkownika. np. / home //
Może to zależeć od tego, co jest obsługiwane przez moduł, który próbujesz skompilować. Jeśli plik makefile jest generowany przy użyciu narzędzi automatycznych, użyj:
--prefix=<myinstalldir>
podczas uruchamiania pliku ./configure
niektóre pakiety pozwalają na nadpisanie podczas pracy:
make prefix=<myinstalldir>
jednakże, jeśli nie używasz ./configure, jedynym sposobem na upewnienie się, jest otwarcie pliku makefile i sprawdzenie. Powinna to być jedna z pierwszych kilku zmiennych na górze.
make prefix=...
może doprowadzić do plików binarnych z niewłaściwych ścieżek zakodowane, ponieważ te zazwyczaj nie mogą być modyfikowane po./configure --prefix=...
Jeśli w pakiecie przewidziano Makefile.PL
- można skorzystać z:
perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install
* dalsze wyjaśnienie: https://www.perlmonks.org/?node_id=564720
Wypróbowałem powyższe rozwiązania. Żaden nie działał.
W końcu otworzyłem plik Makefile i ręcznie zmieniłem ścieżkę prefiksu na żądaną ścieżkę instalacji, jak poniżej.
PREFIX ?= "installation path"
Kiedy próbowałem --prefix, "make" narzekał, że nie ma takiego wejścia poleceń. Jednak być może niektóre pakiety akceptują --prefix, co jest oczywiście czystszym rozwiązaniem.
--prefix
opcja, do ./configure
której dzwonisz PRZED make
.
spróbuj użyć INSTALL_ROOT.
make install INSTALL_ROOT=$INSTALL_DIRECTORY