Como crio um PPA para um programa de trabalho?

36

Vamos supor que eu tenha um aplicativo de trabalho escrito em C, C ++ ou Python. Quero criar um PPA do Launchpad para que outros possam instalá-lo facilmente a partir de um pacote. Por favor, dê instruções passo a passo para fazer isso do começo ao fim. (Ou forneça um link que faça o mesmo;)

  • A linguagem de programação é importante? (Poderia ser um script bash?)
  • Preciso adicionar algo ao meu build?
  • Para onde a construção deve se instalar?
  • Como defino dependências?
  • Como uso dependências?
  • Como crio um .deb?
  • O que preciso fazer antes de carregar no Launchpad?
david.libremone
fonte
1
Estou fazendo essa pergunta porque, ocasionalmente, recomendo que os projetos FLOSS criem um PPA (para que eu possa instalá-los facilmente :) - eu gostaria de poder apontá-los para um recurso completo ou fazer isso sozinho.
David.libremone

Respostas:

33

Essa é uma pergunta muito ampla. Vou tentar responder o máximo que puder, mas definitivamente não será uma instrução passo a passo. Isso ocorre porque não há algoritmo passo a passo para criar um pacote. A maneira como você faz isso depende de muitos fatores, principalmente do tipo de pacote (aplicativo, biblioteca), da estrutura da fonte e de muitos detalhes.

Felizmente, há um guia completo em http://packaging.ubuntu.com

Vou tentar ajudá-lo um pouco na compreensão de todo o processo, portanto, quando você estiver um pouco mais familiarizado com ele. O Guia de Empacotamento inclui recursos para ajuda adicional.


Antes de tudo, você deve perceber que a criação de um pacote (um arquivo .deb) é um processo separado da criação de um PPA. Criar um PPA é uma questão de acessar o perfil do Launchpad e clicar em "Criar um novo PPA". Isso é tudo. É criado, funciona, mas está vazio. Para fazer upload de um pacote, você deve primeiro criar um. Mas deixe-me primeiro responder a algumas de suas perguntas menores.

  • A linguagem de programação NÃO importa. Pode ser um aplicativo C ++, script Bash, Brainfuck Hello World, um único arquivo LEIA-ME ou um conjunto de fotos legais. Pacotes podem conter qualquer arquivo. Durante a instalação, o pacote é extraído para a raiz ("/") do seu sistema de arquivos. Dessa forma, eles podem colocar alguns arquivos na pasta de binários, adicionar alguns papéis de parede ao conjunto padrão do GNOME ou fornecer ao usuário um script Bash.
  • Você NÃO precisa adicionar algo à fonte. Ele deve ser um diretório de nível superior chamado "debian". Haverá alguns arquivos com os detalhes do pacote - eles serão usados ​​para definir que tipo de pacote é etc.
  • As dependências estão listadas em um desses arquivos (entre outros detalhes). De onde obtê-los? Eles são simplesmente outros pacotes que seu aplicativo usa. O desenvolvedor do aplicativo saberá quais bibliotecas e recursos seu programa exige, portanto ele não deve ter muitos problemas para listá-los.
    • Algumas ferramentas usadas para criar um pacote (pbuilder) podem preencher as dependências automaticamente, provavelmente determinando o que seu aplicativo requer durante a compilação.
  • Também é altamente recomendável usar o AutoTools . É outra coisa que você precisa adicionar, mas provavelmente quase todo software já os usa. O AutoTools é um conjunto de programas extremamente úteis - automake, autoconf e autoscan, para citar alguns. Quando você compila e instala um programa com o famoso ./configure && make && make install as ferramentas automáticas são usadas para lidar automaticamente com a fonte, preparar outros recursos incluídos na fonte para a instalação e extrair o resultado da compilação para o local apropriado (para responder à sua pergunta: a compilação será extraída para MUITOS locais separados. os binários irão para / usr / local / bin, os documentos para / usr / local / share / docs etc. Além disso, os binários de um pacote irão para lugares diferentes, por exemplo, os binários para / usr / bin. com este layout complicado de diretórios? Use o AutoTools - ele se preocupará com isso automaticamente, e é por isso que eles são tão úteis).

Construir um pacote .deb pode parecer um processo realmente complicado, mas não é tão difícil. Eu recomendo o guia oficial do Ubuntu para criar pacotes: http://packaging.ubuntu.com

É ENORME, mas você verá que provavelmente pode pular a maior parte desse texto (dependendo do pacote que você irá construir). Basicamente, o processo de embalagem consiste nessas partes (todas são explicadas claramente no Guia) :

  1. Inicie algumas ferramentas usadas para criar pacotes.
  2. Obter a fonte
  3. Crie o diretório ./debian e preencha-o com os dados necessários
  4. Compile o pacote com o debuild [Isso deve criar um conjunto de arquivos, incluindo * .dsc, * _source.build, * _source.changes, responsáveis ​​pelos dados sobre o pacote e como lidar com ele (você também terá uma fonte .tar.gz)]
  5. Teste se tudo funciona executando o pbuilder localmente (ele pegará todos esses arquivos mencionados acima e tentará combiná-los em um pacote .deb, criando automaticamente a fonte com a ajuda do AutoTools - é por isso que eles são cruciais para o empacotamento [francamente falando - não - você pode se dar bem sem eles ou com algumas alternativas, mas essa é a abordagem mais fácil, e outras podem exigir uma configuração avançada, pois você precisará instruir o construtor como construir a fonte (usando o arquivo ./debian/rules ) - mas isso não é para iniciantes] ) - se você apenas deseja obter um pacote .deb, está pronto.

Agora você precisará enviá- lo para o seu PPA, explicado nesta página de ajuda: https://help.launchpad.net/Packaging/PPA/Uploading

  1. Use dput para fazer upload desses arquivos no Launchpad
  2. O Launchpad executará o pbuilder em seus computadores e gerará pacotes em um ambiente limpo
  3. Finalmente, os pacotes devem aparecer no PPA.

Como você vê, a criação de um PPA não é tão simples . Mas não se assuste , também não é tão difícil. Além disso, recomendo que você não incentive os desenvolvedores a usar um PPA, pois provavelmente eles não o ouvirão, pois precisariam fazer algum trabalho adicional (e, se quisessem, já o teriam feito), mas você pode deseja tentar apoiar os desenvolvedores do Ubuntu e toda a comunidade e fornecer a eles os pacotes que você preparou :)

Desejo-lhe boa sorte com a criação de pacotes, espero que você ache minha resposta útil :)

Seu amigo, Rafał Cieślak

Rafał Cieślak
fonte
Como você pode criar um PPA que não seja da Barra de Ativação, hospedado em sua própria infraestrutura? É apenas um servidor web simples com a estrutura de diretórios apropriada?
Moriarty
o exemplo brainf * ck foi realmente necessário?
Camden
5
  • Antes de fazer o upload do seu pacote, você precisará configurá-lo para o .debempacotamento, consulte o Ubuntu PackagingGuide .

  • Depois de criar um pacote para o seu software, consulte a documentação do PPA do Launchpad . Ele o guiará da criação do PPA ao upload do seu pacote.

Isaías
fonte