古いFreeBSDシステムでは、Portsnapは自動的に含まれませんが、次のコマンドを使用してsysutils/portsnapポートからインストールできます。
# pkg_add -r portsnap
Portsnapは、最初に/ var / db / portsnap /(PortsnapがFreeBSDPortsCollectionからインストールされている場合は/usr/ local / portsnap /)に格納されているFreeBSDポートツリーのスナップショットを最初にフェッチして更新し、次に非圧縮のファイルのみを抽出して更新します。 / usr/portsにあるライブポートツリー。
Portsnapの動作と動作は、/ etc(PortsnapがFreeBSDPortsCollectionからインストールされている場合は/usr/ local / etc /内)にある構成ファイルportsnap.confによって制御され、構成ファイルは新しくインストールされたときに自動的に生成されません。 portsnap.conf.sampleが見つかります。portsnap.confとしてコピーしてください)。通常、デフォルトの構成ファイルがその役割を果たします。
コマンドラインでは、次のオプションがサポートされていますが、ほとんどの場合、使用する必要はありませんが、構成ファイル自体で構成できるものもあります。
-d workdir:作業ファイル(ダウンロードした更新など)をworkdirに保存します。 (デフォルト:/ var / db / portsnap、または構成ファイルで指定されているとおり)
-f conffile:conffileから構成を読み取ります。 (デフォルト:/etc/portsnap.conf)
-I:updateコマンドの場合、INDEXファイルを更新しますが、残りのポートツリーは更新しません。
-k KEY:指定されたSHA256ハッシュを持つ公開鍵を期待します。 (デフォルト:構成ファイルから値を読み取る)
-p Portsdir:非圧縮スナップショットを抽出または更新する場合は、portsdirディレクトリを操作します。 (デフォルト:/ usr / Ports /、または構成ファイルで指定されているとおり。)
-s server:指定されたサーバーまたはサーバープールからファイルをフェッチします。 (デフォルト:portsnap.FreeBSD.org、または構成ファイルで指定されているとおり。)
path:extractコマンドの場合のみ、pathで始まるportsツリーの一部のみを操作します。 (例:portsnap sysutils / portは、sysutils / portsman、sysutils / portsnap、sysutils / portupgradeなどを抽出します)
Portsnapコマンドラインの概要は次のとおりです。
portsnap [-I] [-d workdir] [-f conffile] [-k KEY] [-p Portsdir][-sserver]コマンド…[パス]
Portsnapの使用法
- 空のディレクトリ/usr/portsが存在しない場合は作成します。
# mkdir /usr/ports
- PortsCollectionの圧縮スナップショットを取得して/var/ db / portsnap(または構成ファイルで指定されている他の場所)にダウンロードします。この段階でインターネット接続が必要です)、既存のスナップショットを更新します。
# portsnap fetch
- Portsnapを初めて実行する場合(ポートツリーがすでに作成または設定されている場合でも、Portsnapがポートツリーのどの部分を更新する必要があるかを決定できるベースラインをPortsnapに確立させるため)または/ usr / Portsが入力されていないため、スナップショットを抽出して既存のファイルとディレクトリを置き換え、Portsnapで管理されているportsツリーを/ usr / ports:
# portsnap extract
に確立します。ポートツリーのみを更新する場合は、この手順をスキップできます。
- すでに/usr/ Portsが設定されていて、更新する場合は、代わりに次のコマンドを実行します。
# portsnap update
注:FreeBSD Ports Treeを更新する場合、ステップ1と3を組み合わせて1つのコマンドにすることができます: portsnap fetch update (古いバージョンのPortsnapではサポートされていません)。
Portsnapをcronジョブとして実行する
Portsnapサーバーへのダウンロード要求の突然の急増の負担を回避するために、portsnapフェッチはcronジョブから実行できなくなります。代わりに、特別なportsnap cronコマンドが存在します。このコマンドは、fetchコマンドが指定されているかのように、更新をフェッチする前に最大3600秒のランダムな期間待機およびスリープします。
cronジョブでportsnapを自動的に実行するには、行を/ etc / crontabに追加するだけです(行は毎日午前3時に時間を設定し、独自のタイミングを選択できます):
0 3 * * * root /usr/sbin/portsnap cron
これにより、PortsコレクションのFreeBSDスナップショットが常に最新になり、/ usr/portsにすばやく抽出できるようになります。
注: portsnap updateの実行 from cronは、cronジョブの実行時にポートのインストールまたは更新が発生した場合に問題が発生する可能性があるため、お勧めしません。 Portsnapは、ポートビルドで使用されているファイルを更新または削除します。ただし、 portsnap -I updateを実行します。 ポートを更新するインデックスファイルが可能であり、portversionと一緒に使用して、インストールされているソフトウェアが古くなっていることを特定できます。
ポートの圧縮スナップショットと/usr/ Ports /内のINDEXファイルを更新し、インストールされているポートが古くなっている場合に電子メールを送信するには、/ etc/crontabの次の行を使用します。
0 3 * * * root portsnap -I cron update && pkg_version -vIL=
注:古いバージョンのportsnapは、portsnapの同じ呼び出しでの複数のコマンド(cron updateなど)の一覧表示をサポートしていません。上記の行が失敗した場合は、portsnap -Icronupdateをportsnapcron &&portsnap -I updateに置き換えてみてください 。