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

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

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

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

Используйте команду 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).

В общем, вы можете получить исходный код установленного пакета, выполнив эту процедуру:

  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

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

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

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

Минимальный пример с hello пакет

Все это и многое другое описано на: https://www.debian.org/doc/manuals/maint-guide/build.en.html

Сначала давайте получим образец пакета для изменения исходного кода для:

sudo apt-get install hellohello

выходы:

Hello, world!

Теперь давайте взломаем его. Получить источник:

apt-get source hellocd hello-*

и открыть:

vim src/hello.c

и измените сообщение на:

Hello, world hacked!

Затем проделайте то же самое с тестом, иначе раздражающий тест начнет завершаться неудачей:

vim tests/greeting-1

Затем перестройте с помощью:

sudo apt-get install devscriptssudo apt-get build-dep hellodebuild -b -uc -us

Ближе к концу вывода в нем говорится:

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

итак, он создал файл .deb в родительском каталоге, как он посмел. Итак, наконец, мы устанавливаем и тестируем измененный пакет:

sudo dpkg -i ../hello_2.10-1build1_amd64.debhello

и вот, пожалуйста, он выводит новое сообщение:

Hello, world hacked!

Протестировано на Ubuntu 18.04.

Старый bzr ответ

TODO: это перестало работать в Ubuntu 16.04, что привело к сбою с: 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 /+источник/привет не отображается.: https://web.archive.org/save/https://code .launchpad.net/ubuntu /+источник/привет

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

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

bzr branch lp:ubuntu/hello

Определенная версия:

bzr branch lp:ubuntu/trusty/hello

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

sudo apt-get install ubuntu-dev-toolspull-lp-source hello

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

cd hellovim some_file

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

dch -i debcommitbzr bd -- -b -us -uc

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

sudo dpkg -i ../hello.deb

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

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

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

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

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