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:
- dpkg-dev
- 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:
- Utilizzando il comando
"dpkg-buildpackage"
- Utilizzando il comando
"debuild"
- 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.