No es posible iniciar poudriere bulk dentro de una cárcel:
# 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
He seguido la entrada de la wiki tanto como he podido, pero no uso ZFS. Por lo tanto, mi configuración de FreeBSD 10 para la cárcel se ve así:
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";
}
El mensaje de error indica que no es posible crear una cárcel dentro de una cárcel. Por lo tanto, lo probé manualmente, puedo crear una cárcel dentro de una cárcel, no poudriere.
Si tiene IPv6, es posible que le dé acceso a la cárcel para realizar más pruebas.
Probablemente esté fallando debido a que no tiene una entrada 'ip4'. ¿Puede ejecutar 'poudriere -x bulk ... 2> log' y cargar el archivo de registro o alojarlo en algún lugar que pueda ver?
Puedes ver el registro aquí:
http://pkg.toco-domains.de/poudriere-in-jail-error.log
Probé su sugerencia con "ip4 = heredar; ip6 = heredar;". Tiene razón: después de configurar estas opciones, funciona :)
Con "funciona" quiero decir:
El mensaje de error desapareció. No pude probar la construcción de puertos porque no tengo una dirección IPv4 para usar. poudriere no puede recuperar los puertos, ¿parece forzar la descarga a través de IPv4?
Echo un vistazo al registro. El error ocurre en esta línea:
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
Si cambia la línea a:
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
La cárcel se crea con éxito. También puedo trabajar con él. Espero que esto ayude.
Gracias por todo tu trabajo :)
Después de configurar la dirección IPv6 codificada, comienza la construcción de un puerto.
Pero se detiene justo después de compilar el paquete pkg. Mensaje de error:
=== Inicio ===
=======================
pkg-static: No se puede abrir "/var/run/ld-elf.so.hints": No existe tal archivo o directorio
*** Código de error 1
Detener.
make [1]: detenido en / usr / ports / ports-mgmt / pkg
*** Código de error 1
Detener.
hacer: detenido en / usr / ports / ports-mgmt / pkg
==== >> Limpieza de wrkdir
===> Limpieza para pkg-1.3.5.1
la compilación de / usr / ports / ports-mgmt / pkg finalizó el lunes 11 de agosto a las 08:35:21 UTC de 2014
tiempo de construcción: 00:00:30
!!! error de construcción encontrado !!!
[ root @ poudriere /] # ls -lah /var/run/ld-elf.so.hints
=== Fin ===
El archivo existe:
-r - r - r-- 1 rueda raíz 199B 6 de agosto 13:58 /var/run/ld-elf.so.hints
¿Entonces creo que no se ha copiado correctamente?
Después de un poco de depuración, encontré el problema con los elf-hints. Al crear la cárcel de referencia, la ruta a la cárcel se utiliza para copiar.
En mi caso, esto es / usr / local / jail / poudriere / var / run -> y esta ruta no existe desde dentro de la cárcel.
Como solución para mí, codifiqué la copia de / var / run. Esto parece funcionar :)
El problema descrito en este número no está relacionado con el Poudriere, sino con el diseño de las cárceles de 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
Desde man jail
:
Los procesos encarcelados no pueden conferir mayores permisos de los que
se dan, por ejemplo, si se crea una cárcel con allow.nomount,
no puede crear una cárcel con allow.mount configurado. Del mismo modo, tal
las restricciones como ip4.addr y securelevel no se pueden omitir en child
cárceles.
Por lo tanto, se deben definir las direcciones IP 127.0.0.1
y ::1
para
loopback
interfaz lo0
en el súper sistema de cárcel (cárcel de Poudriere). Lo mismo ocurre con cualquier otra dirección IP. Solo puede usar las IP para cárceles jerárquicas que están configuradas para la súper cárcel.
Cuando se ejecuta, este obtiene el error indicado anteriormente:
# 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
Ejecutar el código a continuación no tiene problemas (puede ver que
'ip4.addr=127.0.0.1' 'ip6.addr=::1'
params se eliminan):
# 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
La prueba se puede reproducir eliminando ${network}
variable de la línea
252 de /usr/local/share/poudriere/common.sh
.
ezjail
, pero se puede aplicar el mismo método a /etc/jail.conf
)Agregue 127.0.0.1,::1
a la lista de IP de la cárcel en
/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"
¡Súper viejo bicho aplastado!
c756e1822013a763c8a5e4ccee273794bd182e11 también ayuda.
Comentario más útil
El problema descrito en este número no está relacionado con el Poudriere, sino con el diseño de las cárceles de FreeBSD.
Problema / error
Descripción
Desde
man jail
:Por lo tanto, se deben definir las direcciones IP
127.0.0.1
y::1
paraloopback
interfazlo0
en el súper sistema de cárcel (cárcel de Poudriere). Lo mismo ocurre con cualquier otra dirección IP. Solo puede usar las IP para cárceles jerárquicas que están configuradas para la súper cárcel.Prueba (en 10.1-STABLE)
Cuando se ejecuta, este obtiene el error indicado anteriormente:
Ejecutar el código a continuación no tiene problemas (puede ver que
'ip4.addr=127.0.0.1' 'ip6.addr=::1'
params se eliminan):La prueba se puede reproducir eliminando
${network}
variable de la línea252 de
/usr/local/share/poudriere/common.sh
.Solución (solo por
ezjail
, pero se puede aplicar el mismo método a/etc/jail.conf
)Agregue
127.0.0.1,::1
a la lista de IP de la cárcel en/usr/local/etc/ezjail/myjail_example_org
: