Odpowiedź na to pytanie zależy od tego, który projekt open source próbujesz zainstalować w ten sposób. Ogólna odpowiedź brzmi, że niektóre projekty open source mają pliki Makefile, które udostępniają opcjonalne zmienne do tego celu. Jednym z konkretnych przykładów jest gdb, którego najwyższy poziom Makefile używa (ale wydaje się, że nie przypisuje) DESTDIR
zmienna i jeśli uruchomię to polecenie w katalogu budowania gdb,
make DESTDIR=/tmp install
to poprzedza /tmp
do każdej ścieżki docelowej przed skopiowaniem pliku.
Innym trudniejszym podejściem jest wykonanie całej kompilacji, instalacji i wszystkich, w środowisku chroot. Używam czegoś takiego OverlayFS może to ułatwić, ale zazwyczaj nie jest to ścieżka najmniejszego oporu.
Inną możliwością, która jest prawdopodobnie łatwiejsza, jeśli już używasz smaku Debiana (który obejmuje Ubuntu wśród wielu innych), jest pobranie pakietu źródłowego Debiana odpowiadającego projektowi open source (takie podejście jest mało prawdopodobne, jeśli nie ma taki pakiet źródłowy) i postępuj zgodnie z instrukcjami, aby zbudować pakiet Debiana z tego źródła. Jeśli naprawdę potrzebujesz .rpm
zamiast a .deb
możesz przekonwertować .deb
do a .rpm
, a może możesz skonstruować .rpm
ze struktury katalogu pozostawionej w procesie budowania .deb
. Ta odpowiedź jest jednym ze źródeł informacji o budowaniu pakietu Debiana ze źródła.
Na ostatni openssl
(wymieniony w komentarzu, ale jeszcze nie wymieniony w pytaniu) ZAINSTALOWAĆ plik mówi tak:
Package builders who want to configure the library for standard
locations, but have the package installed somewhere else so that
it can easily be packaged, can use
$ make DESTDIR=/tmp/package-root install # Unix
$ mms/macro="DESTDIR=TMP:[PACKAGE-ROOT]" install ! OpenVMS
The specified destination directory will be prepended to all
installation target paths.
To zależy od różnych wersji openssl
; dla 1.0.2 ZAINSTALOWAĆ mówi to:
Package builders who want to configure the library for standard
locations, but have the package installed somewhere else so that
it can easily be packaged, can use
$ make INSTALL_PREFIX=/tmp/package-root install
(or specify "--install_prefix=/tmp/package-root" as a configure
option). The specified prefix will be prepended to all
installation target filenames.
Pomysł jest bardzo podobny, z nieco innymi szczegółami.
stow
zarządzać moim/usr/local
).