Linux crux что с ним

Содержание
  1. CRUX: инициализация и настройка
  2. CRUX Handbook
  3. RELEASE 1.2
  4. Предисловие
  5. Параграф 1. Введение
  6. 1.1. Что такое CRUX?
  7. 1.2. Почему CRUX?
  8. 1.3. Лицензия
  9. 1.3.1. Пакеты
  10. 1.3.2. Скрипты сборки
  11. 1.3.3. ОТСУТСТВИЕ ГАРАНТИЙ
  12. Параграф 2. Инсталляция CRUX
  13. 2.1. Поддерживаемое аппаратное обеспечение
  14. 2.2. Установка с CD-ROM
  15. 2.3. Обновление с CD-ROM
  16. 2.4. Другие методы инсталляции
  17. 2.4.1. Сборка собственного загрузочного ядра
  18. 2.4.2. Установка по сети
  19. Параграф 3. Система пакетов
  20. 3.1. Введение
  21. 3.2. Использование системы пакетов
  22. 3.2.1. Установка пакетов
  23. 3.2.2. Обновление пакетов
  24. 3.2.3. Удаление пакетов
  25. 3.2.4. Запрос информации из базы пакетов
  26. 3.3. Создание пакетов
  27. 3.4. Принципы сборки пакетов
  28. 3.4.1. Главное
  29. 3.4.2. Каталоги
  30. 3.4.3. Удаление ненужных файлов
  31. 3.4.4. Pkgfile
  32. Параграф 4. Система портов
  33. 4.1. Введение
  34. 4.1.1. Что такое порт?
  35. 4.1.2. Что такое система портов?
  36. 4.2. Использование системы портов
  37. 4.2.1. Синхронизация локальной структуры портов
  38. 4.2.2. Просмотр списка локальных портов
  39. 4.2.3. Просмотр соответствия версий
  40. 4.2.4. Сборка и установка пакетов

CRUX: инициализация и настройка

Автор: Алексей Федорчук

CRUX — не система быстрого развёртывания. И потому знакомство с ним надо начинать с настройки. Причём, опять-таки в отличие от СБР, например, того же Zenwalk’а, заниматься первичными настройками походя, в процессе работы, не получится: в свежеустановленном виде он мало пригоден к практическому использованию.
Так, вследствие аскетизма базовой комплектации, пользователь вряд ли найдёт в нём свои любимые и привычные пакеты. Их придётся устанавливать дополнительно, и причём, как будет рассказано в соответствующей заметке, исключительно из сети. А вот сетевого соединения-то по умолчанию в CRUX’е и не настроено. Как не настраивается в этом дистрибутиве при установке и многое другое — в частности, кириллические шрифты и раскладки клавиатуры для консоли, оконная система X и так далее.

Однако всё это не так страшно, как кажется на первый взгляд: система инициализации CRUX’а настолько проста, что её конфигурирование в соответствие с запросами пользователя не займёт много времени, хотя и потребует некоторой правки не только конфигов, но и даже скриптов инициализации. Поэтому с рассмотрения устройства стартовой схемы CRUX’а мы и начнём работу по его настройке.

Как уже говорилось во вступительных заметках, CRUX использует схему инициализации в BSD-стиле — ещё более простую, пожалуй, чем в современной FreeBSD. Однако он остаётся Linux’ом, и потому так называемые runleves (уровни запуска) из этой схемы никуда не девались, как и описывающий их файл /etc/inittab.

Правда, используются runlevels по минимуму: как можно видеть из содержимого /etc/inittab, кроме уровней 0 (останов системы) и 6 (перезагрузка), предусмотрены только уровни 1 (однопользовательский режим) и 2 (многопользовательский режим с консольным входом). Уровни 3-5 не используются — так что фактически мы видим полную идентичность стартовой схеме BSD. Это не значит, что нельзя, например, приписать к уровню 3 графический вход в систему, но заниматься этим пользователю придётся самостоятельно.

В соответствие с этим, набор стартовых сценариев, перечисленных в /etc/inittab, сведён к минимуму:

  • /etc/rc — главный общесистемный сценарий, исполняемый в любом случае;
  • /etc/rc.multi — сценарий, исполняемый при обычном входе в систему;
  • /etc/rc.single — сценарий, отрабатываемый при переходе в однопользовательский режим;
  • /etc/rc.shutdown — сценарий, исполняемый при перезагрузке системы или её останове.

Кроме основных сценариев, при инициализации могут быть задействованы и дополнительные:

  • /etc/rc.modules, обеспечивающий, как легко догадаться из названия, загрузку модулей; впрочем, по умолчанию он исполняет только команду /sbin/depmod -a;
  • /etc/rc.fix, вызываемый из /etc/rc и служащий для вызова дополнительных функций; по умолчанию он выполняет только проверку Иксовых шрифтов;
  • /etc/rc.local — дополнительный сценарий неопределённого назначения, в который обычно помещают всякую всячину, не достойную места в главных сценариях инициализации; по умолчанию пуст.

Главный конфигурационный файл системы — /etc/rc.conf. В нём определяются:

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

Сами сценарии запуска стартовых служб находятся в каталоге /etc/rc.d, и в свежеустановленной системе также не многочисленны, обеспечивая лишь работу сети, удалённого доступа по ssh, периодических запуск заданий и ещё несколько операций из числа самых необходимых.

Впрочем, по умолчанию сетевое соединение у нас как раз и отсутствует: при инсталляции автоматически конфигурируется только loopback-интерфейс и некий условный ethernet-интерфейс, подразумевающий статический IP-адрес. Так что с настройки сети нам и придётся начать — без этого невозможна доустановка пакетов, а их, как я уже говорил, в свежеинсталлированной системе не густо.

Запуск сетевого соединения осуществляется файлом /etc/rc.d/net. Открываем его в текстовом редакторе и редактируем должным образом. То есть, в случае использования провайдером DHCP в секциях start и stop убираем все строки, относящиеся к интерфейсу ethernet, а вместо них вписываем следующие:

Значение опции -h указывается в соответствие с требованиями провайдера, обычно его можно просто опустить. И очевидно, что строки, относящиеся к loopback-интерфейсу, трогать не нужно.

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

Однако предположим, что настройка сети (после перезапуска машины или реинициализции системы) прошла благополучно. Теперь можно воспользоваться портами CRUX для доустановки нужных пакетов. Из которых первейшим я полагаю gpm — без консольной мыши всякого рода настроечные манипуляции кажутся мне неудобными.

Само по себе обращение с портами мы сейчас не будем рассматривать — этому планируется посвятить отдельную заметку. Поэтому чисто конспективно изложу последовательность действий.

Перво-наперво делаем доступной категорию портов contrib (именно в ней «живёт» gpm):

Затем закачиваем себе дерево портов:

Переходим в каталог нужного порта:

Устанавливаем образовавшийся в результате этой операции бинарный пакет:

Обращаю внимание на символ # в имени пакета перед номером версии: именно он отличает пакеты, собранные из коллекции портов CRUX, от любых других тарбаллов.

Теперь службу консольной мыши надо активизировать. Обычно достаточно вписать имя запускающего её сценария — gpm (этот файл волшебным образом появился в каталоге /etc/rc.d/ после установки пакета), — в нужное место /etc/rc.conf:

Работает со всеми USB-мышами и ноутбучными тачпадами, с которыми я сталкивался в последнее время. Если нет — придётся подправить собственно сценарий /etc/rc.d/gmp на предмет правильности имени файла устройства и (или) его протокола. Как — описывалось бессчётное число раз.

Вернёмся, однако, к нашему главному конфигу. Следующее, что нужно в нём поправить — это указание на часовой пояс. Все возможные значения вытаскиваем из каталога /usr/share/zoneinfo/. Например:

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

И последнее, что надлежит сделать с главным конфигом — выполнить русификацию консоли. Для чего требуется указать экранный шрифт и раскладку клавиатуры. Будем исходить из гипотезы, что мы относим себя ко всему прогрессивному человечеству, прочно перешедшему на локаль UTF-8. В этом случае со шрифтом на скорую руку можно поступить так:

В случае, если он не будет устраивать эстетически (а скорее всего не будет) — позднее можно выбрать один из портов пакета terminus-font (он в нескольких вариантах доступен в разных пользовательских коллекциях), и выбрать более подходящий. А пока все доступные шрифты находятся в каталоге /usr/share/kbd/consolefonts/.

А вот раскладку для UTF8 потребуется предварительно скачать (например, отсюда ) и скопировать в каталог /usr/share/kbd/keymaps/i386/qwerty. После чего вписать:

На этом, однако, русификация не заканчивается. Экономичность CRUX’а заключается также и в том, что по умолчанию в системе нет ни одной локали, кроме C. Так что нужную нам (а мы договорились, какая нам нужна) надо сгенерировать таким образом:

Дальше можно поступить двояким образом. Первый способ — поместить строку

Читайте также:  Linux или виндовс что лучше для

в файл /etc/profile. В этом случае системная локаль будет одинаковой для всех пользователей. Второй вариант — указать ту же строку в профильном файле командной оболочки пользователя, каковой выступает bash, то есть вписать её в

/.bashrc. А для администратора системы сохранить умолчальную локаль, то есть в файл /root/.bashrc вписать строку

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

Правда, в конфиг root’а эту строку вписать легко. А вот для пользователя придётся сначала создать аккаунт — мы же помним, что при установке на эту тему не говорилось ни слова.

Из подручных средств управления аккаунтами по умолчанию мы в CRUX’е располагаем одним — /usr/sbin/useradd. Это голая командная утилита, так что все атрибуты пользовательской учётной записи (пароль, командную оболочку, домашний каталог и так далее) нужно задать как значения соответствующих опций. Каких именно — в краткой форме можно узнать, дав эту команду без опций и аргументов. Ну а за подробностями — как обычно, к тёте Мане…

Вот теперь можно заняться редактированием

/.bashrc. Думаю, большинство потенциальных пользователей CRUX’а уже имеют свой любимый конфиг для bash’а, который остаётся только скопировать в свой домашний каталог. Правда, тут я столкнулся с незадачей — и совершенно неожиданной.

А именно, переписав свой .bashrc, который верой и правдой служит мне много лет, и перелогинившись, я с удивлением обнаружил, что он просто игнорируется: то есть и локаль оказывается не установленной, и псевдонимы команд не работают, и пути работают только те, что прописаны в /etc/profile по умолчанию. Проверил для root’а — то же самое. В чём дело — так и не понял. Нашёл решение, может быть, и не изящное, но работающее: вписал в /etc/profile строку

После чего всё пришло в норму.

Надо сказать, что на этом неожиданности CRUX’а не закончились. Однако они относятся уже к другой области. А первичные настройки можно считать выполненными — по крайней мере, главные. И те, которые я упомнил. Если упустил что-то важное — пишите, дополню.

Источник

CRUX Handbook


RELEASE 1.2

Copyright (C) 2001, 2002, 2003 Per Liden

Это руководство описывает инсталляцию, конфигурирование и управление CRUX линуксом. Пожалуйста, используйте это руководство только для решения вопросов, специфичных для CRUX. Информацию о Linux ищите на Linux Documentation Project.

Предисловие

Пер Лиден (Per Liden) написал данное руководство. Роберт МакМикан (Robert McMeekin) сконвертировал его в DocBook. Александр Усков перевел его на русский язык. Многие другие давали отзывы и советы.

Параграф 1. Введение


1.1. Что такое CRUX?

CRUX — это компактный, i686-ориентированный дистрибутив Linux, нацеленный на опытных Linux-пользователей. Основная цель дистрибутива — сохранить его простым, это достигается за счет простой, основанной на tar.gz, пакетной системы, BSD-подобных инитскриптов, и относительно маленькой коллекции урезанных пакетов. Вторая цель — использование новых возможностей Linux, утилит и библиотек. Также в CRUX входит система портов, которая предназначена облегчить инсталляцию и обновление приложений.

1.2. Почему CRUX?

