SlideShare a Scribd company logo
1 of 36
HOMEBREW
Awesome Package Management for OS X




ATLRUG                                 RailsMachine
June 2010                    Will Farrington & Mike Skalnik
HOMEBREW

1. Introduction

2. Getting Started

3. Creating Your Own Packages

4. Wrapping Things Up
HOMEBREW

1. Introduction

2. Getting Started

3. Creating Your Own Packages

4. Wrapping Things Up
INTRODUCTION
INTRODUCTION
• Packagemanagement for OS
 X that doesn’t suck
INTRODUCTION
• Packagemanagement for OS
 X that doesn’t suck

• Powered   by Ruby and Git
INTRODUCTION
• Packagemanagement for OS
 X that doesn’t suck

• Powered    by Ruby and Git

• Pretty   popular
INTRODUCTION
• Packagemanagement for OS
 X that doesn’t suck

• Powered    by Ruby and Git

• Pretty   popular

• Easy   to contribute
INTRODUCTION
• Packagemanagement for OS
 X that doesn’t suck

• Powered    by Ruby and Git

• Pretty   popular

• Easy   to contribute

• Only   requires XCode
HOW POPULAR IS PRETTY POPULAR?
HOW POPULAR IS PRETTY POPULAR?
HOW POPULAR IS PRETTY POPULAR?
WHY USE HOMEBREW?
WHY USE HOMEBREW?
• Fink   and MacPorts have the wrong philosophy
WHY USE HOMEBREW?
• Fink   and MacPorts have the wrong philosophy

• Sticks   to one standard prefix — /usr/local
WHY USE HOMEBREW?
• Fink   and MacPorts have the wrong philosophy

• Sticks   to one standard prefix — /usr/local

• Doesn’t    duplicate what Apple already provides
WHY USE HOMEBREW?
• Fink   and MacPorts have the wrong philosophy

• Sticks   to one standard prefix — /usr/local

• Doesn’t    duplicate what Apple already provides

• Making    new packages is dead simple
WHY USE HOMEBREW?
• Fink   and MacPorts have the wrong philosophy

• Sticks   to one standard prefix — /usr/local

• Doesn’t    duplicate what Apple already provides

• Making    new packages is dead simple

• Very   active user community
WHY NOT?
WHY NOT?
• Support for multiple versions of the same package is
 “okay”, but not great
WHY NOT?
• Support for multiple versions of the same package is
 “okay”, but not great

• Fink   and Macports “work” for now
WHY NOT?
• Support for multiple versions of the same package is
 “okay”, but not great

• Fink   and Macports “work” for now

• Doesn’t   duplicate anything Apple already provides
HOMEBREW

1. Introduction

2. Getting Started

3. Creating Your Own Packages

4. Wrapping Things Up
GETTING STARTED
GETTING STARTED

# Install Homebrew

$ ruby -e "$(curl http://gist.github.com/raw/323731/install_homebrew.rb)"

# Update formulas

$ brew update

# List all available formulas

$ brew search | less

# ... PROFIT!
USING HOMEBREW
$   brew install foo
$   brew uninstall foo
$   brew search [/regex/] [substring]
#   Update formulas from git
$   brew update
#   Remove old versions of foo
$   brew cleanup foo
$   brew info foo
#   Show which installed formulas are outdated
$   brew outdated
#   Remove all old versions of all formulas
$   brew prune
SOME FORMULAS
ack             haproxy     nginx

bzr             hg          redis

git             hub         rlwrap

cassandra       llvm        rtorrent

clojure         memcached   sphinx

coffee-script   mysql       subversion

ctags           mongodb     tex-live

go              monit       tokyo-cabinet
HOMEBREW

1. Introduction

2. Getting Started

3. Creating Your Own Packages

4. Wrapping Things Up
METAPHORS
             The package      /usr/local/Library/
 Formula
              description      Formula/foo.rb

            The installation
                              /usr/local/Cellar/
   Keg        prefix of a
                                   foo/0.1
               formula
             The location
  Cellar   where all kegs are /usr/local/Cellar
               installed
CODE
require 'formula'
CODE
require 'formula'

class Sl < Formula
  url 'http://ftp.de.debian.org/debian/pool/main/s/sl/
sl_3.03.orig.tar.gz'
  version '3.03'
  homepage 'http://packages.debian.org/source/oldstable/sl'
  md5 'd0d997b964bb3478f7f4968eee13c698'




end
CODE
require 'formula'

class Sl < Formula
  url 'http://ftp.de.debian.org/debian/pool/main/s/sl/
sl_3.03.orig.tar.gz'
  version '3.03'
  homepage 'http://packages.debian.org/source/oldstable/sl'
  md5 'd0d997b964bb3478f7f4968eee13c698'

  def install
    system 'make'
    bin.install 'sl'
    man1.install 'sl.1'
  end
end
HOMEBREW

1. Introduction

2. Getting Started

3. Creating Your Own Packages

4. Wrapping Things Up
Any Questions?
HOMEBREW
twitter.com/machomebrew

github.com/mxcl/homebrew

irc.freenode.net/#machomebrew

homebrew@librelist.com
WILL FARRINGTON
Chief Intern of Entirely Superfluous Job Titles
will@railsmachine.com
willfarrington.com

MIKE SKALNIK
Head Intern — Crockpot-Related R&D, Gardening
mike@railsmachine.com
mikeskalnik.com

More Related Content

What's hot

ITB2016 - ForgeBox 2 Package Management
ITB2016 - ForgeBox 2 Package ManagementITB2016 - ForgeBox 2 Package Management
ITB2016 - ForgeBox 2 Package ManagementOrtus Solutions, Corp
 
AusNOG 2019 - Getting IPv6 Private Addressing Right
AusNOG 2019 - Getting IPv6 Private Addressing RightAusNOG 2019 - Getting IPv6 Private Addressing Right
AusNOG 2019 - Getting IPv6 Private Addressing RightMark Smith
 
Geecon 2019 - Taming Code Quality in the Worst Language I Know: Bash
Geecon 2019 - Taming Code Quality  in the Worst Language I Know: BashGeecon 2019 - Taming Code Quality  in the Worst Language I Know: Bash
Geecon 2019 - Taming Code Quality in the Worst Language I Know: BashMichał Kordas
 
OpenNebulaConf2017EU: OpenNebula Companion tools: Admins Little Helpers by Bo...
OpenNebulaConf2017EU: OpenNebula Companion tools: Admins Little Helpers by Bo...OpenNebulaConf2017EU: OpenNebula Companion tools: Admins Little Helpers by Bo...
OpenNebulaConf2017EU: OpenNebula Companion tools: Admins Little Helpers by Bo...OpenNebula Project
 
Puppet Camp London 2015: Puppet Contained
Puppet Camp London 2015: Puppet ContainedPuppet Camp London 2015: Puppet Contained
Puppet Camp London 2015: Puppet ContainedPuppet
 
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management toolAndrey Smirnov
 
Back to the Basics: The Home Lab
Back to the Basics: The Home LabBack to the Basics: The Home Lab
Back to the Basics: The Home LabMalcolmGalland
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 -  Rock Solid Deployment of Symfony AppsSymfony Live NYC 2014 -  Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer ToolboxPablo Godel
 
Deploying and maintaining your software with RPM/APT
Deploying and maintaining your software with RPM/APTDeploying and maintaining your software with RPM/APT
Deploying and maintaining your software with RPM/APTJoshua Thijssen
 
Installing and Getting Started with Alfresco
Installing and Getting Started with AlfrescoInstalling and Getting Started with Alfresco
Installing and Getting Started with AlfrescoWildan Maulana
 
Alfresco Day Roma 2015: Infrastructure as Code with Chef-Alfresco
Alfresco Day Roma 2015: Infrastructure as Code with Chef-AlfrescoAlfresco Day Roma 2015: Infrastructure as Code with Chef-Alfresco
Alfresco Day Roma 2015: Infrastructure as Code with Chef-AlfrescoAlfresco Software
 
Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...
Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...
Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...NETWAYS
 
Using Nagios to monitor your WO systems
Using Nagios to monitor your WO systemsUsing Nagios to monitor your WO systems
Using Nagios to monitor your WO systemsWO Community
 
Kinect Workshop Part 1/2
Kinect Workshop Part 1/2Kinect Workshop Part 1/2
Kinect Workshop Part 1/2Seiya Konno
 
Refactoring Katello Installer modules - Ewoud Kohl van Wijngaarden
Refactoring Katello Installer modules - Ewoud Kohl van WijngaardenRefactoring Katello Installer modules - Ewoud Kohl van Wijngaarden
Refactoring Katello Installer modules - Ewoud Kohl van WijngaardenNETWAYS
 
