كيف يمكنني الارتباط مقابل Libs postgresql عندما أقوم بتجميع سايروس Seiveshell؟
-
18-09-2019 - |
سؤال
أحافظ على كومة برمجية تتكون من بيرل وسيروس IMAP من بين أشياء أخرى.
يبدو أن بيرل يعمل بشكل جيد وسيروس سيراادم (برنامج نصي بيرل) يعمل بشكل جيد أيضا. ومع ذلك، لن تنفذ Seieveshell وسبب طلب المساعدة هنا.
عندما أقوم بتشغيل seieveshell، أحصل على إخراج متابعة:
لا يمكن تحميل '/usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/cyrus/sieve/managesieve/managesieve.so' للوحدة CYRUS: : غربال :: managesieve pqfinish في /usr/local/pozix/pozix/perl-5.10.0/lib/5.10.0/i686-linux-thread-multi/dynaloader.pm الخط 203. في. فشل التجميع 45/sieveshell في تتطلب في ./sieveshell Line 45. ابدأ فشل - تجميع إحباط في ./sieveshell Line 45.
PQFinish جزء من مكتبات postgresql. إذا قمت بتشغيل LDD على managesieve.so، فإن PGSQL Libs غير مرتبط بمعني، لا توجد مكتبات مفقودة أيضا. إذا قمت بتشغيل LDD على مكتبة LIBSASL2 المدرجة، فإنه يبدو موافقا أيضا ولا يستخدم PGSQL ولكن يبدو أنه ليس جزءا من المكتبة المرتبطة ب ManageseAve.So. علاوة على ذلك، يعمل LIBSASL2 جيدا عند استخدامها من قبل برامج أخرى.
هنا ldd managesieve.so
linux-gate.so.1 => (0xffffe000)
libdb-4.4.so => /lib/libdb-4.4.so (0xb7f8a000)
libsasl2.so.2 => /usr/local/pozix/cyrus-sasl/lib/libsasl2.so.2 (0xb7f74000)
libssl.so.0 => /usr/lib/libssl.so.0 (0xb7f33000)
libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0xb7df6000)
libc.so.6 => /lib/libc.so.6 (0xb7caa000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7c92000)
libdl.so.2 => /lib/libdl.so.2 (0xb7c8e000)
libresolv.so.2 => /lib/libresolv.so.2 (0xb7c7b000)
/lib/ld-linux.so.2 (0xb80aa000)
LDD USR / محلي / بوزيكس / سايروس-SASL / LIB / LIBSASL2.SO.2
linux-gate.so.1 => (0xffffe000)
libdl.so.2 => /lib/libdl.so.2 (0xb7f0a000)
libresolv.so.2 => /lib/libresolv.so.2 (0xb7ef7000)
libc.so.6 => /lib/libc.so.6 (0xb7dab000)
/lib/ld-linux.so.2 (0xb7f34000)
لا توجد أخطاء تجميع أثناء بناء سايروس IMAP أيضا. أظن أن هذا قد يكون مشكلة مسار ولكن غير متأكد من أين تبدو أو تصحيح إخراج المسار أو أين تذهب بعد ذلك.
حاول جوجلينج من أجل هذا وحصلت على زوجين، لكنهم إما ليس لديهم أي حل أو لم ينجح علي. أظن أن تربط بيرل التلقائي المحفوظة بطريقة ما. DBD :: PG يبدو أنه يعمل كذلك؛ باستخدام الإصدار 2.15.1.
أي اقتراحات حول أين تذهب بعد ذلك؟ أي gurus بيرل هناك؟
تم حلها!
./configure يبني makefiles في كل دليل فرعي. تم إنشاء مكتبة managese.so مع مكالمة من بيرل ... IE Perl Makefile.pl مما أدى إلى Makefile. ساعدت نصيحة أندرو بشكل كبير في تتبع هذا. في Makefile، هناك الخطوط التالية:
EXTRALIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -lsasl2 -lssl -lcrypto
LDLOADLIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -lsasl2 -lssl -lcrypto
الذي قمت بتحديثه لقراءة:
EXTRALIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -L/usr/local/pozix/pgsql/lib -lsasl2 -lssl -lcrypto -lpq
LDLOADLIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -L/usr/local/pozix/pgsql/lib -lsasl2 -lssl -lcrypto -lpq
وهذا حلها!
المحلول
يبدو أنك بحاجة إلى إعادة تجميع مكتبة غربال المشتركة وتضمين lpgsql. (أو أيا كان). هل يوجد تهيئة البرنامج النصي الذي تحتاجه لإضافة "- Postgres"؟ إذا لم يكن الأمر كذلك، فقد تضطر إلى تحرير makefile (أو makefile.pl أو build.pl يدويا يدويا).