2013年9月23日月曜日

Ubuntu12.04LTSにR3.0.1をインストールする

LaunchPad PPA を使用して Mercurial を最新版にしたので、R も Ubuntu12.04LTS 標準の 2.14 系から最新の 3.0 系にアップデートしてみます。CRAN も APT ラインを提供していますが、今回はより多くのパッケージをサポート *1 している RutteR を使用します。

LaunchPad PPA リポジトリの追加とインストールの実行

RutteR のページで、登録する APT ラインを確認します。

今回は 12.04LTS なので、以下の2行です。

deb http://ppa.launchpad.net/marutter/rrutter/ubuntu precise main 
deb-src http://ppa.launchpad.net/marutter/rrutter/ubuntu precise main 

以降、Mercurial のインストールと同様の手順で APT ラインの追加およびインストールを実行します。

synapticの「セクション」表示の「GNU R言語」には今回 LaunchPad PPA で追加したパッケージは表示されないようなので、「由来」表示で操作するのが良いでしょう。

これで R3.0.1 および種々のパッケージがインストール出来ました。

*1 例えば Python から R を使うためのライブラリ rpy2 などもサポートしています。ちなみに CRAN の APT ラインがサポートしているパッケージは README で確認できます。

2013年9月22日日曜日

Mercurial:Ubuntu12.04LTSに最新のリリース版をインストールする

生活環境を MacBook から Ubuntu@ThinkPad に切り替えて半年ほど経ちます。Mercurial は、MacOSX では homebrew で最新版を追えていたのですが、Ubuntu 12.04LTS の標準のリポジトリは 2.0 系です。普段の使用では差し迫っての必要はない *1 のですが、活発な開発の恩恵を受けられないのはもったいないので、最新版を追ってみることにしました。

LaunchPad PPAからのインストール

Ubuntu で Mercurial の最新版を追う場合、LaunchPad PPA からのインストールと pip を使用する方法の二通り *2 がありますが、今回は LaunchPad PPA を選びました。*3

apt-get でのインストールは、基本的には /etc/apt/sources.list にリポジトリを追記すればよいのですが、今回は GUI のインターフェースである synaptic を使用します。

イントール済みパッケージの削除

バージョンの確認を兼ねて、インストールされている標準パッケージを削除しておきます。

LaunchPad PPA リポジトリの追加

"Mercurial PPA Packagers" team のリリース版ページで、登録する APT ラインを確認します。

今回は12.04LTS なので、以下の2行です。

deb http://ppa.launchpad.net/mercurial-ppa/releases/ubuntu precise main 
deb-src http://ppa.launchpad.net/mercurial-ppa/releases/ubuntu precise main 

synaptic の [設定] - [リポジトリ] でソフトウェアソースのウインドウを開き、「他のソフトウェア」タブを選択します。

追加ボタンをクリックし、APT ラインを登録します。

sources.list を確認すると、確かに追加されています。

$ grep "mercurial" /etc/apt/sources.list
deb http://ppa.launchpad.net/mercurial-ppa/releases/ubuntu precise main
deb-src http://ppa.launchpad.net/mercurial-ppa/releases/ubuntu precise main
$ 

最新リリース版インストールの実行

「再読込」ボタンでパッケージ情報を更新すると、最新リリース版の Mercurial が表示されます。必要なパッケージを選択して「適用」ボタンでインストールします。

