A certain engineer "COMPLEX"

開発メモ その99 Bitnami Redmineでthinが停止する場合の原因追及

Introduction


昔自分で書いた記事を忘れていて、Googleで彷徨っていたのでメモ。

BitNami Redmine Statck が起動しない...だと...
ということで原因探し。現象はRedmineにアクセスしても、503 Service Temporarily UnavailableBitNami Redmine StackのManager toolでチェックすると、Thin_redmine、Th...

Bitnami Redmine Stackは非常に便利なので会社でも使っているのですが、バージョンアップの度に、エラーに悩まされるのでビクビクします。
今週も、3.2系から最新の3.4系にアップデートしたのですが、チケット画面に遷移できないという問題を抱えてしまい、泣く泣く戻すことにしました。

で、その際、thinが止まって、Redmineが起動すらしない、という状況に陥りました。

Apache2やRedmineはエラーログを吐いてくれるくせに、thinはエラーログを吐いてくれません。
なので、thinが起動しないときは、コンソールから起動して停止する理由を確認します。

Answer


スタートメニューのBitnami Redmine Stack を使用するからコンソールを立ち上げて、apps\redmine\htdocs まで移動し、コマンドを入力します。

上は上手く起動した場合ですが、失敗した場合はエラーログが出力されます。例えば、

みたいなエラーが表示されたりします。
原因を解決したら、エラーが出なくなるまで、起動と確認を繰り返します。

開発メモ その98 boostをビルドする際のuser-config.jamの指定

Introduction


boostをビルドする際、C++からPythonを制御できるboost.Python等の一部モジュールの設定を行う際、user-config.jamという設定ファイルを使用しますが、このファイル、公式サイトでは、%HOMEDRIVE%, %HOMEPATH%, %HOME%, %BOOST_BUILD_PATH% に展開するよう書いてあります。

でも、boostに関連するファイルを、全く無関係な場所に展開するのは、何か気持ち悪いです。
なので、その対応策をメモ。

Answer


簡単。

ビルド時に、--user-configを追加するだけ。

開発メモ その97 GitKrakenの最後に開いたリポジトリフォルダを消去する

Introduction


GitKraken便利ですわー。巨大なリポジトリでもそれなりにサクサク動きます。
でも、あまりにも巨大だと、リポジトリを開く処理が終わらないんですよね...

で、一度開いてしまうと、次の起動の初期リポジトリが、そこになってしまうんですよ。
そうなったら、どうにもなりません。

Answer


そんな私の悩みを解決してくださった回答がこちら。

GitKraken config file
where can I find the config or .ini file for GitKraken on Windows7?GitKraken shows many repositories, which I would not like to be listed in the "recent...

ではなく、ここをヒントに、「最後に開いたリポジトリ」の設定がどこかにあるのか、ということを調べました。
%AppData%.gitkraken\profiles\<random string>\profilelastOpenedRepository を削除すればOK!!

開発メモ その96 MSYSのHOMEはWindows上でどこにあるの?

Introduction


ただの備忘録。

Answer


I can't see MSYS home directory under Windows 7's file explorer
I'm using MSYS (MinGW UNIX environment) to get a working UNIX-like environment on my Windows 7 workstation. When I start the MinGW shell, I can see that...

開発メモ その95 WindowsにBazelをインストールする

Introduction


TensorFlowのビルドで一躍有名になったビルドシステムBazelをインストールします。
といっても、TensorFlowではなく、別のgoogle製OSSのビルドに使いたいだけです。

Windowsでの導入記事が見つからないので自分でやってみます。
きっと会社で使うことになるでしょうし。

Explanation


まずは公式でWindowsへの導入説明を読みます。
Bazelのインストールは下記の3手法があります。

  • バイナリのダウンロード
  • Chocolatey
  • ソースから自分でビルド

今回はバイナリをダウンロードします。

Downalod

Githubでダウンロードできますので入手します。Releaseページから各自の環境に適合したものをダウンロードします。
2017/12/24現在で最新は0.9.0です。

Let's install

適当なフォルダに展開するだけです。
そして公式ページでは

We recommend putting the binary in a directory that's on your %PATH%.

つまり、環境変数PATH上のディレクトリに展開することを推奨します。とのお達し。
このあたりは好みです。
今回は、C:\Program Files\Google\Bazel\bazel-0.9.0-windows-x86_64.exeに展開しました。
同じフォルダに、Bazel.exeというシンボリックリンクがあるとちょっと幸せな感じがします。

Setup!!

残念なことに、これで終わりではないです。
CMakeとかインストーラーで終わりなのに、何この面倒な感じ。

公式におけるインストール後の指示には、

  • Python 2.7またはそれ以降
  • msys2
  • msys2 パッケージ
  • Java JDK 8

が必要だと書いてあります。
げんなりします。

Python

既に私のシステムにはPythonがあるので省略します。
AnacondaなりMinicondaなりでインストールするのが簡単です。
Minicondaでしたら、インストールした際のスクリーンショット付きで記事があります。

ディープラーニング Caffe for Windows その1 環境構築
結構前にUbuntuにCaffeをインストールしました。Windows版がある!!会社でWindows上で動作するDeepLearning環境はないか?という質問を受けて、調べることになりました。...

msys2

msys2はインストーラーで提供されています。
公式ページからダウンロードでします。
msysはwikiによると、

Windows上で動作するUnixシェル(Bash)やテキスト操作ユーティリティ(gawk, sed, findutil)、ソースコードパッチ用ツール(diffutil), アーカイブツール(tar, bzip2, zlib)を統合したパッケージである。

とのこと。
ようするにPowerShellみたいな別シェルですね(適当)。

注意するのは、インストール先に、

  • 非ASCII文字
  • 空白
  • シンボリックリンク
  • ショートパス (恐らく8.3形式のことかと)

使うな、とありますので指示に従います。面倒だな。


インストール先に使う文字には注意!!


完了!!

msys2のパッケージ追加

追加のパッケージが必要とのことなので、先ほどインストールしたmsys2を起動します。
スタートメニューからMSYS2 64bitを開きます。

で、MSYS2 MSYSをクリックします。選択肢が複数あって、「うっ」って思いました。止めて欲しいね。
シェルが起動したら、

と入力します。


インストールするか?と聞かれたのでyと入力

が、途中で、


はぁ!?

と出ました。
要約すると、もう一度シェルを立ち上げ直して同じ事をしろ、ってことです。
が、閉じるボタンを押下すると、処理中なのか応答が鈍いですが、

と出るので、OKで停止します。
それでも応答なしとかになったら、タスクマネージャなりAlt+F4で停止させます。
鬱陶しい....

で、再起動後、また同じコマンドを入力したら上手くいきました。
何の苦行だよ....
結構時間がかかりますので、コーヒー飲むなり風呂に入るなりして時間をつぶします。

Java JDK 8

7でもなく9でもなく、8だそうです。何、この厳密なバージョン指定。
BazelにはJDK8が埋め込まれているそうです。なので、普通に起動できたらOKでしょう。
私は起動できたので、何もしませんでした。

起動

コマンドプロンプトから、bazel.exeを起動します。

動いた感じですね。

Conclusion


まぁ、面倒な感じでした。
PythonやJDK8は既にインストール済みだったので、実質msys2のインストールがメインでしたが。