2012/10/28(日)Perl 5.16 では、Net::Twitter の OAuth が効かない?

2017/10/12 05:03 サーバ運営・管理
いつのまにか Twitter 連携(ここにブログを投げると、更新が3分以内に自動ツイートされる)が動作しなくなっていたので、原因究明。

どうも Net::Twitter で、OAuth のエラーが出る模様。
設定は何回確認しても問題なし。各種 Key を再発行して設定してみたりしたが、状況は変わらず。

皆目、訳がわからないので、
Net::Twitter::Lite を導入し、これでやってみたら上手くいきました。

ということで、Net:Twitter は現時点で Perl 5.16 環境では使えない。
以前は、当たり前のように使用できたのに、、、

〔2012/11/03 追記〕
あれから、HDDの一部が逝ったらしく、fsck でかなり大量の復旧をしたところ、Perl モジュールの一部が消えてしまったことが判明し。。。再インストールしたら復旧。orz

どうもHDD上のファイルシステムの一部に問題があったのが原因。
モジュール自体の問題ではなさそう。。orz

2012/10/27(土)FreeBSD ports にて cvsup 利用の場合は、portsnap へ移行必要

2017/10/12 05:03 サーバ運営・管理
元ネタはこちら → 2012年9月12日 FreeBSD Ports Collection,CVS/CVSupは2013年2月で終了 〔技術評論社〕

Ports に cvsup が「そのうち(来年2月末に)使えなくなる」という話です。
FreeBSD 本体のソースツリー管理に cvsup をご利用の諸氏は多いと思いますが、現時点ではこちらの方は提供継続のようです。

慣れ親しんだ管理手法が変わるので面倒くさいのですが、提供する側も面倒くさいことしているそうなので。。orz

portsnap というものを cvsup/csup の代わりに使うのですが、
使い方が日本語で以下で掲載されています:
A.6. Portsnap を使う 《リンク切れ確認 2022/11/07》

しかし、cvsup/csup から、 portsnap へ移行する場合は、最初の1回は移行作業が必要で、以下で日本語にて示されています:
5.5. Ports Collection の利用
(このページの 5.5.2. CVSup/csup から portsnap への移行 を参照)
移行には10分程度かかります。コーヒーブレイクでもしながら待ちましょう。 :-)

あとは、portversion,portupgrade などが今までとおり使うことができます。

2012/08/12(日)samba 3.6.7 は FreeBSD 8.3R でソースコードからそのまま構築できない

2017/10/12 05:01 サーバ運営・管理
今日は、珍しく連投です。

samba は、構築に難儀するサーバアプリケーションのひとつで、個人的にはどうも好きにはなれません。Windows 絡みというものもあるが(爆)

samba 3.6.7 をソースコードから構築しようとすると、以下のような md5 部分のコンパイルエラーで途中で停止します:
../lib/crypto/md5.c:142: error: 'struct MD5Context' has no member named 'bits'
../lib/crypto/md5.c:144: error: 'struct MD5Context' has no member named 'buf'
../lib/crypto/md5.c:144: error: 'struct MD5Context' has no member named 'in'
../lib/crypto/md5.c:145: error: 'struct MD5Context' has no member named 'buf'
../lib/crypto/md5.c:146: error: 'struct MD5Context' has no member named 'buf'
The following command failed:
gcc -O -I. -I/usr/local/src/samba-3.6.7/source3
-I/usr/local/src/samba-3.6.7/source3/../lib/popt
-I/usr/local/src/samba-3.6.7/source3/../lib/iniparser/src
-Iinclude -I./include -I. -I. -I./../lib/replace
-I./../lib/tevent -I./librpc -I./.. -I./../lib/talloc -I../lib/tdb/include
-DHAVE_CONFIG_H -Iinclude -I./include -I. -I. -I./../lib/replace
-I./../lib/tevent -I./librpc -I./.. -I./../lib/popt -I/usr/local/include
-I/usr/local/src/samba-3.6.7/source3/lib -I.. -D_SAMBA_BUILD_=3
-D_SAMBA_BUILD_=3 -fPIC -DPIC -c ../lib/crypto/md5.c -o ../lib/crypto/md5.o
gmake: *** [../lib/crypto/md5.o] エラー 1


