Я пытаюсь настроить avahi-daemon на моем Raspberry Pi для трансляции только что запрограммированного сервиса, который должен обнаруживаться автоматически. Это работает, но не совсем, и я не могу понять, почему нет.

Если я использую:

avahi-publish -s myservice _mqtt._tcp 1883

он работает просто отлично, но это не настраивает его на автоматический запуск. Для этого мне нужно добавить его в конфиг, поэтому я так и сделал. Я добавил myservice.service в /etc /avahi /services со следующим содержимым:

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
 <name replace-wildcards="yes">myservice</name>
  <service>
   <type>_mqtt._tcp</type>
   <port>1883</port>
   </service>
</service-group>

Это должно работать при загрузке (согласно всей документации, которую я видел), но не работает. Это также не работает, если я бегу

sudo systemctl status avahi-daemon

Это не дает ошибку. Он просто не публикует мой сервис (несмотря на то, что в журнале говорится, что он прочитал мой файл конфигурации).

Тем не менее, и вот где это становится странным: если я скопирую ssh.service по умолчанию из документации avahi, а затем снова ЗАПУСТУЮ команду выше systemctl, она распознает "изменение" в служебных файлах, перезагрузится, а затем ОБА ssh и myservice опубликовано правильно. Более того, если я затем удаляю ssh.service и снова запускаю systemctl, он распознает, что ssh.service ушел, и удаляет этот сервис, но оставляет myservice полностью работоспособным. Однако, если я перезагружаю устройство, оно перестает работать снова.

Более того, если я покидаю ssh.service и перезагружаюсь, он тоже не работает ...

Я не понимаю, что не так.

0