Вопрос Как получить и изменить исходный код пакетов, установленных с помощью apt-get?


Я предполагаю, что все приложения, установленные через apt-get с открытым исходным кодом; но для тех, которые доступны таким образом, где я могу получить исходный код для этих приложений, а также обновить их?

У меня есть несколько приложений, которые я использую регулярно, которые еще не активно развиваются, и я хотел бы добавить функции. Куда бы я пошел, чтобы получить права на обновление этих приложений?

В данном случае я имею в виду hellanzb пакет


147
2018-02-27 22:52


происхождения


apt-get также поддерживает программы с закрытым исходным кодом, поэтому ваше первоначальное предположение неверно. - Flimm


ответы:


Используйте команду apt-get source <package> (не используйте sudo с ним), чтобы загрузить исходный код пакета.

Из 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.

Чтобы создать пакет из исходного кода, сначала установите зависимости сборки:

sudo apt-get build-dep <package>  

Затем используйте dpkg-buildpackage для создания .deb файл. Из Краткая справочная таблица APT и Dpkg:

Dpkg-buildpackage Создает пакет Debian из дерева исходных текстов Debian. Вы должны находиться в главной директории исходного дерева, чтобы это работало. Использование образца:

 dpkg-buildpackage -rfakeroot -uc -b

где -rfakeroot инструктирует его использовать программу fakeroot для имитации прав root (для целей владения), -uc означает «Не криптографически подписывать журнал изменений», и -b означает «Создавать только двоичный пакет»

В терминале, cd в каталог, содержащий источник пакета (например, ~/code/hellanzb-0.13) и выполните следующую команду:

dpkg-buildpackage -rfakeroot -uc -b

Если сборка будет успешной, будет .deb файл, расположенный в родительском
 (например, ~/code/hellanzb_0.13-6.1_all.deb).


172
2018-02-27 23:01



как я могу установить из измененного источника. а также передать его для использования другими пользователями. Благодаря! - myusuf3
@dustyprogrammer Обновлен мой ответ с инструкциями по созданию .deb пакет из исходного кода. Что касается получения измененного пакета в хранилищах, вы должны поговорить с MOTU об этом. - Isaiah
@DoR есть способ создать deb, который устанавливается по умолчанию в пользовательском каталоге? так же, как мы можем установить с помощью -prefix во время процесса настройки? на самом деле я не могу найти tarballs для источника библиотеки, поэтому я не могу настроить --prefix и установить его .. но этот источник pakages доступен через apt, поэтому я думал установить исходный пакет в желаемом префиксе , - ashishsony
Если вы не хотите использовать apt-get source (например, при создании пакета из другого дистрибутива), загрузите 3 исходных файла и используйте «dpkg-source -x [fine] .dsc», чтобы извлечь файлы и применить diff перед dpkg-buildpackage. (ftp.debian.org/debian/doc/source-unpack.txt) - Shlomi Loubaton
Есть ли sudo apt-get build-dep <package> установить зависимости как двоичные файлы? Если это так, это не полная сборка из источника. Как установить зависимости установки установки от источника? - Hello World


Как правило, вы можете получить источник установленного пакета, выполнив следующую процедуру:

  1. Включить исходные репозитории. Откройте панель инструментов (верхняя левая кнопка) и выполните поиск sources, Это должно Software & Updates программы, запустите это и убедитесь, что у вас выбран вариант «Исходный код»:

    enter image description here

  2. Откройте терминал и запустите эту команду:

    apt-get source vlc
    

Это загрузит источники vlc в ваш текущий каталог, и вы сможете просматривать их на досуге.

Конечно, в случае vlc, вы также можете скачать их прямо с веб-сайта videolan.org: https://www.videolan.org/vlc/download-sources.html


19
2018-03-18 20:03



Вам не нужно использовать sudo с 'apt-get source' - Squidly
@MrBones argh! Нет, конечно, нет, привычка. Спасибо, что указали это. - terdon♦
в терминале: software-properties-gtk <---, который запустит панель GUI «Программное обеспечение и обновления». (Он не появлялся в поиске на панели инструментов по какой-либо причине.) - pestophagous


Вы можете использовать apt-get source --compile непосредственно:

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

Работал для меня. Файл .deb завершается в директории, из которой вы запускали команду.


16
2017-08-21 07:37



Спасибо за помощь. Только одна дополнительная деталь: вы можете установить .deb с помощью sudo dpkg -i <package>.deb - waldyrious
Лучшее решение, за исключением того, что apt вернется к версии репозитория, потому что вы забыли документировать журнал изменений с помощью «dch -i». - Futal


Чтобы получить дополнительную информацию о пакете, включая URL-адрес вверх и контакты проекта / программы, вы можете посмотреть на файл авторских прав (см. packages.debian.org).

Когда пакет включен и установлен в вашей системе, вы также можете прочитать файл /usr/share/doc/$package_or_program_name/copyright,

Видеть как загрузить исходный код пакета Debian?,


3
2017-08-01 12:52





Как упоминалось в https://askubuntu.com/a/81889/52975 существует также подход, специфичный для Ubuntu, с bzr,

Получите последнюю версию:

bzr branch lp:ubuntu/hello

TODO: это перестало работать на Ubuntu 16.04 Xenial, не получив: bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/"., bzr branch lp:ubuntu/wily/hello работает и bzr branch lp:ubuntu/xenial/helloснова не работает. По какой-то причине https://code.launchpad.net/ubuntu/+source/hello не отображается Xenial: https://web.archive.org/save/https://code.launchpad.net/ubuntu/+source/hello

Конкретная версия:

bzr branch lp:ubuntu/trusty/hello

Вы также можете использовать pull-lp-source:

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

Затем вы сможете отредактировать его:

cd hello
vim some_file

Восстановите его:

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

И установите его:

sudo dpkg -i ../hello.deb

Руководство по упаковке Ubuntu является хорошим источником информации.


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, в частности 4.2. Получение источника говорит: bzr branch ubuntu:lightdm lightdm.quickswitch bzr: ERROR: Not a branch: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/lightdm/".  Какой беспорядок. :-( - Stéphane Gourichon
Используемый pull-lp-source вместо этого, но тогда мы не получаем репозиторий bzr. bzr bd -- -b -us -uc говорит bzr: ERROR: Not a branch: "/org/gourichon/localdata/SG/projects/sysadmin/sysadmin_ergozel/2016/2016-08-15/blouarp/lightdm-1.18.3/". : - / Спасибо за любой намек. - Stéphane Gourichon
@ StéphaneGourichon hummm, я воспроизвожу вас на Ubuntu 16.04 Xenial. Добавление конкретных версий работает: bzr lp:ubuntu/wily/hello, но по какой-то причине нет xenial версия? И никто не показывает: code.launchpad.net/ubuntu/+source/hello Идите фигуру. - Ciro Santilli 新疆改造中心 六四事件 法轮功
Спасибо, что позаботились о воспроизведении. Тогда вы выбрали неправильную карту. открытый bugs.launchpad.net/ubuntu/+source/bzr/+bug/1614053 упомянув эту страницу. - Stéphane Gourichon
Более удобно, чем некоторые другие подходы. И спасибо за другие подсказки для инсайдеров :) - nealmcb