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

自宅に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



」を実行する習慣を長い間開発してきました。 この形式では、多数のダウングレードを実行する必要がある場合、解析が簡単です。








All Articles