топологическая сортировка, сборка пакетов

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

топологическая сортировка, сборка пакетов

Сообщение sunjob »

добрый день

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

в инете "как такового" решения не нашел, есть только теория

по понятным причинам не надо предлагать разобрать под микроскопом исходники "пакетных менеджеров" и прочих "комбайнов", в задачу не входит "написать мир с нуля" :о) (надеюсь, смысл понятен)

не обсуждается
- наш дистрибьютив
- как мы собираем пакеты (понятно, что все не так как надо и все через не то место :о)

в тек. момент "весь процесс" составляется в ручном режиме, если будут подходящие идеи/решения, то попробуем "заточить" под "свои задачи", если нет - значит "перебьемся" :о), как говориться, и на этом спасибо

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

буду благодарен за
- волшебные пендили (в нужном направлении)
- ссылки
- идеи
- методы/решения - кто и как с "подобной задачей" справляется (ведь есть же такие спецы?!)

постановка задачи (что видится или как примерно будет решаться)

на входе
- "какое-либо" описание зависимостей, текст, или еще какой формат (типа пакет А зависит от А.1, А.2, А3, Б)
- возможно, вариации "версий" или еще какие-то "варианты" (типа пакет А совместим с А.1 - версии 1.0-1.5, и уже не совместим с версиями 0.1-0.9 и 1.6 и выше)

на выходе
- последовательность сборки пакетов (последовательная , не параллельная), типа сборка в след. посл-ти:
А.1, А.2, А3, Б, А

tag:
- топологическая сортировка
- теория графов
- алгоритм разрешения зависимостей

спасибо за помощь

### дополнение ###

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

если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: топологическая сортировка, сборка пакетов

Сообщение Bizdelnick »

Эту задачу часто решают методом грубой силы: сначала собирают нужные версии всех пакетов как получится, потом на получившемся репозитории запускают массовую пересборку, в которой все зависимости будут уже актуальных версий (порядок сборки в данном случае уже не важен). Топологическая сортировка скорее всего не удастся из-за циклических зависимостей (а для сборочных зависимостей это в порядке вещей, ведь чтобы собрать компилятор нужен компилятор, без бутстрапинга никак).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: топологическая сортировка, сборка пакетов

Сообщение Vascom »

Bizdelnick писал(а):
09.07.2017 12:12
Эту задачу часто решают методом грубой силы: сначала собирают нужные версии всех пакетов как получится, потом на получившемся репозитории запускают массовую пересборку, в которой все зависимости будут уже актуальных версий (порядок сборки в данном случае уже не важен). Топологическая сортировка скорее всего не удастся из-за циклических зависимостей (а для сборочных зависимостей это в порядке вещей, ведь чтобы собрать компилятор нужен компилятор, без бутстрапинга никак).

Согласен, что так не делают. Но всё же не обязательно собирать всё-всё с нуля. Можно иметь начальный набор - компиляторы и основные зависимости. Топикстартер такую задачу не ставил, вроде.
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

> Топикстартер такую задачу не ставил, вроде.
да мы че, совсем что ли на голову больные?
"написать мир с нуля" мы не планируем :tongue:

если это так нужно, УТОЧНЯЮ
- система на которой все будет собираться УЖЕ ЕСТЬ, со всем КОМПЛЕКТОМ DEVELOP-пакетов

т.е. для сборки все есть
ЗАДАЧА - получить список последовательности сброки пакетов... гм, ну например какого либо большого пакета, типа KdeNlive. (ну типа к примеру)

сначала собирают нужные версии всех пакетов как получится, потом на получившемся репозитории запускают массовую пересборку, в которой все зависимости будут уже актуальных версий (порядок сборки в данном случае уже не важен).

