Precisa empacotar alguns arquivos locais executáveis no Arch Linux e instalá-los em outra máquina Arch Linux [fechada]

0

Eu tenho pesquisado o PKGBUILD e o makepkg, mas não consigo descobrir como simplesmente criar um pacote com arquivos executáveis locais já construídos. Eu preciso empacotá-los para que eu possa instalá-los facilmente em outra máquina Linux. Eu estou usando o Arch Linux.

Eu basicamente preciso pegar dois arquivos executáveis de um diretório específico, fazer um pacote com esses arquivos e depois instalar esses arquivos em outra máquina Arch Linux no mesmo local que o pacman normalmente instalaria executáveis. Não use nenhum código-fonte nem nada, porque os aplicativos já foram criados.

Eu sei colocar os arquivos no local de origem no arquivo PKGBUILD, mas o que eu coloco na função package () e preciso de um arquivo .install? Se sim, o que eu preciso de lá?

EDIT: Esta questão foi resolvida. A melhor resposta foi marcada.

    
por Russmania101 27.06.2017 / 03:58

1 resposta

1

Os pacotes podem ser enviados com arquivos arbitrários que estão no mesmo diretório que o arquivo PKGBUILD. Para seus propósitos, você pode fazer exatamente isso. Dentro da função package() do arquivo PKGBUILD, você pode se referir a esses arquivos como ${srcdir}/my-executable . O resultado final pode ser assim:

# snip!
source=(my-executable)
sha256sums=('foo')

package() {
  install -Dm755 "${srcdir}/my-executable" "${pkgdir}/usr/local/bin/my-executable"
}

Agora você pode criar um pacote com:

updpkgsums && mksrcinfo && makepkg

Note que esta abordagem só é realmente apropriada para pacotes homebrew. Não não use essa abordagem se você enviar pacotes para o AUR. Os arquivos que acompanham seu PKGBUILD devem ser alterados com pouca frequência - certamente não a cada lançamento. E se o seu executável for um binário, você não poderá fazer o upload do seu pacote para o AUR. (Ou vai funcionar, e alguém vai encontrar e banir você.)

Para um exemplo concreto, confira mkgmap . Ele instala um script de wrapper simples em /usr/bin/mkgmap . Note que estou usando alguns anacronismos, como executar cd "${srcdir}/${pkgname}-${pkgver}" na cabeça de package() .

Depois de criar um pacote, existem várias ferramentas disponíveis para obter esses pacotes para todos os seus hosts. Uma boa ferramenta específica para aplicativos é pacserve . (Obrigado a jasonwryan pela dica.)

Além disso, considere procurar em uma ferramenta como Ansible. Se você quiser que o gerenciador de pacotes saiba sobre esses executáveis, criar um pacote é ótimo. Mas se você quiser colocar arquivos em diretórios de usuários como ~/.local/bin/ , os sistemas de gerenciamento de configuração podem servir melhor para você.

    
por 27.06.2017 / 05:36