Arch Mac

A simple and tried package manager for macOS

Install Arch Mac

# Download the current snapshot
curl -o /tmp/snapshot.tar.gz https://archmac.fra1.cdn.digitaloceanspaces.com/snapshots/archmac-snapshot-20190731182626.tar.gz
# Check snapshot integrity
echo 'd6b04d7708458283b91bb0ace5648f0324e89ca3ec2f6cdba49267e39969540e  /tmp/snapshot.tar.gz' | shasum -a 256 -c -
# Extract snapshot into /opt/arch
sudo tar -C / -xvpzf /tmp/snapshot.tar.gz
# Extend path for your shell
echo 'export PATH="/opt/arch/bin:/opt/arch/sbin:$PATH"' >> ~/.archrc
echo 'source ~/.archrc' >> ~/.bash_profile
# And use it right in your currently running shell
source ~/.archrc
sudo pacman -Syu
# You're up to date and ready to roll!

Use Arch Mac

If you have used Arch Linux previously you will find yourself right at home! Otherwise, here is a quick rundown.
Synchronize repos
sudo pacman -Sy
Search for packages
sudo pacman -Ss git
Install packages
sudo pacman -S git
Arch Mac tries hard to stay out of the way and install everything under its prefix /opt/arch. Nonetheless, some files may go in the idiomatic to macOS places dedicated to non-system provided software such as /Library/LaunchDaemons and /Library/Extensions when necessary. This means that installing daemons like redis will have them started on system boot – not user login – by launchd at your convenience, or that openvpn works out of the box since it will pull the package containing tuntap kexts!
Update installed packages
sudo pacman -Su
Create a package
mkdir foo
vim PKGBUILD
PKGBUILD files are just shell scripts
pkgname=foo
pkgver=1.2.3
pkgrel=1
desc="A sample package"
url="https://example.com/"
arch=(x86_64)
source=(
    "https://example.com/foo/foo-${pkgver}.tar.gz"
)
sha256sums=(
    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
)
build() {
  cd "${srcdir}"
  ./configure --prefix=/opt/arch
  make DESTDIR="${pkgdir}"
}
package() {
  cd "${srcdir}"
  make install DESTDIR="${pkgdir}"
}
Build and install the package
makepkg
sudo pacman -U foo-1.2.3-1-x86_64.pkg.tar.gz
Since Arch Mac is placed into a non-default path – like /usr/local is – packaged libraries won't be linked to by accident, so it is safe to install libraries provided natively by macOS. This means though that when installing third-party libraries unaware of Arch Mac, like native gems, you may need to manually set some paths – e.g with CFLAGS or LDFLAGS.

Goals

Arch Mac delivers binary packages, saving you from tedious compilations and variance from system to system.

Its package builder runs as a regular user to isolate build and package steps, yet its package manager runs as root, in order to provide true daemon and multi-user support and an outstanding out of the box experience.

The selected install location leaves /usr/local free to use by yourself or other third party applications, which regularly place support scripts and commands in that location, thus preventing mixing managed files together with unmanaged ones.

Arch Mac aims to provide additional security by leveraging pacman's PGP support to sign binary packages and repo files.

Contribute to Arch Mac

github.com/archmac