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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
170
絵ではじめるKubernetesセキュリティ
aoi1
5
710
ほんとうの信頼性はヒーローが死んでからはじまる / True reliability begins after the hero dies
vtryo
0
120
Making AI Agents Safe and Fast- Jev, Obsidian, and the Meta-Harness
x5gtrn
PRO
0
130
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
250
時うどん〜Socket.getifaddrsで学ぶネットワーク編 / Tokiudon: The Socket.getifaddrs Edition
coe401_
4
240
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
[Kiro Meetup #7] Kiro Crew Dive Deep
konippi
0
270
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
2
430
AI coding 整合正規方法
philipz
0
530
Why Agent Cost Needs Observability
nttcom
0
150
beyond jj: config & tools ecosystem
indirect
0
5.9k
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
940
Making the Leap to Tech Lead
cromwellryan
135
10k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Speed Design
sergeychernyshev
33
2.1k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Optimizing for Happiness
mojombo
378
71k
Design in an AI World
tapps
1
330
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
BBQ
matthewcrist
89
10k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
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!