Основы управления пакетами в Ubuntu и Debian

Вступление

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

Для дистрибутивов на основе RHEL распространены формат упаковки RPM и такие инструменты упаковки, как + rpm + и + yum +. Другое основное семейство, используемое Debian, Ubuntu и соответствующими дистрибутивами, использует формат упаковки + .deb + и такие инструменты, как + apt + и + dpkg +. Эта последняя группа - семья, которую мы будем обсуждать в этом руководстве.

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

Как использовать это руководство

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

Каждый общий инструмент мы обсудим отдельно в обзоре инструментов управления пакетами Debian, но большая часть этого руководства будет организована по функциям, а не по инструментам. Эта организация имеет больше смысла, так как это руководство концептуализировано как функциональный справочник.

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

  • Прочтите раздел «Обзор инструментов управления пакетами Debian» ниже, если вы не знакомы с семейством инструментов управления пакетами Debian. Это даст вам приблизительный обзор того, что является целью каждого инструмента и как они связаны.

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

  • Используйте меню «Содержание» в левой части этой страницы (при большой ширине страницы) или функцию поиска вашего браузера, чтобы найти нужные разделы.

  • Скопируйте и вставьте приведенные примеры командной строки, заменив значения в «++» собственными значениями.

Обзор инструментов управления пакетами Debian

Экосистема Debian / Ubuntu использует несколько различных инструментов управления пакетами для управления программным обеспечением в системе.

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

Кв-получить

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

Пакет + apt + в целом функционирует путем извлечения информации из удаленных репозиториев в кэш, поддерживаемый в локальной системе. Команда + apt-get используется для обновления локального кэша. Он также используется для изменения состояния пакета, то есть для установки или удаления пакета из системы.

В общем, + apt-get + будет использоваться для обновления локального кэша и внесения изменений в работающую систему.

Кв-кэш

Другим важным членом пакета + apt является` + apt-cache`. Эта утилита использует локальный кеш для запроса информации о доступных пакетах и ​​их свойствах.

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

уместность

Команда + aptitude + сочетает в себе большую часть функциональности вышеупомянутых двух команд. Он обладает преимуществом работы в качестве инструмента командной строки, сочетая в себе функциональность двух вышеперечисленных инструментов, а также может работать с текстовым интерфейсным меню ncurses.

При работе из командной строки большинство команд точно отображают возможности + apt-get + и + apt-cache +. Из-за этого совпадения мы не будем подробно обсуждать «+ aptitude » в этом руководстве. Вы можете часто использовать ` aptitude` вместо` + apt-get` или + apt-cache, если предпочитаете этот инструмент.

Dpkg

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

В отличие от команд + apt - * +, + dpkg + не может автоматически разрешать зависимости. Его главной особенностью является возможность легко работать с пакетами + .deb + напрямую, а также возможность разбирать пакет и узнавать больше о его структуре. Хотя он может собирать некоторую информацию о пакетах, установленных в системе, его основное назначение - на уровне отдельных пакетов.

Tasksel

Программа + tasksel + - это инструмент другого типа для управления программным обеспечением. Вместо управления отдельными пакетами или даже приложениями + tasksel + фокусируется на группировании программного обеспечения, необходимого для выполнения определенных «задач».

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

другие

Есть много других доступных инструментов управления пакетами, которые предоставляют различные функциональные возможности или представляют информацию по-разному. Мы будем только касаться их по мере необходимости, но они могут быть очень полезны в определенных ситуациях.

Некоторыми инструментами, попадающими в эту категорию, являются + apt-file +, + dselect + и + gdebi +.

Обновление кеша пакета и системы

Инструменты управления пакетами Debian и Ubuntu предоставляют отличный способ обновлять список доступных пакетов в вашей системе. Он также предоставляет простые методы обновления пакетов, которые вы сейчас установили на своем сервере.

Обновление локального кэша пакетов

Удаленные репозитории, на которые ваши упаковочные инструменты полагаются для информации о пакете, постоянно обновляются. Однако большинство инструментов управления пакетами работают с локальным кешем этой информации.

Обычно хорошей идеей является обновление локального кэша пакетов каждый сеанс перед выполнением других команд пакета. Это гарантирует, что вы работаете с самой последней информацией о доступном программном обеспечении. Более того, некоторые команды установки не будут работать, если вы работаете с устаревшей информацией о пакете.

Чтобы обновить локальный кеш, используйте команду + apt-get + с подкомандой + update +:

sudo apt-get update

После этого будет обновлен список доступных пакетов в репозиториях, которые вы отслеживаете.

Обновление пакетов без удаления пакетов

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

Команда + apt + различает две разные процедуры обновления. Первая процедура обновления (описанная в этом разделе) может использоваться для обновления любых компонентов, которые не требуют удаления компонентов. Чтобы узнать, как обновить и разрешить + apt + для удаления и замены компонентов по мере необходимости, см. Раздел ниже.

Это может быть очень важно, если вы не хотите удалять какие-либо из установленных пакетов ни при каких обстоятельствах. Однако некоторые обновления включают замену системных компонентов или удаление конфликтующих файлов. Эта процедура будет игнорировать любые обновления, которые требуют удаления пакета:

sudo apt-get upgrade

После выполнения этого действия будет применено любое обновление, которое не включает удаление компонентов.

Обновите пакеты и удалите при необходимости

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

Команда + apt + различает две разные процедуры обновления. Первая процедура обновления игнорирует любые обновления, которые требуют удаления пакета. Это описано в разделе выше.

Вторая процедура (описанная в этом разделе) обновит все пакеты, даже те, которые требуют удаления пакетов. Это часто необходимо, поскольку меняются зависимости для пакетов.

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

sudo apt-get dist-upgrade

Это обновит все пакеты в вашей системе. Это более полная процедура обновления, чем последнее обновление.

Загрузка и установка пакетов

Одной из основных функций инструментов управления пакетами является облегчение загрузки и установки пакета в систему.

Поиск пакетов

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

Большинство команд + apt + работают главным образом в кеше информации о пакете, которая поддерживается на локальной машине. Это позволяет быстрее выполнять и меньше сетевого трафика.

Поиск пакетов - это одна операция, предназначенная для кэша пакетов для получения информации. Подкоманда + apt-cache search + - это инструмент, необходимый для поиска доступных пакетов. Имейте в виду, что вы должны убедиться, что ваш локальный кеш обновлен с помощью + sudo apt-get update + перед поиском пакетов:

apt-cache search

Поскольку эта процедура только запрашивает информацию, она не требует привилегий + sudo +. Любой предварительно выполненный поиск будет проверять имена пакетов, а также полное описание пакетов.

Например, если вы ищете + htop +, вы увидите такие результаты:

apt-cache search htop
aha - ANSI color to HTML converter
htop - interactive processes viewer
libauthen-oath-perl - Perl module for OATH One Time Passwords

Как видите, у нас есть пакет с именем + htop +, но мы также видим две другие программы, каждая из которых упоминает + htop + в поле полного описания пакета (описание рядом с выводом является лишь кратким описанием). резюме).

Установить пакет из репо

Чтобы установить пакет из репозиториев, а также все необходимые зависимости, мы можем использовать команду + apt-get + с подкомандой + install +.

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

sudo apt-get install

Вы можете установить несколько пакетов одновременно, разделенных пробелом:

sudo apt-get install

Если запрашиваемый вами пакет требует дополнительных зависимостей, они будут распечатаны на стандартном уровне, и вас попросят подтвердить процедуру. Это будет выглядеть примерно так:

sudo apt-get install apache2
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
 apache2-data
Suggested packages:
 apache2-doc apache2-suexec-pristine apache2-suexec-custom
 apache2-utils
The following NEW packages will be installed:
 apache2 apache2-data
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 236 kB of archives.
After this operation, 1,163 kB of additional disk space will be used.
Do you want to continue [Y/n]?

Как вы можете видеть, даже если нашей целью установки был пакет + apache2 +, пакет + apache2-data + необходим в качестве зависимости. В этом случае вы можете продолжить, нажав ENTER или «y», или прервать операцию, набрав «n».

Установить конкретную версию пакета из репозитория

