月別アーカイブ: 2013年7月

ruby2.0のインストール時rbenvがBUILD FAILEDになる、そんなとき

Ubuntuにrbenvを使ってruby2.0を入れようと思ったわけです。
OpenSSLがないっぽいと言われBUILD FAILEDになったのですけど、結論から言うとメッセージのとおりで前提のパッケージを諸々入れると良いです。

sudo apt-get install zlib1g-dev build-essential libssl-dev libreadline-dev git

これぐらい入れておけば大丈夫そう。

せっかくなのでインストールの手順を残しておきます。

やり方は以下のリンク先に従えばよくて、まずはrbenvruby-buildをインストールします。

https://github.com/sstephenson/rbenv

#rbenvのインストール
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
echo 'eval "$(rbenv init -)"' >> ~/.profile
exec $SHELL -l

#ruby-buildのインストール
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

利用可能なバージョンの一覧を表示

rbenv install --list

バージョンを一覧から選んでインストール。今回は2.0.0-p247。

rbenv install 2.0.0-p247

ところが前提が足りずにBUILD FAILEDになります。

$ rbenv install 2.0.0-p247
Downloading ruby-2.0.0-p247.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz
Installing ruby-2.0.0-p247...

BUILD FAILED

Inspect or clean up the working tree at /tmp/ruby-build.20130730092728.31571
Results logged to /tmp/ruby-build.20130730092728.31571.log

Last 10 log lines:
installing default gems:      /home/skmk/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0 (build_info, cache, doc, gems, specifications)
                              bigdecimal 1.2.0
                              io-console 0.4.2
                              json 1.7.7
                              minitest 4.3.2
                              psych 2.0.0
                              rake 0.9.6
                              rdoc 4.0.0
                              test-unit 2.0.0.0
The Ruby openssl extension was not compiled. Missing the OpenSSL lib?

OpenSSLをインストールしてあるはずなのにOpenSSLがないんじゃない?って言われてます。 実は足りないのはlibssl-devです。

sudo apt-get install libssl-dev

再度インストール

$ rbenv install 2.0.0-p247
Downloading ruby-2.0.0-p247.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz
Installing ruby-2.0.0-p247...
Installed ruby-2.0.0-p247 to /home/skmk/.rbenv/versions/2.0.0-p247

rubyを使えるようにします。

rbenv global 2.0.0-p247
rbenv rehash

バージョン確認します。

$ ruby --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux]

OK、入った。 この辺に前提条件のパッケージが書かれてるので、入れとくとよいと思います。
https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/requirements/ubuntu

おわり

GO言語を触ってみた

GO言語を触ってみた。 http://golang.jp/

試しに標準入力からファイルを読み込んで出力するプログラム

package main

import (
        "bufio"
        "fmt"
        "log"
        "os"
)

func main() {
        scanner := bufio.NewScanner(os.Stdin)
        for scanner.Scan() {
                fmt.Println(scanner.Text())
        }
        if err := scanner.Err(); err != nil {
                log.Fatal(err)
        }
}

BOMや改行コードCRはスキップされるので簡易正規化に使えるかもしれない。
引数に指定したURLの内容を出力する。

package main

import (
    "flag"
    "fmt"
    "io/ioutil"
    "net/http"
)

func getContent(url string) (body []byte, err error) {
    resp, err := http.Get(url)
    if err != nil {
        return
    }

    defer resp.Body.Close()
    body, err = ioutil.ReadAll(resp.Body)
    return
}

func main() {
    flag.Parse()
    url := flag.Arg(0)
    content, err := getContent(url)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(string(content))
}

JSONとかに渡して何かできそうな気もする(けど今はあまりモチベーションないや)

svn log --xmlの結果を受け取る

package main

import (
        "encoding/xml"
        "fmt"
        "log"
        "os/exec"
)

type Data struct {
        XMLName xml.Name `xml:"log"`
        Entry   []Entry  `xml:"logentry"`
}

type Entry struct {
        Revision int    `xml:"revision,attr"`
        Author   string `xml:"author"`
        Date     string `xml:"date"`
        Message  string `xml:"msg"`
}

func main() {
        xmlFile, err := exec.Command("/usr/bin/svn", "log", "--xml").Output()
        if err != nil {
                log.Fatal(err)
        }
        var data Data
        xml.Unmarshal([]byte(xmlFile), &data)
        for index := range data.Entry {
                fmt.Printf("%#v\n", data.Entry[index])
        }
}

スクリプト言語の気軽さがあるコンパイル言語だけど、イマイチまだ使いどころが見いだせないでいる。

この言語でなければならないという確固たる理由が今のところないからだ。この先、書いてて気持ちよくなるかどうかにかかっているなあ。