আমি কীভাবে একটি ডেব প্যাকেজের জন্য নির্ভরতা তালিকাটি পরীক্ষা করতে পারি


93

আমি কীভাবে একটি ডেব প্যাকেজের জন্য নির্ভরতা তালিকাটি পরীক্ষা করতে পারি। আমি উবুন্টু ১১.১০ চালাচ্ছি এবং এখান থেকে সমস্ত ডিবে প্যাকেজ ব্যাক আপ করেছি var/cache/apt/archives। আমি আমার পিসিকে ফর্ম্যাট করতে এবং কেবল নির্বাচিত অ্যাপ্লিকেশনগুলি পুনরায় ইনস্টল করতে চাই। এছাড়াও আমি কীভাবে ইনস্টল হওয়া প্যাকেজগুলি এবং নির্ভরতার তালিকা পেতে পারি।


আপনার দ্বিতীয় প্রশ্ন দেখুন askubuntu.com/questions/17823/...
htorque

ইনস্টল করা প্যাকেজগুলির সম্পূর্ণ তালিকার জন্য ব্যবহার করুনdpkg --get-selections | sed -n 's/[[:space:]]install$//p'
টিনো

উত্তর:


72

dpkgপদ্ধতিটি ছাড়াও , আপনি সংগ্রহস্থলের প্যাকেজগুলির নির্ভরতা পরীক্ষা করতে পারেন:

apt-cache depends package-name

EDIT @ টিনো-এর সুপারিশ সহ আপডেট হয়েছে। @ টিগ্রানের মন্তব্য আর প্রযোজ্য নয়।


3
দ্রষ্টব্য: প্যাকেজটি ইতিমধ্যে ইনস্টল থাকলে এটি কেবলমাত্র কাজ করে।
টিগ্রান সালুয়েভ

@ টিগ্রানসালুয়েভ নোট করুন যে dpkg -I packageকেবল ইনস্টলড প্যাকেজগুলির জন্যই কাজ করে। apt-cacheআপনার কাজ করার পরে জানা সমস্ত প্যাকেজগুলির জন্য কাজ করে apt-get update
টিনো

1
apt-cache depends packageshowpkgসেক্ষেত্রে একটি উত্তম পন্থা, যেমন নির্ভর করে না যে নির্ভরতা কোনও সুপারিশ, দ্বন্দ্ব ইত্যাদি কিনা তাই এটি কিছুটা আশ্চর্যজনক। কোনো স্ক্রিপ্ট কাজের জন্য dependsসঙ্গে মিলিত showpkgদেখুন unix.stackexchange.com/a/362866/23450
টিনো

100

এটি আপনাকে প্যাকেজ সম্পর্কিত সমস্ত তথ্য প্রদর্শন করবে:

dpkg -I package.deb

এটি আর উবুন্টু 14.04 এ কাজ করে না:dpkg -I splunkforwarder-6.3.3-f44afce176d0-linux-2.6-amd64.deb new debian package, version 2.0. size 15881308 bytes: control archive=3104 bytes. 153 bytes, 5 lines control 6058 bytes, 207 lines * postinst #!/bin/bash 2912 bytes, 93 lines * preinst #!/bin/bash Package: splunkforwarder Version: 6.3.3 Maintainer: Splunk Inc. <info@splunk.com> Architecture: amd64 Description: Splunk The platform for machine data.
ক্রেগ এস অ্যান্ডারসন

@ ক্রেগস.এন্ডারসন এখানে 14.04 চলছে এবং এটি আমার ক্ষেত্রে ঠিক নিখুঁত কাজ করে। স্বীকৃত উত্তর আইএমএইচও হওয়া উচিত।
ম্যাজিক_ল

/var/cache/apt/archives/সংস্করণ সহ পুরো প্যাকেজের নাম খুঁজতে প্যাকেজের নাম রাখার আগে ট্যাব সমাপ্তি ব্যবহার করতে ভুলবেন না dpkg -I /var/cache/apt/archives/elasticsearch_2.4.4_all.deb
জেসন আর। কুম্বস

1
আমি কোনও নির্ভরতার তথ্য দেখতে পাচ্ছি না
নিক

আপনি যুক্ত করতে পারেন যে প্যাকেজটি ইনস্টল না করে (পুনরায়) ইনস্টল করা ছাড়া (যা সম্ভবত একটি জনপ্রিয় ব্যবহারের ক্ষেত্রে) পাওয়া যায় sudo apt-get install --reinstall --download-only [package name]
কার্ল রিখটার 2

2

apt-cache depends [Package-Name]পাশাপাশি কাজ করবে। যদিও আপনি যদি .debআপনার উত্স তালিকার বাইরে থেকে প্যাকেজটি উত্স করেন তবে এর মতো জিনিসগুলি apt-cache showpkg [Package-Name] && apt-cache depends [Package-Name]পুরানো তথ্য প্রদর্শন করতে পারে বা প্রকৃত ইনস্টলড প্যাকেজটির সাথে সিঙ্ক নাও করতে পারে তাই dpkg -I [Package-Name]সেই ক্ষেত্রে সবচেয়ে ভাল কাজ করবে।


2

14.04 এবং তার জন্য:

dpkgআর নেই -Iএবং আপনাকে dpkg-debনির্ভরতা সহ প্যাকেজ তথ্য প্রদর্শন করতে ব্যবহার করতে হবে:

dpkg-deb -I package.deb

1
হাই ফ্যাবি, ডিপিকিগির কাছে বর্তমানে কোনও আইআই বিকল্প নেই। উবুন্টু 12.04 এবং 16.04 এ পরীক্ষিত। পরিবর্তে আপনাকে dpkg-deb ব্যবহার করতে হবে।
রূপ নারায়ণ

মন্তব্য প্রত্যাহার; উত্তর স্পষ্ট এবং
upvated

0

এখানে কিছু opালু রয়েছে, এবং সম্ভবত পোস্ট-প্রসেসিং খুব বেশি বিস্তৃত নয় যা আপনি dpkg -Iতালিকা হিসাবে নির্ভরতা আইটেমগুলি পেতে আউটপুট করতে পারেন:

কম্পিউটারের জন্য ঘনীভূত

# dpkg -I package.deb | python -c "import sys, re; t=re.split(r'\n(?= ?[\w]+:)|:', sys.stdin.read()); print '\n'.join([i.strip() for i in {key.strip(): value.strip() for key, value in zip(t[::2], t[1::2])}['Depends'].split(',')])"
#

মানুষের জন্য প্রসারিত:

dpkg -I package.deb | python -c "
    import sys, re;
    # Split keys and values into pairs (zipped together later)
    t=re.split(
        r'\n(?= ?[\w]+:)|:', 
        sys.stdin.read()
    ); 
    # Newline separate each dependency
    print '\n'.join([
        # Trim each dependency value
        i.strip() for i in {
            # Build assoc array from package metadata
            key.strip(): value.strip() 
            for key, value in zip(t[::2], t[1::2])
        }['Depends'].split(',')
    ])
"

এটি প্যাকেজগুলি প্রতিধ্বনিত করবে যা 'foo.deb' এর উপর নির্ভর করে এবং এখনও ইনস্টল করা হয়নি: dpkg -I foo.deb | আমি $ (awk -F ',' '/ নির্ভর করে: / {gsub (/: /, ",") এর জন্য (i = 2; i <= NF; i ++) {gsub (/। * $ /, "", $ (i)); প্রিন্টফ ("% s \ n", $ (i));}} '); do dpkg -s $ i &> / dev / নাল || প্রতিধ্বনি $ i; সম্পন্ন | tr '\ n' ''
গ্রেগরি বার্ড

@ গ্রেগরিবার্ড, আমার উত্তরটি সম্পাদন করতে নির্দ্বিধায় / আপনার পছন্দ মতো সমস্ত কিছু সংগ্রহ করুন, আমি এ কারণে এটি সম্প্রদায়ের উইকি হিসাবে পোস্ট করেছি ^ u ^
থারস্মমনার

আমি যখন এই আদেশটি স্থিতিস্থাপক অনুসন্ধানে চালাচ্ছি, এটি নির্গত হয় libc6\nadduser\n Installed-Size\n। এটি কেবল ডিপেন্ডস লাইনের চেয়ে বেশি মিলছে বলে মনে হচ্ছে।
জেসন আর।

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