سؤال

أواجه مشكلة في الحصول على تطبيق Rails على Dreamhost's Passenger لرؤية المكتبات المجمعة في دليل ~/opt/lib الخاص بي.لا بد لي من وضعها هنا لأنني لا أملك الوصول إلى الجذر.

يمكنني تشغيل تطبيقي في ./script/console ويرى مكتباتهم على ما يرام لأنني قمت بتحديث ملف .bash_profile الخاص بي LD_LIBRARY_PATH متغير البيئة ليشمل ~/opt/lib.

لقد حاولت وضع ENV['LD_LIBRARY_PATH'] = '~/opt/lib' في ملف Environment.rb الخاص بي ولكن لا يبدو أنه يساعد كثيرًا.أتلقى الخطأ التالي من Passenger عندما أنتقل إلى موقعي:libodbcinst.so.1:لا يمكن فتح ملف الكائن المشترك:لا يوجد مثل هذا الملف أو الدليل - /home/username/opt/lib/odbc.so

أي شخص لديه خبرة في هذا؟

شكرًا

هل كانت مفيدة؟

المحلول

والطريقة environment.rb يبدو وكأنه وسيلة للذهاب، على الرغم من أنك قد ترغب في إلحاق LD_LIBRARY_PATH بدلا من ذلك. أيضا كنت تأكد من استخدام المسار الكامل إلى هذا الدليل عادل في القضية.

وبدلا من ذلك قد تكون قادرة على استخدام توجيهات .htaccess، على غرار ما يوصف @ HTTP: / /wiki.rubyonrails.org/rails/pages/HowToUseOracleWithFastCGI

نصائح أخرى

وكان لي مشكلة مشابهة مع الركاب التي وصفتها في <لأ href = "http://blog.rayapps.com/2008/05/21/using-mod_rails-with-rails-applications-on-oracle/" يختلط = "نوفولو noreferrer"> http://blog.rayapps.com/2008/05/21/using-mod_rails-with-rails-applications-on-oracle/

ولكن في حالتك هذه migth لا تعمل كما أنك لن تكون قادرا على تغيير ملف httpd.conf درمهوست ل.

والشيء الآخر الذي يمكنك محاولة لتعيين LD_LIBRARY_PATH في .bashrc - وفقا ل<لأ href = "http://www.wavethenavel.com/jonathanpenn/2008/09/08/bootstrapping-a-dreamhost-account- لالقضبان، وبوابة / "يختلط =" نوفولو noreferrer "> http://www.wavethenavel.com/jonathanpenn/2008/09/08/bootstrapping-a-dreamhost-account-for-rails-and-git/ عملت هذا في حالة درمهوست ل. لم التحقق من أن الركاب سيتم تنفيذ .bashrc قبل إطلاق روبي.

وعن طريق .bashrc لن تنجح، كمسار مكتبة التي يستخدمها الركاب هو الذي يحمل اباتشي على التمهيد. لا توجد وسيلة انها ستبحث في دليل المستخدم لأن ذلك سيكون مسألة أمنية كبيرة.

هذا موضوع قديم، ولكن من أجل الاكتمال، إليك كيفية تحقيق هدفك:

  1. لا تقم بتعيين LD_LIBRARY_PATH إن أمكن - فهو أمر مروع.
  2. نظرًا لأنه ليس لديك سيطرة على البيئة التي لن تعمل فيها بيئة مستخدم Apache ، فإن محاولة تعيين LD_Library_Path Env Var لكل الطرق أعلاه لن تعمل على أي حال.
  3. قم بتعيين متغير بيئة LDFLAGS مع تحديد إشارات مسار الارتباط والتسجيل قبل تجميع ملفات المكتبة لتعيين مسارات البحث الصحيحة - على سبيل المثال:

    تصدير LDFLAGS = "-L$HOME/opt/lib -R$HOME/opt/lib"

بمجرد تجميع الملفات، سيتم تعيين الارتباطات الصحيحة للمكتبات ذات الصلة.يمكنك التحقق من ذلك باستخدام أداة سطر الأوامر ldd - على سبيل المثال:

ldd /$HOME/your/custom/complied/library/file.so
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top