Homebrew 基本了解

Homebrew是macOS(或者 linux)缺失的软件包管理器。常用安装命令行工具(也可安装 GUI 程序),非常便利。

Homebrew 支持多种形式的软件包管理,常见的有 Formula 和 Cask 两种。Formula 一般用来源码编译安装开源的命令行工具(mysql 、 tomcat 等),Cask 一般用来安装支持UI的应用程序(比如 微信 qq 某些插件)

创建一个 Cask

注意,如果你的软件在 github star小于75 一般会被拒绝合并到主分支。

在保证自己具备正确的 hombre cask 环境之后。

以下以 swiftjsonmodeler为示例

创建一个 Cask

brew cask create swiftjsonmodeler

就会为你创建一个 .rb 文件,如下

cask "swiftjsonmodeler" doversion ""sha256 ""url "https://"name ""desc ""homepage ""app ""
end

你可以使用 vim或者其他编辑工具编辑。

属性 简介
version 应用版本号,可以使用 :latest(但是基于 github release 的不知道怎么弄)
sha256 下载文件 sha256加密密钥(用于文件验证)。可以使用 :no_check来避免添加(但是如果你合并主仓库时必须有)
url 应用下载地址
appcast 注意这个需要手动添加,好像大部分时候都需要,介绍
app 应用名字,注意是解压后的。也可以更改名字

根据项目配置后

cask "swiftjsonmodeler" doversion "2.0.0"sha256 :no_checkurl "https://github.com/CodeOcenS/SwiftJSONModeler/releases/download/v#{version}/SwiftJSONModeler.For.Xcode.app.zip"appcast "https://github.com/CodeOcenS/SwiftJSONModeler/releases.atom"name "SwiftJSONModeler"desc "json 转 swift model 插件"homepage "https://github.com/CodeOcenS/SwiftJSONModeler"app "SwiftJSONModeler For Xcode.app"end

验证配置

验证命令如下:

brew cask  audit swiftjsonmodeler

如果看见 pass 就代表文件基本可以,如果失败,则可根据提示修正。

测试你的 Cask

在提交你的 cask 之前,你应该自己测试下,安装、删除、下载是否成功。

以下命令可以避免 brew 远程更新

export HOMEBREW_NO_AUTO_UPDATE=1

安装

brew cask install swiftjsonmodeler

卸载

brew cask uninstall swiftjsonmodeler

下载验证

brew cask audit swiftjsonmodeler --download

你还应该测试 style

brew cask style --fix my-new-cask

合并主分支

首先在自己的 github中 fork 一份主分支Homebrew-cask githhub 然后本地 checkout 一份自己的分支,添加新建的 cask, 将自己分支远程修改为 fork 地址,之后推动本地分支。 在 github 上提交 pull request 等待成员管理回复。

问题处理

  1. 未添加 appcast
audit for swiftjsonmodeler: warning- Download uses GitHub releases, please add an appcast. See https://github.com/Homebrew/homebrew-cask/blob/HEAD/doc/cask_language_reference/stanzas/appcast.md
Error: audit failed for casks: swiftjsonmodeler

由于我是采用 realse发布, 所有需要配置 appcast,可以参考它的链接中提到的 rb 文件来配置。

  1. url 地址错误
Error: Cask 'swiftjsonmodeler' definition is invalid: 'url' stanza failed with: bad URI(is not URI?): "https://github.com/CodeOcenS/SwiftJSONModeler/releases/download/v{version}/SwiftJSONModeler.For.Xcode.app.zip"

修正后的 url

https://github.com/CodeOcenS/SwiftJSONModeler/releases/download/v#{version}/SwiftJSONModeler.For.Xcode.app.zip
  1. 测试安装找不到应用
It seems the App source '/usr/local/Caskroom/swiftjsonmodeler/2.0.0/SwiftJSONModeler.app' is not there.

在进行基本配置后,验证也通过。但是安装总是提示我的应用找不到。

经过多次测试,发现是 app 名称填写错误。 这个名称需要和你下载路径文件解压后的名称一致,否则找不到。

参考

Homebrew官网

Homebrew github 仓库 22.8k Star

Homebrew-cask githhub

Homebrew-cask 贡献一个 Cask 文档 包含添加、更新、设置一个 Cask

Homebrew-cask appcast相关

Homebrew 官方添加一个 Cask 完整教程

Homebrew creat 一个 cask rb文件示例 基于应用包发布在 github 上的如何配置 rb 文件(需要增加 appcast 部分)

Mac OS 下用 Homebrew 安装自己写的开源工具 介绍命令式应用在 home brew发布

Homebrew 安装和常用命令

