【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 #查看三天的天氣
複製代碼