MWN Website
ContactHome

Libc hilang

Create time: 8 Mei 2007
Last edit: -

Sistem: Debian 4.0

Sedang dialami saat ini :-) Saat mengubah sebuah server remote dari Kanotix ke Debian stable dengan "apt-get dist-upgrade", libc hilang (ter-remove lalu proses stop karena semua perintah menjadi gagal).

Kita perlu mentransfer libc dulu secara manual ke /lib...

Tapi bagaimana cara mentransfer file? Scp gagal, tidak bisa mentransfer file ke server. Tidak bisa melakukan dpkg, apt-get, wget, lynx, ftp dll dari server untuk mengambil file dari tempat lain. Bahkan perintah-perintah dasar seperti cp, ls, rm, mv, mkdir, semuanya gagal!

Untungnya, ada busybox sehingga perintah-perintah dasar dapat memakai versi busybox ini.

Lalu... ada satu session SSH yang masih hidup! Teorinya, kita dapat melakukan transfer file dengan kopi paste :-)

Kita dapat membuat menjalankan deretan perintah ini di server:

> /si/file
echo "\0\234\023\0\0\0\377\222..." >> /si/file
echo "\021\057\377\370\0\0\111..." >> /si/file
...

Deretan byte ini adalah isi dari /si/file. Bisa kita generate dari komputer kita sendiri sbb:

$ perl -le'
    open F, "/si/file";
    print ">/si/file";
    while(1){
      read F,$buf,100; last if length($buf)==0;
      print "echo -ne \"",
        (map {ord($_)==0 ? "\\0" : sprintf("\\%03o",ord($_)) }
         split("",$buf)),"\">>/si/file";
    }' >/tmp/script.sh

Lalu script.sh ini kita "paste"-kan dari komputer kita ke session SSH server remote. Asumsi menggunakan program terminal Konsole:

#!/usr/bin/perl
sub esc { local $_=shift; s/'/'"'"'/g; "'$_'" }
open F, "/tmp/script.sh";
$|++;
while (<F>) {
  chomp;
  system "dcop konsole-9732 session-6 sendSession ".esc($_);
  system "sleep 0.02";
  print "line $i ...\n" if $i++ % 10 == 0;
}

konsole-9732 diganti dengan session Konsole (bisa dicari dengan perintah "dcop"). session-6 diganti dengan session SSH remote server yang sebenarnya (bisa dicek dengan perintah "dcop konsole-9732").

Bersabarlah sejenak. File yang agak besar (ratusan KB) bisa beberapa menit ditransfernya. Serasa zaman BBS :-)

Setelah itu, di session SSH remote server, tinggal "busybox chmod +x /si/file" (jika ini program atau librari). Demikianlah proses upload menggunakan Konsole :-)

File apa yang sebaiknya ditransfer pertama kali menggunakan cara Konsole ini? Saran saya, wget-static. Build-lah wget-static dulu di komputer sendiri dengan cara:

  • ambil source wget mis dengan "apt-get source wget" atau ekstrak tarball wget.
  • jalankan perintah "LDFLAGS=--static ./configure && make". Hasil kompilasi nanti ada di src/wget.

Setelah kita memiliki wget, mengambil file dari remote server menjadi lebih mudah...

Saran berikutnya untuk dikirim ke server: strace-static. Buildlah dan transfer ke server, kali ini bisa menggunakan wget-static yang telah dikirim sebelumnya ke server dengan "susah payah" :-).

Dengan strace, lebih mudah mencari librari apa yang masih missing. Dan mengkopikannya ke server.

Setelah libc tertransfer, saran saya buatlah dpkg dan apt-get bekerja lagi. Lalu lanjutkan dengan Debian Way dari situ...


Navigasi

Feedback

Artikel Popular

  • selengkapnya...
  • Artikel Terbaru

  • Daftar rekening MWN
  • Promo 20-12
  • selengkapnya...
  • Hak cipta © 2006-2010 PT Master Web Network Konten ditulis dan dikoleksi oleh staf MWN. Komentar ditulis oleh pembaca. MWN tidak bertanggung jawab atas akurasi dan/atau kekinian konten/komentar.