SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
Ruby in Wheezy
 〜第69回 関西Debian勉強会〜

佐々木洋平/Youhei SASAKI
     twitter: @uwabami


       2013/02/24
 GREE 大阪オフィス セミナールーム
どーも
佐々木
です
About me.

Name & Contact:

 ✓ 佐々木洋平/Youhei SASAKI
 ✓ Twitter/Github: uwabami

Activity:

 ✓ Debian JP Project/ 関西 Debian 勉強会
 ✓ Ruby, TeX, Emacs, Scientific Computing...
About me.

Name & Contact:

 ✓ 佐々木洋平/Youhei SASAKI
 ✓ Twitter/Github: uwabami

Activity:

 ✓ Debian JP Project/ 関西 Debian 勉強会
 ✓ Ruby, TeX, Emacs, Scientific Computing...
Ruby...?
Maintainer Dashboard
    Debian QA

Maintainer Dashboard@UDD
  http://udd.debian.org/dmd.cgi?email1=uwabami
  %40gfd-dennou.org

Debian Quality Assuarance
  http://qa.debian.org/developer.php?
  login=uwabami%40gfd-dennou.org
Disclaimer

無保証無責任原則

 ✓ 用法, 用量を守って正しくお使い下さい
 ✓ 誤字脱字含め, 適宜ご指摘下されば幸いです.

疑問/質問/ツッコミ/茶々, 大歓迎

 ✓ その場でどうぞ

ハッシュタグ: #kansaidebian
Agenda


1. Ruby in Wheezy
2. Switch your Ruby
3. gem2deb

4. Debian with Rails
Agenda


1. Ruby in Wheezy
2. Switch your Ruby
3. gem2deb

4. Debian with Rails
Ruby in
Wheezy
Ruby の実装

Ruby インタープリタには実装が複数ある
 MRI1.8.7, MRI1.9.3, JRuby: apt ready!
 Rubinius: Work in Progress ITP#591817
 mruby: Work in Progress ITP#697835
 他に HPC Ruby Compiler, Topaz, etc.

これらを用途の応じて使い分けるには?
Agenda


1. Ruby in Wheezy
2. Switch your Ruby
3. gem2deb

4. Debian with Rails
Switch your Ruby?

Debian には update-alternatives がある
  同じ機能を提供する複数のソフトウェアを切り替える仕
  組み
  例: vi -> nvi, vim

/usr/bin/ruby の実体は symbolic link
  alternatives で管理.
  でも ruby 切り替えたら gem とか irb も変えたいよね?
システム全体で変えるには?

ruby-switch が便利です.
 update-aliternatives の wrapper です.


        %   ruby-switch --list
        %   ruby-switch --set ruby1.9.1
        %   ruby -v
        %   ruby-switch --set ruby1.8
        %   ruby -v
ユーザ毎に変えるには?

rbenv を使いましょう.

     % rbenv init
     # Load rbenv automatically by adding
     # the following to ~/.bash_profile:

     eval "$(rbenv init -)"
     % rbenv versions
     % rbenv alternatives
     % rbenv versions
     % rbenv global 1.9.3-debian
Debian パッケージになって
    いないRuby を使うには?

ruby-build を使うことが可能です.

While ruby-build is a great tool to build Ruby versions that are not
available via APT, you should still use the Debian-packaged versions
of Ruby whenever possible since they are tested and supported by the
Debian community.

Please do not report bugs you encounter while using your homebuilt
Rubies to the Debian team; Rubies built by yourself are not supported.
ruby-build で ruby2.0rc2
           を使うには?: (1)
   rbenv + ruby-build がオススメ
   ruby-build の definitions には 2.0.0-dev までしか
   ない
       2.0.0rc2 の definitions を書いて build すれば良くね?

   /usr/share/ruby-build/2.0.0-dev をコピーして修
   正

% cat 2.0.0rc2
install_git "ruby-2.0.0rc" "https://github.com/ruby/ruby.git" "v2_0_0_rc2" autoconf standard
ruby-build で ruby2.0rc2
     を使うには?: (2)

必要なパッケージを install

 % sudo apt-get build-dep ruby1.9.1-dev
 ...



rbenv 管理下に install

 % ruby-build --verbose 2.0.0rc2 `echo $HOME`/.rbenv/versions/2.0.0rc2
 ...
