Я хочу использовать более новую версию пакета с моей стабильной версией Ubuntu. Запрос на получение бэкпорта занимает слишком много времени без видимого результата, поэтому я подумал, что, возможно, я смогу создать более новую версию самостоятельно.
Кто-нибудь может сказать мне, каковы текущие лучшие практики для создания более новых версий пакетов, которые уже доступны в Ubuntu?
ОБНОВЛЕНИЕ : Я обнаружил, что мне нужно pbuilder
для держите мою систему в чистоте от зависимостей сборки. Итак, я сделал:
sudo apt-get install pbuilder
sudo pbuilder create # create isolated environment for building packages
UPD2 : я попытался проверить, могу ли я создать текущую версию, поэтому я выбрал исходный код для текущей <version>
моей <package>
:
mkdir delme
cd delme
apt-get source <package>
UPD3 : Сейчас я попытался собрать пакет из исходного кода, но не могу найти результаты:
sudo pbuilder build *.dsc
В журнале говорится:
...
0 packages upgraded, 94 newly installed, 0 to remove and 0 not upgraded.
Need to get 30.2 MB of archives. After unpacking 89.4 MB will be used.
The following packages have unmet dependencies:
pbuilder-satisfydepends-dummy : Depends: libjansson-dev which is a virtual package.
Depends: libudev-dev but it is not going to be installed.
Depends: ocl-icd-opencl-dev which is a virtual package. or
opencl-dev which is a virtual package.
Unable to resolve dependencies! Giving up...
The following NEW packages will be installed:
...
Need to get 30.2 MB of archives. After unpacking 89.4 MB will be used.
Abort.
E: pbuilder-satisfydepends failed.
I: Copying back the cached apt archive contents
...
UPD4 : Оказалось, что эти неудовлетворенные зависимости находятся в репозитории universe
, поэтому мне пришлось включить его:
sudo pbuilder update --components "main universe" --override-config
Без --override-config
pbuilder
будет жаловаться, что оно не установлено. Все успешно скомпоновано:
ls -la /var/cache/pbuilder/result/
UP5 : выяснил, какие версии пакетов доступны, и выбрал источник для нужной:
uscan --report --verbose
uscan --download-version <version>
UP6 : Нашел утилиту uupdate
и использовал ее для создания каталога для нового пакета и обновления debian/changelog
, которое необходимо для создания новой версии:
cd <package>-<old-version>
uupdate ../<package>_<version>.orig.tar.gz
cd ../<package>-<version>
vim debian/changelog
UP7 : Для сборки исходного кода с pbuilder
мне нужно сгенерировать файл .dsc
. Обычно это делается командой debuild -S
или pdebuild -S
в `pbuilder.
pdebuild -S
Это сообщение об ошибке:
...
fakeroot debian/rules clean
dh clean --with autoreconf
dh: unable to load addon autoreconf: ..
BEGIN failed--compilation aborted at (eval 19) line 2.
make: *** [clean] Error 2
dpkg-buildpackage: error: fakeroot debian/rules clean gave error exit status 2
Похоже, что нет пакета autoreconf, но pbiulder
должен извлекать его автоматически, и похоже, что для этого он использует файл .dsc
, catch22.
UPD8 : Команда для создания файла .dsc
- dpkg-source
.
cd ..
dpkg-source -b <package>-<version>
Теперь по нему можно запустить pbuilder
.
sudo pbuilder build <package>_<version>.dsc
ls -la /var/cache/pbuilder/result/
UP9 : загрузка в PPA так же проста, как запуск:
dput ppa:techtonik/backports /var/cache/pbuilder/result/<package>_<version>.changes
Но это не работает:
Checking signature on .changes
gpg: no valid OpenPGP data found.
gpg: the signature could not be verified.
...
No signature on /var/cache/pbuilder/result/<package>_<version>.changes
UP10 : я не помню, как я сгенерировал ключ GPG, но у меня есть один. Нашел способ подписать посылки. Отредактировал поле Maintaner:
в файле .dsc
и использовал debsign
.
sudo vim /var/cache/pbuilder/result/<package>_<version>.dsc
sudo debsign /var/cache/pbuilder/result/<package>_<version>.changes
Попытка загрузки не удалась:
Error: uploading files for distribution UNRELEASED to ppa not allowed.
UP11 : повторить все с шага 6. Как я узнал, что мне нужно отредактировать debian/changes
для замены UNRELEASED
] с saucy
и задайте адрес электронной почты в поле Maintainer:
поля debian/control
?
vim <package>-<version>/debian/changelog
vim <package>-<version>/debian/control
dpkg-source -b <package>-<version>
sudo pbuilder build <package>_<version>.dsc
sudo debsign /var/cache/pbuilder/result/<package>_<version>.changes
sudo dput ppa:techtonik/backports /var/cache/pbuilder/result/<package>_<version>.changes
UPD12 : Я все еще не могу загрузить в PPA. Сначала это было Unable to find distroseries: unstable
, потому что я указал unstable
вместо saucy
в качестве замены UNRELEASED
. После повторного шага 11 он пожаловался на Already uploaded to ...
, который был исцелен ключом -f
на dput
. Теперь есть сообщение, что загрузка отклонена, потому что Source/binary (i.e. mixed) uploads are not allowed.
Где-то в новом сообщается, что мне нужно собрать свой пакет с debuild -S
, но я не знаю, как это сказать pbuilder
. [тысяча сто семьдесят девять]
UPD14 : Оказалось, что виновником является пакет dh-autoreconf
, который требуется для источника очистки перед сборкой, но и pbuilder
, и debuild
упускают этот факт и не могут восстановиться. Установка dh-autoreconf
на хост-систему позволила собрать пакет с исходным кодом, подписать и загрузить его даже без сборки pbuilder
.
cd <package>-<version>
debuild -S
cd ..
dput ppa:techtonik/backports <package>_<version>_source.changes
Готово.