2010年10月10日日曜日

(Linux等の)シェルスクリプトを Mac の Finder からダブルクリックで実行するには

少し躓いたので、メモメモ。まとめると次の3点が要点となる。

  1. スクリプトの拡張子を .command にする
  2. ターミナルから、chmod で実行権限を与える
  3. スクリプトの Shebang のすぐ下に cd `dirname $0` を入れる (シングルではなくバッククオートであることに注意)

詳細について。まず、シェルスクリプトの書き方から。これは Linux と同様 Shebang ではじめ、通常通りコードを書いていく。

#!/bin/sh

[ここからコード]

このスクリプトファイルをダブルクリックした時にターミナルを起動するように設定する必要がある。Mac 上で拡張子の関連付けを行えばよいことになるが、10.6 (Snow Leopard) では、デフォルトで ".command" という拡張子がターミナルに関連付けられいることを確認した。"install.command" のような感じで拡張子をつけて保存するとよい。(もちろん別の拡張子を利用したい場合はその拡張子をターミナルに関連付けておく)

また、Linux と同様にスクリプトには実行権限を付加しておく必要がある。これは Mac 標準の Finder からは設定できないようなので、ターミナルから実行権限を付加する。例えばコードが install.command だった場合、

chmod +x install.command

もちろん、ファイルがホームディレクトリに無い場合は、該当のディレクトリに移動するか、フルパス指定で実行。

ただし、Mac ではダブルクリックで起動した場合、ホームディレクトリをカレントディレクトリとしてコードが実行されてしまう。例えば、ユーザー名が hoge、コードが /Users/hoge/abc/install.command においてある場合、Mac は自動的にホームディレクトリでコードを実行してしまう(下の太字の部分が Mac が実際に実行しているコマンド)。

Last login Sun Oct 10 22:54:02 on Console
pcname:~ hoge$ /Users/hoge/abc/install.command ; exit;
[コマンド実行結果]
logout

[プロセスが完了しました]

コード内で相対パスを利用している場合、コードの置いてあるディレクトリにカレントディレクトリを移動させないと不具合が出る場合がある。これを行うためには、例えば "cd `dirname $0`" というコードをシェルスクリプトの冒頭に入れておけばいい(シングルではなくバッククオートであることに注意)。これは、コードのパスからディレクトリを dirname で取得し、その結果を cd に渡すことでカレントディレクトリを適切なところに移動するコードである。

結局、スクリプトは次のように書けばよいことになる。

#!/bin/sh
cd `dirname $0`

[ここからコード]

2010年10月1日金曜日

Ubuntu 10.04 で x86 向け Android 2.2 (froyo-x86) のビルド(コンパイル)と iso イメージの構築

今回は android-x86.org を参考にして、Android を ubuntu 10.04 でコンパイルし、インストールディスクを作成してみます。ただし、記事のままだとマウスが動かないなどの状態だったので、実用的に使えるレベルで動作させるには、このブログ記事の内容に加えてカーネルをカスタマイズしていく必要がありそうです。

コンパイルを行う環境として、ハードディスクドライブは20GB、メモリとしては最低でも1GBぐらい必要です。特に VMware や VirtualBox 等仮想環境でコンパイルする場合は割り当てるリソース量を多めにしてください。

まず、Java について躓いたのでメモ。Ubuntu 10.04 では、OpenJDK を標準化したいらしく、sun による実装がパッケージマネージャに含まれていないらしい。まず、Java のリポジトリを追加する。次の % までが1行ですので、お気をつけ下さい(出力は書いていません)。

% sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
% sudo apt-get update

ちなみに、Java 1.5 JDK でのコンパイル環境を想定しているらしいが、最近最新版の 1.6 でもコンパイルできるようにパッチがあてられたらしいので問題なし。

コンパイル等に必要なパッケージをインストール。

% sudo apt-get -y install git-core gnupg sun-java6-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind g++

ソースコードの管理は git で行われているが、Android 用にこれをラッピングする repo というスクリプトがあるのでそれを ~bin にインストールし、実行権限とパスを設定。

% mkdir ~bin
% curl http://android.git.kernel.org/repo >~/bin/repo
% chmod a+x ~/bin/repo
% export PATH=$PATH:~/bin

JAVA_HOME を設定する必要があるようなので、設定。

% export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.**.**

