2012年9月18日火曜日

rubyのgemとかbundler

昨日のではどうもすっきりしないので、gem管理について色々巡ってみた。
結果、railsするなら、アプリケーションディレクトリの中にbundlerでgemをインストールして、そこだけで完結した環境を作るってのが分かりやすいらしい。

つまり、システム全体でのgem環境、ユーザーのgem環境は自分で面倒をみつつ、アプリはアプリで独立。

で、うちでは特にRUBYな人ではない今は、RVMまで考えず、gem環境をユーザーで管理する。

$HOME/.gemrcでユーザー設定(/etc/gemrcがグローバル設定)できる。昨日書いてたユーザー権限で$HOME以下へのインストールはこのあたりで設定されていた。あと、ドキュメント作らないオプションを追加。中身はこんな感じ。
gem: "--no-ri --no-rdoc --user-install"


それと、ユーザーのgem環境については、 ~/.gem/を削除したら、振り出しに戻れると考えれば何をしても気が楽。
 
railsについては以下の流れでやる。

ユーザー環境でrailsをインストール。

railsアプリを作るときに --skip-bundleフラグを付ける。
  $ rails new myapp --skip-bundle

アプリケーションのディレクトリに入り、Gemfileを編集してbundlerでgemをインス トールするが、インストール先をアプリケーションのディレクトリ内にする。
  $ bundle install --path vendor/bundle




以後のrails関連コマンドの呼び出しは「bundle exec」を付けて呼び出す。 
   $ bundle exec rails generate controller hoge

付け足しとしては、Gemfileに以下の2個のgemを入れる
gem 'execjs'
gem 'therubyracer'


Ruby on Railsのための環境とか

Railsの環境構築は各ディストリビューションのパッケージマネジメントとの関係もあってめんどくさそう。

関連のwiki項目
  1. Ruby
  2. Ruby On Rails 
  3. RVM(Ruby Version Manager)

このめんどくささは、rubyのライブラリとかの管理がシステムとは無関係に、ruby独自のrubygemsっていう機能で管理できるところかな。また、archlinuxのためにパッケージ化してpacman経由でインストールして管理できるようになっているみたいだけれど、この「どっちでもいける」ってのもめんどくささの原因かも?

あわせて、gemはシステムへのインストールとユーザーディレクトリへのインストールを選択できるところも「どっちでもいける」要素。

更には、RVMとかするとrubyのバージョンさえ混在させることができて、とっても「どっちでもいける」状態。

なので、決めてメモする。
もともとrailsしたいなぁっていうお気楽な動機だったので、それが実現できればよい!って方針で。

rubyは、公式リポジトリから1.9.xをインストール。1.9系列はrubyパッケージ自体にgemが入っているので、そのままでgemが使える。

% gem help command

% gem help example
を適当に見て、使い方を確認する。

gemは、ホームディレクトリにインストールすることにする。
ホームディレクトリにインストールするには、ユーザー権限でインストールを実行する。sudoとかしちゃダメ。

インストール先は ~/.gem/の中。
この、ディレクトリ以下に実行ファイルも置かれるので、そのディレクトリをpathにいれる。
export PATH="$PATH:$HOME/.gem/ruby/1.9.1/bin"


あわせて、bundlerっていうgemから導入するアプリは、デフォルトでシステムにインストールしようとするので、以下の環境変数を予め設定しておく。これをしないと、インストール時にルートパスワードを求められてびっくりする。

export GEM_HOME="$HOME/.gem/ruby/1.9.1"

いよいよ、railsのインストール。
持ってる本がrails3.0.5バージョンの解説をしていて、現在の3.2系とは動きが大分違う。そこで、慣れるまで本の通りの動作にして勉強したいので、バージョン指定して本で解説されている3.0.5をインストール。ドキュメントも入れないオプションもつけてみる。

% gem install rails --version 3.0.5 --no-rdoc --no-ri

2012年9月17日月曜日

systemdとサービスファイル

archlinuxは、ここ最近、大きな変更がたくさんあって、アップデート作業が大変。
2ちゃんでも話題になっていたとおり、起動の仕方がsystemdに変更、ブートローダーのGrubがいわゆるGrub2になって以前のGrub Legacyはサポートされなくなるとか。

とりあえず、systemd移行はwiki見ながらやってみた。
移行の際にカーネルパラメータの変更があるんだけれど、Grub2に変更したばかりだと「あれれ?」となるかも。

Grub2は前のmenu.lstに相当するファイル「grub.cfg」をgrubに作らせるのが作法。
なので、まず、設定用の別ファイルを調整して、自動作成用コマンドを実行してファイルを作る。
 
 設定用の別ファイルの編集
 /etc/default/grubファイルのGRUB_CMDLINE_LINUX_DEFAULT辺りを書き換え。
  GRUB_CMDLINE_LINUX_DEFAULT="init=/bin/systemd"とか

 自動生成用コマンドの実行
  # grub-mkconfig -o /boot/grub/grub.cfg

systemdへの切り替えは過渡的な状態にあるから、systemd用のデーモン起動スクリプトがパッケージによっては無いものがあり、その時は、ファイルを自分で用意しないとダメ。
そのためのページが以下のもの。

https://wiki.archlinux.org/index.php/Systemd/Services

apacheを動かそうと思ったら、いきなり無くて、探したら上のページができたのでメモ。


2012年9月6日木曜日

新しいインストールメディア


ビギナーズガイドを見てみて、新しいインストールメディアにはインストールスクリプトがなくなったらしいことを知った。
そして、手動でのインストールの仕方が丁寧に説明してあったので、 試したくなって体験中。

今まであまり、パーティションのこととかブートローダーの事に興味がなかったのでGPT?EFI?GRUB2?なんて単語が良く分からず、wikiみたり、ぐぐったりしてるとあっという間に時間が過ぎてしまう。

