CentOS 6.5上での emacs 24.3 のビルド

ソースをダウンロードして展開する。

$ curl -O http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-24.3.tar.gz
$ tar zxvf emacs-24.3.tar.gz
$ cd emacs-24.3/

configure オプションなしの場合、フル機能有りでのビルドとなるため、必要なライブラリをYumでインストールしておく。

INSTALLドキュメントを確認しながら --without-png オプションなどを指定して機能を外していってもいいけど、むしろ面倒なので全部入れる。

$ sudo yum install gtk2-devel libXpm-devel libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel ncurses-devel
$ ./configure

configure がうまくいったら make

$ make

すると下のようなエラーがでて死にかける。

xsettings.o: In function `something_changed_gsettingsCB':
/home/keik/emacs-24.3/src/xsettings.c:215: undefined reference to `g_settings_get_value'
/home/keik/emacs-24.3/src/xsettings.c:230: undefined reference to `g_settings_get_value'
/home/keik/emacs-24.3/src/xsettings.c:244: undefined reference to `g_settings_get_value'
xsettings.o: In function `init_gsettings':
/home/keik/emacs-24.3/src/xsettings.c:816: undefined reference to `g_settings_list_schemas'
/home/keik/emacs-24.3/src/xsettings.c:822: undefined reference to `g_settings_new'
/home/keik/emacs-24.3/src/xsettings.c:828: undefined reference to `g_settings_get_value'
/home/keik/emacs-24.3/src/xsettings.c:839: undefined reference to `g_settings_get_value'
/home/keik/emacs-24.3/src/xsettings.c:848: undefined reference to `g_settings_get_value'
collect2: ld returned 1 exit status
make[1]: *** [temacs] Error 1
make[1]: Leaving directory `/home/keik/emacs-24.3/src'
make: *** [src] Error 2

対処策としては configure 時に --without-gsettings オプションをつけるといい。(参照)

$ make distclean                     # 掃除
$ ./configure --without-gsettings    # オプション追加
$ make                               # 今度はうまくいく
$ sudo make install                  # ウェイ

(参考) 失敗の原因

メーリングリストをきちんと読んでみると Red HatがGlib2に手を入れている ことが原因らしいことがわかる。

  • The previous rebase to GLib 2.26 added the GSettings API, but without the gsettings-desktop-schemas package. As a consequence, some programs (such as OpenJDK or VMWare) attempted to use GSettings, but since gsettings-desktop-schemas was absent, these programs terminated unexpectedly. This update removes GSettings from glib2, and the crashes now no longer occur. (BZ#1065429)

クソ意訳すると、「GLib2がGSettings APIとかいう実装のないAPIを持ってるせいでOpenJDKが死ぬのでGSettings API削除したった。だからもう泣くな」とのこと。

CentOS 6.5でGitやSubversionクライアントをバージョンアップすると捗る

RHELの練習のつもりで普段の作業用マシンにCentOS 6.5を使用しているのだけれど、デフォルト設定の yum でインストールできるGitやSubversionなどのクライアントのバージョンが古めなのでバージョンアップしてみたところ、少しばかり前向きな人生が送れるようになった。

Gitは1.7.11以上にすると捗るぞ

Git 1.7.11で git difftool に追加された、ディレクトリ単位でのdiffを見るための -d (--dir-diff) オプションがサイコー。

以前はファイル1つずつdiffを確認してはハイ次、のような操作だったのが、これを使うと差分のあるファイルの一覧が表示され、まとめて確認できる。詳しい紹介はこちらさま git difftool --dir-diff が便利すぎて泣きそうです - てっく煮ブログ にあります。

バージョンアップの方法は、 https://www.kernel.org/pub/software/scm/git/ から適当なtarボールを落としてINSTALLドキュメントのとおりビルド。分かりやすくてビルド初心者のおれでも問題なしだった。

Subversionは1.7以上にすると捗るぞ

Subversion 1.6以前は作業コピーのすべてのサブディレクトリに .svn とかいう設定用ディレクトリが作られていたのが、1.7以降では作業コピーのルートにのみ作られるようになった。

サブディレクトリごとに設定ファイルが置かれていたことで、ディレクトリ構造をちょっと変えたり、ビルドされたファイル(をコミットするほうがどうかしてる)をクリーンビルドするたびにハゲかけていた事案が、バージョンアップによって解消された。

バージョンアップの方法は、Subversion関連のサービスを提供しているWANdisco社の提供するyumリポジトリを追加して yum 。詳しい手順はこちらさま Subversion1.8をRPMでインストールする - わんこいん にあります。


f:id:keik_117:20140704013348p:plain

WANdisco社の激アツなウェブサイト も是非ご確認ください。

Cordovaプラグイン追加時のプロキシ設定

Apache Cordova 3.5でのこと。

強固なセッキュリティで守られているシャナイネットワークから

$ cordova plugin add org.apache.cordova.device

したら

Error: Fetching plugin failed: Error: read ECONNRESET

と出たので、ハイハイプロキシプロキシと思って

cordova-cli will use npm's proxy settings.

https://github.com/apache/cordova-cli#proxy-settings にある通り設定したけどダメ。

それでソース確認したら .plugmanrc ファイルを参照することになっていた ので

$ vi ~/.plugmanrc

proxy = http://myproxy.example.net:port/

として再度 cordova plugin addしたらちゃんと追加できた。

プラグインをウェブブラウザでダウンロードしてきても大した手間ではないんですけどね。


f:id:keik_117:20140703233857p:plain

ウィッス

プロフィール

エスアイアーでエスイーしています。

主な仕事はJSHintのエラー内容をエクセルにコピペして下請ベンダの頭を殴ることでしたが、近頃は機械学習の真似事をしています。好きな統計用語は カルバック・ライブラー・ダイバージェンス です。

2016/6 現状こんな感じです。

そこそこできる

少しはできる

ほんの少しできる

わからなくて辛い