FreeBSDサーバー用のパッケージを作成するためにPoudriereビルドシステムをセットアップする方法
序章
ポートシステムは、ソフトウェアの柔軟性と制御を望むユーザーにとって、FreeBSDの最大の資産の1つです。 これにより、管理者は、堅牢で予測可能なように設計されたシステムを使用して、ソースベースのインストールを簡単に作成および保守できます。
この機能の利点は素晴らしいですが、ポートベースの管理に対して課せられる最も一般的な苦情のいくつかは、各ソフトウェアのコンパイルに必要な時間とリソースに関するものです。 それぞれが独自のポートをコンパイルする多数のサーバーを管理している場合、これはさらに問題になります。 FreeBSDパッケージはインストールをスピードアップする代替手段を提供しますが、それはポートが与える制御を犠牲にします。
この問題を軽減するために、管理者は poudriere というアプリケーションを使用して、カスタムパッケージを構築および保守できます。 さまざまなアーキテクチャのパッケージを構築するために技術的に作成されていますが、 poudriere
FreeBSDサーバーのインフラストラクチャ全体のパッケージを作成およびホストするためのパッケージ構築環境としてよく使用されます。
レバレッジによって poudriere
、管理者は、ポートシステムを使用して必要に応じてソフトウェアをカスタマイズし、パッケージをコンパイルして、インストールとソフトウェア管理を容易にすることができます。 任意の数のFreeBSDサーバーがホストを使用できます poudriere
パッケージソースとしてインストールされるため、カスタマイズされ、コンパイル済みの実行可能ファイルをすばやく簡単にダウンロードしてインストールできます。
このガイドでは、でサーバーをセットアップする方法を示します poudriere
ビルドマシンとして。 その後、このサーバーを追加サーバーのパッケージのリポジトリとして使用できます。 この設定は単一のサーバーにとっては有益ですが、追加のサーバーが同じサーバーを使用し始めると、実際の効率が向上します。 poudriere
パッケージソースとしてのホスト。
ポートの構築はリソースを大量に消費するプロセスであるため、これを通常よりも強力なシステムに設定することは価値があるかもしれません。
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.
必要なポート管理ソフトウェアをインストールします
まず、必要なすべてのポートをインストールします。
いつものように、ポート関連のタスクを開始する前に、ポートツリーを更新して、ファイルシステム上の参照が最新であることを確認します。
sudo portsnap fetch update
ポートツリーが更新されたら、ソフトウェアのインストールを開始できます。 まず、インストールする必要があります poudriere
自体。 これはにあります ports-mgmt
ポートツリーのカテゴリ。 ビルドしてインストールするには、そのディレクトリに移動して使用します make
コンパイルしてインストールするには:
cd /usr/ports/ports-mgmt/poudriere
sudo make install clean
表示されているオプションのいずれかを自由に選択してください。 標準ビルドの場合、必須のものはありません。
次に、まだインストールしていない場合は、をインストールする必要があります portmaster
ポート。 これを使用して、必要なソフトウェアのリストをマシン上に簡単に生成します poudriere
構築する。 これはにあります ports-mgmt
カテゴリも:
cd /usr/ports/ports-mgmt/portmaster
sudo make install clean
最後に、Webサーバーもインストールします。 これには2つの目的があります。 まず、これは、コンパイルするパッケージをマシンがダウンロードできる方法になります。 第二に、 poudriere
ビルドプロセスを追跡し、ログを監視できるように、Webインターフェイスを提供します。
このガイドでは、 nginx
私たちのウェブサーバーとして。 これはにあります www
ポートツリーのカテゴリ:
cd /usr/ports/www/nginx
sudo make install clean
デフォルト値を受け入れるか、別の目的で特定のニーズがある場合はカスタマイズできます。
ソフトウェアのコンパイルとインストールが完了したら、デフォルトを使用している場合は、必ずPATHを再評価してください。 tcsh
また csh
シェル:
rehash
ソフトウェアがインストールされたので、各コンポーネントの構成を開始できます。
SSL証明書とキーを作成する
でパッケージをビルドするとき poudriere
、秘密鍵で署名できるようにしたい。 これにより、作成されたパッケージが正当であり、悪意のあるパッケージを提供するためにビルドマシンへの接続を傍受する人がいないことがすべてのマシンに保証されます。
まず、キーと証明書のディレクトリ構造を作成します。 オプションのソフトウェア構成はすべて、 /usr/local/etc
ディレクトリ、および他のソフトウェアが使用するため /usr/local/etc/ssl
場所、これはファイルを配置する場所です。
私たちは私たちが持っていることを確認します ssl
と呼ばれる2つのサブディレクトリを含むディレクトリ keys
と certs
. これは、次のように入力することで1つのコマンドで実行できます。
sudo mkdir -p /usr/local/etc/ssl/{keys,certs}
秘密にしておかなければならない私たちの秘密鍵は、 keys
ディレクトリ。 これは、作成するパッケージに署名するために使用されます。 これを安全に保つことは、パッケージが改ざんされていないことを確認するために不可欠です。 ディレクトリをロックダウンして、rootまたは sudo
特権は、ディレクトリまたはその内容と対話できなくなります。
sudo chmod 0600 /usr/local/etc/ssl/keys
The certs
ディレクトリには、キーで作成された公開されている証明書が含まれます。 そのため、そのディレクトリにデフォルトのアクセス許可を残すことができます。
次に、という4096ビットのキーを生成します poudriere.key
、そしてそれを私たちの中に置きます keys
次のように入力してディレクトリを作成します。
sudo openssl genrsa -out /usr/local/etc/ssl/keys/poudriere.key 4096
キーが生成されたら、次のように入力して、キーから公開証明書を作成できます。
sudo openssl rsa -in /usr/local/etc/ssl/keys/poudriere.key -pubout -out /usr/local/etc/ssl/certs/poudriere.cert
これで、パッケージに署名して署名を検証するために必要なSSLコンポーネントができました。 後で、生成された証明書をパッケージ検証に使用するようにクライアントを構成します。
Poudriereの構成
SSL証明書とキーを取得したので、構成を開始できます poudriere
自体。
メインの構成ファイルは次の場所にあります。 /usr/local/etc/poudriere.conf
. このファイルをで開く sudo
テキストエディタの権限:
sudo vi /usr/local/etc/poudriere.conf
The poudriere
構成ファイルは非常によくコメントされており、必要な設定のほとんどが事前に定義されています。 いくつかの特定の変更を行いますが、その大部分はそのまま残します。
Beware that there are ZFS-specific options within poudriere
. If your FreeBSD server is running the UFS filesystem instead, then you should not set these ZFS-specific options. UFSを使用していることを示すには、 NO_ZFS
「はい」にフラグを立てます。 ファイル内でこのオプションを見つけてコメントを外します。
NO_ZFS=yes
一方、サーバーがZFSを使用している場合は、構成できます poudriere
を設定して特定のプールを使用するには ZPOOL
オプション。 このプール内で、次のルートを指定できます。 poudriere
パッケージ、ログなどに使用します。 とともに ZROOTFS
オプション。 これらの2つのオプションは、次の場合は設定しないでください。 NO_ZFS
オプションを「はい:」に設定
# NO_ZFS=yes
ZPOOL=tank
ZROOTFS=/poudriere
ソフトウェアを構築するとき、 poudriere
ビルドシステムをメインオペレーティングシステムから分離するために、一種のjailを使用します。 次に、ビルドマシンがjailに必要なソフトウェアをダウンロードできる有効なホストに入力する必要があります。 これは、 FREEBSD_HOST
オプション。
このオプションは、現在有効なホストに設定されていませんが、すでに存在しているはずです。 これをデフォルトに変更できます ftp://ftp.freebsd.org
位置を特定するか、知っている場合はより近いミラーを使用します。
FREEBSD_HOST=ftp://ftp.freebsd.org
次に、データディレクトリが poudriere
ルートが正しく設定されています。 これはで制御されます POUDRIERE_DATA
オプションであり、デフォルトにする必要がありますが、念のためオプションのコメントを解除します。
POUDRIERE_DATA=${BASEFS}/data
コメントを外す必要がある次のオプションは CHECK_CHANGED_OPTIONS
と CHECK_CHANGED_DEPS
オプション。 最初のオプションは poudriere
オプションが変更されたときにパッケージを再構築します。 2番目のオプションは poudriere
最後のコンパイル以降に依存関係が変更されたときにパッケージを再構築します。
これらのオプションは両方とも、構成ファイルに必要な形式で存在します。 コメントを外すだけです。
CHECK_CHANGED_OPTIONS=verbose
CHECK_CHANGED_DEPS=yes
次に、ポイントします poudriere
ビルド時にパッケージに署名できるように、作成したSSLキーに追加します。 これを指定するために使用されるオプションは呼び出されます PKG_REPO_SIGNING_KEY
. このオプションのコメントを解除し、前に作成したSSLキーの場所を反映するようにパスを変更します。
PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/keys/poudriere.key
最後に、 URL_BASE
サーバーにアクセスできるドメイン名またはIPアドレスへの文字列。 これはによって使用されます poudriere
クリックできるリンクを出力に作成します。 プロトコルを含め、値をスラッシュで終了する必要があります。
URL_BASE=http://server_domain_or_IP/
変更が完了したら、ファイルを保存して閉じます。
ビルド環境の作成
次に、実際にビルド環境を構築する必要があります。 先に述べたように、 poudriere
刑務所を使用して隔離された環境でポートを構築します。
私たちは刑務所を作成し、 poudriere
FreeBSDを内部にインストールします。 それぞれが異なるバージョンのFreeBSDを持つ複数の刑務所を持つことが可能です。 投獄されたFreeBSDのバージョンは、サーバー自体が実行しているバージョンと同じかそれより古いものでなければなりません。 このガイドでは、ホストシステムのアーキテクチャとFreeBSDバージョンを反映した単一のjailに焦点を当てます。
作成する刑務所のわかりやすい名前を選択する必要があります。 これは、クライアントのリポジトリ設定で使用されるため重要です。これは、FreeBSDのさまざまなバージョン用にビルドする場合に非常に重要になる可能性があります。 The man
また、ページでは、他のツールとの相互作用のために、名前にドットを使用しないように指示しています。 たとえば、このガイドでは、64ビットアーキテクチャ上のFreeBSD 10.1で動作しているため、これを「freebsd_10-1×64」と呼びます。
刑務所の名前を次のように指定します -j
そして、FreeBSDのバージョンを使用してインストールすることを示します -v
オプション。 サポートされているリリースの形式は、thisページの表の「リリース」列にあります。 フォローしている場合 -CURRENT
また -STABLE
リリースの代わりに、 this ページにある形式(たとえば、 11-CURRENT
).
私たちの目的のために、私たちの刑務所建設コマンドは次のようになります:
sudo poudriere jail -c -j freebsd_10-1x64 -v 10.1-RELEASE
これが完了するまでにはしばらく時間がかかりますので、しばらくお待ちください。 終了したら、次のように入力して、インストールされているjailを確認できます。
poudriere jail -l
JAILNAME VERSION ARCH METHOD TIMESTAMP PATH
freebsd_10-1x64 10.1-RELEASE-p3 amd64 ftp 2015-01-06 20:43:48 /usr/local/poudriere/jails/freebsd_10-1x64
刑務所を作成したら、portsツリーをインストールする必要があります。 さまざまな開発ニーズに対応するために、複数のポートツリーを維持することが可能です。 刑務所で利用できる単一のポートツリーをインストールします。
使用できます -p
ポートツリーに名前を付けるフラグ。 このツリーの使用法を正確に要約しているため、ツリーを「HEAD」と呼びます(「head」またはツリーの最新のポイント)。 利用可能なportsツリーの最新バージョンと一致するように定期的に更新します。
sudo poudriere ports -c -p HEAD
この場合も、ポートツリー全体をフェッチして抽出する必要があるため、この手順にはしばらく時間がかかります。 終了したら、次のように入力してポートツリーを表示できます。
poudriere ports -l
この手順が完了すると、ポートをコンパイルしてパッケージをビルドするための構造が整います。 次に、ポートのリストの組み立てを開始して、ソフトウェアごとに必要なオプションを構築および構成できます。
ポート構築リストの作成とポートオプションの設定
でコンパイルするとき poudriere
、buildコマンドを呼び出すときに、ビルドするポートを指定します。 ポートを個別に指定することは可能ですが、これは長期的な管理には適していません。 代わりに、コマンドに直接渡すことができるポートのリストを作成します。
ファイルcreateは、次のように、ポートカテゴリの後にスラッシュとポート名をリストして、ポートツリー内の位置を反映する必要があります。
port_category/first_port
port_category/second_port
port_category/third_port
. . .
必要な依存関係も自動的に構築されるため、インストールするポートの依存関係ツリー全体を追跡する必要はありません。 このファイルは手動でビルドできますが、ベースシステムにビルドしたいソフトウェアのほとんどがすでにある場合は、次を使用できます。 portmaster
このリストを作成します。
これを行う前に、通常、システムから不要な依存関係を削除して、ポートリストを可能な限りクリーンに保つことをお勧めします。 これを行うには、次のように入力します。
sudo pkg autoremove
その後、ビルドシステムに明示的にインストールしたソフトウェアのリストを使用して取得できます portmaster
. The portmaster
コマンドは、を使用して、明示的にインストールされたポート(依存関係ではない)のリストを正しい形式で出力できます。 --list-origins
オプション。
この出力をパイプで送ることができます sort
リストをアルファベット順に並べて、アイテムを見つけやすくします。 結果をファイルに出力できます。 /usr/local/etc/poudriere.d
ディレクトリ。 このファイルを呼び出します port-list
:
portmaster --list-origins | sort -d | sudo tee /usr/local/etc/poudriere.d/port-list
リストを確認します。 含めたくないポートがある場合は、関連する回線を削除します。 これは、必要になる可能性のあるポートを追加する機会でもあります。
特定のを使用する場合 make.conf
ポートを構築するためのオプション、あなたは作成することができます make.conf
あなたの刑務所内の各刑務所のファイル /usr/local/etc/poudriere.d
ディレクトリ。 たとえば、私たちの刑務所では、 make.conf
この名前のファイル:
sudo vi /usr/local/etc/poudriere.d/freebsd_10-1x64-make.conf
内部には、ポートを構築するときに使用したいオプションを入れることができます。 たとえば、ドキュメント、例、母国語のサポート、またはX11サポートを作成したくない場合は、次のように設定できます。
OPTIONS_UNSET+= DOCS NLS X11 EXAMPLES
その後、各ポートを構成できます。これにより、選択したオプションを使用してファイルが作成されます。
ホストシステムのポートをカスタマイズした場合は、構成をにコピーできます。 poudriere
それらの設定を利用します。 これを行うには、内に新しいディレクトリを作成します /usr/local/etc/poudriere.d
あなたの刑務所にちなんで名付けられたディレクトリ -options
最後に追加。 ガイドの場合、次のように入力することでこれを実現できます。
sudo mkdir /usr/local/etc/poudriere.d/freebsd_10-1x64-options
これで、次のように入力して、ホストシステムですでに使用しているオプションをコピーできます。
sudo cp -r /var/db/ports/* /usr/local/etc/poudriere.d/freebsd_10-1x64-options
上記の手順を完了すると、構成するオプションのベースラインが得られますが、依存関係の多くを構成する必要があります。
を使用して、まだ構成されていないものはすべて構成できます。 options
指図。 作成した両方のポートツリーを渡す必要があります( -p
オプション)と私たちがこれらのオプションを設定している刑務所( -j
オプション)。 また、を使用して構成するポートのリストを指定する必要があります。 -f
オプション。
コマンドは次のようになります。
sudo poudriere options -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list
リストの各ポートのダイアログと、対応するオプションが設定されていない依存関係が表示されます。 -options
ディレクトリ。 あなたの仕様 make.conf
ファイルは選択画面で事前に選択されます。 使用するすべてのオプションを選択します。
将来、ポートのオプションを再構成する場合は、上記のコマンドを次のコマンドで再実行できます。 -c
オプション。 これにより、過去に選択したかどうかに関係なく、使用可能なすべての構成オプションが表示されます。
sudo poudriere options -c -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list
港の建設
これで、ようやくポートの構築を開始する準備が整いました。
最後に行う必要があるのは、jailとportsツリーの両方が最新であることを確認することです。 ポートツリーとjailの両方を作成したばかりなので、これはおそらく初めてポートをビルドするときに問題になることはありませんが、ビルドを実行するたびにこれを行う習慣を身につけるのは良いことです。
刑務所を更新するには、次のように入力します。
sudo poudriere jail -u -j freebsd_10-1x64
ポートツリーを更新するには、次のように入力します。
sudo poudriere ports -u -p HEAD
それが完了したら、バルクビルドプロセスを開始できます。
注:これは非常に長時間実行されるプロセスである可能性があります。 SSH経由でサーバーに接続している場合は、インストールすることをお勧めします screen
セッションを開始します。
cd /usr/ports/sysutils/screen
sudo make install clean
rehash
screen
ビルドを開始するには、 bulk
コマンドを実行し、構成している個々の部分をすべて指し示します。 このガイドの値を使用している場合、コマンドは次のようになります。
sudo poudriere bulk -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list
これにより、多くのワーカーが起動します( poudriere.conf
ファイルまたは使用可能なCPUの数)、ポートの構築を開始します。
ビルドプロセス中はいつでも、を押し続けることで進行状況に関する情報を取得できます。 CTRL
キーと打撃 t
:
CTRL-t
プロセスの特定の部分は、他の部分よりも多くの出力を生成します。
離れる必要がある場合は、を押して画面セッションを切り離すことができます CTRL
と a
コントロールをに移動するには screen
、続いて d
セッションを切り離すためのキー:
CTRL-a d
セッションに戻りたい場合は、次のように入力できます。
screen -x
フロントエンドとリポジトリにサービスを提供するためのNginxの設定
パッケージの構築中に、Nginxを構成する機会を利用できます。 別のターミナルを開き、 screen
上記のようにセッションを開始するか、新しいセッションを開始します screen
入力してウィンドウ CTRL-a c
(次のように入力すると、ウィンドウを切り替えることができます CTRL-a n
と CTRL-a p
).
Webサーバーは、次の2つの異なる目的で使用されます。
- 他のホストがカスタムコンパイル済みパッケージをダウンロードするために使用できる実際のパッケージリポジトリを提供します
- それは役立つでしょう
poudriere
ビルドプロセスの監視に使用できるWebフロントエンド
このガイドの冒頭でNginxをインストールしましたが、構成していません。
開始するには、を追加してサービスを有効にします nginx_enable="YES"
にライン /etc/rc.conf
ファイル。 これにより、起動時にサーバーが起動し、従来のサーバーを使用できるようになります service
プロセスを管理するためのコマンド:
sudo sh -c "echo 'nginx_enable="YES"' >> /etc/rc.conf"
これで、デフォルトの構成ファイルを調整できます。 で開く sudo
テキストエディタの権限:
sudo vi /usr/local/etc/nginx/nginx.conf
このファイル内で、からすべてを削除します server {}
ブロックして、独自の構成に置き換えます。 ファイルが有効であることを確認するために、一致する中括弧(“ {”および“}”)はそのままにしておいてください。
以内 server
コンテキストでは、Webサーバーがポート80で従来のHTTPトラフィックに応答し、サーバーのドメイン名またはIPアドレスに応答できるようにするためのいくつかの基本的なディレクティブを設定できます。 また、サーバーのドキュメントルートをに設定します poudriere
で見つかったWebディレクトリ /usr/local/share/poudriere/html
. の値を変更します server_name
サーバーのドメイン名またはIPアドレスと一致する以下のディレクティブ:
# http context
. . .
server {
listen 80 default;
server_name server_domain_or_IP;
root /usr/local/share/poudriere/html;
}
}
次に、2つ追加します location
ブロック。
基本的な間 root
上で定義したディレクティブはWebインターフェイスの大部分を処理します。ログと実際のデータを保存するディレクトリを、Nginxに通知する必要があります。 Poudriereは /data
このためのエンドポイント。 ログはすべて特定のディレクトリに書き込まれるため、 autoindex
ログのリストを表示できるように、この場所のディレクティブをオンにします。
結局、私たちの最初の location
ブロックは次のようになります。
# http context
. . .
server {
listen 80 default;
server_name server_domain_or_IP;
root /usr/local/share/poudriere/html;
location /data {
alias /usr/local/poudriere/data/logs/bulk;
autoindex on;
}
}
}
これにより、Webインターフェイスが正しく機能するようになります( mime.types
すぐに作成するファイル)。 次に、作成した実際のパッケージを提供するために使用される2番目のロケーションブロックを追加する必要があります。
パッケージは下のディレクトリに保存されます /usr/local/poudriere
繰り返しますが、今回は data/packages
. これはで利用可能にすることができます /packages
位置。 繰り返しますが、オンにすることができます autoindex
ディレクトリの内容を表示し、Webブラウザでファイルを表示できるようにします。
この最終的な変更が完了すると、 server
ブロックは次のようになります。
#http context
. . .
server {
listen 80 default;
server_name server_domain_or_IP;
root /usr/local/share/poudriere/html;
location /data {
alias /usr/local/poudriere/data/logs/bulk;
autoindex on;
}
location /packages {
root /usr/local/poudriere/data;
autoindex on;
}
}
}
終了したら、ファイルを保存して閉じます。
次に、私たちに1つの小さな変更を加えます mime.types
ファイル。 現在の設定では、Webブラウザーでログをクリックすると、ファイルがプレーンテキストとして表示されるのではなくダウンロードされます。 で終わるファイルをマークすることで、この動作を変更できます .log
プレーンテキストファイルとして。
Nginxを開きます mime.types
テキストエディタでsudo権限を持つファイル:
sudo vi /usr/local/etc/nginx/mime.types
を指定するエントリを検索します text/plain
コンテンツタイプと追加 log
スペースで区切られた、現在のファイルタイプのリストの最後まで:
. . .
text/mathml mml;
text/plain txt log;
text/vnd.sun.j2me.app-descriptor jad;
. . .
終了したら、ファイルを保存して閉じます。
次に、次のように入力して、構成ファイルの構文を確認します。
sudo service nginx configtest
エラーがある場合は、先に進む前に修正してください。 構成テストで構文エラーが報告されない場合は、次のように入力してNginxを起動します。
sudo service nginx start
ファイアウォールを有効にしている場合は、ポート80へのトラフィックを許可してサービスを再起動するようにルールを構成することを忘れないでください。
今、あなたは見ることができます poudriere
Webブラウザでサーバーのドメイン名またはIPアドレスに移動してWebインターフェイスを作成します。
http://server_domain_or_IP
あなたはメインを見る必要があります poudriere
ページ:
クリックすると、ポート構築のプロセスまたは結果を表示できるはずです。 終了したビルドのログをクリックすることもできるはずです。
コンパイルされたパッケージをブラウザで表示する場合は、次の階層から利用できるようにする必要があります。 /packages
:
パッケージを表示するには、ビルド全体が完了するまで待たなければならない場合があります。 リンクをクリックすると、で作成したコンパイル済みパッケージが表示されます。 poudriere
バルクビルドコマンド。
パッケージクライアントの構成
パッケージが構築され、パッケージを提供するようにリポジトリが構成されたので、サーバーをパッケージのソースとして使用するようにクライアントを構成できます。
独自のパッケージリポジトリを使用するようにビルドサーバーを構成する
ビルドしているパッケージを使用するようにビルドサーバーを構成することから始めることができます。
まず、リポジトリ構成ファイルを保持するディレクトリを作成する必要があります。
sudo mkdir -p /usr/local/etc/pkg/repos
このディレクトリ内に、リポジトリ構成ファイルを作成できます。 で終わる必要があります .conf
、それで私たちはそれを呼びます poudriere.conf
その目的を反映するために:
sudo vi /usr/local/etc/pkg/repos/poudriere.conf
リポジトリ名を次のように定義します poudriere
もう一度。 定義内で、パッケージが保存されているディスク上の場所を指します。 これは、jail名とポートツリー名をダッシュで組み合わせたディレクトリである必要があります。 ファイルシステムを確認してください。 また、作成した証明書をポイントして、パッケージの署名検証を設定します。
最終的に、ファイルは次のようになります。
poudriere: {
url: "file:///usr/local/poudriere/data/packages/freebsd_10-1x64-HEAD",
mirror_type: "srv",
signature_type: "pubkey",
pubkey: "/usr/local/etc/ssl/certs/poudriere.cert",
enabled: yes
}
この時点で、決定を下す必要があります。 コンパイルされたパッケージを優先し、メインのFreeBSDリポジトリによって提供されるパッケージにフォールバックしたい場合は、ここで優先順位を設定して、このリポジトリからパッケージを優先するように指示できます。 これにより、ローカルリポジトリが公式リポジトリよりも優先されます。
このようにパッケージを混合すると、複雑な結果が生じる可能性があることに注意してください。 公式リポジトリのパッケージバージョンがローカルリポジトリのバージョンよりも高い場合、コンパイルされたパッケージは、公式リポジトリの汎用パッケージに置き換えられる可能性があります( poudriere
で再インストールします pkg
). また、公式パッケージは、依存パッケージが特定の方法で構築されていることを前提としており、カスタムパッケージと混合すると機能しない場合があります。
これら2つのパッケージソースを混在させる場合は、各インストールを注意深く監査して、誤って望ましくない動作を引き起こしていないことを確認する準備をしてください。
パッケージを混在させるには、 priority
リポジトリ定義に設定し、ローカルリポジトリの優先順位を高くするように指定します。
poudriere: {
url: "file:///usr/local/poudriere/data/packages/freebsd_10-1x64-HEAD",
mirror_type: "srv",
signature_type: "pubkey",
pubkey: "/usr/local/etc/ssl/certs/poudriere.cert",
enabled: yes,
priority: 100
}
終了したら、ファイルを保存して閉じます。
自分でカスタムビルドしたパッケージをインストールするためにのみを選択した場合(より安全なルート)、優先度設定を省略できますが、デフォルトのリポジトリを無効にすることをお勧めします。 これを行うには、デフォルトのリポジトリファイルを上書きして無効にする別のリポジトリファイルを作成します。
sudo vi /usr/local/etc/pkg/repos/freebsd.conf
内部では、名前を使用します FreeBSD
デフォルトのリポジトリ定義と一致させるため。 次のように定義して、リポジトリを無効にします。
FreeBSD: {
enabled: no
}
終了したら、ファイルを保存して閉じます。
構成の選択に関係なく、これでリポジトリーを使用する準備が整います。 次のように入力して、パッケージリストを更新します。
sudo pkg update
これで、サーバーは pkg
ローカルリポジトリからパッケージをインストールするコマンド。
ビルドマシンのリポジトリを使用するためのリモートクライアントの構成
設定する最も説得力のある理由の1つ poudriere
ビルドマシンでは、そのホストを他の多くのマシンのリポジトリとして使用します。 この作業を行うために必要なのは、ビルドマシンからパブリックSSL証明書をダウンロードし、同様のリポジトリ定義を設定することだけです。
クライアントマシンからビルドホストに接続するには、ローカルコンピューターでSSHエージェントを起動して、SSHキーの資格情報を保存する必要があります。
OpenSSLには、自宅のコンピューターで次のように入力することで開始できるSSHエージェントが付属しています。
eval $(ssh-agent)
次に、次のように入力してSSHキーを追加する必要があります。
ssh-add
その後、を使用して接続するときに、ローカルSSHクレデンシャルをクライアントマシンに転送できます。 -A
国旗。 これにより、自宅のマシンからアクセスしているかのように、クライアントマシンから任意のマシンにアクセスできるようになります。
ssh -A freebsd@client_domain_or_IP
リモートクライアントマシンを使用する場合、最初のステップは、証明書を保存するためのディレクトリ構造(存在しない場合)を作成することです。 先に進み、キーのディレクトリも作成して、将来のタスクに使用できるようにします。
sudo mkdir -p /usr/local/etc/ssl/{keys,certs}
これで、SSHを使用してビルドマシンに接続し、証明書ファイルをクライアントマシンにパイプで戻すことができます。 SSHクレデンシャルを転送したので、パスワードの入力を求められることなくこれを実行できるはずです。
ssh freebsd@server_domain_or_IP 'cat /usr/local/etc/ssl/certs/poudriere.cert' | sudo tee /usr/local/etc/ssl/certs/poudriere.cert
このコマンドは、ローカルSSHクレデンシャルを使用して、クライアントマシンからビルドマシンに接続します。 接続すると、証明書ファイルの内容が表示され、SSHトンネルを介してリモートクライアントマシンにパイプで戻されます。 そこから、 sudo tee
証明書をディレクトリに書き込むための組み合わせ。
これが完了すると、ビルドマシン自体で行ったのと同じようにリポジトリディレクトリ構造を作成できます。
sudo mkdir -p /usr/local/etc/pkg/repos
これで、ビルドマシンで使用したものと非常によく似たリポジトリファイルを作成できます。
sudo vi /usr/local/etc/pkg/repos/poudriere.conf
違いは、URLの場所とミラーの種類です。 ここでも、パッケージを混在させるか、カスタムコンパイル済みパッケージをのみ使用するかを選択できます。 パッケージソースの混合に関しても同じ警告が適用されます。
カスタムパッケージを公式リポジトリのパッケージと混合する場合、ファイルは次のようになります。
poudriere: {
url: "http://server_domain_or_IP/packages/freebsd_10-1x64-HEAD/",
mirror_type: "http",
signature_type: "pubkey",
pubkey: "/usr/local/etc/ssl/certs/poudriere.cert",
enabled: yes,
priority: 100
}
コンパイルされたパッケージのみを使用する場合、ファイルは次のようになります。
poudriere: {
url: "http://server_domain_or_IP/packages/freebsd_10-1x64-HEAD/",
mirror_type: "http",
signature_type: "pubkey",
pubkey: "/usr/local/etc/ssl/certs/poudriere.cert",
enabled: yes
さらに、独自のパッケージのみを使用している場合は、デフォルトのFreeBSDリポジトリ設定を上書きするために別のリポジトリ設定ファイルを作成することを忘れないでください。
sudo vi /usr/local/etc/pkg/repos/freebsd.conf
公式リポジトリを無効にするには、ファイルに次のコンテンツを配置します。
FreeBSD: {
enabled: no
}
終了したら、更新します pkg
カスタムコンパイル済みパッケージの使用を開始するデータベース:
sudo pkg update
この手順は、必要な数のFreeBSDクライアントマシンで繰り返すことができます。
更新が利用可能な場合のパッケージの再構築
あなたは今あなたの全体を持っているはずです poudriere
セットアップ実行中。 ただし、特にセキュリティ関連の場合は、新しい更新が利用可能になったときに、パッケージを時々再構築する必要があります。
幸い、パッケージを再構築する手順はかなり簡単です。 まず、FreeBSD jailを更新して、パッケージが最新のオペレーティングシステムに対してビルドされるようにする必要があります。 次のように入力すると、次のように入力できます。
sudo poudriere jail -u -j freebsd_10-1x64
次に、ポートツリーを更新して、各ポートの最新バージョンを刑務所で利用できるようにする必要があります。 次のように入力すると、次のように入力できます。
sudo poudriere ports -u -p HEAD
jailとportsツリーが更新された後、変更が必要な場合は、ポートリストを変更できます。
sudo vi /usr/local/etc/poudriere.d/port-list
調整する必要がある場合 make.conf
オプションの場合、ビルドに関連付けられているファイルを編集することでこれを行うことができます。
sudo vi /usr/local/etc/poudriere.d/freebsd_10-1x64-make.conf
次のように入力して、ポートの新しいオプションを確認できます。
sudo poudriere options -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list
代わりに、ポートのオプションのすべてを確認したい場合は、 -c
国旗。 これは、ビルドまたはランタイムの問題をトラブルシューティングするときに役立ちます。
sudo poudriere options -c -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list
上記の準備手順が完了したら、次のように入力して、変更または更新されたポートを再コンパイルできます。
sudo poudriere bulk -j freebsd_10-1x64 -p HEAD -f /usr/local/etc/poudriere.d/port-list
Webインターフェイスで進行状況を自由に監視してください。 新しいパッケージがコンパイルされたら、次のように入力して、各マシンのパッケージを更新できます。
sudo pkg upgrade
これにより、FreeBSDインフラストラクチャ全体でカスタムパッケージを非常に簡単に更新できます。
結論
このガイドでは、構成方法について説明しました poudriere
ビルドマシンと外部クライアントの両方のポートのカスタムセットをコンパイルしてパッケージ化します。 このプロセスは一見時間がかかるように見えるかもしれませんが、一度起動して実行すると、管理はかなり簡単になります。
レバレッジによって poudriere
、FreeBSDのオプションのソフトウェア管理システムの両方を利用することができます。 多くのユーザーにとって、これは両方の長所を構成します。 A poudriere
ビルドシステムを使用すると、高速を利用しながら、単一のマシンに適していると思われるソフトウェアをカスタマイズできます。 pkg
実際の設置と管理のためのシステム。