A resposta para essa pergunta depende de qual projeto de código aberto você está tentando instalar dessa maneira. A resposta geral é que alguns projetos de código aberto possuem Makefiles, que fornecem variáveis opcionais para essa finalidade. Um exemplo específico disso é o gdb, cujo Makefile de nível superior usa (mas não parece atribuir) uma variável DESTDIR
, e se eu executar este comando no diretório de compilação gdb,
make DESTDIR=/tmp install
pré-acrescenta /tmp
a cada caminho de destino antes de copiar o arquivo.
Outra abordagem mais difícil é fazer toda a compilação, instalação e tudo, em um ambiente chroot. Usar algo como OverlayFS pode facilitar, mas esse não é o caminho de menor resistência.
Outra possibilidade, que provavelmente é mais fácil se você já estiver usando um sabor Debian (que inclui o Ubuntu, entre muitos outros), é buscar o pacote fonte Debian correspondente ao projeto de código aberto (esta abordagem é improvável que seja fácil se não existe tal pacote fonte) e siga as instruções para construir o pacote Debian a partir dessa fonte. Se você realmente precisa de um .rpm
em vez de um .deb
, é possível converter .deb
em .rpm
ou talvez seja possível construir um .rpm
a partir da estrutura de diretórios deixada no processo de criação do .deb
. Esta resposta é uma fonte de informações sobre como construir um pacote Debian a partir da fonte.
Para o último openssl
(mencionado em um comentário, mas ainda não mencionado na pergunta), o INSTALL diz isso:
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.
Isso varia em diferentes versões de openssl
; para 1.0.2 INSTALL diz isto:
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.
A ideia é muito parecida, com detalhes ligeiramente diferentes.