Я хочу настроить новую виртуальную машину с некоторыми указанными пакетами (имя и версия), которые предоставляются.
Например apache2 в версии 2.2.20-1ubuntu1
со всеми зависимостями. Даже если на серверах установлена новая версия этого пакета, его следует установить.
Решение должно работать / масштабироваться с несколькими (n) «настройками». Для другой виртуальной машины может потребоваться более старая версия apache2.
В настоящее время я знаю о некоторых возможностях, которые устанавливают точные пакеты, но не так хорошо масштабируются:
- Скопируйте все необходимое
*.deb
для каждой виртуальной машины вручную и введите:dpkg -i
... -> Может работать, но это очень подвержено ошибкам. (Ручные сценарии и т. Д.) - Создайте и используйте новый репозиторий Ubuntu для каждой настройки. -> Не работает, потому что мне нужны были бы репозитории.
- Настройте машину один раз и скопируйте ВМ / создайте снимок. -> Не работает, потому что мне нужно хранить виртуальные машины.
Моя проблема может быть помечена как управление исправлениями, но я не хочу обновлять свои пакеты до текущей версии. Моя цель - установить старые пакеты.
источник
apt
"Чтобы проверить, какие версии доступны, вы можете проверить через:
Если не сработает, попробуйте запустить
sudo apt-get update
прежде, чем обновить список пакетов.Затем скопируйте версию или используйте следующий синтаксис:
Чтобы проверить, какую версию вы установили, запустите:
источник
=2.2\*
опцию как способ использовать подстановочный знак для выбора любой доступной подрывной деятельности. Это то, что я хотел знать, но не знал, как спросить :)dpkg -l <packageName>
, номер версии иногда усекается. Чтобы избежать этого, используйтеCOLUMNS=100 dpkg -l <packageName>
N: Unable to locate package ^apache2
sudo apt-get update
первым. Убедитесь, что вы правильно настроили источники Apt.Я расширю более ранние ответы с другими удобными командами управления версиями в
apt
семье. Чтобы увидеть, какие версии доступны, запуститеapt-cache policy
:Затем, как упоминалось в другом месте, установите конкретную версию с
apt-get
:Теперь вы можете увидеть, какую версию вы установили, запустив
apt-cache policy
снова:Если вы не хотите, чтобы более новые версии устанавливались в обновлениях, прикрепите пакет с помощью
apt-mark
:Допустим, в индекс пакета добавлена новая версия apache2, и ваша машина синхронизируется с
apt-get update
. Вы увидите это при следующем запускеapt-get upgrade
:источник
На практике это невозможно, потому что старые версии не хранятся в архиве, поэтому, если у вас нет копии старой версии, вы не сможете ее установить. Вы должны спросить себя, почему вы хотите установить старую версию в первую очередь. В стабильном выпуске основной причиной выпуска новой версии является исправление уязвимости безопасности, а вы не хотите запускать уязвимый сервер?
источник
Как объясняет psusi, старые версии не хранятся в репозитории Ubuntu, но, очевидно, вы все равно можете найти их на панели запуска. Итак, вы идете (замените trusty и amd64 на вашу версию и архитектуру Ubuntu):
https://launchpad.net/ubuntu/trusty/amd64/apache2
и выберите версию, которую вы хотите. Затем вы загружаете deb в виде файла и устанавливаете с:
Снова замените имя файла в вашем файле. Это утомительно, если вам приходится понижать рейтинг многих пакетов, но лучше, чем ничего, если вы в отчаянии.
источник