@rogerdpack Komentarze mogą zostać usunięte w dowolnym momencie, czy możesz wysłać odpowiedź opisującą nową metodę?
nohillside
Odpowiedzi:
17
To rm -rfnie zapyta, czy jesteś pewien, kiedy usuwasz, więc upewnij się, że cdpolecenie działa, aby wyciągnąć cię z / tmp ( cd /tmpprzenosi cię w bezpieczne miejsce na wypadek, gdybyś skopiował / wkleił wszystko za jednym razem, aby nie usunąć plików z twojego bieżącego katalogu)
Sprawdziłbym, czy cd `brew --prefix`idzie do folderu, w którym nie ma zarejestrowanych normalnych plików git, ponieważ stara / źle działająca konfiguracja może się nie powieść, a usunięcie git ls-filesmoże usunąć coś innego niż resztki naparu.
bmike
Przeczytałem dokumentację, po prostu pomyślałem, że może to być przydatne pytanie, aby poprosić o przyszłe odniesienia. Mam jednak problemy z instrukcjami, które opublikowałem jako osobne pytanie: apple.stackexchange.com/questions/82863/…
Chociaż instalacja HomeBrew jest wyraźnie widoczna na jej pierwszej stronie, szczegóły nie są.
https://brew.sh/
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Przez długi czas bardzo trudno było znaleźć niezawodne odinstalowanie. Teraz, kilka kliknięć dalej w dokumentacji, istnieje teraz oficjalna metoda:
https://docs.brew.sh/FAQ
Aby odinstalować Homebrew, wklej poniższe polecenie w wierszu polecenia.
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
#!/usr/bin/env ruby
#
# Locates and removes Homebrew installation
# http://brew.sh/
#
# Author: Stephen Benner
# https://github.com/SteveBenner
#
require 'optparse'
require 'fileutils'
require 'open3'
$stdout.sync = true
# Default options
options = {
:quiet => false,
:verbose => true,
:dry_run => false,
:force => false,
:find_path => false
}
optparser = OptionParser.new do |opts|
opts.on('-q', '--quiet', 'Quiet mode - suppress output.') do |setting|
options[:quiet] = setting
options[:verbose] = false
end
opts.on('-v', '--verbose', 'Verbose mode - print all operations.') { |setting| options[:verbose] = setting }
opts.on('-d', '--dry', 'Dry run - print results, but perform no actual operations.') do |setting|
options[:dry_run] = setting
end
opts.on('-f', '--force', 'Forces removal of files, bypassing prompt. USE WITH CAUTION.') do |setting|
options[:force] = setting
end
opts.on('-p', '--find-path', 'Output homebrew location if found, then exit.') do |setting|
options[:find_path] = setting
options[:quiet] = true
end
opts.on('-h', '--help', '--usage', 'Display usage info and quit.') { puts opts; exit }
end
optparser.parse!
$quiet = options[:quiet] # provides access to option value within methods
# Files installed into the Homebrew repository
BREW_LOCAL_FILES = %w[
.git
Cellar
Library/brew.rb
Library/Homebrew
Library/Aliases
Library/Formula
Library/Contributions
Library/LinkedKegs
]
# Files that Homebrew installs into other system locations
BREW_SYSTEM_FILES = %W[
#{ENV['HOME']}/Library/Caches/Homebrew
#{ENV['HOME']}/Library/Logs/Homebrew
/Library/Caches/Homebrew
]
$files = []
# This function runs given command in a sub-shell, expecting the output to be the
# path of a Homebrew installation. If given a block, it passes the shell output to
# the block for processing, using the return value of the block as the new path.
# Known Homebrew files are then scanned for and added to the file list. Then the
# directory is tested for a Homebrew installation, and the git index is added if
# a valid repo is found. The function won't run once a Homebrew installation is
# found, but it will accumulate untracked Homebrew files each invocation.
#
# @param [String] cmd a shell command to run
# @param [String] error_msg message to print if command fails
#
def locate_brew_path(cmd, error_msg = 'check homebrew installation and PATH.')
return if $brew_location # stop testing if we find a valid Homebrew installation
puts "Searching for homewbrew installation using '#{cmd}'..." unless $quiet
# Run given shell command along with any code passed-in via block
path = `#{cmd}`.chomp
path = yield(path) if block_given? # pass command output to your own fancy code block
begin
Dir.chdir(path) do
# Search for known Homebrew files and folders, regardless of git presence
$files += BREW_LOCAL_FILES.select { |file| File.exist? file }.map {|file| File.expand_path file }
$files += Dir.glob('**/{man,bin}/**/brew*')
# Test for Homebrew git repository (use popen3 so we can suppress git error output)
repo_name = Open3.popen3('git remote -v') do |stdin, stdout, stderr|
stderr.close
stdout.read
end
if repo_name =~ /homebrew.git|Homebrew/
$brew_location = path
else
return
end
end
rescue StandardError # on normal errors, continue program
return
end
end
# Attempt to locate homebrew installation using a command and optional code block
# for processing the command results. Locating a valid path halts searching.
locate_brew_path 'brew --prefix'
locate_brew_path('which brew') { |output| File.expand_path('../..', output) }
locate_brew_path 'brew --prefix' do |output|
output = output.split($/).first
File.expand_path('../..', output)
end
# Found Homebrew installation
if $brew_location
puts "Homebrew found at: #{$brew_location}" unless options[:quiet]
if options[:find_path]
puts $brew_location
exit
end
# Collect files indexed by git
begin
Dir.chdir($brew_location) do
# Update file list (use popen3 so we can suppress git error output)
Open3.popen3('git checkout master') { |stdin, stdout, stderr| stderr.close }
$files += `git ls-files`.split.map {|file| File.expand_path file }
end
rescue StandardError => e
puts e # Report any errors, but continue the script and collect any last files
end
end
# Collect any files Homebrew may have installed throughout our system
$files += BREW_SYSTEM_FILES.select { |file| File.exist? file }
abort 'Failed to locate any homebrew files!' if $files.empty?
# DESTROY! DESTROY! DESTROY!
unless options[:force]
print "Delete #{$files.count} files? "
abort unless gets.rstrip =~ /y|yes/i
end
rm =
if options[:dry_run]
lambda { |entry| puts "deleting #{entry}" unless options[:quiet] }
else
lambda { |entry| FileUtils.rm_rf(entry, :verbose => options[:verbose]) }
end
puts 'Deleting files...' unless options[:quiet]
$files.each(&rm)
Witamy, aby zapytać inaczej! Chociaż podany przez Ciebie link może odpowiedzieć na pytanie, lepiej jest dołączyć odpowiedź tutaj i podać link w celach informacyjnych. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie. Zredagowałem twoje pytanie, aby uwzględnić rozwiązanie, o którym myślę, że masz na myśli, ale jeśli nie, proszę o cytowanie odpowiedniej sekcji. Czy mógłbyś też wyjaśnić, dlaczego Twoje rozwiązanie jest lepsze?
grg
1
To więcej niż kilka wierszy, więc pomyślałem, że włączenie kodu byłoby kłopotliwe, ale cieszę się, że mogę to zrobić w przyszłości. Jest lepiej, ponieważ istnieją pliki i katalogi, które nie są wychwycone przez opublikowaną odpowiedź, którą mój skrypt usunie. Jest to narzędzie dla użytkownika za pomocą opcji CLI, bardziej wyczerpująco wyszukuje lokalizacje zaparzania i jest kodowane, aby ułatwić modyfikację w razie potrzeby ulepszenia skryptu.
Odpowiedzi:
To
rm -rf
nie zapyta, czy jesteś pewien, kiedy usuwasz, więc upewnij się, żecd
polecenie działa, aby wyciągnąć cię z / tmp (cd /tmp
przenosi cię w bezpieczne miejsce na wypadek, gdybyś skopiował / wkleił wszystko za jednym razem, aby nie usunąć plików z twojego bieżącego katalogu)Wypróbuj to w swoim terminalu:
Więcej informacji na ten temat można znaleźć w FAQ Homebrew .
źródło
cd `brew --prefix`
idzie do folderu, w którym nie ma zarejestrowanych normalnych plików git, ponieważ stara / źle działająca konfiguracja może się nie powieść, a usunięciegit ls-files
może usunąć coś innego niż resztki naparu.Chociaż instalacja HomeBrew jest wyraźnie widoczna na jej pierwszej stronie, szczegóły nie są. https://brew.sh/
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Przez długi czas bardzo trudno było znaleźć niezawodne odinstalowanie. Teraz, kilka kliknięć dalej w dokumentacji, istnieje teraz oficjalna metoda: https://docs.brew.sh/FAQ Aby odinstalować Homebrew, wklej poniższe polecenie w wierszu polecenia.ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
źródło
Oto znacznie lepsze rozwiązanie do usuwania Homebrew: https://gist.github.com/SteveBenner/11254428
źródło