<p>poudriere لا يعمل في السجن</p>

تم إنشاؤها على ١٨ سبتمبر ٢٠١٤  ·  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. لذلك يبدو تكوين FreeBSD 10 الخاص بي للسجن كما يلي:

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

}

تشير رسالة الخطأ إلى أنه لا يمكن إنشاء سجن داخل السجن. لذلك جربته يدويًا - أنا قادر على إنشاء سجن داخل السجن - لا.

إذا كان لديك IPv6 ، فمن الممكن منحك حق الوصول إلى السجن لإجراء مزيد من الاختبارات.

Code_Defect Imported bug

التعليق الأكثر فائدة

لا تتعلق المشكلة الموصوفة في هذه المشكلة بـ Poudriere ، ولكن بتصميم سجون 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

وصف

من man jail :

لا يُسمح للعمليات المسجونة بمنح أذونات أكبر منها
يتم منحهم أنفسهم ، على سبيل المثال ، إذا تم إنشاء سجن باستخدام allow.nomount ، فإنه
غير قادر على إنشاء سجن باستخدام allow.mount set. وبالمثل ، مثل
لا يجوز تجاوز القيود مثل ip4.addr و securelevel في الطفل
السجون.

لذلك يجب على المرء تحديد عناوين IP 127.0.0.1 و ::1 للنطاق
loopback interface lo0 في نظام السجن الفائق (سجن Poudriere). ينطبق الشيء نفسه مع أي عنوان 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

Runnig الكود أدناه يذهب دون مشاكل (يمكنك أن ترى ذلك
تمت إزالة المعلمات '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} من السطر
252 من /usr/local/share/poudriere/common.sh .

الحل (مقابل ezjail فقط ، لكن يمكن تطبيق نفس الطريقة على /etc/jail.conf )

قم بإلحاق 127.0.0.1,::1 بقائمة IP للسجن في
/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 wholesale ... 2> log" وإما تحميل ملف السجل أو استضافته في مكان ما يمكنني الاطلاع عليه؟

يمكنك مشاهدة السجل هنا:
http://pkg.toco-domains.de/poudriere-in-jail-error.log

لقد جربت اقتراحك باستخدام "ip4 = ورث ؛ ip6 = ورث ؛". أنت على حق - بعد تعيين هذه الخيارات ، تعمل :)

مع "إنه يعمل" أعني:
اختفت رسالة الخطأ. لم أتمكن من اختبار بناء المنافذ ، لأنه ليس لدي عنوان 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. رسالة خطأ:

=== ابدأ ===

====> ضغط صفحات الرجل (ضغط رجل)

======================== ===> بناء حزمة لـ pkg-1.3.5.1
pkg-static: لا يمكن فتح "/var/run/ld-elf.so.hints": لا يوجد مثل هذا الملف أو الدليل
*** رمز الخطأ 1

قف.
make [1]: توقف في / usr /orts / ports-mgmt / pkg
*** رمز الخطأ 1

قف.
make: توقف في / usr /orts / ports-mgmt / pkg
==== >> تنظيف wrkdir
===> تنظيف pkg-1.3.5.1
انتهى بناء / usr / ports / ports-mgmt / pkg في الإثنين أغسطس 11 08:35:21 بالتوقيت العالمي المنسق 2014
وقت البناء: 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 6 أغسطس 13:58 /var/run/ld-elf.so.hints

لذلك أعتقد أنه لم يتم نسخها بشكل صحيح؟

بعد بعض التصحيح ، وجدت مشكلة في تلميحات elf. عند إنشاء السجن المرجعي ، يتم استخدام المسار إلى السجن للنسخ.

في حالتي هذا / usr / local / jail / poudriere / var / run -> وهذا المسار لم يكن موجودًا من داخل السجن.
كحل بديل بالنسبة لي ، قمت بترميز نسخ / var / run. يبدو أن هذا يعمل :)

لا تتعلق المشكلة الموصوفة في هذه المشكلة بـ Poudriere ، ولكن بتصميم سجون 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

وصف

من man jail :

لا يُسمح للعمليات المسجونة بمنح أذونات أكبر منها
يتم منحهم أنفسهم ، على سبيل المثال ، إذا تم إنشاء سجن باستخدام allow.nomount ، فإنه
غير قادر على إنشاء سجن باستخدام allow.mount set. وبالمثل ، مثل
لا يجوز تجاوز القيود مثل ip4.addr و securelevel في الطفل
السجون.

لذلك يجب على المرء تحديد عناوين IP 127.0.0.1 و ::1 للنطاق
loopback interface lo0 في نظام السجن الفائق (سجن Poudriere). ينطبق الشيء نفسه مع أي عنوان 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

Runnig الكود أدناه يذهب دون مشاكل (يمكنك أن ترى ذلك
تمت إزالة المعلمات '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} من السطر
252 من /usr/local/share/poudriere/common.sh .

الحل (مقابل ezjail فقط ، لكن يمكن تطبيق نفس الطريقة على /etc/jail.conf )

قم بإلحاق 127.0.0.1,::1 بقائمة IP للسجن في
/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 التقييمات