Como crio meu próprio PPA personalizado para compartilhar com a comunidade Ubuntu? Estou tentando criar meu próprio conjunto de pacotes personalizado e realmente gostaria de compartilhá-lo com a comunidade.
Como crio meu próprio PPA personalizado para compartilhar com a comunidade Ubuntu? Estou tentando criar meu próprio conjunto de pacotes personalizado e realmente gostaria de compartilhá-lo com a comunidade.
Respostas:
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 .
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 .deb
arquivo.
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
Tornar o programa executável
chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
Crie um arquivo de controle para o pacote debian
Crie um arquivo nomeado control
dentro 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 .
Criar postinst
script, 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"
Criar prerm
script, 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"
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"
Crie o arquivo .deb .
dpkg-deb --build "$HOME"/create_deb .
Ele .
nomeará automaticamente o .deb
arquivo 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 )
Instale o .deb
pacote recém-criado . Você pode abri-lo com, software-center
mas pode não permitir a instalação. Então, eu recomendo usar o gdebi
gerenciador 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 ......
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
Removendo o pacote
sudo apt-get remove zenity_hello
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.
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
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
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.
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
releases/
ver github.com/rubo77/mouse-speed/blob/master/release/...
debuild -us -uc -k'your GPG key here'
então você pode carregá-lo com dput ppa:<lp-username>/<ppa-name> packet-source.changes
a Launchpad como descrito aqui (fonte: criar um pacote .deb a partir de scripts ou binários )
debuild -k'your GPG key here' -S
porque o Launchpad criará o arquivo deb (se não for rejeitado) - o que seria o `-us -uc`?