Apt get y значение команды. Управление пакетами в Ubuntu и Debian при помощи Apt-Get и Apt-Cache. Основное и общеизвестное

Ubuntu 16.04 уже вышла и предоставляет своим пользователям много очень интересных изменений, таких как поддержка файловой системы BSD - ZFS, поддержка новой технологии установки пакетов - snap и много других. Но одна вещь, о которой вы, скорее всего, еще не слышали, потому что такие мелочи часто теряются - это apt.

Что такое apt? Это новый менеджер пакетов для Ubuntu, готовый взять на себя работу apt-get. Он разрабатывался, чтобы быть более дружелюбным, эффективным и безопасным. Так что же задумали в Canonical представляя новый пакетный менеджер? Есть ли на самом деле отличия apt vs apt-get? Это мы и будем выяснять в сегодняшней статье.

Apt был реализован, чтобы упростить работу с менеджером пакетов и объединить несколько команд в одну. Функционал apt-get был переработан, таким образом, чтобы правильно работать в apt.

Несмотря на то что эти новые команды созданы, чтобы работать аналогично apt-get, но они основаны на новом коде, для взаимодействия с пакетами.

Основной причиной введения apt, является сама суть Ubuntu - простота и удобство использования. Хотят ли люди признавать или нет, но apt-get - устаревший инструмент и практичность его применения очень сомнительна. Apt был разработан с нуля, чтобы быть еще эффективнее, он предназначен быть приятным для новых пользователей.

Apt vs Apt-get. В чем различия?

Apt или apt-get. Так в чем же разница между этими двумя решениями? Для начала вам больше не нужно использовать apt-get autoremove, чтобы очистить кеш пакетов. Также вам не нужно вводить apt-cache search для поиска пакетов.

Эти команды были заменены на apt search и apt remove. Главное отличие apt - в том, что оно заменяет все команды apt-get, apt-cache и т д. Вся функциональность объедениена в одной утилите.

Хотя это не единственное отличие, от apt-get. Здесь улучшены прогресс бары установки программного обеспечения. Также поддерживаются некоторые дополнения, которые делают утилиту умнее предыдущей. Например, при обновлении источников программного обеспечения с помощью apt-get нет простого способа посмотреть список пакетов доступных к обновлению. Вы можете просто выполнить sudo apt-get update, а затем:

sudo apt list-upgradable

Конечно, мелочи, но приятно. Также были добавлены новые, современные цвета вывода, и в целом установка пакетов проходит быстрее. Canonical не спешит отказываться от apt-get, но они сделают это позитивным изменением.

Новые команды Apt

Вот список поддерживаемых apt команд, взятый прямо из вывода --help. Эти команды очень похожи на реализацию apt-get и apt-cache, но более упорядочены и сгруппированы.

Основные команды:

  • list - список пакетов
  • search - поиск пакетов по имени
  • show - показать подробную информацию о пакете
  • update - обновить списки доступных пакетов
  • install - установить пакет
  • remove - удалить пакет
  • upgrade - установить доступные новые версии пакетов
  • full-upgrade - полное обновление системы
  • edit-sources - редактировать файл источников программного обеспечения

Более подробную информацию вы найдете, выполнив man apt в терминале. Хранящаяся там информация поможет вам досконально изучить новую утилиту.

Выводы

Apt-get проверенная и надежная часть менеджера программного обеспечения. Этот инструмент используется на протяжении большого времени и поставляется по умолчанию во многих релизах Ubuntu и Debian. Мы всегда его использовали когда нужно было обновить что-то, обновить программное обеспечение или даже просто очистить систему от мусора.

Тем не менее она устаревает. Менеджер пакетов уже не отвечает всем потребностям пользователей, а поэтому он медленно заменяется на apt. Разработчики Ubuntu понимают, что им нужно обновить свой пакетный менеджер, сделать его более простым, элегантным и безопасным. Но пока в системе существуют обе утилиты и выбирать что использовать apt или apt-get предстоит вам. Будете ли вы использовать новый менеджер пакетов? Или уже используете?

Для автоматизации процесса установки, удаления и обновления пакетов программ в ряде дистрибутивов 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 Version: 20040716-alt1 Pre-Depends: rpmlib(PayloadFilesHavePrefix) (<= 4.0-1), rpmlib(CompressedFileNames) (<= 3.0.4-1) Depends: wine (= 20040716-alt1), libc.so.6, libc.so.6(GLIBC_2.0), libc.so.6(GLIBC_2.1), libc.so.6(GLIBC_2.1.3), libc.so.6(GLIBC_2.2), libc.so.6(GLIBC_2.3), libm.so.6, libm.so.6(GLIBC_2.0), libwine.so.1, libwine.so.1(WINE_1.0), perl-base, sh Provides: wine-utils (= 20040716-alt1) Architecture: i586 Size: 1575076 MD5Sum: Filename: wine-utils-20040716-alt1.i586.rpm Description: Эмулятор Wine (Дополнительные программы) This is an ALPHA release of Wine, the MS-Windows emulator. This is still a developers release and many applications may still not work. This package consists many of the utilities provided by wine, both for compiling source using winelib and for running wine. This package is not strictly necessary. Wine is often updated.

Получение зависимостей пакета:

~$ apt-cache depends wine-utils wine-utils-20040716-alt1 Требует: wine = 20040716-alt1 Требует: glibc-core-6:2.3.3.200406160000-alt1 Требует: glibc-core-6:2.3.3.200406160000-alt1 Требует: glibc-core-6:2.3.3.200406160000-alt1 Требует: glibc-core-6:2.3.3.200406160000-alt1 Требует: glibc-core-6:2.3.3.200406160000-alt1 Требует: glibc-core-6:2.3.3.200406160000-alt1 Требует: glibc-core-6:2.3.3.200406160000-alt1 Требует: libwine-20060610-alt0.M24.1 Требует: libwine-20060610-alt0.M24.1 Требует: perl-base Требует: sh

Показывает зависимости не только на файлы, но и на результирующие пакеты, в состав которых входят эти файлы, что очень удобно для анализа возможных трудностей с установкой.

Установка или обновление пакета

Установка пакета с помощью 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 .

Работа с локальным репозитарием и удаленными подробно описана в разделе

Утилита apt-get – производительная свободная консольная программа, используемая и работающая с библиотекой APT (Advanced Packaging Tool) для выполнения установки новых пакетов с ПО, удаления существующих, обновления установленых, а также для обновления всей операционной системы.

Консольная утилита apt-cache используется для поиска в кеше программных пакетов APT. Говоря простыми словами, этот инструмент, используется для поиска пакетов, сбора информации о пакетах и поиска пакетов, доступных для установки в операционных системах, основанных на Debian или Ubuntu.

Как можно получить список всех доступных пакетов?

Чтобы увидеть все доступные пакеты, выполните следующую команду:

Apt-cache pkgnames

Как можно найти имя пакета и его описание.

Чтобы найти название пакета и его описание перед установкой, используйте флаг «search». Использование “search” c apt-cache отобразит список подходящих пакетов с кратким описанием. Например, вы хотите найти описание пакета vsftpd: чтобы сделать это, команда должна быть вот такой:

Apt-cache search vsftpd

Чтобы найти и перечислить все пакеты, имя которых начинается с vsftpd , вы можете использовать следующую команду:

Apt-cache pkgnames vsftpd

Как я могу просмотреть информацию о пакете?

Например, если вы хотите ознакомиться с информацией о пакете, с его кратким описанием, отображающим номер версии, контрольные суммы, размер, размер после установки, категории и так далее, вы можете использовать подкоманду «show», как показано ниже:

Apt-cache show netcat

Как можно проверить зависимости какого-либо пакета?

Чтобы проверить зависимости конкретного пакета, вы можете использовать подкоманду showpkg , чтобы узнать, установлены эти зависимости или нет. Например, используйте команду showpkg вместе с названием пакета.

Apt-cache showpkg vsftpd

Как можно просмотреть статистику кэша?

Подкоманда stats отобразит полную статистику о кеше, например, полное число пакетов, найденное в кеше. Используйте такую команду:

Apt-cache stats

Как обновить список пакетов в системе?

Команда update используется для синхронизации и обновления индексных файлов пакетов. Синхронизация происходит с источниками, указанными в файле /etc/apt/sources.list . Эту команду можно использовать, например, чтобы не упускать важные обновления пакетов.

Sudo apt-get update

Как обновить пакеты в системе?

Команда upgrade используется для обновления всего установленного на данный момент софта в вашйе системе. Иногда может получиться так, что обновление установить нельзя из-за какого-либо другого пакета, который требует старую версию.

Sudo apt-get upgrade

Но если вы хотите обновиться вне зависимости от требований пакетов, используйте подкоманду dist-upgrade:

Sudo apt-get dist-upgrade

Как я могу установить или обновить какой-либо конкретный пакет?

Подкоманда install используется для установки или обновления какого-либо пакета.

Sudo apt-get install netcat

Как я могу установить несколько пакетов сразу?

Вы можете ввести названия нескольих пакетов, чтобы установить их одновременно. Например, чтобы установить пакеты nethogs и goaccess , вы можете выполнить следующую команду:

Sudo apt-get install nethogs goaccess

Как установить несколько пакетов по «маске» названия

С помощью регулярных вырежний вы можете добавлять несколько пакетов с помощью специальных символов. Например, можно использовать звездочку, чтобы установить все пакеты, которые содержат строку «name» в названии:

Sudo apt-get install *name*

Как установить пакеты без обновления.

Использование флага –no-upgrade предотвратит обновление уже установленных пакетов.

Sudo apt-get install packageName --no-upgrade

Как только обновить определенные пакеты?

Флаг –only-upgrade не установит новые пакеты, а только обновит существующие.

Sudo apt-get install имя_пакета --only-upgrade

Как я могу установить определенную версию пакета?

Представим, что вам необходимо установить специфичную версию пакета, просто используйте знак равно вместе с именем пакета и припишите желаемую версию.

Sudo apt-get install vsftpd=2.3.5-3ubuntu1

Как удалить пакеты без удаления настроек?

Чтобы удалить программные пакеты без удаления их конфигурационных файлов (для дальнейшего их использования), используйте команду remove как показано.

Sudo apt-get remove vsftpd

Как полностью удалить пакеты?

Чтобы удалить пакет вместе с его файлами настроек, используете подкоманду purge , как показано ниже.

Sudo apt-get purge vsftpd

Или вы можете объединить обе команды, вот так:

Sudo apt-get remove --purge vsftpd

Как можно очистить место на диске?

Команда clean используется для освобождения дискового пространствва за счет удаления полученных.deb-файлов пакетов в вашем локальном репозитории.

Sudo apt-get clean

Как только загрузить исходный код пакета?

Чтобы только загрузить исходный код пакета, вы можете использовать опцию –download-only source с именем пакета, например:

Sudo apt-get --download-only source vsftpd

Как можно загрузить и распаковать пакет?

Чтобы загрузить и распаковать исходный код пакета в специальную директорию, выполните следующую команду:

Sudo apt-get source vsftpd

Как можно загрузить, распаковать и скомпилировать исходный код пакета?

Вы также можете загрузить, распаковать и скомпилировать исходный код пакета, используя опцию ‘–compile‘, как показано ниже:

Sudo apt-get --compile source goaccess

Как загрузить пакет без установки

Используя опцию «download», вы можете загрузить любой пакет, не устанавливая его. Например, следующая команда только загрузит пакет nethogs в текущую рабочую директорию.

Sudo apt-get download nethogs

Как можно просмотреть лог изменений (changelog) пакета?

Флаг changelog загружает лог изменений пакета и отображает версию пакета, если он установлен.

Sudo apt-get changelog vsftpd

Как можно исправить сломанные зависимости?

Команда «check» – инструмент для диагностики, он используется для обновления кеша пакетов и проверки на сломанные зависимости.

Sudo apt-get check

Как можно найти и собрать зависимости?

Команда build-dep ищет и устанавливает собранные зависимости нужного пакета. Если пакет отсутствует в локальном репозитории, вы получите ошибку.

Sudo apt-get build-dep netcat

Как можно автоматически очистить кеш Apt-Get?

Команда autoclean удаляет все.deb-файлы из /var/cache/apt/archives для освобождения свободного места на жестком диске.

Sudo apt-get autoclean

Как можно автоматически удалить ненужные пакеты?

Подкоманда autoremove используется для автоматического удаления пакетов, которые были установлены как зависимости других, но сейчас они больше не нужны. Например, следующая команда удалит установленный пакет вместе с его зависимостями.

Sudo apt-get autoremove vsftpd

Информация любезно предоставлена сайтом . Спасибо.

Долгое время меня глодало незнание того, как сделать некоторые элементарные вещи в дебиановских менеджерах пакетов, но, как часто бывает, спросить рядом было не у кого, а до написания куда-либо руки не доходили. И вот наконец вопросы вызрели и я написал свой вопрос в дебиановскую рассылку . Естественно оказалось что пропустил что-то очевидное, но и узнал много неочевидных полезностей, посему решил набросать шпаргалку, авось кому пригодится.

Краткая справка 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 - множество всяких

Понравилось? Лайкни нас на Facebook