Вопрос или проблема
Цель: установить агент Puppet 6 в контейнере Docker на базе ubuntu:jammy для тестирования сценариев Puppet.
Я добавил репозитории Puppetlabs, выполнил apt-get update
и apt-get upgrade
, но команда apt-get install puppet-agent
по-прежнему завершается ошибкой ‘нет кандидата на установку`.
Инструкции, которых я придерживался: инструкции Puppet
Что я делаю не так?
Инструкции по воспроизведению
Dockerfile
FROM ubuntu:jammy
EXPOSE 80
RUN apt-get update
RUN apt-get upgrade -y
RUN yes| unminimize
RUN apt-get install apt-utils -y
# необходимые пакеты
RUN apt-get install unzip -y
RUN apt-get install wget -y
RUN apt-get install puppet -y
Команды в терминале контейнера Docker
root@6d2e2ea018b6:/# history
1 wget https://apt.puppet.com/puppet6-release-jammy.deb
2 dpkg -i puppet6-release-jammy.deb
3 apt-get update -y
4 apt-get upgrade -y
5 apt-get install puppet-agent
Вывод команды
root@6d2e2ea018b6:/# wget https://apt.puppet.com/puppet6-release-jammy.deb
--2023-06-07 11:59:24-- https://apt.puppet.com/puppet6-release-jammy.deb
Разрешение apt.puppet.com (apt.puppet.com)... 52.222.139.62, 52.222.139.78, 52.222.139.20, ...
Подключение к apt.puppet.com (apt.puppet.com)|52.222.139.62|:443... подключено.
HTTP-запрос отправлен, ожидается ответ... 200 OK
Размер: 11702 (11K) [application/x-debian-package]
Сохранение в: 'puppet6-release-jammy.deb'
puppet6-release-jammy.deb 100%[=====================================================================================================>] 11.43K --.-KB/s за 0s
2023-06-07 11:59:24 (127 MB/s) - 'puppet6-release-jammy.deb' сохранен [11702/11702]
root@6d2e2ea018b6:/# dpkg -i puppet6-release-jammy.deb
Выбор ранее не выбранного пакета puppet6-release.
(Чтение базы данных ... 10920 файлов и каталогов в настоящее время установлено.)
Подготовка к распаковке puppet6-release-jammy.deb ...
Распаковка puppet6-release (6.0.0-23jammy) ...
Настройка puppet6-release (6.0.0-23jammy) ...
root@6d2e2ea018b6:/# apt-get update -y
Обновлено: 1 http://ports.ubuntu.com/ubuntu-ports jammy InRelease
Получение: 2 http://ports.ubuntu.com/ubuntu-ports jammy-updates InRelease [119 kB]
Получение: 3 http://ports.ubuntu.com/ubuntu-ports jammy-backports InRelease [108 kB]
Получение: 4 http://ports.ubuntu.com/ubuntu-ports jammy-security InRelease [110 kB]
Получение: 5 http://apt.puppetlabs.com jammy InRelease [113 kB]
Получение: 6 http://apt.puppetlabs.com jammy/puppet6 все пакеты [1316 B]
Получение: 7 http://apt.puppetlabs.com jammy/puppet6 arm64 пакеты [1316 B]
Загружено 452 kB за 1s (417 kB/s)
Чтение списков пакетов... Готово
root@6d2e2ea018b6:/# apt-get upgrade -y
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Расчет обновления... Готово
0 обновлено, 0 новых установлено, 0 удалено и 0 не обновлено.
root@6d2e2ea018b6:/# apt-get install puppet-agent
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Пакет puppet-agent недоступен, но ссылается на другой пакет.
Это может означать, что пакет отсутствует, устарел или
доступен только из другого источника
E: Пакет 'puppet-agent' не имеет кандидата на установку
Что идет не так?
Возможно важная деталь: я работаю на Macbook Pro с M1.
puppet6-release-jammy.deb
не содержит puppet-agent
, но требует его.
Поэтому скачайте и установите puppet-agent
откуда вы получили puppet6-release-jammy.deb
. Пакет доступен ТОЛЬКО для 23.04 и 23.10, как видно из списка пакетов. Поэтому обновление до 23.04 также является вариантом. Не знаю, можно ли установить версию 23.04 в 20.04 (список зависимостей, похоже, в порядке).
Вам обязательно нужно использовать Puppet 6, или можно использовать другие версии? Рассматривали ли вы возможность использования виртуализации вместо Docker? Я недавно тестировал Puppet 8 с актуальной версией Ubuntu 22.04 без проблем, используя Vagrant:
wget https://apt.puppetlabs.com/puppet8-release-$(lsb_release -cs).deb
sudo dpkg -i puppet8-release-$(lsb_release -cs).deb
sudo apt-get -qq update
sudo apt-get install -y puppet-agent
Источник: https://medium.com/@joachim8675309/puppetry-with-vagrant-1b5e0613672a
Ответ или решение
Проблема, с которой вы столкнулись, связана с тем, что пакет puppet-agent
недоступен в репозиториях для версии Ubuntu Jammy (22.04). При попытке установить пакет, сообщение об ошибке указывает на то, что пакет отсутствует или был заменен.
Возможные решения:
-
Проверьте наличие пакета для вашей версии:
Как вы заметили,puppet-agent
может отсутствовать для версии 22.04 (Jammy). Вы можете попробовать установить Puppet 8 или другую доступную версию для Ubuntu Jammy.Чтобы установить Puppet 8, выполните следующие команды:
wget https://apt.puppet.com/puppet8-release-jammy.deb dpkg -i puppet8-release-jammy.deb apt-get update apt-get install puppet-agent -y
-
Переход на другую версию Ubuntu:
Если возможность использования Puppet 6 критична, вы можете рассмотреть вариант использования версии Ubuntu 22.04 или 23.04, для которых доступны нужные пакеты. Также вы можете изучить возможность установки Puppet в рамках других дистрибутивов. -
Использование Ubuntu 20.04:
Если ваш проект не зависит от Jammy, возможно, стоит попробовать создать контейнер на базе Ubuntu 20.04, в которомpuppet-agent
может быть доступен.С изменением Dockerfile:
FROM ubuntu:20.04 RUN apt-get update && \ apt-get install -y wget && \ wget https://apt.puppet.com/puppet6-release-focal.deb && \ dpkg -i puppet6-release-focal.deb && \ apt-get update && \ apt-get install -y puppet-agent
-
Используйте виртуализацию:
Если вы не привязаны к Docker, рассмотрите использование виртуализации, такой как Vagrant. Это может помочь избежать проблем с совместимостью пакетов. Пример команды для установки Puppet 8 в Vagrant:wget https://apt.puppet.com/puppet8-release-$(lsb_release -cs).deb sudo dpkg -i puppet8-release-$(lsb_release -cs).deb sudo apt-get -qq update sudo apt-get install -y puppet-agent
Заключение:
Убедитесь, что репозитории правильно настроены, и используйте доступные версии пакетов для вашей версии Ubuntu. Если вам строго необходимо использовать Puppet 6, переход на другую версию Ubuntu может быть наилучшим решением. А для более новых версий рассмотрите возможности использования виртуализации или перехода на более актуальные версии Puppet.