Package Managers (apt, dpkg, port, rpm, …)


Introduction

Linux Distros BSD-Based Mac OS X
Base/Origin Debian Slackware RedHat BSD (BSD-core)
Derivates / More known distros1 Knoppix, Ubuntu Suse CentOS FreeBSD, NetBSD, OpenBSD Mac OS X 10.x
Primary
Pkg Mgr(s)
aptdpkg pkgtool rpm google to learn more MacPortsFinkHomebrew (brew)
1Aside base/origin distros.

 


General


Distros, History – Linux, *NIX


APT – Advanced Package Tool (Debian origin)


dpkg (Debian origin)


Mac OS X – Related

In alphabetical order, not in any priority. (Personally most often used during 2010s and into 2020s is Homebrew/brew.)


Fink – apt/dpkg-based


Homebrew, brew


MacPorts (was DarwinPorts)


RPM (RedHat origin)


Slackware


Embedded Systems – Use

(2014 Oct)

Use cases:

  1. Use on Host, development workstation (e.g. Mac OS X with virtual machine running a Debian distro, X86)
    1. For tools etc for host-only use – easy and defintely appropriate
    2. For libraries used in development of target code, then also require integration in build system with cross compilation etc
  2. Use on Target, possibly… (e.g. Debian-based, w/ BusyBox, Arm)
    Functionality needs: How advanced capabilities do we really need?
    Overhead: For learning how to actually package files for some more capable package manager system (‘PMS’)
    In building and maintaining, cross-compiling, PMS tool(s) for use on embedded systems.
    Availability: If PMS even available for cross compilation on your target env?
    Footprint (size) How much resources will PMS take up on embedded system?

Example, specific case Oct 2014

Package Manager Solution Runtime Env.

Host*
(Debian)

Target w/
BusyBox

Fetch

APT – Advanced Package Tool

Yes

No

Yes

dpkg – for Debian package mgmt.

Yes

Yes

No

RPM Package Manager (RedHat)

No

Yes

No

Legend:
Host – whether package exist in development environment host (*Debian 7.6 in this case), if exist simplifies dev and test of packages, as doesn’t have to get and build package also for this environment.
BusyBox – whether functionality is available in this package, not that we’re currently including among options when building it.
Fetch – whether package include capabilities to also fetch packages from remote destination

 


Programming Language – Specific