Ricerca nel sito web

Come creare pacchetti Debian dai sorgenti


In questa guida passo passo, vediamo come creare pacchetti Debian dai sorgenti su Debian, Ubuntu e altri sistemi basati su APT come Linux Mint.

Debian e i sistemi basati su Debian come Ubuntu utilizzano Advanced Package Tool, o APT in breve, per installare, aggiornare, aggiornare e rimuovere software dalla riga di comando.

Di solito, il gestore di pacchetti APT memorizza l'elenco dei repository nel file denominato /etc/apt/sources.list e in qualsiasi file con il suffisso .list nella directory /etc/apt/sources.list.d/.

Quando installiamo un pacchetto, il comando apt recupera la versione binaria o precompilata del pacchetto specificato da questi repository.

Oltre a installare pacchetti binari, APT consente anche di scaricare il codice sorgente di un pacchetto. Quindi puoi aggiungere alcune funzionalità nel sorgente, creare il pacchetto dal codice sorgente e infine installare la versione modificata del pacchetto.

Perché dovremmo creare un pacchetto dai sorgenti?

Potrebbero esserci molte ragioni per creare un pacchetto dal sorgente. Ecco alcuni motivi a cui potrei pensare adesso:

  • Esamina il codice sorgente per trovare un bug.
  • Aggiungi nuove funzionalità nei pacchetti che non vengono più sviluppati attivamente.
  • Installa la versione più recente di un pacchetto dal sorgente. In generale, i pacchetti nei repository ufficiali potrebbero essere un po' vecchi.
  • E, cosa ancora più importante, impara a creare pacchetti Debian dai sorgenti.

Installa gli strumenti di creazione necessari

Per creare un pacchetto binario dal sorgente, dobbiamo prima installare gli strumenti di compilazione necessari. A seconda dello strumento da riga di comando per creare il pacchetto binario, potrebbe essere necessario installare uno dei seguenti pacchetti:

  1. dpkg-dev
  2. devscripts

Questi pacchetti forniscono numerosi strumenti per creare pacchetti binari dal codice sorgente.

Per installare "dpkg-dev", esegui:

sudo apt install dpkg-dev

Il comando per installare il pacchetto "devscripts" è:

sudo apt install devscripts

Abilita i repository di origine

Assicurati di aver abilitato i repository di origine.

Per fare ciò, apri il file /etc/apt/sources.list:

sudo vim /etc/apt/sources.list

Vedrai alcune righe come di seguito:

See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
newer versions of the distribution.
deb http://in.archive.ubuntu.com/ubuntu focal main restricted
deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted
[...]

