Vine LinuxのRでR commanderを使用できるように変更

VineSeedのRではR commanderを使用することができましたが、 Vine Linux 6では使用することができませんでした。

R commanderを使用するためには tcl-8.5/tk-8.5 が必要なのですが、 Vine Linux 6ではバージョンが8.4だったためです。

そこでtcl85/tk85パッケージを作成することで R commanderを使用することができるようになりました。

※ただし、現状の6.3ではproposed-updatesを適用する必要があります。 6.5βではそのままで使用できます。

sudo apt-get install apt-sourceslist-proposed-updates # 6.3の場合に必要
sudo apt-get update
sudo apt-get install R

これで使用者が少しでも増えるといいです(願望)。

Vine Linux用にghcおよびhaskell-platformのrpmパッケージを作成

久しぶりの記事です。

経緯

以前、 ghc-7.6.3およびhaskell-platform-2013.2.0.0をインストールしたという記事を書きました。その後、rpmパッケージを作成して公式レポジトリにアップロードしました。そもそもはHaskellで書かれた pandoc rpmパッケージ化したいという思いで始めたものです。

その時の思い出のような記事です。

パッケージ化

ghc-7.6.3およびhaskell-2013.2.0.0

野良ビルドに成功していることもあり、このバージョンは比較的楽にパッケージ化できました。前回はghcのバイナリパッケージをそのまま使用していましたが、今回はVine Linux上でビルドしたパッケージを作成する必要があります。そのため、まずghc-bootstrapパッケージを作成しました(バイナリパッケージをダウンロードして configure & make するだけのパッケージ)。

ところがghc-7.6.3はgmp4である必要があるため、 Vine6ではこのままで動作しますが、VineSeedでは動作しません(gmp5のため)。そのため、VineSeed用にgmp4を提供するghc-bootstrap-gmpパッケージを作成しました。ここまでくればghc自身とhaskell-platformのビルドは簡単でした。

しかし、思わぬ所で罠が待っていました。

自分自身でビルドして使用している時には問題はなかったのですが、 rpmパッケージとしてレポジトリにアップロードして数日経った頃に『「Provides: libffi.so.6」を外して頂けませんでしょうか?』との依頼がありました(当該Vine Linux MLアーカイブ)。

パッチを教えてもらったものの、パッチを当てただけではビルド時にエラーが出てしまいかなり思考錯誤しました。ただ、1回のビルドに40分位かかるためなかなか先に進みませんでした。ソースコードを確認したりで大変でした(今さらghc-7.6.3をビルドする人はいないでしょうから細かな内容は省略します)。

ビルド時に「libffiを外部ライブラリとして使用する」ように設定ファイルが作成されるはずが何故かされなかったため、外部ライブラリとして使用するように決め打ちしたパッチを作成することでとりあえず乗り切りました。

ghc-7.10.3およびhaskell-7.10.3

とはいうものの、バージョンが古いのが気にかかっていました。自分自身では使用する気がないのですが、 stack というシステムを使用するにはバージョンが新しい方がいいようでした。

以前からこのバージョンのビルドを試みていたのですが、 ghcはビルドできるのに対して、haskell-platformのビルド時に「ghcの”BINDIST”(バイナリパッケージ)が必要」なため先に進んでいませんでした。公式ホームページでghc-7.10.3のバイナリパッケージをダウンロードして指定しても、 glibcのバージョンが合わないためビルドに失敗しました。

このような時に色々調べていくうち、この ページ で”make binary-dist”コマンドを知り、これでVine Linux上でビルドしたバイナリパッケージを作成できるのではないかと思い試したところ正解でした。そこでghcパッケージの作成時に同時にghc-bindistパッケージを作成するようにして、これを使用してhaskell-platformをビルドしました。これでようやくバージョンアップをする事ができました。

感想

Haskellでプログラミングをするつもりは全くないのですが、 pandocをパッケージ化したいという事だけで ghcおよびhaskell-platformをrpmパッケージ化してしまいました。

Vine Linuxでghcおよびhaskell-platformを必要とする方がどれ位いるか分かりません。それでもお役に立てれば幸いです。ただし当分はバージョンアップする予定はありません。

ついでにHaskellで書かれたタイル型ウインドウマネージャである xmonad および関連パッケージをアップロードしました。 以前 はxmonadを「少し使用してみましたが慣れません。」と書きましたが、今はfluxboxからxmonadに移行しつつあります。

xmobar(メニューバー)で新着メール数(数だけ)を表示させる方法が分かったため完全に移行できそうです。余裕のある時に記事にする予定です。

Vine Linux 6.3でgitを私的rpmパッケージ化

経緯

Emacs-24.5でMELPAからmagitをインストールして使用しています。

しかし、いつの頃からか.gitフォルダが存在していても認識されなくなりした。

調べてみるとログには以下のように書かれていました。

Also note that starting with the ‘2.1.0’ release, Magit requires at least Emacs ‘24.4’ and Git ‘1.9.4’. You should make sure you have at least these releases installed before updating Magit. And if you connect to remote hosts using Tramp, then you should also make sure to install a recent enough Git version on these hosts.

そこで Vine Linux 6.3のgitのバージョンを調べてみると

$ rpm -qa | grep git
git-1.7.4.2-1vl6.x86_64

とやはり対応していませんでした。

gitのビルド

ソースコードからのビルド

そこでソースコードからビルドしました。今回インストールしたgitのバージョンは2.5.3です。

ソースコードは GitHub からダウンロードしました。

tar xzf git-2.5.3.tar.gz
cd git-2.5.3
make prefix=/usr/local all
sudo make prefix=/usr/local install

で/usr/local以下にインストールされます。

この状態でmagitをアップグレードすると動作するようになりました。

私的パッケージ化

せっかくなのでrpmパッケージ化しました。本来のパッケージと名前を区別するために my_git としています。

からダウンロードできます。

/usr/local以下にインストールされるため、本来のパッケージに含まれるファイルを上書きすることはありません。

Vine Linuxでタイル型ウィンドウマネージャ(ratpoisonとawesome)を私的パッケージ化

経緯

Vine Linuxにはタイル型ウィンドウマネージャのパッケージが存在していません。

そこで全くの個人的な興味から、タイル型ウィンドウマネージャとして ratpoison (version 1.4.8)と awesome (version 3.5.6)をパッケージ化したのでrpmファイルをアップロードします。

ただし個人的には fluxbox (version 1.3.5)をカスタマイズして愛用しています。

インストール

ダウンロード先

このページ から適切なrpmファイルをダウンロードしてインストールして下さい。

  • Vine Linux6ならVine6
  • VineSeed(次期Vine Linux7)ならVine7

のページに進み、さらに

  • 32ビット環境であればi686
  • 64ビット環境であればx86_64

のページに進みます。

ratpoison

Vine Linux6とVineSeed(Vine Linux7)用のパッケージを用意しました。

  • ratpoison-1.4.8-***.rpm

をダウンロードしてインストールします。

awesome

VineSeed(Vine Linux7)用のパッケージだけを用意しました。 Vine Linux6では依存パッケージのバージョンが古いためビルドできませんでした。

  • lgi-0.9.0-1vl7.***.rpm
  • awesome-3.5.6-1vl7.***.rpm

の2つのパッケージをダウンロードします。先にlgi(awesomeの依存パッケージ)をインストールしてから awesomeをインストールします。

注意事項

使用方法

ここでは操作方法については書きませんが、他のページで十分調べてから使用するようにして下さい。特に「ログアウト」の方法を知らずにログインしてしまうと大変です(経験済みです)。

責任回避のようなもの

今回はあくまでも私的にパッケージ化したものであり、 Vine Linuxのオフィシャルなものではありません。ですのでパッケージの説明文は非常にいいかげんなものです。また、ライセンスの記載も正しくないものも含まれています。

