No sé en qué distribución de UNIX/Linux estás, pero en mi Debian
- Try::Tiny se puede instalar para todos los usuarios con apt install libtry-tiny-perl
- HTML::Template, lo mismo, con apt install libhtml-template-perl
No hay paquete para Form::Builder, pero estoy casi seguro (habría que ver la matriz de dependencias/éxito en la instalación) de que se puede instalar con el comando
cpan o
cpanm:
cpanm Form::Builder Incluso hasta se puede elegir el directorio de instalación con la opción -L en cpanm.
Otro tema es que el usuario web tenga acceso a esas bibliotecas.
Lo que suelo hacer es preparar un pequeño script cgi que muestre todas las variables de entorno, para ver si es capaz de entrar o conocer el directorio:
Using perl Syntax Highlighting
#!/usr/bin/env perl
#
# Muestra las variables de entorno
#
# Joaquín Ferrero.
#
# ATENCIÓN: no dejar expuesto este cgi al exterior: da demasiada información a los hackers
#
use v5.14;
use CGI qw':standard -utf8';
use CGI::Carp qw'fatalsToBrowser';
#use utf8;
#use open qw<:utf8 :std>;
say header(-charset => 'utf-8', -type => 'text/plain');
say "\nEntorno:\n";
while (my($k,$v) = each %ENV) {
say "$k => $v";
}
say "\nDirectorios de bibliotecas:\n";
while (my($k,$v) = each %INC) {
say "$k => $v";
}
#say "\nMódulos instalados:\n";
#say qx(cpan -l);
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
La segunda parte de la salida muestra todos los directorios donde va a buscar por las bibliotecas. Si no está la ruta que quiero, la agrego en mis programas con
use lib "ruta";Ahora está el tema de los permisos... todos los directorios donde debe entrar perl (ejecutado por el Apache) deben tener permiso de lectura y ejecución. Y los propios archivos de biblioteca, deben tener permiso de lectura, para el usuario -o grupo al que pertenece el usuario- web.
Lo más normal es que ese usuario sea www-data, y que pertenezca a un grupo del mismo nombre. Y que ningún otro usuario pertenezca a ese grupo. O sea, esté él solo (no siempre es así, a veces el usuario FTP también pertenece a ese grupo).
Entonces, con dar permisos de lectura a todos los archivos será suficiente.
Using text Syntax Highlighting
find /usr/root/perl -type d -exec chmod 755 {} \; # damos permiso de lectura/ejecución para todo el mundo, en las carpetas
find /usr/root/perl -type f -exec chmod 644 {} \; # damos permiso de lectura para todo el mundo, en los archivos
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
O... si quieres restringirlo aún más... cambias el propietario de todos los archivos/carpetas a www-data:www-data, y le das permisos de lectura/ejecución solo al usuario.
Para que los usuarios puedan usarlos, deben colocarse en algún directorio que sea "alcanzable" por parte de los usuarios. Lo mismo: depende de quién los vaya a ejecutar (www-data u otro usuario) y dónde (permisos de ese usuario para llegar hasta allí).
Para instalar grupos de módulos, si son pocos, con comandos apt (o del sistema de paquetes de tu distribución) o el comando cpan, valdría.
Hay una forma... que no he probado... que te permite hacer una instalación dando una lista de módulos, pero nunca lo he probado. Es con la opción
autobundle del comando
cpan.
De forma profesional, hay empresas que usan
Carton.