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

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

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

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

188
задан 17 May 2015 в 12:39

5 ответов

Используйте команду apt-get source <пакет> (не используйте 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 Quick Reference Sheet:

dpkg-buildpackage Сборка пакета Debian из дерева исходных текстов Debian. Для этого вы должны быть в главном каталоге дерева исходных текстов. Пример использования:

 dpkg-buildpackage -rfakeroot -uc -b

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

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

dpkg-buildpackage -rfakeroot -uc -b

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

200
ответ дан 17 May 2015 в 12:39

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

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

    enter image description here

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

      apt-get source vlc
     

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

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

26
ответ дан 17 May 2015 в 12:39

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

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

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

3
ответ дан 17 May 2015 в 12:39

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

: https://www.debian.org/doc/manuals/maint-guide/build.en.html

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

sudo apt-get install hello
hello

выходов:

Hello, world!

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

apt-get source hello
cd hello-*

и откроем:

vim src/hello.c

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

Hello, world hacked!

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

vim tests/greeting-1

Затем пересоберем с:

sudo apt-get install devscripts
sudo apt-get build-dep hello
debuild -b -uc -us

В конце вывода будет написано:

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

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

sudo dpkg -i ../hello_2.10-1build1_amd64.deb
hello

и на выходе получаем новое сообщение:

Hello, world hacked!

Tested on Ubuntu 18.04.

Old bzr answer

TODO: это перестало работать на Xenial Ubuntu 16.04, не сработало с:

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

: bzr: ОШИБКА: не ветка: "bzr+ssh://bazaar.launchpad.net/+branch/ubuntu/hello/".. bzr ветка lp:ubuntu/wily/hello работает и bzr ветка lp:ubuntu/xenial/hello снова не работает. По какой-то причине https://code.launchpad.net/ubuntu/+source/hello не показывает Xenial: https://web.archive.org/save/https://code.launchpad.net/ubuntu/+source/hello

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

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

bzr branch lp:ubuntu/hello

Специфическая версия:

bzr branch lp:ubuntu/trusty/hello

Вы также можете использовать pulllp-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 является хорошим источником информации.

6
ответ дан 17 May 2015 в 12:39

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

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

Работал у меня. .Deb окажется в каталоге, из которого вы запустили команду.

19
ответ дан 17 May 2015 в 12:39

Другие вопросы по тегам:

Похожие вопросы: