Manajemen Paket APT pada UBUNTU

3/7/10


Pada mulanya paket pada linux berformat .tar.gz. dimana user harus mengcompile program yg diinginkan pada mesin linux. Pada perkembangan selanjutnya para pengembang linux merasa perlu menciptakan suatu metode yang lebih praktis, cepat, dan efisian untuk memudahkan manajemen paket dan mengatur ketergantungannya dengan paket lain serta menjaga konfigurasinya saat proses upgrade.
Saat ini kita mengenal bermacam format paket yg dipelopori oleh distro-distro besar misalnya *.deb yg dipakai Debian dan variannya *.rpm yg dipakai Red Hat dan variannya *.tgz dan masih ada lagi yg dipakai oleh distro-distro lainnya. Dan masing-masing distro mengembangkan tools-tools untuk mengelola paket-paket tersebut, salah satunya APT (Advanced Packaging Tools) yang dikembangkan oleh Debian untuk mengelola *.deb dan di porting oleh Conectiva untuk dipakai pada *.rpm yang sempat diadopsi oleh beberapa distro.


Konfigurasi Dasar
Untuk beroperasi APT menggunakan sebuah file yang berisi list sumber paket dimana paket-paket akan diambil. File ini berlokasi di /etc/apt/sources.list
Isi file ini biasanya dinamakan repositori dan berformat :

deb http://host/debian distribution section1 section2 section3
deb-src http://host/debian distribution section1 section2 section3


kalimat pertama pada tiap baris deb atau deb-src mengindikasikan type dari arsip apakah berisi paket binary (deb) yang biasa digunakan atau paket source (deb-src), yang berisi source asli program plus control file (.dsc) dan diff.gz. Kalimat kedua menunjukkan lokasi dari sumber paket.

Menambahkan CDROM ke sources.list

Jika ingin menggunakan cdrom untuk menginstal dan mengupdate paket, lokasi dari cdrom harus ditambahkan di sources.list untuk ini dapat dipergunakan “apt-cdrom add” :

# apt-cdrom add


perintah ini akan mounting cdrom, dan melihat informasi paket pada cd. Opsi lainnya :

-h - program help
-d directory - CD-ROM mount point
-r - Rename a recognized CD-ROM
-m - No mounting
-f - Fast mode, don’t check package files
-a - Thorough scan mode

contoh :

# apt-cdrom -d /home/kov/mycdrom add


dapat juga mengidentifikasi cdrom tanpa menambahkannya ke list :

# apt-cdrom ident

Mengupdate Daftar Paket
Program packaging menggunakan database khusus untuk mengingat paket-paket yang sudah terinstall, yang tidak terinstall dan yang bisa diinstall. Program apt-get menggunakan database ini untuk mengetahui bagaimana paket diinstall oleh user dan mencari paket-paket tambahan yang dibutuhkan agar program dapat bekerja dengan baik.

Untuk mengupdate database ini gunakan perintah “apt-get update”, perintah ini akan mencari daftar arsip yang ditemukan di /etc/apt/sources.list
Dianjurkan menjalankan perintah ini secara teratur agak informasi paket dan update yang tersedia selalu diperbarui, terutama informasi update yang berhubungan dengan masalah keamanan system.

Mencari Paket
Untuk mencari suatu paket apakah tersedia pada repository serta informasi lainnya dapat digunakan perintah “apt-cache search” diikuti nama atau deskripsi suatu paket.

Contoh :
#apt-cache search gaim
beagle - indexing and search tool for your personal data
beagle-dev - library for accessing beagle (development files)
gaim - multi-protocol instant messaging client
gaim-data - multi-protocol instant messaging client - data files
gaim-dbg - Debugging symbols for Gaim
libbeagle0 - library for accessing beagle (development files)
nautilus-sendto - integrates Evolution and Gaim into the Nautilus file manager
beagle-backend-evolution - evolution data backend for beagle
gaim-autoprofile - template-based profile generator for Gaim
gaim-encryption - gaim plugin that provides transparent encryption
gaim-extendedprefs - extended preferences plugin for the instant messenger gaim
gaim-guifications - toaster popups for gaim
gaim-hotkeys - Configurable global hotkeys for gaim
gaim-irchelper - IRC extensions for Gaim
gaim-otr - Off-the-Record Messaging plugin for gaim
gaim-themes - Smiley themes collection for gaim


