Введение в базовое обслуживание FreeBSD

Вступление

При администрировании серверов FreeBSD важно понимать основные процедуры обслуживания, которые помогут вам поддерживать ваши системы в хорошем состоянии.

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

Если вам нужна помощь для начала работы с FreeBSD, следуйте нашему руководству here.

Обновление базовой операционной системы FreeBSD

При работе с FreeBSD важно понимать, что базовая операционная система создается и управляется отдельно от другого программного обеспечения в системе. Это дает ряд преимуществ и позволяет команде FreeBSD тщательно тестировать и развивать основные функциональные возможности системы.

**: Прочтите примечание внизу этого раздела, касающееся ошибки в текущей процедуре обновления, прежде чем продолжить.

Когда вы начинаете использовать свой сервер, существует высокая вероятность того, что обновления безопасности были опубликованы в базовой системе. Чтобы запросить обновления у серверов проекта FreeBSD, загрузить все новые файлы и установить их в своей системе, введите следующую команду:

sudo freebsd-update fetch install

Если вы работаете с установкой DigitalOcean FreeBSD, по умолчанию включено + sudo +. Если вы используете другую платформу, вам может потребоваться установить + sudo + через систему портов или пакеты или + su + для root.

Команда + freebsd-update + - это утилита управления программным обеспечением в базовой операционной системе. Подкоманда + fetch + загружает любые новые обновления, в то время как подкоманда + install + применяет их к работающей системе.

Если есть обновления, вы увидите список программного обеспечения, на которое повлияло обновление. Вы можете прокрутить стрелку вниз или пролистать страницу с помощью пробела. Как только вы достигнете нижней части списка, обновления будут применены.

Любое долгосрочное программное обеспечение, которое было обновлено, необходимо будет перезапустить, чтобы использовать новую версию. Если вы видите какие-либо обновления ядра, потребуется перезагрузка для предотвращения странного поведения. Вы можете сделать это, набрав:

sudo shutdown -r now

ВАЖНО: ошибка в процедуре обновления

В настоящее время существует восходящая ошибка с процедурой обновления FreeBSD, работающей на here. Ошибка приводит к зависанию при перезагрузке системы после процедуры обновления.

Есть два способа справиться с этой ситуацией, второй является предпочтительным в большинстве случаев.

Во-первых, просто принудительно включите питание сервера с помощью панели управления DigitalOcean. Это приведет к принудительному и неуместному перезапуску сервера, но при загрузке он будет использовать обновленную среду.

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

Для этого, прежде чем применять какие-либо обновления, загрузитесь в однопользовательском режиме. Вы можете сделать это, набрав:

sudo nextboot -o "-s" -k kernel
sudo reboot

Затем перейдите в панель управления DigitalOcean для своей капли и нажмите кнопку «Доступ к консоли», чтобы перейти к веб-консоли. Нажмите «Enter», когда загрузка завершится, чтобы получить сессию оболочки восстановления. Отсюда вы можете отключить софт-обновления или журналирование софт-обновлений.

Чтобы полностью отключить софт-обновления, введите:

tunefs -n disable /

Если вы хотите просто отключить ведение журнала программных обновлений, что является менее радикальным компромиссом, вы можете использовать эту команду вместо этого:

tunefs -j disable /

Как только это будет завершено, вы можете инициировать перезагрузку, чтобы снова перезагрузить сервер в полном многопользовательском режиме:

reboot

После завершения загрузки вы можете получить и применить обновления FreeBSD, используя процедуру, описанную выше, без зависания при перезагрузке.

Мы рекомендуем вам следить за bug report, чтобы вы могли отменить эти изменения, когда доступно исправление для основной ветки разработки.

Автоматическая проверка обновлений

Можно настроить систему на автоматическую ежедневную проверку на наличие этих исправлений безопасности, настроив задание + cron +. Утилита + freebsd-update + имеет специальную подкоманду + cron +, которая доступна специально для этой цели.