これは、FreeBSD8.3R の場合、samba で意図している <md5.h> の構造体の定義が異なっているためで、lib/crypto/md5.h を下記のように一部をコメントアウトする必要があります:
#define MD5_H
#ifndef HEADER_MD5_H
/* Try to avoid clashes with OpenSSL */
#define HEADER_MD5_H
#endif
/* #ifdef HAVE_MD5_H */
/*
* Try to avoid clashes with Solaris MD5 implementation.
* ...where almost all implementations follows:
* "Schneier's Cryptography Classics Library"
*/
/* #include <md5.h> */
/* #else */

struct MD5Context {
uint32_t buf[4];
uint32_t bits[2];
uint8_t in[64];
};
typedef struct MD5Context MD5_CTX;
void MD5Init(struct MD5Context *context);
void MD5Update(struct MD5Context *context, const uint8_t *buf,
size_t len);
void MD5Final(uint8_t digest[16], struct MD5Context *context);


/* #endif !HAVE_MD5_H */

#endif /* !MD5_H */


赤文字部分のようにコメントアウトします。
さらに、lib/crypto/md5.c を以下のように変更します:
#include "replace.h"
#include "md5.h"
変更 → #include "../lib/crypto/md5.h"


これらの変更後、コンパイルすると上手くいくようです。

2012/08/12(日)JETWAY PA74M2-LF では FreeBSD 9.0R は使えない?

2017/10/12 05:00 サーバ運営・管理
以下のマザーボードに見覚えがある方(数少ないと思うが・・・)に要注意な情報。
20120812.jpg

JETWAY 社 PA74M2-LF という サイズが microATX のマザーボード。
こちらで FreeBSD 8.3R-p1 から FreeBSD 9.0R-p4 へアップデートしようとしたが、
FreeBSD 9.0R-p4 は起動しない。

どうやら ACPI まわりの問題です。
現在、実運用しているサーバなので、いろいろ調べることもできず、とりあえず FreeBSD 8.3R に戻しました。設定が一部消えたので難儀しました。
9.1R がリリースされたときに再挑戦しようと思います。

起動オプションにて、ACPI サポートをOFF にするといけそうなのですが、
このマザーボードで FreeBSD 9.0R が使用できたという奇特な方が居られたら、コメントお願いします。

2012/07/06(金)FreeBSD 9.1R を出すらしい&8.1R/8.2R サポート終了間近

2017/10/12 04:59 サーバ運営・管理
9.1R リリース作業は始まったようです。
20120706.png
予定では来月のようですが、いつものように期待しないほうが無難です :-)

また、FreeBSD 8.1Rと8.2Rは今月いっぱいでサポートは終了します。
8.3R が安定バージョンとして推奨されます。
20120706_2.png

更に 7.4R もサポートは終了方向ですので、可能な限り、早めの8.3R への更新が推奨されます。

弊社ではすでにすべてのサーバにて 8.3R への移行を済ませ、一部は 9.0R を導入しています。

〔2012/12/27 追記〕
 FreeBSD 9.0R のサポート終了が、9.1R リリースが遅れた影響で、2013/03/31 に延期されています。

2012/05/10(木)Apache 2.4 + mod_perl を導入してみた

2017/10/12 04:58 サーバ運営・管理
今年2月にリリースされた Apache 2.4。
まだ置き換えるには時期尚早ではありますが、近い未来 2.0系/2.2系から置き換わっていくのは流れとしては自明なので、取り扱いを確立させるために、弊社の実験サーバにて、2.2.22 から、最新バーション 2.4.2 へ置き換えてみました。

20120510_1.png

付属マニュアルの日本語訳は、現状、2.2 系のものが流用されているようです。
上記のような感じです。

20120510_2.png

perl 5.14.2 + mod_perl 2.0.6 + Apache 2.4.2 + PHP 5.4.2 という組み合わせですが、
mod_perl がまだApache 2.4 には対応しておらず、そのままでは、コンパイル自体が通りません。

既に幾つか言及されていますが、2.2系からの変更が地味に多いです。
正直なところ、しばし嵌りましたorz
気づいた点を列挙してみましょう:

○ apr, apr-util, pcre は、ビルドインで提供されなくなった
  apr 、apr-util、 pcre 、これら3つのユーティリティ は、Apache の構築に欠かせないものですが、それ故 2.2 系までは Apache ソースツリーと一緒に配布されていました。
 なぜか 2.4 系では、これらは提供されなくなり、自前で構築するか、拾ってくる必要があります。
 先ず、apr と apr-util を ここからダウンロードで持ってきて、 apache ソースツリーの srclib ディレクトリ配下にソースツリーごと置きます。
 現在(2012/05/10) のバージョンは、 apr-1.4.6 , apr-util-1.4.1。
