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.?
148
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: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.
źródło
make && make install
przestrzegać klauzuli configure?--prefix
polega na tym, że jeślistrings
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:
źródło
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 //
źródło
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:
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.
źródło
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:* dalsze wyjaśnienie: https://www.perlmonks.org/?node_id=564720
źródło
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.
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.
źródło
--prefix
opcja, do./configure
której dzwonisz PRZEDmake
.spróbuj użyć INSTALL_ROOT.
źródło