Я инициализирую сервер Ubuntu сценарием оболочки, для определения сценарий инициализации должен быть реплицируемым и идемпотентным (каждый раз, когда я выполняю команду, он всегда должен действовать одинаково). Таким образом, мне нужно четко определить версию пакета. В моем случае я хочу установить cURL 7.22.0 , поэтому я попробовал:
apt-get install curl=7.22.0
, но это не работает, так как версия не существует. Поэтому я проверил конкретную версию в кэше моего пакета с помощью apt-cache madison curl
:
curl | 7.22.0-3ubuntu4.14 | http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
curl | 7.22.0-3ubuntu4.14 | http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
curl | 7.22.0-3ubuntu4 | http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
curl | 7.22.0-3ubuntu4 | http://us.archive.ubuntu.com/ubuntu/ precise/main Sources
curl | 7.22.0-3ubuntu4.14 | http://us.archive.ubuntu.com/ubuntu/ precise-updates/main Sources
curl | 7.22.0-3ubuntu4.14 | http://security.ubuntu.com/ubuntu/ precise-security/main Sources
и подумал, что:
apt-get install curl=7.22.0-3ubuntu4.14
было разумным решением, но, увы, после apt-get update
этот пакет исчез и 7.22.0-3ubuntu4.15
ожил, и поэтому сценарий обеспечения больше не работает.
Как вы можете себе представить, этот сценарий слишком хрупок и совершенно бесполезен. Как я могу избежать этого неприятного сюрприза?