また、使用した事によって生じた不具合などについては責任を取ることはできません。

Haskell環境およびpandocをVine Linux 6.3(64-bit)に導入する

追記(2016.2.21)

Vine Linux 6 およびVineSeedにrpmパッケージをアップロードしました。したがって以下の記事は過去の記録程度の意味となりました。

現時点では

  • ghc-7.10.3(現時点での最新版)
  • haskell-platform-2015.7.10.3(公式のバージョンは7.10.3)
    • alex, cabal-install, happy, hscolour
  • pandoc, pandoc-citeproc, pandoc-crossref

のパッケージをアップロードしています(ここに至るまでの試行錯誤が大変でした)。

経緯

個人的な興味から pandocをインストールした際のメモです。

pandocについてはこの スライド (73ページ以降)で知りました。

また、るびきち様のこのページ にもpandocを使用した例が載っています。

pandocはHaskell言語で書かれているためまずHaskell処理系のインストールから始めました。 Haskell処理系のインストールは こちらのページ を参考にしました。

インストール手順

今回はバージョンは古いですが、

をインストールしました(私の環境では最新版をインストールしようとすると失敗しました)。

ghcのインストール

tar xzf ghc-7.6.3-x86_64-unknown-linux.tar.bz2
cd ghc-7.6.3
./configure
sudo make install

で /usr/local 以下にインストールされます。 ghc-7.6.3では make は行なわず、いきなり sudo make install を行います。

haskell-platformのインストール

まずhaskell-platformのビルドに必要な gmp-devel、zlib-devel、freeglut-devel をインストールしておきます。

sudo apt-get install gmp-devel zlib-devel freeglut-devel

次に

tar xzf haskell-platform-2013.2.0.0.tar.gz
cd haskell-platform-2013.2.0.0

で展開および移動します。

このままではビルド時にエラーが出るため、 script/build.sh の69行目を

# GHC_PACKAGE_PATH="${ORIG_GHC_PACKAGE_PATH}" \

このようにコメントアウトします。

その後

./configure
make
sudo make install

でインストールします。

これでHaskell処理系がインストールされました。

cabalのアップグレード

次にcabal自体をアップグレードします。

システム全体で使用したいため、以下のようにオプションを付けてインストールします。

su
cabal update
cabal install cabal-install --global

これで現時点での最新版(1.22.6.0)が /usr/local 以下にインストールされます。

pandocのインストール

cabal-installと同様にシステム全体で使用したいため

su
cabal install pandoc --global

でインストールします。

以上です。

余談

pandoc vs. org-mode(Emacs)

ただし現時点でpandocを使用する機会はほとんどありません。 Emacsの org-mode で文章を作成し、(lualatexを使用して)直接PDFファイルに変換することが多いです。

xmonad vs. fluxbox

また、タイル型ウィンドウマネージャーの xmonad

su
cabal install xmonad --global
cabal install xmonad-contrib --global
cabal install xmobar --global

のようにしてインストールしてみました。評判はいいので少し使用してみましたが慣れません。個人的には fluxbox が好きなのでメニューなどをカスタマイズして常用しています。

uim-skkを導入するための設定

経緯

Emacs上で日本語を入力するためのシステムとして SKKを使用しています。

今回Emacs以外のアプリケーションでもSKKを使用するように設定したため、その際の設定をメモしておきます。

現在のVine Linux 6はuimのバージョンが1.6.1のため sticky-shiftが実現できないため、最新版(1.8.2)をインストールしました。

uimのインスール

uimの再ビルド

VineSeedからuim-1.8.6-2vl7.src.rpmをダウンロードし、 vbuilderでRPMパッケージを作成します。 vbuilderはあらかじめインストールしておきます。

sudo apt-get install vbootstrap
wget http://ftp.vinelinux.org/pub/Vine/apt/VineSeed/SRPMS.plus/uim-1.8.6-2vl7.src.rpm
sudo vbuilder --unionfs clean build build-rpm uim-1.8.6-2vl7.src.rpm

