/[ddp]/manuals/trunk/apt-howto/apt-howto.ru.sgml
ViewVC logotype

Contents of /manuals/trunk/apt-howto/apt-howto.ru.sgml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6994 - (show annotations) (download) (as text)
Mon Nov 30 14:22:36 2009 UTC (3 years, 5 months ago) by osamu
File MIME type: text/x-sgml
File size: 59246 byte(s)
Mark Obsolete Documentation as such
1 <!doctype debiandoc system>
2 <debiandoc>
3
4 <book>
5
6 <title>APT HOWTO (Obsolete Documentation)</title>
7
8 <author>
9 <name>Gustavo Noronha Silva</name> <email>kov@debian.org</email>
10 </author>
11
12 <version>1.8.2 - Ноябрь 2002</version>
13
14 <abstract>
15 Этот документ должен помочь пользователю разобраться с приципами
16 работы с утилитой управления пакетами Debian, APT. Его цель - облегчить
17 жизнь новым пользователям Debian и помочь тем, кто хочет получить более
18 глубокие знания по администрированию системы. Документ был создан для
19 проекта Debian для того, чтобы улучшить поддержку пользователей этого
20 дистрибутива.
21 </abstract>
22
23 <copyright>
24 <copyrightsummary>
25 Copyright &copy; 2001, 2002, 2003, 2004 Gustavo Noronha Silva
26 </copyrightsummary>
27 <p>
28 This manual is free software; you may redistribute it and/or modify it
29 under the terms of the GNU General Public License as published by the
30 Free Software Foundation; either version 2, or (at your option) any
31 later version.
32 </p>
33
34 <p>
35 This is distributed in the hope that it will be useful, but without
36 any warranty; without even the implied warranty of merchantability or
37 fitness for a particular purpose. See the GNU General Public License
38 for more details.
39 </p>
40
41 <p>
42 A copy of the GNU General Public License is available as
43 /usr/share/common-licenses/GPL in the Debian GNU/Linux distribution or
44 on the World Wide Web at the GNU General Public Licence. You can also
45 obtain it by writing to the Free Software Foundation, Inc., 59 Temple
46 Place - Suite 330, Boston, MA 02111-1307, USA.
47 </p>
48 </copyright>
49
50 <toc>
51
52 <chapt>Введение
53 <p>
54 В начале был .tar.gz. Пользователи должны были сначала скомпилировать
55 программы, которые они хотели использовать на своих системах GNU/Linux.
56 Когда создавался Debian, возникла необходимость в системе управления
57 пакетами, установленными на машине. Этой системе было дано имя
58 <prgn>dpkg</prgn>. Этот известный `пакет' первым появился на GNU/Linux,
59 прежде чем Red Hat решил создать собственную систему `rpm'.
60 <p>
61 Затем перед создателями GNU/Linux быстро возникла новая дилемма. Им
62 понадобился способ для быстрого, практического и эффективного пути установки
63 пакетов, который должен автоматически обслуживать зависимости и сохранять
64 настрочные файлы при обновлении. Тут снова, Debian вышел вперед и
65 предложил миру APT, Advanced Packaging Tool, который затем был портирован
66 Conectiva`ой для использования с rpm и был адаптирован некоторыми другими
67 дистибутивами.
68 <p>
69 Это руководство не рассматривает apt-rpm, как называется порт APT от
70 Conectiva, но "заплаты" к документу по этой теме приветствуются.
71 <p>
72 Это руководство основано на следующем выпуске Debian, <tt>Sarge</tt>.
73 </chapt>
74
75 <chapt id="basico">Основная настройка
76
77 <sect id="sources.list">Файл /etc/apt/sources.list
78 <p>
79 Как часть своей работы, APT использует файл, который содержит список
80 'источников', из которых могут быть скачаны пакеты. Это файл
81 <tt>/etc/apt/sources.list</tt>.
82 <p>
83 Обычно этот файл имеет следующий формат:
84
85 <example>
86 deb http://host/debian distribution раздел1 раздел2 раздел3
87 deb-src http://host/debian distribution раздел1 раздел2 раздел3
88 </example>
89
90 Конечно, вышеприведенные записи являются просто примером и не должны
91 использоваться. Первое слово в каждой строке, либо <tt>deb</tt>, либо
92 <tt>deb-src</tt>, указывает тип архива: либо это двоичные (binary) пакеты
93 (<tt>deb</tt>), которые являются пред-компилированными пакетами, которые
94 готовы к использованию, либо пакеты с исходными текстами (<tt>deb-src</tt>),
95 которые являются первоначальными исходными текстами программ с управляющим
96 файлом Debian (<tt>.dsc</tt>) и файлом <tt>diff.gz</tt>, содержащим
97 изменения, необходимые для `дебианизации' программы.
98 <p>
99 Обычно в sources.list помещается следующее:
100 <example>
101 # See sources.list(5) for more information, especialy
102 # Remember that you can only use http, ftp or file URIs
103 # CDROMs are managed through the apt-cdrom tool.
104 deb http://http.us.debian.org/debian stable main contrib non-free
105 deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
106 deb http://security.debian.org stable/updates main contrib non-free
107
108 # Uncomment if you want the apt-get source function to work
109 #deb-src http://http.us.debian.org/debian stable main contrib non-free
110 #deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
111 </example>
112
113 Эти строки необходимы для базовой установки Debian. Первая строка <tt>deb</tt>
114 указывает на официальный архив, вторая - на не-США архив и третья - на архив
115 обновлений безопасности Debian.
116 <p>
117 Две последние строки закомментированы (начинаются с `#'), так что apt-get
118 будет их игнорировать. Эти строки <tt>deb-src</tt> указывают на пакеты
119 исходных текстов Debian. если вы часто скачиваете исходные тексты программ
120 для тестированя и перекомпиляции, раскомментируйте их.
121 <p>
122 Файл <tt>/etc/apt/sources.list</tt> может содержать несколько типов строк.
123 APT знает как обращаться с архивами типов <tt>http</tt>, <tt>ftp</tt>,
124 <tt>file</tt> (локальные файлы, напр., каталог, содержащий смонтированную
125 файловую систему ISO9660) и <tt>ssh</tt>, насколько я знаю.
126
127 </sect>
128
129 <sect id="dpkg-scanpackages">Как использовать APT локально
130 <p>
131 Иногда, вы можете располагать кучей пакетов .deb, которые вам хотелось
132 бы устанавливать с помощью APT, чтобы зависимости обрабатывались
133 автоматически.
134 <p>
135 Чтобы это сделать, создайте каталог и поместите в него .deb`ы, которые вам
136 нужны. Например:
137 <example>
138 mkdir /root/debs
139 </example>
140 Вы можете изменить установки определений файла control из debian-пакета
141 напрямую для вашего репозитория с помощью файла <tt>override</tt>.
142 В этом файле вы можете определить какие-нибудь опции для перекрытия тех,
143 которые приходят с пакетом. Это может выглядеть так:
144 <example>
145 package priority section
146 </example>
147 package - это имя пакета, priority - имеет значения low, medium или
148 high, а section - это название раздела, в котором он находится. Имя файла
149 не имеет значения, позже вы будете указывать его в качестве аргумента для
150 команды <prgn>dpkg-scanpackages</prgn>. Если вы не хотите составлять файл
151 <tt>override</tt>, тогда просто указывайте <file>/dev/null</file>.
152 при вызове <prgn>dpkg-scanpackages</prgn>.
153 <p>
154 Из каталога /root дайте команду:
155 <example>
156 dpkg-scanpackages debs <var>file</var> | gzip > debs/Packages.gz
157 </example>
158 In the above line, <var>file</var> is the <tt>override</tt> file,
159 the command generates a file <file>Packages.gz</file> that contains
160 various informations about the packages, which are used by APT. To
161 use the packages, finally, add:
162
163 В вышеприведенной команде, <var>file</var> - это файл <tt>override</tt>,
164 команда генерирует файл <file>Packages.gz</file>, который содержит различную
165 информацию о пакетах, которые используются APT. Чтобы использовать
166 пакеты, наконец, добавьте:
167 <example>
168 deb file:/root debs/
169 </example>
170 После всех этих манипуляций вы можете использовать команды APT как обычно.
171 Вы также можете создать и репозиторий для исходных текстов. Для этого
172 используется та же процедура, но помните, что вам нужны файлы
173 <tt>.orig.tar.gz</tt>, <tt>.dsc</tt> и <tt>.diff.gz</tt> в каталоге, и
174 вместо Packages.gz надо использовать Sources.gz. Также нужно использовать
175 другую программу. Это программа <prgn>dpkg-scansources</prgn>. Командная строка
176 выглядит примерно так:
177 <example>
178 dpkg-scansources debs | gzip > debs/Sources.gz
179 </example>
180 Обратите внимание на то, что программе <prgn>dpkg-scansources</prgn> не нужен
181 <tt>override</tt> файл. Строка в sources.list:
182 <example>
183 deb-src file:/root debs/
184 </example>
185 </sect>
186
187 <sect id="netselect">Определение наилучшего зеркала для включения в файл source.list: netselect, netselect-apt <p>
188 Наиболее часто возникаемый вопрос, в основном у новичков: "какое зеркало
189 Debian включать в <tt>sources.list</tt>?". Для выбора зеркала есть
190 множество способов. Эксперты вероятно пользуются сценариями, которые
191 измеряют продолжительность ping`ов до некоторых заркал. Но такая программа
192 для вас уже имеется: <strong>netselect</strong>.
193 <p>
194 Чтобу установить netselect, сделайте как обычно:
195 <example>
196 apt-get install netselect
197 </example>
198 При запуске программы без параметров отображается справка. При запуске
199 с указанными в качестве параметров, разделенных пробелами, именами хостов
200 (зеркал), она выдаст оценку и один из хостов. Эта оценка учитывает ожидаемую
201 продолжительность пинга и количество переходов (хостов, которые должны быть
202 пройдены до того, как пакеты дойдут до цели) и обратна пропорциональна
203 ожидаемой скорости скачивания (т.е., чем она меньше, тем лучше). Программа
204 указывает имя хоста, который имеет наименьшую оценку (полный список оценок
205 можно просмотреть с помощью опции -vv ). См. пример:
206 <example>
207 bash$ netselect ftp.debian.org http.us.debian.org ftp.at.debian.org download.unesp.br ftp.debian.org.br
208 365 ftp.debian.org.br
209 bash$
210 </example>
211 Это означает, что из указанных в качестве параметров зеркал, наилучшим
212 является <tt>ftp.debian.org.br</tt>, с оценкой 365. (Внимание!! Приведенные
213 значения действительны только для моей машины, и для других машин все
214 может быть совсем по-другому).
215 <p>
216 Сейчас, просто поместите найденное netselect зеркало в файл
217 <tt>/etc/apt/sources.list</tt> (см. <ref id="sources.list">) и
218 следуйте советам в <ref id="apt-get">.
219 <p> <strong>Примечание:</strong> список зеркал можно всегда найти в файле
220 <url id="http://www.debian.org/mirror/mirrors_full"
221 name="http://www.debian.org/mirror/mirrors_full">. <p>
222 Начиная с версии 0.3, пакет netselect включает сценарий
223 <strong>netselect-apt</strong>, который делает вышеописанные процедуры
224 автоматически. Просто введите в качества параметра имя дерева дистрибутива
225 (по умолчанию это stable) и файл <tt>sources.list</tt> будет настроен на
226 наилучшие зеркала main и non-US и будет сохранен в текущем каталоге.
227 Следующий пример генерирует sources.list стабильного дистрибутива:
228 <example>
229 bash$ ls sources.list
230 ls: sources.list: File or directory not found
231 bash$ netselect-apt stable
232 (...)
233 bash$ ls -l sources.list
234 sources.list
235 bash$
236 </example>
237 <strong>Помните:</strong> Файл <tt>sources.list</tt> генерируется в
238 текущем каталоге, и должен быть перемещен в каталог <tt>/etc/apt</tt>.
239 <p>
240 Далее следуйте советам в <ref id="apt-get">.
241 </sect>
242
243 <sect id="cdrom">Добавление CD-ROM в файл sources.list
244 <p>
245 Если вы предпочитает использовать для автоматической установки или обновления
246 пакетов с помощью ваш CD-ROM, то можете поместить его в файл
247 <tt>sources.list</tt>. Для этого используется программа <prgn>apt-cdrom</prgn>:
248
249 <example>
250 apt-cdrom add
251 </example>
252
253 Debian CD-ROM должен находиться в приводе. Программа смонтирует CD-ROM и,
254 если диск является Debian CD, то найдет на нем информацию о пакетах.
255 Если у вас CD-ROM необычной конфигурации, то вы можете использовать
256 следующие опции:
257
258 <example>
259 -h - справка к программе
260 -d directory - точка монтирования CD-ROM
261 -r - Переименовать распознанный CD-ROM
262 -m - Не монтировать
263 -f - Ускоренный режим, не проверять пакеты файлов
264 -a - Thorough scan mode
265 </example>
266
267 Например:
268
269 <example>
270 apt-cdrom -d /home/kov/mycdrom add
271 </example>
272
273 Также вы можете идентифицировать CD-ROM без добавления его в список:
274
275 <example>
276 apt-cdrom ident
277 </example>
278
279 Обратите внимание, что эта программа работает только, если ваш CD-ROM
280 правильно настроен в системном файле настроек <tt>/etc/fstab</tt>.
281 </sect>
282
283 </chapt>
284
285
286 <chapt id="apt-get">Управление пакетами
287 <sect id="update">Обновление списка доступных пакетов
288 <p>
289 Система пакетов использует собственную базу данных для слежения за
290 установленными, не установленными и доступными для установки пакетами.
291 Программа <prgn>apt-get</prgn> использует эту базу данных для определения
292 пути установки пакетов, требуемых пользователем, и для определения того,
293 какие дополнительные пакеты нужны, чтобы выбранные пакеты работал корректно.
294 <p>
295 Чтобы обновить этот список, вы должны использовать команду
296 <prgn>apt-get update</prgn>. Эта команда просматривает списки пакетов
297 в архивах, указанных в файле <tt>/etc/apt/sources.list</tt>; см. более
298 полные сведения об этом файле в <ref id="sources.list">.
299 <p>
300 Было бы неплохо запускать эту команду регулярно, чтобы ваша система всегда
301 была в курсе об обновлениях доступных пакетов, особенно обновлениях
302 безопасности.
303 </sect>
304
305 <sect id="install">Установка пакетов
306 <p>
307 Наконец-то, ожидание окончено! Ваш sources.list готов и списки доступных
308 пакетов обновлены, теперь вам только остается дать команду <tt>apt-get</tt>,
309 чтобы установить предпочитаемый пакет. Например, вы можете запустить:
310
311 <example>
312 apt-get install xchat
313 </example>
314
315 APT будет искать в своей базе данных наиболее свежие версии пакетов и
316 будет скачивать их из соответствующих архивов так, как они указаны в
317 <tt>sources.list</tt>. В случаях, когда пакет зависит от другого --
318 как в варианте ниже -- APT проверит зависимости и установит необходимые
319 пакеты. См. пример:
320
321 <example>
322 [root]@[/] # apt-get install nautilus
323 Reading Package Lists... Done
324 Building Dependency Tree... Done
325 The following extra packages will be installed:
326 bonobo libmedusa0 libnautilus0
327 The following NEW packages will be installed:
328 bonobo libmedusa0 libnautilus0 nautilus
329 0 packages upgraded, 4 newly installed, 0 to remove and 1 not upgraded.
330 Need to get 8329kB of archives. After unpacking 17.2MB will be used.
331 Do you want to continue? [Y/n]
332 </example>
333
334 Пакет <package>nautilus</package> зависит от совместно-используемых
335 библиотек, поэтому APT скачает их из архива. Если бы вы указали имена
336 этих библиотек в командной строке <tt>apt-get</tt>, то APT не стал бы
337 спрашивать у вас разрешения продолжать установку; он бы автоматически
338 решил, что вы хотите установить все эти пакеты.
339 <p>
340 Это означает, что APT запрашивает подтверждения только тогда, когда
341 нужно установить пакеты, которые не были перечислены в командной строке.
342 <p>
343 Вам могут быть полезны следующие опции apt-get:
344
345 <example>
346 -h справка
347 -d только загрузить - не устанавливать и не распаковывать архивы
348 -s ничего не делать реально, имитировать выполнение
349 -y предполагается ответ Yes на все вопросы, сами вопросы не выводить
350 -f продолжать, даже если проверка целостности не удачна
351 -u плюс ко всему показывать список обновленных пакетов
352 </example>
353
354 В одной строке можно задавать несколько пакетов. Скачанные из сети файлы
355 помещаются в каталог для дальнейшей установки
356 <tt>/var/cache/apt/archives</tt>.
357 <p>
358 Также, вы можете указывать пакеты для удаления в той же командной строке.
359 Просто поместите '-' сразу после имени удаляемого пакета, например:
360
361 <example>
362 [root]@[/] # apt-get install nautilus gnome-panel-
363 Reading Package Lists... Done
364 Building Dependency Tree... Done
365 The following extra packages will be installed:
366 bonobo libmedusa0 libnautilus0
367 The following packages will be REMOVED:
368 gnome-applets gnome-panel gnome-panel-data gnome-session
369 The following NEW packages will be installed:
370 bonobo libmedusa0 libnautilus0 nautilus
371 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded.
372 Need to get 8329kB of archives. After unpacking 2594kB will be used.
373 Do you want to continue? [Y/n]
374 </example>
375
376 Более подробную информацию об удалении пакетов можно найти в разделе
377 <ref id="remove">.
378 <p>
379 Если вы обнаружили, что пакет испортился, или просто хотите переустановить
380 файлы пакета более новой доступной версии, то вы можете использовать опцию
381 <tt>--reinstall</tt>, например:
382
383 <example>
384 [root]@[/] # apt-get --reinstall install gdm
385 Reading Package Lists... Done
386 Building Dependency Tree... Done
387 0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1 not upgraded.
388 Need to get 0B/182kB of archives. After unpacking 0B will be used.
389 Do you want to continue? [Y/n]
390 </example>
391
392 При создании этого руководства APT имел версию 0.5.3, которая была текущей
393 версией в Debian `unstable' (<tt>sid</tt>) на время написания. Если вы
394 установили эту версию, то вам доступны некоторые дополнительные возможности:
395 вы можете использовать команды типа
396 <tt>apt-get install пакет/дистрибутив</tt> для установки пакетов
397 из указанных дистрибутивов, или <tt>apt-get install пакет=версия</tt>.
398 Например:
399
400 <example>
401 apt-get install nautilus/unstable
402 </example>
403
404 установит nautilus из дистрибутива `unstable' (нестабильный), даже если
405 вы работаете на `stable' (стабильном). Для 'distribution' допускаются
406 значения <tt>stable</tt>, <tt>testing</tt> и <tt>unstable</tt>.
407 <p>
408
409 Вы можете предпочесть использование ключа <tt>-t</tt> для выбора
410 целевого дистрибутива, указывающего <prgn>apt-get</prgn> предпочесть
411 указанный дистрибутив при обработке зависимостей.
412 <p>
413 <em>ВАЖНО</em>: `unstable' версия Debian - это самая первая версия, в которой
414 появляются новейшие версии пакетов Debian. Этот дистрибутив подвергается
415 воздействию изменений, сделанных в пакетах, и маленьким, и большим, каждое
416 из которых может воздействовать на множество пакетов или систему в целом.
417 По этой причине, эта версия дистрибутива <em>не</em> должна использоваться
418 неопытными пользователями или теми, кто ожидает стабильности.
419 <p>
420 Дистрибутив `testing' (тестируемый) несколько лучше `unstable' в отношении
421 стабильности, но на производстве лучше все-таки использовать стабильный
422 дистрибутив.
423 </sect>
424
425 <sect id="remove">Удаление пакетов
426 <p>
427 Если пакет вам больше не нужен, то вы можете удалить его из вашей системы,
428 используя APT. Чтобы это сделать просто введите:
429 <tt>apt-get remove package</tt>.
430 Например:
431
432 <example>
433 [root]@[/] # apt-get remove gnome-panel
434 Reading Package Lists... Done
435 Building Dependency Tree... Done
436 The following packages will be REMOVED:
437 gnome-applets gnome-panel gnome-panel-data gnome-session
438 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded.
439 Need to get 0B of archives. After unpacking 14.6MB will be freed.
440 Do you want to continue? [Y/n]
441 </example>
442
443 Из вышеприведенного примера можно видеть, что APT также предлагает удалить
444 пакеты, от которых зависит пакет, предлагаемый вами к удалению. Способа
445 удалить пакет при помощи APT без удаления пакетов, от которых он зависит,
446 нет.
447 <p>
448 Вышеприведенная команда <prgn>apt-get</prgn> удалит пакеты, но оставит их
449 настроечные файлы, если они есть. Для полного удаления пакета запустите:
450
451 <example>
452 [root]@[/] # apt-get --purge remove gnome-panel
453 Reading Package Lists... Done
454 Building Dependency Tree... Done
455 The following packages will be REMOVED:
456 gnome-applets* gnome-panel* gnome-panel-data* gnome-session*
457 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded.
458 Need to get 0B of archives. After unpacking 14.6MB will be freed.
459 Do you want to continue? [Y/n]
460 </example>
461
462 Обратите внимание на '*' после имен. Это указывает на то, что будут удалены
463 настроечные файлы для каждого из этих пакетов.
464 <p>
465 Аналогично действию <tt>install</tt>, вы можете инвертировать действие
466 <tt>remove</tt> для определенных пакетов. В случае удаления, если вы добавите
467 знак <tt>'+'</tt> справа от имени пакета, то пакет будет установлен, а не
468 удален.
469
470 <example>
471 [root]@[/] # apt-get --purge remove gnome-panel nautilus+
472 Reading Package Lists... Done
473 Building Dependency Tree... Done
474 The following extra packages will be installed:
475 bonobo libmedusa0 libnautilus0 nautilus
476 The following packages will be REMOVED:
477 gnome-applets* gnome-panel* gnome-panel-data* gnome-session*
478 The following NEW packages will be installed:
479 bonobo libmedusa0 libnautilus0 nautilus
480 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded.
481 Need to get 8329kB of archives. After unpacking 2594kB will be used.
482 Do you want to continue? [Y/n]
483 </example>
484
485 Обратите внимание на то, что <prgn>apt-get</prgn> распечатывает дополнительные
486 пакеты, которые будут установлены (т.е., пакеты, которые будут установлены
487 для правильной работы запрашиваемых к установке пакетов), удаляемые пакеты и
488 затем пакеты, которые будут установлены (также включая дополнительные пакеты).
489 </sect>
490
491 <sect id="upgrade">Обновление пакетов
492 <p>
493 Обновления пакетов - это конек системы APT. Это может быть сделано одной
494 командой: <tt>apt-get upgrade</tt>. Вы можете использовать эту команду для
495 обновления пакетов в том же самом дистрибутиве, равно как и при обновлении
496 существующего дистрибутива до нового, хотя для последнего действия
497 предназначена команда <tt>apt-get dist-upgrade</tt>; см. подробности в
498 разделе <ref id="dist-upgrade">.
499 <p>
500 Эту команду полезно запускать с опцией <tt>-u</tt>. Эта опция заставляет
501 APT показывать полный список пакетов, предназначенных для обновления.
502 Без нее вы будете обновляться вслепую. APT последние версии каждого из
503 пакетов и установит их в правильном порядке. Поэтому очень важно запустить
504 перед этим <tt>apt-get update</tt>. См. раздел <ref id="update">.
505 Вот пример:
506
507 <example>
508 [root]@[/] # apt-get -u upgrade
509 Reading Package Lists... Done
510 Building Dependency Tree... Done
511 The following packages have been kept back
512 cpp gcc lilo
513 The following packages will be upgraded
514 adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent
515 ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev
516 libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0
517 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc
518 29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
519 Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used.
520 Do you want to continue? [Y/n]
521 </example>
522
523 Процесс очень прост. Обратите внимание, что в первых строках
524 <tt>apt-get</tt> говорит, что некоторые пакеты были <tt>kept back</tt>. Это
525 означает, что новые версии некоторых пакетов не будут установлены по
526 некоторым причинам. Возможными причинами могут быть битые зависимости
527 (пакет, от которого он зависит не доступен для скачивания) или новые
528 зависимости (пакет последней версии зависит от новых пакетов).
529 <p>
530 В первом случае прозрачного решения не существует. Для второго случая,
531 должна помочь команда <tt>apt-get install</tt> для указанного в вопросе
532 пакета, так ка это приведет к скачиванию зависимости. Даже более прозрачное
533 решение сосотоит в использовании <tt>dist-upgrade</tt>. См. раздел
534 <ref id="dist-upgrade">.
535 </sect>
536
537 <sect id="dist-upgrade">Обновление нового выпуска
538 <p>
539 Эта возможность APT позволяет вам обновлять всю систему Debian за один прием,
540 или через Internet, или с нового CD (купленного или скачанного в виде образа
541 ISO).
542 <p>
543 Это действие также используется при изменении отношений между установленными
544 пакетами. Команда <tt>apt-get upgrade</tt> оставит эти пакеты нетронутыми
545 (<tt>kept back</tt>).
546 <p>
547 Например, предположим, что вы используете выпуск 0 стабильной версии
548 Debian и вы покупаете CD с выпуском 3. Вы можете использовать APT для
549 обновления вашей системы с этого нового CD. Для этого используйте команду
550 <prgn>apt-cdrom</prgn> (см. раздел <ref id="cdrom">) для добавления CD в ваш
551 файл <tt>/etc/apt/sources.list</tt> и запустите <tt>apt-get dist-upgrade</tt>.
552 <p>
553 Важно иметь в виду, что APT всегда высматривает новейшие версии пакетов.
554 Поэтому, если в вашем <tt>/etc/apt/sources.list</tt> были указаны архивы,
555 которые имеют более новые версии пакетов, чем версия этого CD, то APT
556 должен скачивать пакеты с них.
557 <p>
558 В примере из раздела <ref id="upgrade">, мы видели, что некоторые пакеты
559 были <tt>kept back</tt>. Сейчас мы решим эту проблему
560 с помощью действия <tt>dist-upgrade</tt>:
561
562 <example>
563 [root]@[/] # apt-get -u dist-upgrade
564 Reading Package Lists... Done
565 Building Dependency Tree... Done
566 Calculating Upgrade... Done
567 The following NEW packages will be installed:
568 cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1
569 libpcre2 logrotate mailx
570 The following packages have been kept back
571 lilo
572 The following packages will be upgraded
573 adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc
574 indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0
575 libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev
576 liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit
577 procps psmisc
578 31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded.
579 Need to get 0B/7098kB of archives. After unpacking 3118kB will be used.
580 Do you want to continue? [Y/n]
581 </example>
582
583 Обратите внимание, что сейчас пакеты были обновлены, а также установлены новые
584 пакеты (новые зависимости пакетов). Обратите внимание также, что lilo
585 по-прежнему остается <tt>kept back</tt>. Вероятно здесь более серьезная
586 причина, чем новая зависимость. Мы можем ее найти командой:
587
588 <example>
589 [root]@[/] # apt-get -u install lilo
590 Reading Package Lists... Done
591 Building Dependency Tree... Done
592 The following extra packages will be installed:
593 cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
594 logrotate mailx
595 The following packages will be REMOVED:
596 debconf-tiny
597 The following NEW packages will be installed:
598 cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
599 logrotate mailx
600 The following packages will be upgraded
601 lilo
602 1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded.
603 Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used.
604 Do you want to continue? [Y/n]
605 </example>
606
607 Как было указано выше, lilo имеет новый конфликт с пакетом
608 <package>debconf-tiny</package>, который означает, что он не может быть
609 установлен (или обновлен) без удаления debconf-tiny.
610 <p>
611
612 Чтобы узнать как сохраняется или удаляется пакет, вы можете использовать:
613 <example>
614 # apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
615 Reading Package Lists... Done
616 Building Dependency Tree... Done
617 Calculating Upgrade... Starting
618 Starting 2
619 Investigating python1.5
620 Package python1.5 has broken dep on python1.5-base
621 Considering python1.5-base 0 as a solution to python1.5 0
622 Holding Back python1.5 rather than change python1.5-base
623 Investigating python1.5-dev
624 Package python1.5-dev has broken dep on python1.5
625 Considering python1.5 0 as a solution to python1.5-dev 0
626 Holding Back python1.5-dev rather than change python1.5
627 Try to Re-Instate python1.5-dev
628 Done
629 Done
630 The following packages have been kept back
631 gs python1.5-dev
632 0 packages upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
633 </example>
634 Таким образом легко заметить, что пакет python1.5-dev не может быть установлен
635 из-за неудовлетворительной зависимости: python1.5.
636
637 </sect>
638
639 <sect id="dselect-upgrade">Использование APT с dselect
640 <p>
641 <prgn>dselect</prgn> - это программа, которая помогает пользователям
642 выбирать пакеты Debian для инсталляции. Он выглядит в чем-то громоздким и
643 даже раздражает, но со временем вы можете привыкнуть к его консольному,
644 основанному на ncurses интерфейсу.
645 <p>
646 Одной из особенностью dselect является ее умение работать с
647 "рекомендуемыми" и "предлагаемыми" пакетами при установке выбранных пакетов.
648 Чтобы использовать эту программу, запустите <tt>`dselect'</tt> от имени root.
649 Выберите в качестве метода доступа 'apt'. В действительности в этом нет
650 необходимости, но если вы не используете CD-ROM и хотите скачивать пакеты
651 из Интернет, то это наилучший способ для dselect.
652 <p>
653 Чтобы достичь более глубоких знаний по эксплуатации dselect, прочтите
654 документацию по dselect на странице Debian
655 <url id="http://www.debian.org/doc/ddp" name="http://www.debian.org/doc/ddp">.
656 <p>
657 Когда закончите выбирать в dselect, используйте команду:
658
659 <example>
660 apt-get -u dselect-upgrade
661 </example>
662
663 как в нижеприведенном примере:
664
665 <example>
666 [root]@[/] # apt-get -u dselect-upgrade
667 Reading Package Lists... Done
668 Building Dependency Tree... Done
669 The following packages will be REMOVED:
670 lbxproxy
671 The following NEW packages will be installed:
672 bonobo console-tools-libs cpp-3.0 enscript expat fingerd gcc-3.0
673 gcc-3.0-base icepref klogd libdigest-md5-perl libfnlib0 libft-perl
674 libgc5-dev libgcc300 libhtml-clean-perl libltdl0-dev libsasl-modules
675 libstdc++3.0 metamail nethack proftpd-doc psfontmgr python-newt talk tidy
676 util-linux-locales vacation xbill xplanet-images
677 The following packages will be upgraded
678 debian-policy
679 1 packages upgraded, 30 newly installed, 1 to remove and 0 not upgraded.
680 Need to get 7140kB of archives. After unpacking 16.3MB will be used.
681 Do you want to continue? [Y/n]
682 </example>
683
684 Сравните это с результатом работы команды apt-get dist-upgrade на той же
685 системе:
686
687 <example>
688 [root]@[/] # apt-get -u dist-upgrade
689 Reading Package Lists... Done
690 Building Dependency Tree... Done
691 Calculating Upgrade... Done
692 The following packages will be upgraded
693 debian-policy
694 1 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
695 Need to get 421kB of archives. After unpacking 25.6kB will be freed.
696 Do you want to continue? [Y/n]
697 </example>
698
699 Обратите внимание на то, что многие из вышеуказанных пакетов были установлены
700 потому, что другие пакеты "предлагали" или "рекомендовали" их. Другие
701 были установлены или удалены (в случае, например, lbxproxy) в результате
702 сделанного нами выбора во время работы в dselect. Dselect может быть мощным
703 инструментом, когда используется вместе с APT.
704 </sect>
705
706 <sect id="default-version">Как сохранить смешанную систему
707 <p>
708 Люди часто используют тестируемый дистрибутив, потому что он более
709 сьабилен, чем нестабильный и более новый, чем стабильный. Однако
710 пользователи, которые хотят работать с последними версиями некоторых
711 пакетов, но при этом не доверяют им из-за боязни дестабилизировать всю
712 систему, имеют возможность работать со смешанными тестируемыми/стабильными
713 системами. Или по-другому - более консервативным пользователям возможно
714 нужна смешанная стабильная/тестируемая система.
715 <p>
716 Чтобы этого добиться, поместите следующую строку в
717 <file>/etc/apt/apt.conf</file>:
718
719 <example>
720 APT::Default-Release "testing";
721 </example>
722
723 <p>
724 Затем, при установке пакетов из нестабильного дистрибутива, просто используйте
725 ключ <tt>-t</tt>:
726
727 <example>
728 # apt-get -t unstable install <var>имя_пакета</var>
729 </example>
730
731 <p>
732 Не забывайте, что для того, чтобы использовать пакеты этой
733 версии Debian, нужно внести дополнения в файл
734 <file>/etc/apt/sources.list</file>. Применительно к нашему примеру,
735 нам нужно добавить строки источников для дистрибутива
736 <tt>unstable</tt> после аналогичных строк для дистрибутива
737 <tt>testing</tt>.
738
739 </sect>
740
741 <sect id="apt-show-versions">Как обновлять пакеты из указанных версий Debian
742 <p>
743 <prgn>apt-show-versions</prgn> обеспечивает безопасный путь обновления системы
744 для пользователей смешанных дистрибутивов, без получения лишних частей
745 нестабильного дистрибутива, чем это требуется в действительности. К примеру,
746 можно обновить только нестабильные пакеты командой:
747 <example>
748 # apt-get install `apt-show-versions -u -b | grep unstable`
749 </example>
750 </sect>
751
752 <sect id="pin">Как сохранять указанные версии установленных пакетов (сложный способ)
753 <p>
754 Могло случиться так, что вы изменяете что-то в пакете и не имеете времени
755 или не хотите портировать эти изменения в новую версию программы. Или, к
756 примеру, вы может быть просто собиретесь обновить ваш дистрибутив Debian до
757 версии 3.0, на при этом хотите по-прежнему использовать некоторые пакеты
758 из Debian 2.2. Вы можете "приколоть" (pin) установленные версии пакетов так,
759 чтобы они не обновлялись.
760 <p>
761 Это делается просто. Вам всего лишь надо отредактировать файл
762 <tt>/etc/apt/preferences</tt>.
763 <p>
764 Его формат прост:
765 <example>
766 Package: &lt;package&gt;
767 Pin: &lt;pin definition&gt;
768 Pin-Priority: &lt;pin's priority&gt;
769 </example>
770 <p>
771 Например, чтобы предотвратить модификацию пакета <package>sylpheed</package>
772 версии 0.4.99, которую я поправил на предмет "reply-to-list", я ввел следующее:
773 <example>
774 Package: sylpheed
775 Pin: version 0.4.99*
776 </example>
777 Обратите внимание, что я использовал <tt>*</tt> (звездочка). Это "маска";
778 она означает, что я хочу "приколоть" (pin) все версии, начиная с 0.4.99.
779 Это нужно потому, что в Debian-версиях пакетов в номере версии присутствует
780 "номер редакции Debian", а я не хочу отменять установку этих редакций.
781 Так, например, версии 0.4.99-1 и 0.4.99-10 будут установлены, как только
782 станут доступны. Обратите внимание, что если вы внесли свои изменения в пакет,
783 то такой способ вам не подойдет.
784 <p>
785 Поле <tt>Pin-Priority</tt> необязательно; если оно не указано, то по умолчанию
786 оно равно 989.
787 <p>
788 Давайте рассмотрим работу приоритетов. Приоритет менее 0 указывает, что
789 пакет никогда не должен устанавливаться. Приоритет от 0 до 100 означает
790 пакеты, которые не установлены и которые не имеют доступных версий. Они
791 не входят в процесс выбора версий. Приоритет 100 назначается установленному
792 пакету - для замены установленной версии пакета другой версией, заменяющий
793 пакет должен иметь приоритет выше 100.
794 <p>
795 Приоритеты выше 100 указывают, что пакет должен быть установлен. Обычно,
796 установленная версия пакета изменяется только при обновлении до новой версии.
797 Любые приоритеты от 100 до 1000 (включительно) определяют это типичное
798 поведение. Пакет с таким приоритетом не будет даунгрейдиться до доступной
799 версии с меньшим номером версии. Для примера, если у меня установлен
800 sylpheed 0.5.3 и определен pin на sylpheed 0.4.99 с приоритетом 999,
801 то пакет 0.4.99 <em>не</em> будт установлен из-за значения pin. Чтобы
802 можно было установить пакет меньшей версии, значение pin должно иметь
803 приоритет выше 1000.
804 <p>
805 pin может быть определен для <tt>version</tt>, <tt>release</tt>
806 или <tt>origin</tt> пакета.
807 <p>
808 При указании pin для <tt>версий</tt>, как мы видели, для указания нескольких
809 версий за один раз поддерживаются литеральные номера версий, равно как и
810 маски.
811 <!-- what's available? standard shell globs? ?*[] or more? -->
812 <p>
813 Опция <tt>release</tt> зависит от файла Release из репозитория APT или
814 с CD. Эта опция может не использоваться вовсе, если вы используете репозитории
815 пакетов, которые не обеспечивают этот файл. Вы можете увидеть содержимое
816 файлов Release, которые вы используете в каталоге
817 <tt>/var/lib/apt/lists/</tt>. Параметры для опции release:
818 <tt>a</tt> (archive -- архив), <tt>c</tt> (components -- компоненты),
819 <tt>v</tt> (version -- версия), <tt>o</tt> (origin -- источник) и
820 <tt>l</tt> (label -- метка).
821 <p>
822 Пример:
823 <example>
824 Package: *
825 Pin: release v=2.2*,a=stable,c=main,o=Debian,l=Debian
826 Pin-Priority: 1001
827 </example>
828 В этом примере, мы выбираем версию 2.2* Debian (которая может быть 2.2r2,
829 2.2r3 -- это "точечные выпуски", которые обычно включают исправления
830 безопасности и другие важные обновления), <tt>стабильный</tt> репозиторий,
831 раздел <tt>main</tt> (как противовес <tt>contrib</tt> или
832 <tt>non-free</tt>) и источник и метку Debian. Источник (o=) определяет, кто
833 создал данный файл Release, метка (l=) определяет имя дистрибутива: Debian
834 для самого Debian и Progeny для дистрибутива Progeny, например. Пример файла
835 Release:
836 <example>
837 $ cat /var/lib/apt/lists/ftp.debian.org.br_debian_dists_potato_main_binary-i386_Release
838 Archive: stable
839 Version: 2.2r3
840 Component: main
841 Origin: Debian
842 Label: Debian
843 Architecture: i386
844 </example>
845 </sect>
846 </chapt>
847
848 <chapt id="helpers">Весьма полезные помощники
849 <sect id="equivs">Как установить локально скомпилированные пакеты: equivs
850 <p>
851 Иногда, люди хотят использовать определенную версию программы, доступную
852 только в исходных текстах, без пакета Debian. Но этому может помешать
853 система пакетов. Предположим, вы хотите скомпилировать новую версию
854 вашего почтового сервера. Все отлично, но многие пакеты в Debian зависят
855 от MTA. Так как вы устанавливаете нечто, собранное вами вручную, то
856 система пакетов об этом не будет знать.
857 <p>
858 Тут на сцену выходит весь в белом пакет <package>equivs</package>. Чтобы его
859 использовать, установите пакет с тем же именем. Он создает пустой пакет,
860 который содержит полный набор зависимостей, уведомляя таким образом систему
861 пакетов, что все зависимочти удовлетворены.
862 <p>
863 Прежде, чем мы начнем, хорошо бы сообщить вам, что есть более безопасные
864 способы компиляции программ, для которых уже есть пакеты Debian с различными
865 опциями, и что в этом случае лучше не использовать equivs для замены
866 зависимостей, если вы не уверены в том, что все делаете правильно.
867 См. подробности в разделе <ref id="sourcehandling">.
868 <p>
869 Давайте вернемся к примеру с MTA, вы только что установили свежесобранный
870 <prgn>postfix</prgn> и переходите к установке <package>mutt</package>.
871 Сразу же вы обнаружите, что <package>mutt</package> нужен установленный
872 MTA. Но ведь он у вас уже есть.
873 <p>
874 Зайдите в какой-нибудь каталог (<file>/tmp</file>, например) и запустите:
875
876 <example>
877 # equivs-control <var>name</var>
878 </example>
879
880 Замените <var>name</var> на имя управляющего файла, который вы создаете.
881 Будет создан следующий файл:
882
883 <example>
884 Section: misc
885 Priority: optional
886 Standards-Version: 3.0.1
887
888 Package: &lt;enter package name; defaults to equivs-dummy&gt;
889 Version: &lt;enter version here; defaults to 1.0&gt;
890 Maintainer: &lt;your name and email address; defaults to username&gt;
891 Pre-Depends: &lt;packages&gt;
892 Depends: &lt;packages&gt;
893 Recommends: &lt;packages&gt;
894 Suggests: &lt;package&gt;
895 Provides: &lt;(virtual)package&gt;
896 Architecture: all
897 Copyright: &lt;copyright file; defaults to GPL2&gt;
898 Changelog: &lt;changelog file; defaults to a generic changelog&gt;
899 Readme: &lt;README.Debian file; defaults to a generic one&gt;
900 Extra-Files: &lt;additional files for the doc directory, comma separated&gt;
901 Description: &lt;short description; defaults to some wise words&gt;
902 long description and info
903 .
904 second paragraph
905 </example>
906
907 Нам просто нужно поправить его, как нам нужно. Формат полей и их описаний
908 понятен визуально, так что давайте сделаем требуемое:
909
910 <example>
911 Section: misc
912 Priority: optional
913 Standards-Version: 3.0.1
914
915 Package: mta-local
916 Provides: mail-transport-agent
917 </example>
918
919 Да, это все. <package>mutt</package> зависит от
920 <package>mail-transport-agent</package>, это виртуальный пакет, обеспечиваемый
921 всеми MTA, я мог бы использовать имя пакета
922 <package>mail-transport-agent</package>, но я придерживаюсь
923 принятой схемы именования, используя Provides.
924 <p>
925 Сейчас вам нужно только построить пакет:
926
927 <example>
928 # equivs-build <var>name</var>
929 dh_testdir
930 touch build-stamp
931 dh_testdir
932 dh_testroot
933 dh_clean -k
934 # Add here commands to install the package into debian/tmp.
935 touch install-stamp
936 dh_testdir
937 dh_testroot
938 dh_installdocs
939 dh_installchangelogs
940 dh_compress
941 dh_fixperms
942 dh_installdeb
943 dh_gencontrol
944 dh_md5sums
945 dh_builddeb
946 dpkg-deb: building package `<var>name</var>' in `../<var>name</var>_1.0_all.deb'.
947
948 The package has been created.
949 Attention, the package has been created in the current directory,
950 </example>
951
952 И установите полученный <tt>.deb</tt> файл.
953 <p>
954 Очевидно, существует несколько применений для <prgn>equivs</prgn>.
955 Одно из них, например, - создание пакета <tt>my-favorites</tt>, который
956 зависит от программ, которые вы обычно устанавливаете. Просто включите свое
957 воображение, но будьте осторожны.
958 <p>
959 Важно заметить, что примеры управляющих файлов есть в каталоге
960 <file>/usr/share/doc/equivs/examples</file>. Посмотрите их.
961 </sect>
962
963 <sect id="localepurge">Удаление неиспользуемых файлов локали: localepurge
964 <p>
965 Многие пользователи Debian используют только одну локаль. Бразильские
966 пользователи Debian, например, обычно используют локаль <tt>pt_BR</tt>
967 и не интересуются локалью <tt>es</tt>.
968 <p>
969 <package>localepurge</package> - это очень полезный инструмент для таких
970 пользователей. Вы можете освободить много места, если оставите только те
971 локали, которые вы действительно используете. Просто дайте команду
972 <tt>apt-get install localepurge</tt>.
973 <p>
974 Пакет очень легко настраивается, debconf обеспечивает его пошаговую настройку.
975 Однако будьте осторожны при ответе на первый вопрос, неправильный ответ может
976 повлечь удаление всех файлов локалей, даже тех, которые вы используете. После
977 этого восстановить их можно будет только переустановкой всех пакетов, их
978 предоставляющих.
979 </sect>
980
981 <sect id="helper-show-versions">Как узнать, какие пакеты можно обновить
982 <p>
983 <prgn>apt-show-versions</prgn> - это программа, которая показывает, какие
984 пакеты в системе можно обновить и еще некоторую полезную информацию. Опция
985 <tt>-u</tt> отображает список обновляемых пакетов:
986
987 <example>
988 $ apt-show-versions -u
989 libeel0/unstable upgradeable from 1.0.2-5 to 1.0.2-7
990 libeel-data/unstable upgradeable from 1.0.2-5 to 1.0.2-7
991 </example>
992 </sect>
993
994 </chapt>
995
996 <chapt id="search">Получение информации о пакетах.
997 <p>
998 Для системы APT существует несколько оболочек, которые значительно упрощают
999 просмотр пакетов, которые доступны для установки или уже установлены, а также
1000 для поиска разделов, приоритетов, описания пакетов и т.д.
1001 <p>
1002 Но... наша цель состоит в изучении самого APT. Так как же найти имя пакета,
1003 который вам надо установить?
1004 <p>
1005 Для такой задачи мы располагаем несколькими ресурсами. Начнем с
1006 <tt>apt-cache</tt>. Эта программа используется системой APT для управления
1007 ее базами данных. Мы только вкратце оглядим ее более практические приложения.
1008
1009 <sect id="cache">Нахождение имен пакетов
1010 <p>
1011 Например, допустим, что вы хотите вспомнить старые добрые денечки
1012 Atari 2600. Вы хотите использовать APT для установки эмулятора Atari и
1013 скачивания некоторых игр. Можете сделать так:
1014
1015 <example>
1016 [root]@[/] # apt-cache search atari
1017 atari-fdisk-cross - Partition editor for Atari (running on non-Atari)
1018 circuslinux - The clowns are trying to pop balloons to score points!
1019 madbomber - A Kaboom! clone
1020 tcs - Character set translator.
1021 atari800 - Atari emulator for svgalib/X/curses
1022 stella - Atari 2600 Emulator for X windows
1023 xmess-x - X binaries for Multi-Emulator Super System
1024 </example>
1025
1026 Мы нашли несколько пакетов, имеющих отношение к тому, что нам требуется,
1027 вместе с краткими описаниями. Чтобы посмотреть более полные описания,
1028 можно дать команду:
1029
1030 <example>
1031 [root]@[/] # apt-cache show stella
1032 Package: stella
1033 Priority: extra
1034 Section: non-free/otherosfs
1035 Installed-Size: 830
1036 Maintainer: Tom Lear &lt;tom@trap.mtview.ca.us&gt;
1037 Architecture: i386
1038 Version: 1.1-2
1039 Depends: libc6 (>= 2.1), libstdc++2.10, xlib6g (>= 3.3.5-1)
1040 Filename: dists/potato/non-free/binary-i386/otherosfs/stella_1.1-2.deb
1041 Size: 483430
1042 MD5sum: 11b3e86a41a60fa1c4b334dd96c1d4b5
1043 Description: Atari 2600 Emulator for X windows
1044 Stella - это portable emulator of the old Atari 2600 video-game console
1045 written in C++. You can play most Atari 2600 games with it. The latest
1046 news, code and binaries for Stella can be found at:
1047 http://www4.ncsu.edu/~bwmott/2600
1048 </example>
1049
1050 В этом выводе мы получили множество сведений о пакете, который вы хотите
1051 (или не хотите) установить, вместе с полным описанием пакета. Если пакет
1052 уже установлен в системе или есть более новая версия, то вы увидите
1053 информацию об обоих версиях. Например:
1054
1055 <example>
1056 [root]@[/] # apt-cache show lilo
1057 Package: lilo
1058 Priority: important
1059 Section: base
1060 Installed-Size: 271
1061 Maintainer: Russell Coker &lt;russell@coker.com.au&gt;
1062 Architecture: i386
1063 Version: 1:21.7-3
1064 Depends: libc6 (>= 2.2.1-2), debconf (>=0.2.26), logrotate
1065 Suggests: lilo-doc
1066 Conflicts: manpages (<<1.29-3)
1067 Filename: pool/main/l/lilo/lilo_21.7-3_i386.deb
1068 Size: 143052
1069 MD5sum: 63fe29b5317fe34ed8ec3ae955f8270e
1070 Description: LInux LOader - The Classic OS loader can load Linux and others
1071 This Package contains lilo (the installer) and boot-record-images to
1072 install Linux, OS/2, DOS and generic Boot Sectors of other OSes.
1073 .
1074 You can use Lilo to manage your Master Boot Record (with a simple text screen)
1075 or call Lilo from other Boot-Loaders to jump-start the Linux kernel.
1076
1077 Package: lilo
1078 Status: install ok installed
1079 Priority: important
1080 Section: base
1081 Installed-Size: 190
1082 Maintainer: Vincent Renardias &lt;vincent@debian.org&gt;
1083 Version: 1:21.4.3-2
1084 Depends: libc6 (>= 2.1.2)
1085 Recommends: mbr
1086 Suggests: lilo-doc
1087 Description: LInux LOader - The Classic OS loader can load Linux and others
1088 This Package contains lilo (the installer) and boot-record-images to
1089 install Linux, OS/2, DOS and generic Boot Sectors of other OSes.
1090 .
1091 You can use Lilo to manage your Master Boot Record (with a simple text screen)
1092 or call Lilo from other Boot-Loaders to jump-start the Linux kernel.
1093 </example>
1094
1095 Обратите внимание, что первый в списке - доступный пакет, а второй - уже
1096 установленный. Для получения более общей информации о пакете, вы можете
1097 использовать:
1098
1099 <example>
1100 [root]@[/] # apt-cache showpkg penguin-command
1101 Package: penguin-command
1102 Versions:
1103 1.4.5-1(/var/lib/apt/lists/download.sourceforge.net_debian_dists_unstable_main_binary-i386_Packages)(/var/lib/dpkg/status)
1104
1105 Reverse Depends:
1106 Dependencies:
1107 1.4.5-1 - libc6 (2 2.2.1-2) libpng2 (0 (null)) libsdl-mixer1.1 (2 1.1.0) libsdl1.1 (0 (null)) zlib1g (2 1:1.1.3)
1108 Provides:
1109 1.4.5-1 -
1110 Reverse Provides:
1111 </example>
1112
1113 А чтобы посмотреть только его зависимости:
1114
1115 <example>
1116 [root]@[/] # apt-cache depends penguin-command
1117 penguin-command
1118 Depends: libc6
1119 Depends: libpng2
1120 Depends: libsdl-mixer1.1
1121 Depends: libsdl1.1
1122 Depends: zlib1g
1123 </example>
1124
1125 В общем, мы имеем полный арсенал для поиска имен нужных нам пакетов.
1126 </sect>
1127
1128 <sect id="dpkg-search">Применение dpkg для поиска имен пакетов
1129 <p>
1130 Один из способов найти имя пакета - знать имя какого-либо важного файла,
1131 находящегося в этом пакете. Например, чтобы найти пакет, которому принадлежит
1132 некий файл <tt>".h"</tt>, нужный вам для компиляции, может запустить:
1133
1134 <example>
1135 [root]@[/] # dpkg -S stdio.h
1136 libc6-dev: /usr/include/stdio.h
1137 libc6-dev: /usr/include/bits/stdio.h
1138 perl: /usr/lib/perl/5.6.0/CORE/nostdio.h
1139 </example>
1140
1141 или:
1142
1143 <example>
1144 [root]@[/] # dpkg -S /usr/include/stdio.h
1145 libc6-dev: /usr/include/stdio.h
1146 </example>
1147
1148 Чтобы найти имя пакета, установленного в вашей системе, что полезно,
1149 например, если вы планируете почистить место на диске, дайте команду:
1150
1151 <example>
1152 [root]@[/] # dpkg -l | grep mozilla
1153 ii mozilla-browse 0.9.6-7 Mozilla Web Browser
1154 </example>
1155
1156 Проблема этой команды в том, что она может "испортить" имя пакета. В примере
1157 выше, полное имя пакета <tt>mozilla-browser</tt>. Чтобы это исправить,
1158 вы можете изменить значение переменной окружения <tt>COLUMNS</tt>:
1159
1160 <example>
1161 [kov]@[couve] $ COLUMNS=132 dpkg -l | grep mozilla
1162 ii mozilla-browser 0.9.6-7 Mozilla Web Browser - core and browser
1163 </example>
1164
1165 или использовать описание или часть его следующим образом:
1166
1167 <example>
1168 [root]@[/] # apt-cache search "Mozilla Web Browser"
1169 mozilla-browser - Mozilla Web Browser
1170 </example>
1171 </sect>
1172
1173 <sect id="auto-apt">Установка пакетов "по запросу"
1174 <p>
1175 Вы собираете пакет, и вдруг, бах! Ошибка из-за того, что нет какого-то там
1176 нужного файла <tt>.h</tt>. От такого поворота событий вас может спасти
1177 программа <prgn>auto-apt</prgn>. Она запрашивает какие пакеты установить,
1178 если они нужны, останавливает соответствующий процесс и продолжает его после
1179 установки пакета.
1180 <p>
1181 Для этого, в основном, запустите:
1182
1183 <example>
1184 auto-apt run command
1185 </example>
1186
1187 Где `command' - это команда, при выполнении которой может обнаружиться
1188 отстутствие некоего файла. Например:
1189
1190 <example>
1191 auto-apt run ./configure
1192 </example>
1193
1194 Она запросит установку необходимых пакетов и вызовет apt-get автоматически.
1195 Если вы работаете в X, то графический интерфейс будет по умолчанию заменен на
1196 текстовый.
1197 <p>
1198 Auto-apt сохраняет базы данных в обновленном состоянии, чтобы быть более
1199 эффективной. Это достигается вызовом команд
1200 <tt>auto-apt update</tt>, <tt>auto-apt updatedb</tt> и
1201 <tt>auto-apt update-local</tt>.
1202 </sect>
1203
1204 <sect id="apt-file">Как определить, какому пакету принадлежит файл
1205 <p>
1206 Если вы хотите установить пакет и не можете найти его название с
1207 помощью <prgn>apt-cache</prgn>, но знаете имя программы этого пакета
1208 или имя любого другого файла из этого пакета, то для поиска имени пакета
1209 вы можете воспользоваться программой <prgn>apt-file</prgn>. Используется
1210 она примерно так:
1211
1212 <example>
1213 $ apt-file search <var>имя-файла</var>
1214 </example>
1215
1216 Работает она примерно также как и <tt>dpkg -S</tt>, но будет показывать
1217 также и неустановленные пакеты, которые содержат указанный файл.
1218 Команда может применяться также для поиска заголовочных файлов,
1219 которые могут потребоваться при компиляции программ, хотя
1220 <prgn>auto-apt</prgn> в данном случае более хорош, см. <ref id="auto-apt">.
1221 <p>
1222 Также вы может посмотреть список файлов в пакете командой:
1223
1224 <example>
1225 $ apt-file list <var>имя-пакета</var>
1226 </example>
1227
1228 <prgn>apt-file</prgn> хранит базу данных, в которой отслеживает какие файлы
1229 содержат пакеты также, как это делает auto-apt и ему нужно ее
1230 обновлять. Это делается так:
1231
1232 <example>
1233 # apt-file update
1234 </example>
1235
1236 По умолчанию, <prgn>apt-file</prgn> использует базу данных
1237 <prgn>auto-apt</prgn>, см. <ref id="auto-apt">.
1238
1239 </sect>
1240
1241 <sect id="apt-listchanges">Как получить информацию об изменениях в пакете.
1242 <p>
1243 Каждый пакет устанваливает в свой каталог документации
1244 (<tt>/usr/share/doc/packagename</tt>) файл, называемый
1245 <tt>changelog.Debian.gz</tt>, который содержит список изменений, сделанных в
1246 пакете в последней версии. Вы можете прочесть эти файлы, например, утилитой
1247 <tt>zless</tt>', но в общем-то не слишком удобно после полного обновления
1248 системы искать changelog`и для каждого обновленного пакета.
1249 <p>
1250 Можно автоматизировать эту задачу с помощью инструмента
1251 <prgn>apt-listchanges</prgn>. Для начала надо установить пакет
1252 <package>apt-listchanges</package>. В течение инсталляции, Debconf настроит
1253 его. Отвечайте на вопросы так, как вам будет удобнее.
1254 <p>
1255 Опция "Should apt-listchanges be automatically run by apt?" очень полезна,
1256 так как показывает список изменений, сделанных в каждом установленном при
1257 обновлении пакете, и позволяет вам проанализировать ситуацию перед тем, как
1258 продолжить. Опция "Should apt-listchanges prompt for confirmation after
1259 displaying changes?" запрашивает у вас разрешения продолжать после чтения
1260 списка изменений. Если вы скажете, что не хотите продолжать, то
1261 apt-listchanges вернет ошибку и apt прервет установку.
1262 <p>
1263 После установки apt-listchanges, как только пакеты скачаются
1264 (или будут получены с CD или смонтированного диска) с помощью apt, можно
1265 будет смотреть списки изменений, сделанных в ранее установленных пакетах.
1266 </sect>
1267 </chapt>
1268
1269 <chapt id="sourcehandling">Работа с пакетами исходных текстов
1270 <sect id="source">Скачивание пакетов исходных текстов
1271 <p>
1272 В мире свободного ПО общепринято изучать исходный код или доже делать
1273 исправления ошибок. Чтобы это делать, вы должны скачать исходный текст
1274 программ. Система APT предлагает легкий путь для получения исходных текстов
1275 пакетов для множества программ, составляющих дистрибутив, включая все файлы,
1276 необходимые для создания .deb-файлов программ.
1277 <p>
1278 Другой способ использования исходных текстов в Debian - адаптация более
1279 новых версий программ из, например, нестабильного дистрибутива для
1280 использования со стабильным дистрибутивом. Сборка пакета в среде
1281 стабильного дистрибутива обечпечит генерацию .deb с зависимостями,
1282 соответствующими пакетам, доступным в дистрибутиве.
1283 <p>
1284 Для этого запись <tt>deb-src</tt> в вашем файле
1285 <tt>/etc/apt/sources.list</tt> должна указывать на нестабильный дистрибутив.
1286 Она должна быть разрешена (раскомментирована). См. раздел
1287 <ref id="sources.list">.
1288 <p>
1289 Для скачивания пакетов исходных текстов рекомендуется использовать команду:
1290
1291 <example>
1292 $ apt-get source packagename
1293 </example>
1294 Команда должна скачать три файла: <tt>.orig.tar.gz</tt>,
1295 <tt>.dsc</tt> и <tt>.diff.gz</tt>. В случае, если пакеты создавались
1296 исключительно для Debian, последний из них не скачивается и первый файл не
1297 имеет вставки <tt>"orig"</tt> в своем имени.
1298 <p>
1299 Файл <tt>.dsc</tt> пользуется командой dpkg-source для распаковки пакета
1300 исходных текстов в каталог <var>packagename-version</var>. Внутри каждого
1301 скачанного пакета исходных текстов есть каталог <tt>debian/</tt>, который
1302 содержит файлы, необходимые для создания пакета .deb.
1303 <p>
1304 Для автоматического построения пакета из скачиваемых исходных текстов просто
1305 укажите ключ <tt>-b</tt> в командной строке, примерно так:
1306
1307 <example>
1308 $ apt-get -b source имяпакета
1309 </example>
1310
1311 Если вы рашаете не создавать .deb при скачивани, то вы можете создать его
1312 позже командой:
1313
1314 <example>
1315 $ dpkg-buildpackage -rfakeroot -uc -b
1316 </example>
1317
1318 из каталога, который был создан для пакета после скачивания.
1319 <p>
1320 Есть разница между методом <tt>source</tt> команды <prgn>apt-get</prgn> и
1321 ее другими методами. Метод <tt>source</tt> может быть использован обычными
1322 пользователями, без необходимости иметь права root. Файлы скачиваются
1323 в каталог, из которого вызывается команда <tt>apt-get source package</tt>.
1324 </sect>
1325
1326 <sect id="build-dep">Пакеты, необходимые для компиляции пакетов исходных текстов
1327 <p>
1328 Обычно, для того, чтобы пакет можно было собрать, нужны некоторые
1329 заголовочные файлы и совместно-используемые библиотеки. Все пакеты
1330 исходных текстов имеют в своих управляющих файлах поле 'Build-Depends:',
1331 которое указывает дополнительные пакеты, которые необходимы для построения
1332 пакета из исходных текстов.
1333 <p>
1334 APT имеет простой метод скачивания этих пакетов. Просто запустите
1335 <tt>apt-get build-dep package</tt>, где `package' - это имя пакета, который
1336 вы собираетесь построить. Например:
1337
1338 <example>
1339 [root]@[/] # apt-get build-dep gmc
1340 Reading Package Lists... Done
1341 Building Dependency Tree... Done
1342 The following NEW packages will be installed:
1343 comerr-dev e2fslibs-dev gdk-imlib-dev imlib-progs libgnome-dev libgnorba-dev
1344 libgpmg1-dev
1345 0 packages upgraded, 7 newly installed, 0 to remove and 1 not upgraded.
1346 Need to get 1069kB of archives. After unpacking 3514kB will be used.
1347 Do you want to continue? [Y/n]
1348 </example>
1349
1350 Будут установлены пакеты, необходимые для правильного построения пакета
1351 <package>gmc</package>. Важно отметить, что команда не ищет сам пакет
1352 исходных текстов. По этой причине вам потребется скачать его отдельной
1353 командой <tt>apt-get source</tt>.
1354 </sect>
1355 </chapt>
1356
1357 <chapt id="erros">Как исправлять ошибки
1358 <sect id="erros-comuns">Общие ошибки
1359 <p>
1360 Ошибки случаются зачастую из-за невнимательности пользователей. Далее будут
1361 рассмотрены несколько частых ошибок и методв их устранения.
1362 <p>
1363 Если вы получили пимерно такое сообщение при выполнении команды
1364 <tt>apt-get install package</tt>...
1365
1366 <example>
1367 Reading Package Lists... Done
1368 Building Dependency Tree... Done
1369 W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' (/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory)
1370 W: You may want to run apt-get update to correct these missing files
1371 E: Couldn't find package penguineyes
1372 </example>
1373
1374 от вы забыли запустить <tt>apt-get update</tt> после последних изменений в
1375 файле <tt>/etc/apt/sources.list</tt>.
1376 <p>
1377 Ошибка выглядит вот так:
1378
1379 <example>
1380 E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)
1381 E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
1382 </example>
1383
1384 если вы пытаетесь воспользоваться любым другим методом <prgn>apt-get</prgn>,
1385 кроме <tt>source</tt>, не имея прав root.
1386 <p>
1387 Похожие ошибки могут возникать при запске двух копий программы
1388 <prgn>apt-get</prgn> в одно и то же время, или даже если вы пытаетесь
1389 запустить <prgn>apt-get</prgn> одновременно с <prgn>dpkg</prgn>.
1390 Одновременно с другими можно запускать только метод <tt>source</tt>.
1391 <p>
1392 Если установка прервалась на середине процесса, и вы больше не можете ни
1393 установить, ни удалить пакеты, то попробуйте эти две команды:
1394
1395 <example>
1396 # apt-get -f install
1397 # dpkg --configure -a
1398 </example>
1399
1400 И затем попробуйте снова. Может потребоваться запустить вторую из
1401 вышеуказанных команд более одного раза. Это важный урок для тех любителей
1402 приключений, которые используют `unstable'.
1403
1404 </sect>
1405
1406 <sect id="help">Где мне искать помощь?
1407 <p>
1408 Если вы в тупике, посмотрите вполне доходчивую документацию для
1409 системы пакетов Debian. Вам могут помочь <tt>--help</tt>'ы и страницы
1410 руководств, также как и документация в каталоге <tt>/usr/share/doc</tt>,
1411 например, в подкаталоге <tt>/usr/share/doc/apt</tt>.
1412 <p>
1413 Если документация вас не просвещает, то попробуйте поискать ответ в
1414 списках почтовой расылки Debian. Вы можете найти более подробную информацию
1415 об указанных списках рассылки на веб-сайте Debian: <url
1416 id="http://www.debian.org" name="http://www.debian.org">.
1417 <p>
1418 Помните, что эти списки и ресурсы должны использоваться только пользователями
1419 Debian; пользователи других систем найдут лучшую поддержку в ресурсах их
1420 собственных дистрибутивов.
1421 </sect>
1422 </chapt>
1423
1424 <chapt id="distros">Какие дистрибутивы поддерживают APT?
1425 <p>
1426 Вот названия некоторых дистрибутивов, которые используют APT:
1427 <p>
1428 Debian GNU/Linux (<url id="http://www.debian.org" name="http://www.debian.org">)
1429 - это дистрибутив, в которым был разработан APT
1430 <p>
1431 Conectiva (<url id="http://www.conectiva.com.br" name="http://www.conectiva.com.br">)
1432 - это дистрибутив, который первым портировал APT для использования с rpm
1433 <p>
1434 Mandrake (<url id="http://www.mandrake.com" name="http://www.mandrake.com">)
1435 <p>
1436 PLD (<url id="http://www.pld.org.pl" name="http://pld.org.pl">)
1437 <p>
1438 Vine (<url id="http://www.vinelinux.org" name="http://www.vinelinux.org">)
1439 <p>
1440 APT4RPM (<url id="http://apt4rpm.sf.net" name="http://apt4rpm.sf.net">)
1441 <p>
1442 Alt Linux (<url id="http://www.altlinux.ru/" name="http://www.altlinux.ru/">)
1443 <p>
1444 Red Hat (<url id="http://www.redhat.com/" name="http://www.redhat.com/">)
1445 <p>
1446 Sun Solaris (<url id="http://www.sun.com/" name="http://www.sun.com/">)
1447 <p>
1448 SuSE (<url id="http://www.suse.de/" name="http://www.suse.de/">)
1449 <p>
1450 Yellow Dog Linux (<url id="http://www.yellowdoglinux.com/" name="http://www.yellowdoglinux.com/">)
1451 </chapt>
1452
1453 <chapt id="agradecimentos">Благодарности
1454 <p>
1455 Большое спасибо моим большим друзьям в проекте Debian-BR и в самом
1456 Debian, которые постоянно помогают мне и всегда придают сил для труда
1457 на благо человечества, также как и помогают мне в стремлении сохранить мир. :)
1458 <p>
1459 Также я хочу выразить свою благодарность CIPSGA за посильную помощь нашему
1460 проекту и всем свободным проектам, которые несут великие идеи.
1461 <p>
1462
1463 И особые благодарности:
1464 <p>
1465 Yooseong Yang &lt;yooseong@debian.org&gt; - за перевод руководства на
1466 Korean.
1467 <p>
1468 Michael Bramer &lt;grisu@debian.org&gt; - за предложение включить раздел
1469 о сохранении указанных версий.
1470 <p>
1471 Bryan Stillwell &lt;bryan@bokeoa.com&gt; - за различные заплаты и исправления.
1472 <p>
1473 Pawel Tecza &lt;pawel.tecza@poczta.fm&gt; - за различные исправления и
1474 польский перевод.
1475 <p>
1476 Hugo Mora &lt;h.mora@melix.com.mx&gt; - за испанский перевод.
1477 <p>
1478 Luca Monducci &lt;luca.mo@tiscali.it&gt; - за итальянский перевод.
1479 <p>
1480 Tomohiro KUBOTA &lt;kubota@debian.org&gt; - за японский перевод.
1481 <p>
1482 Pablo Lorenzzoni &lt;spectra@debian.org&gt; - за написание раздела о
1483 netselect.
1484 <p>
1485 Steve Langasek &lt;vorlon@netexpress.net&gt; - за перевод руководства на
1486 английский.
1487 <p>
1488 Arnaldo Carvalho de Melo &lt;acme@conectiva.com.br&gt; - за вклад в список
1489 дополнительных дистрибутивов, которые сейчас работают с APT:
1490 Mandrake, PLD и Vine.
1491 <p>
1492 Erik Rossen &lt;rossen@freesurf.ch&gt; - за совет с переменной COLUMNS
1493 для команды dpkg -l.
1494 <p>
1495 Ross Boylan &lt;RossBoylan@stanfordalumni.org&gt; - за совет использовать
1496 -o Debug::pkgProblemResolver=yes.
1497 <p>
1498 Matt Kraai &lt;kraai@debian.org&gt; - за различные заплаты, советы и
1499 исправления.
1500 <p>
1501 Aaron M. Ucko &lt;ucko@debian.org&gt; - за вычитку и исправления.
1502 <p>
1503 Jon еslund &lt;d98-jas@nada.kth.se&gt; - за написание раздела об
1504 apt-file.
1505 </chapt>
1506
1507 <chapt id="novas">Новые версии этого руководства
1508 <p>
1509 Это руководство было создано проектом
1510 <url id="http://debian-br.cipsga.org.br" name="Debian-BR">,
1511 с целью ежедневной помощи проекту Debian.
1512 <p>
1513 Новые версии этого документа будут доступны на странице проекта
1514 <url id="http://www.debian.org/doc/ddp"
1515 name="http://www.debian.org/doc/ddp">.
1516 <p>
1517 Комментарии и критику можно отправлять прямо мне на электронную почту
1518 <email>kov@debian.org</email>.
1519 </chapt>
1520
1521 </book>
1522
1523 </debiandoc>

  ViewVC Help
Powered by ViewVC 1.1.5