Ответ на этот вопрос зависит от того, какой проект с открытым исходным кодом вы пытаетесь установить таким способом. Общий ответ таков: в некоторых проектах с открытым исходным кодом есть Makefile, которые предоставляют необязательные переменные для этой цели. Одним конкретным примером этого является gdb, чей Makefile верхнего уровня использует (но, похоже, не присваивает) переменную DESTDIR
, и если я запускаю эту команду в каталоге сборки gdb,
make DESTDIR=/tmp install
он добавляет /tmp
к каждому пути назначения перед копированием файла.
Другим более сложным подходом является сборка, установка и все остальное в среде chroot. Использование чего-то вроде OverlayFS может сделать это проще, но обычно это не путь наименьшего сопротивления.
Другая возможность, которая, вероятно, будет проще, если вы уже используете версию Debian (которая включает в себя Ubuntu и многие другие), - это получить исходный пакет Debian, соответствующий проекту с открытым исходным кодом (такой подход вряд ли будет легким, если нет такой пакет с исходным кодом) и следуйте инструкциям для сборки пакета Debian из этого источника. Если вам действительно нужен .rpm
а не .deb
вы можете преобразовать .deb
в .rpm
, или, возможно, вы можете создать .rpm
из структуры каталогов, оставленной в процессе построения .deb
. Этот ответ является одним из источников информации о сборке пакета Debian из этого источника.
Для последней версии openssl
(упомянутой в комментарии, но еще не упомянутой в вопросе) файл INSTALL сообщает следующее:
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.
Это зависит от версии openssl
; для 1.0.2 INSTALL говорит это:
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.
Идея почти такая же, с немного другими деталями.