/
INSTRUCCIONES
318 lines (202 loc) · 11.6 KB
/
INSTRUCCIONES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
INSTRUCCIONES PARA PROBAR EUSTAGGER LITE
========================================
Hemos probado Eustagger Lite en diferentes versiones de GNU/Linux, algunas
más modernas que otras (desde RHEL5 hasta Ubuntu 13.10). Las instrucciones
que vienen a continuación deberían funcionar para Ubuntu 12.04, 13.10, 14.04, 16.04 y
Fedora 18-20.
Eustagger Lite tiene las siguientes dependencias:
pcre++ (probado con la versión 0.9.5)
vislcg 3 (probado con la versión 20130826)
SWI Prolog (probado con las versiones 5.10.5 y 6.6.6)
Foma (probado con las versiones 0.9.17 y 0.9.18)
Freeling (probado con la versión 3.1)
Boost (probado con la versiones 1.53 - 1.58)
Al mismo tiempo esas librerías y programas tienen sus propias dependencias.
Algunas de ellas se pueden instalar desde los repositorios oficiales de las
citadas distribuciones de GNU/Linux:
Ubuntu:
=======
$ apt-get install subversion make cmake cpp libicu48 libicu-dev\
autoconf bison flex swi-prolog zlib1g zlib1g-dev libpcre3 libpcre3-dev\
libpcre++0 libpcre++-dev libboost-all-dev
Para la versión 16.04:
$ apt-get install subversion make cmake cpp libicu55 libicu-dev\
autoconf bison flex zlib1g zlib1g-dev libpcre3 libpcre3-dev\
libpcre++0v5 libpcre++-dev libboost-all-dev
Fedora:
=======
$ yum install subversion make cmake gcc-c++ libicu libicu-devel\
autoconf bison flex pl pl-devel zlib zlib-devel pcre pcre-devel\
boost boost-devel
En Fedora es necesario instalar pcre++ a mano. Para ello:
$ wget http://www.daemon.de/idisk/Apps/pcre++/pcre++-0.9.5.tar.gz
o descargar de nuestro servidor:
$ wget http://ixa2.si.ehu.es/eustagger/download/pcre++-0.9.5.tar.gz
Descomprimir e instalar en el prefix elegido:
$ tar -zxvf pcre++-0.9.5.tar.gz
$ cd pcre++-0.9.5
$ ./configure (en algunos sistemas de 64 bit es necesario --with-pcre-lib=/usr/lib64)
$ make
$ make install
(el prefix por defecto es /usr/local, para cambiarlo utilizar la opción --prefix de la orden configure)
REQUIEREN INSTALACIÓN MANUAL:
foma:
=====
Descargar:
$ wget http://ixa2.si.ehu.es/eustagger/download/foma-0.9.17.tar.gz
Descomprimir, compilar e instalar:
$ tar -zxvf foma-0.9.17.tar.gz
$ cd foma-0.9.17
$ make
$ make install
(el prefix por defecto es /usr/local, para cambiarlo modificar el fichero Makefile)
POSIBLE ERROR 1:
Al compilar foma (al ejecutar el comando make) si da error que no encuentra la librería libreadline:
/usr/bin/ld: cannot find -lreadline
/usr/bin/ld: cannot find -ltermcap
collect2: error: ld returned 1 exit status
Makefile:68: recipe for target 'libfoma.so.0.9.17' failed
make: *** [libfoma.so.0.9.17] Error 1
Hay que instalar la librería. Por ejemplo en Ubuntu (16.04):
apt-get install libreadline-dev
vislcg3:
========
Descargar:
$ wget http://ixa2.si.ehu.es/eustagger/download/vislcg3-20130826.tar.gz
Descomprimir, compilar e instalar (se usa cmake):
$ tar -zxvf vislcg3-20130826.tar.gz
$ cd vislcg3-20130826
$ ./cmake.sh
$ make -j3
$ make install
Copiar manualmente los ficheros *.h y *.hpp a nuestro prefix de instalación (por ejemplo /usr/local/include):
$ cp src/*.h src/*.hpp /usr/local/include
(si se desea cambiar el prefix es necesario pasar la opción -DCMAKE_INSTALL_PREFIX=/path a cmake.sh)
(para que no se utilice tcmalloc hay que pasar al cmake.sh -DUSE_TCMALLOC:BOOL=false. Es un posible error que puede ocurrir en Ubuntu 16.04)
(si el sistema no encontrara las librerías Boost exportar una variable de entorno BOOST_ROOT=/instalacion_boost. Este error también puede ocurrir al instalar Freeling 3.1)
Para encontrar la instalación de boost, por ejemplo en Ubuntu 16.04 de 64 bits:
find / -name "boost.so.*" y nos devuelve la ruta:/usr/lib/x86_64-linux-gnu/libboost_system.so
export BOOST_ROOT=/usr/lib/x86_64-linux-gnu
Freeling 3.1
============
Hemos usado la versión 3.1 de Freeling (la 3.0 no vale).
Descargar el paquete de:
http://devel.cpl.upc.edu/freeling/downloads/32
O descargar de nuestro servidor:
$ wget http://ixa2.si.ehu.es/eustagger/download/freeling-3.1.tar.gz
Descomprimir, compilar e instalar:
$ tar -zxvf freeling-3.1.tar.gz
$ cd freeling-3.1
( En fedora/RH y posiblemente en Ubuntu 16.04: $ export LDFLAGS=-lboost_system )
$ ./configure --disable-warnings
$ make
$ make install
* Importante: --disable-warnings para la orden configure
* Si se desea usar una versión boost diferente a la de la distribución de GNU/Linux,
antes de ejecutar configure debemos hacer lo siguiente:
$ export LDFLAGS="-L/mi_instalacion_de_boost/lib -lboost_system"
$ export CPPFLAGS="-I/mi_instalacion_de_boost/include"
* Al compilar Freeling 3.1 puede dar el siguiente error:
../../src/include/freeling/morfo/foma_FSM.h:1: error: stray '\357' in program
../../src/include/freeling/morfo/foma_FSM.h:1: error: stray '\273' in program
../../src/include/freeling/morfo/foma_FSM.h:1: error: stray '\277' in program
Para evitarlo editar el fichero src/include/freeling/morfo/foma_FSM.h y suprimir
las primeras líneas de comentarios.
swi-prolog:
============
Desde la versión Ubuntu 14.04 en adelante, la versión de prolog instalada mediante apt es la 7.x.x, pero la versión más reciente que funciona con eustagger es la 6.6.6. Por lo tanto, hay que descargar la versión swipl-6.6.6 y compilarla a mano:
Descargar:
$ wget http://www.swi-prolog.org/download/stable/src/pl-6.6.6.tar.gz
Y se pueden seguir los pasos descritos en http://www.swi-prolog.org/build/ o realizar estos pasos:
$ cd src/
$ . /configure
$ make
$ sudo make install
$ cd ../packages
$ . /configure
$ make
$ sudo make install
POSIBLE ERROR 1: Si ocurre algún error durante la instalación, es posible que se necesiten instalar los paquetes libxpm-dev y libarchive-dev. En Ubuntu:
$ sudo apt-get install libxpm-dev libarchive-dev
POSIBLE ERROR 2: Si al compilar da error con JPL, se puede continuar con la instalación puesto que no es necesario. Ejemplo de error:
libjava.so not found
libverify.so not found
libjvm.so not found
POSIBLE ERROR 3: Al ejecutar ./configure es posible que se tenga que activar --enable-shared. Ejemplo:
$ ./configure --prefix=/usr/local/swipl-6.6.6/ --enable-shared
Eustagger
=========
Descargar:
$ wget https://github.com/ixa-ehu/eustagger-lite/archive/master.zip
Descomprimir, compilar e instalar:
$ cd eustagger
$ autoconf
$ ./configure
Si se usa el swipl del sistema operativo seguramente habrá que indicar a configure donde están los ficheros con las opciones "--with-swipl-include=" y "--with-lib-include=".
En Ubuntu hay que añadir "--with-swipl-include=/usr/lib/swi-prolog/include"...
Por ejemplo en un Ubuntu 16.04 de 32 bits, suponiendo que hemos instalado swi-prolog en la carpeta /usr/local/swipl-6.6.6, vislcg3 en /usr/local/vislcg3 y que queremos instalar eustagger en /usr/local/eustagger pondriamos lo siguiente:
$ ./configure \
--with-swipl-include=/usr/local/swipl-6.6.6/lib/swipl-6.6.6/include/\
--with-swipl-lib=/usr/local/swipl-6.6.6/lib/swipl-6.6.6/lib/i686-linux/\
--with-swipl-bin=/usr/local/swipl-6.6.6/bin/\
--with-vislcg3-include=/usr/local/vislcg3/lib/include\
--with-vislcg3-lib=/usr/local/vislcg3/lib/\
--prefix=/usr/local/eustagger
$ make
$ make install
El prefix por defecto para la instalación es /usr/local. Para cambiarlo hacer uso de la opción --prefix al ejecutar configure. Si no se encontrara alguna librería se le puede indicar a configure donde buscarla. Para ver todas las opciones: './configure --help'
Parece que las diferentes distribuciones de GNU/Linux colocan los headers de swipl en sitios diversos. Por ejemplo en Ubuntu es necesario usar --with-swipl-include=/usr/lib/swi-prolog/include para encontrar esos headers.
Por último para probar eustagger hay que realizar los siguientes cambios en el entorno:
$ export IXA_PREFIX=nuestro_prefix (/usr/local?)
$ export LD_LIBRARY_PATH=nuestro_prefix/lib:$LD_LIBRARY_PATH
Ya estamos listos para ejecutar eustagger:
$ eustagger_lite fichero_de_texto.txt
Para lanzar eustagger como servicio:
$ eustagger_lite -p [portua]
cliente para eustagger:
$ eustagger_lite_client.pl [portua] [ruta_completa_del_fichero]
(de momento los ficheros de entrada deben usar la codificación UTF-8)
POSIBLE ERROR 1:
Al ejecutar eustagger en Ubuntu 16.04 puede dar un error en tcmalloc:
eustagger_lite ~/test1.txt
src/tcmalloc.cc:278] Attempt to free invalid pointer 0x8c94bd8
Aborted (core dumped)
Vislcg3 utiliza la librería libtcmalloc.so. Si ocurre este error hay dos posibles soluciones:
1) En Ubuntu eliminar el paquete libgoogle-perftools-dev:
$sudo apt-get remove libgoogle-perftools-dev
2) Compilar de nuevo vislcg3 pasandole el parámetro -DUSE_TCMALLOC:BOOL=false a cmake.sh (No esta testeado)
POSIBLE ERROR 2:
Al ejecutar eustagger si no encuentra las librerías (libcg3.so edo libeustagger.so) falta crear los enlaces simbólicos. Esto puede ocurrir cuando se han instalado vislcg3 y eustagger en un directorio distinto de /usr/local.
POSIBLE ERROR 3:
Si al ejecutar eustagger en Ubuntu 16.04 de 64 bits da el siguiente error:
//libeustagger.so: undefined reference to `pcrepp::Pcre::split(std::string const&)'
.//libeustagger.so: undefined reference to `u_fgetc_48'
.//libeustagger.so: undefined reference to `pcrepp::Pcre::search(std::string const&, int)'
.//libeustagger.so: undefined reference to `pcrepp::Pcre::search(std::string const&)'
.//libeustagger.so: undefined reference to `ucnv_setDefaultName_48'
.//libeustagger.so: undefined reference to `u_fclose_48'
.//libeustagger.so: undefined reference to `freeling::word::set_form(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
.//libeustagger.so: undefined reference to `u_cleanup_48'
.//libeustagger.so: undefined reference to `uloc_getDefault_48'
.//libeustagger.so: undefined reference to `u_fgetfile_48'
.//libeustagger.so: undefined reference to `pcrepp::Pcre::Pcre(std::string const&, std::string const&)'
.//libeustagger.so: undefined reference to `pcrepp::Pcre::replace(std::string const&, std::string const&)'
.//libeustagger.so: undefined reference to `freeling::word::get_form() const'
.//libeustagger.so: undefined reference to `ucnv_getDefaultName_48'
.//libeustagger.so: undefined reference to `freeling::word::word(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
.//libeustagger.so: undefined reference to `u_errorName_48'
.//libeustagger.so: undefined reference to `uloc_setDefault_48'
.//libeustagger.so: undefined reference to `freeling::analysis::get_tag() const'
.//libeustagger.so: undefined reference to `CG3::cbuffers'
.//libeustagger.so: undefined reference to `freeling::analysis::analysis(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
.//libeustagger.so: undefined reference to `pcrepp::Pcre::Pcre(std::string const&)'
.//libeustagger.so: undefined reference to `u_fgets_48'
.//libeustagger.so: undefined reference to `freeling::analysis::get_lemma() const'
.//libeustagger.so: undefined reference to `u_fopen_48'
.//libeustagger.so: undefined reference to `u_feof_48'
.//libeustagger.so: undefined reference to `pcrepp::Pcre::get_match(int) const'
.//libeustagger.so: undefined reference to `u_finit_48'
.//libeustagger.so: undefined reference to `u_init_48'
collect2: error: ld returned 1 exit status
Hay que añadir a la variable de entorno LD_LIBRARY_PATH la siguiente ruta:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH