Kamis, 05 Maret 2009

Membuat repositori lokal Ubuntu dari DVD Repository

Ada banyak cara membuat repositori lokal dari DVD, coba saja cari di google. Salah dua di antaranya dapat dibaca di wiki ubuntu-id dan wiki telkomspeedy. Saya cuma mau nambahin aja cara yang lain :)

Sepanjang yang saya perhatikan, ada dua aliran pembuatan repositori lokal dari dvd ini. Yang pertama adalah cara yang mencoba merekonstruksi ulang repositori asli, yaitu seluruh isi DVD digabungkan menjadi satu kesatuan. Cara yang biasa dilakukan adalah dengan menyalin seluruh isi DVD ke dalam satu buah direktori dan menggabungkan daftar isi repositori (atau mengambil dari repositori asli) yang tertulis dalam berkas Packages. Tutorial pembuatan model ini dapat dilihat pada wiki ubuntu-id.

Aliran kedua adalah pembuatan repositori lokal yang terpisah-pisah sebanyak jumlah DVD yang ada. Misalkan jumlah DVD ada 5 maka akan ada 5 buah direktori yang masing-masing harus dimasukkan ke dalam daftar repositori yang tertulis pada berkas sources.list.

Agar ada sesuatu kontribusi baru dalam cara pembuatan repositori lokal yang akan saya jelaskan ini, saya perlu menceritakan sedikit mengenai sebuah kasus yang mungkin cocok untuk dijawab dengan cara yang akan saya tuliskan ini. Andaikan Anda menyimpan berkas iso dari DVD repository dan Anda juga ingin membuat repositori lokal. Anda tentu saja dapat melakukannya dengan cara yang dijabarkan dalam wiki telkomspeedy. Namun Anda akan mendapati repositori yang tersebar menjadi beberapa bagian. Bagaimana jika Anda ingin mendapatkan repositori utuh namun Anda tidak ingin menyalin isi dari seluruh DVD yang Anda miliki?

Jawabannya adalah dengan cara menggabungkan direktori pool/ dalam DVD yang mengandung berkas-berkas paket. Seluruh direktori tersebut digabungkan menjadi satu direktori sehingga seolah-olah berkas-berkas yang tersebar itu akan berada di bawah satu direktori tertentu. Setelah direktori pool/ "digabungkan", Anda tentunya perlu menggabungkan daftar isi seperti yang dibahas pada wiki ubuntu-id. Daftar isi ini benar-benar harus digabungkan isinya bukan hanya terlihat menjadi satu seperti isi direktori pool/.

Untuk memperjelas, coba perhatikan diagram berikut ini.

/media/hardy-1/pool/ --+
/media/hardy-2/pool/ |
/media/hardy-3/pool/ +--> /var/www/ubuntu/pool/
/media/hardy-4/pool/ |
/media/hardy-5/pool/ --+

Lima buah direktori pool/ di bawah /media/hardy-*/ akan "digabung" menjadi satu ke dalam /var/www/ubuntu/pool/.

Setelah itu, daftar isi dalam /var/www/ubuntu/dists/ akan dibuat. Bisa dengan cara menggabungkan bekas Packages yang terpecah atau mengunduh ulang dari repositori asli Ubuntu. Untuk keperluan ini, saya telah membuat skrip sederhana yang akan mengunduh berkas Packages.

Urusan penggabungan direktori dapat dilakukan dengan beberapa cara. Salah duanya adalah dengan menggunakan aufs dan mhddfs. Tutorial penggunaan mhddfs dapat dilihat di blog bang udienz. Kalau saya akan nyoba menggunakan aufs :)

Sudah cukup dulu basa-basinya, sekarang mari kita mulai tutorialnya.

1. Siapkan berkas ISO yang Anda miliki, mount point untuk seluruh berkas ISO tersebut, dan direktori tujuan.

Katakanlah berkas iso ada di /home/repo/, mount point ada di bawah /media/, dan direktori tujuan adalah /var/www/ubuntu/
2. Mount seluruh DVD yang ada.

$ sudo mount -o loop /home/repo/ubuntu-8.04-repository-i386-1_contrib.iso /media/hardy-1
$ sudo mount -o loop /home/repo/ubuntu-8.04-repository-i386-2_contrib.iso /media/hardy-2
$ sudo mount -o loop /home/repo/ubuntu-8.04-repository-i386-3_contrib.iso /media/hardy-3
$ sudo mount -o loop /home/repo/ubuntu-8.04-repository-i386-4_contrib.iso /media/hardy-4
$ sudo mount -o loop /home/repo/ubuntu-8.04-repository-i386-5_contrib.iso /media/hardy-5

