<p>poudriereは刑務所では機能しません</p>

作成日 2014年09月18日  ·  8コメント  ·  ソース: freebsd/poudriere

刑務所内でpoudriereバルクを開始することはできません:

# poudriere bulk -f /usr/local/etc/poudriere.d/ports-lists/Kunden-Ports -j Kunden

[00:00:00] ====>> Creating the reference jail... done
[00:01:04] ====>> Mounting system devices for Kunden-default
[00:01:04] ====>> Mounting ports/packages/distfiles
[00:01:04] ====>> Using packages from previously failed build
[00:01:04] ====>> Mounting packages from: /poudriere/data/packages/Kunden-default
[00:01:04] ====>> Mounting /var/db/ports from: /usr/local/etc/poudriere.d/Kunden-options
[00:01:04] ====>> Appending to make.conf: /usr/local/etc/poudriere.d/Kunden-make.conf
/etc/resolv.conf -> /poudriere/data/.m/Kunden-default/ref/etc/resolv.conf
[00:01:04] ====>> Starting jail Kunden-default
jail: jail_set: Operation not permitted
[00:01:04] ====>> Cleaning up
[00:01:04] ====>> Umounting file systems

可能な限りwikiエントリをフォローしましたが、ZFSは使用していません。 したがって、jailのFreeBSD10設定は次のようになります。

poudriere {
  path="/usr/local/jail/poudriere";
  host.hostname="poudriere";
  ip6.addr="2a01:4f8:150:50a5::12/64";
        persist;
        children.max=99;
        allow.mount;
        allow.mount.devfs;
        allow.mount.procfs;
        allow.mount.zfs;
        allow.mount.nullfs;
        allow.mount.tmpfs;
        allow.raw_sockets;
        allow.socket_af;
        allow.sysvipc;
        allow.chflags;
        mount.devfs;
        enforce_statfs=1; 
  interface=re0;
  exec.start = "/bin/sh /etc/rc";
  exec.stop = "/bin/sh /etc/rc.shutdown";

}

エラーメッセージは、jail内にjailを作成できないことを示しています。 したがって、私はそれを手動で試しました-私は刑務所内に刑務所を作成することはできません-poudriereではありません。

IPv6を使用している場合は、さらにテストするために刑務所にアクセスできるようにすることができます。

Code_Defect Imported bug

最も参考になるコメント

この号で説明されている問題は、Poudriereに関係しているのではなく、FreeBSDjailの設計に関係しています。

問題/エラー

[00:00:00] ====>> Creating the reference jail... done
[00:00:04] ====>> Mounting system devices for 10-1R_amd64-default
[00:00:04] ====>> Mounting ports/packages/distfiles
[00:00:04] ====>> Using packages from previously failed build
[00:00:04] ====>> Mounting packages from: /poudriere/data/packages/10-1R_amd64-default
[00:00:04] ====>> Appending to make.conf: /usr/local/etc/poudriere.d/10-1R_amd64-make.conf
/etc/resolv.conf -> /poudriere/data/.m/10-1R_amd64-default/ref/etc/resolv.conf
[00:00:04] ====>> Starting jail 10-1R_amd64-default
jail: jail_set: Operation not permitted
[00:00:04] ====>> Cleaning up
[00:00:04] ====>> Umounting file systems

説明

man jail

投獄されたプロセスは、それらよりも大きな権限を付与することは許可されていません
たとえば、allow.nomountを使用して刑務所が作成された場合、それ自体が与えられます。
allow.mountが設定されたjailを作成できません。 同様に、そのような
ip4.addrおよびsecurelevelが子でバイパスされない可能性があるための制限
刑務所。

したがって、IPアドレス127.0.0.1::1を定義する必要があります。
スーパージェイルシステム(Poudriereジェイル)のloopbackインターフェースlo0 。 他のIPアドレスにも同じことが言えます。スーパージェイルに設定されている階層ジェイルにのみIPを使用できます。

テスト(10.1-STABLE)

実行すると、これは上記のエラーを受け取ります。

# jail -c persist 'name=10-1R_amd64-default' \ 
'path=/poudriere/data/.m/10-1R_amd64-default/ref' \ 
'host.hostname=10-1R_amd64-default' \ 
'ip4.addr=127.0.0.1'  'ip6.addr=::1' \ 
allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc

以下のコードを実行しても問題はありません(
'ip4.addr=127.0.0.1' 'ip6.addr=::1'パラメータが削除されました):

# jail -c persist 'name=10-1R_amd64-default' \ 
'path=/poudriere/data/.m/10-1R_amd64-default/ref' \ 
'host.hostname=10-1R_amd64-default' \ 
allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc

行から${network}変数を削除することで、テストを再現できます。
/usr/local/share/poudriere/common.sh 252。

解決策( ezjailのみですが、同じ方法を/etc/jail.conf適用できます)

の刑務所IPリストに127.0.0.1,::1を追加します
/usr/local/etc/ezjail/myjail_example_org

export jail_myjail_example_org_ip="em0|192.168.3.6,lo0|127.0.0.1,lo0|::1"

全てのコメント8件

'ip4'エントリがないため、おそらく失敗しています。 'poudriere -x Bulk ... 2> log'を実行して、ログファイルをアップロードするか、私が見ることができる場所にホストすることはできますか?

ここでログを見ることができます:
http://pkg.toco-domains.de/poudriere-in-jail-error.log

