Como crio um PPA?


Respostas:


97

Usando um PPA (Personal Package Archive ), você pode distribuir software e atualizações diretamente aos usuários do Ubuntu. Crie seu pacote de origem, faça o upload e o Launchpad criará binários e depois os hospedará em seu próprio repositório apt.

Aqui está uma explicação detalhada .


5
FWIW Pude ativar meu PPA antes de assinar o código de conduta.
Sparhawk 03/04

2
Esta é a melhor resposta. Você acabou de saber como criar um PPA. A resposta abaixo (de totti) não é um PPA, mas é um repositório público. Os dois são diferentes, apesar de (potencialmente) realizarem a mesma coisa. Ele até diz na primeira linha de sua resposta: "Esta pergunta tem uma resposta bem escrita e aceita. Como o OP quer uma maneira simples de publicar seus pacotes, estou dando um hack fácil". Como você prefere o hack fácil, não é a melhor resposta.
lbaile200

OK, mas nenhum dos links nesta resposta realmente descreve como fazê-lo do zero. todos os links são feitos para desenvolvedores, que já estão no material muito mais
rubo77

11
@ rubo77 - o "como criar" é estritamente amplo demais para ser responsável. Tudo depende do que você está tentando empacotar. De fato, cada uma das etapas da resposta acima pode ser um Q individual com uma boa resposta detalhada cada.
fossfreedom

11
A nova resposta de Totti já é ótima
rubo77

86

Como criar um arquivo .deb

Este é um tutorial sobre como criar um arquivo .deb básico a partir de um determinado script de exemplo. Neste tutorial, primeiro criamos um programa de amostra no bash que mostra apenas 'OLÁ DO PROGRAMA'. Em seguida, criamos um arquivo de controle para o programa para criar um instalador debian. Finalmente, eles são empacotados em um .debarquivo.

Passos:

  1. crie um programa de amostra no bash

    mkdir "$HOME/create_deb/pgmdir"
    gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
    

    cole o seguinte código nele

    #!/bin/bash
    echo 'HELLO FROM PROGRAM' | zenity --text-info 
    
  2. Tornar o programa executável

    chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
  3. Crie um arquivo de controle para o pacote debian

    Crie um arquivo nomeado controldentro da pastaDEBIAN

    mkdir "$HOME"/create_deb/DEBIAN
    gedit "$HOME"/create_deb/DEBIAN/control
    

    e cole os seguintes detalhes

    Package: hellodeb
    Version: 0.1
    Architecture: all
    Maintainer: totti
    Installed-Size: 6
    Depends: zenity, bash
    Section: testing
    Priority: optional
    Homepage: http://askubuntu.com
    Description: This is my first debian package.
     Guided by Totti Torvalds.
     In Description new line start with a space.
    

    Você pode editar o conteúdo, se quiser. Leia mais sobre o formato deste arquivo aqui e aqui .

  4. Criar postinstscript, que é executado imediatamente após a instalação do pacote

    gedit "$HOME"/create_deb/DEBIAN/postinst
    

    depois cole

    #!/bin/sh
    set -e
    echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
    

    e torná-lo executável

    chmod +x "$HOME/create_deb/DEBIAN/postinst"
    
  5. Criar prermscript, que é executado antes da remoção do pacote

    #!/bin/sh
    set -e
    echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
    

    e torná-lo executável

    chmod +x "$HOME/create_deb/DEBIAN/prerm"
    
  6. Faça a estrutura do pacote e copie programas, dados, etc.
    Crie uma estrutura dos seus programas instalados e de seus dados. Neste exemplo, colocamos o arquivo em /bin.

    mkdir -p "$HOME"/create_deb/bin
    cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
    
  7. Crie o arquivo .deb .

    dpkg-deb --build "$HOME"/create_deb .
    

    Ele .nomeará automaticamente o .debarquivo com versão, arco etc. Ou seu nome personalizado

    dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
    

    Ou se você criar o arquivo .deb com

    debuild -k'your GPG key here' -S
    

    então você pode enviá-lo para o Ubuntu Launchpad com

    dput ppa:<lp-username>/<ppa-name> packet-source.changes
    

    como descrito aqui (fonte: crie um pacote .deb a partir de scripts ou binários )

  8. Instale o .debpacote recém-criado . Você pode abri-lo com, software-centermas pode não permitir a instalação. Então, eu recomendo usar o gdebigerenciador de pacotes.

    sudo apt-get install gdebi
    
    gdebi "$HOME"/create_deb/hellodeb.deb
    

    Agora você pode instalá-lo. Durante a instalação, você verá um diálogo gtk

    Instalando o programa: zenity_hello.sh ......

  9. Após a instalação, abra um terminal e digite zenity_hello. Se o programa estiver instalado corretamente e tudo estiver bem, você deverá ver um diálogo gtk

    OLÁ DO PROGRAMA

  10. Removendo o pacote

    sudo apt-get remove zenity_hello
    

