Homebrew 小记

Posted on July 27, 2015

Homebrew

  • /usr/local/ 是一个git仓库
  • keg 理解为一个软件包?
  • /usr/local/Cellar/ 存储所有安装的kegs, 都将以[程序名/版本号]存放于本目录下, (非版本库)
  • /usr/local/bin 软件的软连接入口文件, 指向/usr/local/Cellar/对应文件, 非版本库(除了/usr/local/bin/brew)
  • /usr/local/Library/Formula 软件安装公式文件库(版本库)

  • brew info 整体安装信息: 45 kegs, 26451 files, 1.2G
  • brew info memcached

    如果安装了多版本, *指定的是当前版本:

    % brew info git
    git: stable 2.5.3 (bottled), HEAD
    Distributed revision control system
    https://git-scm.com
    /usr/local/Cellar/git/1.8.5.3 (1337 files, 29M)
      Poured from bottle
    /usr/local/Cellar/git/2.4.6 (1376 files, 32M)
      Poured from bottle
    /usr/local/Cellar/git/2.5.0 (1383 files, 32M) *
      Poured from bottle
    
    2.5 后面有个星号
    
  • brew switch 软件名 版本 切换已安装的版本, 如brew switch git 2.4.6

  • brew ls 列出所有安装软件

    brew list --versions 列出所有安装软件, 并带上版本信息

  • brew ls vim 该软件的文件构成

  • brew deps vim 显示指定包的依赖, 依赖是写在formula文件里的

  • brew edit tree 编辑器打开指定软件包的formula文件

  • brew outdated 查看陈旧软件包

  • brew update 不带参数, 更新brew自己
  • brew upgrade tree 更新指定软件包

  • brew install FORMULA...
  • brew uninstall FORMULA...
  • brew search [foo]

  • brew tap <gihhub_user/repo> 安装指定扩展源

  • brew tap 应该是查看所有扩展吧

安装指定版本

  • brew log redis 查看redis git历史

    找到想要的版本的commit

  • cd $( brew --prefix ) 进入brew目录

  • git checkout 提交号 Library/Formula/redis.rb 切换安装指令

    版本库会有修改, 不过以后执行brew update会还原回去

  • brew install redis 进行安装

    如果已经安装了其他版本, 这里会要求先unlink: brew unlink redis


Mac OS启动服务

Mac下的启动服务主要有三个地方可配置:

  1. 系统偏好设置->帐户->登陆项
  2. /System/Library/StartupItems 和 /Library/StartupItems/
  3. launchd 系统初始化进程配置

launchd 加载目录:

  • /System/Library/LaunchAgents
  • /System/Library/LaunchDaemons
  • /Library/LaunchDaemons
  • /Library/LaunchAgents
  • ~/Library/LaunchAgents

具体区别:

  • /System/Library目录是存放Apple自己开发的软件。
  • /Library目录是系统管理员存放的第三方软件。
  • ~/Library/是用户自己存放的第三方软件。

  • LaunchDaemons是用户未登陆前就启动的服务(守护进程)
  • LaunchAgents是用户登陆后启动的服务(守护进程)

使用:

你可以通过以下的方式进行设置(TODO):

1.通过launchctl load -w xxx.plistlaunchctl unload -w xxx.plist命令添加和删除指定启动项 2.直接创建、修改、删除相关目录下面的plist文件

配置解读

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key> 任务名称
  <string>homebrew.mxcl.memcached</string> 必须和文件名一致
  <key>KeepAlive</key> 是否后台保持运行
  <true/>
  <key>ProgramArguments</key> 启动命令和参数
  <array>
    <string>/usr/local/opt/memcached/bin/memcached</string>
    <string>-l</string>
    <string>localhost</string>
  </array>
  <key>RunAtLoad</key> 是否加载时候运行
  <true/>
  <key>WorkingDirectory</key> 工作目录
  <string>/usr/local</string>
</dict>
</plist>

brew services

  • 安装: brew tap homebrew/services

  • 查看服务: brew services list

    % brew services list
    Name      Status  User     Plist
    collectd  stopped
    memcached started zhonghua /Users/zhonghua/Library/LaunchAgents/homebrew.mxcl.memcached.plist
    mongodb   stopped
    mysql     started zhonghua /Users/zhonghua/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    nginx     started zhonghua /Users/zhonghua/Library/LaunchAgents/homebrew.mxcl.nginx.plist
    redis     started zhonghua /Users/zhonghua/Library/LaunchAgents/homebrew.mxcl.redis.plist
    
  • 停止 brew services stop mysql

  • 启动brew services start mysql

  • 重启 brew services restart mysql


参考资料