setelah diketahui paket tersedia dapat dilihat informasi lebih detail dengan perintah “apt-cache show” diikuti nama paket,

Contoh :
#apt-cache show gaim
Package: gaim
Priority: optional
Section: net
Installed-Size: 3712
Maintainer: Ubuntu Core Developers <>
Original-Maintainer: Robert McQueen <>
Architecture: i386
Version: 1:2.0.0+beta3.1-1ubuntu9
Replaces: gaim-meanwhile (<= 1.2.8-1), gaim-data (<= 1:2.0.0+beta3-5) Depends: gaim-data (= 1:2.0.0+beta3.1-1ubuntu9), libao2 (>= 0.8.6), libaspell15 (>= 0.60), libatk1.0-0 (>= 1.12.1), libaudiofile0 (>= 0.2.3-4), libc6 (>= 2.4-1), libcairo2 (>= 1.2.4), libdbus-1-3, libdbus-glib-1-2 (>= 0.71), libfontconfig1 (>= 2.3.0), libgadu3 (>= 1:1.6+20060616), libgcrypt11 (>= 1.2.2), libglib2.0-0 (>= 2.12.0), libgnutls13 (>= 1.4.0-0), libgtk2.0-0 (>= 2.10.3), libgtkspell0 (>= 2.0.2), libice6, liblaunchpad-integration0 (>= 0.0patch26), libmeanwhile1 (>= 1.0.2), libpango1.0-0 (>= 1.14.5), libperl5.8 (>= 5.8.8), libpng12-0 (>= 1.2.8rel), libsm6, libstartup-notification0 (>= 0.8-1), libx11-6, libxcursor1 (>> 1.1.2), libxext6, libxfixes3, libxi6, libxinerama1, libxrandr2, libxrender1, libxss1, zlib1g (>= 1:1.2.1)
Suggests: gnome-panel (>= 2.1) | kicker (>= 3.1) | docker, evolution-data-server (>= 1.2.0), dbus-1-utils, libzephyr3, tcl8.4 (>= 8.4.5), tk8.4 (>= 8.4.5)
Conflicts: gaim-meanwhile (<= 1.2.8-1), gaim-data (<= 1:2.0.0+beta3-5) Filename: pool/main/g/gaim/gaim_2.0.0+beta3.1-1ubuntu9_i386.deb Size: 1343210 MD5sum: f4265897720e73fcd35ffa1abc26c997 SHA1: dbcb94adbbaf0322465728ef45fd905927a8033c SHA256: e7a001cd9e995ba2ca228071a585ad8bd762bcc953ceae0eebf1888dc9c22181 Description: multi-protocol instant messaging client Gaim is a modular Instant Messaging client capable of using AIM, ICQ, Yahoo!, MSN, IRC, Jabber, Napster, Zephyr, and Gadu-Gadu all at once. It is written using GTK+ and is licensed under the GPL.
.
As the name suggests, it was originally designed for using AOL's Instant Messenger service (you can sign up at http://www.aim.aol.com/). Consequently it contains many of the same features as AOL's IM client, as well as incorporating many new and unique features, such as the multiple protocol support.
.
Gaim used to ship a gaim-gnome package which contained an applet for
the GNOME 1.4 panel. This has been replaced in favor of a tray
icon plugin, contained in this version. To see it in GNOME 2, use
the Notification Area applet (included in gnome-panel versions 2.1 and
later), or in KDE 3.1 it should appear in the Kicker's system tray.
Users of other window managers should investigate docker, the WM dock
app.


Menginstall Paket
Untuk menginstall aplikasi dapat dilakukan dengan perintah “apt-get install”,

contoh :

# apt-get install xchat

contoh lain :
# apt-get install nautilus
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
bonobo libmedusa0 libnautilus0
The following NEW packages will be installed:
bonobo libmedusa0 libnautilus0 nautilus
0 packages upgraded, 4 newly installed, 0 to remove and 1 not upgraded.
Need to get 8329kB of archives. After unpacking 17.2MB will be used.
Do you want to continue? [Y/n]


pada contoh diatas paket nautilus bergantung kepada paket-paket lain, namun APT akan mengambil langsung dari arsip, hal ini akan dilakukan otomatis hanya dengan menekan “y”. APT akan mengkonfirmasi hanya jika harus menginstall paket yang tidak didefinisikan di baris perintah.

Opsi lain yang mungkin berguna :

-h This help text.
-d Download only - do NOT install or unpack archives
-f Attempt to continue if the integrity check fails
-s No-act. Perform ordering simulation
-y Assume Yes to all queries and do not prompt
-u Show a list of upgraded packages as well

Upgrade Paket


Upgrade paket dapat dilakukan dengan perintah “apt-get upgrade” dapat juga ditambahkan opsi -u sehingga APT menampilkan list paket-paket yang akan diupgrade. APT akan mendownload versi terakhir paket dan menginstallnya dengan urutan yang benar. Sangat penting untuk menjalankan “apt-get update” sebelum menjalankan perintah upgrade.

Contoh :
# apt-get -u upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages have been kept back
cpp gcc lilo
The following packages will be upgraded
adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent
ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev
libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0
libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc
29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used.
Do you want to continue? [Y/n]



Upgrade rilis distro

Untuk mengupgrade distro ke rilis terbaru dengan tetap menjaga konfigurasi sistem dapat dilakukan dengan perintah “apt-get -u dist-upgrade”

# apt-get -u dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Done
The following NEW packages will be installed:
cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1
libpcre2 logrotate mailx
The following packages have been kept back
lilo
The following packages will be upgraded
adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc
indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0
libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev
liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit
procps psmisc
31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded.
Need to get 0B/7098kB of archives. After unpacking 3118kB will be used.
Do you want to continue? [Y/n]


sekarang paket-paket akan diugrade, beberapa paket baru akan ikut diinstall (depedency).
seperti terlihat diatas paket lilo tetap dibiarkan, hal ini karena terjadi permasalahan dengan dependency, untuk mencari sebabnya jalankan :

# apt-get -u install lilo
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
logrotate mailx
The following packages will be REMOVED:
debconf-tiny
The following NEW packages will be installed:
cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
logrotate mailx
The following packages will be upgraded
lilo
1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded.
Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used.
Do you want to continue? [Y/n]


seperti terlihat diatas lilo konflik dengan paket debconf-tiny yang berarti lilo tidak dapat diinstall tanpa menghapus paket debconf-tiny

untuk mengetahui paket mana yang tetap dan yang mana harus dibuang dapat dilakukan dengan :

# apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Starting
Starting 2
Investigating python1.5
Package python1.5 has broken dep on python1.5-base
Considering python1.5-base 0 as a solution to python1.5 0
Holding Back python1.5 rather than change python1.5-base
Investigating python1.5-dev
Package python1.5-dev has broken dep on python1.5
Considering python1.5 0 as a solution to python1.5-dev 0
Holding Back python1.5-dev rather than change python1.5
Try to Re-Instate python1.5-dev
Done
Done
The following packages have been kept back
gs python1.5-dev
0 packages upgraded, 0 newly installed, 0 to remove and 2 not upgraded.



Menghapus file-file yang tidak terpakai
Ketika menginstall paket APT mengambil paket dari host yang terdapat pada /etc/apt/sources.list dan menyimpannya di repositori lokal (/var/cache/apt/archives/) lalu proses installasi dilanjutkan dari lokal.
Dari waktu ke waktu repositori lokal akan membengkak dan menghabiskan ruang harddisk. Untuk menghindari hal ini gunakan perintah “apt-get clean” dan “apt-get autoclean”.
“apt-get clean” akan menghapus semua file pada /var/cache/apt/archives/ dan /var/cache/apt/archives/partial/
sedangkan “apt-get autoclean” secara otomatis hanya menghapus file-file lama yang tidak terpakai lagi/telah ada rilis terbaru.

Referensi :
- APT How To, Gustavo Noronha Silva
- The Official Ubuntu Book, Benjamin Mako Hill