Cara Install Pustaka PyLucene 4.3.0 Pada Slackware 14.0 - DHOCNET Blog

Cara Install Pustaka PyLucene 4.3.0 Pada Slackware 14.0

Cara Install Pustaka PyLucene 4.3.0 Pada Slackware 14.0



Lucene. Diambil dari situs resminya di http://lucene.apache.org/core, merupakan sebuah pustaka mesin pencari text (text search engine library) yang kaya akan fitur yang ditulis seluruhnya dengan bahasa pemrograman Java. Masih menurut informasi yang terdapat pada situs resminya, bila pustaka ini sangat cocok digunakan pada program-program yang memerlukan fasilitas pencarian teks yang lengkap. Juga, pustaka ini telah di-port ke beberapa bahasa pemrograman lain seperti Python hingga memungkinkan para programmer non Java untuk menggunakanya walaupun masih perlu untuk meng-install JDK pada mesinya.
DHOCNETADS

Nah, kebetulan, saya saat ini sedang ingin melakukan sesuatu dengan beberapa file yang menurut beberapa sumber, untuk dapat mengaksesnya, saya harus menggunakan pustaka Lucene. Dan karena saya lebih familiar dengan Python (dan karena saya juga bukan seorang programmer, :D), jadinya saya putuskan untuk meng-install Lucene yang di-port untuk Python. Mari, kita langsungkan saja pada proses instalasinya.

Sebelumnya, pastikan dulu bila paket apache-ant, pysetuptools, dan JDK sudah terinstall di sistem. Cek dengan perintah:

# ls /var/log/packages/ | grep apache
apache-ant-1.8.4-noarch-1_SBo
$ ls /var/log/packages/ | grep pysetuptools
pysetuptools-0.6c11-i486-1_SBo
# ls /var/log/packages/ | grep jdk  
jdk-7u9-i586-1_SBo

Bila ketiga paket diatas belum ter-install, silahkan lakukan instalasi terlebih dahulu. Saya menggunakan build script dari slackbuilds.org yang bisa didapat di http://slackbuilds.org/repository/14.0/development/apache-ant untuk apache-ant, http://slackbuilds.org/repository/14.0/python/pysetuptools untuk pysetuptools, dan http://slackbuilds.org/repository/14.0/development/jdk untuk JDK. Seperti yang sudah saya sebutkan di atas bila alamat tersebut hanya menyediakan build script saja. Sedangkan paket programnya tetap berada pada situs masing-masing pengembang.

Khusus untuk paket JDK, silahkan ambil paketnya di http://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-linux-i586.tar.gz untuk 32bit dan http://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-linux-x64.tar.gz untuk 64bit (saya menggunakan versi lama karena malas upgrade - internet lemot :P). Bila link diatas tidak bekerja, silahkan proses secara manual di http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html. Untuk paket apache-ant dan pysetuptools, link paket program tersedia pada halaman yang telah disebutkan. Proses instalasi ketiga paket, silahkan merujuk pada file README yang yang disertakan pada paket build script. Hehehe,.. :P

Ok. Saya anggap semuanya berjalan lancar dan mari menuju pada proses instalasi pustaka PyLucene. Download paket PyLucene dari http://www.apache.org/dyn/closer.cgi/lucene/pylucene atau dari http://www.globalish.com/am/lucene/pylucene.

Setelah proses download selesai, buka terminal emulator dan arahkan ketempat dimana paket pylucene-4.3.0-1-src.tar.gz tersimpan lalu ekstrak dengan perintah tar.

$ ls -l
total 44520
-rw-rw-rw- 1 root root     3851 Jan 15 23:13 KEYS
-rw-rw-rw- 1 root root 45532165 May 15 09:20 pylucene-4.3.0-1-src.tar.gz
$ tar xfvz pylucene-4.3.0-1-src.tar.gz
...
...
...
pylucene-4.3.0-1/java/org/apache/pylucene/analysis/PythonTokenFilter.java
pylucene-4.3.0-1/java/org/apache/pylucene/analysis/PythonTokenizer.java
pylucene-4.3.0-1/java/org/apache/pylucene/analysis/PythonTokenStream.java
$

Kemudia pindah direktori aktif ke direktori hasil ekstrak PyLucene.

$ cd pylucene-4.3.0-1

Sekarang saatnya building dan instalasi. Pada proses ini saya menggunakan panduan yang terdapat pada situs resmi PyLucene yang beralamat di http://lucene.apache.org/pylucene/install.html. Mari kita saksikan, :D

Sebelum dapat melakukan instalasi pustaka PyLucene, terlebih dahulu kita lakukan instalasi paket JCC. Jalankan perintah pushd jcc.

$ pushd jcc
/mnt/pub/res/pkg/devel/pylucene/pylucene-4.3.0-1/jcc /mnt/pub/res/pkg/devel/pylucene/pylucene-4.3.0-1

Edit file setup.py untuk menyesuaikan environment sistem. Oh iya, sebelumnya, pastikan dulu bila kamu sudah mengetahui dimana binari java (JDK) terinstall. Untuk memastikanya, gunakan perintah wich atau locate.

$ which java
/usr/lib/java/bin/java
$ su -c updatedb
Password:
$ locate java | grep bin/java
/usr/lib/jvm/jre/bin/java
/usr/lib/jvm/bin/javah
/usr/lib/jvm/bin/javac
/usr/lib/jvm/bin/java
/usr/lib/jvm/bin/javadoc
/usr/lib/java/bin/javadoc
/usr/lib/java/bin/javafxpackager
/usr/lib/java/bin/javaws
/usr/lib/java/bin/javah
/usr/lib/java/bin/java-rmi.cgi
/usr/lib/java/bin/javac
/usr/lib/java/bin/javap
/usr/lib/java/bin/java
/usr/lib/java/jre/bin/javaws
/usr/lib/java/jre/bin/java_vm
/usr/lib/java/jre/bin/java
$

DHOCNETADS

Untuk proses editing, disini saya menggunakan nano sebagai editornya.

$ nano setup.py

Perhatikan pada blok komentar kedua yang terlihat seperti berikut:

# Add or edit the entry corresponding to your system in the JDK, INCLUDES,
# CFLAGS, DEBUG_CFLAGS, LFLAGS and JAVAC dictionaries below.
# These entries are used to build JCC _and_ by JCC to drive compiling and
# linking via distutils or setuptools the extensions it generated code for.
#
# The key for your system is determined by the platform variable defined
# above.
#
# Instead of editing the entries below, you may also override these
# dictionaries with JCC_JDK, JCC_INCLUDES, JCC_CFLAGS, JCC_DEBUG_CFLAGS,
# JCC_LFLAGS and JCC_JAVAC environment variables using os.pathsep as value
# separator.

Temukan baris JDK:

JDK = {
    'darwin': JAVAHOME,
    'ipod': '/usr/include/gcc',
    'linux2': '/usr/lib/jvm/java-7-openjdk-amd64',
    'sunos5': '/usr/jdk/instances/jdk1.6.0',
    'win32': JAVAHOME,
    'mingw32': JAVAHOME,
    'freebsd7': '/usr/local/diablo-jdk1.6.0'

}

Rubah baris 'linux2' menjadi '/usr/lib/java' yang terlihat seperti berikut:

JDK = {
    'darwin': JAVAHOME,
    'ipod': '/usr/include/gcc',
    'linux2': '/usr/lib/java',
    'sunos5': '/usr/jdk/instances/jdk1.6.0',
    'win32': JAVAHOME,
    'mingw32': JAVAHOME,
    'freebsd7': '/usr/local/diablo-jdk1.6.0'

}

Tekan [CTRL]+o untuk menyimpan kemudian [CTRL]+x untuk menutup editor. Kemudian jalankan build setup dan install bila berhasil.

$ python setup.py build
Applied shared mode monkey patch to:
Loading source files for package org.apache.jcc...
Constructing Javadoc information...
Standard Doclet version 1.7.0_09
Building tree for all the packages and classes...
Generating javadoc/org/apache/jcc/PythonException.html...
Generating javadoc/org/apache/jcc/PythonVM.html...
...
...
...
... build/temp.linux-i686-2.7/_jcc/java/lang/reflect/Constructor.o build/temp.linux-i686-2.7/_jcc/java/lang/reflect/GenericDeclaration.o build/temp.linux-i686-2.7/_jcc/java/lang/reflect/Type.o -L/usr/lib -lpython2.7 -o build/lib.linux-i686-2.7/jcc/_jcc.so -L/usr/lib/java/jre/lib/i386 -ljava -L/usr/lib/java/jre/lib/i386/client -ljvm -Wl,-rpath=/usr/lib/java/jre/lib/i386:/usr/lib/java/jre/lib/i386/client -Wl,-S
$


$ su -c 'python setup.py install'
Password:

DHOCNETADS

Bila saat proses instalasi kamu mendapati error seperti berikut:

$ su -c 'python setup.py install'
Password:
Applied shared mode monkey patch to:
Traceback (most recent call last):
  File "setup.py", line 382, in
    main('--debug' in sys.argv)
  File "setup.py", line 327, in main
    raise type(e), "%s: %s" %(e, args)
OSError: [Errno 2] No such file or directory: ['javac', '-d', 'jcc/classes', 'java/org/apache/jcc/PythonVM.java', 'java/org/apache/jcc/PythonException.java']
$

Login sebagai root, kemudian tambahkan path /usr/lib/java/bin pada env PATH dengan perintah export.

# export PATH="$PATH:/usr/lib/java/bin"
# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/lib/java/bin
#

Coba jalankan lagi perintah install seperti diatas (masih sebagai root).

# python setup.py install
Applied shared mode monkey patch to:
Loading source files for package org.apache.jcc...
Constructing Javadoc information...
Standard Doclet version 1.7.0_09
Building tree for all the packages and classes...
...
...
...
Installed /usr/lib/python2.7/site-packages/JCC-2.16-py2.7-linux-i686.egg
Processing dependencies for JCC==2.16
Finished processing dependencies for JCC==2.16
#

Ok. Sekarang saatnya instalasi pustaka PyLucene. Jalankan perintah popd.


# popd
/mnt/pub/res/pkg/devel/pylucene/pylucene-4.3.0-1

Seperti diatas, lakukan editing pada file Makefile untuk menyesuaikan environment.


# nano Makefile

Temukan blok kode berikut:


# Linux     (Ubuntu 11.10 64-bit, Python 2.7.2, OpenJDK 1.7, setuptools 0.6.16)
# Be sure to also set JDK['linux2'] in jcc's setup.py to the JAVA_HOME value
# used below for ANT (and rebuild jcc after changing it).
#PREFIX_PYTHON=/usr
#ANT=JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 /usr/bin/ant
#PYTHON=$(PREFIX_PYTHON)/bin/python
#JCC=$(PYTHON) -m jcc --shared
#NUM_FILES=8

Hilangkan tanda # (komentar) pada awal baris kode dan rubah baris ke-empat yang sebelumnya tertulis "ANT=JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 /usr/bin/ant" hingga menjadi seperti ini:


# Linux     (Ubuntu 11.10 64-bit, Python 2.7.2, OpenJDK 1.7, setuptools 0.6.16)
# Be sure to also set JDK['linux2'] in jcc's setup.py to the JAVA_HOME value
# used below for ANT (and rebuild jcc after changing it).

PREFIX_PYTHON=/usr
ANT=JAVA_HOME=/usr/lib/java /usr/bin/ant
PYTHON=$(PREFIX_PYTHON)/bin/python
JCC=$(PYTHON) -m jcc --shared
NUM_FILES=8

Tekan [CTRL]+o kemudian [CTRL]+x lalu jalankan perintah make.


# make
cd lucene-java-4.3.0/lucene; (JAVA_HOME=/usr/lib/java /usr/bin/ant ivy-fail || JAVA_HOME=/usr/lib/java /usr/bin/ant ivy-bootstrap)
Buildfile: /mnt/pub/res/pkg/devel/pylucene/pylucene-4.3.0-1/lucene-java-4.3.0/lucene/build.xml
...
...
... build/temp.linux-i686-2.7/build/_lucene/__wrap03__.o -L/usr/lib/python2.7/site-packages/JCC-2.16-py2.7-linux-i686.egg -L/usr/lib -ljcc -lpython2.7 -o build/lib.linux-i686-2.7/lucene/_lucene.so -L/usr/lib/java/jre/lib/i386 -ljava -L/usr/lib/java/jre/lib/i386/client -ljvm -Wl,-rpath=/usr/lib/java/jre/lib/i386:/usr/lib/java/jre/lib/i386/client -Wl,-S -Wl,-rpath /usr/lib/python2.7/site-packages/JCC-2.16-py2.7-linux-i686.egg
build of complete
#

Oh iya, pada saat proses build diatas, pastikan bila komputer sedang terhubung dengan internet karena saat proses build, ada beberapa paket kecil yang dibutuhkan yang tidak ada dalam paket sumber dan akan di download secara otomatis.
Bila telah berhasil seperti diatas, sekarang jalankan perintah make install untuk melakukan instalasi.


# make install
...
...
...

Installed /usr/lib/python2.7/site-packages/lucene-4.3.0-py2.7-linux-i686.egg
Processing dependencies for lucene==4.3.0
Finished processing dependencies for lucene==4.3.0
#

Nah, beres!

Sekarang mari kita coba, :D



$ python
Python 2.7.3 (default, Jul  3 2012, 21:16:07)
[GCC 4.7.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import lucene
>>> dir(lucene)
['CLASSPATH', 'ConstVariableDescriptor', 'FinalizerClass', 'FinalizerProxy', 'InvalidArgsError', 'JArray', 'JArray_bool', 'JArray_byte', 'JArray_char', 'JArray_double', 'JArray_float', 'JArray_int', 'JArray_long', 'JArray_object', 'JArray_short', 'JArray_string', 'JCCEnv', 'JCC_VERSION', 'JObject', 'JavaError', 'PrintWriter', 'StringWriter', 'VERSION', '__builtins__', '__dir__', '__doc__', '__file__', '__name__', '__package__', '__path__', '_lucene', 'findClass', 'getVMEnv', 'initVM', 'makeClass', 'makeInterface', 'os', 'sys']
>>>
lucene.VERSION
'4.3.0'
>>>

Dan,... dan,... dan,... kemudian,... saya masih belum tau bagaimana cara menggunakanya! Hehehe,... :P

DHOCNETADS
Please write your comments