Archlinux Update Filesystem Error /bin

04 June 2013

Senin, 3 Juni 2013 Allan McRae membuat pemberitahuan lewat situs resmi Archlinux, bahwa mulai hari itu seluruh binary packages yang selama ini terpencar di direktori /bin, /sbin, /usr/sbin akan dirapikan dan semua akan dimasukkan dalam satu direktori di /usr/bin.

Hal ini akan berpengaruh sekali saat update pacman, biasanya setelah update akan mendapatkan error seperti berikut :


error: failed to commit transaction (conflicting files) filesystem: /bin exists in filesystem filesystem: /sbin exists in filesystem filesystem: /usr/sbin exists in filesystem

Hal ini berarti bahwa ada paket binary dari aplikasi yang terletak pada direktori tersebut diatas. Oleh karena pacman tidak bisa memindahkannya secara otomatis, maka diperlukan campur tangan pengguna untuk memindahkan secara manual. Kebetulan aye juga mendapatkan error tersebut. Sehingga perlu dilakukan langkah – langkah perbaikan ( pemindahan secara manual ) dengan cara seperti yang sudah diberitahukan oleh Allan.

  1. Pindahkan seluruh paket binari yang ada di direktori /bin, /sbin, /usr/sbin
  2. Untuk mengeceknya atau melihat binary apa saja yg masuk ke direktori tersebut bisa dilakukan dengan mempegunakan perintah ini :


    $ pacman -Qqo /bin /sbin /usr/sbin | pacman -Qm -

    Hasil perintah ini di mesin aye adalah :


    $ pacman -Qqo /bin /sbin /usr/sbin | pacman -Qm - grub gen_init_cpio dcron tcp_wrapper

    Nah, dari hasil tersebut maka perlu dipindah ke direktori /usr/bin. Untuk mengetahui berkas mana saja yang harus dipindah, bisa mempergunakan perintah berikut :


    $ paclist mypac | awk ' { print $1 } ' | pacman -Ql - | grep ' /s\?bin/\| /usr/sbin/'

    yang akan menampilkan daftar paket binari dan nama berkas serta letaknya, dalam hal ini akan menampilkan hasil sebagai berikut :


    ... dcron /usr/sbin/ dcron /usr/sbin/crond dcron /usr/sbin/run-cron ... gen-init-cpio /sbin/ gen-init-cpio /sbin/gen_init_cpio ... grub /bin/mbchk grub /sbin/ grub /sbin/grub grub /sbin/grub-install grub /sbin/grub-md5-crypt grub /sbin/grub-set-default grub /sbin/grub-terminfo grub /sbin/install-grub ... tcp_wrappers /usr/sbin/ tcp_wrappers /usr/sbin/safe_finger tcp_wrappers /usr/sbin/tcpd tcp_wrappers /usr/sbin/tcpdchk tcp_wrappers /usr/sbin/tcpdmatch tcp_wrappers /usr/sbin/try-from ...

    Setelah ini, tinggal kita pindahkan semua berkas tersebut ke direktori /usr/bin secara manual ( dengan root akses ).

    Jika ada paket yang di pasang bukan dari official repo tapi juga mempergunakan direktori /bin, /sbin, /usr/sbin maka juga perlu dipindah, cara melihat paket dan berkas apa saja, bisa mempergunakan perintah :


    $ paclist repo | awk ' { print $1 } ' | pacman -Ql - | grep ' /s\?bin/\| /usr/sbin/'

    Sebagai catatan perintah "repo" tersebut diatas adalah nama repo asal kita memasang paket. Contoh misal Repo Archlinuxfr dll.

  3. Cek dan yakinkan bahwa tidak ada paket di IgnorePkg atau IgnoreGroup di pacman.conf yang juga mempergunakan direktori /bin, /sbin, /usr/sbin.
  4. Periksa juga bahwa tidak ada berkas di /bin, /sbin, /usr/sbin yang tidak dimiliki oleh paket apapun, ini juga perlu di pindah.
  5. Biasanya ada beberapa paket yang ada di direktori tersebut yang ternyata tidak dimiliki oleh paket apapun, dan ini perlu dipindah juga secara manual. Cara untuk memeriksa berkas tersebut adalah dengan perintah :


    $ find /bin /sbin /usr/sbin -exec pacman -Qo -- {} + >/dev/null

  6. Update system
  7. Setelah semua yakin selesai, sistem baru bisa di update dengan berurutan.


    # pacman -Syu --ignore filesystem,bash # pacman -S bash # pacman -Su

    Biasanya setelah perintah # pacman -Su masih akan ada error seperti tersebut diatas, karena itu perlu dicek ulang direktori /bin, /sbin, /usr/sbin . Jika ditemukan dan didalamnya ternyata kosong, direktori tersebut bisa dihapus secara manual. Baru kemudian perintah tersebut diulang.

    Ada baiknya juga melakukan pembaharuan paket dari AUR sekalian.

Pacman memang paket manajer yang bagus, namun memang ada kalanya perlu intervensi manual untuk melakukan update sistem, celakanya biasanya intervensi ini tidak mudah dilakukan. Sebagai contoh saat ada perubahan di glibc yang dahulu. Banyak sekali pengguna Archlinux yang kesusahan dan gagal dalam update. Bahkan ada yang sampai sistemnya tidak bisa booting atau rusak.

Oleh karena itu, semoga dengan tulisan ini, bisa membantu pengguna Archlinux khususnya dari Indonesia untuk memudahkan dalam pelaksanaan proses migrasi /bin ini. fnd