что -то как то все, блин, хреново это все... "как получится, да потом че-нить да подрихтуем"... :о(
но к решению задачи в том виде в котором "треба" - не имеет отношения, имхо...

спасибо
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: топологическая сортировка, сборка пакетов

Сообщение s.xbatob »

то есть ровно то, что делает tsort?
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

> tsort
гуглить и манить я, вроде как, тоже умею :rolleyes: :rolleyes: :rolleyes:
наткнулся "на нее" в другом форуме, сейчас изучаю, но как то очень сильно сомневаюсь, в том, что она сильно поможет в данном вопросе

побоялся за свой "хранцузский", нашел достойное описание

Топологическая сортировка, считывает пары строк, разделенных пробельными символами, и выполняет сортировку, в зависимости от заданного шаблона.

ну и теперь думаем, как это поможет отцу русской демократии?

зы
спецыально пытался сделать задачу "дистро/линухо независимой"...
ну вот допустим, возьмем не пакеты, а блин... с хозяйством, типа строим дом, сначало нужен фунадмент, но фундамент зависит от цемента, песка, воды, дня недели (водитель вовка в пятницу уже никакой до понедельника) итд... ну вот аналогия пусть будет такая... если это поможет... ведь явно подобные задачи решаются, причем ну очень много подобного... и как то решение автоматизируется...
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: топологическая сортировка, сборка пакетов

Сообщение s.xbatob »

sunjob
Тогда постарайтесь объяснить что вам надо. Частично упорядоченное множество - понятие однозначное, метод его представления и сортировки тоже описан подробно и однозначно, например, у Кнута.
А ваши предыдущие объяснения выглядят подозрительно абстрактно и размыто.
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

> подозрительно, абстрактно и ... что там, ага! - размыто

на входе
- "какое-либо" описание зависимостей, текст, или еще какой формат (типа пакет А зависит от А.1, А.2, А3, Б)
- возможно, вариации "версий" или еще какие-то "варианты" (типа пакет А совместим с А.1 - версии 1.0-1.5, и уже не совместим с версиями 0.1-0.9 и 1.6 и выше)

на выходе
- последовательность сборки пакетов (последовательная , не параллельная), типа сборка в след. посл-ти:
А.1, А.2, А3, Б, А

... ума не приложу, как еще обьяснить? давайте тогда, что-ли по буквам, по словам разбирать, что не понятно, спрашивайте, постараюсь максимально выложиться :о) надеюсь, если внимательно прочитать топик - станет немного понятнее... вот я перечитал и стало совсем понятно, что более понятно обьяснить не смогу :о)

ну и ведь очевидно, что ВСЕ С НУЛЯ мастерить - не подходит
> если будут подходящие идеи/решения, то попробуем "заточить" под "свои задачи", если нет - значит "перебьемся"
ведь понятно, что ДЕЛАТЬ МОНСТРА не стоит как задача, надеемся, что ПОДОБНЫЕ задачи как то да решаются... ПОДОБНЫЕ - значит не только ЗАВИСИМОСТИ ПАКЕТОВ, есть куча всего замечательного, где ЧТО-ТО подобное так же требуется, но в РАЗУМНЫХ пределах

все имхо, спапсибо
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: топологическая сортировка, сборка пакетов

Сообщение s.xbatob »

sunjob
Так и объясняйте: вам нужен менеджер пакетов со стандартными возможностями.
Теперь объясните, почему вы хотите изобрести велосипед вместо того, чтобы воспользоваться штатным.
Спасибо сказали:
Аватара пользователя
yars
Сообщения: 1144
Статус: Slacker!
ОС: Slackware64-current

Re: топологическая сортировка, сборка пакетов

Сообщение yars »

Очереди зависимостей может формировать sqg, который входит в пакет sbopkg. Но он это делает путем анализа установленных пакетов.
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

> вам нужен менеджер пакетов со стандартными возможностями.
пожалуйста, обьясните из чего вы решили это?! нет, нам не нужен пакетный менеджер !!! (три восклицательных знака :о)
хотя, возможно ваше видение решения задачи - подробно описанное (пожалуйста, разьясните) - поможет мне чем ни-будь...давайте, раскажите как вы видите ваше решение?!

на входе - "обычный" список пакетов
на выходе - "правильный" список пакетов

> Очереди зависимостей может формировать sqg, который входит в пакет sbopkg. Но он это делает путем анализа установленных пакетов.
понял, но сами видите не подходит уже по определению :о) да и в планах - сам пакетник не использовать

доп.
попробую обьяснить по другому
допустим мне нужно "расчитать зарплату"... тупо, но пусть будет так... я спрашиваю, вот така задача, какие существуют решения, ведь не может же их не быть, они есть, т.к. люди однозначно с этими задачами сталкиваются и ... видимо их решают
а вы мне все в один голос: есть 1с, парур/рарус :о) ананас итд - все виды электронных бухгалтерий

так и тут, есть "подобная задача", она вообще не упирается в пакеты, линуксы и пр. хрени... задача общая и решается на любом мало мальском предприятии и видимо, уж точно есть какие либо подобные пакеты, программы, наработки, таблицы итд для решения "подобных задач" ... вот я и ищу/воспрошаю к этим людям кто с этими решениями сталкивался, и что то может об этом расказать

если мы чего та не знаем, это же совсем на значит, что этого нет вообще... :о) как-то так...

спасибо
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: топологическая сортировка, сборка пакетов

Сообщение Bizdelnick »

sunjob писал(а):
09.07.2017 17:28
на входе
- "какое-либо" описание зависимостей

Собственно, получение этого описания и есть самая сложная часть задачи.

sunjob писал(а):
09.07.2017 17:28
вот я перечитал и стало совсем понятно, что более понятно обьяснить не смогу

Сможете, если перейдёте к конкретике. Кто знает, что и из чего Вы там собираете? Для deb-пакетов, например, есть botch, но Вы же не хотите раскрывать тайну, какой формат пакетов используете.

Vascom писал(а):
09.07.2017 12:55
Но всё же не обязательно собирать всё-всё с нуля.

Я этого и не предлагал. Я просто сказал, что циклические сборочные зависимости в порядке вещей, и пояснил, почему.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

> Собственно, получение этого описания и есть самая сложная часть задачи.
получение и запись этих зависимостей - есть наша задача, в решение оно не входит ни каким боком, МЫ САМИ БУДЕМ ЗАДАВАТЬ ЭТИ САМЫЕ ЗАВИСИМОСТИ... т.е ни какой привязки к пакоменеджерам!

а теперь все!!! забыли про линуксы, пакеты, пакоменагеры и типы пакетов!!!

берем исходное б.м. понятное описание задачи:

на входе
- "какое-либо" описание зависимостей, текст, или еще какой формат (типа пакет А зависит от А.1, А.2, А3, Б)
- возможно, вариации "версий" или еще какие-то "варианты" (типа пакет А совместим с А.1 - версии 1.0-1.5, и уже не совместим с версиями 0.1-0.9 и 1.6 и выше)

на выходе
- последовательность сборки пакетов (последовательная , не параллельная), типа сборка в след. посл-ти:
А.1, А.2, А3, Б, А


ПАКЕТЫ - заменяем на ЛЮДЕЙ
СБОРКУ - заменяем на любое действие ПОКУПКА, СВИДАНИЕ, УБИЙСТВО итд...

надеюсь так станет понятней?! подобные задачи решаются, автоматизируются, есть наработки, пакеты/программы итд (далее по тексту :о)
зависимости "изыскиваются/создаются/набиваются" в "задачу" - как исходные данные...

ни каких линуксов, типов пакетов, процесса сборки, итд... если сложно, ну можно ведь и не отвечать... ни кто вас не упрекнет в том, что я так хреново обьясняю :о)

на примере "последовательности сборки автомобиля"
- сначало собираем корпус (который зависит от кучи запчастей, значит изготавливаем сначало запчасти, потом собираем корпус)
- далее вставляем двигатель (со своими зависимостями)
- далее подвеску (со своими зависимостями)
- далее рулль ...

ведь ни у кого же не взбредет в голову приделывать сначало колеса (непонятно куда, вперед сборки корпуса) итд
плюс к этому добавляются взаимо-пересекающиеся зависимости...

ну и, естественно данный процесс как то автоматизируется (ну хоть как то, не все же техпроцессом описывается в 10ти томах последовательности сборки, раньше - да, не спорю, но не сейчас...)

вот и спрашивается, как автоматизируется, что используется, итд...

что-то мне напомнило
ТЫЦ
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: топологическая сортировка, сборка пакетов

