CRUX Handbook 2.3
Опубликовано Piton в ср, 11/07/2007 - 11:13.
ВЕРСИЯ 2.3
Это руководство охватывает установку конфигурацию и администрирование CRUX. Учтите, что это руководство описывает только особенности CRUX.
Для более подробной информации о Linux обратитесь к Linux Documentation Project.
CRUX - это легкий, дистрибутив Linux, оптимизированный под платформу i686, и ориентированный на
опытных пользователей. Основная цель этого дистрибутива это - “сделать его простым”,
основываясь на простой системе пакетов - tar.gz, BSD-подобных скриптов инициализации,
относительно небольшой коллекции готовых пакетов. Второй целью было - использование новых возможностей
Linux, а также последнего инструментария и библиотек. Кроме этого, CRUX имеет систему портов,
которая позволяет легко устанавливать и обновлять приложения.
На сегодняшний день существует множество различных дистрибутивов Linux, так чем же этот
дистрибутив лучше остальных?
Конечно, все что будет сказано ниже - дело вкуса. Но я могу объяснить свой выбор и возможно мы
придем к общему мнению, а может быть и нет...
Во-первых, я хотел создать дистрибутив интуитивно понятный от начала до конца. Далее,
я хотел, чтобы мои пакеты являлись стабильными версиями ПО, а не какими-нибудь альфа-бета-релизами.
Я хочу, чтобы имелась возможность легкого создания новых и обновления старых пакетов
(чтобы обновить пакет CRUX'a, нужно просто набрать pkgmk -d -u).
Я хотел, чтобы пакеты были оптимизированы под мой процессор (имеется ввиду архитектура
-march=i686).
Я не хочу, чтобы в моей файловой системе были файлы, которыми я никогда не буду пользоваться (имеется ввиду
/usr/doc/*, и т.д.).
Если мне потребуется больше информации о программном обеспечении, чем я могу найти в man'ах, то я ее
смогу найти в Интернете. И, наконец, я хотел использовать новые возможности, предлагаемые в новых
версиях ядра Linux. (имеется ввиду udev, inotify, reiserfs, ext3fs, xfs и т.д).
Если вы являетесь достаточно опытным пользователем Linux и хотите иметь чистый и стабильный дистрибутив в
качестве основы для своей системы, предпочитаете графической оболочке (GUI) редактировать файлы конфигурации вручную,
не боитесь скачивать и самостоятельно собирать программное обеспечение, то этот дистрибутив может вам подойти.
Поскольку CRUX это Linux-дистрибутив, то он состоит из программного обеспечения написанного
различными людьми. Каждый пакет поставляется по той лицензии, которую выбрал автор(ы). Чтобы понять, по какой лицензии
распространяется отдельно взятый пакет, посмотрите его исходный код.
Все скрипты сборки пакетов в CRUX'е (для категорий пакетов core
и opt) принадлежат © 2000-2007 Per Liden и
команде развития CRUX и лицензируются посредством GNU General
Public License.
CRUX распространяется в надежде на то, что он пригоден к использованию, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ;
т.е. нет никаких гарантий, что этот дистрибутив является ПРИГОДНЫМ К ПРОДАЖЕ или ПРИГОДЕН
ДЛЯ КАКОЙ-ЛИБО СПЕЦИФИЧЕСКОЙ ЦЕЛИ. Используйте его на СВОЙ СТРАХ И РИСК.
3.1. Поддерживаемое аппаратное обеспечение
Пакеты, содержащиеся в официальной версии ISO-имиджа CRUX, скомпилированны с оптимизацией под процессоры
архитектуры i686 (Pentium-Pro/Celeron/Pentium-II или выше).
Не пытайтесь установить CRUX на i586 (Pentium, AMD K6/K6-II/K6-III)
или ниже, потому что это просто не будет работать. Чтобы установить CRUX на i586, вы должны скачать
ISO-имидж CRUX'а для платформы i586.
Ядро, используемое при установки, т.е. при загрузке с ISO-имиджа CRUX (El Torito), скомпилировано
с поддержкой следующих дисковых и USB контроллеров:
Прежде чем устанавливать CRUX, убедитесь, что ваш дисковый контроллер содержится в вышеприведенном списке.
Если ваше аппаратное обеспечение не поддерживается, или у вас возникли проблемы при установке CRUX,
то вы сможете найти решение в
разделе 3.4,
“Альтернативные методы установки”.
Скачайте ISO-имидж CRUX'а (crux-2.3.iso).
Чтобы проверить, правильно ли скачался имидж, вычислите с помощью команды md5sum
контрольную сумму имиджа.
Сравните результат с файлом crux-2.3.md5sum,
который находится в той же директории сайта, что и сам ISO-имидж.
Если контрольные суммы совпадают, то это значит, что закачка прошла успешно, и вы можете
записать имидж на CD-диск.
ISO имидж является загрузочным, просто вставьте установочный диск с CRUX'ом и перегрузите компьютер.
![[Note]](/doc/images/note.png) |
Примечание (от переводчика) |
|---|
|
Чтобы загрузиться с CD, убедитесь что в BIOS'е, в разделе о устройствах с которых возможна загрузка,
CD-ROM опрашивается раньше чем HDD. |
Когда загрузитесь с CD нажмите Enter (возможно, вам придётся исправить параметр root= в зависимости от конфигурации вашего компьютера).
Войдите в систему как root (пароль не требуется).
Если необходимо, создайте и отформатируйте разделы, на которые вы хотите установить CRUX.
![[Note]](/doc/images/note.png) |
Примечание |
|---|
|
Имейте ввиду, что жесткие диски SATA определяются как SCSI-устройства. Т.е. первый диск будет называться не /dev/hda, а /dev/sda. За более подробной информацией о соглашениях по обозначениям жёстких дисков обращайтесь к этому HOWTO. |
Размер выделяемого дискового пространства зависит от того, сколько пакетов вы собираетесь установить.
Я бы рекомендовал выделить под корневой раздел не менее 1Gb (CRUX, в зависимости от конфигурации,
будет использовать приблизительно 200MB-500MB).
Рекомендуется использование ReiserFS, хотя CRUX поддерживает также и Ext2fs/Ext3fs, XFS и JFS.
Кроме того, я настоятельно рекомендую отделить системные разделы от
пользовательских данных, т.е. использовать разные разделы для
/home (и возможно /var).
Это значительно облегчит вам жизнь, если вы решите обновить/переустановить/удалить вашу систему.
![[Note]](/doc/images/note.png) | Примечание |
|---|
|
Убедитесь, что в BIOS'е опция "Virus Protection" ОТКЛЮЧЕНА (DISABLED),
поскольку эта опция может помешать корректно создать разделы с помощью fdisk.
|
-
Подмонтируйте раздел, на который вы хотите установить дистрибутив.
Если вы хотите использовать для системы больше, чем один раздел, их также необходимо предварительно подмонтировать.
Например, если вы хотите отделить раздел для /home
или /var, сделайте:
-
Активируйте swap раздел(ы).
Чтобы начать установку пакетов наберите setup.
Скрипт спросит, где вы смонтировали корневой раздел будущей системы, а также какие пакеты вы хотите установить.
Просто выберите пакеты, которые вы хотите установить. Однако, я бы рекомендовал установить все пакеты, помеченные
как core.
После того, как все пакеты будут установлены, скрипт setup
покажет лог процесса инсталляции. Убедитесь, что последняя строка лога гласит:
“0 error(s)”
(0 ошибок).
Если позже вы обнаружили, что вам необходимо установить дополнительные пакеты, то
просто подмонтируйте CD-диск с CRUX, и, используя команду pkgadd,
доставьте необходимые пакеты.
![[Note]](/doc/images/note.png) | Примечание |
|---|
|
При установке пакетов зависимости не проверяются. Это значит, что понимание того, что для установки пакета exim, вам также потребуется установить пакет
db, лежит целиком на вас. |
Скриншоты скрипта setup
-
Теперь настало время собрать ядро и выполнить основные шаги конфигурации системы.
При компиляции ядра системе необходимо, чтобы вы были в “chroot”-среде
только что установленной системы CRUX.
![[Note]](/doc/images/note.png) | Примечание |
|---|
|
Для создания chroot-среды существует короткая команда: setup-chroot. Она сразу выполняет все эти шаги. |
-
Установите пароль для пользователя root.
Отредактируйте /etc/fstab, чтобы сконфигурировать ваши файловые системы. Доступные редакторы vim и
nano.
Отредактируйте /etc/rc.conf,
чтобы определить шрифт (font), раскладку (keyboard), временную зону (timezone), имя хоста (hostname)
и запускаемые службы (services).
Более подробно о переменных в /etc/rc.conf смотри в
разделе “Конфигурационные переменные в /etc/rc.conf”.
Отредактируйте /etc/rc.d/net,
/etc/hosts и
/etc/resolv.conf, чтобы настроить сетевое окружение
(IP-адрес/шлюз/имя машины/домен/DNS).
Перейдите в директорию /usr/src/linux-2.6.20.3,
чтобы настроить и откомпилировать ядро.
Отредактируйте /etc/lilo.conf,
чтобы определить где находится скомпилированное ядро, и запустите lilo,
чтобы его активизировать.
Удалите CD-диск из вашего привода и загрузитесь с вашего HDD.
Если Вы хотите вместо Lilo использовать GRUB (который включен в ISO-имидж), предварительно ознакомтесь с инструкцией по установке в приложении этого документа.
Скачайте ISO-имидж CRUX'а (crux-2.3.iso).
Чтобы проверить, правильно ли скачался имидж, вычислите с помощью команды md5sum
контрольную сумму имиджа.
Сравните результат с файлом crux-2.3.md5sum,
который находится в той же директории сайта, что и сам ISO-имидж.
Если контрольные суммы совпадают, то это значит, что закачка прошла успешно, и вы можете
записать имидж на CD-диск.
ISO имидж является загрузочным, просто вставьте установочный диск с CRUX'ом и перегрузите компьютер.
![[Note]](/doc/images/note.png) |
Примечание (от переводчика) |
|---|
|
Чтобы загрузиться с CD, убедитесь что в BIOS'е, в разделе об устройствах, с которых возможна загрузка,
CD-ROM опрашивается раньше чем HDD. |
Когда загрузитесь с CD, нажмите Enter (возможно, вам придётся исправить параметр root= в зависимости от конфигурации вашего компьютера).
Войдите в систему как root (пароль не требуется).
Смонтируйте ваш корневой раздел CRUX.
Если ваша система занимает больше одного раздела, то остальные разделы также необходимо предварительно подмонтировать.
Например, если у вас имеется отдельный раздел для /var, сделайте:
-
Активируйте swap раздел(ы).
Чтобы начать установку пакетов наберите setup.
Скрипт спросит, где вы смонтировали корневой раздел будущей системы, а также какие пакеты вы хотите обновить.
Хорошей идей будет обновить все пакеты, в противном случае позже вы можете столкнуться с проблемами,
например, если новая версия библиотеки не обладает 100%-ной обратной совместимостью.
![[Note]](/doc/images/note.png) | Примечание |
|---|
|
Скрипт setup использует
/etc/pkgadd.conf той системы, на которую происходит установка,
чтобы определить, какие файлы необходимо обновить, а какие не изменять.
Файлы, которые не надо обновлять, содержаться в /var/lib/pkg/rejected/
(“Обновление пакета”). |
После того, как все пакеты обновятся, скрипт setup
покажет лог процесса инсталляции. Убедитесь, что последняя строка лога гласит:
“0 error(s)”
(0 ошибок).
Если позже вы обнаружили, что вам нужны дополнительные пакеты, то
вы можете просто подмонтировать CD-диск с CRUX и, используя команду pkgadd,
установить их (например, pkgadd /mnt/crux/opt/package#1.0-1.pkg.tar.gz).
-
Теперь настало время скомпилировать ядро. Для этого системе необходимо, чтобы вы были в “chroot”-среде только что установленной системы CRUX.
![[Note]](/doc/images/note.png) | Примечание |
|---|
|
Для создания chroot-среды существует короткая команда: setup-chroot. Она сразу выполняет все эти шаги. |
Перейдите в /usr/src/linux-2.6.20.3, сконфигурируйте и скомпилируйте новое ядро.
При необходимости отредактируйте /etc/fstab.
![[Note]](/doc/images/note.png) | Важно |
|---|
|
Если Вы обновляете CRUX 2.1 до CRUX 2.3, то вы должны отредактировать описание всех устройств
disk/cdrom/floppy в файле /etc/fstab. Начиная с версии 2.2, CRUX не использует схему имён devfs (/dev/discs/discX/partY).
Два примера: /dev/hda1 определяет первый раздел на master-диске первого IDE-канала (стандартная шина IDE ATA) и /dev/sda2 определяет второй раздел на первом SCSI или SATA - диске.
udev читает файлы из /sys/* и /proc/*. Убедитесь, что
эти псевдофайловые системы разрешены в конфигурации вашего ядра и доступны при загрузке системы. Также учтите, что в отличии от devfs, udev не монтирует автоматически /dev/pts. Терминальные приложения, такие как xterm(1), не будут работать, если вы забудете её подмонтировать. Если Вы хотите, чтобы udev определяла подключаемые
к USB устройства, то подмонтируйте /proc/bus/usb. Мы настоятельно рекомендуем вам
проверить ваш fstab-файл.
|
# <dev> <dir> <type> <options> <dump> <pass>
[..]
devpts /dev/pts devpts defaults 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
usb /proc/bus/usb usbfs defaults 0 0
Отредактируйте /etc/lilo.conf
чтобы определить, где находится скомпилированное ядро, и запустите lilo,
чтобы его активизировать.
Удалите CD-диск из вашего привода и загрузитесь с вашего HDD.
Если вы планируете использовать GRUB вместо lilo (который включен в ISO-имидж), предварительно ознакомьтесь с инструкцией по установке в приложении этого документа.
3.4. Алтернативные методы установки
3.4.1. Сборка вашего собственного загрузочного ядра
Если вы не можете установить CRUX с CD-ROM'а, потому что что ваше аппаратное обеспечение
не поддерживается загрузочным ядром, то вы сможете скомпилировать ваше собственное ядро и добавить в него
поддержку того оборудования, которое вам необходимо.
Для этого вам понадобится 1.44Mb дискета, доступ к уже установленной любой Linux-системе и записанный на CD
ISO-имидж CRUX'а. Также вам понадобятся основные знания по конфигурированию и компиляции ядра.
Соберите новое ядро с поддержкой вашего аппаратного обеспечения.
В качестве начальной точки используйте конфигурацию уже существующего ядра
(вы можете его найти здесь)
и добавьте поддержку необходимого вам оборудования.
Если ядро получится слишком большое, то вы можете удалить драйвера для SCSI и USB
(в том случае, конечно, если они вам не нужны), только не удаляйте никаких опций связанных с
файловыми системами.
Скачайте утилиту для создания загрузочных
дискет и распакуйте ее.
Перейдите в директорию mkbootfloppy
и запустите (от пользователя root) скрипт mkbootfloppy.
Для этого скрипта нужно указать один аргумент - где находится ядро, которое вы хотите использовать для образа
дискеты. Прежде чем начать, убедитесь, что к разделу /mnt
не подмонтированно ни одно устройство, поскольку этот скрипт mkbootfloppy
будет использовать эту директорию как точку монтирования.
Запишите полученный имидж boot.img
на дискету.
Вставьте дискету и CD-диск с дистрибутивом CRUX в компьютер, на который вы хотите установить систему
и перегрузитесь.
Установите CRUX.
Если у вас нет CD-райтера, или вы не можете загрузиться, используя CD-ROM,
или по каким-либо другим причинам не можете произвести установку обычными методами, описанными
в (“Установка с CD-ROM”), обратитесь к
HOWTO установка CRUX через NFS Юргена Дауберта (Jьrgen Daubert).
Система пакетов (pkgutils)
легка для понимания, все пакеты - это обычные tar.gz
файлы (т.е. без каких-либо мета-данных). При названии пакета используется следующее соглашение <name>#<version>-<release>.pkg.tar.gz,
где <name> название программы,
<version> версия программы и
<release> версия пакета.
Расширение pkg.tar.gz (вместо обычного tar.gz) используется для того чтобы показать, что это не просто
tar.gz файл, а tar.gz,
который предназначен для установки с помощью утилиты pkgadd.
Такой способ позволит легко отделить прочие tar.gz
файлы. Имеется набор утилит для управления пакетами - pkgadd(8), pkgrm(8), pkginfo(8) и
pkgmk(8).
С их помощью вы можете устанавливать, удалять, проверять и создавать пакеты, а также производить запросы к
базе данных пакетов.
Когда пакет установлен с использованием утилиты pkgadd,
к базе данных пакетов, хранящейся в /var/lib/pkg/db, добавляется новая запись.
Основная система пакетов не производит никаких проверок зависимостей между пакетами, поэтому вы не получите никаких
предупреждений, если установите пакет, который требует предварительной установки других пакетов.
Следующие разделы кратко описывают использование утилит по работе с пакетами.
Более подробную информацию вы сможете найти в соответствующих страницах руководства (в man'ах).
4.2. Использование системы пакетов
Установка пакета производится с помощью команды pkgadd.
Для этой утилиты необходимо указать по крайней мере один аргумент - пакет, который вы хотите установить.
Например:
Во время установки менеджер пакетов предварительно проверит, не будут ли перезаписаны уже установленные файлы.
Если обнаружатся конфликты, то утилита pkgadd
аварийно завершит свою работу, и пакет не будет установлен.
Сообщение об ошибке выведет список файлов, из-за которых произошел конфликт.
Например:
Для того чтобы во время установки файлы, вызывающие конфликт, были перезаписаны, вы можете использовать ключ -f (или --force).
Например:
Ситема пакетов работает таким образом, что файл может принадлежать только одному пакету. Если
установка происходила с ключом, позволяющем перезаписать файлы, то конфликтные файлы
после установки будут принадлежать пакету, который был установлен последним. Тем не менее директории могут принадлежать более чем одному пакету.
![[Warning]](/doc/images/warning.png) | Предупреждение |
|---|
|
Не стоит производить установку с перезаписыванием файлов, если только вы абсолютно не уверены в том, что делаете.
Если пакет конфликтует с уже установленными фйлами, то это может означать то, что устанавливаемый пакет испорчен и устанавливает лишние файлы. Используйте эту опцию только в крайних случаях, а лучше вообще обойдетесь без неё. |
Как уже говорилось выше, пакет не содержит никаких мета-данных.
Вместо них менеджер пакетов использует имя файла для определения имени пакета и его версии.
Так, при установке пакета, который называется bash#2.05-1.pkg.tar.gz
менеджер пакетов установит, что пакет называется bash
и имеет версию 2.05-1.
Если утилита pkgadd не сможет распознать имя файла
(например нет символа #, или имя файла не заканчивается на
.pkg.tar.gz) утилита выведет
сообщение об аварийном завершении работы, и пакет не будет установлен.
Обновление пакета производится с помощью утилиты pkgadd с ключом
-u.
Например:
Эта команда заменит ранее установленный пакет bash
на новый. Если в системе не было пакета bash, то утилита
pkgadd выдаст сообщение об ошибке.
Для системы пакетов не имеет значения номер версии пакета, поэтому вы можете
"обновить" пакет версии 2.05-1 на пакет версии
2.04-1 (или даже на саму версию 2.05-1). Установленный пакет будет просто заменён тем пакетом, который будет указан.
Обновление пакета можно сравнить с действием команд pkgrm и команда pkgadd,
запущенных по очереди, с одним большим исключением. Когда вы обновляете пакет (pkgadd -u)
вы имеете возможность не заменять некоторые файлы, которые были ранее установленны.
Это может пригодиться, если вы не хотите обновлять файлы конфигурации и журналы событий.
Когда вы выполняете команду pkgadd, предварительно считывается файл
/etc/pkgadd.conf.
Этот файл содержит правила, описывающие, как вести себя утилите pkgadd
при проведении обновления. Правило состоит из трех составляющих: событие (event),
шаблон (pattern) и действие (action).
Событие описывает, в какой ситуации будет применятся правило. В настоящий момент поддерживается только одно событие -
UPGRADE.
Шаблон - это регулярное выражение, которое описывает шаблон для имени файлов,
к которому будет применено действие при возникновении события UPGRADE,
действие описывается YES или NO.
Разрешается определить более одного правила для одного события, в этом случае правило стоящее первым будет иметь более низкий
приоритет, чем правило стоящее после него. Например:
Следуя описанному выше примеру, утилита pkgadd
никогда не будет обновлять файлы в директориях /etc/ или
/var/log/ (включая поддиректории), за исключением
файлов из поддиректории /etc/X11/ (включая поддиректории),
исключение составит только файл /etc/X11/xorg.conf.
Правило, применяемое по умолчанию - обновлять все, а исключения из этого правила как раз таки и описываются в этом файле.
![[Note]](/doc/images/note.png) | Примечание |
|---|
|
Шаблон не должен начинаться с “/”
поскольку относится к файлам из пакета, а к файлам на диске. |
Если pkgadd найдёт файл, который не должен обновляться, он устанавит его
в /var/lib/pkg/rejected/.
Файлы из этой директории никогда не добавляются в базу данных о пакетах.
Пользователь потом может сам решать, использовать новый файл и/или удалить его вручную.
Другая возможность - использовать rejmerge.
Для каждого запрещенного файла из /var/lib/pkg/rejected/,
rejmerge покажет различия между установленной версией файла и файлом который был отвергнут при обновлении. Пользователь может сам выбрать -
оставить существующую версию, обновить до версии, которая была отвергнута, или выполнить слияние
этих двух файлов. Например, (использованный выше пример /etc/pkgadd.conf):
Удаление пакета производится с помощью pkgrm.
Для нее необходимо ввести один аргумент - имя пакета, который вы собираетесь удалить.
Например:
![[Warning]](/doc/images/warning.png) | Предупреждение |
|---|
|
Эта команда удалит все файлы, принадлежащие пакету, не задавая никаких вопросов.
Дважды подумайте, прежде чем делать это, также убедитесь, что в имени пакета не сделали ошибки, поскольку
это может привести к удалению совершенно других файлов (например, вы можете ошибиться и набрать
glib как glibc).
|
4.2.4. Запрос к базе пакетов
Запросы к базе пакетов производятся с помощью утилиты pkginfo.
Эта утилита имеет несколько параметров, для формирования различных запросов.
Пример:
4.3. Внешний интерфейс управления пакетами: prt-get
После предъявления различных требований к управлению пакетами в CRUX, группа пользователей начала обсуждение более продвинутого внешнего интерфейса управления по сравнению с pkgutils, с отслеживанием зависимостей и поддержкой больших объёмов установок. Результатом усилий общества стал prt-get, инструмент, который предоставляет больше возможностей, чем pkgutils, сохраняя при этом их характер и мощь. Главными особенностями являются
- Отслеживание зависимостей
- Журналирование сборок
- Мощный поиск и функциональность запросов
В настоящее время prt-get является официальным проектом и инструментом, принадлежащим проекту CRUX.
Полное описание может быть найдено в Руководстве пользователя prt-get
Создание пакетов производится с помощью команды pkgmk.
Эта утилита использует файл Pkgfile,
который содержит информацию о пакете (название(name), версию(version), и т.д.),
а также команды, которые необходимо выполнить для компиляции пакета.
Если быть более точным, то Pkgfile - это
bash(1)-скрипт, в котором определены некоторые переменные
(name, version,
release и source) и функция (build).
Ниже приведен пример того, как может выглядеть Pkgfile. Он показывает, как собрать пакет для утилиты grep(1).
Некоторые комментарии добавлены для пояснения.
В реальной жизни вы не будете включать все эти комментарии, поэтому реальный Pkgfile для grep(1) выглядит следующим образом:
![[Note]](/doc/images/note.png) | Примечание |
|
Приведенная в примере функция build()показывает как собрать
пакет grep.
Содержание этой функции может значительно отличатся, если программа собирается другим способом, например, не использует autoconf. |
Когда выполение функции build() завершится, директория
$PKG будет собрана в пакет, называемый
<name>#<version>-<release>.pkg.tar.gz.
Перед тем, как создание пакета будет завершено, pkgmk
сверит содержащиеся в пакете файлы с содержанием файла
.footprint. Если этот файл не существует, то пакет будет создан, а проверка будет пропущена.
Файл .footprint будет содержать список
файлов которые должны быть в пакете, если он был успешно собран, или список всех файлов
которые были установлены в директорию $PKG
(если файл .footprint уже не существовал).
Если обнаружится несоответствие, то проверка прервётся, и будет выдано сообщение об ошибке.
Вам не нужно писать файл .footprint вручную.
Когда пакет будет обновлён, и вам будет нужно обновить содержимое файла .footprint просто выполните команду pkgmk -uf.
Эта проверка позволит убедиться в том, что пересборка пакета прошла, как ожидалось.
Если сборка пакета произошла без ошибок, то можно установить пакет посредством утилиты
pkgadd. Я настоятельно рекомендую просматривать
Pkgfile других пакетов,
поскольку просмотр примеров - это хороший способ научиться самостоятельно писать Pkgfile.
4.5. Требования к пакетам
Название пакета должно быть всегда в нижнем регистре (например,
name=eterm - правильно, а
name=Eterm - неправильно).
Когда пакет добавляется к системе портов CRUX, то директория в структуре портов должна называться так же, как пакет,
т.е. /usr/ports/???/eterm. -
Не совмещайте несколько разных программ/библиотек в одном пакете. Создайте несколько отдельных пакетов.
Все пакеты должны устанавливаться в свои директории.
В случае необходимости можно отойти от этого правила. Но, по возможности, старайтесь придерживаться следующей
структуры каталогов.
/usr/X11R6 и
/usr/???/X11
зарезервированы специально для X11. X-ориентированные программы, которые не поставляются вместе с X11,
должны быть размещены в /usr, а НЕ в
/usr/X11R6 или
/usr/???/X11.
/opt
директория зарезервирована для ручной сборки/установки приложений. Пакеты никогда не должны использовать эту директорию.
/usr/libexec/
НЕ используется в CRUX, поэтому пакеты также не должны ничего устанавливать в эту директорию. Для установки используйте /usr/lib/<prog>/.
3.4.3. Удаление лишних файлов
Пакет не должен содержать “лишних файлов”.
Это различные info-страницы и другая online-документация, исключение составляют только man'ы
(т.е. usr/doc/*,
README,
*.info,
*.html, и т.д.).
Файлы относящиеся к NLS (поддержка национальных языков),
всегда, где это возможно, используйте --disable-nls.
Бесполезные или устаревшие бинарные файлы (т.к.
/usr/games/banner и
/sbin/mkfs.minix).
Не добавляйте новых переменных в Pkgfile.
Очень редко добавление новых переменных может привести к повышению читабельности или повысить качество пакета.
Более того, только переменные name, version,
release и source
будут гарантировано работать в будущих версиях pkgmk.
Кроме того, объявление собственных переменных может привести к конфликту с внутренними
переменными pkgmk.
Используйте переменные $name и
$version для облегчения
обновления/поддержки пакета. Например,
source=(http://xyz.org/$name-$version.tar.gz),
лучше чем source=(http://xyz.org/myprog-1.0.3.tar.gz)
поскольку, URL будет автоматически изменяться в зависимости от переменной
$version.
Запомните, что переменная source - это массив, т.е.
всегда объявляйте эту переменную как source=(...) и никогда
НЕ объявляйте как source=...
4.5.4.1 Заголовок файла Pkgfile
Заголовок может содержать следующие поля:
| Название |
Значение |
| Description |
Краткое описание описание пакета; так, как оно есть |
| Maintainer |
Ваше полное имя и e-mail адрес, можете скрыть его, если желаете |
| Packager |
Полное имя разработчика пакета и его e-mail адрес |
| URL |
WEB-страница с более подробной информацией о пакете |
| Depends on |
Список пакетов, от которых зависит натоящий пакет (разделённых пробелом или запятой) |
Если зависимости отсутствуют, поле Depends on можно опустить;
поле Packager можно опустить, если тот кто разработал порт и его сопровождает - один человек.
Пример заголовка
# Description: Terminal based IRC client for UNIX systems
# URL: http://www.irssi.org/
# Maintainer: Jukka Heino, jukka at karsikkopuu dot net
# Packager: Daniel K. Gebhart, dkg at con-fuse dot org
# Depends on: glib
Порт - это директория, содержащая файлы, необходимые для сборки пакета с помощью
утилиты pkgmk. Это значит, что директория содержит по крайней мере следующие файлы:
Pkgfile (который содержит сценарий сборки пакета) и
.footprint (который используется для проверки возможности отката
и содержит список файлов, которые должны получиться после сборки пакета).
Кроме этого, порт может содержать патчи и/или другие файлы, необходимые для сборки пакета.
Важно понимать, что исходные коды программы не обязательно должны содержаться в директории порта.
Вместо этого, в файле Pkgfile может содержаться
URL, который будет указывать на источник, откуда можно скачать необходимые файлы.
Слово port (порт) позаимствовано из мира BSD-систем, где слово
port означает программу которая была портирована на систему
или платформу. Это слово может ввести в небольшое заблуждение, так как для большинства программ
не требуется портирование для запуска в системе CRUX (и на Linux в принципе).
5.1.2. Что такое система портов?
Термин Ports System (система портов) означает CVS-репозиторий,
содержащий порты и клиентскую программу, которая может загружать
порты с этого CVS-репозитория.
Для пользователей CRUX имеется утилита ports(8)
позволяющая скачивать порты из CVS-репозитория и размещать их в директории
/usr/ports/.
Утилита ports использует rsync(1)
для скачивания / синхронизирования портов.
5.1.3. Коллекции портов
Порты CRUX собраны в так называемые коллекции. Существует три различных уровня портов:
5.1.3.1. Официальные коллекции 'core', 'opt' и 'xorg'
core, opt и xorg - это три основных коллекции CRUX. Эти коллекции поддерживаются
разработчиками CRUX, которые обеспечивают их совместимость и хорошую совместную работу. Также эти три коллекции доступны в CRUX по умолчанию.
5.1.3.2. Коллекция 'contrib'
Коллекция contrib это относительно новые порты, предоставленные
опытными разработчиками портов, часть из которых разрабатываются коммандой
разработчиков CRUX, а часть - обычными пользователями.
Цель этой коллекции - уменьшить число дублирующих портов в индивидуальных коллекциях.
Если Вы можете регулярно поддерживать порт, то Вы можете принять участие в
формировании коллекции contrib.
Поскольку эта коллекция официально не поддерживается командой разработчиков CRUX,
эта коллекция не включена в дистрибутив по умолчанию.
5.1.3.3. Индивидуальные коллекции от пользователей CRUX
Используя HttpUp,
каждый пользователь может опубликовать свои собственные порты; необходимое требование - это наличие
хостинга для размещения портов. Публикация портов - это один из самых простых путей
помочь сообществу CRUX.
5.2. Использование системы портов
5.2.1. Синхронизация Вашей локальной структуры портов
Когда CRUX только установлен, локальная структура портов
(/usr/ports/) пуста. Для того чтобы получить структуру
портов, необходимо запустить утилиту ports с ключом -u.
Например:
Ключ -u означает обновить,
и указывает утилите ports соединиться с CVS-репозиторий
и скачать новые и обновленные порты. Вывод этой утилиты будет выглядеть примерно вот так:
Вывод зависит от того, какие файлы были скачены, обновлены и/или удалены.
5.2.2. Просмотр локальных портов
Когда локальная структура портов обновлена, директория
/usr/ports/ содержит две категории пакетов
, core и
opt.
В каждой из этих директорий содержаться порты. Вы можете просто выбрать необходимую
директорию, для того, чтобы найти тот порт из имеющихся, который вам нужен.
Вы также можете использовать ports с ключом
-l, для просмотра локальных портов. Например:
Если вы ищете определённый пакет, то может быть проще использовать
следующий способ: ports -l | grep sendmail,
чтобы выяснить, доступен ли порт и в какой категории он находится.
5.2.3. Просмотр различий версий
Для того, чтобы найти отличия в структуре имеющихся портов и установленными (например более новый), вы можете использовать
ключ -d.
Если версии отличаются, то вывод команды будет приблизительно вот такой:
Если отличий не обнаружено, т.е. система полностью синхронизирована со структурой портов, то вывод будет следующим:
5.2.4. Сборка и установка пакета
Для того, чтобы собрать и установить пакет из порта, необходимо перейти в необходимую директорию из структуры портов
и использовать утилиту pkgmk для его сборки. Например:
Ключ -d означает скачать недостающие
исходные файлы и указывает утилите pkgmk
скачать исходники указанные в Pkgfile
(если, исходные тексты программы уже скачены, то эта опция игнорируется).
После того как все файлы будут загружены, начнётся сборка пакета.
Если пакет был успешно собран, то вы можете использовать утилиту pkgadd
для его обновления или установки. Например:
Для того, чтобы слегка упростить эти два шага, вы можете использовать ключи -i
(для установки) или -u (для обновления). Например:
или
Это позволит скачать, собрать и установить/обновить пакет.
Учтите, что пакет будет установлен/обновлен только если процедура сборки прошла успешно.
5.2.5. Активация коллекции 'contrib'
Как уже говорилось выше, коллеция 'contrib' содержит полезные порты
от опытных разработчиков. Поскольку эти порты не предоставлены командой разработчиков
CRUX, при использовании этих портов вам нужно быть несколько более критичными к их качеству и безопасности.
Хотя, многие порты коллекции 'contrib' предоставлены очень уважаемыми членами сообщества.
чтобы активировать коллекцию 'contrib', нужно выполнить следующие действия:
$ cd /etc/ports
$ mv contrib.rsync.inactive contrib.rsync
Чтобы prt-get знала, что Вы хотите использовать дерево contrib, необходимо
отредактировать файл /etc/prt-get.conf и раскомментировать
строку prtdir /usr/ports/contrib
(i.e. т.е. удалить символ комментария в начале строки. После этого файл должен
выглядеть примерно вот так:
###
### prt-get conf
###
# note: the order matters: the package found first is used
prtdir /usr/ports/core
prtdir /usr/ports/opt
# the folloing line enables the user maintained contrib collection
prtdir /usr/ports/contrib
Теперь запустите ports -u, после чего вы сможете использовать
порты из коллекции contrib.
5.2.6. Дополнительные инструменты
5.2.6.1. Сборка портов непривелегированным пользователем
Обычно сборка портов требует root-привелегий. Это небезопасно, поскольку злонамеренно или просто плохо спроектированный порт может повредить вашу систему. Команда fakeroot предоставляет возможность сборки портов обычным пользователем. Вы всегда должны использовать fakeroot, особенно, когда собираете пакеты из репозиториев, созданных пользователями.
$ fakeroot pkgmk -d
Вы также можете сделать, чтобы prt-get использовал fakeroot. На сайте CRUX имеется руководство о том, как этого добиться.
5.2.6.2. Полезные скрипты
Существует много задач, касающихся управления пакетами и портами, которые могут быть выполнены в несколько шагов стандартными средствами CRUX, описанными выше. Порт prt-utils из репозитория opt содержит коллекцию таких скриптов. Использование этих скриптов описано в соответствующих man-ах. В разделе документации сайта CRUX есть обзор всех скриптов в prt-utils.
6. Конфигурация
6.1. Скрипт инициализации
В CRUX'е используются следующие уровни запуска (определенные в
/etc/inittab).
Скрипты инициализации, используемые в CRUX, выдержаны в стиле BSD
(в противоположность SysV-стилю) и имеют следующее расположение.
Вы можете редактировать файлы /etc/rc.modules, /etc/rc.local
и /etc/rc.conf в соответствии с вашими нуждами.
6.1.3. Конфигурационные переменные в /etc/rc.conf
В файле /etc/rc.conf вы
можете встретить следующие переменные.
Настройка сети находится в скрипте
/etc/rc.d/net.
Для активизации сети необходимо добавить скритп net
в массив SERVICES, определенный в
/etc/rc.conf.
По умолчанию этот скрипт содержит настройки только для интерфейса
lo и статический IP-адрес для eth0. Если хотите настроить другие сетевые интерфейсы (eth1, eth2, и так далее) то вы должны добавить дополнительные команды ip(8).
Например:
Если вы хотите настроить ваши сетевые интерфейсы с использованием DHCP, то используйте команду dhcpcd(8)
(вместо ip(8)). Например:
![[Note]](/doc/images/note.png) |
Примечание |
|---|
|
Релизы CRUX до 2.3 использовали команды ifconfig(8) и route(8) для инициализации сети; ниже мы приводим в качестве примера образцы предыдущих версий. |
Ручное конфигурирование ip (CRUX < 2.3):
Конфигурирование DHCP (CRUX < 2.3):
В CRUX по умолчанию используются пароли MD5SUM. Но этот алгоритм может быть выключен, если
вы хотите вместо него использовать традиционные пароли, зашифрованные алгоритмом DES. Учтите,
что использование DES для шифрования паролей намного НЕ безопаснее.
Чтобы отключить алгоритм MD5SUM для паролей, измените переменную MD5_CRYPT_ENAB
в /etc/login.defs значение
no.
В будующем запомните, что при компиляции програм, которые используют функцию crypt(3)
для аутентификации пользователей, вы должны быть уверены, что эта программа связана с библиотекой
libcrypt (т.е. при линковке используется -lcrypt)
которая содержит версию MD5SUM в функции crypt
(эта функция также поддерживает пароли, зашифрованные алгоритмом DES).
Исходные коды ядра, находящиеся в /usr/src/linux-2.6.20.3/
не устанавливаются с помощью утилиты pkgadd.
Если вы решили обновить ваше ядро, вы можете просто вручную заменить исходные коды
ядра на более новые (или разместить их где-нибудь в другом месте).
Эти изменения не повлияют как на базу данных пакетов (поскольку при установке ядра не использовалась
утилита pkgadd), так и на хэдер-файлы ядра, находящиеся
в /usr/include/linux и
/usr/include/asm, поскольку они не являются
символическими ссылками на исходные коды ядра, а вместо этого содержат копии
хэдер-файлов.
Многие проблемы описаны в FAQ (русский перевод доступен
по этому адресу), если у вас возникла проблема, то обратитесь
к этому документу, очень вероятно, что Вы найдете там решение своей проблемы.
Если же у Вас после прочтения FAQ остались вопросы, то Вы можете задать его
кому-нибудь из списка рассылки или на IRC-канале. Более подробную информацию об этом
Вы можете найти на странице Сообщества
на нашем сайте.
Установка нового менеджера загрузки подобна |