在Homebrew 发布程序相关推荐

  1. 白月黑羽教python excel_发布程序

    正式发布程序 前面,我们开发好了一个HTTP协议测试程序,但是这个程序是Python程序,运行它需要Python解释器. 如果我们要发布程序给客户使用,当然不能要求别人去安装Python解释器,并且敲 ...

  2. 多线程端点服务发布程序(摘)

    多线程端点服务发布程序 摘自:JAVA WEB服务:构建与运行 任增刚 <Java Web服务:构建与运行>以示例驱动的方式详尽地介绍了XML Web服务和RESTful Web服务所涵盖 ...

  3. QT编译发布程序后报错如缺少dll、“应用程序无法正常启动(0xc000007b)”的可能解决方法

    QT编译发布程序后报错如缺少dll."应用程序无法正常启动(0xc000007b)"的可能解决方法 参考文章: (1)QT编译发布程序后报错如缺少dll."应用程序无法正 ...

  4. Python 程序扩展名(py, pyc, pyw, pyo, pyd) 及发布程序时的选择

    参考文章:Python 程序扩展名(py, pyc, pyw, pyo, pyd)及发布程序时的选择

  5. 如何联机调试和发布程序(99$)

    转 "http://www.cocoachina.com/bbs/read.php?tid-7923-keyword-99%24.html" 这两天公司让整理文档,一直想写一篇更详 ...

  6. 详解Xcode 4发布程序图文并茂教程

    详解Xcode 4发布程序图文并茂教程 2011-08-09 16:47 佚名  本文介绍的是详解Xcode 4发布程序图文并茂教程,通过图文的方式来介绍本文的内容,直接来看详细内容. AD: Xco ...

  7. Qt5制作icon图标文件和发布程序简易介绍

    制作icon图标文件 1.制作icon图标文件 可以进入这个网站在线制作:http://www.ico.la/ 2.创建资源文件:qrc文件 接着 先添加前缀,然后添加文件 最终结果: 3.可以用te ...

  8. python程序的扩展名是perl程序的扩展名是_Python 程序扩展名(py, pyc, pyw, pyo, pyd)及发布程序时的选择...

    扩展名 在写Python程序时我们常见的扩展名是py, pyc,其实还有其他几种扩展名.下面是几种扩展名的用法. py py就是最基本的源码扩展名.windows下直接双击运行会调用python.ex ...

  9. fastposter v2.6.2 发布 程序员专属海报生成器

    fastposter v2.6.2 发布 程序员专属海报生成器

最新文章

  1. 如流智会2021:技术结合场景 让企业知识懂员工
  2. mysql分库分表分页查询语句_MySQL分库分表分库后的查询(8th)
  3. 根据之前发的那SQL语句查询表结构的语句做了个MSSQL实体类生成器!
  4. 【极客blog图文讲解】ruby以及Jekyll的环境配置(针对mac linux)
  5. 四月森林火灾地震频发,感恩奋战在一线的最可爱的人
  6. php upw5.5,UPW
  7. Leetcode--221.最大正方形
  8. split函数python统计英文单词_统计一篇英文文章单词个数,取出出现频次前10的单词(Python实现)...
  9. thrift使用传输协议TCompactProtocol - xiaoshe的专栏 - 博客频道 - CSDN.NET
  10. 新房装修,家里WiFi怎么弄?
  11. 0基础学python有多难-0基础学Python有多难?
  12. python爬虫实例100例-Python 练习实例1
  13. Gym - 100623J Just Too Lucky (数位dp)
  14. Rust : CTP 中异步处理
  15. .net分层架构思想(彻底分离每个层)
  16. 游戏设计的236个技巧++游戏机制、关卡设计和镜头窍门pdf
  17. 项目使用mybatis-plus采用mysql/clickhouse多数据库配置,报错Invalid bound statement (not found)
  18. web请求报出 “超过了最大请求长度”
  19. C专家编程 第6章 运动的诗章:运行时数据结构 6.3 操作系统在a.out文件里干了些什么
  20. TexturePacker 图集生成工具

热门文章

  1. oracle 截取字符串中指定位置_手撕虚拟内存(1)——字符串在虚拟内存中的段位置与/proc虚拟文件系统...
  2. SpringBoot2.XX 产生的问题
  3. 浅谈Linux的内存管理机制
  4. 说说项目从0-1过程中的那点事儿
  5. 虚拟化对VMcpu分配的理解
  6. windows下wchar_t* 转char*
  7. 体绘制(Volume Rendering)概述之4:光线投射算法(Ray Casting)实现流程和代码(基于CPU的实现)...
  8. MFC的进程和线程,非正常终止
  9. windows-台式机添加硬盘后如何加载、格式化新的分区
  10. margin折叠问题