悲しみはありませんでした

自宅にDebian Sidがあります。 ほとんどの場合、彼は非常に優れていますが、場所によってはあまりにも出血しすぎています。 たとえば、システムの健全性を損なうパッケージを出荷するとき。 昨日はwpasupplicantが来て、私のwifiを壊しました。 私はそれをロールバックしましたが、その過程で、多くのユーザーはこれを行う方法を知らないと思いました。 記事「悪いapt-getのインストール/アップグレードをロールバックする方法」はこの投稿にあります。


状況


apt-getをインストールするか、apt-getをアップグレードするか、apt-get dist-upgradeを実行しましたが、再起動後(またはすぐに)、これは不可能であることがわかりました。 サービスが開始されない、重要な機能が削除された、誰かが落ちているなど。 ロールバックしたい。 しかし、運が悪い-正確にはどこがわからないのか、更新前のバージョンはわからないので。


何が起こったのかを知るには?


aptは/var/log/aptに非常に詳細なログを保持し/var/log/apt 。 特に、 history.logがありますhistory.logの形式の行があります。


 Upgrade: wpasupplicant:amd64 (2:2.6-8, 2:2.6-11) Install: libcaribou-gtk-module:amd64 (0.4.21-3, automatic) Remove: libapache2-mod-dnssd:amd64 (0.6-3.2) 

誰がどのチームをしたかについても書かれています。


 Start-Date: 2017-12-03 12:14:58 Commandline: apt-get dist-upgrade Requested-By: amarao (1000) 

以前のバージョンを理解するには、インストールログを確認する必要があります。 -/ /var/log/apt/terminal.log近くにあります。 残念ながら、escシーケンスでは。
次のような行が表示されます。


 Unpacking wpasupplicant (2:2.6-11) over (2:2.6-8) ...  2:2.6-11 -  ,    ,  2:2.6-8 ,    . 

修理方法


パッケージをバージョンごとに戻すには、明示的に指定します。


 apt-get install wpasupplicant=2:2.6-8 

残念ながら、この90%は機能しません。 なんで? リポジトリにこのバージョンのパッケージがないためです。


この場合、インストールするファイルを見つける必要があります。 2つの場所に配置できます。


  1. / var / cache / apt /アーカイブ。 たとえば、 /var/cache/apt/archives/wpasupplicant_2%3a2.6-11_amd64.debように/var/cache/apt/archives/wpasupplicant_2%3a2.6-11_amd64.debます。
  2. snapshots.debian.org(詳細は以下)。

ディスク上にファイルがある場合、インストールは簡単です。


 sudo dpkg -i /var/cache/apt/archives/wpasupplicant_2%3a2.6-11_amd64.deb 

...そして再び私はインターネットを持っています。 依存関係に対処する必要がある可能性がありますが、良いニュースは、更新前にパッケージが競合しなかった場合、同じバージョンのセットにロールバックできることです。 そして、どのようなバージョンがterminal.logの出力に表示されます。


アーカイブが存在しない場合(誰かがアップグレードを行い、apt-get autocleanがすぐそこにあるため)、インターネットでバージョンを探す必要があります。 このために、Debianのミラーのアーカイブがあります。 http://snapshot.debian.org/


接続方法はそこに記載されていますが、多くの場合、目的のパッケージをダウンロードする方が簡単です。 重要:スナップショットを探すときは、ログでバージョンを確認してください。 依存関係が厄介で複雑な場合、 terminal.logの解析を自動化することは理にかなっています。


別の方法: apt-cache policy wpasupplicantを試して、利用可能なバージョンを確認し、それらの1つを選択することもできます(等号を使用)。 私の場合、インターネットがなかったので役に立たなかった。 重要:古いバージョンへのロールバックを開始するとすぐに、依存関係に応じてこのような設定を行うリスクが発生するため、依存パッケージがある場合は、自分で冒険を探すのではなく、以前のバージョンにロールバックすることをお勧めしますアンティークにダウングレードします。


さらにそれと一緒に暮らすには?


さらに、問題を修正するために更新する必要はありません。 問題を修正するには、報告する必要があります。 https://bugs.debian.org-そして、おそらくそこにあります。 そうでない場合は、報告する必要があります。 reportbug utility_name。


誤って再度アップグレードしないように、パッケージを保留にすることができます(更新を無効にします)。


 apt-mark hold wpasupplicant 

(保留解除は保留を解除します)。


ベストプラクティス


更新前に「dpkg -l> / var / log / dpkg_ date 」を実行する習慣を長い間開発してきました。 この形式では、多数のダウングレードを実行する必要がある場合、解析が簡単です。



Source: https://habr.com/ru/post/J343906/


All Articles