কোনও নির্ভরতা অপসারণ না করে কীভাবে কোনও ডেব সরান


43

আমি বোটোর সাম্প্রতিকতম সংস্করণটি ইনস্টল করতে চাই , যা আমি এর মাধ্যমে করিpython setup.py install

তবুও আমি যখন পুরানো সংস্করণটি সরিয়ে দেওয়ার চেষ্টা করি তখন নীচের প্যাকেজগুলিও মুছে ফেলা হয়:

apt-get remove python-boto
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  cloud-init cloud-utils euca2ools python-boto

আমি কীভাবে প্যাকেজ ম্যানেজারকে বোটো সরানোর জন্য বলতে পারি এবং এগুলি এটিকে বাহ্যিকভাবে ইনস্টলড হিসাবে চিহ্নিত করা হয় (বা এর মতো কিছু) যাতে অ্যাপটি অনুপস্থিত নির্ভরতা ঠিক করতে চেষ্টা না করে?

ধন্যবাদ,
ম্যাক্সিম


আপনি <code> sudo dpkg - অজগর-বোটো কেড়ে ফেলেছেন </ কোড> চেষ্টা করেছেন?
dkuntz2

উত্তর:


16

আপনি equivsইউটিলিটিটি ব্যবহার করে একটি ডামি .দেব প্যাকেজ তৈরি করতে পারেন , এটি কোনও ফাইল ইনস্টল না করে নির্ভরতা সরবরাহ করবে। তারপরে কেবল ডামি সংস্করণ ব্যবহার করে বর্তমানে ইনস্টল করা প্যাকেজটি প্রতিস্থাপন করুন dpkg -i fake.deb


60

সরাসরি dpkg ব্যবহার করুন, অ্যাপট-গেট বা প্রবণতা নয়:

sudo dpkg -r --force-depends "packagename-version"

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

15

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

যদি আপনি যথাযথতার মাধ্যমে কোনও প্যাকেজ ইনস্টল করেন তবে এটি স্বয়ংক্রিয়ভাবে নির্ভরতা (অটো )গুলিতে পতাকা বরাদ্দ করে এবং আপনি যখন আবার আপনার প্যাকেজটি সরিয়ে দেওয়ার চেষ্টা করেন এটি স্বয়ংক্রিয় পতাকা এখনও সেট থাকা সমস্ত নির্ভরতা সরিয়ে দেওয়ার চেষ্টা করে।

আপনি আমার ক্ষেত্রে যেমন দেখতে পাচ্ছেন এটি জাব্বিক্স যা আমি মুছে ফেলতে চাই:

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php
The following packages will be REMOVED:  
  apache2{u} dbconfig-common{u} fping{u} javascript-common{u} libhtml-template-perl{u} libiksemel3{u} libjs-prototype{u} 
  libjs-scriptaculous{u} libopenipmi0{u} libt1-5{u} mysql-server{u} mysql-server-5.1{u} mysql-server-core-5.1{u} php5{u} php5-gd{u} 
  php5-mysql{u} snmpd{u} wwwconfig-common{u} zabbix-frontend-php{p} zabbix-server-mysql{p} 
0 packages upgraded, 0 newly installed, 20 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 44.9 MB will be freed.
Do you want to continue? [Y/n/?]

এবং যদি আমরা অ্যাপাচি প্যাকেজটি দেখি তবে এটি দেখতে এটির মতো দেখাচ্ছে

uman@mango:~$ aptitude search ^apache2
i A apache2        - Apache HTTP Server metapackage
<snip>

প্রথম পতাকা "আমি" আমাদের জানায় যে অ্যাপাচি ইনস্টল করা আছে
পরবর্তী পতাকা "এ" এর অর্থ স্বয়ংক্রিয়ভাবে ইনস্টল

সুতরাং এটিকে সংশোধন করার জন্য এবং অ্যাপাচি, মাইএসকিএল এবং পিএইচপি আনইনস্টল না করার জন্য, আমরা কেবল প্রযোজনীয়তার সাথে অটো পতাকা সরাতে পারি:

uman@mango:~$ sudo aptitude unmarkauto apache2 mysql-server php5
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.

জাব্বিক্স প্যাকেজটি সরানোর সময় এখন এটির মতো দেখাচ্ছে:

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php
The following packages will be REMOVED:  
  dbconfig-common{u} fping{u} javascript-common{u} libiksemel3{u} libjs-prototype{u} libjs-scriptaculous{u} libopenipmi0{u} libt1-5{u} 
  php5-gd{u} wwwconfig-common{u} zabbix-frontend-php{p} zabbix-server-mysql{p} 
0 packages upgraded, 0 newly installed, 12 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 16.6 MB will be freed.
Do you want to continue? [Y/n/?] 

আরও তথ্যের জন্য উপযুক্ততার জন্য ম্যান পৃষ্ঠাটি দেখুন


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

13

ঠিক এটাই apt-mark holdহ'ল

apt-mark hold package_name

ডকুমেন্টেশন থেকে:

প্যাকেজটিকে পিছনে রাখা হিসাবে চিহ্নিত করতে হোল্ড ব্যবহার করা হয়, যা প্যাকেজটি স্বয়ংক্রিয়ভাবে ইনস্টল, আপগ্রেড বা অপসারণ থেকে আটকাবে। কমান্ডটি কেবলমাত্র dpkg --set-সিলেকশনের চারদিকে একটি মোড়ক এবং রাজ্যটি তাই

একটি প্যাকেজ আনহোল্ড করতে:

apt-mark unhold package_name


1
আমার পরিস্থিতির জন্য, এটি প্রস্তাবিত পদ্ধতি।
পাওলো কোঘি

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

এটি করার চেষ্টা করার সময় আমি কেবল একটি ত্রুটি The following packages have unmet dependencies: mysql-server-5.7 : Depends: apparmor (>= 2.10) but it is not going to be installed E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
পেয়েছি

3

এএফআইকে এপটি ব্যবহার করে কোনও প্যাকেজ মুছে ফেলার কোনও উপায় নেই যার উপর নির্ভর করে সেই প্যাকেজগুলি অপসারণ না করে।

তথ্যসূত্র: http://www.debian.org/doc/manouts/apt-howto/ch-apt-get.en.html


না, মেটা-প্যাকেজগুলির জন্য এটি অনেকগুলি উদ্দেশ্যগুলির মধ্যে একটি
রোবটহম্যানস

0

জোও পিন্টোর উত্তরটি সম্পূর্ণ করতে, আপনি আমার ছোট স্ক্রিপ্টটি ভাঙ্গা প্যাকেজটি ঠিক করতে ব্যবহার করতে পারেন, এই স্ক্রিপ্টটি সমতুল্য সাথে ডমি প্যাকেজ তৈরি করবে এবং এটি ইনস্টল করবে। আপনি আমার ব্লগে ফরাসী ভাষায় একটি নিবন্ধ সন্ধান করতে পারেন ।

অথবা সরাসরি গিস্ট কোডে

এটি ব্যবহার করতে:

$ ./gen-dummy-package.sh --install|i [packageName]+
# e.g. :
$ ./gen-dummy-package.sh -i rfkill nome-bluetooth bluez
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.