GNU/Linux >> Linux Esercitazione >  >> Debian

Un modo semplice per creare un pacchetto Debian e un repository di pacchetti locale

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

Requisiti software e convenzioni della riga di comando Linux
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

Debian
  1. Come creare un repository Red Hat locale

  2. Debian:come conoscere il repository di origine di un pacchetto in Debian?

  3. Debian:la sicurezza del repository Debian?

  4. Come creare ed eliminare un utente su Debian 9

  5. Qual è il modo più semplice per creare un pacchetto virtuale in debian?

Come aggiungere un repository a Debian

Un modo semplice per trovare opportunità per i contributi ai pacchetti Debian

Come creare ed eseguire uno script di shell in Debian 10

Come creare e modificare file PDF in Debian 10

Controlla le dipendenze di un pacchetto in Ubuntu 20.04 e Debian 10

Un modo semplice per creare un collegamento sul desktop?