Сергей Яремчук.

200 лучших программ для Linux

(страница 1 из 21)

скачать книгу бесплатно

Введение

Сегодня так много говорят об операционной системе GNU/Linux, что создается впечатление, что ее можно увидеть на большинстве домашних компьютеров. Это не так. Установить ее пытаются только некоторые любопытные. Встретив определенные трудности, не все справляются с ними. На этом эксперимент чаще всего заканчивается. Пользователь пытается найти знакомые названия и приложения, которых не оказывается. Проходят путь до конца лишь единицы. На форумах и сайтах можно найти много материалов на тему Windows против Linux. Большая часть критических высказываний по поводу работы Linux написана пользователями, которые так и не смогли дойти до конца и теперь пытаются сделать вывод, основываясь на своих поверхностных знаниях. Проблема таких пользователей как раз и состоит в том, что они так и не поняли смысл UNIX-подобной системы.

Использование Linux легально, безопасно, надежно, выгодно и интересно. Компьютер – это не самоцель, а всего лишь инструмент, предназначенный для решения определенных задач. Потратив день на настройку Linux и установку необходимых приложений, пользователь работает, больше не отвлекаясь на борьбу с вирусами, дефрагментацию диска или очистку реестра. Основное, чем привлекателен Linux, – никто не заставляет его использовать, не навязывает дистрибутив, версию, программы и прочее. Вы сами выбираете, что вам больше подходит, благо выбирать есть из чего.

От издательства

Ваши замечания, предложения и вопросы отправляйте по адресу электронной почты dgurski@minsk.piter.com (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На сайте издательства http://www.piter.com вы найдете подробную информацию о наших книгах.

Глава 1
Общие сведения о программах Linux

• Особенности программ Linux

• Установка программ в Linux


Linux – это не программа, а операционная система со своими принципами построения и особенностями. Здесь все не так, как в Windows: например, в Linux нет привычных обозначений дисков С:, D:, любой компонент, в том числе и графическую среду, можно без последствий заменить альтернативным вариантом, и еще много другого, к чему придется привыкнуть. Одна из первых проблем, с которой столкнется любой пользователь, – порядок установки, обновления и удаления программ, в процессе чего выясняется, что скачать файл и дважды щелкнуть на нем кнопкой мыши в большинстве случаев недостаточно. Какой файл качать, что еще нужно сделать, чтобы программа установилась и, главное, работала? Обо всем по порядку.

Особенности программ Linux

Главный девиз UNIX-систем звучит как KISS – Keep It Simple Stupid, то есть «не усложняй». В качестве доказательства такой пример. У автора дома по Linux всего одна книга, которую он смог найти в магазинах в период, когда начал интересоваться системой.

Это издание «Использование Linux» Джека Такета. Книге уже семь лет, но большая часть материала действительна до сих пор. В Интернете можно найти много старых книг, и все они в большинстве своем актуальны. Попробуйте применить книгу, написанную о Windows 98 или Windows XP к Vista, – почти весь материал окажется бесполезным.

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

На это уходит время, разработчику приходится самому разбираться в множестве вопросов либо привлекать людей, которые помогут добавить нужную функциональность, что приводит к удорожанию продукта. Зато программа устанавливается двойным щелчком мыши, так как все компоненты уже включены в дистрибутив. В Linux процесс выглядит несколько иначе.

Примечание

GNU – это рекурсивная аббревиатура от GNU's Not UNIX (GNU – не UNIX).

Программы, библиотеки и прочее распространяются с исходными кодами под лицензией GNU GPL (General Public License – стандартная общественная лицензия), которая ставит только одно условие: если при разработке используется программа с этой лицензией, то и полученный продукт также должен распространяться по лицензии GNU GPL.

Примечание

Слово free («свободный») в английском языке имеет несколько значений, в том числе и «бесплатный».

На сайте проекта GNU (http://www.gnu.org/home.ru.html) дано пояснение английского слова free. По их мнению, программное обеспечение – это предмет свободы, а не цены, и, чтобы понять идею, свободное программное обеспечение не нужно ассоциировать с бесплатным мороженым, то есть свободное не обязательно должно быть бесплатным. Свободное программное обеспечение позволяет пользователям свободно запускать, копировать, распространять, изучать, изменять и улучшать программное обеспечение. Более точно это раскрыто в четырех типах свободы для пользователей программного обеспечения:

• свободно запускать программы для любых целей (свобода 0);

• свободно изучать, как работает программа, и иметь возможность свободно адаптировать ее под свои нужды (свобода 1); доступ к исходным кодам является непременным условием;

• свободно распространять копии, чтобы помочь тем, кто интересуется свободным программным обеспечением (свобода 2);

• свободно улучшать программы и делать улучшения доступными для других; из этого извлекает пользу все сообщество (свобода 3); доступ к исходным кодам является непременным условием.

Такой подход дает программисту простоту и быстроту разработки. Он использует уже готовые компоненты, не вникая в суть их работы, и создает новый продукт.

Каждый улучшает только свою часть продукта. Так, в Linux очень много консольных утилит. Начинающему пользователю непросто освоить все параметры командной строки, ему удобнее, чтобы программа имела понятный и легкий в освоении графический интерфейс. Программист же не создает новый продукт, он берет все консольные утилиты и пишет к ним графическую надстройку – фронт-энд (front-end), который скрывает от пользователя особенности работы консольных программ, часто добавляя новую функциональность. Например, популярный консольный видеопроигрыватель MPlayer имеет несколько таких надстроек – Kplayer, KMplayer, smplayer, Freevo и другие.

Однако чтобы такая программа заработала, необходимо установить все остальные компоненты и библиотеки, которые она использует. Например, для популярной утилиты записи дисков K3B потребуется установить 48 библиотек и программ (рис. 1.1).

Рис. 1.1. Список зависимостей пакета K3B


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

Зависимости бывают двух видов:

• жесткая (hard): обязательная, без нее программа, скорее всего, не будет работать;

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

Именно поэтому, скачав всего один пакет, установить программу часто не получается.

Есть еще одна проблема, о которой необходимо знать. В отличие от Windows, релизов которой не так много, дистрибутивов Linux огромное количество. Они отличаются не только названием, так как Linux – это только ядро, разрабатываемое под руководством Линуса Торвальдса, а все остальное – это что-то вроде набора «Сделай сам». Эти наборы хороши, но часто не только не совместимы между собой, но и для каждой новой версии одного и того же дистрибутива потребуется специально собранный пакет. Не будем вдаваться в подробности, тем более что не все так плохо, так как в популярных решениях используются пакетные системы, скрывающие такие особенности, но об этом просто нужно знать.

Установка программ в Linux

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

Компиляция программ

Даже после появления пакетов, которые представляли собой уже скомпилированные программы, компиляция долгое время оставалась и для некоторых остается основным средством установки.

Примечание

Первые прекомпилированные наборы появились в дистрибутиве SLS Linux, который в начале 90-х годов был самым популярным дистрибутивом. Его создатели сочли неудобным самостоятельнную сборку приложений, поэтому пользователям были предложены не только само ядро Linux и основные утилиты, но и набор разнообразного программного обеспечения с простой программой установки. Все это поставлялось уже в скомпилированном виде, исходный текст прилагался только для самых основных компонентов вроде ядра. Кстати, основой популярных сегодня дистрибутивов Slackware и Debian послужил именно SLS.

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

Примечание

Человека, который отвечает за сборку пакета, называют maintainer, в Интернете часто можно встретить это слово в русской транскрипции – майнтейнер, или сборщик. Он отвечает за то, что пакет протестирован, работоспособен и его установка не вызовет сложностей. В процессе сборки он может использовать патчи (англ. patch – «заплатка»), изменяющие функциональность или устраняющие найденные ошибки. Однако таких людей мало, и все пакеты отслеживать трудно, поэтому проекты постоянно привлекают добровольцев.

Кроме этого, иногда требуется изменить функциональность программы при помощи патчей, не используемых майнтейнером. Последняя причина – это производительность: чтобы пакет работал на максимально большом количестве оборудования, его собирают с оптимизацией под определенный тип процессора – как правило, это i386, то есть под процессор Intel 80386, выпущенный еще в 1985 году. Встречаются сборки i486, i586 (Pentium MMX) и i686 (Pentium Pro), в последнее время появились сборки под 64-битные процессоры. Собирая программу самостоятельно, пользователь может скомпилировать ее под свой тип процессора, под мультипроцессорные системы и прочее. Эксперименты доказывают, что производительность получаемого пакета увеличивается (в зависимости от аппаратного обеспечения) от 10 до 200 % по сравнению с бинарными сборками, поставляемыми с дистрибутивом, и чем новее оборудование, тем больше эффективность такой сборки, хотя она не всегда нужна.

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

Внимание!

Для самостоятельной компиляции программ потребуются компилятор GCC, GNU Make и прочие утилиты. В некоторых дистрибутивах они по умолчанию не устанавливаются. И чтобы установить их, в Kubuntu необходимо выполнить команду sudo apt-get install build-essential.

Как правило, исходные файлы заархивированы в так называемый тарболл (tarball).

Архив, в зависимости от программы, которая использовалась при его создании, имеет суффикс .tar.gz или .tar.bz2 и имя типа program-х.хх, где program– это название программы, а х.хх – версия.

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

tar xzvf program-х.хх.tar.gz

tar xjvf program-х.хх.tar.bz2

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

В общих случаях достаточно выполнить команду ./configure без дополнительных параметров. Сценарий самостоятельно найдет все программы и библиотеки и, если все в порядке, создаст makefile, необходимый для компиляции программы. Однако в случае, если сценарий что-то не найдет, последует сообщение об ошибке – внимательно прочитайте его и постарайтесь понять, в чем дело.

Внимание!

В дальнейшем при описании консольных команд будет использоваться знак доллара ($), что означает, что для выполнения этой команды достаточно прав обычного пользователя, или знак решетки (#), что требует прав root.

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

$ ./configure –help

Наиболее часто используемым параметром является –prefix, с помощью которого указывается отличный от используемого по умолчанию каталог для установки программ (обычно /usr/local/). В некоторых случаях такого сценария нет, а есть уже готовый makefile. В этом случае сразу переходите ко второму этапу – выполните команду make, которая скомпилирует программу; если работа make завершилась без ошибок, устанавливайте приложение (при этом устанавливаются не только двоичные файлы, но и документация):

# make install

Для выполнения последнего шага понадобятся права суперпользователя (root), которые можно получить, выполнив команду su или sudo:

$ sudo make install

В дистрибутиве Kubuntu, чтобы пользователь мог выполнить команду sudo, он должен входить в группу admin. Первый созданный при установке пользователь заносится в нее автоматически. Для удаления установленной таким образом программы следует использовать команду make uninstall, хотя часто разработчики не используют в сценариях эту возможность.

Портежи Gentoo

Параллельно Linux развивается несколько BSD-систем – FreeBSD, OpenBSD и NetBSD, особенностью которых является система портов, позволяющая установить любую программу одной командой. При этом закачка, наложение патчей, компиляция, установка и удаление происходят автоматически. Долгое время эта система была предметом зависти линуксоидов, пока не появились дистрибутивы, использующие аналогичный подход. Самым известным из них является Gentoo (http://www.gentoo.org/), в котором применена аналогичная система портежей (portage).

Примечание

Дистрибутив Gentoo (произносится как «дженту») был назван в честь пингвина Pygoscelis papua, которому принадлежит рекорд скорости плавания (27 километров в час), что выражает основные свойства дистрибутива.

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

$ wget –c http://adelie.polymtl.ca/snapshots/portagelatest.tar.bz2

$ tar -xvjf portage-latest.tar.bz2 -C /usr

В дальнейшем следует периодически (не чаще раза в сутки) обновлять дерево портежей командой:

# emerge –sync

Пользоваться портежами просто. Например, чтобы найти пакет, в котором содержится слово pdf, выполняется такая команда:

$ emerge –search pdf

Выбираете по описанию то, что нужно, и устанавливаете, используя имя пакета:

# emerge gnumeric

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

# emerge –fetchonly gnumeric

Удаляется пакет также просто:

# emerge –unmerge gnumeric

Настройка оптимизации Gentoo производится в переменных (CHOST, CFLAGS, CXXFLAGS и USE) в файле /etc/make.conf. Для более детальной настройки необходимо посмотреть некоторые значения в файлах /etc/make.globals, /etc/make.profile/make.defaults и переопределить их в /etc/make.conf.

В первую очередь это переменная USE. Смысл ее заключается во включении и выключении различных параметров, которые обычно используются при конфигурировании командой ./configure при обычной компиляции программы из исходных текстов, то есть –enable/disable или –with/without. Например, закомментированная переменная USE такого содержания

USE="X gtk gnome -alsa"

соответствует

./configure –with-x –with-gtk –with-gnome –without-alsa.

Строка CHOST='i686-pc-linux-gnu' указывает на используемую архитектуру. Все современные процессоры соответствуют данному описанию; если у вас более ранняя модель вроде Pentium Pro, измените ее на меньшую (i586, i486 или i386). С помощью CFLAGS компилятору сообщается, какой процессор используется и какой требуется уровень оптимизации, после чего компилятор в соответствии с установленной моделью собирает пакеты под указанную модель процессора:

CFLAGS="-march=pentium4 -O3 -pipe "

Примечание

Для получения информации о процессоре введите cat /proc/cpuinfo.

Можно использовать флаг -mcpu=, который оптимизирует программу под указанный процессор без потери совместимости с другими процессорами. Флаг -march= требует более осторожного обращения, так как оптимизированная с ним программа будет работать только на указаном процессоре без совместимости с более старыми типами, однако при этом будет достигнута максимальная производительность.

Более подробно о параметрах make.conf можно почитать в документации Gentoo (http://www.gentoo.org/doc/en/handbook/handbook-x86.xml, русский перевод – http://www.gentoo.org/doc/ru/handbook/).

В Gentoo есть и прекомпилированные пакеты – пакаджи (англ. package – «пакет»), которые пользователь может собрать самостоятельно, используя ключи –buildpkg или –buildpkgonly при выполнении команды emerge. После этого собранный пакет устанавливается командой:

# emerge –usepkg –getbinpkg gnumeric

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

Gentoo – это не единственная подобная система. Система портов используется в дистрибутивах CRUX, Archlinux, Sorcerer и SourceMage, в которых она сосуществует с развитыми средствами пакетного менеджмента.

Пакетные системы

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

• менеджеры пакетов, предназначенные непосредственно для управления прекомпилированными программами;

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

Менеджеры пакетов, в первую очередь, отличаются форматами пакетов. Ранее в Linux существовало три основных формата пакетов:

• rpm – формат, изначально принятый в дистрибутиве RedHat, сегодня применяется в его многочисленных потомках и других дистрибутивах (Fedora, Mandriva, ALTLinux и других);

• deb – формат пакетов, появившийся в дистрибутиве Debian и производных, самым известным из которых является Ubuntu;

• tar.gz – формат пакетов, появившийся в дистрибутиве Slackware.

Сегодня этот список значительно шире. Первые два типа содержат информацию, в которой указаны зависимости этого пакета. Пакеты tar.gz (по сути, это обычные архивы) таких данных не содержат, поэтому пользователи Slackware вынуждены самостоятельно заботиться о зависимостях. Хотя отсутствие информации о зависимостях абсолютно не препятствует контролю над ними. Это можно возложить на внешние программы, а управление такими пакетами часто оказывается даже более гибким, чем теми, в которых такая информация имеется.

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

Установка пакетов

Для установки rpm-пакетов используется одноименная консольная утилита. Сам пакет имеет такой формат: – smplayer-0.5.29-alt1.i586.rpm, где:

• smplayer – название программы;

• 0.5.29 – версия программы;

• alt1 – необязательное поле, показывающее дистрибутив, для которого собран этот пакет (это очень важный параметр, так как пакет, собранный для другого дистрибутива или другого релиза одного и того же дистрибутива, может не работать в вашем; в данном примере это AltLinux, для Fedora 7 здесь будет указано fc7, для Mandriva 2008.0 – mdv2008.0; если этого поля нет, возможно, пакет универсален и подходит для всех дистрибутивов, использующих RPM);

• i586 – показывает, под какой тип процессора собран этот пакет: для 64-битных систем будет указано x86_64, а если в пакете находятся исходные тексты, которые затем нужно будет компилировать, то src.

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



скачать книгу бесплатно

страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Поделиться ссылкой на выделенное