К основному контенту

LINUX. Как устанавливать программы?


Пришедшие в Linux бывшие пользователи ОС Windows пытаются использовать свои старые привычки. В том числе, и в установке программного обеспечения. Часто новички задаются вопрос о том, как запустить в Linux .exe файл, чтобы установить любимый Photoshop. Между тем, установка ПО в операционных системах семейства *nix достаточно сильно отличается. Поговорим об этом.
В *nix-системах программное обеспечение распространяется в так называемых пакетах, которые могут быть установлены отдельно друг от друга. Инсталлируя на компьютер новую ОС, пользователь обладает возможностью выбора групп пакетов, которые с самого начала будут установлены в системе.

Подобный подход упрощает администрирование и является одним их конкурентных преимуществ систем *nix не только перед Microsoft Windows, но и перед рядом систем UNIX-семейства.
Этот же подход порождает неразбериху в деле описания дистрибутивов. В данном случае, совершенно непонятно, что считать, а что не считать частью той или иной операционной системы. Например, пакет java присутствует на установочном диске, но не ставится по умолчанию. Входит ли он в дистрибутив? А если этот пакет можно скачать после установки из репозитария?
Оговоримся, что мы будем рассматривать тот или иной дистрибутив в его стандартной инсталляции. Но если мы будем говорить, что такой-то пакет не устанавливается по умолчанию, это не значит, что его вообще нет.
Для того чтобы узнать, есть ли необходимый пакет в системе, в первую очередь, следует использовать команду which, которая помогает выяснить, указана ли нужная команда в переменной среды PATH.

Пример.

Пакет установлен:

[ilya@localhost ~]$ which firefox
/usr/bin/firefox

Пакет не установлен:

[ilya@localhost ~]$ which flick
which: no flick in (/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin/:/usr/games:/usr/lib/qt4/bin:/usr/bin:/opt/kde3/bin:/home/ilya/bin)

Если данная команда which не нашла утилиты, это еще не означает, что ее вообще нет в системе. Можно воспользоваться командой whereis, которая ищет нужные файлы во всех системных каталогах. В ряде дистрибутивов эта команда не находит файлы, не помеченные как исполняемые.

[ilya@localhost ~]$ whereis ppp
ppp: /etc/ppp
[ilya@localhost ~]$ whereis pptp
pptp: /usr/sbin/pptp /etc/pptp.d

Можно воспользоваться не менее эффективной командой locate, которая проводит поиск в специально собранном файле-индексе файловой системы в соответствии с маской, заданной пользователем дистрибутива. Она способна проводить поиск не только утилит или пакетов, но и файлы практически любых других типов, находящихся в системе.
Например, вы хотите узнать, где находится файл rc.local, но не хотите перебирать все папки в системном разделе. Тогда команда будет выглядеть так:

[ilya@localhost ~]$ locate rc.local
/etc/rc.local
/etc/rc.d/rc.local

Как видите, система нашла целых два файла с таким названием.
Недостаток команды locate вытекает из ее достоинства: она проводит поиск по базе, которая пересоздается ночью командой updatdb, приводимую в действие демоном cron. Поэтому новые файлы не могут быть найдены, пока база не будет пересоздана. Если вы точно знаете, что файлы в системе есть — ничто не мешает вам регенерировать базу командой udatedb вручную. Команда должна запускаться от имени суперпользователя (root).
Если имя искомого пакета известна, вы можете воспользоваться инструментами более высокого уровня: системами управления пакетами. В дистрибутивах, основанных на rpm (Red Hat, Fedora, OpenSuSE, Mandriva, CentOS и других), наличие пакета можно проверить одноименной командой:

[ilya@localhost ~]$ rpm -q kppp
kppp-4.1.3-1.1mdv2009.0
[ilya@localhost ~]$ rpm -q java
пакет java не установлен

