Friday, February 28, 2014

Keluar Dari Neraka Dependensi

Selain neraka Jahanam, neraka jahim, neraka saqor dan empat neraka lainnya, adalagi neraka yang mengerikan, neraka dependensi (the dependency hell). Neraka dependensi adalah permasalahan instalasi aplikasi yang umum terjadi di *Nix karena ketergantungan suatu program/library pada program/library lainnya. Misalnya program/lib A bergantung pada program/lib B, program/lib B bergantung pada program/lib C .. dst, sehingga apabila kita hendak menginstall program A namun kita tidak/belum menginstall program/lib C, maka instalasi akan gagal karena dependensi tidak terpenuhi. Minggu ini, saya kembali menemui masalah tersebu, di sisi kanan atas indicator panel pada laptop saya ada pesan error seperti ini;

Error message yang ditampilkan Ubuntu panel

Berdasarkan how-to; mastering the art of problem determination, saya mulai menanganinya dengan skill yang saya miliki. Karena awalnya saya saya mengalami error untuk menginstall ubuntu emulator, maka saya mengintsall paket yang kurang untuk instalasi tersebut; qtdeclarative5-systeminfo-plugin.

bta@g580:~$ sudo apt-get install qtdeclarative5-systeminfo-plugin 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  qtdeclarative5-systeminfo-plugin
0 upgraded, 1 newly installed, 0 to remove and 187 not upgraded.
75 not fully installed or removed.
Need to get 0 B/21.6 kB of archives.
After this operation, 148 kB of additional disk space will be used.
(Reading database ... 387328 files and directories currently installed.)
Preparing to unpack .../qtdeclarative5-systeminfo-plugin_5.0~git20130712-0ubuntu3_amd64.deb ...
Unpacking qtdeclarative5-systeminfo-plugin:amd64 (5.0~git20130712-0ubuntu3) ...
dpkg: error processing archive /var/cache/apt/archives/qtdeclarative5-systeminfo-plugin_5.0~git20130712-0ubuntu3_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/x86_64-linux-gnu/qt5/qml/QtSystemInfo/libdeclarative_systeminfo.so', which is also in package libqt5systeminfo5:amd64 5.0~git20130718~precise1~test1
E: Sub-process /usr/bin/dpkg returned an error code (1)

Karena mengalami error saat instalasi, maka saya coba selesaikan dengan cara berikut (di dapat dari step #2: googling),

sudo dpkg-reconfigure libqt5systeminfo5
sudo apt-add-repository ppa:canonical-qt5-edgers/qt5-proper
sudo apt-get -f intsall

Karena proses instalasi berjalan lancar, saya kira tidak ada masalah. Namun, setelah saya restart laptop saya, ternyata hasilnya malah amburadul. Unity dan unity-desktop tidak terinstall dan tidak dapat diinstall dengan cara biasa.

bta@g580:~$ sudo apt-get install ubuntu-desktop
[sudo] password for bagus: 
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 ubuntu-desktop : Depends: checkbox-gui but it is not going to be installed
                  Depends: unity but it is not going to be installed
                  Recommends: unity-webapps-common but it is not going to be installed
                  Recommends: xul-ext-unity but it is not going to be installed
                  Recommends: xul-ext-webaccounts but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Juga saat saya cek dan coba untuk install ulang unity,

bta@g580:~$ sudo apt-get install unity
[sudo] password for bagus: 
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 unity : Depends: bamfdaemon
         Recommends: unity-scope-gdrive but it is not going to be installed
         Recommends: indicator-appmenu but it is not going to be installed
         Recommends: hud but it is not going to be installed
E: Unable to correct problems, you have held broken packages.


This is a serious problem. Bahkan dengan "apt-get -f install" yang seharusnya menyelesaikan masalah dependensi instalasi, malah tidak menghasilkan apa-apa. Saya bahkan sempat submit bug di launchpad, dan ternyata ini bukan bug. Berlanjut ke step #3; deeper investigation, saya mencoba untuk menganalisanya dengan mencari segala kemungkinan yang ada.

Gagal dengan apt-get get, saya menemukan bahwa aptitude sangat powerfull dibanding apt-get, wabil khusus untuk penanganan dependensi; orphand dependensi. Komunitas Linux mint menyediakan penanganan masalah paket yang rusak lewat command line. Artikel ini sangat membantu, dari situ juga saya mendapat link sumber yang membahas kekuatan aptitude dibanding Apt-get.

Dari hint tersebut, saya mencoba keluar neraka dependensi ini dengan aptitude. Keseluran langkah akhirnya adalah sebagai berikut

  1. sudo aptitude install -f ubuntu-desktop
  2. sudo aptitude install -f unity
  3. sudo aptitude install -f
  4. sudo aptitude autoclean
Saat menjalankan perintah tersebut, aptitude memberi opsi, paket/library mana saja yang diinstall/remove. Saya memilih bagaimana caranya agar unity dan ubuntu-desktop bisa terinstall. Instalasi sukses, namun layar laptop masih belum mau memunculkan left panel unity dash/launcer dan top panel. Saya pergi ke compiz (ccsm) dan mencentang 'enable unity plugin'. Masalah berakhir.

Referensi:
  1. https://en.wikipedia.org/wiki/Dependency_hell
  2. http://community.linuxmint.com/tutorial/view/482
  3. https://pthree.org/2007/08/12/aptitude-vs-apt-get/
Related Posts Plugin for WordPress, Blogger...