Apple Silicon: transfiera todos los paquetes de Homebrew en /usr/local/opt/ a /opt/homebrew

Recientemente compré una MacBook Pro 13" con el chip M1 y transfirí todos mis datos usando una copia de seguridad de Time Machine. Los paquetes Homebrew están actualmente instalados, /usr/local/opt/pero entiendo que deberían estar debajo /opt/homebrewde Apple Silicon Macs.

Cómo puedo:

  1. Obtener la lista de paquetes que tengo instalados actualmente
  2. Eliminar los de/user/local/opt
  3. Vuelva a instalarlos bajo/opt/homebrew

Asumí que Homebrew sería lo suficientemente inteligente como para hacer esto automáticamente, pero aparentemente necesita un mantenimiento manual.

Aquí está mi configuración de Homebrew si ayuda:

HOMEBREW_VERSION: 2.7.2
ORIGIN: https://github.com/Homebrew/brew
HEAD: dad7dc6a1498b80770d98f2d7cd6fb927c300bbb
Last commit: 3 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 2b1d79d038bffdbfcee93283051d48919a4caf3d
Core tap last commit: 16 hours ago
Core tap branch: master
HOMEBREW_PREFIX: /usr/local
HOMEBREW_REPOSITORY: /usr/local/Homebrew
HOMEBREW_CELLAR: /usr/local/Cellar
HOMEBREW_CASK_OPTS: []
HOMEBREW_MAKE_JOBS: 8
Homebrew Ruby: 2.6.3 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
CPU: octa-core 64-bit arm_firestorm_icestorm
Clang: 12.0 build 1200
Git: 2.30.0 => /usr/local/bin/git
Curl: 7.64.1 => /usr/bin/curl
macOS: 11.1-arm64
CLT: 12.3.0.0.1.1607026830
Xcode: N/A
Rosetta 2: false

¡Gracias de antemano!

Respuestas (2)

Según https://docs.brew.sh/Installation , /usr/locales para binarios de Intel, /opt/homebrewpara ARM. Por lo tanto, es posible que desee reinstalar en lugar de simplemente migrar.

Puede volcar la lista de paquetes actualmente instalados con brew bundle dump. Para duplicar su instalación actual, necesitará

  • correr brew bundle dumppara crear unBrewfile

  • instale ARM Homebrew /opt/homebrewsiguiendo las instrucciones en https://docs.brew.sh/Installation

    cd /opt
    sudo mkdir -p homebrew
    sudo chown -R $(whoami) homebrew
    curl -L https://github.com/Homebrew/brew/tarball/master |\
        tar xz --strip 1 -C homebrew
    
  • asegúrese de que la versión ARM esté al comienzo de su RUTA

    PATH=/opt/homebrew/bin:$PATH
    
  • Vuelva a aplicar el archivo de preparación creado en el paso uno

    hash -d brew
    brew bundle install --file /path/to/Brewfile
    
  • Opcionalmente, ejecute brew analytics offpara desactivar la recopilación de seguimiento / análisis realizada por Homebrew

PD: algunas fórmulas no parecen funcionar en ARM todavía

PPS: /usr/local/Cellary cualquier enlace simbólico que se /usr/local/binencuentre en él se puede eliminar después.

Aquí está el enfoque que finalmente tomé.

Primero, tomé nota de mis paquetes de cerveza instalados:

brew list

Guardé esto como un archivo de texto para poder consultarlo más tarde. Luego desinstalé la versión anterior de Homebrew y todos sus paquetes:

cd ~/Desktop
wget https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh
chmod +x ./uninstall.sh
sudo ./uninstall.sh --path=/usr/local

y eliminó el archivo una vez que se hizo:

rm uninstall.sh

Luego instalé Homebrew con soporte M1:

cd /opt; sudo mkdir homebrew
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

Agregué lo siguiente a mi ~/.zshrcarchivo:

export PATH=/opt/homebrew/bin:$PATH

y lo obtuvo con:

source ~/.zshrc

Luego me referí a la lista de mi primer paso y comencé a instalar los paquetes necesarios uno por uno :) La mayoría de los paquetes que estaba usando parecen tener soporte ARM, ¡lo cual es increíble!

ah No pensé en eliminar la instalación anterior :-)
@DaniG2k Recibo la siguiente lista de preparación de errores Advertencia: su HOMEBREW_PREFIX está configurado en /usr/local pero HOMEBREW_CELLAR está configurado en /opt/homebrew/Cellar. Su ubicación actual de HOMEBREW_CELLAR le impedirá utilizar todos los paquetes binarios (botellas) que proporciona Homebrew. Le recomendamos que mueva su HOMEBREW_CELLAR a /usr/local/Cellar, lo que le dará acceso a todas las botellas".
¡ Ejecutar sudo ./uninstall.sh --path=/usr/localen realidad intenta eliminar todo el /usr/localdirectorio!: rmdir: /usr/local: Operation not permitted. ¿Es seguro correr de todos modos?