ruby-build で ruby2.0rc2
   を使うには?: (3)

rbenv で環境変数を読み込み

 % rbenv global 2.0.0rc2
 % ruby -v
 ruby 2.0.0dev (2013-02-08 trunk 39159) [x86_64-linux]


試しにイロイロ動かしてみましょう
ruby-build: 注意


再掲します:

While ruby-build is a great tool to build Ruby versions that are not
available via APT, you should still use the Debian-packaged versions
of Ruby whenever possible since they are tested and supported by the
Debian community.

Please do not report bugs you encounter while using your homebuilt
Rubies to the Debian team; Rubies built by yourself are not supported.
Have any
questions?
Agenda


1. Ruby in Wheezy
2. Switch your Ruby
3. gem2deb

4. Debian with Rails
gem2deb
Ruby in Debian:
   Maintainer Team

Ruby 本体: pkg-ruby チーム
 MRI, Rubinius...
 JRuby は pkg-java チーム

Ruby の(拡張)ライブラリ: pkg-ruby-extreas チーム
 Team Documentation and current packaging
 practices
Ruby in Debian:
   Package naming scheme

これまで:
 ruby1.8, ruby1.9.1 各々ついて別のパッケージ名
 libhogehoge-ruby{,1.8,1.9.1} という名前

これから:
 ruby1.8, ruby1.9.1 両方について同じパッケージ名
 ruby-hogehoge: hogehoge は gem の名前
Ruby in Debian:
    File hierarchy(1)
本体同梱以外のパッケージは vendordir 以下に
pure Ruby: Config::CONFIG['vendordir']
  /usr/lib/ruby/vendor_ruby

C 拡張ライブラリ: Config::CONFIG
['vendorarchdir']
  /usr/lib/ruby/vendor_ruby/1.8/x86_64-linux
  /usr/lib/ruby/vendor_ruby/1.9.1/x86_64-linux
Ruby in Debian:
 File hierarchy(2)

% irb1.8
irb(main):001:0> puts $LOAD_PATH
/usr/local/lib/site_ruby/1.8
/usr/local/lib/site_ruby/1.8/x86_64-linux
/usr/local/lib/site_ruby
/usr/lib/ruby/vendor_ruby/1.8
/usr/lib/ruby/vendor_ruby/1.8/x86_64-linux
/usr/lib/ruby/vendor_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/x86_64-linux
.
=> nil
Ruby in Debian:
File hierarchy(3)

% irb1.9.1
puts $LOAD_PATH
irb(main):001:0> puts $LOAD_PATH
/usr/local/lib/site_ruby/1.9.1
/usr/local/lib/site_ruby/1.9.1/x86_64-linux
/usr/local/lib/site_ruby
/usr/lib/ruby/vendor_ruby/1.9.1
/usr/lib/ruby/vendor_ruby/1.9.1/x86_64-linux
/usr/lib/ruby/vendor_ruby
/usr/lib/ruby/1.9.1
/usr/lib/ruby/1.9.1/x86_64-linux
.
=> nil
Ruby in Debian:
   Maintainer Team

Ruby 本体: pkg-ruby チーム
 MRI, Rubinius...
 JRuby は pkg-java チーム

Ruby の(拡張)ライブラリ: pkg-ruby-extreas チーム
 Team Documentation and current packaging
 practices
 パッケージ作成には gem2deb を使用中
Ruby in Debian:
   gem2deb
gem2deb:
 gem から deb パッケージを作成するコマンド


   %   gem fetch hogehoge.gem
   %   gem2deb hogehoge[version].gem
   %   ...
   %   dpkg -i ruby-hogehoge_[version]-1.deb


...と, 常にこうなるなら苦労しねぇんだな, これが.
gem2deb pit fall(1):
    dependency hell


多くの gem は「依存漏れ」がある
  みつける度に Bug Report 書こう!

chain dependencies
  Fxxk !!
gem2deb pit fall(2):
   test/spec(1)
Debian パッケージは Ruby1.8, 1.9.3 両方で動く必
要有
 1.9 のみサポート, というのも可能ですが.
 なので, テストが転んで deb ができない, という事が多
 い

test/spec で PATH が埋め込まれている
 相対 PATH が酷い事になっていたり
 gem としても作法が良くないですよね?
