LINUX.ORG.RU

создание своего порта в crux

 , ,


0

2

Если кто пользуется дистибутивом crux подскажите как создать свой порт, а точнее где взять файл .footprint этого порта, с перечнем путей и инсталировнных файлов этого порта, ведь порт я ещё не установил, откуда будет известно какие файлы должны собраться и куда должны быть установлены. И ещё как узнать от каких портов будет зависеть созданный мой порт, а так же что необходимо прописать в файлах порта, что бы он не загружал исходники по сети, а использовал уже скаченные мной и положенные в папку порта. Например хотел установить iptraf, в порта crux его нет, исходники iptraf у меня есть.
По crux есть ещё один вопрос. В crux используется система sysV, но почему то не отрабатывают скрипты уровней загрузки. Прописанные строки в файле /etc/inittab

l0:0:wait:/etc/rc.d/init.d/rc 0
l1:1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
не работают.
В оригинале стартует всё из одного скрипта. Пробовал подкинуть init старой версии - результата не дало. Думаю это связанно с новыми версиями библиотеки glibc Если кто знает как сделать загрузку стартовых скриптов по уровням, подскажите пожалуйста.

★★

Последнее исправление: v4567 (всего исправлений: 1)

где взять файл .footprint этого порта

# pkgmk --update-footprint

ведь порт я ещё не установил, откуда будет известно какие файлы должны собраться и куда должны быть установлены

когда заканчивается сборка порта, все файлы устанавливаются в $PKG директорию, например make DESTDIR=$PKG install, теперь эта директория считается корневой для всех файлов порта. затем создаётся обычный tar-архив этой директории, это и есть порт. и уже тогда создаётся .footprint файл, со списком содержимого этого архива.

И ещё как узнать от каких портов будет зависеть созданный мой порт

всё что ты укажешь в # Depends on: в начале Pkgfile, но жёстко привязанных зависимостей нет, ты свободно манипулируешь любым пакетом, как в Slackware.

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

в /etc/pkgmk.conf есть переменная PKGMK_SOURCE_MIRRORS, в ней ты можешь указать любые альтернативные пути где хранятся все исходники, например, /usr/src или твой локальный ftp://

а использовал уже скаченные мной и положенные в папку порта

так уже сделано по-умолчанию, если исходник лежит скачанный, повторно он его не будет выкачивать

почему то не отрабатывают скрипты уровней загрузки

думаю уровней загрузки тут и нет, внимательно посмотри /etc/inittab, где уровни означают просто событие, например, 1(S) Single-user когда тебя выкидывает в «безопасный режим» (лол), после неудачной отработки fsck. а 6 Reboot это вообще начало перезагрузки системы. 3-5 Not used, пожалуйста. они вообще не нужны.

Spoofing ★★★★★
()
Ответ на: комментарий от Spoofing

Spoofing спасибо что помогаете.
Но возникли ещё некоторые вопросы.

# pkgmk --update-footprint


Я так понял что я создам папку со своим портом и в этой папке создам два файла .md5sum и Pkgfile в эту же папку положу таровский архив с исходниками. Потом зайду в неё и запущу предложенную выше вами команду и файлик .footprint создастся сам. Это так?

всё что ты укажешь в # Depends on: в начале Pkgfile, но жёстко привязанных зависимостей нет, ты свободно манипулируешь любым пакетом, как в Slackware.


это я знаю, вопрос в том что я не знаю зависимостей, я не знаю например от каких портов будет зависеть iptraf. Вот как узнать от каких портов он зависит? Может есть какие нибудь стандартные методы для любого порта, или эта информация где нибудь прописанна в исходниках самого порта? Когда я это узнаю, то понятно что я эти порты впишу в # Depends on:

В inittab есть строка rm:2:wait:/etc/rc.multi это типа уровень 3 - многопользовательский. Не знаю отрабатывает этот скрипт или нет, но если он отрабатывает, то то же всё происходит при помощи одного скрипта.
я подкидывал старый init он запускался но всё равно стартовые скрипты уровней не отрабатиывали. Посмотрел от каких библиотек зависит init оказалось от glibc, наверное дело всё в ней, типа в новой версии оставили поддержку sysV только в таком виде.
PS: Хочу перейти на crux. У меня на десктопе федора, года 4 назад собирал lfs, он на трёх серверах работал продолжительное время, было всё нормально. Потом начал собирать с графикой BLFS до собирал до айса и оперы, проблемы были с переключением раскладки клавиатуры, в итоге я бросил. Устанавливать с исходником нуторное дело. Все загрузочные скрипты написал сам, самые простые ничего не усложнял.
CRUX как раз то что нужно, думаю его для шлюза без графики собрать, только то что необходимо. И для десктопа с kde.

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

в этой папке создам Pkgfile

.md5sum и .footprint создаются автоматически при сборке пакета, вообще забей хер на них, алсо уже перешли на .signature, на него тоже забей хер. безопасность для слабаков. собираю всегда с --ingore-md5sum --ignore-footprint --ignore-signature, брат жив.

я не знаю зависимостей

делешь make, он пишет ошибку что нехватает какого-нибудь glib, значит это обязательная зависимость, вписываешь её в Depends on, ставишь glib, продолжаешь сборку, теперь ругается что для сборки нехватает boost, собираешь boost, вписываешь в Depends on, продолжаешь сборку... методом тыка.

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

Spoofing ★★★★★
()
Ответ на: комментарий от Spoofing

Spoofing Что то нахрапом совладать с crux не получается. Вернее всё дело в новых версиях библиотек и т.д.
Вот например udev, раньше сетевые интерфейсы назывались eth0, eth1, eth2 и т.д.
Сейчас enp2s0, enp3s6 и т.д.
Хотел вернуть к старому виду, подкинул в /etc/udev старые правила, кстати новые правила какие то не такие, они udev-ом в бинарник преобразуются что ли, так вот ничего не изменилось. Сетевые интерфейсы так и остались enp.....
Не подскажешь как вернуть их к старым названиям?

С установкой программ вроде разобрался, но конкретно с iptraf не всё так просто. В исходниках iptraf нет скрипта ./configure, есть только скрипт ./Setup. Запускаешь его без параметров и всё компилится, собирается и устанавливается.
Pkgfile я создал вот такой:

# Description:  ip monitor
# URL:          ftp://iptraf.seul.org/pub/iptraf/iptraf-3.0.0.tar.gz

name=iptraf
version=3.0.0
release=1
source=(ftp://iptraf.seul.org/pub/$name/$name-$version.tar.gz)

build() {
        cd $name-$version
        ./Setup
        make DESTDIR=$PKG install
}

Но установить не получилось, собирался собирался и выдал ошибку, сейчас конкретно ошибку не напишу, но запуская непосредственно ./Setup всё скомпидировалось и установилось.
Хочу спросит, что за переменная $PKG, откуда она берётся и чему равна?

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

С udev разобрался. Оставили папку для старых правил, где я создал правило для сетевых интерфейсов. Надо было буквы для мак-адреса в нижнем регистре писать. Всё заработало.

v4567 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.