Seri Manajemen Paket Ubuntu 7: Mengenal Apt-Cache

Dapatkan update terbaru Linuxku.com di kanal Telegram https://telegram.me/linuxkudotcom

Tutorial ini menjelaskan betapa bergunanya perintah apt-cache selaku bagian dari program APT di Ubuntu. Setelah pada seri ke-3 menjelaskan dpkg dan seri ke-4 menjelaskan apt secara umum, kini saatnya artikel ini lebih spesifik menjelaskan bagaimana database dari APT itu bisa dilihat isinya (di-query) oleh pengguna. Keperluannya bisa sangat luas. Dengan apt-cache, pengguna bisa melihat dependensi dari suatu paket, dependensi-terbalik dari paket yang sama, status repositori yang sedang digunakan, kemungkinan upgrade dan downgrade suatu paket, dan lain-lain. Perintah ini meskipun jarang dikenal pengguna akhir, tetapi menyimpan fitur yang sangat bagus. Tulisan ini membahas apt-cache secara ringkas hanya pada perintah yang diprioritaskan agar mudah untuk pemula. Tulisan ini dilengkapi kamus istilah di bagian akhir. Semoga tulisan ini bermanfaat.

Serial Manajemen Paket Ubuntu

Berikut serial panduan manajemen paket dari kami.

Sekilas Mengingat APT

APT adalah program yang besar. APT merupakan kumpulan dari program-program yang memiliki satu fungsi masing-masing. Di antara program-program itu adalah apt-cache. Program apt-cache ini (perintah: apt-cache) bertugas melakukan query terhadap cache atau database milik APT. Database yang dimaksud adalah segala berkas di dalam direktori /var/lib/apt/lists/. Anda bisa melihat sendiri bahwa output-output dari apt-cache nanti serupa dengan isi dari database tersebut.

1. Output Normal

Perintah: 

$ apt-cache

Contoh Output:

master@master:~$ apt-cache
apt 1.2.10 (i386)
Usage: apt-cache [options] command
       apt-cache [options] show pkg1 [pkg2 …]

apt-cache queries and displays available information about installed
and installable packages. It works exclusively on the data acquired
into the local cache via the ‘update’ command of e.g. apt-get. The
displayed information may therefore be outdated if the last update was
too long ago, but in exchange apt-cache works independently of the
availability of the configured sources (e.g. offline).

Most used commands:
  showsrc – Show source records
  search – Search the package list for a regex pattern
  depends – Show raw dependency information for a package
  rdepends – Show reverse dependency information for a package
  show – Show a readable record for the package
  pkgnames – List the names of all packages in the system
  policy – Show policy settings

See apt-cache(8) for more information about the available commands.
Configuration options and syntax is detailed in apt.conf(5).
Information about how to configure sources can be found in sources.list(5).
Package and version choices can be expressed via apt_preferences(5).
Security details are available in apt-secure(8).
master@master:~$

Penjelasan:

Jika perintah apt-cache dikerjakan begitu saja tanpa imbuhan argumen, maka output yang Anda lihat seperti di atas. Ingat, output di atas berasal dari versi APT 1.2.10. Output pada versi APT Anda mungkin berbeda tetapi intinya kurang lebih akan sama.

2. Mencari Paket

Perintah: 

$ apt-cache search <kata_kunci>

Contoh perintah:

$ apt-cache search pdf reader
$ apt-cache search office suite
$ apt-cache search video editor 
$ apt-cache search audio editor
$ apt-cache search image editor

Contoh output:

master@master:~$ apt-cache search pdf reader
antiword – Converts MS Word files to text, PS, PDF and XML
c++-annotations – Extensive tutorial and documentation about C++
c++-annotations-pdf – Extensive tutorial and documentation about C++ – PDF output
calibre – e-book converter and library management
calibre-bin – e-book converter and library management
ebook-speaker – eBook reader that reads aloud in a synthetic voice
gimagereader – Graphical GTK+ front-end to tesseract-ocr
gpdftext – GTK+ text editor for ebook PDF files
ruby-pdf-inspector – Ruby library for analyzing PDF output
ruby-pdf-reader – Ruby library for accessing the content of PDF files
texlive-latex-extra – TeX Live: LaTeX additional packages
wv – Programs for accessing Microsoft Word documents
xpdf – Portable Document Format (PDF) reader
master@master:~$

Penjelasan:

Apakah Anda pernah bertanya mengapa Synaptic atau Ubuntu Software Center bisa menayangkan daftar lengkap paket-paket software yang tersedia di repositori, bahkan dalam keadaan offline? Jika ya, jawabannya adalah karena program GUI front-end tersebut membaca database APT yang sudah tersimpan secara offline di dalam /var/lib/apt/lists/. Database ini diperoleh oleh Anda sendiri dengan perintah # apt-get update atau dengan klik tombol Reload. Pertanyaan selanjutnya adalah bagaimana melakukan pencarian yang sama seperti GUI front-end itu tetapi di Terminal? Jawabannya adalah dengan perintah $ apt-cache search.

