Homebrew / homebrew-cask

🍻 A CLI workflow for the administration of macOS applications distributed as binaries
https://brew.sh
BSD 2-Clause "Simplified" License
20.92k stars 10.71k forks source link

/usr/bin/xattr do not support -s option in macOS 10.15 #70603

Closed ytqh closed 5 years ago

ytqh commented 5 years ago

General troubleshooting steps

Description of issue

Can not install/upgrade any casks due to the Error: Failed to quarantine one or more files within ...

Command that failed

brew cask install parallels --force --verbose --debug

Output of command with --force --verbose --debug

Updating Homebrew...
==> Cask::Installer#install
==> Printing caveats
==> Cask::Installer#fetch
==> Satisfying dependencies
==> Downloading
==> Downloading https://download.parallels.com/desktop/v15/15.0.0-46967/ParallelsDesktop-15.0.0-46967.dmg
/usr/bin/curl -q --globoff --show-error --user-agent Homebrew/2.1.13-45-g70f232a\ \(Macintosh\;\ Intel\ Mac\ OS\ X\ 10.15\)\ curl/7.64.1 --location --silent --head --request GET https://download.parallels.com/desktop/v15/15.0.0-46967/ParallelsDesktop-15.0.0-46967.dmg
Already downloaded: /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg
==> Checking quarantine support
/usr/bin/xattr
/usr/bin/swift /usr/local/Homebrew/Library/Homebrew/cask/utils/quarantine.swift
==> Quarantine is available.
==> Verifying Gatekeeper status of /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg
/usr/bin/xattr -p com.apple.quarantine /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg
==> /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg is quarantined
==> Downloaded to -> /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg
==> Verifying SHA-256 checksum for Cask 'parallels'.
==> Installing Cask parallels
==> Cask::Installer#stage
==> Extracting primary container
==> Using container class UnpackStrategy::Uncompressed for /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg
cp -p /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg /usr/local/Caskroom/parallels/15.0.0-46967/ParallelsDesktop-15.0.0-46967.dmg
==> Verifying Gatekeeper status of /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg
/usr/bin/xattr -p com.apple.quarantine /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg
==> /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg is quarantined
==> Propagating quarantine from /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg to /usr/local/Caskroom/parallels/15.0.0-46967
/usr/bin/xattr -p com.apple.quarantine /Users/yutian/Library/Caches/Homebrew/downloads/c81c625057e9363bbcf8f17cbcc97cadf5457f744564e5416d6b331c94f02bfd--ParallelsDesktop-15.0.0-46967.dmg
/usr/bin/xargs -0 -- /bin/chmod -h u\+w
/usr/bin/xargs -0 -- /usr/bin/xattr -w -s com.apple.quarantine 0181\;5da04651\;Homebrew\\x20Cask\;BED909F6-D617-4CE3-B0BC-50D92E55A025
==> Purging files for version 15.0.0-46967 of Cask parallels
Error: Failed to quarantine one or more files within /usr/local/Caskroom/parallels/15.0.0-46967.
/usr/local/Homebrew/Library/Homebrew/cask/quarantine.rb:166:in `propagate'
/usr/local/Homebrew/Library/Homebrew/cask/installer.rb:195:in `extract_primary_container'
/usr/local/Homebrew/Library/Homebrew/cask/installer.rb:77:in `stage'
/usr/local/Homebrew/Library/Homebrew/cask/installer.rb:99:in `install'
/usr/local/Homebrew/Library/Homebrew/cask/cmd/install.rb:23:in `block in run'
/usr/local/Homebrew/Library/Homebrew/cask/cmd/install.rb:16:in `each'
/usr/local/Homebrew/Library/Homebrew/cask/cmd/install.rb:16: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>'
FAIL: 1

Output of brew cask doctor

