CONTENTS


Lastmodified 2017-02-09 (木) 10:21:18


db48-4.8.30.0_2

Checking for packages with security vulnerabilities:
db48-4.8.30.0_2: Tag: expiration_date Value: 2018-04-30 p5-Net-SMTP-SSL-1.04: Tag: expiration_date Value: 2017-03-31
db48-4.8.30.0_2: Tag: deprecated Value: Please migrate to db5 or db6, make sure that bitcoin and siblings moved to
another database or version by then p5-Net-SMTP-SSL-1.04:  Tag: deprecated Value: Deprecated by upstream, use Net::SMTP instead

https://forums.freebsd.org/threads/59309/

# pkg version -v |grep db
db5-5.3.28_6                       =   up-to-date with index
dbus-1.10.14_2                     =   up-to-date with index
dbus-glib-0.104                    =   up-to-date with index
gdbm-1.12                          =   up-to-date with index
php56-dba-5.6.30                   =   up-to-date with index
php56-odbc-5.6.30                  =   up-to-date with index
php56-pdo_dblib-5.6.30             =   up-to-date with index
php56-pdo_odbc-5.6.30              =   up-to-date with index
ruby22-bdb-0.6.6_5                 =   up-to-date with index
# pkg info -r db5
db5-5.3.28_6:
       ruby22-bdb-0.6.6_5
       p5-BerkeleyDB-0.55_1
       apr-1.5.2.1.5.4_2

https://wiki.freebsd.org/Ports/BerkeleyDBCleanup

概要

再び:アプリケーションがトランザクション・データベースのためのBerkeley DBを使用している場合、トランザクション・ログ・ファイルを使用した場合、すなわち、あなたがしなければならない使用する古いそれが破損している場合には、そのログからデータベースを回復するためにBerkeley DBのツールやアプリケーションを。ログは通常、あるBerkeley DBバージョンと次のBerkeley DBバージョンとの間で互換性がなく、新しいツールは古いBerkeley DBバージョンによって書き込まれたログを読み取ることができません。

アップグレードプロセスは次のとおりです。

  1. ALL:すべてのアプリケーションインスタンス(プロセス)を正常にシャットダウンする
  2. トランザクション・データベース(書き込むものに対してのみ。*ログファイル):すべてのデータベースに整合性があることをそれに確認し、必要に応じて回復を実行します。アプリケーションがオプションを提供しない場合は、dbXX_recover(XXはBerkeley DBバージョンのヒントです)とそれを実現するdb_recover-XXユーティリティのバージョンがあります。アプリケーションがされていることを確認していないあなたはdbXX_recoverまたは同様のツールを実行しながら実行しています。
  3. ALL:バックアップデータベース(* .DBファイル)、および存在する場合:環境(__db *。ファイル)、ログ*。ファイル
  4. ALL:アプリケーションが「テキストへのデータベースダンプ」のようなユーティリティを提供する場合、それを使用して結果をバックアップします。そうでなければ、db * _dump *ユーティリティを使用することができます(名前にアスタリスク(星)を書いています)。
  5. Berkeley DB環境(__db。*ファイル)を使用するデータベースの場合のみ:データベース環境(__db。*ファイル、およびそれらのみ!)を削除すると、アプリケーションは通常、起動時に再作成します
  6. ALL:古いBerkeley DBバージョンをインストールしたままにし、新しいBerkeley DBバージョンをインストールします(ライセンス条件に応じて、db5またはdb6にアップグレードするかどうかを選択します)。
  7. ALL:新しいBerkeley DBバージョンを使用するようにアプリケーションを再構築するには、/etc/make.confにWITH_BDB_VER = 5またはWITH_BDB_VER = 6を設定するか、uniquename_WITH_BDB_VER = 5(uniquenameはポートのUNIQUENAMEを指定します。たとえばbogofilter_WITH_BDB_VER = 6)。/usr/ports/Tools/scripts/BDB-upgrade-helper.shスクリプトを使用すると、削除予定の古いBerkeley DBのバージョンに依存するアプリケーションを新しいバージョンに自動的にアップグレードしてから、提供することができます古いBerkeley DBパッケージを削除してください。注:db4.8の使用を主張するいくつかのポートがあります。そのため、db5(またはdb6)を使用するほとんどのポート、およびdb48を使用するポートがほとんどです。これは現在検討中であり、作業中です。
  8. チェック:データベースをダンプする必要があった場合(上記の警告やパフォーマンスについての互換性については)、元のデータベースファイルを安全な場所に移動し(まだ削除しないでください)、データベースをリロードしてくださいダンプから。アプリケーションの機能を使用するか、それがない場合は、新しいバージョンのdb_load *ユーティリティを使用してください。
  9. ALL:アプリケーションの再起動
  10. ALL:最後に、古いBerkeley DBバージョンを必要とするアプリケーションがすべてアップグレードされ、古いBerkeley DBバージョンのツールがデータベースを回復する必要がないと確信できる場合は、古いBerkeley DBバージョンを削除できます。
