1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-llthw-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ex14.md 20 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 03:02 8398775

Упражнение 14: Пакетное управление: Debian пакетный менеджер aptitude

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

Пакетный менеджер — это программа, которая позволяет устанавливать другие программы. Многие программы зависят от других программ, например, программы с графическим интерфейсом обычно требуют программу, которая знает, как рисовать эти окна. Пакетный менеджер знает об этих зависимостях, и когда вы просите его установить определённую программу, он установит все необходимые программы, которые нужны для работы запрошенной программы. Менеджер пакетов Debian называется aptitude.

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

Вот типичное описание процесса установки программы:

  1. Вы используете пакетный менеджер для поиска доступных программ.
  2. Вы запрашиваете у пакетного менеджера установку программы.
  3. Пакетный менеджер ищет все программы, необходимые для установки текущей программы, в своей базе данных.
  4. Он помечает их как установленные.
  5. Устанавливает все нужные программы, включая запрошенную вами.
  6. Скачивает все нужные программы.
  7. Извлекает файлы из пакетов в места на диске, определённые стандартом FHS.
  8. Для каждой программы запускает специальный скрипт установки, который позволяет ей выполнить начальные действия: создание каталогов, баз данных, конфигурационных файлов и т. д.
  9. Обновляет базу данных установленных программ, изменяя статус всех установленных программ на «установленные».
  10. Теперь вы можете сразу же использовать установленную программу.

Сейчас самое время узнать о расположении извлекаемых файлов. В Linux все файлы одного типа устанавливаются в одном и том же месте. Например, исполняемые файлы всех программ устанавливаются в /usr/bin, документация программ — в /usr/share/doc и так далее. Это может показаться немного запутанным, но это очень полезно. Стандарт FHS (Filesystem Hierarchy Standard) определяет, какие файлы где должны находиться, и вы можете посмотреть его, вызвав man 7 hier. Я покажу вам здесь сокращённую версию «Стандарт иерархии файловой системы» версии 2.2:

  • / — это корневой каталог. Здесь начинается всё дерево.
  • /bin — содержит исполняемые программы, необходимые при однопользовательском режиме или для обновления или исправления системы.
  • /boot — содержит статические файлы, используемые для загрузки. Этот каталог должен содержать только файлы, необходимые для процесса загрузки. Файлы конфигурации установки и программы должны быть помещены в /sbin и /etc.
  • /dev — специальные или «device» файлы, указывающие на физические устройства. См. mknod(1).
  • /etc — содержит файлы конфигурации для локальной машины.
  • /home — на машинах с пользовательскими домашними каталогами они обычно находятся здесь. Структура этого каталога зависит от решений локального администратора.
  • /lib — этот каталог должен содержать разделяемые библиотеки, необходимые для запуска системы и выполнения команд в корневой файловой системе.
  • /media — этот каталог содержит точки монтирования для съёмных носителей, таких как CD- и DVD-диски или USB-накопители.
  • /mnt — этот каталог является точкой монтирования временных файловых систем. В некоторых дистрибутивах /mnt содержит подкаталоги, используемые в качестве точек монтирования нескольких временных файловых систем.
  • /proc — это точка монтирования файловой системы proc, предоставляющей информацию о запущенных процессах и ядре. Более подробное описание этой псевдофайловой системы можно найти в proc(5).
  • /root — этот каталог обычно является домашним каталогом пользователя root (необязательно).
  • /sbin — аналогично /bin, этот каталог содержит команды, необходимые для запуска системы, но обычно не выполняемые обычными пользователями.
  • /srv — этот каталог содержит данные, предоставляемые системой, специфичные для сайта.
  • /tmp — этот каталог содержит временные файлы, которые могут быть удалены без уведомления, например, обычными задачами или при удалении во время загрузки системы.
  • /usr — этот каталог обычно монтируется из отдельного раздела. Он должен содержать только общие данные только для чтения, чтобы его могли монтировать различные машины, на которых работает Linux.
  • /usr/bin — это основной каталог для исполняемых программ. Большинство программ, выполняемых обычными пользователями, не требуют запуска или обслуживания системы, они не устанавливаются локально и должны быть размещены здесь.
  • /usr/local — это обычное расположение для локальных программ сайта.
  • /usr/share — этот каталог содержит подкаталоги с данными конкретных приложений, которые можно совместно использовать на разных архитектурах одной и той же операционной системы. Обычно здесь можно найти то, что раньше находилось в /usr/doc, /usr/lib или /usr/man.
  • /usr/share/doc — документация установленных программ.
  • /var — этот каталог содержит файлы, размер которых может изменяться, такие как файлы спула и журналы.
  • /var/log — другие журналы.
  • /var/spool — файлы спула (или очереди) различных программ.
  • /var/tmp — аналогично /tmp, этот каталог хранит временные файлы, продолжительность хранения которых неизвестна.

Это действительно долго, но вам не нужно запоминать это, man hier 7 всегда там. Сейчас вам нужно знать только /usr/bin/, /usr/share и /var/log.

Давайте ещё поговорим о пакетах и пакетном менеджере. Сначала повторим:

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

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

user1@vm1:~$ dpkg -l | head | less -S
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                Description
+++-=====================-====================-========================================================
ii  acpi                  1.5-2                displays information on ACPI devices
ii  acpi-support-base     0.137-5              scripts for handling base ACPI  events such as the power
ii  acpid                 1:2.0.7-1squeeze4    Advanced Configuration and Power Interface event daemon

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

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

  • u = неизвестно (неизвестное состояние)
  • i = установить. Выбрать этот пакет для установки.
  • r = выбрать этот пакет для удаления (то есть мы хотим удалить все файлы, кроме файлов конфигурации).
  • p = очистить выбор пакета для очистки (то есть мы хотим удалить всё из системы, даже файлы конфигурации).
  • h = пометить пакет как сохранённый, не обрабатываемый dpkg, если только не используется опция -force-hold.

Второй столбец. Состояние пакета, текущее состояние пакета:

  • n = не установлено. Данный пакет не установлен на вашей системе.
  • c = файлы конфигурации. На системе присутствует только файл конфигурации этого пакета.
  • H = полуустановлен. Установка пакета уже началась, но по какой-то причине не завершена.
  • U = распакован. Пакет был распакован, но не настроен.
  • F = полунастроен. Пакет был распакован и настройка началась, но по каким-то причинам не завершена.
  • W = ожидание триггера. Пакет ожидает обработки триггером другого пакета.
  • t = в процессе. Пакет находится в обработке.
  • i = установлен. Пакет распакован и настроен.

Третий столбец. Проблемы.

  • R = требуется восстановление. Помеченный как «требуется восстановление» пакет был повреждён и требует переустановки. Эти пакеты нельзя удалить, если не используется опция -force-remove-reinstreq.

Также вам не нужно это запоминать, просто запомните команду info dpkg, она покажет эту информацию. Сейчас не стоит беспокоиться о состоянии пакетов, просто помните, что состояние ii означает, что с этим пакетом всё в порядке. Хорошо, давайте установим программу под названием «midnight commander», это файловый менеджер, который позволяет наглядно просматривать каталоги системы и выполнять операции копирования, переименования или удаления файлов.

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

Как это сделать:

1: aptitude search mc | grep -i 'midnight commander'
2: sudo aptitude install mc
3: dpkg -L mc | grep '/usr/bin'
4: aptitude search mc | grep -i 'midnight commander'
5: mc
6: <F10><ENTER>
7: sudo aptitude remove mc

Что вы должны увидеть:

user1@vm1:~$ aptitude search mc | grep -i 'midnight commander'
p   mc                              - Midnight Commander - a powerful file manager
p   mc-dbg                          - Midnight Commander - a powerful file manager

user1@vm1:/home/user1# sudo aptitude install mc
The following NEW packages will be installed:
  libglib2.0-0 libglib2.0-data mc shared-mime-info
0 packages upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,957 kB/5,157 kB of archives. After unpacking 17.0 MB will be used.
Do you want to continue? [Y/n/?] y
Get:1 http://mirror.yandex.ru/debian/ squeeze/main libglib2.0-0 amd64 2.24.2-1 [1,122 kB]
Get:2 http://mirror.yandex.ru/debian/ squeeze/main libglib2.0-data all 2.24.2-1 [994 kB]
Get:3 http://mirror.yandex.ru/debian/ squeeze/main shared-mime-info amd64 0.71-4 [841 kB]
Fetched 2,957 kB in 0s (4,010 kB/s)
Selecting previously deselected package libglib2.0-0.
(Reading database ... 24220 files and directories currently installed.)
Unpacking libglib2.0-0 (from .../libglib2.0-0_2.24.2-1_amd64.deb) ...
Selecting previously deselected package libglib2.0-data.
Unpacking libglib2.0-data (from .../libglib2.0-data_2.24.2-1_all.deb) ...
Selecting previously deselected package mc.
Unpacking mc (from .../mc_3%3a4.7.0.9-1_amd64.deb) ...
Selecting previously deselected package shared-mime-info.
Unpacking shared-mime-info (from .../shared-mime-info_0.71-4_amd64.deb) ...
Processing triggers for man-db ...
Setting up libglib2.0-0 (2.24.2-1) ...
Setting up libglib2.0-data (2.24.2-1) ...
Setting up mc (3:4.7.0.9-1) ...
Setting up shared-mime-info (0.71-4) ...

user1@vm1:~$ aptitude search mc | grep -i 'midnight commander'
i   mc                              - Midnight Commander - a powerful file manager
p   mc-dbg                          - Midnight Commander - a powerful file manager

user1@vm1:~$ mc
  Left     File     Command     Options     Right
|<  ~ ---------------------.[^]>||<  ~ ---------------------.[^]>|
|'n  Name    | Size |Modify time||'n  Name    | Size |Modify time|
|/..         |P--DIR|un  6 21:49||/..         |P--DIR|un  6 21:49|
|/.aptitude  |  4096|un 25 18:34||/.aptitude  |  4096|un 25 18:34|
|/.mc        |  4096|un 25 18:41||/.mc        |  4096|un 25 18:41|
| .bash~story| 10149|un 21 12:01|| .bash~story| 10149|un 21 12:01|
| .bash~ogout|   220|un  6 21:48|| .bash~ogout|   220|un  6 21:48|
| .bashrc    |  3184|un 14 12:24|| .bashrc    |  3184|un 14 12:24|
| .lesshst   |   157|un 25 11:31|| .lesshst   |   157|un 25 11:31|
|----------------------------------------------------------------|
|UP--DIR                        --UP--DIR                        |
 ----------- 6367M/7508M (84%) -------------- 6367M/7508M (84%) -|
Hint: The homepage of GNU Midnight Commander: http://www.midnight-

user1@vm1:~$                                                   [^]
 1Help  2Menu  3View  4Edit  5Copy  6Re~ov 7Mkdir 8De~te 9Pu~Dn

user1@vm1:~$ sudo aptitude remove mc
The following packages will be REMOVED:
  libglib2.0-0 libglib2.0-data mc shared-mime-info
0 packages upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 17.0 MB will be freed.
Do you want to continue? [Y/n/?] y
(Reading database ... 24637 files and directories currently installed.)
Removing shared-mime-info ...
Removing mc ...
Removing libglib2.0-data ...
Removing libglib2.0-0 ...
Processing triggers for man-db ...

user1@vm1:~$
``` **Установка программного пакета `mc`.**

Поскольку это изменение системного уровня, для выполнения этой команды необходимо использовать суперпользователя, который имеет право записи во все каталоги системы. Также следует обратить внимание на то, как менеджер пакетов Debian `aptitude` автоматически устанавливает необходимые пакеты `libglib2.0-0`, `libglib2.0-data` и `shared-mime-info` для `mc`.
1. Покажите исполняемый файл установленного пакета. Как вы можете видеть, они находятся в `/usr/bin`.
1. Вызовите `mc`. 
1. Завершите работу `mc`.
1. Удалите `mc`. Обратите внимание, что автоматически установленные пакеты также будут удалены автоматически. Если после установки `mc` вы установите некоторые вещи, которые требуют этих пакетов, `aptitude` сохранит их.

## Дополнительное задание

Хорошо, здесь много информации. Но есть ещё:
1. Введите `aptiutde search emacs`. Выясните, что означает буква `v`.
1. Прочитайте или просмотрите [главу 2 «Управление пакетами Debian»](http://www.debian.org/doc/manuals/debian-reference/ch02.en.html) в руководстве Debian.

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-llthw-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-llthw-zh.git
oschina-mirror
wizardforcel-llthw-zh
wizardforcel-llthw-zh
master