Алексей Федорчук
В данном материале рассмотрены особенности утилиты 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 можно разделить на три группы, которые предназначены для:
- получения информации о пакетах;
- установки и удаления отдельных бинарных пакетов;
- общего обновления системы
- работы с пакетами исходных текстов.
Команды первой группы могут быть выполнены обычным пользователем, второй и третьей — требуют прав администратора. Однако для получения их утилита 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 и её клонах уже давно работает не вполне корректно.
Супер! Можно зачитаться!
(Моя система Росинка 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 ALexcostariha
> Моя система Росинка 13 (аналог Linux Mint 15)
релиз от мая 2013 года
> В моей системе этой утилиты нет
И не может быть — утилита apt в одноимённом пакете появилась 1 апреля 2014 года, отсюда и все дальнейшие расхождения.
> все эти “-p, -v, -i” и т.д., неполный.
http://alv.me/?p=7911 — полный список основных и дополнительных статусов
про check и build — учёл, напишу подробней при окончательной доводке книжки.
$ apt version pkgname — выводит версию установленного пакета, если пакет в системе не установлен — пустая строка.
2 Merlin07
спасибо
не допёр
Оно чем-то лучше aptitude?
2 Сергей Например, тем, что aptitude в убунтоидах путём не работает
а ещё в ней букв меньше
Спасибо!
Только недавно установил систему linux mint 17.1 -на первых порах трудно осваивать.
Но,благодаря Вам,что-то начинаю понимать…