Anda di halaman 1dari 96

MANAJEMEN PAKET UBUNTU LINUX DENGAN REPOSITORY SERVER BERBASIS LIGHTTPD 1.4.

11
Skripsi Untuk memenuhi sebagian persyaratan mencapai derajat Sarjana Teknik

Oleh :

Yusuf Afandi 03018164

PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS AHMAD DAHLAN YOGYAKARTA 2007

PERSETUJUAN MANAJEMEN PAKET UBUNTU LINUX DENGAN REPOSITORY SERVER BERBASIS LIGHTTPD 1.4.11

Yang disusun oleh: Yusuf Afandi 03018164

Kepada: Program Studi Teknik Informatika Fakultas Teknologi Industri Universitas Ahmad Dahlan Yogyakarta

Telah disetujui oleh:

Pembimbing I

Pembimbing II

Drs. Wahyu Pujiyono, M.Kom

Ardiansyah, S.T.

PENGESAHAN SKRIPSI MANAJEMEN PAKET UBUNTU LINUX DENGAN REPOSITORY SERVER BERBASIS LIGHTTPD 1.4.11

Yang dipersiapkan dan disusun oleh: Yusuf Afandi 03018164

Telah dipertahankan di depan dewan penguji pada tanggal 25 Juli 2007 Dan dinyatakan telah memenuhi syarat

Susunan Dewan Penguji: Ketua Penguju I Penguji II Sekretaris : Drs. Wahyu Pujiyono, M.Kom. : Rusydi Umar, S.T., M.T. : Ir. Ardi Pujiyanta, M.T. : Ardiansyah, S.T. _______________ _______________ _______________ _______________

Yogyakarta, 29 Juli 2007

Dekan Fakultas Teknologi Industri Universitas Ahmad Dahlan

Drs. Muchlas, M.T NIP. 131657944

KATA PENGANTAR

Assalamu'alaikum Wr. Wb. Alhamdulillaahi Rabbi al-aalamiin, segala puji bagi Allah, yang telah berkenan memberikan izin hidup untuk berpikir dan menulis program, serta bersyukur atas segala nikmat dan karunia-Nya selama ini. Sebuah kesyukuran atas selesainya skripsi yang berjudul MANAJEMEN PAKET LINUX UBUNTU DENGAN REPOSITORY SERVER BERBASIS LIGHTTPD 1.4.11 sebagai persyaratan akademis untuk memperoleh gelar Sarjana Teknik di perguruan tinggi Universitas Ahmad Dahlan. Tidak lupa sholawat serta salam kepada junjungan Nabi Muhammad SAW yang telah menuntun kita dari masa-masa kegelapan menuju jalan penuh keberkahan. Pada kesempatan yang berbahagia ini Penulis ingin mengucapkan rasa terima kasih kepada pihak-pihak yang telah membantu penulisan laporan tugas akhir ini, baik berupa saran, dukungan referensi, dan lain sebagainya. Untuk itu semuanya Penulis dengan tulus mengucapkan rasa terima kasih yang sebesarbesarnya kepada: 1. Bapak dan Ibu tercinta, atas dukungannya baik moral maupun materi dan segala pengorbanan, kasih sayang serta doa yang tak hentihentinya yang selalu mengiringi kehidupan Penulis. Tak lupa rasa terima kasih juga kepada Mas Bisri, Mbak Rofi', Mas Maghfur dan Mbak Ana yang telah memberikan dorongan dan semangat. 2. Za, terima kasih telah bersedia menerimaku apa adanya, aku harap kita bisa belajar saling mencintai mulai saat ini.

3. Bapak Rusydi Umar, S.T., M.T., selaku Kaprodi Teknik Informatika yang telah memberikan bimbingan dan pengarahan hingga selesainya penyusunan laporan ini. 4. Bapak Drs. Wahyu Pujiyono, M.Kom., selaku Dosen Pembimbing I yang telah memberikan bimbingan dan pengarahan hingga selesainya penyusunan laporan ini. 5. Bapak Ardiansyah, S.T., selaku Dosen Pembimbing II yang telah memberikan bimbingan dan pengarahan hingga selesainya penyusunan laporan ini. 6. Bapak Rusydi Umar, S.T., M.T. selaku Dosen Penguji I dan Ir. Ardi Pujiyanta, M.T. Selaku Dosen Penguji II yang telah menguji dan memberikan pengarahan dalam penyusunan laporan ini. 7. Bapak dan Ibu Dosen Teknik Informatika Universitas Ahmad Dahlan yang telah banyak memberikan ilmu dan pengalamannya. 8. Al, Aku percaya 'Inna ma'a al-'usri yusra', karenanya terima kasih sudah pernah menjadi bagian dalam hidupku, meskipun pada tahapan al-'usri. 9. Teman-temanku, Hendra, Sulis, Darmawan, Novi, Arif, Galih, Eka, Fajar, Tedi, Fajar 'Parto', Samsul, Dian, Nani, Nana, Shinta, Eliyana, Doni, Dian 'Sinyo', Sis, Irfan dan semua angkatan 2003, terima kasih atas kebersamaan dan sharing pengetahuan kita selama ini, baaraka Allahu fiikum. 10. Teman-temanku di Kelompok Study Linux (KSL) dan Open Source Research Group (OSRG), Mas Doedy, Mas Lalu, Mas Ambang, Mas

Neyman, Hendrawan (specially for OOP in PHP), Faris, Suyoko, Tauhid, Piyan, Arif, Lukman, Tyo, Taufiq dan yang lainnya, terima kasih banyak atas sharing pengetahuannya tentang Open Source dan Linux selama ini, keep your Open Source spirit. 11. Buat Saifuddin, Arifin, Anis, Lutfi, 'Bos' Azis, Kukuh, Tata, Mas Wien, Mas nDung, Mas Chidzir dan teman-teman yang pernah menjadi teman satu kostku makasih atas kebersamaannya selama hidup di Jogja. 12. Buat semua rekan-rekan yang tidak dapat kami sebutkan satu persatu karena begitu banyaknya, terima kasih atas segalanya dan atas kebersamaan kita selama ini. 13. Kepada pihak-pihak yang belum Penulis sebutkan di atas, bukan berarti Penulis melupakan dan mengabaikan anda semua, Penulis mengucapkan terima kasih yang tak terhingga. Semoga Allah swt membalas segala kebaikan dan jasa-jasa mereka yang telah membantu Penulis dalam penyusunan laporan tugas akhir ini. Penulis berharap laporan ini dapat bermanfaat bagi pengembangan ilmu pengetahuan khususnya Teknik Informatika. Akhir kata, sebagai manusia biasa yang penuh dengan kekurangan dan jauh dari sempurna sehingga banyak kekurangan dalam penyusunan laporan tugas akhir ini, maka Penulis mengharapkan keikhlasannya untuk memberikan kritik dan saran yang bersifat membangun dalam menjadikan laporan ini lebih baik. Hanya Allah Maha Segalanya, kita hanya dapat berikhtiar dan berusaha semaksimal mungkin dan niscaya Allah akan memberikan yang terbaik bagi umat-NYA.

Wassalamu'alaikum Wr. Wb

Yogyakarta, 27 Juli 2007 Penulis

DAFTAR ISI

JUDUL ............................................................................................................. i HALAMAN PERSETUJUAN......................................................................... ii KATA PENGANTAR....................................................................................... iv MOTTO ........................................................................................................... viii PERSEMBAHAN ........................................................................................... ix DAFTAR ISI .................................................................................................... x DAFTAR GAMBAR ....................................................................................... xiii DAFTAR TABEL............................................................................................. xiv DAFTAR LISTING ......................................................................................... xv ABSTRAK ...................................................................................................... xix BAB I. PENDAHULUAN ............................................................................... 1 A. Latar Belakang Masalah....................................................................... 1 B. Identifikasi Masalah ............................................................................. 5 C. Batasan Masalah .................................................................................. 8 D. Rumusan Masalah ................................................................................ 8 E. Tujuan Penelitian.................................................................................. 8 F. Manfaat Penelitian ............................................................................... 8 BAB II. LANDASAN TEORI ......................................................................... 9 A. Penelitian Terdahulu............................................................................. 9 B. Sistem Operasi .................................................................................... 11 C. GNU/Linux ......................................................................................... 14 D. Ubuntu ................................................................................................. 18

E. Jaringan Komputer .............................................................................. 19 1. Pembagian Jaringan Komputer ................................................... 20 2. Topologi Jaringan 3. TCP/IP 4. Struktur IP Address 5. Subnetting 22 23 24 29

6. DNS (Domain Name System) ...................................................... 29 F. Repository Server ................................................................................ 32 G. Lighttpd ............................................................................................... 34 BAB III. METODE PENELITIAN.................................................................. 35 A. Subjek Penelitian 35 B. Alat Penelitian 35 35 35 36

1. Hardware Server 2. Hardware Client 3. Software

C. Metode Pengumpulan Data .................................................................. 36 1. Studi Literatur 2. Wawancara 36 36

D. Perancangan Jaringan........................................................................... 37 E. Pengujian Sistem 38 1. White Box Testing 2. Black Box Testing 3. Alfa Testing 38 38 38

BAB IV. HASIL PENELITIAN DAN PEMBAHASAN................................. 39

A. Design Sistem ...................................................................................... 39 B. Topologi Jaringan................................................................................. 40 C. Server ................................................................................................... 42 D. Domain Name Server ........................................................................... 43 E. Lighttpd ................................................................................................ 47 F. Struktur Direktori dan File ................................................................... 48 G. Database ............................................................................................... 50 H. Implementasi ........................................................................................ 70 I. Hasil Pengujian .................................................................................... 85 1. Black Box Test.............................................................................85 2. Alfa Test.......................................................................................87 BAB V. KESIMPULAN DAN SARAN .......................................................... 89 A. Kesimpulan .......................................................................................... 89 B. Saran..................................................................................................... 89 DAFTAR PUSTAKA LAMPIRAN

DAFTAR GAMBAR

Gambar 3.1. IP Address dalam bilangan desimal dan binner .......................... 31 Gambar 3.2. Struktur IP Address kelas A......................................................... 33 Gambar 3.3. Struktur IP Address kelas B......................................................... 33 Gambar 3.4. Struktur IP Address kelas C......................................................... 34 Gambar 3.5. Sistem kerja repository server ..................................................... 28 Gambar 4.1. Design dasar sistem repository server......................................... 39 Gambar 4.2. Jaringan peer to peer dalam penelitian ....................................... 40 Gambar 4.3. Jaringan star dalam penelitian..................................................... 41 Gambar 4.4. Jaringan public dalam penelitian................................................. 41 Gambar 4.5. Struktur direktori repository server ............................................. 49 Gambar 4.6. Relasi tabel file database ............................................................ 52 Gambar 4.7. Flowchart untuk manajemen file database ................................. 60 Gambar 4.8. Struktur hirarki dependency paket Xmms ................................... 70 Gambar 4.9. Synaptic Package Manager ........................................................ 78 Gambar 4.10. Penambahan APT line repository server ................................... 79 Gambar 4.11. Repository baru yang ditambahkan pada APT line ................... 80 Gambar 4.12. Paket dependency yang ditandai untuk diinstall bersamaan dengan instalasi ...................................................... 82 Gambar 4.13. Grafik hasil pengujian black box............................................... 86 Gambar 4.14. Grafik hasil pengujian alfa ........................................................ 88

DAFTAR TABEL

Tabel 2.1. Perbedaan installer dan sistem manajemen paket ........................... 33 Tabel 4.1. Daftar pertanyaan pengujian black box........................................... 81 Tabel 4.2. Daftar user penguji black box.......................................................... 82 Tabel 4.3. Hasil pengujian black box ............................................................... 82 Tabel 4.4. Daftar pertanyaan pengujian alfa .................................................... 83 Tabel 4.5. Daftar user penguji alfa................................................................... 83 Tabel 4.6. Hasil pengujian alfa ........................................................................ 84

DAFTAR LISTING

Listing 4.1. Isi file /etc/fstab ............................................................................ 43 Listing 4.2. Isi file /usr/local/var/cache/named/download.uad.ac.id untuk pembuatan zone pada jaringan privat ......................................... 44 Listing 4.3. Isi file /usr/local/var/cache/named/1.168.192 untuk reverse zone pada jaringan privat ..................................................................... 44 Listing 4.4. Isi file /etc/bind/named.conf pada jaringan privat ....................... 45 Listing 4.5. Isi file /usr/local/var/cache/named/download.uad.ac.id................ 45 Listing 4.6. Isi file /usr/local/var/cache/named/1.168.192 ............................... 46 Listing 4.7. Isi file /etc/bind/named.conf ......................................................... 47 Listing 4.8. Isi file /etc/bind/named.conf.options ............................................ 47 Listing 4.9. Isi file /etc/lighttpd/lighttpd.conf .................................................. 48 Listing 4.10. Hasil keluaran perintah dpkg-deb -I pada file zope3_3.2.11ubuntu1_i386.deb ....................................................................... 51 Listing 4.11. Isi file scanpaket.pl untuk memasukkan informasi paket ke file database.................................................................................. 59 Listing 4.12. Blok penggunaan modul untuk keperluan scripting ................... 60 Listing 4.13. Blok keterangan versi dan pemakaian library ............................ 61 Listing 4.14. Blok detail paket ......................................................................... 61 Listing 4.15. Blok data paket ........................................................................... 62 Listing 4.16. Blok opsi ..................................................................................... 62 Listing 4.17. Blok versi dan pemakaian ........................................................... 62 Listing 4.18. Blok penanganan argumen.......................................................... 63

Listing 4.19. Blok untuk membandingkan paket ............................................. 63 Listing 4.20. Blok penggunaan IO::Handle untuk mendapatkan hirarki direktori ....................................................................................... 64 Listing 4.21. Blok penanganan informasi paket............................................... 66 Listing 4.22. Blok fungsi penanganan error .................................................... 66 Listing 4.23. Blok penanganan file override.................................................... 67 Listing 4.24. Blok yang menangani penulisan data paket ke file database ..... 68 Listing 4.25. Blok penanganan status penulisan paket pada file database ...... 69 Listing 4.26. Penggunaan file scanpaket.pl...................................................... 69 Listing 4.27. Informasi paket xmms pada file Packages.gz ............................. 71 Listing 4.28. Isi file evaluasipaket.pl ............................................................... 73 Listing 4.29. Hasil keluaran penggunaan file evaluasipaket.pl........................ 73 Listing 4.30. Informasi libglib1.2 pada file database ....................................... 74 Listing 4.31. Hasil evaluasi paket libc6 ........................................................... 75 Listing 4.32. Informasi paket libgtk1.2 dalam file database ........................... 75 Listing 4.33. Evaluasi paket dependency libgtk1.2 .......................................... 76 Listing 4.34. Informasi paket libgtk1.2-common pada file database ............... 77 Listing 4.35. Informasi paket libmikmod2 pada file database ........................ 77

MOTTO

Iqra' bismi Rabbika al-Ladzi Khalaq. (Al-'Alaq:1)

Dadi whong lanang iku jangkahe amba, mangkane njangkaha nganti pucuking donya. Nek wis tekan pucuking donya, njajala njangkah ngancik langit, supaya weruh donya saka langit. Nek wis tekan langit, njangkaha maneh neng langit sak duwure' langit, nganti tekan pucuking langit. Njajal awak mendah matiyo!

Programming just like 'klenix', no more no less!

Open Source spirit? Always on the way...

BAB I PENDAHULUAN

