Archiv für den Monat: Dezember 2013

FreeBSD: collectd5 5.4.0_2 – cc1: warnings being treated as errors

Make Optionen:

┌─────────────── collectd5-5.4.0_2
│ ┌─────────────
│ │+[x] CGI Install collection.cgi (requires rrdtool)
│ │+[ ] DEBUG Enable debugging
│ │+[x] GCRYPT Build with libgcrypt
│ │+[x] VIRT Enable libvirt plugin (requires XML)
│ │───────────── INPUT ───────────
│ │+[x] CURL Enable curl-based plugins (apache, nginx, etc)
│ │+[ ] DBI Enable dbi plugin
│ │+[ ] JSON Enable JSON plugins
│ │+[ ] MEMCACHEC Enable memcachec plugin
│ │+[ ] MODBUS Enable modbus plugin
│ │+[x] MYSQL Enable mysql-based plugins
│ │+[ ] NUTUPS Enable nut (ups) plugin
│ │+[ ] PGSQL Enable postgresql-based plugins
│ │+[x] PING Enable ping plugin
│ │+[x] PYTHON Enable python-based plugins
│ │+[ ] RABBITMQ Enable rabbitmq-based plugins
│ │+[ ] REDIS Enable redis-based plugins
│ │+[x] ROUTEROS Enable routeros plugin
│ │+[x] SNMP Enable SNMP plugin
│ │+[x] STATGRAB Enable statgrab-based plugins (disk, interface, etc)
│ │+[ ] TOKYOTYRANT Enable tokyotyrant plugin
│ │+[x] XML Enable XML plugins
│ │+[ ] XMMS Enable xmms plugin
│ │───────────── OUTPUT ──────────
│ │+[x] RRDTOOL Enable rrdtool plugin (also rrdcached plugin)
│ │+[x] NOTIFYEMAIL Enable notifications via email
│ │+[ ] NOTIFYDESKTOP Enable desktop notifications
│ └───────────────────────────────
└─────────────────────────────────

Fehler:

$
cc1: warnings being treated as errors
dns.c: In function 'dns_run_pcap_loop':
dns.c:231: warning: return makes integer from pointer without a cast
gmake[3]: *** [dns.lo] Error 1
gmake[3]: *** Waiting for unfinished jobs....
mv -f .deps/disk_la-disk.Tpo .deps/disk_la-disk.Plo
gmake[3]: Leaving directory `/usr/ports/net-mgmt/collectd5/work/collectd-5.4.0/src'
gmake[2]: *** [all-recursive] Error 1
gmake[2]: Leaving directory `/usr/ports/net-mgmt/collectd5/work/collectd-5.4.0/src'
gmake[1]: *** [all] Error 2
gmake[1]: Leaving directory `/usr/ports/net-mgmt/collectd5/work/collectd-5.4.0/src'
gmake: *** [all-recursive] Error 1
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** [do-build] Error code 1

Stop in /usr/ports/net-mgmt/collectd5.
*** [build] Error code 1

Stop in /usr/ports/net-mgmt/collectd5.
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20131219-16933-1trrlvj env UPGRADE_TOOL=portupgrade UPGRADE_PORT=collectd5-5.4.0_1 UPGRADE_PORT_VER=5.4.0_1 make
** Fix the problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
	! net-mgmt/collectd5 (collectd5-5.4.0_1)	(unknown build error)
< ---- END ---- >
$

Fehler Ignorieren:

$
make -i
$

Durch „disable treating warnings as error“ sollte nur noch ein ignored Hinweis folgen und das Package bis zum bitteren Ende gebaut werden:

$
cc1: warnings being treated as errors
dns.c: In function 'dns_run_pcap_loop':
dns.c:231: warning: return makes integer from pointer without a cast
gmake[3]: [dns.lo] Error 1 (ignored)
mv -f .deps/dns.Tpo .deps/dns.Plo
$

und

$
libtool: link: cannot find the library `dns.la' or unhandled argument `dns.la'
gmake[3]: [collectd] Error 1 (ignored)
$

Installation schlägt fehl:

$
Creating bzip'd tar ball in '/usr/ports/net-mgmt/collectd5/work/collectd5-5.4.0_2.tbz'
tar: sbin/collectd: Cannot stat: No such file or directory
tar: lib/collectd/dns.a: Cannot stat: No such file or directory
tar: lib/collectd/dns.so: Cannot stat: No such file or directory
tar: lib/collectd/dns.la: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors.
pkg_create: make_dist: tar command failed with code 256
*** [do-package] Error code 1 (ignored)
===>  Installing for collectd5-5.4.0_2
===>  Checking if net-mgmt/collectd5 already installed
pkg_add: can't stat package file '/usr/ports/net-mgmt/collectd5/work/collectd5-5.4.0_2.tbz'
*** [install-package] Error code 1 (ignored)
$

schmutzige Lösung:

In der Makefile -> das DNS Modul entfernen und vorübergehend mit 3 dummy Dateien verlinken

$
vi /usr/ports/net-mgmt/collectd5/Makefile
$
$
          --enable-dns \
$

JETZT: per make bauen lassen, make install fehlerhaft installieren lassen, dann die dummy Dateien einfügen:

$
touch /usr/ports/net-mgmt/collectd5/work/stage/usr/local/lib/collectd/dns.a
touch /usr/ports/net-mgmt/collectd5/work/stage/usr/local/lib/collectd/dns.so
touch /usr/ports/net-mgmt/collectd5/work/stage/usr/local/lib/collectd/dns.la
$

ERNEUT: make install ausführen!

Nach „erfolgreicher“ Package-Installation müssen die 3 Dummy Dateien wieder aus dem System entfernt werden, sonst crashed collectd5 nach einer Weile:

$
rm /usr/local/lib/collectd/dns.a
rm /usr/local/lib/collectd/dns.so
rm /usr/local/lib/collectd/dns.la
$

Dienst starten:

$
service collectd start
$

Hinweis: collectd5 scheint allgemein ein recht wackeliger Kandidat zu sein, insbesondere wenn der Daemon -> Informationen von diversen remote Linux/FreeBSD Maschinen mit collectd Version 4 und 5 erhält.

Ein Crontab Script zur regelmäßigen Überprüfung, ob ein coredump File erstellt wurde (/var/db/collectd), kann nicht schaden …

Wer auf das DNS Sniffing Modul angewiesen ist, sollte lieber bei collectd Version 4 bleiben