Hace años, podías salirte con la tuya corriendo brew
como Root sólo con chowning brew
a Root, pero han eliminado esa función. Así que en Homebrew 1.1.6, solía editar /usr/local/Homebrew/Library/Homebrew/brew.sh
para eliminar la comprobación de root (la que dice que es "extremadamente peligrosa") para poder ejecutar brew
como root.
La nueva versión de Homebrew todavía funciona con eso pero sigue revirtiendo el brew.sh
cada vez que ejecute brew
Aunque yo chmod 500
lo Podría escribir un script para cambiarlo y luego ejecutar brew
automáticamente, pero no estoy seguro de que esto funcione siempre y no quiero correr riesgos. ¿Alguien ha encontrado un método diferente para ejecutar Homebrew como Root?
4 votos
Por curiosidad, ¿por qué quieres dirigir
brew
¿como root? Además, ¿essudo
¿no es suficiente para sus propósitos?2 votos
@Allan
sudo
lo ejecuta como Root, y me da el mismo error de "extremadamente peligroso". Quiero ejecutarlo como Root porque de lo contrario tiene problemas para instalar ciertos paquetes, especialmente si algo fue instalado no a través de Homebrew (por ejemplo, a través depip
). He seguido ese camino muchas veces. Además, no funciona correctamente para múltiples usuarios sin soluciones extrañas a menos que instale todo como Root.0 votos
$ su -> $ brew whateverywant ?
2 votos
Construir un paquete de software como
root
es arriesgado. Incluso construyendo un paquete sin un gestor de paquetes, usted construiría el paquete como un usuario sin privilegios (usted mismo) y luego instalaría el paquete comoroot
consudo
. Los gestores de paquetes como Fink y MacPorts construyen con sus propios usuarios sin privilegios y luego instalan comoroot
. Homebrew no tiene ese mecanismo.0 votos
@fd0 Es comprensible, pero estoy dispuesto a correr el riesgo; de todos modos, pueden hacer prácticamente el mismo daño sin Root en mi ordenador personal. Pero, ¿por qué Homebrew no se instala simplemente con Root como hacen los demás? Su enfoque actual de instalar los archivos del sistema como un usuario específico ha arruinado mis permisos muchas veces.
0 votos
@StrawHara Si hago eso, detecta que se está ejecutando como Root y se para.
1 votos
Hmm, no veo el problema en mi extremo en el que el
brew.sh
se está revirtiendo después de modificarlo y luego ejecutar unbrew
comando. Así que puedo ejecutarsudo brew whatever
ybrew whatever
en tándem muy bien. Mibrew --version
la salida es así:Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28)
Para tu información, he modificado mibrew.sh
para comentar todas las líneas delcheck-run-command-as-root
y colocamos un únicoreturn
en la parte superior de la función.0 votos
@GDP2 He actualizado a Homebrew 1.2.1 (aunque el mío no está "sucio" por alguna razón) y he hecho lo que has sugerido, y puedo ejecutar
sudo brew ...
varias veces, pero "actualiza" el homebrew sisudo brew install ...
y sobrescribe el hack, por lo que vuelve al viejo problema.0 votos
También probé con git committing mi cambio en /usr/local/Homebrew, sin suerte. Tal vez pueda hacer que SIP bloquee el archivo brew.sh para escribir, incluso para Root? :D
0 votos
@sudo Hmm, eso es muy extraño. He intentado hacer un
brew install
y se ha hecho sin problemas, es decir, ha dejadobrew.sh
sin modificar y se instaló sin problemas (nota lateral posiblemente no relacionada: primero tuve queexport HOMEBREW_NO_SANDBOX=true
para que la instalación se complete correctamente). Antes de proteger el archivo con SIP puede intentarsudo chflags schg /usr/local/Homebrew/Library/Homebrew/brew.sh
junto con elchmod 500
que tú hiciste. Eso, segúnman chflags
"establecer la bandera inmutable del sistema (sólo para superusuarios)".0 votos
Para aclarar mi último comentario: Hice un
brew install
ensudo -s
y se ha hecho sin problemas.0 votos
Sí, sé que esto es viejo. Probablemente a SO no le gustaría un duplicado. Así que aquí está mi adición. Entiendo completamente la necesidad de una instalación no Root... pero parece exagerado no permitir que Root ejecute "brew leaves --installed-on-request" - que es simplemente una consulta para saber qué está instalado. Incluso eso falla con el mismo error. Tengo un script destinado a documentar todos los productos instalados (PECL, APT, BREW PIP) y para algunos de ellos (APT) se requiere Root. Si Root está prohibido para brew, entonces no veo una forma limpia de ejecutar todo esto en un script. ¿Asesoría? (Se utiliza en una variedad de sistemas).