Сообщение Bizdelnick »

Ну ок, абстрагировались. Так а что не так с tsort-то?

Shell

% cat deps запчасть1 корпус запчасть2 корпус корпус двигатель корпус подвеска двигатель подвеска подвеска руль % tsort deps запчасть1 запчасть2 корпус двигатель подвеска руль %

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

дак вот и я спросил "что не так"? из описания мне было не понятно как это поможет ... и ни кто ни чего не ответил
щас бум разбираться что так и что не так? как поведет себя с множественными и пересекающимися зависимостями и пр.хреньками :о)
описание зависимостей не совсем удобно, хотелось бы по строке на каждый пакет, но это пока придирки... ща мы тут переварим, покумекаем, если кателок не пробьет, отпишусь что ни будь

а вообще, все таки интересуюсь, какие наработки используются в промышленности, ясно дело что можно и башем заделать или как то подобно низкоуровне ...

спасибо
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: топологическая сортировка, сборка пакетов

Сообщение Bizdelnick »

sunjob писал(а):
09.07.2017 23:17
описание зависимостей не совсем удобно, хотелось бы по строке на каждый пакет

Ну как вариант:

Код: Выделить всё

#!/usr/bin/make -f

.PHONY: all
all: запчасть1 запчасть2 подвеска руль двигатель корпус

корпус: запчасть1 запчасть2
подвеска: корпус двигатель
двигатель: корпус
руль: подвеска

%:
    @echo $@
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: топологическая сортировка, сборка пакетов

Сообщение Bizdelnick »

sunjob писал(а):
09.07.2017 23:17
все таки интересуюсь, какие наработки используются в промышленности

В промышленности не используются сферические кони в вакууме, там используются конкретные решения для конкретных задач. Предпочитаете формулировать задачу абстрактно — не просите конкретных решений.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

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

> по поводу коня
это не конь сферический (не надо передергивать) а общая задача, без конкретики, вумный поймет ... и далее по тексту :о)

> по сортировке
небольшие тесты - вроде как отрабатывают, ГУТ, можно сказать превосходно
НО, как понятно и слону - только зависимости, с версиями пока не вижу решения (надеюсь кому надо, тот понял, о чем речь :о)

спасибо

ВОПРОС ОСТАЕТСЯ ОТКРЫТЫМ - какие наработки применяются вообще, в пром-ти, где либо еще?!

### UPDATE ###

некоторые особенности команды tsort

при тестировании простейшей схемы выяснилось, что "токены" должны быть парами

пример, два аналогичных описания, первый отработает нормально, второй с ошибкой

Код: Выделить всё

a a1 a2 a3
b b1 b2 b3

a2 a2.1
b2 b2.1

a2.1 c
b2.1 c

c c1
c c2


Код: Выделить всё

a a1 a2 a3
b b1 b2 b3

a2 a2.1
b2 b2.1

a2.1 c
b2.1 c

c c1 c2


ошибка

Код: Выделить всё

input contains an odd number of tokens


далее тестировать более заумные вз.связи не стал, из описания не понятно, как можно обойти эту особенность... в разудмьях, или в ступоре :о)
т.е. как таковое "парное описание", а еще лучше "по одной зависимости" - это все-таки не удобно, самое оптимальное было-бы по строке на "пакет"
можно, конечно выкрутиться, промежуточным скриптом, кот. будет парсить строки и вставлять "пары в другой файл", а потом отправлять содержимое на обработку tsort...
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: топологическая сортировка, сборка пакетов

Сообщение Bizdelnick »

sunjob писал(а):
10.07.2017 04:34
ВОПРОС ОСТАЕТСЯ ОТКРЫТЫМ - какие наработки применяются вообще, в пром-ти, где либо еще?!

Один пример я выше приводил — botch. Другой пример ещё раньше привёл yars — sqg. Если хотите что-то, более приближенное к Вашим условиям, давайте конкретику, потому что это всё штуки сугубо специализированные. Ну или копайтесь в их коде и переделывайте под свою задачу либо пишите с нуля по образу и подобию.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: топологическая сортировка, сборка пакетов

