SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
Packaging is the Worst Way 
to Distribute Software, 
except for everything else 
Ryan McKern | Puppet Labs 
mckern@puppetlabs.com
Who is this?
What do I do now? 
Release Engineering at
Maybe you've used 
our products?
What have I done? 
System Administration 
… for 13 years.
I’ve probably been 
your customer
Caveat Audiens
"Prejudice is a great time saver. You 
can form opinions without having 
to get the facts." 
Attributed to E.B. White, 
Source unknown
Let's talk about software!
Distributing software sucks 
Shipping new platforms is so hard 
Cross-platform packaging is so hard 
Unpredictable user-space is so hard 
Moving the packaged bits is so hard
Everything is so hard
Who among us knows this pain? 
sad@roberto Downloads $ wget -­‐-­‐quiet http:// 
ftpmirror.gnu.org/gcc/gcc-­‐4.9.1/gcc-­‐4.9.1.tar.bz2 
sad@roberto Downloads $ tar xjf gcc-­‐4.9.1.tar.bz2 
sad@roberto Downloads $ cd gcc-­‐4.9.1/ 
sad@roberto Downloads $ ./configure 
./configure: line 532: sed: command not found 
./configure: line 1371: sed: command not found 
./configure: line 1920: sed: command not found 
./configure: line 2291: sed: command not found 
configure: error: cannot run /bin/sh ./config.sub 
./configure: line 361: sed: command not found 
./configure: line 310: sort: command not found
This was a problem because 
the customer's time has value
Behold! 
ryan@animatronio ~ $ sudo rpm -­‐Uvh http://my.mirror.co/pub/ 
el/7/x86_64/nano-­‐2.3.1-­‐10.el7.x86_64.rpm 
Retrieving http://my.mirror.co/pub/el/7/x86_64/ 
nano-­‐2.3.1-­‐10.el7.x86_64.rpm 
Preparing... 
################################# [100%] 
Updating / installing... 
1:nano-­‐2.3.1-­‐10.el7 
################################# [100%] 
ryan@animatronio ~ $
What's so great 
about packages?
Dependency management 
calculon ~ # apt-­‐get install cmake 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
The following extra packages will be installed: 
cmake-­‐data emacsen-­‐common libarchive12 libnettle4 
libxmlrpc-­‐core-­‐c3 
The following NEW packages will be installed: 
cmake cmake-­‐data emacsen-­‐common libarchive12 libnettle4 
libxmlrpc-­‐core-­‐c3 
0 upgraded, 6 newly installed, 0 to remove and 51 not 
upgraded.
Verification 
bender ~ # mv /usr/share/man/man8/applydeltarpm.8.gz ~/ 
bender ~ # rpm -­‐V deltarpm 
missing d /usr/share/man/man8/applydeltarpm.8.gz 
bender ~ #
Distribution 
ryan@tinnytim ~ $ gem push erniebert-­‐0.1.0.gem 
Pushing gem to BetterThanRubyGems.org... 
Successfully registered gem: erniebert (0.1.0) 
ryan@tinnytim ~ $ gem install erniebert 
Fetching: ffi-­‐1.9.6.gem (100%) 
Building native extensions. This could take a while... 
Successfully installed ffi-­‐1.9.6 
Fetching: erniebert-­‐0.1.0.gem (100%) 
Successfully installed erniebert-­‐0.7.1 
1 gem installed 
ryan@tinnytim ~ $
What could be better 
about packages?
Sometimes shipping bits 
really is hard
Security is often both the joke 
and the punchline 
ouch@killbot ~ $ dpkg-­‐sig -­‐-­‐verify  
puppet_3.7.1-­‐1puppetlabs1_all.deb 
Processing ./puppet_3.7.1-­‐1puppetlabs1_all.deb... 
GOODSIG _gpgbuilder C093A3A56A6E0BEEA2821DD7133957EA11028DF3 1413702159 
ouch@killbot ~ $ dpkg-­‐sig -­‐-­‐verify  
./puppet_2.7.23-­‐1~deb7u3_all.deb 
Processing ./puppet_2.7.23-­‐1~deb7u3_all.deb... 
ouch@killbot ~ $
So, so, so many similar-but-different 
formats
Let's talk about some popular 
packaging formats
.rpm 
• Managed by the recursively named 
"RPM Package Manager" & yum 
• cpio compressed binaries & text files 
• Post-installation tasks are shell scripts
.deb 
• Managed by dpkg & apt, the 
"Advanced Package Tool" 
• ar compressed package with two 
gzipped tarballs & a small text file 
• Post-installation tasks are shell scripts
Mac .pkg 
• Used by Mac OS X, and often delivered 
in a .dmg (disk image) or a .zip file 
• xar compressed archive, containing a 
binary file, two archives, and an XML 
document 
• post-installation tasks are still 
shell scripts
About all those post-install 
shell scripts 
Maybe they're not that safe, but the 
surface area of this problem is big. 
That doesn't mean we needed "dash"
Ruby .gem, Python .egg, 
and Node .npm 
• These are library managers with 
delusions of grandeur 
• Reuses the "download, decompress, 
configure, build, install" patterns, 
which hasn't got much spam in it 
• Constant compilation is a bummer
What about... ? 
#realtalk 
We only have 45 minutes, and I hope 
you're going to have some questions for 
me to evade
What are some alternatives?
Source tarballs
curl | bash
Full Disclosure 
• Puppet Labs does use the curl|bash 
technique as an option for our PE 
agent installation 
• If you don't trust your own Puppet 
Master, who do you trust? 
• (ALL THE COOL KIDS WERE DOING IT)
You just wanted Ruby 
but you got Cthulhu 
~ $ curl -­‐sSL https://get.rvm.io | bash -­‐s -­‐-­‐ -­‐-­‐fhtagn 
G̺̞ 
̯͔̮̫̥ 
͊̌͂ 
a͍͕͓̦͈̯̟̋ 
r̘̰̟e̓̓ 
̦ C̋͋ͬt̂̅̓ 
t͇̻̩̲̬ ͇̪̹͔̾ 
̟ḧ́΅ͭ ̩̿ͭ 
͖̙̤ 
ͭl̅ͦ̓ 
̝̙̭ 
̗ ṷ 
ů̥͖ 
͍͎͍ 
̦̟ n̠̣̭ 
̞̻̱̳ 
̬ 
̣̗ 
̑ ̖͎ͩ 
hͯ ͐ 
̝̤̊ 
̞̭̳͚̞ 
̘ s 
̓ 
͔̣ 
̺̝͇ 
l̃ͪ͐̎̍ 
a̅͋̏̀ 
̜̯͉ 
͈͇̲ 
̓̑ 
̭̻l̂ͬ̽ ͮ 
̙͇̼͍ 
r̭̂̋ͦ 
̻̺̭ 
̗͙̃ 
̻̤̳ 
̰̤ 
i̅̿̌ͫͣͪ 
̺̙̽_̻͚ 
̤ s 
̮͇ 
e͍̞̚ ̿̌ͮ̍ 
̝͕̳́̽ 
̩̺ͅ 
͉ r 
f͈̱͓͓ 
̦̰̬̗ 
̗̝̼ 
m̞̗͎͍̾̈͊ 
o͈̩ͪ̈ 
̟̤̻͉ 
̃ͨͬ́̉ͩ̓ 
̰̝e͍͎h 
'̼̬̤̋̉̽lͪ ͣ 
̗̼ͥ̉R 
̱͚̏ 
̫͙͓̰͔ 
̃̂̂ 
͕͓̲ y 
.̚ 
̣̫ 
̞͓͈ 
̼̪̠s͔̹̞̟t͈̘͕ 
H͎̯ ̙̱a͍̟͍ͅ 
̘̼ 
u͙͓̙̟r̥̹̫͇͎ 
͚ 
̻ͅ 
̣ 
̙̹ ͍̮ t 
̻̳̮ h 
̩̜̣_ 
e̠_̱̣͔ 
̼ 
̺͉U 
s͈̰̣̥ p̻ 
a͕̗̣̺ k 
͇e̤͍̯ 
̻̹͓̬ 
̹̤̳a̠͍̪ b̩_ 
̪_̥͖͎͍ 
e̪̻̣̣ ̙̼ ͈̬s͇̮̞ 
ḻ͇ 
̥͖̠ 
̹̩̖ 
̙̲ 
a̺͈̹̤͈͉ͅ 
̣̮͕̙ 
̗ h 
̠̟ 
̰̜̜l̬̹̭ 
l̺̞ ̩̳̮̩̰͕ͅ 
̻r̮̥̦͍͍ 
͈̫ 
e̳̠̙̘ 
̱ 
u̠͇r̮̣͓ 
̘̬̰ 
t͔͚̳̹̰ 
̰͖ 
n̗͍ 
̥͕ 
̥͉f̜͚r̯͍ͅ 
o͈̯̦ 
̖ 
̳͓̦͔ 
¯ͭ̔ 
̻͙̫̪̪̖͈ 
͔̬ 
̣̌ 
̠̟̱̒ 
͍m̻̟ 
̭ ̼̠ ͍̣t͖h͔͉̞ 
e̬̫̦ 
̋͂ 
̖͇̼ ̊ͤ̓̋̄̐͌̾ 
̩̝̮ 
͓ 
d̰̼̞̤͕ 
̤̘̣̭͍̖ 
̻͈ 
̟̭ 
͡l̴l h͞ow l͢ f̕o 
́̃̍̆̂̇̒ͫ 
k̲͖̻̻̆͋ͬ̑ 
̩͍̭̙ 
̥ 
k̙̣͕͔ 
̘̮̤̻̜̳ 
r̯̰̱̬̭ͅ 
ḁ͙ 
͔͔̺ 
̠ 
̗ 
s̻̱͎ 
̙̦̝̗͍͎ 
̞̪t̫͉̟̻ 
͖ 
ạ̫ 
r͔̺ 
͍.͔̖͚̺̹ 
̰̫ 
Ǹ`ya͠rĺath̢ote͡p̢ ͟s̀`h 
̨ a 
̷reve̢r̀` 
͑̎ 
ň̽̌ 
ḯ΅ 
̣ 
̃̄̇ͪ̂͑ 
͉͔̙̤̪̜ h 
̉ͦ 
͕t͂̔ 
ͨ͋̅̿ 
͔̆ͫ̓ͫ 
̫͖̻ e 
ͫ͌͛ ͦ͆ͭ̽ 
̊ͩͩ̇ͣ 
̗ͅd̂ 
ā̇ͤ͋ͭͨ 
̗̰ 
͙̗̝͕̩̥ 
̟͍ ř 
nͮͯ̑̿͒ 
e̍͒̅̄ͣ̀ 
ͅͅ 
̪̠̗͕̥ 
͋̋ 
͙̹͎̺̠ 
s̊̈̽̊̌ 
s̈̌ͪ 
̱̳ 
.̄̑̎ 
͔̙̣ 
̤̰̟̦̥ 
͉̉ 
͙̬
curl | bash often assumes 
• There is no air-gap 
• Every request is a safe & sane request 
• That HTTPS is good enough
curl | bash often forgets 
• >100% Broadband coverage 
• Mirrors exist 
• HTTPS secures transport, not content
curl | bash totally ignores 
• The benefits of reusability 
• The fragility of shell scripts 
• The fragility of shells
Security is hard 
• RVM recently introduced hand-rolled 
GPG signing* 
• Thread had 48 comments within a 
week, almost universally about the 
implementation 
• Broke semver, automation, and hearts 
* https://github.com/wayneeseguin/rvm/issues/3105
Omnibus
Isn't that from Chef? 
• Sure, but so is Test Kitchen 
• Builds packages while still controlling 
the entire dependency stack 
• Lots of love from users with 
complicated dependency stacks
Omnibus is one way to skin 
the entire cat 
• Abstracts (instead of removes) 
dependency management 
• Only builds packages for the platform 
it's installed on 
• You're going to want to know Ruby
FPM
Effing Package Managers 
•General purpose swiss-army knife of 
package building 
•Works around a lot of the shortcomings 
of existing package managers 
•Jordan Sissel is a SAINT (Shout out to 
#hugops!)
"Common packaging patterns, a 
distaste for existing packaging 
practices, and some hate-driven 
development yielded FPM! Add 
some amazing contributions in 
code, bugs, features, and support 
from the community and boom we 
have modern FPM." 
Jordan Sissel 
My inbox, Oct 10 2014
Effing FPM 
• Swiss army knives are rarely the best 
tool for a given job 
• General purpose in this case means a 
lot (~150ish) of command line flags 
• Still infinitely better than curl | bash
Why so many alternatives? 
What went wrong?
RPM Packaging can 
be tough 
• RPM Spec files are weird 
• Kind-of M4, kind of Shell, all obtuse 
• Oh, and kind-of Make; only kind-of 
• Sort-of competing RPM standards
Deb Packaging can feels 
like penance 
• "debian/" directories are outright 
hostile to man & beast alike 
• Debian "Helpers" usually don't 
• dpatch can use unified diffs (sane) or 
shell scripts (what?!)
Conflation of purpose 
• Some library managers try to install 
executables, e.g. gem, pip, npm 
• Remember when I said "delusions of 
grandeur"? 
(Google Image Search was kind of 
useless here)
But really, I just have a 
hypothesis! 
• Developers love solving new problems 
• Sometimes they confuse their 
problems for the customer's problems 
• Maybe packaging isn't a solved 
problem yet, but it's close
Where do we go from here?
Sometimes the only choices you have 
are bad ones; but you still have 
to choose.
TL;DR: this problem is 
(mostly) solved 
Stop writing new installers 
from scratch 
Give your customers the best 
packages possible 
Don't forget Pareto 
(any number of 80/20 rules)
Thank you 
You're wonderful. Thank you for letting 
me rant at you for as long as you did. 
mckern@puppetlabs.com 
@the_mckern
Questions?

Weitere ähnliche Inhalte

Was ist angesagt?

PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...Pablo Godel
 
Puppet Camp Atlanta 2014: DEV Toolsets for Ops (Beginner) -
Puppet Camp Atlanta 2014: DEV Toolsets for Ops (Beginner) - Puppet Camp Atlanta 2014: DEV Toolsets for Ops (Beginner) -
Puppet Camp Atlanta 2014: DEV Toolsets for Ops (Beginner) - Puppet
 
CPANci: Continuous Integration for CPAN
CPANci: Continuous Integration for CPANCPANci: Continuous Integration for CPAN
CPANci: Continuous Integration for CPANMike Friedman
 
21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANciMike Friedman
 
Midwest php 2013 deploying php on paas- why & how
Midwest php 2013   deploying php on paas- why & howMidwest php 2013   deploying php on paas- why & how
Midwest php 2013 deploying php on paas- why & howdotCloud
 
Re-thinking Performance tuning with HTTP2
Re-thinking Performance tuning with HTTP2Re-thinking Performance tuning with HTTP2
Re-thinking Performance tuning with HTTP2Vinci Rufus
 
Invoke-Obfuscation nullcon 2017
Invoke-Obfuscation nullcon 2017Invoke-Obfuscation nullcon 2017
Invoke-Obfuscation nullcon 2017Daniel Bohannon
 
Design Reviewing The Web
Design Reviewing The WebDesign Reviewing The Web
Design Reviewing The Webamiable_indian
 
Dirty Little Secrets They Didn't Teach You In Pentest Class v2
Dirty Little Secrets They Didn't Teach You In Pentest Class v2Dirty Little Secrets They Didn't Teach You In Pentest Class v2
Dirty Little Secrets They Didn't Teach You In Pentest Class v2Rob Fuller
 
Phreebird Suite 1.0: Introducing the Domain Key Infrastructure
Phreebird Suite 1.0:  Introducing the Domain Key InfrastructurePhreebird Suite 1.0:  Introducing the Domain Key Infrastructure
Phreebird Suite 1.0: Introducing the Domain Key InfrastructureDan Kaminsky
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9JBUG London
 
Obfuscating The Empire
Obfuscating The EmpireObfuscating The Empire
Obfuscating The EmpireRyan Cobb
 
Giving back with GitHub - Putting the Open Source back in iOS
Giving back with GitHub - Putting the Open Source back in iOSGiving back with GitHub - Putting the Open Source back in iOS
Giving back with GitHub - Putting the Open Source back in iOSMadhava Jay
 
Pwning with powershell
Pwning with powershellPwning with powershell
Pwning with powershelljaredhaight
 
First adventure within a shell - Andrea Telatin at Quadram Institute
First adventure within a shell - Andrea Telatin at Quadram InstituteFirst adventure within a shell - Andrea Telatin at Quadram Institute
First adventure within a shell - Andrea Telatin at Quadram InstituteAndrea Telatin
 

Was ist angesagt? (20)

PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
 
Puppet Camp Atlanta 2014: DEV Toolsets for Ops (Beginner) -
Puppet Camp Atlanta 2014: DEV Toolsets for Ops (Beginner) - Puppet Camp Atlanta 2014: DEV Toolsets for Ops (Beginner) -
Puppet Camp Atlanta 2014: DEV Toolsets for Ops (Beginner) -
 
Migrating big data
Migrating big dataMigrating big data
Migrating big data
 
CPANci: Continuous Integration for CPAN
CPANci: Continuous Integration for CPANCPANci: Continuous Integration for CPAN
CPANci: Continuous Integration for CPAN
 
21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci
 
Logstash and friends
Logstash and friendsLogstash and friends
Logstash and friends
 
Midwest php 2013 deploying php on paas- why & how
Midwest php 2013   deploying php on paas- why & howMidwest php 2013   deploying php on paas- why & how
Midwest php 2013 deploying php on paas- why & how
 
Re-thinking Performance tuning with HTTP2
Re-thinking Performance tuning with HTTP2Re-thinking Performance tuning with HTTP2
Re-thinking Performance tuning with HTTP2
 
Invoke-Obfuscation nullcon 2017
Invoke-Obfuscation nullcon 2017Invoke-Obfuscation nullcon 2017
Invoke-Obfuscation nullcon 2017
 
Design Reviewing The Web
Design Reviewing The WebDesign Reviewing The Web
Design Reviewing The Web
 
Just curl it!
Just curl it!Just curl it!
Just curl it!
 
Dirty Little Secrets They Didn't Teach You In Pentest Class v2
Dirty Little Secrets They Didn't Teach You In Pentest Class v2Dirty Little Secrets They Didn't Teach You In Pentest Class v2
Dirty Little Secrets They Didn't Teach You In Pentest Class v2
 
Phreebird Suite 1.0: Introducing the Domain Key Infrastructure
Phreebird Suite 1.0:  Introducing the Domain Key InfrastructurePhreebird Suite 1.0:  Introducing the Domain Key Infrastructure
Phreebird Suite 1.0: Introducing the Domain Key Infrastructure
 
Hacking on WildFly 9
Hacking on WildFly 9Hacking on WildFly 9
Hacking on WildFly 9
 
HowTo DR
HowTo DRHowTo DR
HowTo DR
 
HTTP/3
HTTP/3HTTP/3
HTTP/3
 
Obfuscating The Empire
Obfuscating The EmpireObfuscating The Empire
Obfuscating The Empire
 
Giving back with GitHub - Putting the Open Source back in iOS
Giving back with GitHub - Putting the Open Source back in iOSGiving back with GitHub - Putting the Open Source back in iOS
Giving back with GitHub - Putting the Open Source back in iOS
 
Pwning with powershell
Pwning with powershellPwning with powershell
Pwning with powershell
 
First adventure within a shell - Andrea Telatin at Quadram Institute
First adventure within a shell - Andrea Telatin at Quadram InstituteFirst adventure within a shell - Andrea Telatin at Quadram Institute
First adventure within a shell - Andrea Telatin at Quadram Institute
 

Andere mochten auch

You Can't Build a Team in The Thunderdome
You Can't Build a Team in The ThunderdomeYou Can't Build a Team in The Thunderdome
You Can't Build a Team in The Thunderdomemckern
 
Nakivo Slides 2014 12-17
Nakivo Slides 2014 12-17Nakivo Slides 2014 12-17
Nakivo Slides 2014 12-17Nick Luchkov
 
Pregunta Fácil
Pregunta FácilPregunta Fácil
Pregunta Fácillolemanu
 
Smau Milano 2016 - Fabio Alessandro Locati
Smau Milano 2016 - Fabio Alessandro LocatiSmau Milano 2016 - Fabio Alessandro Locati
Smau Milano 2016 - Fabio Alessandro LocatiSMAU
 
Spacewalk deployment at Fuqua
Spacewalk deployment at FuquaSpacewalk deployment at Fuqua
Spacewalk deployment at FuquaAndy Ingham
 

Andere mochten auch (6)

You Can't Build a Team in The Thunderdome
You Can't Build a Team in The ThunderdomeYou Can't Build a Team in The Thunderdome
You Can't Build a Team in The Thunderdome
 
Nakivo Slides 2014 12-17
Nakivo Slides 2014 12-17Nakivo Slides 2014 12-17
Nakivo Slides 2014 12-17
 
Linux16 RPM
Linux16 RPMLinux16 RPM
Linux16 RPM
 
Pregunta Fácil
Pregunta FácilPregunta Fácil
Pregunta Fácil
 
Smau Milano 2016 - Fabio Alessandro Locati
Smau Milano 2016 - Fabio Alessandro LocatiSmau Milano 2016 - Fabio Alessandro Locati
Smau Milano 2016 - Fabio Alessandro Locati
 
Spacewalk deployment at Fuqua
Spacewalk deployment at FuquaSpacewalk deployment at Fuqua
Spacewalk deployment at Fuqua
 

Ähnlich wie Packaging is the Worst Way to Distribute Software, Except for Everything Else

Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015ice799
 
Puppet Camp LA 2015: Package Managers and Puppet (Beginner)
Puppet Camp LA 2015: Package Managers and Puppet (Beginner)Puppet Camp LA 2015: Package Managers and Puppet (Beginner)
Puppet Camp LA 2015: Package Managers and Puppet (Beginner)Puppet
 
Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015ice799
 
From Test to Live with Rex
From Test to Live with RexFrom Test to Live with Rex
From Test to Live with RexJan Gehring
 
Package Management and Chef - ChefConf 2015
Package Management and Chef - ChefConf 2015Package Management and Chef - ChefConf 2015
Package Management and Chef - ChefConf 2015Chef
 
Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Mandi Walls
 
Packaging perl (LPW2010)
Packaging perl (LPW2010)Packaging perl (LPW2010)
Packaging perl (LPW2010)p3castro
 
Why internal pen tests are still fun
Why internal pen tests are still funWhy internal pen tests are still fun
Why internal pen tests are still funpyschedelicsupernova
 
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...NETWAYS
 
Packaging for the Maemo Platform
Packaging for the Maemo PlatformPackaging for the Maemo Platform
Packaging for the Maemo PlatformJeremiah Foster
 
Steelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with PythonSteelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with Pythoninfodox
 
Groovy there's a docker in my application pipeline
Groovy there's a docker in my application pipelineGroovy there's a docker in my application pipeline
Groovy there's a docker in my application pipelineKris Buytaert
 
OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert
OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert
OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert NETWAYS
 
Puppet Development Workflow
Puppet Development WorkflowPuppet Development Workflow
Puppet Development WorkflowJeffery Smith
 
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewireIntroduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewiredotCloud
 
LXC Containers and AUFs
LXC Containers and AUFsLXC Containers and AUFs
LXC Containers and AUFsDocker, Inc.
 
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...Hackito Ergo Sum
 

Ähnlich wie Packaging is the Worst Way to Distribute Software, Except for Everything Else (20)

Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015
 
Puppet Camp LA 2015: Package Managers and Puppet (Beginner)
Puppet Camp LA 2015: Package Managers and Puppet (Beginner)Puppet Camp LA 2015: Package Managers and Puppet (Beginner)
Puppet Camp LA 2015: Package Managers and Puppet (Beginner)
 
Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015
 
From Test to Live with Rex
From Test to Live with RexFrom Test to Live with Rex
From Test to Live with Rex
 
Nodeconf npm 2011
Nodeconf npm 2011Nodeconf npm 2011
Nodeconf npm 2011
 
Package Management and Chef - ChefConf 2015
Package Management and Chef - ChefConf 2015Package Management and Chef - ChefConf 2015
Package Management and Chef - ChefConf 2015
 
Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014
 
Don't Mind the Gap by Galen Emery
Don't Mind the Gap by Galen EmeryDon't Mind the Gap by Galen Emery
Don't Mind the Gap by Galen Emery
 
Don't Mind the Gap by Galen Emery
Don't Mind the Gap by Galen EmeryDon't Mind the Gap by Galen Emery
Don't Mind the Gap by Galen Emery
 
Packaging perl (LPW2010)
Packaging perl (LPW2010)Packaging perl (LPW2010)
Packaging perl (LPW2010)
 
Why internal pen tests are still fun
Why internal pen tests are still funWhy internal pen tests are still fun
Why internal pen tests are still fun
 
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
 
Packaging for the Maemo Platform
Packaging for the Maemo PlatformPackaging for the Maemo Platform
Packaging for the Maemo Platform
 
Steelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with PythonSteelcon 2014 - Process Injection with Python
Steelcon 2014 - Process Injection with Python
 
Groovy there's a docker in my application pipeline
Groovy there's a docker in my application pipelineGroovy there's a docker in my application pipeline
Groovy there's a docker in my application pipeline
 
OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert
OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert
OSMC 2017 | Groovy There is a Docker in my Dashing Pipeline by Kris Buytaert
 
Puppet Development Workflow
Puppet Development WorkflowPuppet Development Workflow
Puppet Development Workflow
 
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewireIntroduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
 
LXC Containers and AUFs
LXC Containers and AUFsLXC Containers and AUFs
LXC Containers and AUFs
 
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
 

Kürzlich hochgeladen

AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 

Kürzlich hochgeladen (20)

AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 

Packaging is the Worst Way to Distribute Software, Except for Everything Else

  • 1. Packaging is the Worst Way to Distribute Software, except for everything else Ryan McKern | Puppet Labs mckern@puppetlabs.com
  • 3. What do I do now? Release Engineering at
  • 4. Maybe you've used our products?
  • 5. What have I done? System Administration … for 13 years.
  • 6. I’ve probably been your customer
  • 8. "Prejudice is a great time saver. You can form opinions without having to get the facts." Attributed to E.B. White, Source unknown
  • 9. Let's talk about software!
  • 10. Distributing software sucks Shipping new platforms is so hard Cross-platform packaging is so hard Unpredictable user-space is so hard Moving the packaged bits is so hard
  • 12. Who among us knows this pain? sad@roberto Downloads $ wget -­‐-­‐quiet http:// ftpmirror.gnu.org/gcc/gcc-­‐4.9.1/gcc-­‐4.9.1.tar.bz2 sad@roberto Downloads $ tar xjf gcc-­‐4.9.1.tar.bz2 sad@roberto Downloads $ cd gcc-­‐4.9.1/ sad@roberto Downloads $ ./configure ./configure: line 532: sed: command not found ./configure: line 1371: sed: command not found ./configure: line 1920: sed: command not found ./configure: line 2291: sed: command not found configure: error: cannot run /bin/sh ./config.sub ./configure: line 361: sed: command not found ./configure: line 310: sort: command not found
  • 13. This was a problem because the customer's time has value
  • 14. Behold! ryan@animatronio ~ $ sudo rpm -­‐Uvh http://my.mirror.co/pub/ el/7/x86_64/nano-­‐2.3.1-­‐10.el7.x86_64.rpm Retrieving http://my.mirror.co/pub/el/7/x86_64/ nano-­‐2.3.1-­‐10.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:nano-­‐2.3.1-­‐10.el7 ################################# [100%] ryan@animatronio ~ $
  • 15.
  • 16. What's so great about packages?
  • 17. Dependency management calculon ~ # apt-­‐get install cmake Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: cmake-­‐data emacsen-­‐common libarchive12 libnettle4 libxmlrpc-­‐core-­‐c3 The following NEW packages will be installed: cmake cmake-­‐data emacsen-­‐common libarchive12 libnettle4 libxmlrpc-­‐core-­‐c3 0 upgraded, 6 newly installed, 0 to remove and 51 not upgraded.
  • 18. Verification bender ~ # mv /usr/share/man/man8/applydeltarpm.8.gz ~/ bender ~ # rpm -­‐V deltarpm missing d /usr/share/man/man8/applydeltarpm.8.gz bender ~ #
  • 19. Distribution ryan@tinnytim ~ $ gem push erniebert-­‐0.1.0.gem Pushing gem to BetterThanRubyGems.org... Successfully registered gem: erniebert (0.1.0) ryan@tinnytim ~ $ gem install erniebert Fetching: ffi-­‐1.9.6.gem (100%) Building native extensions. This could take a while... Successfully installed ffi-­‐1.9.6 Fetching: erniebert-­‐0.1.0.gem (100%) Successfully installed erniebert-­‐0.7.1 1 gem installed ryan@tinnytim ~ $
  • 20. What could be better about packages?
  • 21. Sometimes shipping bits really is hard
  • 22. Security is often both the joke and the punchline ouch@killbot ~ $ dpkg-­‐sig -­‐-­‐verify puppet_3.7.1-­‐1puppetlabs1_all.deb Processing ./puppet_3.7.1-­‐1puppetlabs1_all.deb... GOODSIG _gpgbuilder C093A3A56A6E0BEEA2821DD7133957EA11028DF3 1413702159 ouch@killbot ~ $ dpkg-­‐sig -­‐-­‐verify ./puppet_2.7.23-­‐1~deb7u3_all.deb Processing ./puppet_2.7.23-­‐1~deb7u3_all.deb... ouch@killbot ~ $
  • 23. So, so, so many similar-but-different formats
  • 24. Let's talk about some popular packaging formats
  • 25. .rpm • Managed by the recursively named "RPM Package Manager" & yum • cpio compressed binaries & text files • Post-installation tasks are shell scripts
  • 26. .deb • Managed by dpkg & apt, the "Advanced Package Tool" • ar compressed package with two gzipped tarballs & a small text file • Post-installation tasks are shell scripts
  • 27. Mac .pkg • Used by Mac OS X, and often delivered in a .dmg (disk image) or a .zip file • xar compressed archive, containing a binary file, two archives, and an XML document • post-installation tasks are still shell scripts
  • 28. About all those post-install shell scripts Maybe they're not that safe, but the surface area of this problem is big. That doesn't mean we needed "dash"
  • 29. Ruby .gem, Python .egg, and Node .npm • These are library managers with delusions of grandeur • Reuses the "download, decompress, configure, build, install" patterns, which hasn't got much spam in it • Constant compilation is a bummer
  • 30. What about... ? #realtalk We only have 45 minutes, and I hope you're going to have some questions for me to evade
  • 31. What are some alternatives?
  • 33.
  • 35.
  • 36. Full Disclosure • Puppet Labs does use the curl|bash technique as an option for our PE agent installation • If you don't trust your own Puppet Master, who do you trust? • (ALL THE COOL KIDS WERE DOING IT)
  • 37. You just wanted Ruby but you got Cthulhu ~ $ curl -­‐sSL https://get.rvm.io | bash -­‐s -­‐-­‐ -­‐-­‐fhtagn G̺̞ ̯͔̮̫̥ ͊̌͂ a͍͕͓̦͈̯̟̋ r̘̰̟e̓̓ ̦ C̋͋ͬt̂̅̓ t͇̻̩̲̬ ͇̪̹͔̾ ̟ḧ́΅ͭ ̩̿ͭ ͖̙̤ ͭl̅ͦ̓ ̝̙̭ ̗ ṷ ů̥͖ ͍͎͍ ̦̟ n̠̣̭ ̞̻̱̳ ̬ ̣̗ ̑ ̖͎ͩ hͯ ͐ ̝̤̊ ̞̭̳͚̞ ̘ s ̓ ͔̣ ̺̝͇ l̃ͪ͐̎̍ a̅͋̏̀ ̜̯͉ ͈͇̲ ̓̑ ̭̻l̂ͬ̽ ͮ ̙͇̼͍ r̭̂̋ͦ ̻̺̭ ̗͙̃ ̻̤̳ ̰̤ i̅̿̌ͫͣͪ ̺̙̽_̻͚ ̤ s ̮͇ e͍̞̚ ̿̌ͮ̍ ̝͕̳́̽ ̩̺ͅ ͉ r f͈̱͓͓ ̦̰̬̗ ̗̝̼ m̞̗͎͍̾̈͊ o͈̩ͪ̈ ̟̤̻͉ ̃ͨͬ́̉ͩ̓ ̰̝e͍͎h '̼̬̤̋̉̽lͪ ͣ ̗̼ͥ̉R ̱͚̏ ̫͙͓̰͔ ̃̂̂ ͕͓̲ y .̚ ̣̫ ̞͓͈ ̼̪̠s͔̹̞̟t͈̘͕ H͎̯ ̙̱a͍̟͍ͅ ̘̼ u͙͓̙̟r̥̹̫͇͎ ͚ ̻ͅ ̣ ̙̹ ͍̮ t ̻̳̮ h ̩̜̣_ e̠_̱̣͔ ̼ ̺͉U s͈̰̣̥ p̻ a͕̗̣̺ k ͇e̤͍̯ ̻̹͓̬ ̹̤̳a̠͍̪ b̩_ ̪_̥͖͎͍ e̪̻̣̣ ̙̼ ͈̬s͇̮̞ ḻ͇ ̥͖̠ ̹̩̖ ̙̲ a̺͈̹̤͈͉ͅ ̣̮͕̙ ̗ h ̠̟ ̰̜̜l̬̹̭ l̺̞ ̩̳̮̩̰͕ͅ ̻r̮̥̦͍͍ ͈̫ e̳̠̙̘ ̱ u̠͇r̮̣͓ ̘̬̰ t͔͚̳̹̰ ̰͖ n̗͍ ̥͕ ̥͉f̜͚r̯͍ͅ o͈̯̦ ̖ ̳͓̦͔ ¯ͭ̔ ̻͙̫̪̪̖͈ ͔̬ ̣̌ ̠̟̱̒ ͍m̻̟ ̭ ̼̠ ͍̣t͖h͔͉̞ e̬̫̦ ̋͂ ̖͇̼ ̊ͤ̓̋̄̐͌̾ ̩̝̮ ͓ d̰̼̞̤͕ ̤̘̣̭͍̖ ̻͈ ̟̭ ͡l̴l h͞ow l͢ f̕o ́̃̍̆̂̇̒ͫ k̲͖̻̻̆͋ͬ̑ ̩͍̭̙ ̥ k̙̣͕͔ ̘̮̤̻̜̳ r̯̰̱̬̭ͅ ḁ͙ ͔͔̺ ̠ ̗ s̻̱͎ ̙̦̝̗͍͎ ̞̪t̫͉̟̻ ͖ ạ̫ r͔̺ ͍.͔̖͚̺̹ ̰̫ Ǹ`ya͠rĺath̢ote͡p̢ ͟s̀`h ̨ a ̷reve̢r̀` ͑̎ ň̽̌ ḯ΅ ̣ ̃̄̇ͪ̂͑ ͉͔̙̤̪̜ h ̉ͦ ͕t͂̔ ͨ͋̅̿ ͔̆ͫ̓ͫ ̫͖̻ e ͫ͌͛ ͦ͆ͭ̽ ̊ͩͩ̇ͣ ̗ͅd̂ ā̇ͤ͋ͭͨ ̗̰ ͙̗̝͕̩̥ ̟͍ ř nͮͯ̑̿͒ e̍͒̅̄ͣ̀ ͅͅ ̪̠̗͕̥ ͋̋ ͙̹͎̺̠ s̊̈̽̊̌ s̈̌ͪ ̱̳ .̄̑̎ ͔̙̣ ̤̰̟̦̥ ͉̉ ͙̬
  • 38. curl | bash often assumes • There is no air-gap • Every request is a safe & sane request • That HTTPS is good enough
  • 39. curl | bash often forgets • >100% Broadband coverage • Mirrors exist • HTTPS secures transport, not content
  • 40. curl | bash totally ignores • The benefits of reusability • The fragility of shell scripts • The fragility of shells
  • 41. Security is hard • RVM recently introduced hand-rolled GPG signing* • Thread had 48 comments within a week, almost universally about the implementation • Broke semver, automation, and hearts * https://github.com/wayneeseguin/rvm/issues/3105
  • 43. Isn't that from Chef? • Sure, but so is Test Kitchen • Builds packages while still controlling the entire dependency stack • Lots of love from users with complicated dependency stacks
  • 44. Omnibus is one way to skin the entire cat • Abstracts (instead of removes) dependency management • Only builds packages for the platform it's installed on • You're going to want to know Ruby
  • 45. FPM
  • 46. Effing Package Managers •General purpose swiss-army knife of package building •Works around a lot of the shortcomings of existing package managers •Jordan Sissel is a SAINT (Shout out to #hugops!)
  • 47. "Common packaging patterns, a distaste for existing packaging practices, and some hate-driven development yielded FPM! Add some amazing contributions in code, bugs, features, and support from the community and boom we have modern FPM." Jordan Sissel My inbox, Oct 10 2014
  • 48. Effing FPM • Swiss army knives are rarely the best tool for a given job • General purpose in this case means a lot (~150ish) of command line flags • Still infinitely better than curl | bash
  • 49. Why so many alternatives? What went wrong?
  • 50. RPM Packaging can be tough • RPM Spec files are weird • Kind-of M4, kind of Shell, all obtuse • Oh, and kind-of Make; only kind-of • Sort-of competing RPM standards
  • 51. Deb Packaging can feels like penance • "debian/" directories are outright hostile to man & beast alike • Debian "Helpers" usually don't • dpatch can use unified diffs (sane) or shell scripts (what?!)
  • 52. Conflation of purpose • Some library managers try to install executables, e.g. gem, pip, npm • Remember when I said "delusions of grandeur"? (Google Image Search was kind of useless here)
  • 53. But really, I just have a hypothesis! • Developers love solving new problems • Sometimes they confuse their problems for the customer's problems • Maybe packaging isn't a solved problem yet, but it's close
  • 54. Where do we go from here?
  • 55. Sometimes the only choices you have are bad ones; but you still have to choose.
  • 56. TL;DR: this problem is (mostly) solved Stop writing new installers from scratch Give your customers the best packages possible Don't forget Pareto (any number of 80/20 rules)
  • 57. Thank you You're wonderful. Thank you for letting me rant at you for as long as you did. mckern@puppetlabs.com @the_mckern