dnf でパッケージを削除するとき、そのパッケージが依存するパッケージも削除されようとします。
sudo dnf remove docker-ce
# ======================================================================================
# Package Arch Version Repository Size
# ======================================================================================
# Removing:
# docker-ce x86_64 3:18.09.2-3.fc29 @docker-ce-stable 81 M
# Removing unused dependencies:
# container-selinux noarch 2:2.81-2.git484806a.fc29 @updates 38 k
# containerd.io x86_64 1.2.2-3.3.fc29 @docker-ce-stable 76 M
# docker-ce-cli x86_64 1:18.09.2-3.fc29 @docker-ce-stable 66 M
#
# Transaction Summary
# ======================================================================================
これは container-selinux containerd.io docker-ce-cli が docker-ce からの依存で入ったものであって、明示的にインストールしたものではないためです。
ですが docker-ce-cli は残したかったとします(docker-ce をインストールしちゃったけど実は docker コマンドが使いたいだけで Engine はいらないケース)。
docker-ce-cli を明示的にインストールしておけば大丈夫かと思いきや。
sudo dnf install docker-ce-cli
# Last metadata expiration check: 0:06:24 ago on Wed 20 Feb 2019 12:55:53 PM DST.
# Package docker-ce-cli-1:18.09.2-3.fc29.x86_64 is already installed.
# Dependencies resolved.
# Nothing to do.
# Complete!
インストール済だと効果ありませんでした。
sudo dnf remove docker-ce
# 変わらず
--noautoremove
を付ければ依存してるパッケージは消えませんが、
sudo dnf remove --noautoremove docker-ce
# =======================================================================
# Package Arch Version Repository Size
# =======================================================================
# Removing:
# docker-ce x86_64 3:18.09.2-3.fc29 @docker-ce-stable 81 M
#
# Transaction Summary
# =======================================================================
逆に消えてほしいものが消えないし、後で sudo dnf autoremove
するとやっぱ消えます。
sudo dnf autoremove
# ===============================================================================
# Package Arch Version Repository Size
# ===============================================================================
# Removing:
# container-selinux noarch 2:2.81-2.git484806a.fc29 @updates 38 k
# containerd.io x86_64 1.2.2-3.3.fc29 @docker-ce-stable 76 M
# docker-ce-cli x86_64 1:18.09.2-3.fc29 @docker-ce-stable 66 M
#
# Transaction Summary
# ===============================================================================
dnf mark install
dnf mark install docker-ce-cli
で、依存ではなく明示的にインストールされたことになるので autoremove で消えなくなります。
sudo dnf mark install docker-ce-cli
# docker-ce-cli-1:18.09.2-3.fc29.x86_64 marked as user installed.
sudo dnf remove docker-ce
# =========================================================================================
# Package Arch Version Repository Size
# =========================================================================================
# Removing:
# docker-ce x86_64 3:18.09.2-3.fc29 @docker-ce-stable 81 M
# Removing unused dependencies:
# container-selinux noarch 2:2.81-2.git484806a.fc29 @updates 38 k
# containerd.io x86_64 1.2.2-3.3.fc29 @docker-ce-stable 76 M
#
# Transaction Summary
# =========================================================================================
yumdb set reason user
yum にも autoremove あるので似たようなことになります。
sudo yum autoremove docker-ce
# =============================================================================
# Package Arch Version Repository Size
# =============================================================================
# Removing:
# docker-ce x86_64 3:18.09.2-3.el7 @docker-ce-stable 81 M
# Removing for dependencies:
# container-selinux noarch 2:2.74-1.el7 @extras 37 k
# containerd.io x86_64 1.2.2-3.3.el7 @docker-ce-stable 88 M
# docker-ce-cli x86_64 1:18.09.2-3.el7 @docker-ce-stable 66 M
#
# Transaction Summary
# =============================================================================
yum には mark サブコマンドはありません。
sudo yum mark install docker-ce-cli
# No such command: mark. Please use /bin/yum --help
代わりに yumdb set reason user docker-ce-cli
とすれば大丈夫です。
sudo yumdb set reason user docker-ce-cli
# 1:docker-ce-cli-18.09.2-3.el7.x86_64
# reason = user
sudo yum autoremove docker-ce
# =============================================================================
# Package Arch Version Repository Size
# =============================================================================
# Removing:
# docker-ce x86_64 3:18.09.2-3.el7 @docker-ce-stable 81 M
# Removing for dependencies:
# container-selinux noarch 2:2.74-1.el7 @extras 37 k
# containerd.io x86_64 1.2.2-3.3.el7 @docker-ce-stable 88 M
#
# Transaction Summary
# =============================================================================