Popular Categories

/home/ras0ir

there are no girls on the internet

Arch Linux (testing) glibc güncellemesi

Yakın zamanda çoğu dağıtım /lib, /bin, /lib32, /lib64 gibi dizinlerin içeriklerini /usr altına taşımaya başladı. “usrmove” olarak adlandırılan bu hareket neticesinde artık kitaplık ve uygulamaların tek konumu /usr dizini olacak. Dolayısıyla dosya hiyerarşisi bakımından bir standart olacak. (Şimdilik /bin, /sbin gibi dizinler sembolik bağ olarak kalıyor). Çekirdek modülleri de artık /usr/lib/modules altında tutulmaya başladı bile.

usrmove’un başlıkla olan alakası ise, dün akşam sistem güncelleyeyim derken Arch Linux’un testing deposundaki glibc’yi güncellerken paket yöneticisinin hata vermesi üzerine aslında hiç yapmamam gereken “-f” force bayrağını çektim ve sistemin bana olan tepkisi gecikmedi: newfags cant triforce.

glibc’nin ilgili kitaplıkları /usr/lib altına gittiği için ve mevcut /lib dizininin içeriği boş kaldığı için hiçbir uygulama çalışmamaya başladı. (kabuk dahil)

Herneyse, bu durumla karşılaşma ihtimaliniz olursa eğer chroot vs. yapmadan sisteminizi kurtarmanız mümkün. Eğer henüz reboot atmamışsanız:

/usr/lib/ld-2.16.so /bin/mv /lib /libbackup
/usr/lib/ld-2.16.so /bin/ln -s /usr/lib /lib

komutlarını vererek sisteminizi kurtarabilirsiniz.

Eğer reboot atmışsanız, init açılırken kernel panic alıyorsunuz zaten. Bu durumda sistem önyükleyicinizde Arch Linux ile ilgili satırı düzenleyerek (grub için e, syslinux için tab’a basmanız yeterli) kernel parametresi olarak şunu yazmanız gerekiyor:

init=/usr/lib/ld-2.16.so /bin/sh

Bu şekilde “single user mode” ile sisteminizi açmış oluyorsunuz. Bu aşamadan sonra öncelikle dosya sisteminizi yazılabilir (rw) olarak bağlamalı, ardından da sembolik bağ işlemini yapmanız gerekiyor:

/usr/lib/ld-2.16.so /bin/mount -o remount,rw /
/usr/lib/ld-2.16.so /bin/mv /lib /libbackup
/usr/lib/ld-2.16.so /bin/ln -s /usr/lib /lib

Bu şekilde sisteminizi kurtarabilirsiniz, ilgili işlemleri yaptıktan sonra reboot atıp tekrar pacman -S glibc demenizde fayda var tabii.

Not: Bu işlem sadece 64 bitte gerekiyor olabilir, sorunun kaynağı lib32-glibc paketi aslında. Ancak yine de herhangi bir şekilde glibc patlarsa bu şekilde kurtarabileceğinizi bilin istedim :).

  • Haluk Kaya

    iyiki testing kullanmıyormuşum.

  • Hakiki Archer

    Arch Linux web sayfasından konuyla ilgili duyuru geldi. Buradan bakabilirsin: http://www.archlinux.org/news/the-lib-directory-becomes-a-symlink/

  • http://www.kaplumbalik.wordpress.com kalamarr

    şimdi testing olmayan 32 bit archtada geçerli ama ben çözmeye çalışırken yaptığım hatalar nedeniyle chrootla tam anlamadığım bir biçimde kurtardım. chrootsuz çözümler bile bende hata veriyordu