Вопрос или проблема
Я хотел бы получить список установленного программного обеспечения на моем компьютере, с указанием занимаемого ими дискового пространства. Я бы предпочел иметь возможность сортировки по размеру (самый большой/самый маленький), но это не является необходимостью.
Я из тех людей, которые устанавливают программное обеспечение, чтобы попробовать его, и никогда не убирают за собой.
В результате мой 7ГБ (Windows и мои данные находятся на отдельных разделах, а также есть область подкачки) раздел Ubuntu 11.04 страдает и начал регулярно показывать предупреждающие сообщения.
dpkg-query -W -f="${Installed-Size;8} ${Package}\n" | sort -n
покажет вам список пакетов, отсортированных по размеру
Вы можете сделать это графически в Synaptic
.
Сначала убедитесь, что вы включили столбцы Installed Size и Download size (или только один, если нужен только он).
- Для этого перейдите в Settings > Preferences и выберите Columns and Fonts, затем отметьте галочкой столбцы, которые вы хотите видеть.
- Затем нажмите OK.
- Как только они включены, вы можете получить список установленных пакетов по размеру загрузки/установки, нажав на колонку.
- Пожалуйста, учтите: на этом скриншоте мои пакеты не отсортированы таким образом, но это работает.
Предпочтительное решение
Я нашел более короткий ответ, не требующий aptitude
:
dpkg-query -Wf '${Installed-size}\t${Package}\n' | column -t
Старое предложенное решение
Команда show
в aptitude
может показать установленный размер пакета.
У меня есть небольшой скрипт, который использует aptitude
(для установки отдельно) для получения списка всех установленных пакетов с размерами:
#!/bin/bash
export LC_ALL=C
aptitude show $(dpkg-query -Wf '${Package}\n') |
awk '$1 == "Package:" { name = $2 }
$1 == "Uncompressed" { printf("%10s %s\n", $3, name) }' |
awk '$1 ~ /k/ { $1 *= 1 }; $1 ~ /M/ { $1 *= 1024 }
{ printf("%9d %s\n", $1, $2)}'
Размеры указаны в килобайтах и являются примерными, как возвращает aptitude show pkg
.
Скрипт можно улучшить, используя единое вызов awk
(но я ленивый 🙂
Другой вариант – использовать приложение dpigs
из пакета debian-goodies
:
NAME
dpigs - Показывает, какие пакеты занимают больше всего места
SYNOPSIS
dpigs [опции]
DESCRIPTION
dpigs сортирует установленные пакеты по размеру и выводит самые большие. По
умолчанию dpigs показывает 10 самых больших пакетов. Вы можете изменить это количество с помощью опции -n (см. "OPTIONS"). Информация берется из файла статуса dpkg с помощью grep-status(1).
OPTIONS
-h, --help
Выводит информацию о использовании и выходит.
-n, --lines=N
Показывает N самых больших пакетов в системе (по умолчанию 10).
-s, --status=FILE
Использует FILE вместо стандартного файла статуса dpkg (который в настоящее время находится по пути /var/lib/dpkg/status).
-S, --source
Показывает самые большие исходные пакеты для бинарных пакетов, установленных в системе.
Другие ответы здесь перечисляют как установленные, так и удаленные пакеты.
Следующий список показывает только те, которые в данный момент установлены:
dpkg-query -W -f="${Installed-Size;8}\t${Status;1}\t${Package}\n" | grep -v "\sd\s" | sort -n | cut -f1,3-
Что он делает:
- Запрашивает установленный размер, статус и имя всех пакетов
- Фильтрует удаленные пакеты
- Удаляет столбец статуса из вывода
Выходной результат похож на это:
...
22376 vim-runtime
26818 linux-image-3.8.0-32-generic
28673 libc6-dbg
35303 libpython3.3-dev
40303 valgrind
40731 linux-firmware
41516 smbclient
58704 linux-headers-3.8.0-26
58733 linux-headers-3.8.0-32
93566 linux-image-extra-3.8.0-32-generic
Вы можете просмотреть такой список в текстовом диспетчере пакетов Aptitude:
- Откройте Aptitude с помощью
sudo aptitude
. - Нажмите S (заглавная буква S) и введите
~installsize
в запросе. (Знак~
означает сортировку по убыванию; вы можете опустить его, если хотите самые маленькие пакеты сверху.) - На данный момент, пакеты отсортированы по размеру внутри каждого уровня иерархии. Чтобы получить обзор, вам потребуется минимальное количество уровней. Нажмите G и введите
status
в запросе. Теперь все установленные пакеты находятся в одном разделе, отсортированном по размеру.
Вот вариант ответа Drew Noakes, но с awk
выполняющим основную работу:
#!/bin/sh
dpkg-query --show --showformat="${Package}\t${Installed-size}\t${Status}\n" |
awk '
{
# оцениваем только установленные пакеты
if($3 == "install"){
packages[$1] = $2
}
}
END {
# сортируем пакеты по размеру (измените 'asc' на 'desc', чтобы изменить порядок)
PROCINFO["sorted_in"] = "@val_num_asc"
for (i in packages){
printf "%05.2fM | %s\n",
packages[i] / 1024, # конверсия из килобайтов в мегабайты
i
}
}
'
Все приведенные выше ответы не учитывают стоимость хранения зависимостей. Следующий ответ содержит список вручную установленных пакетов с использованием apt-mark showmanual
. (2) Затем он спрашивает apt-get, сколько места будет освобождено, если пакет будет удален, включая зависимости. (3) Некоторая обработка текста на основе регулярных выражений, чтобы показать топ пакетов.
Стоимость зависимостей не будет взаимно исключающей, т.е. она не будет складываться в общую стоимость хранения, потому что некоторые из зависимостей будут считать себя повторно. Однако, вы получите желаемое количество свободного места, если вы выполните apt-get autoremove.
$ for p in $(apt-mark showmanual); do
sudo apt-get --assume-no autoremove $p | \
grep freed | \
cut -d' ' -f4-5 | \
sed -E "s/([0-9.]+) ([kMG])B/$p \1\2/"; \
done | \
sort -hk 2
Ответ или решение
Вопрос об управлении свободным пространством на диске, особенно на системах с ограниченными ресурсами, таких как Ubuntu 11.04 с небольшим размером диска в 7 ГБ, актуален и требует взвешенного подхода. Управление установленным программным обеспечением и его размером может не только улучшить производительность системы, но и предотвратить автоматическую потерю данных в результате нехватки места. В этой ситуации важно не только удалить ненужное программное обеспечение, но и учитывать размеры установленных пакетов. Рассмотрим, как это можно сделать с использованием различных инструментов и команд Linux.
Теория
Операционные системы на основе Linux, такие как Ubuntu, позволяют управлять пакетами и отслеживать их размер на диске. Основной утилитой для этих задач является dpkg
, которая предоставляет возможность запроса информации о пакетах, включая их установочный размер. Понимание структуры и принципов работы инструментов для управления пакетами является важным аспектом в управлении ресурсами системы.
Пример
Команда dpkg-query
может быть использована для вывода списка всех установленных пакетов вместе с информацией об их размере. Используя следующие команды, вы можете вывести список установленных пакетов по размеру:
dpkg-query -W -f="${Installed-Size;8}\t${Package}\n" | sort -n
Эта команда выводит список пакетов, отсортированный по размеру. Размер измеряется в килобайтах и сохраняет информационную разметку о пакетах, что позволяет легко идентифицировать и удалить ненужное ПО. Кроме того, можно использовать awk
для дальнейшей фильтрации и форматирования данных:
dpkg-query --show --showformat="${Package}\t${Installed-size}\t${Status}\n" | awk '{
if($3 == "install"){
packages[$1] = $2
}
} END {
PROCINFO["sorted_in"] = "@val_num_asc"
for (i in packages){
printf "%05.2fM | %s\n", packages[i] / 1024, i
}
}'
Этот скрипт фильтрует только установленные пакеты и форматирует размер в мегабайтах, что делает вывод более читабельным.
Применение
Для дальнейшего управления набором установленных программ вы можете использовать графический интерфейс, такой как Synaptic. Это может быть особенно полезно пользователям, которые предпочитают визуальные решения. В Synaptic можно настроить отображение дополнительных колонок, таких как установочный размер, что поможет вам визуально оценить использование дискового пространства каждым пакетом.
Однако важно помнить, что удаление программ может быть не единственным решением. Рассмотрите возможность оптимизации работы системы путем переноса больших данных на другие носители или обновления компонентов аппаратуры.
Также, если у вас есть ненужные зависимости, которые были установлены вместе с пакетами, но теперь не используются, команда:
apt-get autoremove
поможет автоматизировать их удаление.
Таким образом, управление дисковым пространством и список установленных программ являются критическими аспектами технического обслуживания и оптимизации систем Linux. Эти методы помогут вам эффективно управлять ограниченными ресурсами вашего компьютера, обеспечивая более стабильную и надежную работу системы.