Publique seu repositório em 2 minutos

Como o OP quer uma maneira simples de publicar seus pacotes, estou dando um hack fácil.

requisito: dropbox (ou qualquer outro serviço, por exemplo, github ) conta com uma pasta pública.

  1. Crie uma pasta dentro da sua pasta pública-Dropbox onde você coloca seus arquivos * .deb:

    mkdir ~/Dropbox/Public/deb-packages  
    

    ou crie essa pasta em outro lugar e coloque um link simbólico na sua pasta Pública:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. Vá para essa pasta e crie um script que, quando executado, crie o Packages.gz, contendo todas as informações necessárias sobre seus pacotes deb. crio:

    gedit import.sh  
    

    coloque isso nele:

    #!/bin/bash
    dpkg-scanpackages . /dev/null |gzip > Packages.gz
    

    torne-o executável:

    chmod  x import.sh
    
  3. Copie alguns arquivos * .deb para a pasta. Pode ser seu ou alguns que não estão disponíveis em outros repositórios. Então entre na pasta e execute o script que colocamos lá:

    cd ~/deb-packages/ 
    ./import.sh
    

    Isso deve criar o chamado arquivo Packages.gz , que o apt procura saber quais pacotes estão localizados neste repositório.


É isso aí

Agora, aguarde o Dropbox para sincronizar a pasta e pegue o URL público noPackages.gz . Deve ser algo como isto:

http://dl.getdropbox.../Packages.gz

Livre-se do final desse link, coloque mais algumas palavras nele e agora você pode usar e preencher a seguinte linha para o sources.list:

deb http://dl.getdropbox.../deb-packages ./

É isso que você tem seu próprio repositório deb rodando. Sempre sincronizado localmente, mas disponível para qualquer pessoa, a qualquer hora e em qualquer lugar.

NOTA: dpkg-scanpackages está disponível na dpkg-dev
referência


3
+1 Ótimo! isso funcionou: eu usei Github e não o diretório cru para uma pasta releases/ver github.com/rubo77/mouse-speed/blob/master/release/...
rubo77

Esta descreve um auto hospedado PPA, mas como posso construir um pacote debian Ubuntu
rubo77

3
Se você construir o arquivo .deb na etapa 7. com debuild -us -uc -k'your GPG key here'então você pode carregá-lo com dput ppa:<lp-username>/<ppa-name> packet-source.changesa Launchpad como descrito aqui (fonte: criar um pacote .deb a partir de scripts ou binários )
rubo77

@ rubo77, Obrigado, seja bem-vindo a adicionar essas informações no final da minha resposta.
Totti

11
OK, acabei de descobrir, também descobri, que você precisa de outros parâmetros para o Launchpad não criar o arquivo .deb agora (apenas -S): debuild -k'your GPG key here' -Sporque o Launchpad criará o arquivo deb (se não for rejeitado) - o que seria o `-us -uc`?
rubo77

2

Você precisará de uma conta no Launchpad.net para criar um PPA. Basta clicar no seu usuário no Launchpad (clique no seu nome no canto superior esquerdo) e criar um PPA. Pode ser necessário primeiro assinar o Código de Conduta e ter uma chave GPG registrada em sua conta.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.