うちのS101は全然2Tを超えたりしないけれど、とりあえず時代はMBRからGPTなのか?という事で、採用してみましたよ。

2 MiB "BIOS Boot Partition" (EF02 type code in gdisk and bios_grub flag in GNU Parted)

S101はBIOS起動なので、grubを使うときは、この大きさ2Mのブート用パーティションが必要。

2012年9月4日火曜日

再開のテスト

3年ほどになるのかな?
使い方を忘れてしまったので、ちょっとテスト。

2009年10月30日金曜日

aweomeとluaの参考書

S101では、gnomeやkde、いわゆるデスクトップ環境(DE)を起動しない、ウインドマネージャ(WM)のみを利用している。そして、そのWMには、タイリングWMの一つ、awesomeを使っている。

以前にもメモした通り、awesomeの設定ファイルはlua言語で書かれていて、その内容は、tagやウインドウの動作に関するルール、キーバインド、ステータスバーやこれに含ませるコンテンツの動作等、awesomeの動作のほぼすべてに渡っての設定を行う事になる。

これは何も設定をしなければ、デフォルトの規定で動くというものではなく(3.4以降はフォールバック機能がありそう)、まさに、何も書かれていないという設定どおりに何もしてくれない。このため、awesomeの設定ファイルには、WMとして動作するための必要最低限の動作のための設定項目が全て書かれており、その設定の内容についても、動作の規定については、フラグ変数でオンオフを書き換えるというようなものでなく、Luaを使ったawesomeのAPIを経由するプログラムを書き換える作業が必要になるため、awesome自体を楽しもうとするならば、Lua言語の知識も多少なりとも必要になる。

以前のメモの時に購入したluaに関する入門書は、プログラミング自体が初めてという感じの初心者向けの本で、言語の事自体を体系的に述べられておらず、「こういう場合はどうなんだろう?」という好奇心が沸いた時には参考にする事が出来ないものだった。

ところが、こないだたまたま本屋に立ち寄った時に、

「Programming in Lua プログラミング言語Lua公式解説書」

という本を見つけた。新しく出版されたらしい。もともと、原文での解説は、前にも紹介したとおりweb上でも公開されている。けれどボリュームがあるので、やっぱり日本語で読めるとありがたい。特に、初めて触れる言語なら、尚更そう思う。実際にこの本を読んでみると、言語自体について、開発者が解説しているためとても分かりやすい。初めてLuaに触れる、若しくは、興味ある人にとってはお勧めの一冊だと思う(必携でもいいと思う)。

2009年10月25日日曜日

S101近況


みんな、ホスト名ってどうやって付けているんだろう??
うちのは、むかーーし、インターネットを始めた頃、今の「メル友」ってのとは、少しニュアンスの違う昔の文通友達に近いような「メールフレンド」が出来て、その人のペンネームが「madokita」だった。この、「まどきた」っていうのは、どこかの言葉で「マドンナ」と同じらしいって事を聞いた。「マドキータ」とか読むらしい。それ以来、なんかこの単語を気に入って、メインのパソコンのホスト名はいつもこれだ。で、今はこのS101がmadokitaを名乗っている。

当のまどきたさんとメールのやりとりをしていたのは、かれこれ14、5年位前になるけれど、元気にしているのかなぁ?と、たまに思い出す。

おいらをlinuxの世界に引き込んだ友達は、飼い猫の名前をホスト名にしていた。彼とも長いこと連絡をとっていないけれど、今でもそうなのかなぁ?もし、このメッセージをみたら、連絡をよこすように!!!w

さて、オークションでゲットしたintel wifi link 5300っていう無線lanデバイスをとりつけてみた。調子の方は上々。一旦つながってしまうと勝手に切断されてしまうことはないようなかんじ。ただ、サスペンド等、デバイスの電源を落とした後の、デバイスの再起動の時はいまいち動作が安定しないかんじ、、、pm-utils用のスクリプトも書いてみたけど、イマイチ。もういちど、ちゃんと動作させようと思うと、一旦、システム自体の電源を落とした後に、立ち上げなおすと、普通に動く。まぁ、、前よりは普通に使えるようになったので満足。

数日前にawesomeが3.4にアップデートされていた。
もともと、gitの方で3.4も試してみていたんだけれど、モジュールが一新されていて、3.3以前のコンフィグファイルだと立ち上がらない。書き換えるのがじゃまくさいってのは、書き換えたら済むはなしなんだけれど、別の点で困ったことに、xcompmgrとの相性が悪くなっていた。

公式リポジトリにアップデートされるまえのgitの状態では、画面表示が思いっきり重くなってて、実用レベルじゃなかった。その時点では、xcompmgr-gitは、xorgの公式リポジトリのバージョンが低くて、コンパイルが弾かれてた。

で、公式リポジトリにアップデートされた今、awesomeを3.4にして、xcompmgr-gitもコンパイルが通るようになったので、それを導入してみた。通常は普通に使えるけれど、同じタグ内に複数のウインドウを開くと、重くなる症状がでたりする。一旦タグ移動したあと、戻ると、治ったりするけれど、イマイチ不安定。

せっかく、3.4用のrc.lua書いたけど、一応3.3に戻して様子見かなぁ

あと、しばらくxorg入れてなくて、コンソールで作業してることが多かったので、バッシュのプロンプトも適当に書いてみた。acpiコマンドからバッテリーの様子を引っこ抜く関数を適当に書いて呼び出してるせいか、プロンプト表示にワンテンポかかる(^^;
っていうか、.bashrcにいろいろとかくと、ターミナル起動時にプロンプトがでるまでに1秒くらいかかってるかも、、