Как установить пакет из тестирования?

Как установить пакет из тестирования?

Я работаю на сервере 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, вы можете:

  1. Установите инструменты сборки и зависимости:

    sudo apt-get install build-essential devscripts
    sudo apt-get build-dep vagrant
    
  2. Загрузите исходный код пакета и распакуйте его:

    dget -u https://launchpad.net/ubuntu/+archive/primary/+files/vagrant_1.8.1+dfsg-2.dsc
    cd vagrant-1.8.1
    
  3. Добавьте запись в журнал изменений с тщательно продуманным локальным суффиксом версии (замените 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(или более новая) станет доступна в настроенных репозиториях.

  4. Соберите бинарный пакет:

    debuild -b -j"`getconf _NPROCESSORS_ONLN`"
    
  5. Установите собранный пакет(ы) с помощью sudo dpkg -i <DEBFILE>....

PS: Я не пытался собрать пакет сам, так что вы можете столкнуться с проблемой. Например, исходный пакет для Yakkety может зависеть от пакета (версии), которого нет в Xenial (на данный момент это менее вероятно, поскольку это та же самая версия upstream). В таком случае мы можем поискать способы обойти это.

Связанный контент