「ip4 = inherit; ip6 = inherit;」で提案してみました。 あなたは正しいです-このオプションを設定した後、それは機能します:)

「動作する」とは、次のことを意味します。
エラーメッセージは消えました。 使用するIPv4アドレスがないため、ポートの構築をテストできませんでした。 poudriereはポートのフェッチに失敗します-IPv4経由でダウンロードを強制しているようですか?

ログを見てみました。 次の行でエラーが発生します。

jail -c persist name=Kunden-default path=/poudriere/data/.m/Kunden-default/ref host.hostname=Kunden-default ip4.addr=127.0.0.1 ip6.addr=::1 allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc

行を次のように変更した場合:

jail -c persist name=Kunden-default path=/mnt/ host.hostname=Kunden-default ip6.addr=2a01:4f8:150:50a5::12 allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc

刑務所は正常に作成されます。 また、私はそれで作業することができます。 これがお役に立てば幸いです。

すべてのあなたの仕事をありがとう:)

ハードコードされたIPv6アドレスを設定した後、ポートの構築が開始されます。

ただし、pkg-packageをコンパイルした直後に停止します。 エラーメッセージ:

===開始===

====> manページの圧縮(compress-man)

======================= ===> pkg-1.3.5.1のパッケージをビルドする
pkg-static:「/ var / run / ld-elf.so.hints」を開くことができません:そのようなファイルまたはディレクトリはありません
***エラーコード1

ストップ。
make [1]:/ usr / ports / ports-mgmt / pkgで停止
***エラーコード1

ストップ。
make:/ usr / ports / ports-mgmt / pkgで停止
==== >> wrkdirのクリーンアップ
===> pkg-1.3.5.1のクリーニング
/ usr / ports / ports-mgmt / pkgのビルドは2014年8月11日月曜日08:35:21UTCに終了しました
ビルド時間:00:00:30
!!! ビルドの失敗が発生しました!!!
[ root @ poudriere /]#ls -lah /var/run/ld-elf.so.hints

===終了===

ファイルが存在します:

ls -lah /var/run/ld-elf.so.hints

-r--r--r--1ルートホイール199B 8月6日13:58 / var / run / ld-elf.so.hints

だから私はそれが正しくコピーされていないと思いますか?

いくつかのデバッグの後、私はエルフのヒントに問題があることを発見しました。 参照jailを作成するとき、jailへのパスがコピーに使用されます。

私の場合、これは/ usr / local / jail / poudriere / var / run->であり、このパスはjail内からは存在しませんでした。
私の回避策として、/ var / runのコピーをハードコーディングしました。 これはうまくいくようです:)

この号で説明されている問題は、Poudriereに関係しているのではなく、FreeBSDjailの設計に関係しています。

問題/エラー

[00:00:00] ====>> Creating the reference jail... done
[00:00:04] ====>> Mounting system devices for 10-1R_amd64-default
[00:00:04] ====>> Mounting ports/packages/distfiles
[00:00:04] ====>> Using packages from previously failed build
[00:00:04] ====>> Mounting packages from: /poudriere/data/packages/10-1R_amd64-default
[00:00:04] ====>> Appending to make.conf: /usr/local/etc/poudriere.d/10-1R_amd64-make.conf
/etc/resolv.conf -> /poudriere/data/.m/10-1R_amd64-default/ref/etc/resolv.conf
[00:00:04] ====>> Starting jail 10-1R_amd64-default
jail: jail_set: Operation not permitted
[00:00:04] ====>> Cleaning up
[00:00:04] ====>> Umounting file systems

説明

man jail

投獄されたプロセスは、それらよりも大きな権限を付与することは許可されていません
たとえば、allow.nomountを使用して刑務所が作成された場合、それ自体が与えられます。
allow.mountが設定されたjailを作成できません。 同様に、そのような
ip4.addrおよびsecurelevelが子でバイパスされない可能性があるための制限
刑務所。

したがって、IPアドレス127.0.0.1::1を定義する必要があります。
スーパージェイルシステム(Poudriereジェイル)のloopbackインターフェースlo0 。 他のIPアドレスにも同じことが言えます。スーパージェイルに設定されている階層ジェイルにのみIPを使用できます。

テスト(10.1-STABLE)

実行すると、これは上記のエラーを受け取ります。

# jail -c persist 'name=10-1R_amd64-default' \ 
'path=/poudriere/data/.m/10-1R_amd64-default/ref' \ 
'host.hostname=10-1R_amd64-default' \ 
'ip4.addr=127.0.0.1'  'ip6.addr=::1' \ 
allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc

以下のコードを実行しても問題はありません(
'ip4.addr=127.0.0.1' 'ip6.addr=::1'パラメータが削除されました):

# jail -c persist 'name=10-1R_amd64-default' \ 
'path=/poudriere/data/.m/10-1R_amd64-default/ref' \ 
'host.hostname=10-1R_amd64-default' \ 
allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc

行から${network}変数を削除することで、テストを再現できます。
/usr/local/share/poudriere/common.sh 252。

解決策( ezjailのみですが、同じ方法を/etc/jail.conf適用できます)

の刑務所IPリストに127.0.0.1,::1を追加します
/usr/local/etc/ezjail/myjail_example_org

export jail_myjail_example_org_ip="em0|192.168.3.6,lo0|127.0.0.1,lo0|::1"

超古いバグが押しつぶされました!

c756e1822013a763c8a5e4ccee273794bd182e11も役立ちます。

このページは役に立ちましたか?
0 / 5 - 0 評価