GNU/Linux >> Linux Esercitazione >  >> Debian

Come creare pacchetti Debian dal sorgente

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:

  1. dpkg-dev
  2. 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:

  1. Utilizzo di "dpkg-buildpackage" comando
  2. Utilizzo di "debuild" comando
  3. 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.


Debian
  1. Come estrarre i file dall'archivio dei pacchetti Debian DEB

  2. Come compilare lo strumento di compressione Brotli dal sorgente su Debian 9

  3. Come aggiornare da Debian 10 a Debian 11

  4. Come installare i pacchetti RPM su Debian 11 Bullseye

  5. Debian:come installare alcuni pacchetti da Debian "unstable" su un computer che esegue Debian "stable"?

Come creare un pacchetto Ubuntu dal sorgente

Come aggiungere un repository a Debian

Come aggiornare da Debian 10 a Debian 11

Come aggiungere un repository a Debian

Come installare un programma da Source su Linux

Come rimuovere i pacchetti da Ubuntu e Debian