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

146

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

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

Dans ce cas précis, je fais référence au package hellanzb

    
posée myusuf3 27.02.2011 - 23:52
la source

5 réponses

171

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

De 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 créer un paquet à partir de la source, installez d’abord les dépendances de construction:

sudo apt-get build-dep <package>  

Utilisez ensuite dpkg-buildpackage pour créer un fichier .deb . De Fiche de référence rapide APT et Dpkg :

  

dpkg-buildpackage Construit un paquet Debian à partir d’un arbre source Debian. Vous devez être dans le répertoire principal de l'arborescence source 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 root (à des fins de propriété), -uc signifie "Ne pas signer cryptographiquement le changelog" et -b signifie "Build the binary package" seulement "

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

dpkg-buildpackage -rfakeroot -uc -b

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

    
réponse donnée Isaiah 28.02.2011 - 00:01
la source
19

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

  1. Activer les référentiels sources. Ouvrez le tableau de bord (bouton en haut à gauche) et recherchez sources . Cela devrait faire apparaître le programme Software & Updates , lancez-le et assurez-vous que l'option "Code source" est sélectionnée:

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

    apt-get source vlc
    

Cela va télécharger les sources de vlc dans votre répertoire actuel et vous pouvez les voir à votre guise.

Bien sûr, dans le cas de vlc , vous pouvez aussi les télécharger directement sur le site Web videolan.org: lien

    
réponse donnée terdon 18.03.2014 - 21:03
la source
16

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

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

Travaillé pour moi Le fichier .deb se termine dans le répertoire à partir duquel vous avez exécuté la commande.

    
réponse donnée kaleissin 21.08.2013 - 09:37
la source
3

Pour obtenir plus d’informations sur un package comprenant une URL en amont et des contacts de projet / programme, vous pouvez consulter le fichier de copyright (référencé à partir de packages.debian.org ) .

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

Voir comment télécharger le code source du paquet Debian? .

    
réponse donnée ypid 01.08.2015 - 14:52
la source
1

Comme mentionné à lien , il existe également une approche spécifique à Ubuntu avec bzr .

Obtenez la dernière version:

bzr branch lp:ubuntu/hello

TODO: cela a cessé de fonctionner sur Ubuntu 16.04 Xenial, avec échec avec: bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/". . bzr branch lp:ubuntu/wily/hello fonctionne et bzr branch lp:ubuntu/xenial/hello échoue à nouveau. Pour une raison quelconque, lien n’affiche pas Xenial: lien

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

Ensuite, vous pourrez l’éditer:

cd hello
vim some_file

Reconstruisez-le:

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

Et installez-le:

sudo dpkg -i ../hello.deb

Le guide d’emballage Ubuntu est une bonne source d’informations.

    
la source

Lire d'autres questions sur les étiquettes