В настоящее время существует много разных дистрибутивов Linux, зачем использовать именно этот? Конечно, все, что перечислено дальше вопрос вкуса. Я попытаюсь объяснить вам мое мнение, возможно, вы его разделите. В первую очередь, мне нужен дистрибутив простой с начала и до конца. Далее я хочу, чтоб пакеты были не какие-то альфа-бета и т.п. версий, а стабильные. Я хочу очень просто создавать новые и обновлять старые пакеты (зачастую, для обновления пакета в CRUX достаточно сказать pkgmk -d -u ). Я хочу пакеты, оптимизированные под мой процессор (это -march=i686 ). Я не хочу, чтоб мою файловую загромождали файлы, которые я ни когда не использую (например /usr/doc/* , и т.п.). Если мне нужна дополнительная информация о каких-то программах, ее можно найти в man или в сети. И на конец, я хочу использовать новые возможности Linux, такие как devfs, reiserfs, ext3fs и т.д.

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

1.3. Лицензия


1.3.1. Пакеты

CRUX — дистрибутив Linux-а, он содержит программы, написанные многими людьми. Каждый программный пакет имеет свою лицензию, выбранную автором(ами) программы. Для того чтобы узнать, какую лицензию имеет каждый конкретный пакет, необходимо посмотреть его исходные коды.

1.3.2. Скрипты сборки

Все скрипты сборки пакетов в CRUX (в категориях base и opt ) принадлежат Перу Лиден (Per Liden) и лицензированы по GNU General Public License.

1.3.3. ОТСУТСТВИЕ ГАРАНТИЙ

CRUX распространяется в надежде, что он будет полезен, но БЕЗ ВСЯЧЕСКИХ ГАРАНТИЙ. Вы используете данный продукт на СВОЙ СТРАХ И РИСК.

Параграф 2. Инсталляция CRUX


2.1. Поддерживаемое аппаратное обеспечение

Пакеты в официальном CRUX ISO образе собраны с оптимизацией под i686 (Pentium-Pro/Celeron/Pentium-II и больше). Не пробуйте установить его на i586 (Pentium, AMD K6/K6-II/K6-III) и более слабых процессорах, это просто, но работать не будет. Для того чтобы установить CRUX на i586 системе, вам необходимо скачать i586 версию CRUX ISO образа.

Ядро, используемое для инсталляции (загружаемое с CRUX ISO образа (El Torito)) собрано с поддержкой следующих дисковых контроллеров и USB:

Система Драйвера, включенные в загрузочное ядро
IDE Generic PCI IDE chipset
SCSI 7000FASST, ACARD, Adaptec AACRAID, Adaptec AIC7xxx, Adaptec I2O RAID, AdvanSys, AM53/79C974, AMI MegaRAID, BusLogic, Compaq Fibre Channel, NCR5380/53c400, IBM ServeRAID, SYM53C8XX, Tekram DC390(T) and Am53/79C974
USB USB device filesystem, UHCI (Intel PIIX4, VIA, . ) support, USB Human Interface Device (full HID) support, HID input layer support

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

2.2. Установка с CD-ROM

Выкачайте ISO образ CRUX ( crux-1.2.iso ). Для того чтобы удостовериться, что образ скачан правильно, используйте утилиту md5sum .

Сравните полученные данные с файлом crux-1.2.md5sum , который находится там же, откуда вы качали образ. Если контрольные суммы совпали, значит образ закачен правильно и его можно прожечь на CD.

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

Подключитесь как root (пароль не нужен).

Создайте (если необходимо) и отформатируйте партицию(ии) куда вы будете ставить CRUX.

Необходимое количество дискового пространства зависит от тех пакетов, которые вы установите. Я рекомендую не более 1G на рут партицию (CRUX использует около 200MB-500MB в зависимости от конфигурации).

Использование ReiserFS рекомендовано, поддержка Ext2fs/Ext3fs и JFS тоже есть. В будущем, я рекомендую разделять системные и пользовательские данные, например, использовать отдельную партицию для /home (и по возможности для /var ), это заметно упростит вашу жизнь при обновлении/реинсталляции/удалении системы.

Проверьте, чтобы значение BIOS Virus Protection стояло в DISABLED, эта опция может помешать fdisk -у правильно сохранить партиции.

Смонтируйте партицию, на которую вы будете устанавливать систему.

Если вы устанавливаете систему на несколько партиций, смонтируйте их в том порядке, как оно должно быть. Например, для разных /home или /var , необходимо:

Активируйте вашу свап партицию(ии).

Введите Setup для запуска скрипта установки пакетов. Скрипт спросит, куда смонтирован новая рут партиция и где находятся пакеты, которые планируется установить. Будут установлены ТОЛЬКО те пакеты, которые вы выберите. Однако, я рекомендую установку всех пакетов, отмеченных base .

После того, как выбранные пакеты будут установлены, Setup покажет лог установки. Удостоверьтесь, что последняя строка в логе — 0 error(s)

Если позже вам нужно будет добавить какой либо пакет, смонтируйте CRUX CD-ROM и используйте pkgadd для установки.

В пакетах не проверяются зависимости. Это значит, что, например, если вы выбрали sendmail , вам необходимо выбрать еще и db .

Теперь самое время собрать ваше ядро и сделать основную настройку системы. Сборка ядра требует «chroot» в вашу новую инсталяцию CRUX.

Установите пароль для root .

Отредактируйте /etc/fstab в соответствии с конфигурацией ваших файловых системы. Доступные редакторы vim и pico .

Отредактируйте /etc/rc.conf для конфигурации клавиатуры, сервисов и таймзоны. /etc/rc.conf описан в Разделе 5.1.3.

Отредактируйте /etc/rc.d/net , /etc/hosts и /etc/resolv.conf для настройки вашей сети (ip адрес/гейтвей/хостнейм/домен/dns).

Перейдите в /usr/src/linux-2.4.21 , отконфигурируйте и соберите новое ядро.

Запомните! Обязательно должны быть включены следующие опции:

Отредактируйте /etc/lilo.conf под ваше новое ядро и запустите lilo чтобы сделать систему загрузочной.

Выньте CRUX CD-ROM из вашего привода и перезапустите систему с жесткого диска.

2.3. Обновление с CD-ROM

Выкачайте CRUX ISO образ ( crux-1.2.iso ). Для того чтобы удостовериться, что образ скачан правильно, используйте утилиту md5sum .

Сравните полученные данные с файлом crux-1.2.md5sum , который находится там же, откуда вы качали образ. Если контрольные суммы совпали, значит образ закачен правильно и его можно прожечь на CD.

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

Подключитесь как root (пароль не нужен).

Смонтируйте вашу рут партицию

Если вы устанавливали систему на несколько партиций, смонтируйте их в том порядке, как оно должно быть. Например, для разных /home или /var , необходимо::

Активируйте вашу свап партицию(ии).

Введите Setup для запуска скрипта установки пакетов. Скрипт спросит, куда смонтирован новая рут партиция и где находятся пакеты, которые планируется обновить. Правильнее обновлять все пакеты, чтобы не иметь проблем в дальнейшем. Некоторые новые библиотеки не 100% обратно совместимы.

Когда Setup обновит выбранные пакеты, будет выведен лог обновления. Удостоверьтесь, что последняя строка лога — 0 error(s) .

Если позже вам понадобятся еще какие либо пакеты, вы сможете смонтировать CRUX CD-ROM и используя pkgadd добавить их.

Теперь необходимо собрать новое ядро. Сборка ядра требует «chroot» в вашу CRUX инсталляцию.

Перейдите в /usr/src/linux-2.4.21 , отконфигурируйте и соберите новое ядро. Запомните! Обязательно должны быть включены следующие опции:

Отредактируйте /etc/lilo.conf для загрузки с вашего ядра и запустите lilo , чтобы сделать систему загрузочной.

Выньте CRUX CD-ROM из вашего привода и перезапустите систему с жесткого диска.

2.4. Другие методы инсталляции


2.4.1. Сборка собственного загрузочного ядра

Если вы не можете установить CRUX с CD-ROM, потому что ваше оборудование не поддерживается загрузочным ядром, вы можете собрать собственное загрузочное ядро, в которое добавить поддержку того, что вам необходимо. Для этого необходима 1.44Mb дискета, доступ к другой Linux станции и CRUX ISO прожженный на CD. Общее понимание того, как конфигурировать и собирать Linux ядро, вообщем-то тоже необходимо.

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

Перейдите в каталог mkbootfloppy и выполните скрипт mkbootfloppy (от root ). Этот скрипт требует один аргумент — ядро, которое нужно разместить на образе дискеты. Перед тем, как начать, проверьте, что у вас ни чего не примонтированно в /mnt , так как mkbootfloppy использует этот путь, как точку монтирования.

Запишите полученный boot.img на дискету.

Вставьте дискету и CRUX CD в компьютер, на который вы хотите инсталлироваться, и перезагрузите его.

2.4.2. Установка по сети

Если у вас нет устройства записи CD, или вы не можете загрузить вашу машину с CRUX CD-ROM, или по любой другой причине, не позволяющей установить CRUX нормальным путем (Раздел 2.2) проверьте CRUX Network Setup Guide от Мартина Опель (Martin Opel) или HOWTO install CRUX via NFS от Юджина Дауберта (Jurgen Daubert).

Параграф 3. Система пакетов


3.1. Введение

Система пакетов (pkgutils) сделана максимально простой, в ней все пакеты обычные tar.gz файлы (т-е без всяческих метаданных). Пакеты именуются следующим образом # — .pkg.tar.gz , где название программы, ее версия, и версия пакета. Расширение pkg.tar.gz используется (в отличие от просто tar.gz ) для отличия от простых tar.gz файлов, но tar.gz необходимо для использования в pkgadd . Этот путь позволяет легко отделять пакеты от остальных tar.gz файлов.

pkgadd(8) , pkgrm(8) , pkginfo(8) , and pkgmk(8) утилиты управления пакетами. Эти утилиты позволяют устанавливать, удалять, проверять, создавать пакеты и проверять их наличие в базе пакетов.

Когда добавляется пакет, с помощью pkgadd в базу пакетов (расположенную в /var/lib/pkg/db ) добавляется запись о нем. Система пакетов не проверяет зависимости и не выдает предупреждений, если вы ставите пакет, требующий наличие другого пакета.

В следующей секции коротко описывается, как использовать утилиты пакетной системы. Дополнительная информация об этих утилитах размещена в man-ах.

3.2. Использование системы пакетов


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

Установка пакета производится утилитой pkgadd . Эта утилита требует только один аргумент — пакет, который вы хотите установить. Например:

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

Чтобы установить пакет, перезаписав конфликтующие файлы, используйте опцию -f (или —force ). Например:

Система пакетов подразумевает, что файл принадлежит только одному пакету. Когда при установке с ключом -f файл перезаписывается, его принадлежность переходит к новому пакету. Каталоги могут принадлежать нескольким пакетам.

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

Как сказано раньше, пакет, сам по себе, не содержит никаких метаданных. Вместо этого менеджер пакета использует имя файла пакета, чтобы определить название пакета и его версию. Таким образом, устанавливая файл пакета с именем bash#2.05-1.pkg.tar.gz пакетный менеджер интерпретирует это, как пакет с именем bash версии 2.05-1 . Если pkgadd не может интерпретировать имя файла (например # отсутствует или имя файла не заканчивается на .pkg.tar.gz ) выдается ошибка и pkgadd прекращает работу без установки пакета.

3.2.2. Обновление пакетов

Обновление пакета производится командой pkgadd с ключом -u . Например:

Эта команда заменит ранее установленный bash новым. Если bash , раньше не был установлен, pkgadd выдаст сообщение об ошибке. Система пакетов не контролирует номера версий, следовательно вы можете «обновить» пакет версии 2.05-1 до версии 2.04-1 (или до 2.05-1 ). Устанавливаемый пакет заменит старый.

Обновление пакета эквивалентно выполнению pkgrm перед pkgadd за одним (большим) исключением. Когда вы обновляете пакет (командой pkgadd -u ) вы имеете возможность не заменять некоторые ранее установленные файлы. Это обычно нужно для того, чтобы сохранить файлы конфигурации и статистики.

pkgadd при выполнении читает файл /etc/pkgadd.conf . Этот файл содержит правила, описывающие, как pkgadd должен производить обновление. Правило состоит из 3х частей; событие , маска и действие . Событие описывает ситуацию, в которой должно быть применено правило. Сейчас доступен только один тип событий, это UPGRADE . Маска это маска имени файла, записанная, как регулярное выражение/ Действие, в случае события UPGRADE может быть YES или NO . Использование нескольких правил с одним типом события допустимо. Первое правило будет иметь самый низкий приоритет, последнее самый высокий. Например:

В этом примере pkgadd ни когда не будет обновлять файлы в каталогах /etc/ и /var/log/ (включая подкаталоги), будет обновлять в /etc/X11/ (включая подкаталоги), не тронет /etc/X11/XF86Config . Правило по умолчанию — обновление всего.

Маска ни когда не должна содержать начальный «/» т-к вы обращаетесь к файлам в пакете, а не к файлам на диске.

Если pkgadd находит файл, который не должен обновляться, файл перемещается в /var/lib/pkg/rejected/ . Пользователь свободен в возможности исследования и/или удаления файла вручную. Файлы в этом каталоге ни когда не добавляются в базу пакетов. Пример (используя предыдущий /etc/pkgadd.conf ):

3.2.3. Удаление пакетов

Пакеты удаляются командой pkgrm . Эта утилита использует только один аргумент — имя удаляемого пакета. Пример:

Эта команда удаляет все файлы, принадлежащие пакету без всяких подтверждений. Подумайте дважды перед выполнением этой команды. Проверьте правильность написания имени пакета (например glibc вместо glib ).

3.2.4. Запрос информации из базы пакетов

Запрос информации осуществляется утилитой pkginfo . Эта утилита имеет несколько опций для ответа на разные вопросы.

Предупреждение
Опция Описание
-i , —installed Список установленных пакетов с версиями.
-l , —list package|file Список файлов, принадлежащих указанному package или содержащихся в file
-o , —owner file Владелец (список владельцев) file .

3.3. Создание пакетов

Пакеты создаются с помощью команды pkgmk . Эта команда использует файл Pkgfile , содержащий информацию о пакете (такую как имя, версия и т.п.) и команды, которые должны быть исполнены для сборки пакета. Более детально: Pkgfile — это bash(1) скрипт, с несколькими определенными переменными ( name , version , release and source ) и функцией ( build ). Ниже пример Pkgfile -а, как он должен выглядеть, для сборки утилиты grep(1) . Добавлены некоторые комментарии.

В реальном случае, не нужно вставлять все эти комментарии. Ниже приведен реальный Pkgfile для grep(1) :

Функция build() в этом примере показывает, как нужно собирать grep . Содержимое функции различается, в зависимости от программы, например, программа может не использовать autoconf .

После того, как build() завершит работу, каталог $PKG будет собран в пакет с именем # — .pkg.tar.gz . Перед тем, как собрание пакета завершится, pkgmk сверит содержимое пакета с файлом .footprint . Если этого файла нет, то он будет создан и тест пропущен. Файл .footprint содержит список всех файлов в пакете, если файл был создан ранее или список всех файлов в $PKG (если .footprint не был создан). Если произойдет несовпадение сверки, пакет собран не будет и будет выдано сообщение об ошибке. Вы не должны создавать .footprint вручную. Вместо этого, после того, как пакет обновлен, вам нужно обновить содержимое .footprint файла командой pkgmk -uf .

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

3.4. Принципы сборки пакетов


3.4.1. Главное

Имя пакета всегда должно быть в нижнем регистре (т.е. name=eterm и не name=Eterm ). В случае, если пакет добавлен в систему портов CRUX, то же самое имя должно быть использовано в структуре каталогов, т.е. /usr/ports/. /eterm .

Не совмещайте несколько разных программ/библиотек в одном пакете. Создайте несколько пакетов.

3.4.2. Каталоги

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

Каталог Описание
/usr/bin/ Пользовательские команды/приложения
/usr/sbin/ Системные команды/ приложение (например демоны)
/usr/lib/ Библиотеки
/usr/include/ Файлы заголовков
/usr/lib/

/ Плагины, аддоны и т.д. /usr/man/ Man страницы /usr/share/

/ Файлы данных /usr/etc/

/ Файлы конфигурации /etc/ Файлы конфигурации для системного софта (демонов и т.д.)

/usr/X11R6 и /usr/ . /X11 зарезервированы для XFree86. X клиенты, не входящие в XFree86 должны быть размещены в /usr , а НЕ в /usr/X11R6 или /usr/ . /X11 .

/opt зарезервирован для ручной сборки/установки приложений. Пакеты ни когда не должны здесь размещаться.

/usr/libexec/ не используется в CRUX, пакеты не должны устанавливаться сюда. Используйте /usr/lib/

3.4.3. Удаление ненужных файлов

Пакеты не должны содержать «ненужные файлы». Под ними подразумеваются info и другая документация кроме man (например usr/doc/* , README , *.info , *.html , и т.д.).

Программы, поддерживающие NLS, должны быть собраны с —disable-nls когда это возможно.

Бесполезный или устаревшие программы (такие как /usr/games/banner и /sbin/mkfs.minix ).

3.4.4. Pkgfile

Не добавляйте новые переменные в Pkgfile . Только в очень редких случаях это увеличивает читаемость или качество пакета. Единственными переменными, которые будут гарантированно работать в будущих версиях pkgmk будут name , version , release , и source . Другие переменные могут конфликтовать с внутренними переменными 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. Система портов


4.1. Введение


4.1.1. Что такое порт?

Порт, это каталог, содержащий файлы, необходимые для сборки пакета с помощью pkgmk . Это означает, что в этом каталоге как минимум содержатся Pkgfile (с описанием процесса сборки) и .footprint (для определения правильности сборки). Далее, каталог порта может содержать патчи и другие файлы, необходимые для сборки пакета. Важно понимать, что исходный код программы не обязательно должен присутствовать в каталоге порта. В место этого Pkgfile содержит URL, указывающий, откуда исходник может быть выкачен.

Использование слова порт (port) в данном контексте позаимствовано в мире BSD, где подразумевает программу, портированную на систему или платформу. Слово порт иногда может вводить в заблуждение, потому что большинство программ не требуют действительного портирования для запуска на CRUX (или Linux в целом).

4.1.2. Что такое система портов?

Термин Система портов (Ports System) описывает CVS репозиторий, содержащий порты и клиентские программы, которые могут выкачивать порты из этого CVS репозитория. Пользователи CRUX могут использовать команду ports(8) для выкачивания портов из CVS репозитория и размещения из в /usr/ports/ . Утилита ports использует CVSup(1) для скачивания/синхронизации.

4.2. Использование системы портов


4.2.1. Синхронизация локальной структуры портов

Сразу после установки CRUX структура портов ( /usr/ports/ ) пустая. Для того, чтобы создать локальную структуру используйте команду ports с ключом -u . Пример:

Опция -u ( update ) указывает команде ports связаться с CVS репозиторием и выкачать новые и обновленные порты. В процессе работы программа выводит примерно следующее:

В выводе видно, какие файлы выкачиваются, обновляются или удаляются.

4.2.2. Просмотр списка локальных портов

Когда локальная структура обновлена, каталог /usr/ports/ содержит две категории пакетов, base и opt . В каждом, из этих каталогов вы можете искать порты. Вы просто просматриваете структуру каталога для просмотра, какие порты доступны.

Еще вы можете использовать команду ports с ключом -l для просмотра всех локальных портов. Например:

Если вы ищете определенный пакет, то проще будет использовать конструкцию вида ports -l | grep sendmail для проверки наличия пакета и его расположения.

4.2.3. Просмотр соответствия версий

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

Если различий найдено не будет, вывод будет следующим:

4.2.4. Сборка и установка пакетов

После того, как вы нашли порт, который вы хотите собрать и установить, просто перейдите в его каталог и выполните команду pkgmk . Например:

Опция -d указывает pkgmk , что нужно выкачать недостающие исходники, указанные в Pkgfile (в случае, если исходники уже скачаны эта опция будет проигнорирована). После того, как исходники будут выкачены, пакет начнет собираться. Если пакет соберется нормально, вы можете использовать pkgadd , для его установки или обновления. Например:

Для облегчения жизни pkgmk -d имеет еще два параметра — -i (для установки собранного пакета) и -u (для обновления). Например:

Эти команды выкачают и установят/обновят пакет. Замечание: пакет будет установлен/обновлен только в том случае, если он будет нормально собран.

Источник

Читайте также:  Графический драйвер нвидиа для windows 10
Оцените статью