Ubuntu でホームとパッケージリストを用いた新システムでのリストア
Ubuntuやその派生ディストリビューションで、OSのメジャーアップデートやクリーンインストールを行う際、旧環境で利用していたアプリケーション(パッケージ)とユーザーデータ(ホームディレクトリ)を新環境へ効率的に復元(リストア)したい場合があります。この記事では、旧システムから取得したパッケージリストとホームディレクトリのバックアップを用いて、クリーンインストール後の新システムに必要な環境をリストアする手順を解説します。
前提: この記事の手順を実行するには、あらかじめ旧システムから以下のバックアップを取得しておく必要があります。バックアップ手順の詳細は、関連記事(Ubuntu でホームとパッケージリストを用いた新システムでのリストア)を参照してください。
- パッケージリスト(例:
dpkg.txt
) - ホームディレクトリのアーカイブ(例:
home.tar
)
1. 準備
リストア作業を開始する前に、以下のファイルが新システムからアクセス可能な場所(例: USBメモリや一時ディレクトリ /tmp
など)に配置されていることを確認してください。
- ホームディレクトリのバックアップファイル: 旧システムの
/home
以下をアーカイブしたもの。この記事ではファイル名をhome.tar
とします。 - パッケージリストファイル: 旧システムでインストールされていたパッケージの一覧。この記事ではファイル名を
dpkg.txt
とします。
2. パッケージリストファイル (dpkg.txt
) の調整
リストアに使用するパッケージリストファイル (dpkg.txt
) には、新システムとの互換性の問題や、リストア時に不要・競合となる可能性のあるパッケージ情報が含まれている場合があります。以下の項目に該当する行をファイルから削除してください。
- Torrent関連:
Torrentクライアント(例:
transmission
,azureus
,vuze
を含む行)は、リストア後に必要であれば手動でインストールすることを推奨します。該当行を削除してください。# 例: transmission-gtk install
- LILO:
LILOブートローダーは現在ほとんど使用されていません。
lilo
を含む行があれば削除してください。# 例: lilo install
- GRUB関連:
ブートローダー関連のパッケージ (
grub
,grub-common
,grub-pc
など)は、新システムのインストール時に適切に設定されるため、旧システムのリストから削除してください。# 例: grub-pc install
- Linuxカーネル関連:
カーネルイメージやヘッダー (
linux-image-***
,linux-headers-***
など)は、新システムでインストールされたバージョンを使用するため、旧システムのリストから削除してください。# 例: linux-image-generic install # 例: linux-headers-generic install
3. Ubuntuのインストールと初期設定
- Ubuntu のインストール
Ubuntu 24.04 (またはリストア対象のバージョン) のインストール: 手順はこちら(別ページ »)を参照してください。
- Ubuntu のシステム更新
インストール後、まずシステムを最新の状態に更新します。これにより、セキュリティパッチや基本的なパッケージが最新になります。
sudo apt update && sudo apt upgrade -y
- インストール後の基本的な設定
ネットワーク設定、リポジトリ設定など、基本的な設定: 手順はこちら(別ページ »)を参照してください。
4. ホームディレクトリのリストア
バックアップしておいたホームディレクトリのアーカイブ (home.tar
) を展開し、ファイルの所有権を正しく設定します。
- アーカイブの展開
ホームディレクトリの親ディレクトリ (
/home
) に移動するか、-C
オプションを使用して、tar
コマンドでアーカイブを展開します。/path/to/home.tar
の部分は実際のファイルパスに置き換えてください。方法1:
/home
に移動してから展開cd /home sudo tar -xvpf /path/to/home.tar
方法2:
-C
オプションで展開先を指定sudo tar -xvpf /path/to/home.tar -C /home
-
-x
: アーカイブを展開 (e**x**tract) -
-v
: 処理中のファイル名を表示 ( **v**erbose) -
-p
: パーミッション(権限)を保持 ( **p**ermissions) -
-f
: アーカイブファイル名を指定 ( **f**ile) -
-C /home
: 展開先のディレクトリを指定 ( **C**hange directory)
-
- ファイルのユーザとグループの設定
リストアしたファイルの所有者とグループを、新システムで作成した(または既存の)ユーザーに正しく設定します。これは、ユーザーが自分のファイルにアクセスするために不可欠です。ユーザーごとにホームディレクトリに対して実行します。
と
は実際のユーザー名とグループ名に置き換えてください(通常、Ubuntuではユーザー作成時に同名のグループが主グループとして作成されます)。sudo chown -R
: /home/ - 例: ユーザー
taro
の場合 (グループもtaro
):sudo chown -R taro:taro /home/taro
-
-R
: 指定したディレクトリ内のすべてのファイルとサブディレクトリに対して再帰的に所有者を変更 ( **R**ecursive)
- 例: ユーザー
5. パッケージのリストア
調整済みのパッケージリストファイル (dpkg.txt
) を使用して、旧システムでインストールされていたパッケージを新システムにリストアします。
- パッケージリストファイルがあるディレクトリに移動します(例:
/tmp
)。cd /tmp
-
dpkg --set-selections
コマンドで、リストファイルに基づきインストール対象パッケージを選択状態としてシステムに登録します。sudo dpkg --set-selections < dpkg.txt
これにより、
dpkg.txt
にinstall
と記述されたパッケージが「インストールすべき」としてマークされます。 - (オプション) Multiarch設定の調整:
異なるアーキテクチャ(例: i386)のパッケージをサポートするMultiarch設定が旧システムで有効だった場合、リストア時に影響することがあります。以下のコマンドは、
foreign-architecture
指定を一時的に無効化(コメントアウト)する試みです。この処理が必要ない場合もあります。if [ -f /etc/dpkg/dpkg.cfg.d/multiarch ]; then echo "Adjusting multiarch configuration temporarily..." # 注意: 元のコードには 'foriegn' というタイプミスがあり、意図通り動作しない可能性がありました。 # ここでは /etc/dpkg/dpkg.cfg.d/multiarch 内の 'foreign-architecture' で始まる行をコメントアウトします。 # 処理前にバックアップファイル (.bak) を作成します。 sudo sed -i.bak 's/^\(foreign-architecture\)/#\1/' /etc/dpkg/dpkg.cfg.d/multiarch fi
-
apt-get dselect-upgrade
コマンドを実行し、dpkg
で設定された選択状態に基づいて、実際にパッケージのインストール、削除、更新を行います。sudo apt-get dselect-upgrade -y
重要: 旧システムのパッケージリストと新システムのUbuntuリポジトリとの間で、パッケージ名やバージョンに差異が存在する場合があります。これにより、一部のパッケージが見つからずエラーが発生したり、依存関係の問題で意図しないパッケージがインストールまたは削除されたりする可能性があります。実行中のメッセージを注意深く確認し、問題が発生した場合は手動での調整が必要になることがあります。
-
-y
: インストール前の確認プロンプトに対して自動で「はい」と応答します。処理内容を確認したい場合は、このオプションを削除してください。 - この処理は、多数のパッケージをダウンロード・インストールするため、ネットワーク接続が必須であり、完了までに時間がかかる場合があります。
-
- (オプション) Multiarch設定の復元: 手順3で設定を変更した場合、バックアップしておいた元のファイルに戻します。
if [ -f /etc/dpkg/dpkg.cfg.d/multiarch.bak ]; then echo "Restoring multiarch configuration..." sudo mv /etc/dpkg/dpkg.cfg.d/multiarch.bak /etc/dpkg/dpkg.cfg.d/multiarch fi
6. 最終調整と確認
- システムの再起動
パッケージのリストアが完了したら、システムを再起動してすべての変更を確実に反映させます。
sudo reboot
- 動作確認
再起動後、ログインして基本的な動作を確認します。特に、旧システムで利用していた主要なアプリケーションが起動するか、デスクトップ環境や各種設定が期待通りに復元されているかなどを確認してください。
(オプション) 追加手順
以下は、特定の環境や追加設定が必要な場合のオプション手順です。
VMware環境での追加作業
VMware仮想マシン上にUbuntuをインストールした場合、ホストOSとの連携を改善するために以下の追加作業を推奨します。
- Ubuntuのインストール: VMwareの「簡易インストール」機能を使用すると、特に日本語環境の設定などで意図しない構成になることがあるため、手動でのインストール(OS標準のインストーラーを使用)を推奨します。
- VMware Toolsのインストール: 共有フォルダ、クリップボード共有、画面解像度の自動調整などの機能を利用するために、VMware Toolsをインストールします。(手順はVMwareのドキュメントや関連記事を参照してください)。多くの場合、Ubuntuの `open-vm-tools-desktop` パッケージをインストールすることで代替できます (`sudo apt install open-vm-tools-desktop`)。
- VMware User Agentの起動: VMware Tools (または open-vm-tools) の一部であるUser Agentを起動します。これにより、クリップボード共有などのデスクトップ連携機能が有効になります。バックグラウンドで実行するために末尾に
&
をつけます。/usr/bin/vmware-user &
(ログイン時に自動起動するよう設定することも推奨されます)
追加ユーザーの作成
リストアしたホームディレクトリに対応するユーザーアカウントを新システムに作成します。ここではGUI(Ubuntu標準の「設定」画面)での手順を示します。コマンドラインで作成する場合は adduser
コマンドなどが利用できます。
- 「設定」>「ユーザー」を開き、右上の「ロック解除」ボタンをクリックしてパスワードを入力し、「ユーザーを追加...」をクリックします。
- アカウントの種類(通常は「標準」または「管理者」)を選択し、氏名とユーザー名を入力します。このユーザー名は、リストアするホームディレクトリの名前(例:
/home/taro
ならtaro
)と一致させる必要があります。 - 新しいパスワードを設定します。
- ユーザー作成後、必要に応じて管理者権限(
sudo
コマンドの実行権限)を付与します。ユーザーを選択し、「アカウントの種類」を「管理者」に変更します。これにより、ユーザーはsudo
グループに追加されます。
重要: ホームディレクトリ内のファイルの所有権を正しく設定するために、ここで作成するユーザー名と、手順4で chown
コマンドに使用するユーザー名・グループ名が一致している必要があります。
言語サポートの確認と追加
システムの表示言語や入力メソッドなど、言語関連の設定を確認し、必要に応じて日本語サポートなどを追加・設定します。
- 「言語サポート」の起動
次のコマンドを実行するか、アクティビティ画面から「言語サポート」を検索して起動します。
gnome-language-selector
- 起動時に「言語サポートが完全にはインストールされていません」というメッセージが表示された場合は、「インストール」をクリックして指示に従います。
- 「言語」タブで、「メニューとウィンドウの言語」のリストに必要な言語(例: 日本語)が含まれているか確認します。もしなければ、「言語のインストールと削除...」をクリックし、日本語を追加して「適用」します。
- 必要に応じて、リスト内で日本語を一番上にドラッグし、優先言語として設定します。「システム全体に適用」ボタンがあればクリックします。
- 「地域形式」タブで、数値や日付の表示形式を適切なもの(例: 日本)に設定します。
- 設定後、「閉じる」をクリックします。
- 設定を完全に反映させるために、ログアウトして再ログインするか、システムの再起動が推奨される場合があります。
システム全体のバックアップ作成 (オプション)
すべてのリストア作業と設定が完了し、システムが期待通りに動作することを確認できたら、この安定した状態のシステム全体をバックアップしておくことを強く推奨します。これにより、将来問題が発生した場合に、この時点の状態に容易に復元できます。バックアップツールとしては、Clonezilla
(ディスク/パーティションのイメージ作成) や Timeshift
(システムファイルのスナップショット作成) などがよく利用されます。具体的な使用方法は、各ツールのドキュメントを参照してください。