LINUX.ORG.RU
ФорумTalks

Зачем люди юзают дистрибутивы на бинарных пакетах


0

0

Это не флуд и не провокация холиваров, мне действительно интересно. Ведь на то, чтобы освоить gentoo на уровне, достаточном для более-менее грамотной его сборки, нужно не так уж много времени.

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

Dixi.

Ответ на: комментарий от Dudraug

Кажется, я начиная понимать WizardOfOz-a...

> В любом случае у меня как у пользователя ПК есть желание что бы софт работал мгновенно после того как я захотел его иметь. Дебиан почти позволяет это, единственное ограничение - это скорость интернета. При пересборке всего дистрибутива (за что выступает топикстартер) это время очень сильно растягивается. А собирать пакеты (если это очень нужно) средствами пакетного менеджера можно и в Дебиане и в Федоре и еще много где.

Вы вообще читаете мои посты? Речь идёт как раз о уменьшении обьёмов скачаного трафика, а как следствие - более быстрой загрузки. при этом скорость непосредственно компиляции ничтожно мала т.к. собираются только отдельные библиотеки(0,5 - 1.0 сек./штука). А таких библиотек приобновлении и пересборки под новые USE-флаги. максимум 6-7 на одну софтину(это действительно максимум). И весят они порядка 15 кб.

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

Прошу прощения за переход на личности, но я сомневаюсь в Вашей компетентности. Вы, извините, собирали когда-нибудь Xorg? A gtk+? Прошу извинить, если это так. Просто не верится, что Вы не почувствовали разницы...

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

> Сколько времени вы потратили на переустановку системы после этого? За это время моя система уже была бы близка к идеалу производительности и удобства после пересборки ядра, glibc, gtk+ и Xorg-а.

Неслабый такой dist-upgrade рабочей дебиановской системы проходит за полчаса. Дебиановцы уже играют в веснот в то время, как гентушники ещё компилируют опенофис :о)

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

>Дебиановцы уже играют в веснот в то время, как гентушники ещё компилируют опенофис :о)

Целесообразность "опеноффисса" на десктопе весьма сомнительна, да и какой смысл пересобирать такой огромный хлам со всем остальным?

А Дебиан вчерашний, сам пока еще дебианщик, но уже ушел частями на генту, гента позволяет отключить всякий хлам типа биди, ненужных функций в к3б, и прочего мусора, вот если бы в дебиане были USE флаги..., то тогда все было бы хоккей, а так мой выбор - Гента.

anonymous
()
Ответ на: комментарий от Rzhepish

> Нужно просто правильно использовать USE - флаги. Просто во многий софт по умолчанию включена поддержка технологий и средств, которые Вы никогда не будете использовать, а иногда даже и не слышали о таковых. И Вы сможете убрать эту КУЧУ лишней информации из софта, а как следствие и из оперативки только пересобиранием.

Угу, а потом, как один известный местный гентушник, будете ставить nero вместо k3b, потому что что-то криво собралось в кделибсах и теперь кнопка "отмена" в одном из диалоговых окон не работает :о) И на ваш багрепорт автор не сможет ответить, потому что не сумеет воспроизвести всю хитровы-нную комбинацию версий и юз-флагов. Выдохнул...

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

>> Дебиановцы уже играют в веснот в то время, как гентушники ещё компилируют опенофис :о)

> Целесообразность "опеноффисса" на десктопе весьма сомнительна, да и какой смысл пересобирать такой огромный хлам со всем остальным?


Гек называет "мне не нужно" громкими словами "аргумент фетишиста". И, представь себе, я с ним согласен.

> А Дебиан вчерашний, сам пока еще дебианщик, но уже ушел частями на генту, гента позволяет отключить всякий хлам типа биди, ненужных функций в к3б, и прочего мусора, вот если бы в дебиане были USE флаги..., то тогда все было бы хоккей, а так мой выбор - Гента.


ыыы, либастрал рулит. почитай моё предыдущее сообщение =)

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

Silvy, ну Вы же умный человек.

Это сразу чувствуется по вашим постам.

Ну неужели Вы не можете отличить то, что пишу я от того, на что отвечает Dudraug? Я говорю о том, что в Gentoo компиляция необходимого минимума занимет мало времени, а мне отвечают, что в Дебиане зато установка происходит быстро.

