Vraag Hoe krijg en wijzig ik de broncode van pakketten die zijn geïnstalleerd via apt-get?


Ik ga ervan uit dat alle applicaties zijn geïnstalleerd apt-get zijn open source; maar voor die die op die manier beschikbaar zijn, waar kan ik de broncode voor deze toepassingen krijgen en ze updaten?

Ik heb een paar applicaties die ik regelmatig gebruik en die niet langer actief worden ontwikkeld en ik zou graag functies toevoegen. Waar zou ik naartoe gaan om de rechten te krijgen om deze toepassingen bij te werken?

In dit geval verwijs ik specifiek naar de HellaNZB pakket


147
2018-02-27 22:52


oorsprong


apt-get ondersteunt ook closed-source programma's, dus uw aanvankelijke aanname is onjuist. - Flimm


antwoorden:


Gebruik de opdracht apt-get source <package> (gebruik geen sudo mee) om de bron van een pakket te downloaden.

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

Als u een pakket uit de bron wilt maken, installeert u eerst de build-afhankelijkheden:

sudo apt-get build-dep <package>  

Gebruik dan dpkg-buildpackage om een ​​te maken .deb het dossier. Van APT en Dpkg snel-naslagwerk:

dpkg-buildpackage Bouwt een Debian-pakket op vanuit een Debian-bronstructuur. U moet in de hoofddirectory van de bronstructuur staan ​​om dit te laten werken. Voorbeeld gebruik:

 dpkg-buildpackage -rfakeroot -uc -b

Waar -rfakeroot geeft de opdracht het fakeroot-programma te gebruiken om rootprivileges te simuleren (voor eigendomsdoeleinden), -uc staat voor "Niet cryptografisch de changelog ondertekenen", en -b staat voor "Bouw alleen het binaire pakket"

In een terminal, cd in de map die de pakketbron bevat (bijv ~/code/hellanzb-0.13) en voer de volgende opdracht uit:

dpkg-buildpackage -rfakeroot -uc -b

Als de build succesvol is, zal er een zijn .deb bestand in het bovenliggende bestand
 map (bijv ~/code/hellanzb_0.13-6.1_all.deb).


172
2018-02-27 23:01



hoe kan ik installeren vanaf de gewijzigde bron. evenals het terugzetten voor andere gebruikers om te gebruiken. Bedankt! - myusuf3
@dustyprogrammer Bijwerkt mijn antwoord met instructies voor het maken van een .deb pakket van de broncode. Wat betreft het ophalen van je gewijzigde pakket in de repositories, zou je moeten praten met een MOTU daarover. - Isaiah
@DoR is er een manier om een ​​deb te maken die standaard in een aangepaste map wordt geïnstalleerd? op dezelfde manier als we kunnen installeren met de --prefix tijdens het configuratieproces? eigenlijk kan ik de tarballs niet vinden voor de bron van een bibliotheek, daarom kan ik cant - prefix, en installeer het maken .. maar die bron van pakketten is beschikbaar via apt, dus ik dacht eraan om het bronpakket in het gewenste prefix te installeren . - ashishsony
Als je apt-get source niet wilt gebruiken (bijvoorbeeld bij het bouwen van een pakket uit andere distro) download dan de 3 bronbestanden en gebruik 'dpkg-source -x [fine] .dsc' om de bestanden uit te pakken en de diffs voor dpkg-buildpackage. (ftp.debian.org/debian/doc/source-unpack.txt) - Shlomi Loubaton
Doet sudo apt-get build-dep <package> installeer de afhankelijkheden als binaries? Als dit het geval is, is dit geen complete build van de bron. Hoe maak je build-dep install afhankelijkheden van de bron? - Hello World


In het algemeen kunt u de bron van een geïnstalleerd pakket krijgen door deze procedure te volgen:

  1. Schakel de bronrepository's in. Open het dashboard (knop linksboven) en zoek naar sources. Dat zou de Software & Updates programma, voer dit uit en controleer of de optie "Broncode" is geselecteerd:

    enter image description here

  2. Open een terminal en voer deze opdracht uit:

    apt-get source vlc
    

