在使用poudriere测试端口时,如下所示:
poudriere testport -v -j 11amd64 -p custom www/go-www
我收到了这个错误:
!!! build failure encountered !!!
[00:00:06] ====>> Error: Build failed in phase: fetch
由于某种原因,无法找到/下载该软件包,因此在我尝试检查监狱解析器是否存在问题时,我通过执行以下操作列出了现有的监狱jls
- 我得到了引起我注意的输出:
> jls
JID IP Address Hostname Path
363 127.0.0.1 11amd64-custom /usr/local/poudriere/data/.m/11amd64-custom/ref
364 11amd64-custom /usr/local/poudriere/data/.m/11amd64-custom/ref
365 127.0.0.1 11amd64-custom-job-02 /usr/local/poudriere/data/.m/11amd64-custom/02
366 11amd64-custom-job-02 /usr/local/poudriere/data/.m/11amd64-custom/02
367 127.0.0.1 11amd64-custom-job-01 /usr/local/poudriere/data/.m/11amd64-custom/01
368 11amd64-custom-job-01 /usr/local/poudriere/data/.m/11amd64-custom/01
369 127.0.0.1 11amd64-custom-job-03 /usr/local/poudriere/data/.m/11amd64-custom/03
370 11amd64-custom-job-03 /usr/local/poudriere/data/.m/11amd64-custom/03
我注意到的是,如果我进入没有分配 IP 地址的监狱jexec 364
,例如,我可以 ping/获取任何主机,但如果我进入有 IP 地址的监狱jexec 363
,在这种情况下127.0.0.1
我无法 ping /解决:
ping: sendto: Can't assign requested address
因此我想知道创建一对监狱的想法是什么,一个有IP(不可路由)和另一个没有IP(可路由),背后的逻辑是什么?
以防万一这是我用于 poudriere 的配置/usr/local/etc/poudriere.conf
:
ZPOOL=tank
ZROOTFS=/poudriere
FREEBSD_HOST=https://download.FreeBSD.org
RESOLV_CONF=/etc/resolv.conf
BASEFS=/usr/local/poudriere
POUDRIERE_DATA=${BASEFS}/data
USE_PORTLINT=no
USE_TMPFS=yes
DISTFILES_CACHE=/usr/ports/distfiles
CHECK_CHANGED_OPTIONS=verbose
CHECK_CHANGED_DEPS=yes
PKG_REPO_SIGNING_KEY=/usr/local/etc/ssl/keys/pkg.key
CCACHE_DIR=/var/cache/ccache
NOLINUX=yes
更新
要解决我在交互模式下输入的问题 - 请注意-i
:
poudriere testport -v -i -j 11amd64 -p custom www/go-www
然后:
cd /usr/ports/www/go-www/; make
那获取了包裹,我只是将它们复制到/usr/ports/distfiles/
再说一遍:
poudriere testport -v -j 11amd64 -p custom www/go-www
这是一个丑陋的 hack,但主要问题是Makefile中有一条错误的行正在复制内容:
GH_ACCOUNT= nbari:DEFAULT,www
应该:
GH_ACCOUNT= nbari:DEFAULT
但仍然想知道为什么这对监狱是在有 IP 和没有 IP 的情况下创建的。