Читать интересную книгу Linux для пользователя - Виктор Костромин

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 74 75 76 77 78 79 80 81 82 ... 149

Программа rpm позволяет выяснить, какие файлы установит тот или иной пакет. Для этого надо дать следующую команду (только учтите, что текущим должен быть каталог, содержащий интересующий вас пакет):

[root]# rpm -qpl имя_rpm-архива

А для получения информации о том, для чего служит ПО, содержащееся в rpm-пакете, используйте команду

[root]# rpm -qpi имя_rpm-архива

Дело в том, что файлы RPM кроме собственно архива файлов содержат информацию о пакете, включая имя, версию и краткое описание. С помощью той же программы rpm вы можете просмотреть эту дополнительную информацию. Например, для пакета glib-1.0.6-3.i386.rpm вывод команды

[root]# rpm -qpi glib-1.0.6-3.i386.rpm

будет примерно таким:

Name: glib Relocations: (not relocateable)

Version: 1.0.6 Vendor: Red Hat Software

Release: 3 Build Date: Суб 10 Окт 1998 04:49:03

Install date: (not installed)

Build Host: porky.redhat.com

Group: Libraries Source RPM: glib-1.0.6-3.i386.rpm

Size: 55305

Packager: Red Hat Software ‹[email protected]›

Summary: Handy library of utility functions

Description: Handy library of utility functions. Development libs and headers are in gtk+-devel.

Если дать команду:

[root]# rpm -qpl glib-1.0.6-3.i386.rpm

будет выдан список входящих в пакет файлов с указанием того, куда они будут установлены:

/usr/lib/libglib.so.1

/usr/lib/libglib.so.1.0.6

RPM также предоставляет мощную систему запросов по установленным в системе пакетам. По команде

[root]# rpm -qа

вы получите перечень всех установленных в системе пакетов (перечень будет очень большим, так что лучше сразу направить вывод в фильтр more или в файл, который потом просматривать с помощью less или встроенной программы просмотра из оболочки Midnight Commander). Вы можете искать информацию об отдельном пакете или об отдельных файлах. Например, вы можете легко найти, какому пакету принадлежит файл и откуда появился. Команда

[root]# rpm -qf /etc/bashrc

сообщит: bash-1.14.7-16.

Если вы беспокоитесь о том, что случайно удалили важный файл из установленного пакета, просто проверьте это:

[root]# rpm -Va

Вы будете оповещены об любых аномалиях. Потом можно переустановить пакет, если это необходимо. Любые конфигурационные файлы будут сохранены.

Как видите, rpm это очень полезная утилита, и у нее имеется много разных опций. Выше приведено только несколько примеров. Всего rpm имеет 16 основных режимов работы, которые можно объединить в 6 групп (после двоеточия приводится формат команды для соответствующего режима).

Запросы.

• Запрос: rpm [-query] [queryoptions]

• Показать метки запросов (Querytags): rpm [-querytags]

Установка и поддержка установленных пакетов.

• Установка: rpm [-install] [installoptions] [package_file]+

• Обновление: rpm [-freshen|-F] [installoptions] [package_file]+

• Деинсталляция: rpm [-uninstall|-e] [uninstalloptions] [package]+

• Проверка: rpm [-verify|-V] [verifyoptions] [package]+

Подписи (пакеты подписываются электронной цифровой подписью в формате PGP, с целью обеспечения неизменяемости и сохранения авторства пакетов).

• Проверка подписи: rpm [-verify|-V] [verifyoptions] [package]+

• Переподписывание: rpm [-resign] [package_file]+

• Добавление подписи: rpm [-addsign] [package_file]+

Работа с базой.

• Инициализация базы: rpm -i [-initdb]

• Обновление базы (Rebuild Database): rpm -i [-rebuilddb]

Создание rpm-пакетов.

• Создать пакет: rpm [-b|t] [package_spec]+

• Перекомпилировать пакет: rpm [-rebuild] [sourcerpm]+

• Скомпилировать пакет из tar-архива: rpm [-tarbuild] [tarredsource]+

Разное.

• Показать конфигурацию программы rpm: rpm [-showrc]

• Задать пользователей: rpm [-setperms] [package]+

• Задать группы: rpm [-setgids] [package]+

Подробное описание всех возможностей команды rpm выходит за рамки нашей книги Его вы можете найти в RPM-HOWTO, на страницах man и info. Кроме того, большой раздел о программе rpm имеется в книге [П1.3].

Примечание

Как и другие программы для Linux, программа rpm постоянно развивается и совершенствуется. При этом при замене версии этой программы могут возникнуть трудности с установкой пакетов, созданных в предыдущих версиях. Так было, например, при переходе с третьей на четвертую версию rpm. Так что надо использовать пакеты, соответствующие установленной у вас версии программы.

Приведенное выше описание программы rpm предполагает, что она запускается с консоли или в эмуляторе терминала. Между тем в разных дистрибутивах имеются графические оболочки для управления rpm-пакетами. В составе графической среды KDE такая оболочка называется kpackage. Вы можете запустить ее либо из командной строки, либо из основного меню KDE. Однако, на мой взгляд, она не дает никаких преимуществ по сравнению с работой из командной строки. Кроме того, она описана в книге А.Федорчука "Офис, графика, Web в Linux" [П1.6], так что я не буду тратить время на ее рассмотрение.

