【homebrew 系列文章】html
个人github地址:github地址:https://github.com/rangaofei/homebrew-sakagit
这里容我先装个逼,推广一下本身的仓库,虽然只有两个包: github地址github
brew tap rangaofei/saka
复制代码
2.安装软件vim
brew install sweather
复制代码
3.运行软件ruby
sweather -v
----显示软件版本bash
sweather -setloc liangxi
----设置天气地址为无锡梁溪区curl
因为此处设置的是liangxi,地址库中搜索到的匹配地址只有无锡的梁溪区,因此自动设置为无锡梁溪区。ide
假如查询的时候有多个地址供选择,则以下所示:post
此处我选择9:ui
选取完毕后输入查询命令,三每天气
sweather
复制代码
欢迎各位大佬使用,同时假若有本身要发布的库能够直接留言,大佬若是容许的话我帮助各位编写好ruby脚本发布到该仓库,供全部人使用。
brew会提供一个官方的仓库,homebrew-core
github地址。
homebrew安装完毕后这个仓库自动加载到usr/local/Homerew/Library/Taps/
文件夹下,这是一个git管理的地址,意味着咱们能够提交本身的pullrequest到该仓库。
重点关注一下homebrew-core/Formula/
,该文件夹下包含咱们全部的仓库中的软件安装脚本,例如curl.rb
这个ruby脚本便是安装curl时须要的脚本。
此处咱们以本身建立的仓库为例讲解:
brew时以github为基础构建的ruby脚本,全部仓库都集中再github上,全部此处演示的也是构建再github上的仓库。
homebrew-anything
格式来命名,homebrew-
前缀是可选的,可是若是不加该前缀,必须使用整个url来安装,至关麻烦,因此务必加上此前缀。anything
能够设置为任意本身喜欢的名字。 这是个人仓库的名称:
将你本身的仓库clone到本地Tap文件夹下,你能够经过brew [un]install来管理你的仓库中的软件的安装与卸载。当你使用brew update时,也会更新本身仓库中的包安装文件。
例如上面的个人仓库homebrew-saka
,个人用户名是rangaofei
,则我可使用 brew tap rangaofei/saka,来增长我本身的仓库:
如上图所示,个人仓库已经添加进来了。
经过url将其余非github的仓库添加进来,这个地址能够不是http协议,只要支持git协议便可。此处不演示。
删除已增长的仓库,同时在该仓库下的软件也都能再使用。
将指定仓库标记为包首选搜索仓库。
取消指定仓库的包首选搜索。
假如本身的仓库中有和homebrew-core仓库中名字相同的包,固然能够。 当使用brew_install
命令时brew会有一个默认的搜索顺序:
也就是说假如咱们给任何仓库一个pinned标记,homebrew会自动先搜索核心仓库,再搜索其余仓库。假如标记了某个仓库,则会先搜索标记的仓库,在搜索核心仓库,最后是其余仓库。 假如咱们标记了某个仓库,例如saka
,那当个人仓库中有curl包,core中也有curl包时,首先安装saka
仓库中的curl。
若是你想从指定的仓库安装某个包也能够经过加上user/repo
来执行。好比咱们想安装vim,则有以下两种方式:
brew install vim # 从homebrew/core安装
brew install username/repo/vim # 从指定仓库安装
复制代码
brew是以ruby脚原本执行安装,语法遵循ruby语法。
如今我有一个c语言编写的获取天气命令行客户端,放在github托管,文件地址为
https://raw.githubusercontent.com/rangaofei/SimpleWeather/master/sweather-1.1.0.tar.gz
复制代码
格式最好以压缩文件格式结尾,此处只须要打包必须的文件,尽可能小巧。重点关注一下最后几个字符:sweather-1.0.7.tar.gz
sweather
表示包的名称,也就是咱们安装好后的文件夹的名称
1.1.0
表示版本号,此处最好与你发布的程序版本号一致, 例如我在cmake中程序版本号设置
set(VERSION_MAJOR 1)
set(VERSION_MINOR 1)
set(VERSION_PATCH 0)
复制代码
brew create https://raw.githubusercontent.com/rangaofei/SimpleWeather/master/sweather-1.0.7.tar.gz
复制代码
brew会自动建立一个sweather.rb 文件,文件内容大体以下(此处我已修改了一些内容,包括desc,homepage,cmake依赖以及安装时改用cmake):
# Documentation: https://docs.brew.sh/Formula-Cookbook.html
# http://www.rubydoc.info/github/Homebrew/brew/master/Formula
# PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!
class Sweather < Formula
desc "一个很是简单的获取天气客户端\n ----by saka"
homepage "https://juejin.im/user/5855ebea8d6d810065a4befa/posts"
url "https://raw.githubusercontent.com/rangaofei/SimpleWeather/master/sweather-1.0.7.tar.gz"
sha256 "64808c700bd46d837c6b06d7965f4f99d3c91b4c2764c3d02f893b8dfb9e9aa2"
depends_on "cmake" => :build
# depends_on "curl"=>:run
def install
etc.install Dir["src/*"]
mkdir "build" do
system "cmake", "..", *std_cmake_args
system "make"
system "make", "install" # if this fails, try separate make/make install steps
end
end
test do
# `test do` will create, run in and delete a temporary directory.
#
# This test will fail and we won't accept that! For Homebrew/homebrew-core
# this will need to be a test that verifies the functionality of the
# software. Run the test with `brew test sweather`. Options passed
# to `brew install` such as `--HEAD` also need to be provided to `brew test`.
#
# The installed folder is not in the path, so use the entire path to any
# executables being tested: `system "#{bin}/program", "do", "something"`.
system "false"
end
end
复制代码
这个文件会建立在核心仓库,也就是在/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/
位置,只要copy咱们本身仓库的位置便可,个人是/usr/local/Homebrew/Library/Taps/rangaofei/homebrew-saka/Formula/
。更改完毕后,经过git提交至本身的github便可。
git add sweather.rb
git commit -m 'add new formula sweather'
git push origin
复制代码
提交完毕后咱们执行 brew update
来更新仓库。 而后执行
brew search sweather # 搜索包
brew info sweather # 显示包的信息
brew install sweather # 安装包
复制代码
因为安装时依赖了cmake,因此会自动先下载安装cmake(我已安装好),而后下载sweather安装。 此时你就能够在命令行查看天气了:
sweather -v # 查看当前版本
sweather -setloc liangxi #设置天气地址为梁溪-无锡
sweather -now #查看如今天气
sweather #查看三天的天气
复制代码