Apt get clean что за команда. Список установленных пакетов Debian
Для автоматизации процесса установки, удаления и обновления пакетов программ в ряде дистрибутивов Linux применяется Усовершенствованная система управления программными пакетами APT (Advanced Packaging Tool ). Автоматизация достигается созданием одного или нескольких внешних репозитариев, в которых хранятся пакеты программ и относительно которых производится сверка пакетов, установленных в системе. Репозитории могут содержать как официальную версию дистрибутива, обновляемую его разработчиками по мере выхода новых версий программ, так и локальные наработки.
Таким образом, в распоряжении APT находятся две базы данных: одна описывает установленные в системе пакеты, вторая - внешний репозитарий. APT отслеживает целостность установленной системы и, в случае обнаружения противоречий в зависимостях пакетов, руководствуется сведениями о внешнем репозитарии для разрешения конфликтов и поиска корректного пути их устранения.
APT изначально проектировался как не зависящий от конкретного метода работы с установленными в системе пакетами, что позволило разработчикам из бразильской компании Connectiva реализовать в нём поддержку менеджера пакетов RPM . Таким образом, пользователи основанных на RPM дистрибутивов (Fedora Core , Mandriva , ASP Linux , ALT Linux) получили возможность использовать этот мощный инструмент.
Графический интерфейс для APT
Графической оболочкой для APT является synaptic , основанный на мощной системе фильтрации пакетов. Это значительно упрощает интерфейс и вместе с тем предоставляет значительную гибкость при навигации по очень длинным спискам пакетов.
Использование APT
Система APT состоит из нескольких утилит. Главной и наиболее часто используемой является утилита управления пакетами apt-get , которая автоматически определяет зависимости между пакетами и строго следит за их соблюдением при выполнении любой из следующих операций: установка, удаление или обновление пакетов.
apt-get позволяет устанавливать в систему пакеты, требующие для своей работы другие, пока ещё не установленные. В этом случае он определяет, какие пакеты необходимо установить, и устанавливает их, пользуясь всеми доступными репозитариями. Для того, чтобы apt-get мог использовать тот или иной репозитарий, информацию о нем необходимо поместить в файл /etc/apt/sources.list и выполнить команду
~# apt-get update
Эту команду необходимо также выполнять каждый раз, когда вы собираетесь работать с репозитарием после длительного перерыва, так как при поиске пакетов APT должен руководствоваться базой данных, отражающей актуальное состояние репозитария. Такая база данных создаётся заново каждый раз, когда в репозитарии происходит изменение: добавление, удаление или переименование пакета. Для ускорения работы apt-get хранит локальную копию базы данных, которая через некоторое время может уже не соответствовать реальному состоянию репозитария.
В качестве источника пакетов можно использовать и компакт-диски дистрибутива, поскольку на каждом диске присутствует вся необходимая для APT информация о содержащихся на нём пакетах. Для этого необходимо использовать утилиту apt-cdrom с единственным параметром add . Операцию следует повторить для CD из набора. После этого в /etc/apt/sources.list появится запись о подключённом диске.
При отсутствии подключения к сети строки в /etc/apt/sources.list , где говорится о ресурсах, доступных по сети, следует закомментировать.
Поиск пакетов
При отсутствии точного названия пакета для его поиска можно воспользоваться утилитой apt-cache , позволяющей искать не только по имени пакета, но и по его описанию:
~$ apt-cache search wine wine-utils - Эмулятор Wine (Дополнительные программы) libwine-arts - arts support library for wine libwine-twain - twain support library for wine libwine-devel - Headers for libwine-devel libwine - Main library for wine wine - Среда для запуска программ Windows (сборка от Etersoft)
Для того, чтобы подробнее узнать о каждом из найденных пакетов и прочитать его описание, можно воспользоваться командой apt-cache show , которая покажет информацию о пакете из репозитария:
~$ apt-cache show wine-utils
Package: wine-utils
Section: Emulators
Installed Size: 8700
Maintainer: Vitaly Lipatov
Получение зависимостей пакета:
~$ apt-cache depends wine-utils
wine-utils-20040716-alt1
Требует: wine = 20040716-alt1
Требует:
Показывает зависимости не только на файлы, но и на результирующие пакеты, в состав которых входят эти файлы, что очень удобно для анализа возможных трудностей с установкой.
Установка или обновление пакета
Установка пакета с помощью APT выполняется командой:
~# apt-get install имя_пакета
Если результате операций с пакетами без использования APT целостность системы нарушится, то apt-get откажется выполнять операции установки, удаления или обновления. В такой ситуации следует повторить операцию, задав опцию -f , заставляющую apt-get исправить нарушенные зависимости (если это возможно), следя при этом за сообщениями, выдаваемыми apt-get , анализируя их и чётко следуя рекомендациям программы.
Переустановка пакета:
~# apt-get install имя_пакета --reinstall
Полезный режим позволяюший исправить ошибки администратора и сборщика пакета.
Если вы не уверены в том, что в результате выполнения операции система останется работоспособной, запустите apt-get с опцией -s .
В этом случае будет показан отчёт о выполнении операции обновления, но само обновление произведено не будет:
~# apt-get install -s имя_пакета
Удаление установленного пакета
Для удаления пакета используется команда
~# apt-get remove имя_пакета
Для сохранения целостности системы будут удалены и все пакеты, зависящие от удаляемого: если отсутствует необходимый для работы приложения компонент (например, библиотека), то само приложение становится бесполезным. В случае удаления пакета, относящегося к базовым компонентам системы, apt-get потребует дополнительного подтверждения производимой операции с целью предотвратить возможную случайную ошибку.
Обновление всех установленных пакетов
Для обновления всех установленных пакетов используется команда
~# apt-get upgrade
Она позволяет обновить только те пакеты, для которых в репозитариях, перечисленных в /etc/apt/sources.list , имеются новые версии; при этом из системы не будут удалены никакие другие пакеты.
Этот способ полезен при работе со стабильными пакетами приложений, относительно которых известно, что они при смене версии изменяются несущественно.
Изменения в именовании пакетов или изменения их зависимостей командой apt-get upgrade не обрабатываются. Такие ситуации разрешаются в режиме обновления в масштабе дистрибутива:
~# apt-get dist-upgrade
В случае обновления всего дистрибутива APT проведёт сравнение системы с репозитарием и удалит устаревшие пакеты, установит новые версии присутствующих в системе пакетов, а также отследит ситуации с переименованиями пакетов или изменения зависимостей между старыми и новыми версиями программ. Всё, что потребуется поставить (или удалить) дополнительно к уже имеющемуся в системе, будет указано в отчёте apt-get , которым APT предварит само обновление.
Настройка APT
APT позволяет взаимодействовать с репозитарием с помощью различных протоколов доступа. Наиболее популярными из них являются HTTP и FTP .
Работа с локальным репозитарием и удаленными подробно описана в разделе
Иногда возникают ситуации, когда нужно узнать какие пакеты установлены в системе. Это может понадобиться если вы хотите сделать резервную копию установленных пакетов, проверить их целостность, перенести все пакеты в другую систему и для решения многих других задач. В Debian для этого можно использовать несколько методов.
В сегодняшней статье мы рассмотрим как посмотреть список установленных пакетов Debian с помощью терминала, в интерфейсе curses, а также в графическом интерфейсе. Такие списки можно использовать не только для резервного копирования, но и для того, чтобы просто перебрать и удалить ненужные программы, тем самым очистив систему от мусора.
Самый первый способ посмотреть установленные пакеты Debian, это утилита dpkg. Она может применяться не только в Debian, а во всех, основанных на нем дистрибутивах:
dpkg --get-selections | grep -v deinstall
dpkg --get-selections | grep -v deinstall > mylist.txt
Можно также убрать всю лишнюю информацию и сохранить только имена пакетов:
dpkg -l | grep ^ii | awk "{ print $2}" > mylist.txt
Следующий способ решения этой задачи - использование утилиты dpkg-query. Она похожа на предыдущий вариант, но немного проще. Такая команда отобразит все установленные пакеты вместе с информацией о них:
Здесь тоже можно выбрать только имена пакетов с помощью опции -f:
dpkg-query -f "${binary:Package}\n" -W
Третий метод - это утилита apt, которой мы привыкли пользоваться для установки приложений, она имеет команду list:
apt list --installed
apt list --installed | grep python
Мы более подробно рассматривали apt в статье . Еще одна интересная возможность apt - посмотреть какие пакеты были установлены вручную. Для этого наберите:
apt-mark showmanual
И еще один вариант с использованием apt:
apt-cache pkgnames
Утилита для управления пакетами aptitude тоже позволяет вывести список установленных пакетов:
aptitude search "~i!~M"
Также aptitude может работать в режиме curses, что очень удобно:
Последний способ посмотреть список установленных пакетов - это файл /var/lib/apt/extended_states. Это база данных, в которой содержится установленные программы debian в таком формате:
Package: имя_пакета
Architecture: архитектура
Auto-Installed: 0_или_1
cat /var/lib/apt/extended_states
Восстановление списка установленных пакетов
Многие пользователи создают список пакетов не просто чтобы посмотреть, а для будущего восстановления. Если вы делали список с помощью dpkg, то его можно очень просто восстановить в системе с помощью аналогичной команды:
sudo dpkg --clear-selections
$ sudo dpkg --set-selections < mylist.txt
Все очень просто. Чтобы установить пакеты после добавления их в список используйте команду:
sudo apt dselect-upgrade
Если же у вас просто есть список имен пакетов, то восстанавливать его нужно немного по-другому. Просто передайте все эти имена команде apt для установки:
xargs < mylist.txt apt install -y
Выводы
В этой статье мы рассмотрели как посмотреть список установленных пакетов Debian. Это может быть очень полезно и выполняется достаточно просто. Надеюсь, эта информация была полезной для вас.
Долгое время меня глодало незнание того, как сделать некоторые элементарные вещи в дебиановских менеджерах пакетов, но, как часто бывает, спросить рядом было не у кого, а до написания куда-либо руки не доходили. И вот наконец вопросы вызрели и я написал свой вопрос в дебиановскую рассылку . Естественно оказалось что пропустил что-то очевидное, но и узнал много неочевидных полезностей, посему решил набросать шпаргалку, авось кому пригодится.
Краткая справка Debian администратора
Основное и общеизвестное
Получение информации о новых/обновлённых пакетахsudo aptitude update
Обновление
sudo aptitude safe-upgrade
Поиск пакета по именам пакетов
aptitude search key_word
Поиск пакета по точному названию
aptitude search "^name$"
Поиск по описанию
aptitude search "?description("key_word")"
Информация о пакете
aptitude show package_name
Установка
sudo aptitude install package_name
Удаление
sudo aptitude remove package_name
Полное удаление (вместе с конфигами)
sudo aptitude purge package_name
Очистить кэш загруженных пакетов (освободить место)
aptitude autoclean # удалятся только пакеты неактуальных версий aptitude clean # очистится весь кэш
Установка отдельно скачанного/созданного пакета (для создания пакета из сторонних исходников нужно использовать утилиту checkinstall с флагом -D)
sudo dpkg -i /path/to/package.deb
Для получения доп информации
man aptitude sudo aptitude install aptitude-doc-en
и смотрим документацию (/usr/share/doc/aptitude/html/en/index.html), кому быструю справку по поисковым шаблонам, тому сюда - /usr/share/doc/aptitude/html/en/ch02s04.html. Если лень ставить доку, то в сети она есть .
Вводная на Debian Wiki: wiki.debian.org/Aptitude
А теперь то что не очевидно или требует полного прочтения документации
1. Как после update посмотреть какие пакеты будут обновлены?aptitude search ?upgradable
также можно юзать (если поставить)
sudo daptup
но после его установки точно также будет себя вести и обычный update
2. Как узнать что изменилось в пакетах которые будут обновлены?
Можно пробовать
sudo aptitude changelog package_name
для каждого пакета.
Но лучше поставить apt-listchanges, тогда перед любой установкой обновлений будет показан список изменений, по умолчанию настройки не очень удобные, поэтому лучше перенастроить под себя, например, выбрать формат вывода (пока использую текст, при больших обновлениях наверно pager лучше), не слать писем, спрашивать подтверждения, выводить всю информацию. Для этого нужно запустить
sudo dpkg-reconfigure apt-listchanges
3. Что делать если обновление что-то поломало и нужно откатиться?
Отката нет, можно попробовать найти предыдущую версию пакета
sudo aptitude version package_name
и установить её
sudo aptitude install package_name=version
4. Как найти все пакеты установленные вручную?
есть вариант команды (aptitude search "~i!~M"), но к сожалению он не даёт желаемого результата, так что вопрос остаётся открытым, есть куча способов основанных на анализе логов
/var/log/aptitude (+ ротированные куски)
/var/log/installer/initial-status.gz
/var/log/dpkg.log (+ ротированные куски)
но простого и готового решения нет, да информация теоретически может быть потеряна при ротациях, нужно конфигурить
5. Как посмотреть список файлов в пакете?
если пакет установлен
dpkg -L package_name
для любых пакетов поставить apt-file и
apt-file list package_name
6. Как посмотреть какому пакету принадлежит файл?
dpkg -S file_name
7. Как удалить все пакеты, где есть key в названии пакета?
sudo aptitude purge ~ikey
8. Как удалить оставшиеся конфиги от удалённых пакетов?
sudo aptitude purge ~c
9. Как найти пакет пакет, в котором содержится файл lib.so:
apt-file search lib.so
10. Как сконвертировать rpm пакет в deb?
alien --to-deb /path/to/file.rpm
11. Как найти список установленных ядер?
dpkg --list linux-* | grep ii
12. Как установить пакет из testing или experimental?
На эту тему нужно писать отдельно (например так), но если кратко, то команды для этого есть
sudo aptitude -t testing package_name
или
sudo aptitude package_name/testing
13. Как удалить метапакет, но оставить одну из зависимостей?
придётся почитать документацию про ключ unmarkauto или глянуть сюда .
14. Как узнать что попало в файловую систему мимо системы управления пакетами?
Есть утилита cruft, хотя вопрос интерпретации результатов (файла report) пока открыт
sudo cruft -d / -r report --ignore /home --ignore /var --ignore /tmp
15. Какие есть дополнительные репозитории?
Debian - wiki.debian.org/UnofficialRepositories
Ubuntu - множество всяких
- Японские телефоны Новый японский смартфон
- Lenovo G500S: характеристики, основные особенности
- Определяем серию продукта видеокарт Nvidia Характеристики карты nvidia 9800 gt
- А конкуренты у смартфона есть
- Что такое расширение файла TRZ?
- Не работает динамик в "айфоне"
- В чем разница внешнего вида защитных стекол для смартфона?