\chapter{Инструкции за работа с \textit{dpkg}, \textit{dselect} и \textit{apt}}

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

\textit{Debian} е една от многото дистрибуции на софтуер, които
използват ядрото Linux.  Нейната пакетна система е призната за една от
най-развитите.  Разбирането на пакетната система е важно, защото чрез
нея се осъществява цялото управление на софтуера.

\subsection{Пакети и техните състояния}

Пакетите имат различни състояния.  В началото на всичко стои
\textit{първоначалният сорс} (\textit{upstream source}).  Това е
сорсът на програмата, който не зависи не само от дистрибуцията, но и
от операционната система.  Задачата на дистрибуцията е да събере много
такива първоначални сорсове в едно подредено цяло.  За целта често се
налагат леки промени в този първоначален сорс, които се наричат
\textit{кръпки} (\textit{patches}, в \texttt{.diff} файлове).  За да
се образува пакет, освен кръпки е нужно и да се напишат правилата, по
които да се образува дебиански пакет.  И така, първоначалният сорс,
кръпките и дебианските правила образуват дебиански \textit{сорс
  пакет}, който се състои от следните файлове:

\begin{itemize}
\item \texttt{\textit{пакет}\_\textit{версия}.dsc} е текстово описание
  на сорс пакета, заедно с \texttt{MD5} сумите на следващите два файла 
  и \texttt{PGP} подписа на този който го е създал 
\item \texttt{\textit{пакет}\_\textit{версия}.diff.gz} е кръпка, която
  включва дебианските правила (този файл може понякога да липсва)
\item \texttt{\textit{пакет}\_\textit{версия}.orig.tar.gz} е
  първоначалният сорс
\end{itemize}

От един сорс пакет могат да се образуват един или повече пакета,
готови за инсталиране (\textit{binary packages}), които имат вида
\texttt{\textit{пакет}\_\textit{версия}\_\textit{архитектура}.deb} и
затова се наричат също \textit{deb-файлове}. Какво представлява формата 
на тези файлове ще намерите в \man{deb}{5} и на \hlink{http://www.dpkg.org}.

След инсталирането си пакетът минава в ново състояние и става
\textit{инсталиран пакет}.  От един файл-архив, какъвто е всъщност
deb-файла, той се преобразува в множество файлове, записани на точно
определени места във файловата система.  Процесът на инсталиране не е
само разархивиране на deb-файла.  Той включва конфигуриране, както и
интегриране в цялата система.  Пример за интегриране е стартирането на
сървъра \deb{apache} веднага след инсталирането му.  При премахване на
пакет файловете му се изтриват, но без конфигурационните файлове, и
пакетът се премахва като част от системата --- например \deb{apache}
се спира.  Ако пакетът е само разархивиран, но не е конфигуриран или
не е интегриран, той се нарича \textit{полуинсталиран пакет},
отразявайки половинчатото му състояние.  Счита се, че ако има
полуинсталиран пакет в системата, то цялата пакетна система не е в
нормално състояние и трябва да се поправи.

Точно тези процеси около инсталирането и премахването на пакети са
част от всепризнатата гъвкавост и удобство на пакетната система на
Debian.  Това обаче съвсем не е всичко, защото \deb{apt} добавя още
удобства.

И така, пътят на пакетите протича така:

\begin{itemize}
\item първоначален сорс
\item сорс пакет
\item пакет, deb-файл
\item полуинсталиран пакет
\item инсталиран пакет  
\end{itemize}

\subsection{\textit{dpkg}: A medium-level package manager}

Пакетът в Debian, чрез който се управляват другите пакети, се нарича
\deb{dpkg}.  С командата \man{dpkg}{8} могат да се инсталират
конкретни deb-файлове, както и да се премахват инсталирани пакети.
Конфигурирането и интегрирането също се включват в тези процеси.
Освен тези процеси \deb{dpkg} се грижи и за точното състояние на
инсталираните и полуинсталираните пакети.

Обикновено няма да се налага да използвате \man{dpkg}{8}, освен ако не
поправяте състоянието на пакетната система или не сте изтеглили
deb-файл от Интернет.
