Как создать более новую версию пакета, чем доступна для моей стабильной версии?

Я хочу использовать более новую версию пакета с моей стабильной версией 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

Готово.

2
задан 27 December 2013 в 21:35

0 ответов

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

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