Menginstal dua glibc bersama di debian / ubuntu

15

Apakah mungkin untuk menginstal dan menggunakan dua versi glibc yang berbeda pada mesin yang sama. Di mana satu versi hanya digunakan untuk menjalankan perangkat lunak warisan, yang bergantung pada binari glibc lama?

Apakah mungkin untuk melakukannya dengan bantuan manajer paket (seperti "instal paket ini, dan dependensinya, untuk /opt/old-glibc), daripada mengaturnya dengan mengerikan

Elazar Leibovich
sumber
4
Pasti, tapi ... oh, sangat sakit.
tshepang
Mungkin, tetapi Anda harus memberikan detail lebih lanjut. Apa OS (versi Debian / Ubuntu) secara tepat, dan yang lebih penting apa itu perangkat lunak warisan, dan versi libc apa yang digunakan? Saya pikir lddakan memberitahumu sesuatu. Jika memungkinkan Anda mungkin perlu mengkompilasi ulang perpustakaan libc lama dan / atau menginstal / mengkompilasi ulang paket-paket pendukung. Bergantung pada usia aplikasi Anda, ini bisa menjadi rumit. Saya melihat Debian saat ini libc6tergantung pada libc-bin (= 2.13-0exp5)dan libgcc1, jadi libc6tidak memiliki banyak dependensi, tetapi Anda masih bisa mengalami masalah.
Faheem Mitha

Jawaban:

8

Iya itu mungkin. Anda harus sangat berhati-hati dengan lintasan pemuatan perpustakaan, dan Anda mungkin perlu mengkompilasi ulang beberapa perpustakaan lain.

Sebagai jalan yang paling tidak gesekan, saya sarankan untuk menginstal versi Debian atau Ubuntu yang lebih lama di chroot . Yaitu, buat direktori, katakan /old/etch, dan instal distribusi yang lebih lama di pohon yang di-root di sana; untuk menjalankan program yang bermasalah itu, panggil chrootuntuk membatasi pandangannya terhadap sistem file /old/etch.

Debian (atau Ubuntu) hadir dengan paket untuk membantu menginstal sistem lain di chroot: schroot (penerus dchroot). Pertama, gunakan debootstrap untuk menginstal distribusi yang lebih lama (instal hanya sistem dasar dan apa yang dibutuhkan program Anda, tidak ada server). Kemudian mendirikan schroot untuk menjalankan program mudah (dengan /dev, /proc, /homedan lainnya “satelit” filesystem diakses).

Jadi rencananya adalah: debootstrap, lalu dchroot. Di Bagaimana cara menjalankan program 32-bit pada Debian / Ubuntu 64-bit? , Saya memberikan tutorial tentang pengaturan serupa - apakah Anda menjalankan versi distribusi yang berbeda, atau arsitektur yang berbeda, atau distribusi seperti Debian yang berbeda, hanya masalah memilih sumber paket yang sesuai, sisanya adalah sama.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Jika sudah menginstal versi yang lebih baru, bisakah ia mulai dari itu dan kemudian, di atas yang lebih baru, instal yang lebih lama /old/etch?
n611x007
@naxa Ya, sebenarnya itulah situasinya yang dijelaskan di sini, tetapi ia bekerja dengan cara yang sama jika Anda melakukan sebaliknya (lebih baru chroot di yang lebih lama). Sebenarnya saya menulis tutorial debootstrap / schroot beberapa hari setelah menulis jawaban ini, saya telah menambahkan tautan.
Gilles 'SO- stop being evil'