Construindo arquivos deb dependentes

1

Estou desenvolvendo dois pacotes do Ubuntu, um dos quais depende do outro.

Diga, foo , que depende de libfoo .

Eu incremento a versão foo e libfoo juntos. É sempre o caso em que foo versão 1.2.1 depende de libfoo versão 1.2.1 .

Qual é o processo debian padrão para criar libfoo e foo ?

Preciso criar e instalar libfoo antes e só então compilar foo ?

Posso ter pbuilder de alguma forma entender foo needs libfoo e instalar libfoo antes de compilar foo ?

Qual é a melhor prática para este caso

    
por Elazar Leibovich 03.11.2016 / 21:22

2 respostas

2

EDITAR informações adicionais na pergunta:

Pbuild faz nativamente o que você quer - apenas forneça o arquivo dsc . Dê uma olhada em algum exemplo real com versão nas dependências como nmap

apt-get source nmap; cat nmap_*.dsc

e observe a cláusula Build-Depends :

...
Build-Depends: debhelper (>= 9), libgtk2.0-dev, dh-autoreconf, flex, bison, libssl-dev, libpcap0.8-dev, libpcre3-dev, binutils-dev, liblinear-dev, python (>= 2.3.5-7), python-all-dev, liblua5.2-dev
...

No seu caso, você precisa de algo como

Build-Depends: libfoo (=1.2.1), flex, bison, ...

postagem original:

Então, vamos resumir os comentários ...

O que você precisa são duas cláusulas do arquivo de regras debian/control :

  • Build-Depends - dependências de outros pacotes para a compilação do pacote fonte
  • Depende - dependências de outros pacotes para o pacote de instalação

Eu recomendo vivamente que você leia o Guia de Embalagem do Ubuntu inteiro. Sua pergunta é abordada em 2.2. O arquivo de controle . Leia também as mesmas informações escritas pela equipe Debian no Guia dos Novos Mantenedores Debian , mais precisamente Capítulo 5 - Arquivos de controle e seus campos . O tempo gasto com os manuais valerá a pena, poupando-lhe muitos problemas no futuro se você for manter os pacotes deb na sua empresa (ou porque não no Debian ou no Ubuntu um dia :)).

    
por Rostislav Kandilarov 04.11.2016 / 09:58
1
  • Se esses pacotes tiverem arquivos de origem separados. Quero dizer, eles são projetos distintos. Então a resposta de Rostislav Kandilarov é a correta.

  • Caso contrário, se eles estiverem nos mesmos arquivos de origem. Então não se preocupe se sua fonte compilar & amp; instala bem usando make ( cmake ou qualquer ferramenta que você esteja usando). A operação de empacotamento vem depois de compilar toda a fonte.

Visão geral rápida do processo após chamar debuild ... etc (O processo exato pode substituir dentro do arquivo ./debian/rules )

  1. Limpa a árvore
  2. Compila
  3. Instala a pasta temporária ./debian/tmp/
  4. Separe os arquivos para ./debian/tmp/foo/ & amp; ./debian/tmp/libfoo/ pastas.

    O pacote binário a ser construído deve ser declarado em ./debian/control file:

    Source: foo
    ...
    
    Package: foo
    ...
    Depends: libfoo (=${binary:Version}), ..
    ...
    
    Package: libfoo
    ...
    

    E os arquivos que devem estar em cada pacote em foo.install & amp; libfoo.install , respectivamente.

  5. Arquivos compactados em arquivos debian com novos arquivos de controle gerados.

Deixe-me responder às suas perguntas:

  •   

    Qual é o processo debian padrão para construir libfoo e foo?

    : / Eu não posso recomendar esse manual longo para começar, mas apenas como referências Para mim, o melhor foi procurar exemplos reais:

    link

    Você vê quantos pacotes binários são criados com a mesma fonte! Verifique na parte inferior e faça o download do arquivo *.debian.tar.xz , que tem todos os arquivos usados para empacotar o VLC.

  •   

    Eu tenho que construir e instalar o libfoo antes e só então compilar o foo?

    Não. não precisa.

  •   

    Posso ter o pbuilder de alguma forma entendendo o foo precisa do libfoo e instalar o libfoo antes de compilar o foo?

    Não. não há necessidade em Build-Depends: , pois já está disponível na árvore de origem. Mas precisa ser incluído em Depends: de foo binário.

por user.dz 20.11.2016 / 19:55