A. LATAR BELAKANG MASALAH Salah satu metode pengembangan software adalah Object Oriented Programming, yaitu metode pengembangan dengan pendekatan object. Sebuah object dibangun dengan aturan dan perilaku yang didefinisikan dalam bentuk fungsi dan variabel. Definisi fungsi dan variabel menentukan perilaku dan sifat dari object yang dibuat. Sebuah fungsi akan berperilaku sesuai yang telah didefinisikan, sehingga dalam pemrograman berorientasi object suatu kode akan terbangun dengan enkapsulasi, atau juga yang dikenal dengan data hiding. Intinya, data-data yang ada dalam object hanya bisa diakses dari dalam object sendiri, agar tidak terjadi kebocoran perubahan data dari luar. Akses data dari luar harus melewati suatu prosedur atau fungsi. Fungsi ini berlaku seperti front end atau interface dari object bersangkutan. Interface akan melakukan akses terhadap data dalam object, tanpa harus mempengaruhi business logic dari object bersangkutan. Hasilnya, suatu perubahan dalam business logic bisa dengan mudah dilakukan, misalnya untuk meningkatkan performance, penambahan feature, perubahan algoritma tanpa harus merubah interface, sehingga harus mempengaruhi project secara keseluruhan. Keuntungan penggunaan pendekatan object ini adalah code reusability. Penulisan kode tidak perlu diulang beberapa kali untuk menghasilkan suatu perilaku maupun proses yang sama. Pengembangan software bisa dilakukan dengan cepat tanpa harus dibangun dari awal. Object

yang telah dibuat oleh programmer lain bisa digunakan secara instan tanpa harus mengetahui bagaimana object dibangun. Programmer hanya perlu mengetahui bagaimana object digunakan dan bagaimana object menghasilkan output sesuai dengan yang diinginkan. Contohnya dalam kasus pengembangan mp3 player, programmer tidak harus mengetahui seperti apa bentuk coder dan decoder format audio mp3. Programmer tinggal membangun interface, sementara untuk melakukan decode file mp3 menjadi sinyal analog cukup dilakukan oleh object yang telah dibuat oleh programmer lain, sehingga fokus pengembangan bisa diarahkan pada hal-hal lain yang lebih penting. Banyak pendekatan yang digunakan oleh programmer dalam memperlakukan object dalam pengembangan software. Beberapa pengembang software ada yamg memilih mengintegrasikan semua object dalam satu bundel aplikasi sehingga object yang dibuat hanya bisa digunakan oleh aplikasi yang dibangun. Contoh pengembangan seperti ini dilakukan oleh perusahaan Nulsoft dengan produk Winamp. Semua object yang dibangun untuk winamp, hanya khusus digunakan oleh Winamp, tidak untuk aplikasi lain. Hal ini berbeda dengan pendekatan yang dilakukan oleh para pengembang Xine multimedia player. Para pengembang memilih untuk memisahkan object interface (Xine-ui) dan object engine (Libxine-main). Object engine Xine bisa dikembangkan lebih jauh dengan interface yang berbeda oleh programmer lain diluar pengembang Xine. Programmer baru ini hanya perlu tahu bagaimana mengakses object dalam engine Libxine-main untuk

mengeksplorasi kemampuan dalam object bersangkutan. Dua pendekatan di atas memiliki keuntungan dan kekurangan

masing-masing. Pendekatan pertama, software yang dihasilkan tidak memiliki ketergantungan dari luar, sebab semua object yang dibangun dikhususkan untuk software tersebut. Hal ini akan memudahkan end user untuk melakukan instalasi software tanpa harus dipusingkan dengan ketergantungan software lain. Namun pendekatan ini menghasilkan software dengan ukuran besar. Selain itu, resource komputer yang dipakai juga banyak, sebab satu object untuk satu software. Hal ini tidak terjadi pada pengembangan dengan pendekatan kedua, sebab satu object bisa dipakai bersama-sama.

Kekurangannya, pendekatan kedua ini menyulitkan end user yang akan memakai, sebab selain Xine sendiri, user harus memiliki Libxine-main dalam sistemnya. Dalam system Linux, Libxine-main ini disebut dependency-nya Xine. Linux sebagai sistem operasi yang dilahirkan dari komunitas open source tidak bisa dihindarkan dari pengembangan model kedua, sehingga dalam instalasi software, tidak lepas dari masalah dependency. Hal ini disebabkan pendekatan pengembangan software yang dilakukan oleh komunitas adalah model pengembangan berbagi resource bersama. Linux mengenal shared object untuk mendefinisikan object yang bisa dipakai bersama-sama oleh banyak software. Shared object ini ditempatkan di /lib, atau /usr/lib, atau /usr/local/lib. Ubuntu, sebagai distribusi Linux paling populer saat ini, juga tidak bisa lepas dari masalah dependency. Ubuntu adalah distribusi Linux dengan orientasi pemakaian desktop, sehingga secara default hanya menyertakan aplikasi seperti Open Office, browser Mozilla Firefox, GIMP, Evolution

mail client, Totem movie player dan beberapa software lain untuk kebutuhan desktop. Aplikasi yang dibundel sudah mencukupi untuk kebanyakan pengguna komputer. Ubuntu secara default tidak mengemas paket-paket proprietary yang tidak boleh disertakan dalam distro Ubuntu. Beberapa paket software seperti, nVidia dan ATI driver, proprietary codec audio-video, plugins web browser (Flash, Adobe Acrobat, Java), tidak disertakan dalam Ubuntu, mengingat Ubuntu dikembangkan dengan dasar dan filosofi kebebasan dan free software, sehingga semua software yang disertakan harus berlisensi General Public Lisence (GPL). Filosofi ini membuat paket yang disertakan dalam CD Ubuntu sangat terbatas. Ubuntu tidak menyertakan paket-paket proprietary seperti codec multimedia, padahal kebutuhan multimedia pengguna dalam sebuah PC adalah suatu keharusan. Keterbatasan dalam memutar video berformat VCD dan DVD, atau audio berformat MP3, WMV dan lain-lain harus diatasi dengan instalasi paket-paket yang memungkinkan untuk memutar format-format tersebut, seperti Xine, MPlayer, XMMS dan lain-lain. Namun, instalasi paket ini lagi-lagi terbentur dengan masalah dependency. Instalasi pada Ubuntu, MPlayer memiliki 9 file dependency yang harus diinstall dan Xine memiliki 7 file dependency. Berarti untuk instalasi satu paket MPlayer, harus melakukan instalasi 9 paket dependency dan 7 paket dependency untuk instalasi Xine. Sampai saat penelitian ini dilakukan, Ubuntu telah mengeluarkan beberapa kali rilis, yaitu 5.04, 5.10, 6.06, 6.10 dan 7.04. Saat ini sedang dalam pengembangan untuk rilis 7.10 yang masih dalam bentuk beta. Setiap

rilis Ubuntu memiliki perbedaan dalam struktur direktori, terutama yang berhubungan dengan struktur direktori untuk paket. Kebijakan yang berbeda terhadap struktur direktori ini menyebabkan ketidakcocokan paket untuk suatu rilis dengan rilis yang lain. Instalasi paket pada Ubuntu bisa dilakukan dengan dua cara. Pertama, instalasi dari source. Instalasi berasal dari source dalam bentuk tarbal untuk dikompilasi guna mendapatkan binary yang diinginkan. Binary yang dihasilkan diinstall dalam sistem, disesuaikan dengan bentuk binary tersebut. Kedua, instalasi dari binary dalam bentuk file berekstensi .deb. Instalasi dengan cara ini lebih sederhana, sebab user tidak perlu mengkompilasi dari source yang membutuhkan waktu yang lama. File binary diekstrak untuk diinstall pada direktori yang telah diatur.

B. IDENTIFIKASI MASALAH Berdasarkan latar belakang masalah yang telah diuraikan di atas, maka didapatkan permasalahan sebagaimana berikut: 1. Keterbatasan Ubuntu dalam bundel paket aplikasi yang disertakan, dikarenakan orientasi Ubuntu pada pemakaian desktop. Aplikasi yang disertakan terbatas pada aplikasi office, pengolah gambar, movie player, web browser, mail client dan beberapa tool kecil lain yang membantu pemakaian desktop. Pengguna dengan profesi khusus, seperti

programmer atau arsitek tidak menemukan aplikasi yang dibutuhkan, sehingga harus menginstall sendiri paket yang tersebut. 2. Keterbatasan Ubuntu dalam memutar format file multimedia populer

dikarenakan sifatnya yang proprietary, sehingga tidak disertakan secara default. Komitmen Ubuntu untuk menjadi sistem operasi yang free menjadi sebab tidak tersedianya codec multimedia proprietary. 3. Sulitnya manajemen paket pada sistem Ubuntu, terutama untuk paket dengan dependency. Kesulitan bertambah jika dependency juga memiliki dependency, sehingga struktur paket dengan dependency membentuk struktur hirarki bercabang yang sangat dalam. Instalasi paket harus dimulai dari dependency terbawah satu persatu sampai pada puncak hirarki, yaitu paket itu sendiri. 4. Sulitnya mencari dependency untuk setiap paket, karena model pengembangan software open source berorientasi pada pemakaian resource milik pihak lain. Pengguna harus download dan install satu persatu dependency, sampai tidak ditemukan dependency. 5. Ubuntu memiliki kebijakan berbeda terhadap struktur file system untuk paket pada setiap rilis. Paket untuk rilis 6.06 belum tentu bekerja dengan baik pada rilis 7.04. Demikian juga sebaliknya, paket untuk rilis 7.04 belum tentu bekerja dengan baik pada rilis 6.06. 6. Pilihan instalasi paket dari source dan binary (dengan extensi .deb) tetap menyulitkan end user, sebab kedua pilihan sama-sama sulit. Pengguna harus tetap menyediakan dependency untuk paket yang akan diinstall.

C. BATASAN MASALAH

Berdasarkan latar belakang masalah dan identifikasi masalah, agar penelitian ini dapat mencapai kinerja yang maksimal maka permasalahan ini dibatasi pada manajemen paket binary (file dengan ekstensi .deb) pada Ubuntu 7.04.

D. RUMUSAN MASALAH Berdasarkan batasan masalah maka dapat diambil suatu perumusan masalah, yaitu bagaimana mengembangkan manajemen paket terintegrasi pada distribusi Linux Ubuntu 7.04.

E. TUJUAN PENELITIAN Adapun tujuan dari penelitian ini adalah sebagai berikut: 1. Merancang sistem berbasis client-server untuk melakukan manajemen paket pada sistem Ubuntu 7.04. 2. Mengimplementasikan hasil rancangan tersebut menjadi sebuah sistem berbasis client server, baik pada jaringan internet dan LAN.

F. MANFAAT PENELITIAN Berdasarkan tujuan tersebut di atas, maka kegunaan hasil penelitian yang dilakukan ini diharapkan dapat memberikan manfaat kepada : 1. Pihak Peneliti a) Menjadi sebuah studi kasus bagi peneliti yang dapat menambah pengetahuan dan pengalaman yang berharga. b) Menambah pemahaman tentang struktur kerja sistem operasi,

khususnya dalam Linux. 2. Akademisi Penulisan ini akan menambah kepustakaan di bidang ilmu sistem operasi, terutama untuk bidang sistem operasi Linux. 3. Departemen IT Perusahaan, Perguruan Tinggi dan Organisasi Lain Implementasi penelitian pada organisasi bersangkutan bisa dijadikan sebagai support system untuk melakukan migrasi dari sistem operasi proprietary ke sistem operasi Linux Ubuntu yang bersifat free. 4. Bagi Developer Distribusi Linux Penelitian bisa dijadikan sebagai support system bagi distribusi Linux yang dikembangkan, dengan penyesuaian terhadap distribusi yang dikembangkan. 5. Pengguna Linux Penelitian ini memberikan kemudahan pengguna dalam instalasi paket sistem operasi Linux Ubuntu.

BAB II LANDASAN TEORI

A. PENELITIAN TERDAHULU Studi ini didasarkan pada pengembangan yang dilakukan oleh layanan Click N Run (CNR) diberikan oleh distribusi Linux komersial Linspire. Layanan ini mengizinkan pengguna untuk melakukan instalasi paket dari sebuah server paket yang disediakan oleh pihak Linspire. Pengguna tidak perlu kesulitan memikirkan dependency setiap kali memakai layanan ini. Pengguna dipungut biaya $30 setiap tahunnya untuk mengakses layanan ini. Pengguna juga bisa melakukan update software terhadap sistem dalam PC mereka dengan mudah. Pemberitahuan update diberikan dengan memberikan pemberitahuan kepada user paket-paket apa yang telah diperbarui. Layanan yang sama diberikan Red Hat Enterprise Linux (RHEL), yang memberikan support kemersil kepada pelanggannya. RHEL

mengkhususkan pada support update paket yang telah mereka bundel bersama dengan CD RHEL. Kemudahan update ini bertujuan untuk mempercepat penambalan lubang keamanan yang ditemukan oleh komunitas di internet. Fokus keamanan menjadi perhatian RHEL mengingat distro komersil ini memiliki segmen pada pasar server enterprise. Dua pengembangan layanan sebagaimana yang telah disebutkan sebelumnya berjalan pada jaringan internet. Pemakaian di Indonesia, dengan asumsi rata-rata bandwidth 64 kbps, menghasilkan kecepatan download maksimal rata-rata 16 kbps. Instalasi paket dengan ukuran 1 MB, dengan

asumsi efisiensi 75%, membutuhkan waktu seperti perhitungan berikut: 1024/(16.75%) = 85.333 detik Berdasarkan asumsi setiap paket memiliki ukuran 2 MB, dengan ratarata 4 dependency yang memiliki ukuran 1 MB, didapatkan hitungan waktu sebagai berikut: Ukuran total : 2+1+1+1+1 = 6 MB Waktu : (1024.6)/(16.75%) = 512 detik = 8,533 menit Perhitungan diatas menghasilkan rata-rata waktu 512 detik atau setara dengan 8.533 menit untuk tiap paket. Waktu yang dibutuhkan semakin besar jika pemakaian bandwidth dipakai bersama-sama, sebab kecepatan download menjadi turun. Implementasi penelitian ini akan menghasilkan dua hal yang tidak didapatkan dari dua layanan yang telah dikembangkan sebelumnya: 1. Biaya. Implementasi penelitian ini gratis, sebab hampir semua paket yang dikembangkan untuk Ubuntu disediakan gratis oleh pihak Canonical Ltd. 2. Kecepatan. Implementasi penelitian ini pada jaringan lokal yang memiliki kecepatan transfer hingga data 100 mbps pada kartu ethernet biasa dan 1000 mbps pada gigabyte ethernet menghasilkan efisiensi waktu yang besar.

B. SISTEM OPERASI

Sistem operasi merupakan penghubung antara pengguna komputer dengan perangkat keras komputer. Sebelum ada sistem operasi, komputer digunakan dengan menggunakan sinyal analog dan sinyal digital. Menurut Andrew Tanenbaum pengertian sistem operasi ialah pengelola seluruh sumber daya yang terdapat pada sistem komputer dan menyediakan sekumpulan layanan (system calls) ke pemakai sehingga memudahkan dan menyamankan penggunaan serta pemanfaatan sumber-daya sistem komputer. Sistem operasi mengatur pengguna mana yang dapat mengakses suatu sumber-daya untuk menghindari konik yang terjadi pada saat pengguna menggunakan sumber daya yang sama. Sistem operasi juga sering disebut resource allocator. Satu lagi fungsi penting sistem operasi ialah sebagai program pengendali yang bertujuan untuk menghindari kekeliruan (error) dan penggunaan komputer yang tidak perlu. Pada awalnya, sistem komputer digunakan dari depan konsol. Perangkat lunak seperti assembler, loader, linker dan compiler meningkatkan kenyamanan dari sistem pemrograman, tapi juga memerlukan waktu set up yang banyak. Untuk mengurangi waktu set up tersebut, digunakan jasa operator dan menggabungkan tugas-tugas yang sama (sistem batch). Sistem batch mengizinkan pengurutan tugas secara otomatis dengan menggunakan sistem operasi yang resident dan memberikan peningkatan yang cukup besar dalam utilisasi komputer. Komputer tidak perlu lagi menunggu operasi oleh pengguna. Tapi utilisasi CPU tetap saja rendah. Hal ini dikarenakan lambatnya kecepatan alat-alat untuk I/O relatif terhadap kecepatan CPU. Sistem operasi telah berkembang selama lebih dari 40 tahun dengan

dua tujuan utama. Pertama, sistem operasi mencoba mengatur aktivitasaktivitas komputasi untuk memastikan pendayagunaan yang baik dari sistem komputasi tersebut. Kedua, menyediakan lingkungan yang nyaman untuk pengembangan dan jalankan dari program. Komputer Personal merupakan mikrokomputer yang dianggap lebih kecil dan lebih murah dibandingkan komputer mainframe. Sistem operasi untuk komputer-komputer seperti ini diuntungkan oleh pengembangan sistem operasi untuk komputer mainframe dalam beberapa hal. Namun, semenjak penggunaan komputer untuk keperluan pribadi, maka utilisasi CPU tidak lagi menjadi perhatian utama. Karena itu, beberapa desain untuk komputer mainframe tidak cocok untuk sistem yang lebih kecil. Sistem parallel mempunyai lebih dari satu CPU yang mempunyai hubungan yang erat; CPUCPU tersebut berbagi bus komputer, dan kadang-kadang berbagi memori dan perangkat yang lainnya. Sistem seperti itu dapat meningkatkan throughput dan reliabilititas. Pengaruh dari internet dan World Wide Web baru-baru ini telah mendorong pengembangan sistem operasi modern yang menyertakan web browser serta perangkat lunak jaringan dan komunikasi sebagai satu kesatuan. Sistem operasi harus memastikan operasi yang benar dari sistem komputer. Untuk mencegah pengguna program mengganggu operasi yang berjalan dalam sistem, perangkat keras mempunyai dua mode: mode pengguna dan mode monitor. Beberapa perintah (seperti perintah I/O dan perintah halt) adalah perintah khusus, dan hanya dapat dijalankan dalam mode monitor. Memori juga harus dilindungi dari modikasi oleh pengguna. Timer mencegah

terjadinya pengulangan secara terus menerus (innite loop). Hal-hal tersebut (dual mode, perintah khusus, pengaman memori, timer interrupt) adalah blok bangunan dasar yang digunakan oleh sistem operasi untuk mencapai operasi yang sesuai. Sistem operasi menyediakan banyak pelayanan. Layanan di tingkat terendah, system calls mengizinkan program yang sedang berjalan untuk membuat permintaan secara langsung dari sistem operasi, sedangkan di tingkat tertinggi, command interpreter atau shell menyediakan mekanisme agar pengguna dapat membuat permintaan tanpa menulis program. Command dapat muncul dari bekas sewaktu jalankan batch-mode, atau secara langsung dari terminal ketika dalam mode interactive atau time-shared. Program sistem disediakan untuk memenuhi kebanyakan dari permintaan pengguna. Tipe dari permintaan beragam sesuai dengan levelnya. Level system call harus menyediakan fungsi dasar, seperti kontrol proses serta manipulasi alat dan bekas. Permintaan dengan level yang lebih tinggi (command interpreter atau program sistem) diterjemahkan ke dalam urutan system call. Perancangan dari suatu sistem operasi yang baru merupakan tugas yang utama. Sangat penting bahwa tujuan dari sistem sudah terdenisi dengan baik sebelum memulai perancangan. Tipe dari sistem yang diinginkan adalah landasan dalam memilih beragam algoritma dan strategi yang akan digunakan. Karena besarnya sistem operasi, maka modularitas adalah hal yang penting. System operasi modern membuat kernel dengan sistem modular, sehingga pengembangan bisa dilakukan dengan cepat. Kebutuhan akan suatu modul juga bisa ditambahkan dengan mudah.

C. GNU/LINUX GNU/Linux adalah sistem operasi seperti Unix, yang merupakan implementasi independen dari POSIX, meliputi true multitasking, virtual memory, shared libraries, demand-loading, proper memory management, dan multiuser. Seperti layaknya Unix, Linux mendukung banyak software mulai dari TeX, X Window, GNU C/C++ sampai ke TCP/IP. GNU/Linux disebarkan secara luas dengan gratis di bawah lisensi GNU General Public License (GPL), yang berarti juga source code Linux tersedia. Saat ini Linux masih terus dikembangkan oleh kelompok-kelompok relawan, yang banyak dijumpai di internet, tukar-menukar kode, melaporkan bug, dan membenahi segala masalah yang ada. Setiap orang yang tertarik dipersilahkan untuk bergabung dalam pengembangan GNU/Linux. Kernel Linux pertama yang dipublikasikan adalah versi 0.01, pada tanggal 14 Maret, 1991. Sistem berkas yang didukung hanya sistem berkas Minix - kernel pertama yang dibuat berdasarkan kerangka Minix. Tetapi, kernel tersebut sudah mengimplementasi proses UNIX secara tepat. Tanggal 14 Maret, 1994, versi yang merupakan tonggak sejarah Linux yaitu versi 1.0 keluar. Rilis ini adalah kulminasi dari tiga tahun perkembangan yang cepat dari kernel Linux. Fitur baru terbesar yang disediakan adalah jaringan: 1.0 mampu mendukung protokol standar jaringan TCP/IP. Kernel 1.0 juga memiliki sistem berkas yang lebih baik tanpa batasan-batasan sistem berkas Minix. Sejumlah dukungan perangkat keras ekstra juga dimasukkan ke dalam rilis ini. Dukungan perangkat keras telah berkembang termasuk di antaranya oppy-disk, CD-ROM, sound card, berbagai mouse, dan keyboard

internasional. Dukungan buat modul kernel yang dynamically loadable dan unloadable juga diberikan. Satu tahun setelah dirilis versi 1.0, kernel 1.2 keluar. Kernel versi 1.2 mendukung variasi perangkat keras yang lebih luas. Pengembang telah memperbaharui networking stack untuk menyediakan support bagi protokol IPX, dan membuat implementasi IP lebih komplit dengan memberikan fungsi accounting dan rewalling. Kernel 1.2 juga merupakan kernel Linux terakhir yang PC-only. Konsentrasi lebih diberikan pada dukungan perangkat keras dan memperbanyak implementasi lengkap pada fungsi-fungsi yang ada. Akhirnya pada bulan Juni 1996, Linux 2.0 dirilis. Versi 2.0 memiliki dua kemampuan baru yang penting, yaitu: dukungan terhadap multiple architectures dan multiprocessor architectures. Kode untuk manajemen memori diperbaiki sehingga performa sistem berkas dan memori virtual meningkat. Untuk pertama kalinya, le system caching dikembangkan ke networked le systems, writable memory mapped regions juga sudah didukung. Kernel 2.0 sudah memberikan performa TCP/IP yang lebih baik, ditambah dengan sejumlah protokol jaringan baru. Kemampuan untuk memakai remote Netware dan SMB (Microsoft LAN Manager) network volumes juga telah ditambahkan pada versi terbaru ini. Tambahan lain adalah dukungan internal kernel threads, penanganan dependencies antara modulmodul loadable, dan loading otomatis modul berdasarkan permintaan (on demand). Kongurasi dinamis dari kernel pada run time telah diperbaiki melalui kongurasi interface yang baru dan standar.

Dalam banyak hal, kernel Linux merupakan inti dari proyek Linux, tetapi komponen lainlah yang membentuk secara komplit sistem operasi Linux. Kernel Linux terdiri dari kode-kode yang dibuat khusus untuk proyek Linux, kebanyakan perangkat lunak pendukungnya tidak eksklusif terhadap Linux, melainkan biasa dipakai dalam beberapa sistem operasi yang mirip UNIX. Contohnya, sistem operasi BSD dari Berkeley, X Window System dari MIT, dan proyek GNU dari Free Software Foundation. Pembagian (sharing) alat-alat telah bekerja dalam dua arah. Sistem library utama Linux awalnya dimulai oleh proyek GNU, tetapi

perkembangan library diperbaiki melalui kerjasama dari komunitas Linux terutama pada pengalamatan, ketidakesienan, dan bug. Komponen lain seperti GNU C Compiler, gcc, kualitasnya sudah cukup tinggi untuk dipakai langsung dalam Linux. Alat-alat administrasi network di bawah Linux berasal dari kode yang dikembangkan untuk 4.3 BSD, tetapi BSD yang lebih baru, salah satunya FreeBSD, sebaliknya meminjam kode dari Linux, contohnya adalah library matematika Intel oating-point-emulation. Sistem Linux secara keseluruhan diawasi oleh network yang terdiri dari para pengembang melalui internet, dengan grup kecil atau individu yang memiliki tanggung jawab untuk menjaga integritas dari komponen-komponen khusus. Dokumen File System Hierarchy Standard juga dijaga oleh komunitas Linux untuk memelihara kompatibilitas ke seluruh komponen sistem yang berbeda-beda. Aturan ini menentukan rancangan keseluruhan dari sistem berkas Linux yang standar. Instalasi sistem dilakukan dengan mengambil revisi terakhir dari

komponen sistem yang diperlukan melalui situs ftp lalu dicompile. Pada awal keberadaan Linux, operasi seperti di atas persis seperti yang dilaksanakan oleh pengguna Linux. Namun, dengan semakin berkembangnya Linux, berbagai individu dan kelompok berusaha membuat pekerjaan tersebut lebih mudah dengan cara menyediakan sebuah set paket yang standar dan sudah dicompile terlebih dahulu supaya dapat diinstall secara mudah. Koleksi atau distribusi ini, mengandung lebih dari sistem Linux dasar. Mereka mengandung instalasi sistem ekstra dan utilitas manajemen, juga paket yang sudah dicompile dan siap diinstall dari banyak alat UNIX yang biasa, seperti news servers, web browsers, text-processing dan editor, termasuk juga games. Distribusi SLS (Soft Landing System) adalah koleksi pertama dari paket Linux yang dikenal sebagai distribusi komplit. Walau pun dapat diinstall sebagai entitas tersendiri, SLS tidak memiliki alat-alat manajemen paket yang sekarang diharapkan dari distribusi Linux. Distribusi Slackware adalah peningkatan yang besar dalam kualitas keseluruhan (walau pun masih memiliki manajemen paket yang buruk). Slackware masih merupakan salah satu distribusi yang paling sering diinstall dalam komunitas Linux. Sejak dirilisnya Slackware, sejumlah besar distribusi komersil dan non-komersil Linux telah tersedia. RedHat adalah distribusi yang terkenal dari perusahaan pendukung Linux komersil dan perangkat lunak bebas komunitas Linux. Pendukung Linux komersil lainnya termasuk distribusi dari Caldera, Craftworks, dan Work-Group Solutions. Contoh distribusi lain adalah SuSE dan Unix yang berasal dari Jerman.

D. UBUNTU Ubuntu adalah sistem operasi lengkap berbasis Linux, tersedia secara bebas dan mempunyai dukungan baik yang berasal dari komunitas maupun tenaga ahli profesional. Ubuntu sendiri dikembangkan oleh komunitas sukarelawan Ubuntu dan para developer khusus yang dibayar untuk mengembangkan Ubuntu. Komunitas Ubuntu dibentuk berdasarkan gagasan yang terdapat di dalam filosofi Ubuntu: bahwa perangkat lunak harus tersedia dengan bebas biaya, bahwa aplikasi perangkat lunak tersebut harus dapat digunakan dalam bahasa lokal masing-masing dan untuk orang-orang yang mempunyai keterbatasan fisik, dan bahwa pengguna harus mempunyai kebebasan untuk mengubah perangkat lunak sesuai dengan apa yang mereka butuhkan. Ubuntu cocok digunakan baik untuk desktop maupun server. Ubuntu saat ini mendukung berbagai arsitektur komputer seperti PC (Intel x86), PC 64-bit (AMD64), PowerPC (Apple iBook dan Powerbook, G4 dan G5), Sun UltraSPARC dan T1 (Sun Fire T1000 dan T2000). Ubuntu menyertakan lebih dari 16.000 buah perangkat lunak, dan untuk instalasi desktop dapat dilakukan dengan menggunakan satu CD saja. Ubuntu menyertakan semua aplikasi standar untuk pemakaian desktop mulai dari pengolah kata, aplikasi spreadsheet hingga aplikasi untuk mengakses internet, perangkat lunak untuk server web, peralatan untuk bahasa pemrograman dan tentu saja beragam permainan. Saat ini rilis terakhir Ubuntu sudah mencapai versi 7.04, dengan kode

Feisty Fawn, dan versi 7.10 beta sudah tersedia dalam bentuk iso untuk didownload. Rilis pada Ubuntu dilakukan sesuai jadwal, yaitu setiap enam bulan sekali. Pekerjaan tersebut membutuhkan usaha yang sangat besar dan Ubuntu memiliki tim inti yang merupakan kontributor Ubuntu penuh waktu. Tim inti ini melakukan pekerjaan dalam mengembangkan dasar dari platform Ubuntu. Untuk pengembangan selanjutnya, Ubuntu bergantung kepada kontribusi dari komunitas dalam membuat setiap rilis. Setiap rilis Ubuntu didukung selama 18 bulan. Dukungan tersebut berupa perbaikan keamanan, perbaikan critical bugs yang dapat menyebabkan kehilangan data, dan terjemahan tambahan. Upgrade suatu rilis ke rilis berikutnya mendapatkan dukungan dari Ubuntu. Jika ada rilis yang dilewati dan ingin melakukan upgrade ke rilis terbaru, maka pengguna perlu melakukan upgrade satupersatu melalui rilis antara yang ada. Upgrade dapat dilakukan sampai pengguna mendapat rilis yang diinginkan.

E. JARINGAN KOMPUTER Jaringan Komputer merupakan suatu metode penggabungan beberapa PC stand alone yang dirangkai sedemikian rupa sehingga dapat berbagi sumber daya (Sharing Data, Pheriperal, Informasi). Jaringan Komputer juga dapat diartikan sebagai suatu himpunan interkoneksi sejumlah komputer otonom. Dua buah komputer dikatakan membentuk suatu network bila keduanya dapat saling bertukar informasi. 1. Pembagian Jaringan Komputer Beberapa jenis jaringan komputer dilihat dari cara pemrosesan data

dan pengaksesannya terbagai menjadi tiga model, yaitu : a. Host-Terminal Satu atau lebih server yang dihubungkan dalam suatu dumb terminal. Karena Dumb Terminal hanyalah sebuah monitor yang dihubungkan dengan menggunakan kabel RS-232, maka pemrosesan data dilakukan di dalam server, oleh karena itu suatu server haruslah sebuah sistem komputer yang memiliki kemampuan pemrosesan data yang tinggi dan penyimpanan data yang besar. b. Client Server Satu server atau lebih yang dihubungkan dengan beberapa client. Server bertugas menyediakan layanan, bermacam-macam jenis layanan yang dapat diberikan oleh server, misalnya adalah pengaksesan berkas, peripheral, data base, dan lain sebagainya. Client adalah sebuah terminal yang menggunakan layanan tersebut. Perbedaannya dengan hubungan dumb terminal, sebuah terminal client melakukan pemrosesan data di terminalnya sendiri sehingga spesifikasi dari server tidak harus memiliki performance yang tinggi, dan kapasitas penyimpanan data yang besar karena semua pemrosesan data yang merupakan permintaan dari client dilakukan di terminal client.