10.3. Компиляция ПО из исходных текстов

Если rpm-пакеты с необходимым вам программным обеспечением нужно еще поискать (и не всегда можно найти), то tar-gz-архив любого ПО для Linux найдется в Интернете непременно. В некоторых случаях такие архивы содержат исполняемые модули приложений. Тогда установка приложения лишь немного сложнее, чем в случае установки из rpm-пакета: необходимо просто развернуть архив с помощью программ gunzip и tar, перейти в созданный каталог и можно уже запускать полученное приложение. Но чаще всего приложения поставляются в исходных текстах, т. е. в виде программы на языке Си. Установить их в этом случае немного сложнее, хотя и тут нет ничего невозможного даже для начинающего пользователя. Давайте рассмотрим, как это делается.

10.3.1. Необходимые сведения о программировании на языке Си

Начать стоит с того, что операционная система UNIX родилась на свет одновременно с языком программирования C (Си). Более того, язык C был создан специально для разработки этой ОС, значительная часть UNIX была написана на языке С. ОС Linux тоже написана на Си. Поэтому, а также в соответствии с принципом свободного распространения исходных кодов, многие приложения для Linux распространяются в виде текстов на С (а в последнее время - и на С++). Естественно, что для установки и запуска такого приложения на исполнение, его необходимо предварительно скомпилировать. Для выполнения процедур компиляции обычно используется программа gcc (хотя существуют и некоторые альтернативные разработки).

Примечание

Изначально аббревиатура GCC имела смысл GNU C Compiler, но в апреле 1999 года сообщество GNU решило взять на себя более сложную миссию и начать создание компиляторов для новых языков с новыми методами оптимизации, поддержкой новых платформ, улучшенных runtime-библиотек и других изменений (http://gcc.gnu.org/gccmission.html). Поэтому сегодня GCC расшифровывается как GNU Compiler Collection (коллекция компиляторов GNU) и содержит в себе компиляторы для языков C, C++, Objective C, Chill, Fortran, Ada и Java, а также библиотеки для этих языков (libstdc++, libgcj, …).

GNU-компилятор с языка С gcc, содержит в себе 4 основных компонента, соответствующие четырем этапам преобразования исходного кода в исполняемую программу.

Первый компонент - это препроцессор, который модифицирует исходный код программы перед компиляцией в соответствии с командами препроцессора, содержащимися в С-программе. В соответствии с этими командами выполняются простые подстановки текста. Второй - собственно компилятор, который обрабатывает исходный код и преобразует его в код на языке ассемблера. Третий компонент - ассемблер, который генерирует объектный код. И, наконец, четвертый компонент - компоновщик, который собирает исполняемый файл из файлов объектного кода. Дело в том, что большие программы обычно пишутся по частям, в виде множества отдельных файлов, содержащих исходный код соответствующей части. Компилятор обрабатывает каждый такой файл отдельно и создает отдельные объектные модули (файлы таких модулей обычно имеют расширение o). Создание единой исполняемой программы из таких модулей и является задачей компоновщика. При таком подходе, если в какой-то модуль программист вносит исправление, нет необходимости заново компилировать всю программу: достаточно откомпилировать исправленный модуль и заново запустить компоновщик.

Для выполнения стандартных операций программист может использовать функции из стандартных библиотек. Самый характерный пример - это библиотека libc, которая содержит функции, выполняющие такие задачи, как управление памятью и операции ввода-вывода. Программисты могут создать свои собственные библиотеки и использовать их при написании новых программ.

Библиотеки бывают статическими, разделяемыми и динамическими. Статическая библиотека - это библиотека, код которой встраивается в программу при компиляции. Код разделяемой библиотеки не встраивается в программу, а загружается в память одновременно с программой и программа получает доступ к функциям этой библиотеки. Динамические библиотеки - разновидность разделяемых, но библиотечные функции загружаются в память только тогда, когда из программы поступит вызов соответствующей функции. В процессе выполнения программы они могут выгружаться и заменяться другими функциями из той же или другой библиотеки. Имена статических библиотек обычно имеют суффикс.a, а имена разделяемых библиотек - суффикс.so, за которым следует старший и младший номера версии. Имя может быть любой строкой, которая однозначно характеризует библиотеку. Обычно имена библиотек начинаются с lib. Примеры: libm.so.5 - общая математическая библиотека, libX11.so.6 - библиотека для работы с системой X Window. Библиотека libc.so.5 компонуется автоматически, в то время как большинство других библиотек необходимо явно указывать в командной строке при вызове программы gcc. Это делается через опцию -l, за которой следует уникальная часть имени библиотеки, например, для вызова математической библиотеки достаточно указать -lm.

1 ... 74 75 76 77 78 79 80 81 82 ... 149
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Linux для пользователя - Виктор Костромин.
Книги, аналогичгные Linux для пользователя - Виктор Костромин

Оставить комментарий