特定のパッケージと依存関係に必要なスペースはどれくらいですか?


19

パッケージ名を指定すると、パッケージとその依存関係が削除された場合にどれだけのスペースが解放されるかを確認できます。

依存関係はパッケージ間で共有される可能性があるので、たぶん正しい方法は次のとおりです。

スクリプトで使用するため、CLIソリューションを好む


apt-cache show packagenameパッケージのインストール済みサイズとパッケージの依存関係などをリストします。apt-cache rdepends packageそのパッケージを使用するパッケージのリストもあります。そこから始めたいかもしれません。
saiarcot895 14

@ saiarcot895-回答として投稿してください
パンサー14

回答:


15

プログラムとそのすべての依存関係で使用されるスペースを取得する最も簡単でバグのない方法は、apt自体を使用することです。別のプログラムで使用されていないが、パッケージと共にインストールされている依存関係は削除されないため、考慮されないことに注意してください。
単に

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

この pythonスクリプトは有望に見えます(bigpkg-システム上で多くのスペースを必要とするパッケージを見つけます)


これはArch用のPythonスクリプトではありませんか?
josinalvo

最初に「sudo apt-get --assume-no autoremove」を実行して、システムがとにかく削除したいパッケージがあるかどうかを確認する必要があります(削除しようとしているパッケージとは
無関係

それは私が答えたものではありませんか?「削除」の後に「パージ」を実行する必要があります
-totti

つまり、PACKAGENAMEなしでこれを実行し、PACKAGENAMEで実行された番号を取得し、別の番号を取得します。減算
-josinalvo

あなたは正しいです、そしてそれは特別な場合です。
トッティ

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(manからdpigs):

    dpigs-最も多くのスペースを占めるインストール済みパッケージを表示

    dpigsは、インストールされたパッケージをサイズでソートし、最大のものを出力します。デフォルトでは、dpigsは最大10個のパッケージを表示します。あなたは変えられる
       -nオプションを使用してこの値を設定します(「オプション」を参照)。情報は、grep-status(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、これは未使用パッケージのサイズを見つけるのに役立ちます。詳細については、マンページをご覧ください。


有用なコマンドを段階的に提供するために最善を尽くしました。
これらが役立つことを願っています!


dpkg / aptcacheの「インストール済みサイズ」の単位は何ですか?たとえば、バイト、キロバイト…?
ハイエンジェル

2

apt-cache show packagenameパッケージのインストール済みサイズとパッケージの依存関係などをリストします。apt-cache rdepends packagenameそのパッケージを使用するパッケージのリストもあります。

後者のコマンドを使用してapt-cache policy packagename、reverse-depdendencyがインストールされているかどうかを確認することもできます。


このサイズは人間が読めるようには見えません。
-ThorSummoner

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

ありがとうございました。これは私が欲しいもの、最大のパッケージのリストで、サイズには依存関係が含まれています。ただし、出力は完全ではなく、ギガバイト未満です。私のシステムは約8ギグを使用しています。それのほとんどはパッケージでなければなりません-私は確信しています-私はほとんどデータを持っていません。
ロルフ

@ロルフ、私はそれが有用だったことを嬉しく思います。実際、多くのパッケージはリストされていません。パッケージが他のいくつかのパッケージに依存している場合に発生します。ユーザーがすべてのパッケージとすべての依存関係を確認できるように、依存関係をグラフとしてプロットしてみました。しかし、それは完全な混乱、スパゲッティのボールに変わります。返事が遅れて申し訳ありません。
user2745509
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.