প্রদত্ত প্যাকেজ, এবং নির্ভরতা কত খরচ করে?


19

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

যেহেতু প্যাকেজগুলির মধ্যে নির্ভরতা ভাগ করা যায়, সম্ভবত এটি সঠিকভাবে রাখার জন্য: প্যাকেজটি কেবলমাত্র এই প্যাকেজটির দ্বারা ব্যবহৃত সমস্ত নির্ভরতা সহ কতগুলি স্থান নেয়?

আমি সিএলআই সমাধানগুলি পছন্দ করব, কারণ আমি এগুলি স্ক্রিপ্টগুলিতে ব্যবহার করব


apt-cache show packagenameঅন্যান্য বিষয়গুলির মধ্যে একটি প্যাকেজের ইনস্টলড আকার এবং প্যাকেজের নির্ভরতা তালিকাবদ্ধ করে। এছাড়াও আছে apt-cache rdepends packageপ্যাকেজ প্যাকেজ ব্যবহার তালিকা। আপনি সেখানে শুরু করতে চাইতে পারেন।
saiarcot895

@ saiarcot895 - উত্তর হিসাবে পোস্ট করুন দয়া করে
প্যান্থার

উত্তর:


15

কোনও প্রোগ্রাম এবং এর সমস্ত নির্ভরতা দ্বারা ব্যবহৃত স্থান পাওয়ার সহজতম এবং বাগ ফ্রি উপায় হ'ল অ্যাপটি নিজেই ব্যবহার করা। নোট নির্ভরতা যা অন্য প্রোগ্রাম দ্বারা ব্যবহৃত হয় না, তবে একটি প্যাকেজ সহ ইনস্টল করা হয় সেগুলি সরানো না হওয়ায় তা বিবেচনা করা হয় না।
কেবল

sudo apt-get --assume-no autoremove PACKAGENAME

অথবা

apt-space-used-by() { sudo apt-get --assume-no autoremove $@ | grep freed | cut -d' ' -f4-5 ;}

ব্যবহার apt-space-used-by PACKAGENAME

এই অজগর স্ক্রিপ্টটি আশাব্যঞ্জক দেখাচ্ছে (বিগপিজি - আপনার সিস্টেমে প্যাকেজগুলির জন্য অনেক জায়গার প্রয়োজন আছে তা সন্ধান করুন)


আর্চের জন্য এই অজগর লিপিটি নয়?
জোসিনালভো

সিস্টেমটি যেভাবেই প্যাকেজ অপসারণ করতে চায় কিনা তা দেখতে আমাদের প্রথমে "sudo apt-get --assume-no autoremove" চালানো উচিত (আপনি যে প্যাকেজটি অপসারণের কথা ভাবছেন তা স্বাধীন)
জোসিনালভো

আমি কি জবাব দিয়েছি সেটাই না? আপনার 'অপসারণ' এর পরে '
শুদ্ধ

আমি বলতে চাইছি: এটি কোনও প্যাকএইচএইজিএইজাম ছাড়াই চালান, পিএকেজিএইজেইএমএস দিয়ে একটি সংখ্যা চালান, অন্যটি পান। বিয়োগ
জোসিনালভো

আপনি ঠিক বলেছেন, এবং এটি বিশেষ ক্ষেত্রে।
টোটাল

5
  • সহজভাবে নিম্নলিখিত কমান্ডটি ব্যবহার করে চেষ্টা করুন (ডিস্কের স্থান শুদ্ধির দ্বারা মুক্ত করতে):

    echo -n | sudo apt-get purge <package> | grep "disk space will be freed"
    

    অথবা

    echo -n | sudo apt-get purge --auto-remove <package> | grep "disk space will be freed"
    

    যেখানে <package>আপনার প্রতিস্থাপন package-name(উদাহরণ gimp:)

    এই প্যাকেজ অভিযোগমোচন করা হবে না নির্ভরতাসহ কিন্তু শুধুমাত্র কত ডিস্ক স্থান মুক্ত করা হবে না দেয় সাহায্যে grep!


  • ব্যবহার dpkg --print-availবা apt-cache show:

    apt-cache show <package> | grep "Installed-Size"
    

    অথবা

    dpkg --print-avail <package> | grep "Installed-Size"
    

    এটি ইনস্টল করা আকারের প্রদর্শন করবে <package>

    উদাহরণ:

    $ apt-cache show gimp | grep "Installed-Size"
    Installed-Size: 15024
    

  • আকার অনুসারে ইনস্টল করা প্যাকেজগুলির তালিকা সাজান

    dpkg-query -W -f='${Installed-Size;8}  ${Package}\n' | sort -n
    

    পৃষ্ঠা-ভিত্তিক আপনি আরও ব্যবহার করতে পারেন:

    dpkg-query -W -f='${Installed-Size;8}  ${Package}\n' | sort -n | more
    

    আকার অ্যাক্সেসিং অনুসারে উপরে তালিকা প্যাকেজগুলি, আপনি tailনীচের হিসাবে শীর্ষ আকারের প্যাকেজগুলি তালিকাভুক্ত করতে ব্যবহার করতে পারেন :

    dpkg-query -W -f='${Installed-Size;8}  ${Package}\n' | sort -n | tail
    

  • dpigs(মানুষের কাছ থেকে dpigs) ব্যবহার :

    dpigs - ইনস্টল হওয়া প্যাকেজগুলি সর্বাধিক স্থান দখল করে দেখায়

    dpigs ইনস্টল করা প্যাকেজগুলি আকার অনুসারে বাছাই করে এবং সবচেয়ে বড়গুলি আউটপুট করে। প্রতি ডিফল্ট ডিপিগ্স বৃহত্তম 10 টি প্যাকেজ প্রদর্শন করে। তুমি বদলাতে পারো
       -n বিকল্পটি ব্যবহার করে এই মানটি ("বিকল্পগুলি" দেখুন)। তথ্যটি গ্রেফ-স্ট্যাটাস (1) সহ dpkg স্থিতি ফাইল থেকে নেওয়া হয়েছে

    এটি ইনস্টল করা যায়: রান কমান্ডের উদাহরণsudo apt-get install debian-goodies

    $ dpigs
    115449 wine1.6-i386
    110356 linux-image-extra-3.13.0-24-generic
    103828 libreoffice-core
    86240 fonts-horai-umefont
    74016 libreoffice-common
    72709 liboxideqtcore0
    61736 linux-headers-3.13.0-24
    60821 libpyzy-1.0-0
    59477 firefox
    59443 thunderbird
    

  • অব্যবহৃত প্যাকেজের আকার অনুসন্ধান করা:

    popularity-contest (8) - list the most popular Debian packages
    popcon-largest-unused (8) - List size of unused packages
    

    প্রথমে রান করুন popularity-contestএবং তারপরে popcon-largest-unused, এটি আপনাকে অব্যবহৃত প্যাকেজের আকার খুঁজে পেতে সহায়তা করবে। আরও তথ্যের জন্য ম্যান-পৃষ্ঠাগুলি দেখুন।


আমি পদক্ষেপে দরকারী কমান্ড সরবরাহ করার জন্য যথাসাধ্য চেষ্টা করেছি।
আশা করি এগুলি সাহায্য করে!


"ইনস্টলড সাইজ" এর ইউনিটগুলি ডিপিকেজি / অ্যাপট্যাক্স থেকে কী কী? লাইক, বাইটস, কিলোবাইট…?
হাই-এঞ্জেল

2

apt-cache show packagenameঅন্যান্য বিষয়গুলির মধ্যে একটি প্যাকেজের ইনস্টলড আকার এবং প্যাকেজের নির্ভরতা তালিকাবদ্ধ করে। এছাড়াও আছে apt-cache rdepends packagenameপ্যাকেজ প্যাকেজ ব্যবহার তালিকা।

আপনি পরবর্তী কমান্ডটি ব্যবহার করতে এবং apt-cache policy packagenameএকটি বিপরীত-অবক্ষয় ইনস্টল করা আছে কিনা তা নির্ধারণ করতে চাইতে পারেন ।


এই আকারটি মানুষের পঠনযোগ্য বলে মনে হয় না।
থারস্মমনার

1
Installed-Size, কিলোবাইট হয় যেহেতু Sizeবাইট হয়। আমার উত্তরে আমার তা উল্লেখ করা উচিত ছিল।
saiarcot895

1

এখানে একটি স্ক্রিপ্ট যা এটি করে। যদিও কোনও মেশিন বান্ধব আউটপুট নেই।

sudo apt-get install python-apt

এবং আপনি যেতে প্রস্তুত।

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

from __future__ import (absolute_import, division,
                        print_function, unicode_literals)
import apt
from apt.cache import Filter, FilteredCache

MB = 1024*1024

class InstalledFilter(Filter):
    def apply(self, pkg):
        return pkg.is_installed

def iter_base_deps(cache, package):
    deps = []
    version = package.installed
    for dep_type in ('Depends', 'PreDepends', 'Recommends'):
        deps.extend(version.get_dependencies(dep_type))
    for dep in deps:
        for base_dep in dep:
            if base_dep.name in cache:
                yield base_dep

def main():
    package_ref_count = {}
    results = []

    cache = FilteredCache(apt.Cache())
    cache.set_filter(InstalledFilter())
    for package in cache:
        for base_dep in iter_base_deps(cache, package):
            if base_dep.name in package_ref_count:
                package_ref_count[base_dep.name] += 1
            else:
                package_ref_count[base_dep.name] = 1

    for package in cache:
        base_deps_size = 0
        base_deps = []
        for base_dep in iter_base_deps(cache, package):
            if package_ref_count[base_dep.name] == 1:
                base_deps.append(base_dep)
                base_deps_size += cache[base_dep.name].installed.installed_size
        total_size = package.installed.installed_size + base_deps_size
        results.append((total_size, package, base_deps_size, base_deps))

    for total_size, package, base_deps_size, base_deps in sorted(results, reverse=True):
        if package.name in package_ref_count:
            continue
        if total_size < MB:
            break
        self_size = package.installed.installed_size
        base_dep_count = len(base_deps)
        print('{:.1f} MB  {}'.format(total_size/MB, package.name) + \
              (' with {} deps'.format(base_dep_count) if base_dep_count else ''))
        if base_dep_count:
            print('    {:.1f} MB  self'.format(self_size/MB))
            for base_dep in base_deps:
                size = cache[base_dep.name].installed.installed_size
                print('    {:.1f} MB  {}'.format(size/MB, base_dep.name))


if __name__ == '__main__':
    main()

উদাহরণ আউটপুট:

72.6 MB  gthumb with 4 deps
    3.0 MB  self
    61.0 MB  libwebkit2gtk-3.0-25
    8.0 MB  gthumb-data
    0.1 MB  gstreamer0.10-gnomevfs
    0.5 MB  flex

ধন্যবাদ. নির্ভরতা সহ আকার সহ এটিই আমি চাই, সবচেয়ে বড় প্যাকেজের তালিকা। তবে আউটপুট সম্পূর্ণ না হলেও এটি গিগাবাইটের চেয়ে কম হয় accounts আমার সিস্টেমে প্রায় 8gigs ব্যবহার করে। এর বেশিরভাগেরই প্যাকেজ থাকতে হবে - আমি নিশ্চিত - আমার কাছে খুব কমই কোনও ডেটা রয়েছে।
রলফ

@ রোল্ফ, আমি আনন্দিত যে এটি কার্যকর ছিল। প্রকৃতপক্ষে, প্রচুর প্যাকেজ তালিকাভুক্ত করা হয় না, যদি প্যাকেজটি অন্য কয়েকজন দ্বারা নির্ভর করে থাকে। আমি গ্রাফ হিসাবে নির্ভরতা প্লট করার চেষ্টা করেছি, এইভাবে ব্যবহারকারী সমস্ত প্যাকেজ এবং সমস্ত নির্ভরতা দেখতে পেত। তবে এটি সম্পূর্ণ গণ্ডগোলের দিকে পরিণত হয়, স্প্যাগেটির একটি বল। দেরিতে জবাবের জন্য দুঃখিত।
ব্যবহারকারী 2745509
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.