Я работаю на сервере Ubuntu 16.04 LTS и мне нужно исправитьhttps://launchpad.net/ubuntu/+source/vagrantв версии 1.8.1+dfsg-2
, выпущенной для Yakkety, но не для Xenial.
Так как же установить его 1.8.1+dfsg-2
для Xenial, чтобы он был заменен официальным пакетом после его выпуска?
ОБНОВЛЕНИЕ: Обратите внимание, что я не хочу pin
пакет. Я хочу, чтобы он обновился до последующей стабильной версии, как только эта стабильная версия будет выпущена.
решение1
Если вам нужен новый пакет только один раз и вы также хотите заменить его, как только будет выпущена правильная версия для вашего текущего релиза Ubuntu, вы можете:
Установите инструменты сборки и зависимости:
sudo apt-get install build-essential devscripts sudo apt-get build-dep vagrant
Загрузите исходный код пакета и распакуйте его:
dget -u https://launchpad.net/ubuntu/+archive/primary/+files/vagrant_1.8.1+dfsg-2.dsc cd vagrant-1.8.1
Добавьте запись в журнал изменений с тщательно продуманным локальным суффиксом версии (замените
anatoly
сообщение журнала на то, что хотите):debchange --local=~anatoly 'Backport to Xenial'
Это повысит версию пакета до
1.8.1+dfsg-2~anatoly1
. Суффикс тильда имеет свойство, что он фактически считается более низкой версией, чем1.8.1+dfsg-2
:$ dpkg --compare-versions 1.8.1+dfsg-2~anatoly1 '<' 1.8.1+dfsg-2; echo $? 0
Это означает, что менеджер пакетов предложит «обновить» локальный пакет, как только версия
1.8.1+dfsg-2
(или более новая) станет доступна в настроенных репозиториях.Соберите бинарный пакет:
debuild -b -j"`getconf _NPROCESSORS_ONLN`"
Установите собранный пакет(ы) с помощью
sudo dpkg -i <DEBFILE>...
.
PS: Я не пытался собрать пакет сам, так что вы можете столкнуться с проблемой. Например, исходный пакет для Yakkety может зависеть от пакета (версии), которого нет в Xenial (на данный момент это менее вероятно, поскольку это та же самая версия upstream). В таком случае мы можем поискать способы обойти это.