Это приостановит произвольное количество времени (до часа), чтобы распределить нагрузку на серверы загрузки. Затем он проверит наличие обновлений и загрузит их (в основном это операция + fetch + в фоновом режиме). Если обновления загружены, указанная учетная запись пользователя будет уведомлена. Обновления не устанавливаются автоматически, поэтому администратор может выбрать подходящее время.

Чтобы настроить эту автоматическую проверку, отредактируйте файл + / etc / crontab + с правами + sudo +:

sudo vi /etc/crontab

В нижней части файла добавьте строку, которая выглядит следующим образом:

@daily root freebsd-update -t  cron

Приведенная выше команда автоматически запустит команду обновления от имени пользователя root. Если обновления найдены, пользовательская учетная запись, указанная после компонента + -t +, будет уведомлена. В приведенном выше примере пользователь по умолчанию + freebsd + будет уведомлен.

Сохраните и закройте файл, когда вы закончите.

При следующем входе в учетную запись + freebsd + вы можете проверить свою почту, набрав:

mail

Если обновления были загружены, вы увидите что-то вроде этого:

Mail version 8.1 6/6/93.  Type ? for help.
"/var/mail/freebsd": 1 message 1 new
>N  1 freebsd@freebsdserver       Thu Dec 18 21:45 209/3997  "freebsdserver security updates"
&

Вы можете просмотреть список обновлений, набрав номер сообщения, связанного с уведомлением:

1

Когда вы будете удовлетворены тем, что программное обеспечение будет изменено, вы можете быстро установить обновления, набрав:

sudo freebsd-update install

Не забудьте перезагрузить компьютер, если были применены какие-либо исправления ядра, и перезапустить все службы, на которые повлияло обновление.

Синхронизация источников операционной системы

Одна из задач, которую вы, вероятно, время от времени хотите выполнять, - это синхронизировать копию исходного кода FreeBSD с вашей системой. Это полезно по ряду причин. Некоторые порты требуют правильного построения текущего источника, и этот источник также можно использовать для начала отслеживания новой ветви программного обеспечения.

Исходный код FreeBSD поддерживается в репозитории SVN. Если вам просто нужна самая свежая версия источника, без больших накладных расходов, которые влечет за собой подрывная деятельность, вы можете использовать утилиту + svnup + для синхронизации текущих источников. Это намного быстрее, чем использование самой Subversion.

Вы можете установить пакет + svnup +, набрав:

sudo pkg install svnup

Если вы предпочитаете использовать порт, вы можете получить это, набрав:

cd /usr/ports/net/svnup
sudo make config-recursive install clean

Если у вас есть утилита, мы должны немного изменить файл конфигурации. Откройте его с привилегиями + sudo + в вашем текстовом редакторе:

sudo vi /usr/local/etc/svnup.conf

Сначала нам нужно выбрать зеркало из списка. В файле конфигурации есть несколько строк + host = +, и все они закомментированы. Выберите тот, который, по вашему мнению, может быть близок вам, и раскомментируйте его:

. . .
[defaults]
work_directory=/var/tmp/svnup
#host=svn.freebsd.org
#host=svn0.us-west.freebsd.org

#host=svn0.eu.freebsd.org

. . .

Затем вы должны убедиться, что разделы файла, описывающие каждую ветку SVN, ссылаются на версию выпуска, которую вы используете. Вы можете узнать это в своей версии релиза, набрав это из командной строки:

freebsd-version
10.1-RELEASE-p2

Это говорит нам об ветви операционной системы, а также об уровне системных исправлений в конце. Часть, на которую мы хотим обратить внимание в наших текущих целях, это число перед первым тире. В этом случае указывается + 10.1 +. + RELEASE + означает, что в настоящее время мы отслеживаем ветку релиза, наиболее стабильную ветку, доступную для FreeBSD.

Вернувшись в файл, убедитесь, что определение параметра + branch = + в + [release] + указывает на это число:

. . .

[release]
branch=base/releng/
target=/usr/src

. . .

Это гарантирует, что вы загружаете правильный источник. Сохраните и закройте файл, когда вы закончите.

