\documentclass[russian,notitlepage,a4paper]{article}
\usepackage[koi8-r]{inputenc}
\usepackage{babel}


\textwidth=18cm
\oddsidemargin=-1.04cm
%\headheight=0cm
%\textheight=28cm
%\headsep=0cm
%\topmargin=-1.54cm
\newcommand{\href}[1]{\textit{#1}}
\author{Alexander~Bokovoy <ab@avilink.net> \\ ALT Linux Team}
\title{Использование усовершенствованного средства управления пакетами APT
для обеспечения целостности Linux Mandrake Russian Edition}

\begin{document}
\maketitle

\section{Введение}

Усовершенствованное средство управления программными пакетами APT (Advanced
Packaging Tool) первоначально было разработано для управления пакетами
в дистрибутиве Debian GNU/Linux. Основной целью, которая ставилась при
разработке APT, была замена системы выбора пакетов dselect в Debian
на более мощную, способную сочетать в себе простоту пользовательского
интерфейса с возможностью установки, обновления и повседневной работы с
установленными на машине программи без необходимости изучения
пользователем тонкостей используемой в дистрибутиве системы управления
пакетами, предоставлящими эти программы. Долгое время система APT была 
доступна только пользователям Debian GNU/Linux, поскольку поддерживала
только один тип системы управления пакетами --- применяемый в Debian
GNU/Linux менеджер dpkg. Dpkg несовместим с используемой в Linux Mandrake
Russian Edition системой управления пакетами RPM и эта несовместимость
заключается не только в выборе разных форматов, используемыми
для хранения данных о пакетах программ, она значительно глубже.

Однако APT изначально проектировалась как система, не зависящая от 
метода управления установленными в системе пакетами, и эта особенность
позволила разработчикам из бразильской компании Conectiva (\href{www.conectiva.com.br})
реализовать в ней поддержку менеджера пакетов RPM. Таким образом,
пользователи дистрибутивов, базирующихся на RPM (Linux Mandrake Russian
Edition входит в их число), также получили возможность использовать
эту мощную систему.

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

\section{Использование APT}

Система APT состоит из нескольких утилит. Главной и наиболее часто используемой
является \textbf{apt-get}, утилита управления пакетами. \textit{Apt-get} автоматически
определяет зависимости между пакетами и строго следит за их соблюдением при
выполнении любой из следующих операций: установка, удаление или обновление пакетов.

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

\textit{Apt-get} позволяет устанавливать в систему пакеты, которые требуют
наличия других, пока еще не установленных, пакетов программ. В этом случае
\textit{apt-get} вычисляет, какие из неустановленных пакетов требуются,
и доустанавливает их, пользуясь всеми известными ему репозитариями. Для
того, чтобы \textit{apt-get} мог использовать тот или иной репозитарий,
инфромацию о нем необходимо поместить в файл \textit{/etc/apt/sources.list}
и выполнить команду \verb~apt-get update~. Эту команду необходимо также
выполнять каждый раз, когда Вы собираетесь работать с репозитарием после
длительного перерыва, так как APT при поиске пакетов руководствуется
базой данных о репозитарии, отражающей его состояние. Эта база данных
создается заново каждый раз, когда в репозитарии происходит изменение
(добавление, удаление или переименование пакета). Для ускорения работы
\textit{apt-get} хранит локальную копию базы данных и потому она через
некоторое время вполне может не соответствовать реальному состоянию
репозитария. 

После установки дистрибутива
Linux Mandrake Russian Edition в \textit{/etc/apt/sources.list} указаны два источника: 

\begin{itemize}
\item [--] репозитарий пакетов программ, скомпилированных для 
процессоров Intel\texttrademark{} i80586 и старше;
\item [--] репозитарий исходных архивов, использовавшихся для 
сборки пакетов в первом репозитарии.
\end{itemize}

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

\textbf{Чтобы установить пакет программ} посредством APT, необходимо воспользоваться командой\\
\verb~apt-get install имя-пакета~. Иногда в результате операций с пакетами минуя APT,
целостность системы нарушается и \textit{apt-get} отказывается выполнять операции
установки, удаления или обновления. В этом случае необходимо повторить операцию,
задав опцию \verb~-f~, заставляющую \textit{apt-get} исправить нарушенные зависимости,
если это возможно. В этом случае необходимо внимательно следить за сообщениями,
которые выдает \textit{apt-get}, и четко им следовать.

Команда \verb~apt-get install имя-пакета~ также используется и для обновления
уже установленного пакета или группы пакетов. В этом случае \textit{apt-get}
дополнительно проверяет, обновилась ли версия пакета в репозитарии по сравнению 
с установленным в системе. Если Вы не знаете точное название пакета, для
его поиска можно воспользоваться утилитой \textit{apt-cache}, описанной ниже.

\textbf{Внимание: } \textit{apt-get} всегда спрашивает подтверждение выполнения
операции установки и обновления, за исключением случая, когда реально требуется
установить в систему (или обновить) только один пакет. Если Вы не уверены в том,
что результате выполнения операции система останется работоспособной, запустите
\textit{apt-get} с опцией \verb~-S~, которая покажет отчет выполения операции обновления
но реально обновление производено не будет.

\textbf{Для удаления пакета} используется команда \verb~apt-get remove имя-пакета~. Все пакеты,
которые зависят от удаляемого, также будут удалены, чтобы не нарушать целостность
системы (если отсутствует необходимая для работы приложения библиотека, то само
приложение становится бесполезным). В случае удаления пакета, который относится
к базовым компонентам системы, \textit{apt-get} потребует дополнительного 
подтверждения производимой операции с целью предотвратить возможную случайную ошибку.

Для обновления всех установленных пакетов используется команда \verb~apt-get upgrade~.
Она позволяет обновить те и только те установленные пакеты, для которых имеются
новые версии в репозитариях, перечисленных в \textit{/etc/apt/sources.list}. При
этом из системы не будут удалены никакие другие пакеты. Этот способ полезен
при работе со стабильными пакетами приложений, относительно которых известно,
что они не изменяются существенно при смене версии.

Однако иногда происходят изменения в способах наименования пакетов или изменение
их зависимостей. Такие ситуации не обрабатываются командой \verb~apt-get upgrade~,
в результате чего происходит нарушение целостности системы: появляются неудовлетворенные
зависимости. Например, переименование пакета MySQL-shared, содержащего динамически
загружаемые библиотеки для работы с СУБД MySQL, в libMySQL (отражая общую тенденцию
к наименованию библиотек в дистрибутиве) не приводит к тому, что установка обновленной
версии libMySQL требует удаление старой версии MySQL-shared. Для разрешения этой
проблемы существует режим обновления в масштабе дистрибутива --- \verb~apt-get dist-upgrade~.

В случае обновления всего дистрибутива APT проведет сравнение Вашей системы
с репозитарием и удалит устаревшие пакеты, установит новые версии присутствующих
в системе пакетов, а также отследит ситуации с переименованиями пакетов или
изменения зависимостей между старыми и новыми версиями программ. Все, что потребуется
поставить (или удалить) дополнительно к уже имеющемуся в вашей системе,
будет указано в отчете \textit{apt-get}, которым APT предварит само обновление.

Более подробное описание команд программы \textit{apt-get} можно найти в справочной
системе дистрибутива на страницах \verb~apt-get(8)~ и \verb~apt.conf(5)~.

Для поиска в репозитарии нужного пакета можно воспользоваться утилитой \textit{apt-cache},
которая позволяет искать не только по имени пакета, но и по его описанию.

Команда \verb~apt-cache search подстрока~ позволяет найти все пакеты, в именах или
описании которых присутствует указанная подстрока. Например:

\begin{verbatim}
 $ apt-cache search emacs

xemacs-el - The .el source files for XEmacs.
emacs - Things needed to run the GNU Emacs text editor.
auctex - Enhanced LaTeX mode for GNU Emacs
emacs-nox - The Emacs text editor without support for the X Window System.
xemacs-info - Information files for XEmacs.
php-readline - readline module for PHP4
ed - The GNU line editor.
fetchmail - Full-featured POP/IMAP mail retrieval daemon
readline - A library for editing typed in command lines.
xemacs-mule - The XEmacs binary with mule (MUlti-Lingual Emacs) support.
gpm - A mouse server for the Linux console.
jed - A fast, compact editor based on the slang screen library.
sylpheed - a GTK+ based, lightweight, and fast e-mail client
xemacs-extras - Files that XEmacs has in common with GNU Emacs.
emacs-leim - Emacs Lisp code for input methods for internationalization.
emacs-X11 - The Emacs text editor for the X Window System.
librep - An embeddable LISP environment
TeXmacs - A wysiwyg mathematical text editor
xemacs - An X Window System based version of GNU Emacs.
swi-prolog - Prolog interpreter and compiler.
emacs-el - The sources for Lisp programs included with Emacs.

\end{document}
