【homebrew 系列文章】
- HomeBrew常規使用教程
- Homebrew進階使用教程(一)
- Homebrew進階使用教程(二)-用一個命令列天氣客戶端構建自己的倉庫
- Homebrew進階使用教程(三)-apue.h在mac下安裝並使用連線
我的github地址:github地址:https://github.com/rangaofei/homebrew-saka
軟體執行
這裡容我先裝個逼,推廣一下自己的倉庫,雖然只有兩個包: github地址
- 安裝saka倉庫
brew tap rangaofei/saka
複製程式碼
2.安裝軟體
brew install sweather
複製程式碼
3.執行軟體
sweather -v
----顯示軟體版本
sweather -setloc liangxi
----設定天氣地址為無錫樑溪區
由於此處設定的是liangxi,地址庫中搜尋到的匹配地址只有無錫的樑溪區,所以自動設定為無錫樑溪區。
假如查詢的時候有多個地址供選擇,則如下所示:
此處我選擇9:
選取完畢後輸入查詢命令,三天天氣
sweather
複製程式碼
歡迎各位大佬使用,同時假如有自己要釋出的庫可以直接留言,大佬如果允許的話我幫助各位編寫好ruby指令碼釋出到該倉庫,供所有人使用。
homebrew的倉庫
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
可以設定為任意自己喜歡的名字。 這是我的倉庫的名稱: - 建立一個Formula資料夾,用來存放安裝指令碼,裡邊的檔名稱就是你在brew install 時候的名稱。
-
命令
- brew tap
brew tap <user/repo>
將你自己的倉庫clone到本地Tap資料夾下,你可以通過brew [un]install來管理你的倉庫中的軟體的安裝與解除安裝。當你使用brew update時,也會更新自己倉庫中的包安裝檔案。
例如上面的我的倉庫homebrew-saka
,我的使用者名稱是rangaofei
,則我可以使用 brew tap rangaofei/saka,來增加我自己的倉庫:
如上圖所示,我的倉庫已經新增進來了。
brew tap <user/repo>
通過url將其他非github的倉庫新增進來,這個地址可以不是http協議,只要支援git協議即可。此處不演示。
brew untap user/repo
刪除已增加的倉庫,同時在該倉庫下的軟體也都能再使用。
brew tap-pin user/repo
將指定倉庫標記為包首選搜尋倉庫。
brew tap-unpin user/repo
取消指定倉庫的包首選搜尋。
名字重複的包
假如自己的倉庫中有和homebrew-core倉庫中名字相同的包,當然可以。
當使用brew_install
命令時brew會有一個預設的搜尋順序:
- pinned taps(標記的倉庫)
- core formulae(核心倉庫)
- other taps(其他倉庫)
也就是說假如我們給任何倉庫一個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)
複製程式碼
- 建立formula 執行命令列
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 #檢視三天的天氣
複製程式碼