Diperbarui: 10 September 2020

Menggabungkan 3 Repository DVD Debian

Dibandingkan kita harus menukar-nukar DVD setiap menginstall package, akan lebih baik jika kita cukup menggunakan 1 DVD saja tetapi itu sudah termasuk seluruh package yang awalnya terpisah menjadi 3 DVD.

Do Exploit
9 min readSep 1, 2020
Merging 3 DVD ISO Debian
Background by Pixabay & Icon by FlatIcon

Target saya selaku pembuat script powershell ini adalah kalian dapat mengembangkannya kembali, sehingga jangkauan pemecahan masalahnya dapat lebih luas lagi tidak hanya untuk DVD Debian saja.

Latar Belakang Masalah

Dalam linux sendiri repository merupakan pasar gratis kita sebagai pengguna mendownload dan menginstall package / aplikasi secara online atau offline. Repository offline yang biasa digunakan adalah DVD Debian, itu terdiri dari 3 DVD.

Setiap DVD itu memiliki package yang berbeda-beda, ada kalanya kita harus menukar-nukar DVD untuk menginstall package. Jujur pasti kalian yang sudah lama bergelut dengan linux pernah merasakan hal ini bukan? Kalau iya berarti kita sama!

Sebenarnya sudah ada DVD yang berisi hampir seluruh package debian, itu disediakan langsung oleh Debian yang bernama Jigdo. Namun kekurangannya adalah ukuran file tersebut sangat besar, dan bukanlah package yang selalu dibutuhkan umumnya.

Bagusnya 3 DVD Debian biasanya berisi seluruh package yang hampir semuanya sangat umum digunakan, tapi yang mengganggu lagi adalah DVD tersebut terpisah menjadi 3. Sehingga ketika kita ingin menginstall beberapa package terkadang harus menukar DVDnya dulu.

Struktur DVD Terkait Repository

Ada beberapa direktori dan file yang perlu kita ketahui didalam setiap ISO DVD 1,2 dan 3. Keterkaitan mereka lah yang membuat penggabungan DVD ini sukses, pastikan kalian telah mengekstrak ketiga DVD tersebut. Contohnya seperti dibawah ini;

πŸ“ debian-9.12.0-amd64-DVD-1
πŸ“ dists
πŸ“ stretch
πŸ“ main
πŸ“ binary-amd64
πŸ“¦ Packages.gz
πŸ—„οΈ Packages #Deskripsi lengkap setiap package
πŸ“ pool
πŸ“ main
πŸ“ Semua File .deb #File Software Package Debian
πŸ—„οΈ md5sum.txt #Memastikan keaslian setiap package
#Begitupun folder debian lainnya
πŸ“ debian-9.12.0-amd64-DVD-2
πŸ“ debian-9.12.0-amd64-DVD-3

Kita perlu mengetahui aplikasi APT (Advanced Package Tool) yang ada di linux adalah untuk menangani penginstalan dan penghapusan software di Debian, Ubuntu, dan distribusi Linux terkait.

Selanjutnya, ketika kita mounting DVD Debian menggunakan perintah apt-cdrom add untuk menambahkan repository lokal tersebut kedalam /etc/apt/sources.list. Maka setiap kali kita menginstall package, apt akan melakukan pencarian package berdasarkan file md5sum.txt dan Packages.

Kalau langkah pertama tadi sudah dilakukan dan berhasil ditemukan lokasi package yang ingin diinstall. Apt akan membongkar package .deb yang berada di folder /pool/main.

Aplikasi Bantuan

Melakukan sebuah kolaborasi dengan aplikasi lain itu merupakan sebuah pilihan yang mantap. Berikut list aplikasi yang digunakan oleh script nanti;

  • Carbon, web generator dari potongan kode menjadi sebuah gambar yang lebih menarik, digunakan pada beberapa gambar di tulisan ini.
  • PowerShell, aplikasi prompt command untuk menjalankan suatu perintah melalui bahasa scripting seperti PowerShell Scripting.
  • 7-Zip, melakukan kompresi dari file biasa menjadi brangkas (gz, rar, zip) dan juga bisa membongkarnya kembali, ini di integrasikan dengan PowerShell script MergRepo.
  • ImgBurn, untuk membuat direktori dan folder dapat menyatu ke dalam satu file ISO, digunakan manual melalui interaksi GUI.

Pembahasan PowerShell Scripting

Keseluruhan script powershell ini dapat didownload ke Gist GitHub saya. Sekaligus pada bagian ini kita juga akan membahas seluruh isi script didalamnya selengkap mungkin.

Pokoknya hasil akhir dari keseluruhan packages DVD yang telah tergabung itu terletak pada DVD 3.

Kenapa DVD 3 bang? Bukannya DVD 1 sama 2 juga bisa?

Ukuran file ISO DVD 3 lebih besar dibandingkan yang lainnya. Jadi saya membuat titik temu dari keseluruhan DVD kedalam DVD3, karena jika DVD 3 ikutan juga menjalani proses copy-paste Packages, itu akan sangat lama.

1. Mengambil input dari pengguna

Snip Code Powershell Script MergRepo

Masukkanlah informasi yang dibutuhkan oleh program untuk menjalankan script powershell tersebut, sehingga bisa menuntaskan tujuan awalnya yaitu menggabungkan 3 DVD dengan sempurna. Contohnya seperti gambar dibawah ini;

Example of Use MergRepo

2. Membuat fungsi

Snip Code Powershell Script MergRepo

Singkatnya program akan memindahkan seluruh repository terkait didalam DVD 1 dan 2 ke DVD 3. Artinya repository terkait dalam DVD 1 berpindah ke DVD 3 lalu sama pula dengan DVD 2 ke dalam 3. Disitu terlihat ada 2 kali proses yang harus dilakukan, maka fungsi harus berjalan 2 kali. Lihatlah penggunaannya pada bagian Pemanggilan fungsi.

3. Memindahkan packages yang belum ada

Snip Code Powershell Script MergRepo

Maksudnya bagaimana sih memindahkan packages yang belum ada, jadi ada beberapa packages yang bersifat lanjutan dari DVD yang sebelumnya. Maka dari itu saat kita memindahkannya tidak bisa atau terjadi error, karena nama foldernya itu sama. Oke lanjut!

Jadi packagesnya berada didalam direktori /pool/main/ yaitu didalam folder a, b, c dan seterusnya. Maka yang kita harus pikirkan adalah cara untuk memindahkan seluruh packages dalam setiap folder a, b, c dan seterusnya itu dengan cepat, tidak mungkin kan kalau harus manual (males euy).

Pertama, variabel $list_folder akan menyimpan seluruh nama folder dalam direktori /pool/main menjadi array atau kumpulan data. Sehingga dapat diolah ke dalam perulangan for loop di baris selanjutnya.

Setelah itu variabel $target akan mengakses nama dari yang pertama hingga seterusnya. Bersamaan pula dengan jalannya perintah Move-Item, perhatikan implementasi perintah Move-Item aslinya untuk menguatkan pemahaman. Oh iya, arti dari * itu maksudnya mewakilkan semua folder dan file yang ada didalamnya.

Move-Item -Path C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-1\pool\main\a\* -Destination C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-3\pool\main\a\Seterusnya...Move-Item -Path C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-1\pool\main\z\* -Destination C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-3\pool\main\z\

4. Memindahkan packages yang bersifat lanjutan

Snip Code Powershell Script MergRepo

Sebut saja beberapa packages yang tertinggal karena penamaan folder yang sama sehingga tidak bisa dipindahkan. Pertama variabel $leave_folder tetap sama seperti sebelumnya, yaitu mengambil setiap nama folder packages yang tertinggal menjadi array.

Lalu variabel $leave_target yang didalam perulangan for loop mengambil satu demi satu nama folder yang tertinggal tersebut. Setelah itu, akan digunakan oleh perintah Move-Item, perhatikan implementasi perintah Move-Item aslinya dibawah ini.

Move-Item -Path C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-1\pool\main\b\bind9\* -Destination C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-3\pool\main\b\bind9\Seterusnya...Move-Item -Path C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-1\pool\main\x\xen\* -Destination C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-3\pool\main\x\xen\

5. Membongkar file Packages.gz

Snip Code Powershell Script MergRepo

Tujuannya disini adalah untuk memunculkan file Packages, yaitu terdapat didalam Packages.gz. Itu masih dalam bentuk tersegel sehingga kita harus membongkarnya terlebih dahulu.

Kenapa dibongkar bang?

Bukan hanya file .deb / packages saja yang digabungkan , tetapi daftar lengkap sebuah package harus di gabungkan juga. Salah satunya adalah file Packages yang berada didalam Packages.gz dan juga ada lagi nanti yaitu file md5sum.txt .

Pentingnya! Ingatlah bahwa file yang ada didalam brangkas (gz, rar, zip dan lain-lain) tidak bisa diubah langsung tanpa membongkarnya.

6. Menggabungkan daftar nama packages

Snip Code Powershell Script MergRepo

Sebelumnya kita telah membongkar Packages.gz, sekarang waktunya untuk menggabungkan isi konten file Packages. Bukan hanya file Packages saja, namun file md5sum.txt juga di gabungkan.

