🧹

Ubuntuのapt環境の整理整頓

2023/04/01に公開

はじめに

最近Ubuntuを最新のLTSバージョンにアップグレードしました。
その際に、aptのサードパーティのsources.listが無効になり、再度有効にする必要がでてきました。
いい機会なので使っていないものは削除して整理整頓することにしましたので、その時の作業内容を備忘録として残します。

現状の確認

下記コマンドでapt周りの現状を確認できます。

# aptでインストールしたパッケージの確認
apt list --installed
# 末尾が[installed]となっているものは明示的にインストールしたパッケージ
# 末尾が[installed,automatic]となっているものは、依存関係で暗黙的にインストールしたパッケージ
# 末尾が[installed,local]となっているものは、sources.listに含まれていないが過去にインストールしたパッケージ

# 現在の有効なsources.listの確認
apt-add-repository --list
# /etc/apt/sources.listと/etc/apt/sources.list.d/foo.listの内容を読み込んでいる
# GUIアプリケーションの「ソフトウェアとアップデート」のUbuntuのソフトウェアと他のソフトウェアからでも確認できる

# aptでのインストールや更新時の認証キーの確認
apt-key list
# apt-keyコマンドは非推奨
# /etc/apt/trusted.gpgと/etc/apt/trusted.gpg.d/foo.gpgの内容を読み込んでいる
# GUIアプリケーションの「ソフトウェアとアップデート」の認証からでも確認できる

/etc/apt/sources.listと/etc/apt/sources.list.d/foo.listを確認し、以下のように分類しました。

  • 今後もaptで更新するもの

    • Docker
    • Dropbox
    • Google Chrome
    • Firefox ESR
    • NVIDIA Container Toolkit(NVIDIA Docker)
    • NVIDIA Driver
    • Visual Studio Code
  • 今後はsnapで更新するもの
    snapだとaptと比較して早く最新のものを試すことができます。
    以下は最新版を使いたいがためにサードパーティのソースリストを使っていました。
    しかし、これらはsnapからもインストールできるので、今後はそうします。
    なお、DockerやVisual Studio Codeもsnapにありました。
    しかしDockerはホームディレクトリにしかアクセスできない、VSCodeは日本語入力できないなど、snap特有の問題があるので、aptからインストールします。

    • Golang
    • Node.js
  • 廃棄するもの

    • Robot Operating System

aptの関連の設定は/etc/apt以下に保存されています。
操作を間違った場合に復旧するため、そのディレクトリをコピーしておきます。

不要なソフトや設定の削除

ソフト本体はsudo apt remove fooで削除します。

sources.listの削除は、/etc/apt/sources.listの該当する行の削除と、/etc/apt/sources.list.d/foo.listのファイル削除を行うことで実施できます。
アップグレードした場合だと、前のバージョン用のURLで残っています。
その場合は一旦sources.listから削除し、後で記載するように再度インストールすることで有効化します。

認証キーの削除にはsudo apt-key del <keyid>で行います。
<keyid>はapt-key listで確認できるハッシュ値のような文字列の下8桁を指定します。

再設定と再インストール

今後もaptで更新するもの

以下のソフトウェアは今後もaptで更新していきます。

  • Docker

    # https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
    sudo mkdir -m 0755 -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
    echo \
        "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
        "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
        sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  • Dropbox

    # 公式サイトから.debファイルをダウンロード
    # 再度インストールすることで有効化
    sudo apt install ~/Downloads/dropbox_foo.deb
    
  • Google Chrome

    # なぜか有効なままだった
    sudo apt update
    sudo apt install google-chrome-stable
    
  • Firefox ESR

    # https://gihyo.jp/admin/serial/01/ubuntu-recipe/0710#sec4
    sudo add-apt-repository ppa:mozillateam/ppa
    
    sudo apt update
    sudo apt install firefox-esr firefox-esr-locale-ja
    
  • NVIDIA Container Toolkit

    # https://github.com/NVIDIA/nvidia-docker
    # https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker
    distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
        && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
        && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
                sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
                sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
    
    sudo apt update
    sudo apt install nvidia-container-toolkit
    
  • NVIDIA Driver

    # https://qiita.com/porizou1/items/74d8264d6381ee2941bd
    sudo add-apt-repository ppa:graphics-drivers/ppa
    
    # インストール可能なバージョンを表示する
    ubuntu-drivers devices
    
    # 上記コマンドで推奨となっているバージョンをインストール
    sudo apt update
    sudo apt install nvidia-driver-foo
    
  • Visual Studio

    # 公式サイトから.debファイルをダウンロード
    # 再度インストールすることで有効化
    sudo apt install ~/Downloads/code_foo.deb
    

今後はsnapで更新するもの

  • Golang

    sudo apt remove golang-go
    sudo snap install --classic go
    
  • Node.js

    sudo apt remove nodejs
    sudo snap install --classic node
    

まとめ

Ubuntuのバージョンアップの際に行ったapt周りの整理整頓の作業内容を備忘録として残しました。
未来の自分や皆さんの参考になれば幸いです。

GitHubで編集を提案

Discussion