এক্সিকিউটেবলকে সমর্থন করার জন্য কোন প্যাকেজ বা লাইব্রেরি লোড করা উচিত তা নির্ধারণ করার কোনও উপায় আছে কি?


11

একটি এক্সিকিউটেবল আমি এমন একটি কম্পিউটারে ইনস্টল করতে চাই যা আমি প্যাকেজ হিসাবে তৈরি করা হয়নি যা পুনরায় সংকলন করতে পারি না এবং এটি চালানোর জন্য প্রয়োজনীয় লাইব্রেরিগুলি ডাউনলোড করতে চাই।

নীচে চালু করা থেকে আউটপুট অংশ lddএটিতে

libpango-1.0.so.0 => /usr/lib/i386-linux-gnu/libpango-1.0.so.0 (0xb702f000)
libcairo.so.2 => /usr/lib/i386-linux-gnu/libcairo.so.2 (0xb6f64000)
libatk-1.0.so.0 => /usr/lib/i386-linux-gnu/libatk-1.0.so.0 (0xb6f43000)
libsqlite3.so.0 => /usr/lib/i386-linux-gnu/libsqlite3.so.0 (0xb6e9e000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb6cf4000)
/lib/ld-linux.so.2 (0xb786e000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb6cd3000)
libgio-2.0.so.0 => /usr/lib/i386-linux-gnu/libgio-2.0.so.0 (0xb6b7c000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb6b4f000)

ডিস্কের ব্যবহারকে হ্রাস করার জন্য কোন প্যাকেজগুলি ডাউনলোড করা উচিত বা আরও ভাল তালিকাভুক্ত গ্রন্থাগারগুলি এবং তাদের নির্ভরতাগুলি উত্তোলন করা উচিত তা নির্বাচন করতে কোনও সরঞ্জাম কি এই তথ্য ব্যবহার করতে পারে? সিস্টেমটি একটি মাথা বিহীন ভিএম-তে চলছে এবং প্রোগ্রামটি ভিএনসির মাধ্যমে প্রদর্শিত হবে।

যদিও আমি সন্দেহ করি যে একটি সম্পূর্ণ বিকশিত গ্রাফিক্স ডেস্কটপ প্রয়োজনীয় লাইব্রেরিগুলির বেশিরভাগ সরবরাহ করবে আমি কেবল এটি প্রয়োজনীয় লাইব্রেরি, তাদের নির্ভরতা এবং এটি সমর্থন করার জন্য যথেষ্ট পরিমাণে এক্স উইন্ডোজ প্যাকেজ ডাউনলোড করতে চাই।


1
কি ওএস? প্যাকেজগুলি এবং তাদের নাম পাশাপাশি প্যাকেজ ম্যানেজার বিতরণগুলির মধ্যে পরিবর্তন হয় (এবং এটি ধরে নিচ্ছে যে আপনি কোনও ধরণের লিনাক্স চালাচ্ছেন)।
টেরডন


সেক্ষেত্রে আমার উত্তরটি আপনার পক্ষে কাজ করা উচিত।
টেরডন

আসলে আমি এটি পরীক্ষা করতে চলেছি, বিচ্ছিন্নভাবে। আমি স্পষ্টভাবে এটি সম্পর্কে ভুলে গিয়েছিলাম এবং কেবল একটি অনুরূপ প্রশ্ন জিজ্ঞাসা করেছি যার কারণে এটি একটি শীর্ষ সম্পর্কিত প্রশ্ন হিসাবে দেখাবে,
এলএল

উত্তর:


14

আপনি কোন ওএস ব্যবহার করছেন তা আপনি বলেননি তাই আমি লিনাক্স ধরে নিচ্ছি এবং উদাহরণস্বরূপ দেবিয়ান ব্যবহার করব। আপনার প্রশ্নের দ্রুত উত্তর যতদূর আমি জানি না। যদিও এটি কার্যকরভাবে কার্যকর হতে পারে:

ldd your_prog | awk '{print $1}' | sed 's/\..*//' | 
  while read n; do echo "----- $n ----"; apt-cache search ^$n; done

এটি lddআউটপুটকে বিশ্লেষণ করবে এবং তারপরে apt-cacheপাঠানো লাইব্রেরির নামের প্রথম অংশে থাকা প্যাকেজগুলির জন্য সংগ্রহস্থলগুলি অনুসন্ধান করতে চালাবে (আপনার ওএসের সমতুল্য সাথে এটি প্রতিস্থাপন করুন) ldd

এটি তাদের সকলকেই খুঁজে পাবে না এবং কারও জন্য (যেমন libc) খুব বেশি ফলাফল দেবে তবে এটি সহায়ক হতে পারে।


@ ফাহিমমিতা উল্লেখ করেছেন যে apt-fileএটি আরও ভাল উপায় হতে পারে। উদাহরণ স্বরূপ:

