In questa guida passo passo, vediamo come creare pacchetti debian dal sorgente su Debian, Ubuntu e altri sistemi basati su APT come Linux Mint.
I sistemi basati su Debian e Debian come Ubuntu utilizzano Strumento pacchetto avanzato o APT in breve, per l'installazione, l'aggiornamento, l'aggiornamento e la rimozione di 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, apt
comando recupera la versione binaria o precompilata del pacchetto specificato da questi repository.
Oltre all'installazione di pacchetti binari, APT può anche permetterti 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 dal sorgente?
Potrebbero esserci molte ragioni per creare un pacchetto dal sorgente. Ecco alcuni motivi a cui potrei pensare ora:
- Controlla il codice sorgente per trovare un bug.
- Aggiungi nuove funzionalità ai pacchetti che non vengono più sviluppati attivamente.
- Installa la versione più recente di un pacchetto dal sorgente. In genere, i pacchetti nei repository ufficiali potrebbero essere un po' vecchi.
- E, cosa più importante, impara a costruire pacchetti Debian dal sorgente.
Installa gli strumenti di compilazione 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 compilare il pacchetto binario, potrebbe essere necessario installare uno qualsiasi dei seguenti pacchetti:
- dpkg-dev
- devscript
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 "devscripts"
il pacchetto è:
$ sudo apt install devscripts
Abilita i repository di origine
Assicurati di aver abilitato i repository di origine.
Per farlo, apri /etc/apt/sources.list
file:
$ 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 hash (#) 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 di 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 decommentare la riga "deb-src". Rimuovi il # simbolo per decommentare una riga. Dopo aver decommentato, 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 usando il comando:
$ sudo apt update
Scarica i pacchetti sorgente
Scarica il codice sorgente di un pacchetto usando "apt source <package-name>"
comando. Ad esempio, il comando seguente scaricherà il codice sorgente di "Hello World!"
programma:
$ apt source hello
Risultato di esempio:
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
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 farlo, esegui:
$ sudo apt build-dep hello
Abbiamo ora scaricato il codice sorgente del pacchetto e installato le dipendenze necessarie per compilare questo pacchetto. Quindi 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
Modificare il codice come desiderato. Il codice è nel file "hello.c"
sotto "src"
directory.
$ vi src/hello.c
Modifica il codice e/o apporta modifiche. Una volta terminata la modifica del codice, salva e chiudi il file.
Ora è il momento di creare il pacchetto .deb vero e proprio.
Crea pacchetti Debian dal sorgente
Abbiamo scaricato il codice sorgente e modificato il codice. Creiamo il pacchetto dal sorgente. Possiamo farlo in tre modi:
- Utilizzo di
"dpkg-buildpackage"
comando - Utilizzo di
"debuild"
comando - Scarica il sorgente e compilalo direttamente
Metodo 1 - Utilizzo di dpkg-buildpackage:
Assicurati di aver installato "dpkg-dev"
pacchetto.
E quindi esegui il comando seguente per compilare il pacchetto dal sorgente:
$ dpkg-buildpackage -rfakeroot -b -uc -us
Ecco,
dpkg-buildpackage
- Comando per creare pacchetti binari o sorgenti dai sorgenti.-rfakeroot
- Crea un ambiente fakeroot per simulare i privilegi di root (per evitare problemi di proprietà e autorizzazioni).-b
- Crea solo il pacchetto binario.-uc
- Non firmare crittograficamente il log delle modifiche. cioè non firmare il.buildinfo
e.changes
file-us
- Non firmare 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)
Congratulazioni! Abbiamo creato con successo un pacchetto .deb dal sorgente. Ora, torna alla directory principale e vedrai il file .deb appena creato:
$ cd ..
$ ls
Risultato di esempio:
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 "devscripts"
pacchetto.
Quindi, compila il pacchetto binario eseguendo il seguente comando dall'albero dei sorgenti:
$ debuild -b -uc -us
Dopo la compilazione riuscita, il risultato .deb
il pacchetto 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 il "--compile"
opzione per creare il file binario in una singola riga di comando di seguito:
$ sudo apt-get source --compile hello
Il comando precedente scaricherà il codice sorgente di "hello"
programma e compila il .deb
pacchetto e salvarlo nella directory corrente.
Installa il file .deb
Vai alla posizione in cui si trova il .deb
il file viene salvato e installarlo come di seguito:
$ sudo dpkg -i hello_2.10-2ubuntu2_amd64.deb
Se vedi un messaggio di errore relativo alle dipendenze mancanti, esegui:
$ sudo apt install -f
Come puoi vedere, creare un pacchetto debian dal sorgente 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 che sono già installati su un sistema
- Come convertire i pacchetti Linux con Alien
- Come convertire i pacchetti DEB in pacchetti Arch Linux
Spero che questo aiuti.