شحن المكون الإضافي GNU/Linux Firefox مع مكتبات مشتركة (للتثبيت مع عدم الوصول إلى الجذر)

StackOverflow https://stackoverflow.com/questions/3015411

سؤال

التطبيق هو مكون إضافي Firefox (تم تحميله من $ home/.mozilla/plugins) ، لذا فإن البرنامج النصي المرفق الذي يعين ld_library_path ليس خيارًا سهلاً.

RPATH ، على حد علمي ، لا يمكن الرجوع إلى $ Home ويمكن أن يكون مسار المطلق فقط.

يحاول Firefox أن يكون dlopen هو البرنامج المساعد من ~/.mozilla/المكونات الإضافية ولكنه يفشل (لأنه يعتمد على المكتبات المشتركة المثبتة في مكان ما في الدليل المنزلي للمستخدم).

تعديل عنصر قائمة Firefox لتوفير غلاف (مع LD_Library_Path) حول Firefox هو الاختراق للغاية.

ما الذي يجب أن يفعله البرنامج النصي المثبت (بدون وصول الجذر) لجعل المكونات الإضافية القياسية Firefox Load التي تعتمد على المكتبة المشتركة؟

  1. هل يجب أن أحاول فقط تضمين كل شيء في ذلك. لذلك لإزالة التبعيات؟
  2. هل يجب أن أحاول إنشاء برنامج نصي للتثبيت لإنهاء الارتباط أو التصحيح RPTH أثناء مرحلة التثبيت؟
هل كانت مفيدة؟

المحلول

تعيين RPATH إلى $ORIGIN/lib لذلك سوف يبحث المحمل عن المكتبات بالنسبة إلى ملفي.

السيناريو يفسر فقط المكون الإضافي إلى $HOME/.mozilla/plugins/myplugin.so والمكتبات ل $HOME/.mozilla/plugins/lib/

يمكن تحديد RPATH إلى Linker على الرغم من GCC عن طريق الإضافة Wl,-rpath,'$ORIGIN/lib' ($ يجب مضاعفة في Makefile) ويمكن أيضًا تغييرها بعد التجميع patchelf.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top