Logical Rabbit.

さくらのVPS

cpanで Net::SSLeayをインストールしたのですが。

「openssl-develが無いよ」という事象に起因するエラー内容が

SSLeay.c:13975: error: expected ‘{’ at end of input
make: *** [SSLeay.o] Error 1

なのってなにか納得がいかないですね…。一体中で何が起こっているんだろうか…。

ヘッダファイルで定義されるプリプロセッサが仕事しなくてみょんなマクロが組みあがってしまっている、とか?

ともあれ yum install openssl-devel すれば解決はするわけですが。

エラーメッセージでググって出てきたのは stackoverflow のページ でした。

mattr_accessor が欲しいときは。

active_support/core_ext/module/attribute_accessors.rb をrequire。ちぃ覚えた。

Moduleを拡張しているのでrequireすればクラスに導入されますね。効果としてはクラスとインスタンス、両方のアクセサとして共通に使えるアクセサが定義できるようです。

ActiveRecord::Base.loggerを流用しようとして存在に気づいた。

gem 'activerecord' した環境で試してみると、以下のような感じ。

$ bundle exec ruby -e '
require "active_support/core_ext/module/attribute_accessors"
require "logger"

class TestClassA
  mattr_accessor :logger
end

TestClassA.logger = Logger.new( STDERR )

TestClassA.logger.info( "Message from class method." )
TestClassA.new.logger.info( "Message from instance method." )

puts "Class method logger; #{TestClassA.logger}"
puts "Instance method logger; #{TestClassA.new.logger}"
'
I, [2015-05-15T12:04:17.514556 #30503]  INFO -- : Message from class method.
I, [2015-05-15T12:04:17.514671 #30503]  INFO -- : Message from instance method.
Class method logger; #<Logger:0x007f12f269f198>
Instance method logger; #<Logger:0x007f12f269f198>

確かにクラスメソッドでアクセスしてもインスタンスメソッドでアクセスしても、同じオブジェクトが入ってる。

参考: https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb

cpanでreadlineを使いたい場合

cpanプロンプトでうっかりカーソルキーを押してしまってコントロールコードが入るのが鬱陶しい…というかそのせいで妙な誤動作をしてしまうのが怖いので、readlineに対応できないのかとグーグルさんに伺った所以下の記事が見つかりました。

ReadLine で CPAN を便利に – はちゅにっき

Term::ReadLine::Gnu をインストールすれば幸せになれるようです。

インストール要件

  • ncurses, ncurses-devel, readline, readline-devel

(Term::ReadLine::Gnuをインストールする時点でncurses、readlineは導入済みだったため、必須か否かは未確認です。が、develを入れるなら実行モジュールも入れてしまえばいいと思う)

インストール時のエラーによると、ncursesのほか libtermcap.a でも良いようです。ncurses-develはrubyコンパイル時にも使用するので、こちらを選択しました。

cpan>プロンプトはreadline対応しますが、インストール時の依存性解決で

Shall I follow them and prepend them to the queue of modules we are processing right now? [yes]

と聞いてくるあたりはやっぱりダメみたい。割とここで余計なキー入力してしまうのですが…。

インストールログ

$ sudo yum install ncurses ncurses-devel
$ sudo yum install readline readline-devel
# cpan

cpan[1]> install Term::ReadLine::Gnu
 (省略)
CPAN: File::Temp loaded ok (v0.22)
 (省略)
  CPAN.pm: Going to build H/HA/HAYASHI/Term-ReadLine-Gnu-1.26.tar.gz
 (省略)
Checking if your kit is complete...
Looks good
 (省略)
  HAYASHI/Term-ReadLine-Gnu-1.26.tar.gz
  /usr/bin/make -- OK
Running make test
 (省略)
Result: PASS
  HAYASHI/Term-ReadLine-Gnu-1.26.tar.gz
  /usr/bin/make test -- OK
 (省略)
Running make install
 (省略)
  HAYASHI/Term-ReadLine-Gnu-1.26.tar.gz
  /usr/bin/make install  -- OK
 (省略)
CPAN: Term::ReadLine::Gnu loaded ok (v1.26)
.....................
21 subroutines in Term::ReadLine redefined

pfsenseをgatewayとした多段ssh。

ざっくり言うと、pfsenseのSSHログインを有効化+ProxyCommand+nc、といった具合。

[localhost(on the Internet)] -->[pfsense server] -->[target server(on the private network)]

参考にしたサイト

やりかた

pfsenseの設定

  1. pfsenseの管理画面にログイン、System >Advanced >Admin Access >Secure Shellに移動
  2. [Enable Secure Shell]をOnに
  3. 安全のため[Disable password login for Secure Shell (RSA/DSA key only)]をOnに
  4. [SSH port]を適当に指定(仮に114114とでもしておこうか)
  5. 以上でSave
  6. System >User Managerへ移動、Add Userを実行
  7. 冒頭のイメージ図で[localhost(on the Internet)]から[prsense server]へ接続するためのユーザを作成、Save
  8. 作成したユーザの編集画面を開き、[Effective Privileges]に[User - System - Shell account access]を追加
  9. [Authorized keys]にの公開鍵を追記
  10. 以上でSave
  11. Firewall >Rulesに移動、Rule追加を実行
  12. [Destination]を[WAN]に、[Destination port range]に114114を指定
  13. 以上をSaveし、さらにApply change実行

pfsenseの設定は以上で完了。必要に応じ[localhost(on the Internet)]から[pfsense server]にsshログインできることを確認。

クライアント・サーバー(接続先)の設定

  1. [localhost(on the Internet)]の公開鍵を[target server(on the private network)]の.ssh/authorized_keysに登録
  2. .ssh/configを以下のように記述
    Host gateway
    HostName pfsense_server
    Port 114114
    Host target
    HostName target_server
    ProxyCommand /usr/bin/ssh gateway /usr/bin/nc %h %p
    

.ssh/authorized_keys、.ssh/configのパーミッションには注意すること。

以上を実施のうえ、次のようにsshコマンドを実行することで[pfsense server]を介して[target server(on the private network)]に接続できるようになる。sshの他scp、sftpも使用可能。

[localhost(on the Internet)]$ ssh target_server

普段使っているもの (2015年編)

普段使いしているものをお買い物時の備忘の意味も込めて、まとめてみる。どうせなら定期的にやってみようかと。

お仕事的な用品でないものはさらっと流します。

PC関係

  • Logicool K360 〈キーボード)

    今はK360rになってるみたいだけど、どう違うんだろう。見た目としては、天板に謎の模様がある(うちの)、無い(K360r)くらい?

    アイソレーションタイプ、10キーもついたコンパクトめのキーボード。横幅20cm弱。大型のノートPC感覚でしょうか。Excel使ったり私用でゲームやったりする場合、10キーがあるのは重要ですね。打鍵感触もそこそこなので愛用しています。自宅と職場近くのアパート用に2個購入。

    そろそろ自宅用を買い替えたいのと、職場用にもう一つ買おうか、迷ってる。

  • Logicool M560 (マウス)

    割と標準的な形状のマウスです。左右クリックの他ホイールの左右および押し込み、中央にWindowsでアクティブウィンドウ選択になる謎ボタン、左側にWebブラウザで戻る/進むに対応したボタンが2つあります。

    私の作業スタイルとして、マウスは概ね左手になります(利き手は右)。右手は腱鞘炎気味なので、あまり使いたくないのです。なので、多ボタンタイプの場合左手でも操作しやすいことが重要。このマウスは右手用ながら左でも普通に扱えるので気に入っています。

    なお、私の場合右利きで左手操作しているため実際には「右手のふりをする左手」になっているらしく、「左利き用」の機材・設定は使いづらいです。左利きの方はそのあたり踏まえて参考にしてください。

  • Wacom Cintiq 21 UX (液晶タブレット)

    趣味絵描きゆえの装備。第一世代で40万くらいした(汗) 今の世代は20万くらい?安くなったよね…。多分絵描き以外には参考にならないと思うので割愛。画質としては、かなりパッキリして色の違いが出やすいかな。

  • LGエレクトロニクス FLATRON IPS225 (液晶モニタ)

    こちらが普段のメインモニタ。配置的にも、液晶タブレットは倒して使うため普段使いには向かないので。IPS液晶でまぁまぁ見やすいのですが、ちょっと文字がちらつく感じもする。

  • 自組立PC

    実はPentium 4のベアボーンキットのケースだけ流用していたり。メイン作業兼お絵かきPCですが、科学技術計算するわけではなく、3Dをフルに使うわけでもないのでこの程度で充分です。サーバーとしては別に組んだPCがあります。フロントパネルにUSB3.0を増設したのでデータ転送も十分な速度に。

    • ミニタワーケース
    • Core i7 4770
    • メモリ8GB
    • HDD 500GB + 1TB
    • Windows 7 Professional x64)

カメラ

  • パナソニック LUMIX GM1S (ミラーレス一眼レフ)

    年明け初の大物購入、6万円也。とはいえ手持ちの不用品と積みゲームを売り払った結果、現金支払いは2000円くらいだったけど。使い込むのはこれからかな。

  • ニコン D5100 (デジタル一眼レフ)

    自分の中では「本気で撮る」場合の機材。レンズも一番豊富。

  • オリンパス E-PL2 (ミラーレス一眼)

    元々「マイクロフォーサーズのレンズが使いたい」という用途で購入したものなので、LUMIX GM1Sが使い勝手良ければ売却するかも。なんか空の青が気に入らん。赤のE(エルピー)-PL(プル)2 >謎<。

  • Rollei 35S (フィルムカメラ)

    色は黒。某作品に登場する銀色より黒のほうが気に入ったので。別に銀ボディが手に入らなかったからじゃないので。

alternativesでslaveに指定し忘れた項目があった場合。

特にたくさんの --slave を指定していた場合、一度削除して再登録するのがめんどうくさい。

alternativesシステムの構造を調べて、手動で対策できたのでメモ。

例: ソースコードからインストールしたPostgreSQLを /usr/bin に配置したい。が、pg_ctlを --slave に含め忘れてしまい、postmasterが止まらなくなった orz

(やだなぁ、あくまで例ですよ?)

一連のコマンド群を配置した際の実行パラメータは、次のようになっていた(可読性優先のためコマンドラインオプションごとに改行しています)。

alternatives
 --install /usr/bin/postgres postgresql /usr/local/postgresql-9_3_4/bin/postgres 100
 --slave /usr/bin/postmaster postgresql-postmaster /usr/local/postgresql-9_3_4/bin/postmaster
 --slave /usr/bin/psql postgresql-psql /usr/local/postgresql-9_3_4/bin/psql
 --slave /usr/bin/pg_config postgresql-pg_config /usr/local/postgresql-9_3_4/bin/pg_config
 --slave /usr/bin/pg_dump postgresql-pg_dump /usr/local/postgresql-9_3_4/bin/pg_dump
 --slave /usr/bin/createdb postgresql-createdb /usr/local/postgresql-9_3_4/bin/createdb
 --slave /usr/bin/dropdb postgresql-dropdb /usr/local/postgresql-9_3_4/bin/dropdb
 --slave /usr/bin/initdb postgresql-initdb /usr/local/postgresql-9_3_4/bin/initdb
 --slave /usr/bin/vacuumdb postgresql-vacuumdb /usr/local/postgresql-9_3_4/bin/vacuumdb
 --slave /usr/lib64/postgresql postgresql-lib /usr/local/postgresql-9_3_4/lib

当初はねー、主に使うのはこのあたりのコマンドだけかなー、と思ってたですよ。

この場合のalternativesシステムデータの構造は次のようになっていた。

  1. /usr/bin/postgres (シンボリックリンク) は /etc/alternatives/postgresql を示す
  2. /etc/alternatives/postgresql (シンボリックリンク) は /usr/local/postgresql-9_3_4/bin/postgres (実体) を示す
  3. --slave 指定した /usr/bin/postmaster (シンボリックリンク) は /etc/alternatives/postgresql-postmaster (シンボリックリンク) を示す
  4. /etc/alternatives/postgresql-postmaster (シンボリックリンク) は /usr/local/postgresql-9_3_4/bin/postmaster (実体) を示す
  5. 以後、 --slave 指定のものは同様に /usr/bin (リンク) → /etc/alternatives/<名前> → <パス> のようになる

ここで問題なのが、 --install--slave の関係性、リンクに指定した優先度の情報はどこに行ったのか?、という点。特に優先度の情報が見えていない。

これらは /var/lib/alternatives に --install に指定した <名前> というファイル名で保存されていた。

/var/lib/alternatives/postgresql の内容は次のようになっている。

$ cat /var/lib/alternatives/postgresql 
auto
/usr/bin/postgres
postgresql-postmaster
/usr/bin/postmaster
postgresql-psql
/usr/bin/psql
postgresql-pg_config
/usr/bin/pg_config
postgresql-pg_dump
/usr/bin/pg_dump
postgresql-createdb
/usr/bin/createdb
postgresql-dropdb
/usr/bin/dropdb
postgresql-initdb
/usr/bin/initdb
postgresql-vacuumdb
/usr/bin/vacuumdb
postgresql-lib
/usr/lib64/postgresql

/usr/local/postgresql-9_3_4/bin/postgres
100
/usr/local/postgresql-9_3_4/bin/postmaster
/usr/local/postgresql-9_3_4/bin/psql
/usr/local/postgresql-9_3_4/bin/pg_config
/usr/local/postgresql-9_3_4/bin/pg_dump
/usr/local/postgresql-9_3_4/bin/createdb
/usr/local/postgresql-9_3_4/bin/dropdb
/usr/local/postgresql-9_3_4/bin/initdb
/usr/local/postgresql-9_3_4/bin/vacuumdb
/usr/local/postgresql-9_3_4/lib

1行目の auto …はまあ今回無視するとして、2行目に --install で指定した<リンク>、3行目以降に --slave で指定した <リンク>と<名前>が1行ずつ列挙されている。

また、一連の列挙の後1行空けて、 --install で指定した <パス>、<優先度>、 --slave で指定した <パス> が1行ずつ列挙されている。

ということで、指定し忘れた項目(この場合 pg_ctl )を手動で追加するには、次の手順となる。

  1. /var/lib/alternatives/postgresql の上段(1行目~空行まで)の末尾に以下を追記
    postgresql-pg_ctl
    /usr/local/postgresql-9_3_4/bin/pg_ctl
    
  2. /etc/alternatives/postgresql-pg_ctl という名前で usr/local/postgresql-9_3_4/bin/pg_ctl へのシンボリックリンクを作成
  3. /usr/bin/pg_ctl という名前で /etc/alternatives/postgresql-pg_ctl へのシンボリックリンクを作成
  4. alternatives —display postgresql で手動追加が反映されたことを確認(以下、結果)
    $ alternatives --display postgresql
    postgresql -ステータスは自動です。
    リンクは現在 /usr/local/postgresql-9_3_4/bin/postgres を指しています。
    /usr/local/postgresql-9_3_4/bin/postgres - 優先項目 100
     スレーブ postgresql-postmaster: /usr/local/postgresql-9_3_4/bin/postmaster
     スレーブ postgresql-psql: /usr/local/postgresql-9_3_4/bin/psql
     スレーブ postgresql-pg_config: /usr/local/postgresql-9_3_4/bin/pg_config
     スレーブ postgresql-pg_dump: /usr/local/postgresql-9_3_4/bin/pg_dump
     スレーブ postgresql-createdb: /usr/local/postgresql-9_3_4/bin/createdb
     スレーブ postgresql-dropdb: /usr/local/postgresql-9_3_4/bin/dropdb
     スレーブ postgresql-initdb: /usr/local/postgresql-9_3_4/bin/initdb
     スレーブ postgresql-vacuumdb: /usr/local/postgresql-9_3_4/bin/vacuumdb
     スレーブ postgresql-lib: /usr/local/postgresql-9_3_4/lib
     スレーブ postgresql-pg_ctl: /usr/local/postgresql-9_3_4/bin/pg_ctl
    現在の「最適」バージョンは /usr/local/postgresql-9_3_4/bin/postgres です。
    

…いやぁ、あくまで例デスよ?(汗)

地図APIについて調べた(日本地図限定)

キャラサミ とかもあって、地図に紐づいたデータ表示とかの技術を習得しておくのが良いんじゃないかとおもい、特に日本地図の上に独自のデータをマッピングできるAPIの現状について調べてみた。

利用にあたっての要求事項

  1. 日本地図に特化、もしくは日本地図を扱いやすいこと
  2. APIの利用手続きが煩雑でないこと(オンラインサインアップが理想)
  3. JavaScriptから呼び出せること
  4. 同一コードでPCと携帯機器両方に対応できると良い
  5. できれば無料、もしくは趣味で利用することが負担にならない程度の安価

候補

  1. “日本 地図 API”でググり、さらに期間を1年以内に
  2. めぼしいものをチェック、取捨選択

10候補/5ページ目までチェックした結果、以下4つくらいしか名前が上がってこない感。各制限事項などは2014年11月21日現在のもの。

  1. Google maps API
    • APIの発行ページにGoogleアカウントでログインし、発行手続きを行う
    • アプリケーションの Maps API 使用量が使用制限を超過した場合、API キーを使用して Maps API を読み込み、追加割り当てを購入する必要がある。使用制限は地図の読み込みを1 日あたり最大 25,000 回を90日連続超過した場合。
      • 使用制限の適用は営利目的のウェブサイトの場合のみで、非営利目的の場合Googleに申請、認められれば無償で Google Maps API for Business ライセンスが供与される
    • 日本語のチュートリアルあり。APIの発行は英語のみ?
  2. Yahoo!地図 Yahoo! JavaScriptマップAPI
    • Yahoo! JAPAN IDを取得し、その後アプリケーションIDを登録
    • 1つのYahoo! JAPAN IDにつき、無料APIアプリケーションIDは10個まで、1アプリケーションIDごとに1日50000リクエストが上限
    • 非商用(対価を受ける目的でソフトウエアまたは開発ソフトウエアを自ら利用し、または第三者に利用させることを禁止)、商用ライセンスあり
    • APIのチュートリアルは日本語でソレ自体は分かりやすいのだけど、よけいな情報が多すぎて見辛い印象が。なぜ雨雲レーダーにそこまでこだわるのか。
  3. ゼンリン地図API
    • 実質的にGoogle maps APIってことでしょうか。細かい規約は違う可能性があるけど、動くシステムは同一っぽいので調査終了。
  4. MapFan API
    • 完全商用らしい。「低コスト年間48万円から」等と表記されている。そもそもサイトが法人むけだし。

予想通りと言えばそれまでだけど、やはりGoogleかYahoo!になる様子。「日本」特化というのはどちらも無しかな。どちらもアカウントはあるので、後はAPIキー発行してもらえば良いはずね。まずはこの辺りから始めてみましょうか。

USB3.0が相性問題っぽい原因でアクセス不能になったとき。

xhci-hcd モジュールをアンロードしてからロードすれば回復するっぽい。ちぃ覚えた。

具体的には CentOS 6.5 でのお話。USB3.0 は後付けの玄人志向 USB3.0R-P2H2-PCIE。Groovyの UD-3000SA でHDDを繋いだあたりで期限を損ねてしまい、以後は他の接続実績のあるUSB HDDを接続しても認識しない状態に。

OSリセットすべし、という情報もあったけど、それは何か負けのような気がする…というか別のプロセスで長時間かかる md5sum チェックをしていたのでリセットするわけにもいかず。どーせ何かを再起動すればいけるんじゃね? と色々あさった結論。

最初は usb_storage を再読み込みさせたけど、反応が変わらなかった。dmesgのエラーログを見ると、どうやらHUBあたりがエラーを起こしているっぽい。ていうかM/BのUSB2.0ポートは普通にUSBメモリとか認識するので、 usb_storage は悪くない、らしい。

usb_storage より下層の(ハード寄りの)部分ってなんだっけ? と漁った結果、uhciとかohciとかそのあたりよね、と。それっぽい名前を lsmod で探したところ、 xhci-hcd が見つかった。

"xhci-hcd" の正体を確認すべくググると、正体どころか "Bug 717633 - USB3.0 harddisk not working with xhci_hcd module " なんて記事が出てきたので、内容読むまでもなくあぁこれぢゃね、等と。

再読み込みにあたり念のためアンロードしたけど、USBまわりなのでアンロードと同時にUSBキーボードとか色々使用不能に陥る可能性を危惧(作業はssh接続してたけど)。予め sudo -v で認証も突破した上で、連続実行するように仕向ける。

$ sudo modprobe -r xhci-hcd ; sudo modprobe xhci-hcd

その後 dmesg 見たら認識しなかったUSB HDDも無事認識してマウントできるようになってた。

CentOS 3.9環境のbashを最新版に更新する

色々あってOSが古いままの環境で、せめてbashだけをshellshockから回避したい。

CentOS 3.9のbashはバージョン2.5が最終。

ログインシェルなので単純にyum erase bash とかやると依存関係がバギバギ出てくる。なので上書きインストールで行く(ていうか最終目標はOSの入れ替えなので、ここであまり丁寧に作業して時間をとりたくない)。

ということで以下作業記録。

現在bash関連物品が入っている場所の確認。個々のファイルは見ていられないのでdirnameで端折る。

rpm -q --list bash|xargs -l -i dirname {} |uniq
/bin
/etc/skel
/usr/lib
/usr/share/doc
/usr/share/doc/bash-2.05b
/usr/share/doc/bash-2.05b/bashdb
/usr/share/doc/bash-2.05b
/usr/share/doc/bash-2.05b/complete
/usr/share/doc/bash-2.05b
/usr/share/doc/bash-2.05b/functions
/usr/share/doc/bash-2.05b
/usr/share/doc/bash-2.05b/loadables
/usr/share/doc/bash-2.05b/loadables/perl
/usr/share/doc/bash-2.05b/loadables
/usr/share/doc/bash-2.05b
/usr/share/doc/bash-2.05b/misc
/usr/share/doc/bash-2.05b
/usr/share/doc/bash-2.05b/scripts.noah
/usr/share/doc/bash-2.05b
/usr/share/doc/bash-2.05b/scripts.v2
/usr/share/doc/bash-2.05b/scripts
/usr/share/doc/bash-2.05b
/usr/share/doc/bash-2.05b/startup-files
/usr/share/doc/bash-2.05b/startup-files/apple
/usr/share/doc/bash-2.05b/startup-files
/usr/share/info
/usr/share/man/man1

現状のタイムスタンプを確認。

$ ls -l /bin/bash*
-rwxr-xr-x 1 root root 585908 May 30 2006 /bin/bash
lrwxrwxrwx 1 root root 4 Mar 2 2007 /bin/bash2 -> bash

$ ls -l /usr/share/info/bash*
-rw-r--r-- 1 root root 94034 May 30 2006 /usr/share/info/bash.info.gz

$ ls -l /usr/share/man/man1/bash*
-rw-r--r-- 1 root root 64921 May 30 2006 /usr/share/man/man1/bash.1.gz

最新版をビルド。bash 4.3にパッチまで当ててやっとshellshockが解消するので、パッチも全部当てる(正確には28まで当てればよかったはず)。

このとき上書きされるようにprefix、bindir、sysconfdirをいじる。基本的に/usr以下に入っているのに実行コマンドだけが /bin にあるのがいやらしい。

$ tar xfz bash-4.3.tar.gz
$ cd bash-4.3
$ for patchfile in `ls -1 ../bash43-*`; do echo $patchfile; patch -p0 < $patchfile; done
$ grep "#define PATCHLEVEL" patchlevel.h
#define PATCHLEVEL 30

$ ./configure --prefix=/usr --bindir=/bin --sysconfdir=/etc
$ make ; make check ; echo $?

0
$ ./bash --version
GNU bash, version 4.3.30(1)-release (i686-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

上書きインストールする。

$ sudo make install

インストール結果確認。

$ which bash
/bin/bash

$ bash --version
GNU bash, version 4.3.30(1)-release (i686-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ ls -l /bin/bash*
-rwxr-xr-x 1 root root 1832115 Oct 15 06:51 /bin/bash
lrwxrwxrwx 1 root root 4 Mar 2 2007 /bin/bash2 -> bash
-r-xr-xr-x 1 root root 6800 Oct 15 06:51 /bin/bashbug

$ ls -l /bin/bash*
-rwxr-xr-x 1 root root 1832115 Oct 15 06:51 /bin/bash
lrwxrwxrwx 1 root root 4 Mar 2 2007 /bin/bash2 -> bash
-r-xr-xr-x 1 root root 6800 Oct 15 06:51 /bin/bashbug
$ ls -l /usr/share/info/bash*
-rw-r--r-- 1 root root 486450 Oct 15 06:51 /usr/share/info/bash.info
-rw-r--r-- 1 root root 94034 May 30 2006 /usr/share/info/bash.info.gz

$ ls -l /usr/share/man/man1/bash*
-rw-r--r-- 1 root root 299110 Oct 15 06:51 /usr/share/man/man1/bash.1
-rw-r--r-- 1 root root 64921 May 30 2006 /usr/share/man/man1/bash.1.gz
-rw-r--r-- 1 root root 1817 Oct 15 06:51 /usr/share/man/man1/bashbug.1

man bash とか info bash の結果はちゃんと4.3が出てくるけど、旧バージョンのgzファイルが後々混乱の元になりそうなので、新バージョンの非圧縮ファイルをgzip圧縮したもので上書きしておく。

/bin/bash へのシンボリックリンクになっている/bin/shも、ちゃんとバージョンアップされた。

$ sh --version
GNU bash, version 4.3.30(1)-release (i686-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

/usr/share/doc/bash-2.05b は実害無いし面倒くさいので後で削除しよう(そして忘れる)。

どっとはらい。

O'Reilly Japan - マスタリングNginx

O'Reillyで電子版出てた。

書籍版は持ってるし比較的薄くて軽めの本だけど、Nginxいじるときは必須アイテムだから今度書籍版を参照できないところでNginxをいじる必要に駆られたら買おう。

と言いながら記事が寂しいのでAmazonのアフィリエイトを置いてみるなど。

Apacheは歴史があって大抵のことには対応できるみたいだけど、同じ理由から設定ファイルが何だか複雑化して分かりにくいことも多々。あと、単一サーバーで複数ドメインを運用するときのバーチャルホスト設定が面倒とか、SGMLタグだから"/"がタグの/なのか値の/なのかで混乱してみたり。

ということで、最近HTTPサービスを立ち上げるときは積極的にNginxに切り替えています。こちらの方が同時大量アクセスに強いらしいし、Ruby on Rails等のフレームワークとも相性が良いらしいので。

Apacheが必要になるのって、今だとSubversionリポジトリを公開するときくらいのような気がしますよ…?