如何强制自制软件安装本地文件?
How to force homebrew to install a local file?
我尝试 运行:
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
但得到了
curl: (56) Recv failure: Connection reset by peer
因为 http://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz
需要通过 运行s JavaScript 的浏览器下载。无论如何,现在我有了这个文件,我又把它放在 $(brew --cache)
和 运行 brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
中,但它没用。自制软件中是否有强制安装本地 tar.gz 文件或允许 sshpass.rb 以本地文件而不是 url 为目标的命令?
简单的回答:你不能;没有办法做到这一点。
不过您可以自己覆盖缓存下载。不要使用 $(brew --cache)
:这是一般的缓存位置,但 Homebrew 可能会为此公式的缓存下载使用不同的名称。要知道确切的路径,请使用 brew --cache <formula>
:
brew --cache https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
我的 Linuxbrew 安装的示例输出:
/home/me/.cache/Homebrew/downloads/b46bd79ca1d250486d5a0e0fcd455ed1d78eea689cf0612dffcdd7056b153efc--sshpass-1.06.tar.gz
将您下载的文件放在这个确切的位置,并使用这个确切的名称。
Homebrew 仍会尝试向 URL 发出 HEAD
请求以检查其 Last-Modified
header 但如果该请求不成功也不会失败.
现在运行你的命令和以前一样:
$ brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
它应该打印类似“Downloading https://…
”的内容,然后是 Already downloaded: …
。
- 运行
brew install -b <formulae>
- 如果包下载失败,查找缓存位置名称和 url 下载
Downloading https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.31.1.tar.xz
...
/Users/home/Library/Caches/Homebrew/downloads/713e2ded9f716221e9b99f888e7c5e69b927b45d91be630596ea80c93ff5448e--git-2.31.1.tar.xz.
incomplete https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.31.1.tar.xz
curl: (35) SSL peer handshake failed, the server most likely requires a client certificate to connect
注意响应中的 3 件事:
- 缓存文件夹位置:/Users/home/Library/Caches/Homebrew/downloads/
- 缓存文件名:713e2ded9f716221e9b99f888e7c5e69b927b45d91be630596ea80c93ff5448e--git-2.31.1.tar.xz
- 下载url:https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.31.1.tar.xz
访问下载url
下载包
下载后,将文件名准确更改为缓存文件名,并将该文件放在缓存文件夹位置。
运行 brew install again
brew install -b <formulae>
这对我有用!如果您无法使用 brew install
下载多个软件包,您可能需要执行这些步骤几次
我尝试 运行:
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
但得到了
curl: (56) Recv failure: Connection reset by peer
因为 http://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz
需要通过 运行s JavaScript 的浏览器下载。无论如何,现在我有了这个文件,我又把它放在 $(brew --cache)
和 运行 brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
中,但它没用。自制软件中是否有强制安装本地 tar.gz 文件或允许 sshpass.rb 以本地文件而不是 url 为目标的命令?
简单的回答:你不能;没有办法做到这一点。
不过您可以自己覆盖缓存下载。不要使用 $(brew --cache)
:这是一般的缓存位置,但 Homebrew 可能会为此公式的缓存下载使用不同的名称。要知道确切的路径,请使用 brew --cache <formula>
:
brew --cache https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
我的 Linuxbrew 安装的示例输出:
/home/me/.cache/Homebrew/downloads/b46bd79ca1d250486d5a0e0fcd455ed1d78eea689cf0612dffcdd7056b153efc--sshpass-1.06.tar.gz
将您下载的文件放在这个确切的位置,并使用这个确切的名称。
Homebrew 仍会尝试向 URL 发出 HEAD
请求以检查其 Last-Modified
header 但如果该请求不成功也不会失败.
现在运行你的命令和以前一样:
$ brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
它应该打印类似“Downloading https://…
”的内容,然后是 Already downloaded: …
。
- 运行
brew install -b <formulae>
- 如果包下载失败,查找缓存位置名称和 url 下载
Downloading https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.31.1.tar.xz
...
/Users/home/Library/Caches/Homebrew/downloads/713e2ded9f716221e9b99f888e7c5e69b927b45d91be630596ea80c93ff5448e--git-2.31.1.tar.xz.
incomplete https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.31.1.tar.xz
curl: (35) SSL peer handshake failed, the server most likely requires a client certificate to connect
注意响应中的 3 件事:
- 缓存文件夹位置:/Users/home/Library/Caches/Homebrew/downloads/
- 缓存文件名:713e2ded9f716221e9b99f888e7c5e69b927b45d91be630596ea80c93ff5448e--git-2.31.1.tar.xz
- 下载url:https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.31.1.tar.xz
访问下载url
下载包下载后,将文件名准确更改为缓存文件名,并将该文件放在缓存文件夹位置。
运行 brew install again
brew install -b <formulae>
这对我有用!如果您无法使用 brew install
下载多个软件包,您可能需要执行这些步骤几次