2010-01-09 7 views
10

He instalado Perl desde el código fuente en/usr/local, y se ajusta en consecuencia mi camino, siguiendo brian d foy's suggestion here.¿Cómo puedo evitar sudo-ing cuando instale módulos Perl con 'cpan'?

Estoy seguro de que me falta algo, pero, ahora que estoy tratando de instalar cosas con los 'CPAN 'comando y está fallando porque no puede escribir en/usr/local. Tengo que usar sudo, lo cual me parece mal. ¿Deben las cosas de CPAN ir a otra ubicación? ¿Es normal tener que usar sudo?

Respuesta

9

El árbol /usr/local está protegido. Es perfectamente normal usar sudo para instalar software allí.

La instalación en una ubicación de biblioteca separada es una pregunta frecuente. Ver "How do I keep my own module/library directory?" en la sección 8.

extracto Clave:

Puede configurar esto en su configuración de manera CPAN.pm módulos se instalan automáticamente en el directorio de la biblioteca privada cuando se utiliza el CPAN.pm shell:

% cpan 
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl 
cpan> o conf commit 

Para las distribuciones basadas en Build.PL, use la opción --install_base:

perl Build.PL --install_base /mydir/perl 

Puede configurar CPAN.pm utilizar automáticamente esta opción también:

% cpan 
cpan> o conf mbuild_arg "--install_base /mydir/perl" 
cpan> o conf commit 
+1

Creo que ya lo está haciendo. El consejo en las preguntas frecuentes es insuficiente para esto. Hay una opción mbuild_install_build_command y make_install_make_command donde puede establecer sudo como un comando para usar en el paso de instalación. –

11

Si realmente le molesta a utilizar sudo, puede utilizar local::lib e instalar módulos en su directorio personal - en el que no es necesario privilegios de superusuario

Dicho esto, no debería molestarle usar sudo. No hay nada necesariamente mal con eso. Como dice Gbacon, que lo necesite si desea instalar en /usr/local porque /usr/local es compartida por todos usuarios en el sistema (y por lo tanto sus permisos reflejan que):

 
    telemachus ~ $ ls -ld /usr/local/ 
    drwxr-xr-x 17 root wheel 578 Jan 8 20:00 /usr/local/ 
+1

El problema con local :: lib es mantener perls distintos al mismo tiempo. Si desea aislar las instalaciones por completo como sugiero, no desea instalar los módulos para las diferentes perls en el mismo directorio. –

9

El directorio/usr/local deno debe ser escribible por un usuario normal, pero la configuración de Unix tiene muchas características para manejar esto.

En mi consejo, sugerí configurar /usr/local/perls. Puedes darle a ese directorio los permisos que quieras. No aplique ningún permiso a más directorios de los que necesita.

Sugiero configurar un grupo perl, sumarse a ese grupo y hacer que el grupo de directorios de la biblioteca Perl sea editable. Una vez configurada, no tiene que sudo porque tiene permisos de grupo.

Más allá de eso, puede ajustar su configuración de CPAN.pm para usar sudo durante las fases de instalación. Consulte los comandos make_install_make_command y mbuild_install_build_command en la documentación. Solo busca "sudo" y los encontrarás.

Buena suerte, :)

6

En su shell CPAN, configurarlo para ejecutar los pasos make y build bajo sudo:

o conf make_install_make_command 'sudo make' 
o conf mbuild_install_build_command 'sudo ./Build' 
o conf commit 
quit 

(He encontrado estos here - soy ningún gurú CPAN .)

Cuestiones relacionadas