”require ’twitter’” →”no such file to load -- twitter”

とりあえずメモ

rubytwitter APIを使っているが、gemとtwitterはインストールしたはずなのに

require 'twitter'

とすると、

LoadError: no such file to load -- twitter
from (irb):1:in `require'
from (irb):1

とエラーがでる。

解決方法は、

require 'rubygems'
require 'twitter'

でok。

本当にokなのか?なんでokなのかはruby初心者なのでわかりません・・・。

XML::RSSのインストール

XML::Parserをインストール

XML::RSSを使おうと思ったらXML/Parser.pmがないって言われた.ということでCPANXML::Parserモジュールをインストールする.

ところが問題発生.expatっていうのがないらしい.

参考URL
http://d.hatena.ne.jp/wherever/searchdiary?word=*%5BPerl%5D:Mac OS XにXML::Parserのインストール

wget http://superb-east.dl.sourceforge.net/sourceforge/expat/expat-2.0.0.tar.gz
tar xzvf expat-2.0.0.tar.gz
cd expat-2.0.0
./configure
make
make install

こんな感じでインストールできる.

$ cd XML-Parser-2.34
$ perl Makefile.PL EXPATLIBPATH=/usr/loca/lib EXPATINCPATH=/usr/local/include
$ make
$ make install

2行目が呪文みたいだ・・・.とりあえずこの通りやればインストールできた.

CPANの設定変更

僕のCPANの調子が悪いのは,ftp先をftp://ftp.cpan.jpにしていたかららしい.
しかも/root/local/lib/perl5/5.8.8/CPAN/Config.pmのurllistを編集してしまって([q[〜〜〜]]の外側の括弧消しちゃったからみたいwww)編集できなかった.今回はその括弧を直して,以下のコマンドを実行.

cpan>o conf

基本的にはo conf〜で設定を変更する.初期化もo conf initだったしね.

urllistの確認は

cpan>o conf urllist

urllistの変更は

cpan>o conf urllist push ftp先のURL
cpan>o conf commit

で追加.

cpan>o conf urllist pop
cpan>o conf commit

で削除.

これ見てわかるように,perlと一緒でpush,popだけでなく,shift,unshiftも使えるみたい.優先したいURLを最初に持ってくるように並び替えましょう.上のConfig.pmを無理やり変更してもokです.

参考にしたURL
http://www.drk7.jp/MT/archives/000885.html:CPAN の ダウンロード先(URL リスト)を変更する方法


CGIを使えるようにするために/usr/local/etc/apache22/httpd.confを編集

編集箇所は2つ.
内に以下の記述を加える.

Alias /www /usr/home/username/www/

AllowOverride All
Options Includes ExecCGI
Order allow,deny
Allow from all

これによってブラウザでhttp://IPアドレス/www/ってやるとそのフォルダにアクセスでき,かつそのフォルダ以下にあるCGIファイルを動かすことができる.

また,以下が書いてある行のコメントアウトをはずす.(ただし.plは必要に応じて追加)

AddHandler cgi-script .cgi .pl

.cgiや.plをCGIとして処理してくださいって意味です.
これでCGI動くぞー!

CPANのインストール失敗?

CPANは以下のコマンドで開始(初回はインストール)できる.
OS:FreeBSD
perl-version:5.8.8 (perl -vで確認可能)

perl -MCPAN -e shell

インストールはそこら中に書いてある通り,基本的にはEnter連打でOK.
途中いくつか必要なモジュールを聞かれるので,聞かれるたびにCtrl+Cで脱出してwgetとかuzipなんかをportで入れる.ncftpgetとncftpとgpgは入れなくても動きそう.

で,あとは

install モジュール名

でインストールできる・・・・・・・・・・・・・はずでした・・・

なんかできない!忘れてしまったが,/usr/source/〜tar.gzみたいなファイルを見に行って,無いとか言ってるように見えたんだけど,詳しい原因は不明.

で,今日FreeBSDを再起動したんだが,なぜか今度は動いた!なんで!?まぁいいかwあとはモジュール入れれば,Perlプログラム動かせるな.

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

と思ったら原因違ったw次に書いた日記参照
http://d.hatena.ne.jp/Tadaima/20071230

sambaのインストール

CGIを動かす前に先にsambaをインストールsamba3.0.24(だったかな?)

参考にしたのは以下のサイト
http://matsui.homeunix.com/index.php?FreeBSD%2FSamba3:FreeBSD/Samba3

でも日本語パッチ?を当てるのがうまくいかなかった.何でだろうなぁ?また時間あったら修正してみます.まぁ日本語のファイル名付けないようにしてるけど.

/etc/rc.confの修正

# vi /etc/rc.conf
ここの#を外す。

                              • 修正-----------------

nmbd_enable="YES"
smbd_enable="YES"

                              • 修正-----------------

# /usr/local/etc/rc.d/samba.sh start

sambaのアカウント追加

# /usr/local/bin/smbpasswd matsui

できず….おおおおい!!!!!!!!!!!!

ちょっと調べたらhttp://search.luky.org/linux-users.9/msg08180.html:ここに書いてあった.

# smbpasswd -a john

みたいに-aを入れるといいらしい.パスワードの設定と同時に,ユーザの追加も行なうそうです.ユーザ名の打ち間違いに備えてなのかな?まぁ確かにそのたびにユーザ増えたらセキュリティ的にも危ない気がするしな.

VMWare+FreeBSDからApacheインストールまで

家でもCGIなどで遊べるようにVMWareを入れることにした.
VMWareここからダウンロード.
そしてFreeBSD6.2のインストールは以下を参考にしました.
(最初6.1でやろうとしたらFTPサーバにないっていわれた…)
辰己丈夫の研究雑報

FreeBSDVMWare上にインストール

以下は辰己丈夫の研究雑報からの引用

# VMwarePlayerをダウンロード&インストール
http://www.vmware.com/ja/products/player/
VMwarePlayerは無料の仮想マシンです。僕は version 1.0.3 を利用しました。
# qemuを利用してディスクイメージを作る

1. QEMUをダウンロード
http://www.h7.dion.ne.jp/~qemu-win/index-ja.html
2. ダウンロードしたファイルを展開しますが、念のため、C:\QEMUという(ディレクトリ名にスペースを含まない)ディレクトリ(フォルダ)を作って、その中に展開。
3. スタート→プログラム→アクセサリ→コマンドプロンプトを開く。
4. 上記の場所にダウンロードしたら、次のコマンドを順に入力。(バージョンが異なる場合は適宜読み直して下さい。)また、4番目のコマンドの最後の「10G」の部分は、最大10GBまで使うという意味です。ディスク残量などを見ながら適宜変えます。でも、6Gは欲しいです。
cd \QEMU
cd \QEMU-0.8.2-windows
mkdir \FreeBSD
qemu-img create -f vmdk \FreeBSD\freebsd6.vmdk 10G

# FreeBSD の iso ファイルをダウンロードする。
ftp://ftp.jp.freebsd.org/pub/FreeBSD/ISO-IMAGES-i386/6.2/6.2-RELEASE-i386-bootonly.iso
そのファイルは \FreeBSD に置きます。
# VMwarePlayer用の定義ファイルを置く
先ほど vmdk を置いた場所(\FreeBSD)に、定義ファイルを置きます。メモ帳などを利用して作ります。ファイル名は freebsd6.vmx としてください。

config.version = "8"
virtualHW.version = "3"

displayName = "FreeBSD"
annotation = "FreeBSD 6.1-RELEASE"
guestOS = "freebsd"
nvram = "freebsd.nvram"
memsize = "256"

usb.present = "TRUE"
floppy0.present = "FALSE"

ide0:0.present = "TRUE"
ide0:0.fileName = "freebsd6.vmdk"
ide1:0.present = "TRUE"
ide1:0.deviceType = "cdrom-image"
ide1:0.startConnected = "TRUE"
ide1:0.fileName = "6.2-RELEASE-i386-bootonly.iso"

ethernet0.present = "TRUE"
# ethernet0.connectionType = "nat"
ethernet0.connectionType = "bridged"
ethernet0.virtualDev = "e1000"

sound.present = "TRUE"
sound.virtualDev = "es1371"

checkpoint.vmState = "freebsd6.vmss"

priority.grabbed = "high"
priority.ungrabbed = "idle"
workingDir = "."

ide0:0.redo = ""

tools.remindInstall = "TRUE"

ethernet0.addressType = "generated"
ethernet0.generatedAddressOffset = "0"

上記の memsize = "256" は、メモリーを256M利用するという意味です。ホストOS(Windows XP)のメモリ容量を越えると大変なことになると思いますので、ほどほどにしてください。また、上記の ethernet0.connectionType = "bridged" の部分は、家庭などでbroadbandルータを利用してDHCPを宅内に配布できるときの設定です。できないときは ethernet0.connectionType = "nat" の方を有効にして下さい。Windows XPに natルータの機能をさせます。
# FreeBSDをインストールする

1. 先ほどのファイル freebsd6.vmx をダブルクリックすると、vmware が動作開始。
2. FreeBSDインストーラが起動するので、インストール開始です。
3. Media Type は FTP (あるいは FTP Passive) を選んで下さい。
4. ネットワークカードはemを選んで下さい。
5. 配布元は日本のFreebsdサーバーにすると世界的なトラフィック減少に貢献できます。
6. VMwareWindowsの切替えは
* VMwareWindows 「Ctrl」+「Alt」
* VMwareWindows 「Ctrl」+「g」
です。
7. VMware自体は Phoenix bios のエミュレートをしていますので、
1. すぐに F2 を押して bios の設定に入って下さい。
2. 右側のメニュー「Boot」にブートデバイスの優先順位がありますので、 CD-ROMがHDDより上に来るようにする
とすれば、強制的にインストーラーで立ち上がります。FreeBSDの再インストールが必要な場合は、これを使います。

基本的にこのままやればOK.

また、上記の ethernet0.connectionType = "bridged" の部分は、家庭などでbroadbandルータを利用してDHCPを宅内に配布できるときの設定です。できないときは ethernet0.connectionType = "nat" の方を有効にして下さい。

まだセキュリティとかよくわからないので,とりあえずnatでやりました(natもどこまで安全なのかわからないけど…).

いろいろインストール中,設定内容を聞かれますが,どうせ後で設定できるのですっとばします.
とりあえず過去に他の人から言われたことをやりました.

  • SSHはenableにすると便利
  • shellはtcshが便利
  • ユーザ追加で,グループをwheelにするとよい(wheelの詳しいことは後で調べなきゃな.とりあえず管理者権限が与えられるって感じでいいのかな?)

で,あっさりインストール完了.
さて,問題のapacheのインストールをします.

apacheのインストール

apacheのインストールは何回やってもあっさりできないですw
とりあえず,suして/usr/ports/www/apache22/に移動します.
あとはmakeしてinstallします.

さて,ここで/usr/local/sbin/apachectl startとやるとapacheが動くはずなのですが,普通動かない./usr/local/etc/apache22/httpd.confをいじった記憶があったので,設定します.

AdminName:管理者の名前
ServerName:サーバの名前(〜.localdomainとか?)

あれ?意外といじらない….で,まだ動かない.こんなエラーが出(た気がし)ます*1
その解決方法がここにありました.
http://www.xdelta.net/blog/FreeBSD/2006/05/04/p183

# kldload accf_http

これをやると,必要なモジュールを呼び出してくれるらしい.FreeBSD6.1のときは無かった気がするけどな?

で,その後動くようになるが,apachectl startすると動いてるように見えるのに,ブラウザでhttp://IPアドレス/にアクセスしてもページ読み込みエラーになる.その解決方法がここ.

http://d.hatena.ne.jp/akiyan/searchdiary?of=10&word=*%5B%A5%B5%A1%BC%A5%D0%A1%BC%B4%C9%CD%FD%5D

とりあえず,httpd.confの中の,
LoadModule unique_id_module libexec/apache22/mod_unique_id.so
コメントアウトしてstart.またこいつか!そういえば昔もコメントアウトしてやってました.アクセスしてみると

It Works!

動いた!
なんでも/etc/hostsをちゃんと設定しなくてはいけないらしい.
そこで,/etc/hostsに

IPアドレス ホスト名 ホスト名.localdomain

みたいに書いたら,さきほどのhttpd.confのコメントアウトをはずしても動きました.

もうちょっと細かく調べないと知識つかないなぁ.面倒だけど,将来のためだと思ってやってみます.

次はCGIが動くようにします.

*1:Unable to load accf_http module