Ну где тут логика? Не вызывает ничего кроме искренней улыбки)

Я полностью разделяю ваши позиции. Просто мы используем разные дистрибутивы. А это просто потому, что вначале своего линуксоидного пути я верил, что компиляция спасёт мир:) Теперь я более умерен, но навыки, которые я приобрёл в те славные времена помогают мне всегда иметь быструю и приятную систему, не проводя долгие часы созерцая процесс emerge --emptytree world:) Просто Gentoo позволяет делать это быстро и удобно)

Rzhepish
()
Ответ на: комментарий от gaa

>Гек называет "мне не нужно" громкими словами "аргумент фетишиста". И, представь себе, я с ним согласен.

Хто такой Гек, и почему я с ним согласен?

>ыыы, либастрал рулит. почитай моё предыдущее сообщение =)

Какой лиастрал, речь об убогости механизма apt-build.


//Augustus Grandis

anonymous
()
Ответ на: комментарий от Rzhepish

>Прошу прощения за переход на личности, но я сомневаюсь в Вашей компетентности. Вы, извините, собирали когда-нибудь Xorg? A gtk+? Прошу извинить, если это так. Просто не верится, что Вы не почувствовали разницы...

Ни то ни другое я не пересобирал (можешь начинать кидаться в меня тапками ;), но смысла я в этом не вижу. И то и другое у меня летает, я не представляю как они могут работать быстрее, хотя у меня машинка далека от понятия "современная". Я долгое время убеждал себя что грамотная пересборка ядра дает прирост процентов на 30 в производительности. Но теперь я понимаю на сколько я заблуждался... Не хочу жить еще одной иллюзией. Возможно есть задачи, когда пересборка ядра дает прирост в производительности для таких задач, но мне это не нужно... А если будет нужно я пересоберу ядро - это несложно.

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

Вопрос в том зачем возводить почти в религию "сборку из исходников"? Я просто этого не понимаю...

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

> 2. Пересобирать, как я уже говорил, надо тоже не всё.

Тут яватролли постоянно напоминают про несовместимость ABI, которой страдают C++-компиляторы. В частности, это ведёт к тому, что при обновлении g++ надо (ну не всегда, разумеется) перекомпилить все программы на цпп. Интересно, а как же это отслеживается в гентушных ебилдах?

> 3. Вы слышали что-нибудь об утилите deltup? Думаю, что нет. А хотя бы о getdelta? Вряд ли. Эти утилиты позволяют даже в случае утери скачаного пакета качать не все сырцы, а только недостающую часть. А это очень экономит траффик. Сам пользуюсь)


А ты слышал об утилите debdelta?

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

>Я говорю о том, что в Gentoo компиляция необходимого минимума занимет мало времени

у меня не было возможности сравнить, я ставила Генту в VirtualBox, мне стало скучно на этапе " А теперь давайте соберем ядро для вашей новой системы " , я не знаю что вы называете "необходимым минимумом" , в любом случае поставить qt4 binary (еще и разрезаный на куски) будет быстрее чем выкачать те же исходники Qt и собирать их (celeron 1700) в течении 4 часов, даже если исходники предыдущей версии Qt у вас есть и вы их deltup'нули до новой версии, то все равно те же 4 часа на сборку... сэкономили только на траффике.

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

>Вопрос в том зачем возводить почти в религию "сборку из исходников"? Я просто этого не понимаю...

Blender есть такой знаете, так вот сбраныс с оптимизациями считает на 25 процентов быстрее гениричного из репов, есть еще масса софта который становится быстрее после оптимизаций.

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

>> Гек называет "мне не нужно" громкими словами "аргумент фетишиста". И, представь себе, я с ним согласен.

> Хто такой Гек, и почему я с ним согласен?


man lor, man притяжательные_местоимения

>> ыыы, либастрал рулит. почитай моё предыдущее сообщение =)


> Какой лиастрал, речь об убогости механизма apt-build.


Не передёргивай.

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

>Silvy, ну Вы же умный человек.

>Это сразу чувствуется по вашим постам.

>Ну неужели Вы не можете отличить то, что пишу я от того, на что отвечает Dudraug?

После прочтения этого захотелось сделать кое-что, что противоречит моим принципам... Пересилил и не сделал.

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

