@rogerdpack Kommentare können jederzeit gelöscht werden. Können Sie bitte eine Antwort schreiben, die die neue Methode beschreibt?
Nohillside
Antworten:
17
Sie rm -rfwerden nicht gefragt, ob Sie sich beim Löschen sicher sind. Stellen Sie also sicher, dass der cdBefehl funktioniert, um Sie aus / tmp zu entfernen (das cd /tmpbringt Sie an einen sicheren Ort, falls Sie alles auf einmal kopieren / einfügen, damit Sie keine Dateien löschen aus Ihrem aktuellen Verzeichnis)
Ich würde überprüfen, ob das cd `brew --prefix`in einen Ordner geht, in dem keine normalen Git-Dateien eingecheckt sind, da ein altes / fehlerhaftes Setup möglicherweise fehlschlägt und beim Löschen von git ls-filesetwas anderes als die Reste Ihres Suds gelöscht werden könnten.
bmike
Ich habe die Dokumentation gelesen und dachte nur, dass dies eine nützliche Frage sein könnte, um später nachzuschlagen. Ich habe jedoch Probleme mit den Anweisungen, die ich als separate Frage gestellt habe: apple.stackexchange.com/questions/82863/…
Die Installation von HomeBrew befindet sich zwar an prominenter Stelle auf der Titelseite, Details jedoch nicht.
https://brew.sh/
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Lange Zeit war es sehr schwierig, eine zuverlässige Deinstallation zu finden. Jetzt, da die Dokumente einige Klicks entfernt sind, gibt es eine offizielle Methode:
https://docs.brew.sh/FAQ
Fügen Sie den folgenden Befehl in eine Terminal-Eingabeaufforderung ein, um Homebrew zu deinstallieren.
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)
Willkommen bei Ask Different! Während der Link, den Sie angegeben haben, die Frage beantworten kann, ist es besser, die Antwort hier einzuschließen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert. Ich habe Ihre Frage so bearbeitet, dass sie meiner Meinung nach die Lösung ist, auf die Sie sich bezogen haben. Wenn dies jedoch nicht der Fall ist, zitieren Sie bitte den entsprechenden Abschnitt. Können Sie auch erläutern, warum Ihre Lösung besser ist?
grg
1
Es sind mehr als ein paar Zeilen, daher dachte ich, dass das Einfügen des Codes umständlich sein würde, aber ich bin froh, dies in Zukunft zu tun. Es ist besser, weil es Dateien und Verzeichnisse gibt, die nicht von der geposteten Antwort erfasst werden, die mein Skript entfernt. Es bietet dem Benutzer Hilfsprogramme über CLI-Optionen, sucht ausführlicher nach Brühpositionen und ist so codiert, dass Änderungen für den Fall, dass Sie das Skript verbessern möchten, problemlos möglich sind.
Antworten:
Sie
rm -rf
werden nicht gefragt, ob Sie sich beim Löschen sicher sind. Stellen Sie also sicher, dass dercd
Befehl funktioniert, um Sie aus / tmp zu entfernen (dascd /tmp
bringt Sie an einen sicheren Ort, falls Sie alles auf einmal kopieren / einfügen, damit Sie keine Dateien löschen aus Ihrem aktuellen Verzeichnis)Versuchen Sie dies in Ihrem Terminal:
Weitere Informationen zu diesem Thema finden Sie in den häufig gestellten Fragen zu Homebrew .
quelle
cd `brew --prefix`
in einen Ordner geht, in dem keine normalen Git-Dateien eingecheckt sind, da ein altes / fehlerhaftes Setup möglicherweise fehlschlägt und beim Löschen vongit ls-files
etwas anderes als die Reste Ihres Suds gelöscht werden könnten.Die Installation von HomeBrew befindet sich zwar an prominenter Stelle auf der Titelseite, Details jedoch nicht. https://brew.sh/
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Lange Zeit war es sehr schwierig, eine zuverlässige Deinstallation zu finden. Jetzt, da die Dokumente einige Klicks entfernt sind, gibt es eine offizielle Methode: https://docs.brew.sh/FAQ Fügen Sie den folgenden Befehl in eine Terminal-Eingabeaufforderung ein, um Homebrew zu deinstallieren.ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
quelle
Hier ist eine viel bessere Lösung zum Entfernen von Homebrew: https://gist.github.com/SteveBenner/11254428
quelle