Утилита apt. Реализация для Linux Mint

Алексей Федорчук

В данном материале рассмотрены особенности утилиты apt в реализации для дистрибутива Linux Mint и её отличия от семейства утилит, входящих в пакет apt, общий для всех deb based дистрибутивов.

Содержание

Введение

В процессе сочинения книги Linux Mint и его Cinnamon обнаружилось, что реализация утилиты apt для этого дистрибутива не документирована никак — не только на языке родных осин, но даже на мове Вильяма нашего, Шекспира. В связи с чем я и решил сочинить нечто вроде руководства.

Необходимость в таком материале, как мне кажется, ещё и в том, что многие начинающие пользователи Mint и особенно Linux вообще, судя по сайтам, блогам и форумам соответствующей тематики, даже не подозревают о существовании реализации apt для Mint и её отличиях от тёзки из одноимённого пакета. И потому механически применяют рецепты для чистой Ubuntu и её прямых клонов, на которые так богаты указанные ресурсы. Хотя использование apt для Mint делает их не нужными — функционал этой утилиты позволяет добиться той же цели быстрей и проще. По крайней мере, путём меньшего количества нажатий на клавиши.

Общее описание

Утилиту apt в реализации для Mint не следует путать ни с одноимённым пакетом, входящим в состав всех deb based дистрибутивов (в том числе и в Mint), ни с одноимённой же утилитой из этого пакета.

Утилита apt для Mint входит в состав пакета mintsystem, что определяется с помощью её же самой:

$ apt contains /usr/local/bin/apt
mintsystem: /usr/local/bin/apt

В отличие от стандартной утилиты apt, располагающейся в каталоге /usr/bin, apt для Mint находится в каталоге /usr/local/bin, что определяется такой командой:

$ which apt
/usr/local/bin/apt

При вводе в командной строке apt без указания пути вызывается именно она, что определяется значениями переменной PATH, определёнными в общесистемном конфиге /etc/login.defs:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Так что для запуска стандартной утилиты apt из одноимённого пакета для неё следует указывать полный путь, например

$ /usr/bin/apt list --installed

для вывода списка инсталлированных пакетов — это чуть ли не единственная функция стандартного инструментария пакета apt, отсутствующая в apt для Mint. Ибо последняя перекрывает почти все возможности утилит apt-get и apt-cache, большинство возможностей командного режима aptitude, а также выполняет некоторые функции низкоуровневой утилиты dpkg.

Применение

Утилита apt для Mint запускается одноимённой командой CLI с указанием внутренней команды, определяющей цель действия и, в большинстве случаев, аргумента (аргументов), в качестве которых выступает имя пакетов (или имена — их может быть сколько угодно):

$ apt command pkgname1 ... pkgname#

Некоторые часто используемые внутренние команды apt аргументов не требуют.

Полный список внутренних команд apt для Mint можно получить «голой» командой

$ apt

вывод которой выглядит следующим образом:

apt
Usage: apt command [options]
       apt help command [options]

Commands:
autoclean	- Erase old downloaded archive files
autoremove	- Remove automatically all unused packages
build     	- Build binary or source packages from sources
build-dep	- Configure build-dependencies for source packages
changelog	- View a package's changelog
check    	- Verify that there are no broken dependencies
clean    	- Erase downloaded archive files
contains  	- List packages containing a file
content   	- List files contained in a package
deb      	- Install a .deb package
depends  	- Show raw dependency information for a package
dist-upgrade	- Perform an upgrade, possibly installing and removing packages
download   	- Download the .deb file for a package
dselect-upgrade	- Follow dselect selections
held		- List all held packages
help     	- Show help for a command
hold		- Hold a package
install   	- Install/upgrade packages
policy   	- Show policy settings
purge    	- Remove packages and their configuration files
rdepends 	- Show reverse dependency information for a package
reinstall	- Download and (possibly) reinstall a currently installed package
remove   	- Remove packages
search   	- Search for a package by name and/or expression
show     	- Display detailed information about a package
source   	- Download source archives
sources   	- Edit /etc/apt/sources.list with nano
unhold		- Unhold a package
update   	- Download lists of new/upgradable packages
upgrade  	- Perform a safe upgrade
version  	- Show the installed version of a package
			This apt has Super Cow Powers

