این دستور dpkg-shlibdeps است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
dpkg-shlibdeps - وابستگی های substvar کتابخانه مشترک را ایجاد کنید
خلاصه
dpkg-shlibdeps [انتخاب...] [-e]قابل اجرا [انتخاب...]
شرح
dpkg-shlibdeps وابستگی های کتابخانه مشترک را برای فایل های اجرایی نامگذاری شده در آن محاسبه می کند
استدلال ها وابستگی ها به فایل متغیرهای جایگزین اضافه می شوند debian/substvars
به عنوان نام متغیر shlibs:حوزه وابستگی جایی که حوزه وابستگی یک زمینه وابستگی است
نام. هر متغیر دیگری که با آن شروع می شود shlibs: از فایل حذف می شوند.
dpkg-shlibdeps دارای دو منبع اطلاعاتی ممکن برای تولید اطلاعات وابستگی است.
در هر نمادها پرونده ها یا شلیب ها فایل ها. برای هر باینری که dpkg-shlibdeps تحلیل می کند، آن را
لیست کتابخانه هایی را که با آنها مرتبط است پیدا می کند. سپس، برای هر کتابخانه، به نظر می رسد
بالا یا نمادها فایل، یا شلیب ها فایل (اگر اولی وجود نداشته باشد یا اگر
debian/shlibs.local حاوی وابستگی مربوطه است). قرار است هر دو فایل باشند
ارائه شده توسط بسته کتابخانه و بنابراین باید در دسترس باشد
/var/lib/dpkg/info/بسته.نمادها or /var/lib/dpkg/info/بسته.شلیب ها. نام بسته
در دو مرحله شناسایی می شود: یافتن فایل کتابخانه در سیستم (به دنبال همان
دایرکتوری هایی که ld. بنابراین استفاده می کند)، سپس استفاده می کند dpkg -S کتابخانه-پرونده برای جستجوی بسته
فراهم کردن کتابخانه
نمادها فایل ها
فایل های نمادها حاوی اطلاعات وابستگی با دانه بندی دقیق تری با ارائه حداقل هستند
وابستگی برای هر نمادی که کتابخانه صادر می کند. اسکریپت سعی می کند یک نماد را پیدا کند
فایل مرتبط با یک بسته کتابخانه در مکان های زیر (اولین تطابق استفاده می شود):
debian/*/DEBIAN/symbols
اطلاعات کتابخانه مشترک تولید شده توسط فرآیند ساخت فعلی که همچنین فراخوانی شده است
dpkg-shlibdeps. آنها تولید می شوند dpkg-symbols(1). آنها فقط در صورتی استفاده می شوند که
کتابخانه در درخت ساخت یک بسته یافت می شود. فایل نمادها در آن درخت ساخت
بر فایل های نمادهای دیگر بسته های باینری ارجحیت دارد.
/etc/dpkg/symbols/بسته.نمادها.قوس
/etc/dpkg/symbols/بسته.نمادها
نادیده گرفتن اطلاعات وابستگی کتابخانه مشترک به ازای هر سیستم. قوس هست
معماری سیستم فعلی (به دست آمده توسط dpkg-معماری -qDEB_HOST_ARCH).
خروجی از "dpkg پرس و جو - مسیر کنترل بسته نمادها”
اطلاعات وابستگی کتابخانه مشترک ارائه شده توسط بسته. مگر اینکه توسط
-- admindir، آن فایل ها در /var/lib/dpkg قرار دارند.
هنگام اسکن نمادهای استفاده شده توسط همه باینری ها، dpkg-shlibdeps (بزرگترین) را به یاد می آورد
حداقل نسخه مورد نیاز برای هر کتابخانه. در پایان فرآیند، قادر به نوشتن است
از حداقل وابستگی برای هر کتابخانه استفاده شده (به شرطی که اطلاعات
نمادها فایل ها دقیق هستند).
به عنوان یک اقدام حفاظتی، یک فایل نمادها میتواند a Build-Depends-Package متا
زمینه اطلاعات و dpkg-shlibdeps حداقل نسخه مورد نیاز توسط را استخراج می کند
بسته مربوطه در ساخت بستگی دارد این نسخه را وارد کنید و اگر بالاتر از آن است از آن استفاده کنید
حداقل نسخه محاسبه شده با اسکن نمادها.
شلیبس فایل ها
فایل های Shlibs مستقیماً یک کتابخانه را به یک وابستگی مرتبط می کنند (بدون نگاه کردن به
نمادها). بنابراین اغلب قوی تر از چیزی است که واقعاً مورد نیاز است، اما بسیار ایمن و آسان برای رسیدگی است.
وابستگی های یک کتابخانه در چندین مکان جستجو می شود. ارائه فایل اول
اطلاعات برای کتابخانه مورد علاقه استفاده می شود:
debian/shlibs.local
بسته-محلی بر اطلاعات وابستگی کتابخانه مشترک.
/etc/dpkg/shlibs.override
نادیده گرفتن اطلاعات وابستگی کتابخانه مشترک به ازای هر سیستم.
debian/*/DEBIAN/shlibs
اطلاعات کتابخانه مشترک تولید شده توسط فرآیند ساخت فعلی که همچنین فراخوانی شده است
dpkg-shlibdeps. آنها فقط در صورتی استفاده می شوند که کتابخانه در ساخت یک بسته پیدا شود
درخت فایل shlibs در آن درخت بیلد بر فایل های shlibs از اولویت دارد
سایر بسته های باینری
خروجی از "dpkg پرس و جو - مسیر کنترل بسته شلیب
اطلاعات وابستگی کتابخانه مشترک ارائه شده توسط بسته. مگر اینکه توسط
-- admindir، آن فایل ها در /var/lib/dpkg قرار دارند.
/etc/dpkg/shlibs.default
اطلاعات وابستگی کتابخانه مشترک پیش فرض هر سیستم.
سپس وابستگی های استخراج شده مستقیماً مورد استفاده قرار می گیرند (به جز اگر فیلتر شوند زیرا
آنها به عنوان تکراری یا ضعیف تر از وابستگی دیگر شناسایی شده اند).
OPTIONS
dpkg-shlibdeps آرگومانهای غیر گزینهای را به عنوان نامهای اجرایی تفسیر میکند، درست مثل اینکه چنین بودهاند
عرضه شده به عنوان -eقابل اجرا.
-eقابل اجرا
شامل وابستگی های مناسب برای کتابخانه های مشترک مورد نیاز قابل اجرا.
این گزینه را می توان چندین بار استفاده کرد.
-lفهرست راهنما
اضافه کردن فهرست راهنما به فهرست دایرکتوری ها برای جستجوی کتابخانه های مشترک خصوصی
(از dpkg 1.17.0). این گزینه را می توان چندین بار استفاده کرد.
توجه: از این گزینه به جای تنظیمات استفاده کنید LD_LIBRARY_PATH، به عنوان آن محیط
متغیر برای کنترل پیوند دهنده زمان اجرا و سوء استفاده از آن برای تنظیم اشتراک گذاری استفاده می شود
به عنوان مثال، مسیرهای کتابخانه در زمان ساخت می تواند هنگام کامپایل متقابل مشکل ساز باشد.
-dحوزه وابستگی
وابستگی هایی را برای اضافه شدن به قسمت وابستگی فایل کنترلی اضافه کنید حوزه وابستگی.
(وابستگی های این فیلد در متغیر قرار می گیرند shlibs:وابستگی-
رشته.)
La -dحوزه وابستگی گزینه بعد از گزینه برای همه فایل های اجرایی اعمال می شود
تا بعدی -dحوزه وابستگی. به طور پیش فرض حوزه وابستگی is بستگی دارد.
اگر همان ورودی وابستگی (یا مجموعه ای از گزینه ها) در بیش از یکی از آنها ظاهر شود
نام فیلدهای وابستگی شناخته شده از قبل بستگی دارد, بستگی دارد, توصیه می کند, افزایش می یابد or
حاکی از سپس dpkg-shlibdeps به طور خودکار وابستگی را از همه حذف می کند
فیلدها به جز یکی که نشان دهنده مهم ترین وابستگی ها است.
-pvarname-پیشوند
شروع متغیرهای جایگزینی با varname-پیشوند: بجای shlibs:. به همین ترتیب،
هر متغیر جایگزینی موجود که با آن شروع می شود varname-پیشوند: (به جای
shlibs:) از فایل متغیرهای جایگزین حذف می شوند.
-O[نام فایل]
تنظیمات متغیر جایگزینی چاپ به خروجی استاندارد (یا نام فایل در صورت مشخص شدن،
از dpkg 1.17.2)، به جای اینکه به فایل متغیرهای جایگزین اضافه شود
(debian/substvars به صورت پیش فرض).
-tنوع اطلاعات وابستگی کتابخانه مشترک برچسب گذاری شده برای نوع بسته داده شده را ترجیح دهید. اگر
هیچ اطلاعات برچسب گذاری شده ای در دسترس نیست، به اطلاعات بدون برچسب باز می گردد. پیشفرض
نوع بسته بندی است بده. اطلاعات وابستگی کتابخانه مشترک برای یک مشخص برچسب گذاری می شود
با پیشوند آن با نام نوع، دو نقطه و فضای خالی تایپ کنید.
-Llocal-shlibs-file
اطلاعات وابستگی کتابخانه مشترک را از اینجا بخوانید local-shlibs-file
بجای debian/shlibs.local.
-Tفایل substvars
متغیرهای جایگزین را در آن بنویسید فایل substvars; پیش فرض است debian/substvars.
-v حالت کلامی را فعال کنید (از dpkg 1.14.8). پیام های متعددی به نمایش داده می شود
چیو توضیح بدم dpkg-shlibdeps انجام می دهد.
-xبسته
بسته را از وابستگی های تولید شده خارج کنید (از dpkg 1.14.8). این هست
برای جلوگیری از وابستگی به خود برای بسته هایی که باینری های ELF ارائه می کنند مفید است
(قابل اجرا یا پلاگین های کتابخانه) با استفاده از کتابخانه موجود در همان بسته.
این گزینه می تواند چندین بار برای حذف چندین بسته استفاده شود.
-Sبسته-ساخت-دایر
نگاه به بسته-ساخت-دایر ابتدا هنگام تلاش برای یافتن یک کتابخانه (از dpkg
1.14.15). این زمانی مفید است که بسته منبع چندین طعم از آن را ایجاد کند
همان کتابخانه و میخواهید اطمینان حاصل کنید که وابستگی را از یک باینری معین دریافت میکنید
بسته بندی میتوانید چندین بار از این گزینه استفاده کنید: دایرکتوریها در قسمت مورد آزمایش قرار خواهند گرفت
همان ترتیب قبل از دایرکتوری های بسته های باینری دیگر.
اطلاعات - نادیده گرفته می شود
اگر اطلاعات وابستگی برای یک کتابخانه مشترک یافت نشد شکست نخورید (از آنجا که
dpkg 1.14.8). استفاده از این گزینه ممنوع است، همه کتابخانه ها باید ارائه کنند
اطلاعات وابستگی (چه با فایلهای shlibs یا با فایلهای نمادها) حتی اگر
آنها هنوز توسط بسته های دیگر استفاده نمی شوند.
-- هشدارها =ارزش
ارزش یک فیلد بیتی است که مجموعه ای از اخطارهایی را که می تواند توسط آن منتشر شود را تعریف می کند
dpkg-shlibdeps (از dpkg 1.14.17). بیت 0 (مقدار = 1) علامت هشدار را فعال می کند
همزاد استفاده شده توسط دوتایی در هیچ یک از کتابخانه ها یافت نشد، بیت 1 (مقدار = 2) را فعال می کند
هشدار "بسته می تواند از وابستگی بی فایده جلوگیری کند" و بیت 2 (مقدار = 4) را فعال می کند
هشدار”دوتایی نباید علیه آن مرتبط شود کتابخانه". پیشفرض ارزش 3 است:
دو اخطار اول به طور پیش فرض فعال هستند، آخرین هشدار فعال نیست. تنظیم ارزش به 7 اگر
شما می خواهید همه هشدارها فعال باشند.
--admindir=دیر
مکان را تغییر دهید dpkg پایگاه داده (از dpkg 1.14.0). مکان پیش فرض
is /var/lib/dpkg.
-?, --کمک
نمایش پیام استفاده و خروج.
- نسخه
نسخه را نشان دهید و خارج شوید.
عیب یابی
هشدارها
پس از dpkg-shlibdeps مجموعه ای از نمادهای استفاده شده توسط هر دودویی از تولید شده را تجزیه و تحلیل می کند
بسته، در چندین مورد قادر به انتشار هشدار است. آنها شما را از چیزهایی آگاه می کنند که می توانند
در بسته بهبود یابد. در بیشتر موارد، این بهبودها مربوط به منابع بالادستی است
به طور مستقیم. به ترتیب کاهش اهمیت، در اینجا هشدارهای مختلفی وجود دارد که می توانید
رویارویی:
نماد همزاد استفاده by دوتایی یافت in هیچ of la کتابخانه ها
نماد مشخص شده در کتابخانه های مرتبط با باینری یافت نشد.
La دوتایی به احتمال زیاد یک کتابخانه است و باید با یک کتابخانه اضافی پیوند داده شود
کتابخانه در طول فرآیند ساخت (گزینه -lکتابخانه پیوند دهنده).
دوتایی شامل an غیر قابل حل مرجع به نماد همزاد: آن شاید a پلاگین
نماد مشخص شده در کتابخانه های مرتبط با باینری یافت نشد.
La دوتایی به احتمال زیاد یک افزونه است و نماد احتمالاً توسط
برنامه ای که این افزونه را بارگذاری می کند. در تئوری یک افزونه هیچ SONAME جز این ندارد
باینری یکی دارد و به همین دلیل نمی توان آن را به وضوح شناسایی کرد.
با این حال، این واقعیت که باینری در یک فهرست غیر عمومی ذخیره می شود، یک نکته قوی است
نشان می دهد که این یک کتابخانه مشترک معمولی نیست. اگر باینری واقعا a باشد
افزونه، سپس این هشدار را نادیده بگیرید. اما همیشه این احتمال وجود دارد که یک
کتابخانه واقعی و اینکه برنامه های مرتبط با آن از RPATH استفاده می کنند تا پویا باشد
لودر آن را پیدا می کند. در این صورت، کتابخانه خراب است و باید تعمیر شود.
بسته میتوانست اجتناب از a بی فایده وابستگی if دوتایی بود نه مرتبط در برابر کتابخانه (آی تی استفاده
هیچ of la کتابخانه نمادها)
هیچ یک از دوتایی که مرتبط هستند کتابخانه از هر یک از نمادهای ارائه شده استفاده کنید
توسط کتابخانه با اصلاح همه باینری ها، از وابستگی جلوگیری می کنید
مرتبط با این کتابخانه (مگر اینکه همان وابستگی توسط دیگری ایجاد شود
کتابخانه ای که واقعا استفاده می شود).
بسته میتوانست اجتناب از a بی فایده وابستگی if دوتایی بود نه مرتبط در برابر کتابخانه (آنها
استفاده هیچ of la کتابخانه نمادها)
دقیقا مشابه اخطار بالا، اما برای چندین باینری.
دوتایی باید نه be مرتبط در برابر کتابخانه (آی تی استفاده هیچ of la کتابخانه نمادها)
La دوتایی به کتابخانه ای که به آن نیازی ندارد پیوند داده شده است. مشکلی نیست اما بعضی ها
بهبود عملکرد کوچک در زمان بارگذاری دودویی را می توان با عدم پیوند به دست آورد
این کتابخانه به این باینری. این هشدار همان اطلاعات را بررسی می کند
قبلی اما این کار را برای هر باینری انجام می دهد به جای اینکه همه را به صورت سراسری بررسی کند
باینری ها تجزیه و تحلیل شدند
خطاهای
dpkg-shlibdeps اگر نتواند یک کتابخانه عمومی مورد استفاده توسط باینری را پیدا کند یا اگر این مورد شکست بخورد
کتابخانه هیچ اطلاعات وابستگی مرتبطی ندارد (یا فایل shlibs یا فایل نمادها). آ
کتابخانه عمومی دارای SONAME است و نسخه شده است (libsomething.so.X). یک کتابخانه خصوصی (مانند
یک افزونه) نباید SONAME داشته باشد و نیازی به نسخهسازی ندارد.
نمی توانست پیدا کردن کتابخانه کتابخانه-سونام ضروری by دوتایی (آن RPATH is 'rpath')
La دوتایی از کتابخانه ای به نام استفاده می کند کتابخانه-سونام اما dpkg-shlibdeps نتوانسته است
برای پیدا کردن کتابخانه dpkg-shlibdeps لیستی از دایرکتوری ها را برای بررسی ایجاد می کند
زیر: دایرکتوری های فهرست شده در RPATH باینری، دایرکتوری های فهرست شده در
/etc/ld.so.conf، دایرکتوری های اضافه شده توسط -l گزینه، دایرکتوری های فهرست شده در
LD_LIBRARY_PATH متغیر محیطی و دایرکتوری های عمومی استاندارد (/ lib,
/ usr / معاونت, /lib32, / usr / lib32, /lib64، /usr/lib64). سپس آن دایرکتوری ها را بررسی می کند
در درخت ساخت بسته از باینری در حال تجزیه و تحلیل، در ساخت بسته ها
درختان نشان داده شده با -S گزینه خط فرمان، در درختان ساخت بسته های دیگر
که حاوی یک فایل DEBIAN/shlibs یا DEBIAN/symbols و در نهایت در ریشه است
فهرست راهنما. اگر کتابخانه در هیچ یک از آن دایرکتوری ها یافت نشد، دریافت می کنید
این خطا
اگر کتابخانه ای که پیدا نشد در یک دایرکتوری خصوصی همان بسته است، پس شما
می خواهید دایرکتوری را با -l. اگر در بسته باینری دیگری در حال ساخت باشد،
می خواهید مطمئن شوید که فایل shlibs/symbols این بسته از قبل موجود است
ایجاد شده و آن -l حاوی دایرکتوری مناسب است اگر آن نیز در یک خصوصی باشد
دایرکتوری.
نه وابستگی اطلاعات یافت برای کتابخانه-پرونده (استفاده شده by دوتایی).
کتابخانه مورد نیاز دوتایی توسط پیدا شده است dpkg-shlibdeps in کتابخانه-پرونده اما
dpkg-shlibdeps قادر به یافتن اطلاعات وابستگی برای آن کتابخانه نیست.
برای پی بردن به وابستگی، سعی کرده است کتابخانه را به یک بسته دبیان نگاشت کند
با کمک dpkg -S کتابخانه-پرونده. سپس shlibs مربوطه را بررسی کرد
و فایل های نمادها در /var/lib/dpkg/info/، و در بسته های مختلف درختان ساخت
(debian/*/DEBIAN/).
این خرابی می تواند ناشی از یک فایل shlibs یا نمادهای بد یا گم شده در فایل باشد
بسته کتابخانه همچنین ممکن است اتفاق بیفتد اگر کتابخانه در داخل ساخته شود
همان بسته منبع و اگر فایل های shlibs هنوز ایجاد نشده باشد (در این صورت
قبل از فراخوانی باید دبیان/قوانین را برای ایجاد shlibs اصلاح کنید dpkg-shlibdeps). بد
RPATH همچنین می تواند منجر به یافتن کتابخانه با نام غیر متعارف شود (مثال:
/usr/lib/openoffice.org/../lib/libssl.so.0.9.8 به جای /usr/lib/libssl.so.0.9.8)
که به هیچ بسته ای مرتبط نیست، dpkg-shlibdeps سعی می کند با این کار دور بزند
تلاش برای بازگشت به یک نام متعارف (با استفاده از مسیر واقعی(3)) اما ممکن است همیشه نباشد
کار همیشه بهتر است RPATH باینری را تمیز کنید تا مشکلی ایجاد نشود.
صدا زدن dpkg-shlibdeps در حالت پرحرف (-v) اطلاعات بسیار بیشتری ارائه خواهد کرد
در مورد جایی که سعی کرد اطلاعات وابستگی را پیدا کند. این ممکن است مفید باشد اگر
شما متوجه نمی شوید که چرا این خطا را به شما می دهد.
با استفاده از خدمات onworks.net از dpkg-shlibdeps به صورت آنلاین استفاده کنید