Pertama, baris ke 34 dan 35 menambahkan new line (`n) untuk memisahkan daftar nama Packages setiap DVD, sehingga hasil akhirnya kira-kira menjadi seperti dibawah ini;

Daftar nama Packages DVD-3 <- Titik temu
(Kosong karena `n)
Daftar nama Packages DVD-1 <- Pengikut
(`n)
Daftar nama Packages DVD-2 <- Pengikut

Lalu baris ke 38 dan 39 mulai menggabungkan isi konten file Packages dan md5sum.txt di DVD 1 sampai 2 kedalam DVD 3. Misalnya kita mulai menggabungkan dari DVD 1, jadi perintah asilnya menjadi seperti dibawah ini;

# Menggabungkan md5sum.txt
Get-Content C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-1\md5sum.txt | Select-String './pool/main/*' | Add-Content C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-3\md5sum.txt
# Menggabungkan Packages
Get-Content C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-1\dists\stretch\main\binary-amd64\Packages | Add-Content C:\Users\ZypZ\Documents\Data Penting\debian-9.12.0-amd64-DVD-1\dists\stretch\main\binary-amd64\Packages

Penjelasan singkatnya yaitu pertama program MergRepo membaca isi keseluruhan file md5sum.txt dengan perintah Get-Content, lalu perintah Select-String filter lagi untuk hanya memunculkan ./pool/main/<nama_packages>. Setelah melalui proses filter, barulah ditambahkan ke dalam md5sum.txt DVD debian ke-3 dengan perintah Add-Content.

Begitu pula dengan file Packages, namun yang membedakannya pada proses itu tidak melakukan filter Select-String.

7. Membuat file Packages menjadi brangkas (gz)

Snip Code Powershell Script MergRepo

Sebut saja Give&Back, kita telah membongkarnya sekaranglah waktu untuk mengembalikannya menjadi semula dari Packages menjadi Packages.gz .

8. Memanggil fungsi

Snip Code Powershell Script MergRepo

Tanpa fungsi, pengolahan program dari baris 9 sampai 47 hanya bisa digunakan sekali saja, artinya jika ingin melakukan penggabungan DVD dengan DVD lebih dari 1 harus di lakukan copy-paste.

Dengan adanya fungsi hal sebelumnya itu bisa diatasi, lihatlah pada gambar diatas kita sedang memanggil fungsi Merge-Dvd. Hebat bukan? Memanggilnya hanya dengan begitu saja.

Itu scriptnya lagi ngapain pas manggil fungsi Merge-Dvd bang?

Jadi pada baris ke 50, program akan menggabungkan DVD 1 dulu yaitu yang lokasi folder nya disimpan pada variabel $path_s1. Begitu pula dengan pemanggilan fungsi selanjutnya yaitu $path_s2.

Penggunaan MergRepo

1. Siapkan File ISO Debian 1-2-3

Download file ISO-DVD debian versi yang kalian butuhkan disini. Lalu extract setiap ISO ke folder menggunakan WinRar bisa, 7-Zip juga bisa.

2. Install 7-Zip dan ImgBurn
3. Download Script MergRepo

Buka powershell lalu download script powershell menggunakan perintah wget. Copy-paste saja perintah dibawah ini kedalam powershell milik kalian lalu tunggu sampai selesai di download.

wget https://gist.githubusercontent.com/michael-act/941662e66ebf96dd28be22c259dbcd1c/raw/49fb3f1c18f0dc8dbd4a1bc5a0b26d4ad55186ec/MergRepo.ps1 -o MergRepo.ps1

4. Jalankan Script MergRepo

Masih tetap di powershell kalian, gunakan perintah dibawah ini untuk meng-exsekusinya.

.\MergRepo.ps1

Lalu masukkan informasi yang dibutuhkan, seperti dibawah ini sebagai contoh Debian 9.12.0 amd64 stretch (stable release) dan lokasinya terletak pada C:\Users\ZypZ\Documents\Data Penting\ .

5. Generate folder ke ISO

Seperti yang sudah saya bilang sebelumnya, titik temu semua packages yang telah tergabung yaitu terletak pada DVD-3, maka yang perlu kalian generate dari folder menjadi ISO adalah DVD-3 tersebut.

Tunggu sampai selesai dan tadaaaaaa! Berhasil dilakukan, sekarang tinggal dicoba saja gunakan di linux kalian.

Cerita Singkat

Sebelum ide ini muncul terdapat kejadian meresahkan yaitu ketika sedang bermain dengan Debian Server, tentu kalian sudah tau apa kejadiannya. Jadi saat sedang menginstall software di linux, ada beberapa software yang tidak terdapat di ISO itu, namun berada di ISO yang lain. Sehingga mengharuskan saya untuk menukar-nukar DVD-ISO selagi menginstall.

Ide menggabungkan DVD ini sebenarnya sudah ada dari lama di forum-forum IT Internet, namun saya tidak menemukan caranya. Sehingga, saya berinisiatif untuk membuatnya dengan Windows PowerShell Integrated Scripting Environment.

Awalnya saya mengira sangat mudah hanya dengan melakukan copy-paste packages di /pool/main saja, namun tidak begitu. Ada beberapa struktur file yang harus saya pahami, sehingga di pertengahan 1 minggu mulai bertanya-tanya di forum IT.

Zonk! Hasil jawaban dari mereka tidak memuaskan pertanyaan di benak saya. Dari situ, saya tidak ingin usaha kerja keras itu sia-sia, jadi tetap dilanjutkan dan setelah 1 minggu, selesai sudah. Lalu ISO DVD nya dicoba ternyataaaa bisa digunakan!

Jangan sia-siakan usaha kerja kerasmu hanya karena pengaruh kecil dari sekitar, lanjutkan saja asal itu dapat berdampak baik ke sekitarmu juga!

--

--

Do Exploit
Do Exploit

Written by Do Exploit

I share stories about what I've learned in the past and now. Let's connect to Instagram! @do.exploit

Responses (2)