APT HOWTO

Глава 5 - Отримання інформації про пакунки


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

Однак... нашою метою зараз є вивчення можливостей власне APT. Отже, яким чином можна знайти назву потрібного нам пакунка.

Маємо кілька варіантів вирішення цієї задачі. Почнемо з apt-cache. Ця програма використовується системою APT для супроводу своєї бази даних. Ми зробимо тільки короткий огляд її найбільш практичних застосувань.


5.1 Пошук назв пакунків

Наприклад, уявимо, що ви хочете згадати про старі добрі дні з Atari 2600. Ви маєте бажання встановити емулятор Atari і потім завантажити деякі ігри. Ви можете зробити:

# apt-cache search atari
atari-fdisk-cross - Partition editor for Atari (running on non-Atari)
circuslinux - The clowns are trying to pop balloons to score points!
madbomber - A Kaboom! clone
tcs - Character set translator.
atari800 - Atari emulator for svgalib/X/curses
stella - Atari 2600 Emulator for X windows
xmess-x - X binaries for Multi-Emulator Super System

Ми знайшли декілька пакунків, що мають певне відношення до предмету пошуку, і побачили їх короткі описи. Щоб отримати більше інформації про конкретний пакунок я після цього можу використати:

# apt-cache show stella  
Package: stella
Priority: extra
Section: non-free/otherosfs
Installed-Size: 830
Maintainer: Tom Lear <tom@trap.mtview.ca.us>
Architecture: i386
Version: 1.1-2
Depends: libc6 (>= 2.1), libstdc++2.10, xlib6g (>= 3.3.5-1)
Filename: dists/potato/non-free/binary-i386/otherosfs/stella_1.1-2.deb
Size: 483430
MD5sum: 11b3e86a41a60fa1c4b334dd96c1d4b5
Description: Atari 2600 Emulator for X windows
 Stella is a portable emulator of the old Atari 2600 video-game console
 written in C++.  You can play most Atari 2600 games with it.  The latest
 news, code and binaries for Stella can be found at:
 <http://www4.ncsu.edu/~bwmott/2600>

В цьому виводі ми дізнались багато деталей щодо пакунку, котрий хочемо (або не хочемо) встановити і переглянули повний опис пакунка. Якщо пакунок вже встановлено до вашої системи, але є його новіша версія, ви побачите інформацію про обидві версії. Наприклад:

# apt-cache show lilo
Package: lilo
Priority: important
Section: base
Installed-Size: 271
Maintainer: Russell Coker <russell@coker.com.au>
Architecture: i386
Version: 1:21.7-3
Depends: libc6 (>= 2.2.1-2), debconf (>=0.2.26), logrotate
Suggests: lilo-doc
Conflicts: manpages (<<1.29-3)
Filename: pool/main/l/lilo/lilo_21.7-3_i386.deb
Size: 143052
MD5sum: 63fe29b5317fe34ed8ec3ae955f8270e
Description: LInux LOader - The Classic OS loader can load Linux and others
 This Package contains lilo (the installer) and boot-record-images to
 install Linux, OS/2, DOS and generic Boot Sectors of other OSes.
 .
 You can use Lilo to manage your Master Boot Record (with a simple text screen)
 or call Lilo from other Boot-Loaders to jump-start the Linux kernel.

Package: lilo
Status: install ok installed
Priority: important
Section: base
Installed-Size: 190
Maintainer: Vincent Renardias <vincent@debian.org>
Version: 1:21.4.3-2
Depends: libc6 (>= 2.1.2)
Recommends: mbr
Suggests: lilo-doc
Description: LInux LOader - The Classic OS loader can load Linux and others
 This Package contains lilo (the installer) and boot-record-images to
 install Linux, OS/2, DOS and generic Boot Sectors of other OSes.
 .
 You can use Lilo to manage your Master Boot Record (with a simple text screen)
 or call Lilo from other Boot-Loaders to jump-start the Linux kernel.

Зверніть увагу, що першим в списку йде доступний пакунок, а другим — той, що вже встановлений в системі. Щоб отримати більш загальну інформацію про пакунок, можна скористатись:

# apt-cache showpkg penguin-command
Package: penguin-command
Versions: 
1.4.5-1(/var/lib/apt/lists/download.sourceforge.net_debian_dists_unstable_main_binary-i386_Packages)(/var/lib/dpkg/status)

Reverse Depends: 
Dependencies: 
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) 
Provides: 
1.4.5-1 - 
Reverse Provides:

А щоб просто знайти його залежності:

# apt-cache depends penguin-command
penguin-command
  Depends: libc6
  Depends: libpng2
  Depends: libsdl-mixer1.1
  Depends: libsdl1.1
  Depends: zlib1g

Загалом, ми маємо повний арсенал озброєнь, котрі можна використовувати для пошуку назв потрібних нам пакунків.


5.2 Використання dpkg для пошуку назв пакунків

