Проблема:
Когда я печатаю:
dpkg-query -Wf '${Package;-40}${Priority}\n' | sort -b -k2,2 -k1,1
Я получаю список всех установленных пакетов на моем компьютере, например:
...
raspberrypi-artwork extra
raspberrypi-bootloader extra
raspberrypi-ui-mods extra
raspi-config extra
rpi-update extra
sonic-pi extra
ssh extra
triggerhappy extra
wireless-tools extra
xkb-data extra
adduser important
apt important
apt-utils important
aptitude important
aptitude-common important
bsdmainutils important
...
Недавно я запустил скрипт, который установил много вещей, и теперь моя машина отвечает: /usr/bin/mandb: can't write to /var/cache/man/2694: No space left on device
(пути меняются, но мне всегда говорят, что места не осталось.)
Возможные метки, которые я вижу:
- стандартный
- дополнительный
- важный
- необязательный
- необходимый
У меня есть незафиксированные изменения в различных репозиториях, и я хочу иметь возможность опубликовать свои локальные изменения, но при попытке опубликовать я постоянно получаю эту ошибку:
$ git push
fatal: write error: No space left on device
error: Couldn't write .git/refs/remotes/origin/master.lock
error: Cannot update the ref 'refs/remotes/origin/master'.
Everything up-to-date
Я также должен сказать, что я знаю, что не все данные актуальны.
Система:
Это на Raspberry Pi с запущенным «хриплым» Raspbian.
Вопрос:
У меня установлено несколько сотен пакетов. Как удалить все пакеты с меткой «extra»? Это лучший способ освободить место на моей машине? У меня есть незафиксированные изменения в различных репозиториях, и я хочу иметь возможность отправлять свои локальные изменения.
Я бы также принял ответ, который удаляет все, кроме необходимого и важного. Git помечен как необязательный, и я бы предпочел сохранить его (хотя я всегда могу установить его снова, удалив все ненужные пакеты).
Заранее спасибо!!
решение1
Для удаления всех дополнительных и необязательных пакетов можно использовать следующую команду:
sudo apt-get --simulate purge $(dpkg-query -Wf '${Package;-40}${Priority}\n' | awk '$2 ~ /optional|extra/ { print $1 }')
Флаг --simulate
позволяет вам увидеть, что будет удалено, не удаляя все на самом деле. Снимите флаг, чтобы действительно удалить пакеты.
Вам придется переустановить git, так как он будет удален вместе с другими необязательными и дополнительными пакетами.
Вам могут понадобиться некоторые дополнительные и дополнительные пакеты, поэтому удаляйте их осторожно. Подробнее здесь:https://askubuntu.com/questions/79665/keep-only-essential-packages
решение2
Вам придется проверитьгдеу вас закончилось место. df(1)
Команда сообщает, какие файловые системы заполнены.
Распространенной причиной нехватки места являются большие файлы журналов (проверьте в разделе /var/log
, в вашей системе должны быть команды для очистки устаревших журналов). Обратите внимание, что sort(1)
использует временные файлы, либо в var/tmp
, /tmp
если любой из них содержит слишком много хлама, он может выйти из строя из-за нехватки места.
решение3
Поскольку у вас установлен aptitude, он может вам помочь здесь. Запустите aptitude
и ограничьте (ярлык: l
) вид пакетами, соответствующими
~i ~pextra
Видетьонлайн-руководствоили /usr/share/doc/aptitude/README
для ссылки на поисковый запрос.
Теперь вы можете выбрать удаление всех пакетов: нажмите -
под каждым заголовком верхнего уровня, чтобы отметить пакеты для удаления (сохраняет файлы конфигурации) или _
отметить их для очистки (удаляет файлы конфигурации), затем g
продолжить. У вас есть возможность просмотреть список, если вы хотите сохранить некоторые пакеты.