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


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'ai quelques applications que j'utilise régulièrement et 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 à la hellanzb paquet


147
2018-02-27 22:52


origine


apt-get prend également en charge les programmes à source fermée, votre hypothèse initiale est donc incorrecte. - Flimm


Réponses:


Utilisez la commande apt-get source <package> (n'utilisez pas sudo avec lui) pour télécharger le 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 package à partir de la source, installez d'abord les dépendances de construction:

sudo apt-get build-dep <package>  

Puis utilisez dpkg-buildpackage créer un .deb fichier. 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 "Construire le package binaire uniquement"

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 est réussie, il y aura un .deb fichier situé dans le parent
 répertoire (par ex. ~/code/hellanzb_0.13-6.1_all.deb).


172
2018-02-27 23:01



Comment puis-je installer à partir de la source modifiée? ainsi que le remettre à d'autres utilisateurs à utiliser. Merci! - myusuf3
@dustyprogrammer Mis à jour ma réponse avec des instructions sur la création d'un .deb package du code source. En ce qui concerne l’installation de votre paquet modifié dans les référentiels, vous devriez vous adresser à un MOTU à propos de ça. - Isaiah
@DoR existe-t-il un moyen de créer un fichier deb qui est installé par défaut dans un répertoire personnalisé? de la même manière que nous pouvons installer en utilisant le --prefix pendant le processus de configuration? En fait, je ne peux pas trouver les archives pour la source d'une bibliothèque, c'est pourquoi je ne peux pas configurer --prefix et faire l'installer .. mais cette source de paquets est disponible via apt, donc je pensais à installer le paquet source dans le préfixe désiré . - ashishsony
Si vous ne voulez pas utiliser la source d'apt-get (par exemple lors de la construction d'un paquet provenant d'une autre distribution), téléchargez les 3 fichiers sources et utilisez "dpkg-source -x [fine] .dsc" pour extraire les fichiers et appliquer le fichier. diffs avant dpkg-buildpackage. (ftp.debian.org/debian/doc/source-unpack.txt) - Shlomi Loubaton
Est-ce que sudo apt-get build-dep <package> installer les dépendances en tant que binaires? Si c'est le cas, il ne s'agit pas d'une version complète de la source. Comment fait-on des dépendances install-dep à partir du source? - Hello World


En général, vous pouvez obtenir la source d'un package 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 évoquer le Software & Updates programme, lancez-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 actuel et vous pourrez les voir à votre guise.

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


19
2018-03-18 20:03



Vous ne devriez pas avoir besoin d'utiliser sudo avec 'apt-get source' - Squidly
@ MrBones argh! Non, bien sûr que non, force d'habitude. Merci de l'avoir signalé. - terdon♦
dans le terminal: software-properties-gtk <--- qui lancera le panneau de l'interface graphique "Software & Updates". (Il ne s’est pas présenté dans le tableau de bord pour une raison quelconque.) - pestophagous


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

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

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


16
2017-08-21 07:37



Travaillé pour moi aussi, merci. Juste un détail supplémentaire: vous pouvez installer le fichier .deb avec sudo dpkg -i <package>.deb - waldyrious
La meilleure solution, sauf que apt reviendra à la version du référentiel car vous avez oublié de documenter le journal des modifications avec "dch -i". - Futal


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é de packages.debian.org).

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

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


3
2017-08-01 12:52





Comme mentionné à https://askubuntu.com/a/81889/52975 il y a aussi 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, échouant avec: bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/".. bzr branch lp:ubuntu/wily/hello travaille et bzr branch lp:ubuntu/xenial/helloéchoue à nouveau. Pour certaines raisons https://code.launchpad.net/ubuntu/+source/hello ne montre pas Xenial: https://web.archive.org/save/https://code.launchpad.net/ubuntu/+source/hello

Version spécifique:

bzr branch lp:ubuntu/trusty/hello

Vous pouvez aussi utiliser pull-lp-source:

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

Ensuite, vous pourrez le modifier:

cd hello
vim some_file

Le reconstruire:

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

Et installez-le:

sudo dpkg -i ../hello.deb

le Guide de conditionnement Ubuntu est une bonne source d'informations.


1
2018-05-17 06:57



bzr branch lp:ubuntu/hello bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/".  bzr branch lp:ubuntu/xenial/lightdm bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/xenial/lightdm/".  Guide de conditionnement Ubuntu, Plus précisément 4.2. Obtenir la source dit: bzr branch ubuntu:lightdm lightdm.quickswitch bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/lightdm/".  Quel bordel. :-( - Stéphane Gourichon
Utilisé pull-lp-source à la place, mais alors nous ne recevons pas de dépôt bzr. bzr bd -- -b -us -uc dit bzr: ERROR: Not a branch: "/org/gourichon/localdata/SG/projects/sysadmin/sysadmin_ergozel/2016/2016-08-15/blouarp/lightdm-1.18.3/". : - / Merci pour tout indice. - Stéphane Gourichon
@ StéphaneGourichon hummm, je vous reproduis sur Ubuntu 16.04 Xenial. L'ajout de la version spécifique fonctionne: bzr lp:ubuntu/wily/hello, mais pour une raison quelconque, il n'y a pas de xenial version? Et aucun ne montre sur: code.launchpad.net/ubuntu/+source/hello Allez comprendre. - Ciro Santilli 新疆改造中心 六四事件 法轮功
Merci de prendre soin de reproduire. Genre de prendre la mauvaise carte, alors. Ouvert bugs.launchpad.net/ubuntu/+source/bzr/+bug/1614053 mentionner cette page. - Stéphane Gourichon
Plus pratique que certaines des autres approches. Et merci pour les autres conseils d'initiés :) - nealmcb