В дистрибутивах Linux программное обеспечение разделено на пакеты, которые можно инсталлировать независимо друг от друга. При установке системы на новый компьютер пользователь выбирает группу “стартовых” пакетов, копируемых в систему.
Подобный подход упрощает многие аспекты системного конфигурирования и является одним из ключевых преимуществ Linux в сравнении с традиционными разновидностями UNIX. К сожалению, он же усложняет задачу описания дистрибутивов, поскольку не всегда ясно, какие пакеты являются “частью” того или иного дистрибутива. Можно ли считать таковым пакет, если он есть на инсталляционном компакт-диске, но не устанавливается по умолчанию? А если он имеется на дополнительных компакт-дисках, которые прилагаются к “профессиональной” версии дистрибутива?
В этой статье я в основном описываю стандартный вариант инсталляции демонстрационных дистрибутивов. Если говорится о том, что такой-то пакет отсутствует в стандартном варианте инсталляции, то это не означает, что его вообще нет в системе или он не поддерживается в данном дистрибутиве. Ниже рассказывается о том, как узнать, что входит в дистрибутив, и как достать то, чего в нем нет.
В первую очередь воспользуйтесь командой which
, чтобы определить, “прописана” ли нужная утилита в строке поиска (переменная среды PATH
). Например, следующая команда сообщает о том, что компилятор GNU C инсталлирован в каталоге /usr/sbin
:
$ which gcc
/usr/bin/gcc
Если команда which
не помогла, воспользуйтесь командой whereis
, которая ведет поиск в системных каталогах без учета строки поиска. Учтите также, что в некоторых системах команда which
не отображает файлы, для которых отсутствует право выполнения. Например:
$ which ipppd
/usr/bin/which: no ipppd in (/bin:/usr/bin:/sbin:/usr/sbin)
или:
$ whereis ipppd ipppd: /usr/sbin/ipppd $ ls -l /usr/sbin/ipppd
-rwx----- 1 root root 124924 Aug 3 2000 /usr/sbin/ipppd
Другой вариант — это чрезвычайно удобная команда locate
, которая просматривает предварительно скомпилированный индекс файловой системы в поиске имен файлов, соответствующих заданному шаблону.
С ее помощью можно искать не только программы или пакеты, но и файлы любых типов. Например, если не известно точно, где искать файл заголовков signal.h
(в нем содержатся определения сигналов Linux), попробуйте поступить так:
$ locate signal.h
/usr/include/asm/signal.h
/usr/include/linux/signal.h
/usr/include/signal.h
/usr/include/sys/signal.h
База данных команды locate
обычно регенерируется каждую ночь командой updatedb
, которая запускается демоном cron. Следовательно, результаты работы команды locate
не всегда отражают последние изменения в системе.
Если известно имя искомого пакета, воспользуйтесь системными утилитами обработки пакетов, которые непосредственно проверят наличие пакета. Например, в Red Hat, Fedora и SUSE следующая команда определяет наличие интерпретатора языка Python:
$ rpm -q python python-1.5.2-27
Если нужный пакет не инсталлирован, прежде всего, его следует поискать с помощью системы автоматического управления пакетами данного дистрибутива. Все дистрибутивы поддерживают ту или иную форму системы обновления старых и поиска новых пакетов в Internet. Наиболее распространенными системами являются yum
и APT
.
Например, в системе Debian, в которой использована APT
, для получения и установки последней версии Python можно использовать следующую команду:
$ apt-get install python
Программное обеспечение для Linux создается независимыми группами разработчиков, выпускающих программы в виде исходных кодов. Авторы дистрибутивов затем берут исходные коды, компилируют их в соответствии с особенностями конкретной системы и включают в дистрибутив полученные бинарные файлы. Как правило, намного проще инсталлировать бинарную версию пакета, предназначенную для данного дистрибутива, чем искать и компилировать исходный код. Но нужно учитывать, что иногда авторы дистрибутивов на один-два выпуска отстают от текущей версии пакета.
Если в двух дистрибутивах используется одна и та же система обработки пакетов, то это еще не означает, что пакеты обоих дистрибутивов будут взаимозаменяемыми. Например, в Red Hat и SUSE применяется система RPM, однако структура их файловых систем неодинакова. Рекомендуется всегда пользоваться пакетами, созданными для конкретного дистрибутива.
Если поиск не дал результатов, посетите какой-нибудь Web-архив программ, например freshmeat.net, или просто введите имя пакета в поисковой системе Google.