スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

僕はtwitter4rを動かしたかっただけなんだ...(環境構築)

こんばんは


タイトルの通りtwitter4r(Ruby用のtwitterAPIを叩くラッパーっていう認識でいいのかな?)を動かしたわけですが
今回の環境はUbnutu10.04,Ruby1.8.*(最後の数字忘れてしまった)


そして書いたプログラムはUbuntu11.04,ruby1.9.3で書いたもの
書いたマシンでは元気に動いていたプログラムなので,まぁ今回のマシンでもgem install twitter4r ってやればすぐに動くだろう...とか思っていたんですけどねぇ
そんなにRubyの世界は甘くなかった


まず

gem install twitter4r

とするが,うまくいかず
sudo を付けてもあまり変わらず
というわけでrvm(Ruby のバージョンマネージャー)を使ってrubyを1.9.3に上げようとする
curl と git-core はいつの間にか入れてあったので以下のコマンドでrvmをインストール

bash < <( curl https://rvm.beginrescueend.com/releases/rvm-install-head )
(事前にcurl,git-coreをインストールする必要有り)

このあと,~/.bashrcの末尾に

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

の一行を追加
といっても上のコマンドを叩くと自動で書き込まれてるっぽいので確認だけ
これで端末を起動し直せば大丈夫...なはずなのだがこれがまたうまく行かない
うまく行けばコマンドラインでrvmと叩けばそれらしいメッセージが出るがcommand not found ばかり
色々やってみたが,最終的に

source ~/.bashrc

としてコマンドラインからbashrcを再度読み込ませるとrvmへのパスが通るみたい
これでめでたくrvmがインストール出来たので,次はruby1.9.3のインストール

rvm install 1.9.3

そしてデフォルトで1.9.3を使うようにするために

rvm use 1.9.3 --default

これでtwitter4rをインストール出来るかと思ったがやはりだめ
さらに調べるとどうもruby1.8-devをインストールするといいらしいのでインストール

sudo apt-get install ruby1.8-dev

そのあとsudo gem install twitter4r とするとエラーはでない
しかし

gem list
(gemでインストールしたものの一覧が出るらしいコマンド)

としても空っぽ
twitter4rを使ったプログラムを動かそうとしても動かず
さらにごにょごにょやって(この時にrubyのバージョンを1.9.2に落とした,方法は上の1.9.3と同じ)

sudo gem list

とするとtwitter4rが入ってる
どうやらsudo gem install とするとsudoをつけないときとインストールされる場所が違うらしい
そしてもしやと思って
sudo ruby <自作プログラムファイル>

とすると動いた!

しかし,たかが自分が作ったプログラムを動かす度にsudoなんて付けるのはさすがにまずかろうというわけでsudoなしで動くように挑戦

問題は
gem install twitter4r
がエラーだしてうまく動かないこと
ちゃんとエラーを読むとどうやらzlib なるものがない(といか見つけられない)らしい
これに対処するには一度rubyをアンインストールしてからzlibなるもののdirを指定してrubyをインストールしなおす必要があるっぽい

rvm remove 1.9.2
rvm install 1.9.2 --with-zlib-dir=$rvm_path/usr

これでどうだとgem install twitter4rを叩くと今度はopensslがないとおっしゃる
わがままなやつである
しかし,そんなわがままも聞いてやらねば自分のプログラムを動かしてくれないので頑張ってやる
これは以下のようにするといいらしい

cd ~/.rvm/src/ruby-1.9.2-p290/ext/openssl/
(ruby-1.9.2-***の部分の数字は違うかも)

ここでextconf.rbというものを動かしてMakefileを作ってmakeしたいがこれを動かすためにはopensslとlibssl-devというものを事前にインストールする必要があるらしいのでやってやる

sudo aptitude install openssl
sudo aptitude install libssl-dev
ruby extconf.rb
make
make install

これで念願の gem install twitter4r を動かすことが出来て,無事にsudoなしで自作のプログラムを動かすことが出来た

ruby周りって環境設定がコーディングの100倍面倒な気がするのは自分だけだろうか...
(たぶんLinux使うからなんだろうけど)

まとめ
(事前にcurl,git-coreをインストールする必要有り)
bash < <( curl https://rvm.beginrescueend.com/releases/rvm-install-head )
source ~/.bashrc
rvm install 1.9.2 --with-zlib-dir=$rvm_path/usr
rvm use 1.9.2 --default
cd ~/.rvm/src/ruby-1.9.2-p290/ext/openssl/
(ruby-1.9.2-***の部分の数字は違うかも)
sudo aptitude install openssl
sudo aptitude install libssl-dev
ruby extconf.rb
make
make install
gem install twitter4r

[お世話になった参考ページ]
Chris Irish | Ruby on Rails Developer | Phoenix, AZ-How to install RVM on Ubuntu 10.04
RVMで複数のRubyを使いこなす - Capsule RVMで複数のRubyを使いこなす - Capsule
別館 子子子子子子(ねこのここねこ)gem install twitter…いやtwitter4r
require "zlib" # => false ?!
f_world21の日記 【続】Ubuntu10.04(Server版)にrails3をインストール - scaffoldが成功するまで


ちなみに動かしたかったプログラムのコードがこんな感じ
(標準入力から入力された文字列をツイートとしてpostするだけ)

#!/usr/bin/ruby
# -*- coding: utf-8 -*-
# encoding utf-8
require "rubygems"
gem "twitter4r"
require "twitter"

Twitter::Client.configure do |c|
c.oauth_consumer_token = "consumer key"
c.oauth_consumer_secret = "consumer secret"
end

#access token と acess secretを渡してクライアントを初期化
client = Twitter::Client.new(:oauth_access =>{
:key => "access key",
:secret => "access secret" })
while true do
print "独り言>>>"
mes = gets.chomp
if mes =="\\end" then break end
if mes == "" then
puts "break"
next
end
client.status(:post , mes)
end
スポンサーサイト

コメント

非公開コメント

最新記事
カテゴリ
最新コメント
月別アーカイブ
最新トラックバック
カウンター
プロフィール
情報科学を専攻している大学院生. OSとかHypervisor とかいじってます.

時羽金也

Author:時羽金也

リンク
検索フォーム
QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。