Одним з методів пошуку назви пакунка — за відомою назвою якогось важливого файлу з нього. Наприклад, щоб знайти пакунок, котрий забезпечує певний необхідний вам для компіляції .h-файл, треба виконати:

# dpkg -S stdio.h
libc6-dev: /usr/include/stdio.h
libc6-dev: /usr/include/bits/stdio.h
perl: /usr/lib/perl/5.6.0/CORE/nostdio.h

або:

# dpkg -S /usr/include/stdio.h
libc6-dev: /usr/include/stdio.h

Дізнатись назви пакунків, встановлених в вашій системі (що може бути корисним, наприклад, якщо ви плануєте очистити ваш жорсткий диск), можна так:

# dpkg -l | grep mozilla
ii  mozilla-browse 0.9.6-7        Mozilla Web Browser

Недоліком цієї команди є „обрізання“ назв пакунків. В наведеному вище прикладі повна назва пакунку — mozilla-browser. Це можна виправити, перевизначивши змінну середовища COLUMNS, ось так:

[kov]@[couve] $ COLUMNS=132 dpkg -l | grep mozilla
ii  mozilla-browser             0.9.6-7                     Mozilla Web Browser - core and browser

або вказувати опис пакунка, чи його частину:

# apt-cache search "Mozilla Web Browser"
mozilla-browser - Mozilla Web Browser

5.3 Як встановлювати пакунки „при потребі“

Ви компілюєте програму і, раптом, бабах! Помилка — немає потрібного .h-файлу. Програма auto-apt може вберегти вас від такого розвитку подій. Вона запитує вас, чи хочете ви встановити необхідні пакунки, зупиняє відповідний процес та відновлює його після встановлення пакунків.

Все, що потрібно зробити, це запустити:

# auto-apt run command

Де command — це команда, якій під час виконання можуть знадобитись деякі недоступні файли. Наприклад:

# auto-apt run ./configure

Тоді запити щодо встановлення потрібних пакунків та виклики apt-get будуть відбуватись автоматично. Якщо у вас запущені X, графічний інтерфейс замінить звичний текстовий.

З метою більшої ефективності auto-apt повинна використовувати базу даних з найсвіжішої інформацією. Це досягається шляхом виконання команд auto-apt update, auto-apt updatedb та auto-apt update-local.


5.4 Як дізнатись до якого пакунку належить файл

Якщо ви хочете встановити пакунок, котрий не можете знайти за допомогою apt-cache, але знаєте назву самої програми або деякі назви файлів з нього, ви можете скористатись apt-file для пошуку назви пакунка. Це виглядає приблизно так:

$ apt-file search назва_пакунка

Вона працює подібно до dpkg -S, однак також покаже вам невстановлені пакунки, що містять певний файл. Її також можна використовувати під час компіляції програм для відслідковування пакунків з необхідними файлами заголовків, хоча auto-apt є набагато кращим методом для вирішення цієї проблеми, див. Як встановлювати пакунки „при потребі“.

Також можна вивести список файлів в пакунку, виконавши:

$ apt-file list назва_пакунка

apt-file, як і auto-apt, зберігає всю необхідно інформацію (про те, які файли в якому пакунку знаходяться), в базі даних, котру потрібно оновлювати. Це робиться так:

# apt-file update

Зазвичай, apt-file використовує ту ж саму базу даних, що й auto-apt (див. Як встановлювати пакунки „при потребі“).


5.5 Як залишатись проінформованим про зміни в пакунках

Кожен пакунок встановлює в свою теку для документації (/usr/share/doc/packagename) файл під назвою changelog.Debian.gz, що містить список змін, зроблених в останній версії. Ви можете прочитати ці файли за допомогою, наприклад, zless, але це трохи нецікаво після завершення оновлення системи займатись пошуками журналів змін для кожного оновленого пакунка.

За допомогою інструменту apt-listchanges цю задачу можна автоматизувати. Для початку потрібно встановити пакунок apt-listchanges. Під час встановлення Debconf його налаштує. Деякі питання, можливо, не будуть відображатись, в залежності від того, який пріоритет ви вказали при налаштуванні самого Debconf. Давайте такі відповіді на питання, які вам більше довподоби.

Спочатку вас запитають, яким чином apt-listchanges інформуватиме вас про зміни. Їх можуть відсилати вам електронною поштою, що, вочевидь, виглядає доцільним при автоматичних оновленнях, або ви можете переглядати ці зміни за допомогою чогось схожого на less перед тим як почнеться власне процес оновлення пакунків. Якщо ви не хочете, щоб apt-listchanges запускалась автоматично під час оновлень системи, можете вибрати варіант відповіді none.

Після встановлення apt-listchanges, як тільки apt завантажить пакунки (або візьме їх з компакт-диску, або з підмонтованому диску), apt-listchanges виведе список змін, внесених до пакунків, перед їх встановленням.