CRUX Handbook 2.4
ВЕРСИЯ 2.4
Перевод Mikhail Pozdnyakov
Обновил до версии 2.4 Artyom Kiryushkin
Содержание
- 1. Предисловие
- 2. Введение
- 3. Установка CRUX
- 4. Система пакетов
- 5. Система портов
Автор этого руководства - Per Liden. Robert McMeekin перевел его в формат DocBook, CRUX team разработали wiki-версию. На русский язык это руководство перевел Михаил Поздняков, дополнил Артём Кирюшкин. Кроме этого многие люди давали советы по улучшению этого документа.
CRUX - это легкий дистрибутив Linux, оптимизированный под платформу i686 и ориентированный на опытных пользователей. Основная цель этого дистрибутива - "сделать его простым", основываясь на простой системе пакетов tar.gz, BSD-подобных скриптах инициализации и на относительно небольшой коллекции готовых пакетов. Второй целью является использование новых возможностей Linux, а также последних инструментов и библиотек. Кроме того, CRUX имеет систему портов, которая позволяет легко устанавливать и обновлять приложения.
На сегодняшний день существует множество различных дистрибутивов Linux, так что же делает CRUX лучше других? На самом деле, выбор дистрибутива - это дело вкуса, конечно. Вот несколько подробностей о вкусах и целях людей, стоящих за CRUX. Дистрибутив от начала и до конца сделан с учётом простоты его использования. Существенной частью является простота создания новых и обновления старых пакетов; обновление пакета в CRUX часто состоит в наборе команды pkgmk -d -u. Использование портов помогает содержать ваши пекеты в обновлённом состоянии, состоящими не из последних альфа-версий, а из последних стабильных версий. Другие возможности включают в себя создание пакетов, оптимизированных для вашего процессора, например, скомпилированных с использованием -march=i686, и избежание переполнения вашей файловой системы файлами, которыми вы никогда не будете пользоваться, например, /usr/doc/*, и т.д. Если вам потребуется больше информации о какой-либо программе, чем её предоставляют man'ы, то Google обычно знает всё. И, наконец, он старается использовать новые возможности, когда они становятся доступными, при условии, что они согласуются с остальными целями.
Короче говоря, CRUX может очень вам подойти, если вы:
- Опытный Linux-пользователь и хотите иметь чистый и компактный Linux-дистрибутив в качестве основы для своей системы.
- Предпочитаете редактировать файлы конфигурации в редакторе вместо использования GUI.
- Не колеблетесь при скачивании и сборке программ из исходников.
Поскольку CRUX это Linux-дистрибутив, то он состоит из программного обеспечения, написанного различными людьми. Каждый пакет поставляется с той лицензии, которую выбрал автор(ы). Чтобы понять, по какой лицензии распространяется отдельно взятый пакет, посмотрите его исходный код.
Все скрипты сборки пакетов в CRUX'е (для категорий пакетов core и opt) принадлежат © 2000-2007 Per Liden и команде развития CRUX и лицензируются посредством GNU General Public License.
Пакеты, содержащиеся в официальной версии 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 контроллеров:
| Подсистема | Драйвера, включенные в загрузочное ядро |
|---|---|
| IDE | Generic PCI IDE chipset |
| SATA | ServerWorks Frodo/Apple K2, Intel PIIX/ICH, Promise, Silicon Image, VIA, VITESSE VSC-7174 |
| SCSI | 7000FASST, ACARD, Adaptec AACRAID, Adaptec AIC7xxx, Adaptec AIC79xx U320, AdvanSys, Always IN2000, AMI MegaRAID, BusLogic, Compaq Fibre Channel, NCR5380/53c400, IBM ServeRAID, SYM53C8XX, Tekram DC390(T) and Am53/79C974 |
| USB | USB device filesystem, EHCI HCD (USB 2.0) support, UHCI (Intel PIIX4, VIA, ...) support, OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support, USB Mass Storage support, USB Human Interface Device (full HID) support, HID input layer support |
Чтобы CRUX установился, ваш дисковый контроллер должен находиться в приведенном выше списке. Если ваше аппаратное обеспечение не поддерживается, или у вас возникли проблемы при установке CRUX, то вы сможете найти решение в разделе “Альтернативные методы установки”.
Скачайте ISO-имидж CRUX'а (crux-2.4.iso). Чтобы проверить, правильно ли скачался имидж, вычислите с помощью команды md5sum контрольную сумму имиджа.
$ md5sum crux-2.4.iso
Сравните результат с файлом crux-2.4.md5sum, который находится в той же директории сайта, что и сам ISO-имидж. Если контрольные суммы совпадают, то это значит, что закачка прошла успешно, и вы можете записать имидж на CD-диск.
ISO-имидж является загрузочным, просто вставьте установочный диск с CRUX'ом и перегрузите компьютер.
Когда загрузитесь с CD нажмите Enter (возможно, вам придётся исправить параметр root= в зависимости от конфигурации вашего компьютера).![[Note]](/doc/images/note.png)
Примечание (от переводчика) Чтобы загрузиться с CD, убедитесь что в BIOS'е, в разделе об устройствах, с которых возможна загрузка, CD-ROM опрашивается раньше чем HDD.
Войдите в систему как root (пароль не требуется).
Создайте (если это необходимо) и отформатируйте разделы, на которые вы хотите установить CRUX.
$ fdisk /dev/hd? $ mkfs.???? /dev/hd?? $ mkswap /dev/hd??
![[Note]](/doc/images/note.png)
Примечание Имейте ввиду, что жесткие диски SATA обычно определяются как SCSI-устройства. Т.е. первый диск будет называться не /dev/hda, а /dev/sda. За более подробной информацией о соглашениях по обозначениям жёстких дисков обращайтесь к этому HOWTO.
Размер выделяемого дискового пространства зависит от того, сколько пакетов вы собираетесь установить. Я бы рекомендовал выделить под корневой раздел не менее 1Gb (CRUX, в зависимости от конфигурации, будет использовать приблизительно 200MB-500MB).
CRUX поддерживает все файловые системы, поддерживаемые в качестве корневых файловых систем ядром линукса: ext2, ext3, JFS, reiserfs и XFS. Кроме того, я настоятельно рекомендую отделить системные разделы от пользовательских данных, т.е. использовать разные разделы для /home (и возможно /var). Это значительно облегчит вам жизнь, когда вы решите обновить/переустановить/удалить вашу систему.
![[Note]](/doc/images/note.png)
Примечание Убедитесь, что в BIOS'е опция "Virus Protection" ОТКЛЮЧЕНА (DISABLED), поскольку эта опция может помешать корректно создать разделы с помощью fdisk.
-
Подмонтируйте раздел, на который вы хотите установить дистрибутив.
$ mount /dev/hd?? /mnt
Если вы хотите использовать для системы больше, чем один раздел, их также необходимо предварительно подмонтировать. Например, если вы хотите отделить раздел для /home или /var, сделайте:
$ mkdir /mnt/var $ mount /dev/hd?? /mnt/var
-
Активируйте swap раздел(ы).
$ swapon /dev/hd??
Чтобы начать установку пакетов, наберите setup. Скрипт спросит, где вы смонтировали корневой раздел будущей системы, а также какие пакеты вы хотите установить. Просто выберите пакеты, которые вы хотите установить. Однако, я бы рекомендовал установить все пакеты, помеченные как core.
После того, как все пакеты будут установлены, скрипт setup покажет лог процесса инсталляции. Убедитесь, что последняя строка лога гласит: “0 error(s)” (0 ошибок).
Если позже вы обнаружите, что вам необходимо установить дополнительные пакеты, то просто подмонтируйте CD-диск с CRUX, и, используя команду pkgadd, доставьте необходимые пакеты.
![[Note]](/doc/images/note.png)
Примечание При установке пакетов зависимости не проверяются. Это значит, что понимание того, что для установки пакета exim, вам также потребуется установить пакет db, лежит целиком на вас.
-
Теперь настало время собрать ядро и выполнить основные шаги конфигурации системы. При компиляции ядра системе необходимо, чтобы вы были в “chroot”-среде только что установленной системы CRUX.
$ mount --bind /dev /mnt/dev $ mount --bind /tmp /mnt/tmp $ mount -t proc proc /mnt/proc $ mount -t sysfs none /mnt/sys $ chroot /mnt /bin/bash
-
Установите пароль для пользователя root.
$ passwd
Отредактируйте /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.23.9, чтобы настроить и откомпилировать ядро.
$ cd /usr/src/linux-2.6.23.9 $ make menuconfig $ make all $ make modules_install $ cp arch/i386/boot/bzImage /boot/vmlinuz $ cp System.map /boot
Отредактируйте /etc/lilo.conf, чтобы определить где находится скомпилированное ядро, и запустите lilo, чтобы его активизировать.
Удалите CD-диск из вашего привода и загрузитесь с вашего HDD.
![]() | Примечание |
|---|---|
|
Для создания chroot-среды существует короткая команда: setup-chroot. Она сразу выполняет все эти шаги. | |
Если Вы хотите вместо Lilo использовать GRUB (который включен в ISO-имидж), предварительно ознакомтесь с инструкцией по установке в приложении этого документа.
Скачайте ISO-имидж CRUX'а (crux-2.3.iso). Чтобы проверить, правильно ли скачался имидж, вычислите с помощью команды md5sum контрольную сумму имиджа.
$ md5sum crux-2.3.iso
Сравните результат с файлом crux-2.3.md5sum, который находится в той же директории сайта, что и сам ISO-имидж. Если контрольные суммы совпадают, то это значит, что закачка прошла успешно, и вы можете записать имидж на CD-диск.
ISO имидж является загрузочным, просто вставьте установочный диск с CRUX'ом и перегрузите компьютер.
Когда загрузитесь с CD, нажмите Enter (возможно, вам придётся исправить параметр root= в зависимости от конфигурации вашего компьютера).![[Note]](/doc/images/note.png)
Примечание (от переводчика) Чтобы загрузиться с CD, убедитесь что в BIOS'е, в разделе об устройствах, с которых возможна загрузка, CD-ROM опрашивается раньше чем HDD.
Войдите в систему как root (пароль не требуется).
Смонтируйте ваш корневой раздел CRUX.
$ mount /dev/hd?? /mnt
Если ваша система занимает больше одного раздела, то остальные разделы также необходимо предварительно подмонтировать. Например, если у вас имеется отдельный раздел для /var, сделайте:
$ mkdir /mnt/var $ mount /dev/hd?? /mnt/var
-
Активируйте swap раздел(ы).
$ swapon /dev/hd??
Чтобы начать установку пакетов наберите 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.
$ mount --bind /dev /mnt/dev $ mount --bind /tmp /mnt/tmp $ mount -t proc proc /mnt/proc $ mount -t sysfs none /mnt/sys $ chroot /mnt /bin/bash
Перейдите в /usr/src/linux-2.6.23.9, сконфигурируйте и скомпилируйте новое ядро.
При необходимости отредактируйте /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-файл.
![]() | Примечание |
|---|---|
|
Для создания chroot-среды существует короткая команда: setup-chroot. Она сразу выполняет все эти шаги. | |
# <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-имидж), предварительно ознакомьтесь с инструкцией по установке в приложении этого документа.
Если вы не можете установить CRUX с CD-ROM'а, потому что что ваше аппаратное обеспечение не поддерживается загрузочным ядром, то вы сможете скомпилировать ваше собственное ядро и добавить в него поддержку того оборудования, которое вам необходимо. Для этого вам понадобится 1.44Mb дискета, доступ к уже установленной любой Linux-системе и записанный на CD ISO-имидж CRUX'а. Также вам понадобятся основные знания по конфигурированию и компиляции ядра.
Соберите новое ядро с поддержкой вашего аппаратного обеспечения. В качестве начальной точки используйте конфигурацию уже существующего ядра (вы можете его найти здесь) и добавьте поддержку необходимого вам оборудования. Если ядро получится слишком большое, то вы можете удалить драйвера для SCSI и USB (в том случае, конечно, если они вам не нужны), только не удаляйте никаких опций связанных с файловыми системами.
Скачайте утилиту для создания загрузочных дискет и распакуйте ее.
Перейдите в директорию mkbootfloppy и запустите (от пользователя root) скрипт mkbootfloppy. Для этого скрипта нужно указать один аргумент - где находится ядро, которое вы хотите использовать для образа дискеты. Прежде чем начать, убедитесь, что к разделу /mnt не подмонтированно ни одно устройство, поскольку этот скрипт mkbootfloppy будет использовать эту директорию как точку монтирования.
$ cd mkbootfloppy $ ./mkbootfloppy /path/to/linux/kernel/arch/i386/boot/bzImage 1440+0 records in 1440+0 records out mke2fs 1.27 (8-Mar-2002) Added CRUX *
Запишите полученный имидж boot.img на дискету.
$ dd if=boot.img of=/dev/fd0
Вставьте дискету и 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, добавляется новая запись. Основная система пакетов не производит никаких проверок зависимостей между пакетами, поэтому вы не получите никаких предупреждений, если установите пакет, который требует предварительной установки других пакетов.
Однако, зависимости поддерживает входящий в дистрибутив инструмент prt-get.Следующие разделы кратко описывают использование утилит по работе с пакетами. Более подробную информацию вы сможете найти в соответствующих страницах руководства (в man'ах).
Установка пакета производится с помощью команды pkgadd. Для этой утилиты необходимо указать по крайней мере один аргумент - пакет, который вы хотите установить. Например:
$ pkgadd bash#2.05-1.pkg.tar.gz
Во время установки менеджер пакетов предварительно проверит, не будут ли перезаписаны уже установленные файлы. Если обнаружатся конфликты, то утилита pkgadd аварийно завершит свою работу, и пакет не будет установлен. Сообщение об ошибке выведет список файлов, из-за которых произошел конфликт. Например:
$ pkgadd bash#2.05-1.pkg.tar.gz bin/sh usr/man/man1/sh.1.gz pkgadd error: listed file(s) already installed (use -f to ignore and overwrite)
Для того чтобы во время установки файлы, вызывающие конфликт, были перезаписаны, вы можете использовать ключ -f (или --force). Например:
$ pkgadd -f bash#2.05-1.pkg.tar.gz
Ситема пакетов работает таким образом, что файл может принадлежать только одному пакету. Если установка происходила с ключом, позволяющем перезаписать файлы, то конфликтные файлы после установки будут принадлежать пакету, который был установлен последним. Тем не менее, директории могут принадлежать более чем одному пакету.
![]() | Предупреждение |
|---|---|
|
Не стоит производить установку с перезаписыванием файлов, если только вы абсолютно не уверены в том, что делаете. Если пакет конфликтует с уже установленными фйлами, то это может означать то, что устанавливаемый пакет испорчен и устанавливает лишние файлы. Используйте эту опцию только в крайних случаях, а лучше вообще обойдетесь без неё. | |
Как уже говорилось выше, пакет не содержит никаких мета-данных. Вместо них менеджер пакетов использует имя файла для определения имени пакета и его версии. Так, при установке пакета, который называется bash#2.05-1.pkg.tar.gz менеджер пакетов установит, что пакет называется bash и имеет версию 2.05-1. Если утилита pkgadd не сможет распознать имя файла (например нет символа #, или имя файла не заканчивается на .pkg.tar.gz) утилита выведет сообщение об аварийном завершении работы, и пакет не будет установлен.
Обновление пакета производится с помощью утилиты pkgadd с ключом -u. Например:
$ pkgadd -u bash#2.05-1.pkg.tar.gz
Эта команда заменит ранее установленный пакет 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. Разрешается определить более одного правила для одного события, в этом случае правило, стоящее первым, будет иметь более низкий приоритет, чем правило, стоящее после него. Например:
# # /etc/pkgadd.conf: pkgadd(8) configuration # UPGRADE ^etc/.*$ NO UPGRADE ^var/log/.*$ NO UPGRADE ^etc/X11/.*$ YES UPGRADE ^etc/X11/xorg.conf$ NO # End of file
Следуя описанному выше примеру, утилита pkgadd никогда не будет обновлять файлы в директориях /etc/ или /var/log/ (включая поддиректории), за исключением файлов из поддиректории /etc/X11/ (включая поддиректории), исключение составит только файл /etc/X11/xorg.conf. Правило, применяемое по умолчанию - обновлять все, а исключения из этого правила как раз таки и описываются в этом файле.
![]() | Примечание |
|---|---|
|
Шаблон не должен начинаться с “/” поскольку относится к файлам из пакета, а к файлам на диске. | |
Если pkgadd найдёт файл, который не должен обновляться, он устанавит его в /var/lib/pkg/rejected/. Файлы из этой директории никогда не добавляются в базу данных о пакетах. Пользователь потом может сам решать, использовать новый файл и/или удалить его вручную. Другая возможность - использовать rejmerge. Для каждого запрещенного файла из /var/lib/pkg/rejected/, rejmerge покажет различия между установленной версией файла и файлом который был отвергнут при обновлении. Пользователь может сам выбрать - оставить существующую версию, обновить до версии, которая была отвергнута, или выполнить слияние этих двух файлов. Например, (использованный выше пример /etc/pkgadd.conf):
$ pkgadd -u bash#2.05-1.pkg.tar.gz pkgadd: rejecting etc/profile, keeping existing version $ ls /var/lib/pkg/rejected/ etc/ $ ls /var/lib/pkg/rejected/etc/ profile
Удаление пакета производится с помощью pkgrm. Для нее необходимо ввести один аргумент - имя пакета, который вы собираетесь удалить. Например:
$ pkgrm bash
![]() | Предупреждение |
|---|---|
|
Эта команда удалит все файлы, принадлежащие пакету, не задавая никаких вопросов. Дважды подумайте, прежде чем делать это, также убедитесь, что в имени пакета не сделали ошибки, поскольку это может привести к удалению совершенно других файлов (например, подумайте, что случится, если вместо glib вы наберёте glibc). | |
Запросы к базе пакетов производятся с помощью утилиты pkginfo. Эта утилита имеет несколько параметров, для формирования различных запросов.
| Параметр | Описание |
|---|---|
| -i, --installed | Список установленных пакетов и их версий. |
| -l, --list package|file | Список файлов принадлежащих указанному пакету (package) или содержащихся в файле (file) |
| -o, --owner pattern | Список владельцев файлов, соответствующих шаблону (pattern). |
Пример:
$ pkginfo -i audiofile 0.2.3-1 autoconf 2.52-1 automake 1.5-1 <...> xmms 1.2.7-1 zip 2.3-1 zlib 1.1.4-1
$ pkginfo -l bash bin/ bin/bash bin/sh etc/ etc/profile usr/ usr/man/ usr/man/man1/ usr/man/man1/bash.1.gz usr/man/man1/sh.1.gz
$ pkginfo -l grep#2.5-1.pkg.tar.gz usr/ usr/bin/ usr/bin/egrep usr/bin/fgrep usr/bin/grep usr/man/ usr/man/man1/ usr/man/man1/egrep.1.gz usr/man/man1/fgrep.1.gz usr/man/man1/grep.1.gz
$ pkginfo -o bin/ls e2fsprogs usr/bin/lsattr fileutils bin/ls modutils sbin/lsmod
После предъявления различных требований к управлению пакетами в 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). Некоторые комментарии добавлены для пояснения.
# Определение имени пакета.
name=grep
# Определение версии пакета.
version=2.4.2
# Определение релиза (выпуска) пакета.
release=1
# Месторасположение исходных файлов для пакета.
source=(ftp://ftp.ibiblio.org/pub/gnu/$name/$name-$version.tar.gz)
# Приведенная ниже функция build(), будет вызываться утилитой pkgmk
# когда все файлы будут распакованы.
build() {
# Первое, что мы должны сделать - это перейти в директорию с исходными кодами.
cd $name-$version
# Запуск скрипта конфигурации с необходимыми аргументами.
# В нашем случае мы разместим исполняемые файлы в директорию /usr/bin и
# и отключим NLS.
./configure --prefix=/usr --disable-nls
# Компиляция.
make
# Устанавливаем файлы, НО не в директорию /usr, вместо этого
# мы перенаправляем все файлы в $PKG/usr посредством переменной DESTDIR.
# Переменная $PKG указывает временную директорию
# которая в последствии будет использоваться для создания tar.gz-файла. Учтите, что
# переменная DESTDIR не всегда используется в Makefiles'ах, иногда используется переменная prefix
# или ROOT и т.п.. Вы должны предварительно изучить Makefile, чтобы
# определить какая переменная используется. Некоторые Makefile'ы вообще не поддерживают перенаправление.
# В этих случаях придется писать patch-файл, что включить такую поддержку.
make DESTDIR=$PKG install
# Удаление ненужных файлов, в нашем случае это info-страницы.
rm -rf $PKG/usr/info
}В реальной жизни вы не будете включать все эти комментарии, поэтому реальный Pkgfile для grep(1) выглядит следующим образом:
# Description: GNU grep, egrep and fgrep # URL: http://www.gnu.org/software/grep/grep.html # Maintainer: Per Liden, per at fukt dot bth dot se name=grep version=2.4.2 release=1 source=(ftp://ftp.ibiblio.org/pub/gnu/$name/$name-$version.tar.gz) build() { cd $name-$version ./configure --prefix=/usr --disable-nls make make DESTDIR=$PKG install rm -rf $PKG/usr/info }
![]() | Примечание |
|---|---|
|
Приведенная в примере функция build()показывает как собрать пакет grep. Содержание этой функции может значительно отличатся, если программа собирается другим способом, например, не использует autoconf. | |
Когда выполение функции build() завершится, директория $PKG будет собрана в пакет, называемый <name>#<version>-<release>.pkg.tar.gz. Перед тем, как создание пакета будет завершено, pkgmk сверит содержащиеся в пакете файлы с содержанием файла .footprint. Если этот файл не существует, то пакет будет создан, а проверка будет пропущена. Файл .footprint будет содержать список файлов, которые должны быть в пакете, если он был успешно собран, или список всех файлов, которые были установлены в директорию $PKG (если файл .footprint уже не существовал). Если обнаружится несоответствие, то проверка прервётся, и будет выдано сообщение об ошибке. Вам не нужно писать файл .footprint вручную. Когда пакет будет обновлён, и вам будет нужно обновить содержимое файла .footprint просто выполните команду pkgmk -uf. Эта проверка позволит убедиться в том, что пересборка пакета прошла, как ожидалось.
Если сборка пакета произошла без ошибок, то можно установить пакет посредством утилиты pkgadd. Я настоятельно рекомендую просматривать Pkgfile других пакетов, поскольку просмотр примеров - это хороший способ научиться самостоятельно писать Pkgfile.
Многие отосящиеся к процессу сбоки пакета параметры могут быть изменены путём редактирования файла /etc/pkgmk.conf - файла конфигурации утилиты pkgmk(8). Некоторые из этих изменяемых параметров включают
- CFLAGS, CXXFLAGS - эти параметры управляют опциями оптимизации и архитектуры для компиляции пакета. Лучше всего их НЕ МЕНЯТЬ, если только вы абсолютно точно не знаете того, что вы делаете!
- PKGMK_SOURCE_MIRRORS - этот параметр определяет адреса, с которых pkgmk будет пытаться скачать архивы с исходниками.
- PKGMK_SOURCE_DIR - этот параметр определяет, где pkgmk будет хранить (если скачает) и использовать архивы при сборке.
- PKGMK_PACKAGE_DIR - этот параметр определяет, где pkgmk будет создавать файлы пакета, если процесс сборки завершится.
- PKGMK_WORK_DIR - этот параметр определяет рабочую область pkgmk для сборки пакета.
Вот несколько примеров:
PKGMK_SOURCE_MIRRORS=(http://fileserver.intranet/crux/sources/)
Этот параметр указывает pkgmk пытаться скачать архивы исходников с http://fileserver.intranet/crux/sources/ перед тем как венуться к ссылке на исходники, указанной в Pkgfile. Несколько ссылок могут быть разделены пробелами.
PKGMK_SOURCE_DIR="/usr/ports/srcfiles"
Этот параметр инструктирует pkgmk хранить и искать архивы исходников в /usr/ports/srcfiles. Примером выгодного использования этого параметра может быть возможность хранения /usr/ports/srcfiles на NFS-сервере в вашей локальной сети для использования несколькими инсталляциями CRUX. PKGMK_PACKAGE_DIR может быть установлен и использоваться таким же способом.
Ещё несколько установок могут быть найдены на в man'е для pkgmk.conf.
Название пакета должно быть всегда в нижнем регистре (например, name=eterm - правильно, а name=Eterm - неправильно). Когда пакет добавляется к системе портов CRUX, то директория в структуре портов должна называться так же, как пакет, т.е. /usr/ports/???/eterm.
-
Не совмещайте несколько разных программ/библиотек в одном пакете. Создайте несколько отдельных пакетов.
Все пакеты должны устанавливаться в свои директории. В случае необходимости можно отойти от этого правила. Но, по возможности, старайтесь придерживаться следующей структуры каталогов.
Диретория Описание /usr/bin/ Пользовательские бинарные команды/приложения /usr/sbin/ Системные бинарники (например, демоны) /usr/lib/ Библиотеки /usr/include/ Header-файлы /usr/lib/<prog>/ Плагины, дополнения и т.п. /usr/man/ Страницы руководств (man'ы) /usr/share/<prog>/ Дополнительные данные /usr/etc/<prog>/ Файлы конфигурации /etc/ Файлы конфигурации для системного ПО (демоны, и т.д) /usr/X11R6 и /usr/???/X11 зарезервированы специально для X11. X-ориентированные программы, которые не поставляются вместе с X11, должны быть размещены в /usr, а НЕ в /usr/X11R6 или /usr/???/X11.
/opt директория зарезервирована для ручной сборки/установки приложений. Пакеты никогда не должны использовать эту директорию.
/usr/libexec/ НЕ используется в CRUX, поэтому пакеты также не должны ничего устанавливать в эту директорию. Для установки используйте /usr/lib/<prog>/.
Пакет не должен содержать “лишних файлов”. Это различные 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=...
Заголовок может содержать следующие поля:
| Название | Значение |
|---|---|
| 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 в принципе).
Термин 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. Использование системы портов
Когда CRUX только установлен, локальная структура портов (/usr/ports/) пуста. Для того чтобы получить структуру портов, необходимо запустить утилиту ports с ключом -u. Например:
$ ports -u
Ключ -u означает обновить, и указывает утилите ports соединиться с репозиторием портов и скачать новые и обновленные порты. Вывод этой утилиты будет выглядеть примерно вот так:
Updating file list from crux.nu::ports/crux-2.3/core/ Updating collection ports/crux-2.3/core/ ... Updating file list from crux.nu::ports/crux-2.3/opt/ Updating collection ports/crux-2.3/opt/ ... Updating file list from crux.nu::ports/crux-2.3/xorg/ Updating collection ports/crux-2.3/xorg/ ... Finished successfully
Вывод зависит от того, какие файлы были скачены, обновлены и/или удалены.
Когда локальная структура портов обновлена, директория /usr/ports/ содержит две категории пакетов, core и opt. В каждой из этих директорий содержаться порты. Вы можете просто выбрать необходимую директорию, для того, чтобы найти тот порт из имеющихся, который вам нужен.
$ cd /usr/ports/core/ $ ls autoconf/ gdbm/ ncurses/ sendmail/ automake/ gettext/ net-tools/ shadow/ bash/ glibc/ netkit-base/ slocate/ bc/ grep/ netkit-ftp/ strace/ bin86/ groff/ netkit-telnet/ sysfsutils/ bindutils/ grub/ nfs-utils/ sysklogd/ binutils/ gzip/ openssh/ sysvinit/ bison/ hdparm/ openssl/ tar/ bzip2/ hotplug/ patch/ tcp_wrappers/ coreutils/ httpup/ pciutils/ tcsh/ cpio/ iptables/ perl/ time/ curl/ jfsutils/ pkg-config/ traceroute/ db/ kbd/ pkgutils/ udev/ dcron/ less/ portmap/ unzip/ dhcpcd/ libstdc++-compat/ ports/ usbutils/ diffutils/ libtool/ ppp/ util-linux/ e2fsprogs/ libusb/ procps/ vim/ ed/ lilo/ prt-get/ wget/ expat/ m4/ psmisc/ which/ file/ make/ rc/ xfsprogs/ filesystem/ man/ rdate/ zip/ findutils/ man-pages/ readline/ zlib/ flex/ mktemp/ reiserfsprogs/ gawk/ module-init-tools/ rsync/ gcc/ nasm/ sed/
Вы также можете использовать ports с ключом -l, для просмотра локальных портов. Например:
$ ports -l core/autoconf core/automake core/bash core/bc core/bin86 core/bindutils core/binutils ...
Если вы ищете определённый пакет, то может быть проще использовать следующий способ: ports -l | grep sendmail, чтобы выяснить, доступен ли порт и в какой категории он находится.
Для того, чтобы найти отличия в структуре имеющихся портов и установленными (например более новый), вы можете использовать ключ -d. Если версии отличаются, то вывод команды будет приблизительно вот такой:
$ ports -d Collection Name Port Installed core glibc 2.3.6-3 2.3.6-2 opt gtk 2.8.12-1 2.8.11-1
Если отличий не обнаружено, т.е. система полностью синхронизирована со структурой портов, то вывод будет следующим:
$ ports -d No differences found
Для того, чтобы собрать и установить пакет из порта, необходимо перейти в необходимую директорию из структуры портов и использовать утилиту pkgmk для его сборки. Например:
$ cd /usr/ports/core/gawk $ pkgmk -d
Ключ -d означает скачать недостающие исходные файлы и указывает утилите pkgmk скачать исходники указанные в Pkgfile (если, исходные тексты программы уже скачены, то эта опция игнорируется). После того как все файлы будут загружены, начнётся сборка пакета. Если пакет был успешно собран, то вы можете использовать утилиту pkgadd для его обновления или установки. Например:
$ pkgadd gawk#3.1.5-3.pkg.tar.gz
Для того, чтобы слегка упростить эти два шага, вы можете использовать ключи -i (для установки) или -u (для обновления). Например:
$ pkgmk -d -i
или
$ pkgmk -d -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 (т.е. удалить символ комментария в начале строки. После этого файл должен выглядеть примерно вот так:
### ### 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. Конфигурация
В CRUX'е используются следующие уровни запуска (определенные в /etc/inittab).
| Уровень | Описание |
|---|---|
| 0 | Halt (остановка) |
| 1 (S) | Single-user Mode (однопользовательский режим) |
| 2 | Multi-user Mode (многопользовательский режим) |
| 3-5 | Not used (не используются) |
| 6 | Reboot (перезагрузка) |
Скрипты инициализации, используемые в CRUX, выдержаны в стиле BSD (в противоположность SysV-стилю) и имеют следующее расположение.
| Файл | Описание |
|---|---|
| /etc/rc | Скрипт загрузки системы |
| /etc/rc.single | Скрипт загрузки системы в однопользовательском режиме |
| /etc/rc.modules | Скрипт подгрузки модулей |
| /etc/rc.multi | Скрипт загрузки системы в многопользовательском режим |
| /etc/rc.local | Скрипт загрузки системы локального многопользовательского режима (пустой по умолчанию) |
| /etc/rc.shutdown | Скрипт выключения системы |
| /etc/rc.conf | Конфигурация системы |
| /etc/rc.d/ | Директория со скриптами запуска/остановки служб |
Вы можете редактировать файлы /etc/rc.modules, /etc/rc.local и /etc/rc.conf в соответствии с вашими нуждами.
В файле /etc/rc.conf вы можете встретить следующие переменные.
| Переменная | Описание |
|---|---|
| FONT |
Определяет, какой консольный шрифт будет использоваться системой при загрузке. Переменная должна содержать аргументы для setfont(1). Доступные шрифты находятся в /usr/share/kbd/consolefonts/. Например: FONT=default |
| KEYMAP |
Определяет, какая раскладка клавиатуры будет использоваться системой при загрузке. Переменная должна содержать аргументы для loadkeys(1). Доступные раскладки клавиатуры находятся в /usr/share/kbd/keymaps/. Например: KEYMAP=sv-latin1 |
| TIMEZONE |
Определяет, какая временная зона будет использоваться системой. Доступные системы находятся в /usr/share/zoneinfo/. Например: TIMEZONE=Asia/Almaty |
| HOSTNAME |
Определяет имя хоста. Например: HOSTNAME=pluto |
| SERVICES |
Определяет, какие службы должны запускаться при загрузке системы. Службы, определенные в этом массиве, должны иметь соответствующие скрипты запуска/остановки в /etc/rc.d/. Когда загружается система в многопользовательском режиме, все перечисленные скрипты будут по очереди выполнены с аргументом start. Когда система выгружается или переходит в однопользовательский режим, перечисленные скрипты будут выполнены в обратном порядке с аргументом stop. Например: SERVICES=(crond identd sshd sendmail) |
Настройка сети находится в скрипте /etc/rc.d/net. Для активизации сети необходимо добавить скритп net в массив SERVICES, определенный в /etc/rc.conf. По умолчанию этот скрипт содержит настройки только для интерфейса lo и статический IP-адрес для eth0. Если хотите настроить другие сетевые интерфейсы (eth1, eth2, и так далее) то вы должны добавить дополнительные команды ip(8). Например:
#!/bin/sh # # /etc/rc.d/net: start/stop network # case $1 in start) # loopback /sbin/ip addr add 127.0.0.1/8 dev lo broadcast + scope host /sbin/ip link set lo up # ethernet /sbin/ip addr add 192.168.1.100/24 dev eth0 broadcast + /sbin/ip link set eth0 up # default route /sbin/ip route add default via 192.168.1.1 ;; stop) /sbin/ip route del default /sbin/ip link set eth0 down /sbin/ip addr del 192.168.1.100/24 dev eth0 /sbin/ip link set lo down /sbin/ip addr del 127.0.0.1/8 dev lo ;; restart) $0 stop $0 start ;; *) echo "usage: $0 [start|stop|restart]" ;; esac # End of file
Если вы хотите настроить ваши сетевые интерфейсы с использованием DHCP, то используйте команду dhcpcd(8) (вместо ip(8)). Например:
#!/bin/sh # # /etc/rc.d/net: start/stop network # case $1 in start) # loopback /sbin/ip addr add 127.0.0.1/8 dev lo broadcast + scope host /sbin/ip link set lo up # ethernet /sbin/dhcpcd -t 10 -h $HOSTNAME eth0 ;; stop) /usr/bin/killall -q /sbin/dhcpcd /sbin/ip link set lo down /sbin/ip addr del 127.0.0.1/8 dev lo ;; restart) $0 stop $0 start ;; *) echo "usage: $0 [start|stop|restart]" ;; esac # End of file
![]() |
Примечание |
|---|---|
|
Релизы CRUX до 2.3 использовали команды ifconfig(8) и route(8) для инициализации сети; ниже мы приводим в качестве примера образцы предыдущих версий. | |
Ручное конфигурирование ip (CRUX < 2.3):
#!/bin/sh
#
# /etc/rc.d/net: start/stop network
#
case $1 in
start)
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 195.38.1.140 netmask 255.255.255.224
/sbin/ifconfig eth1 192.168.0.1 netmask 255.255.255.0
/sbin/route add default gw 195.38.1.129
;;
stop)
/sbin/ifconfig eth1 down
/sbin/ifconfig eth0 down
/sbin/ifconfig lo down
;;
restart)
$0 stop
$0 start
;;
*)
echo "usage: $0 [start|stop|restart]"
;;
esac
# End of fileКонфигурирование DHCP (CRUX < 2.3):
#!/bin/sh
#
# /etc/rc.d/net: start/stop network
#
case $1 in
start)
/sbin/ifconfig lo 127.0.0.1
/sbin/dhcpcd eth0 [add additional options if needed]
;;
stop)
killall -q /sbin/dhcpcd
/sbin/ifconfig lo down
;;
restart)
$0 stop
$0 start
;;
*)
echo "usage: $0 [start|stop|restart]"
;;
esac
# End of fileВ CRUX по умолчанию используются пароли MD5SUM. Но этот алгоритм может быть выключен, если вы хотите вместо него использовать традиционные пароли, зашифрованные алгоритмом DES. Учтите, что использование DES для шифрования паролей намного НЕ безопаснее. Чтобы отключить алгоритм MD5SUM для паролей, измените переменную MD5_CRYPT_ENAB в /etc/login.defs значение no.
В будующем учтите, что при компиляции программ, которые используют функцию crypt(3) для аутентификации пользователей, вы должны быть уверены, что эта программа связана с библиотекой

![[Warning]](/doc/images/warning.png)