অ্যাপটি-গেটের সাহায্যে নির্দিষ্ট প্যাকেজের জন্য সমস্ত নির্ভরতা উপেক্ষা করুন


16

এটি একটি খুব নির্দিষ্ট প্রশ্ন যা গুগল উত্তর দেওয়াতে সহায়তা করে নি।

আমি উবুন্টু 13.04 দিয়ে চালাচ্ছি apt 0.9.7.7ubuntu4 for amd64 compiled on Oct 3 2013 15:25:56

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

আমি এর মতো এটি ইনস্টল করতে পারি

sudo dpkg -i --force-depends erlang.deb

যাইহোক, apt-getআনম্যাট নির্ভরতার কারণে পরে আর কোনও কিছু ইনস্টল করা ব্যর্থ হয়। সুতরাং আমি যদি এরলংয়ের পরে গিট ইনস্টল করতে চাই তবে আমি নিম্নলিখিতটি পাই

$ sudo apt-get install -y git
Reading package lists...
Building dependency tree...
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 esl-erlang : Depends: default-jre-headless but it is not going to be installed or
                       java2-runtime-headless or
                       java1-runtime-headless or
                       java2-runtime or
                       java1-runtime
              Depends: libwxbase2.8-0 but it is not going to be installed
              Depends: libwxgtk2.8-0 but it is not going to be installed
              Recommends: erlang-mode but it is not going to be installed
 git : Depends: libcurl3-gnutls (>= 7.16.2-1) but it is not going to be installed
       Depends: perl-modules but it is not going to be installed
       Depends: liberror-perl but it is not going to be installed
       Depends: git-man (> 1:1.7.9.5) but it is not going to be installed
       Depends: git-man (< 1:1.7.9.5-.) but it is not going to be installed
       Recommends: patch
       Recommends: rsync
       Recommends: ssh-client
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

esl-erlangরান না করে প্যাকেজ বন্ধ রাখার কোনও উপায় আছে কি apt-get install -f?

আমি এরকম কিছু চাই:

sudo apt-get install --ignore-deps-for-package=esl-erlang git

বা এই মত:

sudo apt-cache shut-package-up esl-erlang

অথবা এটা:

sudo apt-get download git
sudo dpkg -i --with-deps git.deb

আমি একটি অনুরূপ প্রশ্ন পেয়েছি: /server/250224/how-do-i-get-apt-get-to-ignore-some-d dependency । কয়েকটি উত্তর উত্তর প্যাকেজগুলির নির্ভরতা সংশোধন করার জন্য কার্যকর ম্যানুয়াল পদক্ষেপ সরবরাহ করে।

আমি এখনও একটি শক্তিশালী স্বয়ংক্রিয় পদ্ধতি খুঁজছি।


আপনি চেষ্টা করেছেন --nodeps( apt-get) বা --ignore-dependsসাথে dpkg?
মাইক কোচ

উত্তর:


27

আমি বজানসেনের বক্তব্যটি বুঝতে পারি, তবে প্যাকেজ পরিচালকের পক্ষে --force-dependsএকক প্যাকেজ ইনস্টল করার অনুমতি দেওয়াটা হাস্যকর বলে মনে হয় , তবে চিরকাল-নির্ভর-চিরকালের জন্য এবং স্টপ-সতর্কতা-আমাকে-সম্পর্কে-নির্ভরতার অনুমতি দেয় না।

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

সমাধান আমি খুঁজে পেয়েছি:

  • সম্পাদনা /var/lib/dpkg/status,
  • ভাঙ্গা নির্ভরতা সহ প্যাকেজটি সন্ধান করুন
  • Depends:অভিযোগ প্যাকেজ বন্ধ করতে লাইন সম্পাদনা করুন ।

আমি ধরে নিয়েছি যে পরবর্তী সময় প্যাকেজ আপডেট হওয়ার পরে ওভাররাইট করা হবে তবে আমি যা চাই তা ঠিক তাই।


2
এটি নিখুঁত, আমি কেবলমাত্র একটি ভুল পিপিএ নির্ভরতার জন্য সাময়িকভাবে প্রয়োজন ছিল!
ক্যাস

2

আপনি যা করার চেষ্টা করছেন তা প্যাকেজ ম্যানেজারের উদ্দেশ্যবিরোধী, যা বুদ্ধিমান পরিবেশ বজায় রাখার চেষ্টা করে, iow আপনি কাজের জন্য ভুল সরঞ্জামটি ব্যবহার করছেন। অ্যাপ-গেট ভাঙার চেষ্টা করবেন না।

আপনার সমস্যা সমাধানের সঠিক উপায় হ'ল নির্ভরতাগুলির সাথে আপনার নিজস্ব প্যাকেজ তৈরি করা যা আপনার পক্ষে উপযুক্ত। অফিসিয়াল উপায় রয়েছে (বেশ জড়িত: http://www.debian.org/doc/manouts/maint-guide/index.en.html ) এবং ব্যবহার করার দ্রুত এবং নোংরা উপায় apt-build, বা বিতরণ উত্সে নেই এমন প্যাকেজগুলির জন্য, checkinstall। সমস্ত উত্পাদন প্যাকেজ অ্যাপ্লিকেশন- আনন্দের সাথে ইনস্টল করা হবে।

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


আপনি "প্যাকেজ ম্যানেজারের উদ্দেশ্য" সম্পর্কে যা বলেছেন তা মূলত সত্য তবে আপনার কোনওটিই সাধারণীকরণ করা উচিত নয়। আমি একটি উদাহরণ দিতে চাই: একটি অ্যাপ্লিকেশন প্রয়োজন libmng1। তবে আমি libmng2ইনস্টল করেছিলাম এবং এতে একটি সিমিলিংক সেট করেছিলাম libmng1.so। হুমকি কাজ করেছে, কখনও কোনও সমস্যা হয়নি। তবে apt-getসর্বদা "আনমেট নির্ভরতা" সম্পর্কে অভিযোগ করেছিলেন। সুতরাং অবশ্যই এই ক্ষেত্রে যথাযোগ্যতা নিরব করার উপায় অনুসন্ধান করার একটি ভাল কারণ রয়েছে। যেহেতু কিছু না কাজ, এটা ঠিক যে কেবল অভিযোগ রাখে হয় কোন সমস্যা নেই। এটি কেবল সমস্যাগুলি দেখায় যেখানে তারা কোনও নয়। এবং এটি বিরক্তিকর।
সিনট্যাক্সেরর

এটি একটি কৌতূহলী পরিস্থিতি। আমার ধারণা আপনি কোনও বিতরণ-সংগ্রহস্থল থেকে কোনও প্যাকেজ ইনস্টল করেছেন? এ জাতীয় ক্ষেত্রে equivs"নীরবতা" এ্যাপ-গেটটি ভঙ্গ না করে দেখে নিন।
bjanssen

ঠিক আছে, এটা এমন হতে পারে। তবে বাস্তবে এটি ছিল না ... আমি খুব একই ডিস্ট্রো থেকে কেবল পুরানো প্যাকেজটি ইনস্টল করেছি , সুতরাং উবুন্টু শর্তে আমি 15.x এ ছিলাম, তবে আমি 12.04 এলটিএস থেকে লিবিএমএনজি 1 ইনস্টল করেছি।
সিনট্যাক্সারোর

0

যদি "ব্যবহৃত প্রক্সিটি" apt.confসঠিক কিনা (যেমন আপনার নেটওয়ার্ক অনুসারে) পরীক্ষা করে দেখুন। এটির ফলেও এই জাতীয় সমস্যাগুলির কারণ হ'ল ইউআরএলগুলি অ্যাক্সেসযোগ্য।

সাধারণত, আপনি যদি প্রক্সি ব্যবহার করে থাকেন তবে আপনার /etc/apt/apt.confচেহারাটি এমন দেখাবে:

Acquire::ftp::proxy "ftp://<user>:<password>@<ip>:<port>/";
Acquire::http::proxy "http://<user>:<password>@<ip>:<port>/";
Acquire::https::proxy "https://<user>:<password>@<ip>:<port>/";
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.