Archivo del Autor: Cris

Problemas con LibreOffice en un Alfresco 5.2. limpio

He realizado varias instalaciones en diversos entornos de Alfresco 5.2, y en casi todos los casos he tenido que descargar las dependencias necesarias para que funcionara correctamente. Hasta aquí todo normal. El problema vino hace unos días en el que he tenido que realizar una instalación en un entorno el cual me ha dado varios quebraderos de cabeza. Debido a la poca información que he encontrado os voy a explicar qué error daba y cómo lo he solventado:

¡Manos a la obra!

  • He realizado una instalación de cero con un instalador de Alfresco 5.2. en ubuntu 14.04.1 LTS
  • Al arrancar, en el catalina.out, veo el siguiente problema relacionado con LibreOffice:
    ERROR [repo.content.JodConverterSharedInstance] [localhost-startStop-1] Unable to start JodConverter library. The following error is shown for informational purposes only.
    
     org.artofsolving.jodconverter.office.OfficeException: failed to start and connect
    
    ....
    
    Caused by: java.util.concurrent.ExecutionException: org.artofsolving.jodconverter.office.OfficeException: could not establish connection
  • Compruebo si libreoffice se ha arrancado:
    > alfresco/libreoffice/scripts$ ./libreoffice_ctl.sh status
    
    libreoffice not running
  • Intentamos arrancarlo con el script:
    > alfresco/libreoffice/scripts$ ./libreoffice_ctl.sh start
    
    ./libreoffice_ctl.sh : libreoffice could not be started
  • Para ver más detalles sobre qué ocurre, ejecutamos lo siguiente:
    > alfresco/libreoffice/scripts$ cd ../program/
  • Ejecutamos lo siguiente:
    sudo ./soffice --nologo --headless --nofirststartwizard --accept='socket,host=127.0.0.1,port=8100,tcpNoDelay=1;urp;StarOffice.Service'
    
     Resultado:
    
     javaldx: Could not find a Java Runtime Environment!
    
     Warning: failed to read path from javaldx
    
     /opt/alfresco/libreoffice/program/.soffice.bin: error while loading shared libraries: libcairo.so.2: cannot open shared object file: No such file or directory
  • El error de Java lo veremos más tarde, vamos a centrarnos en las dependencias. Intentamos instalar la dependencia que necesita:
    > alfresco/libreoffice/program$ sudo apt-get install libcairo2
    
     Leyendo lista de paquetes... Hecho
    
     Creando árbol de dependencias
    
     Leyendo la información de estado... Hecho
    
     Tal vez quiera ejecutar «apt-get -f install» para corregirlo:
    
     Los siguientes paquetes tienen dependencias incumplidas:
    
     cfg2html-linux : Depende: gawk
    
     libcairo2 : Depende: libpixman-1-0 (>= 0.18.0) pero no va a instalarse
    
     Depende: libxcb-render0 pero no va a instalarse
    
     Depende: libxcb-shm0 pero no va a instalarse
    
     E: Dependencias incumplidas. Intente «apt-get -f install» sin paquetes (o especifique una solución).
  • Para solucionar el error de dependencias, debemos ejecutar lo siguiente:
    sudo apt-get autoremove 

    Cuando termine seguimos con el siguiente comando:

    sudo apt-get autoclean

    Cuando termine seguimos con el siguiente comando:

    sudo apt-get update

    Cuando termine seguimos con el siguiente comando:

    sudo apt-get -f install
  • Finalmente en este punto se instalaran aquellas dependencias que no nos dejaban previamente. Ejecutamos:
    sudo apt-get install libcairo2

    Y ahora sí: Se instalan correctamente.

  • Para verificar que nuestro LibreOffice funciona correctamente:
    > alfresco/libreoffice/program$ sudo ./soffice --nologo --headless --nofirststartwizard --accept='socket,host=127.0.0.1,port=8100,tcpNoDelay=1;urp;StarOffice.Service'
    
    javaldx: Could not find a Java Runtime Environment!Warning: failed to read path from javaldx
  • Este warning se debe a que tenemos que arrancar libreoffice desde el servicio de Alfresco porque es donde se exporta la variable de Java. Hacemos lo siguiente:
    sudo service alfresco restart && tail -n500 -f ruta_alfresco/tomcat/logs/catalina.out
  • Y observamos el log que por fin se establece conexión:
     org.artofsolving.jodconverter.office.OfficeProcess start
    
     INFORMACIÓN: Using original OpenOffice command: [/opt/alfresco/libreoffice/program/soffice.bin, -accept=socket,host=127.0.0.1,port=8100;urp;, -env:UserInstallation=file:///opt/alfresco/tomcat/temp/.jodconverter_socket_host-127.0.0.1_port-8100, -headless, -nocrashreport, -nodefault, -nofirststartwizard, -nolockcheck, -nologo, -norestore]
    
     ago 21, 2017 5:12:29 PM org.artofsolving.jodconverter.office.OfficeProcess start
    
     INFORMACIÓN: starting process with acceptString 'socket,host=127.0.0.1,port=8100,tcpNoDelay=1' and profileDir '/opt/alfresco/tomcat/temp/.jodconverter_socket_host-127.0.0.1_port-8100'
    
     ago 21, 2017 5:12:29 PM org.artofsolving.jodconverter.office.OfficeProcess start
    
     INFORMACIÓN: started process; pid = 18835

Espero que os ayude a más de uno (o a mi si me vuelve a ocurrir :-P).

Links relacionados con la configuración de Libre Office en Alfresco  (muy útiles):

¡Un saludo!

[ERROR]: The amp will overwrite an existing file in the war

Buenas tardes.

Os dejo aquí este tip por si el día de mañana os ocurre para que no os volváis loc@s :-P

Un poco de historia…

Intentando instalar mis amps (carpetas amps/ y amps_share/) con el script apply_amps.sh en uno de mis módulos me daba el siguiente error y no lo instalaba:

06280001 An error was encountered during deployment of the AMP into the WAR: 06280000 ERROR: The amp will overwrite an existing file in the war ‘/themes/sampleTheme/images/alfresco-imagelib.png’. Execution halted. By specifying -force , you can force installation of AMP regardless of the current war state.

El problema es que, si utilizamos el -force como se indica en ese parrafo obligamos a alfresco a sobre escribir archivos que ya tuviera desplegados previamente. Pero más allá de eso: ¿Por qué Alfresco tiene una versión previa de mi archivo si estoy desplegando una nueva?

Si miramos un poco más y usamos el ./apply_amps.sh -force , tenemos lo siguiente:

– WARNING: The file ‘/themes/sampleTheme/images/alfresco-imagelib.png’ is being overwritten by this module. The original has been backed-up to ‘/WEB-INF/classes/alfresco/module/backup/f2d9c362-73b2-11e7-9166-857b2fac416e.bin’

Y nuestro problema vendrá cuando corrijamos esa ruta e intentemos desplegar esa misma imagen en una ruta distinta, veremos como Alfresco carga la que tiene en backup.

Solución.

  • Pongamos que nuestro Alfresco es el 5.2.
  • Cogemos el war limpio de la misma versión. ¿Qué significa limpio? Pues nos descargamos los fuentes de Alfresco, y tomamos el war de la misma versión que nosotros usamos. Vamos, que no haya sido utilizado nunca.
  • Tenemos que renombrar el war que queramos sustituir de nuestra instalación: Por ejemplo de alfresco.war a alfresco.war.previous o lo que queráis pero .lo-que-quieras para que no sea tenido en cuenta cuando cargue tomcat.
  • Copiamos el war en nuestro_alfresco/tomcat/webapps/
  • Ejecutamos ./apply_amps.sh (o bat si es para plataforma windows).
  • Veremos como habrá desaparecido tanto el error como los warnings.
  • Serás más feliz :-)

Espero que os sirva.

¡Un saludo!

[Tip] Duplicity Error: The file specification cannot match any files in the base directory

Buenas.

Si trabajáis con Alfresco, de cara a la estrategia a seguir para implantar un sistema de backup y restore, seguramente os habréis topado con la utilidad BART. Pues bien, una vez configurado todo el sistema, al intentar lanzar un comando para realizar un backup, el script nos lanza el siguiente error:

Fatal Error: The file specification
/home/cristina/alfresco_backup/alfresco-db-backup
cannot match any files in the base directory
/opt/alfresco-5.2.e
Useful file specifications begin with the base directory or some
pattern (such as '**') which matches the base directory.

El error está relacionado con este problema, es decir, un problema con cómo está montado los include y exclude en la función filesBackup de dentro del archivo alfresco-bart.sh, deberemos tocar esa función para introducir “**” al comienzo y al final de cada variable.

Original:

function filesBackup {
# Getting a variable to know all includes and excludes
FILES_DIR_INCLUDES="$ALF_INSTALLATION_DIR"

if [ -d "$INDEXES_BACKUP_DIR" ]; then
OPT_INDEXES_BACKUP_DIR=" --exclude $INDEXES_BACKUP_DIR"
fi
if [ -d "$INDEXES_DIR" ]; then
OPT_INDEXES_DIR=" --exclude $INDEXES_DIR"
fi
if [ -d "$ALF_CONTENTSTORE" ]; then
OPT_ALF_CONTENTSTORE=" --exclude $ALF_CONTENTSTORE"
fi
if [ -d ${ALF_DIRROOT}/contentstore.deleted ]; then
OPT_ALF_CONTENSTORE_DELETED=" --exclude ${ALF_DIRROOT}/contentstore.deleted"
fi
if [ -d "$ALF_CACHED_CONTENTSTORE" ]; then
OPT_CACHED_CONTENTSTORE=" --exclude $CACHED_CONTENTSTORE"
fi
if [ -d "$ALF_CONTENTSTORE2" ]; then
OPT_ALF_CONTENTSTORE2=" --exclude $ALF_CONTENTSTORE2"
fi
if [ -d "$ALF_CONTENTSTORE3" ]; then
OPT_ALF_CONTENTSTORE3=" --exclude $ALF_CONTENTSTORE3"
fi
if [ -d "$ALF_CONTENTSTORE4" ]; then
OPT_ALF_CONTENTSTORE4=" --exclude $ALF_CONTENTSTORE4"
fi
if [ -d "$ALF_CONTENTSTORE5" ]; then
OPT_ALF_CONTENTSTORE5=" --exclude $ALF_CONTENTSTORE5"
fi
if [ -d "$LOCAL_BACKUP_DB_DIR" ]; then
OPT_LOCAL_BACKUP_DB_DIR=" --exclude $LOCAL_BACKUP_DB_DIR"
fi

echo "$LOG_DATE_LOG - $BART_LOG_TAG Backing up the Alfresco files to $BACKUPTYPE" >> $ALFBRT_LOG_FILE
echo "$LOG_DATE_LOG - $BART_LOG_TAG Starting backup - Alfresco files" >> $ALFBRT_LOG_FILE
echo "$LOG_DATE_LOG - $BART_LOG_TAG Running command - $DUPLICITYBIN $PARAMS $FILES_DIR_INCLUDES $OPT_INDEXES_BACKUP_DIR $OPT_INDEXES_DIR $OPT_ALF_CONTENTSTORE $OPT_ALF_CONTENSTORE_DELETED $OPT_CACHED_CONTENTSTORE $OPT_ALF_CONTENTSTORE2 $OPT_ALF_CONTENTSTORE3 $OPT_ALF_CONTENTSTORE4 $OPT_ALF_CONTENTSTORE5 $OPT_LOCAL_BACKUP_DB_DIR $OPT_LOCAL_DB_DIR $DEST/files" >> $ALFBRT_LOG_FILE

# files backup itself
$DUPLICITYBIN $PARAMS $FILES_DIR_INCLUDES $OPT_INDEXES_BACKUP_DIR $OPT_INDEXES_DIR \
$OPT_ALF_CONTENTSTORE $OPT_ALF_CONTENSTORE_DELETED $OPT_CACHED_CONTENTSTORE \
$OPT_ALF_CONTENTSTORE2 $OPT_ALF_CONTENTSTORE3 $OPT_ALF_CONTENTSTORE4 $OPT_ALF_CONTENTSTORE5 \
$OPT_LOCAL_BACKUP_DB_DIR $OPT_LOCAL_DB_DIR $DEST/files >> $ALFBRT_LOG_FILE
echo "$LOG_DATE_LOG - $BART_LOG_TAG Files backup done!" >> $ALFBRT_LOG_FILE
}

Corregido:

unction filesBackup {
# Getting a variable to know all includes and excludes
FILES_DIR_INCLUDES="$ALF_INSTALLATION_DIR"

if [ -d "$INDEXES_BACKUP_DIR" ]; then
OPT_INDEXES_BACKUP_DIR=" --exclude **$INDEXES_BACKUP_DIR**"
fi
if [ -d "$INDEXES_DIR" ]; then
OPT_INDEXES_DIR=" --exclude **$INDEXES_DIR**"
fi
if [ -d "$ALF_CONTENTSTORE" ]; then
OPT_ALF_CONTENTSTORE=" --exclude **$ALF_CONTENTSTORE**"
fi
if [ -d ${ALF_DIRROOT}/contentstore.deleted ]; then
OPT_ALF_CONTENSTORE_DELETED=" --exclude **${ALF_DIRROOT}/contentstore.deleted**"
fi
if [ -d "$ALF_CACHED_CONTENTSTORE" ]; then
OPT_CACHED_CONTENTSTORE=" --exclude **$CACHED_CONTENTSTORE**"
fi
if [ -d "$ALF_CONTENTSTORE2" ]; then
OPT_ALF_CONTENTSTORE2=" --exclude **$ALF_CONTENTSTORE2**"
fi
if [ -d "$ALF_CONTENTSTORE3" ]; then
OPT_ALF_CONTENTSTORE3=" --exclude **$ALF_CONTENTSTORE3**"
fi
if [ -d "$ALF_CONTENTSTORE4" ]; then
OPT_ALF_CONTENTSTORE4=" --exclude **$ALF_CONTENTSTORE4**"
fi
if [ -d "$ALF_CONTENTSTORE5" ]; then
OPT_ALF_CONTENTSTORE5=" --exclude **$ALF_CONTENTSTORE5**"
fi
if [ -d "$LOCAL_BACKUP_DB_DIR" ]; then
OPT_LOCAL_BACKUP_DB_DIR=" --exclude **$LOCAL_BACKUP_DB_DIR**"
fi

echo "$LOG_DATE_LOG - $BART_LOG_TAG Backing up the Alfresco files to $BACKUPTYPE" >> $ALFBRT_LOG_FILE
echo "$LOG_DATE_LOG - $BART_LOG_TAG Starting backup - Alfresco files" >> $ALFBRT_LOG_FILE
echo "$LOG_DATE_LOG - $BART_LOG_TAG Running command - $DUPLICITYBIN $PARAMS $FILES_DIR_INCLUDES $OPT_INDEXES_BACKUP_DIR $OPT_INDEXES_DIR $OPT_ALF_CONTENTSTORE $OPT_ALF_CONTENSTORE_DELETED $OPT_CACHED_CONTENTSTORE $OPT_ALF_CONTENTSTORE2 $OPT_ALF_CONTENTSTORE3 $OPT_ALF_CONTENTSTORE4 $OPT_ALF_CONTENTSTORE5 $OPT_LOCAL_BACKUP_DB_DIR $OPT_LOCAL_DB_DIR $DEST/files" >> $ALFBRT_LOG_FILE

# files backup itself
$DUPLICITYBIN $PARAMS $FILES_DIR_INCLUDES $OPT_INDEXES_BACKUP_DIR $OPT_INDEXES_DIR \
$OPT_ALF_CONTENTSTORE $OPT_ALF_CONTENSTORE_DELETED $OPT_CACHED_CONTENTSTORE \
$OPT_ALF_CONTENTSTORE2 $OPT_ALF_CONTENTSTORE3 $OPT_ALF_CONTENTSTORE4 $OPT_ALF_CONTENTSTORE5 \
$OPT_LOCAL_BACKUP_DB_DIR $OPT_LOCAL_DB_DIR $DEST/files >> $ALFBRT_LOG_FILE
echo "$LOG_DATE_LOG - $BART_LOG_TAG Files backup done!" >> $ALFBRT_LOG_FILE
}

Si os fijáis la única diferencia está en cómo se construye la llamada que se va a ejecutar en ese comando:
Original:

OPT_INDEXES_BACKUP_DIR=" --exclude $INDEXES_BACKUP_DIR"

Corregido:

OPT_INDEXES_BACKUP_DIR=" --exclude **$INDEXES_BACKUP_DIR**"

 

Espero que os sirve de ayuda :-)

¡Ah! Si queréis he he publicado en la comunidad de Venzia IT una guía completa para aprender más sobre Backup y Restore en Alfresco (aquí).

¡Un saludo! ^^

[ERROR] Solr4: Unable to create core alfresco

Buenas.

Hace poco al instalar unos amps en un Alfresco 5.0.d usando el instalador apply_amps.sh de el directorio /opt/alfresco-5.0.d/bin/, al arrancar mi alfresco me encontré el siguiente error:

ERROR [solr.core.CoreContainer] [coreLoadExecutor-5-thread-2] Unable to create core: alfresco
org.apache.solr.common.SolrException: Could not load core configuration for core alfresco
at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:66)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:554)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:261)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:253)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.solr.common.SolrException: org.xml.sax.SAXParseException; systemId: solrres:/schema.xml; lineNumber: 403; columnNumber: 105; An invalid XML character (Unicode: 0x2) was found in the comment.. Schema file is /Applications/Alfresco/community/alfresco-5.0.d/solr4/workspace-SpacesStore/schema.xml
at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:593)
at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:165)
at org.apache.solr.schema.IndexSchemaFactory.create(IndexSchemaFactory.java:55)
at org.apache.solr.schema.IndexSchemaFactory.buildIndexSchema(IndexSchemaFactory.java:69)
at org.apache.solr.core.ConfigSetService.createIndexSchema(ConfigSetService.java:89)
at org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:62)
... 9 more
Caused by: org.apache.solr.common.SolrException: org.xml.sax.SAXParseException; systemId: solrres:/schema.xml; lineNumber: 403; columnNumber: 105; An invalid XML character (Unicode: 0x2) was found in the comment.
at org.apache.solr.core.Config.<init>(Config.java:148)
at org.apache.solr.core.Config.<init>(Config.java:86)
at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:443)
... 14 more
Caused by: org.xml.sax.SAXParseException; systemId: solrres:/schema.xml; lineNumber: 403; columnNumber: 105; An invalid XML character (Unicode: 0x2) was found in the comment.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
at org.apache.xerces.impl.XMLScanner.scanComment(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanComment(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at org.apache.solr.core.Config.<init>(Config.java:134)
... 16 more

Después de leer esta incidencia de Alfresco, intenté aplicarla pero no pude porque sencillamente no aplicaba a mi instalación (ya tenía el archivo nombrado a solr4.xml y no había por ningún lado el parámetro docBase).

Finalmente dí con la solución:

  1. Me dirijo a la carpeta de mi instalación
    • cd /opt/alfresco-5.0.d/
  2. Paro Alfresco
    • ./alfresco.sh stop
  3. Elimino el directorio solr4/
    • rm -rf  tomcat/webapps/solr4/
  4. Inicio Alfresco
    • ./alfresco.sh start
  5. Monitorizo el log para ver que todo funciona bien
    • tail -n500 -f tomcat/logs/catalina.out

Y listo, todo como la seda.

Sé que es una chorrada pero me ha llevado algo de tiempo dar con lo que era y si publicándolo os puedo ahorrar algo de tiempo, mejor que mejor ;-)

¡¡Un saludo!!