# locate .DB
# locate db5
  /usr/ports/databases/db5
portinstall databases/db5

/etc/make.conf に

WITH_BDB_VER=5

/usr/ports/Tools/scripts/BDB-upgrade-helper.sh

# pkg info -r db5
db5-5.3.28_6:
       py27-bsddb-2.7.13_5
       apr-1.5.2.1.5.4_2
       rpm4-4.12.0.1_4
       ruby22-bdb-0.6.6_5
       ruby23-bdb-0.6.6_5

#

#

# cat /usr/ports/Tools/scripts/BDB-upgrade-helper.sh
#!/bin/sh
# $Id$
# ports/Tools/scripts/BDB-upgrade-helper.sh
#
# A helper script to upgrade applications that used to depend on
# BerkeleyDB ports 4.0...4.7 to use a newer version of BerkeleyDB.
#
# Written by Matthias Andree in 2014, and placed under the same
# license as FreeBSD itself, see /COPYRIGHT or /usr/src/COPYRIGHT.

set -eu
: ${PREFIX:=/usr/local}
: ${LOCALBASE:=${PREFIX}}

# check requisites
tool=
if   [ -x ${LOCALBASE}/sbin/portmaster ] ; then tool=portmaster ;
elif [ -x ${LOCALBASE}/sbin/portupgrade ]; then tool=portupgrade;
else
   echo >&2 "Neither portmaster nor portupgrade installed. Cannot continue."
   echo >&2 "Please install ports-mgmt/portmaster before proceeding."
   exit 1
fi

# check BerkeleyDB 4.0...4.7 versions
rx='db4[1-7]?(-nocrypto)?-4'
if pkg -N 2>/dev/null ; then pkg=yes ; else pkg= ; fi
if [ -n "$pkg" ] ; then
   # pkg
   dbnames=$(pkg info -x "$rx")
else
   # old pkg_*
   dbnames=$(pkg_info -E -X "$rx")
fi

# due to set -e, the script will not reach this point
# unless there have been matched packages - without packages,
# pkg_info or pkg will exit with failure.

# check if we need to pass in origins or package names
if [ "$tool" = portupgrade ] ; then
   if [ -n "$pkg" ] ; then
       dbnames=$(printf '%s\n' "$dbnames" | xargs -n1 pkg info -q -o)
   else
       dbnames=$(printf '%s\n' "$dbnames" | xargs -n1 pkg_info -q -o)
   fi
fi

# generate the upgrade command
case "$tool" in
portmaster)
   cmd="portmaster -R"
   for i in $dbnames ; do cmd="$cmd -r $i" ; done
   ;;
portupgrade)
   cmd="portupgrade -f -r"
   for i in $dbnames ; do cmd="$cmd -x $i" ; done
   for i in $dbnames ; do cmd="$cmd $i" ; done
   ;;
*)
   echo >&2 "Internal error in $0." ; exit 1
   ;;
esac

echo "+ $cmd"
$cmd

# due to set -e, the script will not reach this point
# if there was an error or failure with the upgrade tool

if [ -n "$pkg" ] ; then
    pkg delete $dbnames
else
    pkg_delete $dbnames
fi

echo "Success."
root@ns: 2017 02 09 9:55 /root # portinstall databases/db5
[Reading data from pkg(8) ... - 379 packages found - done]
** Found already installed package(s) of 'databases/db5': db5-5.3.28_6
root@ns: 2017 02 09 9:55 /root # /usr/ports/Tools/scripts/BDB-upgrade-helper.sh
pkg: No package(s) matching db4[1-7]?(-nocrypto)?-4
root@ns: 2017 02 09 9:56 /root #
root@ns: 2017 02 09 9:57 /root #
root@ns: 2017 02 09 9:57 /root # /usr/ports/Tools/scripts/BDB-upgrade-helper.sh
pkg: No package(s) matching db4[1-7]?(-nocrypto)?-4
root@ns: 2017 02 09 9:57 /root #

# pkg delete db48-4.8.30.0_2

Total access 1833:本日 1:昨日 0

Counter: 1833, today: 1, yesterday: 0

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS