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.
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 ===
=========================
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:
-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.
[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
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.
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
.
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.
Komentar yang paling membantu
Masalah yang dijelaskan dalam edisi ini tidak terkait dengan Poudriere, tetapi dengan desain penjara FreeBSD.
Masalah/kesalahan
Keterangan
Dari
man jail
:Oleh karena itu seseorang harus mendefinisikan alamat IP
127.0.0.1
dan::1
untukloopback
antarmukalo0
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:
Menjalankan kode di bawah ini tanpa masalah (Anda dapat melihatnya
'ip4.addr=127.0.0.1' 'ip6.addr=::1'
params dihapus):Tes dapat direproduksi dengan menghapus variabel
${network}
dari baris252 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
: