Disclaimer :
Dokumen ini sudah usang dan tidak diperbarui lagi.
|
[ << ]
[ < ]
[ Home ]
[ > ]
[ >> ]
1. Pengenalan Portage
Daftar Isi:
1.a. Selamat Datang di Portage
Mungkin Portage adalah inovasi Gentoo yang paling dikenal dalam dunia
manajemen software. Dengan fleksibilitasnya yang tinggi dan jumlah fitur
yang banyak, Portage sering dianggap sebagai utilitas manajemen software
terbaik yang tersedia untuk Linux.
Portage ditulis dengan Python dan
Bash, jadi sangat transparan
kepada user, karena keduanya merupakan bahasa skript.
Kebanyakan user akan berkerja dengan Portage melalui utilitas emerge.
Bab ini tidak dimaksudkan untuk menduplikasi informasi yang telah tersedia
di manual emerge. Untuk mengetahui seluruh opsi-opsi emerge, silahkan baca
manualnya"
Daftar Kode 1.1: Membaca manual emerge |
$ man emerge
|
1.b. Pohon Portage
Ebuild
Ketika kami berbicara tentang paket, kami sering mengartikannya sebagai
nama-nama software yang tersedia untuk para pengguna Gentoo melalui pohon
Portage. Pohon Portage adalah sebuah koleksi ebuild, file yang
berisi seluruh informasi yang dibutuhkan Portage untuk memelihara sofware
(install, search, query, ...). Ebuild-ebuild ini secara default ditempatkan
di /usr/portage.
Kapanpun anda meminta Portage untuk menjalankan beberapa aksi yang berhubungan
dengan software, Portage akan menggunakan ebuild yang terdapat pada sistem
anda sebagai basisnya. Oleh karena itu, sangatlah penting bagi anda untuk
mengupdate ebuild-ebuild di sistem anda secara berkala agar Portage mengetahui
software baru, update keamanan, dll.
Memperbarui pohon portage
Pohon Portage biasanya diupdate dengan rsync, sebuah utilitas transfer file
berkembang. Memperbarui portage sangat mudah karena perintah emerge
telah menyediakan sebuah front-end untuk rsync:
Daftar Kode 2.1: Memperbarui pohon portage |
# emerge --sync
|
Jika anda tidak dapat menjalankan rsync karena terhalang oleh firewall, anda
masih dapat memperbarui pohon Portage dengan menggunakan snapshot pohon Portage
kami yang diperbarui setiap hari. Utilitas emerge-webrsync dengan
otomatis akan mendownload dan menginstal snapshot terbaru di sistem anda:
Daftar Kode 2.2: Menjalankan emerge-webrsync |
# emerge-webrsync
|
1.c. Pemeliharaan Software
Mencari software
Untuk mencari nama software di pohon Portage, anda dapat menggunakan fitur
pencarian emerge. Secara default, emerge --search akan
menampilkan nama-nama paket yang sesuai dengan pencarian anda (baik lengkap
maupun sebagian).
Sebagai contoh, untuk mencari semua paket yang memiliki "pdf" pada namanya:
Daftar Kode 3.1: Mencari paket bernama pdf |
$ emerge --search pdf
|
Jika anda ingin mencari paket melalui penjelasannya, anda dapat menggunakan
opsi --searchdesc (atau -S):
Daftar Kode 3.2: Mencari paket yang berhubungan dengan pdf |
$ emerge --searchdesc pdf
|
Ketika anda melihat outputnya, anda akan tahu melihat banyak sekali informasi
yang diberikan. Setiap bagian telah diberikan label yang jelas, jadi kami tidak
akan menjelaskan arti masing-masing lebih jauh:
Daftar Kode 3.3: Contoh output 'emerge --search' |
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
|
Instalasi software
Setelah menemukan nama software yang anda inginkan, dengan mudah anda dapat
menginstalnya dengan perintah emerge: tambahkan saja nama paket.
Misalnya, untuk menginstal gnumeric:
Daftar Kode 3.4: Instalasi gnumeric |
# emerge gnumeric
|
Karena banyak aplikasi yang saling bergantung satu sama lain, setiap instalasi
software tertentu mungkin akan menghasilkan instalasi ketergantungannya
(dependensi) juga. Jangan khawatir, Portage dapat menangani dependensi ini.
Jika anda ingin tahu paket apa saja yang akan diinstal oleh Portage
ketika anda ingin menginstal sebuah paket, tambahkan opsi
--pretend, misalnya:
Daftar Kode 3.5: Instalasi palsu gnumeric |
# emerge --pretend gnumeric
|
Ketika anda memerintahkan Portage untuk menginstal sebuah paket, Portage akan
mendownload semua source code yang diperlukan dari internet (jika memang perlu)
dan secara default meletakkannya di /usr/portage/distfiles.
Selanjutnya Portage akan mengekstrak, mengkompilasi dan menginstal paket
tersebut. Jika anda ingin agar Portage hanya mendownload source code tanpa
menginstalnya, tambahkan opsi --fetchonly ke perintah emerge:
Daftar Kode 3.6: Download source code untuk gnumeric |
# emerge --fetchonly gnumeric
|
Mencari dokumentasi paket yang telah terinstal
Banyak paket software yang memiliki dokumentasinya sendiri. Terkadang, flag
USE doc menentukan apakah dokumentasi sebuah paket software akan
diinstal atau tidak. Anda dapat memeriksa keberadaan flag USE doc
dengan perintah emerge -vp <nama paket>.
Daftar Kode 3.7: Memeriksa keberadaan flag USE doc |
# emerge -vp alsa-lib
[ebuild N ] media-libs/alsa-lib-1.0.14_rc1 -debug +doc 698 kB
|
Cara terbaik untuk mengaktifkan flag USE doc adalah dengan
mengaktifkannya untuk masing-masing paket di file
/etc/portage/package.use agar anda hanya mendapatkan dokumentasi
yang anda inginkan saja. Mengaktifkan flag ini secara global diketahui dapat
menyebabkan masalah dependensi. Untuk mempelajari masalah ini lebih dalam lagi,
bacalah Bab Flag-flag USE.
Ketika paket telah terinstal, dokumentasinya biasanya dapat ditemukan di
sebuah subdirektori yang bernama sama dengan nama paket di dalam direktori
/usr/share/doc. Anda juga dapat melihat file apa saja yang
telah terinstal dengan menggunakan utilitas equery yang merupakan
bagian dari paket
app-portage/gentoolkit.
Daftar Kode 3.8: Melihat dokumentasi sebuah paket |
# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1
total 28
-rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz
-rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x 2 root root 8560 May 17 21:54 html
-rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.9_rc3
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
|
Menghapus software
Jika anda ingin menghapus sebuah software dari sistem anda, gunakan perintah
emerge --unmerge. Perintah ini akan menyuruh Portage untuk menghapus
semua file paket tersebut yang terinstal dari sitem anda kecuali
file-file konfigurasi paket tersebut, jika anda pernah merubah isinya setelah
instalasi. Hal ini akan memudahkan anda bekerja dengan paket tersebut jika
suatu saat nanti anda ingin menginstalnya kembali.
Tapi, ada peringatan keras: Portage tidak akan memeriksa
apakah paket yang ingin anda hapus tersebut dibutuhkan oleh paket yang lain.
Bagaimanapun juga, Portage akan memperingatkan anda ketika anda ingin menghapus
sebuah paket penting yang dapat merusak sistem jika anda membuangnya.
Daftar Kode 3.9: Menghapus gnumeric dari sistem |
# emerge --unmerge gnumeric
|
Ketika anda menghapus sebuah paket dari sistem anda, dependensi paket tersebut
yang terinstal secara otomatis tidak ikut dihapus. Agar Portage mencari semua
dependensi yang dapat sekarang dihapus, gunakan fungsionalitas --depclean
milik emerge. Kita akan membicarakannya nanti.
Memperbarui sistem
Untuk menjaga sistem anda agar tetap sempurna, (juga menginstal update keamanan
terbaru) anda perlu memperbarui sistem anda secara berkala. Karena Portage
hanya memeriksa ebuild-ebuild yang ada di pohon Portage anda, pertama-tama
anda harus memperbarui pohon Portage anda. Ketika pohon Portage telah
diperbarui, anda dapat memperbarui sistem anda dengan menjalankan perintah
emerge --update world. Pada contoh berikut ini, kita juga akan menggunakan
opsi --ask yang akan memerintahkan Portage untuk menampilkan daftar
paket yang akan diperbarui kemudian menanyakan anda apakah anda ingin
melanjutkan atau tidak:
Daftar Kode 3.10: Memperbarui sistem |
# emerge --update --ask world
|
Selanjutnya Portage akan mencari versi terbaru dari setiap software yang telah
anda instal. Tetapi, Portage hanya akan mencari aplikasi yang telah anda instal
secara eksplisit (aplikasi yang terdaftar di
/var/lib/portage/world) - tetapi tidak memeriksa dependensi.
Jika anda ingin memperbarui semua paket yang terinstal di sistem anda,
tambahkan opsi --deep:
Daftar Kode 3.11: Memperabui sistem secara menyeluruh |
# emerge --update --deep world
|
Karena banyak update keamanan untuk paket yang tidak anda instal secara
eksplisit di sistem anda (tetapi diinstal sebagai dependensi program lain),
anda dianjurkan untuk sesekali menjalankan perintah ini.
Jika anda pernah merubah flag-flag USE
anda, mungkin anda juga ingin menambahkan opsi --newuse. Portage akan
memeriksa apakah perubahan ini membutuhkan instalasi paket-paket baru atau
kompilasi ulang paket yang telah telah terinstal:
Daftar Kode 3.12: Menjalankan update secara menyeluruh |
# emerge --update --deep --newuse world
|
Paket Meta
Beberapa paket di pohon Portage tidak memiliki isi yang sesungguhnya tetapi
digunakan untuk menginstal sebuah koleksi paket-paket. Misalnya, paket
kde akan menginstal lingkungan KDE lengkap di sistem anda dengan
mengikutsertakan semua paket yang berhubungan dengan KDE sebagai dependensi.
Jika anda ingin menghapus paket seperti ini dari sistem anda, menjalankan
emerge --unmerge untuk paket tersebut tidak akan terlalu banyak
berpengaruh karena semua dependensinya masih dibiarkan di sistem.
Portage juga memiliki kemampuan untuk menghapus dependensi yang tidak lagi
memiliki induknya, tapi karena keberadaan software saling bergantung satu sama
lain dengan dinamis, pertama-tama anda perlu mengupdate sistem anda secara
penuh, termasuk perubahan terbaru anda di flag-flag USE. Selanjutnya anda dapat
menjalankan emerge --depclean untuk menghapus dependensi-dependensi
tadi. Setelah ini selesai, anda perlu membangun ulang (rebuild) semua aplikasi
yang terkait secara dinamis dengan software yang telah anda hapus tersebut.
Seluruh proses tersebut ditangani oleh tiga perintah berikut ini:
Daftar Kode 3.13: Menghapus dependensi lama |
# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild
|
revdep-rebuild disediakan oleh paket gentoolkit; jangan lupa
untuk menginstalnya:
Daftar Kode 3.14: Instalasi paket gentoolkit |
# emerge gentoolkit
|
1.d. Ketika Portage Mengeluh...
Tentang SLOT, Virtual, Cabang-cabang, Arsitektur, dan Profil
Seperti yang telah kami katakan tadi, Portage sangat handal dan mendukung
banyak sekali fitur yang tidak dimiliki oleh tool manajemen software lain.
Untuk memahami semua ini, kami akan menjelaskan beberapa aspek tentang Portage
dengan tidak terlalu terinci.
Dengan Portage, beberapa versi berbeda dari sebuah paket dapat diinstal di
sistem yang sama. Jika distro lain sering mengganti nama paket-paket mereka
dengan merujuk ke versi tersebut (mis. freetype dan freetype2),
Portage menggunakan sebuah teknologi yang disebut SLOT. Sebuah ebuild
menerangkan SLOT tertentu untuk versinya. Ebuild-ebuild yang memiliki SLOT-SLOT
berbeda dapat bergandengan di dalam satu sistem yang sama. Sebagai contoh,
paket freetype memiliki ebuild dengan SLOT="1" dan
SLOT="2".
Terdapat juga beberapa paket yang menyediakan fungsionalitas sama, tetapi
diimplementasikan dengan cara yang berbeda. Sebagai contoh, metalogd,
sysklogd dan syslog-ng merupakan logger sistem. Aplikasi yang
membutuhkan "sebuah logger sistem" tidak dapat bergantung hanya kepada
metalogd, karena logger sistem yag lain juga sama bagusnya. Portage
mengizinkan penggunaan virtual: setiap logger sistem menyediakan
virtual/syslog agar aplikasi yang membutuhkan sebuah sistem logger
dapat bergantung hanya kepada virtual/syslog.
Software yang terdapat di pohon Portage dapat dibagi menjadi tiga bagian.
Secara default, sistem anda hanya menerima paket-paket yang dianggap stabil
oleh Gentoo. Kebanyakan software, ketika dirilis, ditambahkan ke cabang
percobaan, yang berarti masih dibutuhkan pengujian lebih jauh terhadap
software ini sebelum dianggap stabil. Walaupun anda bisa melihat software ini
di pohon Portage, Portage tidak akan memperbaruinya sebelum dipindahkan ke
cabang stabil.
Beberapa software hanya tersedia untuk sebagian arsitektur. Atau, karena
software-software tersebut tidak dapat berfungsi di arsitektur lain, atau
juga karena dibutuhkan pengujian lebih jauh, atau karena para pengembang
yang memelihara software tersebut tidak dapat memastikan jika paket tersebut
dapat berfungsi di arstitektur lain.
Setiap instalasi Gentoo melekat pada sebuah profil tertentu yang berisi,
di antara informasi lain, daftar paket yang dibutuhkan oleh sebuah sistem
untuk dapat berfungsi dengan normal.
Paket-paket terblokir
Daftar Kode 4.1: Peringatan Portage tentang paket-paket terblokir (dengan --pretend) |
[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)
|
Daftar Kode 4.2: Peringatan Portage tentang paket-paket terblokir (tanpa --pretend) |
!!! Error: the mail-mta/postfix package conflicts with another package.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
|
Ebuild-ebuild berisi bagian-bagian khusus yang menginformasikan Portage
tentang dependensinya. Ada dua dependensi yang memungkinkan: dependensi
build, dinyatakan dengan DEPEND, dan dependensi run-time, dinyatakan
dengan RDEPEND. Ketika salah satu dari dependensi ini secara eksplisit
menandakan bahwa sebuah paket atau virtual tidak kompatibel, Portage
akan mencetuskan halangan (blockage).
Untuk memperbaiki sebuah blockage, anda memiliki pilihan untuk tidak
menginstal paket yang diblokir, atau menghapus dahulu paket yang memblokir.
Pada contoh di atas, anda dapat memilih untuk tidak menginstal
postfix atau menghapus dahulu ssmtp.
Anda juga mungkin akan melihat paket penghalang dengan atom tertentu seperti
<media-video/mplayer-bin-1.0_rc1-r2. Masalah ini dapat anda atasi
dengan memperbarui paket penghalang.
Mungkin juga kedua paket yang konflik sama-sama belum terinstal. Pada kasus
yang jarang terjadi ini, anda harus mencari tahu, mengapa anda ingin menginstal
keduanya. Pada kebanyakan kasus, anda dapat menginstal salah satu dari kedua
paket yang konflik tersebut. Jika tidak silahan kirimkan laporan bug di sistem pelacak bug Gentoo.
Paket-paket yang di-mask
Daftar Kode 4.3: Peringatan Portage tentang paket-paket yang di-mask |
!!! all ebuilds that could satisfy "bootsplash" have been masked.
|
Daftar Kode 4.4: Peringatan Portage tentang paket-paket yang dimask - alasan |
!!! possible candidates are:
- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
|
Ketika anda ingin menginstal sebuah paket yang tidak tersedia untuk sistem
anda, anda akan mendapatkan error mask tersebut. Anda harus mencoba untuk
menginstal aplikasi lain yang tersedia untuk sistem anda atau menunggu sampai
paket tersebut tersedia. Selalu ada alasan mengapa sebuah paket dimask:
-
keyword ~arch berarti aplikasi tersebut belum cukup teruji untuk
diletakkan di cabang stabil. Tunggulah beberapa hari/pekan lalu coba lagi.
-
keyword -arch atau keyword -* berarti aplikasi tersebut
tidak dapat berfungsi di arsitektur anda. Jika anda yakin sebaliknya,
maka silakan buat laporan bug di website bugzilla kami.
-
missing keyword berarti aplikasi tersebut belum diuji di arsitektur
anda. Mintalah tim port arsitektur anda untuk menguji paket tersebut atau
lakukan sendiri pengujiannya, kemudian laporkan hasil yang anda dapatkan ke
website bugzilla kami.
-
package.mask berarti paket ini telah dianggap rusak, tidak stabil,
atau bahkan telah disarankan untuk tidak dipakai.
-
profile berarti paket tersebut dianggap tidak cocok dengan profil
yang anda gunakan. Aplikasi ini mungkin dapat merusak sistem anda jika anda
menginstalnya, atau tidak kompatibel dengan profil yang anda gunakan.
Dependensi yang tidak ditemukan
Daftar Kode 4.5: Peringatan Portage tentang dependensi yang tidak ditemukan |
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.
|
Aplikasi yang ingin anda instal bergantung kepada paket lain yang tidak
tersedia untuk sistem anda. Silahkan periksa bugzilla apakah masalah ini telah
diketahui. Jika belum, silakan buat laporan. Hal ini kemungkinan besar tidak
akan pernah terjadi, kecuali anda mencampurkan cabang-cabang software.
Nama ambigu ebuild
Daftar Kode 4.6: Peringatan Portage tentang nama-nama ebuild ambigu |
!!! The short ebuild name "aterm" is ambiguous. Please specify
!!! one of the following fully-qualified ebuild names instead:
dev-libs/aterm
x11-terms/aterm
|
Aplikasi yang ingin anda instal memiliki nama yang sama dengan paket lain.
Anda pelu memberikan nama kategorinya juga. Portage akan memberikan nama-nama
yang memungkinkan yang dapat anda pilih.
Circular Dependencies
Daftar Kode 4.7: Peringatan Portage tentang circular dependencies |
!!! Error: circular dependencies:
ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
|
Dua paket (atau lebih) yang ingin anda instal saling bergantung satu sama lain
sehingga tidak dapat diinstal. Kemungkinan besar ini adalah bug di pohon
Portage. Lakukan rsync setelah beberapa saat lalu coba lagi. Anda juga dapat
memeriksa bugzilla untuk melihat
apakah masalah ini telah diketahui, jika belum tolong laporkan.
Kegagalan download
Daftar Kode 4.8: Peringatan Portage tentang download yang gagal |
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
!!! Some fetch errors were encountered. Please see above for details.
|
Portage tidak dapat mendownload source dari aplikasi yang ingin anda instal
dan akan terus mencoba untuk menginstal aplikasi lain (jika diperintahkan).
Kegagalan ini bisa disebabkan oleh sebuah mirror yang belum menksinkronisasikan
isinya dengan benar, atau ebuild yang menunjuk ke lokasi yang salah. Mungkin
juga karena server tempat source code sedang offline karena satu dan lain hal.
Silahkan coba kembali setelah satu jam untuk melihat apakah masalah ini
telah teratasi.
Proteksi profil sistem
Daftar Kode 4.9: Peringatan Portage tentang paket yang dilindungi oleh profil |
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
|
Anda telah meminta Portage untuk meghapus sebuah paket yang merupakan bagian
dari paket-paket inti sistem anda. Paket ini terdaftar di profil anda sebagai
paket yang dibutuhkan, untuk itu tidak boleh dihapus dari sistem.
Kegagalan pemeriksaan digest
Terkadang, anda gagal ketika mencoba untuk meng-emerge sebuah paket, dan
mendapatkan pesan error:
Daftar Kode 4.10: Kegagalan pemeriksaan digest |
>>> checking ebuild checksums
!!! Digest verification failed:
|
Ini berarti ada sesuatu yang tidak beres pada pohon Portage -- biasanya, hal
ini disebabkan oleh seorang pengembang yang mungkin telah membuat kesalahan
ketika menambahkan sebuah paket ke pohon Portage.
Ketika pemeriksaan digest gagal, jangan mencoba untuk men-digest ulang
sendiri paket tersebut. Menjalankan ebuild foo digest tidak akan
menyelesaikan permasalahan; bahkan bisa menjadikannya lebih parah.
Tetapi, tunggulah satu atau dua jam sampai pohon Portage diperbaiki. Kemungkinan
besar kesalahan tersebut sudah diketahui, tapi juga dibutuhkan waktu yang agak
lama untuk memperbaiki pohon Portage. Sambil menunggu, periksalah Bugzilla untuk melihat apakah ada orang
yang telah melaporkan masalah tersebut atau belum. Jika belum, silakan laporkan
bug untuk paket yang rusak tersebut.
Ketika anda telah melihat bahwa masalah tersebut sudah diatasi, anda mungkin
ingin kembali mengsinkronkan pohon Portage anda untuk mendapatkan digest yang
telah diperbaiki.
Penting:
Hal ini bukan berarti anda boleh mensinkronkan pohon Portage anda berkali-kali!
Seperti yang telah dinyatakan pada aturan rsync (ketika anda menjalankan
emerge --sync), pengguna yang terlalu sering melakukan rsync bisanya
akan diusir. Malahan lebih baik lagi jika anda menunggu sampai jadwal rsync
anda selanjutnya agar anda tidak memberatkan server rsync.
|
[ << ]
[ < ]
[ Home ]
[ > ]
[ >> ]
Isi dokumen ini dilisensikan dengan lisensi Creative Commons -
Attribution / Share Alike.
|