Installing Frappe/ERPNext (develop branch) on MacOS (Apple Silicon) for Development

hello good day, when i check run brew services list I get this: “[email protected] error 256 davearktechk ~/Library/LaunchAgents/[email protected]” and despite having access to MySQL root I get this error: “b”--------------\nDROP TABLE IF EXISTS tabDocField\n--------------\n\nERROR 1036 (HY000) at line 9: Table ‘tabdocfield’ is read only\n"". when I run bench new-site library.localhost

my setup
MariaDB is 10.6
Python 3.12.8
bench 5.23.0
node 18
OS 15.2 sequoia
frappe 15.x.x-develop

same issue

Updated for Frappe/ERPNext version-16, aligned with the official Frappe installation docs and a working multi-bench Mac setup.

Runtime stack

  • Python via uv python install 3.14 (no Homebrew Python)
  • Bench via uv tool install frappe-bench (replaces pipx / separate honcho)
  • Node.js 24 + Yarn via NVM
  • Redis from Homebrew; MariaDB charset config and mariadb-secure-installation kept

MariaDB

  • Default remains [email protected] so one shared server can host v14–v16/develop benches
  • Documented that official v16 docs list 11.8, and when to choose that instead

macOS specifics

  • Added xcode-select --install (covers git; dropped Homebrew git)
  • Documented WeasyPrint system libs (pango, libffi)
  • Replaced obsolete OBJC_DISABLE_INITIALIZE_FORK_SAFETY guidance with FRAPPE_BACKGROUND_WORKERS_NOFORK / worker-pool

PDF

  • Noted v16+ Chromium PDF generator (auto-downloaded into the bench)
  • Kept wkhtmltopdf as optional for legacy print formats and older major versions

If you see an error during bench init like:

ld: library 'ssl' not found
clang: error: linker command failed with exit code 1

make sure OpenSSL available to the linker.

Try first (openssl will already be installed if you follow the instructions from above)

export LDFLAGS="-L$(brew --prefix openssl@3)/lib"

If that’s not works try to install openssl,

brew install openssl@3
export LDFLAGS="-L$(brew --prefix openssl@3)/lib"
export CPPFLAGS="-I$(brew --prefix openssl@3)/include"

Then re-run bench init in the same shell.

Ah, easiest is this:

brew tap vyogotech/tap
brew install vybench

This is brew bottle install with all tools.

helpful