自制:木桶“java”定义无效

Dan*_*G2k 17 homebrew homebrew-cask

最近更新我的木桶时,我开始收到以下错误:

Error: Cask 'java' definition is invalid: Token '{:v1=>"java"}' in header line does not match the file name.
Run Code Online (Sandbox Code Playgroud)

我在 MacOS 10.14.4 和我的 Homebrew 版本上:

? brew --version
Homebrew 2.1.2
Homebrew/homebrew-core (git revision 6811d1; last commit 2019-05-11)
Homebrew/homebrew-cask (git revision ba4e3; last commit 2019-05-11)
Run Code Online (Sandbox Code Playgroud)

这是输出brew cask upgrade --verbose --debug

Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> Updated Formulae
angular-cli          atlassian-cli        libpqxx              terraforming
app-engine-python    elasticsearch        osm2pgrouting
asciidoctorj         jenkins-lts          postgresql

==> Casks with `auto_updates` or `version :latest` will not be upgraded
==> Upgrading 1 outdated package:
Error: Cask 'java' definition is invalid: Token '{:v1=>"java"}' in header line does not match the file name.
/usr/local/Homebrew/Library/Homebrew/cask/cask_loader.rb:73:in `cask'
/usr/local/Caskroom/java/.metadata/1.8.0_51-b16/20150725210402.758/Casks/java.rb:1:in `load'
/usr/local/Homebrew/Library/Homebrew/cask/cask_loader.rb:62:in `instance_eval'
/usr/local/Homebrew/Library/Homebrew/cask/cask_loader.rb:62:in `load'
/usr/local/Homebrew/Library/Homebrew/cask/cask_loader.rb:178:in `load'
/usr/local/Homebrew/Library/Homebrew/cask/cmd/upgrade.rb:39:in `block in run'
/usr/local/Homebrew/Library/Homebrew/cask/cmd/upgrade.rb:37:in `each'
/usr/local/Homebrew/Library/Homebrew/cask/cmd/upgrade.rb:37:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/cmd/abstract_command.rb:36:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/cmd.rb:92:in `run_command'
/usr/local/Homebrew/Library/Homebrew/cask/cmd.rb:158:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/cmd.rb:123:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:9:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:102:in `<main>'
Error: Kernel.exit
/usr/local/Homebrew/Library/Homebrew/cask/cmd.rb:162:in `exit'
/usr/local/Homebrew/Library/Homebrew/cask/cmd.rb:162:in `rescue in run'
/usr/local/Homebrew/Library/Homebrew/cask/cmd.rb:146:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/cmd.rb:123:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:9:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:102:in `<main>'
Run Code Online (Sandbox Code Playgroud)

和输出brew tap

beeftornado/rmtree
heroku/brew
homebrew/cask
homebrew/core
homebrew/services
Run Code Online (Sandbox Code Playgroud)

这是brew doctor如果有帮助的输出:

? brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and which additional flags to use when
compiling and linking.

Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew-provided
script of the same name. We found the following "config" scripts:
  /Users/myUser/anaconda3/bin/icu-config
  /Users/myUser/anaconda3/bin/krb5-config
  /Users/myUser/anaconda3/bin/freetype-config
  /Users/myUser/anaconda3/bin/xslt-config
  /Users/myUser/anaconda3/bin/libpng16-config
  /Users/myUser/anaconda3/bin/python3.6m-config
  /Users/myUser/anaconda3/bin/libpng-config
  /Users/myUser/anaconda3/bin/xml2-config
  /Users/myUser/anaconda3/bin/python3-config
  /Users/myUser/anaconda3/bin/curl-config
  /Users/myUser/anaconda3/bin/ncursesw6-config
  /Users/myUser/anaconda3/bin/pcre-config
  /Users/myUser/anaconda3/bin/python3.6-config
  /Applications/Postgres.app/Contents/Versions/9.4/bin/gdal-config

Warning: Some installed formulae are not readable:
  dotwrp: Unsupported special dependency :fortran
(base)
Run Code Online (Sandbox Code Playgroud)

我已经搜索过,但似乎无法找到解决此问题的方法。有什么建议?

Dan*_*G2k 50

通过执行以下操作解决:

  1. 编辑了 java 桶:
vim /usr/local/Caskroom/java/.metadata/1.8.0_51-b16/20150725210402.758/Casks/java.rb
Run Code Online (Sandbox Code Playgroud)
  1. 将第一行从:

cask :v1 => 'java' do

cask 'java' do

  1. 删除了undent木桶末尾的评论,这些评论给我带来了问题。

  2. brew cask uninstall java

问题解决了

  • 如果我可以对这个答案投五十票,我会的!从字面上看,我多年来一直在与损坏的 java 安装作斗争。我又做了一步,那就是执行“brew cask uninstall --force java”。 (2认同)
  • 我还必须删除包含“if MacOS.release &lt;= :mavericks”的两个块,因为“错误:Cask 'java'不可读:未定义方法'release' for OS::Mac:Module' (2认同)
  • 现在第 4 步是:`brew uninstall --cask java` (2认同)

Geo*_*lly 8

您可以这样清理旧式木桶配方:

grep "cask :v1 =>" --files-with-match /usr/local/Caskroom/*/.metadata/*/*/Casks/*.rb \
  | xargs gdirname | xargs gdirname | xargs rm -r
Run Code Online (Sandbox Code Playgroud)

假设您已经安装了带有前缀的coreutilsg,因此gdirname运行 GNU 风格的dirname