Come posso ottenere e modificare il codice sorgente dei pacchetti installati tramite apt-get?

Presumo che tutte le applicazioni installate tramite apt-get siano open source; ma per quelli che sono disponibili in quel modo, dove posso ottenere il codice sorgente per queste applicazioni e aggiornarle?

Ho un paio di applicazioni che uso regolarmente che non vengono triggersmente sviluppate e vorrei aggiungere funzionalità. Dove andrei a ottenere i diritti per aggiornare queste applicazioni?

In questo caso specifico, mi riferisco al pacchetto di hellanzb

Usa il comando apt-get source (non usare sudo con esso) per scaricare l’origine di un pacchetto.

Da man apt-get :

  source source causes apt-get to fetch source packages. APT will examine the available packages to decide which source package to fetch. It will then find and download into the current directory the newest available version of that source package while respect the default release, set with the option APT::Default-Release, the -t option or per package with the pkg/release syntax, if possible. Source packages are tracked separately from binary packages via deb-src type lines in the sources.list(5) file. This means that you will need to add such a line for each repository you want to get sources from. If you don't do this you will properly get another (newer, older or none) source version than the one you have installed or could install. If the --compile option is specified then the package will be compiled to a binary .deb using dpkg-buildpackage, if --download-only is specified then the source package will not be unpacked. A specific source version can be retrieved by postfixing the source name with an equals and then the version to fetch, similar to the mechanism used for the package files. This enables exact matching of the source package name and version, implicitly enabling the APT::Get::Only-Source option. Note that source packages are not tracked like binary packages, they exist only in the current directory and are similar to downloading source tar balls. 

Per creare un pacchetto dal sorgente, prima installa le dipendenze di compilazione:

 sudo apt-get build-dep  

Quindi usa dpkg-buildpackage per creare un file .deb . Da APT e Dpkg Quick Reference Sheet :

dpkg-buildpackage Crea un pacchetto Debian da un albero di sorgenti Debian. Devi essere nella directory principale dell’albero dei sorgenti affinché funzioni. Esempio di utilizzo:

  dpkg-buildpackage -rfakeroot -uc -b 

Dove -rfakeroot ordina di usare il programma fakeroot per simulare i privilegi di root (per scopi di proprietà), -uc sta per “Do not cryptographically sign the changelog”, e -b significa “Build the binary package only”

In un terminale, cd nella directory contenente il pacchetto sorgente (ad esempio ~/code/hellanzb-0.13 ) ed esegui il seguente comando:

 dpkg-buildpackage -rfakeroot -uc -b 

Se la compilazione ha esito positivo, ci sarà un file .deb situato nel genitore
directory (ad esempio ~/code/hellanzb_0.13-6.1_all.deb ).

In generale, è ansible ottenere l’origine di un pacchetto installato seguendo questa procedura:

  1. Abilita i repository di origine. Aprire la dashboard (in alto a sinistra) e cercare le sources . Questo dovrebbe far apparire il Software & Updates , eseguirlo e assicurarsi di avere l’opzione “Codice sorgente” selezionata:

    inserisci la descrizione dell'immagine qui

  2. Apri un terminale ed esegui questo comando:

     apt-get source vlc 

Questo scaricherà i sorgenti di vlc nella tua directory corrente e potrai visualizzarli a tuo piacimento.

Naturalmente, nel caso di vlc , puoi anche scaricarli direttamente dal sito web videolan.org: https://www.videolan.org/vlc/download-sources.html

Puoi usare apt-get source --compile direttamente:

 sudo apt-get build-dep  sudo apt-get source --compile  

Ha funzionato per me Il .deb si chiude nella directory da cui è stato eseguito il comando.

Per ottenere maggiori informazioni su un pacchetto che include URL upstream e contatti di progetto / programma, puoi dare un’occhiata al file di copyright (a cui si fa riferimento da packages.debian.org ).

Quando il pacchetto è incluso e installato sul tuo sistema, puoi anche leggere il file di copyright direttamente in /usr/share/doc/$package_or_program_name/copyright .

Vedi come scaricare il codice sorgente del pacchetto Debian? .

Esempio minimo con il pacchetto hello

Tutto questo e altro è descritto su: https://www.debian.org/doc/manuals/maint-guide/build.en.html

Per prima cosa prendiamo un pacchetto di esempio per modificare l’origine per:

 sudo apt-get install hello hello 

uscite:

 Hello, world! 

Ora apriamola. Ottieni la fonte:

 apt-get source hello cd hello-* 

e apri:

 vim src/hello.c 

e modifica il messaggio a:

 Hello, world hacked! 

Quindi fai lo stesso sul test altrimenti il ​​test fastidioso inizierà a mancare:

 vim tests/greeting-1 

Quindi ribuild con:

 sudo apt-get install devscripts sudo apt-get build-dep hello debuild -b -uc -us 

Verso la fine dell’output, dice:

 dpkg-deb: building package 'hello' in '../hello_2.10-1build1_amd64.deb'. 

così ha creato il .deb nella directory genitore, come osi farlo. Quindi, finalmente installiamo e testiamo il pacchetto modificato:

 sudo dpkg -i ../hello_2.10-1build1_amd64.deb hello 

e lì vai, emette il nuovo messaggio:

 Hello, world hacked! 

Testato su Ubuntu 18.04.

Vecchia risposta bzr

TODO: questo ha smesso di funzionare su Ubuntu 16.04 Xenial, fallendo con: bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/". . bzr branch lp:ubuntu/wily/hello funziona e bzr branch lp:ubuntu/xenial/hello fallisce di nuovo. Per qualche ragione https://code.launchpad.net/ubuntu/+source/hello non mostra Xenial: https://web.archive.org/save/https://code.launchpad.net/ubuntu/+source /Ciao

Come menzionato su https://askubuntu.com/a/81889/52975 c’è anche un approccio specifico per Ubuntu con bzr .

Ottieni l’ultima versione:

 bzr branch lp:ubuntu/hello 

Versione specifica:

 bzr branch lp:ubuntu/trusty/hello 

Puoi anche usare pull-lp-source :

 sudo apt-get install ubuntu-dev-tools pull-lp-source hello 

Quindi sarai in grado di modificarlo:

 cd hello vim some_file 

Ricostruiscilo:

 dch -i debcommit bzr bd -- -b -us -uc 

E installalo:

 sudo dpkg -i ../hello.deb 

La guida al packaging di Ubuntu è una buona fonte di informazioni.