Почему poudriere создает пару джейлов с и без IP-адресов
При тестировании порта с помощью 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
Я могу пинговать / извлекать любой хост, например, но если я вхожу в тюрьму с IP-адресом jexec 363
, в этом случае 127.0.0.1
Я не могу пинговать / разрешать:
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
Это был ужасный хак, но главной проблемой была плохая строка в Makefile, которая дублировала содержимое:
GH_ACCOUNT= nbari:DEFAULT,www
Должно быть:
GH_ACCOUNT= nbari:DEFAULT
Но все еще задаюсь вопросом, почему пара тюрем создается с и без IP.
1 ответ
poudriere(8)
preforms preforms Этапы, которые не требуют подключения к сети, являются более строгой тюрьмой для дополнительной безопасности. Ранее тюрьмы были перезапущены с сетевыми возможностями или без них, теперь две отдельные тюрьмы сохраняются на протяжении всего процесса, чтобы уменьшить сложность.
В тюрьме с указанным IP-адресом явно задан петлевой адрес, а тот, который не наследует его, подключается по сети от хоста:
: ${LOIP6:=::1}
: ${LOIP4:=127.0.0.1}
case $IPS in
01)
localipargs="ip6.addr=${LOIP6}"
ipargs="ip6=inherit"
;;
10)
localipargs="ip4.addr=${LOIP4}"
ipargs="ip4=inherit"
;;
11)
localipargs="ip4.addr=${LOIP4} ip6.addr=${LOIP6}"
ipargs="ip4=inherit ip6=inherit"
;;
esac
...
jstart() {
local name network
network="${localipargs}"
[ "${RESTRICT_NETWORKING}" = "yes" ] || network="${ipargs}"
_my_name name
jail -c persist name=${name} \
path=${MASTERMNT}${MY_JOBID+/../${MY_JOBID}} \
host.hostname=${BUILDER_HOSTNAME-${name}} \
${network} ${JAIL_PARAMS} \
allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc
jail -c persist name=${name}-n \
path=${MASTERMNT}${MY_JOBID+/../${MY_JOBID}} \
host.hostname=${BUILDER_HOSTNAME-${name}} \
${ipargs} ${JAIL_PARAMS} \
allow.socket_af allow.raw_sockets allow.chflags allow.sysvipc
}
Ошибка выборки, по-видимому, из-за повторяющихся записей в новом distfile
(две записи для nbari-www-1.1.1_GH0.tar.gz
). Строка ошибки в вашем файле журнала начинается с fetch: 4211
4211 - размер повторяющейся записи.
Данная запись добавляется дважды из-за групп, указанных с помощью GH_ACCOUNT
, DEFAUT
добавляет PORTNAME
(www
), а также www
добавляет себя.