Re: Релиз Unit 1.6

Vadim A. Misbakh-Soloviov nginx на mva.name
Чт Ноя 15 20:46:33 UTC 2018


В письме от пятница, 16 ноября 2018 г. 3:32:03 +07 пользователь Валентин 
Бартенев написал:
> А make install делается из под рута?  
да
Но в sandbox (который пресекает попытки вылезти куда не следует) и, возможно, 
с fakeroot (завтра поконкретнее подебажу, используется ли он именно на этой 
стадии).
> Если не была задана опция --local,
> то npm будет пытаеться установить модуль в систему глобально, а для этого
> нужны соответсвующие привилегии.  Если нужно поместить модуль в отдельную
> директорию, то следует указать опцию --local, либо использовать
> make node-local-install с соответсвующим DESTDIR.
Опция --local задана не была, но была задана переменная DESTDIR, а, согласно 
содержимому auto/modules/nodejs этого, вроде как, достаточно для того чтобы 
вызывался node-local-install. И, он, собственно, и вызывается. Но потом 
случается непонятно что и происходит бесконечный цикл про права доступа, хотя 
`id` и возвращает "root". Я даже пробовал объявить в стадии src_install'а 
переменную USER (которая и в самом деле пуста), но не помогало. Помог только 
--unsafe...
> Или я неправильно понял проблему?  Тогда хотелось бы подробностей,
> что за система и с какими опциями зовут ./configure, make и т.д.?
1) Gentoo,
2) как-то вот так:
```
_unit_go_configure() {
    ./configure go --go-path="$(get_golibdir_gopath)" # multislot?
}

_unit_nodejs_configure() {
    ./configure nodejs --node-gyp="/usr/$(get_libdir)/node_modules/npm/bin/
node-gyp-bin/node-gyp"
}
_unit_perl_configure() {
    ./configure perl # multislot?
}
_unit_php_configure() {
    for impl in $(php_get_slots); do
        ./configure php --config="/usr/$(get_libdir)/${impl}/bin/php-config" 
--module="${impl/.}" --lib-path="/usr/lib/${impl}/$(get_libdir)"
    done
}
_unit_python_configure() {
    _unit_python_configure_each() {
        ./configure python --config="${EPYTHON}-config" --module="$
{EPYTHON/.}"
    }
    python_foreach_impl _unit_python_configure_each
}
_unit_ruby_configure() {
    _ruby_each_implementation_each() {
        cd "${WORKDIR}/${MY_P}"
        ./configure ruby --ruby="${RUBY}" --module="$(basename ${RUBY})"
    }
    _ruby_each_implementation _ruby_each_implementation_each
}

src_configure() {
    ./configure \
        --cc="${CC}" \
        --cc-opt="${CFLAGS}" \
        --ld-opt="${LDFLAGS}" \
        --bindir="/usr/bin" \
        --sbindir="/usr/sbin" \
        --prefix="/var/lib/${PN}" \
        --modules="/usr/lib/${PN}/modules" \
        --state="/var/lib/${PN}" \
        --pid="/run/${PN}.pid" \
        --log="/var/log/${PN}.log" \
        --control="unix:/run/${PN}.sock" \
        $(usex ipv6 '' "--no-ipv6") \
        $(usex unix-sockets '' "--no-unix-sockets") \
        $(usex debug "--debug" "")

    for mod in $UNIT_MODULES; do
        use "unit_modules_${mod}" && "_unit_${mod}_configure"
    done
}
```

> Очень похоже вот на этот баг:
> https://github.com/nodejs/node/issues/22457

Возможно. Но, увы, обновить nodejs пока что никакой возможности (10+ 
заблокированы дистрибутивом ибо тянут заблокированный openssl-1.1 (который 
ломает кучу всего).
Да и 9.х не хочет пересобираться, ибо хочет старый icu, которого уже нету).
Так что приходится жевать то, что было установлено когда-то давно (9.8.0) :)


Подробная информация о списке рассылки nginx-ru