(Java のバージョンは変わるので、各自調整してください。Ubuntu のデフォルトのシェルである bash の場合、java-6-sun-1.6. まで入力したら[TAB]キーでその後ろを補完してくれます)

ホームディレクトリの直下に android-x86 というディレクトリを作成し、そこにリポジトリからソースコードをダウンロード。

% mkdir ~android-x86
% cd ~android-x86
% repo init -u git://git.android-x86.org/manifest.git -b froyo-x86
% repo sync

repo init の行で、名前とメールアドレスを聞かれるので、入力する。その次の repo sync を実行した時点で、ソースコードのダウンロードが始まる。結構時間かかります。ちなみに、執筆時では実際にダウンロードした全容量は 4.6 GB でした。

ダウンロードが完了したら、コンパイルして iso イメージを作成。USB イメージも作成できるようですが、今回はより簡単な Live CD を作成してみます。Live CD を作成するには、make のターゲットを iso_img とします。OSを構築するので、このコンパイル作業には数時間かかります。

% make iso_img TARGET_PRODUCT=generic_x86

以上の作業で、~/android/out/target/product/generic_x86/generic_x86.iso が作成されているはずです。これが Live CD 本体ですので、このファイルを CD に焼き、CD からブートしてみてください。BIOS で CD から起動できる設定にするのをお忘れなく。なお、Live ディスクからハードディスクへのインストールも可能のようです。

なお、USB イメージの作成だけでなく、iso データを圧縮するかオプションで設定したり、マルチプロセッサによる並列化等ができるようですが、これについては公式ページを参照してください(英語)。

コンパイルやインストールはできましたが、やはり一部カスタマイズしないとマウスなどが使えなかったりしました。もう少し調べる必要がありそうです。

参考ページ:

  1. 公式ページ(英語)
  2. ITpro 旧バージョン cupcake のインストール手順

2010年9月13日月曜日

ニコニコ生放送と Ustream のコメントを統合する Nwhois プラグイン - UniUnifier

…を作ってみました。

今まではブログ記事に乗せていましたが、流れてしまうので独立ページに移動しました。こちらからどうぞ。

2010年7月29日木曜日

Ubuntu 10.04 で C++ が利用可能な環境を整える (g++ のインストール)

Ubuntu 10.04 にはデフォルトで C++ コンパイラがインストールされていませんので、インストール方法の紹介です。

C++ コンパイラをインストールするには、[アプリケーション]-[アクセサリ]-[端末]を起動して、次のようなコマンドでインストールできます。

% sudo apt-get install g++

パスワードを聞かれたら入力し、その後本当にインストールしてよいか聞かれるので、「はい」を意味する y ボタンを押してインストールを実行します。インストールが終わったら、もう既に利用可能になっています。ソースコードのファイル名が "program.cpp" だった場合、次のようなコマンドでコンパイルします。

% g++ program.cpp

このように実行して、何も出力されなかったら正常にコンパイルされています。a.out という実行ファイルが生成されているはずです。もし、No such file or directory のようなエラーが出る場合、作業ディレクトリにソースファイルが存在するか確認してください。

生成された実行ファイル(a.out)は、コロンとスラッシュを頭につけて、次のように実行します。

% ./a.out

ちなみに、はじめからインストールされている C コンパイラは gcc という名前なので、g++ の代わりに gcc を使うと C コンパイラを使うことになります。

2010年5月17日月曜日

Ubuntu 10.04 への OpenGL + GLUT のインストール

Ubuntu 10.04 で OpenGL を利用するためのインストール手順です。OpenGL + GLUT での開発ができる環境を構築します。

まず、ビデオカードのドライバを入れるところから始めます。無くても一応動きますが、ビデオカードによる並列処理が利用できないのでかなり動作が遅くなります。ドライバは GNOME メニューの [システム]-[システム管理]-[ハードウェア・ドライバ] あたりからでも入れられるかもしれないですが、無理な場合はビデオカードのベンダーのホームページに行ってダウンロードし、手順に従ってインストールします。その後おそらく再起動を求められると思うので、再起動します。

次に、OpenGL と GLUT を利用するために必要なパッケージ群をインストールします。Ubuntu ではインストールは基本的に apt が自動的にやってくれます。実は Ubuntu 10.04 では、freeglut3-dev だけをインストール指定すれば、全ての必要な依存パッケージを芋づる式に自動的にインストールしてくれます。OpenGL の最新機能を利用したい場合は、libglew1.5-dev (とそれについてくる依存パッケージ)をインストールすると良いみたいです。ターミナルを開いて、

% sudo apt-get update
% sudo apt-get install freeglut3-dev libglew1.5-dev

あたりでできるはずです。依存パッケージもインストールしてよいかと尋ねられるので、許可します(1回目の sudo コマンドでパスワードを求められるので入力して下さい)。

ここまでできたら、こちらの4章に従ってサンプルプログラムを動かしてみましょう。有名な床井先生の入門ページです。あ、もうインストールは全て終わっているので、2章の「GLUT のインストール」は必要ないですよ。プログラム起動時、ビデオカードのドライバが正常に利用できない場合(あるいは入っていない場合)、3Dアクセラレータが使えないよ、という警告をしてくれるようです。

ちなみに床井先生のページの3章のコンパイルコマンドについて、プログラムのソースコードが program.c の時、

% cc program.c -lglut -lGLU -lGL

で動くことを確認しています。

もし動かない場合は、大文字小文字等の打ち間違い注意や、-lglut -lGLU -lGL の順番も揃えた方がいいかもしれません。上で紹介した方法は最小限の構成なので、それでも動かない場合はさらにパッケージ libxmu-dev libxi-dev を追加した後、ライブラリを可能な限り全てリンクすると動くかもしれません。これらは昔必要だったけど、今は必要ない(と思われる)パッケージです。上の作業に加えて、次のようにしてみてください。

% sudo apt-get install libxmu-dev libxi-dev
% cc program.c -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm -lpthread

もしこれで動作したら、一つずつオプションを減らしていって最小限の構成を調べてみてもいいかもしれません。

# Ubuntu にはC++コンパイラが標準でインストールされていないので、C++を使いたい場合は g++ も入れて下さい。

% sudo apt-get install g++


2010年3月27日土曜日

Mac で圧縮された zip ファイルを Ubuntu で解凍した場合のファイル名文字コード修正

Mac で圧縮された zip ファイルを Ubuntu で解凍すると、ファイル名にこちらのページで書いた NFC/NFD の濁点と半濁点の問題が発生してしまいました。

そこでツールを使って修正する方法を見つけました。convmv というツールを用います。ツールのインストールは Ubuntu では非常に簡単ですね。

% apt-get update
% apt-get install convmv

インストールしてよいか聞かれる場合があります。インストール後、次のコマンドを実行すると変換されるファイルを確認することができます。

% convmv -r -f utf8 -t utf8 --nfc [dir]

これはテストだけなので、確認後 -notest オプションを付け加えることで実際に変換します。

% convmv -r -f utf8 -t utf8 --nfc [dir] --notest

以上です。

2010年2月5日金曜日

Ubuntu 9.10 で latex おまかせインストール

今回は Ubuntu 9.10 で latex を自動インストールする方法です。あまり latex の中まで詳しく分かっていないのですが、どうやら「Ubuntu 9.10 Desktop 日本語 Remix CD 版」では比較的簡単にウィザードを使ってインストールできるみたいなので報告です。

まず、アップデートマネージャや Synaptic 等のパッケージマネージャが起動していたら終了させておきます。次に [システム]-[システム管理]-[日本語環境セットアップ・ヘルパ] をクリックします。パスワードを求められるので入力します。

ここで、どうやらアップデートマネージャがシステムをアップデートしようとするみたいなので、待ってみます。終わった後にもし再起動が必要といわれれば再起動します。再び[システム]-[システム管理]-[日本語環境セットアップ・ヘルパ]を選択すると、「Main 及び Universe コンポーネントから追加するパッケージの選択画面」に移ります。色々ほしいものがあればチェックを付けてください。latex は Japanese Team からの追加パッケージなのでまだ表示されていません。「OK」を2回ほどクリックすると Japanese Team のリポジトリからのインストール画面になります。ここで、latex-env-ja と latex-extra-ja の二つのパッケージを選択してOKボタンを。全てインストールが終われば latex が使えるようになっていると思います。

あ、Ubuntu のデフォルトの文字コードである UTF-8 は確か latex で使えないはずので、EUC-JP を使ってください。例えば、もし latex のソースを書くのに gedit を使っているのであれば、「名前をつけて保存」のところで「エンコーディング」をクリックして、「EUC-JP」を選びます。もし EUC-JP が表示されていなければ、「追加と削除」から日本語のところにある EUC-JP を選択します。