Сообщение Bizdelnick »

sunjob писал(а):
10.07.2017 04:34
небольшие тесты - вроде как отрабатывают, ГУТ, можно сказать превосходно
НО, как понятно и слону - только зависимости, с версиями пока не вижу решения (надеюсь кому надо, тот понял, о чем речь :о)

Надо это в данной теме только Вам, а для других будьте всё-таки любезны пояснить. В репозитории как правило (за редким исключением вроде ядра) присутствует ровно одна версия каждого пакета. Вы хотите собрать репозиторий, где один пакет будет представлен несколькими версиями, или Вам нужно выбрать версию пакета, которую необходимо собрать для удовлетворения зависимостей других пакетов?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: топологическая сортировка, сборка пакетов

Сообщение s.xbatob »

Что не так - теперь понятно: кроме условий упорядочивания вводятся дополнительные условия совместимости. Непонятно как поступать в случае этих дополнительных конфликтов. Если считать это фатальной ошибкой, то на саму сортировку это никак не влияет, надо только доп. проверки провести, а если пытаться что-то делать, то это будет уже не сортировка, а набор действий: собрать А, собрать В, разобрать А, собрать С,..
В любом случае это уже явно не администрирование, не практический вопрос и даже, вероятно не UNIX. С этим вопросам надо к математикам обращаться.
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

... уже... обратился... к любимому профессору, проболтали около часу :о) да все больше о жизни, а после вспомнили анекдот про пчел ("все в мире фигня, кроме пчел...") на том и порешили ... :о)

п.с.
да, ну как я и пытался донести, это не конкретика, завязанная на дистриб/пакетник, а более общая задача, причем чуть ли не каждый божий день решаемая на любом предприятии/компании итд... :о)

хотел "прикрутить" доксиген, но посчитал, что слишком сложным будет процесс описания, забил... :о)

> явно не администрирование, не практический вопрос
ну дак самая подходящая тема, как мне показалось, это как раз "сюда" ... ну может и промахнулся малость "эпохой, местом и вселенной"

> Непонятно как поступать в случае этих дополнительных конфликтов
немного не то, подразумевается, что есть "возможные версии" у каждого пакет (сущности), в самом простом случае - это единственная версия... ну дак вот, смысл "этих" вариаций в том, что если "вдруг" поменялась версия "какого-нибудь" пакета, то автоматом будут меняться и соотв. версии зависимых от него пакетов (или как то предлагать список возможных версий, по идее конфликты - ДА, возможны, в случае "не стыковки" рекоменудемых версий, и ДА, хотелось бы это как то "контролировать" или хотя бы "видеть" что что-то не так, в текущем положении настроек/версий)... потому как если "сущностей" становиться слишком много, то в ручном режиме становиться сложновато весь зоопарк контролировать и вероятность ошибок увеличивается
ну вот... все имхо...

спасибо
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

to Bizdelnick

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

адд
вижу, взаимные зависимости - приводят к ошибке, жаль (как с этим бороться, или как то "сожительствовать"? т.к. подобные особенности имеют место быть даже иногда необходимыми...)

Код: Выделить всё

make: Circular c1 <- c dependency dropped.
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: топологическая сортировка, сборка пакетов

Сообщение Bizdelnick »

sunjob писал(а):
11.07.2017 15:43
какие есть особенности при использовании "маке"? (ну типа, имена пакетов должны быть одним словом, либо, видимо, в ковычках итд)

Строго одно слово без пробельных символов, никакие кавычки не помогут, насколько я помню.

sunjob писал(а):
11.07.2017 15:43
есть ли возможность заточить на "разруливание версий"?

Я по-прежнему не понимаю, что там требуется разруливать.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: топологическая сортировка, сборка пакетов

Сообщение NickLion »

sunjob писал(а):
10.07.2017 04:34
второй с ошибкой

Код: Выделить всё

a a1 a2 a3
b b1 b2 b3

a2 a2.1
b2 b2.1

a2.1 c
b2.1 c

c c1 c2

То, что вы написали, tsort видит так:

Код: Выделить всё

a a1
a2 a3
b b1
b2 b3
a2 a2.1
b2 b2.1
a2.1 c
b2.1 c
c c1
c2

