Bisakah saya menggunakan ld.so.cache saya sendiri?

13

ldconfig memiliki dua opsi menarik:

-f conf
      Use conf instead of /etc/ld.so.conf.
-C cache
      Use cache instead of /etc/ld.so.cache.

Saya mencoba menyalin /etc/ld.so.confke direktori home saya sendiri, dan mengeditnya untuk memasukkan path ke perpustakaan lokal saya misalnya /home/syockit/local/usr/libdll. Dan berlari

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache

dan kemudian, untuk mengkonfirmasi bahwa perpustakaan di-cache, saya berlari

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache -p | less

dan itu tidak termasuk semua perpustakaan saya di atas juga termasuk perpustakaan sistem.

Sekarang, saya ingin memiliki linker default menggunakan keduanya. Tetapi dalam man ld.so, saya melihat tidak disebutkan bisa menggunakan kebiasaan .confatau .cache. Jadi apa gunanya dua opsi di atas ldconfig?

Syockit
sumber

Jawaban:

8

Saya pikir jawaban untuk pertanyaan Anda adalah tidak, meskipun Anda dapat melakukan hal yang sama dengan cara lain.

di man ld.so, saya tidak melihat ada yang bisa menggunakan custom .conf atau .cache

Benar, tetapi ada penyebutan $LD_LIBRARY_PATHdan dan --library-path, yang pertama lebih bermanfaat secara umum.

apa gunanya dua opsi di atas ldconfigsaat itu?

Jadi Anda dapat membuat cache tanpa menimpa sistem, dan tanpa harus menggunakan sistem confs.

goldilocks
sumber
... hanya untuk itu? Atau untuk forensik sistem?
syockit
1
Bisa untuk citra sistem atau lingkungan chroot, dll.
goldilocks
5

/etc/ld.so.confhanya dibaca oleh ldconfig(program pembuatan cache), bukan oleh ld.so(pemuat dinamis). Anda dapat mengubah lokasi file konfigurasi jika Anda ingin menghasilkan cache yang berbeda dari standar sistem.

/etc/ld.so.cachedibaca oleh ld.sodan Anda tidak dapat membuatnya dibaca dari lokasi yang berbeda. Meskipun demikian dapat bermanfaat untuk melewatkan lokasi keluaran yang berbeda ldconfig. Kasus penggunaan yang paling umum adalah lingkungan chroot . Anda dapat menggunakan ldconfig -r /some/rootuntuk menjalankan ldconfigpada root alternatif, dan menempatkan output di mana pun Anda inginkan (di dalam atau di luar root itu). Anda harus memancarkan output /some/root/etc/ld.so.cacheatau menyalinnya nanti. Ada beberapa kasus penggunaan lain yang tidak jelas, misalnya jika Anda ingin menjalankan ldconfigsebagai pengguna yang tidak berhak (yang tidak dapat menulis surat /etc/ld.so.cache) dan kemudian memindahkan file tersebut ke tempatnya nanti.

Gilles 'SANGAT berhenti menjadi jahat'
sumber