~/rpm/vbuilder/6/RPMS/以下のフォルダ(32bitと64bitで異なる)に rpmパッケージが作成されるため、必要なパッケージをインストールします。

自分でソースコードをダウンロードしてビルドしてもいいのですが、依存パッケージを自分の環境にインストールしなければならないことを考えると、 vbuilderを使用してビルドした方が良いと思います。

作成されたパッケージ

uim-1.8.6-2vl6.x86_64.rpm
uim-anthy-1.8.6-2vl6.x86_64.rpm
uim-devel-1.8.6-2vl6.x86_64.rpm
uim-el-1.8.6-2vl6.x86_64.rpm
uim-fep-1.8.6-2vl6.x86_64.rpm
uim-gtk-1.8.6-2vl6.x86_64.rpm
uim-gtk3-1.8.6-2vl6.x86_64.rpm
uim-kde-applet-1.8.6-2vl6.x86_64.rpm
uim-m17n-1.8.6-2vl6.x86_64.rpm
uim-mana-1.8.6-2vl6.x86_64.rpm
uim-qt-1.8.6-2vl6.x86_64.rpm
uim-qt4-1.8.6-2vl6.x86_64.rpm
uim-skk-1.8.6-2vl6.x86_64.rpm
uim-xim-1.8.6-2vl6.x86_64.rpm

作成されたパッケージのインストール

今回は

uim-1.8.6-2vl6.x86_64.rpm
uim-xim-1.8.6-2vl6.x86_64.rpm
uim-skk-1.8.6-2vl6.x86_64.rpm
uim-gtk-1.8.6-2vl6.x86_64.rpm  # uimの設定を行なうために必要
uim-gtk3-1.8.6-2vl6.x86_64.rpm # 同上(gtk3版)
uim-fep-1.8.6-2vl6.x86_64.rpm  # ターミナルなどで日本語入力するために必要

をapt-get installコマンドでインストールしました(必要に応じて依存パッケージが同時にインストールされます)。

uimの設定

uimの設定画面

uim-pref-gtk &

あるいは

uim-pref-gtk3 &

で設定画面を開き、各種設定を行います。

個人的な設定(主なもののみ)

  • 全体設定
    • 標準の入力方式:「直接入力」
    • 入力方式の一時切り換えキー:「”zenkaku-hankaku”」
  • SKK
    • 標準の入力モード:「ひらがな」
  • SKK辞書
    • 「辞書ファイルの代わりに辞書サーバを使用」:オン
      • (自分でパッケージ化しているので使用しないと)
    • 「個人辞書ファイル」:適度な場所を指定
  • SKKキー設定1
    • 「sticky」(sticky-shift):”Henkan_Mode”

uimをデフォルトの漢字変換システムにするための設定

GNOMEでは「システムメニュー」から、「設定」→「ユーザ向け」→「漢字変換システムの選択」を実行し、「uim」を選択します。ログアウトして再ログインすると使用できるようになります。

fluxboxでの設定方法は分かりませんでした。コマンドが分かれば可能なのですが。

【追記】 vutils-guiパッケージに含まれるコマンドを使用して

gsetime &

で設定画面が出ることが分かりました。

uimを自動起動するための設定

GNOMEの場合

自動起動するアプリケーションに

uim-toolbar-gtk-systray

あるいは

uim-toolbar-gtk3-systray

を追加します。

fluxboxの場合

~/.fluxbox/startup

uim-toolbar-gtk-systray &
uim-toolbar-gtk &

あるいは

uim-toolbar-gtk3-systray &
uim-toolbar-gtk3 &

を追加します。

z + spaceで全角スペースを入力するための設定

今回は http://makenowjust.hatenablog.com/entry/2014/08/10/233424 の内容を参考にしました。

以下の内容で ~/.uim を作成します。文字コードはEUC-JPです。

