¿Por qué algunos paquetes usan 'make install' mientras que otros usan 'sudo make install'?

8

Recientemente instalé el codificador LAME en mi servidor para convertir wav a mp3 y funcionó ./configure; make; make install.

Luego intenté instalar el codificador OGG y eso requiere './configure, make, sudo make install', lo que no puedo hacer, ya que no tengo un VPS (y prefiero no pagar $ 15 al mes por una VPN solo para instalar un códec).

Soy nuevo en todo esto, y entiendo que sudo te da permisos, pero he estado tratando de descubrir por qué exactamente algunos make installrequieren acceso a sudo y otros no. Todavía no he encontrado la respuesta.

alexbooots
fuente
Debería poder cambiar el Makefile (o alguna plantilla a partir de la cual se genera el Makefile) o pasar las opciones de la línea de comandos a algo (probablemente ./configure) para que se instale en un directorio diferente (presumiblemente uno al que no necesita sudoacceder) )

Respuestas:

7

Por lo general, trato de ejecutarlo de sudotodas formas, a veces funciona. A veces, los creadores de paquetes piensan que sudoes obligatorio, lo usan debido a su preferencia u optan por instalar cosas en áreas del sistema que no son usuarios. A veces esto es necesario, pero muchas veces no lo es.

La otra razón común que veo para el uso sudoes en publicaciones de blog de terceros que explican cómo instalar el software, y en lugar de hacer un esfuerzo adicional y explicarte cómo instalarlo sin sudoprivilegios, te dicen que lo uses sudoporque la persona escribir la publicación simplemente lo usa sudopara todo, lo cual no es realmente una buena idea.

Teóricamente, la única razón por la que un paquete debe requerir sudoes si necesita (o decide) instalarse / modificar áreas del sistema que solo pueden modificarse mediante acceso de administrador.

En términos generales, cada vez menos paquetes siguen haciendo esto, ya que la necesidad de que los usuarios instalen algún software sin sudoacceso está creciendo.

jefflunt
fuente
2
La mayoría de los paquetes deben tener opciones de configuración en algún lugar para que pueda instalarlos en otras ubicaciones. Usarlos puede requerir un poco más de esfuerzo, pero si no puedes, sudoeso es con lo que estás atascado.
6

Depende si lo está instalando para usted o para todos los usuarios. (Principalmente. Algunas cosas como los módulos del núcleo requerirán acceso a la raíz, independientemente de quién usará las funciones finales).

La mayoría de los programas que proporcionan un ./configurescript también aceptan un --prefix=~/bino --prefix=~/Local/para que pueda instalarlo en su directorio de inicio. No todos los programas proporcionan un ./configure, pero la mayoría proporciona algún mecanismo Makefileque le permite configurar el destino de la instalación.

Entonces: ¿son sus bibliotecas / programas para usted o para todos los usuarios de su sistema?

sarnold
fuente
Son solo para que yo los use ... y, ¡genial! ... Usé ./configure --exec-prefix = / home / username / folder --prefix = / home / username / folder y parece que pasó por ok sin sudo (que no se usaba cuando se usaba solo ./configure) para libogg, libvorbis, tenía algunos problemas con libtheora y vorbis-tools pero aún no estaba seguro de qué se trataba. Aunque debería poder conseguirlo. ¡Gracias!
3
Es posible que deba usar una opción de línea de comando como --theora-path=/home/username/foldercuando compila más programas; asegúrese de leer los READMEarchivos o archivos similares para saber qué variables pueden necesitar ser cambiadas.
sarnold
0

Se trata principalmente de leer / escribir / ejecutar permisos de archivos. Sudo no tiene derechos restringidos.

Piense en una cuenta de administrador en Windows, en lugar de una cuenta de usuario o invitado con derechos restringidos. La misma cosa.

Platillos
fuente