Mengatasi masalah barcode generator SLiMS di Mesin FreeBSD 9.1
Halo…
Ada yang pernah mengalami barcode generator SLiMS yang nge-blank di mesin FreeBSD ndak? Begini permasalahannya, pustakawan Fakultas Teknik meminta saya untuk mengatur masalah barcode yang nge-blank di mesin server dhemit alias FreeBSD. Jadi beliau pada saat mau generate barcode melalui menu System > Barcode Generator, SLiMS tidak menampilkan barcode sama sekali.
Pernah suatu waktu di tahun 2013 saya ubek-ubek forum SLiMS untuk mengatasi hal tersebut. Di thread ini katanya sih gara-gara masalah permissions. Namun, setelah saya chmod +x genbarcode
ternyata malah muncul error seperti ini:
1 | ELF binary type "0" not known. |
Dalam benak saya waktu itu nggak mungkin bisa file biner Linux dijalankan di FreeBSD. Tanpa pikir panjang saya pun download kode sumber php-barcode kemudian ngompel dan berhasil jalan lewat command line:
1 | $ ./genbarcode 123456 128 |
Eh, tapi ternyata saat saya coba masuk halaman admin SLiMS dan mencoba membuat barcode ternyata hasilnya masih blank. Telo! Lha gimana nggak jengkel coba? Sudah mbulet pasang dependensi buat kompel kode di FreeBSD ternyata masih nge-blank. Saat itu kepikiran mau ganti OS dari FreeBSD ke Linux tapi kok ribet backup dan restore data yang sudah ada di server.
Baru tadi pagi agak siangan dikit saya ngobrol sama mas Arif dan mas Harun mengenai rencana ganti OS. Namun, mas Harun bilang kalau di FreeBSD bisa menjalankan file biner Linux dengan mengatur Linux® Binary Compatibility.
Setelah memasang hal yang diperlukan sekarang file biner lib/phpbarcode/bin/nix/genbarcode
bisa dijalankan tanpa perlu kompel untuk FreeBSD. Sip deh! Masalahnya sudah beres, tinggal perlu mengubah file lib/phpbarcode/php-barcode.php
biar barcode yang dibuat melalui menu System > Barcode Generator di mesin FreeBSD muncul.
Begini Langkahnya
Load linux kernel
1
# kldload linux
Cek apakah modul sudah ok
1
2
3
4root@library:/root # kldstat
Id Refs Address Size Name
1 6 0xffffffff80200000 1323408 kernel
2 1 0xffffffff81612000 1f417 linux.koPasang emulators/linux-base-f10 melalui port
1
2
3
4
5
6
7
8
9
10root@library:/root # cd /usr/ports/emulators/linux_base-f10
root@library:/usr/ports/emulators/linux_base-f10 # make install distclean
=> basesystem-10.0-1.noarch.rpm doesn't seem to exist in /usr/ports/distfiles/rpm/i386/fedora/10.
=> Attempting to fetch http://critical.ch/distfiles/rpm/i386/fedora/10/basesystem-10.0-1.noarch.rpm
basesystem-10.0-1.noarch.rpm 100% of 2915 B 7713 kBps
=> bash-3.2-30.fc10.i386.rpm doesn't seem to exist in /usr/ports/distfiles/rpm/i386/fedora/10.
=> Attempting to fetch http://critical.ch/distfiles/rpm/i386/fedora/10/bash-3.2-30.fc10.i386.rpm
....
--- TUNGGU SAMPAI SELESAI ---
...Tambahkan baris berikut pada
/etc/rc.conf
biar modul aktif tiap boot:1
linux_enable="YES"
Edit file
lib/phpbarcode/php-barcode.php
menjadi seperti berikut (baris 51):...
// genbarcode binary location
if (stripos(PHP_OS, 'Darwin') !== false) {
$genbarcode_loc = './bin/darwin/genbarcode';
} else if (stripos(PHP_OS, 'Linux') !== false) {
if (PHP_INT_SIZE == 4) {
$genbarcode_loc = './bin/nix/genbarcode';
} elseif (PHP_INT_SIZE == 8) {
$genbarcode_loc = './bin/nix/genbarcode64';
} else {
$genbarcode_loc = './bin/nix/genbarcode';
}
} else if (stripos(PHP_OS, 'FreeBSD') !== false) {
$genbarcode_loc = './bin/nix/genbarcode';
} else {
$genbarcode_loc = '.\bin\win\genbarcode.exe';
}
...
Nah! Udah gitu aja…