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

134

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

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

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

    
задан myusuf3 27.02.2011 в 22:52
источник

5 ответов

163

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

ответ дан Isaiah 27.02.2011 в 23:01
источник
16

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

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

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

    apt-get source vlc
    

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

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

    
ответ дан terdon 18.03.2014 в 20:03
15

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

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

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

    
ответ дан kaleissin 21.08.2013 в 07:37
3

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

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

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

    
ответ дан ypid 01.08.2015 в 12:52
0

Как упоминалось в Ссылка , существует также подход, специфичный для 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 снова не работает. По какой-то причине Ссылка не показывает Xenial: Ссылка

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

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 является хорошим источником информации.

    
ответ дан Ciro Santilli 包子露宪 六四事件 法轮功 17.05.2015 в 06:57