Distributed Developer Workflows using Git
Distributed Developer Workflows using GitDistributed Developer Workflows using Git
Distributed Developer Workflows using GitSusan Potter
 

What's hot (20)

ITB2016 - ForgeBox 2 Package Management
ITB2016 - ForgeBox 2 Package ManagementITB2016 - ForgeBox 2 Package Management
ITB2016 - ForgeBox 2 Package Management
 
AusNOG 2019 - Getting IPv6 Private Addressing Right
AusNOG 2019 - Getting IPv6 Private Addressing RightAusNOG 2019 - Getting IPv6 Private Addressing Right
AusNOG 2019 - Getting IPv6 Private Addressing Right
 
Capistrano
CapistranoCapistrano
Capistrano
 
Geecon 2019 - Taming Code Quality in the Worst Language I Know: Bash
Geecon 2019 - Taming Code Quality  in the Worst Language I Know: BashGeecon 2019 - Taming Code Quality  in the Worst Language I Know: Bash
Geecon 2019 - Taming Code Quality in the Worst Language I Know: Bash
 
OpenNebulaConf2017EU: OpenNebula Companion tools: Admins Little Helpers by Bo...
OpenNebulaConf2017EU: OpenNebula Companion tools: Admins Little Helpers by Bo...OpenNebulaConf2017EU: OpenNebula Companion tools: Admins Little Helpers by Bo...
OpenNebulaConf2017EU: OpenNebula Companion tools: Admins Little Helpers by Bo...
 
Puppet Camp London 2015: Puppet Contained
Puppet Camp London 2015: Puppet ContainedPuppet Camp London 2015: Puppet Contained
Puppet Camp London 2015: Puppet Contained
 
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management tool
 
Back to the Basics: The Home Lab
Back to the Basics: The Home LabBack to the Basics: The Home Lab
Back to the Basics: The Home Lab
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 -  Rock Solid Deployment of Symfony AppsSymfony Live NYC 2014 -  Rock Solid Deployment of Symfony Apps
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony Apps
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
 
Deploying and maintaining your software with RPM/APT
Deploying and maintaining your software with RPM/APTDeploying and maintaining your software with RPM/APT
Deploying and maintaining your software with RPM/APT
 
Installing and Getting Started with Alfresco
Installing and Getting Started with AlfrescoInstalling and Getting Started with Alfresco
Installing and Getting Started with Alfresco
 
Alfresco Day Roma 2015: Infrastructure as Code with Chef-Alfresco
Alfresco Day Roma 2015: Infrastructure as Code with Chef-AlfrescoAlfresco Day Roma 2015: Infrastructure as Code with Chef-Alfresco
Alfresco Day Roma 2015: Infrastructure as Code with Chef-Alfresco
 
Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...
Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...
Mass-Migration of 5000 Servers to Foreman/Katello with bootstrap.py - Evgeni ...
 
Using Nagios to monitor your WO systems
Using Nagios to monitor your WO systemsUsing Nagios to monitor your WO systems
Using Nagios to monitor your WO systems
 
Kinect Workshop Part 1/2
Kinect Workshop Part 1/2Kinect Workshop Part 1/2
Kinect Workshop Part 1/2
 
Refactoring Katello Installer modules - Ewoud Kohl van Wijngaarden
Refactoring Katello Installer modules - Ewoud Kohl van WijngaardenRefactoring Katello Installer modules - Ewoud Kohl van Wijngaarden
Refactoring Katello Installer modules - Ewoud Kohl van Wijngaarden
 
JUC 2015 Pipeline Scaling
JUC 2015 Pipeline ScalingJUC 2015 Pipeline Scaling
JUC 2015 Pipeline Scaling
 
Distributed Developer Workflows using Git
Distributed Developer Workflows using GitDistributed Developer Workflows using Git
Distributed Developer Workflows using Git
 

Similar to Homebrew Package Management for OS X

Composer - The missing package manager for PHP
Composer - The missing package manager for PHPComposer - The missing package manager for PHP
Composer - The missing package manager for PHPTareq Hasan
 
Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015ice799
 
Getting Started with Go
Getting Started with GoGetting Started with Go
Getting Started with GoSteven Francia
 
Happy Go Programming Part 1
Happy Go Programming Part 1Happy Go Programming Part 1
Happy Go Programming Part 1Lin Yo-An
 
CommandBox & ForgeBox Package Management
CommandBox & ForgeBox Package ManagementCommandBox & ForgeBox Package Management
CommandBox & ForgeBox Package ManagementOrtus Solutions, Corp
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014biicode
 
