Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

Upgrade Ubuntu

Sebentar lagi Ubuntu terbaru akan rilis. Seperti biasanya, saya akan menjalankan ritual 6 bulanan yang terdiri dari kegiatan sbb:

  • Unduh ISO Ubuntu terbaru

  • Bakar ke CD

  • Backup isi home folder

  • Backup mailbox Thunderbird

  • Remove semua hidden file di home folder

  • Reinstall Ubuntu dengan memformat partisi sistem

Saya tidak terlalu suka upgrade, karena banyak menyisakan sampah dan jebakan. Lebih nyaman dan cepat memformat partisi sistem daripada troubleshoot hasil upgrade.

Karena ritual ini akan terus dilakukan di masa depan, ada baiknya kita optimasi workflownya agar lebih efisien.

Berikut adalah requirement saya untuk workflow upgrade ini:

  • Saya memiliki beberapa aplikasi yang mandatory tapi tidak termasuk dalam paket default Ubuntu, seperti Java SDK, Thunderbird, Inkscape, dan beberapa aplikasi lain. Saya ingin menyimpan daftar aplikasi ini, dan me-reuse-nya setiap kali upgrade.

  • Saya ingin memisahkan proses download *.deb yang memakan waktu lama dengan proses instalasi aplikasi. Tujuannya, agar proses download *.deb ini bisa ‘dititipkan’ di komputer lain yang online 24/7. Setelah selesai, hasilnya tinggal dicopy ke komputer saya, dan langsung diinstal

Setelah browsing kesana kemari, akhirnya saya mendapatkan workflow yang sesuai, sebagai berikut.

  • Buat dulu daftar paket yang ingin diinstal, dari instalasi Ubuntu yang sekarang

  • Lakukan proses instalasi

  • Buat daftar URL untuk mengunduh *.deb menggunakan Ubuntu yang baru diinstal

  • Jalankan proses unduh di komputer lain yang online 24/7

  • Setelah selesai, pindahkan hasilnya ke komputer ber-Ubuntu baru, dan instal

Membuat daftar aplikasi

Daftar aplikasi yang terinstal di komputer yang kita pakai sekarang dapat didapatkan dengan menjalankan perintah berikut di command prompt.

dpkg --get-selections | sed -n 's/^\(.*\)\tinstall$/\1$/p' | cut -f1 > daftar_aplikasi.txt

Buka file daftar_aplikasi.txt dengan Text Editor dan buang aplikasi yang terinstal secara default. Setelah diedit, file saya berisi sebagai berikut.

ttf-inconsolata
ttf-droid
nautilus-open-terminal
mc
chmsee
unrar
comix
keepassx
subversion
git-svn
gimp
network-manager-openvpn
network-manager-openvpn-gnome
network-manager-pptp
network-manager-pptp-gnome
network-manager-vpnc
network-manager-vpnc-gnome
openssh-server
gnome-alsamixer
vlc
rtorrent
hamster-applet
timer-applet
inkscape
mysql-server
mysql-query-browser
mysql-admin
sun-java6-jdk
ubuntu-restricted-extras
build-essential
ant

Proses Instalasi

Tidak ada yang istimewa dari proses instalasi. Berikut checklist yang saya gunakan:

  • Backup isi home folder

  • Backup mailbox Thunderbird, biasanya ada di folder .mozilla-thunderbird

  • Remove semua hidden file dan folder di home. File hidden ini berisi konfigurasi aplikasi yang terinstal. Kita tidak ingin sistem baru kita menggunakan konfigurasi lama. Nanti jadi tidak terlihat barunya.

  • Reinstall Ubuntu dengan memformat partisi sistem

  • Edit /etc/apt/sources.list agar menggunakan mirror lokal. Saya biasa menggunakan kambing.ui.ac.id

  • Jalankan apt-get update untuk mengupdate database aplikasi

Berikut isi file /etc/apt/sources.list saya.

deb http://kambing.ui.ac.id/ubuntu/ intrepid main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ intrepid-updates main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ intrepid-security main restricted universe multiverse

Setelah install ulang, file ini akan menjadi seperti ini

deb http://kambing.ui.ac.id/ubuntu/ jaunty main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ jaunty-updates main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ jaunty-security main restricted universe multiverse

Segera setelah database aplikasi kita up-to-date, kita bisa lanjut ke langkah berikutnya.

Membuat daftar URL untuk download

Jalankan perintah berikut di command prompt.

cat daftar_aplikasi.txt |  tr '\n' ' '| xargs apt-get install -qq --print-uris | cut -d\' -f2 > daftar_url.txt

Perintah ini akan menghasilkan file daftar_url.txt, yang berisi daftar URL file *.deb yang dibutuhkan untuk instalasi.

Mengunduh *.deb

Berbekal daftar_url.txt, kita bisa segera menjalankan proses pengunduhan di komputer lain yang online 24/7. Komputer ini tidak perlu menjalankan Ubuntu terbaru. Bahkan tidak harus menjalankan Linux.

Jika komputer tersebut juga menjalankan Linux, maka kita bisa menggunakan wget dengan perintah sebagai berikut.

wget -b -c -nc -o donlod-ubuntu.log -i daftar_url.txt

Proses pengunduhan dapat dipantau dengan melihat isi file donlod-ubuntu.log. Gunakan perintah tail seperti ini.

tail -f donlod-ubuntu.log 

Tekan Ctrl+C untuk keluar dari tail.

Proses ini akan menghasilkan banyak file *.deb di folder tempat kita menjalankan perintah wget tadi. Setelah semua file didapatkan, copy ke komputer kita yang baru diinstal tersebut.

Instalasi *.deb

Copy semua file *.deb ke folder /var/cache/apt/archives di komputer berUbuntu baru. Selanjutnya kita lakukan proses instalasi dengan mengetik perintah berikut di command prompt.

cat daftar_aplikasi.txt  |  tr '\n' ' '| xargs apt-get install -y

Tunggu sejenak sampai selesai.

Replikasi Instalasi

Bagaimana jika kita disuruh melakukan instalasi identik di banyak komputer sekaligus? Gampang, berikut caranya.

Instal salah satu komputer sampai selesai. Lengkapi semua aplikasi yang dibutuhkan. Segera setelah selesai, extract daftar aplikasi yang terinstal menggunakan perintah berikut.

dpkg --get-selections > daftar_instalasi.txt

Copy file daftar_instalasi.txt ini berikut isi folder /var/cache/apt/archives/ ke komputer berikut yang akan diinstal.

Di komputer berikut, copy file *.deb ke folder /var/cache/apt/archives/. Lalu jalankan perintah berikut untuk mengisi daftar instalasi.

sudo dpkg --set-selections < daftar_instalasi.txt

Setelah itu, jalankan perintah berikut untuk memulai proses instalasi.

sudo apt-get dselect-upgrade

Semoga bermanfaat.