【问题标题】:saltstack: brew module - couldn't find HOME environment?saltstack: brew 模块 - 找不到 HOME 环境?
【发布时间】:2013-12-24 17:09:00
【问题描述】:
  • 操作系统:MacOS
  • osarch: x86_64
  • osrelease:10.9
  • 路径:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

$ salt --versions-report

           Salt: 0.17.2
         Python: 2.7.6 (default, Nov 19 2013, 02:02:54)
         Jinja2: 2.7.1
       M2Crypto: 0.21.1
 msgpack-python: 0.4.0
   msgpack-pure: Not Installed
       pycrypto: 2.6.1
         PyYAML: 3.10
          PyZMQ: 14.0.0
            ZMQ: 3.2.4

$ sudo salt '*' pkg.list_pkgs

MacBook-Pro.local:
    ----------
        from:
        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/pathname.rb:853:in,/usr/local/Library/Homebrew/global.rb:25:in,/usr/local/Library/Homebrew/global.rb:44,/usr/local/Library/brew.rb:17,/usr/local/Library/brew.rb:17:in
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/pathname.rb:853:in:
        `expand_path':

$ sudo salt '*' pkg.list_upgrades

MacBook-Pro.local:
    - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/pathname.rb:853:in `expand_path': couldn't find HOME environment -- expanding `~/Library/Caches/Homebrew' (ArgumentError)
    -   from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/pathname.rb:853:in `expand_path'
    -   from /usr/local/Library/Homebrew/global.rb:25:in `cache'
    -   from /usr/local/Library/Homebrew/global.rb:44
    -   from /usr/local/Library/brew.rb:17:in `require'
    -   from /usr/local/Library/brew.rb:17

但是从命令行运行brew 工作正常:

$ brew list --versions

cairo 1.12.16
ccze 0.2.1
cmake 2.8.12.1
curl 7.33.0
fontconfig 2.11.0

$ brew 过时

freetype (2.5.0.1 < 2.5.1)
imagemagick (6.8.7-0 < 6.8.7-7)
libpng (1.5.14 < 1.5.17)
passenger (4.0.24 < 4.0.26)
pixman (0.32.2 < 0.32.4)
zeromq (3.2.4 < 4.0.3)

我怀疑它是由不同版本的 Ruby 引起的:

$ /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin13.0]

$(which ruby) -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]

$ 酿造医生

Your system is ready to brew.

尝试从命令行扩展仍然有效:

$ /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -ve 'p ENV["HOME"]'
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin13.0]
"/Users/quanta"

$ /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -ve 'p File.expand_path("~")'
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin13.0]
"/Users/quanta"

【问题讨论】:

  • “brew doctor”输出什么?你在使用 RVM 吗?
  • "您的系统已准备就绪。"不,我没有使用 RVM。

标签: ruby macos homebrew salt-stack


【解决方案1】:

通过在/usr/local/Library/brew.rb 文件中手动定义ENV['HOME'] 解决了问题:

ENV['HOME'] = "/Users/quanta"

$ sudo salt '*' pkg.list_upgrades

MacBook-Pro.local:
    - freetype
    - imagemagick
    - libpng
    - mysql
    - passenger
    - pixman
    - redis
    - zeromq

但我的问题仍然存在:为什么 Salt 不能使用 HOME 环境变量?


更新 12 月 8 日星期日 15:26:03 ICT 2013

由于salt-minion 是通过launchctl 启动的:

com.saltstack.minion.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>com.saltstack.minion</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/salt-minion</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

我想到一个问题:如何在启动脚本中指定环境变量?答案是:

man launchd.plist:

EnvironmentVariables <dictionary of strings>
     This optional key is used to specify additional environmental variables to be set before running the job.

所以我在 plist 文件中添加了以下内容:

<dict>
  <key>HOME</key>
  <string>/Users/quanta</string>
</dict>

然后重启了minion服务,现在可以正常使用了。

【讨论】:

    猜你喜欢
    • 2015-02-02
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2021-07-04
    • 2020-06-21
    • 1970-01-01
    相关资源
    最近更新 更多