Packaging is the Worst Way to Distribute Software, Except for Everything Else
Packaging is the Worst Way to Distribute Software, Except for Everything ElsePackaging is the Worst Way to Distribute Software, Except for Everything Else
Packaging is the Worst Way to Distribute Software, Except for Everything Elsemckern
 
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic  Perl ProgrammerModern Perl for the Unfrozen Paleolithic  Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerJohn Anderson
 
04 02-2018--Slackware Wire Shark Installation
04 02-2018--Slackware Wire Shark Installation04 02-2018--Slackware Wire Shark Installation
04 02-2018--Slackware Wire Shark InstallationAlexander Bitar
 
perlbrew yapcasia 2010
perlbrew yapcasia 2010perlbrew yapcasia 2010
perlbrew yapcasia 2010Kang-min Liu
 
Package Management and Chef - ChefConf 2015
Package Management and Chef - ChefConf 2015Package Management and Chef - ChefConf 2015
Package Management and Chef - ChefConf 2015Chef
 
Chef Conf 2015: Package Management & Chef
Chef Conf 2015: Package Management & ChefChef Conf 2015: Package Management & Chef
Chef Conf 2015: Package Management & Chefice799
 
Package Management via Spack on SJTU π Supercomputer
Package Management via Spack on SJTU π SupercomputerPackage Management via Spack on SJTU π Supercomputer
Package Management via Spack on SJTU π SupercomputerJianwen Wei
 
Packaging perl (LPW2010)
Packaging perl (LPW2010)Packaging perl (LPW2010)
Packaging perl (LPW2010)p3castro
 
Shipping python project by docker
Shipping python project by dockerShipping python project by docker
Shipping python project by dockerWei-Ting Kuo
 

Similar to Homebrew Package Management for OS X (20)

Composer - The missing package manager for PHP
Composer - The missing package manager for PHPComposer - The missing package manager for PHP
Composer - The missing package manager for PHP
 
Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015Package manages and Puppet - PuppetConf 2015
Package manages and Puppet - PuppetConf 2015
 
Getting Started with Go
Getting Started with GoGetting Started with Go
Getting Started with Go
 
Happy Go Programming Part 1
Happy Go Programming Part 1Happy Go Programming Part 1
Happy Go Programming Part 1
 
CommandBox at CFCamp 2014
CommandBox at CFCamp 2014CommandBox at CFCamp 2014
CommandBox at CFCamp 2014
 
CommandBox & ForgeBox Package Management
CommandBox & ForgeBox Package ManagementCommandBox & ForgeBox Package Management
CommandBox & ForgeBox Package Management
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
Debian packaging
Debian packagingDebian packaging
Debian packaging
 
Packaging is the Worst Way to Distribute Software, Except for Everything Else
Packaging is the Worst Way to Distribute Software, Except for Everything ElsePackaging is the Worst Way to Distribute Software, Except for Everything Else
Packaging is the Worst Way to Distribute Software, Except for Everything Else
 
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic  Perl ProgrammerModern Perl for the Unfrozen Paleolithic  Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl Programmer
 
04 02-2018--Slackware Wire Shark Installation
04 02-2018--Slackware Wire Shark Installation04 02-2018--Slackware Wire Shark Installation
04 02-2018--Slackware Wire Shark Installation
 
perlbrew yapcasia 2010
perlbrew yapcasia 2010perlbrew yapcasia 2010
perlbrew yapcasia 2010
 
Package Management and Chef - ChefConf 2015
Package Management and Chef - ChefConf 2015Package Management and Chef - ChefConf 2015
Package Management and Chef - ChefConf 2015
 
Chef Conf 2015: Package Management & Chef
Chef Conf 2015: Package Management & ChefChef Conf 2015: Package Management & Chef
Chef Conf 2015: Package Management & Chef
 
Docker perl build
Docker perl buildDocker perl build
Docker perl build
 
Package Management via Spack on SJTU π Supercomputer
Package Management via Spack on SJTU π SupercomputerPackage Management via Spack on SJTU π Supercomputer
Package Management via Spack on SJTU π Supercomputer
 
Packaging perl (LPW2010)
Packaging perl (LPW2010)Packaging perl (LPW2010)
Packaging perl (LPW2010)
 
Shipping python project by docker
Shipping python project by dockerShipping python project by docker
Shipping python project by docker
 
CommandBox : Free CFML
CommandBox : Free CFMLCommandBox : Free CFML
CommandBox : Free CFML
 
Ekon24 mORMot 2
Ekon24 mORMot 2Ekon24 mORMot 2
Ekon24 mORMot 2
 

Recently uploaded

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Recently uploaded (20)

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 

Homebrew Package Management for OS X

Editor's Notes

  1. Introduce yourselves!
  2. Here&amp;#x2019;s what we&amp;#x2019;ll be covering today
  3. Package managers on OS X have historically been... pretty awful. Homebrew kicks it up a notch. The whole package manager is written in Ruby and uses git for the &amp;#x201C;repository&amp;#x201D; It&amp;#x2019;s insanely popular. Absolutely huge number of people contributing to it, and even more using it and filing bug reports (ie. requests) Contribution is as simple as forking the repo on github and then making an issue with a link to your commits All you need to install to get up and running is the OS X toolchain &amp;#x2014; ie. XCode
  4. Package managers on OS X have historically been... pretty awful. Homebrew kicks it up a notch. The whole package manager is written in Ruby and uses git for the &amp;#x201C;repository&amp;#x201D; It&amp;#x2019;s insanely popular. Absolutely huge number of people contributing to it, and even more using it and filing bug reports (ie. requests) Contribution is as simple as forking the repo on github and then making an issue with a link to your commits All you need to install to get up and running is the OS X toolchain &amp;#x2014; ie. XCode
  5. Package managers on OS X have historically been... pretty awful. Homebrew kicks it up a notch. The whole package manager is written in Ruby and uses git for the &amp;#x201C;repository&amp;#x201D; It&amp;#x2019;s insanely popular. Absolutely huge number of people contributing to it, and even more using it and filing bug reports (ie. requests) Contribution is as simple as forking the repo on github and then making an issue with a link to your commits All you need to install to get up and running is the OS X toolchain &amp;#x2014; ie. XCode
  6. Package managers on OS X have historically been... pretty awful. Homebrew kicks it up a notch. The whole package manager is written in Ruby and uses git for the &amp;#x201C;repository&amp;#x201D; It&amp;#x2019;s insanely popular. Absolutely huge number of people contributing to it, and even more using it and filing bug reports (ie. requests) Contribution is as simple as forking the repo on github and then making an issue with a link to your commits All you need to install to get up and running is the OS X toolchain &amp;#x2014; ie. XCode
  7. Package managers on OS X have historically been... pretty awful. Homebrew kicks it up a notch. The whole package manager is written in Ruby and uses git for the &amp;#x201C;repository&amp;#x201D; It&amp;#x2019;s insanely popular. Absolutely huge number of people contributing to it, and even more using it and filing bug reports (ie. requests) Contribution is as simple as forking the repo on github and then making an issue with a link to your commits All you need to install to get up and running is the OS X toolchain &amp;#x2014; ie. XCode
  8. It&amp;#x2019;s the third most forked repository on github!
  9. It&amp;#x2019;s the third most forked repository on github!
  10. Fink and MacPorts try to shove Linux-style package management into OS X. That&amp;#x2019;s the wrong way to do it. There are plenty of good Linux package managers out there, and yeah, technically they *can* be made to work on OS X, but they&amp;#x2019;ll never really fit in. Homebrew was designed *for* OS X, not around it. One of homebrew&amp;#x2019;s own philosophies is that the user shouldn&amp;#x2019;t need super-user or sudo access to install packages. Instead, it makes /usr/local accessible to the current user and recommends using it as the homebrew prefix. No duplication means doesn&amp;#x2019;t replace ruby, perl, php, etc And as already shown, huge user community
  11. Fink and MacPorts try to shove Linux-style package management into OS X. That&amp;#x2019;s the wrong way to do it. There are plenty of good Linux package managers out there, and yeah, technically they *can* be made to work on OS X, but they&amp;#x2019;ll never really fit in. Homebrew was designed *for* OS X, not around it. One of homebrew&amp;#x2019;s own philosophies is that the user shouldn&amp;#x2019;t need super-user or sudo access to install packages. Instead, it makes /usr/local accessible to the current user and recommends using it as the homebrew prefix. No duplication means doesn&amp;#x2019;t replace ruby, perl, php, etc And as already shown, huge user community
  12. Fink and MacPorts try to shove Linux-style package management into OS X. That&amp;#x2019;s the wrong way to do it. There are plenty of good Linux package managers out there, and yeah, technically they *can* be made to work on OS X, but they&amp;#x2019;ll never really fit in. Homebrew was designed *for* OS X, not around it. One of homebrew&amp;#x2019;s own philosophies is that the user shouldn&amp;#x2019;t need super-user or sudo access to install packages. Instead, it makes /usr/local accessible to the current user and recommends using it as the homebrew prefix. No duplication means doesn&amp;#x2019;t replace ruby, perl, php, etc And as already shown, huge user community
  13. Fink and MacPorts try to shove Linux-style package management into OS X. That&amp;#x2019;s the wrong way to do it. There are plenty of good Linux package managers out there, and yeah, technically they *can* be made to work on OS X, but they&amp;#x2019;ll never really fit in. Homebrew was designed *for* OS X, not around it. One of homebrew&amp;#x2019;s own philosophies is that the user shouldn&amp;#x2019;t need super-user or sudo access to install packages. Instead, it makes /usr/local accessible to the current user and recommends using it as the homebrew prefix. No duplication means doesn&amp;#x2019;t replace ruby, perl, php, etc And as already shown, huge user community
  14. Fink and MacPorts try to shove Linux-style package management into OS X. That&amp;#x2019;s the wrong way to do it. There are plenty of good Linux package managers out there, and yeah, technically they *can* be made to work on OS X, but they&amp;#x2019;ll never really fit in. Homebrew was designed *for* OS X, not around it. One of homebrew&amp;#x2019;s own philosophies is that the user shouldn&amp;#x2019;t need super-user or sudo access to install packages. Instead, it makes /usr/local accessible to the current user and recommends using it as the homebrew prefix. No duplication means doesn&amp;#x2019;t replace ruby, perl, php, etc And as already shown, huge user community
  15. Homebrew can install multiple versions of the same package, but it doesn&amp;#x2019;t all &amp;#x201C;link&amp;#x201D; them into place. Basically homebrew installs each package in its own little prefix in /usr/local, but then symlinks one of them into the &amp;#x201C;standard&amp;#x201D; /usr/local directories, like lib and bin. It&amp;#x2019;s not ideal, but it doesn&amp;#x2019;t prevent you from really using multiple versions of things like libraries. Change is hard. Getting others to change is really hard. Don&amp;#x2019;t like the way Apple ships PHP? Out of luck.
  16. Homebrew can install multiple versions of the same package, but it doesn&amp;#x2019;t all &amp;#x201C;link&amp;#x201D; them into place. Basically homebrew installs each package in its own little prefix in /usr/local, but then symlinks one of them into the &amp;#x201C;standard&amp;#x201D; /usr/local directories, like lib and bin. It&amp;#x2019;s not ideal, but it doesn&amp;#x2019;t prevent you from really using multiple versions of things like libraries. Change is hard. Getting others to change is really hard. Don&amp;#x2019;t like the way Apple ships PHP? Out of luck.
  17. Homebrew can install multiple versions of the same package, but it doesn&amp;#x2019;t all &amp;#x201C;link&amp;#x201D; them into place. Basically homebrew installs each package in its own little prefix in /usr/local, but then symlinks one of them into the &amp;#x201C;standard&amp;#x201D; /usr/local directories, like lib and bin. It&amp;#x2019;s not ideal, but it doesn&amp;#x2019;t prevent you from really using multiple versions of things like libraries. Change is hard. Getting others to change is really hard. Don&amp;#x2019;t like the way Apple ships PHP? Out of luck.
  18. Getting homebrew installed and running is pretty easy.
  19. Using it, is also pretty easy
  20. Finding useful packages, is also really easy.
  21. but above all else, creating your own packages to contribute, is really, really easy
  22. Some terminology we&amp;#x2019;ll use here. Formulas are the ruby file describing the package, and the keg is where a particular version of a formula is installed to, and the Cellar holds all of these kegs. So let&amp;#x2019;s write a package definition
  23. First thing is to require the formula library
  24. Then, make some method calls to set metadata for the formula
  25. and now tell homebrew how to build and install it
  26. Once you&amp;#x2019;ve got your formula made or updated and you&amp;#x2019;ve pushed to your own remote, just file an issue on the source repo on github with a link to your commits and wait! That&amp;#x2019;s it.
  27. So, any questions?
  28. Here&amp;#x2019;s other places you might want to go for homebrew-related activities
  29. And thank you!