Perintah ini akan melakukan hal yang sama ketika Anda mencari kata kunci suatu paket di suatu GUI front-end. Dia akan menampilkan di Terminal Anda daftar nama paket yang mencocoki kata kunci Anda. Nama-nama paket inilah yang Anda akan gunakan untuk # apt-get install nanti atau perintah lainnya.

Ubuntu 14.04 Trusty Tahr saja telah memiliki sekitar 50.000 paket lebih di dalam repositorinya. Jadi Anda tidak perlu khawatir kekurangan paket software ketika mencari. Coba biasakan mencari dengan perintah ini dan nikmati fasilitasnya.

3. Mengetahui Status Repositori

Perintah:

$ apt-cache policy

Contoh output:

master@master:~$ apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://archive.ubuntu.com/ubuntu xenial-updates/main i386 Packages release v=16.04,o=Ubuntu,a=xenial-updates,n=xenial,l=Ubuntu,c=main,b=i386
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu xenial/multiverse i386 Packages
     release v=16.04,o=Ubuntu,a=xenial,n=xenial,l=Ubuntu,c=multiverse,b=i386
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu xenial/universe i386 Packages
     release v=16.04,o=Ubuntu,a=xenial,n=xenial,l=Ubuntu,c=universe,b=i386
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu xenial/restricted i386 Packages
     release v=16.04,o=Ubuntu,a=xenial,n=xenial,l=Ubuntu,c=restricted,b=i386
     origin archive.ubuntu.com
 500 http://archive.ubuntu.com/ubuntu xenial/main i386 Packages
     release v=16.04,o=Ubuntu,a=xenial,n=xenial,l=Ubuntu,c=main,b=i386
     origin archive.ubuntu.com
Pinned packages:
master@master:~$

Penjelasan:

Perhatikan bagian-bagian yang ditebalkan di atas.

Dengan perintah policy, tanpa imbuhan argumen, kita bisa melihat repositori apa saja yang aktif di dalam Ubuntu kita. Tidak hanya itu, kita juga bisa melihat komponen dan jenis apa saja yang aktif. Di dalam contoh di atas, Ubuntu 16.04 Xenial Xerus saya tampak menggunakan dua jenis repositori yaitu $release: xenial dan repositori $release-updates: xenial-updates. Pada repositori xenial, Ubuntu saya mengaktifkan keempat komponen main restricted universe multiverse bersamaan. Pada repositori xenial-updates, Ubuntu saya mengaktifkan hanya repositori main. Artinya, ketika saya menginstal program dengan apt-get install nanti, apt akan mencari kepada repositori-repositori yang tersebut di atas.

Ketika Anda mengurangi atau menambah jumlah repositori pada sources.list, setelah Reload, maka hasil dari apt-cache policy ini akan berubah pula. Hal ini dikarenakan apt-cache membaca perubahan dari database APT.


4. Mengetahui Beda Versi Paket pada Sejumlah Repositori yang Berbeda

Perintah:

$ apt-cache policy <nama_paket>

Contoh perintah: 

$ apt-cache policy linux-image-generic
$ apt-cache policy bash
$ apt-cache policy inkscape

Contoh output:

master@master:~$ apt-cache policy linux-image-generic
linux-image-generic:
  Installed: 4.4.0.21.22
  Candidate: 4.4.0.24.25
  Version table:
     4.4.0.24.25 500
        500 http://archive.ubuntu.com/ubuntu xenial-updates/main i386 Packages
        500 http://security.ubuntu.com/ubuntu xenial-security/main i386 Packages
 *** 4.4.0.21.22 500
        500 http://archive.ubuntu.com/ubuntu xenial/main i386 Packages
        100 /var/lib/dpkg/status
master@master:~$

Penjelasan:

Perhatikan bagian-bagian yang ditebalkan di atas.

Dengan menambah imbuhan argumen nama paket pada perintah policy, maka kita bisa mengetahui paket tersebut beradanya di repositori mana (saja) dan versi berapa (saja) yang tersedia pada setiap repositori. Kita juga bisa tahu versi terbaru berapa yang bisa diinstal sekarang. Hal ini penting untuk upgrade atau downgrade paket. Penting juga untuk mengetahui versi terbaru yang ada di repositori updates atau security.

Pada contoh di atas, output dari proses paket linux-image-generic menunjukkan bahwa yang terinstal di dalam Ubuntu saya adalah versi 4.4.0.21 (lihat tanda `***`). Output itu menunjukkan bahwa versi 4.4.0.21 itu diinstal dari repositori xenial dari komponen main.

Adapun versi terbaru dari paket linux-image-generic berdasarkan output di atas, adalah 4.4.0.24. Versi terbaru ini tersedianya di repositori xenial-updates dan di xenial-security. Ketika saya menjalankan # apt-get install linux-image-generic pada kondisi ini, maka APT akan memberi tahu saya bahwa paket ini bisa di-upgrade ke versi 4.4.0.24. Sekali lagi, apt-cache bisa mengetahui versi-versi ini karena membaca database /var/lib/apt/lists/.

5. Mengetahui Metadata Paket

Perintah:

$ apt-cache show <nama_paket>

