Edo::World::Blog

〜Linux/Solaris関連の作業メモ〜

[Ruby] rbenvインストール(外部ネットワーク無いローカル作業)

CentOS6.4(64bit)にrbenvをインストールし、ruby 1.9.3-p448環境を構築

rpmの確認

ちょっとよくわからないけど、openssl-develだけでOKっぽい

$ rpm -qa | grep openssl


事前環境作成

ネットワークのあるサーバで実施しておくこと!

[rbenvダウンロード]

$ cd ; pwd
/home/hoge
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

[ruby-1.9.3用のプラグインファイルを確認]

このファイルを参照してリモートから取得するので対象ファイル名を確認しておく

$ cat ~/.rbenv/plugins/ruby-build/share/ruby-build/1.9.3-p448 
install_package "yaml-0.1.4" "http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz#36c852831d02cf90508c29852361d01b"
install_package "ruby-1.9.3-p448" "http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz#a893cff26bcf351b8975ebf2a63b1023"

[ruby-1.9.3用関連ファイルダウンロード]

$ git clone https://github.com/sstephenson/ruby-build.git ~/ruby-build
$ wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
$ wget http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz

[チェックサムの取得]

ダウンロードしたファイルのチェックサムを確認

$ md5sum yaml-0.1.4.tar.gz ruby-1.9.3-p448.tar.gz
36c852831d02cf90508c29852361d01b  yaml-0.1.4.tar.gz
a893cff26bcf351b8975ebf2a63b1023  ruby-1.9.3-p448.tar.gz 

[アーカイブ化]

$ cd ;
/home/hoge
$ tar cfz rbenv_local.tar.gz  .rbenv ruby-build yaml-0.1.4.tar.gz  ruby-1.9.3-p448.tar.gz; echo $?
0


rbenvインストール対象ホストで実行

hogeユーザのホームディレクトリに構築

[前提条件]

gitがインストールされていること

[アーカイブファイル展開]

$ cd /home/hoge; pwd    # 一般ユーザ(hoge)のホームディレクトリを想定
/home/hoge
$ tar xvfz rbenv_local.tar.gz    # 先ほど固めたファイルをここで展開
$ mkdir ~/.rbenv/plugins
$ mv ruby-build ~/.rbenv/plugins/

[profileの作成]

$ echo 'export PATH="$HOME/.rbenv/bin:./.rbenv/versions/1.9.3-p448/bin/:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ . ~/.bash_profile


[rubyの取得サイトとチェックサムを変更]

URLを「http://localhost/」に変更し、チェックサムをダウンロードしてきたファイルの値に変更

  • 変更前
$ cat ~/.rbenv/plugins/ruby-build/share/ruby-build/1.9.3-p448 
install_package "yaml-0.1.4" "http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz#36c852831d02cf90508c29852361d01b"
install_package "ruby-1.9.3-p448" "http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz#a893cff26bcf351b8975ebf2a63b1023"
  • 変更後
$ cat ~/.rbenv/plugins/ruby-build/share/ruby-build/1.9.3-p448 
install_package "yaml-0.1.4" "http://localhost/yaml-0.1.4.tar.gz#36c852831d02cf90508c29852361d01b"
install_package "ruby-1.9.3-p448" "http://localhost/ruby-1.9.3-p448.tar.gz#a893cff26bcf351b8975ebf2a63b1023"


[git構築]

$ cd ; pwd
/home/hoge
$ git init 
$ git add yaml-0.1.4.tar.gz ruby-1.9.3-p448.tar.gz 
$ git commit -m'init'


[httpサーバー起動]

$ sudo python -m SimpleHTTPServer 80 &   ※80番ポートで起動する場合、root権限が必要


rbenvインストール

$ rbenv install 1.9.3-p448
$ rbenv rehash
$ rbenv versions
* system (set by /Users/hoge/.rbenv/version)
  1.9.3-p448
$ rbenv global 1.9.3-p448
$ rbenv versions
  system
* 1.9.3-p448 (set by /Users/edo/.rbenv/version)
$ which ruby; ruby -v

[Python] Sphinxメモ

備忘録

続きを読む

[Ruby] プログラム名($0 ・ __FILE__)

実行中のプログラム名を表示するには、"$0"と"__FILE__"のいづれかを利用する。

動作概要

  • "$0": ライブラリとして使用された場合(require)、呼び出し元を表示
  • "__FILE__": 常にプログラム名を表示


動作テスト

  • Foo.rb
#!/usr/bin/env ruby
# coding: utf-8

class Foo
  puts "Foo:$0 => " + $0
  puts "Foo:__FILE__ =>" + __FILE__

  require './Hoge'
end

f=Foo.new
  • Hoge.rb
#!/usr/bin/env ruby
# coding: utf-8
  