c. Peer to Peer. Beberapa terminal komputer yang dihubungkan dengan media kabel. Prinsipnya, hubungan peer to peer adalah bahwa setiap

komputer dapat berfungsi sebagai server (penyedia layanan) dan client, keduanya dapat difungsikan dalam suatu waktu yang bersamaan. Dilihat dari sisi lingkupannya atau jangkauannya, jaringan dapat dibagi menjadi beberapa jenis, yaitu : a. LAN (Local Area Network) LAN merupakan salah satu arsitektur jaringan yang paling sederhana dan dapat dikembangkan menjadi arsitektur jaringan yang lebih luas cakupannya. Luas cakupan LAN itu sendiri tidak melebihi dari satu area, yang terdiri dari beberapa terminal yang saling dihubungkan sehingga menambahkan fungsi dari terminal itu sendiri. Jaringan LAN biasanya menggunakan satu server untuk melayani kebutuhan clientnya, tetapi tidak menutup kemungkinan untuk menggunakan lebih dari satu server, tergantung kebutuhan dari client itu sendiri. b. WAN (Wide Area Network) Wide Area Network merupakan gabungan dari LAN, yang ruang lingkupnya dapat saja satu lokasi, misalnya gedung bertingkat, atau dapat tersebar di beberapa lokasi di seluruh dunia, jaringan jenis ini membutuhkan minimal satu server untuk setiap LAN, dan

membutuhkan minimal dua server yang mempunyai lokasi yang berbeda untuk membentuknya.

c. Internet

Internet adalah sekumpulan jaringan yang berlokasi tersebar di seluruh dunia yang saling terhubung membentuk satu jaringan besar komputer. Jaringan ini menggunakan protokol TCP/IP, dan ada sebagian kecil yang menggunakan jenis lain (IPX Novell Netware, NetBios, dan lain-lainnya). d. Intranet Jaringan ini merupakan gabungan dari LAN dan WAN. Dari

lingkupannya atau jangkauannya maka jaringan ini adalah jenis LAN/WAN yang memberikan layanan seperti layanan internet kepada terminal clientnya. Perbedaan mencolok Intranet dengan Internet adalah Intranet melayani satu organisasi tertentu saja. 2. Topologi Jaringan Topologi merupakan suatu bentuk atau model jaringan antar komputer yang ada. Apabila dilihat dari jenis hubungannya, maka topologi jaringan dapat dibagi menjadi tiga, yaitu : a. Topologi cincin (ring topology) Topologi jenis cincin ini menghubungkan satu komputer dalam suatu loop tertutup. Pengiriman data atau message berjalan mengelilingi jaringan dengan satu arah pengiriman ke komputer, selanjutnya terus hingga mencapai komputer yang dituju. b. Topologi bus (bus topology) Topologi jaringan jenis ini menggunakan sebuah kabel pusat yang merupakan media utama dari jaringan. Terminal-terminal yang akan membangun jaringan dihubungkan dengan kabel utama yang

merupakan inti dari jaringan. Data yang dikirimkan langsung menuju terminal yang dituju tanpa harus melewati terminal-terminal dalam jaringan, atau diroutingkan ke head end controller. c. Topologi bintang (star topology) Jenis topologi jaringan ini menggunakan satu terminal sebagai terminal pusat yang mengubungkan ke semua terminal client. Terminal pusat ini yang mengarahkan setiap data yang dikirimkan ke komputer yang dituju. 3. TCP/IP TCP/IP (Transfer Control Protocol/Internet Protocol) terdiri dari lapisan-lapisan protokol. Protokol merupakan suatu prosedur yang mengatur bagaimana komputer mampu melakukan berbagai proses jaringan dengan komputer-komputer yang lain. Proses-proses tersebut diatur oleh TCP dan IP. TCP mengatur proses pengiriman data, mengawasi jalannya data dan memastikan data tersebut sampai ke tujuannya. TCP akan mengulangi proses jika ada bagian data yang tidak sampai pada tujuan. Proses tersebut terus berlangsung sampai data yang dikirimkan sampai ke tujuannya. Data yang sangat besar untuk dimuat dalam satu datagram dipecah menjadi beberapa datagram dan kemudian dikirimkan ke tujuan dan memastikan sampai dengan benar. IP adalah protokol yang memuat semua kebutuhan aplikasi dalam berhubungan antar terminal. Seperti telah disampaikan sebelumnya bahwa TCP bertanggungjawab pada masalah pengiriman dan dalam memecah data menjadi bagian-bagian kecil, maka IP merupakan pembuka jalan

hingga sampainya data ke terminal tujuan. Lapisan-lapisan protokol tersebut berguna untuk menjaga agar data dapat sampai dengan sempurna. 4. Struktur IP Address IP Address terdiri dari bilangan biner sepanjang 32 bit yang dibagi atas 4 segmen. Tiap segmen terdiri atas 8 bit yang berarti memiliki nilai desimal dari 0 - 255. Range address yang bisa digunakan adalah dari 00000000.00000000.00000000.00000000 sampai dengan

11111111.11111111.11111111.11111111. Jadi, ada sebanyak 232 kombinasi address yang bisa dipakai di seluruh dunia (walaupun pada kenyataannya ada sejumlah IP Address yang digunakan untuk keperluan khusus). Jadi, jaringan TCP/IP dengan 32 bit address ini mampu menampung sebanyak 232 atau lebih dari 4 milyar host. IP Address biasanya direpresentasikan dalam bilangan desimal. Jadi, range address di atas dapat diubah menjadi address 0.0.0.0 sampai address 255.255.255.255. Nilai desimal dari IP Address inilah yang dikenal dalam pemakaian sehari-hari. Ilustrasi IP Address dalam desimal dan biner dapat dilihat pada gambar berikut :

Gambar 3.1. IP Address dalam bilangan desimal dan biner

IP Address dipisahkan menjadi 2 bagian, yakni bagian network (bit-bit network/network bit) dan bagian host (bit-bit host/host bit). Bit network berperan dalam identifikasi suatu network dari network yang lain,

sedangkan bit host berperan dalam identifikasi host dalam suatu network. Seluruh host yang tersambung dalam jaringan yang sama memiliki bit network yang sama. Sebagian dari bit-bit bagian awal dari IP Address merupakan network bit/network number, sedangkan sisanya untuk host. Garis pemisah antara bagian network dan host tidak tetap, tergantung kepada kelas network. Ada 3 kelas address yang utama dalam TCP/IP, yakni kelas A, kelas B dan kelas C. Perangkat lunak Internet Protocol menentukan pembagian jenis kelas ini dengan menguji beberapa bit pertama dari IP Address. Penentuan kelas ini dilakukan dengan cara berikut : 1.Bit pertama dari IP Address adalah 0. Address merupakan network kelas A. Bit ini dan 7 bit berikutnya (8 bit pertama) merupakan bit network sedangkan 24 bit terakhir merupakan bit host. Kelas A memiliki 128 network, yakni dari nomor 0.xxx.xxx.xxx sampai 127.xxx.xxx.xxx. Setiap network dapat menampung lebih dari 16 juta (2563) host (xxx adalah variabel, nilainya dari 0 s/d 255). Ilustrasinya dapat dilihat pada gambar 3.2 berikut:

Gambar 3.2 Struktur IP Address kelas A

2. Dua

bit pertama dari IP Address adalah 10. Address merupakan

network kelas B. Dua bit ini dan 14 bit berikutnya (16 bit pertama) merupakan bit network sedangkan 16 bit terakhir merupakan bit host. Kelas B memiliki lebih dari 16 ribu network kelas B (64 x 256), yakni dari network 128.0.xxx.xxx - 191.255.xxx.xxx. Setiap network kelas B mampu menampung lebih dari 65 ribu host (2562). Ilustrasinya dapat dilihat pada gambar 3.3 berikut:

Gambar 3.3 Struktur IP Address Kelas B

3. Tiga bit pertama dari IP Address adalah 110. Address merupakan network kelas C. Tiga bit ini dan 21 bit berikutnya (24 bit pertama) merupakan bit network sedangkan 8 bit terakhir merupakan bit host. Kelas C memiliki lebih dari 2 juta network (32 x 256 x 256), yakni dari nomor 192.0.0.xxx sampai 223.255.255.xxx. Setiap network kelas C mampu menampung sekitar 256 host. Ilustrasinya dapat dilihat pada

gambar 3.4 berikut

Gambar 3.4. Struktur IP Address Kelas C

Ada 2 kelas lagi yang ditujukan untuk pemakaian khusus selain ke tiga kelas di atas, yakni kelas D dan kelas E. Empat bit pertama kelas D adalah 1110, yang digunakan untuk multicast address, yakni sejumlah komputer yang memakai bersama suatu aplikasi (bedakan dengan pengertian network address yang mengacu kepada sejumlah komputer yang memakai bersama suatu network). Salah satu penggunaan multicast address yang sedang berkembang saat ini di internet adalah untuk aplikasi real-time video conference yang melibatkan lebih dari dua host (multipoint), menggunakan Multicast Backbone (MBone). Kelas terakhir adalah kelas E (4 bit pertama adalah 1111 atau sisa dari seluruh kelas). Pemakaiannya dicadangkan untuk kegiatan eksperimental. Selain address yang dipergunakan untuk pengenal host, ada beberapa jenis address yang digunakan untuk keperluan khusus dan tidak boleh digunakan untuk pengenal host. Address tersebut adalah:

a. Network Address

Address ini digunakan untuk mengenali suatu network pada jaringan Internet. Misalnya host dengan IP Address kelas B 167.205.9.35. Tanpa memakai subnet, network address dari host ini adalah 167.205.0.0. Address ini didapat dengan membuat seluruh bit host pada 2 segmen terakhir menjadi 0. Tujuannya adalah untuk menyederhanakan informasi routing pada Internet. Router cukup melihat network address (167.205) untuk menentukan ke mana paket tersebut harus dikirimkan. b. Broadcast Address Address ini digunakan untuk mengirim/menerima informasi yang harus diketahui oleh seluruh host yang ada pada suatu network. Setiap paket IP yang dikirim memiliki header alamat tujuan berupa IP Address dari host yang akan dituju oleh paket tersebut. Host tujuan memproses paket tersebut dengan menggunakan alamat ini, sedangkan host lain akan mengabaikannya. Host cukup mengirim ke alamat broadcast, maka seluruh host yang ada pada network akan menerima paket tersebut. c. Netmask Adalah address yang digunakan untuk melakukan masking/filter pada proses pembentukan routing supaya kelihatan beberapa bit saja dari total 32 bit IP Address. Artinya dengan menggunakan netmask tidak perlu memperhatikan seluruh (32 bit) IP address untuk menentukan routing, akan tetapi cukup beberapa buah saja dari IP address yg diperhatikan untuk menentukan ke mana paket tersebut

dikirim. 5. Subnetting Subnetting adalah pembagian suatu kelompok IP Address menjadi bagian-bagian yang lebih kecil lagi. Tujuan dalam melakukan subnetting ini adalah : a. Membagi suatu kelas jaringan menjadi bagian-bagian yang lebih kecil. b. Menempatkan suatu host, apakah berada dalam satu jaringan atau tidak. c. Keteraturan: 1. Kelas A subnet : 11111111.0000000.00000000.00000000 (255.0.0.0) 2. Kelas B subnet : 11111111.11111111.00000000.00000000 (255.255.0.0) 3. Kelas C subnet : 11111111.11111111.11111111.00000000 (255.255.255.0) Subneting diperlukan agar host pada satu jaringan tidak dapat mengakses host pada jaringan lain secara langsung. 6. DNS (Domain Name System) DNS (Domain Name System) adalah sebuah sistem yang menyimpan informasi tentang nama host maupun nama domain dalam bentuk basis data tersebar (distributed database) di dalam jaringan komputer, misalkan: Internet. DNS menyediakan alamat IP untuk setiap nama host dan mendata setiap mail exchange server yang menerima email untuk setiap domain.

DNS menyediakan layanan yang cukup penting untuk Internet. Perangkat keras komputer dan jaringan bekerja dengan alamat IP untuk mengerjakan tugas seperti pengalamatan dan routing, dan manusia pada lebih memilih untuk menggunakan nama host dan nama domain. Contohnya adalah URL dan alamat e-mail. DNS menyediakan layanan untuk memenuhi kebutuhan ini. Penggunaan nama sebagai pengabstraksi alamat mesin di sebuah jaringan komputer yang lebih dikenal oleh manusia mengalahkan TCP/IP, dan kembali ke jaman ARPAnet yang ketika itu setiap komputer di jaringan menggunakan file HOSTS.TXT dari SRI (sekarang SIR International), yang memetakan sebuah alamat IP menjadi nama (secara teknis, file ini masih ada - sebagian besar sistem operasi modern menggunakannya baik secara baku maupun melalui konfigurasi, dapat melihat hosts file untuk menyamakan sebuah nama host menjadi sebuah alamat IP sebelum melakukan pencarian menggunakan DNS). Namun, sistem tersebut memiliki keterbatasan, yaitu setiap alamat komputer berubah, sistem yang hendak berhubungan dengan komputer tersebut harus melakukan update terhadap file host. Perkembangan jaringan komputer, membutuhkan sistem yang bisa dikembangkan; sebuah sistem yang bisa mengganti alamat host hanya di satu tempat, dan host lain akan mempelajari perubahan tersebut secara dinamis. Inilah konsep dasar DNS. Sistem DNS terdiri dari tiga komponen: 1. DNS resolver, sebuah program klien yang berjalan di komputer

pengguna, yang membuat permintaan DNS dari program aplikasi. 2. Recursive DNS server, yang melakukan pencarian melalui DNS sebagai tanggapan permintaan dari resolver, dan mengembalikan jawaban kepada para resolver tersebut. 3. Authoritative DNS server yang memberikan jawaban terhadap permintaan dari recursor, baik dalam bentuk sebuah jawaban, maupun dalam bentuk delegasi (misalkan: mereferensikan ke authoritative DNS server lainnya) . Sebuah nama domain biasanya terdiri dari dua bagian atau lebih (secara teknis disebut label), yang dipisahkan dengan titik. a) Label paling kanan menyatakan top level domain, yaitu domain tingkat atas (misalkan, alamat uad.ac.id memiliki top-level domain id). b) Setiap label di sebelah kirinya menyatakan subdomain dari domain yang lebih tinggi. Subdomain ini menyatakan ketergantungan relatif, bukan absolut. Contoh: ac.id merupakan subdomain dari domain id, dan uad.ac.id dapat membentuk subdomain dari domain ac.id. Pembagian seperti ini dapat mencapai kedalaman 127 level, dan setiap label dapat terbentuk sampai dengan 63 karakter, selama total nama domain tidak melebihi panjang 255 karakter. c) Terakhir, bagian paling kiri dari bagian nama domain menyatakan nama host. Sisa dari nama domain menyatakan cara untuk membangun jalur logis untuk informasi yang dibutuhkan; nama host adalah tujuan sebenarnya dari nama sistem yang dicari alamat IP-nya.

Contoh: nama domain uad.ac.id memiliki nama host uad.

DNS memiliki kumpulan hirarki dari DNS server. Setiap domain atau subdomain memiliki satu atau lebih authoritative DNS Servers yang mempublikasikan informasi tentang domain dan nama-nama server dari setiap domain dibawahnya. Pada puncak hirarki, terdapat root server: server yang ditanyakan ketika mencari (menyelesaikan/resolving) dari sebuah nama domain tertinggi (top-level domain).

