すぐ影響されるブログ

アニメやマンガにすぐ影響されるミーハーのブログ

【windows 10】N予備校の作業環境を別 PC にお引越し。

boxes

N予備校【2019年度】プログラミング入門 Webアプリ をやってる最中にPCを買い替えました。

【2019年度】プログラミング入門 Webアプリコースの「第2章 準備しよう」01. LinuxというOS などを見て、また一から設定しても良いんですが、せっかくなので設定やデータを移すことに挑戦しました。

一部、素人丸出しのクソハマりをしたので手順含めて残しておきます。

0. 移行したい作業環境

PC移行当時は3章 サーバーサイドプログラミング入門の途中でした。

移行したい作業環境に関わるソフトは以下の通りです。


上記ソフトの設定に加え、ubuntu64_18 内の workspace フォルダも移します。

RLogin については、そんなに時間かからないので最初から登録し直しました。
そのため、本記事での説明は省略しますが、【2019年度】プログラミング入門 Webアプリコースの「第2章 準備しよう」を参考に忘れず設定を行ってください。

※2020年度分はWindows では Chocolatey、macOS では Homebrew というツールをインストールしているため、手順が異なると思います。

なお、移行前後いずれもOSはWindows 10です。

また、ユーザー名は同一で、移行対象のディレクトリ配置は変更しないものとします。

1. VS Code(エディタ)

VS Code の設定移行は簡単です。

まずはVS Codeをダウンロードします。

↓公式サイト
code.visualstudio.com

移行元のPCで以下の2つのフォルダをコピーして、それをUSBなどで新しいPCの同じ場所に置くだけです。
移行先のPCにダウンロードした時点で同じ場所に同名のフォルダが作成されると思いますが、移行元のPCからコピーしたデータに置き換えましょう。

  • C:\Users\ユーザー名\AppData\Roaming\Code\User
  • C:\Users\ユーザー名\.vscode


User フォルダの中には基本的な設定など、
.vscode フォルダの中には拡張機能などが含まれています。

VS Code の移行方法を紹介しているページはいくつかあり、上記フォルダの中の一部だけコピーしてたりフォルダごとだったりしてました。

とりあえず自分は上記フォルダの丸ごとコピーで動いたからヨシ!

参考:

qiita.com
pg.4696.info

2. Virtualbox

Virtualbox のソフト内で操作することはありません。

移行元のPCに入れたものと同じバージョンを新しいPCにインストールしましょう。

N予備校の【2019年度】プログラミング入門 Webアプリコースでは、VirtualBox 5.2.X の Windows hosts を使います(Windows の場合)。

Download_Old_Builds_5_2 – Oracle VM VirtualBox

3. Vagrant

ここの手順はやや面倒なので細かく見ていきます。

3.1 元のPCでの作業

まずは移行元のPCでの作業です。

以下の場所には第2章以降のデータが保存されています。

C:\Users\(ユーザー名)\vagrant\ubuntu64_18\workspace

このworkspaceディレクトリは移行先のPCでも使いたいので、USBなどにコピーしておきましょう。

さて、次は Windows PowerShell を管理者として実行します。

Vagrantfile というファイルがあるディレクトリに移動しましょう。
N予備校ユーザーであれば、以下のコマンドを実行すればOKです。

cd ~\vagrant\ubuntu64_18

気になる方はエクスプローラから実際にフォルダを確認するなり、ls コマンドを打ってみるなりしましょう。

続いて、以下のコマンドを一行ずつ実行します。

vagrant halt
vagrant package

vagrant halt は仮想マシンを終了するためのコマンドです。

vagrant package コマンドによって、ubuntu64_18 フォルダの中に package.box というファイルが作られます。
このファイルをUSBなどに保存して、新しいPCの同じ場所へ移して利用します。

また、同じディレクトリにある Vagrantfile という名前のファイルも同様にUSBなどに保存しておきましょう。

Vagrantfileの内容をテキストファイルなどにも適当な名前(たとえば vagarantfile_copy とか)で保存したものもUSBなどに入れておくとよいと思います。

以上で移行元のPCでの操作はおしまいです。

PowerShell を閉じてしまいましょう。

参考:

qiita.com


3.2 移行先のPCでの作業

移行先のPCでは、まずVagrantをインストールするところからです。
Virtualbox も忘れずインストールしておきましょう。

3.2.1 ディレクトリ作成

移行先のPCで PowerShell を管理者として実行。

以下のコマンドを一行ずつ実行します。

mkdir ~\vagrant\ubuntu64_18
cd ~\vagrant\ubuntu64_18

ubuntu64_18 ディレクトリが作成され、そこに移動している状態になりました。

N予備校ユーザーであれば、ここがpackage.boxファイルの置き場所になります。

移行元でpackage.boxファイルが作られたのと同じ場所にpackage.boxファイルを置けばOKです。

3.2.2 バージョンを指定して移行データを読み込む

上から順番に作業している方は VS Code (エディタ)のインストール及び設定は終わっていると思います。

ここでの手順にはエディタを使います。
まだ用意できていない方はエディタの準備から実施してください。

また、別のエディタを使っている方は適宜読み替えてください。


それでは始めましょう。

まず、3.2.1 でpackage.boxを置いたフォルダ内に、新しく metada.json という名前のファイルを作ります。
N予備校ユーザーであれば以下のような場所になると思います。

C:\Users\(ユーザー名)\vagrant\ubuntu64_18

metada.jsonVS Code で以下のように編集し、保存します。

{
	"name": "ubuntu/bionic64",
	"provider": "virtualbox",
	"versions": [
		{
			"version": "20181129.0.0",
			"providers": [
				{
					"name": "virtualbox",
					"url": "./package.box"
				}
			]
		}
	]
}


その後、PowerShell で以下のコマンドを実行します。

vagrant box add metadata.json

これで移行元で作ったpackage.boxが読み込まれました。

参考:

www.crossl.net

ちなみに:metadata.json を使わない場合

実は、metadata.json をわざわざ作らなくても以下のようなコマンドを実行すれば移行自体はできます。

vagrant box add ubuntu/bionic64 ./package.box

ただし上記コマンドを使用した場合には、バージョン情報が入力されずゼロとなってしまいます。

今回はbox名やバージョンについても移行元と合わせてなるべく忠実に再現したいがために metadata.json を使っています。

3.2.3 workspace の貼り付け

ここでの作業は非常にシンプルです。

移行元からUSBなどにコピーした workspace フォルダを移行先のPCの同じ場所に配置しましょう。

人によってはデータが大きく、多少時間がかかるかもしれません。
そろそろ休憩をかねてコーヒーでもいかがでしょうか。

3.2.4 Vagrantfile の変更

Vagrantfile は、N予備校の「03. ファイル操作」内での Linux 環境とホスト OS 間での共有フォルダ設定や、「09. http通信」でのポートフォワード設定で触るファイルです。

上記の授業を既に受講済の場合は、それらの設定を反映してしまいましょう。

vagrant init ubuntu/bionic64

まずは上記コマンドで設定ファイル(Vagrantfile)を作成します。

このとき、「もうあるよ!」という旨のメッセージが表示されるかもしれません。

エクスプローラなどから確認して実際にVagrantfileがあればOKです。

移行元のPCからコピーした Vagrantfile と移行先のPCで作成した Vagrantfile の内容を比較してみましょう。

移行元で名前を変更したテキストファイルと比較すれば、どっちがどっちがわからないという状況を回避できます。

VS Code でのテキスト比較の方法は以下のページが参考になりました。

www.atmarkit.co.jp


ある程度受講が進んでいる人であれば、【2019年度】プログラミング入門 Webアプリコースの「第2章 準備しよう」03. ファイル操作 での Linux 環境とホスト OS 間での共有フォルダ設定や、09. http通信 でのポートフォワード設定などにおける修正内容が反映されていると思います。

これらの変更を移行先の Vagrantfile に適用しましょう。

ただし、設定の修正はどこが変わっているかをきちんと確認したうえで行いましょう。

脳死で移行元のデータを上書きすると、移行先固有の情報が消えてしまう可能性があります。

3.2.5 残りの作業

ここから先はN予備校 【2019年度】プログラミング入門 Webアプリコースの「第2章 準備しよう」01. LinuxというOS に記載の手順と同様です。

vagrant up コマンドを実行して以下の文字列が表示されることを確認し、RLogin のインストールと設定を行いましょう。

Machine booted and ready!


一つ気を付けてほしいところがあります。

以下のコマンドを実行してみるとわかりますが、package.box を利用して移行した場合には、IdentityFile がN予備校の教材とは異なります。

vagrant ssh-config

おそらく、IdentityFile の最後(ファイル名)には vagrant_private_key と書かれているかと思います。

RLogin で「SSH認証鍵」を設定する際には、上記コマンドで表示される IdentityFile の文字列を使うことに注意してください。

おまけ:ハマったところ

N予備校の手順では、3.2.1 の後に下記コマンドを実行しますが、
今回のような移行作業においてはやらないでください。

vagrant box add ubuntu/bionic64 --box-version 20181129.0.0

私は勢いに任せてこれをやってしまった結果、余計なファイルがいろいろ作られてしまいました。

box remove コマンドを実行してから package ファイルを読み込もうとしましたが、vagrant up しようとしたら 以下の警告が無限に出てきました。

default: Warning: Authentication failure. Retrying...

調べたところ、vagrant ssh から公開鍵を修正すればええで!という投稿がチラホラあった(例:vagrant upで失敗する原因が鍵不一致の場合の対処法 - Qiita)ので vagrant ssh を実行してみると……、

vagrant@127.0.0.1: Permission denied (publickey)

はいクソ。もうお手上げだよ!!!

たぶんSSH認証系がおかしくなっちゃったんだろうな~とは思いましたが、よくわからんので諦めて VirtualboxVagrant をアンインストールして関連ファイルも丸ごと消した上でもう一度インストールしました。

Windows でのプログラムのアンインストール方法は流石にググってほしい。

ただ、アンインストールボタンを押すだけじゃなく残骸のフォルダを消す必要もあるのでそこは注意しましょう。

おそらく消さなきゃいけない項目は以下。

Virtualbox


Vagrant

  • C:\Users\(ユーザー名)\.vagrant.d
  • C:\Users\(ユーザー名)\vagrant

www.vagrantup.com


で、2 のVirtualBox のインストールからもう一度やり直したところ、うまくいきました。

素人が詰まったときは一からやり直すほうが手っ取り早いってはっきりわかんだね。

参考:

qiita.com

追記

  • git と github の連携情報もしっかり引き継がれてた。
  • node --version って打ったらちゃんとバージョン情報返された。
  • おかしなところがあればご指摘いただけると幸いです。


以上。