Debian package (weight: 3)

Candidates should be able to perform package management using the Debian package tools.
Install, upgrade and uninstall Debian binary packages.
Find packages containing specific files or libraries which may or may not be installed.
Obtain package information like version, content, dependencies, package.

The following is a partial list of the used files, terms and utilities

etc/apt/sources.list
dpkg
dpkg-reconfigure
apt-get
apt-cache
aptitude

dpkg — это программное обеспечение, являющееся основой системы управления пакетами в Debian. dpkg используется для установки, удаления, и получения информации о .deb пакетах. Изначально dpkg был написан на Perl, но позже основная часть была переписана на C Яном Джексоном в 1993. Название «dpkg» — это сокращение от «Debian package».

Основы работы с менеджером пакетов dpkg
Установка пакета

# dpkg -i webmin_1.530_all.deb

Информация о пакете

# dpkg -s webmin
Package: webmin
Status: install ok installed
Priority: optional
Section: admin
Installed-Size: 89256
Maintainer: Jamie Cameron 
Architecture: all
Version: 1.530
Provides: webmin
Depends: bash, perl, libnet-ssleay-perl, openssl, libauthen-pam-perl, libpam-runtime,
libio-pty-perl, apt-show-versions
Pre-Depends: bash, perl
Conffiles:
 /etc/pam.d/webmin 7d932afdbc1605586ab8c31de78b7dc2
Description: A web-based administration interface for Unix systems.
             Using Webmin you can configure DNS, Samba, NFS, local/remote
             filesystems and more using your web browser.  After installation,
             enter the URL https://localhost:10000/ into your browser and
             login as root with your root password.

Удаление пакета

# dpkg -r webmin

Список установленных пакетов

# dpkg -l |less

Получить список файлов принадлежащих данному пакету, а также пути, куда они были установлены. Для большинства пакетов, вы можете только указать название пакета и не беспокоиться про указания конкретной версии

# dpkg -L mc

Тем менее, некоторые пакеты могут быть доступны в нескольких версиях, поэтому вам может понадобиться указать более подробную имя пакета

# dpkg -L libparted
Package `libparted' is not installed.
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.
# dpkg -L libparted1.8-10
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/libparted1.8-10
/usr/share/doc/libparted1.8-10/changelog.Debian.gz
/usr/share/doc/libparted1.8-10/copyright
/lib
/lib/libparted-1.8.so.10.0.0
/lib/libparted-1.8.so.10

К какому пакету принадлежит файл

# dpkg -S /usr/bin/nslookup
dnsutils: /usr/bin/nslookup

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

# dpkg -S /usr/bin/java
dpkg: /usr/bin/java not found.

Определяем к какому пакету принадлежит /usr/bin/java

# which java
/usr/bin/java
# ls -la $(which java)
lrwxrwxrwx 1 root root 22 Dec 10 19:14 /usr/bin/java -> /etc/alternatives/java

Так как ссылка на /etc/alternatives

# update-alternatives --display java
java - status is auto.
 link currently points to /usr/lib/jvm/java-6-openjdk/jre/bin/java
/usr/lib/jvm/java-6-openjdk/jre/bin/java - priority 1061
 slave java.1.gz: /usr/lib/jvm/java-6-openjdk/jre/man/man1/java.1.gz
/usr/bin/gij-4.3 - priority 43
/usr/lib/jvm/java-gcj/jre/bin/java - priority 1042
Current `best' version is /usr/lib/jvm/java-6-openjdk/jre/bin/java

Finally

# dpkg -S /usr/lib/jvm/java-6-openjdk/jre/bin/java
openjdk-6-jre-headless: /usr/lib/jvm/java-6-openjdk/jre/bin/java

Advanced Packaging Tool
APT — программа для установки, обновления и удаления программных пакетов в операционных системах Debian и основанных на них (Ubuntu, Edubuntu, ALTLinux и т. п.). Способна автоматически устанавливать и настраивать программы для UNIX-подобных операционных систем как из предварительно откомпилированных пакетов, так и из исходных кодов.

Основы работы с apt-get

Расположение пакетов

cat /etc/apt/sources.list
deb http://ftp.debian.org/debian lenny main contrib non-free
deb http://ftp.debian.org/debian-volatile lenny/volatile main contrib non-free
deb http://ftp.debian.org/debian-security lenny/updates main contrib non-free

Добавить репозиторий например yandex

deb http://mirror.yandex.ru/debian lenny main contrib main non-free

После редактирования файла /etc/apt/sources.list необходимо выполнить

# apt-get update

Установка пакета

# apt-get -y install mc

Удаление пакета

# apt-get -y remove mc

Удаление пакета вместе с конфигурационными файлами

# apt-get purge mc

Удаление пакета со всеми зависимости

# apt-get autoremove mc

Для обновления определенного пакета, необходимо повторно запустить apt-get install, перед обновлением пакета apt-get update

# apt-get install mc

Обновить все пакеты можно командой

# apt-get upgrade

Обновить дистрибутив

# apt-get dist-upgrade

Поиск необходимого пакета

# apt-cache search "linux loader"
lilo-doc - Documentation for LILO (LInux LOader)
lilo - LInux LOader - The Classic OS loader can load Linux and others

Загрузить пакет, но не устанавливать в папку (/var/cache/apt/archives)

# apt-get install -d mc

Удалить загруженные файлы

# apt-get clean

Вопросы LPI-I ( приблизительные )

1) You want to install a RPM packet file foobar.rpm on a debian system. What
command would you use to convert the rpm-file into debian deb format?
A. alien --to-deb foobar.rpm
B. rpmtodeb foobar.rpm
C. rpm2deb foobar.rpm
D. pcktconv --to-deb foobar.rpm
E. pcktconv -o foobar.deb foobar.rpm
2) What command would you use to get a list of all installed files coming from
a debian packet named foobar?
A. dpkg -l foobar
B. dpkg -L foobar
C. dpkg -ql foobar
D. dpkg -qL foobar
E. dpkg -q --allfiles foobar
3) You have accidentally deleted the file /usr/lib/zlib.so on a Debian system.
Which of the following commands would help you find the package that contains zlib.so?
A. dpkg -S zlib.so
B. dpkg -r zlib.so
C. dpkg -i zlib.so
D. dpkg -l zlib.so
4) Version 1.5 of your favorite instant messenging client has just been released
as a Debian package. You would like to install it while automatically
un-installing any other versions.  Which dpkg command will allow you to install
a new version of a dpkg while automatically un-installing other versions?
A. dpkg --extract
B. dpkg --install
C. dpkg --new
D. dpkg --purge

Ответы

1) The correct answer is A
alien - Convert or install an alien binary package
alien [--to-deb] [--to-rpm] [--to-tgz] [--to-slp] [options] file [...]
2) The correct answer is B
3) The correct answer is A, dpkg -S will query a file to find out which package it came from.
Answer B is incorrect because dpkg -r is used to remove packages
Answer C is incorrect since dpkg -i is used to install packages
Answer D is incorrect because dpkg -l is used to list packages, not individual files.
4) The correct answer is B, dpkg --install will install the new version
of a dpkg while removing any previous versions.
Answer A is incorrect, because while dpkg --extract
will extract a package it will not un-install other versions.
Answer C is incorrect, because dpkg --new selects the binary format, but does not install anything.
Answer D is incorrect, dpkg --purge removes packages.

Читать: Learn Linux, 101: Debian package management