LoginSignup
3
2

More than 5 years have passed since last update.

dnf/yum で依存で入ったパッケージを autoremove で削除されないようにする

Posted at

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                                                          
# =============================================================================
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2