Теперь, так как мы отслеживаем ветку релиза, мы можем набрать:

sudo svnup release

Это позволит загрузить самую последнюю версию дерева исходных текстов в + / usr / src +. Вы можете обновить его в любое время, повторно выполнив эту команду.

Если вам нужна возможность запуска команд подрывной деятельности на источнике, вам нужно будет загрузить инструмент подрывной деятельности. Вы можете установить пакет, набрав:

sudo pkg install subversion

Если вы предпочитаете использовать порты, вы можете приобрести инструмент, набрав:

cd /usr/ports/devel/subversion
sudo make config-recursive install clean

Использование команды + subversion + займет * значительно * больше времени. Он будет загружать не только текущую версию каждого файла в дереве, но и всю историю проекта.

Если вы ранее синхронизировали источник с помощью инструмента + svnup +, вам необходимо удалить дерево исходного кода перед проверкой источника с помощью + subversion +:

sudo rm -rf /usr/src

Подробные инструкции по использованию + subversion + выходят за рамки данного руководства. Тем не менее, общая идея состоит в том, чтобы выполнить команду + checkout + для одной из ветвей на одном из исходных зеркал FreeBSD.

Например, чтобы извлечь тот же самый источник, который мы использовали с помощью команды + svnup + выше, мы могли бы напечатать что-то вроде этого:

sudo svn checkout https://svn0.us-east.FreeBSD.org/base/releng/10.1 /usr/src

Обратите внимание, что URL для этой команды - это просто комбинация определений + host = + и + branch = +, которые мы видели в файле конфигурации + svnup +.

Обновление системного реестра дополнительного программного обеспечения

FreeBSD предоставляет два разных формата для установки дополнительного программного обеспечения на ваш сервер. Первая - это система на основе исходного кода, называемая «портами», а вторая - хранилище предварительно скомпилированных пакетов на основе доступных портов. Для программного обеспечения, которое находится за пределами базовой операционной системы, для управления используется ряд дополнительных инструментов.

Система хранит информацию о портах, которые могут быть установлены в иерархии каталогов с корнем в + / usr / ports +. Эта структура каталогов называется «дерево портов». Прежде чем мы коснемся каких-либо портов, мы должны убедиться, что наше дерево портов содержит актуальную информацию о нашем доступном программном обеспечении. Мы можем использовать команду + portsnap + для этого.

Синтаксис команды + portsnap + в некоторой степени отражает синтаксис команды + freebsd-update +. В DigitalOcean исходное дерево будет предварительно заполнено исходной информацией о доступных портах, которую вы можете обновить, как показано во второй команде + portsnap +.

Если вы не не используете DigitalOcean, ваш каталог + / usr / ports + скорее всего будет пустым, когда вы начинаете. Если это так, то при первом использовании + portsnap + вы должны использовать + extract on:

sudo portsnap fetch extract

Это извлечет полное дерево портов и извлечет его в + / usr / ports +. Это может занять некоторое время и необходимо, только если у вас нет никакой информации в + / usr / ports +.

Чтобы обновить информацию нашей системы о доступных портах (каждый последующий запуск + portsnap +), введите:

sudo portsnap fetch update

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

Система упаковки + pkg + также может использовать часть этой информации. Тем не менее, он также поддерживает свою собственную базу данных, чтобы отслеживать готовые двоичные пакеты, доступные для установки. Чтобы обновить это, вы можете ввести:

sudo pkg update

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

Обновите дополнительное программное обеспечение

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

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

Выяснение, какое программное обеспечение может быть обновлено

Первый шаг в обновлении вашего программного обеспечения - выяснить, какие приложения имеют новые доступные версии. Мы можем сделать это несколькими различными способами.

Проверка наличия обновлений с помощью команды pkg

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

Стоит отметить, что эта команда покажет дополнительное программное обеспечение, установленное через * и * порты и пакеты. Эта команда не различает источники установки, поэтому она может точно показать все обновления, доступные в вашей системе.