(define uim-pref-suppress-dot-uim-warning-dialog? #t)

(require-module "skk")

(define skk-ja-rk-rule
  (append '(
            ((("z" " ") . ()) (" " " " " "))
            )
          skk-ja-rk-rule))

Firefoxで入力ができない場合の設定

~/.bash_profile

export GTK_IM_MODULE=uim firefox

を追加します。

他の候補:fcitx-skk

現時点でのVineSeedではfcitxがインストールされているため fcitx-skkを自分でビルドして試しました。

しかし、

  • 漢字変換後に確定する場合にテンキーを使用しなければならない
  • sticky-shiftが使用できない

という欠点があったため uim-skkの方が良いと感じました。

Emacsでddskkパッケージを使用し、さらにcdb形式の辞書ファイルを自作するための設定

経緯

Emacsで日本語入力をする際にSKKを使用しています。最近、 package.elで導入するSKK でddskkがMELPAに登録されたことを知ったため、インストールしてみました。

従来の方法よりも楽になりました。

  • 辞書ファイルの統合
  • 辞書サーバの設定

も行なったので、その時の内容をメモ的に残しておきます。

ddskkパッケージ

dskkパッケージのインストール

MELPAを使用する方法は省略します。

M-x package-refresh-contents
M-x package-install ddskk

でインストールします。同時にcccとcdbの2つのパッケージもインストールされます。

init.elの設定

