55456
Ubuntu で `apt upgrade` をした後、もしシステムがおかしくなったらアップグレードを取り消せるのか気になりました。

`apt upgrade` をリバートするような、アンドゥ用のコマンドはありますか？

  * 環境 
    * Ubuntu 18.04.2
    * apt 1.6.10 (amd64)
CC BY-SA 4.0
2019-06-02T09:15:00.833
55455
2019-06-04T01:03:19.693
19110
question
apt
apt upgradeを取り消したい
[この wiki](https://help.ubuntu.com/community/ListInstalledPackagesByDate)
に書いてあるように、apt のログは
`/var/log/apt/history.log`、`/var/log/apt/term.log`、`/var/log/dpkg.log`
に残されています。

そこでたとえば `/var/log/dpkg.log` の内容を加工することでアップグレードされたパッケージを割り出し、ロールバックすることが可能です。

```

    # 最近アップグレードされたファイルの一覧を出力し……
    $ awk '$3 == "upgrade" {print $4"="$5}' /var/log/dpkg.log > rollback.txt
    
    # ロールバックしたい行だけ残して……
    $ nano rollback.txt  # 好きなエディタを使ってください
    
    # 望んだ結果になるかチェックし……
    $ xargs sudo apt-get --simulate install < rollback.txt
    
    # 実際にロールバックする
    $ xargs sudo apt-get install < rollback.txt
    
```

参考: [Can I rollback an apt-get upgrade if something goes
wrong?](https://unix.stackexchange.com/q/79050/211480)

* * *

ただし場合によっては、`E: Version '何とかかんとか' for '何とかかんとか' was not found` というエラーが出ます。`apt-
cache` で調べると確かにありません。

```

    $ xargs sudo apt-get --simulate install < rollback.txt
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    E: Version '0.96.24.32.8' for 'software-properties-common' was not found
    $ apt-cache policy software-properties-common
    software-properties-common:
      Installed: 0.96.24.32.9
      Candidate: 0.96.24.32.9
      Version table:
     *** 0.96.24.32.9 500
            500 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
            100 /var/lib/dpkg/status
         0.96.24.32.1 500
            500 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages
    
```

この場合は[自分で .deb
パッケージを作ってインストールする方法](https://unix.stackexchange.com/q/332116/211480)があるようです（未検証）。キャッシュに
.deb
パッケージが残っていれば[そこからもってくる方法](https://askubuntu.com/q/907506/644471)もあるようです（未検証）。
CC BY-SA 4.0
2019-06-02T09:15:00.833
55456
2019-06-04T01:03:19.693
2019-06-04T01:03:19.693
19110
19110
55455
answer