Bonjour publishing from Linux

Cedric King cedbobking at yahoo.com
Thu Dec 29 22:26:00 PST 2011


> We have netatalk/avahi file servers based on CentOS 5.7 and 6.1 which work great. The next goal is to have them auto-magically share out printers to Snow Leopard and Lion clients. I've done a great deal of Googling but cannot get it to work. Basically we'd like it to work as if they were shared off a Mac: from the client machine System Preferences > Print & Fax > Add Printer > Default where all the Bonjour printers seem to show up.
>
> Since CentOS still runs cups-1.3.x, I have used rpmbuild to create cups-1.4.8 and cups-1.5.0 x86_64 rpms from the sources from cups.org/software.php that seem to install and work just fine for printing from the local system. However when I go to administer them I cannot get dnssd to show as an share printers protocol in http://localhost:631/admin despite what I put in cupsd.conf. I also do not see dnssd in /usr/lib/cups/backend/
>
> Does CUPS work with Avahi? Is there another Bonjour server that we could install in CentOS that would work?
>
> If someone could point me in a useful direction, I would greatly appreciate it.
>
> Thanks,
>
> Cedric
>

Okay, I used avahi-discover to copy the info from a shared printer on a Snow Leopard system to create my avahi service file. Another OS X system picked it up from Avahi just fine, but failed to print until I changed the path in the CUPS from ipp://path/to/printer:631 to http://path/to/printer:631. Then it works great, but not quite automagic.

Again I go back to CUPS Admin on the Mac printer share and see that there is a checked option for "DNS-SD" that I can't get on the Linux system.

I start digging through the sources and find reference to dns_sd libraries and find a package in YUM called avahi-compat-libdns_sd-devel and install it. But it still compiles without the DNS-SD option.

So I think that my fundamental problem is that CUPS is building without dns-sd on my CentOS 5.7 x86_64 system for some reason. Can anyone provide advice on how to get that feature included in the rpm from rpmbuild?

Thanks,

Cedric

Pertinent details below.

[root at cupsdev ~]# grep -A 31 able_dnssd /usr/src/redhat/BUILD/cups-1.5.0/config-scripts/cups-dnssd.m4
if test x$enable_dnssd != xno; then
        AC_CHECK_HEADER(dns_sd.h, [
                case "$uname" in
                        Darwin*)
                                # Darwin and MacOS X...
                                AC_DEFINE(HAVE_DNSSD)
                                AC_DEFINE(HAVE_COREFOUNDATION)
                                AC_DEFINE(HAVE_SYSTEMCONFIGURATION)
                                DNSSDLIBS="-framework CoreFoundation -framework SystemConfiguration"
                                DNSSD_BACKEND="dnssd"
                                ;;
                        *)
                                # All others...
                                AC_MSG_CHECKING(for current version of dns_sd library)
                                SAVELIBS="$LIBS"
                                LIBS="$LIBS -ldns_sd"
                                AC_TRY_COMPILE([#include <dns_sd.h>],
                                        [int constant = kDNSServiceFlagsShareConnection;
                                        unsigned char txtRecord[100];
                                        uint8_t valueLen;
                                        TXTRecordGetValuePtr(sizeof(txtRecord),
                                            txtRecord, "value", &valueLen);],
                                        AC_MSG_RESULT(yes)
                                        AC_DEFINE(HAVE_DNSSD)
                                        DNSSDLIBS="-ldns_sd"
                                        DNSSD_BACKEND="dnssd",
                                        AC_MSG_RESULT(no))
                                LIBS="$SAVELIBS"
                                ;;
                esac
        ])
fi
[root at cupsdev ~]# rpm -q --fileprovide avahi-compat-libdns_sd-devel.x86_64
/usr/include/avahi-compat-libdns_sd
/usr/include/avahi-compat-libdns_sd/dns_sd.h
/usr/include/dns_sd.h
/usr/lib64/libdns_sd.so
/usr/lib64/pkgconfig/avahi-compat-libdns_sd.pc
/usr/lib64/pkgconfig/libdns_sd.pc
[root at cupsdev ~]#






More information about the cups mailing list