<p>poudriere tidak bekerja di penjara</p>

Dibuat pada 18 Sep 2014  ·  8Komentar  ·  Sumber: freebsd/poudriere

Tidak mungkin memulai poudriere massal di dalam penjara:

# 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

Saya telah mengikuti entri wiki sebanyak mungkin, tetapi saya tidak menggunakan ZFS. Oleh karena itu konfigurasi FreeBSD 10 saya untuk jail terlihat seperti:

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";

}

Pesan kesalahan menunjukkan bahwa tidak mungkin membuat penjara di dalam penjara. Oleh karena itu saya mencobanya secara manual - saya dapat membuat jail di dalam jail- poudriere tidak.

Jika Anda memiliki IPv6, Anda dapat memberikan akses ke penjara untuk pengujian lebih lanjut.

Code_Defect Imported bug

Komentar yang paling membantu

Masalah yang dijelaskan dalam edisi ini tidak terkait dengan Poudriere, tetapi dengan desain penjara FreeBSD.

Masalah/kesalahan

[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

Keterangan

Dari man jail :

Proses yang dipenjara tidak diizinkan untuk memberikan izin yang lebih besar daripada mereka
sendiri diberikan, misalnya, jika penjara dibuat dengan allow.nomount, it
tidak dapat membuat jail dengan set allow.mount. Demikian pula, seperti
pembatasan karena ip4.addr dan securelevel tidak dapat dilewati pada anak
penjara.

Oleh karena itu seseorang harus mendefinisikan alamat IP 127.0.0.1 dan ::1 untuk
loopback antarmuka lo0 dalam sistem super jail (Poudriere jail). Sama halnya dengan alamat IP lainnya, Anda hanya dapat menggunakan IP untuk jail hierarkis yang disetel untuk super jail.

Tes (pada 10.1-STABIL)

Saat berjalan, yang ini mendapatkan kesalahan yang disebutkan di atas:

# 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

Menjalankan kode di bawah ini tanpa masalah (Anda dapat melihatnya
'ip4.addr=127.0.0.1' 'ip6.addr=::1' params dihapus):

# 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

Tes dapat direproduksi dengan menghapus variabel ${network} dari baris
252 dari /usr/local/share/poudriere/common.sh .

Solusi (hanya untuk ezjail , tetapi metode yang sama dapat diterapkan ke /etc/jail.conf )

Tambahkan 127.0.0.1,::1 ke daftar IP penjara di
/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"

Semua 8 komentar

Mungkin gagal karena tidak memiliki entri 'ip4'. Bisakah Anda menjalankan 'poudriere -x bulk ... 2>log' dan mengunggah file log atau menyimpannya di suatu tempat yang dapat saya lihat?

Anda dapat melihat lognya di sini:
http://pkg.toco-domains.de/poudriere-in-jail-error.log

Saya mencoba saran Anda dengan "ip4=inherit;ip6=inherit;". Anda benar - setelah mengatur opsi ini, ini berfungsi :)

Dengan "berfungsi" maksud saya:
Pesan kesalahan hilang. Saya tidak dapat menguji pembangunan port, karena saya tidak memiliki alamat IPv4 untuk digunakan. poudriere gagal mengambil port - sepertinya memaksa unduhan melalui IPv4?

Saya telah melihat log. Kesalahan terjadi di baris ini:

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

Jika a mengubah baris menjadi:

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

Penjara berhasil dibuat. Saya juga bisa bekerja dengannya. Saya harap ini membantu.

Terima kasih untuk semua pekerjaan Anda :)

Setelah mengatur alamat IPv6 hardcoded, pembangunan port dimulai.

Tapi itu berhenti tepat setelah mengkompilasi paket-pkg. Pesan eror:

=== Mulai ===

====> Mengompresi halaman manual (compress-man)

========================= ===> Paket bangunan untuk pkg-1.3.5.1
pkg-static: Tidak dapat membuka "/var/run/ld-elf.so.hints": Tidak ada file atau direktori seperti itu
*** Kode kesalahan 1

Berhenti.
make[1]: berhenti di /usr/ports/ports-mgmt/pkg
*** Kode kesalahan 1

Berhenti.
make: berhenti di /usr/ports/ports-mgmt/pkg
====>> Membersihkan wrkdir
===> Membersihkan untuk pkg-1.3.5.1
pembuatan /usr/ports/ports-mgmt/pkg berakhir pada Senin, 11 Agustus 08:35:21 UTC 2014
waktu pembuatan: 00:00:30
!!! membangun kegagalan ditemui !!!
[ root@poudriere /]# ls -lah /var/run/ld-elf.so.hints

=== Selesai ===

Filenya ada:

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

-r--r--r-- 1 roda akar 199B 6 Agustus 13:58 /var/run/ld-elf.so.hints

Jadi saya percaya itu tidak disalin dengan benar?

Setelah beberapa debugging, saya menemukan masalah dengan elf-hints. Saat membuat penjara referensi, jalur ke penjara digunakan untuk menyalin.

Dalam kasus saya ini adalah /usr/local/jail/poudriere/var/run -> dan jalur ini tidak ada dari dalam penjara.
Sebagai solusi bagi saya, saya melakukan hardcode penyalinan /var/run. Ini sepertinya berhasil :)

Masalah yang dijelaskan dalam edisi ini tidak terkait dengan Poudriere, tetapi dengan desain penjara FreeBSD.

Masalah/kesalahan

[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

Keterangan

Dari man jail :

Proses yang dipenjara tidak diizinkan untuk memberikan izin yang lebih besar daripada mereka
sendiri diberikan, misalnya, jika penjara dibuat dengan allow.nomount, it
tidak dapat membuat jail dengan set allow.mount. Demikian pula, seperti
pembatasan karena ip4.addr dan securelevel tidak dapat dilewati pada anak
penjara.

Oleh karena itu seseorang harus mendefinisikan alamat IP 127.0.0.1 dan ::1 untuk
loopback antarmuka lo0 dalam sistem super jail (Poudriere jail). Sama halnya dengan alamat IP lainnya, Anda hanya dapat menggunakan IP untuk jail hierarkis yang disetel untuk super jail.

Tes (pada 10.1-STABIL)

Saat berjalan, yang ini mendapatkan kesalahan yang disebutkan di atas:

# 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

Menjalankan kode di bawah ini tanpa masalah (Anda dapat melihatnya
'ip4.addr=127.0.0.1' 'ip6.addr=::1' params dihapus):

# 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

Tes dapat direproduksi dengan menghapus variabel ${network} dari baris
252 dari /usr/local/share/poudriere/common.sh .

Solusi (hanya untuk ezjail , tetapi metode yang sama dapat diterapkan ke /etc/jail.conf )

Tambahkan 127.0.0.1,::1 ke daftar IP penjara di
/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"

Bug super tua tergencet!

c756e1822013a763c8a5e4ccee273794bd182e11 juga membantu.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat