序章

FreeBSDサーバーを管理するときは、システムを良好な状態に保つのに役立つ基本的な保守手順を理解することが重要です。

このガイドでは、サーバーを最新の状態に保ち、適切に機能させるために必要な基本的なプロセスについて説明します。 FreeBSDチームが維持している基本オペレーティングシステムを更新する方法について説明します。 また、ポートまたはパッケージシステムを介してインストールされたオプションのソフトウェアを更新および保守する方法についても説明します。

FreeBSDの使用を開始するためのヘルプが必要な場合は、ガイドこちらに従ってください。

Note: As of July 1, 2022, DigitalOcean no longer supports the creation of new FreeBSD Droplets through the Control Panel or API. However, you can still spin up FreeBSD Droplets using a custom image. Learn how to import a custom image to DigitalOcean by following our product documentation.

ベースFreeBSDオペレーティングシステムの更新

FreeBSDを使用する際に理解すべき重要なことの1つは、基本オペレーティングシステムがシステム上の他のソフトウェアとは別に構築および管理されていることです。 これは多くの利点を提供し、FreeBSDチームがシステムのコア機能を注意深くテストして開発することを可能にします。

:続行する前に、現在の更新手順のバグに関するこのセクションの下部にある注をお読みください。

サーバーの使用を開始すると、セキュリティ更新プログラムがベースシステムに公開されている可能性が高くなります。 FreeBSDプロジェクトのサーバーにこれらの更新を照会し、新しいファイルをダウンロードしてシステムにインストールするには、次のコマンドを入力します。

sudo freebsd-update fetch install

Depending on the platform you’re using, you may need to install sudo ポートシステムまたはパッケージを介して、または su ルートに。

The freebsd-update コマンドは、ベースオペレーティングシステムのソフトウェアの管理ユーティリティです。 The fetch サブコマンドは新しい更新をダウンロードしますが、 install サブコマンドはそれらをライブシステムに適用します。

アップデートがある場合は、アップデートの影響を受けるソフトウェアのリストが表示されます。 下矢印でスクロールするか、スペースバーでページをめくることができます。 リストの一番下に到達すると、更新が適用されます。

更新された長時間実行ソフトウェアは、新しいバージョンを使用するために再起動する必要があります。 カーネルの更新を確認した場合は、奇妙な動作を防ぐために再起動が必要になります。 これを行うには、次のように入力します。

sudo shutdown -r now

重要:更新手順のバグ

現在、FreeBSDの更新手順がここで行われているというアップストリームのバグがあります。 このバグにより、更新手順に続いてシステムの再起動がハングします。

The safest way for dealing with this situation is to disable soft-updates or the journaling of soft-updates on the filesystem prior to updating. ソフトアップデートが問題の核心であるため、これにより再起動のハングを防ぐことができます。 これはもう少し大規模な手順であり、将来(これらの機能を再度有効にするまで)ディスクが必要とするリカバリに時間がかかります。

これを行うには、更新を適用する前に、シングルユーザーモードで起動します。 これを行うには、次のように入力します。

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

ここから、soft-updatesまたはsoft-updateジャーナルをオフにすることができます。

ソフトアップデートを完全に無効にするには、次のように入力します。

tunefs -n disable /

ソフトアップデートジャーナリングを無効にしたい場合は、それほど劇的な妥協はありませんが、代わりに次のコマンドを使用できます。

tunefs -j disable /

これが完了したら、再起動を開始して、サーバーを完全なマルチユーザーモードでもう一度再起動できます。

reboot

起動が完了した後、再起動をハングさせることなく、上記の手順を使用してFreeBSDアップデートをフェッチして適用できます。

バグレポートに注意して、アップストリームの修正が利用可能になったときにこれらの変更を元に戻すことができるようにすることをお勧めします。

更新チェックの自動化

これらのセキュリティパッチを毎日自動的にチェックするようにシステムを構成するには、 cron 仕事。 The freebsd-update ユーティリティには特別なものがあります cron この目的のために特別に使用できるサブコマンド。

これは、ダウンロードサーバーの負荷を分散するために、ランダムな時間(最大1時間)一時停止します。 次に、更新を確認してダウンロードします(基本的には fetch バックグラウンドでの操作)。 アップデートがダウンロードされると、指定されたユーザーアカウントに通知されます。 管理者が適切な時間を決定できるように、更新は自動的にインストールされません。

この自動チェックを設定するには、 /etc/crontab とファイル sudo 特権:

sudo vi /etc/crontab

ファイルの最後に、次のような行を追加します。

@daily root freebsd-update -t freebsd cron

上記のコマンドは、rootユーザーとしてupdateコマンドを自動的に実行します。 更新が見つかった場合、後に指定されたユーザーアカウント -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

カーネルパッチが適用されている場合はマシンを再起動し、更新の影響を受けたサービスを再起動することを忘れないでください。

