AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 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

Como listar o tamanho de cada pacote snap instalado no Ubuntu 20.04?

  • 772

Como um usuário lista o tamanho de cada pacote snap instalado no Ubuntu 20.04? O objetivo é obter uma visão geral do espaço em disco utilizado por cada pacote snap instalado. O comando snap listnão faz isso. Além disso, o aplicativo Disk Usage Analyzernão pôde mostrar mais do que /var/lib/snapd/snaps.

analisador de uso de disco

20.04
  • 2 2 respostas
  • 555 Views

2 respostas

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

    Todos os snappacotes são armazenados em /var/lib/snapd/snaps/. Este diretório contém todas as revisões e nomes dos snappacotes. Você pode executar lsno diretório para listar todos os pacotes de snap. Usar o -lhargumento with lslhe dará uma saída mais detalhada junto com o tamanho dos pacotes (e cada uma de suas revisões). Assim, você pode executar o seguinte comando para listar todos os snappacotes junto com seu tamanho instalado:

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

    Alternativamente, você pode usar o ducomando com -hcsargumento para listar o tamanho de todos os pacotes instalados:

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

    snap listlimitações

    No momento da escrita, julho de 2022, snap listo comando realmente não suporta a configuração de colunas que produziria, é um comportamento codificado: https://github.com/snapcore/snapd/blob/293c48dc2b97f141d1bc35d5ea91c2e3484f01fd/cmd/snap/cmd_list.go

    Usando a API de snap

    No entanto, de acordo com a documentação oficial, https://snapcraft.io/docs/using-the-api , o snap daemon ( snapd) expõe sua API via soquete unix em /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
    

    O ponto de /snapsextremidade ( https://snapcraft.io/docs/snapd-api#heading--snaps ) retorna informações legíveis por máquina (JSON) sobre todos os snaps instalados.

    E inclui "installed-size"propriedade também.

    Conforme sugerido na página de ajuda mencionada anteriormente ( https://snapcraft.io/docs/using-the-api#heading--accessing ), você pode obter essas informações emitindo o seguinte comando

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

    Você pode processar e analisar esses dados usando qualquer ferramenta que desejar, seja jq, pythonou qualquer outra coisa.

    Exemplo de listagem do tamanho de cada snap instalado

    Exemplo em dados do meu sistema, com ruby3.0.1.

    Comando (shell):

    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)
    

    Resultado:

    +----+-----------------------------------+----------+------------------------+-------------+-------------------+----------------+----------------------+
    | #  | 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           |
    +----+-----------------------------------+----------+------------------------+-------------+-------------------+---------------------------------------+
    

    A saída geral corresponde à de snap list --all.

    Podemos ver que todos esses snaps estão localizados em um diretório (padrão).

    E correndo

    $ 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
    

    retornaria valores próximos.

    Conclusão

    Podemos ver então que a abordagem de medir o espaço ocupado por entradas de /var/lib/snapd/snapsdiretório, sugerida em uma resposta já aceita, não estava errada, como evidenciado pelos dados da API e explicação oficial encontrada em https://snapcraft.io/docs/system -snap-diretório .

    • 0

relate perguntas

  • Como posso configurar a resolução de domínio curinga local (127.0.0.1) em 18.04..20.04?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve