Где и как искать программы

Материал из ALT Linux Wiki

Где и как искать программы, и как их потом устанавливать

Все программы для Linux можно разделить на две большие категории (с подкатегориями):

Далее описаны краткие примерные инструкции что делать во всех этих случаях.

Общая рекомендация: если вам нужна какая-то программа, то

  1. Сначала поищите её в тех источниках установки, на которые настроена ваша система управления пакетами.
  2. Затем поищите нужную программу в других репозиториях ALT Linux, например, используя поиск на сайте http://sisyphus.ru и далее.
  3. Если нужной программы не оказалось среди пакетов ALT, то найдите в интернете сайт разработчиков программы, и далее следуйте инструкции.

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

Если у вас есть CD/DVD диск с дистрибутивом ALT (например тот, с которого вы поставили систему), то поиск и установка нужной программы осуществляется очень просто. Достаточно подключить этот диск в качестве источника установки и использовать программы работы с пакетами, такие как apt-get или synaptic.

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

Если у вас имеется одиночный[2] пакет с нужной программой, то можно попробовать установить его следующим образом:

от рута перейдите в каталог, где лежит нужный пакет и выполните команду apt-get install ./ИМЯ_ФАЙЛА.rpm. Например:

[alexei@threebears tmp]$ su -
Password: 
[root@threebears ~]# cd /tmp
[root@threebears tmp]# apt-get install ./kde4plasma-addon-yawp-0.1-alt1.svn20081227.1.i586.rpm
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Выбрано kde4plasma-addon-yawp для './kde4plasma-addon-yawp-0.1-alt1.svn20081227.1.i586.rpm'
Следующие НОВЫЕ пакеты будут установлены:
  kde4plasma-addon-yawp
0 будет обновлено, 1 новых установлено, 0 пакетов будет удалено и 2 не будет обновлено.
Необходимо получить 0B/581kB архивов.
После распаковки потребуется дополнительно 1193kB дискового пространства.
Совершаем изменения...
Preparing...                 ########################################### [100%]
1: kde4plasma-addon-yawp     ########################################### [100%]
Running /usr/lib/rpm/posttrans-filetriggers
Завершено.

Программа есть в сетевом репозитории вашей версии

Настройте вашу систему управления пакетами на использование сетевого репозитория, и установите программу обычным способом.

Что делать, если «интернет дорогой»

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

(как их определить - ниже)

на другом компьютере, принести все эти пакеты на целевой компьютер, и далее воспользоваться инструкцией по установке одиночного пакета.

Отследить зависимости уже установленных программ (например gimp) можно следующей командой: $ apt-cache depends gimp

Вы увидите примерно следующее:

gimp-2.6.3-alt1

 Требует: libgimp = 2.6.3-alt1
 Требует: icc-profiles
 Требует: </lib/ld-linux.so.2>
   glibc-core-6:2.9-alt1
 Требует: </usr/bin/env>
   coreutils-6.12-alt2

...

Программа есть в сетевом репозитории другой версии

Самый правильный способ — «повесить» запрос на перенос нужного пакета в вашу версию дистрибутива. Однако, этот способ не самый быстрый :)

Еще один неплохой способ — попробовать самостоятельно собрать нужный пакет «в своём окружении», то есть под свою версию системы. Проще всего это сделать с помощью Hasher. Вам понадобится скачать пакет с исходными текстами нужной программы (src.rpm пакет), и воспользоваться инструкцией по работе с Hasher.

Примечание: сборка в Хэшере требует настроенного источника пакетов. В процессе сборки из источника будут получены пакеты на десятки (или даже сотни) мегабайт. Следите за трафиком :)

Еще один способ: пересобрать src.rpm с помощью команды rpm --rebuild (за подробностями — в man rpm). При такой пересборке не понадобится выкачивать из источника пакетов те пакеты, которые уже установлены в вашей системе, что может сэкономить время и деньги. Но удовлетворение сборочных зависимостей придётся делать вручную, что требует определённой квалификации. Кроме того, произойдёт «засорение» системы devel-пакетами. Метод не рекомендуется неопытным пользователям!

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

Программы нет в дистрибутиве, но её можно туда включить

Существует огромное множество программ. И ни один дистрибутив не может охватить все это множество.

Почему нужная конкретно вам программа не попала в дистрибутив? Скорее всего потому, что:

  • никому из тех, кто обладает достаточной квалификацией, она не нужна (в данный момент)
  • программа редкая и/или новая, и о ней просто никто не знает
  • в силу различных ограничений (технического или лицензионного характера), программу нельзя включить в дистрибутив.

Что делать в таком случае?

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

Сложный и совсем правильный способ: стать мейнтейнером данной программы! То есть изучить правила сборки пакетов для ALT Linux, собрать пакет, и влиться в ряды разработчиков.

Почему нельзя собирать и ставить программы с помощью make; make install

Кратко: если вы не понимаете, почему нельзя пользоваться configure; make; make install, то вам не стоит пользоваться этими командами.

