¿Puedo instalar Homebrew sin privilegios de sudo?

26

Homebrew permite muy bien la instalación de paquetes sin privilegios de sudo, pero parece que necesito privilegios de administrador para instalar Homebrew.

Me gustaría instalar Homebrew en un entorno Mac donde no tengo privilegios de sudo o administrador. es posible?

BenjaminGolder
fuente

Respuestas:

12

No ... a menos que hagas una cirugía significativa.

La razón es que Homebrew insiste firmemente en instalar paquetes en /usr/local. De hecho, incluso si lo forzó a instalarse en otro lugar, es probable que rompa las dependencias cuando lo use brew installpara instalar paquetes. La mayoría, si no todos, estos paquetes están precompilados y vinculados esperando vivir en ellos /usr/local.

La razón de esta insistencia es que /usr/locales precisamente donde POSIX recomienda que se instalen cosas como esta. Para crear /usr/localHomebrew necesita credenciales de administrador temporales para crear el directorio y asignar la propiedad.

Esto, a su vez, es lo que le permite instalar cualquier otra cosa sin elevar las credenciales.

David Hoelzer
fuente
Gracias, pero creo que te perdiste mi pregunta. Sé cómo y dónde instala los paquetes, pero quiero instalar Homebrew sin administrador o sudo.
BenjaminGolder
No me perdí tu pregunta. La respuesta fue "No". Solo dije "Sí" accidentalmente. No puede hacer fácilmente lo que está pidiendo e incluso si lo forzó editando el instalador de Homebrew para colocar cosas en una rama de su directorio de inicio, es muy probable que muchas cervezas fallen después de la instalación.
David Hoelzer
bien gracias. Estaba confundido por el anterior "Sí".
BenjaminGolder
3
Esto es simplemente incorrecto, o al menos su definición de "cirugía significativa" es muy diferente a la mía. He estado ejecutando brewcon un prefijo establecido en mi directorio de inicio durante más de 5 años y he encontrado 1 o 2 paquetes rotos en ese momento.
James McMahon
Sin embargo, también existe esto, que es difícil de evitar: Error: no ha aceptado la licencia de Xcode. Resuelva esto ejecutando: sudo xcodebuild -license accept
Albert
17

Sí.

Modifiqué el script de instalación para no usar sudoy para usar un directorio de su elección. https://gist.github.com/skyl/36563a5be809e54dc139

Descargue eso, establezca YOUR_HOMEen el script la ruta absoluta. chmod +xla secuencia de comandos. Crea el YOUR_HOME/usr/localdirectorio. Luego, ejecute el script.

./install.rb

En .bash_profile, configuré (no estoy seguro de que esto sea importante, estoy bastante seguro):

export HOMEBREW_PREFIX=/The/path/to/YOUR_HOME/usr/local

Ahora puedo:

brew install wget

Asegúrese de que el bindirectorio, YOUR_HOME+ /usr/local/binesté en su $PATH.

which wget
Skylar Saveland
fuente
1
En el script de instalación también tuve que agregar un #{YOUR_HOME}prefijo a la HOMEBREW_CACHEvariable. Eso, y debido a que el administrador del sistema ya se había instalado homebrew, he tenido que añadir export PATH=/path/to/home/usr/local/bin:$PATHa .bash_profiletambién. Pero con todo eso, parece funcionar muy bien.
golmschenk
3
Acabo de pasar por el proceso nuevamente, y solo quería mencionar que también debe hacer un usrdirectorio en su directorio de inicio antes de que se ejecute el script. Además, cuando agrega #{YOUR_HOME}a la HOMEBREW_CACHEvariable, parece que necesita cambiar las comillas simples a comillas dobles para que funcione. Así que hay algunos pasos, pero definitivamente vale la pena obtener el poder de Homebrew.
golmschenk
Creo que las comillas dobles de @golmschenk son necesarias para que el formato de cadena de Ruby se active.
Skylar Saveland
1
Ese es un buen ajuste. Realmente debe enviar una solicitud de extracción al proyecto de elaboración casera.
David Hoelzer
1
Intenté esto desde una cuenta no administrativa en macOS Sierra (10.12.3) y no funcionó porque necesitaba hacer una chgrp admin /usr/local, y una cuenta no administrativa no es miembro del grupo administrador, por lo que puede ' No cambie nada a ese grupo. Sería genial si esto pudiera funcionar para una cuenta normal que no sea de administrador (no solo para cuentas de administrador que por alguna extraña razón han sido bloqueadas de sudo).
Spiff
0

Sí.

El sistema de preparación parece bootstrappable

#!/bin/bash
set -ex

export HOMEBREW_PREFIX=~/homebrew
# export HOMEBREW_NO_ANALYTICS=1
mkdir -p "${HOMEBREW_PREFIX}"
curl -fsSLk https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "${HOMEBREW_PREFIX}"

ls -laR "${HOMEBREW_PREFIX}"

export PATH="${HOMEBREW_PREFIX}/bin:${PATH}"
type -a brew

type -a openssl || :
openssl version -a || :

type -a curl || :
curl -V || :

# Fails to lock a .git/config file.
##brew analytics off

# No "brew update" until installing the proper openssl and a curl that uses it.
# brew update

# brew remove openssl || :
brew install openssl
brew link --force openssl

# brew remove curl || :
brew install --with-openssl curl
brew link --force curl || :
curl -V

ls -la "${HOMEBREW_PREFIX}/opt"
ls -la "${HOMEBREW_PREFIX}/bin"
ls -laLR "${HOMEBREW_PREFIX}/opt/curl/"
anguila ghEEz
fuente
0

Para instalar homebrew sin sudo .

git clone https://github.com/mxcl/homebrew.git
echo 'export PATH="/path/to/cloned_folder/homebrew/bin:$PATH"' >> ~/.bash_profile

Reiniciar terminal y ejecutar

brew --version
Astik Anand
fuente
0

Brew movió su repositorio de git, por lo que lo anterior ya no funciona.

git clone [email protected]:Homebrew/brew.git
echo 'export PATH="/path/to/cloned_folder/homebrew/bin:$PATH"' >> ~/.bash_profile
pwaterz
fuente
1
Por "lo anterior", ¿te refieres a la respuesta de Astik Anand ? No siempre estará "por encima" de su respuesta. Si algo en su respuesta se debe cambiar, edítelo usted mismo.
nekomatic