KnigaRead.com/

Алексей Стахнов - Linux

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Алексей Стахнов, "Linux" бесплатно, без регистрации.
Перейти на страницу:

Опции пересборки базы данных

Общая форма команды перестроения базы данных RPM выглядит так:

rpm -rebuilddb

Для построения новой базы данных:

rpm -initdb

Этот режим поддерживает только две опции: -dbpath и -root.

Опции FTP/HTTP

RPM содержит простые клиенты FTP и HTTP для упрощения установки и изучения пакетов, доступных через Интернет. Файлы пакетов для установки, обновления и запроса могут быть указаны как FTP– или HTTP-адрес:

ftp://<user>:<password>@hostname:<port>/path/to/packagee.rpm

Если часть <password> опущена, пароль будет запрошен (по одному разу для каждой пары user/hostname). Если ни <user>, ни <password> не указаны, будет использован anonymous ftp. Во всех случаях осуществляется пассивная (PASV) пересылка по FTP.

RPM позволяет применять с адресом FTP следующие опции:

• -ftpproxy <hostname> – система <hostname> будет организована как proxy-сервер для всех пересылок, что позволяет производить FTP-соединения через firewall, использующий прокси для выхода во внешний мир. Эта опция может быть задана также настройкой макроса _ftpproxy;

• -ftpport <port> – задает номер TCP-порта, открываемого для FTP-соединений вместо порта по умолчанию. Эта опция может быть также задана настройкой макроса _ftpport.

RPM позволяет применять с адресом HTTP следующие опции:

• -httpproxy <hostname> – система <hostname> будет организована как proxy-сервер для всех пересылок, что позволяет производить HTTP-соединения через firewall, использующий прокси для выхода во внешний мир. Эта опция может быть задана также настройкой макроса _httpproxy;

• – httpport <port> – задает номер TCP-порта, открываемого для HTTP-соединений вместо порта по умолчанию. Эта опция может быть также задана настройкой макроса _httpport.

Используемые файлы

Следующие файлы необходимы при работе с пакетом RPM:

• /usr/lib/rpm/rpmrc;

• /etc/rpmrc;

• ~/.rpmrc;

• /var/state/rpm/packages;

• /var/state/rpm/pathidx;

• /var/state/ipm/nameidx;

• /tmp/rpm*.

Примеры использования консольного менеджера пакетов RPM

В предыдущем разделе мы познакомились с опциями менеджера RPM. С легкостью установки программ в Windows не сравнить. Впрочем, пользователи вряд ли применяют даже десятую часть имеющихся опций, поэтому и не следует запоминать их все. Рассмотрим, что практически используется в работе с пакетами.

Установка пакетов осуществляется с помощью команды:

rpm -i <полное_имя_пакета>

Или

rpm -i <полное_имя_пакета> <полное_имя_пакета> <полное_имя_пакета> …

Например: rpm -i срр-2. 96–85. i386.rpm Таким образом можно установить сразу несколько пакетов. Помимо удобства (сразу указывается список пакетов, и они устанавливаются сами) указание нескольких пакетов необходимо в том случае, если возникают неудовлетворенные зависимости. Попадаются пакеты, зависящие друг от друга. Без второго пакета не установить первый, а второй не устанавливается – требует установки первого. Простейшее решение – поставить пакеты командой:

rpm -i <полное_имя_пакета_1> <полное_имя_пакета_2>

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

rpm -U <полное_имя_пакета>

Эта команда производит обновление пакета, если он уже установлен, или установку, если не установлен. Однако не всегда при обновлении необходимо устанавливать отсутствующий пакет. В таких случаях можно воспользоваться командой:

rpm -F <полное_имя_пакета>

Команда проверит, есть ли в системе соответствующий пакет, и если есть – произведет его обновление. При желании установку или обновление пакетов можно производить прямо с сервера FTP. Например, в локальной сети есть FTP-сервер с именем bluewater. Ваш администратор регулярно скачивает с FTP-сервера Red Hat обновления RPM и выкладывает их на FTP-сервер локальной сети. Вот команда, с помощью которой можно обновить свои пакеты (для определенности возьмем компилятор С++):

rpm -F ftp://bluewater/pub/linux/updates/redhat-7.l/cpp-2.96–85.i386.rpm

Однако у консольного менеджера RPM есть одна неприятная особенность – в случае успешности операции он ничего не сообщает на консоль. В принципе, это нестрашно, можно задать ключ – h, который выводит процент выполнения процедуры. Например:

rpm -ih срр-2.96–85.i386.rpm

Или

rpm -ivh cpp-2.96–85.i386.rpm

Если при работе с пакетом возникнут проблемы, RPM выдаст причину, по которой невозможно выполнить какое-то действие. При установке пакета – это, как правило, уже упомянутые неудовлетворенные зависимости либо отсутствие необходимых библиотек или установленных пакетов (или они в системе есть, но не той версии). Эти проблемы решаются просто – установите соответствующие пакеты или обновите их до необходимой версии. Впрочем, бывают и здесь свои трудности. Рассмотрим еще один пример. У автора на компьютере стоит Red Hat 7.1, а в нем удобная система GNOME, использующая менеджер окон Sawfish. Все хорошо функционирует, только есть одна проблема – при сборке пакета Sawfish сборщики (американцы, им простительно) напутали с кириллическими шрифтами – системное меню вместо кириллицы отображает знаки вопроса. Был найден пакет посвежее, в котором эта оплошность убрана, да еще и функциональности добавлено. Пакет содержал исходные коды, поэтому пришлось сначала собрать его в бинарном виде командой:

