SlideShare a Scribd company logo
1 of 44
Download to read offline
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/

More Related Content

What's hot

Mod lua
Mod luaMod lua
Mod lua
do_aki
 
rsyncのちょっとイイ話
rsyncのちょっとイイ話rsyncのちょっとイイ話
rsyncのちょっとイイ話
Kazuhiro Oinuma
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
Ryosuke MATSUMOTO
 

What's hot (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サーバの機能拡張支援機構
 

Viewers also liked

第66回関西Debian勉強会@KOF2012
第66回関西Debian勉強会@KOF2012第66回関西Debian勉強会@KOF2012
第66回関西Debian勉強会@KOF2012
Youhei SASAKI
 
Edat Mitjana Marc Cabestany
Edat Mitjana Marc CabestanyEdat Mitjana Marc Cabestany
Edat Mitjana Marc Cabestany
marc8
 
Civil Disobedence; Jasmine Johnson
Civil Disobedence; Jasmine JohnsonCivil Disobedence; Jasmine Johnson
Civil Disobedence; Jasmine Johnson
jasmine81493
 

Viewers also liked (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
 

Similar to Ruby In Wheezy

Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
hiro345
 
VC6によるRuby拡張ライブラリ開発環境について
VC6によるRuby拡張ライブラリ開発環境についてVC6によるRuby拡張ライブラリ開発環境について
VC6によるRuby拡張ライブラリ開発環境について
goritto
 
20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化
20130328 第03回福岡debian勉強会   debianパッケージ情報と依存関係の可視化20130328 第03回福岡debian勉強会   debianパッケージ情報と依存関係の可視化
20130328 第03回福岡debian勉強会 debianパッケージ情報と依存関係の可視化
Tsuyoshi Yamada
 
Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3
Sea Mountain
 

Similar to 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
 

Recently uploaded

Recently uploaded (12)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

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/