gem2deb pit fall(2):
   test/spec(2)

LOCALE の設定がアレ
 Debian のパッケージビルド環境は LOCALE が設定さ
 れていない
 test/spec の Encoding.default_external が...
 最近 gem2deb は Encoding.default_external =
 "UTF-8" になった.

Bundler で古いライブラリに pin 止めされていたり
実演?
Have any
questions?
Agenda


1. Ruby in Wheezy
2. Switch your Ruby
3. gem2deb

4. Debian with Rails
Debian
 with
 Rails
Rails Application in
    Debian

Debian パッケージとして提供している Rails アプリ
  今の所 Redmine のみ
  しかも Redmine 1.4.4
    Redmine 2.x は experimental

Redmine 1.4.4 は Rails2
  なので Debian パッケージには Rails2 と Rails3 が存
  在
Rails in Debian

Rails2, Rails3 in Debian

   % apt-show-versions -p rails
   Not installed
   rails 2:2.3.14.2 sid ftp.jp.debian.org
   % apt-show-versions -p rails3
   Not installed
   rails3 3.2.6-1 sid ftp.jp.debian.org
Rails in Debian


パッケージとしての共存は不可能
  ActiveRecord, ActiveSupport の 2 系と 3 系を共存?
  require に version 番号付けるだけで良い?

そもそも需要あるの?
chroot + reverse proxy ?
Have
  any
Ideas?
Have any
questions?
References.


Lucas Nussbaum's Blog:
  * Changes to Ruby in Debian (and Ubuntu)
    http://www.lucas-nussbaum.net/blog/?p=681

DebianWiki:
  * TeamsRuby:
    http://wiki.debian.org/Teams/Ruby
  * Debian/Ruby Wheezy Transition:
    http://pkg-ruby-extras.alioth.debian.org/wheezy/

Weitere ähnliche Inhalte

Was ist angesagt?

【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化Yuki Kanazawa
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Naoki Nagazumi
 
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Masahito Zembutsu
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向Kazuho Oku
 
開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみたpyar6329
 
Mod lua
Mod luaMod lua
Mod luado_aki
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)佐久本正太
 
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオンJAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオンRyo Nakamaru
 
Re: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうかRe: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうかMasahito Zembutsu
 
aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話Nozomu KURASAWA
 
rsyncのちょっとイイ話
rsyncのちょっとイイ話rsyncのちょっとイイ話
rsyncのちょっとイイ話Kazuhiro Oinuma
 
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundryコンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud FoundryKazuto Kusama
 
Weaveを試してみた
Weaveを試してみたWeaveを試してみた
Weaveを試してみたKazuto Kusama
 
DebianとFedoraでパッケージをリリースするまでの話
DebianとFedoraでパッケージをリリースするまでの話DebianとFedoraでパッケージをリリースするまでの話
DebianとFedoraでパッケージをリリースするまでの話kenhys
 
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~decode2016
 
microPCFを使ってみよう
microPCFを使ってみようmicroPCFを使ってみよう
microPCFを使ってみようHiroaki_UKAJI
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構Ryosuke MATSUMOTO
 

Was ist angesagt? (20)

【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化【dots. IT勉強会】開発環境のDocker化
【dots. IT勉強会】開発環境のDocker化
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
 
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
Dockerは2016年の秋現在どのような状況なのか~忙しい人の5分で分かるDocker~
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向
 
開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた開発環境をVagrantからdockerに移行してみた
開発環境をVagrantからdockerに移行してみた
 
Mod lua
Mod luaMod lua
Mod lua
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)
 
Docker Swarm入門
Docker Swarm入門Docker Swarm入門
Docker Swarm入門
 
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオンJAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
 
Re: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうかRe: 運用に自動化を求めるのは間違っているだろうか
Re: 運用に自動化を求めるのは間違っているだろうか
 
aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話
 
Mod mrubyについて
Mod mrubyについてMod mrubyについて
Mod mrubyについて
 
rsyncのちょっとイイ話
rsyncのちょっとイイ話rsyncのちょっとイイ話
rsyncのちょっとイイ話
 
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundryコンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundry
 
Weaveを試してみた
Weaveを試してみたWeaveを試してみた
Weaveを試してみた
 
