Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Criando pacotes Debian do Ruby
Search
Andriel Nuernberg
January 28, 2014
Technology
0
47
Criando pacotes Debian do Ruby
Como criar pacotes .deb do Ruby para Debian, usando FPM e Chef.
Andriel Nuernberg
January 28, 2014
Tweet
Share
More Decks by Andriel Nuernberg
See All by Andriel Nuernberg
Workshop de Git
andrielfn
0
63
Other Decks in Technology
See All in Technology
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
140
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
130
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
220
変化するコーディングエージェントとの現実的な付き合い方 〜Cursor安定択説と、ツールに依存しない「資産」〜
empitsu
4
1.4k
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
350
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
160
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
680
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
430
Webhook best practices for rock solid and resilient deployments
glaforge
1
280
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
450
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.8k
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
580
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
57
50k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Side Projects
sachag
455
43k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
750
The SEO identity crisis: Don't let AI make you average
varn
0
240
Ruling the World: When Life Gets Gamed
codingconduct
0
140
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
The untapped power of vector embeddings
frankvandijk
1
1.6k
My Coaching Mixtape
mlcsv
0
47
Transcript
Criando pacotes Debian do Ruby
Contexto
None
None
$ apt-get install ruby ... $ ruby -v ruby 1.9.3p194
(2012-04-20 revision 35410) [x86_64-linux]
None
$ apt-get install build-essentials $ time rbenv install 2.1.0 ...
real 7m28.059s user 6m39.681s sys0m31.018s D igitalO cean
.deb
dpkg-source debuild fpm
None
basename=$(basename $1) # Package configs architecture="x64" name="ruby" version="2.1.0" decription="Ruby $version
stable package" # Package dependencies dependencies=( "libstdc++6 (>= 4.4.3)" "libc6 (>= 2.6)" "libffi5 (>= 3.0.4)" "libgdbm3 (>= 1.8.3)" "libncurses5 (>= 5.7)" "libreadline6 (>= 6.1)" "libssl1.0.0 (>= 1.0.0)" "zlib1g (>= 1:1.2.2)" "libyaml-0-2 (>= 0.1.3)" )
output=$(mktemp -d -t $basename.XXXX) trap "rm -rf $output" ERR EXIT
if [ -z "$1" ] ; then echo "./rubydeb.sh <RUBY_SOURCE_PATH>" fi cd $1 ./configure --prefix=/usr && make && make install DESTDIR=$output fpm \ -s dir \ -t deb \ -n "$name" \ -v "$version" \ --description "$description" \ -C "$output" \ -p "ruby-$version-$architecture.deb" \ $(printf " -d '%s'" "${dependencies[@]}") \ usr/bin usr/lib usr/share/man usr/include
$ ./rubydeb.sh ruby-2.1.0/ checking build system type... x86_64-unknown-linux-gnu checking host
system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for gcc... gcc checking whether the C compiler works... yes ...
Amazon S3
C hef // nodes/my-production-node.json { "environment": "production", "ruby": { "version":
"2.0.0-p353", "arch": "x64" }, "run_list": [ "recipe[ruby]" ] }
// cookbooks/ruby/recipes/default.rb package_name = "ruby-#{node[:ruby][:version]}-#{node[:ruby][:arch]}.deb" remote_file "/tmp/#{package_name}" do source "https://s3.amazonaws.com/andrielfn/packages/ruby/#{package_name}"
mode 0644 end dpkg_package "ruby" do source "/tmp/#{package_name}" action :install end C hef
C hef Recipe: ruby::default * package[libyaml-0-2] action install (up to
date) * remote_file[/tmp/ruby-2.0.0-p353-x64.deb] action create - create new file /tmp/ruby-2.0.0-p353-x64.deb - update content in file /tmp/ruby-2.0.0-p353-x64.deb from none to 7bbeb8 (file sizes exceed 10000000 bytes, diff output suppressed) - change mode from '' to '0644' * dpkg_package[ruby] action install - install version 2.0.0-p353 of package ruby Chef Client finished, 2 resources updated
C hef // nodes/my-production-node.json { "environment": "production", "ruby": { "version":
"2.1.0", "arch": "x64" }, "run_list": [ "recipe[ruby]" ] }
C hef Recipe: ruby::default * package[libyaml-0-2] action install (up to
date) * remote_file[/tmp/ruby-2.1.0-x64.deb] action create (up to date) * dpkg_package[ruby] action install - install version 2.1.0 of package ruby Chef Client finished, 1 resources updated
• Não precisa compilar nos ambientes de prod, stage, qa,
etc; • Atualização de versão é rápida; • Você controla como o Ruby deve ser compilado; Amazon S3
Obrigado!