序章

ポートシステムは、ソフトウェアの柔軟性と制御を望むユーザーにとって、FreeBSDの最大の資産の1つです。 これにより、管理者は、堅牢で予測可能なように設計されたシステムを使用して、ソースベースのインストールを簡単に作成および保守できます。

この機能の利点は素晴らしいですが、ポートベースの管理に対して課せられる最も一般的な苦情のいくつかは、各ソフトウェアのコンパイルに必要な時間とリソースに関するものです。 それぞれが独自のポートをコンパイルする多数のサーバーを管理している場合、これはさらに問題になります。 FreeBSDパッケージはインストールをスピードアップする代替手段を提供しますが、それはポートが与える制御を犠牲にします。

この問題を軽減するために、管理者は poudriere というアプリケーションを使用して、カスタムパッケージを構築および保守できます。 さまざまなアーキテクチャのパッケージを構築するために技術的に作成されていますが、 poudriere FreeBSDサーバーのインフラストラクチャ全体のパッケージを作成およびホストするためのパッケージ構築環境としてよく使用されます。

レバレッジによって poudriere、管理者は、ポートシステムを使用して必要に応じてソフトウェアをカスタマイズし、パッケージをコンパイルして、インストールとソフトウェア管理を容易にすることができます。 任意の数のFreeBSDサーバーがホストを使用できます poudriere パッケージソースとしてインストールされるため、カスタマイズされ、コンパイル済みの実行可能ファイルをすばやく簡単にダウンロードしてインストールできます。

このガイドでは、でサーバーをセットアップする方法を示します poudriere ビルドマシンとして。 その後、このサーバーを追加サーバーのパッケージのリポジトリとして使用できます。 この設定は単一のサーバーにとっては有益ですが、追加のサーバーが同じサーバーを使用し始めると、実際の効率が向上します。 poudriere パッケージソースとしてのホスト。

ポートの構築はリソースを大量に消費するプロセスであるため、これを通常よりも強力なシステムに設定することは価値があるかもしれません。

必要なポート管理ソフトウェアをインストールします

まず、必要なすべてのポートをインストールします。

いつものように、ポート関連のタスクを開始する前に、ポートツリーを更新して、ファイルシステム上の参照が最新であることを確認します。

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つのサブディレクトリを含むディレクトリ keyscerts. これは、次のように入力することで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 構成ファイルは非常によくコメントされており、必要な設定のほとんどが事前に定義されています。 いくつかの特定の変更を行いますが、その大部分はそのまま残します。

FreeBSDサーバーがDigitalOceanで実行されている場合、ファイルシステムはUFSになります。 内にZFS固有のオプションがあります poudriere 設定しないでください。 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_OPTIONSCHECK_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

プロセスの特定の部分は、他の部分よりも多くの出力を生成します。

離れる必要がある場合は、を押して画面セッションを切り離すことができます CTRLa コントロールをに移動するには screen、続いて d セッションを切り離すためのキー:

CTRL-a d

セッションに戻りたい場合は、次のように入力できます。

screen -x

フロントエンドとリポジトリにサービスを提供するためのNginxの設定

パッケージの構築中に、Nginxを構成する機会を利用できます。 別のターミナルを開き、 screen 上記のようにセッションを開始するか、新しいセッションを開始します screen 入力してウィンドウ CTRL-a c (次のように入力すると、ウィンドウを切り替えることができます CTRL-a nCTRL-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 [email protected]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 実際の設置と管理のためのシステム。