Pages

2009/12/22

結局

SSHでのアクセスの許可が下りたため、FTPは意味がなくなった…。9.04での運用で安定しているため、9.10にアップグレードもしていないが、年末年始を利用してアップグレードするのも有りかも知れない。とりあえず、このまま何事もなく安定運用できることを願う。

2009/11/12

FTPサーバを稼働

外部からのSSH接続が許可されていないため、FTPとcron、シェルスクリプトを駆使した運用を行うことにした。cronやシェルスクリプトに関してはまた後日触れるが、今日はFTPのインストールと設定までをメモしておく。今回は自分の持っている本に従ってvsftpdを使うことにした。インストールは簡単で以下の通り。
sudo apt-get install vsftpd

今回の目的ではanonymous接続を許可する必要はないし、自分だけが接続できればいいので、『/etc/vsftpd.conf』にanonymous_enable=NOを加え、local_enable=YESのコメントアウトを行った。設定ファイルに変更を加えた後、以下のコマンドで再起動とファイアウォールの設定を行った。
sudo /etc/init.d/vsftpd restart
sudo ufw allow 21/tcp

2009/10/27

Emacs設定

auto-complete-acr.el 0.2のインストール』に触発されて、ESSを便利に使いたいと思い、『これからEmacsでR使う人のための設定まとめ』を参考にごにょごにょしてみた。なにげにファイルの配置とかの情報がないし、そもそもロードパスがどこに通ってて、拡張ファイルはどこに置けばいいのかもわかんなかったので結構はまった…。

ダウンロード


auto-complete.elは『テキスト入力中に補完候補を自動的に表示してくれる auto-complete.el をリリースしました』から、その他のファイルは、『myuhe / auto-complete-acr.el』からダウンロードした。

配置


.emacs.dの下にelispディレクトリを作り、auto-complete.el、anythig.el、anything-config.elは直接配置して、yasnippetとsnippetsはelispの下にディレクトリを作って配置した。

.emacs


最後にこれからEmacsでR使う人のための設定まとめにあった内容を.emacsに追加した。ただし、ロードパスの部分だけ変更している。今のところ、僕の.emacsは下のようになっている。これから細かいカスタマイズをしていくと変わっていくだろうけど、まずは今の状態をメモしておく。

; ESSを追加
(require 'ess-site)

; load-pathを追加
(setq load-path(cons "~/.emacs.d/elisp" load-path))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;anything-c-source-R-helpの設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(setq anything-c-source-R-help
'((name . "R objects / help")
(init . (lambda ()
;; this grabs the process name associated with the buffer
(setq anything-c-ess-local-process-name ess-local-process-name)))
(candidates . (lambda ()
(condition-case nil
(ess-get-object-list anything-c-ess-local-process-name)
(error nil))))
(action
("help" . ess-display-help-on-object)
("head (10)" . (lambda(obj-name)
(ess-execute (concat "head(" obj-name ", n = 10)\n") nil (concat "R head: " obj-name))))
("head (100)" . (lambda(obj-name)
(ess-execute (concat "head(" obj-name ", n = 100)\n") nil (concat "R head: " obj-name))))
("tail" . (lambda(obj-name)
(ess-execute (concat "tail(" obj-name ", n = 10)\n") nil (concat "R tail: " obj-name))))
("str" . (lambda(obj-name)
(ess-execute (concat "str(" obj-name ")\n") nil (concat "R str: " obj-name))))
("summary" . (lambda(obj-name)
(ess-execute (concat "summary(" obj-name ")\n") nil (concat "R summary: " obj-name))))
("view source" . (lambda(obj-name)
(ess-execute (concat "print(" obj-name ")\n") nil (concat "R object: " obj-name))))
("dput" . (lambda(obj-name)
(ess-execute (concat "dput(" obj-name ")\n") nil (concat "R dput: " obj-name)))))
(volatile)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; anything-c-source-R-localの設定
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(setq anything-c-source-R-local
'((name . "R local objects")
(init . (lambda ()
;; this grabs the process name associated with the buffer
(setq anything-c-ess-local-process-name ess-local-process-name)
;; this grabs the buffer for later use
(setq anything-c-ess-buffer (current-buffer))))
(candidates . (lambda ()
(let (buf)
(condition-case nil
(with-temp-buffer
(progn
(setq buf (current-buffer))
(with-current-buffer anything-c-ess-buffer
(ess-command "print(ls.str(), max.level=0)\n" buf))
(split-string (buffer-string) "\n" t)))
(error nil)))))
(display-to-real . (lambda (obj-name) (car (split-string obj-name " : " t))))
(action
("str" . (lambda(obj-name)
(ess-execute (concat "str(" obj-name ")\n") nil (concat "R str: " obj-name))))
("summary" . (lambda(obj-name)
(ess-execute (concat "summary(" obj-name ")\n") nil (concat "R summary: " obj-name))))
("head (10)" . (lambda(obj-name)
(ess-execute (concat "head(" obj-name ", n = 10)\n") nil (concat "R head: " obj-name))))
("head (100)" . (lambda(obj-name)
(ess-execute (concat "head(" obj-name ", n = 100)\n") nil (concat "R head: " obj-name))))
("tail" . (lambda(obj-name)
(ess-execute (concat "tail(" obj-name ", n = 10)\n") nil (concat "R tail: " obj-name))))
("print" . (lambda(obj-name)
(ess-execute (concat "print(" obj-name ")\n") nil (concat "R object: " obj-name))))
("dput" . (lambda(obj-name)
(ess-execute (concat "dput(" obj-name ")\n") nil (concat "R dput: " obj-name)))))
(volatile)))

;; anything.elの設定
(require 'anything-config)
(define-key global-map (kbd "C-x b") 'anything)

(setq anything-sources
'(anything-c-source-buffers
anything-c-source-emacs-commands
anything-c-source-file-name-history
anything-c-source-locate
anything-c-source-man-pages
anything-c-source-occur
anything-c-source-recentf
anything-c-source-R-local
anything-c-source-R-help
))


;;yasnippetの設定
(add-to-list 'load-path "~/.emacs.d/elisp/yasnippet");;site-lispにロードパスを通してる場合
(require 'yasnippet) ;; not yasnippet-bundle
(yas/initialize)
(yas/load-directory "~/.emacs.d/elisp/snippets")
;;auto-completeの設定
(require 'auto-complete)
(global-auto-complete-mode t)
(require 'auto-complete-yasnippet)
(require 'auto-complete-acr)

2009/10/20

ESSのインストール

Emacsは最初からインストールされているものの、ESSは自分でインストールしなくてはならないのをすっかり忘れていた。インストールは簡単で「sudo apt-get install ess」で終わる。この後、自分のホームディレクトリに.emacsを作成し、「(require 'ess-site)」と記入しておく。RjpWikiのESSのページにいろいろと詳しく載っているのでそちらを参照しておいた。

2009/10/13

Clam AV

インストールしているウイルス対策ソフトを手動でアップデートしようと思ったので、『sudo freshclam』したら以下のように怒られた。
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

とりあえずエラーメッセージで検索してみると、Clam AV update failsというスレッドの3番目に解決策が載っていたのでその通り実行した。今のところうまくいっている様子なのでこのまましばらく静観する。

2009/10/09

ネットワーク関係の設定

最初にファイアウォールの設定を行い、ウイルス対策としてはClamAVをインストールすることにした。ファイアウォールは、gufwを追加と削除からインストールしGUIで設定を行った。ClamAVはプログラム名を知っていたので、『sudo apt-get install clamav』でインストールした。
外からもネットワークを介してログインできるように、IPアドレスを申請して、固定IPアドレスの設定も行った。GUIを利用して設定するつもりだったのだがうまくいかなかったので、結局『Ubuntu で固定IPを使用する』を参考にして、『/etc/network/interfaces』の元々『iface eth0 inet dhcp』だったところを以下のように編集してネットワークを再起動した。
#iface eth0 inet dhcp
iface eth0 inet static
address x.x.x.x
netmask 255.255.x.x
gateway x.x.x.x

sudo /etc/init.d/networking restart

最初のインストールのところでSSHをインストールしておいたので、そちらもアクセス可能なユーザーを限定するように設定した。『/etc/ssh/ssh_config』にAllowUsers xxxxを加えてSSHを再起動した。
sudo /etc/init.d/ssh restart

2009/10/07

Ubuntu Server 9.04インストールメモ

サーバ版のUbuntu 9.04のインストールからデスクトップ環境の構築までをメモしておく。細かいソフトのインストールは別エントリにする。

実際に行った手順
64bitサーバ版Ubuntu 9.04のインストール(OpenSSH serverにのみチェック)
デスクトップ環境の構築
ハードディスクの自動マウント設定
キーマップ変更
デスクトップ環境の日本語化

最初のインストールにおけるほとんどの行程は、『Ubuntu Server インストールめも』と、『Ubuntuメモ Ubuntu Server 9.04インストール、Plagger、MovableType環境構築まで』に従うことで何もトラブルなく進んだ。書かれている手順と違ったのは「キーボードの選択」だけだったと思う。よくわからなかったので一番上のJapanを選択した。ハードディスクの使い方でも少し戸惑った。しかし、後者のページに触れてあるとおりよくわからないままLVMを選択しておいた。これでSSDの方にうまくインストールできたらしい。
デスクトップ環境の構築では、『Ubuntuメモ Ubuntu Server 9.04インストール、Plagger、MovableType環境構築まで』にあるように、以下の4つのコマンドを実行すればよい。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ubuntu-desktop
sudo reboot


今回は、日本語環境を整える前にもう1台ぶら下がっている320GBのHDDを起動時に認識させるように、『Ubuntu Tips/ハードウェア/内蔵ディスクを増設するには』を参考にして設定を行った。ここでは必要となるので「gparted」を追加と削除からインストールした。主な手順はハードディスクのフォーマット(ext3)、マウントポイントの作成、ディスクラベルの確認、設定ファイルへの記述となる。マウントポイントの作成では、nautilusを管理者権限で開き、作成したディレクトリのプロパティでアクセス権を開き「root」となっているところを「自分のアカウント」に変更した。ディスクラベルの確認は『sudo fdisk -l』で行い、管理者権限で開いたnautilusから「/etc/fstab」をダブルクリックして、「/dev/「ディスクラベル(sdb1など)」 /media/disk2 ext3 defaults 0 0」を追加した。

ここらでCtrlとCapsLockのスワップを忘れているのに気づいたのでキーボードの設定を行った。

最後に日本語環境の導入を行うのだが、『Ubuntuメモ Ubuntu Server 9.04インストール、Plagger、MovableType環境構築まで』に書いてある情報だけでは足らず、結局『Ubuntuの日本語環境』を参照した。さらに日本語環境セットアップヘルパを利用していくつかのパッケージを導入した。

追記:ディレクトリの名前が日本語だと外からログインした時に不便なのでディレクトリの名前は下のコマンドを使って英語に戻した。via ディレクトリ名が変更しても元に戻ってしまいます
LANG=C xdg-user-dirs-gtk-update

2009/09/29

速い!

Nehalem Xeon W3580(3.3GHz、Ubuntu 9.04)はさすがに速かった。正確な時間を計るのは面倒なのでやっていないが、今やっているシミュレーションの計算時間が1/60ほどになった(数分から数秒)。さらにSSDの方にファイルをおいてやるともはや結果が出るのが一瞬になってしまう。いままでもCore 2 Duo E6850(Dell Precision T3400 3.0GHz、WinXP)を使っていて、今回のPCとたった300MHzしか違わないのになぜ?そういえば、PentiumM 1.2GHz(Let's Note W4、WinXP)でもCore 2 Duoの結果とあまり変わらなかった。OSの問題か?

(追記)試しにデュアルブートのUbuntu 9.04(Core 2 Duo E6850)で計算してみた。これも十分速い。悪いのはWindowsだった…。どういう違いがこういう結果を導くんだろう?他に動いているサービスが重いから?ん~、謎だ。

サーバ版にデスクトップ環境を

フォーラムで貴重な答えを見つけた。『taskselを起動して、Ubuntu-Desktopにチェックをいれ』るのが自分にとって最適解な気がする。今はデスクトップ版がインストールされているが、あとで『sudo tasksel』してみよう。

Dropboxをコマンドラインで使う

今回設置するのが純粋な計算機サーバとはいえ、GUI環境も作っていようかなぁと思わせる理由がいくつかあります。その中の1つがDropboxの利用です。しかし、『DropboxをUbuntuで完全にコマンドラインだけで使う方法』に示されている方法で完全に解決しそうです。まぁ、冷静に考えると、そもそもDropboxはGUIをそれほど必要としないわけで、解決策が存在するのは当たり前かも知れません。ついでなので、その他にGUI環境を試したくなる理由を列挙してみました。

  1. ファイルの変更が頻繁なときはその場で編集したい。(GeditとかEmacsとか便利。)

  2. ついでにWineでxyzzyを使ってみたい。(Emacsでもいいんだけど、やっぱりxyzzyがあると嬉しい。)

  3. Linux(Ubuntu)のデスクトップ環境もちょっとは使ってみたい。

  4. VPN接続とか憧れる。


人類生態にいた頃は、viが苦手だったからeeとか使っていた気がするし、やっぱりいいのかなぁ…。時間ができて、あとからXを導入して、VPN接続可能な状態に持って行けばいいのか?う~ん、迷う。

2009/09/28

64bitサーバ版の前に

パーティション分割やらまだまだ自信のないところが散見されるので、とりあえず日本語 Remix CDのフルインストールから試してみる。32bit版なので6GBのメモリを使い切れないデメリットはあるが、デスクトップ版だと簡単にDropboxが使え、ファイルの同期が容易になるのはありがたい。ある特定のマシンにLinuxだけをインストールするのはいつ以来だろうか?人類生態に1台あったLinuxマシンが壊れて以来、人類生態ではFreeBSDだったし、もうかなりの時間が空いている気がする。

2009/09/25

お試しインストール

マシンが届いたので、とりあえず付属のVistaをインストールしておき、WubiでUbuntu 9.04が普通に使えるか試してみた。まぁ、もともとWS7000L2はUbuntu 8.10で使えるという検証がされているわけで、少々中身をいじったところで、バージョンが新しい9.04でうまく使えないことはないだろうと思っていたが、あまりにもあっさりで拍子抜けしてしまった。この調子で時間ができたら64bitのサーバ版をインストールしてみようと思う。

2009/09/18

Ubuntu 9.10

そろそろ9.10の情報も増えてきた。連休明けにハードが届くとすると、まずは9.04を試すことになるだろうけど、結構早い段階で9.10に移行してしまうかも。悩ましいタイミングだ…。

2009/09/08

the rapache project

wrong, rogue and booklogさんのエントリthe rapache projectを知った。Ubuntuのサーバ版は普通にインストールすればApacheまでインストールされるはずだからちょっと試してみようかなぁ…。

2009/09/03

Rのアップデート

以前、Rのインストールで躓いた時から、デュアルブートにしているUbuntuのGPGの問題は解決していない。なのでCRANをリポジトリに登録できてはいないのだが、なぜかRのアップデート自体は可能だった。こういう風に問題が残ったままでもどうにかなっているようにみえるあたりに、LinuxらしさよりもWindowsっぽさを感じてしまう。

2009/09/02

マシン決定

パソコン工房で見積もりを取り検討していたのだが、今日、WS7000L2をカスタマイズしたものに決定した。スペックは、CPUがXeon W3580(3.3GHz)、メモリはECC付き6GB(2GB*3)、HDDは、IntelのSSD(80GB)とセカンダリにSATAの320GBとなった。CPUがLinuxに関する情報の少ないNehalem-WSだったり、HDDにSSDを採用したりしているので、念のためWindows(Vista Home Premium SP1)も付けたままの購入にしている。納品は2週間以上後になるようだが、楽しみに待つことにしよう。

2009/08/20

RのGUI

UbuntuではRのGUIは基本的に起動しないらしい。Rコマンダーを入れるか、JGRを入れるのが一番一般的な感じがした。RコマンダーはSynapticからも入れられるようなので、まずはそれを試すことにする。それとは別に普段Windowsで使っているものとは違うが、下のコマンドでもGUIは使えるようだ。Tk以外の引数は知らないので、知っている人がいたら教えてください。
R --gui=Tk

2009/08/19

ビープ音を消す

再起動の度にビープ音がうるさいので、ビープ音を消す設定を探してみた。システム->設定->サウンド->効果音の設定から「サウンドタブ」を選び、警告音、効果音を消すのが基本的なやり方のようだが、うまくいかないという声もあったので、そのスレッドの後半で示されている/etc/modprobe.d/に『blacklist pcspkr』と書かれた設定ファイル(今回はblacklist-pcspkr.conf)を置く方法を採用した。具体的には、コンソールでsudo geditしてファイルを作った。実は、先に/etc/modprobe.d/でファイルを新規作成しようとしたらできなかったのは内緒。現在のところ、.confがなくても働くようだが、今後/etc/hoge.d/以下のファイルは.confが必要になるそうなので.confをきちんとつけておいた。

2009/08/17

GCCでも躓く

Rのインストールは、Synapticから『r-base』を探すことでうまくいった。んが、今度はCのコンパイルでハマった。math.hの中のexp関数を使っているのだが、gcc hoge.cでは全然うまくコンパイルしてくれない。困ったのでUbuntuとGCCで検索してみるとGCCはインストールされていないので、以下のコマンドを使えと書いてあった。
sudo apt-get install build-essential
ところが、実際にやってみるともうインストールしているよんと怒られる(どうやらRをインストールする際にインストールされるらしい)。んでまた少し検索してみるとコンパイルの際に『-lm』オプションが必要なことに気づかされた。そういえば、C言語を扱いはじめた初期の頃も、同じネタで躓いたことを思い出す。本当に物覚えが悪くて困る…。ということで、gcc hoge.c -lmでうまくいったことを残しておく。

2009/08/14

Rのインストールで躓く

UbuntuへのRのインストールで躓いた。というか、GPG鍵がうまく取得できない。いろいろなサーバを試してみているのだが、すべてタイムアウトしてしまう。ファイアウォールに問題があるのかと思い、無効にして試してみてもダメ。なぜに?

2009/08/12

新しいハードウェアへの対応

Ubuntu 9.04の動作環境をあちこち調べてみているが、Atom関係の記事ばかりが目立つ。まぁたしかに最新のPCにわざわざLinuxを入れる必要はほとんどないだろうから、記事が限られるのは仕方がないようにも思う。自分で対応ハードウェアを調べてみたけど、昔と違い最新ハードウェアを追いかけていないから、型番を見てもちんぷんかんぷんで困る。少し時間がかかるかも知れない。

2009/08/11

SSH

仮にUbuntu 9.04でサーバを運用するとすると、今使っているPCからリモートアクセスすることになるので、SSHを使えるようにする必要がある。そのためにはopenssh-serverをインストールし、ファイアウォールの設定を変更する必要がある。SSHのインストールをすっかり忘れ、ファイアウォールの設定を終えただけでリモートアクセスを試してちょっと躓いてしまったのでメモしておく。
apt-get install openssh-server
おそらく、sshについて、それなりに設定が必要だと思うので、これはまた後で調べることにする。

WubiでUbuntu 9.04をインストール

Wubiを用いれば、Windows環境を保ったままUbuntuを使ってみることができるようなので、早速インストールしてみた。インストールは簡単。本当にほとんど何もしていない。ネットワークも簡単に認識。あまりに何もしていないので、インストール後に行ったことだけでもメモしてみる。
  • ソフトウェアのアップデート
  • 日本語環境セットアップヘルパ
  • ハードウェア・ドライバでNVIDIAのドライバを有効にする
  • Synapticパッケージ・マネージャを使ってみる
  • apt-get installをやってみる
ソフトウェアのアップデートは、インストール終了後すぐに通知が来た。セキュリティとか考えるとありがたい。日本語環境セットアップヘルパも「システム」->「システム管理」から簡単に行えた。NVIDIAのドライバのインストールも簡単に終わる。Synapticパッケージ・マネージャでは、Sysinfoなどいくつかを選択してインストールしてみた。まだリポジトリの追加などは行っていないが、次にログインしたときにでもやってみることにする。apt-get installではzshをインストールしてみた。
Ubuntu自体は、ロスアラモスにいた頃に使ったことがあるのでほとんど違和感なく使えるのはわかっていた。ただ、インストールし、環境をいじるのは今回が初めてだったので少し構えていたが、本当に簡単なことがわかった。

2009/08/10

Rでやっておく設定(Windows)

Rでやっておいた方が良さそうな設定のメモ。

環境変数R_USER
Rの設定ファイルを置いておくフォルダを作成しておき(今回はC:\tools\Rhome)、ユーザーの環境変数に新規で『R_USER』を加える。値には、先ほど作ったフォルダを指定する。これでRのホームディレクトリが指定される。
R_USERが作成されていない場合は、マイドキュメントがホームディレクトリになる。

設定ファイル群の編集
RのインストールフォルダにあるetcフォルダからRconsole、Rdevga、Rprofile.siteをR_USERで指定したフォルダにコピーする。これらのファイル群を以下のように編集する。

Rconsoleの編集
Fontの部分でTT MS Gothicを『font = TT MS Gothic』として指定する。

Rdevgaの編集
TT ArialをすべてTT MS Gothicに変更する。

Rprofile.siteの編集
以下のおまじないを追加する。
setHook(packageEvent("grDevices", "onLoad"),
function(...) {grDevices::ps.options(family="Japan1");
grDevices::pdf.options(family="Japan1")})

.Rprofileの編集
R_USERで指定したフォルダに.Rprofileを作成し、Rprofile.siteに追加したものを書き加える。

OSは?

下のエントリで、やはりデスクトップだとわりと納得がいったのでOSについてまでは考えてみる。

Mac
実は、もっとも使ってみたいOSはMacだったりする。でも、ちょっと格上のスペックを求めるとお金の問題に行き着くし、リモートアクセスできるかもよくわかっていない。

Linux
今のところ、Linux、それもUbuntu 9.04をもっとも有力な候補として考えている。理由はLive CDを試してみて簡単そうだったから。ただし、Linuxを選ぶ時の最大の懸念は、ハードウェアに対応しているかどうかだ。たとえば今からDellで最新のPCを購入したとすると、果たして9.04ですべて対応しているかどうかが不明となる。

Windows
あまり考えていないが、結果としてもっとも慣れ親しんでいるので、可能性としては捨てがたい。でもやだよなぁ。

デスクトップかノートか?

久しぶりに計算専用のコンピュータを持つことが可能になった。サーバなんてもうかれこれ4、5年はいじっていないので、すべてにおいて迷いがある。最初の問題はハードウェアで、デスクトップかノートのどちらにするかとなる。
デスクトップのメリットはコストと計算能力にある。しかし、場所を取るという大きな問題がある。リモートアクセスだけを考えれば、置き場所の心配は減るが、OSはLinux類に限られるだろう。モニタさえ置くスペースさえあれば、OSはこだわる必要はない。キーボードやマウスについてもSynergyを利用すれば問題はなさそうである。
逆にノートの最大のメリットは置き場所を考えなくて良い点となる。しかも計算環境を持ち歩くことまで可能になる(まぁせいぜい自宅まで運ぶかどうかという程度)。ファイルの同期(といっても小さな計算用プログラムとその結果)はDropboxを使えばOSにとらわれる必要が無い。でも、デスクトップに比べると計算能力は劣ることになる上、コストは上がる。
書いてみると実感するがさすがにデスクトップの方がメリットが大きい。