Come posso creare il mio PPA personalizzato da condividere con la comunità Ubuntu? Sto cercando di creare il mio set di pacchetti personalizzato e vorrei davvero condividerlo con la community.
Come posso creare il mio PPA personalizzato da condividere con la comunità Ubuntu? Sto cercando di creare il mio set di pacchetti personalizzato e vorrei davvero condividerlo con la community.
Risposte:
Utilizzando un Personal Package Archive ( PPA ), è possibile distribuire software e aggiornamenti direttamente agli utenti Ubuntu. Crea il tuo pacchetto sorgente, caricalo e Launchpad costruirà i binari e poi li ospiterà nel tuo repository apt.
Ecco una spiegazione dettagliata .
Questa è un'esercitazione sulla creazione di un file .deb di base da un determinato script di esempio. In questo tutorial prima creiamo un programma di esempio in bash che mostra semplicemente "HELLO FROM PROGRAM". Quindi creiamo un file di controllo per il programma per creare un programma di installazione debian. Alla fine vengono impacchettati in un .deb
file.
creare un programma di esempio in bash
mkdir "$HOME/create_deb/pgmdir"
gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
incolla il seguente codice in esso
#!/bin/bash
echo 'HELLO FROM PROGRAM' | zenity --text-info
Rendi eseguibile il programma
chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
Creare un file di controllo per il pacchetto debian
Crea un file chiamato control
all'interno della cartellaDEBIAN
mkdir "$HOME"/create_deb/DEBIAN
gedit "$HOME"/create_deb/DEBIAN/control
e incolla i seguenti dettagli
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.
Puoi modificare i contenuti se vuoi. Maggiori informazioni sul formato di questo file qui e qui .
Crea uno postinst
script, che viene eseguito immediatamente dopo l'installazione del pacchetto
gedit "$HOME"/create_deb/DEBIAN/postinst
quindi incolla
#!/bin/sh
set -e
echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
e renderlo eseguibile
chmod +x "$HOME/create_deb/DEBIAN/postinst"
Crea uno prerm
script, che viene eseguito prima della rimozione del pacchetto
#!/bin/sh
set -e
echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
e renderlo eseguibile
chmod +x "$HOME/create_deb/DEBIAN/prerm"
Crea la struttura del pacchetto e copia i programmi, i dati, ecc.
Crea una struttura dei tuoi programmi installati e dei suoi dati. In questo esempio inseriamo il file in /bin
.
mkdir -p "$HOME"/create_deb/bin
cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
Costruire il .deb file.
dpkg-deb --build "$HOME"/create_deb .
Il .
nome verrà automaticamente assegnato al .deb
file con versione, arch ecc. O il tuo nome personalizzato
dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
O se si crea il file .deb con
debuild -k'your GPG key here' -S
quindi puoi caricarlo su Ubuntu Launchpad con
dput ppa:<lp-username>/<ppa-name> packet-source.changes
come descritto qui (fonte: crea un pacchetto .deb da script o binari )
Installa il .deb
pacchetto appena creato . È possibile aprirlo con software-center
ma potrebbe non consentire l'installazione. Quindi consiglio di usare il gdebi
gestore pacchetti.
sudo apt-get install gdebi
gdebi "$HOME"/create_deb/hellodeb.deb
Ora puoi installarlo. Durante l'installazione dovresti vedere un dialogo GTK
Programma di installazione: zenity_hello.sh ......
Dopo l'installazione, aprire un terminale e digitare zenity_hello
. Se il programma è installato correttamente e tutto OK, dovresti vedere un dialogo GTK
CIAO DAL PROGRAMMA
Rimozione del pacchetto
sudo apt-get remove zenity_hello
Dato che l'OP vuole un modo semplice per pubblicare i suoi pacchetti, sto dando un trucco semplice.
requisito: account dropbox (o qualsiasi altro servizio, ad esempio github ) con una cartella pubblica.
Crea una cartella nella cartella Public Dropbox in cui inserisci i tuoi file * .deb:
mkdir ~/Dropbox/Public/deb-packages
o crea quella cartella altrove e inserisci un link simbolico nella tua cartella pubblica:
mkdir ~/deb-packages
cd ~/Dropbox/Public
ln -s ~/deb-packages/ deb-packages
Vai in quella cartella e crea uno script che, una volta eseguito, crei Packages.gz, contenente tutte le informazioni necessarie sui tuoi pacchetti deb. creare:
gedit import.sh
mettici dentro questo:
#!/bin/bash
dpkg-scanpackages . /dev/null |gzip > Packages.gz
renderlo eseguibile:
chmod x import.sh
Copia alcuni file * .deb nella cartella. Potrebbe essere il tuo o alcuni che non sono disponibili tramite altri repository. Quindi vai nella cartella ed esegui lo script che abbiamo inserito:
cd ~/deb-packages/
./import.sh
Ciò dovrebbe creare il cosiddetto file Packages.gz , che apt cerca di sapere quali pacchetti si trovano in questo repository.
Ora, attendi che Dropbox sincronizzi la cartella e prendi l' URL pubblico dalPackages.gz
. Dovrebbe assomigliare a qualcosa di simile a questo:
http://dl.getdropbox.../Packages.gz
Sbarazzati della fine di quel link, metti qualche parola in più e ora puoi usare e popolare la seguente riga per il sources.list:
deb http://dl.getdropbox.../deb-packages ./
Ecco fatto che hai il tuo repository deb in esecuzione. Sincronizzato sempre localmente, ma disponibile a chiunque, sempre e ovunque.
NOTA: dpkg-scanpackages
è disponibile da dpkg-dev
riferimento
releases/
vedi github.com/rubo77/mouse-speed/blob/master/release/…
debuild -us -uc -k'your GPG key here'
è possibile caricarlo dput ppa:<lp-username>/<ppa-name> packet-source.changes
su Launchpad come descritto qui (fonte: creare un pacchetto .deb da script o binari )
debuild -k'your GPG key here' -S
perché Launchpad creerà il file deb (se non viene rifiutato) - cosa sarebbe stato `-us -uc`?