DebianとFedoraでパッケージをリリースするまでの話
DebianとFedoraでパッケージをリリースするまでの話DebianとFedoraでパッケージをリリースするまでの話
DebianとFedoraでパッケージをリリースするまでの話
 
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
 
microPCFを使ってみよう
microPCFを使ってみようmicroPCFを使ってみよう
microPCFを使ってみよう
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
 

Andere mochten auch

第66回関西Debian勉強会@KOF2012
第66回関西Debian勉強会@KOF2012第66回関西Debian勉強会@KOF2012
第66回関西Debian勉強会@KOF2012Youhei SASAKI
 
Edat Mitjana Marc Cabestany
Edat Mitjana Marc CabestanyEdat Mitjana Marc Cabestany
Edat Mitjana Marc Cabestanymarc8
 
Debian 7.0 “Wheezy” frozen
Debian 7.0 “Wheezy” frozenDebian 7.0 “Wheezy” frozen
Debian 7.0 “Wheezy” frozenYouhei SASAKI
 
Civil Disobedence; Jasmine Johnson
Civil Disobedence; Jasmine JohnsonCivil Disobedence; Jasmine Johnson
Civil Disobedence; Jasmine Johnsonjasmine81493
 
Debian Update: ~ Jessie, Stretch, Buster ~
Debian Update: ~ Jessie, Stretch, Buster ~Debian Update: ~ Jessie, Stretch, Buster ~
Debian Update: ~ Jessie, Stretch, Buster ~Youhei SASAKI
 
Q4 Economic Webinar with Dr. Joe Webb
Q4 Economic Webinar with Dr. Joe WebbQ4 Economic Webinar with Dr. Joe Webb
Q4 Economic Webinar with Dr. Joe WebbEric Vessels
 

Andere mochten auch (9)

Academic libraries, zagreb
Academic libraries, zagrebAcademic libraries, zagreb
Academic libraries, zagreb
 
第66回関西Debian勉強会@KOF2012
第66回関西Debian勉強会@KOF2012第66回関西Debian勉強会@KOF2012
第66回関西Debian勉強会@KOF2012
 
Catalunya4t
Catalunya4tCatalunya4t
Catalunya4t
 
University of Ioannina Library/ Gzachos
University of Ioannina Library/ GzachosUniversity of Ioannina Library/ Gzachos
University of Ioannina Library/ Gzachos
 
Edat Mitjana Marc Cabestany
Edat Mitjana Marc CabestanyEdat Mitjana Marc Cabestany
Edat Mitjana Marc Cabestany
 
Debian 7.0 “Wheezy” frozen
Debian 7.0 “Wheezy” frozenDebian 7.0 “Wheezy” frozen
Debian 7.0 “Wheezy” frozen
 
Civil Disobedence; Jasmine Johnson
Civil Disobedence; Jasmine JohnsonCivil Disobedence; Jasmine Johnson
Civil Disobedence; Jasmine Johnson
 
Debian Update: ~ Jessie, Stretch, Buster ~
Debian Update: ~ Jessie, Stretch, Buster ~Debian Update: ~ Jessie, Stretch, Buster ~
Debian Update: ~ Jessie, Stretch, Buster ~
 
Q4 Economic Webinar with Dr. Joe Webb
Q4 Economic Webinar with Dr. Joe WebbQ4 Economic Webinar with Dr. Joe Webb
Q4 Economic Webinar with Dr. Joe Webb
 

Ähnlich wie Ruby In Wheezy

Ruby in Wheezy @ 関西闇Ruby
Ruby in Wheezy @ 関西闇RubyRuby in Wheezy @ 関西闇Ruby
Ruby in Wheezy @ 関西闇RubyYouhei SASAKI
 
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編Yohei Yasukawa
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Hitoshi Kurokawa
 
Railsの開発環境作るぞ
Railsの開発環境作るぞRailsの開発環境作るぞ
Railsの開発環境作るぞYoichi Toyota
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜niwatako
 
とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。Kouhei Maeda
 
Debian パッケージングチュートリアル
Debian パッケージングチュートリアルDebian パッケージングチュートリアル
Debian パッケージングチュートリアルNozomu KURASAWA
 
Debian Next Release Goal: Multiarch
Debian Next Release Goal: MultiarchDebian Next Release Goal: Multiarch
Debian Next Release Goal: MultiarchYouhei SASAKI
 
