Минимальный пример с 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!
Проверено на 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/+source/hello не показывает Xenial: https://web.archive.org/save/https://code.launchpad.net/ubuntu/+source /Привет
Как уже упоминалось на 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-tools
pull-lp-source hello
Тогда вы сможете отредактировать его:
cd hello
vim some_file
Восстановите это:
dch -i
debcommit
bzr bd -- -b -us -uc
И установить это:
sudo dpkg -i ../hello.deb
Руководство по упаковке Ubuntu - хороший источник информации.
apt-get
также поддерживает программы с закрытым исходным кодом, поэтому ваше первоначальное предположение неверно.