リモートバックアップ afio

バックアップについて、gz圧縮するなら tar は危険とのこと(http://www.linux.or.jp/JF/JFdocs/Backup-mini-HOWTO/tar-gz.html)(危険は良い過ぎか、少し心許ない位いか) afio を使う。afio はアーカイブ先を必ず指定する。それで標準出力にするのちょっと探してしまった。

Special-case archive names:

o Specify - to read or write the standard input or output, respectively.
This disables multi-volume archive handling.

「-」を書けば良いのね。
バックアップを呼ぶ側は OSX Leopord、afio入ってないけどそれは大丈夫。

35 12 * * * ruby -e '`ssh -i /Users/<ユーザ名>/.ssh/<キーファイル名> <リモート機名> "find /home/<対象ディレクトリ> | afio -oZ -" > /Volumes/<ディレクトリ名>/<ファイル名>.#{Time.now.strftime  "%Y-%m-%dT%H-%M-%S"}.afz`'

こんな感じで。
ちょっと無理して一行に収めた。「''」と「""」を逆にすると動かなかった、cron実行時のシェルで大丈夫かな。ssh はコマンド文字列を与えると、リモートで実行して標準出力をこっちに返してくれる。それで afioのアーカイブ出力を標準出力にしたかった。これでリモート側に一時ファイルとか作らないで済む。
OSX側には afio 入ってないけど cpio は入ってるし、出来上がったアーカーブファイルを fileコマンドで見てやると「 ASCII cpio archive (pre-SVR4 or odc)」とか言ってる。

SVN と UUID

ちょっと事情があって SVNサーバをリプレースした。特に気にせず更新した。そうしたら、linux方面に置いてる作業コピーでは(切り替え時にユーザ認証訊き直されたりはしたかな)普通に作業できたが、Windows方面の TortoiseSVN からは更新も出来なくなった。ユーザ認証はした。それでリポジトリブラウザも見えた。しかし更新しようとしてもエラーになる

コマンド: 更新  
エラー: リポジトリの UUID '<云々>' が、期待される UUID   
エラー: '<云云>' と一致しません  
終了!:   

どうもリポジトリの認識コードを違えてしまったようだ。
どうしよう。

日本語のエラーメッセージだとあんまり検索出てこない、Tortoiseクライアントは日本語化してるので英語のエラーメッセージわからない、そこを頑張ってなんとか様子を探る。

ankhsvn: Wiki: Faq

I get an error saying "Repository UUID 'XXXXXX' doesn't match expected UUID 'YYYYYY'

Subversion 1.5 clients give this error if the repository uuid changed since creating the working copy. Previous versions of the subversion libraries did not check this value as much as 1.5 clients do.

The suggested workaround is to check out a clean working copy. This should resolve the issue.

1,5になってチェックするようになったということの様だ。とすれば大丈夫だった linux方面では「svn, バージョン 1.4.2 (r22196)」でした、将来バージョンがあがったら同じことが起こるでしょう、その時は何とかしてここの事を憶い出しましょう。

さて、先ほどの FAQ に挙がってる対策は「チェックアウトし直しなさい」なんだかなあ、対策と言えるのか。まあそうしましょうというのだからそうします。

標準エラー出力とパイプ「|&」(zsh)

zsh標準エラー出力をパイプに送る(そして lv で見る)には「|&」で繋ぐ、略記をしないなら「2>&1 |」でも良い。標準出力も同時に(同時ではないか、合わせて)パイプに繋がれる。

標準出力なし、標準エラー出力のみというのは無いみたい。

jpmobile(Git) と Rspec(onRails)

一方で、rake spec に失敗するようになってしまった。

Your RSpec on Rails plugin is incompatible with your installed RSpec.

RSpec          : 20080526202855
RSpec on Rails : 20080309210001

Make sure your RSpec on Rails plugin is compatible with your RSpec gem.
See http://rspec.rubyforge.org/documentation/rails/install.html for details.

うーむ、バージョンいじったつもりは無いけど。一応「script/plugin update」してみるけど変わらず。

いろいろ試行錯誤

RubyGems の方の RSpecもおかしい、spec --version も利かない。インストールしなおしてみる。一度 uninstall して(All)、再び install。
やっぱりエラー。

[2533] spec --version
/usr/local/lib/site_ruby/1.8/rubygems.rb:578:in `report_activate_error': Could not find RubyGem hoe (>= 1.8.1) (Gem::LoadError)
        from /usr/local/lib/site_ruby/1.8/rubygems.rb:134:in `activate'
        from /usr/local/lib/site_ruby/1.8/rubygems.rb:158:in `activate'
        from /usr/local/lib/site_ruby/1.8/rubygems.rb:157:in `each'
        from /usr/local/lib/site_ruby/1.8/rubygems.rb:157:in `activate'
        from /usr/local/lib/site_ruby/1.8/rubygems.rb:49:in `gem'
        from /usr/bin/spec:18

「hoe」が無いからって言ってるように見えるが hoe ってなんだ。というかアンインストール前のエラーもこんな感じだったと思う、ちゃんと見てなかったけど。

[2532] gem list -r -d hoe

REMOTE GEMS ***
hoe (1.8.2) Author: Ryan Davis Rubyforge: http://rubyforge.org/projects/seattlerb Homepage: http://rubyforge.org/projects/seattlerb/ Hoe is a simple rake/rubygems helper for project Rakefiles
そんな物があるのね。でもなんで依存性で解決されてないんだろう。
[2535] sudo gem install hoe
Successfully installed rubyforge-1.0.1
Successfully installed hoe-1.8.2
2 gems installed
Installing ri documentation for rubyforge-1.0.1...
Installing ri documentation for hoe-1.8.2...
Installing RDoc documentation for rubyforge-1.0.1...
Installing RDoc documentation for hoe-1.8.2...
もともと --version は効かなかったのね、-v で。
[2539] spec -v
rspec 1.1.11
だからと言って Railsアプリケーション(photo の jpmobileブランチ)での rake spec は失敗、エラーはちょっと変わった。
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.1/lib/active_support/dependencies.rb:276:in `load_missing_constant': uninitialized constant Spec::VERSION::BUILD_TIME_UTC (NameError)
プラグインrspec じゃなくて今入れた RSpec を使っててバージョン詳細(UTC)が見付らないと言ってるとか。

プラグイン再インストール

一度プラグインをリムーブしてみる。で、折角だから Git でプラグイン最新版(開発版)、インストールのパターンは「Home · dchelimsky/rspec-rails Wiki · GitHub」より。
[2559] script/plugin install git://github.com/dchelimsky/rspec.git
removing: /home/hs9587/rails/photo_sid/vendor/plugins/rspec/.git
Initialized empty Git repository in /home/hs9587/rails/photo_sid/vendor/plugins/rspec/.git/
remote: Counting objects: 918, done.
remote: Compressing objects: 100% (836/836), done.
remote: Total 918 (delta 381), reused 299 (delta 39)
Receiving objects: 100% (918/918), 404.74 KiB | 49 KiB/s, done.
Resolving deltas: 100% (381/381), done.
[2561] script/plugin install git://github.com/dchelimsky/rspec-rails.git
removing: /home/hs9587/rails/photo_sid/vendor/plugins/rspec-rails/.git
Initialized empty Git repository in /home/hs9587/rails/photo_sid/vendor/plugins/rspec-rails/.git/
remote: Counting objects: 438, done.
remote: Compressing objects: 100% (374/374), done.
remote: Total 438 (delta 165), reused 156 (delta 20)
Receiving objects: 100% (438/438), 106.00 KiB | 20 KiB/s, done.
Resolving deltas: 100% (165/165), done.
おお、ちゃんと rake spec 出来た。しかも、SVN(rspec.rubyforge.org) 方面ので出てた次のエラーも出ない。
DEPRECATION WARNING: Inflector is deprecated! Use ActiveSupport::Inflector instead.  See http://www.rubyonrails.org/deprecation for details. (called from method_missing at /home/hs9587/rails/photo/vendor/plugins/rspec/lib/spec/matchers/have.rb:20)
と言う間に、rspec_on_rails が無くなって rspec-rails になってる。
svn関係
手元の svn管理もそれなり手順必要だった。
  1. 取り敢えず vendor/plugins ディレクトリで作業。
  2. add と commit
    1. rspec-railssvn add
    2. jpmoble を svn add
    3. commit
  3. delete と commit
    1. rspec_on_railssvn delete
    2. commit
  4. rspec の調整
    1. rspecsvn deleteしようにも .svnが無いので云々と
    2. 一時的に mv改名
    3. 改めて svn delete
    4. commit
    5. mv改名戻す
    6. rspecsvn add
    7. commit
で、何と言うか、rake spec 通る、trans_SID も行く(様な気がする)、ので、良いんじゃないかな。 git と rspec_on_rails不調の因果関係とかちゃんと追求してないけど、まあ。

Debian にて Rails/RMagick(ImageMagick)/PostgreSQL8.3環境

Debian GNU/Linux 4.0r4a (etch)

  1. CDからの起動
  2. 日本語、キーボード
  1. ソフトウェアの選択 tasksel
    • ウェブサーバ
    • 標準システム

のみ。ネットワーク設定は取敢えずDHCP

再起動後

  1. /etc/network/interfaces
    • iface eth0 inet static とし、静的IP設定

dns-servers項目も一応書いておくが resolvuconfパッケージはいれないので特に意味は無い

  1. /etc/resolv.conf
    • nameserver設定
  2. root の aptitude(export LANG=)より
    1. まずセキュリティアップデートあり、カーネル更新
    • その後 opnessh-server
      • openssh-blacklist も入って来る、etch初期の ssh不具合関係。

また再起動、この後は遠隔作業(UTF-8(CJK))

  1. root の aptitudeより
    • sudo
    • 遠隔端末での aptitude画面、微妙に乱れる。
  2. visudo
    • %adm ALL=(ALL) ALL
  3. vigr, vigr -s, grpck
    • visudo で設定したグループの編集

パッケージ追加等

以後、sudo 作業

  1. aptitude

rcファイルとか、hostsファイルを適当に

PostgreSQL8.3

  1. /etc/apt/sources.list
  2. /etc/apt/apt.conf.d/70debconf
    • stableピン、あとパッケージ数が多くなるのでキャッシュ拡張
      • APT::Default-Release "stable";
      • APT::Cache-Limit 16777216;

そして aptitudeから PostgreSQL (そういえば何故 8.2 は出て来ないのだろう)

  • postgresql-8.3
    1. 依存性警告。
      1. 最初に提案されるのがポスグレは入れない(UNINSTをKEEP)とかなのは何とも。
      2. その postgresql-8.3 の UNINSTをKEEPする提案を拒否「r」
      3. postgresql-client-8.3 の UNINSTをKEEPする提案を拒否「r」
    2. 改めて aptitudeの提案を募るとその二つを含めて幾つかのインストールとアップグレードでなんとかなりそう
      • 何故そこで mysql-common とか思わないでもないが
    3. その、reject後の二つ目の提案を採用「!」
  • postgresql-8.3-plruby
    1. 依存性警告。
      1. これも最初の提案は入れない(UNINSTをKEEP)、それを拒否「r」して
      2. 次の提案を適用「!」
      • libruby1.8のバージョンが上がる 1.8.7.72-1 testing <- 1.8.5-4etch2 stable
      • Ruby系の他の所との整合はどうなるのかな。

その後 ruby -v してみると、ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] になってる。

  1. PostgreSQL8.3設定
    1. /etc/postgresql/8.3/main/postgresql.conf
      • listen_addresses = 'localhost,192.168.アドレス'
      • 引用符カンマピリオド空白注意
    2. /etc/postgresql/8.3/main/pg_hba.conf
      • IPv4 local connections: に追記
      • host all all 192.168.アドレス/24 md5

再起動

  1. createuser
    • 適宜

RubyGemsRails

aptitude より、RubyGems、そしてアップデート

  1. aptitude
    1. rubygems (0.9.0-5)
      • lennyの rubygems(1.2.0-3)用と思しい rubygems1.8, rubygems1.9 も見えるが、lenny用自体は見えない。
      1. 依存性警告
      • postgresql-8.3-plruby の時の libruby1.8 のバージョンアップと整合が取れないみたい。
      1. 諦める
    2. rubygems1.8 (1.2.0-3)
      • 普通にインストール出来る。
[77] ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
[78] gem --version
1.2.0

RubyGemsアップデート、出来なかった。

[79] gem update --system                     ~ 10:20 0917
ERROR:  While executing gem ... (RuntimeError)
    gem update --system is disabled on Debian. RubyGems can be updated using the official Debian repositories by aptitude or apt-get.
  1. aptitude
    1. rubygems1.8 アンインストール
    2. libopenssl-ruby インストール
      1. 依存性警告、testeing の1.8.7系を入れよと、そうする。

という訳で、RubyForgeから

  1. sudo wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
  2. sudo tar xvzf rubygems-1.2.0.tgz
  3. cd rubygems-1.2.0
  4. sudo ruby setup.rb
    • やっぱり ri と rdoc の所で時間が掛かる
  5. sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
[119] gem --version
1.2.0
[120] gem update --system
Updating RubyGems
Nothing to update
  1. sudo gem install rails
  2. sudo gem install rspec
[125] rails --version
Rails 2.1.1
[126] spec --version
RSpec-1.1.4 (build 20080526202855) - BDD for Ruby
http://rspec.rubyforge.org/

RMagick(ImageMagick)

  1. aptitude
    1. imagemagick
    2. libmagick9-dev
      1. 依存性警告
      • 最初の提案でいいや、devちょっととか testingから
      • gcc4.1初 め開発環境(コンパイラ関係)も入る
Version: ImageMagick 6.2.4 02/10/07 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2005 ImageMagick Studio LLC

Usage: convert [options ...] file [ [options ...] file ...] [options ...] file

RMagick は gem から、aptitudeパッケージにもあるんだけどね

  1. sudo gem install rmagick

一度エラーになる、Rubyの mkmf が入ってない。

  1. aptitude
    1. ruby-dev
      1. 依存性警告
      • 最初の提案で、まあ testing の 1.8.7系ということ。

改めて

  1. sudo gem install rmagick

又失敗、ImageMagickのバージョンがあってない(要 6.30以上、しかし 6.2.4)

Debianのパッケージ検索によると、lenny には 6.3.7 (7:6.3.7.9.dfsg1-2+b2:) がある筈なんだけど、
aptitude画面には出て来ないのでコマンドライン
「sudo aptitude install imagemagick -t testing」
の前に、さっき入れた etch のはアンインストールしておく

  1. aptitude
    1. - imagemagick
    2. - libmagick9-dev
      • 開発系も沢山アンインストールされる

そしてコマンドライン

[154] sudo aptitude install imagemagick libmagick9-dev -t testing
 <略、gcc は 4.3系>
以下のパッケージが推奨されていますがインストールされません:
  xml-core
更新: 32 個、新規インストール: 114 個、削除: 0 個、保留: 270 個。
アーカイブ 41.1MB 中 40.9MB を取得する必要があります。展開後に 101MB のディスク領域が新たに消費されます。
続けますか[Y/n/q/?]Y
 <略>
[145] convert -help H
Version: ImageMagick 6.3.7 05/02/08 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC

Usage: convert [options ...] file [ [options ...] file ...] [options ...] file

入った模様。その後 aptitude画面見ると 7:6.3.7.9 なってる。

改めて

  1. sudo gem install rmagick
    1. Successfully installed rmagick-2.6.0
[166] ruby -r rubygems -e 'require "RMagick"; Magick::Magick_version.display'
ImageMagick 6.3.7 05/02/08 Q16 http://www.imagemagick.org
[167] ruby -r rubygems -e 'require "RMagick"; Magick::Long_version.display'
This is RMagick 2.6.0 ($Date: 2008/08/31 20:00:39 $) Copyright (C) 2008 by Timothy P. Hunter
Built with ImageMagick 6.3.7 05/02/08 Q16 http://www.imagemagick.org
Built for ruby 1.8.7
Web page: http://rmagick.rubyforge.org
Email: rmagick@rubyforge.org

漸く入った。

要点整理

  1. Debian のインストール
    1. stable と testing の混在環境
  2. インストール後の細々
    1. ちょっと設定
    2. ちょっとパッケージ
      • ruby は後で 1.8.7 (testing) にする(なる)ならここでそうしててもいいかもしれない、それならコマンドライン
      • sudo aptitude install ruby rdoc -t testing くらいか、もうちょっとか(dev?、libopenssl-ruby?)
  3. PostgreSQL 8.3 (testing)
    • ruby も 1.8.7 (testing) になるか、するか
    • Ruby-dev 後で必要になるのでこの辺で入れてても良い
  4. RubyGemsRubyForge からソースダウンロードで
    1. そして sudo ruby setup.rb
  5. sudo gem install rails
    1. sudo gem install rspec
  6. ImageMagic 6.3以上 (testing)
    1. aptitude コマンドライン
    2. sudo aptitude install imagemagick libmagick9-dev -t testing
      • libmagick9-dev 忘れずに
  7. sudo gem install rmagick
    • ruby-dev 必要 (mkmfライブラリ)

含まれる文字列検索で .rb ファイルを

WIndows の検索には、テキストファイルの中身まで見てくれるものがあって重宝している(grep があればもっと良いのに)。でも、「.rb」ファイル(Rubyスクリプト)とかは、テキストファイルと見做されないので検索されない。
どうにかならないものかと

というわけで、レジストリの操作

  1. regedit 起動
    1. HKEY_CLASSES_ROOT\.rb
      • HKEY_CLASSES_ROOTのしたには他にも山程拡張子が登録されてる
    2. 新規キー「PersistentHandler」を追加
    3. その (既定)(データ、(値の設定なし)) を修正
    4. 値のデータを {5e941d80-bf96-11cd-b579-08002b30bfeb}
  2. regedit終了
  3. 再起動

無事検索出来るようになった

因みに WindowsXP Pro SP2 (SP3には出来てない)

aptitude コマンドライン

Debian GNU/Linux のパッケージ管理ツールは aptitude。対話環境だけでなく、コマンドラインからもいろいろ出来る模様。
http://dolphin.c.u-tokyo.ac.jp/~nori1/aptitude-ja/ch01s02.htmlとか、http://dolphin.c.u-tokyo.ac.jp/~nori1/aptitude-ja/rn01re01.html

例えばこんな感じ

インストール済みパッケージを検索

aptitude search ~i<パッケージ名(の一部)>

その詳しい表示(パッケージ名、インストールしてあるもののバージョン、状態、簡単な説明)

aptitude search ~i<パッケージ名(の一部)> -F %?p%v#%C#-%d

もっと詳しく

aptitude show ~i<パッケージ名(の一部)>