#英文ですが、 INSTALL ファイルにそう書いてある模様です。
 ソース配置手順はこんな感じ:
# cd httpd-2.4.2/srclib
# cp ../../apr-1.4.6.tar.bz2 ./
# cp ../../apr-util-1.4.1.tar.bz2 ./
# tar xvzf apr-1.4.6.tar.bz2
# tar xvzf apr-util-1.4.1.tar.bz2
# mv apr-1.4.6 apr
# mv apr-util-1.4.1 apr-util


 apr と apr-utilを事前インストールする方法もあるようですが、筆者の環境ではApache本体のコンパイルそのものが上手くいきませんでした。

○ pcre , expat は ports 等で。
  pcre は 8.20 以降、 expat は 2.0 以降が必要です。
  事前にインストールしておくとよいです。

○ Apache 2.2系では、構築デフォルトが「スタティックリンク」
  Apache 2.4系では、構築デフォルトが「DSO」
→ ソースコードからコンパイルする際、2.2系の configure オプションそのままでは、同じように構築されず、結局は httpd.conf の構文エラーとなって不具合を起こす。
  エンタープライズ系には有益な場面も多いのでしょうが、この変更は「何を勘違いしたか?」的な感覚を覚える。
 2.4系では、明示的に「スタティックリンク」を指定することで、凌ぐ。

○ Apache 2.4 系で アクセス制御の文法が変わっている
20120510_3.png

httpd.conf などのサーバ設定ファイル、.htaccess などの挙動変更設定ファイルは全て見直して、変更する必要があります。

 ここまでは、結構記載があります。
 しかし、嵌ったのは SSI の挙動。どこにも記載がない。

 2.2.22 で普通に動作していた、以下のような SSI が認識されません。
<!--#if expr="'$REMOTE_ADDR' = '/^192.168.1.1/'" -->

 このような評価式は、perl と同じ書式にすることで解決しました。
<!--#if expr="'$REMOTE_ADDR' eq '/^192.168.1.1/'" -->


 構築オプションの問題かもしれませんが、原因はわかりません。
 2.2系までは、pcre が内包された形で配布されていたけれども、2.4系では、予め別途インストールするようになったため、数式評価の部分で挙動が変わったということでしょう。

○ 削除ディレクティブなどがある

 LockFile    ← 文法エラー
 SSLMutex    ← 文法エラー
 DefaultType   ← text/plain の指定は、「無視する」と警告が出る。
 NameVirtualHost ← 「次バーションで削除」という警告が出る。
 
当面は、弊社実験サーバでの運用の留めたいと考えています。

2012/04/19(木)FreeBSD 8.3R リリース

2017/10/12 04:57 サーバ運営・管理
今回は電子メールでのアナウンスが来る前に、たまたま気づいたという状況でした。
苦手な英語の意訳をすると、今回は、

・TCP/IP プロトコルスタックにて mod_cc(9) を実装した。
 これは、プラグイン的に利用できる輻輳制御フレームワーク。

・grdid(8) という、BIOS ソフトウェアにて実現するタイプの RAIDコントローラを追加実装した。

・ZFS サブシステムを SPA Version 28 に更新した。
・Gnome を Version 2.32.1 に、 KDE を Version 4.7.4 に更新した。

あと、 usb(4)にて、USB パケットフィルタをサポート。
とあります。

他には、ネットワークカード絡みで幾つかの修正が入っています。

2012/01/13(金)FreeBSD 9.0R リリース

2017/10/12 04:48 サーバ運営・管理
本日の朝、アナウンスされました。
欧米圏では特に不吉とされる「13日の金曜日」なんですが、気にしないのかな :-)
例によって、いつもの機械翻訳+意訳を・・・

