Now I create a snap ‘my-ping’ to learn how can I lookup the host name from the snap package using avahi. It contains ping, avahi-resolve and avahi-browse to check the functionality.
My snapcfaft.yaml is here:
name: my-ping
version: '0.1'
summary: My ping snap
description: |
ping snap package.
grade: devel
confinement: devmode
parts:
ping:
plugin: nil
stage-packages:
- coreutils
- avahi-daemon
- avahi-utils
stage:
- bin
- lib
- usr
- etc
prime:
- bin
- lib
- usr
- etc
apps:
ping:
command: ping
plugs: [network, network-bind, network-observe, avahi-observe]
avahi-resolve:
command: avahi-resolve
plugs: [network, network-bind, network-observe, avahi-observe]
avahi-browse:
command: avahi-browse
plugs: [network, network-bind, network-observe, avahi-observe]
After install it, I tried
$ my-ping.avahi-resolve -n carbon.local
Failed to create client object: Daemon not running
It’s reasonable, we have to connect my-ping:avahi-observe to avahi:avahi-observe.
$ snap connect my-ping:avahi-observe avahi
$ snap interfaces my-ping
Slot Plug
avahi:avahi-observe my-ping
:network avahi,my-ping,snapweb,tork-ros-roomblock
:network-bind avahi,my-ping,snapweb,tork-ros-roomblock
- my-ping:network-observe
However, I still have a problem, the command never returns.
$ my-ping.avahi-resolve -n carbon.local
(Never come back until Ctrl-C)
The /var/log/syslog saids:
Feb 5 12:38:42 lidarkick avahi.avahi-daemon[7692]: dbus-protocol.c: interface=org.freedesktop.Avahi.Server, path=/, member=GetAPIVersion
Feb 5 12:38:42 lidarkick avahi.avahi-daemon[7692]: dbus-protocol.c: interface=org.freedesktop.Avahi.Server, path=/, member=GetState
Feb 5 12:38:42 lidarkick avahi.avahi-daemon[7692]: dbus-protocol.c: interface=org.freedesktop.Avahi.Server, path=/, member=HostNameResolverNew
Feb 5 12:38:42 lidarkick kernel: [ 4511.723096] audit: type=1107 audit(1517801922.269:746): pid=1113 uid=100 auid=4294967295 ses=4294967295 msg='apparmor="DENIED" operation="dbus_signal" bus="system" path="/Client5/HostNameResolver1" interface="org.freedesktop.Avahi.HostNameResolver" member="Found" mask="send" name=":1.28" pid=7692 label="snap.avahi.avahi-daemon" peer_pid=12085 peer_label="snap.my-ping.avahi-resolve"
Feb 5 12:38:42 lidarkick kernel: [ 4511.723096] exe="/usr/bin/dbus-daemon" sauid=100 hostname=? addr=? terminal=?'
It may complains about Dbus, but I have no idea to solve this. How can I setup my package to resolve the host name using avahi package?
Thanks,