কীভাবে প্যাকেজটিকে অপ্ট-গেট অটোরেমোভ থেকে বাদ দেওয়া যায়?


20

আমি এমন পরিস্থিতিতে আছি যেখানে অনাথ প্যাকেজগুলির তালিকা মুছে ফেলা হবে apt-get autoremoveযাতে আমি রাখতে চাই want স্পষ্টতই আমি দুর্ঘটনাক্রমে একটি প্যাকেজ সরিয়েছি যা এটি নির্ভর করে। আমি কীভাবে এখন প্যাকেজটিকে স্পষ্টভাবে পছন্দসই হিসাবে চিহ্নিত করতে পারি, যাতে এটি apt-get autoremoveমুছে না?


এবং সম্পর্কিত প্রশ্ন: এটি কেন এতিম?
bluenote10

উত্তর:


29

ব্যবহার apt-mark

$ man apt-mark
...
manual
       manual is used to mark a package as being manually installed, which will 
prevent the package from being automatically removed if no other packages 
depend on it.

সুতরাং

sudo apt-mark manual <package-name>

এখন autoremoveএটি সরাবে না।

পূর্বাবস্থা

sudo apt-mark auto <package-name>

এখন autoremoveপ্যাকেজটি সরিয়ে ফেলবে যদি এটি অন্য কোনও প্যাকেজের নির্ভরতা না হয়।


আর একটি সহজ কৌশলটি আপনি একবারে অনেকগুলি প্যাকেজগুলি চিহ্নিত করতে পারেন: sudo apt-চিহ্ন ম্যানুয়াল <package1> <package2> <package3> ইত্যাদি
ম্যাসেনব

10

গুগলের আরও কয়েকটি প্রচেষ্টা একটি সমাধান এনেছে :

হয় স্পষ্টভাবে ইনস্টল করা সম্ভব:

sudo apt-get install <package>

অথবা ম্যানুয়ালি ইন্সটল করে দিয়ে চিহ্নিত করা

sudo apt-mark manual <package>

apt পুনরায় ইনস্টল করা হবে না, আউটপুট ঠিক এর মতো দেখাবে:

$ sudo apt-get install tmux
Reading package lists... Done
Building dependency tree       
Reading state information... Done
tmux is already the newest version.
tmux set to manually installed.

0

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

আপনি স্বতঃপরিবর্তন করতে চান এমন প্যাকেজগুলির তালিকাটি সহজেই সংজ্ঞায়িত করা হয়, তবে আপনি পাইপ / sed/ xargsএগুলি আউট করতে পারেন ।

আমার কাছে অনেকগুলি প্যাকেজগুলির জটিল উদাহরণ নেই তবে আমার যদি নিম্নলিখিত পরিস্থিতিগুলি থাকে:

root@fptc-rsvrd:~# apt-get autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  libluajit-5.1-2 libluajit-5.1-common linux-headers-4.4.0-141 linux-headers-4.4.0-141-generic linux-headers-4.4.0-143 linux-headers-4.4.0-143-generic linux-headers-4.4.0-146 linux-headers-4.4.0-146-generic
  linux-image-4.4.0-141-generic linux-image-4.4.0-143-generic linux-image-4.4.0-146-generic linux-image-extra-4.4.0-141-generic linux-modules-4.4.0-143-generic linux-modules-4.4.0-146-generic
  linux-modules-extra-4.4.0-143-generic linux-modules-extra-4.4.0-146-generic linux-signed-image-4.4.0-141-generic pandoc-data
0 upgraded, 0 newly installed, 18 to remove and 19 not upgraded.
After this operation, 907 MB disk space will be freed.

এবং আমি কেবল linux*প্যাকেজগুলি সরাতে চাই , আমি এটি করতে পারি:

root@fptc-rsvrd:~# apt-get autoremove -s | sed -ne 's/Remv \(linux[^[]*\)\[.*/\1/gp'
linux-headers-4.4.0-141-generic
linux-headers-4.4.0-141
linux-headers-4.4.0-143-generic
linux-headers-4.4.0-143
linux-headers-4.4.0-146-generic
linux-headers-4.4.0-146
linux-signed-image-4.4.0-141-generic
linux-image-extra-4.4.0-141-generic
linux-image-4.4.0-141-generic
linux-modules-extra-4.4.0-143-generic
linux-image-4.4.0-143-generic
linux-modules-extra-4.4.0-146-generic
linux-image-4.4.0-146-generic
linux-modules-4.4.0-143-generic
linux-modules-4.4.0-146-generic

সুতরাং এখান থেকে, xargsকমান্ড-লাইন আর্গুমেন্ট হিসাবে সাধারণগুলিতে এগুলি পাস করা সহজ apt-get remove -y:

apt-get autoremove -s \
  | sed -ne 's/Remv \(linux[^[]*\)\[.*/\1/gp' \
  | xargs apt-get remove -y

সাধারণত ব্যবহার করার সময় xargs, আমি আর্গুমেন্টের (যেমন, find ... -print0 | xargs -0 ...) ফাঁকা জায়গা থেকে রক্ষা করি , তবে প্যাকেজের নামগুলির মধ্যে ফাঁকা স্থান না থাকায় আমি নিউলাইন-বিস্মৃত আর্গুমেন্টগুলি ব্যবহার করে স্বাচ্ছন্দ্য বোধ করি।

(আমি এটি অন্য পরিস্থিতিতে মনে করি, একটি হোল্ড "চিহ্নিত" করা আরও উপযুক্ত হবে, প্যাকেজগুলি আনহোল্ড করুন That এটিও রেজেক্সেস দিয়ে করা যেতে পারে এবং xargsতবে সম্ভবত পরিস্থিতি ওভার ইঞ্জিনিয়ারিং is)

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