>Blender есть такой знаете, так вот сбраныс с оптимизациями считает на 25 процентов быстрее гениричного из репов, есть еще масса софта который становится быстрее после оптимизаций.

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

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

>Тут яватролли постоянно напоминают про несовместимость ABI, которой страдают C++-компиляторы. В частности, это ведёт к тому, что при обновлении g++ надо (ну не всегда, разумеется) перекомпилить все программы на цпп. Интересно, а как же это отслеживается в гентушных ебилдах?

Ну допустим обновлять компилятор совсем не обязательно.

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

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

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

> Вопрос в том зачем возводить почти в религию "сборку из исходников"? Я просто этого не понимаю...

Я прошу Вас. Начните читать мои посты полностью.

Я уже не один раз утверждал, что я не сторонник сборки всего, что движется. Но Вам не кажется, что фраза "И то и другое у меня летает, я не представляю как они могут работать быстрее" немного смахивает на разговоры сторонников ОС Windows. Я не пробовал, но что пробовать, всё равно у меня лучше.

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

Rzhepish
()
Ответ на: комментарий от Dudraug

>> Тут яватролли постоянно напоминают про несовместимость ABI, которой страдают C++-компиляторы. В частности, это ведёт к тому, что при обновлении g++ надо (ну не всегда, разумеется) перекомпилить все программы на цпп. Интересно, а как же это отслеживается в гентушных ебилдах?

> Ну допустим обновлять компилятор совсем не обязательно.


Понятно, гентушникам обновлять компиляторы "не нужно". Смачный слив. Внушает.

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

>Но Вам не кажется, что фраза "И то и другое у меня летает, я не представляю как они могут работать быстрее" немного смахивает на разговоры сторонников ОС Windows. Я не пробовал, но что пробовать, всё равно у меня лучше.

Нет не кажется. Все работает мгновенно, понимаешь, что такое мгновенно?

>Я уже не один раз утверждал, что я не сторонник сборки всего, что движется.

А в Дебиане пересобрать то что нужно невозможно? А если не пересобирать все какой тогда смысл в Генте? Зачем тогда создавалась такая мощная система сборок? Что бы пересобрать две либы? Сомневаюсь... Это культ - культ сборки из исходников. Разговор был именно об этом, а не о том нужно ли вообще что-либо пересобирать, я никогда не говорил что это не нужно, сам иногда балуюсь=) .

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

>Понятно, гентушникам обновлять компиляторы "не нужно". Смачный слив. Внушает.

Слив то слив, никто не спорит. Я просто заметил, что обновления компилятора не является критически важным действом.

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

>> Понятно, гентушникам обновлять компиляторы "не нужно". Смачный слив. Внушает.

> Слив то слив, никто не спорит. Я просто заметил, что обновления компилятора не является критически важным действом.


Но зачем-то ведь их обновляют? Например, захочется лямбд из c++09, а из в g++ 3.3 нема :)

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

> Тут яватролли постоянно напоминают про несовместимость ABI, которой страдают C++-компиляторы. В частности, это ведёт к тому, что при обновлении g++ надо (ну не всегда, разумеется) перекомпилить все программы на цпп. Интересно, а как же это отслеживается в гентушных ебилдах?

Если необходимо обновить компилятор, то при обновлении до определённой версии идёт проверка текущей версии и если интерфейсы ABI несовместимы, то вступают в силу зависимости, которые прописаны в самих ебилдах. Компилируется в последствии только необходимое.

> А ты слышал об утилите debdelta?

Слышал, но её не сравнить с getdelta.

1. Нет интеграции в менеджер пакетов.

2. Нет разветвлённой сети хранилищ дельт.

3. В debdelta нужно работать ручками, а в getdelta всё делается само.

И после этого вы будете говорить, что Ubuntu економит время? Возможно, но не в случае с debdelta.

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

OpenSUSE 10.1

rpm.xdelta
качались пакетным менеджером, и траффик и время

да, в дебиан по умолчанию этого нет, но OpenSUSE тоже бинарный дистр )

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

>> Тут яватролли постоянно напоминают про несовместимость ABI, которой страдают C++-компиляторы. В частности, это ведёт к тому, что при обновлении g++ надо (ну не всегда, разумеется) перекомпилить все программы на цпп. Интересно, а как же это отслеживается в гентушных ебилдах?

