Skip to content

mlavergn/macos-packages

Repository files navigation

macOS Packages

Introduction

A collection of Makefile to generate signed standard macOS packages (.pkg) for applications and developer tools.

This project exists because of a personal preference to avoid auto-installed dependencies by other packaging schemes such as Homebrew and MacPorts. The overarching goal is to prevent bit-rot (orphaned files and binaries). By registering with the package manager and providing an uninstaller, it should be possible to completely remove all traces of the installed software between upgrades and on deletion.

All App Store downloads follow a similar methodology to accounts for all files installed by a particular piece of software.

Tips

To view a listing of all the currently installed packages on your system issue the following in a terminal window

pkgutil --packages

# output should be similar to
com.apple.pkg.Xcode
com.apple.pkg.XcodeSystemResources
com.apple.pkg.ConfigurationUtility
com.apple.pkg.TransporterApp
com.marclavergne.GitHub
com.marclavergne.GitLFS
...

To view files owned by a package issue the following in a terminal window

pkgutil --pkg-info com.marclavergne.firebase --files com.marclavergne.firebase

# output should be similar to
package-id: com.marclavergne.firebase
version: 8.1.1
volume: /
location: usr/local/firebase
install-time: 1587566967

bin
bin/firebase
bin/uninstall.sh
...

To view files contained in a package file issue the following in a terminal window

pkgutil --payload-files Firebase.pkg

Usage

All packages current use com.marclavergne.Package Name as an identifier. This is easily modified in the Makefile.

Every sub-project has a specific README, but have the following convention

# build the package
make all

# install the package
open Example.pkg

# uninstall the package
/usr/local/example/bin/uninstall.sh

Current Packagers

  • Android SDK (including emulator)
  • AWS CLI
  • Dart
  • ffmpeg
  • Firebase CLI
  • FLutter SDK
  • GitHub CLI
  • GitLFS
  • Haskell
  • ImageMagick
  • inetutils (telnet & ftp only)
  • Java JRE
  • jq
  • Kotlin
  • Mint
  • nmap
  • OpenOCD
  • Pecker
  • Scala
  • STLink
  • unar

OEM Packages

About

macOS packages and packagers

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published