FreeBSDポート:すべてを再コンパイルしようとしましたが、一部のパッケージが「削除エラー」/「すでにインストール済み」のため失敗しました。

FreeBSDポート:すべてを再コンパイルしようとしましたが、一部のパッケージが「削除エラー」/「すでにインストール済み」のため失敗しました。

pkg install長い間、私はバイナリパッケージを通してのみ使用してきました。その後、追加オプションを有効にする必要があるため、ソースからパッケージをコンパイルする必要があります。あまりにもよく進んでいるので、/usr/portsこのマシンに完全に切り替えたいと思います。

整理(どこかから得た):

pkg autoremove
portsclean -C -D -DD
portsnap auto
portsclean -C -D -DD

それではportupgrade -af --batch。このコマンドの結果は次のとおりです。

** Listing the failed packages (-:ignored / *:skipped / !:failed)
        ! multimedia/libvpx (libvpx-1.9.0)      (uninstall error)
        ! databases/db5 (db5-5.3.28_7)  (uninstall error)
        * databases/ruby-bdb (ruby26-bdb-0.6.6_8)
        * ports-mgmt/portupgrade (portupgrade-2.4.16,2)
        * devel/apr1 (apr-1.7.0.1.6.1_1)
        [...]

...そしてスキップされたパッケージがたくさんあります。

root:/usr/ports/multimedia/libvpx # make install
===>  Installing for libvpx-1.9.0
===>  Checking if libvpx is already installed
===>   libvpx-1.9.0 is already installed
      You may wish to ``make deinstall'' and install this port again
      by ``make reinstall'' to upgrade it properly.
      If you really wish to overwrite the old port of libvpx
      without deleting it first, set the variable "FORCE_PKG_REGISTER"
      in your environment or the "make install" command line.
*** Error code 1

Stop.
make: stopped in /usr/ports/multimedia/libvpx

forのようなものですdatabases/db5。したがって、両方のディレクトリで実行してmake deinstall再起動します。ただし、これは次の行がリストされている同様のメッセージで終わります。make reinstallportupgrade -af --batch!

        ! multimedia/libvpx (libvpx-1.9.0)      (uninstall error)
        ! databases/db5 (db5-5.3.28_7)  (uninstall error)
        ! devel/boost-libs (boost-libs-1.72.0_2)        (uninstall error)
        ! devel/cmake (cmake-3.18.3)    (uninstall error)

だからもう一つの「削除エラー」です。

この問題を処理する正しい方法は何ですか?

修正する:Portupgradeが原因のようです。それするPortmasterとうまく動作します。今すぐ:

env BATCH=yes portmaster -afGyd --no-confirm

毎分「y」と「enter」を押して忙しくないようにツールを説得する方法を理解するのに時間がかかりましたが、ツールは「インストール」、「再インストール」、または「アップグレード」を介してすべてのパッケージをスキャンしました。 。エラーはありません。

その後portupgrade -af --batch再試行しましたが、「削除エラー」が再び発生しました。

別の実行でこれを確認したら、答えで書いてみましょう。

アップデート2:Portmasterを再実行すると、一部のパッケージで「削除エラー」が発生しました。先日、後でもう一度試してみましたが、portsnap autoPortmasterは私のすべてのパッケージを非常にうまく処理しました。だから問題は行ったり来たりします。私は今あきらめる。 Portmasterの最後の完全な実行が成功したので、ここで終了します。毎日のクローンジョブをインストールしました。

#!/bin/sh
set -e
portsnap auto
env BATCH=yes portmaster -aGyd --no-confirm
env BATCH=yes portmaster -ys --no-confirm
service -R
echo "All done!"

これが良いことを願っています。

アップデート3:上記のスクリプトをいくつかのenv BATCH=yes portmaster -afGyd --no-confirm手動スクリプトで挿入しましたが、エラーは発生しませんでしたが、すべてのパッケージを再インストールしました。

総合:将来的には、FreeBSDのインストール時に常にポートを使用します。プリコンパイルされたパッケージはpkgうまく機能しますが、いつかプリコンパイルされたバージョンとは異なる設定の小さなパッケージには小さな設定が必要です。その後、ポートが必要です。また、その日には、オペレーティングシステムインフラストラクチャの重要な部分をどのように使用するかを再び学ぶ時間がないかもしれません。だから私は全体的にポートを使用することをお勧めします。複数のコンピュータがある場合は、Poudriereを見てください(直接試したことはありませんが、いつか試してみることもできます)。

ベストアンサー1

pkg autoremoveあなたが思うようにはなりません。

pkg autoremove は依存関係の解決中にインストールされ、不要になった孤立したパッケージを削除するために使用されます。

あなたがすべきことは、pkg delete <pkg>削除したいコンテンツをターゲティングすることです。これを使用するには、ポートをインストールするためにいくつかの手順を実行する必要がありますmake

最初のステップ/usr/ports/<pkg>

make config fetch checksum depends extract patch configure build

次に、作業ファイルを削除するか、make install作業ファイルとダウンロードしたプログラムの両方を削除します。make cleanmake distclean

これらすべては、ポートツリーとパッケージを最新の状態に保ったと仮定します。

優れている必要がありますFreeBSDマニュアル

おすすめ記事