LINUX.ORG.RU

emerge и баг с "--backtrack=0"?

 ,


0

3

Решил дома подтянуть обновляшки. С работы зашел по ssh, обновил крупняк, оставил на закуску виртуалбокс. Смотрим:

# emerge -pv --update --newuse --deep --with-bdeps=y --backtrack=0 @world

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ~] app-emulation/virtualbox-additions-5.0.20::gentoo [5.0.16::gentoo] 0 KiB
[ebuild     U ~] app-emulation/virtualbox-modules-5.0.20::gentoo [5.0.16::gentoo] USE="-pax_kernel" 0 KiB
[ebuild     U ~] app-emulation/virtualbox-5.0.20::gentoo [5.0.16-r1::gentoo] USE="alsa opengl qt4 udev -doc -headless -java -libressl -lvm -pam -pulseaudio -python -sdk -vboxwebsrv -vnc" PYTHON_TARGETS="python2_7" 108 625 KiB
[ebuild     U ~] app-emulation/virtualbox-extpack-oracle-5.0.20.106931::gentoo [5.0.16.105871::gentoo] 16 037 KiB

Total: 4 packages (4 upgrades), Size of downloads: 124 661 KiB

Когда запустил - внезапно начало мержится не 4 пакета, а 24 (23 точнее:)). Не понял, какого Х оно мне не показало??? Хм, эту опцию (--backtrack=0) в свое время добавлял, она ускоряла отработку emerge -pv, убираем, смотрим:

# emerge -pv --update --newuse --deep --with-bdeps=y @world              

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U ~] app-emulation/virtualbox-additions-5.0.20::gentoo [5.0.16::gentoo] 0 KiB
[ebuild     U ~] app-emulation/virtualbox-modules-5.0.20::gentoo [5.0.16::gentoo] USE="-pax_kernel" 0 KiB
[ebuild  r  U  ] dev-libs/icu-57.1:0/57::gentoo [55.1:0/55::gentoo] USE="-debug -doc -examples -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild  rR    ] dev-qt/qtcore-5.5.1-r1:5::gentoo  USE="icu -debug -systemd {-test}" 0 KiB
[ebuild  rR    ] dev-db/sqlite-3.12.0:3::gentoo  USE="icu readline secure-delete -debug -doc -static-libs -tcl {-test} -tools" ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild  rR    ] dev-libs/boost-1.56.0-r1:0/1.56.0::gentoo  USE="icu nls threads -context -debug -doc -mpi -python -static-libs -tools" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7 python3_4 -python3_3" 0 KiB
[ebuild  rR    ] media-libs/libfreehand-0.1.1::gentoo  USE="-doc -static-libs" 0 KiB
[ebuild  rR    ] media-libs/libcdr-0.1.1::gentoo  USE="-doc -static-libs" 0 KiB
[ebuild  rR    ] app-text/libmspub-0.1.2::gentoo  USE="-doc -static-libs" 0 KiB
[ebuild  rR    ] dev-qt/qtcore-4.8.6-r2:4::gentoo  USE="exceptions glib iconv icu qt3support ssl (-aqua) -debug -pch" ABI_X86="32 (64) (-x32)" 52 214 KiB
[ebuild  rR    ] dev-libs/libxml2-2.9.3:2::gentoo  USE="icu lzma python readline -debug -examples -ipv6 -static-libs {-test}" ABI_X86="32 (64) (-x32)" PYTHON_TARGETS="python2_7 python3_4 -python3_3 (-python3_5)" 5 349 KiB
[ebuild  rR    ] media-libs/libvisio-0.1.5::gentoo  USE="-doc -static-libs {-test} -tools" 493 KiB
[ebuild  rR    ] app-text/libebook-0.1.2::gentoo  USE="-doc {-test}" 456 KiB
[ebuild  rR    ] media-libs/raptor-2.0.9:2::gentoo  USE="curl unicode -debug -json -static-libs" 1 747 KiB
[ebuild  r  U  ] dev-python/cffi-1.5.2:0/1.5.2::gentoo [1.2.1:0/1.2.1::gentoo] USE="-doc {-test%}" PYTHON_TARGETS="python2_7 python3_4 -python3_3 (-python3_5)" 380 KiB
[ebuild  rR    ] dev-python/cryptography-1.1.2::gentoo  USE="(-libressl) {-test}" PYTHON_TARGETS="python2_7 python3_4 (-pypy) -python3_3 (-python3_5)" 341 KiB
[ebuild  rR    ] media-libs/harfbuzz-1.1.3:0/0.9.18::gentoo  USE="cairo fontconfig glib graphite icu truetype -introspection -static-libs {-test}" ABI_X86="32 (64) (-x32)" 1 265 KiB
[ebuild  rR    ] net-nds/openldap-2.4.38-r2::gentoo  USE="icu minimal -berkdb -crypt -cxx -debug -experimental -gnutls -iodbc -ipv6 -kerberos -odbc -overlays -perl -samba -sasl (-selinux) -slp -smbkrb5passwd -ssl -syslog -tcpd" ABI_X86="(64) -32 (-x32)" 5 390 KiB
[ebuild  rR    ] www-client/firefox-38.8.0::gentoo  USE="dbus egl gmp-autoupdate hardened jemalloc3 jit minimal system-icu system-jpeg system-libvpx system-sqlite -bindist -custom-cflags -custom-optimization -debug -gstreamer -gstreamer-0 (-neon) (-pgo) -pulseaudio (-selinux) -startup-notification (-system-cairo) {-test} -wifi" LINGUAS="ru uk -af -ar -as -ast -be -bg -bn_BD -bn_IN -br -bs -ca -cs -cy -da -de -el -en_GB -en_ZA -eo -es_AR -es_CL -es_ES -es_MX -et -eu -fa -fi -fr -fy_NL -ga_IE -gd -gl -gu_IN -he -hi_IN -hr -hu -hy_AM -id -is -it -ja -kk -km -kn -ko -lt -lv -mai -mk -ml -mr -nb_NO -nl -nn_NO -or -pa_IN -pl -pt_BR -pt_PT -rm -ro -si -sk -sl -son -sq -sr -sv_SE -ta -te -th -tr -vi -xh -zh_CN -zh_TW" 0 KiB
[ebuild  rR    ] dev-qt/qtwebkit-4.8.6-r1:4::gentoo  USE="gstreamer icu jit (-aqua) -debug -exceptions -pch" ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild     U ~] app-emulation/virtualbox-5.0.20::gentoo [5.0.16-r1::gentoo] USE="alsa opengl qt4 udev -doc -headless -java -libressl -lvm -pam -pulseaudio -python -sdk -vboxwebsrv -vnc" PYTHON_TARGETS="python2_7" 108 625 KiB
[ebuild     U ~] app-emulation/virtualbox-extpack-oracle-5.0.20.106931::gentoo [5.0.16.105871::gentoo] 16 037 KiB
[ebuild  rR    ] app-office/libreoffice-5.1.2.2::gentoo  USE="branding dbus kde (-aqua) -bluetooth (-coinmp) -collada -cups -debug -eds (-firebird) -gltf -gnome -gstreamer -gtk (-gtk3) -java -jemalloc (-libressl) -mysql -odk -postgres (-telepathy) {-test} -vlc" LIBREOFFICE_EXTENSIONS="-nlpsolver -scripting-beanshell -scripting-javascript -wiki-publisher" PYTHON_SINGLE_TARGET="python3_4 -python2_7 (-python3_5)" PYTHON_TARGETS="python2_7 python3_4 (-python3_5)" 0 KiB

Total: 23 packages (6 upgrades, 17 reinstalls), Size of downloads: 192 291 KiB

The following packages are causing rebuilds:

  (dev-libs/icu-57.1:0/57::gentoo, ebuild scheduled for merge) causes rebuilds for:
    (net-nds/openldap-2.4.38-r2:0/0::gentoo, ebuild scheduled for merge)
    (media-libs/libcdr-0.1.1:0/0::gentoo, ebuild scheduled for merge)
    (media-libs/libvisio-0.1.5:0/0::gentoo, ebuild scheduled for merge)
    (dev-libs/boost-1.56.0-r1:0/1.56.0::gentoo, ebuild scheduled for merge)
    (www-client/firefox-38.8.0:0/0::gentoo, ebuild scheduled for merge)
    (app-office/libreoffice-5.1.2.2:0/0::gentoo, ebuild scheduled for merge)
    (dev-qt/qtcore-5.5.1-r1:5/5::gentoo, ebuild scheduled for merge)
    (app-text/libmspub-0.1.2:0/0::gentoo, ebuild scheduled for merge)
    (dev-db/sqlite-3.12.0:3/3::gentoo, ebuild scheduled for merge)
    (media-libs/harfbuzz-1.1.3:0/0.9.18::gentoo, ebuild scheduled for merge)
    (dev-libs/libxml2-2.9.3:2/2::gentoo, ebuild scheduled for merge)
    (media-libs/raptor-2.0.9:2/2::gentoo, ebuild scheduled for merge)
    (dev-qt/qtwebkit-4.8.6-r1:4/4::gentoo, ebuild scheduled for merge)
    (app-text/libebook-0.1.2:0/0::gentoo, ebuild scheduled for merge)
    (media-libs/libfreehand-0.1.1:0/0::gentoo, ebuild scheduled for merge)
    (dev-qt/qtcore-4.8.6-r2:4/4::gentoo, ebuild scheduled for merge)
  (dev-python/cffi-1.5.2:0/1.5.2::gentoo, ebuild scheduled for merge) causes rebuilds for:
    (dev-python/cryptography-1.1.2:0/0::gentoo, ebuild scheduled for merge)

Получается с этой опцией не просчитывается то, что будет ребилдится? Cast Pinkbyte

★★★★★

       --backtrack=COUNT
              Specifies an integer number of times to backtrack if dependency calculation fails due to a conflict or an unsatisfied dependency (default: ´3´).

Внезапно, правда? :-)

Далее мнение разработчика Gentoo, который ничего не смыслит в внутренностях portage:

А теперь подумай в какую категорию отнесены ребилды. Правильно - в конфликты(разрешаемые). С --backtrack=0 они просто не просчитываются.

Выиграл в скорости расчета зависимостей - проиграл в консистентности.

Пили багрепорт, но что-то мне подсказывает(особенно на фоне того, что часто УВЕЛИЧИВАЮТ --backtrack) что максимум что будет - добавят warning при использовании --backtrack ниже какого-то минимума(или дефолта).

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

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

Я приблизительно понял, что делает эта опция. Скорее всего, она так и должна работать, и я не уверен, что оно увидит конфликт/необходимость ребилда (т.к. «0», просто дальше не просчитает). Убрал из своего скрипта обновления, уже 1 раз натыкался, но чего-то забил, и не разобрался сразу.

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

Какой захочешь. В интернетах встречал рекомендацию «100», у меня как-то раз ста не хватило, а с 200 прошло. Но эта опция в стандартных ситуациях (без всяких ghc и вагона хаскелл-пакетов) не особо нужна.

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

Надо глянуть в исходники, может есть какое-то ограничение, иначе - ограничение только от размера переменной

В perl-cleaner используют принудительно --backtrack=30

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.