У меня есть веб-сервер под управлением Ubuntu Server 8.04, и я хотел бы знать правильные команды для его обновления.
Я использовал apt-get update и apt-get upgrade, но иногда он сообщает мне, что есть задержанные пакеты. Я использовал apt-get dist-upgrade, чтобы получить оставшиеся пакеты. Это лучший способ справиться с этим? Я не хочу обновляться до 8.10 или чего-нибудь позже, пока не выйдет 10.04 LTS.
Обновление: за комментарий Sparks, я должен отметить, что «aptitude» можно использовать вместо «apt-get» в моем ответе ниже, с одним исключением: «apt-get upgrade» будет заменено на «aptitude safe-upgrade» . Интерфейс aptitude для APT имеет несколько хороших функций по сравнению с apt-get, как описано в этом Сообщение блога. Однако, если у вас уже есть система, которой вы управляли с помощью apt-get, вы, безусловно, можете продолжать использовать apt-get и, вероятно, должны. Мы не делаем много установки / удаления программного обеспечения на сервере, поэтому я не считаю использование aptitude критически важным, но если бы мне пришлось запустить новый сервер сегодня, я бы, вероятно, использовал его.
Последний Документация по серверу Ubuntu все еще подробно описывается использование apt-get и обсуждается только aptitude как графический интерфейс для APT. Хотя это определенно упущение, это определенно означает, что нет ничего плохого в использовании apt-get.
Я использую пакет автоматических обновлений Ubuntu для автоматического применения обновлений безопасности. Вот мои заметки по его настройке (на сервере Ubuntu 8.04 LTS):
$apt-get install unattended-upgrades update-notifier-common
Edit /etc/apt/apt.conf/50unattended-upgrades. Select only security upgrades, and set mail address
Unattended-Upgrade::Allowed-Origins {
"Ubuntu hardy-security";
// "Ubuntu hardy-updates";
};
Unattended-Upgrade::Mail "youremail@yourdomain.com";
Install mailx (required for unattended-upgrades mail to work)
$apt-get install mailx
Edit /etc/apt/apt.conf.d/10periodic :
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::Unattended-Upgrade "1";
При использовании этой конфигурации обновления безопасности будут применены автоматически, и список обновлений будет отправлен вам по электронной почте. Хотя автоматическое применение любых обновлений может считаться опасным, я считаю, что не отставать от обновлений безопасности - задача, достойная риска ... и, откровенно говоря, "поддержание" требует автоматизации.
Что касается обновления пакетов, я задал вопрос прояснить значение dist-upgrade которые вы можете найти применимыми. В основном, когда вы выполняете обновление с помощью apt-get, установленные пакеты будут обновляться только в том случае, если обновление не требует новых пакетов или удаления пакета (например, зависимости не меняются). Если обновленный пакет имеет новые зависимости, вам нужно вместо этого использовать apt-get dist-upgrade. Поскольку apt-get dist-upgrade также делает все, что делает apt-get upgrade, я обычно использую его по умолчанию. Важно следить за тем, какие пакеты будут изменены, и принимать любые меры предосторожности, которые могут оказаться необходимыми.
Коротко:
apt-get update
apt-get dist-upgrade
Если я беспокоюсь о том, что хочет сделать dist-upgrade, я сделаю:
apt-get update
apt-get upgrade
По крайней мере, обновить пакеты, у которых нет новых зависимостей, пока я не проведу небольшое исследование. Однако всегда есть шанс, что что-то сломается, что бы вы ни делали, так что вам просто нужно немного верить :)
В заключение, если вы применяете обновления безопасности и уверены, что Canonical хорошо справляется с исправлением ошибок, вы можете обнаружить, что обновлять пакеты не так уж и необходимо. Если сервер работает без сбоев, что ж ... он работает.
aptitude update
aptitude safe-upgrade
В наши дни команда Debian рекомендует использовать aptitude вместо apt-get. Однако я также видел несколько мест, где говорилось, что если вы использовали apt-get на определенном сервере, вам следует продолжать это делать и просто использовать aptitude в будущем boxen.
Я использую гибридный подход. Я хочу, чтобы обновления применялись как можно скорее, но не «без присмотра», так как у меня раньше были обновления, которые ломали вещи.
Каждую ночь я запускаю cron с помощью следующей команды:
/usr/bin/apt-get update -qq;/usr/bin/apt-get dist-upgrade -duyq
Затем, если есть какие-либо обновления, они загружаются и ждут меня, когда я читаю свою электронную почту утром. Тогда я просто бегу
apt-get dist-upgrade
вручную и следите за проблемами. Часто я делаю резервную копию или снимок сервера перед выполнением обновления, если пакеты кажутся критически важными для функциональности этого сервера.
Это решает проблему для меня, уведомляя меня немедленно (или всякий раз, когда задание cron было запущено) о любых доступных обновлениях, но по-прежнему позволяет мне быть там, когда происходит фактическое обновление.
Что касается вашего второго вопроса о задержанных пакетах. Я их не часто вижу (возможно, потому, что я использую «dist-upgrade» вместо «upgrade»). Но когда я это сделал, я обнаружил, что проблемы обычно можно решить, удалив и переустановив соответствующий пакет.
Обычно я использую aptitude full-upgrade, но этого нет на странице руководства. Странный...
Вы можете настроить ubuntu на ограничение обновлений до LTS-версий, чтобы вам не предлагалось обновить текущую более новую версию, отличную от LTS. Однако в день выхода следующего LTS он предложит обновить его. Возможно, вы захотите или не захотите этого в первый день ...
Поскольку в настоящее время у меня нет LTS-версии, я не могу найти настройку, поскольку она не предлагается. Я посмотрю в офис и отредактирую эту запись завтра, если кто-нибудь не укажет на соответствующие настройки, прежде чем я доберусь до нее.
Если вас просто беспокоит его безопасность, вы можете использовать cron-apt чтобы настроить автоматическое обновление и закомментировать все, кроме репозиториев безопасности в /etc/apt/sources.list.