AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1386447
Accepted
Sun Bear
Sun Bear
Asked: 2022-01-11 19:38:08 +0800 CST2022-01-11 19:38:08 +0800 CST 2022-01-11 19:38:08 +0800 CST

如何在 Ubuntu 20.04 中列出每个已安装 snap 包的大小?

  • 772

用户如何列出 Ubuntu 20.04 中每个已安装 snap 包的大小?目的是获得每个已安装的 snap 包所使用的磁盘空间的概览。该命令snap list不执行此操作。此外,该应用程序Disk Usage Analyzer无法显示超过/var/lib/snapd/snaps.

磁盘使用分析器

20.04
  • 2 2 个回答
  • 555 Views

2 个回答

  • Voted
  1. Best Answer
    Error404
    2022-01-11T19:40:26+08:002022-01-11T19:40:26+08:00

    所有的snap包都存储在/var/lib/snapd/snaps/. 该目录包含snap软件包的所有修订版和名称。您可以ls在目录中运行以列出所有快照包。使用-lh参数 withls将为您提供更详细的输出以及包的大小(以及每个修订版)。因此,您可以运行以下命令来列出所有snap软件包及其安装大小:

    ls -lh /var/lib/snapd/snaps/
    

    或者,您可以使用du带参数的命令-hcs列出所有已安装包的大小:

    du -hcs /var/lib/snapd/snaps/* 
    
    • 3
  2. aslian
    2022-07-31T22:27:52+08:002022-07-31T22:27:52+08:00

    snap list局限性

    在撰写本文时,即 2022 年 7 月,snap list命令确实不支持配置它将输出的列,这是一种硬编码行为: https ://github.com/snapcore/snapd/blob/293c48dc2b97f141d1bc35d5ea91c2e3484f01fd/cmd/snap/cmd_list.go

    使用快照 API

    然而,根据官方文档,https: //snapcraft.io/docs/using-the-api , snap daemon ( snapd) 通过 unix socket at 公开其 API /run/snapd.socket。

    $ netstat --unix --listening --programs | grep snap
    unix  2      [ ACC ]     STREAM     LISTENING     25415    4229/systemd        /run/user/1000/snapd-session-agent.socket
    unix  2      [ ACC ]     STREAM     LISTENING     19241    -                   /run/snapd.socket
    unix  2      [ ACC ]     STREAM     LISTENING     19242    -                   /run/snapd-snap.socket
    

    /snaps端点 ( https://snapcraft.io/docs/snapd-api#heading--snaps ) 返回有关所有已安装快照的机器可读 (JSON) 信息。

    它也包括"installed-size"财产。

    正如前面提到的帮助页面(https://snapcraft.io/docs/using-the-api#heading--accessing)中所建议的,您可以通过发出以下命令来获取此信息

    curl --silent --show-error --unix-socket /run/snapd.socket http://localhost/v2/snaps?select=all
    

    然后,您可以使用任何您喜欢的工具来处理和分析这些数据,可以是jq,python还是其他工具。

    列出每个已安装快照的大小的示例

    来自我的系统的数据示例,带有ruby3.0.1。

    命令(外壳):

    ruby -rjson -rtime -rterminal-table -e '
    json = JSON.parse(ARGF.read)
    
    columns = [*%w(name revision), %w(publisher display-name), *%w(confinement install-date installed-size mounted-from)]
    
    formatters = {
        "install-date" => lambda { Time.parse(_1).getlocal.strftime("%x %X") rescue "" },
        "installed-size" => lambda { `numfmt --to=iec #{_1}`.chop },
        "mounted-from" => lambda { File.dirname(_1) }
    }
    
    result = json["result"].map do |app|
        columns.map do |column|
            app.dig *column
        end
    end
    
    puts Terminal::Table.new(
        headings: [
            "#",
            *columns.map{ _1.respond_to?(:join) ? _1.join("-") : _1 }
        ],
        rows: result.sort_by{ _1[columns.index("name")] }.map.with_index do |row, index|
            [
                index + 1,
                *row.map.with_index do |cell, index|
                    formatters[columns[index]] ? formatters[columns[index]][cell] : cell
                end
            ]
        end <<
        Array.new(columns.size).tap do |emptyrow|
                index = columns.index("installed-size")
    
                emptyrow[index + 1] = formatters["installed-size"][
                    result.reduce(0) do |total, row|
                        total + row[index]
                    end
                ]
        end
    )' <(curl --silent --show-error --unix-socket /run/snapd.socket http://localhost/v2/snaps?select=all)
    

    输出:

    +----+-----------------------------------+----------+------------------------+-------------+-------------------+----------------+----------------------+
    | #  | name                              | revision | publisher-display-name | confinement | install-date      | installed-size | mounted-from         |
    +----+-----------------------------------+----------+------------------------+-------------+-------------------+----------------+----------------------+
    | 1  | atom                              | 282      | Snapcrafters           | classic     |                   | 286M           | /var/lib/snapd/snaps |
    | 2  | atom                              | 286      | Snapcrafters           | classic     | 07/14/22 21:41:12 | 285M           | /var/lib/snapd/snaps |
    | 3  | bare                              | 5        | Canonical              | strict      | 09/27/21 03:08:28 | 4.0K           | /var/lib/snapd/snaps |
    | 4  | chromium                          | 2033     | Canonical              | strict      |                   | 134M           | /var/lib/snapd/snaps |
    | 5  | chromium                          | 2036     | Canonical              | strict      | 07/25/22 23:17:33 | 134M           | /var/lib/snapd/snaps |
    | 6  | code                              | 101      | Visual Studio Code     | classic     |                   | 222M           | /var/lib/snapd/snaps |
    | 7  | code                              | 102      | Visual Studio Code     | classic     | 07/19/22 00:06:55 | 222M           | /var/lib/snapd/snaps |
    | 8  | core                              | 13250    | Canonical              | strict      |                   | 112M           | /var/lib/snapd/snaps |
    | 9  | core                              | 13425    | Canonical              | strict      | 07/14/22 21:38:16 | 114M           | /var/lib/snapd/snaps |
    | 10 | core18                            | 2409     | Canonical              | strict      |                   | 56M            | /var/lib/snapd/snaps |
    | 11 | core18                            | 2538     | Canonical              | strict      | 07/19/22 00:06:55 | 56M            | /var/lib/snapd/snaps |
    | 12 | core20                            | 1581     | Canonical              | strict      |                   | 62M            | /var/lib/snapd/snaps |
    | 13 | core20                            | 1587     | Canonical              | strict      | 07/27/22 00:03:07 | 62M            | /var/lib/snapd/snaps |
    | 14 | digikam                           | 52       | KDE                    | strict      |                   | 184M           | /var/lib/snapd/snaps |
    | 15 | digikam                           | 53       | KDE                    | strict      | 03/03/22 23:04:01 | 184M           | /var/lib/snapd/snaps |
    | 16 | gnome-3-28-1804                   | 145      | Canonical              | strict      |                   | 163M           | /var/lib/snapd/snaps |
    | 17 | gnome-3-28-1804                   | 161      | Canonical              | strict      | 07/27/21 00:54:00 | 165M           | /var/lib/snapd/snaps |
    | 18 | gnome-3-34-1804                   | 72       | Canonical              | strict      |                   | 219M           | /var/lib/snapd/snaps |
    | 19 | gnome-3-34-1804                   | 77       | Canonical              | strict      | 11/24/21 14:53:44 | 219M           | /var/lib/snapd/snaps |
    | 20 | gnome-3-38-2004                   | 99       | Canonical              | strict      |                   | 249M           | /var/lib/snapd/snaps |
    | 21 | gnome-3-38-2004                   | 112      | Canonical              | strict      | 07/14/22 21:42:19 | 401M           | /var/lib/snapd/snaps |
    | 22 | gtk-common-themes                 | 1534     | Canonical              | strict      |                   | 82M            | /var/lib/snapd/snaps |
    | 23 | gtk-common-themes                 | 1535     | Canonical              | strict      | 07/14/22 21:39:41 | 92M            | /var/lib/snapd/snaps |
    | 24 | kde-frameworks-5-core18           | 32       | KDE                    | strict      | 03/15/20 10:20:17 | 261M           | /var/lib/snapd/snaps |
    | 25 | kde-frameworks-5-qt-5-15-3-core20 | 5        | KDE                    | strict      |                   | 319M           | /var/lib/snapd/snaps |
    | 26 | kde-frameworks-5-qt-5-15-3-core20 | 8        | KDE                    | strict      | 11/16/21 19:48:35 | 425M           | /var/lib/snapd/snaps |
    | 27 | kde-frameworks-5-qt-5-15-core20   | 14       | KDE                    | strict      | 04/21/21 22:07:58 | 324M           | /var/lib/snapd/snaps |
    | 28 | musescore                         | 216      | MuseScore              | strict      |                   | 176M           | /var/lib/snapd/snaps |
    | 29 | musescore                         | 228      | MuseScore              | strict      | 05/22/22 18:36:22 | 176M           | /var/lib/snapd/snaps |
    | 30 | nongnu-gsequencer                 | 243      | Joël Krähemann         | strict      |                   | 256M           | /var/lib/snapd/snaps |
    | 31 | nongnu-gsequencer                 | 252      | Joël Krähemann         | strict      | 07/14/22 21:41:52 | 256M           | /var/lib/snapd/snaps |
    | 32 | scrcpy                            | 386      | sisco311               | strict      | 07/31/22 00:49:17 | 83M            | /var/lib/snapd/snaps |
    | 33 | shotcut                           | 692      | Meltytech, LLC         | classic     |                   | 82M            | /var/lib/snapd/snaps |
    | 34 | shotcut                           | 765      | Meltytech, LLC         | classic     | 07/14/22 21:40:48 | 145M           | /var/lib/snapd/snaps |
    | 35 | snap-store                        | 547      | Canonical              | strict      |                   | 51M            | /var/lib/snapd/snaps |
    | 36 | snap-store                        | 558      | Canonical              | strict      | 11/24/21 14:53:52 | 55M            | /var/lib/snapd/snaps |
    | 37 | whalebird                         | 119      | AkiraFukushima         | strict      |                   | 98M            | /var/lib/snapd/snaps |
    | 38 | whalebird                         | 121      | AkiraFukushima         | strict      | 07/14/22 21:41:11 | 99M            | /var/lib/snapd/snaps |
    |    |                                   |          |                        |             |                   | 6.4G           |
    +----+-----------------------------------+----------+------------------------+-------------+-------------------+---------------------------------------+
    

    整体输出与snap list --all.

    我们可以看到所有这些快照都位于一个(默认)目录中。

    并运行

    $ du -h /var/lib/snapd/snaps/{atom*,bare*,chromium*}
    286M    /var/lib/snapd/snaps/atom_282.snap
    285M    /var/lib/snapd/snaps/atom_286.snap
    4,0K    /var/lib/snapd/snaps/bare_5.snap
    134M    /var/lib/snapd/snaps/chromium_2033.snap
    134M    /var/lib/snapd/snaps/chromium_2036.snap
    
    $ du -hs /var/lib/snapd/snaps
    6,5G    /var/lib/snapd/snaps
    

    将返回一个紧密匹配的值。

    结论

    然后我们可以看到,在已经接受的答案中建议的测量目录条目占用空间的方法/var/lib/snapd/snaps没有错,正如https://snapcraft.io/docs/system上的 API 数据和官方解释所证明的那样-快照目录。

    • 0

相关问题

  • 如何在 18.04..20.04 上设置本地通配符 (127.0.0.1) 域解析?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve