Gentoo Logo

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

(alsa-lib hanya sebuah contoh, pastinya)
# 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

(Atau gunakan equery:)
# 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
(Output dipotong)

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 ] [ > ] [ >> ]


Print

View all

Diperbarui 2 April 2008

Versi asli dari dokumen ini terakhir diupdate 9 Pebruari 2013

Rangkuman: Bab ini menjelaskan cara "sederhana" yang harus diketahui setiap pengguna untuk memelihara software pada sistemnya.

Sven Vermeulen
Author

Grant Goodyear
Author

Roy Marples
Author

Daniel Robbins
Author

Chris Houser
Author

Jerry Alexandratos
Author

Seemant Kulleen
Gentoo x86 Developer

Tavis Ormandy
Gentoo Alpha Developer

Jason Huebel
Gentoo AMD64 Developer

Guy Martin
Gentoo HPPA developer

Pieter Van den Abeele
Gentoo PPC developer

Joe Kallar
Gentoo SPARC developer

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Xavier Neys
Editor

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Lars Weiler
Contributor

Siauw Nam Khong
Translator

Dzikri Aziz
Translator

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.