- 新しいインストーラーに bsdinstall(8) が加えられており、本リリースの一部として提供されるISOイメージによって使用されるインストーラーです。
- Fast Filesystem は、softupdates ジャーナリングをサポートしました。
- ZFS を Version 28 に更新しました。
- 最新の ATA/SATAドライバは、AHCIをサポートし、最新のCAMフレームワークへ移動しました。
- Highly Available Storage (HAST) フレームワークの導入をしました。
- カーネルは、Capsicum Capability Mode (サンドボックス環境提供を主な特徴とする) をサポートしました。
- ユーザレベルでの D-Trace を導入しました。
- TCP/IPスタックは、プラグ接続できる輻輳制御フレームワークおよび、利用可能な5つの輻輳制御アルゴリズム機構ををサポートしました。
- NFSサブシステムを更新し、NFSv3,NFSv2 に加えて、新たに NFSv4 をサポートしました。
- High Performance SSH (HPN-SSH) を導入しました。
- Flattened device tree (FDT) を埋め込み、FreeBSD コンフィギュレーションが単純になりました。
- powerpcアーキテクチャは、Sony Playstation 3 を サポートしました。
- LLVMコンパイラおよび clang を組入れました。
- Gnome version 2.32.1, KDE version 4.7.3 になりました。

今回は、DVD,CD-ROM,bootonly の ISO イメージに加えて、USBメモリから BOOT可能な機器向けに memstick バイナリイメージも提供されているようです。

また、リリースノートを見る限りでは、em(4) [Intel NIC関係]、re(4) [蟹マーク NIC関係]なども更新されているようです。 re(4) では新たに RTL8168E/8111E-VL/RTL8401E がサポートされています。

FreeBSD9 の運用環境への導入は、弊社では、3月中旬頃になりそうです。

2011/12/30(金)配布元の munin 1.4.6 は、FreeBSD8.x のLANトラフィック監視にはそのまま使えない

2017/10/12 04:46 サーバ運営・管理
システムの大幅な改変に伴い、サーバ監視に使用している munin も 1.2.6 から 1.4.6 に更新しました。
ところが、パッチをいろいろ入れていたのを忘れていて、更新だけしてしまったものだから、嵌ってしまったのです・・・orz しかも、まる2日間。。

具体的には、LAN カードのトラフィック計測が全く駄目。
具体的には以下 ↓


この計測を行うプラグインは、 [MUNINBASE]/lib/plugins ディレクトリの中の if_ というスクリプトです。
どうやら、スクリプト内で netstat コマンドを実行して、送信バイト数、受信バイト数を、sed で切り出している仕組みのようです。

手動で netstat コマンドを実行してみて、スクリプトが意図している内容と、実際の netstat コマンドの出力が異なることが分かりました。
具体的には、
72行目:
  rsum += $7; osum += $10;

→ rsum += $8; osum += $11;

87行目と88行目:
  print "rbytes.value", $7;
  print "obytes.value", $10;

→  print "rbytes.value", $8;
  print "obytes.value", $11;

のように修正すると、機能するようになります。

修正後はこんな感じ ↓

#年末・年始でアクセスが少なく静かです :-)

ここまでやって気づいたのですが、FreeBSD の Ports に munin が収録されているようで、Portsでは、この類のパッチが当てられているのかどうか気になったので確認してみました。、
うーーむ。既に対応されとる。最初からこっち見てれば早かったなorz
こんな感じです:
--- plugins/node.d.freebsd/if_.in.orig  2009-12-30 13:55:55.000000000 +0100
+++ plugins/node.d.freebsd/if_.in 2010-02-24 18:59:15.670282185 +0100
@@ -81,9 +81,12 @@
if (NF == 10) {
print "rbytes.value", $6;
print "obytes.value", $9;
- } else {
+ } else if (NF == 11) {
print "rbytes.value", $7;
print "obytes.value", $10;
+ } else {
+ print "rbytes.value", $8;
+ print "obytes.value", $11;

}'
fi

#表示が崩れるので、中括弧は全角文字にしています。実際は半角文字の中括弧です。

--- plugins/node.d.freebsd/if_errcoll_.in.orig  2009-12-30 13:55:55.000000000 +0100
+++ plugins/node.d.freebsd/if_errcoll_.in 2010-02-24 19:00:26.026407278 +0100
@@ -59,9 +59,13 @@
print "ierrors.value", $5;
print "oerrors.value", $8;
print "collisions.value", $10;
- } else {
+ } else if (NF == 11) {
print "ierrors.value", $6;
print "oerrors.value", $9;
print "collisions.value", $11;
+ } else {
+ print "ierrors.value", $6;
+ print "oerrors.value", $10;
+ print "collisions.value", $12;

}}'

#表示が崩れるので、中括弧は全角文字にしています。実際は半角文字の中括弧です。

他にも、幾つかのプラグインにて FreeBSD用のパッチがあるようです。