Если вам нужно установить конкретную версию пакета, вы можете указать версию, на которую вы хотите установить таргетинг, знаком равенства, например:

sudo apt-get install =

Версия в этом случае должна соответствовать одному из номеров версий пакета, доступных в хранилище. Это означает использование схемы управления версиями вашего дистрибутива. Вы можете найти доступные версии, набрав + apt-cache policy +.

Переконфигурировать пакеты

Многие пакеты включают в себя сценарии настройки после установки, которые запускаются после завершения установки. Они часто включают в себя запросы администратора для выбора конфигурации.

Если вам необходимо выполнить эти (и дополнительные) шаги по настройке позднее, вы можете использовать команду + dpkg-reconfigure +. Эта команда просматривает пакет, переданный ему, и повторно запускает все команды постконфигурации, включенные в спецификацию пакета:

sudo dpkg-reconfigure

Это позволит вам получить доступ к тем же (и часто более) подсказкам, которые вы запускали при установке.

Выполните пробный запуск действий пакета

Много раз вам захочется увидеть побочные эффекты процедуры, прежде чем фактически не выполнять команду. К счастью, + apt + позволяет вам добавить флаг + -s + для «имитации» процедуры.

Например, чтобы увидеть, что будет сделано, если вы решите установить пакет, вы можете набрать:

apt-get install -s

Это позволит вам увидеть все зависимости и изменения в вашей системе, которые произойдут, если вы уберете флаг + -s +. Одним из преимуществ этого является то, что вы можете видеть результаты процесса, который обычно требует привилегий root, без использования + sudo +.

Например, если мы хотим оценить, что будет установлено с помощью пакета + apache2 +, мы можем набрать:

apt-get install -s apache2
NOTE: This is only a simulation!
     apt-get needs root privileges for real execution.
     Keep also in mind that locking is deactivated,
     so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
 apache2-data
Suggested packages:
 apache2-doc apache2-suexec-pristine apache2-suexec-custom
 apache2-utils
The following NEW packages will be installed:
 apache2 apache2-data
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Inst apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all])
Inst apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64])
Conf apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all])
Conf apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64])

Мы получаем всю информацию о пакетах и ​​версиях, которые будут установлены, без необходимости завершения самого процесса.

Это также работает с другими процедурами, такими как обновление системы:

apt-get -s dist-upgrade

Не запрашивать одобрение с действиями пакета

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

Чтобы обойти эти обновления и по умолчанию принять любое из этих приглашений, вы можете передать флаг + -y + при выполнении этих операций:

sudo apt-get install -y

Это установит пакет и любые зависимости без дальнейших запросов от пользователя. Это также может быть использовано для процедур обновления:

sudo apt-get dist-upgrade -y

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

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

Команда + apt-get может попытаться разобраться в этой ситуации, передав ей команду` + -f + `.

sudo apt-get install -f

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

Скачать пакет из репо

Существуют основные случаи, когда может быть полезно загрузить пакет из репозиториев без его фактической установки. Вы можете сделать это с помощью подкоманды + download` + apt-get`.

Поскольку это только загрузка файла и не влияет на реальную систему, никаких привилегий + sudo + не требуется:

apt-get download

Это позволит загрузить указанные пакеты в текущий каталог.

Скачать исходный код пакета из репозитория

Хотя + apt + в основном работает с пакетами + .deb +, вы также можете получить исходные файлы для пакетов, если ваши исходные списки + apt + сконфигурированы с этой информацией.

Чтобы загрузить исходный код пакета, у вас должна быть соответствующая строка + deb-src + в вашем файле + source.list + для + apt +. Вы можете узнать, как это сделать, в разделе о добавлении репозиториев apt.

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

sudo apt-get source

Это позволит загрузить файлы пакета в текущий каталог. Обычно это состоит из каталога пакета, файла описания + dsc + и сжатого и сжатого пакета:

ls -F
sublime-text-2.0.2/                 sublime-text_2.0.2-1~webupd8~3.tar.gz
sublime-text_2.0.2-1~webupd8~3.dsc

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

Установите пакет .deb

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

Для этого мы используем инструмент под названием + dpkg +. Инструмент + dpkg + в основном используется для работы с отдельными пакетами. Он не пытается выполнить установку из репозитория, а вместо этого ищет пакеты + .deb + в текущем каталоге или предоставленный путь:

sudo dpkg --install .deb

Важно отметить, что инструмент + dpkg + не реализует никакой обработки зависимостей. Это означает, что при наличии неудовлетворенных зависимостей установка завершится неудачно. К счастью, он помечает необходимые зависимости, поэтому, если все зависимости доступны в репозиториях, вы можете легко их удовлетворить, набрав после этого:

sudo apt-get install -f

Это установит любые неудовлетворенные зависимости, включая помеченные + dpkg +.

Установите программное обеспечение «Задачи» с помощью Tasksel

Можно установить большие наборы связанного программного обеспечения с помощью «задач». Задачи - это просто группы пакетов, которые устанавливают определенную среду при совместной установке. Примеры задач включают серверы LAMP, среды рабочего стола и серверы приложений.

В некоторых системах может не быть установлен пакет + tasksel + по умолчанию. Чтобы получить его, вы можете набрать:

sudo apt-get update
sudo apt-get install tasksel

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

sudo tasksel

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

Вы также можете распечатать список доступных задач и их состояние установки, набрав:

tasksel --list-task

После этого вы можете установить задачи из командной строки, набрав:

sudo tasksel install

Удаление пакетов и удаление файлов

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

Удалить пакет

Чтобы удалить установленный пакет, подкоманду + remove + можно передать + apt-get +. Это удалит большинство файлов, которые пакет установил в систему, за одним заметным исключением.

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

Для завершения этой операции вам просто нужно указать имя пакета, который вы хотите удалить:

sudo apt-get remove

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

Удалить пакет и все связанные файлы конфигурации

Если вы хотите удалить пакет и все связанные файлы из вашей системы, включая файлы конфигурации, вы можете использовать подкоманду + purge + в + apt-get +.

В отличие от команды + remove +, упомянутой выше, команда + purge + удаляет все. Это полезно, если вы не хотите сохранять файлы конфигурации или у вас возникли проблемы и вы хотите начать с чистого листа.

Имейте в виду, что после удаления ваших файлов конфигурации вы не сможете их вернуть:

sudo apt-get purge

Теперь, если вам когда-нибудь понадобится переустановить этот пакет, будет использоваться конфигурация по умолчанию.

Удалите все автоматические зависимости, которые больше не нужны

При удалении пакетов из вашей системы с помощью + apt-get remove + или + apt-get purge + цель пакета будет удалена. Однако любые зависимости, которые были автоматически установлены для выполнения требований установки, останутся позади.

Чтобы автоматически удалять любые пакеты, которые были установлены как зависимости, которые больше не требуются никакими пакетами, вы можете использовать команду + autoremove +:

sudo apt-get autoremove

Если вы хотите удалить все связанные файлы конфигурации из удаляемых зависимостей, вам нужно добавить опцию + - purge + в команду + autoremove +. Это также очистит файлы конфигурации, так же как и команда + purge + для целевого удаления:

sudo apt-get --purge autoremove

Очистить устаревшие загруженные файлы пакета

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

Инструмент + apt-get + может удалить любые файлы пакетов в локальной системе, которые связаны с пакетами, которые больше не доступны из репозиториев, с помощью команды + autoclean +.

Это освободит место на вашем сервере и позволит обновлять кэш в вашей локальной системе без лишних усилий, связанных с хранением бесполезной информации.

sudo apt-get autoclean

Получение информации о пакетах

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

Показать информацию о пакете

Чтобы показать подробную информацию о пакете в репозиториях вашего дистрибутива, вы можете использовать подкоманду + show + в + apt-cache +. Целью этой команды является имя пакета в репозитории:

apt-cache show

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

Чтобы показать дополнительную информацию о каждом из кандидатов, включая полный список обратных зависимостей (список пакетов, которые зависят от запрашиваемого пакета), используйте вместо этого команду + showpkg +. Это будет включать в себя много информации об отношениях этого пакета с другими пакетами:

apt-cache showpkg

Показать информацию о пакете .deb

Чтобы показать подробности о файле + .deb +, вы можете использовать флаг + - info + с помощью команды + dpkg +. Целью этой команды должен быть путь к файлу + .deb +:

dpkg --info .deb

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

Показать зависимости и обратные зависимости

Чтобы конкретно перечислить зависимости (пакеты, на которые опирается этот пакет) и обратные зависимости (пакеты, которые опираются на этот пакет), вы можете использовать утилиту + apt-cache +.

Для обычной информации о зависимостях вы можете использовать подкоманду + disabled +:

apt-cache depends

Это покажет информацию о каждом пакете, который указан как жесткая зависимость, предложение, рекомендация или конфликт.

Если вам нужно выяснить, какие пакеты зависят от определенного пакета, вы можете передать этот пакет подкоманде + rdepends +:

apt-cache rdepends

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

Часто в репозиториях имеется несколько версий пакета с одним пакетом по умолчанию. Чтобы увидеть доступные версии пакета, вы можете использовать подкоманду + policy + для + apt-cache +:

apt-cache policy

Это покажет вам, какая версия установлена ​​(если есть), кандидат, который будет установлен по умолчанию, если вы не указали версию с помощью команды установки, и таблицу версий пакетов, в которой указан вес, указывающий приоритет каждой версии.

Это можно использовать для определения, какая версия будет установлена ​​и какие альтернативы доступны. Поскольку здесь также перечислены репозитории, в которых находится каждая версия, это можно использовать для определения того, заменяют ли какие-либо дополнительные репозитории или PPA-пакеты пакеты из репозиториев по умолчанию.

Показать установленные пакеты с помощью dpkg -l

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

Первый метод включает использование команды + dpkg или` + dpkg-query` с + -l +. Вывод обеих этих команд идентичен. Без аргументов, он дает список всех установленных или частично установленных пакетов в системе. Вывод будет выглядеть так:

dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                        Version                                 Architecture Description
+++-===========================================-=======================================-============-=====================================================================================================================
ii  account-plugin-generic-oauth                0.10bzr13.03.26-0ubuntu1.1              amd64        GNOME Control Center account plugin for single signon - generic OAuth
ii  accountsservice                             0.6.34-0ubuntu6                         amd64        query and manipulate user account information
ii  acl                                         2.2.52-1                                amd64        Access control list utilities
ii  acpi-support                                0.142                                   amd64        scripts for handling many ACPI events
ii  acpid                                       1:2.0.18-1ubuntu2                       amd64        Advanced Configuration and Power Interface event daemon
. . .

Вывод продолжается для каждого пакета в системе. В верхней части вывода вы можете увидеть значения первых трех символов в каждой строке. Первый символ указывает на желаемое состояние пакета. Может быть:

  • * u *: неизвестно

  • * я *: установлено

  • * r *: удалено

  • * p *: очищено

  • * h *: версия удерживается

Второй символ указывает на фактическое состояние упаковки, известное системе упаковки. Это могут быть:

  • * n *: не установлено

  • * я *: установлено

  • * c *: Конфигурационные файлы присутствуют, но приложение удалено.

  • * u *: распаковано. Файлы распакованы, но еще не настроены.

  • * f *: пакет установлен наполовину, что означает, что в процессе установки произошел сбой, который остановил операцию.

  • * w *: пакет ожидает триггера из отдельного пакета

  • * p *: пакет был запущен другим пакетом.

Третий символ, который будет просто пробелом для большинства пакетов, имеет только одну потенциальную возможность:

  • * r *: это означает, что требуется переустановка. Обычно это означает, что пакет сломан и находится в нерабочем состоянии.

Остальные столбцы содержат имя пакета, версию, архитектуру и описание.

Показать состояния установки отфильтрованных пакетов

Если вы добавите шаблон поиска после шаблона + -l +, + dpkg + выведет список всех пакетов (независимо от того, установлены они или нет), которые содержат этот шаблон. Например, мы можем искать библиотеки обработки YAML здесь:

dpkg -l libyaml*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name            Version      Architecture Description
+++-===============-============-============-===================================
ii  libyaml-0-2:amd 0.1.4-2ubunt amd64        Fast YAML 1.1 parser and emitter li
ii  libyaml-dev:amd 0.1.4-2ubunt amd64        Fast YAML 1.1 parser and emitter li
un  libyaml-perl    <none>                    (no description available)
un  libyaml-syck-pe <none>                    (no description available)
ii  libyaml-tiny-pe 1.51-2       all          Perl module for reading and writing

Как видно из первого столбца, третий и четвертый результат не установлены. Это дает вам каждый пакет, который соответствует шаблону, а также его текущее и желаемое состояния.

Показать установленные пакеты с помощью dpkg –get-selections

Альтернативный способ визуализации пакетов, установленных в вашей системе, - с помощью флага + - get-selections + с помощью + dpkg +.

Это предоставляет список всех пакетов, установленных или удаленных, но не очищенных:

dpkg --get-selections

Чтобы различать эти два состояния, вы можете использовать + awk + для фильтрации по состоянию. Чтобы увидеть только установленные пакеты, введите:

dpkg --get-selections | awk '$2 ~ /^install/'

Чтобы получить список удаленных пакетов, для которых не были очищены файлы конфигурации, вы можете вместо этого набрать:

dpkg --get-selections | awk '$2 !~ /^install/'

Поиск установленных пакетов

Чтобы найти в базе установленных пакетов конкретный пакет, вы можете добавить строку фильтра пакетов после опции + - get-selections +. Это может использовать подстановочные знаки, чтобы соответствовать. Снова, это покажет все пакеты, которые установлены или у которых все еще есть файлы конфигурации в системе:

dpkg --get-selections libz*

Вы можете еще раз отфильтровать, используя выражения + awk + из последнего раздела.

Файлы списка, установленные пакетом

Чтобы узнать, за какие файлы отвечает пакет, вы можете использовать флаг + -L + с командой + dpkg +:

dpkg -L

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

Поиск того, какой пакет устанавливается в местоположение

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

Это распечатает пакет, который установил рассматриваемый файл:

dpkg -S

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

Найти, какой пакет предоставляет файл без его установки

Используя + dpkg +, легко узнать, какому пакету принадлежит файл, используя опцию + -S +. Однако в некоторых случаях вам может понадобиться узнать, какой пакет предоставляет файл или команду, даже если у вас не установлен соответствующий пакет.

Для этого вам нужно установить утилиту под названием + apt-file. Это поддерживает свою собственную базу данных информации, которая включает путь установки каждого файла, управляемого пакетом в базе данных.

Установите утилиту, набрав:

sudo apt-get update
sudo apt-get install apt-file

Теперь обновите базу данных инструмента и найдите файл, набрав:

sudo apt-file update
sudo apt-file search

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

Перенос списков пакетов между системами

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

Экспорт списка пакетов

Если вам нужно скопировать набор пакетов, установленных в одной системе, в другую, вам сначала нужно будет экспортировать список пакетов.

Вы можете экспортировать список установленных пакетов в файл в формате, необходимом для последующего их импорта, передав по выводу + dpkg --get-selections +:

dpkg --get-selections > ~/packagelist.txt

Этот список затем можно скопировать на второй компьютер и импортировать.

Вы также можете сделать резервную копию списков источников и списка доверенных ключей. Вы можете создать резервную копию своих источников, создав каталог с необходимыми файлами и скопировав их поверх:

mkdir ~/sources
cp -R /etc/apt/sources.list* ~/sources

Для резервного копирования доверенных ключей введите:

apt-key exportall > ~/trusted_keys.txt

Теперь вы можете перенести файл + packagelist.txt +, каталог + source и файл` + trusted keys.txt` на другой компьютер для импорта.

Импортировать список пакетов

Если вы создали список пакетов, используя + dpkg --get-selections +, как показано выше, вы также можете импортировать пакеты на другой компьютер, используя команду + dpkg +.

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

sudo apt-key add ~/trusted_keys.txt
sudo cp -R ~sources/* /etc/apt/

Затем очистите состояние всех несущественных пакетов с нового компьютера. Это гарантирует, что вы применяете изменения на чистом листе. Это должно быть сделано с правами root или + sudo +:

sudo dpkg --clear-selections

Это пометит все несущественные пакеты для деинсталляции. Мы должны обновить локальный список пакетов, чтобы в нашей установке были записи для всего программного обеспечения, которое мы хотим установить. Фактическая процедура установки и обновления будет выполняться с помощью инструмента + dselect +.

Мы должны убедиться, что инструмент + dselect + установлен. Этот инструмент поддерживает свою собственную базу данных, поэтому нам также необходимо обновить ее, прежде чем мы сможем продолжить:

sudo apt-get update
sudo apt-get install dselect
sudo dselect update

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

sudo dpkg --set-selections < packagelist.txt

Это устанавливает состояние пакета, которое мы хотим. Чтобы применить изменения, мы выполним команду + select-upgrade of, которая является подкомандой` + apt-get`:

sudo apt-get dselect-upgrade

Это позволит загрузить и установить все необходимые пакеты. Также будут удалены все пакеты, помеченные для отмены выбора. В конце ваш список пакетов должен соответствовать списку предыдущего компьютера, хотя файлы конфигурации все равно нужно будет скопировать или изменить.

Добавление репозиториев и PPA

Хотя набор репозиториев по умолчанию, предоставляемый большинством дистрибутивов, содержит достаточно пакетов для большинства пользователей, бывают случаи, когда дополнительные источники могут оказаться полезными. В этом разделе мы обсудим, как настроить ваши инструменты для упаковки, чтобы обратиться к дополнительным источникам.

Добавить PPA

Альтернативой традиционным репозиториям являются PPA или личные архивы пакетов. На момент написания этой статьи PPA доступны только для систем Ubuntu. Обычно PPA имеют меньшую область действия, чем репозитории, и содержат целевые наборы приложений, поддерживаемых владельцем PPA.

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

Чтобы добавить PPA, вы можете использовать команду + add-apt-repository. Цель должна включать метку + ppa: +, за которой следует имя владельца PPA на Launchpad, косая черта и имя PPA:

sudo add-apt-repository ppa:/

Вас могут попросить принять ключ упаковщика. После этого PPA будет добавлен в вашу систему, что позволит вам устанавливать пакеты с помощью обычных команд + apt +. Перед поиском или установкой пакетов обязательно обновите локальный кэш информацией о вашем новом PPA:

sudo apt-get update

Добавить репозитории

Чтобы добавить дополнительные репозитории в вашу систему Ubuntu или Debian, вы можете использовать два разных подхода.

Во-первых, редактировать списки источников напрямую. Вы можете отредактировать файл + / etc / apt / sources.list или поместить новый список в каталог` + / etc / apt / sources.list.d`. Если вы выберете этот последний путь, имя файла, которое вы создаете, должно заканчиваться на + .list +:

sudo nano /etc/apt/sources.list.d/.list

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

Различные части спецификации репозитория:

  • * deb * или * deb-src *: определяет тип хранилища. Обычные репозитории помечены как + deb +, тогда как исходные репозитории начинаются с + deb-src +.

  • * url *: основной URL-адрес хранилища. Это должно быть место, где можно найти хранилище.

  • * кодовое название релиза или комплект *: обычно это кодовое имя выпуска вашего дистрибутива, но это может быть любое имя, используемое для идентификации определенного набора пакетов, созданных для вашей версии дистрибутива.

  • * имена компонентов *: метки для выбора пакетов, которые вы хотите иметь в наличии. Это часто является различием, предоставляемым сопровождающим репозитория, чтобы выразить что-то о надежности или лицензионных ограничениях программного обеспечения, которое оно содержит.

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

Второй способ сделать это - использовать команду + add-apt-repository. Обычно это включено по умолчанию в Ubuntu, а для Debian его можно установить с пакетом + software-properties-common +:

sudo apt-get update
sudo apt-get install software-properties-common

После этого вы можете указать строки, которые хотите добавить в команду + add-apt-repository. Они должны быть в том же формате, который вы использовали бы для ручного добавления:

sudo add-apt-repository 'deb   '

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

sudo apt-get update

Заключение

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

Related