APT-To Нажмите до определенного состояния

squeeze не поставляется с / etc / os-release , это мой «хак»:

dpkg --status tzdata|grep Provides|cut -f2 -d'-'
4
21.12.2018, 16:53
2 ответа

Да, это возможно. См.https://askubuntu.com/questions/92019/how-to-install-specific-ubuntu-packages-with-exact-version

Короче говоря, если вы хотите обновить fooдо версии 2.5, вместо запуска apt upgrade fooвы должны запуститьapt upgrade foo=2.5

Это означает, что вы захотите получить дамп установленных версий на тестовом сервере, а затем использовать эту информацию, чтобы привести рабочий сервер в такое же состояние.

3
27.01.2020, 20:48

ОП не сообщил, какой дистрибутив используется на сервере. Так что по умолчанию я буду считать это Debian, так как aptбыл «изобретен» Debian, а нужный сервис доступен только для Debian.

В то время как для одного пакета форсирование версии с =прекрасно и удобно, особенно для ее (, если она все еще доступна ), для набора пакетов это может быстро превратиться в кошмар из-за неудовлетворенных зависимостей.

Что можно сделать, так это использовать URL репозитория, созданный изhttps://snapshot.debian.org/. Этот сервис содержит копии всех версий пакетов, выпущенных с 2009 года, и официально доступен с 2010 года :

.

The snapshot service also enables administrators to install a predictable, tested set of packages by using a view of the archive on a given date. This feature allows administrators to test an upgrade path in a staging environment and then repeat the procedure in their production environment with assurance that they are performing exactly the tested upgrade. As the snapshot covers the entire archive and all suites this can be applied to environments that wish to track testing in a controlled manner as well as those with more stringent change control who wish to fully audit all stable updates before rolling them out.

Первым требованием является доступность https-транспорта:apt-get install apt-transport-https(извините, он может потянуть несколько зависимостей, которые, возможно, были обновлены за это время ).

Предположим, вам нужны пакеты двухнедельной давности, т.е. 2018 -12 -07. Следуя инструкциям на сайте, вы можете просмотреть:

https://snapshot.debian.org/archive/debian/20181207/

Который будет указывать на более точно -настроенный URL-адрес , вероятно, по времени UTC. Затем вы можете перемещаться туда «во времени» в соответствии с вашими потребностями, возможно, с помощью нескольких «следующее изменение ».

Когда время подойдет, просто используйте его в качестве базового URL-адреса deb в файле sources.list:

например /etc/apt/sources.d/snapshot-20181207.listнапример с содержимым:

deb https://snapshot.debian.org/archive/debian/20181207T090635Z/ stretch main

Поскольку моментальные снимки находятся в прошлом, с более старыми версиями пакетов, если выбор по умолчанию оставить для apt, он все равно будет использовать более новые версии и всегда будет игнорировать доступные там. флаг -tдля apt здесь бесполезен, потому что это все тот же релиз. Так что предпочтения apt должны быть изменены. Иметь запись в файле, оканчивающемся на .prefв /etc/apt/preferences.d/,например/etc/apt/preferences.d/00-snapshot-20181207.list(здесь может иметь значение порядок предпочтений):

Package: *
Pin: origin "snapshot.debian.org"
Pin-Priority: 900

При этом всем пакетам с snapshot.debian.org будет присвоен приоритет 900, что выше 500 для пакетов по умолчанию (и более новых ), что дает им приоритет над другими репозиториями, включая безопасность, которая является основным источником обновлений. в короткий промежуток времени. Поскольку это все еще более низкий приоритет, чем при добавлении -t stable, можно сравнить разницу между обновлением до состояния на 2018 -12 -07 или сегодня.

Использование 1001 даже позволит (и заставит )понизить версию пакетов, что может быть опасно (, например, но не ограничиваясь :, когда файл был перемещен из пакета в другой из-за упаковки изменения, этот файл может быть потерян при понижении версии ), но все еще может быть полезен.

Если apt-get updateжалуется на просроченный файл Релиза, что произойдет через 12 дней, как объяснено на сайте, вам придется либо использовать apt-get -o Acquire::Check-Valid-Until=false update, либо (, начиная с Debian 9 )добавить [check-valid-until=no]в исходной записи, чтобы отключить проверку. Вот почему транспорт https используется :, чтобы в любом случае иметь другой уровень безопасности. Поэтому замените содержимое snapshot-20181207.listна:

deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20181207T090635Z/ stretch main

ОБНОВЛЕНИЕ :безопасность находится в отдельном архиве снимков:debian -безопасность . Таким образом, эта запись (или запись на другую дату )также должны быть добавлены:

deb [check-valid-until=no] https://snapshot.debian.org/archive/debian-security/20181206T212649Z/ stretch/updates main

Теперь обычные действия apt-get updateи apt-get upgradeдолжны обновить все пакеты до версий 2018 -12 -07.

6
27.01.2020, 20:48

Теги

Похожие вопросы