$ 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.
Частично такой подход используется и в других пакетных форматах, поэтому далее рассматриваться не будет.
Синтаксис использования rpm при работе из командной строки следующий:
rpm [параметры] название_пакета(ов)
В качестве параметров здесь используется один или несколько флагов, указывающих, что нужно сделать с пакетом. С флагами разберемся по порядку. При необходимости установить пакет выполните следующую команду:
# rpm -i package_name
Примечание
Не забывайте про автодополнение имен файлов и команд, работающее при нажатии клавиши Тав, – это уменьшает количество ошибок и ускоряет ввод длинных имен файлов.
В случае если пакетов в каталоге много, проще воспользоваться маской. Например, набрав rpm -i perl*, вы установите все программы, чье название начинается с perl. Флаг -i не дает отображения информации о ходе установки. Флаги -v и -h служат для индикатора процесса выполнения. Теперь команда для установки выглядит так:
rpm -ivh package_name
В случае если такой пакет уже установлен, вы получите сообщение об этом и установка прервется – тогда нужно использовать ключ -U (–upgrade).
# rpm -Uvh package_name
Примечание
Для получения информации обо всех параметрах любой консольной команды Linux используйте ключ –help.
Бывают ситуации, когда пакет не устанавливается. Причины могут быть разные; если при переинсталляции пакета система не хочет устанавливать его заново или не хватает библиотек, воспользуйтесь параметром –force. Правда, его использование может привести к тому, что данная программа не будет работать или могут повредиться важные файлы, поэтому рекомендуется сначала разобраться, а потом устанавливать пакет таким способом. Для удаления пакета воспользуйтесь командой rpm -e package_name (при этом достаточно указать только имя (например, xmms), и он будет удален). Как и при установке, параметр -v (а лучше -vv) покажет процесс удаления пакета, а если есть необходимость в безоговорочной деинсталляции, то есть несмотря на наличие в системе пакетов, зависящих от данного, воспользуйтесь дополнительно параметром -nodeps. Для получения информации обо всех установленных в системе пакетах наберите rpm -qa, а об отдельном пакете – rpm -q package_name. Наиболее полную информацию вы сможете получить, набрав rpm -qpi, а список файлов, которые установит пакет, можно посмотреть при помощи команды rpm –qpl.
Примечание
Многие операции можно проделать с помощью файлового менеджера Midnight Commander: установив курсор на файл и нажав F3 (просмотр), вы увидите информацию о пакете; зайдя в пакет, нажав клавишу Enter и выбрав файл INSTALL, можно установить выбранный пакет.
Последний рассматриваемый режим работы программы rpm – проверка целостности пакета. Для этого нужно ввести rpm -V package_name, а для проверки всех пакетов в системе – добавить -a.
Для установки пакета не обязательно работать в командной строке: в сегодняшних дистрибутивах система установки интегрирована в графические среды, и, чтобы установить скачанный пакет, достаточно выбрать в контекстном меню пункт вроде Открыть в Software Installer (так он называется в Mandriva Linux).
Все программы управления пакетами Slackware находятся в пакете pkgtools. Для его установки выполняется такая команда:
# installpkg package_name.tgz
Обратите внимание, что пакеты для Slackware имеют расширение архива, созданного утилитой tar и сжатой bzip, и, по сути, им и являются. При этом пакет устроен таким образом, что может быть развернут в корневом каталоге файловой системы.
Для модернизации и удаления пакетов применяется соответственно upgradepkg или removepkg. При вводе pkgtool вы получите графический интерфейс к этим утилитам (рис. 1.2).
Рис. 1.2. Утилита для работы с пакетами в Slackware pkgtool
В последних версиях канадского дистрибутива Vector Linux (веб-сайт http://www.vectorlinux.com/), основой для которого послужил Slackware, формат пакетов tar.gz заменен на tlz. Последний почти ничем не отличается от традиционного, только в нем вместо программы-архиватора GZIP использован упаковщик LZMA. Хотя пакеты для Slackware Vector Linux также поддерживает. Для установки в контекстном меню в Vector Linux следует выполнить команду Actions → VectorLinux Package → Install (Действия → Пакет VectorLinux → Установить).
Для работы с deb-пакетами используется утилита dpkg, основные параметры которой практически совпадают с rpm. Например, для установки deb-пакета следует выполнить команду dpkg –i package_name.deb, для удаления пакета dpkg вызывается с ключом –r (или –remove), получить список установленных пакетов поможет ключ –l (–list), ключи –force и –ignore-depends помогут проигнорировать проблемы, возникшие при установке или удалении пакета. В дистрибутиве Kubuntu такой пакет можно установить из контекстного меню файлового менеджера Konqueror, выполнив команду Kubuntu Package Menu → Install Package (Меню пакета Kubuntu → Установить пакет) (рис. 1.3).
Рис. 1.3. Установка пакета в Linux Kubuntu
В составе Kubuntu есть графическая утилита gdebi, позволяющая устанавливать отдельные пакеты. Все просто, хотя не совсем удобно, так как если пакет требует для работы других пакетов, то их также придется предварительно скачать и установить одним списком, а таких пакетов может быть десяток, которые в свою очередь, потребуют еще несколько. В таком случае установка крайне неудобна. Кроме того, искать их по всем сайтам Интернета также непросто, поэтому разработчики собрали все пакеты в одном месте, а специальные программы отслеживают зависимости, поэтому установка приложений в Linux даже проще, чем в Windows. Инсталляция индивидуальных пакетов сегодня применяется в тех случаях, когда нужного пакета нет в репозитарии, а также для экономии трафика (когда необходимый пакет уже есть, его незачем скачивать повторно).
Системы управления пакетами
В последнее время наибольшее распространение получили системы управления пакетами, которые обеспечивают пользователя единым интерфейсом для поиска, установки, обновления и удаления. Наиболее известным является APT. Появившийся сначала в дистрибутиве Debian и изначально рассчитанный на работу с пакетами в формате deb, он быстро стал универсальным средством управления программами, в том числе и с пакетами в других форматах rpm (в дистрибутивах ALTLinux и Connectiva). Порт APT для работы с tgz-пакетами Slackware называется slapt-get и сегодня имеет несколько графических надстроек вроде Gslapt (рис. 1.4), хотя есть и другие варианты – swaret или slackpkg.
Рис. 1.4. Gslapt – графический интерфейс к slapt-get
Менее распространены другие системы управления пакетами – urpmi (Mandriva) и yum (Red Hat/Fedora и ASPlinux). Они ориентированы на работу с rpm-пакетами и широкого распространения не получили. Подробно рассматриваться эти системы не будут, тем более что после установки дистрибутива они, как правило, готовы к работе, а пользователю предоставлен понятный графический интерфейс. Например, программа установки приложений в дистрибутиве Mandriva выглядит так (рис. 1.5).
Рис. 1.5. Установка приложений в Mandriva
Так же просто устанавливаются приложения и в дистрибутивах RedHat/Fedora/ASPLinux (рис. 1.6).
Рис. 1.6. Менеджер пакетов в дистрибутиве Fedora
По причине большей распространенности и так как в комплекте данной книги идет дистрибутив Kubuntu, в котором для установки приложений используется APT, более подробно остановимся на работе с этой системой.
Работа с apt-get в Ubuntu
Все, что будет описано в данном разделе, практически полностью действительно и для других систем, использующих APT, – Debian, MEPIS, Linspire/Freespire, ALTLinux и клонов APT вроде slapt-get.
Описание репозитариев. Пакеты в репозитарии структурированы по назначению, платформе и прочим характеристикам. Список известных дистрибутиву репозитариев приведен в файле /etc/apt/sources.list. Заглянем внутрь (рис. 1.7).
Рис. 1.7. Список репозитариев, выведенный утилитой Synaptic
$ cat /etc/apt/sources.list
#deb cdrom:[Kubuntu 7.04 _Feisty Fawn_ – Beta i386 (20070322.1)]/ feisty main restricted
deb http://ua.archive.ubuntu.com/ubuntu/ feisty main restricted
deb-src http://ua.archive.ubuntu.com/ubuntu/ feisty main restricted
deb http://ua.archive.ubuntu.com/ubuntu/ feisty-updates main restricted
deb http://ua.archive.ubuntu.com/ubuntu/ feisty universe multiverse
deb http://ua.archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu feisty-security main restricted
Рассмотрим, что получилось. Первая строка указывает на CD-ROM, точнее, на конкретный диск с указанной меткой. Для добавления любого другого диска с пакетами (он должен иметь специальную структуру, о чем будет рассказано далее) достаточно вставить его в привод и набрать в консоли команду sudo apt-cdrom add – программа попросит вставить диск, после чего нужно нажать Enter. Далее в файле описываются репозитарии, находящиеся на различных узлах в Интернете. В первой строке указан тип пакета (deb указывает, что будут загружаться пакеты с уже скомпилированными программами; а deb-src означает, что будут использоваться пакеты с исходными текстами). Периодически необходимо обновлять список пакетов, имеющихся в репозитариях. Это делается командой sudo apt-get update.