Saltar al contenido

Debian 10 Buster | update-grub | Comando no encontrado

Solución:

Soluciones (las mejores primero)

  1. su - root en lugar de su root – la mejor solución (gracias a Rui)
  2. extender la ruta del usuario normal en / etc / enviroment o ~ / .bashrc o un archivo de configuración similar
  3. llamar a los comandos de forma explícita; el uso de esta solución requeriría que uno modifique todos los scripts que llaman a otro comando de sbin (esto no es práctico, sin embargo, hay un ejemplo en la sección de solución de problemas)

Recomendaciones

Esto sucedió porque el PATH funciona de una manera realmente extraña (en realidad funciona según lo diseñado).

  1. regular user login -> el entorno PATH no contiene / usr / sbin => opinión: funciona según lo diseñado, bastante lógico
  2. su root -> derechos de administrador, pero falta el entorno / usr / sbin: / sbin => opinión: funciona según lo diseñado, pero ilógico, porque una cuenta con nivel de acceso root debería poder ejecutar comandos desde sbin sin agregar la ruta a los binarios manualmente
  3. su - root -> derechos de administrador, / usr / sbin en la ruta => opinión: funciona según lo diseñado, bastante lógico

Un poco más de antecedentes

Hay dos PATH definidos en /etc/login.defs, pero a menos que empiece su - o su - root, Voy a obtener ENV_PATH. Sé que esto ha sido diseñado de esta manera, para mantener el entorno del usuario real, pero en este caso único, realmente me deja boquiabierto, ¿por qué no agregar automáticamente /usr/sbin y /sbin a la ruta w de un “usuario normal” después de una exitosa su root

# cat /etc/login.defs |grep PATH=
ENV_SUPATH  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Solución de problemas

He descubierto que hay un update-grub comando en /usr/sbin.

# find / -name update-grub
/usr/sbin/update-grub

Lo ejecuté, solo para obtener el siguiente mensaje de error.

# /usr/sbin/update-grub
/usr/sbin/update-grub: 4: exec: grub-mkconfig: not found

Buscado para grub-mkconfig y lo encontré debajo /usr/sbin/grub-mkconfig. Entonces se me ocurrió, veamos cómo update-grub ¿Cómo se ve el guión?

#cat /usr/sbin/update-grub |grep grub-mkconfig
exec grub-mkconfig -o /boot/grub/grub.cfg "[email protected]"

Modificado / usr / sbin / update-grub para llamar grub-mkconfig por su ruta explícita …

exec /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg "[email protected]"

… luego llamó update-grub con su ruta explícita y tada, ¡funcionó!

# /usr/sbin/update-grub
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-4.18.0-2-amd64
Found initrd image: /boot/initrd.img-4.18.0-2-amd64
Found linux image: /boot/vmlinuz-4.16.0-2-amd64
Found initrd image: /boot/initrd.img-4.16.0-2-amd64
done

Conclusión

Esto debe ser algo sobre el PATH

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *