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
45
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
60
Other Decks in Technology
See All in Technology
面倒な作業はAIにおまかせ。Flutter開発をスマートに効率化
ruideengineer
0
130
American airlines ®️ USA Contact Numbers: Complete 2025 Support Guide
airhelpsupport
0
250
5min GuardDuty Extended Threat Detection EKS
takakuni
0
180
OPENLOGI Company Profile for engineer
hr01
1
33k
AWS Organizations 新機能!マルチパーティ承認の紹介
yhana
1
260
20250707-AI活用の個人差を埋めるチームづくり
shnjtk
3
3.2k
Witchcraft for Memory
pocke
1
750
Lambda Web Adapterについて自分なりに理解してみた
smt7174
6
160
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
2
310
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
410
Backlog ユーザー棚卸しRTA、多分これが一番早いと思います
__allllllllez__
1
130
改めてAWS WAFを振り返る~業務で使うためのポイント~
masakiokuda
2
230
Featured
See All Featured
Navigating Team Friction
lara
187
15k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
KATA
mclloyd
30
14k
Being A Developer After 40
akosma
90
590k
A Modern Web Designer's Workflow
chriscoyier
694
190k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
52k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Documentation Writing (for coders)
carmenintech
72
4.9k
Code Review Best Practice
trishagee
69
18k
Designing for humans not robots
tammielis
253
25k
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!