ディストリビューションをアップグレードするときに「古い」パッケージを処理する方法は?

ディストリビューションをアップグレードするときに「古い」パッケージを処理する方法は?

DebianコンピュータをJessieからStretchにアップグレードしたいのですが、aptitudeには19の古いパッケージがあると報告しています。 BerkeleyDBのようないくつかは私が定期的に使用することです。

アップグレード指示セットアップグレードする前に古いソフトウェアをすべて削除するように依頼していますが、一部のソフトウェアを使い続けたいと思います。 Jessieを永遠に使用できますか?

答え1

最新のリポジトリで利用できず、セキュリティ上の問題を引き起こす可能性がある古いパッケージを削除することをお勧めします。

廃止予定のパッケージを一覧表示します。

aptitude search ?obsolete

リストを作成してください:

aptitude search ?obsolete  > mylist

mylistパッケージ名のみを保持してファイルを編集します。

古いパッケージを削除するには:

apt-get --purge remove $(cat mylist)

Debian マニュアル:4.8。古いパッケージ

多くの新しいパッケージが導入され、Stretchは廃止され、jessieのいくつかの以前のパッケージは省略されました。これらの古いパッケージへのアップグレードパスは提供されません。必要に応じて古いパッケージを引き続き使用することを防ぐことはできませんが、Debianプロジェクトは通常、リリース後1年間セキュリティサポートを中止し、[5]同時に追加のサポートを提供しません。可能であれば、利用可能な代替品と交換することをお勧めします。

答え2

これらのパッケージが新しい/更新されたパッケージと競合しない場合は、削除する特別な理由はありません。

競合が発生すると、パッケージマネージャはこれを通知します。

しかし、私のシステムには1〜2年間Debianにインストールされていないいくつかのパッケージがまだインストールされています。彼らはまだ働いています。最新の Debian バージョン用に再コンパイルしなければならなかったいくつかの項目と、再コンパイルする価値がないため、使用を中断したいくつかの項目 (またはより一般的には最新バージョンで動作するようにハッキングしてコンパイル) さまざまな図書館)。

まだ古いバージョンのlibdbがインストールされています。

$ dpkg -l libdb[0-9.]* | grep ii
ii  libdb4.6           4.6.21-21      amd64        Berkeley v4.6 Database Libraries [runtime]
ii  libdb4.6++         4.6.21-18      amd64        Berkeley v4.6 Database Libraries for C++ [runtime]
ii  libdb5.1:amd64     5.1.29-7       amd64        Berkeley v5.1 Database Libraries [runtime]
ii  libdb5.1:i386      5.1.29-7       i386         Berkeley v5.1 Database Libraries [runtime]
ii  libdb5.3:amd64     5.3.28-13.1+b1 amd64        Berkeley v5.3 Database Libraries [runtime]
ii  libdb5.3:i386      5.3.28-13.1+b1 i386         Berkeley v5.3 Database Libraries [runtime]
ii  libdb5.3-dev       5.3.28-13.1+b1 amd64        Berkeley v5.3 Database Libraries [development]
ii  libdb5.3-sql:amd64 5.3.28-13.1+b1 amd64        Berkeley v5.3 Database Libraries [SQL runtime]

libdb4.6は、2014年頃の「Squeeze」(Debian 6)以降、Debianには存在しません。

古いライブラリを使用している項目がインストールされていない場合は、時々思い出されるように削除します。

答え3

...絶対に "使用"できないでしょう :) この問題をいつどのように解決すべきかについての質問です...

したがって、aptには3つのアップグレードフラグがあります。

https://www.fosslinux.com/43884/apt-vs-aptitude.htm https://wiki.debian.org/適性

apt upgrade | safe-upgrade 

Ubuntuインストールのすべてのエントリがアップグレードされます。

...アップグレードパッケージの完全なリストと矛盾がない限り

apt full-upgrade

...アップグレードパッケージのリスト全体と競合するすべてのエントリを削除します。

TUIバージョンのaptitude(aptitudeコマンドラインでのみ実行されます)にはより多くのオプションがあり、コマンドラインバージョンよりも優れた決定を下すことも、そうでない場合もあります。 LiveCDのもう一つの素晴らしい用途です。 TUIバージョンは、アプリケーション、ドライバなどを管理可能なカテゴリにグループ化するのにも適しています。したがって、アップグレードしてもシステムに古いパッケージがまだ存在する場合は、TUIバージョンのaptitudeで簡単に見つけることができます。

RH パッケージ管理は概念的に似ていますが、同様の目標を達成するために異なるプロセスセットを使用します。繰り返しますが、別のオプションは、同じ結果を得るために新しいパッケージまたは異なるアプローチを見つけることです。そうすれば、2025年にU14-32を実行するのに苦労することはありません。仮想マシンまたはコンテナでこれを行うことができます。

とにかくインストールをバックアップし、セキュリティアップグレードを実行した後もまだ機能していることを確認します。そうでない場合は、仮想マシンに復元するか、最新の代替品を見つけてください。または、あなたが言ったように新しいボックスを購入し、既存のボックスにリモートで接続してください。

個人的には、古い/互換性のないソフトウェアを上書きして無効にし、レガシープラットフォームを破って前進するようにインスピレーションを得てアップグレードします。これを処理するために何か(ドライバまたはパッケージ)が必要な場合は、アップグレードしません。別の箱を購入して続行することをお勧めします。作業に本当に必要な場合は、作業しているコンピュータのオペレーティングシステムをアップグレードする危険性がありません。そうではありませんか?少なくとも古いインストールを新しいドライブに複製し、新しいドライブをアップグレードすることはできます。そうですか?フルアップグレード後も機能しない場合は、必要なソフトウェアを再インストールしてから(最新のライブラリではうまく機能してください)、既存のドライブを新しいドライブに再クローンして安全なアップグレードを試してください。デュアルブート、必要なものは何でも可能です。

答え4

安全のために自動的にインストールされ、他のパッケージは依存せず、不要な古いパッケージを検索できます。

aptitude search '~o ~M !?reverse-depends(~i) !~E'

どこ模様意味は次のとおりです

  • 古いもの:~oまたは?obsolete
  • サイレントインストール:~Mまたは?automatic
  • 他のパッケージはそれに依存しません。!?reverse-depends(~i)
  • 不要:!~Eまたは!?essential

したがって、未使用のパッケージを安全に削除(削除)する1行のコードは次のとおりです。

aptitude purge $(aptitude search '~o ~M !?reverse-depends(~i) !~E' | cut -d' ' -f 3 | paste -sd' ')

関連情報