F. REPOSITORY SERVER Sistem ini bekerja dengan melakukan automatisasi proses instalasi, upgrade dan konfigurasi paket software dari komputer. Sistem ini biasa digunakan untuk memberikan dukungan terhadap pengguna sistem, tidak hanya Linux, tetapi juga digunakan pada sistem lain dalam bentuk yang berbeda. Pada sistem Linux, sistem repository server ini digunakan oleh RedHat, SuSe, Linspire dan distro-distro komersial lainnya untuk memberikan support (dukungan) terhadap pemakai sistem tersebut. Pemakaian layanan ini dipungut bayaran, dengan cara yang ditentukan oleh masing-masing distribusi. Manajemen paket dengan sistem repository bekerja dengan

menyediakan kumpulan paket, beserta dependency-nya, yang tercatat dalam sebuah database. Client melakukan request paket, dan server akan memberikan daftar file paket beserta dependency-nya (kalau belum terinstall) untuk di download dan diinstall secara otomatis. Secara sederhana sistem ini

bekerja dengan diagram sebagai berikut:

Gambar 3.5. Sistem kerja repository server Sistem manajemen paket tidak sama dengan sistem installer, yang biasa digunakan pada sistem operasi Windows. Beberapa perbedaan tersebut antara lain:
Tabel 3.1. Perbedaan installer dan sistem manajemen paket

Sistem Manajemen Paket

Sistem Installer

Paket bisa berupa shared library Setiap produk menggunakan yang bisa digunakan oleh resource bundel library yang digunakan lain dalam sistem operasi untuk paket tersebut. Menggunakan database instalasi tunggal Bisa mengatur semua paket dalam sistem Sistem manajemen paket tunggal, biasanya disediakan oleh vendor sistem operasi Format paket seragam Setiap installer memiliki sistem tracking sendiri untuk paket yang diinstall Setiap paket memiliki pengaturan yang berbeda Setiap installer berasal dari vendor yang berbeda Format paket berbeda-beda

G. LIGHTTPD Dunia web server tidak meragukan kemampuan Apache sebagai aplikasi web server yang paling banyak digunakan. Apache tersedia untuk berbagai macam platform. Saat ini Apache adalah sebuah web server rakasasa dengan jumlah penggunaan resource yang terbilang banyak. Aplikasi web server yang bersifat open source selain Apache sangat banyak ditemukan di internet. Salah satunya adalah Lighttpd. Web server ini berorientasi pada keringanan. Lighttpd diklaim pembuatnya sebagai web server yang ringan dan efektif dalam hal manajemen CPU-Load. Meskipun dikategorikan web server kecil, Lighttpd sudah sangat mencukupi untuk digunakan dalam berbagai kebutuhan kerja sehari-hari. Berbagai fitur yang dimiliki Lighttpd, diantaranya: 1. Virtual Host. 2. Virtual Directory Listing. 3. URL-Rewriting, HTTP-Redirect. 4. Automatic Aspiration of Files. 5. Large File Support (64bit fileoffsets). 6. Ranges. 7. Deflate, gzip, bzip2. 8. Authentication. 9. Basic, digest. 10. Backends: plain files, htpasswd, htdigest, ldap.

11. Server side includes. 12. User tracking. 13. FastCGI, CGI, SSI. H. PERL Perl (Prakctical Extraction and Report Language) adalah sebuah bahasa pemrograman yang dioptimasi untuk memudahkan manipulasi file, teks dan memprosesnya. Perl secara khusus digunakan untuk melakukan pembacaan file dengan cepat (scanning), mengekstrak string teks dan mencetak laporan berdasarkan informasi yang diekstraknya. Perl dibuat pada akhir tahun 1970-an oleh Larry Wall. Perl mengkombinasikan kemampuan terbaik dari C, sed, awk dan sh (shell), sehingga yang menguasai bahasa pemrograman atau tool tersebut tidak akan kesulitan menggunakannya. Perl dapat dikompilasi dan diintrepretasi. Artinya Perl akan mendeteksi setiap baris untuk mencari syntax error sebelum program dijalankan. Perl sebagai bahasa pemrograman yang sangat populer dilingkungan keluarga *nix, termasuk didalamnya Linux, kini telah menjadi populer juga dilingkungan Windows, OS/2 dan Macintosh. Perl memiliki kekuatan dan keluwesan sebagai bahasa pemrograman tingkat tinggi seperti halnya C, tetapi tidak serumit C. Berbagai fitur pada bahasa C diadaptasikan ke Perl. Tidak mengherankan jika sintaks Perl menyerupai sintaks pada bahasa C. Salah satu yang membuat Perl populer adalah karena Perl gratis. Tidak hanya pada level biner (kode mesin), source code Perl juga dapat diperoleh tanpa membayar apapun.

Perl tergolong sebagai interpreter, meskipun bukan interpreter murni. Sebagai interpreter, Perl membaca source code, untuk kemudian dikompilasi ke dalam memori terlebih dahulu dan baru kemudian mengeksekusinya. Penggunaan Perl pada sistem operasi keluarga *nix antara lain: 1. Pembuatan script untuk melakukan tugas tertentu yang biasanya ditangani dengan menggunakan script shell, 2. Pemrosesan surat elektronis, 3. Otomasi pengambilan berkas pada klien FTP, dan 4. Pembuatan web dinamis pada aplikasi berbasis internet.

BAB III METODE PENELITIAN

A. SUBJEK PENELITIAN Subjek penelitian ini adalah manajemen paket Ubuntu 6.06 Dapper Drake dengan repository server berbasis Lighttpd 1.4.11.

B. ALAT PENELITIAN Sistem akan dibuat memerlukan alat-alat yang digunakan dalam proses instalasi, konfigurasi, maupun pengujian. Dalam penelitian ini alat yang digunakan adalah : 1. Hardware Server a) Processor AMD Athlon 1800+ b) Total physical memory 512.00 MB c) 1 buah kartu jaringan RTL8139 family PCI Fast Ethernet NIC d) 1 monitor Samsung Samtron 56E e) Keyboard 101 keys serial

2. Hardware Client a) Processor AMD Athlon 1700+ b) Total physical memory 256.00 MB c) 1 buah kartu jaringan RTL8139 family PCI Fast Ethernet NIC d) 1 monitor Samsung 551 V 800 x 640 dbi

e) Keyboard 101 keys serial 3. Software Untuk membangun server, sistem operasi yang digunakan adalah Linux Ubuntu Server 7.04 dengan software Lighttpd 1.4.11 sebagai back end repository server, Bind9 sebagai DNS Server. Client menggunakan komputer dengan sistem operasi Ubuntu Desktop 7.04.

C. METODE PENGUMPULAN DATA Pengumpulan data merupakan suatu usaha yang dilakukan untuk memperoleh data atau dokumentasi yang dibutuhkan dalam penelitian. Data yang diperoleh kemudian diproses sesuai dengan kebutuhan penelitian. Penelitian ini menggunakan metode pengumpulan data antara lain : 1. Studi Literatur Studi literartur merupakan cara pengumpulan data dengan membaca buku atau dokumentasi yang berhubungan dengan penelitian. Peneliti juga melakukan browsing dan searching di internet dengan kata kunci ubuntu, linux, debian, perl, smp untuk mencari data atau dokumentasi yang berhubungan dengan obyek penelitian. 2. Wawancara Wawancara dilakukan dengan tanya jawab secara langsung atau tidak langsung kepada Andrew Betts, developer Linspire Linux dan Setiawan 'Esteween', developer Kuliax Linux untuk mendapatkan data terhadap obyek yang berhubungan dengan penelitian, serta

korespondensi pada milis jogja-linux@yahoogroups.com dan forum

http://forum.linux.or.id, yang berhubungan dengan objek yang diteliti. D. PERANCANGAN JARINGAN Sebelum membangun sistem perlu dilakukan perancangan untuk menentukan langkah-langkah yang akan dilakukan dalam membangun repository server sehingga dapat diimplementasikan dalam jaringan. Langkah-langkah tersebut antara lain : 1. Menentukan topologi jaringan Topologi jaringan yang digunakan dalam penelitian ini adalah topologi star dan peer to peer. 2. Instalasi sistem operasi Linux Ubuntu Server 7.04 Instalasi dilakukan untuk mengkonfigurasi server dengan beberapa pengaturan service. 3. Instalasi Sistem Operasi Linux Ubuntu Desktop 7.04. Instalasi dilakukan pada komputer client. 4. Instalasi Sistem Pendukung. Untuk membagun server repository dari Ubuntu Server, diperlukan beberapa sistem pendukung. Selain pengaturan jaringan dan pengaturan kebijakan policy, diinstall beberapa software pendukung untuk membagun sistem ini. 5. Konfigurasi jaringan Konfigurasi jaringan meliputi konfigurasi kartu jaringan, IP address, serta konfigurasi-konfigurasi yang lain yang mendukung dalam membangun sistem. Selain itu juga melakukan konfigurasi untuk client yang akan digunakan.

E. PENGUJIAN SISTEM Untuk membuktikan bahwa sistem yang dibangun berjalan dengan baik perlu diadakan pengujian. Pengujian dilakukan setelah semua proses instalasi dan konfigurasi telah selesai dilakukan. Pengujian ini dilakukan dengan dua metode yaitu : 1. White box testing Pengujian ini dilakukan selama pembuatan sistem oleh peneliti. Pengujian ini disebut pengujian internal terhadap prosedur yang telah diterapkan sehingga berjalan sesuai dengan yang diinginkan. 2. Black Box testing Pengujian ini dilakukan oleh orang selain peneliti. Pengujian ini mengamati dan mencari kesalahan terhadap jalannya sistem. Jika sesuai dengan yang diinginkan maka sistem mendekati sempurna. 3. Alfa testing Pengujian ini dilakukan oleh orang lain selain peneliti setelah pembuatan sistem selesai untuk menguji apakah sistem yang dibuat sesuai dengan yang diharapkan.

BAB IV HASIL PENELITIAN DAN PEMBAHASAN

A. TOPOLOGI JARINGAN Penelitian dilakukan pada dua jaringan yang berbeda, yakni jaringan privat dan public. Jaringan privat dilakukan dengan dua topologi jaringan berbeda, yakni peer to peer dan star. Tujuannya adalah untuk menguji kinerja server pada berbagai jaringan yang berbeda. Simulasi pada jaringan privat topologi peer to peer memiliki spesifikasi bentuk sebagai berikut:

Gambar ??. Jaringan peer to peer dalam penelitian

Simulasi pada jaringan privat topologi star memiliki spesifikasi sebagai berikut:

Gambar ??. Jaringan star dalam penelitian Simulasi pada jaringan public memiliki spesifikasi sebagai berikut:

Gambar ??. Jaringan public yang digunakan dalam penelitian Komputer server dilengkapi dengan paket-paket pendukung untuk bekerja sebagai server sesuai dengan tujuan penelitian. Paket yang diinstall adalah Bind9 sebagai DNS (Domain Name Server) dan Lighttpd sebagai Web server yang menyediakan protokol HTTP untuk melayani request dari komputer client.

B. SERVER Penelitian menggunakan Ubuntu Server 7.04. Ubuntu merupakan distribusi Linux berbasis Debian yang dikembangkan oleh Cannonical Ltd.. Keuntungan menggunakan Ubuntu server adalah support komersial yang telah disediakan oleh Cannonical Ltd, sehingga keamanan server lebih terjamin.

Instalasi dilakukan dengan pembagian partisi sebagai berikut: 1. /dev/hda1 a. Mount point : / b. File system c. Ukuran d. Mount option e. Keterangan : ext3 : 10 GB : default : digunakan sebagai root file system server yang digunakan untuk penelitian 2. /dev/hda2 a. Mount point : swap b. File system c. ukuran d. mount option e. keterangan 3. /dev/hda5 a. Mount point : /home b. File system c. Ukuran d. Mount option e. Keterangan : ext3 : 20 GB : default : Digunakan sebagai user home directory. : swap : 1 GB : default : digunakan sebagai virtual memory

Dengan pembagian partisi di atas, file /etc/fstab memiliki isi sebagai berikut:
proc 0 /proc 0 proc defaults

/dev/hda1 ro 0 /dev/hda5 2 /dev/hda2 /dev/hdd 0

/ 1 /home swap sw /media/cdrom0

ext2 ext3

defaults,errors=remountdefaults 0

0 0 udf,iso9660 user,noauto

Server memiliki dua user untuk administrasi, yakni root dan masyusuf. Hak akses admin diberikan kepada user masyusuf dengan menambahkannya sebagai anggota group admin.

C. DOMAIN NAME SERVER Domain Name Server (DNS) digunakan untuk translasi IP address menjadi domain. Domain yang digunakan pada penelitian ini adalah

download.uad.ac.id untuk implementasi jaringan privat dan public, dengan menggunakan BIND9 DNS server. Untuk pembuatan zone baru dibuatkan file zone dibawah direktori /usr/local/var/cache/named bernama

download.uad.ac.id:
$TTL 86400 @ IN SOA ns.download.uad.ac.id admin. download.uad.ac.id ( 2001042703 ; serial 86400 ; refresh ( 1 day ) 21600 ; retry ( 6 hours ) 3600000 ; expire 3600 ; minimum ) @ IN NS ns.download.uad.ac.id. @ IN MX 10 mx.download.uad.ac.id. @ IN A 192.168.1.1 ns IN A 192.168.1.1 mx IN A 192.168.1.1 mail IN CNAME mx

File reverse zone untuk translasi IP address menjadi domain diletakkan pada direktori yang sama dengan file zone. Isi file reverse zone adalah sebagai berikut:
$TTL 86400 @ IN SOA ns. download.uad.ac.id admin.download.uad.ac.id ( 2001042703; 86400 21600 3600000 3600 ) @ IN NS ns.download.uad.ac.id. @ IN MX 10 mx.download.uad.ac.id. 1 IN PTR download.uad.ac.id. 1 IN PTR ns.download.uad.ac.id. 1 IN PTR mx.download.uad.ac.id.

File zone dan reverse zone diload oleh file konfigurasi BIND, yang berisi keterangan file konfigurasi zone dan reverse zone. Isi file named.conf yang berada di bawah direktori /etc/bind adalah sebagai berikut:
include "/etc/bind/named.conf.options";

zone "." { type hint; file "/etc/bind/db.root"; }; zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "download.uad.ac.id" { type master; file "download.uad.ac.id"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127";

}; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; zone "1.168.192.in-addr.arpa" { type master; file "1.168.192"; }; include "/etc/bind/named.conf.local";

Direktori kerja BIND, dan beberapa opsi ditentukan pada blok options, yang dimasukkan pada file /etc/bind/named.conf.options. Isi file tersebut adalah sebagai berikut:
options { directory "/usr/local/var/cache/named"; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; allow-recursion { localnets; }; };

D. LIGHTTPD Lighttpd digunakan sebagai back end repository server, yang menyediakan protokol HTTP untuk melayani request dari komputer client dan transfer file paket yang diminta oleh client. Lighttpd secara native hanya mendukung html dan CGI. Instalasi lighttpd dilakukan dari source dengan mengaktifkan modul sebagai berikut: 1. Virtual Host.

2. Virtual Directory Listing. 3. URL-Rewriting, HTTP-Redirect. 4. Automatic Aspiration of Files. 5. Large File Support (64bit fileoffsets). 6. Ranges. Instalasi Lighttpd dengan spesifikasi modul sebagaimana disebutkan di atas dilakukan dengan konfigurasi sebagai berikut:

# Debian lighttpd configuration file # ############ Options #################### you really have to take care of

