Este es el comando perlsolaris que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
perlsolaris - Perl versión 5 en sistemas Solaris
DESCRIPCIÓN
Este documento describe varias funciones del sistema operativo Solaris de Sun que
afectará cómo se compila y / o ejecuta Perl versión 5 (en adelante solo perl). Algunos asuntos
También se comentan los relacionados con SunOS 4.x anterior, aunque pueden estar desactualizados.
En su mayor parte, todo debería funcionar.
A partir de Solaris 8, perl5.00503 (o superior) se suministra con el sistema operativo, por lo que
es posible que ni siquiera necesite crear una versión más nueva de perl. La versión suministrada por el sol
está instalado en / usr / perl5 con / usr / bin / perl señalando a / usr / perl5 / bin / perl. No haga
perturbar esa instalación a menos que realmente sepa lo que está haciendo. Si quita el
perl suministrado con el sistema operativo, dejará algunos bits de su sistema inoperables. Si tu
desea instalar una versión más reciente de perl, instálela con un prefijo diferente de
/ usr / perl5. Los prefijos comunes a usar son / usr / local y / opt / perl.
Es posible que desee poner su versión de perl en la RUTA de todos los usuarios cambiando el enlace
/ usr / bin / perl. Probablemente esto esté bien, ya que la mayoría de los scripts de Perl enviados con Solaris usan un
ruta explícita. (Hay algunas excepciones, como / usr / bin / rpm2cpio y
/ etc / rcm / scripts / README, pero también son lo suficientemente genéricos como para que la versión real
de perl probablemente no importe demasiado).
Solaris se envía con una gama de módulos específicos de Solaris. Si elige instalar el suyo
versión de perl encontrará que la fuente de muchos de estos módulos está disponible en CPAN
bajo el espacio de nombres Sun :: Solaris ::.
Solaris puede incluir dos versiones de perl, por ejemplo, Solaris 9 incluye 5.005_03 y 5.6.1.
Esto es para proporcionar estabilidad en todas las versiones de Solaris, en los casos en que una versión posterior de Perl
tiene incompatibilidades con la versión incluida en la versión anterior de Solaris. los
La versión predeterminada de Perl siempre será la más reciente y, en general, la versión anterior
solo se conservará para una versión de Solaris. Tenga en cuenta también que el perl predeterminado NO será
configurado para buscar módulos en la versión anterior, nuevamente debido a
preocupaciones de compatibilidad / estabilidad. Como consecuencia, si actualiza Solaris, tendrá
para reconstruir / reinstalar cualquier módulo CPAN adicional que haya instalado para el anterior
Versión de Solaris. Consulte la página de manual de CPAN en 'autobundle' para obtener una forma rápida de hacerlo.
Como medida provisional, puede cambiar el #! línea de sus scripts para específicamente
consulte la versión anterior de perl, por ejemplo, en Solaris 9 use #! / usr / perl5 / 5.00503 / bin / perl para usar
la versión de perl que era la predeterminada para Solaris 8, o si tiene una gran cantidad de
scripts, puede ser más conveniente hacer que la versión anterior de perl sea la predeterminada en su
sistema. Puede hacer esto cambiando los enlaces simbólicos apropiados en / usr / perl5 de la siguiente manera
(ejemplo para Solaris 9):
# cd / usr / perl5
# vaina de hombre de la papelera de rm
# ln -s ./5.00503/bin
# ln -s ./5.00503/hombre
# ln -s ./5.00503/lib/pod
# habitación / usr / bin / perl
# ln -s ../perl5/5.00503/bin/perl / usr / bin / perl
En ambos casos, esto solo debe considerarse una medida temporal; debe
actualice a la versión posterior de perl tan pronto como sea posible.
Tenga en cuenta también que las utilidades de línea de comandos de perl (por ejemplo, perldoc) y las que se agregan
Los módulos que instale estarán en / usr / perl5 / bin, por lo que ese directorio debe agregarse
a su RUTA.
Solaris Versión Números.
Para mantener la coherencia con el uso común, el script Configure de perl realiza algunos
manipulaciones en el nombre del sistema operativo y el número de versión según lo informado por uname.
Aquí hay una tabla de traducción parcial:
Sol: Configurar de perl:
uname uname -r Nombre osname osvers
SunOS 4.1.3 Solaris 1.1 sunos 4.1.3
SunOS 5.6 Solaris 2.6 Solaris 2.6
SunOS 5.8 Solaris 8 Solaris 2.8
SunOS 5.9 Solaris 9 Solaris 2.9
SunOS 5.10 Solaris 10 Solaris 2.10
La tabla completa se puede encontrar en las Preguntas frecuentes de Sun Managers.
<ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq> en "9.1) ¿Qué modelos de Sun ejecutan qué
versiones de SunOS? ".
RECURSOS
Hay muchas, muchas fuentes de información de Solaris. Algunos de los importantes para
Perla:
Preguntas frecuentes de Solaris
Las preguntas frecuentes de Solaris están disponibles enhttp://www.science.uva.nl/pub/solaris/solaris2.html>.
Las preguntas frecuentes de Sun Managers están disponibles en
<ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq>
Binarios precompilados
Binarios precompilados, enlaces a muchos sitios y mucho, mucho más están disponibles en
<http://www.sunfreeware.com/> yhttp://www.blastwave.org/>.
Documentación de Solaris
Toda la documentación de Solaris está disponible en línea enhttp://docs.sun.com/>.
AJUSTE UP
Archive Extracción Problemas on solaris.
Asegúrese de utilizar un programa tar compilado en Solaris (no SunOS 4.x) para extraer el
archivo perl-5.xxtar.gz. No utilice GNU tar compilado para SunOS4 en Solaris. (Alquitrán GNU
compilado para Solaris debería estar bien.) Cuando ejecuta los binarios de SunOS4 en Solaris, la ejecución
El sistema de tiempo altera mágicamente los nombres de ruta que coinciden con m # lib / locale # para que cuando tar intente
cree lib / locale.pm, en su lugar se crea un archivo llamado lib / oldlocale.pm. Si usted encontró
este consejo es demasiado tarde y usó un tar compilado para SunOS4 de todos modos, debe encontrar el
renombrado y muévalo de nuevo a lib / locale.pm.
Compilador y Relacionado: Herramientas on solaris.
Debe utilizar un compilador ANSI C para compilar perl. Perl se puede compilar con Sun's
compilador C complementario o con gcc. El compilador de C que se envió con SunOS4 no funcionará.
Incluir / usr / ccs / bin / in Tu SENDERO.
Varias herramientas necesarias para construir perl se encuentran en / usr / ccs / bin /: ar, as, ld y make.
Asegúrese de que / usr / ccs / bin / esté en su RUTA.
En todas las versiones publicadas de Solaris (8, 9 y 10) debe asegurarse de lo siguiente
los paquetes están instalados (esta información se extrae de las preguntas frecuentes de Solaris):
para herramientas (sccs, lex, yacc, make, nm, truss, ld, as): SUNWbtool, SUNWsprot, SUNWtoo
para bibliotecas y encabezados: SUNWhea, SUNWarc, SUNWlibm, SUNWlibms, SUNWdfbh, SUNWcg6h,
DOMWxwinc
Además, en Solaris 8 y 9 también necesita:
para desarrollo de 64 bits: SUNWarcx, SUNWbtoox, SUNWdplx, SUNWscpux, SUNWsprox, SUNWtoox,
SUNWlmsx, SUNWlmx, SUNWlibCx
Y solo en Solaris 8 también necesita:
para bibliotecas y encabezados: SUNWolinc
Si tiene dudas sobre qué paquete contiene un archivo que le falta, intente encontrar un
instalación que tiene ese archivo. Entonces haz un
$ grep / my / missing / file / var / sadm / install / contents
Esto mostrará una línea como esta:
/usr/include/sys/errno.hf ninguno 0644 contenedor raíz 7471 37605 956241356 SUNWhea
El último elemento de la lista (SUNWhea en este ejemplo) es el paquete que necesita.
Evitando / usr / ucb / cc.
No necesita tener / usr / ucb / en su RUTA para construir perl. Si quieres / usr / ucb / in
su PATH de todos modos, asegúrese de que / usr / ucb / NO esté en su PATH antes del directorio
que contiene el compilador de C correcto.
Sol C Compilador
Si usa el compilador C de Sun, asegúrese de que el directorio correcto (generalmente / opt / SUNWspro / bin /)
está en su RUTA (antes de / usr / ucb /).
GCC
Si usa gcc, asegúrese de que su instalación sea reciente y completa. versiones de perl desde
5.6.0 construir bien con gcc> 2.8.1 en Solaris> = 2.6.
Debe configurar perl con
$ sh Configurar -Dcc = gcc
Si no lo hace, puede experimentar errores de compilación extraños.
Si ha actualizado su versión de Solaris, es posible que también deba actualizar su gcc. Para
ejemplo, si está ejecutando Solaris 2.6 y su gcc está instalado bajo / usr / localverificar
en / usr / local / lib / gcc-lib y asegúrese de tener el directorio apropiado,
sparc-sun-solaris2.6 / o i386-pc-solaris2.6 /. Si el directorio de gcc es para un
versión de Solaris de la que está ejecutando, deberá reconstruir gcc para su nueva
versión de Solaris.
Puede obtener una versión precompilada de gcc enhttp://www.sunfreeware.com/> o
<http://www.blastwave.org/>. Asegúrese de recoger el paquete para su versión de Solaris.
Si desea utilizar gcc para crear módulos complementarios para usar con el perl enviado con Solaris,
debe utilizar el módulo Solaris :: PerlGcc que está disponible en CPAN. El perl enviado
con Solaris está configurado y construido con los compiladores de Sun, y el compilador
Por lo tanto, la información de configuración almacenada en Config.pm solo es relevante para Sun
compiladores. El módulo Solaris: PerlGcc contiene un Config.pm de reemplazo que es correcto
para gcc: consulte el módulo para obtener más detalles.
GNU as y GNU ld
La siguiente información se aplica a la versión 2 de gcc. Voluntarios para actualizarla como
apropiado para gcc versión 3 se agradecería.
Las versiones de as y ld suministradas con Solaris funcionan bien para compilar perl. Hay
normalmente no es necesario instalar las versiones GNU para compilar perl.
Si decide ignorar este consejo y utilizar las versiones GNU de todos modos, asegúrese de que
son relativamente recientes. Las versiones posteriores a la 2.7 son aparentemente lo suficientemente nuevas. Más viejo
las versiones pueden tener problemas con la carga dinámica.
Si desea utilizar GNU ld, debe pasarle el indicador -Wl, -E. los
hints / solaris_2.sh archivo intenta hacer esto automáticamente estableciendo la siguiente configuración
variables:
ccdlflags = "$ ccdlflags -Wl, -E"
lddlflags = "$ lddlflags -Wl, -E -G"
Sin embargo, a lo largo de los años, los cambios en gcc, GNU ld y Solaris ld han dificultado la
detecta automáticamente a qué ld se llama en última instancia. Puede que tenga que editar manualmente
config.sh y agregue los indicadores -Wl, -E usted mismo, o bien ejecute Configure interactivamente y agregue
las banderas en las indicaciones apropiadas.
Si su gcc está configurado para usar GNU como y ld pero desea usar los de Solaris
en lugar de compilar perl, deberá agregar -B / usr / ccs / bin / a la línea de comando gcc.
Una forma conveniente de hacerlo es con
$ sh Configurar -Dcc = 'gcc -B / usr / ccs / bin /'
Tenga en cuenta que se requiere la barra inclinada final. Esto resultará en algunas advertencias inofensivas como
Configurar se ejecuta:
gcc: prefijo de ruta de archivo `/ usr / ccs / bin / 'nunca usado
Estos mensajes se pueden ignorar con seguridad. (Tenga en cuenta que para un sistema SunOS4, debe utilizar
-B / bin / en su lugar.)
Alternativamente, puede utilizar la variable de entorno GCC_EXEC_PREFIX para asegurarse de que Sun
as y ld se utilizan. Consulte la documentación de su gcc para obtener más información sobre -B
opción y la variable GCC_EXEC_PREFIX.
Dom y GNU “piensen de nuevo sobre los incrementos de precio”
El comando make bajo / usr / ccs / bin funciona bien para compilar perl. Si tienes el sol C
compiladores, también tendrá una versión paralela de make (dmake). Esto funciona bien para
compilar perl, pero a veces puede causar problemas al ejecutar 'hacer prueba' debido a
dependencias subespecificadas entre los diferentes archivos de arnés de prueba. El mismo problema
también puede afectar la construcción de algunos módulos adicionales, por lo que en esos casos, especifique '-m
serial 'en la línea de comando de dmake, o use / usr / ccs / bin / make en su lugar. Si desea utilizar
GNU, asegúrese de que el bit set-group-id no esté configurado. Si es así, organiza tu RUTA
para que / usr / ccs / bin / make sea anterior a GNU make o, de lo contrario, haga que el administrador del sistema lo desactive
el bit set-group-id en GNU make.
Evitando libub.
Solaris proporciona algunas funciones de compatibilidad con BSD en /usr/ucblib/libucb.a. Perl no lo hará
compilar y ejecutar correctamente si está vinculado con -lucb, ya que contiene rutinas que son
incompatible con la libc estándar de Solaris. Normalmente esto no es un problema ya que
El archivo de sugerencias solaris evita que Configure incluso busque bibliotecas en / usr / ucblib, y
también omite explícitamente -lucb.
Medio Ambiente para Compilación perl on Solaris
TRAYECTORIA
Asegúrese de que su PATH incluya el compilador (/ opt / SUNWspro / bin / si está usando Sun's
compilador) así como / usr / ccs / bin / para elegir las otras herramientas de desarrollo (como make,
ar, as y ld). Asegúrese de que su ruta no incluya / usr / ucb o que incluya
después de las herramientas del compilador y del compilador y otros directorios estándar de Solaris. usted
definitivamente no quiero / usr / ucb / cc.
LD_LIBRARY_PATH
Si tiene configurada la variable de entorno LD_LIBRARY_PATH, asegúrese de que NO incluya
/ lib o / usr / lib. Si va a crear extensiones que llamen a terceros compartidos
bibliotecas (por ejemplo, Berkeley DB) luego asegúrese de que su variable de entorno LD_LIBRARY_PATH
incluye el directorio con esa biblioteca (p. ej. / usr / local / lib).
Si recibe un mensaje de error
dlopen: falló la interceptación del stub
probablemente se deba a que su variable de entorno LD_LIBRARY_PATH incluye un directorio
que es un enlace simbólico a / Usr / lib (Tales como / lib). La razón por la que esto causa un problema es bastante
sutil. El archivo libdl.so.1.0 en realidad * solo * contiene funciones que generan 'stub
interceptación fallida 'errores! El enlazador en tiempo de ejecución intercepta enlaces a
"/usr/lib/libdl.so.1.0" y enlaces en implementaciones internas de esas funciones.
[Gracias a Tim Bunce por esta explicación].
CORRE CONFIGURAR.
Consulte el archivo INSTALL para obtener información general sobre Configure. Solo específico de Solaris
Los problemas se discuten aquí. Por lo general, los valores predeterminados deberían estar bien.
64 bits perl on solaris.
Consulte el archivo INSTALL para obtener información general sobre compilaciones de 64 bits. En general, el
los valores predeterminados deberían estar bien para la mayoría de las personas.
Por defecto, perl-5.6.0 (o posterior) se compila como una aplicación de 32 bits con largefile y
apoyo a largo plazo.
General 32 bits vs 64 bits infertilidad
Solaris 7 y versiones posteriores se ejecutarán en modo de 32 bits o 64 bits en las CPU SPARC, mediante un reinicio.
Puede crear aplicaciones de 64 bits mientras ejecuta el modo de 32 bits y viceversa. Se ejecutarán aplicaciones de 32 bits
en Solaris ejecutándose en modo de 32 o 64 bits. Las aplicaciones de 64 bits requieren que Solaris
ejecutando el modo de 64 bits.
Las aplicaciones de 32 bits existentes se conocen correctamente como LP32, es decir, Longs y Pointers son de 32 bits.
Las aplicaciones de 64 bits se conocen mejor como LP64. La característica discriminatoria de una aplicación LP64 bit
es su capacidad para utilizar un espacio de direcciones de 64 bits. Es perfectamente posible tener un LP32
aplicación de bits que admite enteros de 64 bits (long long) y archivos grandes (> 2GB), y esto es
el predeterminado para perl-5.6.0.
Para obtener una explicación más completa de los problemas de 64 bits, consulte "Solaris 64-bit Developer's
Guía "enhttp://docs.sun.com/>
Puede detectar el modo del sistema operativo usando "isainfo -v", p. Ej.
$ isainfo -v # Ultra 30 en modo de 64 bits
Aplicaciones sparcv64 de 9 bits
Aplicaciones sparc de 32 bits
Por defecto, perl se compilará como una aplicación de 32 bits. A menos que quieras asignar
más de ~ 4 GB de memoria dentro de perl, o a menos que necesite más de 255 archivos abiertos
descriptores, probablemente no necesite que Perl sea una aplicación de 64 bits.
Ancha Archive Soporte
Para Solaris 2.6 y posteriores, hay dos formas diferentes de que las aplicaciones de 32 bits
manipular archivos grandes (archivos cuyo tamaño es> 2GByte). (Una aplicación de 64 bits
automáticamente tiene soporte para archivos grandes integrado de forma predeterminada).
Primero está el "entorno de compilación de transición", descrito en lfcompile64(5).
Según la página del manual,
El entorno de compilación de transición exporta todos los
funciones explícitas de 64 bits (xxx64 ()) y tipos además de
todas las funciones regulares (xxx ()) y tipos. Tanto xxx () como
Las funciones xxx64 () están disponibles para la fuente del programa. A
La aplicación de 32 bits debe utilizar las funciones xxx64 () en orden
para acceder a archivos grandes. Ver el lf64(5) página de manual para
Lista completa de las interfaces de transición de 64 bits.
El entorno de compilación de transición se obtiene con el siguiente compilador y
banderas del enlazador:
getconf LFS64_CFLAGS -D_LARGEFILE64_SOURCE
getconf LFS64_LDFLAG # no se necesita nada especial
getconf LFS64_LIBS # no se necesita nada especial
En segundo lugar está el "entorno de compilación de archivos grandes", que se describe en lfcompilar(5). Según
a la página del manual,
Cada interfaz denominada xxx () que necesita acceder a entidades de 64 bits
para acceder a mapas de archivos grandes a una llamada xxx64 () en el
binario resultante. Todos los tipos de datos relevantes se definen para ser
de tamaño correcto (por ejemplo, off_t tiene una definición typedef
para una entidad de 64 bits).
Una aplicación compilada en este entorno puede utilizar
las interfaces de origen xxx () para acceder a grandes y pequeños
archivos, en lugar de tener que utilizar explícitamente la transición
xxx64 () llamadas a la interfaz para acceder a archivos grandes.
Dos excepciones son fseek () y ftell (). Las aplicaciones de 32 bits deben usar fseeko(3C) y
ftelo(3C). Estos se asignarán automáticamente a fseeko64 () y ftello64 ().
El entorno de compilación de archivos grandes se obtiene con
getconf LFS_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS = 64
getconf LFS_LDFLAGS # no se necesita nada especial
getconf LFS_LIBS # no se necesita nada especial
De forma predeterminada, perl utiliza el entorno de compilación de archivos grandes y confía en Solaris para hacer
el mapeo subyacente de interfaces.
Contruyendo an LP64 perl
Para compilar una aplicación de 64 bits en un UltraSparc con un Sun Compiler reciente, debe
utilice la bandera "-xarch = v9". obtenerconf(1) le dirá esto, p. Ej.
$ getconf-a | grep v9
XBS5_LP64_OFF64_CFLAGS: -xarch = v9
XBS5_LP64_OFF64_LDFLAGS: -xarch = v9
XBS5_LP64_OFF64_LINTFLAGS: -xarch = v9
XBS5_LPBIG_OFFBIG_CFLAGS: -xarch = v9
XBS5_LPBIG_OFFBIG_LDFLAGS: -xarch = v9
XBS5_LPBIG_OFFBIG_LINTFLAGS: -xarch = v9
_XBS5_LP64_OFF64_CFLAGS: -xarch = v9
_XBS5_LP64_OFF64_LDFLAGS: -xarch = v9
_XBS5_LP64_OFF64_LINTFLAGS: -xarch = v9
_XBS5_LPBIG_OFFBIG_CFLAGS: -xarch = v9
_XBS5_LPBIG_OFFBIG_LDFLAGS: -xarch = v9
_XBS5_LPBIG_OFFBIG_LINTFLAGS: -xarch = v9
Este indicador es compatible con Sun WorkShop Compilers 5.0 y posteriores (ahora comercializado bajo el
nombre Forte) cuando se utiliza en Solaris 7 o posterior en sistemas UltraSparc.
Si está usando gcc, necesitaría usar -mcpu = v9 -m64 en su lugar. Esta opción aún no está
soportado a partir de gcc 2.95.2; de install / SPECIFIC en esa versión:
La versión 2.95 de GCC no puede compilar el código correctamente para sparc64
objetivos. Los usuarios del kernel de Linux, al menos, pueden usar sparc32
programa para iniciar una nueva invocación de shell con un entorno que
hace que configure reconozca (a través de uname -a) el sistema como sparc - * - *
preferiblemente.
Todo esto debe ser manejado automáticamente por el archivo de sugerencias, si se solicita.
Largo Dobles.
A partir de 5.8.1, los dobles largos funcionan si usa los compiladores de Sun (necesarios para
rutinas matemáticas no incluidas en libm).
Temas in perl on solaris.
Es posible crear una versión con subprocesos de perl en Solaris. Todo el hilo de perl
la implementación es todavía experimental, sin embargo, tenga cuidado.
Malloc Temas con perl on solaris.
A partir de perl 5.7.1, perl usa Solaris malloc, ya que perl malloc se rompe cuando
lidia con más de 2GB de memoria, y el malloc de Solaris también parece ser más rápido.
Si por alguna razón (como la compatibilidad binaria con versiones anteriores) realmente necesita usar perl
malloc, puede reconstruir perl a partir de las fuentes y configurar la compilación con
$ sh Configurar -Dusemymalloc
No debe usar malloc de perl si está compilando con gcc. Hay informes de core
volcados, especialmente en el módulo PDL. El problema parece desaparecer en -DDEBUGGING, por lo que
ha sido difícil localizarlo. El compilador de Sun parece estar bien con o sin
malloc de perl. [Se necesita más investigación XXX aquí.]
PREPARARLO PROBLEMAS.
Problemas de carga dinámica con GNU as y GNU ld
Si tiene problemas con la carga dinámica usando gcc en SunOS o Solaris, y está
utilizando GNU como y GNU ld, consulte la sección "GNU como y GNU ld" más arriba.
ld.so.1: ./perl: fatal: error de reubicación:
Si recibe este mensaje en SunOS o Solaris y está usando gcc, probablemente sea el
Problema de GNU as o GNU ld en el ítem anterior "GNU as y GNU ld".
dlopen: falló la interceptación del stub
La causa principal del mensaje 'dlopen: error en la interceptación del código auxiliar' es que el
La variable de entorno LD_LIBRARY_PATH incluye un directorio que es un enlace simbólico a
/ Usr / lib (Tales como / lib). Consulte "LD_LIBRARY_PATH" más arriba.
#error "No se especificó DATAMODEL_NATIVE"
Este es un error común al intentar compilar perl en Solaris 2.6 con un gcc
instalación desde Solaris 2.5 o 2.5.1. Los archivos de encabezado de Solaris cambiaron, por lo que necesita
para actualizar su instalación de gcc. Puede volver a ejecutar el script fixincludes de gcc
o aproveche la oportunidad para actualizar su instalación de gcc.
sh: ar: no encontrado
Este es un mensaje de su shell que le dice que no se encontró el comando 'ar'.
Debe verificar su variable de entorno PATH para asegurarse de que incluye el
directorio con el comando 'ar'. Este es un problema común en Solaris, donde 'ar' es
en el directorio / usr / ccs / bin /.
PREPARARLO HAZTE EL TEST
op / stat.t compruébalo 4 in Solaris
op / stat.t la prueba 4 puede fallar si está en un tmpfs de algún tipo. Construyendo en / Tmp sometimes
muestra este comportamiento. El conjunto de pruebas detecta si está incorporando / Tmp, pero puede que no
ser capaz de captar todas las situaciones de tmpfs.
nss_delete centro arrojar Desde op / pwent or op / grent
Consulte "nss_delete core dump from op / pwent u op / grent" en perlhpux.
COMPILACIÓN CRUZADA
Nada demasiado inusual aquí. Puede hacer esto fácilmente si tiene un compilador cruzado disponible;
Una invocación de Configure habitual cuando se apunta a un Solaris x86 se parece a esto:
sh ./Configure -des -Dusecrosscompile \
-Dcc = i386-pc-solaris2.11-gcc \
-Dsysroot = $ SYSROOT \
-Alddlflags = "-Wl, -z, notext" \
-Dtargethost = ... # Las opciones habituales de compilación cruzada
La adición de lddlflags es el único bit anormal.
Preconstruido BINARIOS OF PERL PARA SOLARÍS.
Puede obtener archivos binarios prediseñados para Solaris enhttp://www.sunfreeware.com/>,
<http://www.blastwave.org>, ActiveStatehttp://www.activestate.com/>, y
<http://www.perl.com/> debajo de la lista de Binarios en la parte superior de la página. Probablemente hay
otras fuentes también. Tenga en cuenta que estos sitios están bajo el control de sus
propietarios respectivos, no los desarrolladores de perl.
TIEMPO DE FUNCIONAMIENTO CUESTIONES PARA PERL ON SOLARÍS.
Límites on Números of Abierto Archivos on solaris.
La característica stdio(3C) la página de manual señala que para las aplicaciones LP32, solo se pueden abrir 255 archivos usando
fopen (), y solo los descriptores de archivo 0 a 255 se pueden usar en una secuencia. Desde perl
llamadas open() y luego en abierto(3C) con el descriptor de archivo resultante, perl se limita a
255 archivos abiertos simultáneos, incluso si sysopen () se utiliza. Si esto resulta ser un
problema insuperable, puede compilar perl como una aplicación LP64, consulte "Creación de un LP64
perl "para obtener más detalles. Tenga en cuenta también que el límite de recursos predeterminado para los descriptores de archivos abiertos en
Solaris es 255, por lo que tendrá que modificar su ulimit o rctl (Solaris 9 en adelante)
apropiadamente.
ESPECÍFICO DE SOLARIS MÓDULOS.
Consulte los módulos en los espacios de nombres Solaris :: y Sun :: Solaris en CPAN, consulte
<http://www.cpan.org/modules/by-module/Solaris/> y
<http://www.cpan.org/modules/by-module/Sun/>.
ESPECÍFICO DE SOLARIS PROBLEMAS CON MÓDULOS.
Proc :: ProcessTable on Solaris
Proc :: ProcessTable no se compila en Solaris con perl5.6.0 y superior si tiene
LARGEFILES definido. Dado que la compatibilidad con archivos grandes es la predeterminada en 5.6.0 y posteriores,
para tomar medidas especiales para utilizar este módulo.
El problema es que varias estructuras visibles a través de procfs usan off_t, y si compila
con soporte de archivo grande, estos cambian de 32 bits a 64 bits. Por lo tanto, lo que obtienes de
procfs no coincide con las estructuras de perl, lo que genera basura. Ver Proc(4)
para mayor discusión.
Una solución para Proc :: ProcessTable es editar Makefile para eliminar explícitamente las banderas de archivos grandes
de los que MakeMaker recoge de Config.pm. Esto resultará en Proc :: ProcessTable
siendo construido en el entorno correcto. Entonces todo debería estar bien siempre que
Proc :: ProcessTable no intenta compartir off_t's con el resto de perl, o si lo hace
debe especificarse explícitamente como off64_t.
BSD :: Recurso on Solaris
BSD :: Las versiones de recursos anteriores a 1.09 no se compilan en Solaris con perl 5.6.0 y
superior, por las mismas razones que Proc :: ProcessTable. BSD :: Versiones de recursos a partir de
1.09 tiene una solución para el problema.
Net :: SSLeay on Solaris
Net :: SSLeay requiere que esté presente un / dev / urandom. Este dispositivo está disponible en Solaris 9
adelante. Para versiones anteriores de Solaris, puede obtener el paquete SUNWski (empaquetado
con varios productos de software de Sun, por ejemplo Sun WebServer, que es parte de la
Extensión de intranet del servidor Solaris, o Sun Directory Services, parte de Solaris para
ISP) o descargue el paquete ANDIrand desdehttp://www.cosy.sbg.ac.at/~andi/>. Si utiliza
SUNWski, haz un enlace simbólico / dev / urandom apuntando a / dev / random. Para obtener más detalles, consulte
Documento ID27606 titulado "Requisitos de compatibilidad diferentes / dev / aleatorios en Solaris [TM]
Entornos operativos ", disponible enhttp://sunsolve.sun.com>.
Es posible utilizar el demonio de recolección de entropía (escrito en Perl), disponible en
<http://www.lothar.com/tech/crypto/>.
SunOS 4.x
En SunOS 4.x lo más probable es que desee utilizar SunOS ld, / usr / bin / ld, ya que cuanto mas
Las versiones recientes de GNU ld (como 2.13) ya no parecen funcionar para construir Perl. Cuando
Al vincular las extensiones, GNU ld se pone muy triste y arroja muchos errores como este
... reubicación truncada para encajar: BASE13 ...
y muere. Por lo tanto, el archivo de sugerencias SunOS 4.1 establece explícitamente el ld para que sea / usr / bin / ld.
A partir de Perl 5.8.1, la carga dinámica de bibliotecas (DynaLoader, XSLoader) también parece
se han introducido en SunOS 4.x. Por lo tanto, el valor predeterminado es construir Perl estáticamente.
Ejecutar el conjunto de pruebas en SunOS 4.1 es un poco complicado ya que lib / Tie / Archivo / t / 09_gen_rs
la prueba se cuelga (subprueba # 51, FWIW) por alguna razón desconocida. Solo detén la prueba y mata eso
particular proceso de Perl.
Hay varias otras fallas, que a partir de SunOS 4.1.4 y gcc 3.2.2 se parecen mucho a gcc
insectos. Muchas de las fallas ocurren en las pruebas de Encode, donde, por ejemplo, cuando la prueba
espera "0" y obtiene "XNUMX", que después de entrecerrar un poco los ojos debería verse muy extraño.
Otro ejemplo es antes en t / ejecutar / fresh_perl dónde chr(0xff) se espera pero la prueba
falla porque el resultado es chr(0xff). Exactamente.
Este es el resultado de "hacer prueba" de dicha combinación:
Falló 27 scripts de prueba de 745, 96.38% bien.
Ejecutar el "arnés" es doloroso debido a las muchas pruebas fallidas relacionadas con Unicode que
Salida de megabytes de mensajes de falla, pero si uno espera pacientemente, obtiene estos resultados:
Estadísticas de prueba fallidas Wstat Total de fallos fallidos Lista de fallidos
-------------------------------------------------- ---------------------------
...
../ext/Encode/t/at-cn.t 4 1024 29 4 13.79% 14-17
../ext/Codificar/t/at-tw.t 10 2560 17 10 58.82 % 2 4 6 8 10 12
14 - 17
../ext/Codificar/t/enc_data.t 29 7424 ?? ?? % ??
../ext/Codificar/t/enc_eucjp.t 29 7424 ?? ?? % ??
../ext/Codificar/t/enc_module.t 29 7424 ?? ?? % ??
../ext/Codificar/t/codificación.t 29 7424 ?? ?? % ??
../ext/Encode/t/grow.t 12 3072 24 12 50.00% 2 4 6 8 10 12 14
+16 18 20 22 24
Estadísticas de prueba fallidas Wstat Total de fallos fallidos Lista de fallidos
-------------------------------------------------- ----------------------------
../ext/Encode/t/guess.t 255 65280 29 40% 137.93-10
../ext/Encode/t/jperl.t 29 7424 15 30 200.00% 1-15
../ext/Encode/t/mime-header.t 2 512 10 2% 20.00-2
../ext/Codificar/t/perlio.t 22 5632 38 22 57.89% 1-4 9-16 19-20
23, 24 27, 32
../ext/List/Util/t/shuffle.t 0 139 ?? ?? % ??
../ext/PerlIO/t/encoding.t 14 1 7.14 % 11
../ext/PerlIO/t/fallback.t 9 2 22.22% 3 5
../ext/Socket/t/socketpair.t 0 2 45 70% 155.56-11
../lib/CPAN/t/vcmp.t 30 1 3.33% 25
../lib/Tie/File/t/09_gen_rs.t 0 15 ?? ?? % ??
../lib/Unicode/Collate/t/test.t 199 30 15.08% 7 26-27 71-75
81-88 95 101
103-104 106 108-
109 122 124 161
169 - 172
../lib/sort.t 0 139 119% 26-21.85
op / alarm.t 4 1 25.00% 4
op / utfhash.t 97 1 1.03% 31
run / fresh_perl.t 91 1 1.10% 32
uni / tr_7jis.t ?? ?? % ??
uni / tr_eucjp.t 29 7424 6 12 200.00% 1-6
uni / tr_sjis.t 29 7424 6 12 200.00% 1-6
Ocho pruebas y 56 subpruebas omitidas.
Scripts de prueba fallidos del 27/811, 96.67% está bien. 1383/75399 subpruebas fallaron, 98.17% bien.
La característica alarma() la falla de la prueba es causada por sistema() aparentemente bloqueando alarma(). Es decir
probablemente un error de libc, y dado que SunOS 4.x se terminó hace años, no espere
tu aliento para una solución. Además de eso, no intentes nada demasiado Unicode-y, especialmente
con Encode, y debería estar bien en SunOS 4.x.
Utilice perlsolaris en línea utilizando los servicios de onworks.net