class Hoge
  puts "Hoge:$0 => " + $0
  puts "Hoge:__FILE__ =>" + __FILE__
end
  • 実行結果
$ ./Foo.rb 
Foo:$0 => ./Foo.rb
Foo:__FILE__ =>./Foo.rb
Hoge:$0 => ./Foo.rb
Hoge:__FILE__ =>/tmp/Hoge.rb


利用例

equire された時は、"# Code"は実行しない。

if __FILE__ == $0
  # Code
end

[Ruby] Fileクラス・Dirクラス

IOを継承したFileクラス

File

[ファイルの読み込み]

  • ファイルの内容をすべて読み込んで出力
File.open 'input.txt' do |f|
  puts f.read
end
  • ファイルを一行づつ読み出し
File.open 'input.txt' do |f|
  f.each_line do |line|
    puts line
  end
end


Dir

[ファイル一覧取得]

Dir.open('/usr') do |d|
  puts d.entries
end
  • globを使用
puts Dir.glob('/usr/lib*')

Dir.glob('/usr/lib*') do |list|
  puts list
end

[Ruby] bundler

環境設定

[インストール]

gem install bundler

[ひな形の作成]

  • "-b"オプション: コマンドのひな形も作成
  • "-t"オプション: テストコード用のひな形も作成
$ bundler gem 

実行例

$ pwd
/Users/hoge

$ bundle gem hogehoge -b
      create  hogehoge/Gemfile
      create  hogehoge/Rakefile
      create  hogehoge/LICENSE.txt
      create  hogehoge/README.md
      create  hogehoge/.gitignore
      create  hogehoge/hogehoge.gemspec
      create  hogehoge/lib/hogehoge.rb
      create  hogehoge/lib/hogehoge/version.rb
      create  hogehoge/bin/hogehoge
Initializating git repo in /users/hoge/hogehoge

gemspecファイル

  • gitがインストールされていて、かつuser.nameとuser.emailが設定されている事。

[表示]

$ bundle list


使用方法

[bundler installしたgemパッケージをrequire]

require 'bundler'

Bundler.require
self.


[gemパッケージをローカル(キャッシュ)に保存]

$ vi Gemfile          # インストールしたいパッケージを記載
$ bundler install  # まずはパッケージをインストール
$ bundle package
$ ls vendor/cache

[gemパッケージをローカル(キャッシュ)からインストール]

$ bundle install --local

[Mercurial] 備忘録


環境設定

[.hgignore]

globとregexpの二つの書き方が可能

# パターンマッチ
syntax: glob
*.pyc
*~

# 正規表現
syntax: re
^\.txt


リポジトリへのパスを表示

$ hg path
default = ssh://hg@bitbucket.org/hoge/repo


hg parents

現在のリビジョンを表示(-vでファイル情報付きで表示)


tag

[タグの一覧を表示]

$ hg tags

[タグ付け]

hg tag -r <リビジョン番号> <タグ名>


ブランチ

ブランチ一覧を表示

$ hg branches

[ブランチ作成]

$ hg branch <ブランチ名>

[ブランチの切替]

$ hg update -C default
$ hg branch

[マージ]

$ hg merge -r <ブランチ名>

# コンフリクト時
$ hg resolve -l     ※コンフリクトしたファイルの表示
U a.txt
$ vi a.txt
$ hg resolve -m a.txt
$ hg resolve -l  
R a.txt     ※ステータスがRである事
$ hg commit -m'merge'

hg log

[(-v) ファイル情報を含むログ情報を表示]

$ hg log  -v

[指定したファイルのログ情報を表示]

$ hg log  -v <ファイル名>

[(-l) リビジョン数を指定して表示]

$ hg log -l 5  ※現在から5つ分のリビジョン情報を表示

[(-r) リビジョン番号を指定してログ情報を表示]

$ 
hg log -r 3
※リビジョン番号3を表示 $
hg log -r 3:5
※リビジョン番号3~5を表示

[headのログ情報を表示]

$ hg log -r "head()"

[ログ情報をグラフ表示]

$ hg glog


hg cat

$ hg cat -r <リビジョン番号> <ファイル名>


hg diff

$ hg diff

[(-r) 指定したリビジョンからの差分情報を表示]

$ hg diff -r 2         ※ リビジョン番号2と作業領域の差分を表示
$ hg diff -r 1 -r 2  ※ リビジョン番号1と2の作業領域の差分を表示

[(-c) 指定したリビジョンからの変更情報を表示]

$ hg diff -c 2         ※ リビジョン番号2の変更情報を表示


hg pull

作業領域よりリポジトリの情報が新しい場合

# hg commit

# リポジトリと作業領域の差分を確認
$ hg in  ※(inは、incommingの略)差分が表示されない場合は、リポジトリと同期がとれた状態

