Cara Build kiwix-serve dan kiwix-tools dari Source Code dengan Target Linux

Cara Build kiwix-serve dan kiwix-tools dari Source Code dengan Target Linux

kiwix-serve adalah aplikasi web untuk membuka file .zim.

File .zim itu sendiri adalah file berisi halaman-halaman web yang dipaketkan ke dalam satu file.

kiwix-serve merupakan bagian dari paket kiwix-tools, jadi jika ingin membuild kiwix-serve, kita harus membuild seluruh bagian dari kiwix-tools.

kiwix-tools memiliki dependencies berupa libzim dan libkiwix.

Idealnya, kedua dependencies tersebut dibuild dari source code juga, agar tetap dalam kondisi terbaru.

Salah satu file zim yang terbesar sepengetahuan saya adalah file zim berisi Wikipedia. Ukurannya sekitar 100 GB.

Jika Anda tertarik untuk mendownloadnya, Anda bisa kunjungi Kiwix Library.

Karena saya pernah punya keinginan untuk memodifikasi fitur search dari kiwix-serve, maka tidak ada salahnya jika saya mulai dari membuild kiwix-tools dari source code terlebih dahulu.

Bagaimana caranya? Terus simak!

Clone Repository

Berikut ini adalah repository yang harus di-clone:

git clone https://github.com/openzim/libzim.git
git clone https://github.com/kiwix/libkiwix.git
git clone https://github.com/kiwix/kiwix-tools.git

Install Dependency di Sistem Operasi

Ini dependency yang diperlukan di Kubuntu 24.04.3. Install dengan cara ini:

sudo apt install meson pkg-config ninja-build libicu-dev libzim-dev libpugixml-dev libcurl4-openssl-dev libmicrohttpd-dev zlib1g-dev libdocopt-dev liblzma-dev libzstd-dev libxapian-dev

Build Pertama

Pertama, build libzim:

meson . build
ninja -C build
ninja -C build install

Build Kedua

Kedua, build libkiwix.

Sebelumnya, ubah dahulu meson.build-nya bagian ini:

if compiler.has_header('mustache.hpp', args: '-I/path/absolut/ke/rakifsul')
  extra_include = ['./rakifsul']
elif compiler.has_header('mustache.hpp', args: '-I/usr/include/kainjow')
  extra_include = ['/usr/include/kainjow']
else
  error('Cannot found header mustache.hpp')
endif

Penjelasannya....

mustache.hpp download di:

https://github.com/kainjow/Mustache/blob/master/mustache.hpp 

Lalu masukkan mustache.hpp ke folder "rakifsul" yang ada di root folder dari source code libkiwix.

Jika folder tersebut belum ada maka buat sendiri.

TIPS:

Jika Anda ingin menggunakan nama lain, misalnya "random", maka ganti kode meson build-nya jadi seperti ini:

if compiler.has_header('mustache.hpp', args: '-I/path/absolut/ke/random')
  extra_include = ['./random']
elif compiler.has_header('mustache.hpp', args: '-I/usr/include/kainjow')
  extra_include = ['/usr/include/kainjow']
else
  error('Cannot found header mustache.hpp')
endif

Lalu masukkan mustache.hpp ke folder "random" yang ada di root folder dari source code libkiwix.

Jika folder tersebut belum ada maka buat sendiri.

Selanjutnya, jalankan ini:

meson . build
ninja -C build
ninja -C build install

Build Terakhir

Terakhir, build kiwix-tools:

meson . build
ninja -C build

# hasilnya di kiwix-tools/builddir/src/

Hasilnya ada di folder repository kiwix-tools, tepatnya di dalam folder kiwix-tools/builddir/src.

Selesai