কিছু নির্ভরতা উপেক্ষা করার জন্য আমি কীভাবে প্রস্তুত থাকতে পারি?


86

আমি কীভাবে কিছু নির্ভরতা উপেক্ষা করে উপযুক্তভাবে তৈরি করব? উদাহরণস্বরূপ, আমি মেলএক্স ইনস্টল করতে চেয়েছিলাম যাতে ক্রোন স্ক্রিপ্টগুলি / প্রতিবেদন তৈরির সরঞ্জামগুলি থেকে ইমেল প্রেরণের জন্য আমি এটি ব্যবহার করতে পারি। যাইহোক, মেলেক্স ইনস্টল করা এক্সিম 4 এবং সম্পূর্ণ নির্ভরতা ইনস্টল করে (আমার কাছে ইতিমধ্যে পোস্টফিক্স ইনস্টল করা আছে) আমার আসলে প্রয়োজন নেই এবং যা আমার ধারণা মেলেক্স ছাড়াও বাঁচতে পারে।

আমি কীভাবে কিছু নির্ভরশীলতা উপেক্ষা করতে পারি তবে এখনও এটি একটি দুর্দান্ত সরঞ্জাম হওয়ায় এপ-গেট ব্যবহার করব?


পোস্টফিক্স কিভাবে ইনস্টল করা হয়? ডিবিয়ান প্যাকেজের মাধ্যমে? অথবা আপনি উত্স থেকে পোস্টফিক্স ইনস্টল করেছেন?
স্টিউ

হ্যাঁ, পোস্টফিক্স উত্স থেকে ইনস্টল করা হয়েছিল
ফ্রান্সিসভি

3
ডিবানের মেইলেক্স প্যাকেজটি কেবল এক্সিম 4 'সুপারিশ' করে, এটির প্রয়োজন হয় না। আপনি যদি প্রস্তাবিত প্যাকেজগুলি ইনস্টল করতে না চান তবে APT::Install-Recommends "false";আপনার এটিকে যুক্ত করুন apt.conf
রুফ

আমি এটির একটি সন্তোষজনক উত্তর পেয়েছি unix.stackexchange.com এ; unix.stackexchange.com/a/404449/23542
artfulrobot

উত্তর:


45

সহজ এবং সহজ সমাধান: অযাচিত প্যাকেজগুলির -প্রত্যেকের পরে একটি অতিরিক্ত যুক্ত করুন।

-সুইচ ছাড়াই উদাহরণ :

root@debian:~# apt-get install bsd-mailx 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  exim4-base exim4-config exim4-daemon-light liblockfile-bin liblockfile1
[...]

ইনস্টল এড়াতে স্যুইচ ব্যবহার করে উদাহরণ exim4-base-শেষে লক্ষ্য করুন :

root@debian:~# apt-get install bsd-mailx exim4-base-
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'exim4-base' is not installed, so not removed
The following extra packages will be installed:
  liblockfile-bin liblockfile1 ssmtp
[...]

যেমন আপনি দেখতে পাচ্ছেন, প্যাকেজটি apt-getইনস্টল করার জন্য আর চেষ্টা করবেন না exim4-baseএবং এটি এর বিভিন্ন নির্ভরতা ( exim4-configইত্যাদি) ইনস্টল করার চেষ্টা করে না ।

এবং যদি আপনি ভুল হয়ে থাকেন এবং exim4-baseসর্বোপরি সেই নির্ভরতা প্রয়োজন হয় তবে আপনি apt-get installএটি পরে তা করতে পারেন !


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

1
এটি আমার প্রয়োজন ঠিক ছিল! ( এক্স gnupg2pinentry-gtk2
ডিপো

এটি সত্যিই দুর্দান্ত, তবে আমার ক্ষেত্রে apt-get "আনমেট নির্ভরতা" (যা আমি এই পদ্ধতিটি ব্যবহার করে নির্দিষ্ট করেছি) দিয়ে প্যাকেজটি ইনস্টল করতে অস্বীকার করেছি। বিশেষত একটি 100 মেগাবাইট ডকুমেন্টেশন প্যাকেজ যা আমি যত্ন করি না।
রোল্ফ

3
শুধুমাত্র প্রয়োজনীয় withচ্ছিক নির্ভরতা নিয়ে কাজ করে, প্রয়োজনীয়গুলির সাথে নয়। ত্রুটি rmessage: Depends: xxx but it is not going to be installed। আপনি apt-get install --no-install-recommends PACKAGE
optionচ্ছিক

ভার্চুয়াল প্যাকেজগুলির সাথেও কাজ করে না। তবে unix.stackexchange.com/a/404449/23542 দেখুন
artfulrobot

55

আপনি এই জাতীয় একটি প্যাকেজ এর নির্ভরতা পরিবর্তন করতে পারেন:

  1. আনপ্যাক দেব: ar x golden-linux.deb(তিনটি ফাইল তৈরি করবে: ডিবিয়ান-বাইনারি কন্ট্রোল.আরটি.জেড ডেটা.আরটিজেড)
  2. আনপ্যাক নিয়ন্ত্রণ সংরক্ষণাগার: tar xzf control.tar.gz(তৈরি করবে: পোস্টমিন্ট পোস্টর্ম প্রিন্ট প্রিন্ট এমডি 5সামস নিয়ন্ত্রণ)
  3. এর মধ্যে নির্ভরতা ঠিক করুন control(একটি পাঠ্য সম্পাদক ব্যবহার করুন)
  4. পুনরায় নিয়ন্ত্রণ করুন। tar --ignore-failed-read -cvzf control.tar.gz {post,pre}{inst,rm} md5sums control
  5. ফেরত দেবে: ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz(গুরুত্বপূর্ণ অর্ডার! দেখুন [দ্রষ্টব্য])

[দ্রষ্টব্য]: ডিপি কেজি কোনও প্যাকেজের মেটাডেটা দ্রুত পড়তে সক্ষম হয় না যদি ডেটা বিভাগটি কোথায় শেষ হয়েছিল তা অনুসন্ধান করতে হয়!


2
ভাল লাগল, এটি "রেরিং 8" থেকে "রেরিং 6" এর জন্য নির্ভরতার একটি বিশেষ ক্ষেত্রে সমাধান করে তবে একই সংস্করণ = (, খুব ধন্যবাদ
ফিলিপ আলকাসিবার

1
আমার কাছ থেকেও ধন্যবাদ; আমাকে এটি ব্যবহার করতে হয়েছিল কারণ একটি অ্যাপ্লিকেশন প্রয়োজন libmng1.so.1যদিও এটি একটি সিমলিংক সেট করে নিখুঁতভাবে কাজ করেছিল libmng1.so.2apt-getশুধু বিভ্রান্ত হতে পারে না এবং আনমেট নির্ভরতা সম্পর্কে আমাকে বিরক্ত করেই রাখা যায় (এমন কি পুরোপুরি সম্পর্কযুক্ত কিছু ইনস্টল করার সময়ও!)। কি আবর্জনা ধারণা একটি বোঝা।
সিনট্যাক্সেরর

+1 এটি আমার জন্যও নিখুঁত কাজ করেছে। প্যাকেজটি gnome-settings-daemonচেয়েছিল gnome-settings-daemon-schemas=3.8.6.1-0ubuntu11তবে আমি ইতিমধ্যে gnome-settings-daemon-schemas=3.8.6.1-0ubuntu11.2(<- শেষে ".2" লক্ষ্য করুন)। এই পদ্ধতিটি আমাকে প্যাকেজ সম্পাদনা করতে এবং এটিকে নতুন 11.2 সংস্করণটি ব্যবহার করতে বাধ্য করেছে। ধন্যবাদ!
এরিক ডানকান

1
দুর্দান্ত সমাধান, ধন্যবাদ। FILES=$(tar zxvf control.tar.gz)ভেরিয়েবলের মধ্যে ফাইলের তালিকাটি সঞ্চয় করতে আমি পদক্ষেপ 2 এবং 4 কে কিছুটা সংশোধন করেছি । ৪ tar zcf control.tar.gz $FILES- মূল ফাইল তালিকা (পরিবর্তনের পরে) ব্যবহার করে পাইপ বা পুনর্নির্দেশ ছাড়াই একক ধাপে সংরক্ষণাগার তৈরি করুন।
ব্রেট

2
আরেক দম্পতি পরামর্শ দিলেন। # 4 এর জন্য: যুক্ত করুন --ignore-failed-readযাতে tarবাকী কমান্ড লাইন থেকে অনুপস্থিত ফাইলগুলি উপেক্ষা করা যায়। (উদাহরণস্বরূপ, prerm, postrmঅনেক প্যাকেজ থেকে অনুপস্থিত হয়।) এছাড়াও, tarballs হতে পারে .xzবদলে .gzডেবিয়ান সংরক্ষণের ফর্ম্যাট (যেমন এর নতুন সংস্করণে data.tar.xz)।
ড্যান লেন্সকি

33

--ignore-depends বিকল্পটি দিয়ে প্যাকেজটি ইনস্টল করার পরে , /var/lib/dpkg/statusফাইলটি সম্পাদনা করুন এবং আপনার যে নির্ভরতা মনে হয় না তা মুছে ফেলুন। শুধু খুব সাবধান। অর্ডার একটি ডিপ। প্রয়োজন হতে, এটা সম্ভবত বেশী হতে প্রয়োজনীয়


3
আপডেট করার পরে /var/lib/dpkg/statusইনস্টলেশনটি শেষ করার প্রয়োজন হতে পারে sudo apt-get -f install(প্যাকেজ নির্দিষ্ট করার প্রয়োজন নেই)।
জিমিয়ারিয়ার জালেজনিকেনকা

এছাড়াও এখানে পাওয়া গেছে: superuser.com/a/815371/127024
জোহান

এটি আমাকে লতা দেয়, তবে এটি নির্দোষভাবে কাজ করে!
ডেভিড স্মিট

25

আপনি --nodepsপতাকাটি চেষ্টা করে দেখতে পারেন apt-get
অথবা প্যাকেজটি ডাউনলোড করুন এবং dpkgবিকল্পটি ব্যবহার করে এটি ইনস্টল করুন --ignore-depends

উদাহরণস্বরূপ, যদি আপনি fooনির্ভরতা ছাড়াই প্যাকেজ ইনস্টল করতে চান bar:

dpkg --ignore-depends=bar -i foo_1.2.3_amd64.deb

52
আপনার কোন এপিটি সংস্করণ আছে? খনি ( 0.8.10 ) এর মতো বিকল্প নেই।
tthepang

8
ডিপিকেজি অবধি অবহেলা করতে বলা তাঁর পক্ষে বিকল্প নয়। এটি এই লেনদেনের জন্য নির্ভরতা উপেক্ষা করার জন্য শুধুমাত্র dpkg কে বলে, এটি পরবর্তীতে যখন কোনও কাজ করবে তখন নির্ভরতাগুলি সন্তুষ্ট করার বা প্যাকাকেজ সরিয়ে দেওয়ার চেষ্টা করবে।
স্টিউ

2
এখনও এপিটি 0.8.16 বিটিডব্লিউয়ের সাথে ভাগ্য নেই। খুব খারাপ যেহেতু কোনও যুক্তিসঙ্গত বিকল্প বলে মনে হচ্ছে না। এটিকে কাজ করতে আপনি 2011 সালে কোন সংস্করণ ব্যবহার করেছেন?
খ্রিস্টান

2
আপনি অ্যাপটি-গেট ডাউনলোড এবং তারপরে dpkg ব্যবহার করতে পারেন
ফ্রেডরিক রথ

7
--no-install-recommendsআমার জন্য কাজ।
ওলে হার্স্টেট

14

যেহেতু আপনি উত্স থেকে পোস্টফিক্স ইনস্টল করেছেন, আপনার একটি "ডামি" প্যাকেজ ইনস্টল করতে হবে যা মেল-ট্রান্সপোর্ট-এজেন্ট নির্ভরতা মেইলএক্সের (বা বিএসডি-মেলেক্স) পূরণ করবে। ডেবিয়ানের "সমতুল্য" প্যাকেজটি এমন একটি ডামি প্যাকেজ তৈরি করতে উপস্থিত রয়েছে যা আপনি dpkg কে বলতে ইনস্টল করতে পারেন "এই নির্ভরতাটি সন্তুষ্ট"

কেবল নির্ভরশীলতা উপেক্ষা করার জন্য dpkg বলা ভাল সমাধান নয় কারণ, আপনি কেবলমাত্র একক লেনদেনের জন্য এটিকে উপেক্ষা করার জন্য ডিপি কেজি / অ্যাপটিকে বলছেন, আপনি চিরকাল নির্ভরতা অবহেলা করতে বলতে পারবেন না। আপনি যখনই ব্যবহার করেন এটি সমস্ত প্যাকেজের উপর নির্ভরতা পরীক্ষা করে


2
এই উত্তরটিও দেখুন যা একটি টিউটোরিয়ালটিতে লিঙ্ক করে (যদিও এটি অত্যধিক জটিল) সুপারইউসার . com/ a/ 416560/128960 । সংক্ষিপ্ত সংস্করণটি হ'ল: চালান equivs-control <name>, সঠিক নির্ভরতা প্রদান করতে উত্পন্ন ফাইলটি সম্পাদনা করুন এবং একটি সুন্দর নাম রাখুন, তারপরে চালান equivs-build <name>এবং শেষ dpkg -iপর্যন্ত ফলাফল .deb ফাইল file
খ্রিস্টান

1
আইএমএইচও এটি সত্যিই সর্বোত্তম সমাধান। এখানে অনুরোধ করা সমস্ত অন্যান্য সমাধানগুলি কিছুটা হ্যাকিশ। এটি কেবল একবারে করতে হবে এবং আপনি পরে স্বয়ং-সংকলিত সফ্টওয়্যারটির উপর নির্ভর করে যে কোনও সফ্টওয়্যার ইনস্টল করতে পারেন ... সুতরাং আসুন এই উত্তরটিকে উঁচু করে তোলা!
রাগ্ক

7

আমি এই বিকল্পটি একটি উবুন্টু 12.04 সার্ভারে চলছে জেনের জন্য অনুসন্ধান করছি। আমার ডোমেনগুলিতে আমি ভার্চুয়াল কার্নেল ব্যবহার করি এবং প্রতিটি কার্নেল প্যাকেজ আপগ্রেড সহ গ্রাব ইনস্টল করার জন্য দৃ a়ভাবে চেষ্টা করেছি। পি [ইউভি] গ্রুব ব্যবহার করার সময় ডোমুতে গ্রাবের প্রয়োজন হয় না।

আমি অ্যাপট-গেটের পাশাপাশি-নোডেপস বিকল্পটিও খুঁজছি, তবে এটি কার্যকর হয়নি, সুতরাং প্রতিটি কার্নেল আপগ্রেড করার পরে আনইনস্টল / পিউরিং গ্রাব * শেষ হয়ে গেল।

সর্বোপরি, সত্যিই কোনও ম্যান পৃষ্ঠা পড়তে কখনও কখনও সহায়তা করে - এটি 12.04-তে একটি অনুরূপ অ্যাপ-গেট বিকল্প হিসাবে দেখা যায় --no-ইনস্টল-প্রস্তাবিত, যা প্রকৃতপক্ষে এই ক্ষেত্রে কাজ করে, যেহেতু গ্রাবটি 'প্রস্তাবিত' হিসাবে তালিকাভুক্ত রয়েছে প্যাকেজ তথ্য (আমার ধারণা তাই এটি "বাস্তব" নির্ভরতা নয়?))

আমি এখানে এটি যুক্ত করছি কারণ আমার ক্ষেত্রে এটি একই ধরণের সমস্যার সমাধান করেছে এবং '--no-ইনস্টল-সুপারিশ' এর ইঙ্গিতটি এখনও উল্লেখ করা হয়নি।


6

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

উদাহরণস্বরূপ, যদি আমি মাইপ্যাকেজটি ডাউনলোড করতে চাই তবে এটি libperl5.14 এর উপর নির্ভর করে এবং আমি libperl5.14 ইনস্টল করতে চাই না কারণ আমার আলাদা সংস্করণ রয়েছে আমি এই নির্ভরতাটিকে অনুসরণ করে উপেক্ষা করতে পারি:

apt-get download mypackage
dpkg -i --ignore-depends=libperl5.14 mypackage.deb

কেবলমাত্র এটি উল্লেখ করার জন্য এটি আপনাকে "ভাঙ্গা" পছন্দ করবে। এটি অনুপস্থিত নির্ভরতা স্থির না করা পর্যন্ত আপনাকে অন্যান্য প্যাকেজগুলি ইনস্টল করতে দিবে না।
drpexe

6

নির্ভরতাগুলি ম্যানুয়ালি মুছে ফেলার একটি বিকল্প উপায় হ'ল:

apt-get download yourpackage
dpkg-deb -x yourpackage.deb PackageFolder
dpkg-deb --control yourpackage.deb PackageFolder/DEBIAN
vim PackageFolder/DEBIAN/control
dpkg -b PackageFolder yourpackage2.deb
apt-get install ./yourpackage2.deb

2

আমার ডিবিয়ান সিস্টেমে, বিএসডি-মেলেক্স আসলে নির্ভর করে default-mta | mail-transport-agent( apt-cache show <pkg>সংরক্ষণাগারের কোনও কিছুর dpkg -s <pkg>জন্য বা ইনস্টল করা প্যাকেজগুলির জন্য কোনও প্যাকেজ কী নির্ভর করে তা আপনি পরীক্ষা করতে পারেন) ।

এটি হতে পারে যে আপনার পোস্টফিক্স প্যাকেজটিতে Provides: mail-transport-agentএমনটি নেই যাতে অ্যাপটি বুঝতে পারে না আপনি এমটিএ ইনস্টল করেছেন। এটি কোনও অফিসিয়াল প্যাকেজ হলে এটির জন্য একটি বাগ ফাইল করা উপযুক্ত।


1

এর উদ্দেশ্যগুলির জন্য, আপনি কেবল পেরেক ইনস্টল করতে পারেন যা আমি মনে করি না এই নির্ভরতাগুলি আছে?

apt-get install nail

-5

ভাল - না।

যে কোনও সাফল্যের পথে অন্য মানুষের কাজ ব্যবহার করা খুব গুরুত্বপূর্ণ। আপনি উত্স থেকে কিছু সফ্টওয়্যার তৈরি করার সময় (টারবাল), আপনি ডিস্ট্রোর প্যাকেজ ম্যানেজারের কাজটি ব্যবহার করার সুযোগটি হারাবেন।

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

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

কিছু কারণে সার্ভার রক্ষণাবেক্ষণের কিছু অন্যান্য ব্যক্তি হাতে থাকে তাহলে (যেমন আপনার প্রকল্পের খুব সফল হয় এবং আপনি ম্যানেজারের সাথে অন্য লোক সার্ভার ভাড়া করতে যখন আপনি অন্যান্য উপাদান নিয়ে ব্যস্ত সিদ্ধান্ত নেন) তিনি স্বাভাবিকভাবেই চালানোর আশা করবে dpkg --get-selectionsসব পেতে ইনস্টল প্যাকেজ।

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

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