Questo articolo descrive un modo semplice per creare un pacchetto debian fatto in casa e includerlo in un repository di pacchetti locale. Sebbene potremmo usare un pacchetto Debian/Ubuntu esistente, inizieremo da zero creando e impacchettando la nostra banale applicazione. Una volta che il nostro pacchetto è pronto, lo includeremo nel nostro repository di pacchetti locale. Questo articolo illustra un approccio molto semplicistico, tuttavia può fungere da modello in molti scenari diversi.
In questo tutorial imparerai:
- Come creare un pacchetto debian banale
- Come creare un repository Debian locale
- Come aggiungere il repository all'elenco delle sorgenti software
Requisiti e convenzioni software utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | Debian |
Software | Il pacchetto essenziale per la compilazione |
Altro | Un server Web Apache funzionante e permessi di root |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Creazione di un eseguibile binario
La prima cosa che dobbiamo fare è creare un semplice programma C++, compilarlo e testarlo. Nel caso in cui desideri scrivere un semplice programma in C, visita invece il nostro tutorial completo sulla programmazione in C. Il nostro programma non farà altro che stampare "linuxconfig.org" sullo schermo. Ecco il codice:
#include <iostream>
int main() {
using namespace std;
cout << "linuxconfig.org\n";
}
Salva il codice sopra come linuxconfig.cc
. Per compilare il programma abbiamo bisogno del g++
compilatore, fornito dal pacchetto build-essential. Possiamo installarlo eseguendo:
$ sudo apt-get install build-essential
Per compilare il codice, utilizziamo il seguente comando linux:
$ g++ linuxconfig.cc -o linuxconfig $ ./linuxconfig linuxconfig.org
Tutto sembra a posto. A questo punto dovremmo avere un eseguibile chiamato “linuxconfig” che stampa delle stringhe sullo schermo.
Creazione di un pacchetto Debian
Ora che abbiamo il nostro piccolo programma pronto sotto forma di un binario eseguibile, possiamo creare un pacchetto debian. Per farlo utilizziamo il dpkg-deb
attrezzo. Prima di tutto, dobbiamo creare la struttura del pacchetto debian. Gli unici file richiesti per costruire un pacchetto debian sono:
- DEBIAN/controllo
- file personalizzati da inserire nel pacchetto (non obbligatori)
Per prima cosa crea una directory chiamata linuxconfig
. Questa directory conterrà tutti i file di pacchetto necessari:
$ mkdir linuxconfig
Quindi, crea la directory DEBIAN e il file di controllo:
$ mkdir linuxconfig/DEBIAN $ vi linuxconfig/DEBIAN/control
All'interno del file di controllo, inseriamo le seguenti informazioni:
Package: linuxconfig Version: 1.0 Section: custom Priority: optional Architecture: all Essential: no Installed-Size: 1024 Maintainer: linuxconfig.org Description: Print linuxconfig.org on the screen
Ottimo, l'unica cosa che manca è il nostro programma linuxconfig. All'interno di linuxconfig
directory creiamo un albero di directory che rappresenta il percorso in cui verrà installato il nostro programma nel sistema e copiamo l'
eseguibile in esso:
$ mkdir -p linuxconfig/usr/bin/ $ cp /path/to/linuxconfig linuxconfig/usr/bin/
A questo punto siamo pronti per creare il pacchetto:
$ dpkg-deb --build linuxconfig dpkg-deb: building package `linuxconfig' in `linuxconfig.deb'. $ ls linuxconfig linuxconfig.deb
Potresti voler cambiare il nome del pacchetto in modo che includa la versione del programma e l'architettura del pacchetto. Ad esempio:
$ mv linuxconfig.deb linuxconfig-1.0_amd64.deb
Tutto fatto ! Il nostro pacchetto è pronto! (NOTA:questo è solo un esempio, la creazione di pacchetti ufficiali richiede più lavoro).
Configurazione di un repository di pacchetti locale
Per creare un repository di pacchetti locale abbiamo bisogno di un work. In questo caso assumeremo l'uso di Apache
con le impostazioni predefinite. Per installare il server web Apache, tutto ciò che dobbiamo fare è eseguire:
$ sudo apt-get install apache2
Una volta installato, per verificare che il webserver funzioni, possiamo navigare all'indirizzo IP della macchina (o a 'http://localhost', se sulla macchina stessa è in esecuzione un browser) che, nel nostro caso è http:// 10.1.1.4. Dovremmo vedere il
famoso Funziona! messaggio.
Il software del server web è in esecuzione ma non è stato ancora aggiunto alcun contenuto. La DocumentRoot
del VirtualHost
predefinito di Apache , è /var/www/html
:è qui che creeremo il nostro repository.
Creiamo la directory "debian" all'interno di /var/www/html
e copia il pacchetto linuxconfig-1.0_amd64.deb al suo interno:
$ sudo mkdir /var/www/html/debian $ sudo cp /path/to/linuxconfig-1.0_amd64.deb /var/www/html/debian/
Il passaggio successivo consiste nella generazione di un elenco di pacchetti. Passiamo al debian
directory e utilizzare dpkg-scanpackages
utilità per portare a termine il compito. Potrebbe essere necessario installare dpkg-dev
pacchetto nel caso in cui dpkg-scanpackages
manca il comando:
$ dpkg-scanpackages . | gzip -c9 > Packages.gz dpkg-scanpackages: info: Wrote 1 entries to output Packages file.
Il nostro repository locale è ora pronto.
Aggiunta del repository alle sorgenti software
A questo punto per poter installare il nostro pacchetto dal repository locale che abbiamo creato, dobbiamo modificare il /etc/apt/sources.list
file, aggiungi la voce relativa ad esso (cambia l'indirizzo IP per riflettere quello della tua macchina) e
sincronizza i repository:
echo "deb [trusted=yes] http://10.1.1.4/debian ./" | tee -a /etc/apt/sources.list > /dev/null
Assicurati di aggiungere il [trusted=yes]
sopra riportato per evitare il seguente messaggio di errore:
Release' does not have a Release file. N: Updating from such a repository can't be done securely, and is therefore disabled by default.
Sincronizza i repository:
$ sudo apt-get update Ign:1 http://10.1.1.4/debian ./ InRelease Ign:2 http://10.1.1.4/debian ./ Release Ign:3 http://10.1.1.4/debian ./ Packages Ign:3 http://10.1.1.4/debian ./ Packages Ign:3 http://10.1.1.4/debian ./ Packages Get:3 http://10.1.1.4/debian ./ Packages [303 B]
Per installare il nostro pacchetto, ora possiamo utilizzare lo strumento apt-get:
$ sudo apt-get install linuxconfig Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: linuxconfig 0 upgraded, 1 newly installed, 0 to remove and 8 not upgraded. Need to get 3174 B of archives. After this operation, 1,049 kB of additional disk space will be used. WARNING: The following packages cannot be authenticated! linuxconfig Install these packages without verification [y/N]? y
Esegui:
$ linuxconfig linuxconfig.org
Per rimuovere il pacchetto dal sistema, esegui:
$ sudo apt-get remove linuxconfig Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: linuxconfig 0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded. After this operation, 1049 kB disk space will be freed. Do you want to continue? [Y/n] y