Dat zal de bronnen van vlc naar je huidige map downloaden en je kunt ze op je gemak bekijken.

Natuurlijk, in het geval van vlc, je kunt ze ook rechtstreeks downloaden van de website videolan.org: https://www.videolan.org/vlc/download-sources.html


19
2018-03-18 20:03



U moet sudo niet gebruiken met 'apt-get source' - Squidly
@MrBones argh! Nee, natuurlijk niet, kracht van gewoonte. Bedankt dat je erop wees. - terdon♦
in de terminal: software-eigenschappen-gtk <--- waarmee het GUI-paneel "Software & Updates" wordt gestart. (Het is om welke reden dan ook niet in het dashboard voor mij gevonden.) - pestophagous


Je kunt gebruiken apt-get source --compile direct:

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

Werkte voor mij. De .deb eindigt in de map waarin u de opdracht hebt uitgevoerd.


16
2017-08-21 07:37



Werkte ook voor mij, bedankt. Nog een extra detail: je kunt de .deb installeren met sudo dpkg -i <package>.deb - waldyrious
Beste oplossing, behalve dat apt terugkeert naar de repositoryversie omdat u bent vergeten de changelog te documenteren met "dch -i". - Futal


Voor meer informatie over een pakket inclusief upstream-URL en project- / programma-contacten, kunt u de auteursrechtbestand (waarnaar wordt verwezen vanaf packages.debian.org).

Wanneer het pakket is inbegrepen en op uw systeem is geïnstalleerd, kunt u het copyrightbestand ook rechtstreeks bij /usr/share/doc/$package_or_program_name/copyright.

Zien hoe de broncode van Debian-pakket te downloaden?.


3
2017-08-01 12:52





Zoals vermeld bij https://askubuntu.com/a/81889/52975 er is ook een Ubuntu-specifieke aanpak met bzr.

Krijg de laatste versie:

bzr branch lp:ubuntu/hello

TODO: dit stopte met werken op Ubuntu 16.04 Xenial, niet met: bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/".. bzr branch lp:ubuntu/wily/hello werkt en bzr branch lp:ubuntu/xenial/hellomislukt opnieuw. Om de een of andere reden https://code.launchpad.net/ubuntu/+source/hello toont Xenial niet: https://web.archive.org/save/https://code.launchpad.net/ubuntu/+source/hello

Specifieke versie:

bzr branch lp:ubuntu/trusty/hello

Je kan ook gebruiken pull-lp-source:

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

Dan kun je het bewerken:

cd hello
vim some_file

Herbouw het:

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

En installeer het:

sudo dpkg -i ../hello.deb

De Ubuntu-verpakkingsgids is een goede bron van informatie.


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/".  Ubuntu-verpakkingsgids, specifiek 4.2. De bron ophalen zegt: bzr branch ubuntu:lightdm lightdm.quickswitch bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/lightdm/".  Wat een puinhoop. :-( - Stéphane Gourichon
Gebruikt pull-lp-source in plaats daarvan, maar dan krijgen we geen bzr-repository. bzr bd -- -b -us -uc zegt bzr: ERROR: Not a branch: "/org/gourichon/localdata/SG/projects/sysadmin/sysadmin_ergozel/2016/2016-08-15/blouarp/lightdm-1.18.3/". : - / Bedankt voor elke hint. - Stéphane Gourichon
@ StéphaneGourichon hummm, ik reproduceer je op Ubuntu 16.04 Xenial. Het toevoegen van de specifieke versie werkt: bzr lp:ubuntu/wily/hello, maar om een ​​of andere reden is er geen xenial versie? En geen shows op: code.launchpad.net/ubuntu/+source/hello Ga figuur. - Ciro Santilli 新疆改造中心 六四事件 法轮功
Bedankt voor het zorgen voor de reproductie. Ik heb dan de verkeerde kaart gekozen. geopend bugs.launchpad.net/ubuntu/+source/bzr/+bug/1614053 met vermelding van deze pagina. - Stéphane Gourichon
Handiger dan sommige andere benaderingen. En bedankt voor de andere insidertips :) - nealmcb