Var / cache / apt কে কীভাবে পরিষ্কার করবেন এটি প্রতিটি প্যাকেজের কেবলমাত্র সর্বশেষতম সংস্করণ ছেড়ে দেয়


18

আমি var / cache / apt ফোল্ডারটি এমনভাবে পরিষ্কার করার একটি উপায় জানতে চাই যে এটি কেবলমাত্র একটি প্যাকেজের সর্বশেষ সংস্করণটি ছেড়ে দেয় যদি এর বেশ কয়েকটি সংস্করণ থাকে বা এটি যদি কোনও প্রোগ্রামের একমাত্র থাকে তবে এটি কোনও প্যাকেজ ছেড়ে দেয়।

উদাহরণস্বরূপ আমার কাছে বেশ কয়েকটি ভিএলসি প্যাকেজ রয়েছে (vlc_1.1.11, vlc_1.1.12 ..) এবং বেশ কয়েকটি ওয়াইন প্যাকেজ (ওয়াইন 1.3_1.3.34, ওয়াইন 1.3_1.3.35, ওয়াইন 1.3_1.3.36, ওয়াইন 1.3_1.3.37 ...) এবং এটির মতো আরও অনেকে।

সুতরাং এই ফোল্ডারে কীভাবে কোনও ক্লিন আপ করা যায় যা এটি কেবল সর্বশেষতম প্যাকেজগুলিকে ছেড়ে দেয়। এই মুহুর্তে আমার কাছে 2.5 গিগাবাইট রয়েছে এবং এর বেশিরভাগটি কেবলমাত্র নতুন পুরানো প্যাকেজগুলির সাথে মিশ্রিত হয়।

উত্তর:


9

আমি নিম্নলিখিত বাশ স্ক্রিপ্ট প্রস্তাব

#!/bin/bash

cd /var/cache/apt/archives/
printf '%s\n' *.deb | 
  awk -F_ '{ print $1 }' |
  sort -u | 
  while read pkg; do 
    pkg_files=($(ls -t "$pkg"_*.deb))
    nr=${#pkg_files[@]}
    if ((nr > 1)); then
      unset pkg_files[0]
      echo rm "${pkg_files[@]}"
    fi
  done

আপনি যদি আউটপুট তালিকার সাথে সন্তুষ্ট echoহন তবে rmলাইনটি থেকে সরান ।

এর মানে কি?

  1. এটি সমস্ত ডিবে প্যাকেজ ফাইলগুলির তালিকা করে
  2. প্রথম "_"থেকে শেষ পর্যন্ত ফাইলের সমস্ত কিছু মুছে ফেলুন , প্যাকেজের নামটি পেয়ে
  3. নামগুলি বাছাই করুন, নকলগুলি সরিয়ে ফেলুন
  4. প্রতিটি নামের জন্য

    1. সময় অনুসারে সেই নামের সাথে সম্পর্কিত প্যাকেজ ফাইলগুলি তালিকাভুক্ত করুন
    2. তালিকার প্যাকেজ ফাইলগুলির সংখ্যা গণনা করুন
    3. তালিকায় যদি একাধিক প্যাকেজ থাকে

      1. তালিকা থেকে প্রথম এবং নতুন ফাইলটি সরিয়ে ফেলুন
      2. এই নামের সাথে সম্পর্কিত অন্যান্য সমস্ত ফাইল ডিস্ক থেকে অপসারণ করুন

এটা দক্ষতা উন্নত করা যেতে পারে সংশ্লিষ্ট মধ্যে পার্থক্য থেকে প্রাপ্ত নাম প্যাকেজ শুধুমাত্র প্যাকেজ ফাইল তালিকাবদ্ধ করে sortএবং sort -u


এটি পুরোপুরি কাজ করেছে। আমি বোধিকেও একটি +1 দিচ্ছি কারণ অটোক্লেন কিছুটা পরিষ্কার করার ক্ষেত্রেও সহায়তা করেছিল। সুতরাং সম্ভবত দুজনে মিলে দুর্দান্ত কাজ করে। ধন্যবাদ এনজোটিব
লুইস আলভারাদো

16

অ্যাপটি-গেট বা প্রবণতার জন্য অটোক্লেন বিকল্পটি ব্যবহার করুন

sudo apt-get autoclean
sudo aptitude autoclean

ম্যান পেজ থেকে

পরিষ্কার

পরিষ্কার পুনরুদ্ধারকৃত প্যাকেজ ফাইলগুলির স্থানীয় সংগ্রহস্থলকে সাফ করে। এটি / var / cache / apt / সংরক্ষণাগার / এবং / var / cache / apt / সংরক্ষণাগার / আংশিক / থেকে লক ফাইল ব্যতীত সমস্ত কিছু সরিয়ে দেয়।

স্বয়ংক্রিয় পরিষ্কার

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


আপনি sudo প্রবণতা অটোক্লেন যোগ করতে পারেন? এছাড়াও উভয় ক্ষেত্রে অটোকলিয়ান (অ্যাপটি-গেট এবং প্রবণতা) এখনও পুরানো সংস্করণগুলি ছেড়ে দেয় যা থান্ডারবার্ড 8.0 এবং থান্ডারবার্ড 9.0 এর মতো বিশাল লাফ দেয়। এটি থান্ডারবার্ড 8.x পুরানো প্যাকেজগুলি সরিয়ে ফেলল তবে 9.0 8.0 এর উপরে রয়েছে এটি বিবেচনায় না নিয়ে এটি পুরো রিলিজ সংস্করণগুলির মতো ছেড়ে যায়। আমি এখনও বাকি কিছু ক্ষেত্রে এটি কেবল একটি। এই পরিমাণ পুরানো প্যাকেজগুলির মুখোমুখি হতে অন্য কোনও ধারণা?
লুইস আলভারাদো

আমি দুঃখিত, অটোক্লেন যদি কাজ না করে তবে আমি একটি সহজ পদ্ধতি জানি না। আশা করি অন্য কারও কাছে এর থেকে ভাল পরামর্শ রয়েছে।
প্যান্থার

0

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

#! /usr/bin/env bash

cd /var/cache/apt/archives/
for pkg in `ls *.deb | cut -d _ -f 1 | sort -u`; do
    if [ $(ls $pkg\_* | wc -l) -gt 1 ]; then
        files=$(ls -vr $pkg\_*)
        rmfiles=`echo $files | cut -d " " -f 2-`
        rm -v $rmfiles
    fi
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.