НОВАЯ документация - Advanced Emerge World
Гость 27 ноября, 2005 - 02:27
Всем срочно читать!
Жду отзывов!
http://wiki.fantoo.ru/index.php/Advanced_Emerge_World
»
- Для комментирования войдите или зарегистрируйтесь
Понравилась
Понравилась постановка проблематики вопроса, особенно разговор с девелопером :). Спасибо за решение.
старался
старался изовсех сил :)))
Вобщем как показала практика, у портажа есть ещё неприятный баг с кешированием метадаты.. но это отдельно я обрисую...
Я так понял что
Я так понял что дети у портеж девелоперов очень красивые. То же, что они делают руками.... Впрочем идеального в мире ничего нет. Не стоит ожидать идеала и от системы портежей и от утилит, которые к ней прилагаются.
Лично мне наличие слотов и их правильная поддержка не особо актуальны. А вот убогость родных утилит управления действительно удручает. Особенно при вычислении обратных зависимостей пакета который я собираюсь грохнуть. Причем, что обидно, действенные утилитки обявлены покойниками, а родные тузлы тока для рюшек и годятя. Такое ощущение что нынешние девелоперы портежей слабо понимают назначение и требуемый функционал системы управления пакетами и опыт коллег изобретающих замечательные велосипеды для портежей их ничуть не вдохновляет.
Статья, кстати, это еще один способ изготовления собственного велосипеда.
нам никто не не
нам никто не не мешает написать свои утилиты, удовлетворяющие всем потребностям, и потом попытатся пропихнуть их в состав базовых утилит portage :) это мир OpenSource ;)
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.
вот это костыль
вот это костыль ! браво:))
зы: я тебе еще по весне говорил что нужна своя утилка (на начальных этапах - надстройка) для работы с портэжами, чтобы унаследовав от последних гибкость привнесла некоторые фичи бинарных дистрибутивов и возможно конкурирующих ос
Re: вот это костыль
ты был прав! :-)
по идее я глядел.. переписать весь портаж на допустим java/ruby+mysql/sqlite или что угодно - несложно
и все индексы.. любые. делать на уровне базы. для select * в нужном виде.
и консольных тулзов к sql коду приделать. и rsync import
и переделать world
ничего сложного не вижу
хоть на C+SQLITE
а вот портажи на питоне это уродство
и контент который должен лежать в СУБД индексированным валяется на файлухе и мегаумные люди приделывают кэше-костыли.. это дааа...
как меня бесит нажимая Ctrl+C получать стектрейс из питона!!!
> по идее я
> по идее я глядел.. переписать весь портаж на допустим java/ruby+mysql/sqlite или что угодно - несложно
нет java тут имхо не катит, все утилы, часть которые возомжно будут использоваться этой утилитой на питоне (ну еще Цэ) и JRE будет лишней сущностью/зависимостью, при том, что Python в плане системного (и вообще) программирования более изящен и прост.
> и все индексы.. любые. делать на уровне базы. для select * в нужном виде.
и консольных тулзов к sql коду приделать. и rsync import
и переделать world
я думаю, нужно как минимум набросать концепции в wiki :)
> и контент который должен лежать в СУБД индексированным валяется на файлухе и мегаумные люди приделывают кэше-костыли.. это дааа...
дык он может и в бд, глянь в сторону eix например, или еще на gentoo-wiki.com была статья по прикручиванию бд к emerge. А то, что бэкэнд базы на файлухе имхо рулез немерянный:) ибо гибко и устойчиво (представь что у тебя после жесткого ребута на reiser чуть забился нуликами файлик от базы с портэжами в sqlite.
> как меня бесит нажимая Ctrl+C получать стектрейс из питона!!!
мне кажется это можно какнить перехватить и переназначить и вобщем не самая большая проблема:)
SQL то нафиг?
SQL то нафиг? 8-0
Не надо стрелять из пушки по воробьям!
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.
в самый раз
в самый раз будет, не обязательно городить в Oracle локальная бд вроде sqlite(если использовать драйвер вроде sqlobject то выбор бд вообще не имеет значения) будет в самый раз не сильно усложняя реализацию она позволит как мне кажется легко и изящно решать проблемы вроде сабжа
Нееее.... вообще
Нееее.... вообще SQL (язык... его возможности) излишни..... Что требуется? разве нужны сложные таблицы?
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.
у вас есть
у вас есть более простое решение ?, xml ? но это опять-таки один большой файл, более сложный в манипулировании
при чем тут XML? :)
при чем тут XML? :) или вы других БД не знаете? =) БД - это не только SQL. есть куча БД специально созданных под такие задачи, SQL в этом случае - это именно стрельба из пушки по воробьям :)
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.
Похоже,
Похоже, питононенавистники живут не только на ЛОРе :) Чем он вам так не угодил?
А я почему-то ни разу не видел трейсбэков, когда останавливал emerge по ^c. Обычно он говорит "Exiting on signal 2".
Согласен с syncro по поводу изящества Питона и устойчивости существующей базы портежей (в файлах). Если портежи превратятся в подобие Windows Registry (а что, нормальная БД, индексированная, не нужны никакие костыли) -- amax первый схватится за голову :) В Gentoo ВСЯ конфигурационная информация хранится в текстовых файлах. ИМХО это не случайно.
А кривость портежей -- вовсе не вина Питона.
/me love Python Сам не
/me love Python
Сам не понимаю, чем им Python не угодил?! :-\
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.
Re: Похоже,
Все очень просто. Я не программирую ни на перле ни на питоне. Для моих повседневных нужд вполне достаточно возможностей стандартного гентушного шелла. Наличие питона/перла в совокупности с либами мне почти нисколько не мешает (не помогает?). За исключением минисборок, где каждый килограмм на счету.
Согласитесь что слишком жирно отдавать 50 метров ценного пространства под.... движок инсталлера. А как только это сносится, исчезают все прелести генты. Получается странная ситуация. В 99 процентах питон/перл/раби мне просто не нужен а в 1 мешает. И ни одного случая полезного применения. А ненависть - это не то определение.
Все очень
Все очень просто:) реализовать например те же eclass'ы на шелле было бы намного сложнее, а на C++ геморойнее(каждый компилировать еще и под разные арихитектуры и т. п.). Ктомуже если автору ПО нравится питон, а вам нет, вы имеете полное право не пользоваться его программами;))
Re: Похоже,
Ну, 50 метров -- это что-то много. Я вот только что не смог запустить свой старый скрипт, который использует Tkinter. И не могу теперь найти как его поставить... (Чует мое сердце, что-то лишнее я из USE удалил)
Ну а руби/перл тут вроде как вообще не при чем.
UPD: USE="-gdbm -berkdb -readline -tcltk -ncurses -ssl" отключает все "extraneous modules" Питона. А мне нужно добавить "dev-lang/python tcltk" в packages.use
Много слов -
Много слов - мало дела...
--
А статья неплохая, автору респект.
А как на счет
А как на счет emerge -e world? На сколько я понимаю, он пересоберет все слотированные пакеты. Другой вопрос -- он пересоберет вообще все пакеты :) Но, по идее, -p поможет выудить только те, которые [S]. Вы следите за моей мыслью? :) В общем, emerge -pe world | grep "^\[.*S.*\]" или что-то типа того выдаст список всех пакетов, которые в слотах. Осталось только определить, какие из них нужно обновлять -- и передать названия пакетов с версиями в качестве параметров emerge
критика
много пустых построений :
1. equery таки заменен на deprecated qpkg (да выложи его как я в /usr/local/bin)
2. не анализируется источник слотов :
а вот так не спрашивали ? :
qpkg -I -nc -d -v system
(3 пары выдаст любому)
3. нафига какой-то левый ebuild лепить с указанием версии слота
чтобы вручную запускать txt-файл с поштучным emerge
- прямо в нём и добавить слоты свои
идею с "slots" лучше использовать для RDEPEND gосле сборки ядра !
(ndiswrapper,shfs,ati-drivers ...)
4. далее - список слотов известен, мы лишь только перестроим слоты
еще раз (с новыми флагами) - вот блин ценное занятие
Спишем все на ноябрьские Леониды ...
ВНИМАНИЕ - читать!
построения ОБУЧАЮЩИЕ
1. нельзя. конфликт имён с утилитами написанными на C
2. ничего не выдало
3. ебилд НУЖЕН для понимания проблемы слотов. txt файл нужен для эмуляции комфортного НЕПРЕРЫВНОГО КОНТРОЛЛИРУЕМОГО emerge который в процессе ребилда world может прерываться нужное кол-во раз и быть продолженным с нужного места. Пямов в нём слоты добавлять глупо - мы для них НЕ ЗНАЕМ правильный порядок депендов.
идея SLOTS для модулей ядра давно реализована в:
emerge sys-kernel/module-rebuild
4. список слотов не всегда известен, хотябы по причине того что в портаже бывают НЕОДНОЗНАЧНЫЕ ситуации.
что на что списать я так и не понял, ты наверное чтото умное загнул :)
Трудно быть богом
Н-н-да
правильный порядок депендов имеет смысл только для emerge world
Если задавать поштучный emerge, то по логам можно найти как DEPEND-зависимости перестраиваются всякий раз для
подходящего пакета (который требует таковой DEPEND)
список слотов легко поиметь по 'qpkg -I -d -v'
и перестроить младшие слоты можно отдельным коротким
поштучным emerge, сразу после emerge -e world
про 'system' я немного ошибся :
emerge -pvP system является частью
emerge -pvP world
>>> These are the packages that I would unmerge:
sys-devel/automake
selected: 1.5 1.8.5-r3 1.6.3 1.7.9-r1 1.4_p6
protected: 1.9.5
omitted: none
sys-devel/autoconf
selected: 2.13
protected: 2.59-r6
omitted: none
>>> 'Selected' packages are slated for removal.
>>> 'Protected' and 'omitted' packages will not be removed.
как раз аккуратно помечается 'protected' последняя версия пакета
а все другие слоты - приговариваются к сносу
(automake,autoconf,python)
если конфликт имен - то это с новым пакетом app-portage/portage-utils
(у меня пакета/конфликта нет)
еще - вчера отследил кто потребовал в студию 'gtk+-2'
оказалось porthole (номер 9 из 19)
так что сотворил world - управляй им сам
насчет леонидов : это сильнейшие метеоритные потоки в середине ноября
когда небо перемежают следы падающих звезд - загадывайте желания ...
перестройка module-rebuild
ну и теперь насчет module-rebuild
Сей скрипт юзает лабаз /var/lib/module-rebuild/moduledb
с точным указанием версии
Ну вот качну я новый ati-drivers
и что ручками менять ?
module-rebuild del ati...old
module-rebuild add ati...new
Как раз для слотов это идеально
А для перестройки не надо точно указывать версию, имхо
А тот самый 'app-portage/slots' порт/ebuild без точной версии
идеально подошел бы для обновлений внешних модулей ядра
Кстати, а не попробовать ли (ха-ха) module-rebuild
для перестройки слотов, а slots - для модулей ядра ?
Вуаля