FreeBSD and portupgrade — «HASH: Out of overflow pages. Increase page size error»

Последнее время только то и делаю что разгребаю какието досадные баги разных ОС … То CentOS на ровном месте взбрыкнет, то FreeBSD …. Но фряху на этом поле не переплюнуть, эта система заточена под одну статичную конфигурацию и полную заморозку в вакууме после настройки и проверки. Динамика, обновления системы, обновление пакетов и их зависимостей — нет … не слышали про такое 🙂 Но то вопрос отдельной статьи, которую я обязательно напишу чуть позже, после миграции на Debian последнего сервера с фрёй в моем подчинении …. а пока продолжаем жрать кактус. Ой, ну тоесть админить фряху!
Казалось бы, банальнейшая вещь — обновить пакетик vim-lite, но не тут то было!

root@gw:~# portupgrade vim-lite
[Reading data from pkg(8) ... - 314 packages found - done]
[Updating the portsdb <format:dbm_hash> in /usr/ports ... - 24506 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000.........13000.........14000.........15000.........16000.........17000.........18000.........19000.........20000.........21000.........22000.........23000.........24000..... ....HASH: Out of overflow pages.  Increase page size
 error] Remove and try again.
[Updating the portsdb <format:dbm_hash> in /usr/ports ... - 24506 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000.........13000.........14000.........15000.........16000.........17000.........18000.........19000.........20000.........21000.........22000.........23000.........24000..... ....HASH: Out of overflow pages.  Increase page size
 error] Remove and try again.
[Updating the portsdb <format:dbm_hash> in /usr/ports ... - 24506 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000.........13000.........14000.........15000.........16000.........17000.........18000.........19000.........20000.........21000.........22000.........23000.........24000..... ....HASH: Out of overflow pages.  Increase page size
 error] Remove and try again.
[Updating the portsdb <format:dbm_hash> in /usr/ports ... - 24506 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000...^C
Interrupted.
^C
Interrupted.
root@gw:~#

После поверхностного гугления стало ясно что проблема в том что ruby версии 2 не всегда корректно работает с ruby19-bdb5, а именно эта версия ruby-bdb у меня установлена:

root@gw:~#
pkg version -v |grep ruby
ruby-2.0.0.598,1                   <   needs updating (index has 2.0.0.598_1,1)
ruby19-bdb5-0.6.6_4                =   up-to-date with index
root@gw:~#

Давайте исправим руками то что с легкостью должен был сделать нормальный пакетный менеджер …

Сначала соберем новую версию ruby-bdb:

root@gw:~# cd /usr/ports/databases/ruby-bdb/
root@gw:/usr/ports/databases/ruby-bdb# make install clean

Теперь удалим старую версию:

root@gw:~# pkg delete ruby19-bdb5-0.6.6_4
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 2 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
        ruby19-bdb5-0.6.6_4
        portupgrade-2.4.13_1,2

The operation will free 0 MiB.

Proceed with deinstalling packages? [y/N]: y
[1/2] Deinstalling portupgrade-2.4.13_1,2...
[1/2] Deleting files for portupgrade-2.4.13_1,2: 100%
[2/2] Deinstalling ruby19-bdb5-0.6.6_4...
[2/2] Deleting files for ruby19-bdb5-0.6.6_4: 100%
root@gw:~#

Предложило удалить и portupgrade, да не вопрос! А вопрос в другом, почему при обновлении ruby не предложило обновить ruby-bdb и пересобрать portupgrade. FreeBSD с зависимостями пакетов за многие годы так работать и не научилась 🙁 И это несмотря на многочисленную вонь пользователей по этому поводу ….
На данный момент у нас ситуация с ruby обстоит так:

root@gw:~# pkg version -v |grep ruby
ruby-2.0.0.598,1                   <   needs updating (index has 2.0.0.598_1,1)
ruby20-bdb5-0.6.6_4                =   up-to-date with index
root@gw:~#

Установим portupgrade, он же удалился, помните???

root@gw:~# cd /usr/ports/ports-mgmt/portupgrade
root@gw:/usr/ports/ports-mgmt/portupgrade# make install clean

А теперь опробуем portupgrade:

root@gw:~# portupgrade vim-lite

Все отлично отработало!

P.S. На этот сервер давно просится Debian, к сожалению с FreeBSD много хлопот 🙁 Но там еще и проблемка с мамкой есть, так что при обновлении мамки обновлю и ОС. Пока терпим капризы чертенка 🙂

    • evp
    • Февраль 24th, 2015 5:29пп

    +100
    Хорошая статья! Долго искал исправление ошибки.
    Выполнение помогало не долго.
    # cd /usr/ports && make fetchindex

  1. Трэкбэков пока нет.

Why ask?