自宅に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つの場所に配置できます。
- / 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
ます。 - 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
」を実行する習慣を長い間開発してきました。 この形式では、多数のダウングレードを実行する必要がある場合、解析が簡単です。