> Если необходимо обновить компилятор, то при обновлении до определённой версии идёт проверка текущей версии и если интерфейсы ABI несовместимы, то вступают в силу зависимости, которые прописаны в самих ебилдах. Компилируется в последствии только необходимое.


Примерчик ебилда имеется?

>> А ты слышал об утилите debdelta?


> Слышал, но её не сравнить с getdelta. 1. Нет интеграции в менеджер пакетов.

> 3. В debdelta нужно работать ручками, а в getdelta всё делается само.


а в readme сказано другое

> 2. Нет разветвлённой сети хранилищ дельт.


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

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

> А в Дебиане пересобрать то что нужно невозможно? А если не пересобирать все какой тогда смысл в Генте? Зачем тогда создавалась такая мощная система сборок? Что бы пересобрать две либы? Сомневаюсь... Это культ - культ сборки из исходников. Разговор был именно об этом, а не о том нужно ли вообще что-либо пересобирать, я никогда не говорил что это не нужно, сам иногда балуюсь=) .

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

В этом суть Gentoo.

Хотя, если есть время, то можно собрать и всё, хуже от этого не станет:)

Rzhepish
()
Ответ на: комментарий от gaa

# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-4.3.2.ebuild,v 1.1 2008/10/04 21:13:28 halcy0n Exp $

PATCH_VER="1.0" UCLIBC_VER="1.0"

ETYPE="gcc-compiler"

# whether we should split out specs files for multiple {PIE,SSP}-by-default # and vanilla configurations. SPLIT_SPECS=no #${SPLIT_SPECS-true} hard disable until #106690 is fixed

inherit toolchain

DESCRIPTION="The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking"

LICENSE="GPL-2 LGPL-2.1" KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86"

RDEPEND=">=sys-libs/zlib-1.1.4 >=sys-devel/gcc-config-1.4 virtual/libiconv >=dev-libs/gmp-4.2.1 >=dev-libs/mpfr-2.3 !build? ( gcj? ( gtk? ( x11-libs/libXt x11-libs/libX11 x11-libs/libXtst x11-proto/xproto x11-proto/xextproto >=x11-libs/gtk+-2.2 x11-libs/pango ) >=media-libs/libart_lgpl-2.1 app-arch/zip app-arch/unzip ) >=sys-libs/ncurses-5.2-r2 nls? ( sys-devel/gettext ) )" DEPEND="${RDEPEND} test? ( sys-devel/autogen dev-util/dejagnu ) >=sys-apps/texinfo-4.2-r4 >=sys-devel/bison-1.875 amd64? ( >=sys-libs/glibc-2.7-r2 ) ppc? ( >=${CATEGORY}/binutils-2.17 ) ppc64? ( >=${CATEGORY}/binutils-2.17 ) >=${CATEGORY}/binutils-2.15.94" PDEPEND=">=sys-devel/gcc-config-1.4" if [[ ${CATEGORY} != cross-* ]] ; then PDEPEND="${PDEPEND} elibc_glibc? ( >=sys-libs/glibc-2.6 )" fi

