brew: API install does not replace `Dir.home` when pouring bottles

brew doctor output

Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: Some installed kegs have no formulae!
This means they were either deleted or installed manually.
You should find replacements for the following formulae:
  php-uuid@8.1

Warning: Some installed formulae are deprecated or disabled.
You should find replacements for the following formulae:
  jsonschema
  php@7.4
  php@8.0

Warning: You have unlinked kegs in your Cellar.
Leaving kegs unlinked can lead to build-trouble and cause formulae that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
  php-raphf@8.1

Warning: You have uncommitted modifications to Homebrew/homebrew-cask.
If this is a surprise to you, then you should stash these modifications.
Stashing returns Homebrew to a pristine state but can be undone
should you later need to do so for some reason.
  cd /opt/homebrew/Library/Taps/homebrew/homebrew-cask && git stash -u && git clean -d -f

Uncommitted files:
   M Casks/virtualbox.rb

Verification

  • My “brew doctor output” above says Your system is ready to brew. and am still able to reproduce my issue.
  • I ran brew update twice and am still able to reproduce my issue.
  • This issue’s title and/or description do not reference a single formula e.g. brew install wget. If they do, open an issue at https://github.com/Homebrew/homebrew-core/issues/new/choose instead.

brew config output

HOMEBREW_VERSION: 4.0.5-103-gbde256a
ORIGIN: https://github.com/Homebrew/brew
HEAD: bde256a325f60463f14c4d19cd40e0be99befa53
Last commit: 7 hours ago
Core tap origin: https://github.com/Homebrew/homebrew-core
Core tap HEAD: a3a6d385a270d02e75c180949805b12c87331612
Core tap last commit: 7 hours ago
Core tap branch: master
Core tap JSON: 08 Mar 13:31 UTC
HOMEBREW_PREFIX: /opt/homebrew
HOMEBREW_CASK_OPTS: []
HOMEBREW_DEVELOPER: set
HOMEBREW_EDITOR: nano
HOMEBREW_GITHUB_API_TOKEN: set
HOMEBREW_MAKE_JOBS: 10
HOMEBREW_NO_ENV_HINTS: set
Homebrew Ruby: 2.6.10 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
CPU: 10-core 64-bit arm_firestorm_icestorm
Clang: 14.0.0 build 1400
Git: 2.39.2 => /opt/homebrew/bin/git
Curl: 7.87.0 => /usr/bin/curl
macOS: 13.3-arm64
CLT: 14.2.0.0.1.1668646533
Xcode: 14.2 => /Applications/Xcode_14.2.app/Contents/Developer
Rosetta 2: false

What were you trying to do (and why)?

Install any formula that uses a working_dir of Dir.home in the service block.

What happened (include all command output)?

The poured services define a home directory that only applies to the CI runners

WorkingDirectory=/Users/brew/actions-runner/_work/homebrew-core/homebrew-core/bottles/home
        <key>WorkingDirectory</key>
        <string>/Users/brew/actions-runner/_work/homebrew-core/homebrew-core/bottles/home</string>

What did you expect to happen?

For that value to be replaced by the user’s home directory

Step-by-step reproduction instructions (by running brew commands)

brew install gitlab-runner
cat $(brew --prefix gitlab-runner)/homebrew.mxcl.gitlab-runner.plist
cat $(brew --prefix gitlab-runner)/homebrew.gitlab-runner.service

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Comments: 20 (20 by maintainers)

Commits related to this issue

Most upvoted comments

This might already be covered in the brew services problems that @Bo98 outlined above, but just in case it isn’t, caveats for service blocks are currently not shown correctly when you don’t have HOMEBREW_NO_INSTALL_FROM_API set. For example:

❯ diff -u <(HOMEBREW_NO_INSTALL_FROM_API= brew info socket_vmnet) <(HOMEBREW_NO_INSTALL_FROM_API=1 brew info socket_vmnet)
--- /dev/fd/13  2023-03-17 15:39:33.183107616 +0800
+++ /dev/fd/14  2023-03-17 15:39:33.183970272 +0800
@@ -16,6 +16,11 @@
 socket_vmnet is keg-only, which means it was not symlinked into /usr/local,
 because /usr/local/bin is often writable by a non-admin user.

+
+To restart socket_vmnet after an upgrade:
+  sudo brew services restart socket_vmnet
+Or, if you don't want/need a background service you can just run:
+  /usr/local/opt/socket_vmnet/bin/socket_vmnet --vmnet-gateway=192.168.105.1 /usr/local/var/run/socket_vmnet
 ==> Analytics
 install: 116 (30 days), 664 (90 days), 773 (365 days)
 install-on-request: 116 (30 days), 662 (90 days), 771 (365 days)

(That extra blank line bugs me to no end too. 😅)