==> Homebrew Version
2.1.13-45-g70f232a
==> macOS
10.15
==> SIP
Enabled
==> Java
1.8.0_181
==> xattr issues
<NONE>
==> Gatekeeper support
Enabled
==> Homebrew Cask Install Location
<NONE>
==> Homebrew Cask Staging Location
/usr/local/Caskroom
==> Homebrew Cask Taps:
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask (3470 casks)
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask-versions (163 casks)
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask-fonts (934 casks)
==> Contents of $LOAD_PATH
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/ruby-macho-2.2.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rubocop-rspec-1.36.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rubocop-performance-1.5.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rubocop-0.75.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/unicode-display_width-1.6.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rspec-wait-0.0.9/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rspec-retry-0.6.1/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rspec-its-1.3.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rspec-3.9.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rspec-mocks-3.9.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rspec-expectations-3.9.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rspec-core-3.9.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rspec-support-3.9.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/ronn-0.7.3/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rdiscount-2.2.0.1/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/extensions/x86_64-darwin-13/2.6.0-static/rdiscount-2.2.0.1
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/rainbow-3.0.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/plist-3.5.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/parser-2.6.5.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/parallel_tests-2.29.2/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/parallel-1.18.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/mustache-1.1.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/mechanize-2.7.6/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/webrobots-0.1.2/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/ntlm-http-0.1.1/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/nokogiri-1.10.4/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/extensions/x86_64-darwin-13/2.6.0-static/nokogiri-1.10.4
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/mini_portile2-2.4.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/net-http-persistent-3.1.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/net-http-digest_auth-1.4.1/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/mime-types-3.3/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/mime-types-data-3.2019.1009/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/jaro_winkler-1.5.3/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/extensions/x86_64-darwin-13/2.6.0-static/jaro_winkler-1.5.3
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/http-cookie-1.0.3/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/hpricot-0.8.6/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/extensions/x86_64-darwin-13/2.6.0-static/hpricot-0.8.6
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/domain_name-0.5.20190701/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/unf-0.1.4/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/unf_ext-0.0.7.6/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/extensions/x86_64-darwin-13/2.6.0-static/unf_ext-0.0.7.6
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/diff-lcs-1.3/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/coveralls-0.8.23/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/thor-0.20.3/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/term-ansicolor-1.7.1/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/tins-1.21.1/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/simplecov-0.16.1/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/simplecov-html-0.10.2/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/docile-1.3.2/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/json-2.2.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/extensions/x86_64-darwin-13/2.6.0-static/json-2.2.0
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/connection_pool-2.2.2/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/ast-2.4.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/activesupport-5.2.3/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/tzinfo-1.2.5/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/thread_safe-0.3.6/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/minitest-5.12.2/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/i18n-1.7.0/lib
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/bundler/../ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib
/Library/Ruby/Site/2.6.0
/Library/Ruby/Site/2.6.0/x86_64-darwin19
/Library/Ruby/Site/2.6.0/universal-darwin19
/Library/Ruby/Site
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/vendor_ruby/2.6.0
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/vendor_ruby/2.6.0/x86_64-darwin19
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/vendor_ruby/2.6.0/universal-darwin19
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/vendor_ruby
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/x86_64-darwin19
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/universal-darwin19
/usr/local/Homebrew/Library/Homebrew
==> Environment Variables
LC_ALL="en_US.UTF-8"
PATH="/usr/local/Homebrew/Library/Homebrew/shims/scm:/usr/bin:/bin:/usr/sbin:/sbin"
SHELL="/usr/local/bin/zsh"

Output of brew tap

buo/cask-upgrade
focusaurus/shfmt
homebrew/bundle
homebrew/cask
homebrew/cask-fonts
homebrew/cask-versions
homebrew/core
homebrew/services
neovim/neovim
rcmdnk/file
v2ray/v2ray

Output of `/usr/bin/xattr -s'

option -s not recognized

usage: xattr [-lz] file [file ...]
       xattr -p [-lz] attr_name file [file ...]
       xattr -w [-z] attr_name attr_value file [file ...]
       xattr -d attr_name file [file ...]

The first form lists the names of all xattrs on the given file(s).
The second form (-p) prints the value of the xattr attr_name.
The third form (-w) sets the value of the xattr attr_name to attr_value.
The fourth form (-d) deletes the xattr attr_name.

options:
  -h: print this help
  -l: print long format (attr_name: attr_value)
  -z: compress or decompress (if compressed) attribute value in zip format
FAIL: 64
ytqh commented 5 years ago

Maybe similar to #51538

ytqh commented 5 years ago

Output of vim /usr/bin/xattr

#!/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
import sys
sys.argv[0] = sys.argv[0].replace('-2.7', '')
# EASY-INSTALL-ENTRY-SCRIPT: 'xattr==0.6.4','console_scripts','xattr'
__requires__ = 'xattr==0.6.4'
import re
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(
        load_entry_point('xattr==0.6.4', 'console_scripts', 'xattr')()
    )

Because of SIP, I can't upgrade xattr with /usr/bin/python -m pip install xattr --upgrade I'm wondering if we can just remove the -s option of /usr/bin/xattr

Currently I add export HOMEBREW_CASK_OPTS="--no-quarantine as a workround

amyspark commented 5 years ago

I think this is way beyond overkill, but we should think of bundling our own xattr helper. (Probably in Swift.)

amyspark commented 5 years ago

Closed by Homebrew/brew#6581