# 指定リポジトリからの変更履歴の取り込み
$ hg pull

# 作業領域の更新
$ hg update


作業領域からpull後、リポジトリを更新

# hg commit 

# リポジトリと作業領域の差分を確認
$ hg out  ※(outは、outgoingの略)差分が表示されない場合は、リポジトリと同期がとれた状態

# 作業領域
$ hg push file://$(whoami)@localhost/repo

#レポジトリに移動して最新化
$ cd /repo; pwd
$ hg log          ※ 作業領域でpushした情報が未反映
$ hg update    ※ 更新


ブランチ

$ hg status <リビジョン番号>
 ~作業領域のファイル変更~
$ hg commit
新規ヘッドが増えました
$ hg head   ※2つのリビジョン情報が表示される
$ hg glog    ※分岐状態を確認

$ hg merge
$ hg commit -m'merge'
$ hg glog


rollback

[指定ファイルをコミット前の状態に戻す]

$ hg rollback                                   ※直前のコミットを取り消し
$ hg revert <対象ファイル名>     ※編集内容を取り消し
$ ls -l *.orig        ※revert時に変更前の状態が「指定ファイル名>.orig」でバックアップされる。必要に応じて削除

[前ファイルをコミット前の状態に戻す]


export

[リポジトリの全ファイルをzip形式でアーカイブ]

$ hg archive -r tip -t zip ../$(basename $(pwd)).zip

# アーカイブされたファイルの内容を確認
$ unzip -l../$(basename $(pwd)).zip 

[リポジトリから指定ファイルのみzip形式でアーカイブ]

$ hg archive -r tip -t zip ../$(basename $(pwd)).zip -I a.txt

|<

[リポジトリから指定ファイルを除く前ファイルをzip形式でアーカイブ]

$ hg archive -r tip -t zip ../$(basename $(pwd)).zip -X a.txt


help

add 指定ファイルの追加登録予約
annotate ファイル行毎のリビジョン情報表示
clone 既存リポジトリの複製
commit 指定ファイルないし全ての変更内容のリポジトリへの記録
diff 作業領域全体(ないし指定ファイル)の差分抽出
export 1つ以上のリビジョンに対するヘッダおよび変更内容の出力
forget 次回コミットにおける指定ファイルの登録除外
init 指定されたディレクトリでの新規リポジトリの作成
log リポジトリ全体ないしファイルの変更履歴の表示
merge 作業領域の内容と他のリビジョンのマージ
pull 指定リポジトリからの変更履歴の取り込み
push 指定リポジトリへの変更履歴の反映
qdiff 現行パッチと作業領域変更の結合結果の表示
qnew 新規パッチの作成
qpop 現行パッチの適用解除
qpush 次のパッチの適用
qrefresh 現行パッチの更新
remove 次回コミットにおける指定ファイルの登録除外
serve 独立したウェブサーバの実行開始
status 作業領域のファイル操作状況の表示
summary 作業領域状態の概要表示
update 作業領域の内容更新(ないしリビジョンの切り替え)


[Ruby] DATA

Perlの"__DATA__"と同義。Rubyの場合、"__END__"と定義し、DATAという定数で操作。

続きを読む

[Ruby] rbenvの備忘録

続きを読む

[Linux] パイプを使ってリモートホストへファイル転送

備忘録

続きを読む

[mac] 購入後

Xcodeインストール

ダウンロードサイト:https://developer.apple.com/downloads/index.action

"Xcode 4.4 Command Line Tools (OS X 10.8 for Xcode) April 2013" をダウンロード


Portsインストール

$ curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.2.0.tar.bz2
$ tar jxvf MacPorts-2.2.0.tar.bz2 
$ cd MacPorts-2.2.0
$ sh ./configure
$ make
$ sudo make install
$ echo  export PATH=/opt/local/bin:/opt/local/sbin:$PATH >> ~/.bashrc
$ . ~/bashrc
$ which port
$ sudo port -v selfupdate

パッケージのインストール

$  sudo port install git-core +bash_completion mercurial tree

鍵作成

$ mkdir -m 700 ~/.ssh
$ ssh-keygen -t rsa -f $HOME/.ssh/id_rsa_$(whoami)_$(uname -n) -N ''  -C "$(whoami)@$(uname -n)"
$ ls -l .ssh/
$ cat id_rsa_$(whoami)_$(uname -n).pub >> authorized_keys
$ chmod 600 ~/.ssh/*
$ ls -l ~/.ssh/


Ruby


safari

deleteキーで戻るを実装

defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2BackspaceKeyNavigationEnabled -bool YES


Beep音の抑止

echo "set bell-style none" >> ~/.inputrc
プロフィール

edworld

記事検索
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

livedoor 天気
  • ライブドアブログ