Árvore de dependência do pacote de fontes Ubuntu

10

Eu tenho alguns pacotes. Vamos chamá-los A.deb, B.debe C.deb. Cada pacote possui um pacote de origem correspondente A.dsce A.tar.gz, B.dsce B.tar.gz, C.dsce C.tar.gz. Os pacotes dependem um do outro: C.debdepende B.debe B.debdepende deA.deb

Se eu modificar A.deb, preciso reconstruir B.debou não funcionará. O mesmo vale para B.debe C.deb. Existe uma maneira de automatizar esse processo? Existe talvez uma ferramenta ou script que faça isso por mim? Caso contrário, como eu poderia automatizar isso sozinho?

Além disso, não existem meus pacotes.

xiaodongjie
fonte
2
Você está dizendo "C.deb depende de B.deb e B.deb depende de A.deb", então eu acho que você está se referindo a pacotes binários ? Você também está se referindo à compilação de B contra uma biblioteca externa em A? Nesse caso, simplesmente não deveria haver a necessidade de reconstruir o pacote, uma vez que o (s) desenvolvedor (es) de A não alteraram a interface dessa biblioteca (portanto, isso depende do (s) mantainer (s) de A, não do (s) mantainer (s) de B ; se você é o desenvolvedor de todos eles, basta manter o máximo possível a implementação do A agnóstico de sua interface, para que a compatibilidade seja garantida ao máximo.
kos
1
Eu não faço coisas nesse nível no Linux, mas acho que foi isso que makefoi inventado. Um makefile inclui regras que determinam o que precisa ser recompilado / reconstruído com base no que foi alterado.
Joe
1
@xiaodongjie - você é uma pessoa querida com uma pergunta querida - para saber o bash e o bash-scripting? ---> dessa forma, você pode escrever um pequeno script com loop de caso de switch e, em seguida, como em um elevador, criar em diferentes casos o que fazer com os pacotes. Não existe o meu roteiro. Você é inteligente como nós somos inteligentes - ria. - é claro que este script pode ser configurado como um daemon (para funcionar automaticamente).
precisa saber é o seguinte
1
Um @Joe disse: use makee, como você mesmo disse, @xiaodongjie, os destinos make seriam os pacotes resultantes, com suas dependências de pacote para pacote declaradas, e a ação associada a cada destino seria o comando que faz o pacote . Instale make-doce digite info makepara ler tudo sobre isso.
Ralph Rönnquist
1
Que tal criar um alias para o processo de construção?
Wilhelm Erasmus

Respostas:

3

Você usaria um Makefile com as dependências de construção declaradas, por exemplo, da seguinte maneira:

default: A.deb B.deb C.deb

C.deb: B.deb C.dsc C.tar.gz
        <command(s) to build C.deb>

B.deb: A.deb B.dsc B.tar.gz
        <command(s) to build B.deb>

A.deb: A.dsc A.tar.gz
        <command(s) to build A.deb>

Observe que o recuo do comando é uma TAB.

Com isso Makefile, você usaria o comando

make

e isso resolveria quais pacotes criar e em qual ordem e depois os construiria, tudo dependendo dos carimbos de data e hora dos arquivos. Por exemplo, se o say B.tar.gztiver um carimbo de data / hora posterior a B.deb(ou seja, o pacote Bpossui uma nova fonte), isso causaria B.deba reconstrução em primeiro lugar e, como isso faria com que fosse carimbado posteriormente C.deb, causaria C.deba reconstrução também.

Ralph Rönnquist
fonte
1

Bem, talvez eu esteja totalmente perdendo o seu argumento, mas parece que você está recompilando o pacote A e deseja recompilar os pacotes B & C, para os quais eu simplesmente faria um makefile .

karoshi
fonte
Você pode explicar mais detalhes?
xiaodongjie
ou qualquer exemplo.
xiaodongjie