Многие неопытные пользователи часто возмущаются, когда им говорят, что в дистрибутивах, основанных на пакетах (rpm, deb и т. п.) не стоит устанавливать программы с помощью make install. Основные причины не использовать эти команды:

  • программа, установленная таким образом, не попадает в базу данных установленных программ, в общем виде её невозможно корректно обновить или удалить, она порождает файлы, принадлежность которых невозможно определить.
  • между программами есть зависимости, часто очень сложные. Разрешение зависимостей при make install не работает, и такая установка программы может привести к неработоспособности других программ или всей системы.
  • в каждом дистрибутиве есть специфические настройки, особое расположение конфигурационных файлов и т. п. При сборке пакета мейнтейнер учитывает эти нюансы, make install их игнорирует.

Все вышесказанное относится и к программам, устанавливаемым с помощью инсталляционных скриптов типа *.run.

Почему нельзя ставить пакеты из других дистрибутивов

Кратко: если вы не знаете, почему нельзя ставить чужие rpm, не стоит этого делать!

Часто пользователи пытаются поставить rpm-пакеты (а иногда и deb-пакеты) из других дистрибутивов, обычно Mandriva или RedHat. Но в каждом дистрибутиве свои особенности настроек, именования пакетов и т. п. Поэтому есть отличная от нуля вероятность разломать свою систему установкой чужих пакетов.

Отдельно стоит упомянуть проблему с версиями разделяемых библиотек, так как она касается не только дистрибутивов от разных производителей, но и дистрибутивов просто разных версий от одного производителя. Использование разделяемых библиотек позволяет экономить на объёмах памяти, скорости загрузки приложений и т.п., но накладывает ограничение на переносимость бинарных пакетов. Поэтому, даже в рамках дистрибутивов ALT Linux, как правило, нельзя просто взять пакет из, например, Sisyphus и установить его в, например, дистрибутивы на базе пятой платформы: требуется, как минимум, пересборка пакета в соответствующем окружении.

Если нельзя, но очень хочется…

Иногда очень хочется или очень надо поставить пакет из исходников. Делайте это на свой страх и риск, и не говорите потом, что вас не предупреждали, и не засоряйте рассылки и форумы нытьём типа «я тут сделал, и у меня не работает».

Некоторые рекомендации:

  • практически у всех программ скрипт configure понимает параметр --prefix, в который можно и нужно указать «альтернативный» каталог для установки, чтоб ваша программа не конфликтовала с другими программами из системы. Используйте что-то вида --prefix=/opt/usr или --prefix=$HOME/my_progs.
  • инсталляторы *.run тоже (обычно) умеют ставить программу в указанный каталог. Не ставьте ничего в /usr!
  • при установке чужих rpm-пакетов избегайте команд вида rpm -i и тем более rpm --nodeps --force. Используйте apt-get install.
  • выбирайте rpm со статическими сборками, в их именах часто (но не обязательно) присутствует слово static.
  • при установке бинарных сборок таких программ как Firefox или OpenOffice и им подобных, качайте с сайта пакет «для всех дистрибутивов», обычно это tgz-архив, и распаковывайте его в, например, /opt или $HOME/progs.

Отдельное замечание про драйвера nVidia и ATi

Очень часто пользователи пытаются скачать с сайта производителя и поставить драйвера для видеокарт нВидиа или АТи. Не стоит так делать!

Все необходимые драйвера уже есть в дистрибутиве (на CD/DVD или в сетевых репозиториях). Если у вас очень новая карта, и имеющиеся драйвера её не понимают, то вешайте запрос в Багзиллу на обновление драйверов. Самостоятельная установка драйверов путём запуска *.run гарантированно разломает вам графическую подсистему!

Отдельное замечание про установку VirtualBox

Часто пользователи ставят проприетарную сборку VirtualBox. См. инструкцию.

Программы нет в дистрибутиве, и её нельзя туда включить

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

Некоторые программы нельзя включить в дистрибутив по лицензионным ограничениям. Например, браузер Opera или интернет-телефон Skype. Для некоторых программ некоторые пользователи в частном порядке собирают rpm-пакеты. Например, fly.osdn.org.ua/~drool/ (см. FAQ). Можете воспользоваться такими «альтернативными» источниками пакетов. Другой выход — установка статических сборок вручную (см. выше).

Программа вообще не работает в Linux

Некоторые программы вообще не работают в Linux. Например, бинарные программы, написанные под другую операционную систему (Windows, Solaris, BSD), или программы (даже с исходниками) написанные под очень старые версии Linux. Если вам очень хочется поработать с такими программами, поставьте ту ОС, для которой они написаны.

Примечания

  1. Под дистрибутивом в данном контексте понимается не отдельно взятый CD или DVD, который оказался у пользователя, а полный набор пакетов в определённой ветке репозитория, или во всех репозиториях ALT Linux’а
  2. По возможности, стоит избегать такой ситуации! Потому что одиночному пакету по зависимостям могут понадобиться другие пакеты, которых не найдётся в вашей системе и источниках установки.