Membangun Local Repository Ubuntu Feisty Fawn (7.04)
Berikut ini merupakan tutorial membuat repo lokal dari DVD Repository Ubuntu Feisty (7.04), sebelumnya saya ucapkan terima kasih kepada mas yuda yang telah memberikan DVD Repo ini sebagai oleh-oleh selama saya berada di jogyakarta, dan sebelum mengirimkan DVD Repo ini kepada pak ketua KPLI Aceh, maka saya mencobanya terlebih dahulu pada komputer milik teman saudara saya yaitu David (thanks untuk ijin pakai komputernya)
pada komputer yang ia miliki sudah saya install distro Ubuntu Feisty agar secara perlahan dapat menggunakan Linux untuk kebutuhan Movie Editing, sesuai dengan jurusan yang ia ambil di bangku kuliahan :p
1. Persiapan.
Ubuntu Feisty Fawn memiliki empat (4) buah DVD, dan sebagai langkah awal dari tutorial ini, saya akan membuat satu folder pada direktori home user david dan pastikan Anda memiliki space minimal sebesar 15Gb :
$ sudo su -
# mkdir ~david/repo
Setelah membuat folder tersebut, maka saya akan meng-copy seluruh isi empat (4) buah DVD tersebut satu per satu :
# mount /dev/cdrom
# rsync -avx –progress /cdrom/. /home/david/repo/.
# umount /dev/cdrom
# eject
Ulangi langkah diatas hingga selesai, setelah semua isi dari DVD di copy ke direktory /home/david/repo, maka kita lanjutkan ke langkah berikutnya.
2. Membuat Daftar Paket.
Untuk membuat daftar paket, Anda dapat mengikuti langkah-langkah berikut :
a. Masukkan DVD ke-2 (dua).
# cp /cdrom/dists/feisty/universe/binary-i386/Packages /home/david/repo/dists/feisty/universe/binary-i386/
b. Masukkan DVD ke-3 (tiga) dan ke-4 (empat), lakukan perintah berikut pada ke 2 (dua) DVD tersebut.
# cat /cdrom/dists/feisty/universe/binary-i386/Packages >> /home/david/repo/dists/feisty/universe/binary-i386/Packages
c. Buat ulang berkas Packages.gz dan Packages.bz2.
# cd ~david/repo/dists/feisty/universe/binary-i386/
# rm Packages.gz Packages.bz2
# gzip -9 -c Packages > Packages.gz
# bzip2 -9 -c Packages > Packages.bz2
3. Menggunakan Repositori Lokal.
Jika Anda ingin menggunakan repositori yang terdapat dalam harddisk Anda, isi sources.list berikut dapat digunakan.
# nano /etc/apt/sources.list
[…]
deb file:///home/david/repo feisty main restricted universe multiverse
[…]
Ubahlah /home/david/repo menjadi direktori tempat Anda meletakkan repositori Ubuntu. Pada tahap ini Anda sudah berhasil membangun repo lokal, bila ingin share ke pada teman-teman Anda yang berada dalam satu jaringan, maka Anda harus meng-install webserver atau ftp server, tergantung Anda ingin melalui http atau ftp…semua tergantung oleh Anda, dan selanjutnya saya akan menambah tulisan mengenai cara meng-copy kembali repo yang telah Anda buat ke dalam DVD, agar Anda bisa membagikannya kepada teman-teman Anda, cara ini sudah banyak di tulis di internet dan saya akan mengutip tulisan dari mas Udienz … terima kasih mas atas tutorialnya
, berikut langkah-langkahnya :
1. Membuat Direktori Untuk DVD.
Disini saya meletakkan repository Ubuntu pada direktori /var/ftp/ubuntu, maka saya membuat satu folder lagi pada direktori /var/ftp :
# cd /var/ftp
# mkdir ubuntu-dvd
2. Installasi Paket Pendukung.
Install terlebih dahulu paket debpartial dan ruby, selanjutnya buatlah script bernama debcopy pada direktori /var/ftp (sesuaikan dengan lokasi dimana repo Anda berada).
# apt-get install debpartial
# apt-get install ruby
Setelah itu jalankan debpartial…
# debpartial –nosource –dirprefix=ubuntu –section=main,universe,multiverse,restricted –dist=feisty –size=DVD ubuntu/ ubuntu-dvd/
kemudian buat file debcopy, dan edit dengan editor kesukaan Anda…
# touch debcopy
# chmod +x debcopy
# nano debcopy
Isikan file debcopy dengan script berikut…
#!/usr/bin/ruby#
# debcopy - Debian Packages/Sources partial copy tool
#
# Usage: debcopy [-l]
#
# where is a top directory of a debian archive,
# and is a top directory of a new debian partial archive.
#
# debcopy searches all Packages.gz and Sources.gz under /dists
# and copies all files listed in the Packages.gz and Sources.gz
# files into from . -l creates symbolic links
# instead of copying files.
#
# Copyright (C) 2002 Masato Taruishi
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License with
# the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL;
# if not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
#
require ‘getoptlong’
require ‘zlib’
require ‘ftools’
$link = false
def usage
$stderr.puts “Usage: #{__FILE__} [-l] ”
exit 1
end
def each (file, &block)
fin = Zlib::GzipReader.open(file)
fin.each do |line|
yield line
end
fin.close
end
def each_file (file, &block)
each(file) do |line|
if /Filename: (.*)/ =~ line
yield $1
end
end
end
def each_sourcefile (file, &block)
dir = nil
each(file) do |line|
case line
when /^Directory: (.*)$/
dir = $1
when /^ \S+ \d+ (\S+)$/
yield dir + “/” + $1
end
end
end
def calc_relpath (source, dest)
pwd = Dir::pwd
Dir::chdir source
source = Dir::pwd
Dir::chdir pwd
Dir::chdir dest
dest = Dir::pwd
Dir::chdir pwd
src_ary = source.split(”/”)
src_ary.shift
dest_ary = dest.split(”/”)
dest_ary.shift
return dest if src_ary[0] != dest_ary[0]
src_ary.clone.each_index do |i|
break if src_ary[0] != dest_ary[0]
src_ary.shift
dest_ary.shift
end
src_ary.size.times do |i|
dest_ary.unshift(”..”)
end
dest_ary.join(”/”)
end
def do_copy(path)
if $link
pwd=calc_relpath(File.dirname($dest_dir + “/” + path), $source_dir)
File.symlink(pwd + “/” + path, $dest_dir + “/” + path)
else
File.copy($source_dir + “/” + path, $dest_dir + “/” + path)
end
end
def copy(path)
s=$source_dir + “/” + path
d=$dest_dir + “/” + path
if FileTest.exist?(d)
$stats[”ignore”] += 1
return
end
if FileTest.exist?(s)
File.mkpath(File.dirname(d))
do_copy(path)
$stats[”copy”] += 1
else
$stats[”notfound”] += 1
$stderr.puts s + ” not found.”
end
end
opts = GetoptLong.new([”–symlink”, “-l”, GetoptLong::NO_ARGUMENT],
[”–help”, “-h”, GetoptLong::NO_ARGUMENT])
opts.each do |opt,arg|
case opt
when “–symlink”
$link = true
when “–help”
usage
end
end
usage if ARGV.size != 2
$source_dir = ARGV.shift
$dest_dir = ARGV.shift
if $link
$source_dir = Dir::pwd + “/” + $source_dir unless $source_dir =~ /\A\//
$dest_dir = Dir::pwd + “/” + $dest_dir unless $dest_dir =~ /\A\//
end
$stats = {}
$stats[”ignore”] = 0
$stats[”copy”] = 0
$stats[”notfound”] = 0
open(”|find #{$dest_dir}/dists -name Packages.gz”) do |o|
o.each_line do |file|
file.chomp!
print “Processing #{file}… ”
$stdout.flush
each_file(file) do |path|
copy(path)
end
puts “done”
end
end
open(”|find #{$dest_dir}/dists -name Sources.gz”) do |o|
o.each_line do |file|
file.chomp!
print “Processing #{file}… ”
$stdout.flush
each_sourcefile(file.chomp) do |path|
copy(path)
end
puts “done”
end
end
puts “Number of Copied Files: ” + $stats[”copy”].to_s
puts “Number of Ignored Files: ” + $stats[”ignore”].to_s
puts “Number of Non-existence File: ” + $stats[”notfound”].to_s
Kemudian jalankan…
# ruby debcopy ubuntu/ ubuntu-dvd/ubuntu0
# ruby debcopy ubuntu/ ubuntu-dvd/ubuntu1
# ruby debcopy ubuntu/ ubuntu-dvd/ubuntu2
# ruby debcopy ubuntu/ ubuntu-dvd/ubuntu3
Direktori ubuntu/ adalah direktori dimana hasil mirror yang telah anda lakukan dengan debmirror atau direktori dimana tempat repository ubuntu berada, sedangkan direktori ubuntu-dvd adalah direktori hasil pemecahan repository menjadi ukuran DVD. Bila Anda menggunakan Debian silakan subtitusi ubuntu dengan debian. Bila tidak ada masalah maka Anda akan menjumpai direktori pool/ dan dists/ dalam direktori ubuntu-dvd/ubuntuX.
Sebelum di buat berkas iso alangkah baiknya bila di buat berkas md5sum nya dengan cara
# cd ubuntu-dvd/ubuntu0 && find . -type f -print0 | xargs -0 md5sum > md5sum.txt
# cd ubuntu-dvd/ubuntu1 && find . -type f -print0 | xargs -0 md5sum > md5sum.txt
# cd ubuntu-dvd/ubuntu2 && find . -type f -print0 | xargs -0 md5sum > md5sum.txt
# cd ubuntu-dvd/ubuntu3 && find . -type f -print0 | xargs -0 md5sum > md5sum.txt
setelah itu buat berkas iso nya dengan memasukkan perintah
# mkisofs -f -J -r -o ubuntu-dvd-0.iso ubuntu-dvd/ubuntu0
# mkisofs -f -J -r -o ubuntu-dvd-1.iso ubuntu-dvd/ubuntu1
# mkisofs -f -J -r -o ubuntu-dvd-2.iso ubuntu-dvd/ubuntu2
# mkisofs -f -J -r -o ubuntu-dvd-3.iso ubuntu-dvd/ubuntu3
Begitu sukses membuat iso image yang harus dilakukan hanyalah mem-burning image itu ke DVD, Anda dapat meletakkan file iso image dilokasi lain, pada contoh diatas file iso image akan disimpan pada direktori /var/ftp, apabila Anda ingin meletakkan pada lokasi yang berbeda, maka Anda dapat melakukan perintah seperti contoh di bawahini :
# mkisofs -f -J -r -o /media/sda1/ubuntu-dvd-0.iso ubuntu-dvd/ubuntu0
Jadi dah mirror Anda di DVD, untuk menambahkannya ke dalam daftar mirror di komputer, Anda cukup dengan menjalankan apt-cdrom, program itu akan meminta Anda memasukkan DVD/CD yg akan dijadikan sumber paket.
Referensi :
1. Tutorial Repositori Lokal.
2. Membuat DVD Repository Debian/Ubuntu.






This is default description text on Padangan Themes, of course you can change this text via you profile administration.