Ruby ghcurl: 从 Github releases 上下载二进制,deb,rpm,zip 等并直接安装

ccmywish · 2022年04月15日 · 最后由 xianyuit 回复于 2022年04月16日 · 195 次阅读

ghcurl

源代码: https://github.com/ccmywish/ghcurl

注意,目前只在 Linux 上运行的效果不错。如果你使用 mac 并对此感兴趣,你可尝试使用它,如果有问题,请反馈或者帮助修改完善它。在 Windows 上实现有点繁琐,目前暂时不打算实现。


为什么?

因为现在用 Rust , Go 等编写的程序实在是太多了,很多命令行程序非常好用,但是,有时因为种种原因,你不能直接通过系统自带的包来安装。

  1. 比如在 Ubuntu, Debian 上,软件更新的太慢
  2. 如果你尝试用 Linuxbrew 首先还要拉 400MB 仓库下来
  3. 还有一些程序,并没有被收录在 Homebrew, scoop 中,有时是长久的不被收录
  4. 你需要极致的最新的版本,或者旧的版本
  5. 你自己写的程序

一旦你发现常用的方式不能安装,你需要做的就是

  1. 查找
  2. 下载
  3. 解压
  4. 放到 path 中

我对此已经感到疲倦,我需要一个傻瓜工具来抚慰我懒惰的灵魂。在此之前,我一直用的是别人写的,比如 fetch,比如 eget. 但是我不喜欢它们的接口,并且它们本身需要被下载,意味着我首先不得不对它们进行一遍上述操作。


安装

gem install ghcurl


使用

使用 ghcurl 非常简单,因为它可以识别你的操作系统和系统结构,默认情况下总是给你最好的下载选项。 更重要的是,您可以通过正则表达式搜索,指定版本,并将其安装到路径或根据环境变量 GHCURL_BIN_PATH 或仅仅 /usr/local/bin . 更有趣的是它能够自动提取 tar/zip 文件,以使安装过程在终端中丝滑的顺利进行。

事情可以变得更简单, 我们认为这些是流行的二进制文件: https://github.com/ibraheemdev/modern-unix

-i 即表示安装

# 知道你想要的是 sharkdp/fd
ghcurl fd -i

# 安装最新的 rbspy 很方便
ghcurl rbspy -i

# 在Linux上非常方便
ghcurl cli -i

下载最新的 deb/rpm 包并安装,注意参数 deb/rpm 只是正则表达式。

ghcurl cli/cli deb -i
ghcurl cli/cli rpm -i

普通的下载

# 下载最新的  rbspy-x86_64-unknown-linux-gnu.tar.gz 到 ~/.cache/ghcurl
ghcurl rbspy/rbspy 'x86_64.*linux'

# 下载 rbspy v 0.11.1 
ghcurl rbspy/rbspy 'x86_64.*linux' -v0.11.1

下载一个二进制文件并安装到任何地方

# 安装二进制到 /usr/local/bin
ghcurl BetaPictoris/timeleft timeleft -i 

# 安装到 ~/tmp/bin
ghcurl BetaPictoris/timeleft timeleft -i ~/tmp/bin

# 重命名为 'gd' 并安装到 /usr/local/bin 
ghcurl dlvhdr/gh-dash linux-amd64 -i -r 'gd'

# 或者
ghcurl dlvhdr/gh-dash linux-amd64 -i ~/tmp/bin -r 'gd'


带着 lib 和 share 的怎么往 bin 里面 install 呢

kowalskidark 回复

我不知道你说的是哪种情况

一. 有 lib 和 share 的,但是不是必须存在。

这种情况,有可能是作者把源代码放进去了,lib 和 share 可能不是必要的。中间会有个步骤,解压缩后,如果多于一个文件,会提示你自己选里面的某个二进制来放到 bin 中。

二. lib 和 share 起关键作用,必须存在的。

这暂时做不到。

因为我目前解决的主要的问题就是 单个二进制。或者有 deb,rpm 的情况。 比如 rbspy,它就是简单的把它打包了成了 tar.gz ,只要解压,里面唯一的那个就是要被放进 bin 里的。

https://github.com/rbspy/rbspy/releases

ccmywish 回复

Linux 软件装点 shared object 到 LD_LIBRARY_PATH 里面挺常见的

厉害厉害,支持

需要 登录 后方可回复, 如果你还没有账号请 注册新账号