src_unpack() { gcc_src_unpack

use vanilla && return 0

[[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch

[[ ${CTARGET} == *-softfloat-* ]] && epatch "${FILESDIR}"/4.0.2/gcc-4.0.2-softfloat.patch }

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

Ну и? Где здесь выражена логика "Если необходимо обновить компилятор, то при обновлении до определённой версии идёт проверка текущей версии и если интерфейсы ABI несовместимы, то вступают в силу зависимости, которые прописаны в самих ебилдах. Компилируется в последствии только необходимое."

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

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

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

Такое поведение не реализуется ебилдом. Его реализует сам менеджер пакетов. Ебилд лишь несёт информацию о том, что делать с даными сорсами.

http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml?part=2&chap=1

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

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

> Такое поведение не реализуется ебилдом. Его реализует сам менеджер пакетов. Ебилд только несёт информацию о том, что делать с даными сорсами.


Слов recompile, rebuild или abi нагрепать по ссылке не удалось. Просьба выложить здесь релевантный экстракт сего труда.

// а йа пойду посплю

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

> Слов recompile, rebuild или abi нагрепать по ссылке не удалось. Просьба выложить здесь релевантный экстракт сего труда.

Я ведь сказал, где искать... Странные люди... Emerge... http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1

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

В любом случае было бы глупо искать информацию об очень конкретной проблеме в общей энциклопедии по ебилдам или emerge.

// а йа тоже пойду посплю

Rzhepish
()

> Зачем люди юзают дистрибутивы на бинарных пакетах

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

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

> Кому-то компьютер нужен, чтобы дрочить на вывод компилятора. Но большинству, всё таки для работы.

Имею основания думать, что Вы не читали весь топик. Здесь люди как раз обсуждают, как построить отношения с дистрибутивом таким образом, чтобы получить максимальный выигрыш. Под максимальным выиграшем я подразумеваю наилучшее соотношение прирост_производительности/затраченое_время. Имхо он достигается при компиляции всего нескольких пакетов. Их я уже перечислял, читатйте топик, если Вас это интересует.

Rzhepish
()
Ответ на: комментарий от gaa

С упомянутыми библиотеками проблем не помню. Может, в ~arch проблемы были?

А про bluez-utils - я, вот, после Gentoo не понимаю, как система может хотеть снести что-то, что я _сам_ ставил, а не по зависимостям...

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

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

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

Ну как-бы я согласен. что при старании можно и дебиан с RHEL разнести в хлам. Но тот пример именно с джентой был :)

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

насчет icc была мягко говоря провокация, рекомендации собрать p7zip или свежий gimp привели бы к тому что 7zip не распаковывал бы архивы, утверждая что они битые. а gimp бы грузил картинки как прозрачный фон ( ICC 11.0 с 10.0 - нормально)

там выше тестик есть с gzip

если i486 взять за 100%, то core2 архитектура дает около 8%, а вот icc 15%

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

> С упомянутыми библиотеками проблем не помню. Может, в ~arch проблемы были?

У libssl менялось API при переходе с версии 0.9.7 на 0.9.8. Этого нельзя было пропустить.

Вот тут пишут, что были проблемы с expat: http://test.gentoo.ru/node/8478#comment-58892 .

> А про bluez-utils - я, вот, после Gentoo не понимаю, как система может хотеть снести что-то, что я _сам_ ставил, а не по зависимостям...


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

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

>> Слов recompile, rebuild или abi нагрепать по ссылке не удалось. Просьба выложить здесь релевантный экстракт сего труда.

> Я ведь сказал, где искать... Странные люди... Emerge... http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1


Не вижу в этой куче буковок нужного. Покажи.

> Кроме того несовместимость ABI есть достаточно частный симптом, я, например, за все свои пересборки с таким не сталкивался... Но верю, что подобное случается.


Если ты на грабли ещё не встал, то это не повод говорить, что их не существует.

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

с GCC 2.x -> GCC 3.x

были очень большие грабли именно с CXX_ABI

если кто-то не застал.. ну openssl 0.9.7 -> 0.9.8
как пример тоже годится

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

еще NPTL можно припомнить
kernel 2.6.7 -> 2.6.8

обновление glibc иногда ведет к тому что собраные для старой версии glibc программы будут падать ( не все, но некоторые будут, procps, coreutils особенно часто падают)

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

Фух... Это так, для всех. Только что нашёл в исходниках процедуру. отвечающую за вычисление зависимостей при изменении USE-флагов.

def dep_getusedeps( depend ): """ Pull a listing of USE Dependencies out of a dep atom. Example usage: >>> dep_getusedeps('app-misc/test:3[foo][-bar]') ['foo','-bar'] @param depend: The depstring to process @type depend: String @rtype: List @return: List of use flags ( or [] if no flags exist ) """ use = getattr(depend, "use", None) if use is not None and hasattr(use, "tokens"): return use.tokens use_list = [] open_bracket = depend.find('[') # -1 = failure (think c++ string::npos) while( open_bracket != -1 ): close_bracket = depend.find(']', open_bracket ) if close_bracket == -1: raise InvalidAtom("USE Dependency with no closing bracket: %s" % depend ) use = depend[open_bracket + 1: close_bracket] # foo[1:1] may return '' instead of None, we don't want '' in the result if len(use): use_list.append(use) else: raise InvalidAtom("USE Dependency with no use flag ([]): %s" % depend ) # Find next use flag open_bracket = depend.find( '[', open_bracket+1 ) return tuple(use_list)

_valid_category = re.compile("^\w[\w-]*") _invalid_atom_chars_regexp = re.compile("[()|@]")

Это я нашёл, ищя в сорсах ответ на ваш вопрос, gaa. Как только найду, сразу же выложу.

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

А что вы здесь все про Генту. И чем оно так сильно рулит? Что оно надежнее других или может как-то быстрее загружается, или красивей, или веселее в чем-то? Нет, я не против, но не делайте других дураками.

anonymous
()
Ответ на: комментарий от gaa

Функция определения пакетов, которые не будут работать после обновления лежит здесь. Это не флуд. Я перелопатил пер этим в пятьдесят раз больше сырцов. Вы заставили меня КОНКРЕТНО попотеть, gaa. Это функция "def dep_zapdeps". Остальные две принимают в этом непосредственное участие. Я не кидал сюда совсем уж базисные функции которые безусловно тоже крайне важны для emerge-a.

def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None): if trees is None: global db trees = db writemsg("ZapDeps -- %s\n" % (use_binaries), 2) if not reduced or unreduced == ["||"] or dep_eval(reduced): return [] if unreduced[0] != "||": unresolved = [] for dep, satisfied in izip(unreduced, reduced): if isinstance(dep, list): unresolved += dep_zapdeps(dep, satisfied, myroot, use_binaries=use_binaries, trees=trees) elif not satisfied: unresolved.append(dep) return unresolved deps = unreduced[1:] satisfieds = reduced[1:] preferred = [] preferred_any_slot = [] possible_upgrades = [] other = [] parent = trees[myroot].get("parent") graph_db = trees[myroot].get("graph_db") vardb = None if "vartree" in trees[myroot]: vardb = trees[myroot]["vartree"].dbapi if use_binaries: mydbapi = trees[myroot]["bintree"].dbapi else: mydbapi = trees[myroot]["porttree"].dbapi for dep, satisfied in izip(deps, satisfieds): if isinstance(dep, list): atoms = dep_zapdeps(dep, satisfied, myroot, use_binaries=use_binaries, trees=trees) else: atoms = [dep] if not vardb: other.append((atoms, None, False)) continue all_available = True versions = {} for atom in atoms: avail_pkg = mydbapi.match(atom) if avail_pkg: avail_pkg = avail_pkg[-1] # highest (ascending order) avail_slot = "%s:%s" % (dep_getkey(atom), mydbapi.aux_get(avail_pkg, ["SLOT"])[0]) if not avail_pkg: all_available = False break versions[avail_slot] = avail_pkg this_choice = (atoms, versions, all_available) if all_available: all_installed = True for atom in set([dep_getkey(atom) for atom in atoms]): if not vardb.match(atom) and not atom.startswith("virtual/"): all_installed = False break all_installed_slots = False if all_installed: all_installed_slots = True for slot_atom in versions: if not vardb.match(slot_atom) and \ not slot_atom.startswith("virtual/"): all_installed_slots = False break if all_installed: if all_installed_slots: preferred.append(this_choice) else: preferred_any_slot.append(this_choice) elif graph_db is None: possible_upgrades.append(this_choice) else: all_in_graph = True for slot_atom in versions: if not graph_db.match(slot_atom) and \ not slot_atom.startswith("virtual/"): all_in_graph = False break if all_in_graph: if parent is None: preferred.append(this_choice) else: cpv_slot_list = [parent] circular_atom = None for atom in atoms: if "!" == atom[:1]: continue if vardb.match(atom): continue if dep_getkey(atom) != parent.cp: continue if match_from_list(atom, cpv_slot_list): circular_atom = atom break if circular_atom is None: preferred.append(this_choice) else: other.append(this_choice) else: possible_upgrades.append(this_choice) else: other.append(this_choice) preferred.extend(preferred_any_slot) preferred.extend(possible_upgrades) possible_upgrades = preferred[1:] for possible_upgrade in possible_upgrades: atoms, versions, all_available = possible_upgrade myslots = set(versions) for other_choice in preferred: if possible_upgrade is other_choice: break o_atoms, o_versions, o_all_available = other_choice intersecting_slots = myslots.intersection(o_versions) if not intersecting_slots: continue has_upgrade = False has_downgrade = False for myslot in intersecting_slots: myversion = versions[myslot] o_version = o_versions[myslot] difference = pkgcmp(catpkgsplit(myversion)[1:], catpkgsplit(o_version)[1:]) if difference: if difference > 0: has_upgrade = True else: has_downgrade = True break if has_upgrade and not has_downgrade: preferred.remove(possible_upgrade) o_index = preferred.index(other_choice) preferred.insert(o_index, possible_upgrade) break preferred.extend(other) for allow_masked in (False, True): for atoms, versions, all_available in preferred: if all_available or allow_masked: return atoms assert(False)

