Ошибка в работе mrtg
На сервере под управлением FreeBSD 8.1-RELEASE архитектуры amd64 через cron осуществляется сбор сетевой статистики и обработка ее с помощью mrtg (версия mrtg-2.17.1,1). После недавнего обновления языка perl (с версии 5.12.x до версии 5.14.x) при вызове mrtg (такая задача у меня запускается каждые пять минут) на почту стали приходить ошибки. |
Само обновление произвел в точности, как написано в /usr/ports/UPDATING за 17 мая 2011 года (20110517). Для использующих portupgrade необходимо было выполнить следующее:
# pkgdb -Ff # env DISABLE_CONFLICTS=1 portupgrade -o lang/perl5.14 -f perl-5.12.\* # portupgrade -fr perl
Однако, “гладко было на бумаге”… Вызов mrtg для сбора сетевой статистики осуществляется у меня так:
# crontab -l | grep mrtg */5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg --logging /var/log/mrtg/mrtg.log
А приходящая на почту ошибка выглядела так:
Can't locate MRTG_lib.pm in@
INC (@
INC contains: /usr/local/bin/../lib/mrtg2 /usr/local/bin /usr/local/lib/perl5/5.14.0/BSDPAN /usr/local/lib/perl5/site_perl/5.14.0/mach /usr/local/lib/perl5/site_perl/5.14.0 /usr/local/lib/perl5/5.14.0/mach /usr/local/lib/perl5/5.14.0 .) at /usr/local/bin/mrtg line 89. BEGIN failed--compilation aborted at /usr/local/bin/mrtg line 89.
Как оказалось файл MRTG_lib.pm был в системе только в единственном экземпляре (база locate мной была обновлена) и находился по пути:
# locate MRTG_lib.pm /usr/local/lib/perl5/site_perl/5.12.1/MRTG_lib.pm
По пути /usr/local/lib/perl5/site_perl/5.14.0 такого файла не было. Для устранения этой ошибки мной были заново переустановлены вручную два модуля perl: p5-Net-SNMP и p5-SNMP_Session. В портах они находятся по пути:
# whereis p5-Net-SNMP p5-Net-SNMP: /usr/ports/net-mgmt/p5-Net-SNMP # whereis p5-SNMP_Session p5-SNMP_Session: /usr/ports/net-mgmt/p5-SNMP_Session
Теперь осталось только переустановить mrtg:
# cd /usr/ports/net-mgmt/mrtg # make reinstall clean
После этих действий файл MRTG_lib.pm уже был в системе в двух экземплярах:
# locate MRTG_lib.pm /usr/local/lib/perl5/site_perl/5.12.1/MRTG_lib.pm /usr/local/lib/perl5/site_perl/5.14.0/MRTG_lib.pm
После всех этих манипуляций ошибки пропали.
________________
Изначально решение было найдено мной тут.