Ada yang dapat dieksekusi yang ingin saya instal di komputer yang saya tidak bisa mengkompilasi ulang yang tidak dibangun sebagai sebuah paket, dan saya ingin mengunduh perpustakaan yang diperlukan untuk menjalankannya.
Di bawah ini adalah bagian dari output dari berjalan ldd
di atasnya
libpango-1.0.so.0 => /usr/lib/i386-linux-gnu/libpango-1.0.so.0 (0xb702f000)
libcairo.so.2 => /usr/lib/i386-linux-gnu/libcairo.so.2 (0xb6f64000)
libatk-1.0.so.0 => /usr/lib/i386-linux-gnu/libatk-1.0.so.0 (0xb6f43000)
libsqlite3.so.0 => /usr/lib/i386-linux-gnu/libsqlite3.so.0 (0xb6e9e000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb6cf4000)
/lib/ld-linux.so.2 (0xb786e000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb6cd3000)
libgio-2.0.so.0 => /usr/lib/i386-linux-gnu/libgio-2.0.so.0 (0xb6b7c000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb6b4f000)
Apakah ada alat yang dapat menggunakan informasi ini untuk memilih paket mana yang harus diunduh atau lebih baik lagi mengekstrak hanya perpustakaan yang terdaftar dan dependensinya, untuk meminimalkan penggunaan disk? Sistem berjalan pada VM tanpa kepala dan program akan ditampilkan melalui VNC.
Walaupun saya curiga desktop grafis yang penuh sesak akan memasok sebagian besar pustaka yang diperlukan, saya hanya ingin mengunduh pustaka yang diperlukan, dependensinya, dan hanya cukup paket X Windows untuk mendukungnya.
sumber
Jawaban:
Anda belum mengatakan OS mana yang Anda gunakan, jadi saya akan menganggap Linux dan akan menggunakan Debian sebagai contoh. Jawaban cepat untuk pertanyaan Anda tidak sejauh yang saya tahu. Ini mungkin solusi yang berguna:
Ini akan menguraikan
ldd
output dan kemudian menjalankanapt-cache
(ganti dengan yang setara untuk OS Anda) untuk mencari repositori untuk paket-paket yang nama dan deskripsinya berisi bagian pertama dari nama perpustakaan yang dikembalikan olehldd
.Ini tidak akan menemukan semuanya dan akan memberikan terlalu banyak hasil untuk beberapa (seperti
libc
) tetapi ini bisa membantu.@FaheemMitha menunjukkan bahwa
apt-file
mungkin itu cara yang lebih baik. Sebagai contoh:Itu akan mengembalikan daftar nama paket yang menyediakan pustaka yang ditautkan.
sumber
apt-file search
pada file sebenarnya di sisi kanan panah mungkin lebih efektif.apt-get install
semua dari mereka dan yang sudah diinstal akan diabaikan.Jawaban @ terdon sangat bagus tetapi lebih mudah untuk melakukan ini menggunakan
dpkg-query
yang tidak sepertiapt-file
diinstal secara default pada sistem Debian.Ini menghasilkan daftar paket.
sumber
Taruhan terbaik Anda adalah menemukan paket yang benar-benar mendukung distribusi Anda. Tetapi jika itu tidak akan berhasil untuk Anda maka saya hanya tahu satu cara lain.
Jalankan ldd seperti yang Anda miliki, lalu instal dependensi tersebut secara manual.
Sebagai contoh
libpango-1.0.so.0 => /usr/lib/i386-linux-gnu/libpango-1.0.so.0 (0xb702f000)
Bagi saya berarti menginstal
apt-get install libpango:i386
dan berdoa agar versi di Debian tidak stabil cukup baik.Anda harus melewati setiap baris ldd, Google, lihat di repositori yang tersedia, dan pada dasarnya menjadi beruntung. Kemudian instal satu per satu. Sampai program benar-benar berjalan. ldd hanya akan bekerja untuk program "sederhana". Program yang memanggil plugin atau yang menjalankan kode arbitrer adalah masalah yang berbeda secara bersamaan. Bagi Anda, Anda perlu menjalankan dari konsol, dan memperbaiki crash / kesalahan saat terjadi.
Yang mengatakan, biner hanya dapat dijalankan sangat sulit untuk mempertahankan. Anda mungkin ingin mempertimbangkan untuk menggunakan sesuatu yang lain. Jika distro Anda sedikit di depan, atau sedikit di belakang sistem yang membangun executable itu, Anda mungkin tidak akan pernah berhasil.
sumber