কীভাবে কেবল প্যাকেজের নির্ভরতা ইনস্টল করবেন?


45

চলমান sudo apt-get install <PACKAGE>প্যাকেজ, তার নির্ভরতা এবং অন্য কোনও প্রস্তাবিত প্যাকেজ ইনস্টল করবে।

তবে, কেবলমাত্র প্যাকেজের নির্ভরতা ইনস্টল করার এবং প্যাকেজটি নিজেই বাদ দেওয়ার কোনও উপায় বলে মনে হয় না ।

কেউ কীভাবে এই কাজটি করবে?


শুধু কৌতুহলী, আপনি এটি করতে চান কেন?
— ক্রিস হার্পার

@ রুট 45: ভাল এটি একটি অনন্য পরিস্থিতি: আমার কাছে রেপোসে পাইথন প্যাকেজের সোর্স কোড রয়েছে। এবং এটি শুরু হচ্ছে না। প্যাকেজটি নিজেই ইনস্টল না করে প্যাকেজের জন্য নির্ভরতা ইনস্টল করতে হবে (যেহেতু আমার কাছে ইতিমধ্যে কোড রয়েছে)।
— নাথান ওসমান

1
আপনি কি কেবল অ্যাপটি-গেট ইনস্টলের শুকনো রান করতে পারেন না এবং কী ইনস্টল হতে চলেছে তা দেখতে পারেন না, তবে আপনি যে অ্যাপ্লিকেশনটি সংকলন করছেন তা ছাড়া আর সব কিছু ইনস্টল করতে পারেন?
— ডিউফাইড্যাক

2
অথবা কেবল এটি ইনস্টল করুন এবং তারপরে অ্যাপ্লিকেশনটি সরিয়ে ফেলুন (তবে এর নির্ভরতা নয়)। এবং / অথবা এটি আপডেট করার পরে একটি আপডেট / স্থির প্যাকেজ ইনস্টল করুন।
— জানু

আমার এটি করার দক্ষতা প্রয়োজন যাতে আমি একটি উত্স প্যাকেজটি তৈরি এবং ইনস্টল করতে পারি যা আমার স্থাপত্যের জন্য ইতিমধ্যে নির্মিত হয়নি। apt-get build-depইনস্টলগুলি নির্ভরতা তৈরি করে, তাই apt-get -b sourceকাজ করে, তবে রানটাইম নির্ভরতা ইনস্টল হয় না, তাই dpkg -i *.debব্যর্থ হয়।
— ট্রেভর রবিনসন

উত্তর:


24

এটি প্যাকেজের নির্ভর ও পূর্বনির্ভর ক্ষেত্রের সমস্ত প্যাকেজ ইনস্টল করবে :

sudo apt-get install $(apt-cache depends <PACKAGE> | grep Depends | sed "s/.*ends:\ //" | tr '\n' ' ')

মূলত আপনি সমস্ত নির্ভরতার জন্য জিজ্ঞাসা করেন, (প্রাক) নির্ভর করে ফিল্টার করুন এবং অ্যাপ্লিকেশনটির জন্য আউটপুটটি ফর্ম্যাট করুন।

একটি সমস্যা যেমন নির্ভরতা হয়

Depends: pulseaudio
  pulseaudio:i386

বা ভার্চুয়াল প্যাকেজগুলির মতো

Depends: <java6-runtime-headless>
  default-jre-headless
  openjdk-6-jre-headless

সুতরাং: যত্ন সহ ব্যবহার করুন - এটি সব ক্ষেত্রে কার্যকর হয় না!


1
এমন অনেকগুলি কেস রয়েছে যা এটি পরিচালনা করে না, উদাহরণস্বরূপ এটি ভার্চুয়াল প্যাকেজগুলিতে সম্পূর্ণভাবে বিচ্ছিন্ন হয়ে যাবে (যা কোণ বন্ধনীতে মুদ্রিত রয়েছে)। উদাহরণস্বরূপ এখানে দেখুন: জিজ্ঞাসাবাবু
— ট্রেভর রবিনসন

ইঙ্গিতটির জন্য ধন্যবাদ, যদিও আমি সত্যিই নিশ্চিত না যে কীভাবে এই সমস্ত সমস্যাগুলি পরিচালনা করে। :-(
— হাটার্ক

2
যদি আমি করতে পারি তবে আমি sudo apt-get install $(apt-cache depends PACKAGE-NAME-HERE | awk '$1~/Depends/{printf $2" "}')
— এডাব্লুকে-র

1
আপনি উল্লিখিত ভার্চুয়াল প্যাকেজ ইস্যুতে আমি দৌড়েছি; আপডেট sedনিম্নলিখিত পাইপলাইন আমার জন্য কাজ: sed -e "s/.*ends:\ //" -e 's/<[^>]*>//'। আমার ক্ষেত্রে, ভার্চুয়াল প্যাকেজটি < >প্যাকেজটি সন্তুষ্ট করার আগেই হয়েছিল, সুতরাং আইটেমটি কার্যকরভাবে সরিয়ে ফেলুন < >।
— বার্তো

5

apt-get build-dep <package> কৌতুক করবে


13
এটি কাজ করবে না কারণ প্যাকেজে রানটাইম নির্ভরতা রয়েছে যা ইনস্টল করা হবে না apt-get build-dep।
— নাথান ওসমান

5

আপনি অনুলিপি / অতীত কিছু মনে না করেন, ঠিক ভান একটি apt-get দিয়ে ইনস্টল -s। আপনি অন্যান্য প্যাকেজগুলি ইনস্টল হবে এবং / অথবা আপগ্রেড হবে তা আপনি দেখতে পাবেন, তারপরে আপনি কেবল সেই তালিকা এবং ভোইলা থেকে ইনস্টল করতে চান না এমন প্যাকেজটির নাম সরিয়ে ফেলবেন।

sudo apt-get install -s <package>


4

প্রদত্ত প্যাকেজটি ইনস্টল না হওয়া সমস্ত নির্ভরতা তালিকাভুক্ত করতে আপনি ব্যবহার করতে পারেন aptitude

aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")'

নির্ভরতা ইনস্টল করতে

aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")' -F "%p" | xargs sudo apt-get install

উদাহরণ

  • নির্ভরতা তালিকাবদ্ধ করুন

    % aptitude search '!~i?reverse-depends("^mc$")'
    p    mc-data         - Midnight Commander - a powerful file manager -- data files
    
  • কেবল প্যাকেজের নাম দেখান

    % aptitude search '!~i?reverse-depends("^mc$")' -F "%p"
    mc-data                            
    
  • এর জন্য নির্ভরতাগুলি ইনস্টল করুন mc

    % aptitude search '!~i?reverse-depends("^mc$")' -F "%p" | xargs sudo apt-get install     
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following NEW packages will be installed:
      mc-data
    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 1.166 kB of archives.
    After this operation, 5.550 kB of additional disk space will be used.
    Get:1 http://archive.ubuntu.com/ubuntu/ wily/universe mc-data all 3:4.8.13-3 [1.166 kB]
    Fetched 1.166 kB in 0s (1.250 kB/s)
    Selecting previously unselected package mc-data.
    (Reading database ... 606748 files and directories currently installed.)
    Preparing to unpack .../mc-data_3%3a4.8.13-3_all.deb ...
    Unpacking mc-data (3:4.8.13-3) ...
    Processing triggers for doc-base (0.10.6) ...
    Processing 1 added doc-base file...
    Registering documents with scrollkeeper...
    Processing triggers for man-db (2.7.4-1) ...
    Processing triggers for hicolor-icon-theme (0.15-0ubuntu1) ...
    Setting up mc-data (3:4.8.13-3) ...
    

1

এটি করার জন্য আপনি একটি অ্যাপ্লিকেশন ইনস্টল সিমুলেশনের আউটপুটকে বিশ্লেষণ করতে পারেন, এটি করার জন্য এখানে একটি বাশ ফাংশন রয়েছে:

apt-install-depends() {
    local pkg="$1"
    apt-get install -s "$pkg" \
      | sed -n \
        -e "/^Inst $pkg /d" \
        -e 's/^Inst \([^ ]\+\) .*$/\1/p' \
      | xargs apt-get install
}

ব্যবহার:

apt-install-depends mopidy

0

কেবল নির্ভরতা ইনস্টল করতে, আপনি ব্যবহার করতে পারেন apt-cache show package | grep Depends। এটি আপনাকে নির্ভরতার তালিকা দেবে:

apt-cache show apache2 | grep Depends
Depends: apache2-mpm-worker (= 2.2.22-6ubuntu5.1) | apache2-mpm-prefork (= 2.2.22-6ubuntu5.1) | apache2-mpm-event (= 2.2.22-6ubuntu5.1) | apache2-mpm-itk (= 2.2.22-6ubuntu5.1), apache2.2-common (= 2.2.22-6ubuntu5.1)

তাহলে আপনি অ্যাপটি-গেটের মাধ্যমে কোন প্যাকেজ ইনস্টল করবেন তা সিদ্ধান্ত নিতে পারেন। aptitudeইন্টারেক্টিভ মোডে এছাড়াও রয়েছে, আপনি প্যাকেজটি এটি নির্বাচন করে দেখুন এবং তারপরে নির্ভরতা ইনস্টল করুন:

এখানে চিত্র বর্ণনা লিখুন

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