sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun...
Transcript of sudo Memberi Hak Root ke User dengan sudoftp.gunadarma.ac.id/pub/linux/magazine/infolinux/Tahun...
INFOLINUX 06/200550
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
sudo
Di Linux, pengaturan keamanan
multiuser berdasarkan adanya
pembagian root dan user biasa
memang membantu mengurangi banyak
gangguan keamanan. Bahwa setiap user
disarankan untuk login sebagai user biasa
sehingga kalaupun terjadi gangguan ke-
amanan, yang terkena efeknya hanya user
tersebut, memang harus diakui lebih unggul
dibandingkan dengan Windows XP misal-
nya, yang mana sebagian besar pengguna
login sebagai anggota group Administra-
tors. Hal ini pulalah yang membantu Linux
lebih tahan terhadap serangan virus dan
gangguan keamanan lain.
Namun, sistem seperti ini harus diakui
juga memiliki keterbatasan, atau lebih te-
patnya, lebih kaku. Di Windows, apabila
ingin membakar CD misalnya, setelah meng-
instal program yang dibutuhkan, user bisa
langsung membakar CD tersebut. Begitu-
pun dengan instalasi program. User bahkan
bisa melakukan instalasi program tanpa
masalah berarti. Tentu saja ini terlepas dari
akibat instalasi software sembarangan yang
berakibat pada gangguan stabilitas dan ke-
amanan sistem.
Bandingkan dengan kondisi di Linux.
Untuk menjalankan program cdrecord saja,
root harus campur tangan. User biasa mau
meminta bantuan root untuk hal demikian.
Begitupun juga dengan instalasi program.
Hanya root yang bisa. Tugas root menjadi
begitu rumit. Semua harus root.
Untunglah, semua kekakuan tersebut
menjadi tidak berlaku lagi semenjak hadir-
nya sudo di dunia UNIX/Linux. Dengan
adanya sudo, kita bisa mendelegasikan se-
bagian fungsi administrasi sistem kepada
user biasa. Jadi, andaikata kita memiliki 10
user dan dua di antaranya bisa dipercaya
menjadi admin untuk tugas tertentu, Anda
bisa mendelegasikan tugas instalasi pro-
gram kepada user pertama, dan tugas lain
kepada user kedua misalnya. Anda juga bisa
memberikan hak untuk mengakses program
cdrecord (dan device CD writer) kepada se-
tiap user biasa.
sudoSebenarnya, apakah sudo dan apa saja fi tur
yang ditawarkan? Kata sudo berasal dari
singkatan superuser do, dan merupakan
program yang mengizinkan system admi-
nistrator (sysadmin) untuk memberikan
hak tertentu kepada satu atau lebih user
(atau group) untuk menjalankan sebagian
(atau semua) perintah sebagai root (atau-
pun user lain apabila diinginkan). Tentu
saja, untuk tetap menjaga keamanan, semua
aktivitas ketika user menjadi root akan di-
log. sudo bekerja pada basis per perintah.
Bahkan, termasuk argumen dan opsi yang
diizinkan untuk perintah tersebut.
Berikut ini adalah rangkuman fi tur-fi tur
sudo:
� Kemampuan untuk membatasi perintah
apa saja yang boleh dilakukan, per host.
� sudo akan merekam semua aktivitas
dalam fi le log, sehingga nantinya akan
memudahkan audit.
� sudo mempergunakan sistem tiket un-
tuk izin menjalankan perintah sebagai
root. Pada saat user menjalankan sudo
dan memasukkan password yang benar,
waktu 5 menit (bisa diubah) akan diberi-
kan kepada user tersebut untuk menjadi
root. Setiap perintah sebagai root yang
dijalankan oleh user akan memperba-
harui waktu 5 menit tersebut. Dengan
demikian, diharapkan tidak akan ada
user yang ‘lupa logout’ ketika sedang be-
rada dalam sesi sudo.
� sudo datang dengan fi le konfi gurasi, ya-
itu fi le /etc/sudoers yang dapat diguna-
kan untuk mengontrol semua hak yang
diberikan.
Kenapa harus sudo?Dengan adanya mekanisme seperti ini, se-
tiap user bisa dibatasi, administrasi sistem
bisa didelegasikan, dan kita tidak harus
memberikan password root kita kepada
rekan kerja hanya karena kita tidak berada
di tempat dan hak root dibutuhkan pada
saat itu (pernah Anda alami?). Dengan
fasilitas logging dan hak akses yang dibuat
sedemikian teliti, sebenarnya tidak ada lagi
alasan untuk tidak menjalankan sudo di
lingkungan komputasi besar yang melibat-
kan banyak user dan admin.
Dengan sudo pula, kita bisa mengimple-
mentasikan group semacam Power Users
di Windows yang dapat memiliki hak ad-
ministratif tertentu. Kita bisa membuat
group semacam itu di mana semua anggota
group tersebut bisa menginstal program,
shutdown dan melakukan satu dua hal lain,
misalnya.
Konsekuensi menggunakan sudoKetika kita menggunakan sudo yang telah
dikonfi gurasi dengan benar, user dapat
menjadi root (atau user lain sesuai konfi -
gurasi) dan menjalankan berbagai program
dengan memberikan pola perintah seperti
berikut ini:
$ sudo <perintah_yang_membutuhkan_hak_root> [parameter]
Memberi Hak Root ke Userdengan sudoDi Linux, sebagai root, Anda bisa memberikan sebagian hak Anda kepada user biasa. De-ngan demikian, user biasa tersebut bisa menjalankan perintah yang diizinkan sebagai root. Memudahkan delegasi tugas dan meningkatkan keamanan!
INFOLINUX 06/2005 51
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
sudo
Konsekuensi sebenarnya dari meng-
gunakan sudo adalah audit. Mau tidak
mau, Anda harus membuat script untuk
memudahkan auditing di syslog Anda,
misalnya.
Ketika user menggunakan sudo, di sys-
log akan terdapat entri yang mirip-mirip de-
ngan contoh berikut:
Feb 9 18:02:50 koljeng sudo: koljeng : TTY=pts/25 ; PWD=/home/koljeng ; USER=root ; COMMAND=/sbin/yast -i
Password yang dimasukkan ketika menjalan sudoKetika user menjalankan perintah meng-
gunakan sudo, user akan diminta untuk
memasukkan password. Anda memiliki dua
pilihan untuk masalah password ini. Yang
pertama adalah mengizinkan user untuk
memasukkan password dirinya sendiri,
dan apabila sukses, maka sudo akan men-
jalankan perintah yang diinginkan. Cara
yang kedua adalah dengan meminta user
untuk memasukkan password user yang
ingin digunakan (dalam hal ini, karena
ingin menjadi root, maka harus mema-
sukkan password root). Yang lebih sering
digunakan adalah cara yang pertama, wa-
lau Anda bebas untuk menggunakan cara
kedua.
Proyek sejenisSudo bukanlah satu-satunya program yang
digunakan untuk kebutuhan delegasi ad-
ministrasi sistem seperti ini. Berikut ini
adalah beberapa program free lain yang
fungsinya mirip dengan sudo:
� SUS (http://pdg.uow.edu.au/sus).
� Super (ftp://ftp.ucolick.org/pub/users/will/).
� runas, bagian dari proyek Titan (http://
www.fi sh.com/titan).
� Erni (http://www.brandxdev.net/), turun-
an dari runas
� priv (http://www.usenix.org/publications/
library/proceedings/lisa96/full_papers/
bchill/bchill.txt).
� calife (http://frmug.org/mutt/calife/).
� osh (http://www.engarde.com/~mcn/osh.
html).
� ssu (http://www.usenix.org/publications/
library/proceedings/lisa98/full_papers/
thorpe/thorpe_html/thorpe.html).
� su1 (http://www.pcug.org.au/~dbell).
Walau demikian, di dunia Linux, sudo
adalah salah satu (dan mungkin satu-satu-
nya) yang paling banyak digunakan.
Integrasi LDAPSeperti telah disinggung sebelumnya bahwa
/etc/sudoers memungkinkan pemberian
hak untuk beberapa host secara tersentral,
fasilitas ini dari hari ke hari semakin kurang
populer karena fungsi tersebut bisa dita-
ngani oleh LDAP, yang sepertinya memang
lebih cocok untuk kebutuhan tersebut. Tu-
lisan ini tidak akan membahas penggunaan
LDAP.
Beberapa contoh penggunaanBerikut ini, kita akan membahas beberapa
contoh penggunaan paket sudo.
Yang pertama adalah mengedit fi le
/etc/sudoers. Anda tidak disarankan untuk
mengedit langsung fi le ini. Sebagai ganti nya,
gunakanlah program visudo yang datang
bersama paket sudo. Program ini harus di-
jalankan oleh root. Contoh:
# visudo
Apabila Anda tidak melakukan peruba-
han, maka setelah keluar, Anda akan men-
jumpai pesan berikut ini:
# visudovisudo: sudoers file unchanged.
Yang kedua, kita akan memahami for-
mat fi le sudoers. FOrmat fi le ini tidak se-
sederhana apa yang terlihat. Apabila mem-
baca dokumentasi sudoers(5), Anda bisa me-
nemukan betapa rumit dan fl eksiblenya fi le
ini. Namun, kita akan membuatnya terlihat
lebih sederhana. Berikut ini adalah format
umum konfi gurasi sudoers:
usernames/group servername = (usernames command can be run as) command
Dengan demikian, apabila Anda ingin
memberikan user koljeng seperti ilustrasi
sebelumnya sehingga bisa menjalankan
/sbin/yast -i, berikanlah baris seperti ini:
koljeng ALL=(root) /sbin/yast -i
Anda dapat menambahkan perintah
yang diizinkan dengan dipisahkan oleh
tanda koma. Contoh berikut akan memper-
lihatkan bagaimana memberikan hak untuk
melakukan shutdown kepada setiap user
yang menjadi anggota group users:
%users localhost=/sbin/shutdown -h now
Apabila ingin memberikan hak kepada
user koljeng dan group users, maka Anda
juga bisa menambahkan pada bagian per-
tama, usernames/group dipisahkan oleh
koma, seperti contoh berikut:
koljeng,%users ALL=(root) /sbin/yast -i
Contoh lain yang mungkin berguna
adalah memberikan hak kepada user untuk
melakukan mount/unmount cdrom seperti
contoh berikut:
%users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
Di dalam fi le ini, Anda juga bisa mem-
berikan alias untuk perintah, user, dan lain
sebagainya. Contoh yang paling baik adalah
ketika Anda mengizinkan user tertentu un-
tuk menjalankan beberapa modul YaST,
atau memberikan hak untuk menjalankan
semua shell. Tentu saja, daripada menulis-
kan satu per satu perintah YaST lengkap,
Anda dapat membuat alias. User juga dapat
dituliskan menggunakan alias.
Sebagai contoh:
Cmnd_Alias SHELLS = /usr/bin/ sh, /usr/bin/csh, \ /usr/bin/ksh, /usr/ local/bin/tcsh, \ /usr/bin/rsh, /usr/ local/bin/zsh
User_Alias ADMINS = koljeng, %admin
Untuk lebih jelas tentang alias, Anda
selalu bisa merujuk ke halaman manual
sudoers.
Setelah fi le sudoers selesai didefi nisikan,
user segera dapat memanfaatkan sudo se-
suai hak yang diberikan.
Dengan berakhirnya pembahasan ten-
tang memahami format sudoers ini, ber-
akhir pula artikel ini. Selamat mencoba dan
menerapkan sudo!
Noprianto ([email protected])
INFOLINUX 06/200552
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Wx
Setelah membahas tentang bagaimana
menyajikan berbagai bahasa dalam
satu program, kita akan melanjutkan
dengan bagaimana menyediakan tip of the
day pada program Anda, serta bagaimana
memanfaatkan form MDI. Sebagian contoh
program yang dipergunakan akan merujuk
kepada contoh program sebelumnya (yang
mungkin telah Anda modifi kasi).
Tip of the dayBanyak aplikasi ini hadir dengan tip peng-
gunaan yang umum disebut sebagai tip of
the day. Bahwa tip ini dibaca atau tidak oleh
user, harus diakui bahwa penggunaan tip ini
sudah merupakan kelengkapan dari sebuah
aplikasi yang memperhatikan kemudahan
penggunaan oleh user.
Bagi Anda yang memiliki waktu dan
i ngin melakukannya, tip of the day tentu sa-
ja dapat dengan mudah diimplementasikan
menggunakan satu form, satu text control
dan beberapa button. Dengan mengguna kan
double linked list, kita dapat mengimple-
mentasikan penampilan tip-tipnya.
Namun, apabila Anda mempergunakan
Wx, maka pengimplementasian sendiri su-
dah tidak diperlukan lagi karena tip of the
day juga telah disediakan oleh Wx. Luar bi-
asa sekali bukan? Cara penggunaannya juga
sangat mudah.
Kita akan melengkapi aplikasi helloworld
sebelumnya dengan implementasi tip of the
day.
Langkah 1: mempersiapkan tip Buatlah sebuah fi le text dan simpanlah se-
bagai tips.txt. Di dalam fi le ini, kita akan
menuliskan masing-masing tip secara baris
per baris. Berikut ini adalah contoh tips.txt
penulis:
ini adalah tip pertamaini adalah tip keduaini adalah tip ketigaini adalah tip keempatini adalah tip kelima
Langkah 2: memodifikasi helloword.cppSetelah fi le tip kita miliki, kita akan meng-
ubah helloword.cpp untuk mengimplemen-
tasikan tip of the day. Penambahan kode
akan disajikan dalam huruf tebal.
#include <wx/wx.h>#include <wx/tipdlg.h>#include “helloworld.h”#include “MainFrame.h”
IMPLEMENT_APP (wxHelloWorld)
bool wxHelloWorld :: OnInit (){
const wxString langs[] = { _(“(System default)”), _(“Bahasa Indonesia”), };
SetExitOnFrameDelete(FALSE); int lng = wxGetSingleChoiceIndex(_(“Please choose language:”), _(“Language”), WXSIZEOF(langs), langs); SetExitOnFrameDelete(TRUE);
switch (lng) { case 0: locale.Init(wxLANGUAGE_DEFAULT); break; case 1: locale.Init(wxLANGUAGE_INDONESIAN); break; };
locale.AddCatalog(_(“helloworld”));
wxMainFrame *frame = new wxMainFrame (_(“Hello World”), wxPoint (50,50), wxSize (200,200), locale);
frame -> Show (TRUE); SetTopWindow (frame);
wxTipProvider *tip = wxCreateFileTipProvider (_(“tips.txt”), 0); bool showStart = wxShowTip (frame, tip); delete tip;
return TRUE;};
Penjelasan:dengan menambahkan penggunaan header
tipdlg.h, kita sudah bisa membuat tip of the
day dengan mudah (class wxTipProvider).
Dalam penggunaan tip of the day, kita
juga dapat mempergunakan internationali-
zation. Namun, hal ini membutuhkan ba-
nyak usaha dalam penyajian konten. Dari
Wx dan Perancangan User InterfaceBagian 2 dari 2 Artikel
Pada bagian 1 yang lalu, kita telah membahas tentang i18n pada Wx. Di edisi lanjutan ini, kita akan membahas pembuatan tip of the day dan penggunaan form MDI.
INFOLINUX 06/2005 53
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Wx
sisi pemrograman, cara yang digunakan
tidak banyak berbeda dengan contoh sebe-
lumnya.
Form MDIPemilihan penampilan window juga meru-
pakan hal yang penting dalam perancangan
user interface. Apabila program kita memiliki
kemampuan untuk menampilkan berbagai
dokumen sekaligus, kita harus memperha-
tikan cara penampilannya. Apakah masing-
masing dokumen dibuka dalam window
terpisah, atau menggunakan pendekatan
Multiple Document Interface (MDI).
Terkadang, apabila jumlah window
yang dibuka terlalu banyak, user bisa saja
menganggap suatu program kompleks dan
membingungkan. Namun, penggunaan
MDI juga terkadang memiliki isu soal mu-
dahnya switching antardokumen (maka,
sediakanlah shortcut yang memudahkan.
Shortcut default seringkali menyebalkan).
Masalah ini bukanlah hal sepele. Pemiki-
ran akan penyajian sistem penampilan do-
kumen ini juga merupakan salah satu alasan
hadirnya tab browsing. Dulu, untuk mem-
buka satu halaman web, kita akan membuka
window baru. Namun, karena jumlah win-
dow yang dibuka bisa saja menjadi sangat
banyak, maka desktop akan terlihat sangat
tidak rapi. Terutama apabila Anda melaku-
kan browsing sambil bekerja. Switch antar-
aplikasi juga akan menjadi susah. Dengan
adanya tab browsing, maka desktop akan
terlihat lebih rapi.
Ketika Anda memutuskan akan mem-
pergunakan MDI, perhatikan juga konten
yang akan ditampilkan. Apabila konten
terlalu berat, usahakan untuk tidak mem-
pergunakan MDI. Bisa-bisa, aplikasi tidak
mampu. Ketika diseparasi dalam aplikasi
terpisah (bukan sekadar group proses),
maka risiko crash karena tidak mampu akan
lebih kecil.
Menggunakan wx, form MDI dapat
diterapkan dengan cepat. Contoh aplikasi
kita kali ini adalah aplikasi sederhana satu
form, dengan sebuah menu, sebuah text
control dan sebuah status bar. Ketika user
memilih untuk membuat window baru
dengan mengakses menu yang bersesuaian,
maka window baru akan ditampilkan. Pada
saat window baru dibuat, sebuah menu
baru khusus untuk penanganan child win-
dow akan ditambahkan. Pengguna selan-
jutnya dapat pula mengubah title window
baru ataupun menutup window baru terse-
but. Program ini masih belum lengkap dan
hanya menunjukkan kemampuan wx untuk
bekerja dengan MDI.
Aplikasi kita, sebut saja hello world MDI,
akan terdiri dari fi le-fi le sebagai berikut ini:
� helloword.cpp sebagai tubuh class dari
aplikasi.
� helloword.h sebagai deklarasi class dari
aplikasi.
� MainFrame.cpp sebagai tubuh class
frame utama.
� MainFrame.h sebagai deklarasi class
frame utama.
� ChildFrame.cpp sebagai tubuh class win-
dow anak.
� ChildFrame.h sebagai deklarasi class
window anak.
� makefi le.unx sebagai makefi le.
Berikut ini adalah isi dari helloword.h:
#ifndef HelloWorld_H#define HelloWorld_H
class wxHelloWorld : public wxApp{public: virtual bool OnInit ();
protected: wxLocale locale;
};
DECLARE_APP (wxHelloWorld)
#endif // HelloWorld_H
Berikut ini adalah isi dari helloword.
cpp:
#include <wx/wx.h>#include “helloworld.h”#include “MainFrame.h”
IMPLEMENT_APP (wxHelloWorld)
bool wxHelloWorld :: OnInit ()
INFOLINUX 06/200554
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Wx
{
wxMainFrame * frame = new wxMainFrame ( _(“Hello World MDI”), wxPoint (50,50), wxSize (200,200), locale);
frame -> Show (TRUE); SetTopWindow (frame);
return TRUE;};
Berikut ini adalah isi dari MainFrame.h:
#ifndef MainFrame_H#define MainFrame_H
enum{ MENU_ABOUT = 100, MENU_NEW_WIN, MENU_QUIT,};
class wxMainFrame : public wxMDIParentFrame{public: wxMainFrame (const wxString &title, const wxPoint &pos, const wxSize &size, wxLocale &locale); void OnQuit (wxCommandEvent &event); void OnAbout
(wxCommandEvent &event); void OnNew (wxCommandEvent &event); wxLocale &locale;
protected: DECLARE_EVENT_TABLE ();
private: wxMenuBar *menubar; wxMenu *FileMenu; wxMenu *ChildMenu;
};
#endif// MainFrame_H
Berikut ini adalah isi dari MainFrame.
cpp:
#include <wx/wx.h>#include <wx/mdi.h>#include “MainFrame.h”#include “ChildFrame.h”
BEGIN_EVENT_TABLE (wxMainFrame, wxMDIParentFrame) EVT_MENU (MENU_QUIT, wxMainFrame::OnQuit) EVT_MENU (MENU_ABOUT, wxMainFrame::OnAbout) EVT_MENU (MENU_NEW_WIN, wxMainFrame::OnNew)END_EVENT_TABLE ()
wxMainFrame *frame = (wxMainFrame *) NULL;
wxMainFrame :: wxMainFrame (const wxString &title, const wxPoint &pos, const wxSize &size, wxLocale &l): wxMDIParentFrame ( (wxWindow *) NULL, -1, title, pos, size), locale (l){ CreateStatusBar (2); SetStatusText (_(“Hello World MDI”));
menubar = new wxMenuBar;
FileMenu = new wxMenu; FileMenu -> Append (MENU_ABOUT, _(“&About”), _(“Show about info...”)); FileMenu -> AppendSeparator (); FileMenu -> Append (MENU_NEW_WIN, _(“&New”), _(“New window”)); FileMenu -> AppendSeparator (); FileMenu -> Append (MENU_QUIT, _(“&Quit”), _(“Quit from application...”));
menubar -> Append (FileMenu, _(“&File”));
SetMenuBar (menubar);
Contoh tip of the day pada GIMP. Contoh MDI pada Firefox.
INFOLINUX 06/2005 55
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Wx
Connect (MENU_QUIT, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnQuit); Connect (MENU_NEW_WIN, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnNew); Connect (MENU_ABOUT, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnAbout);
frame = this;};
void wxMainFrame :: OnQuit (wxCommandEvent &event){ Close (TRUE);};
void wxMainFrame :: OnAbout (wxCommandEvent &event){ wxMessageBox (_(“Hello World MDI Example v0.1”), _(“About Hello World MDI”), wxOK | wxICON_INFORMATION, this);};
void wxMainFrame :: OnNew (wxCommandEvent &event){ wxChildFrame *child = new wxChildFrame( frame , _(“untitled”),wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, locale);
};
Berikut ini adalah isi dari ChildFrame.h:
#ifndef ChildFrame_H#define ChildFrame_H
enum{ CHILD_QUIT = 200, CHILD_CHANGE_TITLE,};class wxChildFrame : public wxMDIChildFrame
{public: wxChildFrame (wxMDIParentFrame *parent, const wxString &title, const wxPoint &pos, const wxSize &size, const long style, wxLocale &locale); void OnQuit (wxCommandEvent &event); void OnChangeTitle (wxCommandEvent &event); wxLocale &locale;
protected: DECLARE_EVENT_TABLE ();
private: wxTextCtrl *textctrl; wxMenuBar *menubar; wxMenu *FileMenu; wxMenu *ChildMenu;};
#endif// ChildFrame_H
Berikut ini adalah isi dari ChildFrame.
cpp:
#include <wx/wx.h>#include <wx/mdi.h>#include “ChildFrame.h”#include “MainFrame.h”
BEGIN_EVENT_TABLE (wxChildFrame, wxMDIChildFrame) EVT_MENU (CHILD_QUIT, wxChildFrame :: OnQuit) EVT_MENU (CHILD_CHANGE_TITLE, wxChildFrame :: OnChangeTitle)END_EVENT_TABLE ()
wxChildFrame :: wxChildFrame (wxMDIParentFrame *parent, const wxString &title, const wxPoint &pos, const wxSize &size, const long style, wxLocale &l): wxMDIChildFrame ( parent, -1, title, pos, size, style), locale (l){ CreateStatusBar (2);
INFOLINUX 06/200556
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxChildFrame :: OnQuit); Connect (CHILD_CHANGE_TITLE, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxChildFrame :: OnChangeTitle);};
void wxChildFrame :: OnQuit (wxCommandEvent &event){ Close(TRUE);};
void wxChildFrame :: OnChangeTitle (wxCommandEvent &event){ static wxString s_title = _(“untitled”);
wxString title = wxGetTextFromUser(_(“Enter new title”), _(“Change title”), s_title, GetParent()->GetParent()); if ( !title ) return; s_title = title; SetTitle(s_title);};
Berikut ini adalah isi dari makefi le.unx:
CXX = $(shell wx-config --cxx)
PROGRAM = helloworld
OBJECTS = helloworld.o MainFrame.o ChildFrame.o
# implementation
.SUFFIXES: .o .cpp
.cpp.o : $(CXX) -c `wx-config --cxxflags` -o $@ $<
all: $(PROGRAM)
$(PROGRAM): $(OBJECTS) $(CXX) -o $(PROGRAM) $(OBJECTS) `wx-config --libs`
clean: rm -f *.o $(PROGRAM)
Penjelasan:� Class wxMainFrame kini diturunkan
dari class wxMDIParentFrame, semen-
tara class wxChildFrame diturunkan dari
class wx MDIChildFrame. Hal ini telah
disediakan oleh Wx.
� Class wxChildFrame memiliki atribut
FileMenu dan ChildMenu bertipe wx-
Menu. Pada saat child window dibuat
(constructor), kita membuat ulang menu
bar. Dalam pembuatan ulang tersebut,
kita juga membuat menu ChildMenu.
Dengan adanya proses berat di construc-
tor wxChildFrame, maka pembuatan
window baru dari class wxMainFrame
akan terlihat sangat sederhana. Bagus
untuk information hiding.
� Perhatikan konstanta yang digunakan
untuk menu, dalam masing-masing
header, enumerasi kini dimulai dari bi-
langan tertentu. Hal ini untuk mencegah
tumpang tindih hasil enumerasi.
� Sampai saat ini, program ini masih me-
miliki kekurangan. Yang pertama adalah
menu Quit yang hanya berfungsi untuk
menutup child window. Harusnya, diim-
plementasikan untuk menutup aplikasi.
Yang kedua, ketika kita klik pada tombol
close title bar, aplikasi segera menutup
walaupun masih ada child window yang
terbuka. Yang seharusnya adalah men-
gonfi rmasikan kepada user bahwa masih
ada window yang terbuka. Yang ketiga,
kita sebenarnya tidak mendaftar anak-
anak window kita dengan benar. Pada
aplikasi sesungguhnya, semua anak ha-
rus terdaftar dengan baik.
Demikianlah pembahasan kita tentang
perancangan user interface menggunakan
Wx. Tentu saja, artikel ini hanya membahas
sedikit sekali dari aspek perancangan user in-
terface dalam pembuatan aplikasi. Namun,
mulai sekarang dan seterusnya, rasa-rasanya
kita perlu banyak memperhatikan masalah
user interface agar program yang kita hasil-
nya juga dapat dinikmati oleh banyak pihak.
Canggih dan aman juga harus mudah dan
enak digunakan. Ini penting sekali.
Noprianto ([email protected])
Wx
SetStatusText (_(“Hello World MDI”));
textctrl = new wxTextCtrl (this, -1, wxString (_(“Halo”)), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
menubar = new wxMenuBar;
FileMenu = new wxMenu; FileMenu -> Append (MENU_ABOUT, _(“&About”), _(“Show about info...”)); FileMenu -> AppendSeparator (); FileMenu -> Append (MENU_NEW_WIN, _(“&New”), _(“New window”)); FileMenu -> AppendSeparator (); FileMenu -> Append (MENU_QUIT, _(“&Quit”), _(“Quit from application...”));
ChildMenu = new wxMenu; ChildMenu -> Append (CHILD_QUIT, _(“&Close”), _(“Close child”)); ChildMenu -> Append (CHILD_CHANGE_TITLE, _(“C&hange title”), _(“Change title...”));
menubar -> Append (FileMenu, _(“&File”)); menubar -> Append (ChildMenu, _(“&Child”));
SetMenuBar (menubar);
Connect (MENU_QUIT, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnQuit); Connect (MENU_NEW_WIN, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnNew); Connect (MENU_ABOUT, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &wxMainFrame :: OnAbout);
Connect (CHILD_QUIT,
INFOLINUX 06/200558
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
Monitoring server menjadi pen-
ting, misalnya bila tiba-tiba
anda akan melakukan back-up
data tiap akhir bulan dan koneksi Inter-
net Anda putus. Metode yang akan penulis
terangkan tidak hanya terbatas untuk yang
terkoneksi ke Internet, tetapi juga untuk
jaringan LAN. Dalam hal ini yang terpen-
ting adalah:
1. SMS gateway (Kannel).
2. Library browser perl (Perl-libwww).
3. Bash shell scripting.
4. Crontab.
Prinsip untuk memonitor server ini
adalah sebagai berikut:
� Server akan mengirimkan perintah ping
ke suatu server, kemudian dari hasil res-
pon tersebut dapat dianalisis bahwa ser-
ver tersebut masih tersambung de ngan
Internet atau tidak.
� Pengetesan dan analisis dilakukan de-
ngan bash script.
� Untuk melakukan pengecekan tiap waktu
menggunakan task scheduler (crontab)
yang telah dibahas pada InfoLINUX edisi
Juli 2004.
Instalasi SMS gateway kannelMengapa kannel? Karena kannel adalah SMS
gateway yang free dan kompatibel dengan
ponsel phase 2+ dan juga GSM modem.
Cara instalasi:1. Cari tempat download source atau
paket. Penginstalan menggunakan source (versi
CVS). Versi CVS adalah versi yang ter-
baru. Versi CVS dan versi yang stabil
dapat di-download dari www.kannel.org.
Pertama, buat direktori gateway untuk
menampung hasil download:
root]# mkdir gateway
2. Buatlah bash script kannel.sh dengan
perintah cat atau teks editor kesukaan
Anda. Script ini untuk men-download
paket dari server CVS.
root]# cat > kannel.sh#!/bin/shcvs -d:pserver:[email protected]:/home/cvs logincvs -d:pserver:[email protected]:/home/cvs co gateway[Ctrl] [D]root]#
Catatan: Tekan Ctrl-D itu untuk menga-
kiran pengetikan dan menyimpan men-
jadi fi le kannel.sh.
3. Ubah mode atau atribut fi le kannel.sh
agar dapat dieksekusi dengan memberi
+x.
root]# chmod +x kannel.sh
4. Mulai download dengan menjalankan
program kannel.sh. Asumsinya, konfi -
gurasi server sudah terhubung ke jari-
ngan dan dapat mengakses server CVS di
Internet.
root]# ./kannel.sh
Tunggu sampai selesai download. Hasil
download ada di direktori gateway yang
telah Anda buat di komputer yang akan
menjadi gateway. Karena kannel dalam
hal ini hanya digunakan sebagai moni-
toring server, Kannel hanya untuk mengi-
rimkan SMS. Jadi penggunaan kannel
tidak dioptimalkan untuk selain itu.
5. Masuk direktori gateway tersebut, lalu
jalankan konfi gurasi dan instalasi.
root]# cd gateway gateway]# ./configure –enable-start-stop-daemongateway]# touch .dependgateway]# make dependgateway]# makegateway]# make install
6. Buat fi le-fi le konfi gurasi. Dalam contoh
ini penulis menggunakan nama fi le sms.
conf, modems.conf, smsbox.conf, dan
sendsms.conf. Simpan fi le-fi le tersebut
pada direktori /etc/kannel/.
Contoh fi le sms.conf:group = coreadmin-port = 13000smsbox-port = 13001admin-password = barstatus-password = foo#admin-deny-ip = “”#admin-allow-ip = “”log-file = “/var/log/kannel/bearerbox.log”log-level = 0access-log = “/var/log/kannel/bearerbox_access.log”store-file = “/var/log/kannel/kannel.store”box-allow-ip = “127.0.0.1;192.168.*.*”box-deny-ip = “*.*.*.*”
# SMSC CONNECTIONSgroup = smscsmsc = at
SMS Gateway
Memonitor Koneksi Server dengan SMS GatewayBila Anda seorang admin atau pengelola server, tentunya ingin selalu memonitor koneksi server. Misalnya, apakah dalam keadaan terhubung ke Internet atau tidak. Dengan SMS gateway, Anda dapat menerima laporan status koneksi itu melalui SMS.
INFOLINUX 06/2005 59
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
smsc-id = GSMModemmodemtype = iTegno#modemtype = ME45#modemtype = ericsson_t68#modemtype = siemens_c60device = /dev/ttyUSB0#device = /dev/ttyS0speed = 115200#speed = 96000sim-buffering = truemy-number = +62817777777validityperiod = 168
# MODEMinclude = “modems.conf”
# SMSBOX SETUPinclude = “smsbox.conf”
# SEND-SMS USERSinclude = “sendsms.conf”
Contoh fi le modem.conf:group = modemsid = iTegnodetect-string = “WAVECOM”detect-string2 = “MODEM”speed = 115200need-sleep = truesendline-sleep = 10message-storage = “SM”#enable-mms = true#no-pin = true#no-smsc = true
group = modemsid = ME45need-sleep = falsesendline-sleep = 1000message-storage = “MT”#enable-mms = true
group = modemsid = ericsson_t68name = “Ericsson T68”detect-string = “T68”init-string = “ATQ0E1V1”keepalive-cmd = “AT+CBC;+CSQ”broken = true#message-storage= “ME”#no-smsc = true#if you want direct message indication instead of sim buffering
#init-string = “AT+CNMI=3,3”
group = modemsid = siemens_c60name = “Siemens C60”init-string = “AT+CSMS=1+CNMI=1,2,0,0,1”enable-hwhs = “AT\Q3”need-sleep = true
Contoh fi le smsbox.conf:group = smsboxbearerbox-host = localhostsmsbox-id = SMSboxsendsms-port = 13013#global-sender = 13013#sendsms-chars = “0123456789 +-”log-file = “/var/log/kannel/smsbox.log”log-level = 2access-log = “/var/log/kannel/smsbox_access.log”
Contoh fi le sendsms.conf:group = sendsms-userusername = testerpassword = foobarname = SMSThrowerconcatenation = truemax-messages = 99user-deny-ip = “*.*.*.*”user-allow-ip = “127.0.0.1;192.168.*.*”#faked-sender = “+62817309405”
7. Buat direktori /var/log/kannel un-
tuk menyimpan log dari sms gateway.
Dalam contoh ini penulis memberikan
contoh konfi gurasi untuk ponsel Sonny
Ericsson T68/T68i, Siemens C60, Sie-
mens ME45, dan modem GSM Itegno.
Perhatikan sms.conf, bagian SMSC
CONNECTIONS, yang menunjukkan
penulis menggunakan modem GSM
iTegno.
root]# mkdir /var/log/kannel
8. Jalankan program daemon.
root]# cd /usr/local/sbinsbin]#./start-stop-daemon --start --exec bearerbox sms.conf &sbin]#./start-stop-daemon --
start --exec smsbox sms.conf &
Install modul atau paket perl-libwwwModul ini membantu kita untuk berinter-
aksi dengan suatu website melalui konsol.
Dalam hal ini diasumsikan Perl sudah ter-
install. Penulis menggunakan distro Man-
drake 10 Powerpack yang sudah menyer-
takan modul ini. Cara mengetes apakah
sudah terinstal, yaitu:
root]# GET -e ‘www.google.com’Cache-Control: privateConnection: closeDate: Mon, 28 Jun 2004 18:22:11 GMTServer: GWS/2.1Content-Length: 2017Content-Type: text/htmlContent-Type: text/html; charset=ISO-8859-1Client-Date: Mon, 28 Jun 2004 18:22:39 GMTClient-Peer: 216.239.57.99:80Client-Response-Num: 1<....dipotong....>
Script di atas menunjukkan perl-libwww
sudah terinstal. Bila belum terinstal dan
distro Linux yang Anda gunakan belum me-
nyertakan dalam CD-nya, maka Anda dapat
download paket perl-libwww dari Internet.
Berikut ini perintah menginstal paket RPM
untuk Mandrake:
root]# rpm -ivh perl-libwww-perl-5.76-3mdk.noarch.rpm
Kemudian test dengan user tester dan
pass foobar.
# GET -e ‘http://
SMS Gateway
Komputer SMS gateway dan modem gsm iTegno.
INFOLINUX 06/200560
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
localhost:13013/cgi-bin/sendsms?user=tester&pass=foobar&from=somebody&to=%2b6281999&text=hello%20world’
Perintah di atas akan mengirim SMS
ke nomor 6281999, dengan pesan “hello
world”. Jika nomor HP tersebut menerima
SMS, berarti konfi guasi Kannel dan perl-
libwww berhasil.
Membuat program analisisUntuk menentukan koneksi Internet kita
terputus atau tidak, kita akan membuat
Bash script pod.sh . Penulis menggunakan
methode ping. File ini agak panjang, se-
hingga agar mudah gunakan teks editor,
misalnya vi. Untuk menyimpan pengetikan
dengan vi, tekan ESC:wq.
root]# cd /usr/local/sbin/sbin]# vi pod.sh#!/bin/shecho ‘tunggu sebentar....’hasil=$(ping -c 1 $1|head -n 2|tail -n 1)hasil=${hasil:0:2}if [ “$hasil” != “64” ]then idup=$(cat urip.txt) if [ “$idup” = 1 ] then echo 0 > urip.txt echo ‘servernya nggak konek’ jam=$(date +”%H:%M:%S”) echo $jam #GET -e “http://localhost:13013/cgi-bin/sendsms?user=tester&pass=foobar&from=somebody&to=%2b62817309405&text=Servernya%20nggak%20konek%20boz%20pada%20$jam” else echo ‘Servernya tetep nggak konek boz’ fielse idup=$(cat urip.txt) if [ “$idup” = 0 ] then echo 1 > urip.txt echo ‘horeeee hidup lagi’ #GET -e ‘http://localhost:13013/cgi-bin/sendsms?user=tester&pass=foobar&from=som
ebody&to=%2b62817309405&text=Servernya%20konek%20lagi%20boz’ else echo ‘servernya tetep ok’ fifi
Ubah menjadi fi le yang dapat dieksekusi:
sbin]# chmod +x pod.shsbin]# touch urip.txt
Untuk melakukan test pada skrip ini tu-
liskan perintah berikut:
#/usr/local/sbin/pod.sh 10.2.6.228 tunggu sebentar.... servernya tetep ok
Host 10.2.6.228 di atas merupakan
contoh dari penulis. Kondisi awal dari
komputer yang dimonitor adalah hidup,
yaitu dengan nilai 1 pada berkas /usr/local/
sbin/urip.txt. Skrip pod.sh akan me ngirim
SMS ke no 6281999 apabila terjadi peruba-
han status keadaan komputer yang dimo-
nitoring. Skrip tersebut akan melakukan
ping terhadap komputer 10.2.6.228, apa-
bila komputer dalam keadaan hidup maka
akan membalas perintah ping dan tidak
me ngubah status, sehingga tidak mengi-
rimkan SMS.
Potongan skrip tentang ping di atas
adalah:
hasil=$(ping -c 1 $1|head -n 2|tail -n 1)
Perintah ping dengan 1 paket data dan
hasilnya diambil pada perintah baris kedua:
hasil=${hasil:0:2}
Skrip di atas berarti mengambil huruf
ke-0 sebanyak 2 untuk dianalisis. Apabila
komputer tetap hidup jawabannya adalah:
64 bytes from 10.2.6.228: icmp_seq=1 ttl=64 time=0.140 ms
Skrip di atas mengambil sebanyak 2 dari
huruf ke-0 yaitu 64 ini berarti komputer
tersebut hidup. Sedangkan bila komputer
tersebut mati, hasilnya adalah:
From 10.2.6.5 icmp_seq=1 Destination Host Unreachable
Skrip di atas mengambil sebanyak 2 huruf
mulai huruf ke-0 yaitu Fr. Perubahan status
akan ditulis dalam berkas bernama urip.txt
pada direktori /usr/local/sbin/. Apabila ter-
jadi perubahan status, maka secara otomatis
melakukan pengiriman ke no 6281999. Jika
perubahan dari status 0 (terputus) ke status
1 (terhubung) akan mengirimkan pesan
“Servernya konek lagi boz”. Sedangkan bila
perubahan dari status 1 (terhubung) ke sta-
tus 0 (terputus) akan mengirimkan pesan
“Servernya nggak konek boz pada $jam”.
$jam di sini sesuai dengan jam komputer
SMS gateway.
Mengatur jadwal pengecekan den-gan crontabUntuk menjalankan skrip ini bisa sebagai
user biasa (bukan root).
$ crontab -e
Tekan tombol [i] atau [insert], kemu-
dian isi sebagai berikut:
5 * * * /usr/local/sbin/pod.sh 10.2.6.228 >/dev/null
Simpan dengan menekan ESC:wq.
Artinya tiap 5 menit akan mengecek
koneksi ke alamat ip 10.2.6.228, dan me-
ngirim hasilnya ke SMS, tanpa memberikan
laporan ke e-mail account crontab Anda.
Anda bisa mengubah alamat IP dan me-
ngubah delay waktu tersebut.
Sebelum Anda meninggalkan server
gateway, pastikan bahwa program daemon
crond sudah diatur menyala pada saat boot-
ing. Sebagian besar distro Linux memiliki
direktori /etc/rcX.d/ untuk mengatur pro-
gram (service) apa saja yang dijalankan saat
booting. X adalah nomor init, yang nilainya
antara 0 hingga 6. Nomor init untuk boot-
ing dicantumkan dalam fi le /etc/inittab pada
baris id:X:initdefault:. Jadi, jika X adalah 3,
lihat direktori /etc/rc3.d/ dan pastikan huruf
paling depan fi le xyzcrond adalah S, misal-
nya S60crond. Jika masih K60crond, rename
dengan perintah mv K60crond S60crond.
Setelah crontab terpasang, maka se-
tiap 5 menit komputer gerbang SMS akan
memonitor komputer yang beralamat
10.2.6.228. Skrip pod.sh di atas bisa dikem-
bangkan dengan metode yang lebih akurat
misalnya dengan mengamati port dengan
nmap. Selamat berkreasi!
Ryan Fabella ([email protected])
SMS Gateway
INFOLINUX 06/2005 61
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
checkinstall
Dalam penggunaan sistem Linux
sehari-hari, terkadang kita diha-
dapkan pada masalah manajemen
software yang kita kompilasi dan instalasi
dari source. Jika software tersebut menye-
diakan rule “uninstall” dalam fi le Make-
fi le-nya maka beruntunglah kita, karena
kita dapat meng-uninstall program software
tersebut dengan menggunakan perintah
make uninstall.
Namun, agar dapat menggunakan pe-
rintah tersebut kita harus memiliki direk-
tori tempat kita mengompilasi software
tersebut. Dalam sistem saya, setelah berhasil
menginstalasi sebuah software dari tarball-
nya, saya selalu menghapus direktori tempat
pembuatan software tersebut, demi penghe-
matan ruang harddisk. Celakalah saya bila
demikian, karena sulit menggunakan make
uninstall.
Untunglah masalah ini ternyata ti-
dak hanya dialami oleh saya seorang. Dan
beruntungnya lagi telah ada solusi untuk
masalah ini, yaitu software checkinstall
yang dikembangkan oleh Felipe Eduardo Sanchez Diaz Duran (izto at asic-linux.com.
mx). Hebatnya lagi checkinstall mendu-
kung paket software RPM, DEB, dan TGZ
milik Slackware.
Tanpa berpanjang lebar lagi, mari kita
mulai menggunakan checkinstall dengan
terlebih dulu menginstalasinya.
Instalasi checkinstall Software checkinstall dapat diperoleh di
http://asic-linux.com.mx/~izto/checkinstall/.
Versi terakhir saat artikel ini ditulis adalah
1.6.0beta4. (Saat Anda membaca artikel ini
kemungkinan besar versi 1.6.0 telah terse-
dia).
Setelah berhasil men-download-nya,
ikutilah panduan berikut ini untuk mengin-
stalasi checkinstall:
� Mengekstraksi tarball checkinstall.
$ tar xvzpf checkinstall-1.6.0beta4.tgz
� Pindah ke direktori checkinstall.
$ cd checkinstall-1.6.0beta4/
� Kompilasi checkinstall.
$ make
Berikut ini adalah prosesnya:
make -C installwatch-0.7.0beta4make[1]: Entering directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’./create-localdeclsChecking truncate argument type... off_tChecking libc version... libc.so.6Checking glibc subversion... Treated as glibc >= 2.1 (finger crossed)gcc -Wall -c -D_GNU_SOURCE -DPIC -fPIC -D_REENTRANT -DVERSION=\”0.7.0beta3\” installwatch.c
ld -shared -o installwatch.so installwatch.o -ldl -lcmake[1]: Leaving directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’
� Instalasi checkinstall. Bila tidak ada ke-
salahan dalam proses kompilasi, kita
dapat menginstalasi checkinstall dengan
cara :
$ su# make install
Proses instalasinya adalah sebagai beri-
kut:
make -C installwatch-0.7.0beta4make[1]: Entering directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’./create-localdeclsChecking truncate argument type... off_tChecking libc version... libc.so.6Checking glibc subversion... Treated as glibc >= 2.1 (finger crossed)gcc -Wall -c -D_GNU_SOURCE -DPIC -fPIC -D_REENTRANT -DVERSION=\”0.7.0beta3\” installwatch.cld -shared -o installwatch.so installwatch.o -ldl -lc
checkinstall: Memanajemen Software di Sistem dengan MudahKita kadang perlu mengompilasi dan menginstalasi software dari source. Lalu timbul ma-salah bila kita ingin menghapus software tersebut dari sistem kita, yaitu bagaimana cara menghapusnya. Ingin tahu jawabannya? Baca terus artikel ini.
INFOLINUX 06/200562
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
checkinstall
make[1]: Leaving directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’tedi@suse:~/checkinstall-1.6.0beta4> suPassword:suse:/home/tedi/checkinstall-1.6.0beta4 # make installmake -C installwatch-0.7.0beta4make[1]: Entering directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’make[1]: Nothing to be done for `all’.make[1]: Leaving directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’cp checkinstall makepak /usr/local/sbinmake -C installwatch-0.7.0beta4 install
make[1]: Entering directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’if [ -r /usr/local/lib/installwatch.so ]; then rm -f /usr/local/lib/installwatch.so;cp installwatch.so /usr/local/lib; else cp installwatch.so /usr/local/lib;fised -e “s|#PREFIX#|/usr/local|” < installwatch > /usr/local/bin/installwatchchmod 755 /usr/local/bin/installwatchmake[1]: Leaving directory `/home/tedi/checkinstall-1.6.0beta4/installwatch-0.7.0beta4’mkdir -p /usr/local/lib/checkinstall/localemkdir -p /usr/local/lib/checkinstall/locale/es/LC_MESSAGEScp locale/checkinstall-es.mo /usr/local/lib/checkinstall/locale/es/LC_MESSAGES/
checkinstall.mocp checkinstallrc-dist /usr/local/lib/checkinstallif ! [ -f /usr/local/lib/checkinstall/checkinstallrc ]; then cp /usr/local/lib/checkinstall/checkinstallrc-dist /usr/local/lib/checkinstall/checkinstallrc; else echo; echo -e “\n===================================\n\nAn existing checkinstallrc file has been found.\nThe one from this distribution can be found at:\n\n\t/usr/local/lib/checkinstall/checkinstallrc-dist\n\n====================================\n\n”;echo ;fi
=============================An existing checkinstallrc file has been found.The one from this distribution can be found at:
/usr/local/lib/checkinstall/checkinstallrc-dist
=============================
Ya, Anda mungkin akan memprotes,
mengapa kita masih menggunakan make
install? Karena checkinstall belum terin-
stalasi di sistem kita.
Selanjutnya kita akan menjalankan
checkinstall untuk menginstalasi check-
install:
� Jalankan checkinstall.
# ./checkinstall
checkinstall 1.6.0beta4, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran This software is released under the GNU GPL.
Please choose the packaging method you want to use.Slackware [S], RPM [R] or Debian [D]? R
********************************* RPM package creation selected ********************************This package will be built according to these values:1 - Summary: [ CheckInstall installations tracker, version 1.6.0beta4 ]2 - Name: [ checkinstall ]3 - Version: [ 1.6.0beta4 ]4 - Release: [ 1 ]5 - License: [ GPL ]6 - Group: [ Applications/System ]7 - Architecture: [ i386 ]8 - Source location: [ checkinstall-1.6.0beta4 ]9 - Alternate source location: [ ]10 - Provides: [ checkinstall ]11 - Requires: [ ]Enter a number to change any of them or press ENTER to continue:
Installing with make install...
==== Installation results ====make -C installwatch-0.7.0beta4
...
Copying files to the temporary directory...OKStriping ELF binaries and libraries...OKCompressing man pages...OKBuilding file list...OKBuilding RPM package...OKNOTE: The package will not be installedErasing temporary files...OKWriting backup package...OKDeleting temp dir...OK
*****************************
Done. The new package has been saved to
INFOLINUX 06/2005 63
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
checkinstall
/usr/src/packages/RPMS/i386/checkinstall-1.6.0beta4-1.i386.rpm You can install it in your system anytime using:
rpm -i checkinstall-1.6.0beta4-1.i386.rpm*****************************
� Instalasi checkinstall versi RPM.
# rpm -ivh /usr/src/packages/RPMS/i386/checkinstall-1.6.0beta4-1.i386.rpmPreparing... ############################## [100%] 1:checkinstall ############################## [100%]
� Telah terinstalasi? Mari kita coba lihat
apakah checkinstall telah terinstalasi, di
sini kita akan menggunakan program
rpm:
$ rpm -qi checkinstall
Keluaran dari perintah ini dapat dilihat
pada pada box 1.
Yes, checkinstall telah berhasil terinsta-
lasi di sistem kita.
Selanjutnya kita akan menggunakan
checkinstall untuk menginstalasi soft-
ware xine-lib. Anda dapat saja menggu-
nakan software lainnya.
Membuat RPM dengan checkinstall Berikut ini adalah langkah-langkah yang
kita lakukan untuk membuat RPM xine-lib
dengan menggunakan checkinstall:
� Download software xine-lib dari Website
Xine (http://www.xinehq.de).
� Ektraksi tarball xine-lib.
tar xvzpf xine-lib-1.0.tar.gz
� Konfi gurasi xine-lib.
cd xine-lib-1.0./configure --prefix=/usr
Opsi -prefi x akan membuat xine-lib di-
instalasi pada direktori /usr.
Tunggulah beberapa saat sementara
proses konfi gurasi berjalan. Setelah
proses konfi gurasi selesai, kita lanjutkan
dengan mengompilasi xine-lib.
Berikut ini adalah hasil konfi gurasi xine-
lib di sistem saya:
...
* post effect plugins: * planar video effects: - invert - expand - eq - eq2 - boxblur - denoise3d - unsharp - tvtime * SFX: - goom - oscope - fftscope - mosaico
* video driver plugins: - XShm (X11 shared memory) - Xv (XVideo *static*) - fb (Linux framebuffer device) - dxr3 (Hollywood+ and Creative dxr3, mpeg video only) - vidix (X11 and framebuffer support)
* audio driver plugins: - oss (Open Sound System)
� Kompilasi xine-lib.
make
Jika dalam proses kompilasi ini tidak ada
kesalahan, pada akhir proses akan tam-
pak tampilan sebagai berikut:
Making all in includemake[3]: Entering directory `/home/tedi/xine-lib-1.0/win32/include’make[3]: Nothing to be done for `all’.make[3]: Leaving directory `/home/tedi/xine-lib-1.0/win32/include’make[3]: Entering directory `/home/tedi/xine-lib-1.0/win32’make[3]: Nothing to be done for `all-am’.make[3]: Leaving directory `/home/tedi/xine-lib-1.0/win32’make[2]: Leaving directory `/home/tedi/xine-lib-1.0/win32’make[2]: Entering directory `/home/tedi/xine-lib-1.0’make[2]: Leaving directory `/home/tedi/xine-lib-1.0’
Selanjutnya bila checkinstall telah terinstalasi dengan benar, maka akan muncul informasi
sebagai berikut:
Name : checkinstall Relocations: (not relocatable)Version : 1.6.0beta4 Vendor: (none)Release : 1 Build Date: Fri 07 Jan 2005 09:55:47 PM WITInstall date: Fri 07 Jan 2005 09:56:12 PM WIT Build Host: (none)Group : Applications/System Source RPM: checkinstall-1.6.0beta4-1.src.rpmSize : 263973 License: GPLSignature : (none)Packager : checkinstall-1.6.0beta4Summary : CheckInstall installations tracker, version 1.6.0beta4Description :CheckInstall installations tracker, version 1.6.0beta4
CheckInstall keeps track of all the files created or modified by your installation script (“make install” “make install_modules”, “setup”, etc), builds a standard binary package and installs it in your system giving you the ability to uninstall it with yourdistribution’s standard package management utilities. Distribution: (none)
Box 1. Hasil keluaran perintah: $ rpm -qi checkinstall.
INFOLINUX 06/200564
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
make[1]: Leaving directory `/home/tedi/xine-lib-1.0
� (Opsional) Melakukan tes terhadap hasil
kompilasi.
make check
� Instalasi menggunakan checkinstall.
$ suPassword:# /usr/local/sbin/checkinstall
Berikut ini adalah prosesnya:
checkinstall 1.6.0beta4, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran This software is released under the GNU GPL.
The package documentation directory ./doc-pak does not exist.Should I create a default set of package docs? [y]: y
Preparing package documentation...OK
Please choose the packaging method you want to use.Slackware [S], RPM [R] or
Debian [D]? R
Please write a description for the package.End your description with an empty line or EOF.>> xine-lib >>
********************************* RPM package creation selected ********************************
This package will be built according to these values:
1 - Summary: [ xine-lib ]2 - Name: [ xine-lib ]3 - Version: [ 1.0 ]4 - Release: [ 1 ]5 - License: [ GPL ]6 - Group: [ Applications/ System ]7 - Architecture: [ i386 ]8 - Source location: [ xine- lib-1.0 ]9 - Alternate source location: [ ]10 - Provides: [ xine-lib ]11 - Requires: [ ]
Enter a number to change any of them or press ENTER to continue:
Kita ingin mengubah “Summary”-nya
karena kurang deskriptif:
Enter a number to change any of them or press ENTER to continue: 1Enter new summary:>> a free multimedia engine
This package will be built according to these values:
1 - Summary: [ a free multimedia engine ]2 - Name: [ xine-lib ]3 - Version: [ 1.0 ]4 - Release: [ 1 ]5 - License: [ GPL ]6 - Group: [ Applications/ System ]7 - Architecture: [ i386 ]8 - Source location: [ xine- lib-1.0 ]9 - Alternate source location: [ ]10 - Provides: [ xine-lib ]11 - Requires: [ ]
Enter a number to change any of them or press ENTER to continue:
Tampaknya tidak ada permasalahan lagi,
kita lanjutkan dengan menekan tombol
ENTER untuk membuat paket RPM.
Jika tidak ada masalah, di akhir proses
akan tampak sebagai berikut:
...
NOTE: The package will not be installed
Erasing temporary files...OK
Deleting doc-pak directory...OK
Writing backup package...OK
Deleting temp dir...OK
checkinstall
Website checkinstall.
INFOLINUX 06/2005 65
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
*****************************
Done. The new package has been saved to
/usr/src/packages/RPMS/i386/xine-lib-1.0-1.i386.rpm You can install it in your system anytime using:
rpm -i xine-lib-1.0-1.i386.rpm
*****************************
Dari informasi di atas, paket xine-lib-
1.0-1.i386.rpm terdapat di dalam direktori /
usr/src/packages/RPMS/i386/. Dalam sistem
Anda mungkin akan sedikit berbeda.
Untuk menginstalasi paket tersebut,
dapat dilakukan dengan :
rpm -i xine-lib-1.0-1.i386.rpm
Bagaimana? Mudah, bukan?
Mengustomisasi checkinstall Untuk mengustomisasi checkinstall dapat
dilakukan dengan mengubah beberapa vari-
abel yang disediakan di dalam fi le konfi gu-
rasi checkinstall:
/usr/local/lib/checkinstall/checkinstallrc
Menentukan jenis paket default Bila kita tidak ingin ditanya tentang jenis
paket yang ingin dibuat setiap kali meng-
gunakan checkinstall, ubahlah variabel IN-
STYPE menjadi:
INSTYPE=”R”
Menentukan arsitektur mesin default Untuk menentukan arsitektur mesin secara
default, misalnya jika mesin Anda adalah
AMD Athlon 64bit, maka rasanya tidak
pantas bila menset mesin ke “i386”. Oleh
karena itu, ubahlah variabel ARCHITEC-
TURE menjadi:
ARCHITECTURE=”athlon”
Perubahan arsitektur mesin ini menye-
checkinstall
babkan paket RPM yang dihasilkan ditaruh
dalam direktori /usr/src/packages/RPMS/
athlon/.
Jika ingin mengustomisasi lebih jauh, si-
lakan melihat dokumentasi yang disertakan
dalam software checkinstall.
Penutup Pekerjaan manajemen software yang kita
kompilasi dan instalasi dari source ter-
kadang membuat kita pusing tujuh keliling.
Karena bila tidak dikelola dengan baik, akan
membuat sistem kita menjadi berantakan.
Untunglah telah ada program bantu un-
tuk mengelola software yang dikompilasi
dan diinstalasi dari source, yaitu checkin-
stall. Dengan checkinstall, kita dapat mem-
buatkan paket dari software tersebut, dan de-
ngan menggunakan program paket manajer
yang telah disediakan oleh distro kita, kita
dapat memanipulasi paket software terse-
but. Dengan demikian pengelolaan software
yang dikompilasi dan diinstalasi dari source
menjadi lebih mudah.
Tedi Heriyanto ([email protected])
INFOLINUX 06/200566
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
unison
Mr. X adalah seorang pembunuh
bayaran yang sangat laris. Ke-
betulan, beliau termasuk pem-
bunuh bayaran yang cukup banyak meng-
gunakan TI. Begini cara kerjanya. Ketika
ada tawaran, Mr. X akan mengamati calon
korbannya, lengkap dengan informasi ke-
biasaan calon korban, foto, dan hal-hal yang
berhubungan dengan calon korban tersebut.
Mr. X sering bekerja mobile dan mencatat
semua informasi ke dalam notebook yang
beliau miliki. Notebook beliau terinstall
dengan sistem operasi MS Windows XP.
Sampai di kantor rahasianya, Mr. X selalu
meng-copy-kan kembali semua informasi
yang berhasil dikumpulkan dalam satu hari
ke server kantor rahasianya tersebut.
Mr. X tidak harus selalu keluar kantor
dalam mengamati calon korbannya. Ter-
kadang, informasi datang begitu saja dari
pihak yang memberi kerja. Terkadang, Mr.
X juga membuat perubahan langsung ke
server kantor rahasianya. Setiap hari seperti
ini. Sampai suatu hari.
Mr. X telah membuat perubahan kecil
yang cukup detail dan penting dalam arsip
calon korban ketika bekerja di kantor. Ke-
tika berada di luar kantor untuk mengamati
lagi calon korbannya, Mr. X kehilangan pe-
rubahan yang dibuat di server kantornya,
karena tidak dikopikan ke dalam notebook.
Perubahan tersebut sebenarnya cukup pen-
ting. Apa boleh buat, Mr. X pun melupakan
sejenak dan mengumpulkan informasi lain.
Setibanya di kantor, Mr. X seperti biasa,
mengopikan hasil kerjaan di notebooknya
kembali ke server kantornya. Sayangnya,
perubahan yang dibuat di server telah hi-
lang tertimpa oleh data yang baru di-copy
dari notebook. Mr. X sangat kesal.
Suatu, hari, Mr. X membeli buku Win-
dows dan mempelajari tentang adanya fasi-
litas Briefcase yang dapat digunakan untuk
kegiatan sinkronisasi fi le yang sering sekali
beliau lakukan. Setelah dicoba-coba, Mr. X
kemudian dapat memanfaatkan fasilitas ini
dan sejak itu, tidak ada lagi informasi yang
tidak tersinkron. Mr. X pun kembali bekerja
dengan rapi, siap memburu calon korban-
nya. Dengan adanya briefcase di Windows,
sinkronisasi fi le dapat dilakukan dan Win-
dows akan menampilkan konfi rmasi ketika
sinkronisasi dilakukan. Mr. X dapat me-
milih untuk meng-copy-kan perubahan ke
server, dari server, menghapus yang tidak
tersimpan di server, dan lain sebagainya.
Seiring dengan selesainya masalah sin-
kronisasi fi le Mr. X, cerita tentang Mr. X pun
selesai. Apakah Anda pernah mengalami
apa yang dialami oleh Mr. X ketika melaku-
kan sinkronisasi fi le? Kita bisa saja lupa
dan mengikuti kegiatan rutin untuk selalu
meng opikan fi le ke komputer server, pada-
hal kita mungkin telah membuat perubahan
di komputer server tersebut. Urusan sepele
seperti sinkronisasi fi le bisa menyebabkan
kita kehilangan data apabila tidak ditangani
dengan baik.
Terlepas dari tepat atau tidaknya peng-
gunaan briefcase di Windows, harus kita
akui bahwa fasilitas yang satu ini sangat
berguna. User interfacenya juga sangat me-
narik. Sayangnya, fasilitas briefcase ini tidak
terdapat di Linux. Kita perlu mempergu-
nakan program lain untuk mendapatkan
fasilitas serupa. Walau, sebenarnya, apabila
Anda menggunakan KDE misalnya, Anda
bisa memanfaatkan KFS untuk sinkronisasi
fi le. Atau, dengan sedikit kompromi, Anda
bisa memanfaatkan rsync.
UnisonApabila Anda tidak menggunakan KDE
atau rsync terasa kurang cocok bagi Anda,
maka Anda bisa mencoba tool yang satu
ini: unison. Namanya jelas tidak mencer-
minkan fungsinya. Tapi, fi turnya luar biasa
dalam menangani masalah sinkronisasi fi le.
User interface-nya juga bisa seramah Win-
dows. Selain itu, unison juga dapat bekerja
di Windows, Linux dan beberapa unix lain-
nya. Di Artikel kali ini, kita akan membahas
tentang unison, fi tur dan berbagai contoh
penggunaan.
unison adalah tool untuk menangani
masalah sinkronisasi fi le di platform UNIX
dan Windows. unison mengizinkan dua en-
titi yang akan disinkronisasi satu sama lain
tersimpan di host yang berbeda, atau di host
yang sama, untuk dapat tersinkronisasi satu
sama lainnya. Harus diakui, unison memin-
jam cukup banyak konsep dan fi tur dari
berbagai aplikasi lain seperti CVS, CODA
distributed fi lesystem, RSYNC, dan lain se-
bagainya. Tentang RSYNC, developer Uni-
son bahkan membaca thesis Andrew Tridgel (samba, rsync, kini di OSDL) tentang rsync
dalam mengimplementasikan tool ini. uni-
son juga merupakan program yang berjalan
di modus user (user mode), sehingga dapat
dijalankan oleh siapa saja dan tidak ada
hubungan dengan sistem operasi.
Salah satu fasilitas yang cukup membuat
tenang hati adalah kemampuan unison
Sinkronisasi File dengan unisonSinkronisasi adalah kegiatan yang mungkin sering Anda lakukan apabila Anda sering bekerja mobile, atau bekerja pada beberapa tempat. Di Linux, terdapat tool sinkronisasi yang hebat dan mudah untuk digunakan: unison. Di artikel kali ini, kita akan membahas unison dan contoh-contoh penggunaannya.
INFOLINUX 06/2005 67
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
unison
yang tinggi dalam menangani perubahan
dan konfl ik. unison akan sangat berhati-
hati dalam menangani proses sinkronisasi,
termasuk terhadap kegagalan koneksi atau
sumber daya listrik.
Konsep dasar unisonUntuk memahami unison lebih dalam sebe-
lum mencoba, kita akan membahas tentang
konsep dasar dari aplikasi ini.
� Pertama, kita mengenal istilah replica di
unison. Replica di sini adalah entiti yang
akan disinkronisasi dengan entiti lain.
Replica mengandung informasi pro-
tokol komunikasi, host, user, dan path.
Untuk protokol komunikasi, unison bi-
sa bekerja dengan fi le lokal, socket, ssh,
atau rsh.
� Kedua, Kita mengenal unison server dan
client.
� Ketiga, masalah update. Unison akan
mencatat informasi setiap path yang
sukses disinkronisasi, sehingga apabila
terjadi perubahan, unison dapat dengan
cepat memberikan anjuran aksi yang
akan dilakukan. Untuk masalah konfl ik
dan resolusi konfl ik, unison akan mem-
berikan anjuran, namun user bebas me-
nentukan aksi yang ingin dilakukan.
� Keempat, dukungan profi le. Apabila
memiliki banyak replica yang harus
disinkronisasi, Anda bisa membuatnya
dalam beberapa profi le terpisah. Dengan
demikian, Anda tidak harus selalu me-
nyebutkan nama replice yang mungkin
akan panjang dan susah diingat. Anda
cukup menyebutkan nama profi le-nya
saja.
User interface unisonUnison datang dengan kemampuan un-
tuk bekerja pada user interface berbasis
teks ataupun user interface berbasis GUI.
U mumnya, untuk GUI, widget set GTK+
yang akan digunakan. User interface berba-
sis teks umumnya digunakan untuk bekerja
sama dengan shell script, untuk otomatisasi
sinkronisasi dua replica yang besar dan ti-
dak membutuhkan campur tangan user.
InstalasiInstalasi unison dapat dengan mudah digu-
nakan. Carilah terlebih dahulu paket untuk
distro Anda. Apabila tidak terdapat juga,
Anda bisa membangun sendiri unison dari
source code. Untuk kompilasi tanpa melibat-
kan GUI, proses kompilasi dapat dilakukan
dengan sangat mudah. Untuk mendapatkan
fasilitas GUI, pastikan Anda memiliki head-
er yang dibutuhkan dalam proses kompilasi
seperti header gtk.
Contoh-contoh penggunaanKita akan membahas beberapa contoh
penggunaan yang umum. Kita akan mem-
bahas terlebih dahulu contoh penggunaan
dalam modus teks, dan setelah itu, kita
akan melanjutkan ke penggunaan unison di
modus grafi k. Pembuatan dan bagaimana
bekerja dengan profi le juga akan disertakan
dalam contoh.
� Lokal ke lokal Pertama-tama, kita akan bekerja dari lokal
ke lokal, dan melakukan sinkronisasi antar
dua direktori. Sediakan dua direktori de-
ngan nama a dan b, di mana a memiliki isi
sebagai berikut:
aa/aa/ba/ca/d
a/ea/fa/dir1/a/dir1/aa/dir1/b
Sementara, direktori b masih kosong.
Untuk menyinkronisasi a dan b, beri-
kanlah perintah berikut ini:
$ unison a b -ui textContacting server...Looking for changes dir1Reconciling changes
a b new file ----> a [f] >new file ----> b [f] >new file ----> c [f] >new file ----> d [f] >new dir ----> dir1 [f] >new file ----> e [f] >new file ----> f [f] >
Proceed with propagating updates? [] yPropagating updates
Tampilan awal unison.
INFOLINUX 06/200568
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
unison
UNISON started propagating changes at 15:35:27 on 09 Feb 2005[BGN] Copying a from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying b from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying c from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying d from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying dir1 from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying e from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying f from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b dir1/a dir1/b[END] Copying a[END] Copying b[END] Copying c[END] Copying d[END] Copying e[END] Copying f[END] Copying dir1UNISON finished propagating changes at 15:35:27 on 09 Feb 2005
Saving synchronizer stateSynchronization complete
Pada saat memeriksa perubahan di an-
tara kedua tree, unison akan memberikan
kita pilihan untuk aksi yang akan dilaku-
kan. Anda bisa memilih untuk menekan <,
atau >, atau / sesuai dengan arah perubahan
yang Anda lakukan. Arah > berarti dari a ke
b, dalam contoh kita. Arah < berarti dari b
ke a, dalam contoh kita. Sementara, / berarti
tidak melakukan apa-apa.
Dalam contoh tersebut, apabila Anda
memberikan aksi <, maka isi dari direk-
tori a akan menjadi kosong, sama seperti
b. Sementara, apabila Anda hanya ingin
me ngambil fi le a dan b dari a, maka untuk
c,d,e,f dan dir1, Anda harus menekan tom-
bol /. Contoh:
$ unison a b -ui textContacting server...Looking for changes dir1Reconciling changes
a b new file ----> a [f] >new file ----> b [f] >new file <=?=> c [f] /new file <=?=> d [f] /new dir <=?=> dir1 [f] /new file <=?=> e [f] /new file <=?=> f [f] /
Proceed with propagating updates? [] yPropagating updates
UNISON started propagating changes at 15:40:51 on 09 Feb 2005[BGN] Copying a from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[BGN] Copying b from /home/koljeng/Documents/unison/sampaj/a to /home/koljeng/Documents/unison/sampaj/b[CONFLICT] Skipping c[CONFLICT] Skipping d[CONFLICT] Skipping dir1[CONFLICT] Skipping e[CONFLICT] Skipping f
[END] Copying a[END] Copying bUNISON finished propagating changes at 15:40:51 on 09 Feb 2005
Saving synchronizer stateSynchronization complete
Dengan contoh tersebut, maka hanya fi le
a dan b yang di-copy-kan ke direktori b.
Kita akan melanjutkan. File b/a akan di-
ubah dan kita ingin, fi le a/a dan fi le b/a be-
rada dalam kondisi tersinkronisasi. Setelah
mengubah fi le b/a, berikanlah perintah se-
perti ini:
$ unison a b -ui textContacting server...Looking for changes dir1Reconciling changes
a b <---- changed a [f] <new file <=?=> c [f] /new file <=?=> d [f] /new dir <=?=> dir1 [f] /new file <=?=> e [f] /new file <=?=> f [f] /
Proceed with propagating updates? [] yPropagating updates
UNISON started propagating changes at 15:43:23 on 09 Feb 2005[BGN] Updating file a from /home/koljeng/Documents/unison/sampaj/b to /home/koljeng/Documents/unison/sampaj/a[CONFLICT] Skipping c[CONFLICT] Skipping d[CONFLICT] Skipping dir1[CONFLICT] Skipping e[CONFLICT] Skipping f[END] Updating file aUNISON finished propagating changes at 15:43:23 on 09 Feb 2005
INFOLINUX 06/2005 69
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
unison
Saving synchronizer stateSynchronization complete
Pada contoh tersebut, tertulis bahwa
fi le b/a telah berubah dan disarankan un-
tuk mengubah ke arah kiri, di mana b akan
menjadi sumber. Apabila Anda tidak meng-
inginkan a/b disamakan isinya dengan b/a,
maka Anda bisa mengubah arah menjadi >
sehingga a/a yang akan menjadi sumber.
Apabila kedua replica yang tersinkron
ingin disinkronisasi lagi, maka unison akan
menampilkan bahwa tidak ada yang perlu
disinkronisasi seperti contoh berikut:
$ unison a b -ui textContacting server...Looking for changes dir1 dir1Reconciling changesNothing to do: replicas have not been changed since last sync.
Bagi Anda yang bekerja dengan script,
tentunya akan lebih mudah kalau Anda me-
nerima saran yang diberikan oleh unison.
Untuk itu, Anda bisa memberikan opsi -
auto ketika menjalankan unison.
� Lokal ke remote/remote ke lokal. Setelah kita bekerja dari lokal ke lokal, maka
kita akan masuk ke dunia yang lebih nyata,
dengan bekerja antar-host. Pada prinsipnya,
cara kerjanya sama saja. Anda hanya perlu
mengubah protokol pada replica yang di-
inginkan. Dalam contoh ini, kita akan mem-
pergunakan ssh untuk bekerja antar-host.
Ada beberapa langkah yang harus dilakukan.
Pertama, pastikan host tertentu bisa
menjalankan unison. Berikan perintah beri-
kut ini untuk memastikan remote host bisa
menjalankan unison (tentunya pada host
tersebut harus telah terinstal unison, akan
lebih baik lagi apabila menjalankan versi
yang sama).
$ ssh 192.168.0.51 unison -versionPassword: unison version 2.9.1
Kedua, pastikan koneksi dapat terjadi.
Berikan opsi -testserver seperti contoh beri-
kut ini:
$ unison -testserver a ssh://[email protected]/a -ui textContacting server...Password: p = a; bn = a
Ketiga, Anda bisa segera bekerja karena
koneksi kedua pihak telah terjalin. Contoh:
$ unison a ssh://[email protected]/Documents/unison/sampaj/b -ui textContacting server...Password: Looking for changes dir1 Waiting for changes from serverReconciling changes
local koljeng ====> deleted a [f] > ====> deleted b [f] >new file ----> c [f] >new file ----> d [f] >new dir ----> dir1 [f] >new file ----> e [f] >new file ----> f [f] >
Proceed with propagating
updates? [] yPropagating updates
UNISON started propagating changes at 15:59:52 on 09 Feb 2005[BGN] Copying a from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying b from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying c from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying d from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying dir1 from /home/koljeng/Documents/
Layar utama unison.
INFOLINUX 06/200570
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
bila Anda banyak melakukan sinkronisasi
dengan pasangan replica yang berbeda,
dengan alamat replica yang panjang, akan
lebih baik apabila Anda membuat profi le
untuk pasangan replica yang diinginkan.
Sebagai contoh, kita akan membuat pro-
fi le pasangan replica local a b dengan nama
local_ab.
Berikut ini adalah langkah-langkah
dalam membuat profi le local_ab.
Pertama, Masuklah ke direktori .unison
di home directory Anda. Setelah itu, buatlah
fi le dengan nama local_ab.prf dengan isi fi le
sebagai berikut:
root = /home/koljeng/Documents/unison/sampaj/aroot = /home/koljeng/Documents/unison/sampaj/b
path = apath = b
Kedua, Anda bisa segera menggunakan
profi le local_ab tersebut dengan perintah
berikut:
$ unison local_ab -ui textContacting server...Looking for changesReconciling changes
a b <---- changed a [f] <
Proceed with propagating updates? [] yPropagating updates
UNISON started propagating changes at 16:25:02 on 09 Feb 2005[BGN] Updating file a from /home/koljeng/Documents/unison/sampaj/b to /home/koljeng/Documents/unison/sampaj/a[END] Updating file aUNISON finished propagating changes at 16:25:02 on 09 Feb 2005
Saving synchronizer stateSynchronization complete
� Bekerja dengan GUI. Sejak contoh pertama, kita selalu meng-
gunakan opsi -ui text. Opsi -ui digunakan
untuk menentukan user interface yang akan
digunakan. Secara otomatis, unison akan
memeriksa apakah ui grafi k tersedia ketika
Anda berada pada X. Dengan demikian, ke-
tika berada di X dan menjalankan unison
tanpa opsi -ui, maka yang akan dijalankan
adalah unison pada modus GUI.
Bekerja dengan GUI membuat kita tidak
perlu mengingat berbagai perintah. Bah-
kan, Anda bisa langsung membuat profi le
dengan sangat mudah, tanpa harus repot-
repot mengedit fi le profi le sendiri.
Pada saat dijalankan, unison akan me-
nampilkan profile yang tersedia. Anda
bisa memilih untuk menjalankan pro-
file yang diinginkan. Anda bisa memilih
profile default, dan diikuti oleh tombol
OK. Setelah itu, Anda akan diminta un-
tuk memasukkan direktori lokal. Masuk-
kan direktori lokal dan tekanlah tombol
Continue. Setelah itu, dialog kedua akan
ditampilkan. Anda bisa memasukkan
replica kedua. Setelah semuanya selesai,
kliklah tombol Continue. Secara otomatis,
sin kronisasi akan dilakukan, dan unison
akan menampilkan konfirmasi aksi sin-
kronisasi untuk Anda.
Untuk membuat profi le, kliklah tombol
New profi le pada dialog pertama unison. An-
da akan diminta untuk memasukkan nama
profi le. Masukkan nama yang diinginkan,
dan kliklah tombol OK. Setelah itu, Anda
akan diminta untuk memasukkan pasangan
replica. Setelah itu, Anda pun selesai.
Pada saat konfi rmasi sinkronisasi di-
lakukan, Anda masih tetap dapat memi-
lih untuk ke arah kiri, kanan, atau tidak
melakukan perubahan. Jauh lebih mudah
dibandingkan dengan text user interface.
Hanya, script tidak akan dapat memanfaat-
kan fasilitas GUI ini.
Sampai di sinilah perkenalan kita de-
ngan unison. Apa yang kita bahas kali ini
hanya sedikit bagian dari fasilitas yang dise-
diakan unison. Unison adalah fi le synchro-
nization tool yang sangat luar biasa, kaya fi -
tur, namun tetap sangat mudah digunakan.
Selamat mencoba, dan pastikan Anda tidak
mengalami apa dialami oleh Mr. X, yaitu
kehilangan isi fi le yang penting.
Noprianto ([email protected])
unison
unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying e from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b[BGN] Copying f from /home/koljeng/Documents/unison/sampaj/a to //koljeng//home/koljeng/Documents/unison/sampaj/b dir1/a dir1/b[END] Copying a[END] Copying b[END] Copying c[END] Copying d[END] Copying e[END] Copying f[END] Copying dir1UNISON finished propagating changes at 15:59:53 on 09 Feb 2005
Saving synchronizer stateSynchronization complete
Dalam contoh tersebut, kita bisa meli-
hat bahwa proses peng-copy-an ditandai
dengan (local dan koljeng, yang merupakan
nama server remote), serta pada proses per-
siapan pengopian, kita melihat bahwa nama
fi le di-copy-kan dari local ke remote.
Dalam contoh kali ini, kita memberikan
url ssh://[email protected]/Documents/
unison/sampaj/b sebagai replica kedua. Per-
hatikan notasi path yang digunakan yaitu
notasi / setelah nama server. Kita harus
memandang bahwa notasi / adalah bagian
dari server. Dengan demikian, direktori
setelah itu, Documents/unison/sampaj/b
adalah relatif terhadap home directory
user koljeng di host tersebut. Bagaimana
kalau kita ingin bekerja dengan path abso-
lut? Berikan saja dua url seperti ini: ssh://
[email protected]//path/absolut/ke/di-
rektori/yang/diinginkan. Kita akan meng-
gunakan dua tanda /.
� Bekerja dengan profile. Seperti telah disebutkan sebelumnya, apa-
IKLAN
INFOLINUX 06/200572
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
w3mir
Terkadang, kita menemukan infor-
masi yang begitu menarik di www,
namun tidak tersedia link untuk
men-download kumpulan informasi terse-
but. Lebih parah lagi apabila kumpulan
informasi tersebut tersebar dalam puluhan
fi le, dimana akan menyulitkan apabila ha-
rus disimpan satu per satu. Kalaupun ingin
menyimpannya, kita mungkin kehilangan
link yang menghubungkan fi le-fi le yang kita
download tersebut. Dalam kondisi demiki-
an, beberapa pihak akan memilih cara un-
tuk men-download keseluruhan kumpulan
informasi tersebut agar dapat dibaca lokal
dengan bantuan www mirroring tool.
Di dunia open source, kita mengenal
begitu banyak program seperti ini. Salah
satu dari tool tersebut yang cukup menarik
untuk digunakan adalah w3mir, sebuah
www mirroring tool yang cukup kaya fi tur.
W3mir dapat men-download keseluruhan
direktori ataupun sekadar fi le-fi le tertentu.
Selain itu, ketika men-download, w3mir
juga akan memperbaiki URL agar sesuai
dengan kondisi local copy Anda sehingga lo-
cal browsing tetap dapat dilakukan. W3mir
mendukung HTML4, CSS (partial support),
Java, ActiveX dan fi le-fi le PDF, di luar fi tur-
fi tur lainnya. Di artikel kali ini, kita akan
membahas cara-cara mirroring beserta tip
menggunakan w3mir.
W3mir dibangun dengan Perl sehingga
ANda akan membutuhkan Perl terinstal di-
sistem Anda (hampir semua distro umum
sudah melakukannya). Selain itu, beberapa
modul perl harus diinstal agar w3mir dapat
bekerja. Anda bisa mendapatkan perl-URI,
perl-libwww-perl, perl-HTML-parser di
CPAN atau di CDROM distro Anda. Pusta-
ka-pustaka tersebut cukup umum. Installah
dengan tool packaging distro Anda untuk
lebih mudahnya. Setelah semua kebutuhan
w3mir terpenuhi, Anda bisa men-down-
load tool ini di website-nya, http://langfeldt.
net/w3mir/.
Untuk menggunakan, Anda bisa mem-
pergunakan fi le konfi gurasi atau tidak sama
sekali. Apabila tidak mempergunakan fi le
konfi gurasi, Anda akan selalu memberi-
kan opsi tertentu ketika menjalankan pro-
gram ini. Untuk mudahnya, kita tidak akan
mempergunakan fi le konfi gurasi dalam
artikel ini. Apabila diinginkan, Anda bisa
meng-copy-kan contoh fi le konfi gurasi
yang datang bersama paket ini ke home di-
rectory Anda dengan nama .w3mir. Contoh
konfi gurasi tersebut sudah self-documented.
Untuk melihat opsi yang tersedia, seper-
ti biasa, berikan opsi -h pada saat menjalan-
kan w3mir. Penerapan opsi-opsi tersebut
akan kita bahas sama-sama dalam bagian
contoh. Untuk mencoba w3mir, alangkah
baiknya apabila Anda terhubung ke jari-
ngan lokal yang menyediakan fi le sharing
dari www, atau Anda dapat membangun
web server sederhana untuk mencoba.
Contoh-contoh penggunaan� Menampilkan daftar file yang akan di-
download, tanpa men-download terlebih dahulu.
Kadang-kadang, kita ingin mengetahui fi le-
fi le apa saja yang akan di-download dalam
proses mirroring. Beberapa pengguna yang
paranoia umumnya akan melakukan hal
ini. Berikan opsi -f untuk menampilkan
daftar fi le seperti contoh berikut:
$ w3mir -f http://192.168.0.1/pub/w3mir: http://192.168.0.1/robots.txtw3mir: index.html, got and forgot it.w3mir: That’s all (2073+463 bytes of it).
Untuk lebih baik lagi dalam menampil-
kan URL, Anda dapat mengombinasikan-
nya dengan opsi -l, seperti contoh berikut:
$ w3mir -l -f http://192.168.0.1/pub/w3mir: http://192.168.0.1/robots.txtw3mir: index.html, got and forgot it....w3mir: That’s all (2073+463 bytes of it).
Sebagai catatan, Anda harus menulis-
kan opsi -l dan -f secara terpisah. w3mir
tidak mengenali -l dan -f sebagai -lf atau -fl .
Catatan berikutnya adalah, walaupun tidak
ada fi le yang akan di-download ketika Anda
membuat list seperti ini, fi le untuk kebutu-
han internal w3mir, yaitu .redirs dan .ref-
erers akan dibuat. Anda bisa mengabaikan
fi le ini.
Selain untuk kebutuhan audit ke-
amanan, daftar fi le ini sebenarnya cukup
berguna. Asumsikan Anda tidak memiliki
koneksi Internet, namun rekan Anda se-
lalu bersedia untuk men-download URL
pesanan Anda. Hanya, beliau tidak mau re-
WWW Mirroring dengan w3mirAnda mungkin menemukan website yang menarik dan tidak selalu bisa online untuk mem-baca isinya. Bagi Anda yang ingin membuat mirror atau local copy untuk dapat dibaca lo-kal, Anda bisa mempergunakan w3mir. W3mir adalah mirroring tool yang powerful, namun mudah digunakan.
INFOLINUX 06/2005 73
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
w3mir
pot-repot mencari URL apa yang Anda in-
ginkan di search engine. Beliau meminta list
URL agar dapat dilewatkan ke script untuk
men-download fi le-fi le yang bersangkutan.
Dalam hal ini, Anda bisa mempergunakan
w3mir untuk menghasilkan list (terutama
kalau Anda ingin men-download informasi
dari beberapa website sekaligus, dengan fi l-
ter fi le tertentu).
� Men-download file tunggal.Untuk men-download fi le tunggal dengan
w3mir, Anda tidak perlu memberikan opsi
apapun. Cukup sebutkan saja URLnya, se-
perti contoh berikut:
$ w3mir http://192.168.0.1/pub/OS/SUSE91/INSTALL/INDEX.gzw3mir: http://192.168.0.1/robots.txtw3mir: INDEX.gz: 34162 bytesw3mir: That’s all (35205+549 bytes of it).
� Menampilkan progress. Untuk fi le besar, terkadang kita ingin me-
lihat progress download yang kita laku-
kan. Sekadar untuk memastikan semuanya
bekerja dengan baik, misalnya. Anda bisa
memberikan opsi -c kepada w3mir dalam
menampilkan progress peng-copy-an fi le.
Sayangnya, opsi ini tidak terlalu bisa di-
andalkan. Terkadang opsi ini bekerja, ter-
kadang tidak bekerja. Jadi, hanya gunakan
kalau benar-benar perlu.
� Men-download direktori secara rekursif. Inilah yang umumnya kita inginkan. Untuk
mendapatkan fasilitas ini, di mana w3mir
akan mengambil semua fi le dalam direktori
yang kita minta, berikan saja opsi -r, dan se-
cara otomatis sebuah local copy akan terse-
dia di harddisk Anda. Contoh:
$ w3mir -r http://192.168.0.1/pub/Apps/Office/Kamus/KamusLain1/w3mir: http://192.168.0.1/robots.txtw3mir: index.html: 812 bytes......
w3mir: ?C=N: 812 bytesw3mir: That’s all (2159676+2439 bytes of it).
Setelah selesai download, perhatikanlah
direktori aktif Anda. File yang ada di dalam
direktori di server secara otomatis akan ter-
simpan.
� Mirror keseluruhan site. Untuk melakukan mirror keseluruhan
situs, cukup berikan saja opsi -r pada di-
rektori tertinggi dari site yang ingin Anda
mirror. Hanya, Anda perlu sedikit cermat
dalam melakukan hal seperti ini. Pertama,
Anda mungkin perlu membatasi kedala-
man rekursi ketika w3mir men-download.
Secara default, w3mir akan terus mengikuti
link apabila Anda memberikan opsi -r. Hal
ini bisa menjadi bermasalah ketika website
bersangkutan memasang perangkap. Anda
bisa mempergunakan fi le konfi gurasi de-
ngan direktif Ignore.
Sebagai contoh:
Ignore: /*/*/*/*/*/*/
INFOLINUX 06/200574
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
w3mir
Direktif ini akan membatasi sampai ke-
dalaman 4 level (3 garis miring pertama un-
tuk internal w3mir apabila url yang diberi-
kan telah memiliki 3 garis miring pertama
seperti http://192.168.0.1/).
� Menampilkan isi file. Bagaimana kalau Anda ingin sekadar me-
nampilkan isi dari suatu fi le namun tidak
ingin menyimpan fi lenya ke harddisk Anda?
Ini mirip dengan perintah cat. Caranya,
berikan saja opsi -s (diikuti oleh nama fi le
lengkap) pada command line.
Isi dari fi le yang Anda tampilkan tersebut
akan tampil pada stdout. Dengan pemaha-
man tersebut, Anda bisa menyimpan isi fi le
yang ditampilkan tersebut ke fi le dengan
nama lain. Cukup arahkan stdout Anda ke
fi le lain seperti contoh berikut:
$ w3mir -s http://192.168.0.1/pub/ > a.htmlw3mir: http://192.168.0.1/robots.txtw3mir: index.htmlw3mir: That’s all (2073+463 bytes of it).
Apabila Anda buka fi le a.html tersebut,
maka isinya akan sama dengan apa yang
seharusnya Anda lihat ketika mengarahkan
browser ke alamat yang kita berikan kepada
w3mir.
� Berpura-pura sebagai agent lain. Setiap http agent yang kita miliki, entah web
browser, downloader, dan lain sebagainya
umumnya mengatur nama agent sesuai de-
ngan nama programnya. Ketika kita meng-
gunakan w3mir, nama agent yang dikirim
ke web server adalah w3mir/version-release-
date. Ketika kita ingin men-download webite
yang hanya menerima agent tertentu misal-
nya, kita perlu berpura-pura sebagai agent
yang diizinkan. Caranya adalah de ngan
memberikan opsi -agent dan menyebutkan
nama agent. Kita tentu bisa menuliskan apa
yang kita inginkan. Sebagai contoh:
$ w3mir -agent ‘Mozilla/8.1 (compatible; MSIE7.0; WIndows 2005)’ -f http://192.168.0.1/pub/
� Menampilkan URL yang tersimpan dalam dokumen.
W3mir dapat pula mengetahui URL apa
saja yang terdapat suatu dokumen. Anda
mungkin ingin menampilkannya. Untuk
itu, berikan opsi -l (L kecil) seperti contoh
berikut ini:
$ w3mir -l http://192.168.0.1/pub/Intermezzo/Interview/Fosdem\ 2002\ -\ report.htm w3mir: http://192.168.0.1/robots.txthttp://www.freehackers.org/ ... ... ...w3mir: That’s all (24460+561 bytes of it).
� Memproses file secara batch. Secara default, ketika men-download sebuah
fi le, w3mir akan mencari URL di dalam fi le
tersebut untuk proses download berikut-
nya. Dan, ini tidak hanya berlaku untuk fi le
HTML, namun juga fi le PDF. Tentunya,
proses seperti ini akan memakan waktu dan
terkadang tidak selalu diinginkan. Apa yang
Anda inginkan barangkali hanyalah men-
download sebuah fi le dan tidak peduli de-
ngan URL yang terdapat di dalamnya. Un-
tuk kebutuhan seperti ini, Anda bisa mem-
berikan opsi -B ketika men-download.
Harap diperhatikan bahwa opsi ini seha-
rusnya tidak dikombinasikan dengan opsi
-r yang akan menyebabkan w3mir men-
download secara rekursif. Apabila Anda
melakukannya, apa yang Anda download
tidak akan benar-benar dapat digunakan
sebagai mirror karena tidak ada URL yang
dimanipulasi.
� Menangani javascript. Bagaimana kalau HTML yang ingin di-
download berisikan javascript? W3mir akan
berusaha untuk tidak mengganggu script
tersebut. Namun, w3mir tidak akan dapat
benar-benar bekerja dengan java script
(dalam artian menjalankan javascript).
Dengan demikian, hasil download mungkin
tidak akan persis sama dengan yang tersim-
pan di server.
� Menangani CSS. W3mir dapat bekerja dengan CSS, namun
tidak mendukung sepenuhnya. Artinya, style
yang didefi nisikan dalam halaman HTML
akan di-download apa adanya. Begitupun
dengan fi le CSS eksternal. Yang tidak akan
dilakukan oleh w3mir adalah menganali-
sis dan men-download apa yang terdapat
dalam CSS (apabila ada).
� Menangani PDF. W3mir, seperti sempat disebutkan sebe-
lumnya, dapat pula bekerja dengan fi le
PDF. W3mir dapat meng-extract URL yang
tersimpan di dalam fi le PDF dan dapat men-
download URL tersebut apabila diinginkan.
Hanya, W3mir tidak dapat mengubah URL
di dalam fi le PDF tersebut agar sesuai den-
gan kondisi mirror. Hal ini cukup repot un-
tuk dilakukan dan bukan merupakan fungsi
utama program.
� Menangani CGI. W3mir tidak akan bisa men-download script
CGI apa adanya karena script CGI tersebut
akan dikerjakan dan hasilnyalah yang akan
didapat oleh web server untuk dikirimkan
ke client. Jadi, apa yang bisa Anda dapatkan
hanyalah hasil pemrosesannya saja. Meng-
gunakan W3Mir dengan protokol HTTP
tidak akan membuat kita bisa mendapatkan
semua fi le di web server.
� Bekerja dengan proxy server. Untuk bekerja dengan proxy server, Anda
dapat mempergunakan opsi -P ketika men-
jalankan w3mir. Berikut adalah contohnya:
$ w3mir -P proxy_server:8080 http://www.site.com/
Untuk proxy yang mewajibkan user-
name dan password, Anda dapat menspe-
sifi kasikan username dan password tersebut
di dalam fi le konfi gurasi. Berikut ini adalah
direktif yang digunakan dan contohnya:
HTTP-Proxy-user: proxy-usernameHTTP-Proxy-passwd: proxy-password
Di Internet, terutama soal TI, kita bisa
mendapatkan begitu banyak hal. Apabila
kita tidak memiliki koneksi 24/7, kita tentu
bisa mempergunakan program semacam
w3mir dalam mengambil informasi (teru-
tama secara berkala di kala koneksi sedang
cepat). Hanya, masalah legal juga harus di-
perhatikan. Demikianlah pembahasan kita
tentang w3mir. Selamat mencoba!
Noprianto ([email protected])
IKLAN
INFOLINUX 06/200576
TUTORIAL Berita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
NFS
Apabila Anda bekerja dalam satu
komputer, maka berbagi fi le tidak
akan menjadi isu penting. Namun,
di lingkungan jaringan kecil sampai di
lingkungan kerja besar, berbagi fi le adalah
hal yang penting. Terlepas dari kerugian-
kerugiannya, berbagi fi le juga memiliki
banyak keuntungan. Salah satunya adalah
user kemudian dapat bekerja di worksta-
tion manapun selama diatur untuk dapat
mengakses fi le server. Selain itu, back-up
juga senantiasa akan lebih mudah untuk
dilakukan.
Kita mengenal beberapa cara berbagi
fi le. Dua protokol yang sangat populer
adalah protokol SMB dan NFS. Keduanya
merupakan protokol yang matang dan
terus dikembangkan. SMB populer dikare-
nakan digunakan pada Windows (dengan
lebih dari 90% market share) dan beberapa
sistem operasi lain, sementara NFS populer
karena digunakan pada dunia UNIX. Na-
mun, kedua protokol tersebut sudah bukan
milik Windows lagi atau UNIX lagi. Imple-
mentasi SMB melalui proyek SAMBA di
Linux sudah cukup matang, dan di akhir
tulisan, kita juga akan membahas sedikit
tentang NFS di Windows.
Di artikel kali ini, kita akan membahas
langkah-langkah cepat untuk mengatur fi le
sharing menggunakan NFS. Distro yang
dipergunakan adalah SUSE 9.1, walaupun
tidak akan banyak perbedaan dengan dis-
tro lain. Bagi pengguna yang telah terbiasa
menginstal program di Linux, melakukan
konfi gurasi sederhana dan dapat melaku-
kan mounting partisi, maka konfi gurasi
NFS dapat dilakukan dengan sangat cepat.
Tutorial ini juga hanya akan memanfaat-
kan satu komputer, sehingga komputer
tersebut berfungsi sebagai server dan client
NFS.
Instalasi paketInstalasi paket NFS tidaklah rumit, bahkan
bagi Anda yang melakukan kompilasi dari
source. Paket NFS bukanlah paket dengan
banyak dependency yang menyebalkan.
Namun, sebelum kita melakukan instalasi,
ada baiknya apabila kita memperhatikan
tipe server NFS yang akan kita instal.
Kita mengenal dua implementasi server
NFS di Linux: Kernel space NFS server dan
User space NFS server. Sesuai namanya,
yang pertama akan berjalan dengan peran
kernel dan memiliki sejumlah kelebihan
seperti kecepatan yang lebih tinggi dan pri-
oritas yang lebih tinggi. Yang kedua adalah
aplikasi user space dan juga memiliki kele-
bihan seperti tidak akan mencampuri kerja
kernel. Umumnya, kernel space NFS server
lebih populer. Namun, User space NFS
server juga tak kalah banyak digunakan.
Walau sebenarnya, apapun yang Anda pi-
lih, tidak akan banyak mempengaruhi kon-
fi gurasi untuk berbagi fi lesistem.
Di distro SUSE, paket untuk Kernel
space NFS adalah nfs-utils, sementara pa ket
untuk User space NFS adalah nfs-ser ver.
Memang agak sedikit membingungkan.
Keduanya saling konfl ik, dengan demikian,
Anda harus memilih salah satunya. Bagi
Anda yang menggunakan distro lain, cari-
lah NFS di dalam CD/DVD distro Anda.
NFS telah dipaketkan ke dalam hampir
semua distro Linux. Bagi Anda yang ingin
melakukan kompilasi dari source (kurang
disarankan), Anda bisa men-download
kernel space NFS di http://nfs.sourceforge.
net. User space NFS server bisa di-down-
load di ftp://linux.mathematik.tu-darm-
stadt.de/pub/linux/people/okir.
Dalam tulisan ini, penulis akan mem-
pergunakan User space NFS. Dengan
demikian, paket yang akan penulis instal
adalah nfs-server. Berikut ini adalah perin-
tah untuk instalasi nfs-server:
# yast -i nfs-server
Setelah instalasi selesai, Anda pun siap
untuk mengonfi gurasi fi lesistem yang akan
Anda share.
KonfigurasiPada dasarnya, untuk berbagi fi lesistem
de ngan NFS, fi le yang perlu Anda edit ha-
nyalah /etc/exports. Di SUSE, fi le ini telah
terinstal dengan sendirinya apabila Anda
telah menginstal paket netcfg (yang umum-
nya akan terinstall otomatis). FIle-fi le lain
seperti /etc/hosts.allow dan /etc/hosts.deny
dapat Anda edit untuk meningkatkan ke-
amanan dengan proteksi host.
Setiap entri di /etc/exports menspesi-
fi kasikan volume yang akan dishare dan
bagaimana kita melakukan sharing. Format
setiap entri di /etc/exports cukuplah seder-
hana dengan sintak berikut ini:
<direktori> <mesin1>[(opsi1,opsi2,...,opsin)] [mesin2(opsi1,opsi2,...,opsin) ...]
Sebagai contoh, andaikata kita ingin
membagi /opt kepada host 192.168.0.51
dalam modus read-only, maka berikut ini
adalah entri pada /etc/exports:
/opt 192.168.0.51(ro)
Anda bisa mempergunakan penanda
network/netmask (sebagai contoh: 192.1
68.0.0/255.255.255.0) ataupun * (sebagai
contoh *.infolinux.co.id) untuk membagi
volu me secara lebih fl eksibel untuk jari-
ngan besar.
Setiap opsi, seperti pada rumus umum
sebelumnya, dipisahkan dengan tanda ko-
ma. Berikut ini adalah beberapa opsi yang
Berbagi File Lewat NFSAnda tidak harus selalu berbagi file dalam protokol SMB. Apabila lingkungan kerja Anda adalah UNIX, maka Anda selalu bisa mempergunakan NFS dalam berbagi file. Bahkan, de ngan beberapa pengaturan, Anda pun dapat mempergunakan NFS file sharing di lingku-ngan kerja Windows.
INFOLINUX 06/2005 77
TUTORIALBerita | Ulasan | Adu Software | Utama | Bisnis | Apa Sih Sebenarnya... | Tutorial
www.infolinux.web.id
NFS
mungkin akan sering digunakan:
� rw, melakukan sharing secara read-
write. Kita akan membahas isu ini secara
tersendiri, setelah ini.
� sync, berbagi secara sinkronous. Pada
NFS 2 (saat ini digunakan versi 3 dan
4), ini berarti request tidak akan selesai
sampai semua data telah ditulis ke disk.
Sementara, NFS 3 melengkapi informasi
request dengan status data sehingga cli-
ent dapat melakukan aksi untuk menu-
lis/mengabaikan perubahan sesuai sta-
tus. Saat ini, sync adalah opsi default.
� async, berbagi secara asinkronous. La-
wan dari sync. Aman digunakan untuk
NFS SWAP (swapfi le melalui NFS) dan
fi le-fi le read-only (seperti fi le-fi le yang
disimpan di CDROM).
� root_squash. Apabila user root dari cli-
ent mengakses volume yang dishare de-
ngan opsi ini, maka oleh server akan di-
belokkan menjadi user nobody sehingga
user root dari client tidak menjadi user
root pada volume yang di-share terse-
but. Opsi ini adalah opsi default. Anda
bisa men-disable opsi ini dengan opsi
no_root_squash. Apabila Anda ingin
menerapkan root_squash pada semua
user, maka gunakanlah opsi all_squash.
Dengan demikian, Anda segera bisa
menentukan volume fi lesystem mana saja
yang akan dishare di fi le /etc/exports ini.
Setelah selesai mengonfi gurasi, Anda bisa
segera menjalankan NFS server sehingga
client dapat segera mengakses volume yang
Anda share. Pada distro SUSE, berikan pe-
rintah berikut ini untuk menjalankan NFS
Server:
# rcnfsserver start
Mengakses dari clientClient kini dapat mengakses volume yang
Anda share dengan beberapa cara. Yang
pertama adalah dengan melakukan mount-
ing di command line mempergunakan pro-
gram mount dengan rumus umum seperti
berikut:
# mount -t nfs <server>:<volume> <mount_point>
Sebagai contoh, apabila server adalah
192.168.0.51 dan volume yang di-share
adalah /opt dan kita ingin melakukan
mounting ke /mnt, maka berikut ini adalah
perintah sebenarnya:
# mount -t nfs 192.168.0.51:/opt /mnt/
Dalam melakukan mounting, perhatikan
tanda titik dua yang memisahkan nama host
dan volume yang dishare.
Cara kedua yang bisa dilakukan adalah
dengan menyebutkan volume yang ingin
kita mount di /etc/fstab. Dengan demikian,
kita bisa menikmati volume yang akan ter-
mount otomatis begitu proses booting sele-
sai dilakukan, atau sekadar dapat melaku-
kan proses mounting dengan hanya menye-
butkan mount point-nya saja.
Berikut ini adalah entri dalam /etc/fstab
untuk server, volume dan mount point pada
cara sebelumnya:
192.168.0.51:/opt /mnt nfs defaults
User ID mappingSalah satu guna dari NFS adalah menye-
diakan sebuah server yang berisikan semua
home direktori user, yang bisa diakses dari
manapun dalam suatu jaringan, oleh user
dengan hak akses baca/tulis. Ini adalah
prinsip yang digunakan pada jaringan disk-
less seperti LTSP.
Ketika user di suatu client mengakses
volume yang di-share oleh NFS server, ma-
ka id user tersebut akan dikirimkan ke NFS
server. Apabila id user sama persis dengan id
user di server dan tidak ada opsi all_squash
yang diberikan, maka user tersebut dapat
mengakses semua fi le yang dimiliki sesuai
dengan haknya, seolah-olah user tersebut
mengakses secara lokal.
Masalahnya, kondisi ini tidak selalu
tercapai. Menggunakan /etc/passwd se-
bagai database password yang tidak me-
miliki fi tur untuk replikasi, akan sangat
report untuk selalu menyinkronisasi data-
base password antar-host. Bagi Anda yang
menghadapi kondisi seperti ini, NFS me-
nyediakan beberapa cara untuk melakukan
mapping user id dan group id secara dina-
mis: fi le statis, NIS, dan mempergunakan
program ugidd yang datang bersama paket
nfs-server. Opsi terakhir ini merupakan
opsi yang paling tidak aman karena siapa
saja bisa melakukan query ke client untuk
mendapatkan username yang valid. Apabi-
la Anda harus menggunakan cara ini, maka
Anda bisa mempergunakan opsi map_dae-
mon, dan rujuklah ke dokumentasi /etc/
exports untuk keterangan lebih lanjut.
Lingkungan WindowsNFS adalah teknologi yang lazim digunakan
di dunia UNIX. Namun, teknologi ini tidak
hanya bisa dinikmati oleh pengguna UNIX.
Pengguna Windows pun dapat bertindak
sebagai NFS server atau NFS client berkat
program Microsoft SFU yang disediakan
oleh Microsoft. Program tersebut dapat di-
download di http://www.microsoft.com/win-
dows/sfu/. Dengan memanfaatkan NFS di
Windows, kita, dalam banyak hal bisa me-
manfaatkan Windows seperti halnya server
UNIX.
Hanya, sebelum Anda memutuskan un-
tuk mengubah protokol fi le sharing di ling-
kungan kerja Anda, hitung-hitunglah dulu
apakah menggunakan NFS untuk jaringan
Windows tepat atau tidak. Sebagai contoh,
apabila terdapat 10 komputer dengan kom-
posisi 8 UNIX dan 2 Windows dilayani oleh
2 server UNIX, maka pilihan menggunakan
NFS mungkin baik apabila akan ada kecen-
derungan untuk bermigrasi ke UNIX secara
bertahap. Namun, apabila kecen derungan
OS client adalah Windows, maka menggu-
nakan NFS hanya menambah kerjaan saja.
Protokol SMB akan lebih cocok diterap-
kan.
NFS adalah teknologi yang sangat ber-
guna. Banyak pihak telah merasakan man-
faatnya. Apabila Anda menggunakan LTSP
misalnya, maka NFS berperan sangat besar.
Di lingkungan-lingkungan kerja berbasis
UNIX, NFS adalah kebutuhan sehari-hari.
Selamat mencoba!
Noprianto ([email protected])Situs NFS.