Здесь для начала следует сказать о внутренних командах version и help. Первая теоретически должны выводить номер текущей версии apt для Mint, но практически не выводит ничего — лишь пустую строку. Команда же help без аргументов выведет список внутренних команд, идентичный приведённому выше. При указании аргумента — любой из внутренних команд она выведет её эквиваленты для apt-cache, apt-get или dpkg. Например:

$ apt help search
"apt search" is equivalent to "aptitude search"
$ apt help install
"apt install" is equivalent to "sudo apt-get install"
$ apt help deb
"apt deb" is equivalent to "sudo dpkg -i"

Внутренние команды apt для Mint можно разделить на три группы, которые предназначены для:

  1. получения информации о пакетах;
  2. установки и удаления отдельных бинарных пакетов;
  3. общего обновления системы
  4. работы с пакетами исходных текстов.

Команды первой группы могут быть выполнены обычным пользователем, второй и третьей — требуют прав администратора. Однако для получения их утилита apt для Mint не нуждается в команде sudo, данной явным образом: она автоматически вызывается при попытке исполнения соответствующих внутренних команд. Например:

$ apt install geany
[sudo] password for alv:

Тем не менее, внутренние команды apt для Mint целесообразно рассмотреть по трём указанным группам.

Информация о пакетах

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

$ apt search geany

отыщет одноимённый пакет для установки этого текстового редактора (называемого, однако, «Небольшой и быстрой IDE») и все его плагины:

p   geany                           - Небольшая и быстрая IDE
v   geany-abi-69                    -
v   geany-api-216                   -
p   geany-common                    - Небольшая и быстрая IDE — общие файлы
p   geany-plugin-addons             - Различные дополнительные модули для Geany
p   geany-plugin-codenav            - Модуль навигации по коду для Geany
...
p   geany-plugin-xmlsnippets        - XMLSnippets plugin for Geany
p   geany-plugins                   - Набор плагинов для Geany
p   geany-plugins-common            - Набор плагинов для Geany (переводы)

Важное отличие от аналога — команды apt-cache search: apt search показывает основной пакета (i — установленный, p — не установленный или «чисто» удалённый, и так далее) и дополнительный (A — автоматически установленный, h — с фиксированной версией, и так далее) статусы пакетов.

Внутренняя команда held позволяет отсортировать пакеты с фиксированной версией, то есть те, которые не будут обновляться по команде apt upgrade (о ней буде сказано в следующем разделе).

Подробную информацию об отдельном пакете можно получить с помощью внутренней команды show. Например,

$ apt show geany

выведет следующее:

Пакет: geany
Состояние: не установлен
Версия: 1.23.1+dfsg-1
Приоритет: необязательный
Раздел: universe/devel
Сопровождающий: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Архитектура: amd64
Размер в распакованном виде: 2 671 k
Зависимости: libc6 (>= 2.15), libcairo2 (>= 1.6.0), libgcc1 (>= 1:4.1.1),
                        libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>=
                        2.35.9), libgtk2.0-0 (>= 2.22.0), libpango1.0-0 (>=
                        1.18.0), libstdc++6 (>= 4.1.1), geany-common (=
                        1.23.1+dfsg-1)
Пред-зависимости: multiarch-support
Предлагает: libvte9, doc-base
Конфликтует: geany
Повреждает: geany-plugins-common (< 0.21), geany-plugins-common (< 0.21)
Предоставляет: geany-abi-69, geany-api-216
Описание: Небольшая и быстрая IDE
 Geany — нетребовательная к ресурсам интегрированная среда разработки программ,
 маленькая и быстрая, с небольшим количеством зависимостей от других пакетов.
 использует только GTK2, поэтому для запуска Geany необходимы только
 runtime-библиотеки GTK2.

 The basic features of Geany are:
 * syntax highlighting
 * code completion
 * auto completion of constructs like if, for and while, XML and HTML
 * call tips
 * folding
 * many supported filetypes like C, Java, PHP, HTML, Python, Perl, Pascal
 * symbol lists
 * embedded terminal emulation
