Homebrew進階使用教程(二)-用一個命令行天氣客戶端構建本身的倉庫

【homebrew 系列文章】html

  1. HomeBrew常規使用教程
  2. Homebrew進階使用教程(一)
  3. Homebrew進階使用教程(二)-用一個命令行天氣客戶端構建本身的倉庫
  4. Homebrew進階使用教程(三)-apue.h在mac下安裝並使用鏈接

個人github地址:github地址:https://github.com/rangaofei/homebrew-sakagit

軟件運行

這裏容我先裝個逼,推廣一下本身的倉庫,雖然只有兩個包: github地址github

  1. 安裝saka倉庫
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腳本發佈到該倉庫,供全部人使用。

homebrew的倉庫

brew會提供一個官方的倉庫,homebrew-coregithub地址

homebrew安裝完畢後這個倉庫自動加載到usr/local/Homerew/Library/Taps/文件夾下,這是一個git管理的地址,意味着咱們能夠提交本身的pullrequest到該倉庫。

重點關注一下homebrew-core/Formula/,該文件夾下包含咱們全部的倉庫中的軟件安裝腳本,例如curl.rb這個ruby腳本便是安裝curl時須要的腳本。

加入第三方倉庫

此處咱們以本身建立的倉庫爲例講解:

  • 倉庫名稱

brew時以github爲基礎構建的ruby腳本,全部倉庫都集中再github上,全部此處演示的也是構建再github上的倉庫。

  1. 倉庫名稱必須以homebrew-anything格式來命名,homebrew- 前綴是可選的,可是若是不加該前綴,必須使用整個url來安裝,至關麻煩,因此務必加上此前綴。anything能夠設置爲任意本身喜歡的名字。 這是個人倉庫的名稱:
  2. 建立一個Formula文件夾,用來存放安裝腳本,裏邊的文件名稱就是你在brew install 時候的名稱。
  • 命令

  1. 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語法。

  1. 發佈源碼包地址

如今我有一個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)
複製代碼
  1. 建立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 #查看三天的天氣
複製代碼
相關文章
相關標籤/搜索