オペレーティングシステムソースの同期

たぶんあなたが時々やりたいと思う1つのタスクは、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= 構成ファイルの行。すべてコメントアウトされています。 自分に近いと思われるものを1つ選択し、コメントを外します。

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

. . .

次に、各SVNブランチを説明するファイルのセクションが、使用しているリリースバージョンを参照していることを確認する必要があります。 コマンドラインから次のように入力すると、リリースバージョンを確認できます。

freebsd-version
10.1-RELEASE-p2

これにより、オペレーティングシステムのブランチと、最後のシステムパッチレベルがわかります。 現在の目的で注意したい部分は、最初のダッシュの前の数字です。 この場合、それは指定します 10.1. The RELEASE これは、FreeBSDで利用可能な最も安定したブランチであるリリースブランチを現在追跡していることを意味します。

ファイルに戻って、の定義が branch= 下のパラメータ [release] この番号を指しています:

. . .

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

. . .

これにより、正しいソースをダウンロードしていることが保証されます。 終了したら、ファイルを保存して閉じます。

これで、リリースブランチを追跡しているので、次のように入力できます。

sudo svnup release

これにより、ソースツリーの最新バージョンがダウンロードされます。 /usr/src. このコマンドを再実行すると、いつでも更新できます。

ソースでSubversionコマンドを実行する機能が必要な場合は、Subversionツールをダウンロードする必要があります。 次のように入力して、パッケージをインストールできます。

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ソースミラーの1つにあるブランチの1つに対してコマンドを実行します。

たとえば、を使用して行ったのとまったく同じソースをチェックアウトするには svnup 上記のコマンドでは、次のように入力できます。

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

このコマンドのURLは、基本的には host=branch= 私たちが見た定義 svnup 構成ファイル。

システムのオプションソフトウェアの記録の更新

FreeBSDは、サーバーに追加のソフトウェアをインストールするための2つの異なるフォーマットを提供します。 1つは「ポート」と呼ばれるソースベースのシステムで、もう1つは使用可能なポートに基づいて事前にコンパイルされたパッケージのリポジトリです。 基本オペレーティングシステムの外部にあるソフトウェアの場合、管理にはいくつかの追加ツールが使用されます。

システムは、ルート化されたディレクトリ階層内にインストールできるポートに関する情報を保持します。 /usr/ports. このディレクトリ構造は「ポートツリー」と呼ばれます。 ポートに触れる前に、ポートツリーに利用可能なソフトウェアに関する最新情報が含まれていることを確認する必要があります。 使用できます portsnap これを行うコマンド。

の構文 portsnap コマンドは、 freebsd-update command in some ways.
Depending on your cloud provider, your /usr/ports あなたが始めているとき、ディレクトリはおそらく空になります。 この場合、初めて使用するとき portsnap、使用する必要があります extract:

sudo portsnap fetch extract

これにより、完全なポートツリーがフェッチされ、 /usr/ports. これにはしばらく時間がかかる場合があり、情報がない場合にのみ必要です。 /usr/ports.

使用可能なポートに関するシステムの情報を更新するため(以降のすべて) portsnap run)、タイプ:

sudo portsnap fetch update

このプロセスは、ポートツリーを最後に更新した最近の状況によっては少し時間がかかる場合があります。 前回の実行以降に変更された利用可能なソフトウェアごとに、かなりの数のファイルをダウンロードする必要があります。 これにより、 /usr/ports ポートに関する情報を含む階層。

The pkg パッケージングシステムは、この情報の一部も活用できます。 ただし、インストールに使用できるビルド済みのバイナリパッケージを追跡するために、独自のデータベースも保持しています。 これを更新するには、次のように入力します。

sudo pkg update

これにより、FreeBSDプロジェクトのサーバーから最新のパッケージデータベース情報が取得されます。 多くの人にとってそれは注目に値します pkg 操作、 pkg update コマンド実行の一部として自動的に実行されるため、スタンドアロンコマンドとして常に必要なわけではありません。

オプションソフトウェアを更新する

これまで、ベースオペレーティングシステムを更新して更新を適用する方法を学びました。 また、オペレーティングシステムのソースコードを更新する方法と、利用可能なポートとパッケージに関するローカル情報を更新する方法も学びました。

これで、この更新されたソフトウェア情報を使用して、オプションのソフトウェアをダウンロードして適用できます。 ポートとパッケージのどちらを使用しているかによって、プロセスは異なります。 これら2つを組み合わせて使用している場合は、いくつかのプロセスを調整する必要があります。

更新できるソフトウェアを見つける

ソフトウェアを更新する最初のステップは、新しいバージョンが利用可能なアプリケーションを見つけることです。 これは、いくつかの異なる方法で行うことができます。

pkgコマンドを使用した更新の確認

