LINUX.ORG.RU

Тупой emerge --metadata

 , ,


1

2

Внезапно заметил, что eix иногда не может найти пакеты из оверлеев. Опытным путём установил, что он тягает инфу о пакетах из кэша portage. А найти пакеты не может, потому что тупорылый emerge --metadata не кэширует оверлеи - просто создаёт для каждого sqlite-базы в 4 Кб. Если сделать emerge -pv <пакет из оверлея>, базы начинают расти в размерах.

Как вынудить emerge --metadata работать нормально, а не на отвяжись?

Если вместо emerge --metadata делать emerge --regen, то всё нормально.

it-nativa
() автор топика
Ответ на: комментарий от science

А можно вопрос: зачем true в конце? Мой вариант:

# cat /etc/eix-sync.conf 
# Sync overlays
*

# Transfer metadata cache if FEATURES="metadata-transfer" is enabled
@emerge --metadata

# Regenerate overlay metadata
@emerge --regen --quiet

FEATURES="metadata-transfer" включил для кеша в SQLite http://gentoo-en.vfose.ru/wiki/Portage_SQLite_Cache

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

«metadata-transfer» включил для кеша в SQLite

а зачем, ты пользуешься старее чем sys-apps/portage-2.1.6.4 ?

у меня тоже кеш в sqlite, всё работает, а когда стоял metadata-transfer - очень долго синкался, невероятно долго.

Зачем там true не знаю, факт в том, что лично у меня - работает только так.

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

а зачем, ты пользуешься старее чем sys-apps/portage-2.1.6.4 ?

Новее, конечно. Видимо, мануал по SQLite давно протух. А можно просветить слоупока, как это можно делать без metadata-transfer?

Зачем там true не знаю, факт в том, что лично у меня - работает только так.

Странно. Какая-то магия. У меня вот без тру работает...

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)
Ответ на: комментарий от science

а зачем нужен metadata-transfer?

man eix:

The following cache methods are available:
...

              sqlite This is an extremely fast cache method if you are using portage with the sqlite  backend,
                     see http://en.gentoo-wiki.com/wiki/Portage_SQLite_Cache (originally this was described in
                     http://gentoo-wiki.com/TIP_speed_up_portage_with_sqlite which might be  still  accessible
                     at  http://gentoo-wiki.info/TIP_speed_up_portage_with_sqlite).   Note that in contrast to
                     the default metadata cache method you must use emerge --metadata  before  you  call  eix-
                     update with this method.
man emerge:
       --metadata
              Transfers metadata cache from ${PORTDIR}/metadata/md5-cache/ to /var/cache/edb/dep/ as  is  nor‐
              mally  done  on the tail end of an rsync update using emerge --sync.  This process populates the
              cache database that portage uses for pre-parsed lookups of package data.  It does  not  populate
              cache  for the overlays listed in PORTDIR_OVERLAY.  In order to generate cache for overlays, use
              --regen.  In versions of portage >=2.1.5 the --metadata action is totally unnecessary unless the
              user has enabled FEATURES="metadata-transfer" in make.conf(5).
man make.conf
              metadata-transfer
                     Automatically  perform  a  metadata transfer when `emerge --sync` is run.  In versions of
                     portage >=2.1.5, this feature is disabled by default. When metadata-transfer is disabled,
                     metadata  cache  from  the ${PORTDIR}/metadata/md5-cache/ directory will be used directly
                     (if available).
И да, ранее ты чушь спорол про версию портажа:

Кроме того, если вы используете версию Portage старше 2.1.6.4 необходимо добавить metadata-transfer в опцию FEATURES

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

это всё я читал, ок. Не пойму одного, почему у меня:

app-portage/eix-0.29.3 "... sqlite ..." 
/etc/eixrc/01-eixrc
PORTDIR_CACHE_METHOD='sqlite'
OVERLAY_CACHE_METHOD='parse'
/etc/make.conf
FEATURES="${FEATURES} parallel-fetch distcc"

и всё работает, ни на что не ругается? (думаешь не работает на самом деле?; но ведь с sqlite куда быстрее, это заметно, чем без него рассчитывает зависимости)

science ★★☆
()
Последнее исправление: science (всего исправлений: 3)
Ответ на: комментарий от science

думаешь не работает на самом деле?

Проверь. Вот что у меня:

# ls -la /var/cache/edb/dep/usr/
итого 47466
drwxrwsr-x 4 root portage      128 авг.  17 01:29 .
drwxrwsr-x 4 root portage       96 марта 30 22:22 ..
drwxrwsr-x 3 root portage      104 авг.   2 23:54 local
drwxrwsr-x 2 root portage       48 марта 30 22:22 portage
-rw-rw-r-- 1 root portage 48555008 авг.  17 01:29 portage.sqlite
Видно, база обновлялась сегодня. А как еще можно проверить, что работает?

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

Может я не прав, и FEATURES=«metadata-transter» само запускает emerge --metadata во время emerge --sync? Поскольку eix тоже запускает emerge --sync, то команда emerge --metadata лишняя?

iVS ★★★★★
()
Ответ на: комментарий от iVS
total 47124
drwxrwsr-x 4 root portage     4096 Aug 15 11:08 .
drwxrwsr-x 4 root portage     4096 May 16 23:53 ..
drwxrwsr-x 3 root portage     4096 Aug 10 00:07 local
drwxrwsr-x 2 root portage     4096 May 16 23:53 portage
-rw-rw-r-- 1 root portage 48233472 Aug 15 11:08 portage.sqlite
science ★★☆
()
Ответ на: комментарий от science

Действительно, emerge --metadata - лишний. У тебя точно не стоит FEATURES=«metadata-transfer»? Вот жду, как дерево портежа изменится, чтобы глянуть, обновляется база или нет.

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

Теперь и у меня так же. Но лог eix-sync говорит, что emerge --metadata все равно запускается. Видимо, так необходимо. Заодно я разобрался с OVERLAY_CACHE_METHOD: eix из unstable теперь корректно работает с

OVERLAY_CACHE_METHOD="sqlite"
Раньше он не показывал номера оверлеев. Еще разобрался с eix-remote и сделал конфиг, чтобы брал базу из http://dev.gentooexperimental.org:
# cat /etc/portage/env/app-portage/eix 
post_src_configure() {
        # Default remote path 1 for eix-remote
        REMOTE_PATH="http://dev.gentooexperimental.org/eix_cache/eix-caches.tbz2"
        econf --with-remote-path1=${REMOTE_PATH}
}
Выдохнул...

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 2)
Ответ на: комментарий от science

Зачем там true не знаю, факт в том, что лично у меня - работает только так.

Пагубная привычка ставить true в конце, иначе максимум что получишь - сообщение об ошибке. Из кода eix-sync:

WarnOrDie() {
        [ -z "${FATAL_HOOKS:++}" ] || die "${@}"
        ewarn "${@}"
}

DoExecute() {
        for curr_cmd
        do      set +f
                eval "${curr_cmd}" || WarnOrDie "`eval_gettext \
                        'Something went wrong with ${curr_cmd}'`"
        done
}

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

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

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