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


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.