3. "Gabungkan" direktori pool/ dengan aufs. aufs ini adalah sebuah modul di kernel yang berguna untuk menggabungkan sistem berkas. Pada Ubuntu Hardy Heron yang saya gunakan ini, modul tersebut sudah terpasang dan siap digunakan.

$ sudo mkdir -p /var/www/ubuntu/pool
$ sudo mount -t aufs \
-o dirs=/media/hardy-1/pool:/media/hardy-2/pool:/media/hardy-3/pool:/media/hardy-4/pool:/media/hardy-5/pool \
none /var/www/ubuntu/pool

Dengan demikian, direktori /var/www/ubuntu/pool/ akan berisi gabungan direktori pool/ yang terpisah dalam beberapa DVD.
4. Untuk berkas daftar isi repositori dari repositori Ubuntu. Anda juga dapat menggabungkan berkas daftar isi yang terpecah namun kali ini saya akan mencontohkan cara yang lain, yaitu dengan mengunduh ulang dari repositori Ubuntu.

Unduh skrip pengunduh daftar isi.

$ wget http://github.com/fajran/iseng/raw/master/download-debian-dists/download-dists.sh
$ chmod +x download-dists.sh

Gunakan skrip tersebut untuk mengunduh daftar isi.

$ ./download-dists.sh \
http://kambing.ui.edu/ubuntu/ \
hardy \
main,restricted,universe,multiverse \
i386 \
/var/www/ubuntu/

Skrip tersebut meminta lima buah parameter. Parameter pertama adalah URL dasar sebuah repositori Ubuntu, parameter kedua adalah daftar kode nama rilis, parameter ketiga adalah daftar komponen, parameter keempat adalah daftar arsitektur, dan parameter kelima adalah direktori tujuan. Daftar yang disebut dalam parameter kedua, ketiga, dan keempat dipisahkan oleh sebuah koma.

Pastikan Anda telah menginstal wget sebelum menjalankan skrip tersebut.

Ya itu saja! Repositori lokal Anda sudah tersedia di /var/www/ubuntu.

Oh iya, saya belum benar-benar mencobanya :P namun kira2 caranya seperti itu. Tolong laporkan jika Anda mencoba tutorial di atas :)

Kalau Anda jeli, Anda akan melihat kegunaan tambahan dengan menggunakan cara ini. Anda dapat menyediakan berkas ISO DVD repository dan repositori siap akses dengan tetap menghemat penggunaan harddisk! Jika Anda menyediakan repositori dan juga berkas ISO DVD repository, maka Anda sebenarnya telah menyimpan dua buah salinan repositori. Boros bukan?

Anda juga dapat menambahkan direktori yang dapat ditulisi pada harddisk saat membuat direktori gabungan dengan aufs. Dengan demikian, Anda juga dapat menyediakan repostori -updates dan -security yang diperbaharui setiap saat.

Karena repositori utama itu tidak akan berubah lagi isinya, maka sebenarnya Anda dapat menyimpannya dalam media hanya tulis (read only) seperti berkas ISO (termasuk dalam bentuk ISO DVD repository!). Berkas-berkas dalam repositori Ubuntu yang dapat berubah isinya (-updates dan -security) dapat tetap Anda simpan dalam harddisk. Berhubung seluruh pembagian repositori ini menggunakan satu direktori yang sama untuk menyimpan berkas paket (yaitu dalam direktori pool/), maka Anda dapat menggunakan aufs untuk menggabungkan direktori pool/ yang sebenarnya tersebar di beberapa tempat, yaitu harddisk dan berkas ISO.

Bagi yang pusing membaca tulisan saya, mudah2an diagram berikut dapat memperjelas.

/media/repo/ubuntu/pool/ --+
|
/media/iso-1/pool/ +--> /var/www/ubuntu/pool/
/media/iso-2/pool/ |
/media/iso-./pool/ |
/media/iso-n/pool/ --+

Isi dari /media/iso-* adalah isi dari berkas ISO yang tentu saja tidak dapat ditulisi. Sedangkan /media/repo/ubuntu/ terletak pada harddisk yang bisa ditulisi. Anda menyimpan repositori utama pada berkas iso yang kemudian dikaitkan ke /media/iso-* dan repositori -updates dan -security, yang isinya terus berubah, Anda simpan dalam harddisk pada /media/repo/ubuntu/.

Sekian saja. Semoga bermanfaat :)


Tidak ada komentar:

Posting Komentar