2014年7月28日月曜日

ふたたびFreeBSD 9.2でlang/ruby19のportupgradeに失敗する

FreeBSD 9.2でlang/ruby19(ruby-1.9.3.484_2,1→ruby-1.9.3.547,1)のportupgradeをすると以下のようなエラーで失敗しました。
pkg-static: Plist error, directory listed as a file: /usr/local/share/ri/1.9/system/fatal
前回と同様に検索エンジンで調べてみると同じページしか近いものはなさそうです
Ruby19 install/upgrade problem
https://forums.freebsd.org/viewtopic.php?f=5&t=46078
 が見つかります。回答:
I ran into this too, tracked down the cause, and submitted a PR with a patch to fix the problem: http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/190066.
で参照されているパッチはそのままで適用できません。内容を少し見てみると、同様なパッチを作成すればよさそうです。
$ diff -u Makefile.ORG  Makefile
--- Makefile.ORG    2014-07-28 14:09:31.281245689 +0900
+++ Makefile    2014-07-28 14:12:23.899333635 +0900
@@ -229,10 +229,12 @@
 #
 # Add generated RI files to pkg-plist
 #
-    @${FIND} -ds ${RUBY_RIDIR}/ ! -type d ! -name created.rid | \
+    @${FIND} -ds ${STAGEDIR}${RUBY_RIDIR}/ ! -type d | \
         ${SED} 's,^${STAGEDIR}${PREFIX}/,,' >> ${TMPPLIST}
-    @${FIND} -ds ${RUBY_RIDIR}/ -type d -mindepth 1 | \
+    @${FIND} -ds ${STAGEDIR}${RUBY_RIDIR}/ -type d -mindepth 1 | \
         ${SED} -E -e 's,^${STAGEDIR}${PREFIX}/,@dirrm ,' >> ${TMPPLIST}
+    @${FIND} -ds ${STAGEDIR}${RUBY_SITERIDIR}/ ! -type d | \
+                ${SED} 's,^${STAGEDIR}${PREFIX}/,,' >> ${TMPPLIST}


$
これを適用してみるとportupgradeができるようになりました。

Registering installation for pkg-1.3.1 Child process pid=xxxx terminated abnormally: Segmentation fault: 11

ports-mgmt/pkgを1.2.7_4から1.3.1にアップデートしようとすると以下のようなエラーになりました。
Deinstallation has been requested for the following 1 packages:

    pkg-1.2.7_4

The deinstallation will free 7 MB
[1/1] Deleting pkg-1.2.7_4... done
[Reading data from pkg(8) ... Child process pid=79756 terminated abnormally: Segmentation fault: 11
- 0 packages found - done]
--->  Installing the new version via the port
===>  Installing for pkg-1.3.1
===>   Registering installation for pkg-1.3.1
Child process pid=79837 terminated abnormally: Segmentation fault: 11
*** [fake-pkg] Error code 245
検索エンジンで調べてみると以下のようなWWWページを見つけました。
PKG 3.1.0 update - Segmentation fault: 11
http://www.mail-archive.com/freebsd-ports@freebsd.org/msg59950.html
スレッドを辿っていくと次のような解決策が示されていました。
PKG 3.1.0 update - Segmentation fault: 11
http://www.mail-archive.com/freebsd-ports@freebsd.org/msg59953.html

This is a known one I'm very sorry about but tricky to fix, to solve it, open your /usr/local/etc/pkg.conf you might have a duplicated entrey in alias (probable leaf), remove the second one, that will solve your problem.
/usr/local/etc/pkg.confを見てみると、ALIAS項のleaf行が重複しています。
ALIAS              : {
  all-depends: query %dn-%dv,
  annotations: info -A,
  build-depends: info -qd,
  download: fetch,
  iinfo: info -i -g -x,
  isearch: search -i -g -x,

  leaf: query -e "%a == 0" "%n-%v",
  leaf: query -e "%a == 0" "%n-%v",
  list: info -ql,
  origin: info -qo,
  provided-depends: info -qb,
  raw: info -R,
  required-depends: info -qr,
  shared-depends: info -qB,
  show: info -f -k,
  size: info -sq,
  }
これを1つにしてふたたびportupgrade ports-mgmt/pkgとするとインストールに成功しました。

pkg updatingを確認すると同様な記述がありました。
20140727:
  AFFECTS: users of ports-mgmt/pkg
  AUTHOR: mva@FreeBSD.org

  Before updating ports-mgmt/pkg, please make sure that there are no doubled
  entries in ${LOCALBASE}/etc/pkg.conf (/usr/local/etc/pkg.conf by default).
  Especially a doubled "leaf: " entry in the ALIAS settings of the default
  configuration may cause pkg to break during the update.

