不可能在监狱中启动 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
我尽可能多地关注维基条目,但我不使用 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";
}
错误消息表明不可能在监狱中创建监狱。 因此,我手动尝试了 - 我能够在监狱中创建监狱 - poudriere 不是。
如果您有 IPv6,则可以让您访问监狱以进行进一步测试。
由于没有“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 后立即停止。 错误信息:
=== 开始 ===
========================
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 的构建于 UTC 2014 年 8 月 11 日星期一 08:35:21 结束
构建时间:00:00:30
!!! 遇到构建失败!!!
[ root@poudriere /]# ls -lah /var/run/ld-elf.so.hints
=== 结束 ===
该文件存在:
-r--r--r-- 1 根轮 199B Aug 6 13:58 /var/run/ld-elf.so.hints
所以我相信它没有正确复制?
经过一些调试,我发现了精灵提示的问题。 创建参考监狱时,监狱的路径用于复制。
在我的情况下,这是 /usr/local/jail/poudriere/var/run -> 并且该路径在监狱中不存在。
作为我的解决方法,我硬编码了 /var/run 的复制。 这似乎有效:)
本期描述的问题与 Poudriere 无关,而是与 FreeBSD jail 的设计有关。
[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 创建了一个 jail,则它
无法使用 allow.mount 设置创建监狱。 同样,这样的
ip4.addr 和 securelevel 的限制可能不会在 child 中被绕过
监狱。
因此必须定义 IP 地址127.0.0.1
和::1
超级监狱系统(Poudriere jail)中的loopback
接口lo0
。 与任何其他 IP 地址相同,您只能将 IP 用于为超级监狱设置的分层监狱。
运行时,这个得到上述错误:
# 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
)将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 也有帮助。
最有用的评论
本期描述的问题与 Poudriere 无关,而是与 FreeBSD jail 的设计有关。
问题/错误
描述
从
man jail
:因此必须定义 IP 地址
127.0.0.1
和::1
超级监狱系统(Poudriere jail)中的
loopback
接口lo0
。 与任何其他 IP 地址相同,您只能将 IP 用于为超级监狱设置的分层监狱。测试(在 10.1-STABLE 上)
运行时,这个得到上述错误:
运行下面的代码没有问题(你可以看到
'ip4.addr=127.0.0.1' 'ip6.addr=::1'
参数被删除):可以通过从行中删除
${network}
变量来重现测试/usr/local/share/poudriere/common.sh
252解决方案(仅适用于
ezjail
,但同样的方法可以应用于/etc/jail.conf
)将
127.0.0.1,::1
附加到监狱 IP 列表中/usr/local/etc/ezjail/myjail_example_org
: