Ошибка: Systemctl не удалось включить единицу: невозможно создать псевдоним для службы

Вопрос или проблема

Раньше это работало нормально, но из-за сбоя карты micro-sd в Raspberry Pi Zero W мне пришлось переустановить систему. Старая система работала на более старой версии ОС, так что это определенно может быть частью проблемы. Когда я ввожу команду:

systemctl enable i2cget.service

Я получаю ошибку:

Failed to enable unit: Cannot alias i2cget.service as i2cget

и никакая символьная ссылка не создается.

Странно, но когда я проверяю статус, он говорит, что она включена, и когда я перезагружаюсь, служба активна. Я не понимаю, что происходит. Может ли быть проблема с тем, что символьная ссылка не существует в /etc/systemd/system/multi-user.target.wants?

Это работает под Raspbian 1:6.6.51-1+rpt3

/lib/systemd/system/i2cget.service:

[Unit]
Description=get-i2c демон
After=network.target
Requires=network.target

[Service]
Restart=on-failure
RestartSec=4s
ExecStart=/usr/bin/python3 /home/fpp/media/scripts/get-i2c.py

[Install]
Alias=i2cget
WantedBy=multi-user.target

Ответ или решение

Ошибка, которую вы наблюдаете, связана с невозможностью создания алиасов для сервисов в системе systemd. Давайте детально разберем, что могло привести к появлению ошибки "Failed to enable unit: Cannot alias i2cget.service".

Описание Проблемы:

Вы пытаетесь включить службу i2cget на Raspberry Pi Zero W, используя команду systemctl enable i2cget.service. Однако возникает ошибка, связанная с попыткой создания алиаса для сервиса.

Причины и Решения:

  1. Конфликт Alias:

    • В разделе [Install] в файле /lib/systemd/system/i2cget.service у вас указан Alias=i2cget. Это сообщение указывает на то, что система не может создать алиас, потому что имя i2cget уже используется, или systemd не поддерживает создание алиасов для сервисов.

    Решение:

    • Попробуйте убрать или изменить запись Alias=i2cget. Если алиас не является критически необходимым, удалите его.
    • После изменения сохраните файл и выполните sudo systemctl daemon-reload для обновления конфигурации systemd.
  2. Проблема с Ссылкой (Symlink):

    • Обычно команда systemctl enable создает символическую ссылку в директории /etc/systemd/system/multi-user.target.wants/. Если запись о том, что служба включена, уже существует, но физической ссылки нет, возможно, был сбой при создании ссылки.

    Решение:

    • Убедитесь, что никакой конфигурационный сбой не мешает созданию символической ссылки. Вы можете вручную создать символическую ссылку, если необходимо:
      sudo ln -s /lib/systemd/system/i2cget.service /etc/systemd/system/multi-user.target.wants/i2cget.service
  3. Версия и Конфликты ОС:

    • Вы упомянули, что обновили вашу систему на новую версию ОС после сбоя SD-карты. Версии systemd или других компонентов могли измениться, что может вызывать непредвиденные проблемы совместимости.

    Решение:

    • Проверьте обновления для вашей текущей версии Raspbian и systemd, примените все необходимые исправления, используя sudo apt update && sudo apt upgrade.

Заключение:

Чтобы исправить указанную проблему, начните с редактирования сервисного файла, чтобы ликвидировать алиас столь, насколько это возможно. Убедитесь, что все символические ссылки находятся на своих местах или создайте их вручную при необходимости. Проверка и обновление системы также может устранить конфликция между пакетами.

Вышеизложенные шаги должны помочь вам диагностировать и исправить проблему, связанную с включением службы в новой версии вашей ОС на Raspberry Pi Zero W.

Оцените материал
Добавить комментарий

Капча загружается...