Если пакет не установлен, его можно найти в репозитарии дистрибутива. Для этого необходимо воспользоваться системой управления пакетами. Все разработанные системы могут установить и обновить пакеты из репозитария дистрибутива, но наиболее распространенными и развитыми являются три системы: yum, APT и urpmi.
Для того чтобы установить java в дистрибутиве Debian GNU/Linux, необходимо в консоли под root набрать следующую команду:

[root@localhost ~]# apt-get install java

В Mandriva аналогом APT является urpmi:

[root@localhost ilya]# urpmi java

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

Если вам крайне необходим функционал, отсутствующий в версии, находящейся в репозитарии, придется самостоятельно собирать программное обеспечение из исходных кодов. Такая необходимость возникает достаточно редко, но вероятность ее возникновения отлична от нуля, а значит, научиться собирать пакеты необходимо.

Процесс сборки пакетов будет описан в следующих статьях цикла.
Стоит сделать еще одно замечание: даже если разные дистрибутивы используют пакеты rpm, это не означает, что пакеты из одной системы подойдут к другой. Инсталлируя пакеты, к примеру, принадлежащие OpenSuSE в Mandriva, вы рискуете получить неработоспособную систему, потому что иерархия их файловых систем неодинакова и зависимости пакетов различаются.
Пакеты, отсутствующие в репозитариях, можно попробовать поискать в различных интернет-хранилищах. Таких, например, как rpmfind.net, или воспользоваться сервисом Google для поиска информации, связанной с Linux: http://www.google.com/linux.

Образовательный портал WebTeach.Ru

Комментарии

Популярные сообщения из этого блога

Три типа мышления - мифологическое, религиозное, научное

Оригинальное название: Различные типы мышления (мифологическое, религиозное, научное) и их влияние на базовые космологические понятия в культуре и в онтогенезе, на педагогический и воспитательный процессы. Нами выделяется три типа мышления: мифологическое, религиозное и научное - в процессе развития, как социальных сообществ, так и развития ребенка. При этом, когда говорится о первенстве того или иного типа мышления, подразумевается его преобладание над двумя другими в том или ином социальном сообществе или у конкретного человека в тот или иной возрастной период. Как отмечал еще знаменитый отечественный физиолог Павлов, различные участки коры головного мозга усиливают свою деятельность в разных возрастах. Под мифологическим типом мышления мы понимаем преобладание мышления, связанного с цельным космогоническим мировоззрением, оценкой ситуаций в целом и рассмотрение мироздания как некого целостного организма. При развитии данного типа мышления преобладает решение стратегических ...

Отрывок из "Восход Черного Солнца" Джорджа Локхарда

   - Давно это было... А может, и не было. Но рассказывают, что еще до начала времен, когда не родились даже звезды, из бесконечного пламени возник бог. Он был одинок, зато всемогущ. Минули бесчисленные века, но бог лишь продолжал познавать собственную силу, пока однажды у него не родилась мысль: зачем нужно могущество, которым некому восторгаться? Следом за мыслью родился план, а поскольку бог тот был, по сути, ребенком, он немедленно принялся воплощать этот план в жизнь. Сначала он создал живое существо, способное мыслить, и спросил:    "Ощущаешь ли ты восторг при виде того, сколь я совершенен?"    "Нет, - ответило существо. - Потому что нет более жалкого зрелища, чем сила, не имеющая цели.    Тогда бог создал прекрасные земли, наполнил их жизнью и красотой, зажег на небесах звезды и вновь вопросил:    "Но теперь ты видишь, сколь я велик и могуч?"    "Оглянись, - ответило существо. - Творение твое - не более чем точка по ...

Синхронизация "Дни рождения контактов" Android с Google Calendar

Дни рождения в календаре Android или как сделать так, чтобы в календаре отображались дни рождения контактов.  Суть проблемы: отсутствие таких очевидных вещей, как отображение дней рождений контактов в календаре и соответственно не получаете уведомлений об их наступлении.. Способов решения масса, иногда поморгает синхронизация с Outlook (контакты и календарь), но можно и воспользоваться Google Calendar - для этого необходима учётная запись Google (Gmail).