191 votes

Comment puis-je obtenir et modifier le code source des paquets installés par apt-get ?

Je suppose que toutes les applications installées par apt-get sont à code source ouvert ; mais pour celles qui sont disponibles de cette manière, où puis-je obtenir le code source de ces applications et les mettre à jour ?

J'ai quelques applications que j'utilise régulièrement qui ne sont plus activement développées et j'aimerais y ajouter des fonctionnalités. Où dois-je m'adresser pour obtenir les droits de mise à jour de ces applications ?

Dans ce cas précis, je fais référence à la hellanzb paquet

207voto

Craig Smitham Points 522

Utilisez la commande apt-get source <package> (n'utilisez pas sudo avec) pour télécharger les sources d'un paquet.

Von 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.

Pour construire un paquet à partir des sources, il faut d'abord installer les dépendances de construction :

sudo apt-get build-dep <package>  

Ensuite, utilisez dpkg-buildpackage pour créer un .deb fichier. À partir de Fiche de référence rapide d'APT et de Dpkg :

dpkg-buildpackage Construit un paquet Debian à partir d'un arbre source Debian. Vous devez être dans le répertoire principal de l'arbre des sources pour que cela fonctionne. Exemple d'utilisation :

 dpkg-buildpackage -rfakeroot -uc -b

-rfakeroot lui demande d'utiliser le programme fakeroot pour simuler les privilèges de l'utilisateur root (à des fins d'appropriation), -uc signifie "Ne pas signer cryptographiquement le journal des modifications", et -b signifie "Construire uniquement le paquet binaire".

Dans un terminal, cd dans le répertoire contenant les sources du paquet (par ex. ~/code/hellanzb-0.13 ) et exécutez la commande suivante :

dpkg-buildpackage -rfakeroot -uc -b

Si la construction est réussie, il y aura une .deb situé dans le fichier parent
(par exemple ~/code/hellanzb_0.13-6.1_all.deb ).

26voto

Stewart Points 1385

En général, vous pouvez obtenir la source d'un paquet installé en suivant cette procédure :

  1. Activez les dépôts de sources. Ouvrez le tableau de bord (bouton en haut à gauche) et recherchez sources . Cela devrait faire apparaître le Software & Updates exécutez-le et assurez-vous que l'option "Code source" est sélectionnée :

    enter image description here

  2. Ouvrez un terminal et exécutez cette commande :

     apt-get source vlc

Cela téléchargera les sources de vlc dans votre répertoire courant et vous pourrez les visualiser à votre guise.

Bien sûr, dans le cas de vlc Vous pouvez également les télécharger directement depuis le site videolan.org : https://www.videolan.org/vlc/download-sources.html

19voto

kaleissin Points 353

Vous pouvez utiliser apt-get source --compile directement :

sudo apt-get build-dep <package>
sudo apt-get source --compile <package>

Ça a marché pour moi. Le .deb se retrouve dans le répertoire à partir duquel vous avez lancé la commande.

9voto

Exemple minimal avec le hello paquet

Tout ceci et plus encore est décrit à l'adresse suivante : https://www.debian.org/doc/manuals/maint-guide/build.en.html

Tout d'abord, prenons un exemple de paquet pour modifier les sources :

sudo apt-get install hello
hello

sorties :

Hello, world!

Maintenant, on va le pirater. Prends la source :

apt-get source hello
cd hello-*

et ouvert :

vim src/hello.c

et modifier le message pour :

Hello, world hacked!

Faites ensuite la même chose sur le test, sinon le test ennuyeux commencera à échouer :

vim tests/greeting-1

Puis reconstruire avec :

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

Vers la fin de la sortie, il est dit :

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

Il a donc créé le .deb dans le répertoire parent, comment ose-t-il ? Finalement, nous installons et testons le paquet modifié :

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

et voilà, il sort le nouveau message :

Hello, world hacked!

Testé sur Ubuntu 18.04.

Vieux bzr réponse

TODO : cela a cessé de fonctionner sur Ubuntu 16.04 Xenial, échouant avec : bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/". . bzr branch lp:ubuntu/wily/hello travaux et bzr branch lp:ubuntu/xenial/hello échoue à nouveau. Pour une raison quelconque https://code.launchpad.net/ubuntu/+source/hello ne montre pas Xenial : https://web.archive.org/save/https://code.launchpad.net/ubuntu/+source/hello

Comme mentionné à https://askubuntu.com/a/81889/52975 il existe également une approche spécifique à Ubuntu avec bzr .

Obtenez la dernière version :

bzr branch lp:ubuntu/hello

Version spécifique :

bzr branch lp:ubuntu/trusty/hello

Vous pouvez également utiliser pull-lp-source :

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

Vous pourrez alors l'éditer :

cd hello
vim some_file

Reconstruisez-le :

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

Et l'installer :

sudo dpkg -i ../hello.deb

Le site Guide de l'emballage Ubuntu est une bonne source d'information.

3voto

ypid Points 31

Pour obtenir plus d'informations sur un paquet, y compris l'URL en amont et les contacts du projet/programme, vous pouvez consulter le fichier fichier de copyright (référencé à partir de paquets.debian.org ).

Lorsque le paquet est inclus et installé sur votre système, vous pouvez également lire le fichier de copyright directement à l'adresse suivante /usr/share/doc/$package_or_program_name/copyright .

Ver comment télécharger le code source d'un paquet Debian ? .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X