美文网首页
使用HomeBrew发布脚本

使用HomeBrew发布脚本

作者: 一本大书 | 来源:发表于2019-03-14 14:41 被阅读0次

    相关概念

    • Keg(酒桶):安装好的脚本、软件等;
    • Cellar(酒窖):所有用 Homebrew 安装在本地的脚本、软件组成的集合;
    • Formula(配方):定义如何下载、编译和安装脚本或软件的 Ruby 脚本;
    • Tap:一个包含若干 Formula 的 GitHub 专案。

    其中最需要注意的是Formula(配方),它就像是一个 “药方”,记录这几种药品需要在哪些地方采摘,只有正确的药方才能保证 “药到病除” !

    // tip:可以通过指令查看本地目前都安装了哪些脚本。
    open /usr/local/Cellar/
    

    brew有自己的Taps,这里管理着brew官方的仓库,仓库里放着官方认证过的“药方”。

    // 使用一下指令查看官方配方
    open /usr/local/Homebrew/Library/Taps
    
    本地的配方仓

    当然,本文的内容不是教大家制作一个能经得起官方认证的脚本。既然加盟很难,那不如自己打造一个品牌?


    创建自己的Formula仓库

    在git上创建自己的仓库,创建仓库的命名方式必须是以 homebrew-<demo> 的规则命名,否则在后续安装脚本的过程中会遇到些不可描述的坑。我创建的仓库如下:https://github.com/Linzehua2015/homebrew-hello.git
    接下来我们通过 brew tap 指令将刚创建的仓库拉到本地(将店面开在homebrew旁边)。

    // 在执行这个命令的时候,brew会自动去更新自己的formula仓库,会耗时几分钟。。。
    brew tap Linzehua2015/hello https://github.com/Linzehua2015/homebrew-hello.git
    
    brew tap <tap-name> <git-url> 拉取仓库成功

    我们可以看到本地有个隐藏的.git文件,所以实际上brew tap也是基于git来完成拉取仓库的操作。现在“店面”开好了,但是仓库下还没有布置“药方”,接下来我们原创个“药方”。


    编写自己的配方

    编写配方之前,我们需要先制作一个简单可执行的文件(脚本),供配方软连接到这个脚本。
    我们编写一个简单的.sh脚本,输出你输入的内容。

    #!/bin/bash
    echo 您刚才输入的内容是: $1
    

    然后执行指令,将其转为可执行文件。

    mv hello.sh hello
    
    可执行文件

    将可执行文件打包成 tar.gz 的格式。

    // tar zcvf FileName.tar.gz DirName
    tar zcvf hello_0.0.1.tar.gz hello
    

    将这个可执行文件上传到git。

    打包脚本

    上传到git,供配方软连接到这个脚本文件。
    https://github.com/Linzehua2015/homebrew-hello/raw/master/hello_0.0.1.tar.gz
    使用 tap create <git-url> 创建药方。

    brew create https://github.com/Linzehua2015/homebrew-hello/raw/master/hello_0.0.1.tar.gz
    

    注意,这里因为我没有更改brew的镜像源,所以创建成功后文件会出现在/Taps/homebrew/homebrew-core/Formula/hello.rb我们可以手动将这个 hello.rb 文件剪切到自己的Formula文件夹下/Taps/linzehua2015/homebrew-hello/Formula/hello.rb。


    image.png

    hello.rb 文件内容如下:

    # Documentation: https://docs.brew.sh/Formula-Cookbook
    #                https://www.rubydoc.info/github/Homebrew/brew/master/Formula
    # PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!
    class Hello < Formula
      desc ""
      homepage ""
      url "https://github.com/Linzehua2015/homebrew-hello/raw/master/hello_0.0.1.tar.gz"
      sha256 "535d9625bf0ca15fac1c6fb975b26eaa347f09b277933cca01e60f637030fc46"
      # depends_on "cmake" => :build
    
      def install
        # ENV.deparallelize  # if your formula fails when building in parallel
        # Remove unrecognized options if warned by configure
        system "./configure", "--disable-debug",
                              "--disable-dependency-tracking",
                              "--disable-silent-rules",
                              "--prefix=#{prefix}"
        # system "cmake", ".", *std_cmake_args
        system "make", "install" # if this fails, try separate make/make install steps
      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 hello`. 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
    

    需要注意的信息有几个 desc、homepage、url、sha256 ,其中sha256是对url下载的文件的校验,可以通过 openssl sha256 <file> 获取本地文件的校验码。

    我们需要对安装方式做一下调整
    调整如下:

    def install
        bin.install "hello"
    end
    

    做完这些操作后,保存,提交到git上。

    安装hello脚本

    brew install Linzehua2015/hello/hello
    
    安装hello脚本成功

    可以看出我们的脚本装到了/usr/local/Cellar这个路径下。

    open /usr/local/Cellar
    
    image.png

    Cellar存放着被成功下载并安装在本地的脚本,接下来你就可以使用指令 hello 来执行脚本啦!!

    image.png

    如何在其他人的设备安装自己的脚本

    只需要2个步骤:

    // 在执行这个命令的时候,brew会自动去更新自己的formula仓库,会耗时几分钟。。。
    brew tap Linzehua2015/hello https://github.com/Linzehua2015/homebrew-hello.git
    // 下载、安装 hello 脚本
    brew install Linzehua2015/hello/hello
    

    参考文档

    HomeBrew官网
    HomeBrew常规使用教程

    相关文章

      网友评论

          本文标题:使用HomeBrew发布脚本

          本文链接:https://www.haomeiwen.com/subject/cggfmqtx.html