И говорит, что c2 не парный, если вы хотите записать зависимость a a1 a2 a3 как последовательную, то надо писать

Код: Выделить всё

a a1
a1 a2
a2 a3
b b1
b1 b2
b2 b3
a2 a2.1
b2 b2.1
a2.1 c
b2.1 c
c c1
c1 c2

Тогда нормально отработает tsort.

При наличии цикла ответ будет выдан, но с ошибкой в stderr:

tsort

a b b c c d d e e f d a tsort: -: input contains a loop: tsort: a tsort: b tsort: c tsort: d a b c d e f

Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

> NickLion
на этом варианте я пока крест поставил ... каменный :о) показался не совсем удобным

> Bizdelnick
доберусь до калавитуры, набросаю
по поводу "алиасов" - не чего не подскажете? оч. нужная получается "фишка"

если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: топологическая сортировка, сборка пакетов

Сообщение Bizdelnick »

sunjob писал(а):
11.07.2017 15:43
можно ли как ни будь сообразить алиасы для имен пакетов (записи зависимостей делать "простым" названием, а конечный "сортированный результат" выдавать "алиасами", т.е. более удобными именами, описателями, узелками на память, проч. доп.информацией

Если правильно понял вопрос, то можно сделать, например, так:

Код: Выделить всё

#!/usr/bin/make -f

.PHONY: all
all: pkg1 pkg2 pkg3

pkg1_DESC = пакет нумер раз
pkg2_DESC = пакет нумер два
pkg3_DESC = пакет нумер три

pkg3: pkg1 pkg2

%:
     @echo $($@_DESC)
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

> Bizdelnick
да, смысль поймали верно :о)
но, еще один момент, если, допустим, один пакет без "алиаса/описания" (ну типа, и так все с ним ясно) - то он не будет выведен (что вполне логично)
можно ли как ни будь сделать так, что бы при отсутствии "алиаса" - выводилось "имя пакекета" (понимаю что "это кабсдец какой то"... если это, возможно) :о)

если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: топологическая сортировка, сборка пакетов

Сообщение Bizdelnick »

Некрасиво, но должно работать:

Код: Выделить всё

%:
    @echo $(if $($@_DESC),$($@_DESC),$@)
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sunjob
Сообщения: 324
Контактная информация:

Re: топологическая сортировка, сборка пакетов

Сообщение sunjob »

спасибо!

...

попробую обьяснить "задачку с версиями", на примере тех же пакетов

каким-то образом (я вот не знаю каким, но каким-то "способом" надо это сделать ) мы в начале вместе с "зависимостями" описываем еще и "версии" (не у всех пакетов, а у некоторых, особенных)

допустим
пакет_А - зависит от пакета_Б
пакет_Б - зависит от пакета_В

пакеты могут быть версий (вот эти версии и зависимости мы "описываем"):
пакет_А : 1,2,3
пакет_Б : 1,2,3
пакет_В : 1,2,3

ну и допустим (видимо это тоже как-то надо "узаконить") имеются по умолчанию версии для каждого пакета, пусть это будет "1"

теперь по зависимостям версий, очевидно же что "есть такое понятие" как зависимость версий, пусть она у нас будет очевидной: 1е версии - стыкуются с 1ми версиями зависимых пакетов итд

т.е. если допустим, МЫ в данной сборке принудительно вибираем 1ю версию пакета А: пакет_А.1,
то соотв. автоматом/пересчетом в выходном списке устанавливаются зависимые пакеты в соотв. 1е версии

далее, что-то изменилось, "утекла" версия пакетА.1 в "какашный мир", нашли дыры, пропатчили, устанавливаем принудительно версию пакет_А.2 - что приводит к соотв. реакции системы :о)

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

ну вот, надеюсь более понятно :о)

### UPDATE ###

ну и надо иметь в виду, что могут быть "иные" зависимости версий, типа пакет_А - всеяден до версий пакета_Б, или только определенные версии... (ну т.е. как в жизни)
если я ошибаюсь, то поправьте а не критикуйте :о)
Спасибо сказали:
Ответить