Я хочу настроить новую виртуальную машину с некоторыми указанными пакетами (имя и версия), которые предоставляются.
Например, apache2 в версии 2.2.20-1ubuntu1
со всеми зависимостями. Даже если на серверах установлена новая версия этого пакета, его следует установить.
Решение должно работать / масштабироваться с несколькими (n) «настройками». Для другой виртуальной машины может потребоваться более старая версия apache2.
В настоящее время я знаю о некоторых возможностях, которые устанавливают точные пакеты, но не так хорошо масштабируются:
*.deb
на каждую виртуальную машину вручную и введите: dpkg -i
.. -> Может работать, но это очень подвержено ошибкам. (Ручные сценарии и т. Д.) Моя проблема может быть помечена как управление исправлениями, но я не хочу обновлять свои пакеты до текущей версии. Моя цель - установить старые пакеты.
Чтобы проверить, какие версии доступны, вы можете проверить с помощью:
sudo apt-cache madison ^apache2
Если не сработает, попробуйте запустить Затем скопируйте версию или используйте следующий синтаксис: Чтобы проверить, какую версию вы установили, выполните: sudo apt-get update
перед обновлением списка пакетов. Sup> [ 115] sudo apt-get install apache2=2.2\*
dpkg -l 'apache2*' | grep ^i
Вы можете использовать apt-get
для установки определенной версии пакета, если она находится в архиве, о котором знает apt. На справочной странице apt-get
:
Для установки можно выбрать конкретную версию пакета, указав после имени равенства пакет и версию пакета для выбора. Это приведет к тому, что эта версия будет найдена и выбрана для установки. В качестве альтернативы конкретный дистрибутив можно выбрать, указав имя пакета с косой чертой и версию дистрибутива или имя архива (стабильный, замороженный, нестабильный).
blockquote>Например: скажу вам, что их вызывает. В моей системе 11.10 мне нужно сделать следующее, чтобы заставить это работать:
sudo apt-get install apache2=2.2.20-1ubuntu1 \ apache2.2-common=2.2.20-1ubuntu1 \ apache2.2-bin=2.2.20-1ubuntu1 \ apache2-mpm-worker=2.2.20-1ubuntu1
Я подробно остановлюсь на более ранних ответах с другими удобными командами управления версиями в apt
семейство. Видеть, какие версии доступны, выполняются apt-cache policy
:
# apt-cache policy apache2
apache2:
Installed: (none)
Candidate: 2.4.7-1ubuntu4.5
Version table:
2.4.10-1ubuntu1.1~ubuntu14.04.1 0
100 http://us.archive.ubuntu.com/ubuntu/ trusty-backports/main amd64 Packages
2.4.7-1ubuntu4.5 0
500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
2.4.7-1ubuntu4 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
Затем как упомянуто в другом месте, установите определенную версию с apt-get
:
# apt-get install apache2=2.4.7-1ubuntu4.5
...
Можно теперь видеть, какую версию Вы установили путем выполнения apt-cache policy
снова:
# apt-cache policy apache2
apache2:
Installed: 2.4.7-1ubuntu4.5
Candidate: 2.4.7-1ubuntu4.5
Version table:
2.4.10-1ubuntu1.1~ubuntu14.04.1 0
100 http://us.archive.ubuntu.com/ubuntu/ trusty-backports/main amd64 Packages
*** 2.4.7-1ubuntu4.5 0
500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
100 /var/lib/dpkg/status
2.4.7-1ubuntu4 0
500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
Если Вы не хотите, чтобы более новые версии были установлены на обновлениях, прикрепите пакет с apt-mark
:
# apt-mark hold apache2
apache2 set on hold.
Скажем, новая версия apache2 добавляется к индексу пакета, и Ваша машина синхронизируется с apt-get update
. Вы будете видеть это когда Вы следующий запуск apt-get upgrade
:
# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
apache2
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
На практике это невозможно, потому что старые версии не хранятся в архиве, поэтому, если у вас нет копии старой версии, вы не сможете ее установить. Вы должны спросить себя, почему вы хотите установить старую версию в первую очередь. В стабильном выпуске основной причиной выпуска новой версии является исправление уязвимости в системе безопасности, и вы не хотите использовать уязвимый сервер?
Как psusi объясняет, старые версии не сохранены в репозитории человечности, но по-видимому можно все еще найти их на панели запуска. Так, Вы переходите в (замените надежного человека и amd64 с Вашей версией человечности и архитектурой):
https://launchpad.net/ubuntu/trusty/amd64/apache2
и выбор версия Вы требуете. Затем Вы загружаете deb как файл и установку с:
dpkg -i apache2_2.4.7-1ubuntu4.20_amd64.deb
Снова, замените имя файла в свой файл. Это становится утомительным, если необходимо понизить много пакетов, но это лучше чем ничего, если Вы являетесь отчаянными.