Как обойти ошибку уровня запуска в Ubuntu в Windows 10 Spring Creators Update?

При выполнении apt-get dist-upgrade в Ubuntu 18.04, работающем под Windows 10 Spring Creators Update (RS4), я получаю эту ошибку:

Preparing to unpack .../ebtables_2.0.10.4-3.5ubuntu2.18.04.1_amd64.deb ... invoke-rc.d: could not determine current runlevel * Error: insufficient privileges to access the ebtables rulesets. invoke-rc.d: initscript ebtables, action "stop" failed. dpkg: warning: old ebtables package pre-removal script subprocess returned error exit status 1 dpkg: trying script from the new package instead ... invoke-rc.d: could not determine current runlevel * Error: insufficient privileges to access the ebtables rulesets. invoke-rc.d: initscript ebtables, action "stop" failed. dpkg: error processing archive /var/cache/apt/archives/ebtables_2.0.10.4-3.5ubuntu2.18.04.1_amd64.deb (--unpack): new ebtables package pre-removal script subprocess returned error exit status 1 update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults invoke-rc.d: could not determine current runlevel Errors were encountered while processing: /var/cache/apt/archives/ebtables_2.0.10.4-3.5ubuntu2.18.04.1_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1)

На самом деле меня не волнуют ebtables (кажется, что это пакет по умолчанию / встроенный), но я не хочу просеивать результаты каждого обновления, чтобы выяснить, есть ли новые ошибки, кроме этой.

1 ответ

Оказывается, WSL не поддерживал уровни инициализации / запуска (что имеет смысл, поскольку на самом деле он не имеет нормального процесса загрузки Linux), как упоминалось здесь: https://github.com/Microsoft/WSL/issues/1761

Хорошей новостью является то, что в Ubuntu Cosmic было сделано исправление, которое отфильтровывалось в Bionic (18.04) и Xenial (16.04): https://github.com/Microsoft/WSL/issues/1761

Если у вас была эта проблема раньше, теперь она должна быть решена.

Проблема могла быть в том, что service_control сценарий пытается использовать invoke-rc.d (что не работает, потому что в контейнере Docker нет уровней запуска), прежде чем пытаться выполнить команду службы (которая будет работать).

Так что измените ifусловия в скрипте или ленивый способ - заставить его искать несуществующий путь, чтобы он использовал служебную команду. Например:

if [ -x /xxxusr/sbin/invoke-rc.d ]; then
  /usr/sbin/invoke-rc.d $OMSAGENT_WS start
  elif [ -x /sbin/service ]; then
  /sbin/service $OMSAGENT_WS start
Другие вопросы по тегам