ldd /bin/bash | awk '/=>/{print $(NF-1)}'  | 
 while read n; do apt-file search $n; done |
  awk '{print $1}' | sed 's/://' | sort | uniq

এটি লিঙ্কযুক্ত লাইব্রেরি সরবরাহ করে এমন প্যাকেজ নামের একটি তালিকা ফিরিয়ে দেবে।


1
apt-file searchতীরটির ডানদিকে প্রকৃত ফাইলটি আরও কার্যকর হতে পারে।
ফাহিম মিঠা

@ ফাহিমমিথা খুব ভাল পয়েন্ট, ধন্যবাদ। উত্তর সম্পাদিত।
টেরডন

ডাউনলোড করার দরকার আছে এমন সন্ধানের জন্য সিস্টেমে পাঠাগারটির অস্তিত্বের জন্য পরীক্ষা করার জন্য কমান্ডটি কীভাবে সামঞ্জস্য করা যায়? আমি মনে করি যে প্রশ্নটি আমি সম্প্রতি জিজ্ঞাসা করেছি সেই লাইনের সাথে বেশি। আমি এটি আবার চালু করার জন্য বলছি।
vfclists

@ ভিএফক্লিস্টরা সত্যিকার অর্থে মূল্যবান নয়, কেবল apt-get installতাদের সমস্ত এবং ইতোমধ্যে ইনস্টল থাকা যে কোনও একটি উপেক্ষা করা হবে।
টেরডন

কারণটি হ'ল দ্রুত ডাউনলোডের জন্য কোনও অতিরিক্ত অতিরিক্ত লাইব্রেরি সহ একটি ভিএম তৈরি করা উচিত। প্যাকেজ ইনস্টলগুলিতে প্রচুর অপ্রয়োজনীয় আইটেম রয়েছে এবং আমার কেবল এক্সিকিউটেবলের দ্বারা প্রয়োজনীয় লাইব্রেরি ফাইল এবং তাদের নির্ভরতা প্রয়োজন t এটি আমার বাশ এবং লিনাক্স দক্ষতা অর্জনের সুযোগ দেয়। অজগর নেই।
vfclists 15

3

@ টেরডনের উত্তর দুর্দান্ত তবে এটি ব্যবহার করা আরও সহজ dpkg-queryযা apt-fileডিবিয়ান সিস্টেমে ডিফল্টরূপে ইনস্টল করা নেই using

ldd /bin/bash | awk '/=>/{print $(NF-1)}' | while read n; do dpkg-query -S $n; done | sed 's/^\([^:]\+\):.*$/\1/' | uniq

এটি প্যাকেজগুলির একটি তালিকা তৈরি করে।


1

আপনার সেরা বাজি হ'ল এমন প্যাকেজ সন্ধান করা যা আসলে আপনার বিতরণকে সমর্থন করে। তবে যদি এটি আপনার পক্ষে কাজ করে না যায় তবে আমি কেবল একটি অন্য উপায় জানি।

আপনার মতো এলডিডি চালান, তারপরে সেই নির্ভরতাগুলি ম্যানুয়ালি ইনস্টল করুন।

উদাহরণ স্বরূপ libpango-1.0.so.0 => /usr/lib/i386-linux-gnu/libpango-1.0.so.0 (0xb702f000)

আমার জন্য ইনস্টল করা apt-get install libpango:i386এবং প্রার্থনা করার অর্থ হ'ল দেবিয়ান অস্থির সংস্করণটি যথেষ্ট ভাল।

আপনাকে ldd, গুগলের প্রতিটি লাইনে যেতে হবে, আপনার উপলভ্য সংগ্রহস্থলগুলি সন্ধান করতে হবে এবং মূলত ভাগ্যবান হওয়া দরকার। তারপরে একে একে ইনস্টল করুন। যতক্ষণ না প্রোগ্রামটি চালিত হয়। ldd কেবল "সাধারণ" প্রোগ্রামগুলির জন্য কাজ করবে যদিও। যে প্রোগ্রামগুলিতে প্লাগইনগুলি কল হয় বা যেগুলি স্বেচ্ছাচারিত কোড চালায় সেগুলি সমস্ত এক সাথে আলাদা different তাদের জন্য আপনার কনসোল থেকে চালানো দরকার, এবং ক্র্যাশগুলি / ত্রুটিগুলি হওয়ার সাথে সাথে তাদের ঠিক করতে হবে।

এটি বলেছিল যে, বাইনারি কেবল কার্যকর কার্যকর বজায় রাখা খুব ভয়ঙ্কর is আপনি অন্য কিছু ব্যবহার বিবেচনা করতে পারেন। আপনার ডিসট্রো যদি সামান্য এগিয়ে থাকে বা সিস্টেমটি যে কার্যকর করে তোলে behind

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.