Недавно я начал получать следующую ошибку при обновлении своих бочек:
Error: Cask 'java' definition is invalid: Token '{:v1=>"java"}' in header line does not match the file name.
У меня 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)
Вот результат 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>'
и вывод brew tap:
beeftornado/rmtree
heroku/brew
homebrew/cask
homebrew/core
homebrew/services
Вот вывод 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)
Я искал, но не могу найти способ исправить это. Какие-либо предложения?
К сожалению нет :(
Я побежал brew update; brew upgrade; brew cask upgrade; brew cleanup;
Может быть что-то похожее на эту проблему? -- github.com/Homebrew/homebrew-cask/issues/53079
В этом потоке говорится удалить и переустановить Homebrew. Это может быть проблематично, так как я бы удалил ВСЕ установленные пакеты вместе с Homebrew. Это довольно драматический способ решить ошибку, которую я получаю нет?
Я надеялся, что вы обновите свой вопрос выводом команд, чтобы нам было легче решить проблему.
@AshwanthKumar готово
А как насчет brew doctor?
@OrtomalaLokni теперь также добавил вывод этой команды. Спасибо





Решается следующим образом:
vim /usr/local/Caskroom/java/.metadata/1.8.0_51-b16/20150725210402.758/Casks/java.rb
cask :v1 => 'java' do
к
cask 'java' do
Удалены комментарии undent в конце бочки, которые доставляли мне проблемы.
Побежал brew uninstall --cask java
Проблема решена ?
Если бы я мог проголосовать за этот ответ пятьдесят раз, я бы это сделал! Я боролся со сломанной установкой Java, буквально, годами. Я сделал еще один шаг, который заключался в том, чтобы выполнить «деинсталляцию варочной бочки --force java».
Любая идея, что вызывает эту проблему, чтобы начать с?
Шаг 3 был шагом, который решил проблему для меня.
Это было действительно полезно. Что все делают после, удаляя java? Вы снова устанавливаете через homebrew или проходите через родную установку OSX? Согласно моим заметкам, я установил Java через brew cask после обновления до Yosemite 5 лет назад. Но я не помню, почему я его установил.
Спасибо! Для будущих искателей: мне также пришлось закомментировать строку, читающую license :gratis, чтобы заставить ее работать. Мне пришлось нет изменить комментарий undent в конце бочки.
применил те же инструкции, чтобы удалить старую версию прошивки, и это сработало! Спасибо!
Мне также пришлось удалить два блока, содержащих if MacOS.release <= :mavericks, из-за Error: Cask 'java' is unreadable: undefined method release' для OS::Mac:Module`
Шаг 4 теперь: brew uninstall --cask java
Я использовал это решение для аналогичной ошибки, но для виртуального бокса: Ошибка: определение 'виртуального бокса' недопустимо: токен '{:v1=>"virtualbox"}' в строке заголовка не соответствует имени файла. Бесконечно благодарен!
Вы можете очистить формулы бочек старого стиля следующим образом:
grep "cask :v1 =>" --files-with-match /usr/local/Caskroom/*/.metadata/*/*/Casks/*.rb \
| xargs gdirname | xargs gdirname | xargs rm -r
Предполагая, что вы установили coreutils с префиксом g, поэтому gdirname запускает разновидность GNU dirname
Спасибо, это спасло меня от Cask 'virtualbox' definition is invalid: Token '{:v1=>"virtualbox"}' in header line does not match the file name.
Бег
brew updateрешает проблему?