def dep_expand(mydep, mydb=None, use_cache=1, settings=None): if not len(mydep): return mydep if mydep[0]=="*": mydep=mydep[1:] orig_dep = mydep mydep = dep_getcpv(orig_dep) myindex = orig_dep.index(mydep) prefix = orig_dep[:myindex] postfix = orig_dep[myindex+len(mydep):] expanded = cpv_expand(mydep, mydb=mydb, use_cache=use_cache, settings=settings) try: return portage.dep.Atom(prefix + expanded + postfix) except portage.exception.InvalidAtom: # Missing '=' prefix is allowed for backward compatibility. if not isvalidatom("=" + prefix + expanded + postfix): raise return portage.dep.Atom("=" + prefix + expanded + postfix)

def dep_check(depstring, mydbapi, mysettings, use="yes", mode=None, myuse=None, use_cache=1, use_binaries=0, myroot="/", trees=None): """Takes a depend string and parses the condition.""" edebug = mysettings.get("PORTAGE_DEBUG", None) == "1" #check_config_instance(mysettings) if trees is None: trees = globals()["db"] if use=="yes": if myuse is None: myusesplit = mysettings["PORTAGE_USE"].split() else: else: myusesplit=[] try: mysplit = portage.dep.paren_reduce(depstring) except portage.exception.InvalidDependString, e: return [0, str(e)] mymasks = set() useforce = set() useforce.add(mysettings["ARCH"]) if use == "all": mymasks.update(mysettings.usemask) mymasks.update(mysettings.archlist()) mymasks.discard(mysettings["ARCH"]) useforce.update(mysettings.useforce) useforce.difference_update(mymasks) try: mysplit = portage.dep.use_reduce(mysplit, uselist=myusesplit, masklist=mymasks, matchall=(use=="all"), excludeall=useforce) except portage.exception.InvalidDependString, e: return [0, str(e)] mysplit=portage.dep.dep_opconvert(mysplit) if mysplit == []: return [1,[]] try: mysplit = _expand_new_virtuals(mysplit, edebug, mydbapi, mysettings, use=use, mode=mode, myuse=myuse, use_cache=use_cache, use_binaries=use_binaries, myroot=myroot, trees=trees) except portage.exception.ParseError, e: return [0, str(e)] mysplit2=mysplit[:] mysplit2=dep_wordreduce(mysplit2,mysettings,mydbapi,mode,use_cache=use_cache) if mysplit2 is None: return [0,"Invalid token"] writemsg("\n\n\n", 1) writemsg("mysplit: %s\n" % (mysplit), 1) writemsg("mysplit2: %s\n" % (mysplit2), 1) myzaps = dep_zapdeps(mysplit, mysplit2, myroot, use_binaries=use_binaries, trees=trees) mylist = flatten(myzaps) writemsg("myzaps: %s\n" % (myzaps), 1) writemsg("mylist: %s\n" % (mylist), 1) #remove duplicates mydict={} for x in mylist: mydict[x]=1 writemsg("mydict: %s\n" % (mydict), 1) return [1,mydict.keys()]

Rzhepish
()

Все.

Не вынесла душа поэта

Позора мелочных обид. (с) М.Ю.Лермонтов.

Восстану-ка я против мнений света. Но уже не с моими теориями, а с голыми фактами.

Эту ночь (и последующие несколько дней, скорее всего) я посвящаю тестам.

Сначала буду проводить их на генте, собранной с моими флагами оптимизации (не полностью соответствующими возможностям моего железа).

Потом поставлю федору 8. Проведу те же самые тесты на ней.

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

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

> вам не понять

Ну и что я не видел вывод сборки в консоль? Lunar собирал-пересобирал-надоело медитировать. В чем дзен? Или нужны вещества?

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