Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Criando pacotes Debian do Ruby
Search
Andriel Nuernberg
January 28, 2014
Technology
48
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Criando pacotes Debian do Ruby
Como criar pacotes .deb do Ruby para Debian, usando FPM e Chef.
Andriel Nuernberg
January 28, 2014
More Decks by Andriel Nuernberg
See All by Andriel Nuernberg
Workshop de Git
andrielfn
0
65
Other Decks in Technology
See All in Technology
大型犬好きによるPugの紹介
yamanoku
1
160
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.4k
Kiro Crewをはじめよう
kizawa2020
1
160
夫婦で子育てするための育児標準化
codmoninc
PRO
0
340
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
0
420
USB PDを使ってスマホを労わりたい
raspython3
0
180
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
140
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
210
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
770
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
190
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
330
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
6.3k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
The Cult of Friendly URLs
andyhume
79
7k
The Curious Case for Waylosing
cassininazir
1
570
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
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!