システムにインストールしたソフトウェアを、利用可能な最新バージョンに関する更新情報と比較したい場合は、 version のサブコマンド pkg. これにより、インストールされているバージョンが表示され、オプションで使用可能なバージョンに関する情報を表示できます。

このコマンドは、ポートとパッケージの両方を介してインストールされたオプションのソフトウェアを表示することに注意してください。 このコマンドはインストールソースを区別しないため、システムで利用可能なすべての更新を正確に表示できます。

次のように入力すると、ソフトウェアが最新であるかどうかを確認できます。

pkg version -vIL=

最新のインデックスファイルにソフトウェアの新しいバージョンへの参照がある場合( portsnap 以前のコマンド)、出力には不一致が表示されます。 例えば:

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

システムにインストールされているソフトウェアをportsツリーの最新のインデックスファイルと照合しているため、portsツリーにまだパッケージに到達していない更新がある場合にこれをチェックすることがあります。 これは、パッケージがポートツリーから構築され、多くの場合、わずかに遅れる必要があるために発生します。

この可能性があるため、上記のコマンドは、実際にはまだパッケージとして利用できない更新を表示する場合があります。 これらのインスタンスを見つけるために、上記のコマンドの出力を次のコマンドの出力と比較できます。

pkg version -vRL=

このコマンドは、の新しいバージョンをチェックします pkg 利用可能なパッケージのシステムのデータベース(ポートツリーのインデックスファイルの代わりに)。 2つのコマンドが同じ出力を生成する場合は、を使用して任意のパッケージを更新できます。 pkg システム。

最初のコマンドに2番目のコマンドに表示されない更新がある場合、これは変更がまだパッケージ化されていないことを意味します。 更新が必要なソフトウェアのパッケージを使用している場合は、パッケージが追いつくまで待つか、ポートに切り替えて最新の更新を今すぐ入手することができます。

ポートマスターによる更新の確認

ポートシステムを使用してソースからソフトウェアをビルドすることをより頻繁に選択する場合、魅力的な代替手段は portmaster 指図。 このツールは、アップデートのチェックと適用から、ポートとそのすべての依存関係のインストールまたは削除まで、FreeBSDでのポートベースのソフトウェア管理タスクに役立ちます。

取得するには portmaster コマンドを実行すると、パッケージをインストールするか、ポートシステムからコンパイルできます。

パッケージをインストールするには、次のように入力します。

sudo pkg install portmaster

ツールをソースからコンパイルする場合は、portsツリーでパッケージのディレクトリに切り替え、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サーバーから最新の脆弱性データベースがダウンロードされ、システムにインストールされているソフトウェアと照合されます。 インストールされているソフトウェアに脆弱性が存在する場合は、警告が表示されます。

更新メモの確認

ソフトウェアを更新する前に、更新によって発生する可能性のある破損がないかどうかを確認することがEssentialです。 FreeBSDのポートメンテナは、ユーザーの介入なしにはきれいに適用できない変更を加えなければならない場合があります。 これらの状況をチェックしないと、ソフトウェアが機能しなくなり、システムが壊れてしまう可能性があります。

の中に /usr/ports ディレクトリ、というファイル UPDATING 予期しない結果をもたらす可能性のあるソフトウェアアップデートに関する情報が含まれています。 このファイルを読み取るには、次のように入力します。

less /usr/ports/UPDATING

この単純なテキストファイルには、ソフトウェアがインストールされているかどうかに関係なく、追加の注意が必要な更新に関する情報が含まれています。 各エントリには、参照された更新がポートツリーにコミットされた日付がマークされます。 もう1つの注意点は、ファイルには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

これは、利用可能なアップデートがあるすべてのパッケージをアップグレードすることを提案するはずです。

この方法について注意すべきことの1つは、パッケージとポートを混在させている場合、パッケージの更新により、ポートシステムを使用して構築したソフトウェアを再インストールしようとする可能性があることです。 これは、さまざまなオプション、さまざまな依存関係を必要とする選択されたカスタマイズなどを使用してアプリケーションをコンパイルした場合に発生する可能性があります。 パッケージバージョンから。

このシナリオは次のようになります。

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 category/portname

たとえば、アップグレードするには vim-lite ポートの場合、次のコマンドを発行できます。

sudo portmaster editors/vim-lite

結論

ご覧のとおり、FreeBSDサーバーを保守するために実行する必要のあるさまざまなプロセスがかなりあります。

これらの一部は、ベースシステムのソースを更新するプロセスのように、頻繁に実行する必要はありませんが、ベースオペレーティングシステムの更新や既知の脆弱性を持つソフトウェアの更新などの他のタスクは頻繁に完了する必要があります。 システムの保守は最初は複雑に思えるかもしれませんが、使用しているツールに慣れてくると、かなり簡単になります。

パッケージの操作方法の詳細については、このリンクをたどってください。 ポートの操作方法をよりよく理解するには、このガイドに従ってください。