Сайт: http://www.geany.org

А сведения о смене версий пакета получаются с помощью внутренней команды changelog. Для Geany это выглядит так:

geany (1.23.1+dfsg-1) unstable; urgency=low

  * [3b1ced4] Imported Upstream version 1.23.1+dfsg
  * [b418909] Update debian-branch in gbp.conf

 — Chow Loong Jin <hyperair@debian.org>  Mon, 20 May 2013 00:18:56 +0800

geany (1.23+dfsg-2) unstable; urgency=low

  * Upload to unstable, fixes FTBFS (Closes: #707368)
  * [a472a80] Enable parallel builds
  * [17a6378] No-change bump of Standards-Version to 3.9.4
  * [ea78f31] Add README.source describing git branch structure

 — Chow Loong Jin <hyperair@debian.org>  Fri, 10 May 2013 15:27:35 +0800
...

И так далее.

Более подробные, нежели вывод команды show, сведения о зависимостях пакета даёт пара внутренних команд depends и rdepends. Первая выводит полный список пакетов, от которых зависит заданный в качестве её аргумента — жёстких, рекомендуемых, предлагаемых и конфликтующих:

$ apt depends geany
geany
  Зависит: libc6
  Зависит: libcairo2
  Зависит: libgcc1
  Зависит: libgdk-pixbuf2.0-0
  Зависит: libglib2.0-0
  Зависит: libgtk2.0-0
  Зависит: libpango1.0-0
  Зависит: libstdc++6
  Зависит: geany-common
  ПредЗависит: multiarch-support
    multiarch-support:i386
  Предлагает: libvte9
  Предлагает: doc-base
  Ломает: geany-plugins-common
  Ломает: <geany-plugins-common:i386>
  Конфликтует: geany:i386

Команда же rdepends решает обратную задачу — выводит список пакетов, зависящих от данного:

$ apt depends geany
geany
Reverse Depends:
  geany:i386
  geany-plugins-common
  geany-plugins
  geany-plugin-xmlsnippets
  geany-plugin-webhelper
  geany-plugin-vc
  geany-plugin-updatechecker
  geany-plugin-treebrowser
  geany-plugin-tableconvert
  geany-plugin-spellcheck
  geany-plugin-shiftcolumn
  geany-plugin-sendmail
  geany-plugin-scope
  geany-plugin-prj
  geany-plugin-prettyprinter
  geany-plugin-pg
  geany-plugin-numberedbookmarks
  geany-plugin-multiterm
  geany-plugin-miniscript
  geany-plugin-markdown
  geany-plugin-macro
  geany-plugin-lua
  geany-plugin-lipsum
  geany-plugin-latex
  geany-plugin-insertnum
  geany-plugin-gproject
  geany-plugin-geniuspaste
  geany-plugin-gendoc
  geany-plugin-extrasel
  geany-plugin-doc
  geany-plugin-devhelp
  geany-plugin-debugger
  geany-plugin-commander
  geany-plugin-codenav
  geany-plugin-addons
  geany-common
  geany-common
 |deb-gview

Все приведённые выше внутренние команды дают информацию как об установленных пакетах, так и о пакетах, доступных в подключённых репозиториях. А вот команды contains и content работают только для установленных пакетов. Первая позволяет определить, к какому пакету принадлежит данный файл — именно таким способом была определена выше принадлежность утитлиты apt:

$ apt contains /usr/local/bin/apt
mintsystem: /usr/local/bin/apt

А команда content выводит список всех файлов пакета с указанием их положения в файловой иерархии:

$ apt content mintsystem
/.
/etc
/etc/apt
/etc/apt/preferences.d
/etc/apt/preferences.d/official-extra-repositories.pref
/etc/bash_completion.d
/etc/bash_completion.d/apt-linux-mint
/etc/init.d
/etc/init.d/mintsystem
...
/usr/share/nemo
/usr/share/nemo/actions
/usr/share/nemo/actions/mint-md5sum.nemo_action

Наконец, последняя из «информационных» команд — policy. При указании в качестве аргумента имени установленного пакета она выводит такую о нём информацию:

$ apt policy mintsystem
mintsystem:
  Установлен: 7.9.7
  Кандидат:   7.9.7
  Таблица версий:
 *** 7.9.7 0
        700 http://linux-mint.froonix.org/ rebecca/main amd64 Packages
        100 /var/lib/dpkg/status

А для пакета не установленного она будет такой:

$ apt policy geany
geany:
  Установлен: (отсутствует)
  Кандидат:   1.23.1+dfsg-1
  Таблица версий:
     1.23.1+dfsg-1 0
        500 http://gd.tuwien.ac.at/opsys/linux/ubuntu/archive/ trusty/universe amd64 Packages

Где числе перед URL — приоритет репозитория, в который входит пакет, оно берётся из файлов каталога /etc/apt/preferences.d. Большее число соовтетствует более высокому приоритету.

Внутренняя команда policy была придумана для утилиты apt-cache дистрибутива Debian, где использовалась для управления приоритетами при совмещении в одной системе пакетов из его многочисленных веток — stable, testing, unstable, experimental. Не уверен, что она востребована в дистрибутиве Mint.

Работа с бинарными пакетами

Основное действие с найденными полезными пакетами — их установка. А основным инструментом установки является внутренняя команда install. В качестве аргументов она принимает имена пакетов — те самые, которые были найдены командой apt search и в полезности которых можно было убедиться командой apt show. Например, для установки чрезвычайно полезного текстового редактора Geany следует дать команду

$ apt install geany

которая сначала запросит пароль пользователя с административным типом аккаунта:

[sudo] password for alv:

А затем, после считывания локального списка пакетов и построения дерева зависимостей, сообщит о необходимости таковых, объёме скачиваемых пакетов и увеличении занятого дискового пространства после установки, запросив подтверждение серьёзности намерений:

Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  geany-common
НОВЫЕ пакеты, которые будут установлены:
  geany geany-common
обновлено 0, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 37 пакетов не обновлено.
Необходимо скачать 3 808 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 9 872 kB.
Хотите продолжить? [Д/н]

Согласие предполагается по умолчанию, так что тут достаточно нажать Enter. После чего начинается скачивание пакетов из содержащего их репозитория, распаковка и инкорпорация компонентов в файловую иерархию, а также регистрация в базе данных и включение, если требуется, исполняемого файла в главное меню (для Geany — в секцимю Прграммирование, так как эта программа позиционируется её авторами как IDE — Integrated Development Environment, то есть интегрированная среда разработки). Основной статус пакета geany изменится на «установленный»:

$ apt search geany | head -n 1
i   geany           - Небольшая и быстрая IDE

А пакет geany-common приобретёт ещё и статус автоматически установленного:

$ apt search geany-common
i A geany-common    - Небольшая и быстрая IDE — общие файлы

Если в системе уже был установлен данный пакет более старой версии — он будет обновлён. А вот переустановить пакет той же версии (например, если он был безнадёжно испорчен в ходе экспериментов) команда install откажется, сообщив, что

Уже установлена самая новая версия geany.
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 37 пакетов не обновлено.

Однако на этот предмет существует специальная команда reinstall, аргументом которой указывается установленный пакет, нуждающийся в исправлении.

Локально отдельные пакеты могут быть установлены с помощью внутренней команды deb, аргументом которой должно быть полное имя файла пакета, если нужно, с указанием пути. Например, команда

$ apt deb sublime-text_3065_amd64.deb

установит текстовый редактор Sublime — разумеется, предварительно файл этого пакета должен быть скачан.

Поскольку внутренняя команда deb — полный эквивалент конструкции sudo dpkg -i, она не занимается разрешением зависимостей, а только сообщает об их нарушении. Например, попытка установить в окружении Cinnamon файловый менджер Caja из среды MATE вызовет следующие сообщения:

$ apt deb caja_1.8.2-0+rebecca_amd64.deb
Выбор ранее не выбранного пакета caja.
(Чтение базы данных … на данный момент установлен 188621 файл и каталог.)
Preparing to unpack caja_1.8.2-0+rebecca_amd64.deb ...
Unpacking caja (1.8.2-0+rebecca) ...
dpkg: зависимости пакетов не позволяют настроить пакет caja:
 caja зависит от libcaja-extension1 (= 1.8.2-0+rebecca), однако:
  Пакет libcaja-extension1 не установлен.
 caja зависит от libmate-desktop-2-17, однако:
  Пакет libmate-desktop-2-17 не установлен.
 caja зависит от mate-desktop, однако:
  Пакет mate-desktop не установлен.
 caja зависит от caja-common (= 1.8.2-0+rebecca), однако:
  Пакет caja-common не установлен.

dpkg: error processing package caja (--install):
 проблемы зависимостей — оставляем не настроенным
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Processing triggers for mime-support (3.54ubuntu1.1) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu1) ...
Processing triggers for ubuntu-system-adjustments (2014.11.19) ...
При обработке следующих пакетов произошли ошибки:
 caja

В отличие от внутренней команды install, команда deb не только обновит пакет до более новой версии, но и переустановит его версию текущую.

Установленные пакеты иногда требуется и удалять. Этой цели в apt для Mint служать две внутренние команды — remove и purge, аргументами которых служат, очевидно, имена удаляемых пакетов. Первая удаляет файлы пакета, но сохраняет его общесистемные конфиги, вторая — удаляет также и их. Различие между ними отражается в основном статусе удалённого пакета — в первом случае его значение будет c, во втором — p, как и у пакетов, которые никогда не устанавливались.

И remove, и purge автоматически удаляют все заивсимые пакеты, список их выводится после ввода пользовательского пароля:

$ apt purge libreoffice-impress
[sudo] password for alv:
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Пакеты, которые будут УДАЛЕНЫ:
  libreoffice-impress* libreoffice-ogltrans*
  libreoffice-presentation-minimizer*
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 3 пакетов, и 5 пакетов не обновлено.
После данной операции, объём занятого дискового пространства уменьшится на 6 031 kB.
Хотите продолжить? [Д/н]

Список удаляемых пакетов нужно читать очень внимательно, чтобы случайно не удалить что-нибудь жизненно необходимое.

Пакеты, от которых зависит удаляемый, автоматически не удаляются ни remove, ни purge. В этом случае apt предлагает воспользоваться внутренней командой autoremove для очистки системы от «осиротелых» зависимостей:

$ apt purge geany
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Следующий пакет устанавливался автоматически и больше не требуется:
  geany-common
Для его удаления используйте «apt-get autoremove».
Пакеты, которые будут УДАЛЕНЫ:
  geany*
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 1 пакетов, и 5 пакетов не обновлено.
После данной операции, объём занятого дискового пространства уменьшится на 2 671 kB.
Хотите продолжить? [Д/н]

Разумеется, в нашем случае мы обращаемся не к команде apt-get, всё в той же утилите apt для Mint:

$ apt autoremove

Она не нуждается в аргументах и выполняет свою работу молча, не задавая вопросов. Перед её выполнением не вредно выполнить другую внутреннюю команду — check, проверяющую систему на предмет «сломаных» зависимостей.

Перед установкой пакетов из репозитория они предварительно скачиваются и помещаются в каталог /var/cache/apt/archives/. Со временем файлов пакетов накапливается много, а нужны они бывают только в исключительных случаях. Для избавления от них существуют в apt для Mint предусмотрены команды autoclean и clean. Первая удаляет из кеша только пакеты устаревших версий, сохраняя те, версии которых установлены в системе. Вторая же полностью очищает каталог /var/cache/apt/archives/.

Обновление системы

Сказанное выше касалось единичных пакетов или их серий — любая из перечисленных субкоманд принимает любое количество аргументов. Однако в утилите apt предусмотрены и внутренние команды для общего обновления пакетов, а также для тотального системы. Однако, прежде чем выполнить любую из них, необходимо провести обновление локального кеша пакетов, то есть получить списки новых и обновлённых пакетов. Делается это внутренней командой update:

$ apt update

Её же в обязательном порядке следует выполнять после каждого изменения в репозиториях — подключения новых или отключения имевшихся. Теоретически для редактирования списков репозиториев в apt для Mint предназначена команда sources. Однако практически она бесполезна, так как вызывает текстовый редактор по умолчанию (nano) для редактирования /etc/apt/sources.list. В нашем же дистрибутиве этот файл содержит только репозиторий локального оптического диска, а все реально подключённые репозитории описываются в файлах каталога /etc/apt/sources.list.d.

Для обновления всех, по возможности, пакетов установленной системы в apt для Mint существует внутренняя команда upgrade. Она выявит все пакеты, для которых в репозиториях доступны более свежие версии, выведет их список, объём для скачивания и прирост объёма занятого дискового пространства после выполнения процедуры, а также запросит подтвержения:

$ apt upgrade
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Расчёт обновлений…Готово
Пакеты, которые будут обновлены:
  gir1.2-gudev-1.0 libegl1-mesa libegl1-mesa-drivers libgbm1
…
обновлено 35, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 36,3 MБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 124 kB.
Хотите продолжить? [Д/н]

В ходе выполнения upgrade обновляются по возможности все пакеты, за исключением тех, для разрешения зависимостей которых обновление потребует доустановки новых пакетов или удаления существующих. Для таких пакетов текущие версии будут сохранены.

При использовании команды upgrade следует учитывать, что она обновляет в том числе и те компоненты, которые по умолчанию заблокированы для обновления через фирменный инструмент mintupdate — ядро и всё, что с ним связано, glibc, и так далее (пакеты уровней 4 и 5). Так что, прежде чем применять эту команду, следует либо всё взвесить и решиться на обновление указанных компонентов, либо явным образом зафиксировать их версии.

Фиксация версий пакетов может потребоваться и в ряде других случаев — например, при использовании более неподдерживаемых, но по прежнему необходимых пакетов, пакетов, пересобранных с собственными опциями, и ещё некоторых. Она выполняется внутренней командой hold с указанием имени фиксируемого пакета (пакетов). После чего пакет приобретает основной статус h и не затрагивается обновлениями. Обратная процедура, то есть снятие фиксации, если в ней пропала необходимость, выполняется внутренней командой unhold.

Для тотального обновления системы предназначена внутренняя команда dist-upgrade: она не только обновляет все пакеты, для которых обновления доступны, но может доустанавливать новые пакеты и удалять существующие, если это необходимо для разрешения зависимостей. Эта субкоманда применяется, например, при смене релиза дистрибутива — например, для перехода с Mint 17.0 Qiana на 17.1 Rebecca достаточно прописать одноимённые репозитории в файлах их описаний. И после этого дать команду

$ apt dist-upgrade

Есть и ещё несколько случаев, требующих применения dist-upgrade, а не просто upgrade — например, обновление версии рабочей среды (в данном случае Cinnamon) и некоторых других базовых компонентов системы.

При тотальном обновлении через dist-upgrade следует помнить о том, что выше было сказано про upgrade. И если в данном случае обновление базовых компонентов системы (ядра etc.) необходимо, то о фиксации самосборных и неподдерживаемых пакетов посредством команды hold нужно позаботиться заблаговременно.

В apt для Mint предусмотрена ещё одна внутренняя команда общего обновления — dselect-upgrade, эквивалентная конструкции sudo apt-get dselect-upgrade. Она выполняет обновление в соответствие со статусом пакетов, установленным по умолчанию для древней утилиты dselect — предшественницы aptitude. Поскольку самой этой утилиты в стандартной инсталляции Mint нет, изменить (и даже посмотреть эти умолчания затруднительно). Так что я бы воздержался от использования dselect-upgrade, тем более что ни малейшей необходимости обращаться к ней нет.

Работа с пакетами исходных текстов

Всё сказанное выше относилось к бинарным пакетам. Однако в утилите apt предусмотрены и средства для работы с пакетами исходных текстов. Так, с помощью субкоманды source можно просто скачать пакет, указанный в качестве её аргумента — разумеется, для этого должен быть подключён репозиторий исходников. Субкоманда build (эквивалент sudo dpkg-buildpackage) выполнит построение бинарного пакета (что требует соотвтетствующего инструментария в установленном виде). А субкоманда build-dep ограничится конфигурированием необходимых для этого зависимостей.

Заключение

Можно видеть, что и по части манипулирования пакетами возможности утилиты apt широки и многогранны. То есть это действительно универсальное средство управления пакетами, в обыденной жизни способное почти всегда заменить все прочие — от низкоуровневой dpkg (обращение к которой потребуется только в исключительных случаях) до графического front-end’а — Synaptic’а. Ибо не уступает последнему в наглядности вывода информации о пакетах, позволяя манипулировать ими проще и быстрее. Рядом с apt для Mint его тёзка из одномиённого пакета (общего для всех deb based дистрибутивов) Debian/Ubuntu выглядит ограниченным функционально, а традиционные apt-cache и apt-get — несколько усложнёнными синтаксически. Что же до aptitude, то она в этом контексте кажется вообще излишней: apt для Mint обеспечивает почти все функции её командного режима, а в интерактивном режиме эта программа в дистрибутивах семейства Ubuntu и её клонах уже давно работает не вполне корректно.

Утилита apt. Реализация для Linux Mint: 7 комментариев

  1. Супер! Можно зачитаться!

    (Моя система Росинка 13 (аналог Linux Mint 15))
    В свете потребности установки программ без использования репозиториев(закончилась поддержка) особый интерес вызвала та часть где пишется про установку из исходников, к сожалению для меня, очень короткую.
    Пару замечаний. Вы пишете:
    «Так что для запуска стандартной утилиты apt из одноимённого пакета для неё следует указывать полный путь, например
    $ /usr/bin/apt list —installed»
    В моей системе этой утилиты нет, так как на эту команду следует ответ:
    «$ /usr/bin/apt list —installed
    bash: /usr/bin/apt: Нет такого файла или каталога»

    Не сразу было понятно из описания, как запускать команду check или build . Пришлось помучаться пока сообразил, что нужно писать:
    «$ apt check или $ apt build»
    Этих опций команды кстати в моем apt не оказалось, пришлось скачать утилиту «check» на launchpad.net и только потом она заработала:
    «$ apt check
    Чтение списков пакетов… Готово
    Построение дерева зависимостей
    Чтение информации о состоянии… Готово»,-видимо все в порядке.
    Список состояний для ввывода команды
    «$ apt search»,- все эти «-p, -v, -i» и т.д., неполный.

  2. 2 ALexcostariha
    > Моя система Росинка 13 (аналог Linux Mint 15)
    релиз от мая 2013 года
    > В моей системе этой утилиты нет
    И не может быть — утилита apt в одноимённом пакете появилась 1 апреля 2014 года, отсюда и все дальнейшие расхождения.
    > все эти “-p, -v, -i” и т.д., неполный.
    http://alv.me/?p=7911 — полный список основных и дополнительных статусов
    про check и build — учёл, напишу подробней при окончательной доводке книжки.

  3. $ apt version pkgname — выводит версию установленного пакета, если пакет в системе не установлен — пустая строка.

  4. 2 Сергей Например, тем, что aptitude в убунтоидах путём не работает
    а ещё в ней букв меньше

  5. Спасибо!
    Только недавно установил систему linux mint 17.1 -на первых порах трудно осваивать.
    Но,благодаря Вам,что-то начинаю понимать…

Добавить комментарий