## modules to load # mod_access, mod_accesslog and mod_alias are loaded by default # all other module should only be loaded if neccesary # - saves some time # - saves memory server.modules = ( "mod_access", "mod_alias", "mod_accesslog", "mod_rewrite", "mod_redirect", # "mod_status", # "mod_evhost", # "mod_compress", # "mod_usertrack", # "mod_rrdtool", # "mod_webdav", # "mod_expire", # "mod_flv_streaming", # "mod_evasive" ) ## a static document-root, for virtual-hosting take look at the ## server.virtual-* options server.document-root = "/var/www/" ## where to send error-messages to

server.errorlog

= "/var/log/lighttpd/error.log"

## files to check for if .../ is requested index-file.names = ( "index.php", "index.html", "index.htm", "default.htm" )

## Use the "Content-Type" extended mime type if possible # mimetype.use-xattr = "enable" #### accesslog module accesslog.filename "/var/log/lighttpd/access.log"

attribute

to

obtain

## deny access the file-extensions # # ~ is for backupfiles from vi, emacs, joe, ... # .inc is often used for code includes which should in general not be part # of the document-root url.access-deny = ( "~", ".inc" )

######### Options that are good to be but not neccesary to be changed ####### ## bind to port (default: 80) #server.port = 81 ## bind to localhost only (default: all interfaces) server.bind = "localhost" ## error-handler for status 404 #server.error-handler-404 = "/error-handler.html" #server.error-handler-404 = "/error-handler.php" ## to help the rc.scripts server.pid-file

= "/var/run/lighttpd.pid"

## ## Format: <errorfile-prefix><status>.html ## -> ..../status-404.html for 'File not found' #server.errorfile-prefix = "/var/www/" ## virtual directory listings dir-listing.encoding = "utf-8" server.dir-listing = "enable" ## send unhandled HTTP-header headers to error-log #debug.dump-unknown-headers = "enable" ### only root can use these options #

# chroot() to directory (default: no chroot() ) #server.chroot = "/" ## change uid to <uid> (default: don't care) server.username = "www-data" ## change uid to <uid> (default: don't care) server.groupname = "www-data" #### compress module #compress.cache-dir = "/var/tmp/lighttpd/cache/compress/" #compress.filetype = ("text/plain", "text/html") #### status module # status.status-url = "/server-status" # status.config-url = "/server-config" #### url handling modules (rewrite, redirect, access) # url.rewrite = ( "^/$" => "/server-status" ) # url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" ) # # # # # # # # # #

define a pattern for the host url finding %% => % sign %0 => domain name + tld %1 => tld %2 => domain name without tld %3 => subdomain 1 name %4 => subdomain 2 name evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/"

#### expire module # expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes") #### rrdtool # rrdtool.binary = "/usr/bin/rrdtool" # rrdtool.db-name = "/var/www/lighttpd.rrd" ## this is a hack alias.url = ("___invalid___" => "___invalid___") #### handle Debian Policy Manual, Section 11.5. urls #### and by default allow them only from localhost $HTTP["host"] == "localhost" { global { alias.url += ( "/doc/" => "/usr/share/doc/", "/images/" => "/usr/share/images/" ) }

dir-listing.activate = "enable" } #### variable usage: ## variable name without "." is auto prefixed by "var." and becomes "var.bar" #bar = 1 #var.mystring = "foo" ## integer add #bar += 1 ## string concat, with integer cast as string, result: "www.foo1.com" #server.name = "www." + mystring + var.bar + ".com" ## array merge #index-file.names = (foo + ".php") + index-file.names #index-file.names += (foo + ".php")

#### external configuration files ## mimetype mapping include_shell "/usr/share/lighttpd/create-mime.assign.pl" ## load enabled configuration files, ## read /etc/lighttpd/conf-available/README first include_shell "/usr/share/lighttpd/include-confenabled.pl"

E. STRUKTUR DIREKTORY DAN FILE Instalasi server menggunakan Ubuntu server menghasilkan root directory dengan struktur bin, cdrom, etc, initrd, lib, media, opt, root, srv, tmp, var , boot, dev, home, mnt, proc, sbin, sys, usr. Direktori /home berisi satu user direktori, yakni masyusuf. Direktori /home/masyusuf ini akan menjadi direktori kerja dari penelitian kali ini. Tujuan fokus direktori kerja adalah untuk menghindari pemakaian user root, sehingga kerusakan system yang disebabkan oleh kesalahan kerja bisa diminimalisir. Kebutuhan direktori untuk server reposotory adalah sebagai berikut:

Gambar ???. Struktur Direktori Repository Server Keterangan untuk masing-masing directory adalah sebagai berikut: public_html : Directory berisi file untuk keperluan web. dists : Directory berfungsi sebagai main directory untuk data base. feisty : Directory berfungsi sebagai main directory data base distribusi Feisty Fawn (Ubuntu 7.04).

dists/feisty/[main] [restricted] [universe] [multiverse] : Directory berisi database jenis paket yang disediakan oleh server. pool : Directory berfungsi sebagai main directory untuk paket. pool/feisty : Directory berfungsi sebagai main directory paket distribusi Feisty Fawn (Ubuntu 7.04). pool/feisty/[main] [restricted] [universe] [multiverse] : Directory berisi jenis paket yang disediakan oleh server. pool/feisty/[main] [restricted] [universe] [multiverse]/binary-i386 : Directory berisi paket jenis binary-i386.

F. DATABASE Setiap paket Ubuntu mengandung informasi tentang paket itu. Informasi tersebut mencakup semua hal tentang paket, seperti nama paket, versi, prioritas, maintainer dan lain-lain. Database yang dibuat pada penelitian itu didasarkan pada informasi yang terkandung dalam paket tersebut. Informasi paket bisa dilihat dengan perintah dpkg-deb -I <nama_paket> control. Berikut ini adalah output yang keluar dengan perintah tersebut terhadap file zope3_3.2.1-1ubuntu1_i386.deb
masyusuf@cahbuagus:~$ dpkg-deb -I zope3_3.2.11ubuntu1_i386.deb control Package: zope3 Version: 3.2.1-1ubuntu1 Section: python Priority: optional Architecture: i386 Pre-Depends: zope-common Depends: python2.4 (>= 2.4.2), python2.4-zopeinterface, libc6 (>= 2.3.4-1), python-docutils (>= 0.3.7) | python2.4-docutils (>= 0.3.7), python2.4-tz (>= 2005r), python2.4-mechanize (>= 0.0.10a), python2.4-clientcookie (>= 1.0.3), python2.4-

twisted-conch (>= 1:0.5), python2.4-twisted-web2 (>= 0.1.0.20060222), python2.4-pullparser (>= 0.0.6b), python2.4clientform (>= 0.2.0.99-1), lsb-base Conflicts: zopex3-lib, zope3-lib Replaces: zopex3-lib, zope3-lib Provides: zope3-lib Installed-Size: 27856 Maintainer: Debian/Ubuntu Zope Team <pkg-zopedevelopers@lists.alioth.debian.org> Description: Open Source Web Application Server (Libraries) Zope is an open source web application server primarily written in the Python programming language. It features a transactional object database which can store not only content and custom data, but also dynamic HTML templates, scripts, a search engine, and relational database (RDBMS) connections and code. . It features a strong through-the-web development model, allowing you to update your web site from anywhere in the world. To allow for this, Zope also features a tightly integrated security model. Built around the concept of "safe delegation of control", Zope's security architecture also allows you to turn control over parts of a web site to other organizations or individuals. . This package contains the framework and libraries needed to run your own Zope3 instance.

Tidak semua paket memiliki data seperti diatas. Beberapa paket memiliki data lebih dari contoh diatas. Umumnya, paket Ubuntu memiliki data Package, Source, Version, Priority, Section, Essential, Maintainer, Pre-Depends, Depends, Recommends, Suggests, Conflicts, Breaks, Provides, Replaces, Enhances, Architecture, Filename, Size, Installed-Size, MD5sum, Description, Origin dan Bugs. Di antara data-data tersebut, data Package, Version, PreDepends, Depends dan Recommeds adalah data memiliki keterkaitan satu sama

lain dalam penelitian ini. Data paket dimuat dalam sebuah file database, untuk diakses komputer klien yang meminta data paket. Script Perl berikut dibuat untuk memasukkan data paket yang terkumpul dalam hirarki direktori dibawah /pool/feisty/main, /pool/feisty/restricted, /pool/feisty/universe, /pool/feisty/multiverse.
#!/usr/bin/perl use use use use use warnings; strict; IO::Handle; IO::File; Getopt::Long qw(:config bundling);

my $versi = "1.0.24"; my $direktori_lib_dpkg = "/usr/lib/dpkg"; push(@INC,$direktori_lib_dpkg); require 'dpkg-gettext.pl'; my %detail_paket = (opsional saran class revisi_paket ); my @data_paket = ( 'Package', 'Source', 'Version', 'Priority', 'Section', 'Essential', 'Maintainer', 'Pre-Depends', 'Depends', 'Recommends', 'Suggests', 'Conflicts', 'Breaks', 'Provides', 'Replaces', 'Enhances', 'Architecture', 'Filename', 'Size', 'Installed-Size', 'MD5sum', 'Description', 'Origin', => => => => 'suggests', 'recommends', 'priority', 'revision',

'Bugs' ); my %isi_kolom; @isi_kolom{map{lc($_)} @data_paket} = @data_paket;

my %opsi = (help versi udeb proc );

=> sub { &pemakaian; exit 0; }, => \&versi, => 0, => undef,

my $hasil = GetOptions(\%opsi,'help|h|?','versi','udeb|u!','proc|a=s'); sub versi { printf _g("Debian %s versi %s.\n"), $0, $versi; exit; } sub pemakaian { printf _g( "Pemakaian: %s [<opsi> Packages Pilihan opsi: -u, --udeb -a, --proc <prosesor> yang di scan. -h, --help --versi "), $0; }

...]

<pathpaket>

<fileoverride>

>

scan file *.udeb. jenis paket (prosesornya apa) cara pemakaian. perlihatkan versi.

&pemakaian and exit 1 if not $hasil and (@ARGV < 2); my ($direktori_paket_binary, $file_override, $path_file_override) = @ARGV; -d $direktori_paket_binary or die sprintf(_g("Direktori %s tidak ditemukan"), $direktori_paket_binary)."\n"; -e $file_override or die sprintf(_g("File %s tidak ditemukan"), $file_override)."\n"; $path_file_override = '' if not defined $path_file_override; our %tmp_versi; sub bandingkan_paket { my ($a,$b) = @_; return $tmp_versi{$a}{$b} if exists $tmp_versi{$a}{$b}; system('dpkg','--compare-versions',$a,'le',$b); $tmp_versi{$a}{$b} = $?; return $?;

} my %paket; my $hirarki_direktori = new IO::Handle; open($hirarki_direktori,"$direktori_paket_binary/") or die sprintf(_g("Tidak bisa membuka direktori %s untuk membaca: %s"), $direktori_paket_binary, $!)."\n"; FILE: while (<$hirarki_direktori>) { chomp; my $nama_file = $_; my $informasi_paket = `dpkg-deb -I $nama_file control`; if ($informasi_paket eq "") { warn sprintf(_g("Tidak bisa memanggil dpkg-deb untuk mendapatkan informasi file %s: %s "), $nama_file, $!)."\n"; next; } if ($?) { warn sprintf(_g("\`dpkg-deb -I %s control' berhenti: %d"), $nama_file, $?)."\n"; next; } #definisikan informasi berdasarkan kunci dan isi, sehingga isi bisa di panggil dengan kunci my %info_pecahan_paket_temp = ();#temp value my $temp = $informasi_paket; while ($temp =~ s/^\n*(\S+):[ \t]*(.*(\n[ \t].*)*)\n//) { my ($kunci,$isi) = (lc $1,$2); if (defined($detail_paket{$kunci})) { $kunci = $detail_paket{$kunci}; } if (defined($field_case{$kunci})) { $kunci = $field_case{$kunci}; } $isi =~ s/\s+$//; $info_pecahan_paket_temp{$kunci} = $isi; } $temp =~ /^\n*$/ or die sprintf(_g("Data dari file %s tidak terproses; info:\n%s / %s\n"), $nama_file, $informasi_paket, $temp); defined($info_pecahan_paket_temp{'Package'}) or die sprintf(_g("File %s tidak memiliki data, file diabaikan"), $nama_file)."\n"; my $paket_aktif = $info_pecahan_paket_temp{'Package'}; delete $info_pecahan_paket_temp{'Package'}; if (defined($paket{$paket_aktif}) and $options{multiversion}) { foreach (@{$paket{$paket_aktif}}) { if (&bandingkan_paket($info_pecahan_paket_temp{'Version'}, >{'Version'})) { not

$_-

printf(STDERR _g( " ! Paket %s (nama file %s) ada dua, tetapi versi yang lebih baru;\n". " dipakai, dan data file %s tidak dimasukkan dalam database !\n"), $paket_aktif, $nama_file, $_->{Filename}) || die $!; $paket{$paket_aktif} = []; } else { printf(STDERR _g( " ! Paket %s (nama file %s) ada dua;\n". " data yang dipakai adalah data dari file file %s !\n"), $paket_aktif, $nama_file, $_>{Filename}) or die $!; next FILE; } } } printf(STDERR _g(" ! Paket %s (file %s) memiliki data!\n"), $paket_aktif, $nama_file) || die $! if defined($info_pecahan_paket_temp{'Filename'}); $info_pecahan_paket_temp{'Filename'} "$path_file_override$nama_file"; =

