2015年1月23日金曜日

Jenkinsで bundle install --path=vender/bundler が失敗する場合の対処法

以下のようなエラーが出ていろいろ試行錯誤した結果、nokogiriをビルドするためには、パスに空白があるといけないということが判明。。
Jenkinsのジョブ名を空白なしに修正unit test → unit_testしたら先に進めた。。。
(ジョブ名を変えればディレクトリ名も自動的に変わる模様)

~~~
Building in workspace /var/lib/jenkins/jobs/unit test/workspace


git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
git config remote.origin.url /var/opt/alminium/git/* # timeout=10
Fetching upstream changes from /var/opt/alminium/git/

git --version # timeout=10
git fetch --tags --progress /var/opt/alminium/git/
* +refs/heads/:refs/remotes/origin/
git rev-parse refs/remotes/origin/proto^{commit} # timeout=10
git rev-parse refs/remotes/origin/origin/proto^{commit} # timeout=10
Checking out Revision 7145731f308fec32fe9c84f32733fc4cfa0b91a9 (refs/remotes/origin/proto)
git config core.sparsecheckout # timeout=10
git checkout -f 7145731f308fec32fe9c84f32733fc4cfa0b91a9
git rev-list 7145731f308fec32fe9c84f32733fc4cfa0b91a9 # timeout=10
[workspace] $ /bin/sh -xe /tmp/hudson8128990982305471465.sh
+ bundle install
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies......
Using rake 10.4.2
Using i18n 0.7.0.beta1
Using json 1.8.1
Using minitest 5.5.0
Using threadsafe 0.3.4
Using tzinfo 1.2.2
Using activesupport 4.2.0.rc1
Using builder 3.2.2
Using erubis 2.7.0
Using mini
portile 0.6.1


Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb 

/usr/bin/ruby: invalid option -u (-h will show valid options) (RuntimeError)

extconf failed, exit code 1

Gem files will remain installed in /var/lib/jenkins/jobs/* unit test/workspace/vendor/bundler/ruby/2.1.0/gems/nokogiri-1.6.5 for inspection.
Results logged to /var/lib/jenkins/jobs/
*
unit test/workspace/vendor/bundler/ruby/2.1.0/extensions/x8664-linux/2.1.0/nokogiri-1.6.5/gemmake.out
An error occurred while installing nokogiri (1.6.5), and Bundler cannot
continue.
Make sure that gem install nokogiri -v '1.6.5' succeeds before bundling.
Build step 'Execute shell' marked build as failure
Build step 'Aggregate Redmine ticket metrics' marked build as failure
Finished: FAILURE
~~~


2014年12月7日日曜日

google authenticatorは機種変更時に情報が引き継がれないので要注意

AWSのmfaを解除するにはサポートに問い合わせて電話で確認コードを読み上げる(英語)必要があるらしい。

めんどいな。。
個人アカウントは情報控えてなかっただろうなぁ。

2014年11月28日金曜日

WindowsのSourceTreeでGit Pull/Pushが異様に遅い

内蔵GitにしてもシステムGitにしてもダメ。
なお、システムGit(git 2.1.1)は、コマンドラインから実行すると早い。

.git/config
を開いて

[remote "origin"]
url = https://hogehoge.hogehoge

のところを

[remote "origin"]
url = https://user@password:hogehoge.hogehoge

のように、IDとパスワードを入れたら復活した。
が、あんまり気分の良い解決策じゃないなぁ。
その後色々いじってみたが根本解決策は不明。

ちなみに、msysGit(git version 1.9.4.msysgit.2)のGit Bashは、上記対応を実施しても未だに遅い。

謎だ。。

Proxy Switchy! Auto Switch Mode doesn't work on windows 7

it can be fixed by replacing an dll file.

C:\Users\\AppData\Local\Google\Chrome\User Data\Default\Extensions\caehdcpeofiiigpdhbabniblemipncjj\1.6.3_0\plugins\npSwitchy.dll

Issue 338 - switchy - auto switch mode set wrong pac url - Manage and switch between multiple proxy profiles quickly and easily. - Google Project Hosting
https://code.google.com/p/switchy/issues/detail?id=338

1. Close all Chrome windows
2. rename the dll like npSwitchy.dll -> npSwitchy.dll.bak
3. DL new dll via https://switchy.googlecode.com/issues/attachment?aid=3380009000&name=npSwitchy.dll&token=ABZ6GAeDFOJfek2l0I0PweYzcQopJhqAgg%3A1417172501056

That's it.

Proxy Switchy! のAuto Switch Modeがあるときから使えなくなっていた。
ずっとほっておいたが本腰を入れて調べたところ、どうも自動生成しているPACファイルのファイル名が
SwitchyAuto.pac?XXXXX
になるべきところ、
SwitchyAuto.pacc?XXXXX
と、なぜか拡張子のcが余分についてくるようになってしまった模様。

この問題を解消してくれるDLLが下記URLに公開されていたので、
それをDLして差し替えたところ、問題が解消した。
Issue 338 - switchy - auto switch mode set wrong pac url - Manage and switch between multiple proxy profiles quickly and easily. - Google Project Hosting
https://code.google.com/p/switchy/issues/detail?id=338
↓
https://switchy.googlecode.com/issues/attachment?aid=3380009000&name=npSwitchy.dll&token=ABZ6GAeDFOJfek2l0I0PweYzcQopJhqAgg%3A1417172501056

#リンク先にあるように、pacファイルのアドレスを入力する欄に記載されているパスが、
 何故か\から%5Cに置き換わってしまったが、まぁ問題ない模様。

2014年10月29日水曜日

故障したRAID5構成のTeraStationからデータ救出(無料)

職場で使っている Buffalo の TeraStation(HD-QSSU2/R5) が壊れた。
月曜日に出社したら赤ランプが4つとも点灯していた。
赤ランプ全点灯てことは、2本以上同時に壊れたのか?

RAID5を過信すると怖いっすね。。。
非常に困るのでなんとかデータ救出したいと思い色々調べていると下記の情報を発見。

RAID5 が壊れた・・・ - マニログ

非常に心強い。ディスク2本壊れても何とかなるもんなんすね。

4本のハードディスク(のうち3本)の中身さえ抽出できればつなぎ合わせることで救出できそうなことがわかった。
そこで何はともあれ、分解して中身をバックアップすることにした。

使われていないデスクトップPCがあったので、4本のディスクのうち2本(SATAポート数の都合)をつないで、UbuntuをUSB起動してddコマンドでイメージ化することにした。

ddイメージの出力先は、容量の都合でネットワーク上のドライブ(NAS)にした。ので、時間がかかった。。。

時間がかかりすぎるので調べたところ、GNU ddrescueコマンドがよさ気なのでそちらを使うことにした。
下記のような感じで2本×2回に分けて実施。(USB起動のUbuntuを使っていたため、リブート後にもGNU ddrescue等入れなおす必要があった。。)

ディスク情報を取得

sudo su
fdisk -l

→どちらが/dev/sdaでどちらが/dev/sdbか確認。セクタ数も確認しておく。

ネットワークドライブをマウント

mkdir /mnt/smb
mount //xxx.xx.xx.xxx/xxx /mnt/smb -o username=xxxxxxxx
mkdir ~/workspace
cd ~/workspace/
ln -s /mnt/smb/xxxxxx_work
cd xxxxxx_work

GNU ddrescueを(プロキシ経由で)インストール

export http_proxy="http://***:***@**proxy****:NNNN/"
export https_proxy=$http_proxy
add-apt-repository universe
apt-get update
apt-get install gddrescue

一台目のディスクをイメージに出力

ddrescue -f -n /dev/sdb disk3ddrescue.img disk3ddrescue.log

もう一つコンソールを立ち上げて、もう一台も同時実行

ddrescue -f -n /dev/sda disk4ddrescue.img disk4ddrescue.log

一晩放置した結果、エラー無く2本とも抽出できていたので、前述のとおりUbuntuをシャットダウンし、
残りの二本につなぎ替えて上記を(disk3, disk4のところはdisk1, disk2に置き換えて)もう一度実行。

4本分のHDDイメージはいずれもエラー無く抽出完了したため、パリティから復元するのではなく、4つのイメージ(のうち3つ)から512バイトごと毎にデータを取得して、ひとつのイメージとして合成することにした。
rubyで簡単なスクリプトを作成し実行。

apt-get install ruby
vi raid5merge.rb

raid5merg.rb

disks = []
sectors = 488_397_167 #各ディスクのセクタ数。4台共同一だった。

(1..4).each{|i|
  disks.push << File.open("./disk#{i}ddrescue.img","rb")
}
out = File.open("./merged_disk_ddrescue.img","wb")

buff = ""

sectors.times{|i|
  4.times{|j|
    #disk4→3→2→1→4→3→2→1の順でスキップ。
    if 3 == (j+i)%4
      disks[j].read(512)
      next
    end
    buff << disks[j].read(512)
  }

  if buff.length < 50*1024*1024 #高速化のため、50MB分読み込むまで書き出ししないようにしてみた。
    out.print buff
    buff = ""
  end
}
out.print buff if buff.length > 0
ruby raid5merge.rb

ddのイメージファイルをWindowsでマウントしたいなぁと思い、調査したところ「ImDisk Virtual Disk Driver」てやつがフリーで良さげだった。
インストールし、イメージをマウントして中身が読み書きできることを確認。
ddイメージをNAS上に書き出していたので、メインで使用しているWindows機からもすぐアクセスできて便利だった。(が遅い)

元の4本のHDDは故障しているわけではなさそうだったので、もう一度TeraStationに組み戻して、TeraStationをRAID5で初期化した後、イメージから書き戻すことにした。

現在はFastCopyでコピー中だが、非常に時間がかかる。。。。

2014年8月14日木曜日

PC(Windows 7)からRoot化せずにNexus 7(Android 4.4.3)を操作する

PC(Windows 7)からRoot化せずにNexus 7(Android 4.4.3)を操作するため、こちらのページの下の方を参考に、asm.jarを導入した。おおまかな流れは下記。
※予めAndroid SDKをインストールしておく必要あり。
  1. Nexus 7にて、USBデバッグモードを有効にする。
  2. Windows 7側にAndroid USB Driverをインストールする。
  3. asm.jarをDownloadし実行する。

Nexus 7にて、USBデバッグモードを有効にする。

  • こちらのページに従い、設定アプリ→タブレット情報→「ビルド番号」を7回タップ(!?)
  • 設定画面にもどり、「開発者向けオプション」を選択
  • 「USBデバッグ」をONにする

Windows 7側にAndroid USB Driverをインストールする。

  • android.comのGoogle Driverのページ
    を開き、「Download Android USB Driver」ボタンからドライバをDL
  • ZIPを解凍
  • デバイスマネージャを開き、不明なデバイスになっているNexus 7を選択
  • ドライバーの更新を行い、上記で解凍したフォルダを指定してドライバーをインストールする
最初はドライバが正常に認識されていないことに気づかず苦戦したが、「Android Screen Monitor - adakoda」を参考にトラブルシューティングしたところ、ドライバが足りないことが判明した。

asm.jarをDownloadし実行する。

Android Screen Monitorのページからasm.jar 3.0.0をDLし、Android SDKのplatform-toolsディレクトリの下にasm.jarを配置してダブルクリック。

2014年8月12日火曜日

SynergyでWindows 7 を Serverに、 Mac OSX 10.9 Merverics をClientにした時にキーボードが効かない

テンキーだけは有効だった。
Synergyのバージョンはサーバ、クライアント共に1.5 Premium。

http://anago.2ch.net/test/read.cgi/software/1131466455/922
上記を参考に、キーボードの入力ソースに「Unicode Hex Input」を追加し、Synergy(クライアント側)を再起動したら入力できるようになった!
※Unicode Hex Inputは「その他」にある。

ただ、日本語と英語の切り替えがうまくできない?みたいだ。。。

ちなみに、リンク先の918さんのように、SynergyKM 1.0.1も試したがうまく行かなかった。
~~

Germanにすると良い、という話題も見かけたので試したが、うまく行かなかった。
http://448.jp/blog/article/1432/

が、よく考えるとSynergyを再起動していないことが原因かもしれない。
英語っぽい配列を選んだ後にクライアント側を再起動するのがよいのかも?

~~追記~~
日本語と英語の切り替えはAlt(=Cmd)+ Spaceで実現できた。
※参考:http://4th-life.com/mac/synergy/