Bagaimana saya bisa menghapus Homebrew dengan bersih. Saya mungkin memiliki instalasi yang lebih tua yang salah, dan saya ingin memiliki awal yang baru.
Lihat juga superuser.com/questions/203707/… yang memiliki jawaban yang menjelaskan cara "sekarang kanonik" untuk menghapus homebrew
rogerdpack
@rogerdpack Komentar dapat dihapus kapan saja, bisakah Anda mengirim jawaban yang menjelaskan metode baru?
nohillside
Jawaban:
17
Ini rm -rftidak akan menanyakan apakah Anda yakin ketika Anda menghapus, jadi pastikan cdperintah itu berfungsi untuk mengeluarkan Anda dari / tmp (yang cd /tmpmembawa Anda ke tempat yang aman jika Anda menyalin / menempelkan semuanya sekaligus sehingga Anda tidak menghapus file) dari direktori Anda saat ini)
Saya akan memeriksa bahwa cd `brew --prefix`masuk ke folder yang Anda tidak memiliki file git normal diperiksa karena setup lama / tidak berfungsi mungkin gagal dan penghapusan git ls-filesbisa menghapus sesuatu selain sisa-sisa minuman Anda.
bmike
Saya memang membaca dokumentasi, saya hanya berpikir itu mungkin pertanyaan yang berguna untuk meminta referensi di masa depan. Saya memiliki masalah dengan petunjuk meskipun, yang saya diposting sebagai pertanyaan yang terpisah: apple.stackexchange.com/questions/82863/...
Sementara penginstalan HomeBrew terletak secara jelas di halaman depan, detailnya tidak.
https://brew.sh/
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Untuk waktu yang lama, sangat sulit untuk menemukan pencopotan yang andal. Sekarang, beberapa klik saja dalam dokumen, sekarang ada metode resmi:
https://docs.brew.sh/FAQ
Untuk menghapus instalasi Homebrew, rekatkan perintah di bawah ini dalam terminal prompt.
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)
Selamat Datang di Tanya Berbeda! Meskipun tautan yang Anda berikan dapat menjawab pertanyaan, lebih baik untuk menyertakan jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah. Saya telah mengedit pertanyaan Anda untuk memasukkan apa yang saya yakini sebagai solusi yang Anda maksudkan, namun jika itu tidak mengutip bagian yang relevan. Juga, dapatkah Anda memperluas alasan mengapa solusi Anda lebih baik?
GRG
1
Ini lebih dari beberapa baris jadi saya pikir memasukkan kode akan merepotkan, tapi saya senang melakukannya di masa depan. Lebih baik karena ada file dan direktori yang tidak tertangkap oleh jawaban yang diposting yang akan dihapus skrip saya. Ini menyediakan utilitas untuk pengguna melalui opsi CLI, mencari lebih lengkap untuk lokasi pembuatan, dan diberi kode sehingga memudahkan untuk memodifikasi jika Anda ingin meningkatkan skrip.
Jawaban:
Ini
rm -rf
tidak akan menanyakan apakah Anda yakin ketika Anda menghapus, jadi pastikancd
perintah itu berfungsi untuk mengeluarkan Anda dari / tmp (yangcd /tmp
membawa Anda ke tempat yang aman jika Anda menyalin / menempelkan semuanya sekaligus sehingga Anda tidak menghapus file) dari direktori Anda saat ini)Coba ini di Terminal Anda:
Info lebih lanjut tentang topik ini dapat ditemukan di FAQ Homebrew .
sumber
cd `brew --prefix`
masuk ke folder yang Anda tidak memiliki file git normal diperiksa karena setup lama / tidak berfungsi mungkin gagal dan penghapusangit ls-files
bisa menghapus sesuatu selain sisa-sisa minuman Anda.Sementara penginstalan HomeBrew terletak secara jelas di halaman depan, detailnya tidak. https://brew.sh/
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Untuk waktu yang lama, sangat sulit untuk menemukan pencopotan yang andal. Sekarang, beberapa klik saja dalam dokumen, sekarang ada metode resmi: https://docs.brew.sh/FAQ Untuk menghapus instalasi Homebrew, rekatkan perintah di bawah ini dalam terminal prompt.ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
sumber
Berikut adalah solusi yang lebih baik untuk menghapus Homebrew: https://gist.github.com/SteveBenner/11254428
sumber