これで最新のリリース版である 2.7 *4 が使用できるようになりました。
$ hg --version
Mercurial - 分散構成管理ツール(バージョン 2.7)
(詳細は http://mercurial.selenic.com を参照してください)

Copyright (C) 2005-2013 Matt Mackall 他
本製品はフリーソフトウェアです。
頒布条件に関しては同梱されるライセンス条項をお読みください。
市場適合性や特定用途への可否を含め、 本製品は無保証です。
$ 

拡張機能を使用する場合の注意

LaunchPad PPA から Mercurial をインストールした場合、拡張機能の apt-get インストールに失敗することがあります。これは標準パッケージとの依存関係を解決できないためです。下記は hgsubversion をインストールしようとした場合のエラーメッセージです。

今回は LaunchPad PPA からインストールしましたが、必要な拡張機能が pip で提供されている場合、Mercurial も含めて全て pip でのインストールを検討した方が良さそうです。


*1 藤原克則氏による「妥当」な Mercurial バージョンの情報によると、2.0.x は『現状でそこそこ妥当な Mercurial の版』であるようです。

*2 もちろん過去エントリのようにソースからの make install も可能です。本気で最新版を追うのであればパッケージ化を待つよりソースからの方が早いですね。

*3 後述のように、Mercurial を LaunchPad PPA からインストールした場合、拡張機能の apt-get インストールに失敗する場合があります。

*4 これを書いている 2013/09/22 時点で既に 2.7.1 がリリースされていますが、LaunchPad PPA には反映されていません。mercurial-ja によると「月例のバグ修正版」とのことなので反映して欲しいところですが、障害修正は2件のみなので必ずしも必要でないかもしれません。

2012年4月29日日曜日

emacs/mewのキーバインド覚え書き

普段emacsのキーバインドは意識せずに使用していますが、ふとわからなくなった時に思い出すのに苦労するので、よく使用するものをまとめました。

emacsでよく使用するキーバインド

キーボードマクロ

キーボードマクロの定義開始
C-x (
キーボードマクロの定義終了
C-x )
キーボードマクロの実行
C-x e
(n)回の繰り返し実行
C-u (n) C-x e

インデント

領域をインデント
領域を指定し、C-M-\ *1

文字コードを指定してファイルを開く

文字コードを指定して開く
C-x RET c 文字コードを入力 RET C-x C-f
文字コードを指定して開き直す
C-x RET c 文字コードを入力 RET C-x C-v RET

分割ウィンドウの幅を変更

縦幅を拡げる
C-x ^
縦幅を縮める
M-x shrink-window [return]
横幅を拡げる
C-x }
横幅を縮める
C-x {
各ウィンドウを均等にする
C-x +

mewでよく使用するキーバインド

マルチパートの編集

編集領域と添付領域の移動
C-M-n
添付ファイルの削除
該当のパートで d
マルチパートの破棄
マルチパート編集領域のパート番号で d

pgp公開鍵の送付/登録

メールにpgp公開鍵を添付する
マルチパートを作成し、挿入するパートにカーソルを合わせて p
メール添付で受け取った公開鍵の登録:自動認識された場合
C-c C-e → 登録後、gpgコマンドで署名する
メール添付で受け取った公開鍵の登録:自動認識されなかった場合
C-u C-c C-e で Application/Pgp-Keys

メールをpgpで暗号化する

メールに署名
C-c C-s (メールは +queue に移動します)
メールの暗号化
C-c C-e (メールは +queue に移動します)
メールに署名して暗号化
C-c C-s (メールは +queue に移動します)
パートに署名
署名するパートにカーソルを合わせて S
パートの暗号化
暗号化するパートにカーソルを合わせて E

サマリ操作

不要になったディレクトリの削除
ディレクトリを消して,Summary バッファ で C-u Z
サマリのソート(6.x以降)
M-x mew-summary-sort
サマリのパック(6.x以降)
C-u O

その他

文字化けメールに文字セットを再解釈
C-c C-l 文字セット指定 RET
保存したドラフトの再編集
再編集したいメールを選択して E


*1 通常 Meta は "Esc" キーに割り振られていますが、私は移動の少ない "C-[" を使用しています。その場合 "C-[ C-\" です。

2011年5月31日火曜日

mltermの設定

VineLinuxを端末にしていたときは愛用 *1 していた mlterm ですが、MacBookがメイン端末になってからはご無沙汰していました。iTerm2で一通りの用が足りている *2 のですが、ふと思い立って調べたら MacPorts に入っていたので、インストールして以前使用していた設定をまとめてみました。

設定ファイルのひな形をコピーする

VineLinuxでパッケージでインストールした場合、/etc/mlterm/ に設定ファイルの雛形がインストールされましたが、MacPortsも同様でした (ただし MacPorts は /opt/local/ 配下にインストールされるので、/opt/local/etc/mlterm/ です)。ホームディレクトリに .mlterm/ の名前でコピーした後、編集します。

$ sudo port install mlterm
$ cp -r /opt/local/etc/mlterm ~/.mlterm

設定例:.mlterm/main

種々の設定を .mlterm/main に記述します。

# -- Encoding 関連 --
# エンコーディングの指定
# (ISO-8859-[1-11], ISO-8859-[13-16], TIS-620 (same as ISO-8859-11),
#  KOI8-[RUT], ISCII, VISCII, TCVN5712, GEORGIAN_PS, CP1251, CP1255,
#  EUC-JP, EUC-JISX0213, Shift_JIS, Shift_JISX0213, ISO-2022-JP[1-3],
#  EUC-KR, UHC, JOHAB, ISO-2022-KR, GB2312 (EUC-CN), GBK, GB18030,
#  ISO-2022-CN, HZ, EUC-TW, BIG5, BIG5HKSCS, UTF-8, AUTO)
ENCODING = auto

# -- Font 関連 --
# デフォルトフォントサイズ
fontsize = 14

# 変更可能なフォントサイズの範囲
font_size_range = 6-30

# larger,smaller ボタンでのフォントサイズの変化量(*1*)      
step_in_changing_font_size = 1

# 可変長コラム幅を使用する
use_variable_column_width = false 

# アンチエイリアスフォントを使用する
use_anti_alias = false

# アンチエイリアス(Xft)時、JISX0208 の Unicode 変換に CP932 の変換テーブル
# を使う
use_cp932_ucs_for_xft = true

# UNICODE を適当な文字集合にmapして、UNICODE フォントを使わずに表示する
not_use_unicode_font = true

# すべての文字を UNICODE フォントだけを使って表示する
only_use_unicode_font = false

# US_ASCII の表示には、必ず ISO8859-1 フォントを使用する
iso88591_font_for_usascii = false

# -- Appearance 関連 --
# スクロールバーをつける
use_scrollbar = true

# スクロールバーのつけ方
scrollbar_mode = right

# 使いたいスクロールバーの名前
# (simple,sample,sample2,sample3,next,motif,athena,mozmodern)
scrollbar_view_name = athena

# 端末画面の前景色
fg_color = black

# 同背景色
bg_color = white

# -- その他 --
# XIM を使う
use_xim = true

# インプットメソッド
# (xim,uim,iiimf,scim,m17n-lib,none)
input_method = xim

# タブ幅
tabsize = 4

# ログの行数 
logsize = 1024

# GUI 設定コマンドのパス
# (controll+button{1|2|3} を押した時起動するツール)
conf_menu_path_1 = mlterm-menu
conf_menu_path_2 = mlterm-zoom
conf_menu_path_3 = mlconfig

# バックスクロール時に端末出力があっても画面が流れないようにする。
static_backscroll_mode = true

設定例:.mlterm/font

フォントの設定は .mlterm/font に記述します。

DEC_SPECIAL = 10,a10;12,6x12;14,7x14;16,8x16;
ISO8859_1 = -kochi-mincho-medium-*--%d-*-iso8859-1;10,a10;12,6x12;
ISO8859_1_BOLD = 10,a10B;14,7x14bold;
JISX0201_KATA = 10,r10;12,r12;14,r14;16,r16;
JISX0201_KATA_BOLD = 10,r10;
JISX0201_ROMAN = 10,r10;12,r12;14,r14;16,r16;
JISX0208_1983 = 10,k10;12,k12;14,k14;16,kanji16;
JISX0208_1983_BOLD = 10,k10B;
TCVN5712 = 14,-*-.vntime-*--14-*-iso8859-1;

上記はVineLinuxで使用していた設定ですが、MacOSXには東風フォントが入っていないため、2行目の -kochi-mincho-medium- はエラーになります。これは要変更ですが、monacoあたりを指定すればよいのでしょうか?。検討中です。


*1 gnome-terminalなどのアンチエイリアスがかかった表示では 「;」と「:」、「.」と「,」などが分かりにくくて困るので、アンチエイリアスをOFFにできるのが高評価でした。

*2 UTF-8をはじめとする多言語に対応し、ウィンドウごとに文字コードを設定できるので、EUCなサーバやSJISのインターフェースファイルを扱うときに重宝します。というか MacOSX 標準のターミナルはそれができないのでサーバ管理に使うのは厳しいですね。

2011年5月29日日曜日

yumのオプション

いつも使い方がわからなくなるので、メモっておきます。

ダウンロードしたパッケージやキャッシュの削除

# yum clean オプション名

オプション名には、以下を使用可能です。

headers
パッケージのヘッダーのクリア
packages
ダウンロードしたパッケージのクリア
cache
キャッシュのクリア
metadata
メタデータのクリア
all
上記全てのクリア

便利なサブコマンド

パッケージ情報の表示

# yum info パッケージ名

キーワードによるパッケージの検索

# yum search キーワード

アップデート可能なパッケージの表示

# yum list updates

インストール済のパッケージの表示

# yum list installed

特定のパッケージのアップデートを無視する

特定のパッケージのみアップデートしたくない場合は /etc/yum.conf に exclude=パッケージ名 の記述を追加します。例えば、カーネルのみアップデータしたくない場合 *1 は以下のように記述します。

exclude=kernel*

期待通り kernel を除外できているか、確認します。

# yum list updates | grep kernel

*1 Xen環境を構築しているサーバでは、安全のためにこのように設定しています(実際にはアップデートしようとするとエラーになるようですが)。