open(C,"md5sum <$nama_file> |") || die "$nama_file $!"; chop($_ = <C>); close(C); $? and die sprintf(_g("\`md5sum < %s' berhenti dengan status %d"), $nama_file, $?)."\n"; /^([0-9a-f]{32})\s*-?\s*$/ or die sprintf(_g("Text dari \`md5sum < %s': \`%s'"), $nama_file, $_)."\n"; $info_pecahan_paket_temp{'MD5sum'} = $1; my @ukuran_file = stat($nama_file); $ukuran_file[7] or die sprintf(_g("file %s kosong."), $nama_file)."\n"; $info_pecahan_paket_temp{'Size'} = $ukuran_file[7]; if (defined $info_pecahan_paket_temp{Revision} length($info_pecahan_paket_temp{Revision})) { $info_pecahan_paket_temp{Version} .= '.$info_pecahan_paket_temp{Revision}; delete $info_pecahan_paket_temp{Revision}; } push {%info_pecahan_paket_temp}; } close($hirarki_direktori); and '-

@{$paket{$paket_aktif}},

select(STDERR); $= = 1000; select(STDOUT); sub format_penulisan { my $title = shift(@_); return unless @_;

print(STDERR " $title\n") || die $!; my $paket = join(' ',sort @_); format STDERR = ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<< $paket . while (length($paket)) { write(STDERR) || die $!; } print(STDERR "\n") || die $!; } my (@maintainer_sama,@ganti_maintainer);

my %override_paket; my $hirarki_file_override = new IO::File $file_override,'r' or die sprintf(_g("fopen file %s gagal: %s"), $file_override, $!)."\n"; while (<$hirarki_file_override>) { s/\#.*//; s/\s+$//; next unless $_; my ($paket_aktif,$priority,$section,$maintainer) = split(/\s+/,$_,4); next unless defined($paket{$paket_aktif}); for my $paket_override (@{$paket{$paket_aktif}}) { if ($maintainer) { if ($maintainer =~ m/(.+?)\s*=\>\s*(.+)/) { my $maintainer_lama = $1; my $maintainer_baru = $2; my $maintainer_debian = $$paket_override{Maintainer}; if (!grep($maintainer_debian eq $_, split(m:\s*//\s*:, $maintainer_lama))) { push(@ganti_maintainer, " $paket_aktif (data $$paket_override{Maintainer}, bukan $maintainer_lama)\n"); } else { $$paket_override{Maintainer} = $maintainer_baru; } } elsif ($$paket_override{Maintainer} eq $maintainer) { push(@maintainer_sama," $paket_aktif ($maintainer)\n"); } else { printf(STDERR _g("Maintainer pada %s tidak ada.")."\n", $paket_aktif) || die $!; $$paket_override{Maintainer} = $maintainer; } } $$paket_override{Priority} = $priority; $$paket_override{Section} = $section;

} $override_paket{$paket_aktif} = 1; } close($hirarki_file_override); my @status_keberadaan_override = (); my $jumlah_paket_yang_dimasukkan = 0; for my $paket_aktif (sort keys %paket) { if (not defined($override_paket{$paket_aktif})) { push(@status_keberadaan_override,$paket_aktif); } for my $paket_override (@{$paket{$paket_aktif}}) { my $record = "Package: $paket_aktif\n"; for my $key (@data_paket) { next unless defined $$paket_override{$key}; $record .= "$key: $$paket_override{$key}\n"; } $record .= "\n"; $jumlah_paket_yang_dimasukkan++; print(STDOUT $record) or die sprintf(_g("Gagal menuliskan stdout: %s"), $!)."\n"; } } close(STDOUT); my @status_tidak_sesuai keys %override_paket; = grep(!defined($paket{$_}),sort

&format_penulisan(_g("** File paket ditemukan, tetapi data paket tidak ada dalam file: **"), @status_keberadaan_override); if (@ganti_maintainer) { print(STDERR _g(" ++ Paket ada dalam file tetapi maintainer tidak sesuai. Maintainer diganti: ++")."\n", @ganti_maintainer, "\n") || die $!; } if (@maintainer_sama) { print(STDERR _g(" -- Data maintainer sesuai: --")."\n", @maintainer_sama, "\n") || die $!; } if (@status_tidak_sesuai) { print(STDERR _g(" -- Paket ditemukan dalam file, tetapi file paket tidak ada: --")."\n", @status_tidak_sesuai, "\n") || die $!; } printf(STDERR _g(" Menuliskan %s data paket dalam file Packages.")."\n", $jumlah_paket_yang_dimasukkan) || die $!;

Keterangan untuk script diatas adalah sebagai berikut:


#!/usr/bin/perl use warnings; use strict; use IO::Handle; use IO::File; use Getopt::Long qw(:config bundling);

Baris

pertama

mendefinisikan

perintah

untuk

mengeksekusi

script

dibawahnya. Perintah use digunakan untuk meload modul perl yang akan digunakan pada script berikutnya.
my $versi = "1.0.24"; my $direktori_lib_dpkg = "/usr/lib/dpkg"; push(@INC,$direktori_lib_dpkg); require 'dpkg-gettext.pl';

Baris pertama adalah versi dari pengembangan script ini. Baris kedua dan ketiga menentukan dan memakai direktori library untuk perintah dpkg. Baris terakhir, meload file yang digunakan untuk keperluan operasi berikutnya.

my %detail_paket = (opsional saran class revisi_paket );

=> 'suggests', => 'recommends', => 'priority', => 'revision',

Array asosiatif diatas digunakan untuk mengambil informasi yang akan digunakan untuk memberikan prioritas paket, data paket-paket yang disarankan untuk paket yang sedang aktif dan untuk membandingkan

beberapa paket jika didapatkan paket ganda.

my @data_paket = ( 'Package', 'Source', 'Version', 'Priority', 'Section', 'Essential', 'Maintainer', 'Pre-Depends', 'Depends', 'Recommends', 'Suggests', 'Conflicts', 'Breaks', 'Provides', 'Replaces', 'Enhances', 'Architecture', 'Filename', 'Size', 'Installed-Size', 'MD5sum', 'Description', 'Origin', 'Bugs' );

Array di atas adalah data yang disimpan dalam paket.


my %isi_kolom; @isi_kolom{map{lc($_)} @data_paket} = @data_paket; my %opsi = (help => sub { &pemakaian; exit 0; }, versi => \&versi, udeb => 0, proc => undef, ); my $hasil GetOptions(\%opsi,'help|h|?','versi','udeb|u!','proc|a=s'); =

Array asosiatif diatas adalah opsi penggunaan untuk informasi script ini. $hasil mendapatkan opsi yang dimasukkan lewat command line
sub versi { printf _g("Debian %s versi %s.\n"), $0, $versi; exit;

} sub pemakaian { printf _g( "Pemakaian: %s [<opsi> ...] <pathpaket> <fileoverride> > Packages Pilihan opsi: -u, --udeb -a, --proc <prosesor> yang di scan. -h, --help --versi "), $0; }

scan file *.udeb. jenis paket (prosesornya apa) cara pemakaian. perlihatkan versi.

Fungsi pertama adalah fungsi untuk mencetak versi, dan fungsi kedua adalah fungsi untuk opsi help atau -h atau ?.

&pemakaian and exit 1 if not $hasil and (@ARGV < 2); my ($direktori_paket_binary, $file_override, $path_file_override) = @ARGV; -d $direktori_paket_binary or die sprintf(_g("Direktori %s tidak ditemukan"), $direktori_paket_binary)."\n"; -e $file_override or die sprintf(_g("File %s tidak ditemukan"), $file_override)."\n"; $path_file_override = '' if not defined $path_file_override;

Data argumen diambil dan dimasukkan dalam variabel. Variabel-variabel ini digunakan dalam penanganan data paket agar sesuai dengan keinginan pengguna.
our %tmp_versi; sub bandingkan_paket { my ($a,$b) = @_; return $tmp_versi{$a}{$b} if $tmp_versi{$a}{$b}; system('dpkg','--compare-versions',$a,'le',$b); $tmp_versi{$a}{$b} = $?;

exists

return $?; }

Fungsi untuk membandingkan dua paket yang sama. Fungsi akan memanggil perintah dpkg compare-versions memberikan nilai balik berupa keluaran yang diberikan perintah tersebut.

my $hirarki_direktori = new IO::Handle; open($hirarki_direktori,"$direktori_paket_binary/") or die sprintf(_g("Tidak bisa membuka direktori untuk membaca: %s"), $direktori_paket_binary, $!)."\n";

%s

Memulai akses hirarki direktori yang berisi data paket. Akses hirarki menggunakan modul IO::Handle untuk memberikan data berupa list yang berisi data path dan file paket.

FILE: while (<$hirarki_direktori>) { chomp; my $nama_file = $_; my $informasi_paket = `dpkg-deb -I $nama_file control`; if ($informasi_paket eq "") { warn sprintf(_g("Tidak bisa memanggil dpkg-deb untuk mendapatkan informasi file %s: %s "), $nama_file, $!)."\n"; next; } if ($?) { warn sprintf(_g("\`dpkg-deb -I %s control' berhenti: %d"), $nama_file, $?)."\n"; next; } #definisikan informasi berdasarkan kunci dan isi, sehingga isi bisa di panggil dengan kunci my %info_pecahan_paket_temp = ();#temp value my $temp = $informasi_paket; while ($temp =~ s/^\n*(\S+):[ \t]*(.*(\n[ \t].*)*)\n//) {

my ($kunci,$isi) = (lc $1,$2); if (defined($detail_paket{$kunci})) { $kunci = $detail_paket{$kunci}; } if (defined($field_case{$kunci})) { $kunci = $field_case{$kunci}; } $isi =~ s/\s+$//; $info_pecahan_paket_temp{$kunci} = $isi; } $temp =~ /^\n*$/ or die sprintf(_g("Data dari file %s tidak $nama_file, terproses; info:\n%s / %s\n"), $informasi_paket, $temp); defined($info_pecahan_paket_temp{'Package'}) or die sprintf(_g("File %s tidak memiliki data, file diabaikan"), $nama_file)."\n"; my $paket_aktif = $info_pecahan_paket_temp{'Package'}; delete $info_pecahan_paket_temp{'Package'}; if (defined($paket{$paket_aktif}) and not $options{multiversion}) { foreach (@{$paket{$paket_aktif}}) { if (&bandingkan_paket($info_pecahan_paket_temp{'Version'}, $_>{'Version'})) { printf(STDERR _g( " ! Paket %s (nama file %s) ada dua, tetapi versi yang lebih baru;\n". " dipakai, dan data file %s tidak dimasukkan dalam database !\n"), $paket_aktif, $nama_file, $_->{Filename}) || die $!; $paket{$paket_aktif} = []; } else { printf(STDERR _g( " ! Paket %s (nama file %s) ada dua;\n". " data yang dipakai adalah data dari file file %s !\n"), $paket_aktif, $nama_file, $_>{Filename}) or die $!; next FILE; } } } printf(STDERR _g(" ! Paket %s (file %s) memiliki data!\n"), $paket_aktif, $nama_file) || die $! if defined($info_pecahan_paket_temp{'Filename'}); $info_pecahan_paket_temp{'Filename'} "$path_file_override$nama_file"; =

open(C,"md5sum <$nama_file> |") || die "$nama_file $!"; chop($_ = <C>); close(C); $? and die sprintf(_g("\`md5sum < %s' berhenti dengan status %d"), $nama_file, $?)."\n";

/^([0-9a-f]{32})\s*-?\s*$/ or die sprintf(_g("Text dari \`md5sum < %s': \`%s'"), $nama_file, $_)."\n"; $info_pecahan_paket_temp{'MD5sum'} = $1; my @ukuran_file = stat($nama_file); $ukuran_file[7] or die sprintf(_g("file %s kosong."), $nama_file)."\n"; $info_pecahan_paket_temp{'Size'} = $ukuran_file[7]; if (defined $info_pecahan_paket_temp{Revision} length($info_pecahan_paket_temp{Revision})) { $info_pecahan_paket_temp{Version} .= '.$info_pecahan_paket_temp{Revision}; delete $info_pecahan_paket_temp{Revision}; } push {%info_pecahan_paket_temp}; } close($hirarki_direktori); and '-

@{$paket{$paket_aktif}},

Blok diatas menangani data paket sesuai dengan data yang diperoleh dari perintah dpkg-deb -I nama_paket.deb control. Data yang ada ditambah dengan nama file beserta path, ukuran, ukuran instalasi dan md5sum paket bersangkutan. Md5sum digunakan untuk memastikan bahwa paket yang didownload sama dengan paket yang ada di server repository.

sub format_penulisan { my $title = shift(@_); return unless @_; print(STDERR " $title\n") || die $!; my $paket = join(' ',sort @_); format STDERR = ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<< $paket . while (length($paket)) { write(STDERR) || die $!; } print(STDERR "\n") || die $!; }

Fungsi untuk menentukan format penulisan jika terjadi error. Penulisan dibuat rata kiri dengan dimulai dari tanda ^ maksimal sejumlah karakter <.

my (@maintainer_sama,@ganti_maintainer); my %override_paket; my $hirarki_file_override = new IO::File $file_override,'r' or die sprintf(_g("fopen file %s gagal: %s"), $file_override, $!)."\n"; while (<$hirarki_file_override>) { s/\#.*//; s/\s+$//; next unless $_; my ($paket_aktif,$priority,$section,$maintainer) = split(/\s+/,$_,4); next unless defined($paket{$paket_aktif}); for my $paket_override (@{$paket{$paket_aktif}}) { if ($maintainer) { if ($maintainer =~ m/(.+?)\s*=\>\s*(.+)/) { my $maintainer_lama = $1; my $maintainer_baru = $2; my $maintainer_debian = $$paket_override{Maintainer}; if (!grep($maintainer_debian eq $_, split(m:\s*//\s*:, $maintainer_lama))) { push(@ganti_maintainer, " $paket_aktif (data $$paket_override{Maintainer}, bukan $maintainer_lama)\n"); } else { $$paket_override{Maintainer} = $maintainer_baru; } } elsif ($$paket_override{Maintainer} eq $maintainer) { push(@maintainer_sama," $paket_aktif ($maintainer)\n"); } else { printf(STDERR _g("Maintainer pada %s tidak ada.")."\n", $paket_aktif) || die $!; $$paket_override{Maintainer} = $maintainer; } } $$paket_override{Priority} = $priority; $$paket_override{Section} = $section; } $override_paket{$paket_aktif} = 1; } close($hirarki_file_override); my @status_keberadaan_override = ();

Jika paket memiliki file override, maka data yang ada dalam file override akan

dibaca, dibandingkan dengan data yang terkandung dalam paket itu sendiri, untuk kemudian data paket digabungkan dengan data paket sebelumnya.

my $jumlah_paket_yang_dimasukkan = 0; for my $paket_aktif (sort keys %paket) { if (not defined($override_paket{$paket_aktif})) { push(@status_keberadaan_override,$paket_aktif); } for my $paket_override (@{$paket{$paket_aktif}}) { my $record = "Package: $paket_aktif\n"; for my $key (@data_paket) { next unless defined $$paket_override{$key}; $record .= "$key: $$paket_override{$key}\n"; } $record .= "\n"; $jumlah_paket_yang_dimasukkan++; print(STDOUT $record) or die sprintf(_g("Gagal menuliskan stdout: %s"), $!)."\n"; } } close(STDOUT);

Blok menangani penulisan data paket yang telah diolah sebelumnya ke dalam file.

my @status_tidak_sesuai keys %override_paket;

grep(!defined($paket{$_}),sort

&format_penulisan(_g("** File paket ditemukan, tetapi data paket tidak ada dalam file: **"), @status_keberadaan_override); if (@ganti_maintainer) { print(STDERR _g(" ++ Paket ada dalam file tetapi maintainer tidak sesuai. Maintainer diganti: ++")."\n", @ganti_maintainer, "\n") || die $!; } if (@maintainer_sama) { print(STDERR _g(" -- Data maintainer sesuai: --")."\n", @maintainer_sama, "\n") || die $!; } if (@status_tidak_sesuai) {

print(STDERR _g(" -- Paket ditemukan dalam file, tetapi file paket tidak ada: --")."\n", @status_tidak_sesuai, "\n") || die $!; } printf(STDERR _g(" Menuliskan %s data paket dalam file Packages.")."\n", $jumlah_paket_yang_dimasukkan) || die $!;

Blok terakhir memberikan status penulisan paket ke dalam file Packages. Penggunaan file script Perl diatas pada penelitian ini adalah sebagai berikut:
masyusuf@cahbuagus:~$ ./scanpaket pool/feisty/main/binaryi386 /dev/null | gzip -c > dists/feisty/main/binaryi386/Packages.gz masyusuf@cahbuagus:~$ ./scanpaket pool/feisty/restricted/binary-i386 /dev/null | gzip -c > dists/feisty/restricted/binary-i386/Packages.gz masyusuf@cahbuagus:~$ ./scanpaket pool/feisty/universe/binary-i386 /dev/null | gzip -c > dists/feisty/universe/binary-i386/Packages.gz masyusuf@cahbuagus:~$ ./scanpaket pool/feisty/multiverse/binary-i386 /dev/null | gzip -c > dists/feisty/multiverse/binary-i386/Packages.gz

Perintah menghasilkan file Packages.gz dalam direktori output. File-file ini menjadi database yang dijadikan acuan oleh komputer user dalam instalasi paket.

G. IMPLEMENTASI Implementasi pada penelitian ini menggunakan sample paket Xmms yang memiliki empat dependency. Xmms memiliki hirarki dependency sebagai berikut:

Gambar ??. Struktur hirarki dependency paket Xmms Dalam database, Xmms memiliki informasi dalam file Packages.gz sebagai berikut:
Package: xmms Version: 1.2.10+cvs20050809-4ubuntu5 Priority: optional Section: sound Maintainer: Josip Rodin <joy-packages@debian.org> Depends: libc6 (>= 2.3.4-1), libglib1.2 (>= 1.2.0), libgtk1.2 (>= 1.2.10-4), libice6, libsm6, libssl0.9.8 (>= libxext6, libxi6, libxxf86vm1 0.9.8a-1), libx11-6, Recommends: libasound2 (>> 1.0.10), libaudiofile0 (>= 0.2.34), libesd-alsa0 (>= 0.2.35) | libesd0 (>= 0.2.35), libgl1mesa | libgl1, libmikmod2 (>= 3.1.10), libogg0 (>= 1.1.3), libvorbis0a (>= 1.1.2), libvorbisfile3 (>= 1.1.2), zlib1g (>= 1:1.2.1), unzip Conflicts: x11ampg, x11amp, xmms-vorbis, alsa-xmms Provides: mp3-decoder, x11ampg, x11amp, xmms-vorbis, alsaxmms Replaces: x11ampg, x11amp, xmms-vorbis, alsa-xmms Architecture: i386 Filename: pool/main/xmms_1.2.10+cvs200508094ubuntu5_i386.deb Size: 1053870 Installed-Size: 7256 MD5sum: 41129fd7158e7992bf611becc7dafd1f Description: Versatile X audio player X MultiMedia System is a player for various audio formats, with a customizable interface based on X/GTK+. . It's able to read and play: * Audio MPEG layer 1, 2, and 3 (with mpg123 plug-in), * Ogg Vorbis files (with the Ogg Vorbis plug-in), * CD Audio (with CDAudio plug-in), with CDDB support, * WAV, RAW, AU (with internal wav plug-in and MikMod plugin), * MOD, XM, S3M, and other module formats (with MikMod plug-in), * .cin files, id Software. It has eSound, OSS, and disk writer support for outputting sound. .

It looks almost the same as famous Winamp, and includes those neat features like general purpose, visualization and effect plug-ins, several of which come bundled, then spectrum analyzer, oscilloscope, skins support, and of course, a playlist window.

Berdasarkan informasi di atas, Xmms memiliki dependency antara lain: 1. libc6 (>= 2.3.4-1) 2. libglib1.2 (>= 1.2.0) 3. libgtk1.2 (>= 1.2.10-4) 4. libice6 5. libsm6 6. libssl0.9.8 (>= 0.9.8a-1) 7. libx11-6 8. libxext6 9. libxi6 10. libxxf86vm1 Paket yang dibutuhkan selain paket-paket dependency adalah paket yang masuk dalam kategori Recomends. Paket yang masuk dalam kategori Recomends berdasarkan informasi di atas adalah sebagai berikut: 1. libasound2 (>> 1.0.10) 2. libaudiofile0 (>= 0.2.3-4) 3. libesd-alsa0 (>= 0.2.35) | libesd0 (>= 0.2.35) 4. libgl1-mesa | libgl1 5. libmikmod2 (>= 3.1.10)

6. libogg0 (>= 1.1.3) 7. libvorbis0a (>= 1.1.2) 8. libvorbisfile3 (>= 1.1.2) 9. zlib1g (>= 1:1.2.1) 10. unzip Paket-paket yang telah disebutkan di atas sebagian telah terinstall di system, dan sebagian yang lain belum terinstall. Script Perl berikut ini memperlihatkan paket-paket yang telah terinstall dan yang belum terinstall pada system:
#!/usr/bin/perl my %sudah_terinstall; my %belum_terinstall; my $i = 0; while(@ARGV[$i]){ $status_instalasi = `dpkg -l | grep @ARGV[$i]`; if($status_instalasi){ $sudah_terinstall{@ARGV[$i]} = @ARGV[$i]; } else{ $belum_terinstall{@ARGV[$i]} = @ARGV[$i]; } $i++; } print "Sudah terinstall di system: \n"; foreach $paket_terinstall(values %sudah_terinstall){ print $paket_terinstall; print "\n"; } print "\nBelum terinstall di system: \n"; foreach $paket_tidak_terinstall(values %belum_terinstall){ print $paket_tidak_terinstall; print "\n"; }

Script dijalankan dengan perintah berikut (file disimpan dengan nama evaluasipaket.pl):

root@cahbuagus:/home/masyusuf# ./evaluasipaket.pl libc6 libglib1.2 libgtk1.2 libice6 libsm6 libssl0.9.8 libx11-6 libxext6 libxi6 libxxf86vm1 libasound libaudiofile0 libesdlibgl1 libmikmod2 libogg0 alsa0 libesd0 libgl1-mesa libvorbis0a libvorbisfile3 zlib1g unzip Sudah terinstall di system: libc6 libice6 libsm6 libssl0.9.8 libx11-6 libxext6 libxi6 libxxf86vm1 libasound libaudiofile0 libesd-alsa0 libesd0 libgl1-mesa libgl1 libogg0 libvorbis0a libvorbisfile3 zlib1g unzip Belum terinstall di system: libmikmod2 libgtk1.2 libglib1.2

Output yang dihasilkan memperlihatkan paket apa yang sudah terinstall, dan mana yang belum terinstall. Langkah yang sama diterapkan pada paket dependency yang berada di bawah Xmms. Dependency pertama adalah Libglib1.2, yang dalam dalam file Packages.gz memiliki informasi sebagai berikut:
Package: libglib1.2 Source: glib1.2 Version: 1.2.10-10.1build1 Priority: optional Section: libs Maintainer: Akira TAGOH <tagoh@debian.org> Depends: libc6 (>= 2.3.4-1) Replaces: libgtk-doc Architecture: i386 Filename: pool/main/libglib1.2_1.2.10-10.1build1_i386.deb Size: 116460

Installed-Size: 264 MD5sum: 6274c0843eb5b1635b43a94e42c21bfd Description: The GLib library of C routines GLib is a library containing many useful C routines for things such as trees, hashes, and lists. GLib was previously distributed with the GTK+ toolkit, but has been split off as of the developers' version 1.1.0. . You do not need to install this package if you have libgtk1 (note 1, not 1.1 or 1.2) installed. libgtk1 included libglib in it. libgtk1.1 and libgtk1.2, however, do need libglib1.1 to be installed separately.

Paket Libglib1.2 hanya memiliki satu file dependency, yakni Libc6. Script evaluasipaket.pl digunakan untuk melihat status dependency dalam system, apakah sudah terinstall atau belum. Berikut ini output yang dihasilkan:
root@cahbuagus:/home/masyusuf# ./evaluasipaket.pl libc6 Sudah terinstall di system: libc6 Belum terinstall di system: masyusuf@cahbuagus:~/Kuliah/skripsi/nggonku$

Berarti paket Libc6 sudah terinstall di system dan paket Libglib1.2 sudah tidak memiliki hirarki dependency lagi di bawahnya. Evaluasi paket selanjutnya adalah paket Libgtk1.2, yang dalam file Packages.gz memiliki informasi sebagai berikut:
Package: libgtk1.2 Source: gtk+1.2 Version: 1.2.10-18 Priority: optional Section: libs Maintainer: Akira TAGOH <tagoh@debian.org> Pre-Depends: dpkg (>= 1.6.8) Depends: libgtk1.2-common (>= 1.2.10-18), libc6 (>= 2.3.4-1), libglib1.2 (>= 1.2.0), libx11-6, libxext6, libxi6 Conflicts: libgtk-dev (<< 1:1.0.2)

Replaces: libgtk1.1.5, libgtk1.1.6, libgtk1.1.9, libgtk1.1.11, libgtk1.1.12, libgtk1.1.13, libgtk1.1.14, libgtk1.1.15, libgtk1.1.16 Architecture: i386 Filename: pool/main/libgtk1.2_1.2.10-18_i386.deb Size: 836974 Installed-Size: 1772 MD5sum: 53cc8f9c8814bff2d5814f9c435dace2 Description: The GIMP Toolkit set of widgets for X The GIMP Toolkit is a freely available set of widgets for X. GTK is easy to use, and has been implemented in such projects as The GNU Image Manipulation Program (The GIMP), GNOME, a GNU desktop set of utilities for X, and gzilla, a GNU webbrowser.

Berdasarkan informasi di atas, file libgtk1.2 memiliki dependency sebagai berikut: 1. dpkg 2. libgtk1.2-common 3. libc6 4. libglib1.2 5. libx11-6 6. libxext6 7. libxi6 Hasil evaluasi paket dependency dengan script evaluasipaket.pl

menghasilkan output sebagai berikut:


root@cahbuagus:/home/masyusuf# ./evaluasipaket.pl dpkg libgtk1.2-common libc6 libglib1.2 libx11-6 libxext6 libxi6 Sudah terinstall di system: dpkg libc6 libglib1.2 libx11-6 libxext6 libxi6 Belum terinstall di system:

libgtk1.2-common masyusuf@cahbuagus:~/Kuliah/skripsi/nggonku$

Paket dependency yang belum terinstall adalah Libgtk1.2-common. Kedalaman hirarki dependency untuk Xmms bertambah satu tingkat kedalaman. Paket Libgtk1.2-common disebut juga dengan dependency of dependency. Dari informasi dalam file Packages.gz didapatkan informasi paket Libgtk1.2-common adalah sebagai berikut:
Package: libgtk1.2-common Source: gtk+1.2 Version: 1.2.10-18 Priority: optional Section: misc Maintainer: Akira TAGOH <tagoh@debian.org> Replaces: libgtk1.2 (<< 1.2.10-4) Architecture: all Filename: pool/main/libgtk1.2-common_1.2.10-18_all.deb Size: 158120 Installed-Size: 940 MD5sum: 56d2c73b4fa56d7593624cae25ae4169 Description: Common files for the GTK+ library The GIMP Toolkit is a freely available set of widgets for X. GTK is easy to use, and has been implemented in such projects as The GNU Image Manipulation Program (The GIMP), GNOME, a GNU desktop set of utilities for X, and gzilla, a GNU webbrowser. . This package contains the common files which the runtime libraries need.

Terlihat bahwa paket Libgtk1.2-common tidak memiliki dependency sama sekali. Kedalaman hirarki yang berasal dari Libgtk1.2 berhenti sampai di sini. Evaluasi selanjutnya adalah paket Libmikmod2. Informasi yang

terkandung dalam file Packages.gz adalah sebagai berikut:


Package: libmikmod2 Source: libmikmod (3.1.11-6ubuntu2) Version: 3.1.11-a-6ubuntu2

Priority: optional Section: libs Maintainer: Ingo Saitz <ingo@debian.org> Depends: libc6 (>= 2.3.2.ds1-4) Architecture: i386 Filename: pool/main/libmikmod2_3.1.11-a-6ubuntu2_i386.deb Size: 123900 Installed-Size: 316 MD5sum: cf93497cdf92d71029cd4482d40306a7 Description: A portable sound library This library is capable of playing samples as well as module files and was originally written by Jean-Paul Mikkers (MikMak) for DOS. It has subsequently been hacked by many hands and now runs on many Unix flavours. It uses the OSS /dev/dsp driver including in all recent kernels for output, as well as ALSA and EsounD, and will also write wav files. . Supported file formats include mod, stm, s3m, mtm, xm, and it.

Paket Libmikmod2 hanya memiliki satu dependency, yakni Libc6 yang telah dievaluasi pada paket Libglib1.2. Berdasarkan evaluasi paket yang telah dilakukan, maka terbentuk hirarki dependency seperti gambar ??. Pencabangan dan kedalaman hirarki bervariasi untuk setiap paket. Paket Amarok memiliki sampai 26 dependency, sehingga bisa membentuk hirarki dependency yang dalam dengan pencabangan yang sangat banyak. Instalasi hirarki paket Xmms pada komputer klien dilakukan dengan langkah-langkah berikut: 1. Buka Synaptic Package Manager, yang terdapat pada menu System -> Administration -> Synaptic Package Manager.

Gambar ??. Synaptic Package Manage r 2. B u k a Repositories pada menu Setting, aktifkan tab Third-party Software tambahkan repository server baru dengan klik tombol Add. 3. Tambahkan baris 'deb http://download.uad.ac.id/ubuntu feisty main restricted universe multiverse'. Maksudnya adalah repository server memakai protokol HTTP pada domain download.uad.ac.id/ubuntu untuk distribusi Feisty, dengan kategori paket main, restricted, universe dan multiverse.

Ga mba r ??. Pen amb aha n APT line repository server

4. Tambahkan dengan menekan tombol Add Source. Gambar ??. Reposit ory baru yang ditamba hkan pada APT line 5. K eluar dengan menekan Close, dan reload Synaptic dengan tombol Reload pada toolbar. Synaptic akan melakukan update paket sesuai dengan informasi pada database yang ada pada server.

6. Instalasi paket Xmms dilakukan dengan pencarian menggunakan tombol Search pada toolbar. Masukkan keyword xmms, lalu enter. 7. Klik paket xmms, pilih Mark for Instalation pada pilihan yang ada. Secara otomatis, semua dependency untuk Xmms ditandai untuk dilakukan instalasi, yang didahului oleh warning tentang paket apa saja yang akan ikut terinstall bersamaan dengan paket Xmms.

Gamba r ??. Paket dependency yang ditandai untuk diinstall bersamaan dengan instalasi Xmms 8. Klik Mark, diteruskan dengan Apply pada toolbar Synaptic. System akan melakukan download paket diteruskan dengan instalasi semua paket yang didownload.

H. HASIL PENGUJIAN Penelitian ini menggunakan pengujian white box, dengan mengundang beberapa responden yang bertindak sebagai end user, yang terdiri dari beberapa anggota Kelompok Studi Linux (KSL) UAD yang telah memiliki pengetahuan seputar Linux dan beberapa orang yang tidak mengetahui Linux sama sekali. Responden berjumlah sepuluh orang dengan komposisi lima

orang dari anggota KSL, dan lima orang bukan anggota KSL. Daftar pertanyaan yang diajukan adalah sebagai berikut: No Pertanyaan Sistem yang dibangun memudahkan end user? Sistem yang dibangun lebih mudah daripada dengan menggunakan command line? Sistem yang dibangun mudah dimengerti oleh end user? Sistem yang dibangun berjalan dengan baik? Tabel ??. Daftar pertanyaan white box Daftar user yang melakukan pengujian dapat dilihat pada tabel berikut: No Nama Status SS S KS TS

Tabel ??. Daftar user penguji system Hasil pengujian dapat dilihat pada tabel berikut ini: No 1. 2. 3. 4. Item Sangat Setuju Setuju Kurang Setuju Tidak Setuju Tabel ??. Hasil pengujian Berdasarkan hasil diatas, maka pengujian dengan menggunakan black box menghasilkan ?? Hasil

BAB V KESIMPULAN DAN SARAN

A. KESIMPULAN Penelitian yang dilakukan menghasilkan kesimpulan sebagai berikut: 1. Sistem repository server untuk manajemen paket pada Ubuntu 7.04 mampu mengatasi kesulitan instalasi paket yang disebabkan hirarki dependency. 2. Sistem repository server berjalan dengan baik dengan back end Lighttpd sebagai penyedia protokol HTTP untuk melayani request dan transfer file antara server dan klien.

B. SARAN Peneliti memberi saran-saran berikut terhadap pengembangan lebih lanjut atas penelitian ini: 1. Pengembangan script Perl yang digunakan untuk membuat database agar bisa digunakan pada semua rilis yang dikeluarkan oleh Ubuntu. 2. Pengembangan informasi terpadu yang terintegrasi pada paket, sehingga tidak perlu menggunakan file database. Hal ini memudahkan untuk melakukan perubahan paket tanpa harus mengulang pendataan paket pada database.

Anda mungkin juga menyukai