VC6によるRuby拡張ライブラリ開発環境について
VC6によるRuby拡張ライブラリ開発環境についてVC6によるRuby拡張ライブラリ開発環境について
VC6によるRuby拡張ライブラリ開発環境についてgoritto
 
最近のrubyのインストール方法
最近のrubyのインストール方法最近のrubyのインストール方法
最近のrubyのインストール方法Kazuhiro Nishiyama
 
20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化
20130328 第03回福岡debian勉強会   debianパッケージ情報と依存関係の可視化20130328 第03回福岡debian勉強会   debianパッケージ情報と依存関係の可視化
20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化Tsuyoshi Yamada
 
behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方Ryo Tomidokoro
 
Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3Sea Mountain
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChefMasahiro NAKAYAMA
 

Ähnlich wie Ruby In Wheezy (20)

Ruby in Wheezy @ 関西闇Ruby
Ruby in Wheezy @ 関西闇RubyRuby in Wheezy @ 関西闇Ruby
Ruby in Wheezy @ 関西闇Ruby
 
Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編Rails解説セミナー: リリースノート解説編
Rails解説セミナー: リリースノート解説編
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
Railsの開発環境作るぞ
Railsの開発環境作るぞRailsの開発環境作るぞ
Railsの開発環境作るぞ
 
RubyGemsの落とし穴
RubyGemsの落とし穴RubyGemsの落とし穴
RubyGemsの落とし穴
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
Rbenv
RbenvRbenv
Rbenv
 
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
 
とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。
 
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
 
Debian パッケージングチュートリアル
Debian パッケージングチュートリアルDebian パッケージングチュートリアル
Debian パッケージングチュートリアル
 
Debian Next Release Goal: Multiarch
Debian Next Release Goal: MultiarchDebian Next Release Goal: Multiarch
Debian Next Release Goal: Multiarch
 
VC6によるRuby拡張ライブラリ開発環境について
VC6によるRuby拡張ライブラリ開発環境についてVC6によるRuby拡張ライブラリ開発環境について
VC6によるRuby拡張ライブラリ開発環境について
 
最近のrubyのインストール方法
最近のrubyのインストール方法最近のrubyのインストール方法
最近のrubyのインストール方法
 
20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化
20130328 第03回福岡debian勉強会   debianパッケージ情報と依存関係の可視化20130328 第03回福岡debian勉強会   debianパッケージ情報と依存関係の可視化
20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化
 
Ruby build
Ruby buildRuby build
Ruby build
 
behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方
 
Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3
 
今日から使い始めるChef
今日から使い始めるChef今日から使い始めるChef
今日から使い始めるChef
 

Kürzlich hochgeladen

2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦Sadao Tokuyama
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 

Kürzlich hochgeladen (12)

What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 

Ruby In Wheezy

  • 1. Ruby in Wheezy 〜第69回 関西Debian勉強会〜 佐々木洋平/Youhei SASAKI twitter: @uwabami 2013/02/24 GREE 大阪オフィス セミナールーム
  • 4. About me. Name & Contact: ✓ 佐々木洋平/Youhei SASAKI ✓ Twitter/Github: uwabami Activity: ✓ Debian JP Project/ 関西 Debian 勉強会 ✓ Ruby, TeX, Emacs, Scientific Computing...
  • 5. About me. Name & Contact: ✓ 佐々木洋平/Youhei SASAKI ✓ Twitter/Github: uwabami Activity: ✓ Debian JP Project/ 関西 Debian 勉強会 ✓ Ruby, TeX, Emacs, Scientific Computing...
  • 7. Maintainer Dashboard Debian QA Maintainer Dashboard@UDD http://udd.debian.org/dmd.cgi?email1=uwabami %40gfd-dennou.org Debian Quality Assuarance http://qa.debian.org/developer.php? login=uwabami%40gfd-dennou.org
  • 8. Disclaimer 無保証無責任原則 ✓ 用法, 用量を守って正しくお使い下さい ✓ 誤字脱字含め, 適宜ご指摘下されば幸いです. 疑問/質問/ツッコミ/茶々, 大歓迎 ✓ その場でどうぞ ハッシュタグ: #kansaidebian
  • 9. Agenda 1. Ruby in Wheezy 2. Switch your Ruby 3. gem2deb 4. Debian with Rails
  • 10. Agenda 1. Ruby in Wheezy 2. Switch your Ruby 3. gem2deb 4. Debian with Rails
  • 12. Ruby の実装 Ruby インタープリタには実装が複数ある MRI1.8.7, MRI1.9.3, JRuby: apt ready! Rubinius: Work in Progress ITP#591817 mruby: Work in Progress ITP#697835 他に HPC Ruby Compiler, Topaz, etc. これらを用途の応じて使い分けるには?
  • 13. Agenda 1. Ruby in Wheezy 2. Switch your Ruby 3. gem2deb 4. Debian with Rails
  • 14. Switch your Ruby? Debian には update-alternatives がある 同じ機能を提供する複数のソフトウェアを切り替える仕 組み 例: vi -> nvi, vim /usr/bin/ruby の実体は symbolic link alternatives で管理. でも ruby 切り替えたら gem とか irb も変えたいよね?
  • 15. システム全体で変えるには? ruby-switch が便利です. update-aliternatives の wrapper です. % ruby-switch --list % ruby-switch --set ruby1.9.1 % ruby -v % ruby-switch --set ruby1.8 % ruby -v
  • 16. ユーザ毎に変えるには? rbenv を使いましょう. % rbenv init # Load rbenv automatically by adding # the following to ~/.bash_profile: eval "$(rbenv init -)" % rbenv versions % rbenv alternatives % rbenv versions % rbenv global 1.9.3-debian
  • 17. Debian パッケージになって いないRuby を使うには? ruby-build を使うことが可能です. While ruby-build is a great tool to build Ruby versions that are not available via APT, you should still use the Debian-packaged versions of Ruby whenever possible since they are tested and supported by the Debian community. Please do not report bugs you encounter while using your homebuilt Rubies to the Debian team; Rubies built by yourself are not supported.
  • 18. ruby-build で ruby2.0rc2 を使うには?: (1) rbenv + ruby-build がオススメ ruby-build の definitions には 2.0.0-dev までしか ない 2.0.0rc2 の definitions を書いて build すれば良くね? /usr/share/ruby-build/2.0.0-dev をコピーして修 正 % cat 2.0.0rc2 install_git "ruby-2.0.0rc" "https://github.com/ruby/ruby.git" "v2_0_0_rc2" autoconf standard
  • 19. ruby-build で ruby2.0rc2 を使うには?: (2) 必要なパッケージを install % sudo apt-get build-dep ruby1.9.1-dev ... rbenv 管理下に install % ruby-build --verbose 2.0.0rc2 `echo $HOME`/.rbenv/versions/2.0.0rc2 ...
  • 20. ruby-build で ruby2.0rc2 を使うには?: (3) rbenv で環境変数を読み込み % rbenv global 2.0.0rc2 % ruby -v ruby 2.0.0dev (2013-02-08 trunk 39159) [x86_64-linux] 試しにイロイロ動かしてみましょう
  • 21. ruby-build: 注意 再掲します: While ruby-build is a great tool to build Ruby versions that are not available via APT, you should still use the Debian-packaged versions of Ruby whenever possible since they are tested and supported by the Debian community. Please do not report bugs you encounter while using your homebuilt Rubies to the Debian team; Rubies built by yourself are not supported.
  • 23. Agenda 1. Ruby in Wheezy 2. Switch your Ruby 3. gem2deb 4. Debian with Rails
  • 25. Ruby in Debian: Maintainer Team Ruby 本体: pkg-ruby チーム MRI, Rubinius... JRuby は pkg-java チーム Ruby の(拡張)ライブラリ: pkg-ruby-extreas チーム Team Documentation and current packaging practices
  • 26. Ruby in Debian: Package naming scheme これまで: ruby1.8, ruby1.9.1 各々ついて別のパッケージ名 libhogehoge-ruby{,1.8,1.9.1} という名前 これから: ruby1.8, ruby1.9.1 両方について同じパッケージ名 ruby-hogehoge: hogehoge は gem の名前
  • 27. Ruby in Debian: File hierarchy(1) 本体同梱以外のパッケージは vendordir 以下に pure Ruby: Config::CONFIG['vendordir'] /usr/lib/ruby/vendor_ruby C 拡張ライブラリ: Config::CONFIG ['vendorarchdir'] /usr/lib/ruby/vendor_ruby/1.8/x86_64-linux /usr/lib/ruby/vendor_ruby/1.9.1/x86_64-linux
  • 28. Ruby in Debian: File hierarchy(2) % irb1.8 irb(main):001:0> puts $LOAD_PATH /usr/local/lib/site_ruby/1.8 /usr/local/lib/site_ruby/1.8/x86_64-linux /usr/local/lib/site_ruby /usr/lib/ruby/vendor_ruby/1.8 /usr/lib/ruby/vendor_ruby/1.8/x86_64-linux /usr/lib/ruby/vendor_ruby /usr/lib/ruby/1.8 /usr/lib/ruby/1.8/x86_64-linux . => nil
  • 29. Ruby in Debian: File hierarchy(3) % irb1.9.1 puts $LOAD_PATH irb(main):001:0> puts $LOAD_PATH /usr/local/lib/site_ruby/1.9.1 /usr/local/lib/site_ruby/1.9.1/x86_64-linux /usr/local/lib/site_ruby /usr/lib/ruby/vendor_ruby/1.9.1 /usr/lib/ruby/vendor_ruby/1.9.1/x86_64-linux /usr/lib/ruby/vendor_ruby /usr/lib/ruby/1.9.1 /usr/lib/ruby/1.9.1/x86_64-linux . => nil
  • 30. Ruby in Debian: Maintainer Team Ruby 本体: pkg-ruby チーム MRI, Rubinius... JRuby は pkg-java チーム Ruby の(拡張)ライブラリ: pkg-ruby-extreas チーム Team Documentation and current packaging practices パッケージ作成には gem2deb を使用中
  • 31. Ruby in Debian: gem2deb gem2deb: gem から deb パッケージを作成するコマンド % gem fetch hogehoge.gem % gem2deb hogehoge[version].gem % ... % dpkg -i ruby-hogehoge_[version]-1.deb ...と, 常にこうなるなら苦労しねぇんだな, これが.
  • 32. gem2deb pit fall(1): dependency hell 多くの gem は「依存漏れ」がある みつける度に Bug Report 書こう! chain dependencies Fxxk !!
  • 33. gem2deb pit fall(2): test/spec(1) Debian パッケージは Ruby1.8, 1.9.3 両方で動く必 要有 1.9 のみサポート, というのも可能ですが. なので, テストが転んで deb ができない, という事が多 い test/spec で PATH が埋め込まれている 相対 PATH が酷い事になっていたり gem としても作法が良くないですよね?
  • 34. gem2deb pit fall(2): test/spec(2) LOCALE の設定がアレ Debian のパッケージビルド環境は LOCALE が設定さ れていない test/spec の Encoding.default_external が... 最近 gem2deb は Encoding.default_external = "UTF-8" になった. Bundler で古いライブラリに pin 止めされていたり
  • 37. Agenda 1. Ruby in Wheezy 2. Switch your Ruby 3. gem2deb 4. Debian with Rails
  • 39. Rails Application in Debian Debian パッケージとして提供している Rails アプリ 今の所 Redmine のみ しかも Redmine 1.4.4 Redmine 2.x は experimental Redmine 1.4.4 は Rails2 なので Debian パッケージには Rails2 と Rails3 が存 在
  • 40. Rails in Debian Rails2, Rails3 in Debian % apt-show-versions -p rails Not installed rails 2:2.3.14.2 sid ftp.jp.debian.org % apt-show-versions -p rails3 Not installed rails3 3.2.6-1 sid ftp.jp.debian.org
  • 41. Rails in Debian パッケージとしての共存は不可能 ActiveRecord, ActiveSupport の 2 系と 3 系を共存? require に version 番号付けるだけで良い? そもそも需要あるの? chroot + reverse proxy ?
  • 44. References. Lucas Nussbaum's Blog: * Changes to Ruby in Debian (and Ubuntu) http://www.lucas-nussbaum.net/blog/?p=681 DebianWiki: * TeamsRuby: http://wiki.debian.org/Teams/Ruby * Debian/Ruby Wheezy Transition: http://pkg-ruby-extras.alioth.debian.org/wheezy/