(require 'skk)

(global-set-key (kbd "C-x C-j") 'skk-mode)
;; (global-set-key "\C-xj" 'skk-auto-fill-mode) ;; 改行を自動入力する場合
;; (global-set-key "\C-xt" 'skk-tutorial)       ;; チュートリアル
(setq default-input-method "japanese-skk")

(setq skk-user-directory "~/Dropbox/emacs/SKK") ;; 設定ファイル、個人辞書ファイルの置き場
(setq skk-init-file "~/Dropbox/emacs/SKK/init") ;; 設定ファイルの指定

を追加します。

initの設定

使用する辞書ファイルをいくつか統合してさらにcdb化し、 SKK-JISYO.my.cdb というファイル名にしています。そこまで必要なければ SKK-JISYO.L でいいと思います。

;; -*-mode: emacs-lisp; -*-

;;; 使用する辞書の設定
;; large辞書
(setq skk-cdb-large-jisyo "/usr/local/share/skk/SKK-JISYO.my.cdb")
;; 個人辞書
(setq skk-jisyo "~/Dropbox/emacs/SKK/skk-jisyo")
(setq skk-backup-jisyo "~/Dropbox/emacs/SKK/skk-jisyo.bak")

;; From DDSKK 14.2:
;;   メイン辞書(L 辞書、CDB 形式辞書、辞書サーバ)以外の辞書を指定する
(setq skk-extra-jisyo-file-list
      (list
       '("/usr/local/share/skk/SKK-JISYO.JIS3_4" . euc-jisx0213)
       ))

;; 変換記録を保存するファイル名
(setq skk-record-file "~/Dropbox/emacs/SKK/record")

;;; 外見の変更
;; モードラインに色をつける設定
(setq skk-use-color-cursor t)
(setq skk-indicator-use-cursor-color t)

;; 変換候補のハイライトの設定
(setq skk-henkan-face (skk-make-face 'gray80/gray25)) ;; お好みで

これで使用できるようになったため、今までのddskkをアンインストールしました(make uninstallは用意されていないため自力で削除)。

辞書ファイルの用意

辞書ファイルの統合

統合したい辞書ファイルを用意して同じフォルダに入れ、

skkdic-expr2 \
    SKK-JISYO.JIS2 + \
    SKK-JISYO.L + \
    SKK-JISYO.assoc + \
    SKK-JISYO.edict + \
    SKK-JISYO.geo + \
    SKK-JISYO.itaiji + \
    SKK-JISYO.jinmei + \
    SKK-JISYO.law + \
    SKK-JISYO.office.zipcode + \
    SKK-JISYO.propernoun + \
    SKK-JISYO.station + \
    SKK-JISYO.zipcode | skkdic-sort > SKK-JISYO.my

のようなスクリプトを実行すると SKK-JISYO.my が生成されるため、 /usr/local/share/skk にコピーします(今回のようにcdb形式の辞書ファイルを使用する場合には不要)。

skkdic-expr2

私が使用しているVine Linuxでは skktoolsをインストールしても skkdic-expr2 コマンドが導入されなかったため少しだけ大変でした。

結果だけ書くと、メーリングリストで許可を得た上でパッケージを更新することで対処しました。

SPECファイルに

BuildRequires: glib2-devel

の行を追加することで skkdic-expr2 がビルドされるようになりました。

cdb形式の辞書の作成

このためにはパッケージを自分でインストールする必要があります。

tinycdb

tinycdb は辞書サーバであるdbskkd-cdbをビルドするために必要なプログラムです。 cdb形式の辞書を作成するためには、この中に含まれる cdb が必要です。

wget http://www.corpit.ru/mjt/tinycdb/tinycdb-0.78.tar.gz
tar xzf tinycdb-0.78.tar.gz
cd tinycdb-0.78
make
sudo make install

dbskkd-cdb

dbskkd-cdb は辞書サーバの1つです。

この中に含まれるスクリプトを改変して使用します。

  • skktocdbm.sh
    #!/bin/sh
    # Converting SKK Dictionary to cdbmake-acceptable form
    # Originally by D. J. Bernstein's 12tocdbm.sh
    # modified by Kenji Rikitake
    # bugfix of truncated strings by Hideto Kihara
    # bugfix of locale by Tatsuya Kinoshita
    LC_ALL=C awk '
      /^[^;]/ {
        s = substr($0, index($0, " ") + 1)
        print "+" length($1) "," length(s) ":" $1 "->" s
      }
      END {
        print ""
      }
    '
    
  • makeskkcdb.sh
    #!/bin/sh
    ./skktocdbm.sh < /usr/local/share/skk/SKK-JISYO.L | \
      cdb -c -t - SKK-JISYO.L.cdb
    
  • skktocdb

    上の2つのスクリプトを組み合せて作成したのが以下のスクリプトです。

    #!/bin/sh
    
    LC_ALL=C awk '
      /^[^;]/ {
        s = substr($0, index($0, " ") + 1)
        print "+" length($1) "," length(s) ":" $1 "->" s
      }
      END {
        print ""
      }
    ' $1 | cdb -c -t - $1.cdb
    

    実行権限をつけて/usr/local/binにコピーしました。

    skktocdb SKK-JISYO.my
    

    のように使用すると同じフォルダに SKK-JISYO.my.cdb が作成されます。

    このファイルを/usr/local/share/skkにコピーします。これで自作の辞書ファイルを使用できるようになります。

辞書サーバを使用する場合

この場合には、initファイルの

(setq skk-cdb-large-jisyo "/usr/local/share/skk/SKK-JISYO.my.cdb")

の記述は必要ありません。

先日、Vine Linuxの dbskkd-cdb パッケージを更新しました。

EAGLE 雑記 の内容を参考にして任意の辞書ファイルを指定することができるように改変しました。

/etc/xinetd.d/dbskkd-cdbの例

# default: on
# description: dbskkd-cdb is a skkserv implementation, \
#              a Japanese dictionary server for the Simple Kana to \
#              Kanji conversion program.
service skkserv
{
    port = 1178
    socket_type = stream
    wait = no
    only_from = 127.0.0.1
    user = nobody
    server = /usr/sbin/dbskkd-cdb
    # specify dictionary path
    server_args = /usr/local/share/skk/SKK-JISYO.my.cdb
    log_on_failure += USERID
    disable = no
}

変更後は

sudo /etc/init.d/xinetd restart

でxinet.dを再起動すれば辞書サーバでSKKを使用できるようになります。