Linux для пользователя
Шрифт:
вы получите перечень всех установленных в системе пакетов (перечень будет очень большим, так что лучше сразу направить вывод в фильтр more или в файл, который потом просматривать с помощью less или встроенной программы просмотра из оболочки Midnight Commander). Вы можете искать информацию об отдельном пакете или об отдельных файлах. Например, вы можете легко найти, какому пакету принадлежит файл и откуда появился. Команда
сообщит: bash-1.14.7-16.
Если вы беспокоитесь о том, что случайно удалили важный файл из установленного
Вы будете оповещены об любых аномалиях. Потом можно переустановить пакет, если это необходимо. Любые конфигурационные файлы будут сохранены.
Как видите, 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-библиотек и других изменений . Поэтому сегодня GCC расшифровывается как GNU Compiler Collection (коллекция компиляторов GNU) и содержит в себе компиляторы для языков C, C++, Objective C, Chill, Fortran, Ada и Java, а также библиотеки для этих языков (libstdc++, libgcj, …).
GNU-компилятор с языка С gcc, содержит в себе 4 основных компонента, соответствующие четырем этапам преобразования исходного кода в исполняемую программу.
Первый компонент - это препроцессор, который модифицирует исходный код программы перед компиляцией в соответствии с командами препроцессора, содержащимися в С-программе. В соответствии с этими командами выполняются простые подстановки текста. Второй - собственно компилятор, который обрабатывает исходный код и преобразует его в код на языке ассемблера. Третий компонент - ассемблер, который генерирует объектный код. И, наконец, четвертый компонент - компоновщик, который собирает исполняемый файл из файлов объектного кода. Дело в том, что большие программы обычно пишутся по частям, в виде множества отдельных файлов, содержащих исходный код соответствующей части. Компилятор обрабатывает каждый такой файл отдельно и создает отдельные объектные модули (файлы таких модулей обычно имеют расширение o). Создание единой исполняемой программы из таких модулей и является задачей компоновщика. При таком подходе, если в какой-то модуль программист вносит исправление, нет необходимости заново компилировать всю программу: достаточно откомпилировать исправленный модуль и заново запустить компоновщик.