DragonFly BSD に logrotate をインストールする話

タイトル通り.

依存パッケージのコンパイルとインストール

popt

Source tarball is here. ダウンロードして展開したら以下でインストール :

# ./automake.sh && make && make install

不足している依存パッケージは automake の最中に表示されるので、必要に応じて pkg からインストールすれば問題なし

logrotate のコンパイルとインストール

Source tarball is here.

Step1. tarball を展開

Step2. config.c と logrotate.c を編集

config.c と logrotate.c には alloca.h が include されていますが,Dragonfly BSD ( とたぶんFreeBSD ) では stdlib.h に定義されています。

$ man alloca
ALLOCA(3) DragonFly Library Functions Manual ALLOCA(3)

NAME
 alloca -- memory allocator

LIBRARY
 Standard C Library (libc, -lc)

SYNOPSIS
 #include <stdlib.h>
 void *
   alloca(size_t size);

手っ取り早く上記ファイルの #include <alloca.h> をコメントアウトして対応します :

% head config.c
#include "queue.h"
/* Alloca is defined in stdlib.h in NetBSD */
#ifndef __NetBSD__
/* #include <alloca.h> */ <- こんなふうに
#endif

% head logrotate.c
#include "queue.h"
/* alloca() is defined in stdlib.h in NetBSD */
#ifndef __NetBSD__
/* #include <alloca.h> */ <- こんなふうに
#endif

Step.3 configure && make

# CFLAGS="-I/usr/local/include -L/usr/local/lib" ./configure
# make && make install

Step.4 Configration

我流です

!! Cronによる定期実行の設定
! tarballのexamplesフォルダにあるサンプルファイルを使用
# mkdir -p /usr/local/lib/logrotate
# cp examples/logrotate.cron /usr/local/lib/logrotate/logrotate.cron
# chmod 755 /usr/local/lib/logrotate/logrotate.cron
# ln -s /usr/local/lib/logrotate/logrotate.cron /etc/periodic/daily/510-logrotate 
# ln -s /usr/local/lib/logrotate/logrotate.cron /etc/periodic/weekly/510-logrotate 
# ln -s /usr/local/lib/logrotate/logrotate.cron /etc/periodic/monthly/510-logrotate

# vi /usr/local/lib/logrotate/logrotate.cron
## /usr/sbin/logrotate -> /usr/local/sbin/logrotate にreplace 

!! 初期設定の投入
# cp examples/logrotate-default /etc/logrotate.conf

!! /var/lib/logrotate.status のための dirty hack
# mkdir -p /var/lib