Nel file sopra, tutte le righe che iniziano con uno o due cancelletti (#) sono solo commenti, solo a scopo informativo. E le righe senza hash sono i repository apt.

Nel repository apt le righe che iniziano con "deb" sono relative ai pacchetti binari, che possono essere installati dagli utenti utilizzando il gestore pacchetti apt. E le righe che iniziano con "deb-src" sono relative ai pacchetti sorgente. Questo è utile per gli sviluppatori. Per impostazione predefinita, "deb-src" è commentato nell'elenco delle fonti.

Per scaricare i pacchetti sorgente, è necessario rimuovere il commento dalla riga "deb-src". Rimuovi il simbolo # per rimuovere il commento da una riga. Dopo aver rimosso il commento, le righe del repository dovrebbero apparire come di seguito:

See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
newer versions of the distribution.
deb http://in.archive.ubuntu.com/ubuntu focal main restricted
deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted
[...]

Salva e chiudi il file. Aggiorna l'elenco dei repository utilizzando il comando:

sudo apt update

Scarica pacchetti sorgente

Scarica il sorgente di un pacchetto utilizzando il comando "apt source ". Ad esempio, il seguente comando scaricherà il codice sorgente del programma "Hello World!":

apt source hello

Esempio di output:

Reading package lists... Done
Need to get 734 kB of source archives.
Get:1 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (dsc) [1847 B]
Get:2 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (tar) [726 kB]
Get:3 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (diff) [6560 B]
Fetched 734 kB in 2s (336 kB/s)
dpkg-source: info: extracting hello in hello-2.10
dpkg-source: info: unpacking hello_2.10.orig.tar.gz
dpkg-source: info: unpacking hello_2.10-2ubuntu2.debian.tar.xz

Scarica il codice sorgente di un pacchetto

Come puoi vedere, ho scaricato il codice sorgente del programma Hello World.

$ ls
hello-2.10 hello_2.10-2ubuntu2.debian.tar.xz hello_2.10-2ubuntu2.dsc hello_2.10.orig.tar.gz

Visualizza il contenuto effettivo del codice sorgente:

$ ls hello-2.10/
ABOUT-NLS  ChangeLog    INSTALL      NEWS        README-release  aclocal.m4  configure     debian   lib       man  tests
AUTHORS    ChangeLog.O  Makefile.am  README      THANKS          build-aux   configure.ac  doc      m4        po
COPYING    GNUmakefile  Makefile.in  README-dev  TODO            config.in   contrib       hello.1  maint.mk  src

Installa le dipendenze di build per il pacchetto

Successivamente, dobbiamo installare anche le dipendenze per quel pacchetto. Per fare ciò, esegui:

sudo apt build-dep hello

Installa le dipendenze di build

Ora abbiamo scaricato il codice sorgente del pacchetto e installato le dipendenze necessarie per creare questo pacchetto. Successivamente apporta le modifiche al codice sorgente.

Modifica il codice sorgente di un pacchetto Debian

CD nella directory che contiene l'origine del pacchetto. Nel nostro caso è ciao-2.10.

cd hello-2.10

Modifica il codice come desideri. Il codice si trova nel file "hello.c" nella directory "src".

vi src/hello.c

Modifica il codice e/o apporta eventuali modifiche. Una volta terminata la modifica del codice, salva e chiudi il file.

Ora è il momento di creare il pacchetto .deb vero e proprio.

Compila pacchetti Debian dai sorgenti

Abbiamo scaricato il codice sorgente e modificato il codice. Costruiamo il pacchetto dal sorgente. Possiamo farlo in tre modi:

  1. Utilizzando il comando "dpkg-buildpackage"
  2. Utilizzando il comando "debuild"
  3. Scarica il sorgente e crealo direttamente

Metodo 1: utilizzo di dpkg-buildpackage:

Assicurati di aver installato il pacchetto "dpkg-dev".

Quindi esegui il comando seguente per creare il pacchetto dal sorgente:

dpkg-buildpackage -rfakeroot -b -uc -us

Qui,

  • dpkg-buildpackage - Comando per creare pacchetti binari o sorgenti da fonti.
  • -rfakeroot - Crea un ambiente fakeroot per simulare i privilegi di root (per evitare problemi di proprietà e autorizzazione).
  • -b - Crea solo il pacchetto binario.
  • -uc - Non firmare crittograficamente il registro delle modifiche. ovvero non firmare i file .buildinfo e .changes
  • -us - Non firma il pacchetto sorgente.

Assicurati di eseguire il comando precedente nella directory principale dell'albero dei sorgenti. Altrimenti, non funzionerà.

Se la compilazione ha esito positivo, vedrai un messaggio come di seguito:

[...]
dpkg-deb: building package 'hello' in '../hello_2.10-2ubuntu2_amd64.deb'.
dpkg-deb: building package 'hello-dbgsym' in 'debian/.debhelper/scratch-space/build-hello/hello-dbgsym_2.10-2ubuntu2_amd64.deb'.
        Renaming hello-dbgsym_2.10-2ubuntu2_amd64.deb to hello-dbgsym_2.10-2ubuntu2_amd64.ddeb
 dpkg-genbuildinfo --build=binary
 dpkg-genchanges --build=binary >../hello_2.10-2ubuntu2_amd64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
 dpkg-source --after-build .
dpkg-buildpackage: info: binary-only upload (no source included)

Crea pacchetti Debian dal codice sorgente

Congratulazioni! Abbiamo creato con successo un pacchetto .deb dal sorgente. Ora torna alla directory principale e vedrai il file .deb appena creato:

cd ..
ls

Esempio di output:

hello-2.10                             hello_2.10-2ubuntu2.dsc              hello_2.10-2ubuntu2_amd64.deb
hello-dbgsym_2.10-2ubuntu2_amd64.ddeb  hello_2.10-2ubuntu2_amd64.buildinfo  hello_2.10.orig.tar.gz
hello_2.10-2ubuntu2.debian.tar.xz      hello_2.10-2ubuntu2_amd64.changes

Metodo 2: utilizzo di debuild

Assicurati di aver installato il pacchetto "devscripts".

Quindi, crea il pacchetto binario eseguendo il seguente comando dall'albero dei sorgenti:

debuild -b -uc -us

Una volta compilato con successo, il pacchetto .deb risultante verrà salvato nella directory principale.

Metodo 3: scarica e crea direttamente

Questo è il metodo più semplice e diretto rispetto ai due metodi precedenti. In questo metodo, scarichiamo il codice sorgente del pacchetto e passiamo l'opzione "--compile" per creare il file binario in un'unica riga di comando di seguito:

sudo apt-get source --compile hello

Il comando precedente scaricherà il codice sorgente del programma "hello" e creerà il pacchetto .deb e lo salverà nella directory corrente.

Installa il file .deb

Vai alla posizione in cui è salvato il file .deb e installalo come di seguito:

sudo dpkg -i hello_2.10-2ubuntu2_amd64.deb

Se viene visualizzato un messaggio di errore relativo alle dipendenze mancanti, eseguire:

sudo apt install -f

Come puoi vedere, creare un pacchetto Debian dai sorgenti in Linux è molto semplice!

Lettura correlata:

  • Come creare pacchetti dal sorgente utilizzando CheckInstall
  • Come creare facilmente pacchetti Linux per più piattaforme
  • Ricrea pacchetti binari Debian già installati su un sistema
  • Come convertire pacchetti Linux con Alien
  • Come convertire i pacchetti DEB in pacchetti Arch Linux

Spero che questo ti aiuti.

Articoli correlati