2014年7月19日土曜日

Flets網へ接続するためのNEC IX2025ルータの設定

http://www.flets/やhttp://flets-v6.jp/などのNTT東日本のサービス情報サイトに透過的に接続できるようにIX2025の設定をしてみました。

1. DNS

自前でDNSサーバーを設定しているので、www.fletsの問い合わせをフレッツ網へ送り出すようにする必要があります。
これには
内部DNSサーバがある環境でのDNSルーティングの適用
http://www.kkdlabs.jp/dns/dns-routing/
を参考して以下のよう設定をnamed.confに追加しました。
view "internal" IN {
        match-clients {
                internal;
                localhost;
        };
        zone "localhost" IN {
                type master;
                file "internal/localhost";
        };
        # localhostやprivateの逆索きを適切に
        zone "example.jp" IN {
                type master;
                file "internal/example.jp";
        };
        zone "0.168.192.in-addr.arpa" IN {
                type master;
                file "internal/0.168.192.in-addr.arpa";
        };
        zone "flets" IN {
                type forward;
                forward only;
                forwarders {
                        192.168.0.254;
                };
        };
};
192.168.0.254がインターフェイス接続用ルーターのアドレスです。これは各サイトに設定に読み替えてください。

2. サービス情報サイトのルーティングアドレスの確認

以下のサイトにどのようなIPアドレスを利用しているかの記述があります。
ルーティングアドレス
https://flets.com/square/routing.html
アドレス サブネットマスク 備考
220.210.194.0 255.255.255.128 サービス情報サイト
123.107.190.0 255.255.255.0 サービス情報サイト
速度測定サイト
220.210.198.0 255.255.255.192 ひかり電話対応機器ファームアップ用
これらの経路情報をIX2025に設定します。

3. IX2025への設定

まず、
フレッツ サービス情報サイト(IPv4)(NTT東日本)向け 設定ガイド
http://jpn.nec.com/univerge/ix/Support/flets/flets_square_e.html
にあるようにIPv4の経路制御の設定をします。このページにある設定を再掲します。
ip route default GigaEthernet0.1
ip route 220.210.194.0/25 GigaEthernet0.2
ip route 220.210.198.0/26 GigaEthernet0.2
ip route 123.107.190.160/28 GigaEthernet0.2

proxy-dns ip enable
proxy-dns ip query-interval 1
proxy-dns interface GigaEthernet0.1 priority 200

ppp profile internet
  authentication myname [プロバイダ接続用ユーザID]
  authentication password [プロバイダ接続用ユーザID] [パスワード]

ppp profile square
  authentication myname guest@flets
  authentication password guest@flets guest

interface GigaEthernet1.0
  ip address 192.168.1.254/24
  no shutdown

interface GigaEthernet0.1
  encapsulation pppoe
  ppp binding internet
  ip address ipcp
  ip napt enable
  no shutdown

interface GigaEthernet0.2
  encapsulation pppoe
  ppp binding square
  ip address ipcp
  ip napt enable
  no shutdown
これでwww.fletsへアクセスすることができます。
次に以下のページにあるようなIPv6での接続を設定します。
サービス情報サイト(IPv6)、フレッツ・ドットネット(NTT東日本) 向け設定ガイド
http://jpn.nec.com/univerge/ix/Support/flets/flets_dotnet_e.html
設定を再掲します。
ip route default GigaEthernet0.1
ip ufs-cache enable

proxy-dns ip enable

ppp profile internet
authentication myname [プロバイダ接続用ユーザID]
authentication password [プロバイダ接続用ユーザID] [パスワード]

interface GigaEthernet1.0
ip address 192.168.1.254/24
no shutdown

interface GigaEthernet0.1
encapsulation pppoe
ppp binding internet
ip address ipcp
ip tcp adjust-mss auto
ip napt enable
no shutdown
これで
フレッツ光メンバーズクラブ
でのフレッツ回線利用確認も動作するようになりました。

2014年7月15日火曜日

NEC UNIVERGE IX2025ルータのsyslog出力をFreeBSDで記録する

NEC UNIVERGE IX2025ルータのsyslog出力をFreeBSDで記録するために、以下のように設定した。

IX2025

syslog ip host XXX.YYY.0.201
logging buffered 131072
logging subsystem all warn
logging timestamp datetime
FreeBSD 9.2が動作するホスト XXX.YYY.0.201にsyslogを出力するようにした。

FreeBSD 9.2


 /etc/rc.conf

syslogd_flags="-a XXX.YYY.0.0/16"
外部からsyslogを受け入れるように設定する。ここではXXX.YYY.0.0/16というネットワークのすべてのホストを許可している。デフォルトは-sオプションが指定されていて、外部からのsyslogは受け付けない。

 

 /etc/syslogd.conf

