50 tutorial 10
DESCRIPTION
How To in LinuxTRANSCRIPT
-
INFOLINUX 10/200550
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
YUM
Mungkin untuk pengguna distro Debian Sarge 3.1 yang jumlah CD-nya mencapai 14 buah dan di dalamnya sudah tersedia sekitar 14.000
paket, tentu sangatlah menyenangkan dapat
mencoba hampir semua software yang
terdapat di Linux. Apalagi Debian sudah
dilengkapi dengan tools apt yang sangat
memanjakan penggunanya dalam urusan
manajemen instalasi software.
Namun jangan takut, bagi Anda para
pengguna distro Fedora, sekarang dapat
memanfaatkan paket YUM (Yellow dog
Updater, Modifi ed) yang dapat berfungsi
layaknya tools apt di Debian. Dengan meng-
gunakan Yum, para pengguna Fedora tidak
perlu memikirkan lagi ketergantungan pa-
ket yang akan diinstal atau di-remove, kare-
na Yum yang akan melakukannya sendiri.
Yum secara otomatis akan mencari depen-
dencies paket yang diperlukan dan akan me-
nampilkan paket apa yang seharusnya diin-
stal. Dengan Yum akan memudahkan Anda
memanajemen grup software dibandingkan
Anda melakukannya secara manual dengan
menggunakan perintah rpm.
Beberapa fi tur yang dimiliki oleh Yum,
di antaranya:
Dapat terdiri dari beberapa repositori. File konfi gurasi yang mudah. Mencari otomatis ketergantungan paket
yang dibutuhkan.
Operasi pekerjaan yang cepat. Pekerjaan rpm dapat dilakukan secara
konsisten.
Mendukung grup comps.xml, termasuk mengelompokkan beberapa grup reposi-
tori.
Mudah digunakan.
Pada artikel ini, penulis akan menjelas-
kan cara membuat repository Yum, dan
cara penggunaan Yum. Dalam membuat
artikel ini, penulis menggunakan distro
Fedora Core 4 untuk uji cobanya. Meski
demikian, langkah ini juga dapat diterapkan
bagi anda pengguna distro Fedora Core 1, 2
maupun 3.
Persiapan awalSebelum dapat mengikuti langkah-langkah
ini, sebaiknya Anda siapkan terlebih dahulu
beberapa kebutuhan di bawah ini:
1. Koneksi Internet Item ini dibutuhkan jika Anda telah me-
miliki koneksi Internet. Jika tidak ada
koneksi Internet, Anda dapat meman-
faatkan fi le-fi le RPM Fedora Core 4 Extras
yang terdapat pada CD-1 InfoLinux edisi
Agustus 2005. Bagi pengguna Fedora Core
versi lainnya, download terlebiih dahulu
paket-paket RPM tambahan di Intenet.
2. Sistem Fedora yang sudah terinstalasi dengan baik
Dalam contoh ini, distro yang penulis
gunakan adalah Fedora Core 4.
3. Yum Anda dapat menginstalasi Yum yang su-
dah ada di CD 4 distro Fedora Core 4.
4. Wget Instalasikan paket wget ini, untuk ke-
pentingan download paket RPM fedora
dari Internet.
5. Vsftpd Paket ini digunakan untuk membuat ftp
server, agar paket RPM dapat diakses
melalui ftp server.
6. Apache Paket ini digunakan untuk membuat web
server, sehingga repository dapat diakses
melalui web.
7. Createrepo Berfungsi untuk membuat metadata re-
pository umum. Anda dapat menginstal-
nya dari CD 4 yang ada di Fedora Core 4.
8. Ruang harddisk kosong Sediakan space sesuai dengan banyaknya
paket yang ingin anda letakkan di hard-
disk lokal.
Repository Yum menggunakan Ftp serverJika semua persiapan pada tahap pertama
telah anda siapkan, langkah berikutnya
adalah check apakah semua telah terinstal-
lasi dengan baik.
1. Mengecek versi software yang dibutuh-
kan
Check versi distro Fedora yang Anda gunakan.
$ cat /etc/redhat-release Fedora Core release 4
(Stentz)
Check versi yum $ yum --version 2.3.2
Check versi createrepo $ createrepo --version 0.4.2
2. Mengonfi gurasikan vsftpd
Langkah berikutnya adalah mengon-
fi gurasikan vsftpd sebagai ftp server
yang akan kita gunakan sebagai reposi-
tory Yum. Jika Anda sudah menginstala-
sikannya, check apakah paket vsftp sudah
Membuat Local Repository YUMdan Cara PenggunaannyaSalah satu kendala utama bagi para pengguna distro Fedora adalah pada saat mengin-stalasikan suatu aplikasi yang memiliki ketergantungan terhadap paket lainnya (packet dependencies). Artikel kali ini akan membahas penggunaan YUM untuk mengatasi packet dependencies itu.
-
INFOLINUX 10/2005 51
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
YUM
terinstalasi dengan baik di sistem Anda.
# rpm -qa | grep vsftpdvsftp-2.0.3-1
Berikutnya, kita akan mengonfi gurasi-
kan hanya vstp hanya untuk user anony-
mous. ubah fi le vsftpd.conf menjadi vs-
ftpd.conf.bak
# cd /etc/vsftpd# mv vsftpd.conf vsftpd.conf.bak# touch vsftpd.conf# chmod 600 vsftpd.conf
Isikan fi le vstpd.conf yang baru kita buat
dengan menggunakan editor kesukaan
anda, dengan konfi gurasi sebagai berikut:
# Isi dari file /etc/vsftpd/vsftpd.confanonymous_enable=YESanon_upload_enable=NOanon_mkdir_write_enable=NOlocal_enable=NOwrite_enable=NOlocal_umask=022xferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESpam_service_name=vsftpduserlist_enable=YESlisten=YEStcp_wrappers=YESftpd_banner=Service ready for use.
Restart service vstfpd
# service vsftpd restart
Selanjutnya coba login ke FTP server
dengan menggunakan user anony-
mous atau ftp dengan tidak perlu
memasukkan password. Nantinya hanya
akan terlihat direktory pub yang ber-
tindak sebagai default direktori.
$ ftp localhostConnected to localhost (127.0.0.1).Name (localhost:root): anonymous331 Please specify the passwordPassword :230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls227 Entering Passive Mode (127,0,0,1,165,236)150 Here comes the directory listing.drwxr-xr-x 3 0 0 4096 Aug 09 09:25 pub226 Directory send OK.ftp>quit221 Goodbye.
3. Berikutnya buat direktori tempat peny-
impanan paket-paket RPM yang akan
kita letakkan di direktori ftp server.
# mkdir -p /var/ftp/pub/fedora/1/updates# mkdir -p /var/ftp/pub/fedora/2/updates# mkdir -p /var/ftp/pub/fedora/3/updates
# mkdir -p /var/ftp/pub/fedora/4/updates# cd /var/ftp/pub/fedora/4/updates
Sebagai latihan, copy-kan saja fi le-fi le
yang ada pada CD 1 InfoLINUX edisi
Agustus 2005 ke direktori /var/ftp/pub/
fedora/4/updates. Misal cdrom Anda
termount pada directory /media/cdrom.
Ketikkan perintah berikut:
# cp /media/cdrom/extras/*.rpm /var/ftp/pub/fedora/4/updates
Jalankan perintah createrepo yang ber-
fungsi untuk mendaftarkan paket-paket
RPM yang berada dalam suatu direktori.
Nantinya perintah createrepo ini akan
menghasilkan suatu folder yang berna-
ma repodata dan didalamnya akan berisi
fi le-fi le sebagai berikut: fi lelist.xml.gz,
other.xml.gz, primary.xml.gz, repomd.
xml. Dari langkah berikut, Anda sudah
berhasil untuk membuat local repository
Yum.
# cd /var/ftp/pub/fedora/4/updates # createrepo /var/ftp/pub/fedora/4/updates
Jika ingin mengaktifkan fi tur group, copy
terlebih dahulu fi le comps.xml yang ada
pada directory /usr/share/comps/i386/
comps.xml ke direktori yang sama de-
ngan paket RPM berada.
# cp /usr/share/comps/i386/comps.xml /var/ftp/pub/
Instalasi Bluefish menggunakan perintah yum install. Option grouplist di Yum untuk menampilkan daftar paket group.
-
INFOLINUX 10/200552
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
YUM
fedora/4/updates# cd /var/ftp/pub/fedora/4/updates# createrepo -g comps.xml /var/ftp/pub/fedora/4/updates
Selanjutnya, Anda dapat mengonfi gu-
rasikan fi le yum.conf, yang kali ini akan
kita arahkan ke ftp server yang sudah
menyediakan yum repository. Caranya,
edit fi le /etc/yum.conf, menjadi seperti
di bawah ini:
[main]cachedir=/var/cache/yumdebuglevel=2logfile=/var/log/yum.logpkgpolicy=newestdistroverpkg=redhat-releasetolerant=1exactarch=1retries=20obsoletes=1#gpgcheck=1gpgcheck=0
# PUT YOUR REPOS HERE OR IN separate files named file.repo# in /etc/yum.repos.d
[local-repository]name=Paket Updatesbaseurl=ftp://localhost/pub/fedora/4/updatesenabled=1enablegroups=1gpgcheck=0
Selanjutnya, pindah ke direktori /etc/
yum.repos.d, edit beberapa fi le yang ada
di direktori tersebut. Diantaranya fi le fe-
dora-extras.repo, fedora.repo dan fedora-
updates.repo. Ubah nilai pada parameter:
enabled = 1
menjadi :
enabled = 0
Berikutnya lakukan yum check-update
untuk untuk men-download kumpulan
lengkap header paket yang telah terdefi -
nisi di metadata repository.
# yum check-updateSetting up repositories
local-repository 100% |=========================| 1.1 kB 00:00Reading repository metadata in from local filesprimary.xml.gz 100% |=========================| 150 kB 00:00local-repo: ###################################### 417/417Added 417 new packages, deleted 0 old in 20.25 seconds
4. Coba test dari komputer tersebut, apakah
repository Yum yang baru saja Anda cip-
takan sudah dapat berjalan dengan baik.
Caranya, instal salah satu program yang
terdapat pada repository tersebut. Seba-
gai contoh kita akan menginstalasikan
games supertux yang ada pada direktori
tersebut.
# yum install supertux........................................................Transaction Summary============================Install 1 Package(s)Update 0 Package(s)Remove 0 Package(s)Total download size: 6.3 MIs this ok [y/N]: yDownloading Packages:(1/1): supertux-0.1.2-3.i 100% |=========================| 6.3 MB 00:04Running Transaction Testwarning: supertux-0.1.2-3: Header V3 DSA signature: NOKEY, key ID 1ac70ce6Finished Transaction TestTransaction Test SucceededRunning Transaction Installing: supertux ####################### [1/1]
Installed: supertux.i386 0:0.1.2-3Complete!
5. Jika pada tahap di atas Anda sudah dapat
menginstalasikan program dari server
yum dengan baik, Anda tinggal melan-
jutkannya dengan membaca bagian
Konfi gurasi Yum pada komputer client.
Repository Yum Menggunakan HTTP ServerKali ini penulis akan menjelaskan juga, cara
installasi Yum server menggunakan Http
Server. Pada prinsipnya, penggunaan Ftp
server maupun Http server sebagai media
Yum tidak jauh berbeda fungsinya. Meski
demikian, penulis tetap akan menjelaskan
langkah-langkahnya secara detail.
1. Langkah pertama ini sama dengan yang
ada pada repository yum menggunakan
Ftp Server.
2. Mengonfi gurasikan Apache
Langkah berikutnya adalah mengon-
fi gurasikan Apache sebagai Http Server
yang akan kita gunakan sebagai reposi-
tory Yum. Jika Anda sudah menginstal-
lasikannya, check apakah paket Apache
sudah terinstalasi dengan baik di sistem
anda.
# rpm -qa | grep httpd httpd-2.0.54-10
Secara default, lokasi directory root
Apache terletak di /var/www/html. Pa-
da folder ini kita akan membuat sebuah
fi le yang bernama index.html yang
berisikan pesan Selamat Datang dan
link yang menunjuk ke letak repository
server.
# cd /var/www/html# vi index.html
Yum Web Server
Welcome, to access repository server packages click on link below
RPM Repository
Selanjutnya, Apache akan kita konfi -
gurasikan dengan menggunakan option
Alias. Sebagai latihan, penulis tetap akan
menggunakan fi le-fi le RPM yang terle-
tak di /var/ftp/pub/fedora/4/updates, de-
ngan tujuan menghemat ruang harddisk
Anda.
# cd /etc/httpd/conf# cp httpd.conf httpd.conf.
-
INFOLINUX 10/2005 53
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
YUM
bak# vi httpd.conf
Pada fi le itu, cari pada bagian Alias, yang
bertujuan untuk membuat nama Alias
yang mengarah ke directory repository
berada. Sebagai contoh kita akan mem-
buat sebuah Alias dengan nama reposi-
tory yang menunjuk ke /var/ftp/pub/fe-
dora/4/updates.
............................
............................# Nama Alias adalah repository# rpm repositoryAlias /repository /var/ftp/pub/fedora/4/updates
Options Indexes AllowOverride None Order allow,deny Allow from 192.168.2.0/24
........................................................
Simpan hasil perubahan fi le itu, kemu-
dian restart serviice httpd.
# service httpd restart
3. Test dengan membuka browser Anda, lalu
pada url link, ketikkan http://. Sebagai contoh, IP yang penu lis
gunakan adalah 192.168.2.1, maka ketik -
kan http://192.168.2.1. Jika muncul hala-
man index.html yang telah kita buat sebe-
lumnya, klik link RPM Repository yang
ada pada halaman tersebut. Jika Anda
dapat melihat daftar paket RPM yang ada,
berarti Anda telah berhasil membuat re-
pository Yum mengguna kan Http Server.
4. Konfi gu rasikan fi le yum.conf, yang kali
ini akan kita arahkan ke http server yang
sudah menyedia kan yum repository.
Caranya, edit fi le /etc/yum.conf, menjadi
seperti di bawah ini:
............................
............................[http-local-repository]name= Http Paket Updatesbaseurl=http://192.168.2.1/pub/fedora/4/updatesenabled=1enablegroups=1gpgcheck=0
5. Lakukan yum check-update, kemudian
test dengan menginstal salah satu pa-
ket yang ada di dalam yum repository.
(Note: lihat pada bagian repository Yum
menggunakan Ftp Server).
Konfigurasi pada komputer clientPenulis sudah menjelaskan cara membuat
server lokal repository yum, berikutnya
akan dijelaskan juga cara konfi gurasinya
dari komputer client. Sebagai contoh,
semua komputer dalam contoh ini ber-IP
192.168.2.X. Di mana server yum yang kita
gunakan memiliki IP 192.168.2.1.
Selanjutnya, pindah ke direktori /etc/
yum.repos.d, edit beberapa fi le yang ada di
direktori tersebut. Di antaranya fi le fedora-
extras.repo, fedora.repo dan fedora-updates.
repo. Ubah nilai pada parameter:
enabled = 1
menjadi :
enabled = 0
Kemudian edit fi le /etc/yum.conf, dan
tambahkan daftar repository Yum ke dalam
fi le tersebut.
Berikutnya lakukan yum check-update
untuk untuk men-download kumpulan
lengkap header paket yang telah terdefi nisi
di metadata repository.
# yum check-update
Setelah ini, Anda dapat melakukan pe-
rintah-perintah yang ada di Yum, yang
dapat Anda baca di bagian option-option
yang ada di Yum.
[main]cachedir=/var/cache/yumdebuglevel=2logfile=/var/log/yum.logpkgpolicy=newestdistroverpkg=redhat-releasetolerant=1exactarch=1retries=20obsoletes=1#gpgcheck=1gpgcheck=0
# PUT YOUR REPOS HERE OR IN separate files named file.repo# in /etc/yum.repos.d
[local-repository]
Repository Yum menggunakan Ftp server. Repository Yum menggunakan Http server.
-
INFOLINUX 10/200554
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
YUM
name=Paket Updatesbaseurl=ftp://192.168.2.1/pub/fedora/4/updatesenabled=1enablegroups=1gpgcheck=0
[http-local-repository]name= Http Paket Updatesbaseurl=http://192.168.2.1/pub/fedora/4/updatesenabled=1enablegroups=1gpgcheck=0
Option-option yang ada di YumSecara syntax, perintah yum memiliki syn-
tax sebagai berikut:
yum [option] [command] [package ...]
Beberapa command yang terdapat di
Yum di antaranya adalah:
1. check-update
Perintah ini berfungsi untuk men-down-
load kumpulan lengkap header paket yang
telah terdefi nisi di metadata repository.
Example: yum check-update
2. install [package1] [package2][...]
Perintah ini berfungsi untuk menginstall
paket yang terdapat pada repository yum.
Example: yum install bluefi sh
3. remove [package1] [package2][...]
Perintah ini berfungsi untuk menghapus
paket yang telah terinstal di dalam sistem
Anda.
Example: yum remove bluefi sh
4. update [package1] [package2][...]
Perintah ini berfungsi untuk meng-up-
date paket yang ingin Anda instal.
Example: yum update bluefi sh
5. upgrade [package1] [package2][...]
Perintah ini sama dengan perintah update
dengan obsoletes fl ag. Option ini lebih
tepat digunakan jika Anda ingin meng-
update semua paket yang ada (example :
hampir sama dengan mengupgrade dari
Fedora Core 3 ke Fedora Core 4).
Example: yum upgrade
6. list [...]
Perintah ini berfungsi untuk mendaftar
semua paket RPM yang ada di sistem.
Paket di sini adalah paket yang sudah ter-
instal dalam sistem, maupun paket yang
ada di repository.
Example: yum list
7. Search [string1] [string2] [...]
Perintah ini berfungsi untuk mencari
suatu paket RPM yang ada dalam sistem
kita, berdasarkan string yang dimasukkan.
Example: yum search squid
8. groupinstall [group1] [group2] [...]
Perintah ini berfungsi untuk menginstal
paket berdasarkan group. Anda dapat
me lihat daftar group yang ada dengan
menggunakan option group list. Sebagai
contoh, Anda ingin meng instal seluruh
paket yang ada dalam group Web Server,
maka semua paket yang ada dalam group
itu (httpd, webalizer, mod_python, dist-
cache, mod_perl, tux, squid, php, httpd_
manual, dan sebagainya) akan terinstal
secara otomatis.
Example: yum groupinstall Web Server
Yumex, Utility Grafis Untuk YumSetelah dijelaskan seluruh perintah yang ada
di Yum dan cara penggunaannya, ada bebe-
rapa user yang menanyakan perta nyaan ini:
Saya tidak terlalu suka mengetikkan banyak
perintah di terminal, Apakah ada utility ber-
bentuk grafi s sebagai interface yum? Jawab-
nya ada. Anda dapat menggunakan paket
yang bernama Yumex (Yum Extender) un-
tuk mempermudah penggunaan Yum.
Yumex dibuat oleh Tim Lauridsen,
setelah dia membaca postingan yang ada di
FedoraForum.org. Setelah itu, dia langsung
belajar tentang Python, dan PyGTK yang
akhirnya terciptalah Yumex.
Yumex sangat cocok bagi user yang tidak
terlalu suka mengetikkan banyak perintah di
command, tetapi ingin dapat menggunakan
Yum dengan mudah. Sebelum mengunakan
Yumex, Anda harus men-download-nya ter-
lebih dahulu di http://linux.rasmil.dk/yumex.
Tapi tak perlu khawatir, karena paket Yumex
ada di CD Majalah InfoLINUX kali ini.
Berikut ini akan dijelaskan sedikit me-
ngenai cara penggunaan Yumex:
1. Sebelum dapat menginstalasi Yumex,
pas ti kan versi Yum Anda paling tidak
memiliki versi 2.2. Selanjutnya instalkan
paket Yumex ini dengan menggunakan
perintah rpm.
# rpm -ivh yumex-0.40-1.tla.1. FC4.noarch.rpm
2. Setelah terinstalasi dengan baik, jalankan
Yumex. Dari konsole ketikkan perintah
berikut untuk menjalankan Yumex.
$ yumex &
Tampilan paket yang dapat Anda install di Yumex. Pilih repository Yum yang akan Anda gunakan.
-
INFOLINUX 10/2005 55
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
YUM
Atau dari Menu Applications => Sys-tem Tool => Yum Extender
Masukkan password root Anda, untuk
memulai penggunaan Yumex.
3. Klik Icon Repos, lalu pilih repository
lokal yang telah Anda buat, selanjutnya
klik Refresh.
4. Selanjutnya sangat mudah bagi Anda
untuk melakukan update paket, instal
paket, maupun remove paket. Untuk
menginstal, Anda hanya perlu mengklik
paket-paket yang ingin Anda Instal, dan
klik Instal. Yum akan mencari secara oto-
matis ketergantungan paket yang akan di
install. Dan seluruh kegiatan Yum yang
telah dilakukan, dapat Anda lihat kemu-
dian di menu Output.
Tip and trik YumAda beberapa Tips and Trick Yum, yang
akan penulis jelaskan :
1. Jika komputer Anda hanya satu, dan
ingin tetap membuat repository Yum,
Anda tidak perlu membuat Ftp Server
maupun Http Server. Cukup letakkan
fi le-fi le RPM yang telah anda dapatkan
ke dalam suatu direktori lalu tambah-
kan directory path tersebut ke dalam fi le
yum.conf dengan menggunakan fi le://.
Misal seluruh fi le RPM Anda akan dico-
pykan ke directory /home/supri/fedora4/
updates.
$ cp *.rpm /home/supri/fedora4/updates$ cd /home/supri/fedora4/updates$ createrepo /home/supri/fedora4/updates# vi /etc/yum.conf
.............................
.............................[Home Directory]name=Direktory RPMbaseurl=file:///home/supri/fedora4/updatesenabled=1enablegroups=1gpgcheck=0
2. Untuk Alasan penghematan ruang hard-
disk, Anda dapat mem-burning seluruh
folder yang berisi fi le RPM dan repo-
datanya ke dalam CD-ROM. Lalu sama
seperti di langkah 1, hanya saja mount
terlebih dahulu CD-nya dan arahkan ba-
seurl-nya sesuai dengan letak CD Anda
di mount. Misalkan Anda mem-burning
seluruh folder dan isi folder dari /home/
sup ri/fedora4/updates ke CD. Setelah di-
burning, Anda memount CD itu ke /me-
dia/cdrom. Sehingga letak fi le-fi le RPM
dalam CD terbaca di /media/cdrom/up-
dates. Selanjutnya, Anda hanya perlu
me nambahkan letak url path tersebut ke
yum.conf, lalu lakukan yum check-up-
date.
.............................baseurl=file:///mnt/cdrom/updates.............................
3. Dalam artikel ini, penulis mengabaikan
GPG-Key yang ada dalam setting-an
Yum.conf. Hal ini dapat Anda lihat di
settingan yum.conf, di mana nilai pa-
rameter gpg-check=0. Jika Anda tetap
menginginkan gpg-check ini tetap aktif,
dengan alasan agar sistem Anda tetap se-
cure saat melakukan update, download
gpg-key dari situs bersangkutan, lalu ke-
tikkan perintah ini:
# rpm import public.gpg.key
Untuk menginstall GPG Key dari Fedora
Project, lakukan perintah berikut:
# rpm import /usr/share/rhn/RPM-GPG-KEY-fedora
Lalu edit parameter gpg-check=1
Demikian tutorial Yum yang telah penu-
lis jelaskan. Dengan adanya repository Yum
lokal ini, Anda yang tidak memiliki koneksi
Internet dapat memanfaatkan Repository
Yum lokal untuk mencari paket-paket Fe-
dora terbaru yang ingin diinstal. Dan jika
resource Internet Anda berlimpah, cukup
tambahkan url situs yang menyediakan re-
pository Yum ke dalam yum.conf Anda.
Pada akhirnya, penulis hanya bisa ber-
harap, semoga dengan adanya artikel ini,
dapat membantu Anda dalam mengalami
masalah sulitnya instalasi software di Fedora
Core.
Supriyanto ([email protected])
-
INFOLINUX 10/200556
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Suhu Komputer
Komputer adalah seperti manusia. Bisa kepanasan dan berhenti beker-ja apabila kepanasan. Dan, tole ransi untuk berhenti bekerja pada komputer
sa ngatlah rendah. Apalagi untuk sebuah
server yang dituntut untuk memiliki up-
time lebih dari 99,9%. Betul bahwa kita bisa
membeli server besar yang secara hardware
telah sa ngat hebat. Tapi, tidak semua dari
kita mampu membeli server branded yang
mahal. Dan, sejujurnya, server branded yang
mahal tidaklah selalu diperlukan. Terutama
bagi perusahaan kecil sampai menengah.
Bagi Anda yang menggunakan server
rakitan yang secara hardware sama seper -
ti komputer desktop, sekaligus berada di
dalam ruang kerja tidak berpendingin ruang-
an, namun harus tetap mampu melayani,
maka ada baiknya bagi Anda untuk mampu
memelihara komputer tersebut secara soft-
ware.
Kepanasan merupakan salah satu faktor
yang sangat umum dalam membuat kom-
puter berhenti bekerja ataupun membuat
kerusakan permanen pada hardware. Tidak
ada satu pun sistem operasi yang mampu
menahan kerusakan pada hardware. Yang
paling bisa kita lakukan adalah membuat
sistem berhenti bekerja sebelum kepanas-
an mencapai batas yang tidak dapat ditole-
ransi.
Sebenarnya, solusi dengan membuat
sistem berhenti bekerja sebelum kepanas-
an seharusnya disisipkan pada level kernel,
sehingga bisa lebih responsif dan memiliki
hak yang lebih tinggi. Namun, hal tersebut
jauh lebih susah untuk dilakukan.
Sebagai gantinya, kita akan membuat
aplikasi user space dengan memanfaat-
kan shell scripting. Prinsip kerjanya sangat
sederhana. Kita akan menjalankan suatu
program secara berkala (misal, setiap me-
nit), dimana di dalam program tersebut,
kita memeriksa suhu sistem dan mengam-
bil tindakan yang bersesuaian dengan suhu
yang didapat tersebut. Untuk menjalankan
program secara berkala, kita akan menggu-
nakan cron. Sementara, untuk mengambil
suhu sistem, Anda bisa menggunakan salah
satu dari program-program berikut:
ACPID. Sangat fl eksibel dan ekstensible dalam menangani event ACPI. Daemon
ini akan membaca /proc/acpi/event dan
menjalankan aksi yang bersesuaian. Sa-
yangnya, tidak semua sistem mendukung
acpi.
Xmbmon. Alternatif ACPID yang sangat menyenangkan. Kita akan menggunakan
program yang satu ini dalam tulisan kali
ini. Sayangnya, ada beberapa sistem yang
tidak dikenal oleh xmbmon sehingga ap-
likasi ini tidak dapat digunakan sebagai
alat bantu. Dari namanya, kita bisa men-
duga bahwa program ini bisa dijalankan
dari X. Hal tersebut tidak kita inginkan.
Untungnya, pembuatnya juga membuat
versi consolenya (mbmon), yang akan
kita gunakan.
Untuk tindakan yang akan diambil apa-
bila suhu mencapai batas yang diinginkan,
secara default adalah shutdown, yang berarti,
kita akan memanfaatkan program shutdown
(/sbin/shutdown) yang telah dimiliki oleh
semua sistem. Namun, bagi Anda yang ingin
pendekatan lain, software suspend (/sbin/
swsusp) bisa dipergunakan apabila tindakan
yang akan diambil adalah melakukan sus-
pend secara software. Untuk melakukan sus-
pend, pastikan telah didukung oleh kernel.
Untuk men-shutdown sistem, tentu
saja program monitoring harus dijalankan
oleh root. Bagi Anda yang tidak ingin men-
jalankan sebagai root, sudo bisa digunakan.
Tulisan ini akan mengasumsikan Anda
menjalankan program sebagai root.
CronBerikut ini, kita akan melihat dasar-dasar
penggunaan cron secara sederhana, untuk
men jalankan aplikasi kita secara berkala. Ter-
gantung dari distribusi yang Anda gunakan,
umumnya, cron daemon sudah dijalankan
pada saat booting. Pastikan crond sudah di-
jalankan karena kita akan membutuhkannya.
Setelah itu, login-lah sebagai root, dan
berikan perintah berikut ini untuk mem-
buat entri tabel cron yang baru:
# crontab -e
Apabila belum ada entri sama sekali, ma-
ka Anda akan mengedit fi le kosong. Untuk
membuat entri tabel yang baru yang memuat
contoh tugas yang akan dijalankan setiap me-
nit, cobalah memberikan baris berikut ini:
* * * * * /bin/echo `date` >> /tmp/DATE
Contoh entri tersebut akan menulis jam
dan tanggal aktif ke /tmp/DATE setiap me-
nit. Untuk menambahkan entri tabel crontab
yang baru, Anda bisa membuatnya di baris
baru.
Cron sendiri memiliki lima fi eld yang
pada contoh sebelumnya kita isi dengan *.
Berikut ini adalah penjelasan kelima fi eld
yang digunakan:
Field pertama adalah menit keberapa. Nilai yang diizinkan adalah 0-59. Kita
bisa mengisikan nilai * yang berarti awal
sampai akhir.
Field kedua adalah jam keberapa. Nilai yang diizinkan adalah 0-23.
Field ketiga adalah hari keberapa dalam satu bulan. Nilai yang diizinkan adalah
1-31.
Monitoring Suhu KomputerSuhu yang terlampau tinggi terkadang menjadi penyebab suatu sistem gagal bekerja. Le-bih parah lagi, hardware sistem bisa ikut rusak. Di artikel ini, kita akan mengatur langkah antisipatif dengan memeriksa suhu komputer secara berkala dan memberikan aksi yang bersesuaian.
-
INFOLINUX 10/2005 57
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Suhu Komputer
Field keempat adalah bulan keberapa dalam satu tahun. Nilai yang diizinkan
adalah 1-12.
Field kelima adalah hari dalam satu min-ggu. Nilai yang diizinkan adalah 0-7. Ni-
lai 0 atau 7 adalah minggu (sun).
Sebagai contoh, apabila kita ingin men-
jalankan suatu tugas setiap jam 21.15 setiap
hari, maka berikanlah entri tabel berikut:
15 21 * * * /path/to/app
xmbmonBerikutnya, kita akan melihat penggunaan
program xmbmon. Versi xmbmon yang
digunakan adalah 2.0.5. Program ini dibuat
oleh Yoshifumi R. Shimizu (http://www.nt.phys.kyushu-u.ac.jp/shimizu/index.html).
Distribusi xmbmon umumnya berada
dalam format source code. Untuk itu, Anda
perlu melakukan konfi gurasi dan kompilasi
sebelum bisa digunakan:
$ ./configure$ make
Setelah kompilasi selesai, tergantung
konfi gurasi sistem Anda, Anda mungkin
akan menjumpai program xmbmon dan
mbmon di direktori aktif. Yang kita perlu-
kan adalah program mbmon.
Untuk mendapatkan suhu sistem, jalan-
kanlah mbmon tanpa parameter. Se bagai
contoh:
# ./mbmon
Temp.= 44.8, 32.1, 23.8; Rot.= 0, 0, 0Vcore = 1.54, 3.19; Volt. = 3.26, 4.98, 12.01, 0.00, 0.00
Temp.= 44.8, 32.1, 23.8; Rot.= 0, 0, 0Vcore = 1.54, 3.19; Volt. = 3.26, 4.98, 12.01, 0.00, 0.00
Temp.= 44.8, 32.1, 23.8; Rot.= 0, 0, 0
Vcore = 1.54, 3.19; Volt. = 3.26, 5.00, 12.01, 0.00, 0.00
Secara default, mbmon akan menampil-
kan informasi suhu sistem dan informasi
lainnya setiap lima detik sekali. Dalam ap-
likasi yang akan kita buat, kita perlu me-
minta kepada mbmon untuk menjalankan
hanya sekali tanpa perulangan. Untuk itu,
kita perlu memberikan opsi -c1 pada saat
menjalankan:
# ./mbmon -c1
Temp.= 43.7, 30.8, 23.8; Rot.= 0, 0, 0Vcore = 1.54, 3.20; Volt. = 3.26, 4.98, 12.01, 0.00, 0.00
Informasi yang kita dapatkan terlalu
lengkap. Bagaimana kalau kita hanya ingin
mengambil suhu sistem saja? Jalankanlah
mbmon dengan tambahan opsi -T1:
-
INFOLINUX 10/200558
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Suhu Komputer
# ./mbmon -T1 -c141.5
Sayangnya, informasi yang kita inginkan
adalah suhu dalam tipe integer. Oleh karena
itu, kita akan membuang informasi pecah-
annya. Gunakan program cut untuk mem-
bantu:
# ./mbmon -T1 -c1 | cut -d. -f141
Untuk memastikan bahwa semua
whitespace diabaikan, gunakan bantuan
program tr:
# ./mbmon -T1 -c1 | cut -d. -f1 | tr -d [[:space:]]41#
Selanjutnya, kita bisa gunakan output
perintah tersebut untuk mengisi variabel
temperatur kita, sebagai contoh TEMP=`./
mbmon -T1 -c1 | cut -d. -f1 | tr -d [[:
space:]]`.
AutoshutdownSampai di sini, kita telah siap membangun
aplikasi. Aplikasi yang akan kita bangun cu-
kup sederhana. Kita berikan nama hwmon2.
Tugas dari program ini adalah memeriksa
suhu sistem dan membuat laporan seder-
hana. Program hwmon2 ini akan dijalankan
setiap menit, dan oleh karenanya, kita akan
mendapatkan laporan suhu sistem setiap
menit (yang disimpan dalam fi le hwmon2.
report). Berikut ini adalah source code pro-
gram hwmon2:
#!/bin/sh
TEMP_OK=55TEMP=`/home/DATA/PUB/Apps/System/LowLevel/xmbmon/xmbmon205/mbmon -c1 -T1 | cut -d. -f1| tr -d [[:space:]]`STATUS=OK--$TEMP of $TEMP_OK
[ $TEMP -ge $TEMP_OK ] && STATUS=DANGER--$TEMP of $TEMP_OKecho [`date`] $STATUS >> ~/BACKUP/hwmon2.report
Sebagai catatan, script tersebut dijalan-
kan oleh root dan semua fi le disimpan di
/root/BACKUP/. Gantilah path ke mbmon
sesuai konfi gurasi sistem Anda. Ganti pula
lokasi laporan dan script Anda.
Untuk membuat autoshutdown, kita
akan membuat program tambahan, sebut
saja hwmon3, yang akan memeriksa baris
terakhir pada hwmon2.report, dan akan
melakukan tindakan yang bersesuaian apa-
bila menemukan kata DANGER. Program
ini juga akan mencatat waktu shutdown dan
suhu terakhir ketika shutdown dilakukan.
Berikut ini adalah source code program hw-
mon3:
#!/bin/sh
STATUS=`tail -n1 ~/BACKUP/hwmon2.report | grep -i danger | tr -d [[:space:]]`if [ ! -z $STATUS ] then echo `date` DANGEROUS SHUTDOWN $STATUS >> ~/BACKUP/shutdown.time /sbin/shutdown -h nowfi
Berikut ini adalah contoh isi fi le shut-
down.time:
Sun Jul 3 21:26:00 WIT 2005 DANGEROUS SHUTDOWN SunJul321:25:00WIT2005DANGER--55of55
Jangan lupa untuk menjalankan hw-
mon2 dan hwmon3 setiap menit. Tam-
bahkan kedua baris ini ke dalam crontab
Anda.
* * * * * /root/BACKUP/hwmon2.sh* * * * * /root/BACKUP/hwmon3.sh
Dengan kerja sama antara hwmon2 dan
hwmon3, kita bisa mendapatkan laporan
status sistem setiap jangka waktu tertentu,
dan dapat pula mengambil tindakan yang
diinginkan.
Satu pertimbangan penting yang mung-
kin perlu adalah masalah seberapa sering ki-
ta menjalankan program hwmon2 dan hw-
mon3. Terlalu sering tentu akan berakibat
pada kesibukan sistem yang mungkin tidak
perlu. Namun, terlalu lama juga akan mem-
buat aplikasi ini kurang berguna. Se suaikan
dengan kondisi server Anda dan load server
yang mungkin.
Pertimbangan lainnya adalah suhu yang
bisa ditoleransi (TEMP_OK pada hwmon2).
Pastikan jangan terlalu rendah dan jangan
lupa terlalu tinggi. Kenali pula karakteristik
processor yang digunakan.
Sampai di sini dulu pembahasan kita.
Source code program-program tersebut
masih bisa dikembangkan lebih lanjut se suai
kebutuhan Anda. Selamat mencoba!
Noprianto ([email protected])
Situs untuk memperoleh tool xmbmon.
-
INFOLINUX 10/2005 59
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
-
INFOLINUX 10/200560
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Oracle Cluster
Oracle database-nya nanti di-cluster saja, ya Pak? Biar lebih baik perfor-mansinya Kata-kata tersebut se ring penulis dengar ketika hendak meng-
implementasi sistem dan aplikasi berbasis
Orac le. Banyak orang berbicara tentang
cluster dan cluster. Tren Oracle cluster di
Indonesia berdasarkan pengamatan penulis
bukan ha nya terjadi di perusahaan yang me-
merlukan availability dan scalability yang
tinggi, namun perusahaan yang menurut
penulis belum per lu mengimplementasikan
Oracle Cluster pun juga mulai keranjingan
dengan teknologi tersebut.
Real Application Cluster ArchitectureReal Application Cluster (RAC) database
me merlukan dua atau lebih mesin yang me-
mungkinkan untuk bekerja bersamaan di
bawah kendali sistem operasi yang sudah di-
lakukan cluster sebelumnya. Architecture dari
RAC sendiri dapat dilihat pada gambar 1.
Gambar 1 memperlihatkan bahwa satu
database diakses secara bersamaan oleh 2
mesin (Instance RAC1 dan Instance RAC2)
melalui Cluster Interconnect.
Real Application Cluster on Linux?Mengapa penulis memilih Linux? bukan IBM-
AIX, Sun Solaris atau Microsoft Windows?
Hal ini bukan karena Linux memang
sedang trend sekarang ini, namun dari be-
berapa kali implementasi Oracle Real Ap-
plication cluster yang penulis lakukan, yaitu
mulai dari yang berbasis Windows, Linux,
Solaris dan AIX, Linux memberikan hasil
yang sangat memuaskan dalam memenuhi
modern business requirement sekarang ini.
Yaitu dilihat dari Reliability, Portability,
Recoverability, Secure ability, Audit
ability, Manageability & Maintainability,
Scalability, Availability, dan Response.
Linux dapat memenuhi semua kriteria terse-
but dikarenakan Oracle Corporation sendiri
sudah memfokuskan teknologinya menggu-
nakan sistem operasi Linux.
Instalasi Oracle Real Application ClusterMelalui artikel ini penulis mencoba membagi
pengalaman bagaimana melakukan instalasi
Oracle RAC di Linux. Penulis memberikan
contoh menggunakan Oracle9i dengan Patch-
es terakhir dan menggunakan Redhat Advance
Server 3.0 update 2 untuk versi Linux-nya.
Mengapa bukan Oracle versi 10g? Pada
prinsipnya langkah-langkah untuk Oracle 10g
tidak jauh berbeda, mungkin di lain kesempa-
tan penulis juga akan membagi pengalaman
bagaimana melakukannya untuk Oracle 10g.
Konfigurasi sistemBerikut ini adalah konfi gurasi sistem yang
penulis gunakan untuk membangun Real
Application Cluster. Pada kesempatan ini
penulis akan menggunakan dua mesin atau
dua node untuk menyederhanakan masalah.
Walaupun pada kasus di lapangan, cluster-
ing Oracle banyak diimplementasikan de-
ngan menggunakan minimal tiga node.
Mesin 1 (HP DL 380 G3) Hostname: dsmp1 IPAddress: eth0 192.168.1.1 netmask 255.255.255.0
eth1 10.1.1.1 netmask 255.255.255.0
Processor: 4 x Intel Pentium IV Xeon 3.0 Ghz
Memory: 4 x 1 GB Harddisk: 18.2 x 4 SCSI 10k (RAID 0 + 1)
Operating System: Redhat Avance Server 32 Bit Update 2
Fibre Card: QLogic 2214 (Certifi ed for Linux)
Oracle Database Version: Oracle Enterprise Editions 9i(9.2.0.4) for
Linux
Mesin 2(HP DL 380 G3) Hostname: dsmp2 IPAddress: eth0 :192.168.1.2 netmask 255.255.255.0
eth1 : 10.1.1.2 netmask 255.255.255.0
Processor: 4 x Intel Pentium IV Xeon 3.0 Ghz
Memory: 4 x 1 GB Harddisk: 18.2 x 4 SCSI 10k (RAID 0 + 1)
Operating System: Redhat Advance Server 32 Bit Update 2
Oracle Cluster pada Red Hat Linux Advance Server 3.0Bagian 1 dari 3 Artikel
Ada apa dengan Oracle Real Application Cluster sebenarnya? Apakah memang sesuatu yang perlu kita implementasikan? Ataukah hanya sebuah sugesti tren teknologi? Temukan jawabannya pada paparan berikut ini.
Gambar 1. Architecture RAC.
-
INFOLINUX 10/2005 61
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Oracle Cluster
Fibre Card: QLogic 2214 (Certifi ed for Linux)
Oracle Database Version: Oracle Enterprise Editions 9i(9.2.0.4) for
Linux
Storage Name: HP Storage Work Modular Smart Array
1000
Harddisk: 36.4 x 14 SCSI 15k (RAID 0 + 1)
Detail Configuration Parallel SCSI A ( 34731 MB) - /dev/sda1 RAID (1+0) Bay 1 , 2 Purpose: Quorumfi le & Share Con-
fi guration
Parallel SCSI B (243122 MB) - /dev/sdb1 RAID (5) Bay 3 - 10 Purpose: OCFS (Oracle Cluster File
System)
Parallel SCSI C ( 110000 MB) - /dev/sdc1 RAID (5) spare 1 Disk Bay 14 Bay 11-13 Purpose: Backup & Archive Log
Paket-paket yang dibutuhkanSebelum melakukan instalasi Oracle, baik
itu OCFS, Oracle Cluster Manager dan
Oracle Database Enterprise Edition, Anda
harus yakin bahwa beberapa fi le rpm sudah
terinstall dalam semua mesin yang akan di-
cluster. File-fi le rpm tersebut adalah:
1. CD-2 Redhat Advance Server 3.0
setarch-1.3-1.i386.rpm tcl-8.3.5-92.i386.rpm
2. CD-3 RedHat Advance Server 3.0
openmotif21-2.1.30-8.i386.rpm compat-db-4.0.14-5.i386.rpm compat-gcc-7.3-2.96.122.i386.rpm compat-gcc-c++-7.3-2.96.122.i386.
rpm
compat-libstdc++-7.3-2.96.122.i386.rpm
c o m p a t - l i b s t d c + + - d e v e l - 7 . 3-2.96.122.i386.rpm
Setelah semua fi le tersebut terinstal di
dalam mesin Linux, sekarang saatnya kita
melakukan beberapa konfi gurasi yang dibu-
tuhkan oleh Oracle database pada saat insta-
lasi dijalankan. Untuk itu ikutilah langkah-
langkah yang akan disajikan secara bersam-
bung dalam majalah kesayangan kita ini.
Konfigurasi kernel LinuxInstalasi Oracle membutuhkan beberapa
perubahan pada kernel Linux, untuk me-
nambahkan beberapa parameter yang ber-
hubungan dengan Oracle database. Untuk
itu tambahkan parameter seperti berikut ini
pada kedua mesin (dsmp1 & dsmp2):
[root@dsmp1 root]# vi /etc/sysctl.conf
# Oracle Configuration for RACnet.core.rmem_default=262144net.core.wmem_default=262144net.core.rmem_max=262144net.core.wmem_max=262144# End of for RAC
# Oracle Configurationkernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 4096
kernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 1024 65000# End of Oracle
[root@dsmp1 root]# vi /etc/security/limits.conf
# Oracle Configuration* soft nproc 2047* hard nproc 16384* soft nofile 1024* hard nofile 65536# End of Oracle
[root@dsmp1 root]# vi /etc/pam.d/login
# Oracle Configurationsession required /lib/security/pam_limits.so# End of Oracle Configuration
Setelah menambahkan parameter terse-
but, lakukan restart pada kedua mesin Linux.
-
INFOLINUX 10/200562
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Oracle Cluster
Konfigurasi hangcheck-timerTambahkan parameter berikut pada /etc/
modules.conf Red Hat Linux di semua me-
sin RAC.
[root@dsmp1 root]# echo options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180 >> /etc/modules.conf[root@dsmp1 root]#
Hangcheck-timer memiliki dua para-
meter, yaitu:
1. hangcheck_tick, parameter ini berguna
untuk melakukan check terhadap Sys-
tem Health
2. hangcheck_margin, parameter ini adalah
maksimum Hang Delay yang ditole-
ransi sebelum hangcheck-timer melaku-
kan reset terhadap RAC Node.
Membuat group dan user OracleTahap selanjutnya adalah membuat user
Oracle. User Oracle digunakan untuk
melakukan administrasi terhadap data-
base Oracle. User Oracle yang dibuat ha-
rus merupakan member dari group oinstall
dan dba. Untuk membuatnya lakukan de-
ngan perintah-perintah di bawah ini pada
kedua mesin:
[root@dsmp1 root]# groupadd oinstall[root@dsmp1 root]# groupadd dba[root@dsmp1 root]# adduser Oracle -g oinstall -G dba[root@dsmp1 root]#
Konfigurasi ORACLE_HOME & User ProfileSelanjutkan kita harus membuat ORACLE_
HOME. ORACLE_HOME adalah tempat
Oracle database & Oracle cluster manager
akan diinstal. ORACLE_HOME pada insta-
lasi diletakkan pada /u01/app/product/Ora-
cle/9.2. Untuk membuatnya ikuti langkah di
bawah ini:
[root@dsmp1 root]# mkdir -p /u01/app/Oracle/product/9.2[root@dsmp1 root]# chown -R Oracle:oinstall /u01/app[root@dsmp1 root]#
Script di atas juga harus dilakukan di
semua mesin cluster. Oracle juga memerlu-
kan modifi kasi pada fi le .bash_profi le pada
user Oracle untuk menentukan nilai dari
$ORACLE_BASE, $ORACLE_HOME dan
juga ORACLE_SID. Ikuti langkah berikut
ini untuk memodifi kasi fi le .bash_profi le:
Mesin 1 (dsmp1)[root@dsmp1 root]# su - Oracle[Oracle@dsmp1 Oracle]$ vi .bash_profile
ORACLE_BASE=/u01/app/Oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/9.2; export ORACLE_HOMEORACLE_SID=reald1;ORACLE_OWNER=Oracle; export ORACLE_OWNERPATH=$PATH:$ORACLE_HOME/bin; export PATHLD_LIBRARY_PATH=$ORACLE_HOME/jlib; export LD_LIBRARY_PATHCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlibCLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib;export CLASSPATHLD_ASSUME_KERNEL=2.4.19; export LD_ASSUME_KERNEL
Mesin 2 (dsmp2)[root@dsmp2 root]# su - Oracle[Oracle@dsmp2 Oracle]$ vi .bash_profile
ORACLE_BASE=/u01/app/Oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/9.2; export ORACLE_HOMEORACLE_SID=reald2;ORACLE_OWNER=Oracle; export ORACLE_OWNERPATH=$PATH:$ORACLE_HOME/bin; export PATHLD_LIBRARY_PATH=$ORACLE_HOME/jlib; export LD_LIBRARY_PATHCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlibCLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib;export CLASSPATHLD_ASSUME_KERNEL=2.4.19; export LD_ASSUME_KERNEL
Konfigurasi networkTambahkan konfi gurasi berikut ini pa-
da /etc/hosts di kedua mesin (dsmp1 &
dsmp2):
192.168.1.1 dsmp1192.168.1.2 dsmp210.1.1.1 dsmp1-priv10.1.1.2 dsmp2-priv
Konfigurasi rsh untuk Remote OperationKetika melakukan instalasi Oracle pada
RAC Node, Oracle akan menggunakan fi tur
rsh untuk melakukan copy Oracle software
dari satu node ke node yang lainnya. Oleh
karena itu, Oracle account harus di-trust
oleh semua RAC Node. Untuk melakukan-
nya, ikuti langkah berikut:
Yakinkan rsh server sudah terinstal di server Anda.
[root@dsmp1 root]# rpm -qa | grep rshrsh-0.17-17rsh-server-0.17-17[root@dsmp1 root]#
Aktifkan service rsh, yang biasanya di-disable oleh Linux.
[root@dsmp1 root]# chkconfig rsh on[root@dsmp1 root]# chkconfig rlogin on[root@dsmp1 root]# service xinetd reloadReloadingconfiguration: [OK][root@dsmp1 root]#
Tambahkan konfi gurasi berikut ini pada fi le /etc/hosts.equiv.
+dsmp1 Oracle+dsmp2 Oracle+dsmp1-priv Oracle+dsmp2-priv Oracle
Ubahlah mode fi le tersebut.[root@dsmp1 root]# chmod 600 /etc/hosts.equiv[root@dsmp1 root]# chown root:root /etc/hosts.equiv
Lakukan langkah di atas di semua mesin
RAC dan setelah itu yakinkan bahwa user
Oracle dapat melakukan remote opera-
tion tanpa meminta password. Untuk itu
-
INFOLINUX 10/2005 63
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Oracle Cluster
ikuti langkah berikut ini:
[root@dsmp1 root]# su - Oracle[Oracle@dsmp1 Oracle]$ rsh dsmp2 hostnamedsmp2[Oracle@dsmp1 Oracle]$ rsh dsmp2-priv hostnamedsmp2[Oracle@dsmp1 Oracle]$
Jika Linux sudah tidak lagi meminta
password, maka konfi gurasi rsh sudah Anda
lakukan dengan benar. Namun jika Linux
tetap meminta password, ulangi langkah di
atas. Jika step ini tidak dilakukan dengan
benar, instalasi Oracle dipastikan akan gagal
karena Oracle tidak dapat melakukan re-
mote copying.
Patches Red Hat Linux Advance Server 3.0Sebelum melakukan instalasi Oracle, Anda
perlu melakukan patches pada Redhat Ad-
vance Server 3.0 agar instalasi Oracle ber-
jalan dengan lancar tanpa error. Patches
tersebut adalah p3006854_9204_LINUX.
zip, yang bisa didapatkan dari http://meta-
link.oracle.com. Untuk melakukan patches
harus su atau login sebagai user root dan
dilakukan di semua mesin yang akan di-
cluster.
Mesin 1 ( dsmp1)[root@dsmp1 patches]# unzip p3006854_9204_LINUX.zipArchive: p3006854_9204_LINUX.zip creating: 3006854/ inflating: 3006854/rhel3_pre_ install.sh inflating: 3006854/README.txt[root@dsmp1 patches]# cd 3006854/[root@dsmp1 3006854]# sh rhel3_pre_install.shApplying patch...Ensuring permissions are correctly set...Done.Patch successfully applied
Mesin 2 (dsmp2)[root@dsmp2 source]# unzip p3006854_9204_LINUX.zipArchive: p3006854_9204_LINUX.zip creating: 3006854/ inflating: 3006854/rhel3_pre_ install.sh inflating: 3006854/README.txt[root@dsmp2 source]# cd 3006854/[root@dsmp2 3006854]# sh rhel3_pre_install.shApplying patch...Ensuring permissions are correctly set...Done.Patch successfully applied[root@dsmp2 3006854]#
Pada bagian kedua akan membahas
mengenai cara instalasi OCFS (Oracle Clus-
ter File System) yang akan digunakan untuk
membangun Oracle RAC (Real Application
Cluster).
Yahya Yanuar ([email protected])
-
INFOLINUX 10/200564
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
SQLite
Database embbeded selalu menjadi cerita yang seru bagi pengguna yang ingin segalanya serba prak-tis. Dan, jumlah pengguna tersebut sangat-
lah banyak di seluruh dunia. Penulis juga
merupakan salah satunya. Tak heran apabila
database semacam DB(F) dan MDB sangat
populer sampai hari ini. Berjuta-juta peng-
guna komputer di dunia ini masih meng-
gunakan database jenis tersebut. Dengan
database embbeded, semua data disimpan
di dalamumumnyasatu fi le tunggal,
yang menjadikannya sangat mudah untuk
dibagi, sangat mudah untuk dipindahkan
dan secara umum, sangat mudah untuk di-
manage.
Database system semacam ini jelas ber-
tentangan dengan database yang bekerja se-
cara client/server seperti PostgreSQL atau-
pun MySQL. Arsitektur database system
keduanya memungkinkan adanya bagian
yang jelas antara server database dan client
database. Dengan demikian, untuk kebu-
tuhan data diakses ramai-ramai, pengguna
tidak perlu mengatur fi le sharing secara
manual, karena database system-nya sen diri
telah mengizinkan. Dibandingkan dengan
database embedded, database semacam ini
jelas memiliki keunggulan seperti multi
user native seperti disebutkan sebelumnya,
skema keamanan yang lebih fl eksibel, dan
umum nya, lebih mendukung sistem enter-
prise. Namun, jangan lupa bahwa proses
replikasi, back-up, dan restore juga tidak
mudah.
Sebagai pengguna database, pemili-
han suatu database system merupakan hal
yang sangat penting. Benar bahwa hampir
semuanya menggunakan bahasa SQL stan-
dar, namun, tidak semua menuruti standar
benar-benar. Boleh dikatakan, masing-ma-
sing database system yang menerapkan SQL
pun, umumnya menambahkan fi tur sen diri
yang oleh karenanya tidak dimiliki oleh da-
tabase system lain. Lebih detil, ada pula ma-
salah tipe data yang disebabkan tidak menu-
ruti standar SQL.
Untuk memilih database system itu
sendiri, Anda mungkin akan memilih dulu
apakah database system yang akan Anda
gunakan tersebut termasuk kategori yang
embbeded atau yang bekerja secara client/
server. Berikut ini adalah beberapa alasan
untuk menggunakan database embedded:
Anda akan sering memindah-mindah-kan database dari satu tempat ke tempat
lainnya.
Database tidak digunakan untuk mela-yani kebutuhan enterprise (contoh: tidak
perlu database clustering).
Anda tidak membutuhkan banyak fi tur advanced (contoh: tidak membutuhkan
trigger, stored procedure, dan lain-lain).
Apabila Anda memiliki alasan-alasan
tersebut, maka tidak ada salahnya apabila
Anda mencoba menggunakan embedded
database. Bicara soal ukuran data yang
mampu ditampung oleh database embed -
ded, umumnya hal tersebut bukan merupa-
kan masalah lagi. Ukuran yang mampu
di tampung oleh suatu embedded database
juga tergantung pada sistem operasi yang
digunakan. Apabila diperkirakan data-
base Anda perlu menampung database
ber ukuran sekitar 2 GB misalnya, maka ba-
nyak sekali database embedded yang sudah
mendukung. Ukuran fi le 2 GB juga bukan
masalah besar untuk sistem operasi mo-
dern. Beberapa database embedded secara
teori mampu menampung data sampai satu-
an Tera, namun, apabila data Anda sudah
berkisar pada ukuran tersebut, akan sangat
disarankan apabila Anda menggunakan da-
tabase system yang memiliki dukungan un-
tuk dunia enterprise.
Mari kita batasi bahwa kita akan menggu-
nakan database embedded. Solusi tidak ser-
ta merta muncul begitu saja karena terdapat
begitu banyak database embbeded yang ada
di pasaran. Untuk di dunia open source saja,
diperkirakan ada belasan database embed-
ded yang tersedia. Walau, yang benar-benar
bisa diandalkan barangkali hanya di bawah
sepuluh. Beberapa yang sangat populer di-
antaranya DB dari Sleepycat dan Sqlite.
Bicara soal database, umumnya yang se-
lalu terbayang di dalam benak kita adalah
sintaks SQL. Sayangnya, tidak semua da-
tabase embedded mendukung fi tur yang
satu ini. Banyak sekali embbeded database
yang hanya mendukung operasi pencarian
dengan lookup pada key, sementara operasi
penambahan data dan modifi kasi atau peng-
hapusan data menggunakan API yang telah
disediakan. DB (BerkeleyDB) misalnya.
Walaupun merupakan salah satu database
embbeded terpopuler yang ada, tidaklah
mendukung sintaks SQL. Keputusan untuk
tidak datang bersama fi tur ini umumnya
macam-macam. Ada yang memang karena
Database Embedded dengan SQLiteUntuk kebutuhan database, tidak semua pengguna harus menggunakan MySQL ataupun PostgreSQL. Keduanya membutuhkan resource sistem yang cukup besar dan sistem da-tabasenya pun cukup rumit. Apabila Anda membutuhkan database satu file, yang ke-cil, sederhana, bisa dipindahkan dengan sangat mudah, maka Anda selalu bisa mencoba SQLite.
-
INFOLINUX 10/2005 65
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
keterbatasan teknologi, ada yang dikarena-
kan tujuan optimasi dan compactness. De-
ngan tidak datang bersama fi tur dukungan
SQL, maka setidaknya tidak akan ada kegi-
atan parsing dan mengartikan sintaks SQL
yang diberikan. Kecepatan proses pun bisa
ditingkatkan.
Mengenal SQLiteDari beberapa embbeded database yang me-
miliki cukup banyak fi tur, sekaligus datang
dengan kemampuan SQL, penulis cukup
senang dengan kehadiran SQLite. Ada be-
berapa alasan mengapa SQLite menyenang-
kan:
Secara umum sangat stabil. Penulis cuk-up lama menggunakan SQLite dan tidak
ada masalah yang berarti.
Lisensi yang sangat menyenangkan. SQLite merupakan software yang dili-
sensikan public domain. Ini jauh lebih
menyenangkan daripada GPL.
Sangat cepat. Dari sisi dukungan SQL, mendukung
banyak sekali standar SQL92.
Mampu menampung data sampai 2 Tera. Walaupun yang satu ini umumnya
tidak terlalu menjadi fi tur yang pa ling
menarik, setidaknya, SQLite mampu
menampung data sangat besar.
Tidak memerlukan banyak memory. Ini sangat berguna untuk sistem yang juga
embedded.
Banyak bahasa program telah mendu-kung database yang satu ini.
Mendukung ACID, bahkan pada kegaga-lan sistem atau power.
Perkembangannya juga cukup stabil. Dan, tentunya, sebagai database embed-
ded, tidak ada usaha tambahan untuk
pengaturan data, selain itu, database pun
disimpan dalam satu fi le tunggal. File
tersebut dapat dipindahkan bahkan dari
mesin LE (Little Endian) ke BE (Big En-
dian) dan lain sebagainya.
Tabel dapat disimpan pada fi le terpisah, dan dapat di-attach ke database utama.
SQLite adalah database system yang
dikembangkan oleh D. Richard Hipp dari HWACI Applied Software Research
([email protected]). Sqlite dapat di-down-
load di http://www.sqlite.org. Namun, sebe-
lum men-download, cobalah cari terlebih
dahulu ke dalam CD-ROM Anda. Hampir
semua distro desktop umumnya telah me-
maketkan sqlite ke dalam CD/DVD distro.
Saat ini, SQLite telah mencapai versi 3.x,
walaupun versi 2.x masih tetap dimaintain.
Karena versi 2.x masih sangat banyak di-
gunakan, maka pada distribusi versi 3, be-
berapa penyesuaian pun dilakukan. Sebagai
contoh, nama header pustaka pada versi 3
adalah sqlite3.h, dan bukan sqlite.h. De ngan
beberapa penyesuaian tersebut, maka di-
mungkinkan adanya dua versi SQLite terin-
stall dalam sistem.
Berikut ini kita akan membahas beberapa
fi tur baru versi 3, sekaligus membandingkan
dengan versi 2.
Format file baruFormat fi le data SQLite telah mengalami
perubahan dibandingkan dengan versi 2.
Sayangnya, perubahan format tersebut ti-
dak kompatibel satu sama lainnya. Versi 2
tidak akan membaca database versi 3, dan
sebaliknya.
Untungnya, walaupun format data tidak
kompatibel, migrasi tetap dapat dilakukan
dengan sangat mudah dengan memanfaat-
kan perintah dump dari program sqlite versi
2, dan hasilnya kemudian disimpan pada
database versi 3 menggunakan program
sqlite versi 3. Hal ini dimungkinkan karena
dalam satu sistem bisa terinstal lebih dari
satu versi SQLIte.
Secara teknikal, format fi le baru SQLite
mempergunakan tipe data B+Tree untuk
tabel (untuk indeks, b-tree konvensional
masih dipergunakan). Pada tree ini, semua
data disimpan pada daun-daun tree. Menu-
rut pengembang SQLite, format baru ini
akan memungkinkan skalabilitas yang lebih
baik.
Tipe dataDukungan untuk BLOB dan tipe data. Se-
lama ini, SQLite dikenal sebagai database ser-
ver yang tidak bertipe (walaupun pada DDL
didukung). Pada SQLite 2.x, semua data
akan dikonversi ke teks ASCII. Pada versi 3,
apabila memungkinkan, maka data akan di-
simpan sebagai tipe yang didefi niskan oleh
user. Penyimpanan ke format non-ASCII
sangat penting untuk memungkinkan ada-
nya tipe data BLOB (Binary Large Object).
BLOB pada versi 2.x dimungkinkan apabila
data telah diencode terlebih dahulu.
Masalah tipe data ini merupakan hal
yang sangat penting. Pada versi 2.8, kare-
na semua data akan dikonversi ke teks
ASCII, maka dengan demikian, data yang
seharusnya disimpan ke kolom satu bisa
Website SQLite.
SQLite
-
INFOLINUX 10/200566
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
SQLite
disimpan ke kolom lain. Hal ini mungkin
terdengar sangat asing pada database sys-
tem lain. Pada SQLite versi 3, fi tur ini ma-
sih diperta hankan, namun penanganannya
telah diperbaiki. Pada saat data dimasuk-
kan ke dalam kolom, SQLite 3 akan men-
coba untuk melakukan konversi ke format
yang telah didefi nisikan. Apabila konversi
tidak dimungkinkan, SQLite 3 tetap akan
menyim pan data tersebut.
Sebagai contoh, apabila data string ingin
dimasukkan ke dalam kolom integer, maka
SQLite akan memeriksa apakah data dapat
dikonversi ke bilangan. Apabila dapat, maka
konversi dilakukan dan data akan disimpan
ke dalam kolom integer. Apabila tidak dapat
dikonversi, maka data akan tetap disimpan
sebagai string.
Berikut ini adalah tipe-tipe data yang
didukung:
NULL, nilai null INTEGER, menyimpan integer sampai
integer 8 byte
REAL, menyimpan nilai fl oating point/pecahan sampai 8 byte IEEE fl oating
point
TEXT, menyimpan teks BLOB, menyimpan data blob
ConcurencySebuah database tentunya bisa diakses oleh
lebih dari satu orang pada saat yang sama.
Dan, dengan kondisi demikian, maka lock-
ing adalah isu yang sangat penting. Pada
SQLite 3, locking pada level tabel juga telah
diimplementasikan, walaupun tidak akan
sebaik locking pada database system besar
lain.
ROWID 64bitSetiap baris dalam tabel akan memiliki ID
yang unik (rowid). Dibandingkan dengan
versi 2.8 yang hanya mendukung rowid
sampai 32bit, versi 3 telah mendukung sam-
pai 64bit.
Dukungan UTF-8 dan UTF-16SQLite 3 telah mendukung baik teks UTF-8
dan UTF-16 secara natif. Hal ini menjadi-
kan dukungan yang lebih luas untuk ba-
hasa di dunia. Implementasi saat ini belum
sepenuhnya mendukung kedua encoding
tersebut, namun, di masa depan, SQLite 3
akan mendukung sepenuhnya.
Fitur SQL92 yang tidak didukungSQLite berusaha untuk mendukung seba-
nyak mungkin fi tur SQL92. Namun, untuk
kecepatan dan alasan lain, beberapa fi tur
tidak didukung. Berikut ini adalah fi tur
SQL92 yang tidak didukung:
CHECK constrain. Parser mengenali CHECK namun tidak akan dijalankan,
kecuali UNIQUE dan NOT NULL.
FOREIGN KEY. Parser mengenali na-mun tidak akan menjalankan.
Dukungan trigger komplit. Saat ini, du-kungan trigger pada SQLite belumlah
komplit.
ALTER TABLE. Untuk mengubah tabel, hapuslah tabel dan buatlah kembali. Saat
ini, hanya ALTER TABLE ... RENAME
TABLE ... yang didukung.
Transaksi bersarang (nested transaction). Fungsi COUNT(DISTINCT X). Cara al-
ternatif adalah dengan menggunakan sub-
query seperti SELECT count(x) FROM
(SELECT DISTINCT x FROM tbl);
RIGHT OUTER JOIN dan FULL OUT-ER JOIN tidak diimplementasikan. Yang
telah diimplementasikan adalah LEFT
OUTER JOIN.
Menulis ke view tidak diimplementasi-kan. Pada SQLite, view adalah read-only.
GRANT dan REVOKE. Hal ini disebab-kan karena pengguna fi le database yang
disimpan langsung pada fi lesystem, se-
hingga hak akses akan menuruti hak ak-
ses pada fi lesystem.
Bisa dilihat bahwa fi tur yang tidak didu-
kung sudah cukup sedikit dan tidak terlalu
vital. Yang mungkin sedikit vital adalah
FOREIGN KEY, yang terpaksa harus dicapai
melalui program.
Distribusi SQLiteDistribusi SQLite 3 sebenarnya hanya terdiri
dari satu program dan beberapa pustaka C
untuk mengakses database. Program sqlite3
yang datang bersama distribusi SQLite3
merupakan program untuk bekerja de ngan
SQLite, mulai dari pembuatan database
sampai memungkinkan perintah-perintah
khusus SQLite dan sintaks SQL untuk di-
jalankan.
Secara sederhana, program sqlite3 bisa
dianggap seperti halnya program psql (client
PostgreSQL) dan mysql (client MySQL).
Sementara, pustaka yang datang bersama
SQLite adalah pustaka libsqlite3. Pustaka
ini dapat digunakan oleh developer untuk
bekerja dengan database SQLite.
Umumnya, paket-paket dalam distro
dibagi dalam paket sqlite dan sqlite-de-
vel. Untuk pengembangan program, paket
sqlite-devel harus diinstal. Paket sqlite-de-
vel akan berisi dokumentasi, fi le-fi le header
dan pustaka untuk kebutuhan pembuatan
program.
Menggunakan sqlite3Begitu dijalankan, sqlite3 dapat menerima
dua macam perintah: perintah sqlite3 atau-
pun perintah SQL. Perintah sqlite3 adalah
perintah yang diawali oleh tanda titik dan
dapat menerima parameter. Berikut ini
adalah beberapa perintah sqlite3 yang ber-
guna:
.help berguna untuk melihat daftar pe-rintah sqlite3.
.databases berguna untuk melihat nama dan fi le yang digunakan database.
.dump berguna untuk melakukan dump database.
.echo berguna untuk menampilkan pe-rintah yang dijalankan dalam hasil.
.mode berguna untuk mengatur mode output. Mode yang tersedia cukup ba-
nyak, diantaranya line, html, column,
csv dan lain sebagainya.
.output berguna untuk menyimpan out-put perintah ke fi le tertentu.
.read berguna untuk menjalankan SQL dari fi le tertentu.
.tables berguna untuk menampilkan daf-tar tabel.
Untuk perintah SQL, Anda dapat lang-
sung memberikannya di prompt.
Membuat database baruUntuk membuat database baru, cukup
jalankan program sqlite, diikuti oleh sebuah
parameter berupa nama database. Ekstensi
nama fi le database umumnya adalah .db,
namun Anda dapat menggunakan ekstensi
yang Anda suka. Tidak ada pembatasan.
Setelah itu, masukkanlah perintah SQL
untuk membuat tabel ataupun mengisi-
kan data ke dalam tabel. Setelah itu, begitu
Anda keluar dari sqlite3, database telah ter-
simpan.
-
INFOLINUX 10/2005 67
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
SQLite
Contoh:
$ sqlite3 test.dbSQLite version 3.1.3Enter .help for instructionssqlite> create table test(a integer, b integer);sqlite> .exit
Melihat daftar tableUntuk melihat daftar table, berikanlah pe-
rintah .tables seperti contoh berikut ini:
$ sqlite3 test.db SQLite version 3.1.3Enter .help for instructionssqlite> .tablestest test2 test3 test4 test5sqlite> .exit
Menjalankan sintaks SQL dari com-mand lineAda kalanya, Anda ingin menjalankan sin-
taks SQL dari command line, misalnya keti-
ka digunakan dalam script. Untuk kebutuh-
an tersebut, Anda bisa langsung memberi-
kan perintah SQL langsung pada command
line seperti contoh berikut:
$ sqlite3 test.db select * from test;1|12|2
Sebenarnya, Anda pun bisa saja men-
jalankan perintah internal sqlite3 di com-
mand line:
$ sqlite3 test.db .tables;test test2 test3 test4 test5
Menjalankan sintaks SQL dari file lainUntuk menjalankan sintaks SQL yang ter-
simpan dalam fi le lain, gunakanlah perintah
internal .read seperti contoh berikut ini.
isi file test.sqlselect * from test;insert into test(a,b) values(3,3);select * from test;
Contoh penggunaan .read:
$ sqlite3 test.db SQLite version 3.1.3
Enter .help for instructionssqlite> .echo onsqlite> .read test.sql .read test.sql select * from test;1|12|23|3insert into test(a,b) values(3,3);select * from test;1|12|23|33|3
sqlite> .exit
Dump database ke fileWalaupun back-up dapat dilakukan de-
ngan langsung meng-copy fi le database ke
lokasi lain, tidak harus dengan cara dump
seperti MySQL ataupun PostgreSQL, ada
kalanya dump diperlukan. Contoh paling
baik adalah ketika Anda ingin memigrasi
data dari SQLite versi lama ke SQLite versi
baru.
Berikut ini adalah langkah-langkah
melakukan dump:
jalankan sqlite3 berikan perintah .output
berikan perintah .dump atur kembali agar output kembali disim-
pan ke stdout dengan perintah .output
stdout
Contoh:
$ sqlite3 test.db SQLite version 3.1.3Enter .help for instructionssqlite> .output dump.sqlsqlite> .dumpsqlite> .output stdoutsqlite> .exit
Contoh fi le hasil dump:
$ cat dump.sql BEGIN TRANSACTION;CREATE TABLE test(a integer, b integer);INSERT INTO test VALUES(1, 1);INSERT INTO test VALUES(2, 2);INSERT INTO test VALUES(3, 3);
INSERT INTO test VALUES(3, 3);CREATE TABLE test2(a integer, b integer);CREATE TABLE test3(a integer, b integer);CREATE TABLE test4(a integer, b integer);CREATE TABLE test5(a integer, b integer);COMMIT;
Melihat skema databaseUntuk melihat skema dalam database, beri-
kanlah perintah .schema seperti contoh
berikut:
$ sqlite3 test.db SQLite version 3.1.3Enter .help for instructionssqlite> .schemaCREATE TABLE test(a integer, b integer);CREATE TABLE test2(a integer, b integer);CREATE TABLE test3(a integer, b integer);CREATE TABLE test4(a integer, b integer);CREATE TABLE test5(a integer, b integer);sqlite> .exit
Output sqlite_to_web.sh.
-
INFOLINUX 10/200568
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
SQLite
Untuk melihat skema per table, berikan
parameter nama tabel pada .schema:
sqlite> .schema testCREATE TABLE test(a integer, b integer);sqlite>
Membuat auto-incrementSQLite tidak memiliki dukungan khusus
untuk membuat fi eld auto-increment. Apa
yang bisa dilakukan untuk membuat fi eld
auto-increment adalah dengan membuat
suatu fi eld bertipe integer dan menjadikan-
nya primary key. Pada saat insert, pengguna
tidak perlu memasukkan nilai tertentu ke
fi eld tersebut. SQLite akan menambahkan-
nya sendiri, sehingga auto-increment pun
dimungkinkan.
Sebagai contoh, kita akan membuat table
test6 yang terdiri dari dua fi eld berikut ini:
a bertipe integer dan berupa primary key b bertipe integer
Berikut ini adalah sintaks SQL untuk ke-
butuhan pembuatan tabel:
sqlite> create table test6(a integer primary key, b integer);
Kita telah mempersiapkan fi eld a sebagai
fi eld auto-increment. Dengan tidak mema-
sukkan nilai ke fi eld a setiap kali melakukan
insert, nilai data pada fi eld a akan ditambah-
kan satu. Contoh:
sqlite> insert into test6(b) values(1);sqlite> insert into test6(b) values(2);sqlite> insert into test6(b) values(3);
Berikut ini adalah isi table test6:
select * from test6;1|12|23|3
Proses penambahan ini akan berhenti
apabila telah mencapai nilai 2147483647.
Selanjutnya, nilai random yang akan dima-
sukkan.
Mengubah prompt sqlite3Secara default, prompt pada sqlite3 adalah
sqlite> dan prompt untuk baris lanjutan
perintah yang belum selesai adalah ...>.
Anda bisa menggantinya dengan perintah
.prompt apabila diinginkan.
Contoh:
$ sqlite3 test.db SQLite version 3.1.3Enter .help for instructionssqlite> select ...> * ...> from ...> test;1|12|23|33|3sqlite> .prompt mydb> --->mydb>select --->* --->from --->test;1|12|23|33|3mydb>
Output ke format CSVAnda bisa membuka isi dari suatu tabel
database sqlite di OpenOffi ce.org ataupun
di Excel. Caranya adalah dengan mem-
buat output program sqlite3 menjadi for-
mat CSV. Setiap record kemudian akan
di tampilkan perbaris, dan setiap fi eld akan
ditampilkan dengan dipisahkan oleh koma.
Berikut ini contohnya:
$ sqlite3 test.db SQLite version 3.1.3Enter .help for instructionssqlite> .mode csvsqlite> .output test.csvsqlite> select * from test;sqlite> .output stdoutsqlite> .mode listsqlite> .exit
Berikut ini adalah isi fi le test.csv:
1,12,23,33,3
Output ke format HTMLApabila isi table ingin ditampilkan di inter-
net, maka format output bisa diganti ke for-
mat HTML. Berikut ini adalah contohnya:
$ sqlite3 test.db SQLite version 3.1.3Enter .help for instructionssqlite> .header onsqlite> .mode htmlsqlite> .output test.htmlsqlite> select * from test;sqlite> .output stdout;sqlite> .mode listsqlite> .header offsqlite> .exit
Berikut ini adalah isi test.html:
ab11
22
33
33
Sebagai catatan, perintah .header on
berguna untuk meminta sqlite3 untuk me-
nampilkan nama fi eld setiap kali query di-
lakukan. Tentunya, kita tidak ingin tabel
HTML yang dibuat tidak memiliki judul,
bukan?
Output teks yang rapiOutput pada sqlite3 memang tidak rapi.
Apabila Anda menginginkannya untuk tam-
pil rapi seperti psql misalnya, gantilah for-
mat output menjadi column, dan ja ngan lu-
pa untuk mengatur lebar kolom data Anda.
Berikut ini adalah contohnya:
$ sqlite3 test.db SQLite version 3.1.3Enter .help for instructionssqlite> .header onsqlite> .mode columnsqlite> .width 20 20sqlite> select * from test;a b --------------- ---------------1 1 2 2
-
INFOLINUX 10/2005 69
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
SQLite
3 3 3 3 sqlite> .exit
Sebagai catatan, perintah .width dan
parameter 20 20 dimaksudkan untuk me-
ngubah lebar kolom pertama sebesar 20
karakter dan lebar kolom kedua sebesar 20
karakter. Dengan cara seperti ini, lebar ko-
lom tertentu bisa diatur dengan fl eksibel.
Vakum databasePada saat Anda menghapus banyak record
dari database, ukuran fi le database umum-
nya tidak akan berkurang. Hal ini wajar
karena ruang kosong (yang tadinya digu-
nakan untuk menampung data sebelum di-
hapus) akan ditandai sebagai ruang kosong
internal. Ruang kosong internal tersebut
nantinya akan digunakan begitu ada data
baru dimasukkan.
Apabila Anda tidak senang dengan cara
kerja demikian dan ingin mendapatkan
pengurangan ukuran database begitu data
dihapus (SQLite sebelum 3.1, karena pada
3.1, auto vacuum menjadi default), Anda
bisa menggunakan perintah VACUUM.
Perintah yang satu ini akan membangun
ulang database dari awal. Hal ini akan se-
dikit memakan waktu dan space harddisk.
Pada sistem dimana SQLite dibangun, va-
kum akan memakan waktu setengah detik
untuk setiap MB data, dan akan memakan
space dua kali ukuran database.
Berikut ini adalah contoh penggunaan
perintah vacuum:
$ sqlite3 test.db SQLite version 3.1.3Enter .help for instructionssqlite> vacuum;sqlite> .exit
Contoh aplikasi : iterasi tabel dan menampilkan hasilnya di webPada contoh sebelumnya, kita telah melihat
bagaimana mengubah format output dari
perintah SQL yang dijalankan ke HTML.
Ini berarti, kita dapat membukanya di web
browser atau menampilkannya di Internet.
Namun, bagaimana kalau kita ingin
menampilkan semua tabel dan isinya ke
internet dengan cara yang mudah? Untuk
lebih mudahnya, kita bisa membangun shell
script sederhana yang akan membuat se-
buah HTML tunggal untuk semua tabel dan
isinya. Berikut ini adalah source code shell
script tersebut:
#!/bin/sh
# (c) Noprianto# 20 June 2005
SQLITE=/usr/bin/sqlite3OUT=$1.html
HEADER=SQLITE TO WEB: $1$1FOOTER=Generated by `basename $0` on `date`LINKS=TABLE_CONTENTS=
echo sqlite_to_web.shecho (c) Nop, 2005
#checking routine[ ! -x $SQLITE ] && echo Sorry: SQLITE binary not found && exit 1[ -z $1 ] && echo Sorry: I need one parameter, which is your database && exit 2[ ! -e $1 ] && echo Sorry: Database file you specified cannot be found && exit 3[ ! -r $1 ] && echo Sorry: Database file you specified cannot be read && exit 4
#get table listTABLES=`$SQLITE $1 .tables`
#create table HTML codefor i in $TABLESdo LINK=$i TABLE_CONTENT=`$SQLITE -header -html $1 \select * from $i\;` LINKS=$LINKS $LINK
TABLE_CONTENTS=$TABLE_ CONTENTS $TABLE_CONTENTdone
echo $HEADER $LINKS $TABLE_CONTENTS $FOOTER > $OUT
echo DONE.
Catatan program Untuk secara otomatis menampilkan
header, berikanlah parameter -header
pada program sqlite3
Dan, untuk secara mengotomatis me-ngubah format output ke HTML, beri-
kan parameter -html.
Cara kerja program: Pertama-tama, script akan memeriksa
apakah binary SQLITE tersedia atau ti-
dak. Pengguna dapat mengubah lokasi
pencarian dengan mengubah path ke bi-
nary SQLITE pada variabel $SQLITE.
Setelah itu, pemeriksaan akan dilanjut-kan kepada pemeriksaan parameter per-
tama (apakah pengguna memasukkan
parameter pertama atau tidak).
Kemudian, dilanjutkan dengan meme-riksa ketersediaan database di fi lesystem
(apakah fi le ditemukan).
Dan pemeriksaan diakhiri dengan memeriksa apakah database dapat di-
baca atau tidak (pemeriksaan fi lesistem
semata, karena database sqlite disimpan
sebagai fi le biasa).
Daftar table pun kemudian didapat de-ngan memanggil binary SQLITE diikuti
dengan perintah .tables (merupakan pe-
rintah terpisah).
Berdasarkan daftar table yang didapat, kita pun membuat link dan table isi table
database.
Akhirnya, semua variabel yang didapat-kan kita tuliskan di HTML output.
Selanjutnya, script tersebut bisa digu-
nakan untuk menampilkan keseluruhan
isi semua table di dalam database SQLite
Anda. Dan, dengan script tersebut pulalah,
kita menutup artikel ini. Sampai di sini du-
lu perkenalan kita dengan database SQLite.
Selamat mencoba!
Noprianto ([email protected])
-
INFOLINUX 10/200570
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
LIDS
Sebelumnya mari kita bahas terlebih dahulu langkah yang kita lakukan se-belumnya. Pada bagian pertama kita melakukan dua langkah. Langkah per tama
adalah patching terhadap kernel dengan
menggunakan LIDS dan mengaktifkan fung-
si-fungsi keamanan pada saat konfi gurasi
kernel. Lalu pada langkah kedua yang telah
kita lakukan adalah menginstal lidstools,
yaitu tools yang digunakan untuk melaku-
kan administrasi terhadap lids serta menga-
tur ACLs pada LIDS.
Lidstools terdiri atas dua aplikasi, yaitu lids-
adm dan lidsconf. Lidsadm digunakan untuk
melakukan administrasi kemampuan (capa-
bility) dari LIDS, sedangkan lidsconf diguna-
kan untuk membuat ACLs pada sistem. File-
fi le konfi gurasi berada pada direktori /etc/lids.
Bagi Anda yang telah familiar dengan sin-
taks iptables maka tidak akan kesulitan untuk
membuat ACLs LIDS. Pada LIDS yang men-
jadi subjek adalah semua program yang bisa
berjalan pada Linux seperti binary fi le, shell
script, sedangkan yang menjadi objek adalah
apa saja yang ingin diakses oleh subjek ter-
masuk fi le, direktori, capability, dan lainnya.
3. Konfigurasi ACLs LIDSBerikut contoh penulisan sintaks dari lid-
adm dan lidsconf.
Untuk perintah lidsadm:
# lidsadm -[S|I] -- [+|-][LIDS_FLAG] [...]# lidsadm -h
LIDS_FLAG pada perintah pertama
merupakan capability yang dapat dilihat
pada bagian Lampiran atau pada perintah
kedua seperti di atas.
Untuk perintah lidsconf:
# lidsconf -A [-s subject] -o object [-d] [-t from-to] [-i level] -j ACTION
Keterangan parameter dari perintah di
atas dapat dilihat dengan menjalankan pe-
rintah berikut ini:
# lidsconf -h
Baiklah, selanjutnya kita akan melaku-
kan konfi gurasi dasar untuk ACLs. Ketik-
kan perintah di bawah ini langsung pada
shell atau masukkan ke dalam sebuah fi le
script.
/sbin/lidsconf -A -o /sbin -j READONLY/sbin/lidsconf -A -o /bin -j READONLY/sbin/lidsconf -A -o /usr -j READONLY/sbin/lidsconf -A -o /usr/local -j READONLY/sbin/lidsconf -A -o /lib -j READONLY/sbin/lidsconf -A -o /opt -j READONLY/sbin/lidsconf -A -o /etc -j READONLY/sbin/lidsconf -A -o /usr/local/etc -j READONLY/sbin/lidsconf -A -o /etc/shadow -j DENY/sbin/lidsconf -A -o /etc/lilo.conf -j DENY
/sbin/lidsconf -A -s /bin/login -o /etc/shadow -j READONLY/sbin/lidsconf -A -s /usr/bin/vlock -o /etc/shadow -j READONLY/sbin/lidsconf -A -s /bin/su -o /etc/shadow -j READONLY/sbin/lidsconf -A -s /bin/su -o CAP_SETUID -j GRANT/sbin/lidsconf -A -s /bin/su -o CAP_SETGID -j GRANT/sbin/lidsconf -A -o /boot -j READONLY/sbin/lidsconf -A -o /root -j READONLY/sbin/lidsconf -A -s /bin/bash-o /root/.bash_history -j WRITE/sbin/lidsconf -A -o /var/log -j APPEND/sbin/lidsconf -A -s /bin/login -o /var/log/wtmp -j WRITE/sbin/lidsconf -A -s /bin/login -o /var/log/lastlog -j WRITE/sbin/lidsconf -A -s /sbin/init -o /var/log/wtmp -j WRITE/sbin/lidsconf -A -s /sbin/init -o /var/log/lastlog -j WRITE/sbin/lidsconf -A -s /sbin/halt -o /var/log/wtmp -j WRITE/sbin/lidsconf -A -s /sbin/halt -o /var/log/lastlog -j WRITE/sbin/lidsconf -A -s /etc/rc.d/
Mengamankan Server Linux dengan LIDSBagian 2 dari 2 Artikel
Jika Anda tidak menemui kendala mengikuti artikel bagian satu, Anda akan berada pada shell dengan kernel yang baru. Bagian dua ini mengonfigurasikan ACLs LIDS pada sistem, yang menentukan dalam melindungi sistem Anda.
-
INFOLINUX 10/2005 71
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
LIDS
rc.sysinit \ -o /var/log/wtmp -i 1 -j WRITE/sbin/lidsconf -A -s /etc/rc.d/rc.sysinit \ -o /var/log/lastlog -i 1 -j WRITE/sbin/lidsconf -A -s /sbin/hwclock -o /etc/adjtime -j WRITE/sbin/lidsconf -A -s /sbin/init -o CAP_INIT_KILL -j GRANT/sbin/lidsconf -A -s /sbin/init -o CAP_KILL -j GRANT/sbin/lidsconf -A -s /etc/rc.d/init.d/halt \ -o CAP_INIT_KILL -i 1 -j GRANT/sbin/lidsconf -A -s /etc/rc.d/init.d/halt \ -o CAP_KILL -i 1 -j GRANT/sbin/lidsconf -A -s /etc/rc.d/init.d/halt \ -o CAP_NET_ADMIN -i 1 -j GRANT/sbin/lidsconf -A -s /etc/rc.d/init.d/halt \ -o CAP_SYS_ADMIN -i 1 -j GRANT/sbin/lidsconf -A -s /sbin/update -o CAP_SYS_ADMIN -j GRANT
Setelah ACLs dasar tersebut telah dibuat
selanjutnya kita lakukan pengetesan terha-
dap sistem yang telah dilindungi oleh LIDS,
dengan cara menonaktifkan capabilty
dari ACL_DISCOVERY dengan perintah
berikut:
#lidsadm -S -- -ACL_DISCOVERY
Masukkan password, lalu dengan meng-
gunakan account root, cobalah untuk mem-
buat sebuah fi le kosong pada direktori home
root.
Sampai di sini kita telah mengonfi gu-
rasikan LIDS untuk kebutuhan dasar sistem.
ACLs tersebut dapat ditambahkan sesuai ke-
butuhan dengan sintaks yang sama, namun
menggunakan paramater yang berbeda se-
suai kebutuhan.
4. KesimpulanAccount root pada sistem operasi *NIX
dan variannya ternyata memiliki masalah
yang sangat besar. Dengan kemampuan-
nya untuk melakukan apa saja terhadap
sistem, menjadi target yang banyak dicari
oleh para intruder. Untuk itu, diperlukan
sebuah aturan yang dapat membatasi root.
Sehingga, sekalipun intruder mendapatkan
account root terhadap sistem, ia tidak dapat
melakukan apapun.
LIDS (Linux Intrusion Detection Sys-
tem) merupakan patch keamanan pada ker-
nel Linux, yang memiliki kemampuan un-
tuk melindungi sistem, bahkan dari account
root sekalipun.
Namun LIDS bukanlah segalanya. Per-
lindungan terhadap sistem tidaklah cukup
dengan hanya melakukan patch terhadap
kernel, sebab keamanan adalah sebuah
proses. Tidak ada sistem di dunia ini yang
100% aman. Selama sistem itu dibuat oleh
manusia masih banyak cara untuk menyu-
supinya sekali pun kemungkinan itu sangat
kecil. Untuk itu, menjaga keamanan sebuah
sistem bukanlah bergantung pada sebuah
patch, tools, dan lainnya, tetapi bergan-
tung pada user yang menggunakan sistem
tersebut. Pepatah terkenal menyatakan,
Its not about the gun, but the man behind
the gun.
Irvan ([email protected])
### 0: In a system with the _POSIX_CHOWN_RESTRICTED option defined, this overrides the restriction### 0: of changing file ownership and group ownership.#+0:CAP_CHOWN
### 1: Override all DAC access, including ACL execute access if _POSIX_ACL is defined. Excluding### 1: DAC access covered by CAP_LINUX_IMMUTABLE.#+1:CAP_DAC_OVERRIDE
### 2: Overrides all DAC restrictions regarding read and search on files and directories, including### 2: ACL restrictions if _POSIX_ACL is defined. Excluding DAC access covered by### 2: CAP_LINUX_IMMUTABLE.#+2:CAP_DAC_READ_SEARCH
### 3: Overrides all restrictions about allowed operations on files, where file owner ID must be equal### 3: to the user ID, except where CAP_FSETID is applicable. It doesnt override MAC and DAC
### 3: restrictions.#+3:CAP_FOWNER
### 4: Overrides the following restrictions that the effective user ID shall match the file owner ID### 4: when setting the S_ISUID and S_ISGID bits on that file; that the effective group ID (or one of### 4: the supplementary group IDs) shall match the file owner ID when setting the S_ISGID bit on### 4: that file; that the S_ISUID and S_ISGID bits are cleared on successful return from chown(2)### 4: (not implemented).#+4:CAP_FSETID
### 5: Overrides the restriction that the real or effective user ID of a process sending a signal must### 5: match the real or effective user ID of the process receiving the signal.#+5:CAP_KILL
### 6: - Allows setgid(2)
LIDS CAPABILITY
-
INFOLINUX 10/200572
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
LIDS
LIDS CAPABILITY (Sambungan)manipulation### 6: - Allows setgroups(2)### 6: - Allows forged gids on socket credentials passing.#+6:CAP_SETGID
### 7: - Allows set*uid(2) manipulation (including fsuid).### 7: - Allows forged pids on socket credentials passing.#+7:CAP_SETUID
### 8: Transfer any capability in your permitted set to any pid, remove any capability in your### 8: permitted set from any pid.#-8:CAP_SETPCAP
### 9: Allow modification of S_IMMUTABLE and S_APPEND file attributes.#+9:CAP_LINUX_IMMUTABLE
### 10: Allows binding to TCP/UDP sockets below 1024.+10:CAP_NET_BIND_SERVICE
### 11: Allow broadcasting, listen to multicast.+11:CAP_NET_BROADCAST
### 12: - Allow interface configuration### 12: - Allow administration of IP firewall, masquerading and accounting### 12: - Allow setting debug option on sockets### 12: - Allow modification of routing tables### 12: - Allow setting arbitrary process / process group ownership on sockets### 12: - Allow binding to any address for transparent proxying### 12: - Allow setting TOS
(type of service)### 12: - Allow setting promiscuous mode### 12: - Allow clearing driver statistics### 12: - Allow multicasting### 12: - Allow read/write of device-specific registers+12:CAP_NET_ADMIN
### 13: - Allow use of RAW sockets### 13: - Allow use of PACKET sockets+13:CAP_NET_RAW
### 14: - Allow locking of shared memory segments### 14: - Allow mlock and mlockall (which doesnt really have anything to do with IPC)+14:CAP_IPC_LOCK
### 15: Override IPC owner