rpm -rebuild Sawfish-1.0–1.src.rpm

После приблизительно пяти минут компиляции в каталоге /usr/src/redhat/RPMS/i386/ образовался пакет Sawfish, который был запущен на обновление командой:

rpm -F Sawfish

А в результате получено сообщение: «Обновление пакета не произведено, поскольку в системе уже установлен пакет версии 0.36, которая больше, чем версия 1.02». По всей видимости, сборщики пакета что-то перепутали в его описании. Пришлось воспользоваться командой:

rpm -U -force Sawfish-1.0–1.i386.rpm

которая производит принудительное обновление пакета, не проверяя зависимостей. Ключом -force, однако, следует пользоваться достаточно осторожно, можно ненароком развалить всю систему.

Встречаются иногда сообщения и другого рода. При обновлении, например, пакета с исходным кодом ядра Linux версии 2.4.2 пакетом, содержащим исходный код ядра Linux версии 2.4.3, было выдано сообщение, которое в переводе на русский язык звучит так: "Не могу удалить каталог такой-то, потому что он не пуст". Однако пакет успешно обновился, а каталог, фигурирующий в сообщении, на самом деле был пуст. Так что не стоит сразу расстраиваться, достаточно часто сообщения, выдаваемые RPM, весьма безобидны.

Удаление пакетов из системы осуществляется элементарно, с помощью команды:

rpm -е <имя_пакета>

Обратите внимание – указывается только имя пакета. Если написать полное имя пакета, то RPM выдаст сообщение: «Такой пакет в системе не установлен». Немного нелогично, но так уж исторически сложилось: при установке необходимо указывать полное имя пакета, при удалении – только имя пакета без упоминания версии, релиза и т. п.

При удалении сперва проверяются зависимости, и пакет удаляется, если от него не зависит никакой другой установленный в системе пакет. В противном случае на экран выдаются имена пакетов, для функционирования которых нужен удаляемый пакет. Конечно, если вы все-таки решили удалить пакет, можно воспользоваться ключами -nodeps или -force, однако рекомендуется применять их с большой осторожностью.

Получить информацию о том, какая версия пакета установлена в системе, можно командой:

rpm -q <имя_пакета>

Например, на запрос rpm -q срр может быть получен такой ответ: срр-2.96–85. Для получения расширенной информации о пакете необходимо выполнить команду:

rpm -qi <полное_имя_пакета>

Результат выполнения команды rpm -qi срр-2.96–85 на конкретном компьютере можно видеть ниже:

Name: срр Relocations: (not relocateable)

Version: 2.96 Vendor: Red Hat, Inc.

Release: 85 Build Date: Срд 09 Май 2001 21:04:50

Install date: Птн 31 Авг 2001 07:38:10 Build Host: porky.devel.redhat.com

Group: Development/Languages Source RPM: gcc-2.96–85.src.rpm

Size: 292618 License: GPL

Packager: Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>

URL: http://gcc.gnu.org

Summary: The С Preprocessor.

Description:

Cpp is the GNU C–Compatible Compiler Preprocessor. Cpp is a macro processor which is used automatically by the С compiler to transform your program before actual compilation. It is called a macro processor because it allows you to define macros, abbreviations for longer constructs.

The С preprocessor provides four separate functionalities: the inclusion of header files (files of declarations that can be substituted into your program); macro expansion (you can define macros, and the С preprocessor will replace the macros with their definitions throughout the program); conditional compilation (using special preprocessing directives, you can include or exclude parts of the program according to various conditions); and line control (if you use a program to combine or rearrange source files into an intermediate file which is then compiled, you can use line control to inform the compiler about where each source line originated).

You should install this package if you are а С programmer and you use macros.

Для получения списка файлов пакета (и каталогов, куда они будут установлены) используется команда:

rpm -ql <полное_имя_пакета>

Например, rpm -qi срр-2.96–85 выведет на экран следующий список файлов:

/lib/cpp

/usr/bin/cpp

/usr/lib/gcc-lib

/usr/lib/gcc-lib/i386-redhat-linux

/usr/lib/gcc-lib/i386-redhat-linux/2.96

/usr/lib/gcc-lib/i386-redhat-linux/2.96/cpp0

/usr/lib/gcc-lib/i386-redhat-linux/2.96/tradcpp0

/usr/share/info/cpp.info-1.gz

/usr/share/info/cpp.info-2.gz

/usr/share/info/cpp.info-3.gz

/usr/share/info/cpp.info.gz

/usr/share/man/manl/cpp.1.gz

А если надо произвести обратную операцию – по имени файла узнать, к какому пакету он принадлежит? Выполним следующую команду:

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*