docker | неизвестная среда `bash` | Подпроцесс / usr / bin / dpkg вернул код ошибки (1) - PullRequest
1 голос
/ 12 января 2020

Моя цель - заставить контейнер docker работать с установленным и подключенным nordvpn.

Получить docker контейнер собирается

sudo docker pull ubuntu:latest
sudo docker run -it ubuntu bash
// now im in the docker container
apt install update
apt install wget
wget {{nordvpn_link.deb}}
dpkg -i {{nordvpn_link.deb}}
// some errors about dependencies after above command so ...
apt install -f
// then
apt install nordvpn

Первая большая ошибка

root@f706a3f4012f:/home# apt install nordvpn
Reading package lists... Done
Building dependency tree       
Reading state information... Done
nordvpn is already the newest version (3.6.0-2).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] 
Setting up nordvpn (3.6.0-2) ...
[ERROR] Unknown environment `bash'
dpkg: error processing package nordvpn (--configure):
installed nordvpn package post-installation script subprocess returned error exit status 255
Errors were encountered while processing:
nordvpn
E: Sub-process /usr/bin/dpkg returned an error code (1)

Я прочитал здесь для запуска следующей команды

dpkg --configure -a
// errors
Setting up nordvpn (3.6.0-2) ...
[ERROR] Unknown environment `bash'
dpkg: error processing package nordvpn (--configure):
installed nordvpn package post-installation script subprocess returned error exit status 255
Errors were encountered while processing:
nordvpn

Я не уверен, почему это происходит с контейнером docker, поскольку процесс прошел гладко на моем обычном рабочем столе Ubuntu установка.

1 Ответ

0 голосов
/ 12 января 2020

Проблема в том, что systemd не работает.

В сценарии после установки /var/lib/dpkg/info/nordvpn.postinst в строке 5 он получает имя процесса с pid 1 ENV=$(ps --no-headers -o comm 1), что в вашем случае bash, а не systemd.

Позже он оценивает $ENV, и если система была запущена с systemd (или init), он запускает службу nordvpn, в противном случае он возвращает exit -1.

См. Фрагмент ниже:

case "$ENV" in
    init)
      # snip
    ;;
    systemd)
        # snip
        systemctl enable nordvpnd.socket &>/dev/null || :
        systemctl enable nordvpnd.service &>/dev/null || :
        systemctl start nordvpnd.socket &>/dev/null || :
        systemctl start nordvpnd.service &>/dev/null || :
    ;;
    *)
        echo "[ERROR] Unknown environment \`$ENV'"
        exit -1
    ;;
# snip

Аналогичный вопрос: Запустить nordvpn в docker контейнере

...