The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
FreeBSD 9.0 проблема pkgdb -L, !*! westvovik, 15-Окт-12, 20:27  [смотреть все]
после обновления портов через

portsnap fetch update
portmaster -ad

Делаю pkgdb -L

выдает undefined method `with_pkgng?' for main:Object

Раньше все работало

  • FreeBSD 9.0 проблема pkgdb -L, !*! lavr, 00:28 , 16-Окт-12 (1)
    > после обновления портов через
    > portsnap fetch update

    после верхнего следует обязательно выполнять пункт:

    # less /usr/ports/UPDATING

    > portmaster -ad

    и сразу станет понятно что -ad - просто так без подготовки выполнять опасно

    > Делаю pkgdb -L

    каша какая, и portmaster и portupgrade

    > выдает undefined method `with_pkgng?' for main:Object
    > Раньше все работало

    • FreeBSD 9.0 проблема pkgdb -L, !*! westvovik, 12:28 , 16-Окт-12 (2)
      >> после обновления портов через
      >> portsnap fetch update
      > после верхнего следует обязательно выполнять пункт:
      > # less /usr/ports/UPDATING
      >> portmaster -ad
      > и сразу станет понятно что -ad - просто так без подготовки выполнять
      > опасно
      >> Делаю pkgdb -L
      > каша какая, и portmaster и portupgrade

      А причем тут portupgrade?
      pkgdb - вроде как отдельная утилита

      >> выдает undefined method `with_pkgng?' for main:Object
      >> Раньше все работало

      • FreeBSD 9.0 проблема pkgdb -L, !*! lavr, 12:41 , 16-Окт-12 (3)
        >[оверквотинг удален]
        >>> portsnap fetch update
        >> после верхнего следует обязательно выполнять пункт:
        >> # less /usr/ports/UPDATING
        >>> portmaster -ad
        >> и сразу станет понятно что -ad - просто так без подготовки выполнять
        >> опасно
        >>> Делаю pkgdb -L
        >> каша какая, и portmaster и portupgrade
        > А причем тут portupgrade?
        > pkgdb - вроде как отдельная утилита

        отдельная от чего?

        # pkg_info -W /usr/local/bin/pkgdb

        >>> выдает undefined method `with_pkgng?' for main:Object
        >>> Раньше все работало

        потому что ОПАСНО апгрейдить ВСЕ и "бездумно": portmaster -ad

        прим: ранее обновлялся portupgrade на использование pkg (pkgng)?

        • FreeBSD 9.0 проблема pkgdb -L, !*! westvovik, 15:40 , 16-Окт-12 (4)
          >[оверквотинг удален]
          >>>> Делаю pkgdb -L
          >>> каша какая, и portmaster и portupgrade
          >> А причем тут portupgrade?
          >> pkgdb - вроде как отдельная утилита
          > отдельная от чего?
          > # pkg_info -W /usr/local/bin/pkgdb
          >>>> выдает undefined method `with_pkgng?' for main:Object
          >>>> Раньше все работало
          > потому что ОПАСНО апгрейдить ВСЕ и "бездумно": portmaster -ad
          > прим: ранее обновлялся portupgrade на использование pkg (pkgng)?

          Охх прочитал инфу о переходе на pkg2ng
          сделал все как написано в less /usr/ports/UPDATING
          pkg2ng переделал базу пакетов

          далее вот что вылезло куча пакетов

          pkg_info: the package info for package 'GeoIP-1.4.8_3' is corrupt
          pkg_info: the package info for package 'apache22-2.2.22_8' is corrupt
          pkg_info: the package info for package 'apr-1.4.6.1.4.1_1' is corrupt
          pkg_info: the package info for package 'autoconf-2.69' is corrupt
          pkg_info: the package info for package 'automake-1.12.4' is corrupt
          pkg_info: the package info for package 'bash-4.2.37' is corrupt
          pkg_info: the package info for package 'bison-2.5.1,1' is corrupt
          pkg_info: the package info for package 'ca_root_nss-3.13.6' is corrupt
          pkg_info: the package info for package 'cmake-2.8.9' is corrupt
          pkg_info: the package info for package 'cmake-modules-2.8.9' is corrupt
          pkg_info: the package info for package 'curl-7.24.0_1' is corrupt
          pkg_info: the package info for package 'cvsps-2.1_1' is corrupt
          pkg_info: the package info for package 'db42-4.2.52_5' is corrupt
          pkg_info: the package info for package 'dbmail-3.0.2_4' is corrupt
          pkg_info: the package info for package 'exim-mysql-4.80' is corrupt
          pkg_info: the package info for package 'expat-2.0.1_2' is corrupt
          pkg_info: the package info for package 'gdbm-1.9.1' is corrupt
          pkg_info: the package info for package 'gettext-0.18.1.1' is corrupt
          pkg_info: the package info for package 'ghostscript9-nox11-9.06_1' is corrupt
          pkg_info: the package info for package 'git-1.7.12.3' is corrupt
          pkg_info: the package info for package 'glproto-1.4.15' is corrupt
          pkg_info: the package info for package 'gmake-3.82_1' is corrupt
          pkg_info: the package info for package 'help2man-1.40.12' is corrupt
          pkg_info: the package info for package 'icu-4.8.1.1_1' is corrupt
          pkg_info: the package info for package 'lcms2-2.4' is corrupt
          pkg_info: the package info for package 'libGL-7.6.1_2' is corrupt
          pkg_info: the package info for package 'libgcrypt-1.5.0_1' is corrupt
          pkg_info: the package info for package 'libiconv-1.14' is corrupt
          ...
          и т.д.

          Подскажите что можно сделать, а начинающий в этом деле так что сильно не ругайтесь :)

          • FreeBSD 9.0 проблема pkgdb -L, !*! lavr, 20:24 , 16-Окт-12 (5) +3
            >>[оверквотинг удален]
            > Охх прочитал инфу о переходе на pkg2ng
            > сделал все как написано в less /usr/ports/UPDATING
            > pkg2ng переделал базу пакетов

            1. В системе FreeBSD существуют понятия:

            - порты - это дерево с Makefile'ами, описательной частью - pkg-descr,
            со списком того что будет установлено - pkg-plist, патчами в директории files
            Каждый порт в отдельности, представляет собой проект СБОРКИ объекта из исходных
            текстов (sources).
            Сборка осуществляется командой make. Порт может зависеть от другого ПО, те от
            других портов и тд и тп рекурсивно. Это означает для сборки какого-то порта, прежде
            будут собраны и установлены зависимости, которые нужны для СБОРКИ или РАБОТЫ
            требуемого порта.

            - пакеты - это уже СОБРАННЫЕ порты, могут иметь зависимости необходимые для
            работы требуемого пакеты, понятно что если существуют зависимости, они должны
            быть установлены

            2. Система пакетов во FreeBSD старая и в настоящее время не соответствует
            современным требованиям, предъявляемым к системам пакетов, общее название
            pkg_install (СТАРАЯ СИСТЕМА ПАКЕТОВ):

            - состоит из утилит pkg_info, pkg_add, pkg_delete, pkg_create, pkg_version,
            pkg_update

            - НОВАЯ СИСТЕМА пакетов, общее название pkgng (package new generation),
            утилита pkg:

            Commands supported:
                    add            Registers a package and installs it on the system
                    audit          Reports vulnerable packages
                    autoremove     Removes orphan packages
                    backup         Backs-up and restores the local package database
                    check          Checks for missing dependencies and database consistency
                    clean          Cleans old packages from the cache
                    create         Creates software package distributions
                    delete         Deletes packages from the database and the system
                    fetch          Fetches packages from a remote repository
                    help           Displays help information
                    info           Displays information about installed packages
                    install        Installs packages from remote package repositories
                    query          Queries information about installed packages
                    register       Registers a package into the local database
                    remove         Deletes packages from the database and the system
                    repo           Creates a package repository catalogue
                    rquery         Queries information in repository catalogues
                    search         Performs a search of package repository catalogues
                    set            Modifies information about packages in the local database
                    shell          Opens a debug shell
                    shlib          Displays which packages link against a specific shared library
                    stats          Displays package database statistics
                    update         Updates package repository catalogues
                    updating       Displays UPDATING information for a package
                    upgrade        Performs upgrades of packaged software distributions
                    version        Displays the versions of installed packages
                    which          Displays which package installed a specific file

            Старая и новая системы пакетов НЕСОВМЕСТИМЫ, необходимо пользоваться какой-то одной
            и соответствующими командами, ибо формат базы пакетов разный и тд и  тп

            Итого, общее представление теперь есть.

            Далее необходимо решить:

            - либо вы будете пользоваться старой системой пакетов и соответствующими
            утилитами: pkg_add, pkg_info и тд и тп

            - либо новой системой пакетов и утилитой pkg

            # pkg info
            # pkg search
            # pkg rquery
            # pkg query
            # pkg install/add
            # pkg delete
            ...

            Если мы переходим на новую систему пакетов, нам необходимо преобразовать старый
            формат (дерево установленных портов и паетов) - /var/db/pkg/name
            в новый, который будет хранится в базе sqlite:

            # ls -la /var/db/pkg/*.sqlite
            -rw-r--r--  1 root  wheel   2825216 Oct 11 13:04 /var/db/pkg/local.sqlite
            -rw-r--r--  1 root  wheel  82740224 Sep 10 13:03 /var/db/pkg/repo.sqlite
            #

            где local.sqlite - база установленных пакетов и портов в новом формате (pkgng)
            repo.sqlite - данные с удаленного репозитория

            Что мы делаем если у нас все в старом формате, а мы решили перейти на новый PKGNG,

            1) делаем копию старого формата, вручную, на всякий случай (своя копия всегда надежна и
            понятна):

            # cd /var/db/pkg
            # tar zcvf /var/tmp/oldpkg_db.tgz .

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

            2) переводим старый формат /var/db/pkg/name в новый, используя утилиту pkg2ng

            # pkg2ng

            которая создаст архив старой базы (мы ранее создали вручную) и переведет все
            в новый формат.
            Теперь, мы не можем использовать pkg_info!!!
            Вместо этого мы будем использовать pkg:

            # pkg info
            # pkg install
            # pkg delete

            > далее вот что вылезло куча пакетов
            > pkg_info: the package info for package 'GeoIP-1.4.8_3' is corrupt
            > pkg_info: the package info for package 'apache22-2.2.22_8' is corrupt

            ...
            > ...
            > и т.д.

            вы перешли на НОВУЮ систему пакетов, а использовали утилиту pkg_info от
            старого пакетного менеджера, вместо:

            # pkg info
            # pkg info | grep bash (например)

            Но и это не все, как уже было сказано, есть:
            - система ПАКЕТОВ
            - система ПОРТОВ

            Утилита для работы с пакетами: pkg

            а утилиты для работы с портами:
            - portmaster
            - portupgrade
            - и другие утилиты для работы с портами из портов (по написанию масло масляное, но
            по сути верно)

            Так вот утилиты portmaster, portupgrade - либо нужно патчить для того чтобы они
            регистрировали установленные порты в базе пакетов в НОВОМ формате, либо установить
            более свежие, которые уже включают эти патчи:

            # less /usr/ports/UPDATING
            ...
            20121015:
              AFFECTS: users of ports-mgmt/portmaster
              AUTHOR: bdrewery@FreeBSD.org

              Portmaster now support pkgng. To use pkgng, enable the patch in the port,
              enable pkgng in your make.conf, and convert your existing /var/db/pkg
              database. Also see UPDATING entry 20121010 if you are on a recent CURRENT
              and do not want to use pkg.

              # make -C /usr/ports/ports-mgmt/portmaster config build deinstall install clean
              # echo 'WITH_PKGNG=yes' >> /etc/make.conf
              # pkg2ng

            20121015:
              AFFECTS: users of ports-mgmt/portupgrade
              AUTHOR: bdrewery@FreeBSD.org

              Portupgrade now support pkgng. To use pkgng, enable it in your make.conf,
              and convert your databases.

              # echo 'WITH_PKGNG=yes' >> /etc/make.conf
              # pkg2ng
              # pkgdb -fu
            ...

            После того как мы проапгрейдим portmaster или portupgrade для использования новой
            системы пакетов, как указано выше, мы должны в файл /etc/make.conf внести запись:

            /etc/make.conf
            ...
            WITH_PKGNG=yes
            ...

            для portupgrade после выполнения pkg2ng, выполнить: pkgdb -fu

            И это не все, потому как если вы давно не пользовались портами и регулярно НЕ ЧИТАЕТЕ
            списки рассылки freebsd, форум freebsd и UPDATING, то вероятно НЕ ЗНАЕТЕ что
            летом, порты перевели на использование нового фреймворка OPTIONSNG:

            http://wiki.freebsd.org/Ports/Options/OptionsNG

            что это? Старые опции в портах: WITH_NAME, WITHOUT_NAME - неудобны в использовании
            и были заменены, стало очень удобно использовать новые опции для использовании
            с порт-менеджерами и просто для сборки портов, например в /etc/make.conf:

            ...
            #-- global ports options
            #-- batch /dialog - noninteractive mode for make ports
            #BATCH=yes
            #NO_DIALOG=yes
            #-- don't install port docs, examples
            #NOPORTDOCS=yes
            #NOPORTEXAMPLES=yes
            #-- make without debug info/flags
            #WITHOUT_DEBUG=yes
            #-- Intel KMS driver with new xorg 1.10...
            #WITH_KMS=yes
            #WITH_NEW_XORG=yes
            #-- use PKGNG
            WITH_PKGNG=yes
            #-- global optionsng for all
            #OPTIONS_UNSET=NLS IPV6 VDPAU
            #OPTIONS_UNSET=DOCS DEBUG DEBUGGING

            #-- individual ports optionsng
            arj_UNSET+=DOCS

            p7zip_SET+=MODULES
            p7zip_UNSET+=MINIMAL

            unrar_SET+=OPENSSL_AES
            unrar-iconv_SET+=OPENSSL_AES

            perl5.14_SET+=USE_PERL PERL_64BITINT PTHREAD
            perl5.14_UNSET+=DEBUGGING GDBM PERL_MALLOC THREADS MULTIPLICITY SITECUSTOMIZE

            python27_SET+=NLS PYMALLOC THREADS UCS4
            python27_UNSET+=IPV6 EXAMPLES FPECTL PTH SEM UCS2

            m4_UNSET+=LIBSIGSEGV
            bison_SET+=NLS
            libcheck_UNSET+=DOCS EXAMPLES
            libiconv_SET+=EXTRA_ENCODINGS
            pcre_SET+=JIT
            ...

            Важное, если мы ранее собирали что-то из портов со СВОИМИ опциями, они должны
            были сохранится в /var/db/ports/name/options

            Для работы со свежими портами, необходимо старые опции сконвертировать в новый
            формат:

            # /usr/ports/Tools/scripts/options2ng.sh -p

            Можно считать что в целом, почти все, за исключением важных моментов:

            pkg-config был заменен на pkgconf и тд и тп - читайте что необходимо было
            сделать и тому подобное...

            # less /usr/ports/UPDATING

            примечание: лучше выбрать какой-то один менеджер портов:

            - либо portmaster
            - либо portupgrade
            - либо другой из портов с поддержкой pkgng

            чтобы не запутаться и лучше хорошо знать и иметь опыт с одним, чем получить кашу
            работая сразу с несколькими.
            Для работы с portmaster, нужно в его конфиге задать сохранение shared libraries,
            тогда с обновлениями проблем не будет.

            > Подскажите что можно сделать, а начинающий в этом деле так что сильно
            > не ругайтесь :)

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

            Все понятно расписано?

            • FreeBSD 9.0 проблема pkgdb -L, !*! DeadLoco, 02:26 , 17-Окт-12 (6)
              >>>[оверквотинг удален]

              Такие долготерпение и скрупулезность заслуживают прижизненных почестей.

              • FreeBSD 9.0 проблема pkgdb -L, !*! westvovik, 16:45 , 17-Окт-12 (7)
                Да, огромное спасибо за ваш развернутый ответ, нынче в интернете не много людей которые могут поделиться знаниями!
                • FreeBSD 9.0 проблема pkgdb -L, !*! lavr, 19:12 , 17-Окт-12 (10)
                  > Да, огромное спасибо за ваш развернутый ответ, нынче в интернете не много
                  > людей которые могут поделиться знаниями!

                  ну это не правда, ибо многое зависит от:

                  - у одних это потребность чтобы идти дальше
                  - есть готовые поделиться, но они либо сильно заняты, либо не хотят писать на
                  детском уровне, либо делают это в своих блогах, журналах и твиттерах
                  - и конечно[отдельный пункт ибо психологический(на мой взгляд)], нужно правильно ставить
                  вопросы и правильно спрашивать, ибо форум не для фундаментальных знаний, а для пинка под
                  зад в правильном направлении

                  и еще куча мелких но, вида: устал - потом, надоело по сто раз одно и тоже,
                  не маленькие пусть изучают, нечего пальцы гнуть, мы не обязаны делать чужую
                  работу и тд и тп

              • FreeBSD 9.0 проблема pkgdb -L, !*! PavelR, 18:18 , 17-Окт-12 (8)
                >>>>[оверквотинг удален]
                > Такие долготерпение и скрупулезность заслуживают прижизненных почестей.

                Узнал много нового. Этот ответ тянет на отдельную статью для пользующихся FreeBSD нерегулярно.

                • FreeBSD 9.0 проблема pkgdb -L, !*! lavr, 19:04 , 17-Окт-12 (9)
                  >>>>>[оверквотинг удален]
                  >> Такие долготерпение и скрупулезность заслуживают прижизненных почестей.
                  > Узнал много нового. Этот ответ тянет на отдельную статью для пользующихся FreeBSD
                  > нерегулярно.

                  да перестаньте...

                  А статьи будут, болванки уже готовы, попробую сделать в стиле FreeBSD Handbook,
                  но с небольшими добавлениями в css для читабельности:

                  - portmaster - работа с портами с использованием optionsng и pkgng
                  - работа с новым пакетным менеджером pkgng (переработанная статья и в html)
                  - jails с виртуальным сетевым стеком VIMAGE (тут придется освоить минимальное
                  рисование чтобы было понятно что из себя представляет epair или создание моста для
                  jail'ов на базе netgraph)
                  - короткая справка по обновлению src и ports в FreeBSD используя svn

                  ps. как всегда хотелось бы коротко, но у меня получается в стиле: расписано все как
                  для неориентирующихся




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру