syslog-ng & MacOS X
MacOS X still ships with good ol' syslogd which may suffice for most of us but I still prefer syslog-ng. Luckily MacPorts ships syslog-ng - unfortunately compilation fails with:
ranlib: file: libsyslog-ng.a(afsql.o) has no symbols ranlib libsyslog-ng.a ranlib: file: libsyslog-ng.a(afsql.o) has no symbols if /usr/bin/gcc-4.0 -DHAVE_CONFIG_H -I. -I. -I.. \ -I/opt/local/include \ -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include \ -I/opt/local/include -I/opt/local/include/eventlog \ -DHAVE_SOCKADDR_SA_LEN -DLIBNET_BSDISH_OS \ -DLIBNET_BSD_BYTE_SWAP -D_GNU_SOURCE \ -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 \ -O2 -Wall -MT main.o -MD -MP -MF ".deps/main.Tpo" \ -c -o main.o main.c; \ then mv -f ".deps/main.Tpo" ".deps/main.Po"; \ else rm -f ".deps/main.Tpo"; exit 1; fi /usr/bin/gcc-4.0 -O2 -Wall -L/opt/local/lib -o syslog-ng \ main.o libsyslog-ng.a -lresolv -lfl -L/opt/local/lib \ -lglib-2.0 -lintl -liconv -L/opt/local/lib -levtlog -lnet \ -lwrap Undefined symbols: "_configuration", referenced from: _configuration$non_lazy_ptr in libsyslog-ng.a(cfg.o) _configuration$non_lazy_ptr in libsyslog-ng.a(cfg-grammar.o) ld: symbol(s) not found collect2: ld returned 1 exit statusThe compilation will succeed when we specify globals.o explicitly on the command line, but I wanted to take this opportunity to try a newer version of
syslog-ng
, the MacPorts way:
$ mkdir -p ~/.ports/sysutils/syslog-ng $ cd ~/.ports $ cp $macports/release/ports/sysutils/syslog-ng/Portfile sysutils/syslog-ng/ $ egrep '^version|master_sites|checksums' sysutils/syslog-ng/Portfile version 3.0.4 master_sites http://www.balabit.com/downloads/files/syslog-ng/sources/3.0.4/source/ checksums md5 86c39779261545d2289e9c309e262b8d $ portindex $ port clean --all syslog-ng $ port install syslog-ngWell, even the latest version will fail, so we fix it ourselves:
$ cd sysutils/syslog-ng/work/syslog-ng-3.0.4/src/ $ gcc -O2 -Wall -L/opt/local/lib -o syslog-ng globals.o main.o \ libsyslog-ng.a -lfl -L/opt/local/lib -lglib-2.0 -lintl -liconv \ -L/opt/local/lib -levtlog -L/opt/local/lib -lssl -lcrypto \ -lz -lz -lnet -lwrap -lresolv $ cd - $ port install syslog-ngThe MacPorts install provides a hint how to (disable Apple's syslogd and) enable syslog-ng:
$ launchctl unload -w /System/Library/LaunchDaemons/com.apple.syslogd.plist $ launchctl load -w /Library/LaunchDaemons/org.macports.syslog-ng.plistHowever, when doing this,
syslog-ng
is started over and over again, as if launchd
doesn't recognize it as "already running" and respawns it all the time. No good :(