#+router
local0.*                    /var/log/ix2025.log
#*
デフォルトでのfacilityはlocal0、またホスト名はこのネットワークではrouterとなっている。
そのため#+routerでIX2025からのsyslogをフィルタし、さらにlocal0.*のメッセージについて/var/log/ix2025.logに書き込んでいる。

デバッグ

# tcpdump -i bge0 -n udp and dst XXX.YYY.0.201 and dst port 514
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bge0, link-type EN10MB (Ethernet), capture size 65535 bytes

14:20:03.264340 IP XXX.YYY.0.1.514 > XXX.YYY.0.201.514: SYSLOG local0.warning, length: 147
14:20:19.772962 IP XXX.YYY.0.1.514 > XXX.YYY.0.201.514: SYSLOG local0.warning, length: 52
tcpdumpコマンドを使いsyslogのポート514へ送られてくるメッセージを表示することで、IX2025の設定を確認できる。

newsyslog.conf

/var/log/ix2025.log            600  5     *    $W6D0 JC
週に1階、土曜日の0時にファイルを入れ替えるようにした。

上記の設定は以下のWWWページを参考にした。

syslogによるログの一元管理
http://www.atmarkit.co.jp/ait/articles/0402/25/news086.html

2014年7月14日月曜日

MacOS X 10.9でUSB-Serial変換アダプタ ATEN UC-232Aを使う

いくつかのL3スイッチやルータなどを設定する時に、シリアルコンソールを使う必要がある場合があります。Mac miniやMacBookから設定するときには、USB-Serial変換アダプタが必要です。
I-O DATA USB-RSAQ5であればメーカーがドライバを提供しているため、簡単に利用できます。
手元にあったATEN UC-232Aはそのままでは動作しません。検索エンジンで探してみると以下のページに使用方法が記載されていました。

Using Aten UC-232A USB to Serial converter on Mac OS X Mavericks
( http://blog.unfed.org/2013/10/using-aten-uc-232a-usb-to-serial.html )

上記のブログなくなってしまうと困るので概要を再掲させていただきます。

ドライバをダウンロード

http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41

プロダクトIDなどを確認する

「アプリケーション/ユーティリティ/システム情報」を起動し、USBデバイスを開くと以下のように確認できます。
USB-Serial Controller D:
製品 ID:    0x2008
製造元 ID:    0x0557  (ATEN International Co. Ltd.)
バージョン:     3.00
速度:    最高 12 Mb/秒
製造元:    Prolific Technology Inc.
場所 ID:    0xfd123300 / 9
利用可能な電流(mA):    500
必要な電流(mA):    100
利用したアダプタでは以下のIDでした。
Product ID: 0x2008(10進表記: 8200)
Vendor ID: 0x0557(10進表記: 1367)

ドライバの設定ファイルを変更する

sudo vi /System/Library/Extensions/ProlificUsbSerial.kext/Contents/Info.plist
<key>IOKitPersonalities</key>の最後に以下を追加 
<key>0557_2008</key>
    <dict>
        <key>CFBundleIdentifier</key>

        <string>com.prolific.driver.PL2303</string>
        <key>IOClass</key>
        <string>com_prolific_driver_PL2303</string>
        <key>IOProviderClass</key>
        <string>IOUSBInterface</string>
        <key>bConfigurationValue</key>
        <integer>1</integer>
        <key>bInterfaceNumber</key>
        <integer>0</integer>
        <key>idProduct</key>

        <integer>8200</integer>

        <key>idVendor</key>

        <integer>1367</integer>

    </dict>
最初に<key>にVendor IDとProduct IDのペアを、<dict>中でidProductとidVendorに、Product IDとVendor IDを10進で表記したものを記述するという形式のようです。

試す
sudo kextload /System/Library/Extensions/ProlificUsbSerial.kext

自動で読み込むようにする

sudo touch /System/Library/Extensions
 

2014年7月2日水曜日

FreeBSD 9.1でx11/xdmのportupgradeに失敗する

FreeBSD 9.1でx11/xdmのportupgradeがうまくできません。
以下のようなエラーメッセージがでます。

pkg-static: lstat(/usr/ports/x11/xdm/work/stage/var/lib/):No such file or directory
検索エンジンで探してみると次のようなWWWページが見つかります。
x11/xdm doesn't install because of missing files
(https://forums.freebsd.org/viewtopic.php?t=44575&p=248178)
返事を見てみると、
Adding
NO_STAGE:= yes
to the Makefile...
とあります。確かに/usr/ports/x11/xdmのMakefileの先頭付近に
NO_STAGE=yes
と入れたところ、うまくportupgradeができました。