Чтобы узнать, обновлено ли наше программное обеспечение, введите:

pkg version -vIL=

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

perl5-5.18.4_10                    <   needs updating (index has 5.18.4_11)

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

Из-за этой возможности приведенная выше команда может показывать обновления, которые еще не доступны в виде пакетов. Чтобы определить эти экземпляры, вы можете сравнить выходные данные вышеупомянутой команды с выходными данными этой команды:

pkg version -vRL=

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

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

Проверка обновлений с помощью Portmaster

Если вы чаще выбираете сборку программного обеспечения из исходного кода с использованием системы портов, привлекательной альтернативой является команда + portmaster +. Этот инструмент полезен для любых задач управления программным обеспечением на основе портов в FreeBSD, от проверки и применения обновлений до установки или удаления портов и всех их зависимостей.

Чтобы получить команду + portmaster +, вы можете установить пакет или скомпилировать его из системы портов.

Чтобы установить пакет, введите:

sudo pkg install portmaster

Если вы предпочитаете скомпилировать инструмент из исходного кода, переключитесь на каталог пакета в дереве портов и установите его, используя make:

cd /usr/ports/ports-mgmt/portmaster
sudo make install clean

После установки вы можете увидеть сообщение о добавлении некоторой информации в ваш файл + / etc / make.conf + и преобразовании базы данных вашего пакета. В этом нет необходимости, если вы начинаете с FreeBSD 10.1 или новее.

После установки + portmaster + вы можете проверить наличие обновлений, набрав:

portmaster -L

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

Любое программное обеспечение, имеющее доступные обновления, будет иметь такую ​​строку с отступом:

===>>> perl5-5.18.4_10
       ===>>> New version available: perl5-5.18.4_11

В нижней части итоговой строки будет описано количество приложений, которые могут быть обновлены:

===>>> 42 total installed ports
       ===>>> 1 has a new version available

Поскольку + portmaster + работает главным образом с портами, все обнаруженные обновления должны быть доступны для приложения.

Проверка на уязвимости программного обеспечения

FreeBSD поддерживает базу данных уязвимостей, которую следует регулярно проверять, чтобы убедиться в отсутствии уязвимостей в программном обеспечении, установленном в вашей системе.

Хотя иногда полезно обновить все программное обеспечение в вашей системе, по крайней мере, любое программное обеспечение с известными уязвимостями должно быть обновлено как можно скорее. Чтобы проверить наличие известных уязвимостей с помощью любого дополнительного программного обеспечения, установленного в вашей системе, введите:

pkg audit -F

Это позволит загрузить последнюю версию базы данных об уязвимостях с серверов FreeBSD и сравнить ее с установленным программным обеспечением в вашей системе. Если у вас установлено какое-либо уязвимое место, оно предупредит вас.

Проверка обновлений Примечания

Прежде чем обновлять любое программное обеспечение, * важно * проверить наличие любых поломок, которые могут вызвать обновления. Сопровождающие порты FreeBSD иногда должны вносить изменения, которые невозможно применить без вмешательства пользователя. Если вам не удастся проверить эти ситуации, вы можете получить неработающее программное обеспечение и, возможно, сломанную систему.

В каталоге + / usr / ports + файл с именем + UPDATING + содержит информацию о любых обновлениях программного обеспечения, которые могут привести к неожиданным результатам. Чтобы прочитать этот файл, введите:

less /usr/ports/UPDATING

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

This file documents some of the problems you may encounter when upgrading
your ports.  We try our best to minimize these disruptions, but sometimes
they are unavoidable.

You should get into the habit of checking this file for changes each time
you update your ports collection, before attempting any port upgrades.

20141208:
 AFFECTS: users of ports-mgmt/poudriere, ports-mgmt/poudriere-devel
 AUTHOR: [email protected]

 8.4 jails created with Poudriere 3.1, or poudriere-devel-3.0.99.20141117
 should be recreated with 'jail -d' and 'jail -c'. This fixes pkg(8)
 crashes.

20141205:
 AFFECTS: users of polish/kadu
 AUTHOR: [email protected]

 Before running kadu 1.x for the first time upstream developers
 advise to backup your ~/.kadu directory.

. . .

Вам следует проверить этот файл на наличие проблем с обновлением, которые были добавлены с момента последнего обновления. Поскольку этот файл содержит большое количество информации, которая не будет иметь отношения к рассматриваемому обновлению, либо потому, что оно касается программного обеспечения, не установленного в вашей системе, либо из-за того, что в нем подробно описана проблема из предыдущего обновления, вам обычно нужно только проверить записи ближе к началу файла.

Если есть какие-либо дополнительные шаги, которые необходимо предпринять перед обновлением, выполните их сейчас.

Обновление пакетов и портов

После выполнения любых действий, рекомендованных в файле + UPDATING +, вы должны быть готовы обновить программное обеспечение. Методы, которые мы используем, будут зависеть от того, хотите ли вы использовать предварительно скомпилированные пакеты или исходные порты для вашего программного обеспечения.

Если вы в основном используете пакеты и хотите использовать этот формат для своих обновлений, вы можете использовать команду + pkg upgrade +:

sudo pkg upgrade

Это должно предложить обновить все пакеты, для которых есть доступные обновления.

Об этом методе следует отметить одну вещь: если вы смешиваете пакеты и порты, обновление пакета может попытаться переустановить программное обеспечение, созданное вами с использованием системы портов. Это может произойти, когда вы скомпилировали приложение с разными параметрами, выбрали настройки, которые требовали разных зависимостей, и т. Д. из упакованной версии.

Этот сценарий будет выглядеть так:

freebsd@wowie:~ % sudo pkg upgrade
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
Updating database digests format: 100%
Checking for upgrades (2 candidates): 100%
Processing candidates (2 candidates): 100%
The following 1 packages will be affected (of 0 checked):

Installed packages to be REINSTALLED:
       portmaster-3.17.7 (options changed)

The operation will free 1 KB.
40 KB to be downloaded.

Proceed with this action? [y/N]:

В этом случае команда + portmaster + была установлена ​​через систему портов, но + pkg + пытается привести ее в соответствие с версией, о которой она знает. Если вы хотите сохранить настроенную версию портов, вы можете нажать «N» для этой операции, а затем заблокировать пакет, набрав:

sudo pkg lock portmaster

Это предотвратит обновление программного обеспечения, что позволит вам обновить остальную часть программного обеспечения с помощью команды + pkg upgrade +. Если вы хотите обновить заблокированное программное обеспечение, вы можете временно разблокировать его, набрав:

sudo pkg unlock portmaster

Если вы в основном используете + portmaster + и порты для обработки ваших пакетов, вы можете обновить все дополнительное программное обеспечение, набрав:

sudo portmaster -a

Вам будет предложено выбрать параметры для портов, которые вы обновляете. Если вы не знаете, что означает какой-либо из вариантов, или если у вас нет какой-либо конкретной причины для выбора, можно использовать значения по умолчанию.

Если вы используете + portmaster + перед обновлением пакетов, из-за задержки между обновлениями порта и пакета, есть вероятность, что некоторые программы, которые были ранее установлены с использованием пакета, теперь будут обновляться с использованием портов. Если это не проблема для вас, не стесняйтесь использовать этот метод. Если вы предпочитаете использовать пакеты для своего программного обеспечения, вероятно, лучше подождать, пока обновление не будет переупаковано.

Если вы хотите детально обновить свои пакеты, вы также можете обновить определенный пакет, указав его категорию и имя, как указано в дереве портов:

sudo portmaster /

Например, чтобы обновить порт + vim-lite +, вы можете выполнить эту команду:

sudo portmaster editors/vim-lite

Заключение

Как вы можете видеть, для поддержки ваших серверов FreeBSD необходимо выполнить довольно много разных процессов.

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

Чтобы узнать больше о том, как работать с пакетами, следуйте th link , Чтобы лучше понять, как работать с портами, следуйте th guide ,

Related