Contoh perintah: 

$ apt-cache show gimp
$ apt-cache show nautilus

$ apt-cache show firefox
$ apt-cache show wvdial

Contoh output: 

master@master:~$ apt-cache show wvdial
Package: wvdial
Priority: optional
Section: comm
Installed-Size: 263
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Thierry Randrianiriana <[email protected]>
Architecture: i386
Version: 1.61-4.1
Depends: ppp (>= 2.3.0), debconf (>= 0.5.00) | cdebconf, libc6 (>= 2.4), libstdc++6 (>= 4.1.1), libuniconf4.6, libwvstreams4.6-base, libwvstreams4.6-extras, debconf (>= 0.5) | debconf-2.0
Filename: pool/main/w/wvdial/wvdial_1.61-4.1_i386.deb
Size: 76616
MD5sum: 4bd62b8b5afedb610ce5aac78ac4d522
SHA1: 0c234445497bd7c7ad9ac67dbac0a07cd6109ffb
SHA256: cfecc0074759aac409ce636eb0389026dcec81dc27c6b80288300f7f2f115700
Description-en: intelligent Point-to-Point Protocol dialer
 WvDial sacrifices some of the flexibility of programs like “chat” in order
 to make dialup configuration easier. With WvDial,
 modems are detected automatically and only three additional parameters
 are required: the telephone number, username, and password. WvDial knows
 enough to dial with most modems and log in to most servers without any
 other help.
 .
 In particular, a “chat script” is not required to handle the most common
 situations.
Description-md5: b8bf30c8dfd4d09e02af74bf497505d6
Homepage: http://alumnit.ca/wiki/index.php?page=WvDial
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 5y
Task: lubuntu-desktop

master@master:~$

Penjelasan: 

Perhatikan bagian-bagian yang ditebalkan di atas.

Pernahkah Anda bertanya dari mana GUI front-end bisa mengetahui nama paket, total ukuran, total ukuran ketika selesai diinstal, teks deskripsi, dan terpenting daftar dependensi paketnya? Tidak peduli apakah itu Synaptic atau apt-get, bagaimana mereka bisa menayangkannya? Jawabannya adalah dari database APT. Perintah apt-cache show menayangkan metadata itu dengan sempurna.

Menganalisis output dari sebuah query dari apt-cache bisa panjang sekali. Sebagai contohnya diambil satu kasus. Lihat bagian yang ditebalkan di atas. Lihat pada kolom Depends: yang di sana disebutkan nama-nama paket lain. Itulah daftar dependensi dari paket wvdial.

Ketika perintah apt-get install membaca metadata dari paket wvdial, dia akan membaca kolom dependensinya. Ketika membaca dependensi-dependensi tersebut, otomatis apt-get akan juga membaca dependensi dari masing-masing dependensi. Terus dilakukan itu sembari membandingkannya dengan database dpkg status (/var/lib/dpkg/status) sampai ujung akhirnya. Lalu daftar dependensinya ditayangkan ke layar. Itu tugas apt-get. Namun jika kita ingin mencari sendiri apa dependensi dari suatu paket, kita cukup menggunakan apt-cache show.

Keterangan di atas berlaku  juga untuk kolom-kolom lain. Misalnya kenapa apt-get bisa mengetahui persis alamat unduhan setiap paket .deb di setiap proses instalasi? Jawabannya adalah kolom Filename: di atas. apt-get akan menggabungkan nilai metadata itu dengan alamat yang Anda setel di dalam sources.list. Jadilah nanti URL lengkap. Semua perbuatan apt-get yang sangat panjang ini terjadi dalam orde milidetik sehingga kita tidak menyadarinya.

Kamus Istilah

  • Repositori: sumber pengambilan paket. Bentuk fisiknya biasanya sebuah server di internet. Di keluarga Debian, sumber-sumber itu (alamat-alamat URL itu) disetel di dalam berkas /etc/apt/sources.list. Baca kembali artikel perkenalan repositori.
  • Metadata: data yang memuat informasi tentang data lain. Di dalam konteks kita, metadata yang dimaksud adalah informasi yang terdapat di dalam database APT mengenai suatu paket. Informasi ini diambil dari berkas bernama control yang pasti ada di setiap paket.
  • Argumen: teks yang dituliskan setelah nama perintah. Contohnya perintah mkdir rumahku berarti rmdir perintahnya sedangkan rumahku argumennya.
  • Dependensi: dependency, ketergantungan; dalam konteks manajemen paket artinya kondisi ketika sebuah paket dibutuhkan oleh paket lain, tanpa paket itu maka paket lain itu tidak bisa diinstal. 
  • Dependensi-terbalik: reverse-dependency, ketergantungan terbalik; dalam konteks manajemen paket artinya daftar paket yang membutuhkan paket yang bersangkutan, tanpa paket yang bersangkutan paket yang dependensi-terbaliknya mengarah kepadanya tidak bisa diinstal.

Komentar Pembaca . . .

Yakin Ngga Mau Diskusi ?

Yuk diskusi cerdas. Gunakan nama asli agar komentar Anda disetujui.