UbuntuにVSCodeをインストールする3つの方法

次の3つの方法を全部試してみました。感想としては1の方法が何となく正当なやり方なのかなと思ってましたが、2の方法がめちゃくちゃ簡単でした。基本的に[公式サイト](https://code.visualstudio.com/docs/setup/linux)を参考にしています。

1. マイクロソフトのリポジトリを登録する方法
2. Snapパッケージを利用する方法
3. debパッケージから直接インストール

3つも方法はいらないという人は[こちら](https://qiita.com/yoshiyasu1111/items/e4db676e846897f8d554)をどうぞ。

# 関連サイト

- [AlmaLinuxにVSCodeをインストールする3つの方法](https://zenn.dev/yoshiyasu1111/articles/23bd8e315c46ef)
- [Ubuntu 22.04 に VSCode をインストールする](https://higmasan.com/2022/07/03/ubuntu-22-04%e3%81%abvscode%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/)
- [LinuxにVSCodeをインストールする](https://higmasan.com/linux/install-vscode/)

# 環境

- ubuntu 18.04
- vscode 1.33.1

# スクリプト

以下につらつらと実行してみたのですが単調作業だったので、bashスクリプト作成しました。[gitlab](https://gitlab.com/yoshiyasu1111/install_vscode/)に置いています。

# 1. マイクロソフトのリポジトリを登録する方法

## 準備

キーをダウンロードする時にcurlを使用するため`curl`をインストールします。

```
~$ sudo apt install curl
```

aptのレポジトリで使用するマイクロソフトのキーをダウンロードしてきます。`microsoft.asc`はASCII形式なので、`gpg --dearmor`コマンドでバイナリ形式に変換して`microsoft.gpg`としています。

```
~$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg

~$ ls -l
合計 4
-rw-rw-r-- 1 yoshi yoshi 641  4月 15 13:34 microsoft.gpg
```

## リポジトリを登録する

ダウンロードしてきたキー`microsoft.gpg`を`etc/apt/trusted.gpg.d/`にコピーします。installコマンドはコピー先ファイルの所有者やグループ、パーミッションの指定ができます。cpコマンドを使った場合は`cp -> chmod -> chown`をしなければいけないのをコマンド一つでできます。（これは初めて知りました。）`gpg --dearmor`コマンドで作成した`microsof.gpg`はパーミッション:664、所有者:yoshi、グループ:yoshiだが、コピー先の`/etc/apt/trusted.gpg.d/microsoft.gpg`はパーミッション:644、所有者:root、グループ:rootになっています。

```
~$ ls -l /etc/apt/trusted.gpg.d/
合計 12
-rw-r--r-- 1 root root 2796  9月 18  2018 ubuntu-keyring-2012-archive.gpg
-rw-r--r-- 1 root root 2794  9月 18  2018 ubuntu-keyring-2012-cdimage.gpg
-rw-r--r-- 1 root root 1733  9月 18  2018 ubuntu-keyring-2018-archive.gpg

~$ sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/

~$ ls -l /etc/apt/trusted.gpg.d/
合計 16
-rw-r--r-- 1 root root  641  4月 15 13:45 microsoft.gpg
-rw-r--r-- 1 root root 2796  9月 18  2018 ubuntu-keyring-2012-archive.gpg
-rw-r--r-- 1 root root 2794  9月 18  2018 ubuntu-keyring-2012-cdimage.gpg
-rw-r--r-- 1 root root 1733  9月 18  2018 ubuntu-keyring-2018-archive.gpg
```

マイクロソフトのリポジトリを登録します。`/etc/apt/sources.list.d/`ディレクトリにaptのリポジトリ定義のファイル`vscode.list`を追加します。

```
~$ ls /etc/apt/sources.list.d/

~$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'

~$ ls /etc/apt/sources.list.d/
vscode.list

~$ cat /etc/apt/sources.list.d/vscode.list 
deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main
```

## インストール

先ほど追加したマイクロソフトのリポジトリはhttpsアクセスになります。aptでhttpsアクセスするには`apt-transport-https`が必要になるためインストールします。

```
~$ sudo apt install apt-transport-https
```

リポジトリ情報を更新するため`apt update`コマンドを実行します。先ほど追加したリポジトリ`https://packages.microsoft.com/repos/vscode`から情報を取得してきていることが確認できます。

```
~$ sudo apt update
ヒット:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
取得:4 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
取得:5 https://packages.microsoft.com/repos/vscode stable InRelease [3,182 B]         
取得:6 https://packages.microsoft.com/repos/vscode stable/main amd64 Packages [109 kB]
365 kB を 1秒 で取得しました (286 kB/s)                        
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています       
状態情報を読み取っています... 完了
アップグレードできるパッケージが 196 個あります。表示するには 'apt list --upgradable' を実行してください。
```

`apt list`コマンドでcodeで検索をかけるとバージョン1.33.1が表示されました。-aオプションをつけて実行すると過去のバージョンを表示されます。

```
~$ apt list code
一覧表示... 完了
code/stable 1.33.1-1554971066 amd64
N: 追加バージョンが 60 件あります。表示するには '-a' スイッチを付けてください。

~$ sudo apt list -a code
一覧表示... 完了
code/stable 1.33.1-1554971066 amd64
code/stable 1.33.0-1554390824 amd64
code/stable 1.32.3-1552606978 amd64
（略）
code/stable 1.10.1-1488415350 amd64
code/stable 1.10.0-1488387854 amd64
code/stable 1.9.1-1486597190 amd64
```

準備は整ったのでvscodeをインストールします。インストールが完了して`code --version`コマンドを実行するとバージョン1.33.1がインストールされていることがわかります。

```
~$ sudo apt install code
~$ code --version
1.33.1
51b0b28134d51361cf996d2f0a1c698247aeabd8
x64
```

起動は`code`です。

```
~$ code
```

## アンインストール

あまり機会がないと思いますがアンインストールの方法です。インストールしてきたパッケージを`apt remove`コマンドで削除して、不要になったパッケージも`apt autoremove`コマンドで削除します。追加したaptのリポジトリ定義ファイルとマイクロソフトのキーの削除をします。

```
~$ sudo apt remove apt-transport-https curl code
~$ sudo apt autoremove
~$ sudo rm /etc/apt/sources.list.d/vscode.list
~$ sudo rm /etc/apt/trusted.gpg.d/microsoft.gpg
```

`apt update`コマンドを実行するとマイクロソフトのリポジトリからは情報を取得してきていないことがわかります。

```
~$ sudo apt update
ヒット:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]                   
取得:4 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
252 kB を 1秒 で取得しました (194 kB/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています       
状態情報を読み取っています... 完了
アップグレードできるパッケージが 196 個あります。表示するには 'apt list --upgradable' を実行してください。
```

起動もできません。

```
~$ code
-bash: /usr/bin/code: そのようなファイルやディレクトリはありません
```

# 2. snapパッケージを利用する方法

## インストール

`snap install`でcodeをインストールします。`snap list`コマンドでcodeが追加されていることがわかります。

```
~$ sudo snap install --classic code
code 51b0b281 from Visual Studio Code (vscode✓) installed

~$ snap list
Name                  Version         Rev   Tracking  Publisher   Notes
code                  51b0b281        6     stable    vscode✓     classic
core                  16-2.37.1       6350  stable    canonical✓  core
gnome-3-26-1604       3.26.0          74    stable/…  canonical✓  -
gnome-calculator      3.30.1          260   stable/…  canonical✓  -
gnome-characters      3.30.0          139   stable/…  canonical✓  -
gnome-logs            3.30.0          45    stable/…  canonical✓  -
gnome-system-monitor  3.30.0          57    stable/…  canonical✓  -
gtk-common-themes     0.1-4-g88bc1b2  818   stable/…  canonical✓  -
```

起動はパスを通していないため`/snap/bin/code`です。

```
~$ /snap/bin/code
```

コマンドラインでバージョンも確認できます。1.33.1でした。

```
~$ /snap/bin/code --version
1.33.1
51b0b28134d51361cf996d2f0a1c698247aeabd8
x64
```

## アンインストール

こちらもあまり機会はないと思いますがアンインストールの方法です。`snap remove`コマンドでcodeの削除をします。`snap list`コマンドで確認すると確かにcodeの文字が見当たりません。

```
~$ sudo snap remove code
[sudo] yoshi のパスワード: 
code removed

~$ snap list
Name                  Version         Rev   Tracking  Publisher   Notes
core                  16-2.37.1       6350  stable    canonical✓  core
gnome-3-26-1604       3.26.0          74    stable/…  canonical✓  -
gnome-calculator      3.30.1          260   stable/…  canonical✓  -
gnome-characters      3.30.0          139   stable/…  canonical✓  -
gnome-logs            3.30.0          45    stable/…  canonical✓  -
gnome-system-monitor  3.30.0          57    stable/…  canonical✓  -
gtk-common-themes     0.1-4-g88bc1b2  818   stable/…  canonical✓  -

~$ /snap/bin/code --version
-bash: /snap/bin/code: そのようなファイルやディレクトリはありません
```

# 3. debパッケージから直接インストール

## 準備

debパッケージをダウンロードしてくるときにcurlを使用するのでインストールします。

```
~$ sudo apt install curl
```

## debパッケージのダウンロード

VSCodeのdebパッケージをダウンロードしてきます。下の例のURLはリダイレクトされるので`-L`オプションで対応します。ファイル名を`-o`オプションで指定します。

```
~$ curl -L https://go.microsoft.com/fwlink/?LinkID=760868 -o vscode.deb

~$ ls -lh
合計 47M
-rw-rw-r-- 1 yoshi yoshi 47M  4月 15 16:00 vscode.deb
```

## インストール

`apt install`コマンドでdebパッケージを指定すればインストールすることができます。

```
~$ sudo apt install ./vscode.deb
```

バージョンは同じ1.33.1ですね。

```
~$ code --version
1.33.1
51b0b28134d51361cf996d2f0a1c698247aeabd8
x64
```

リポジトリを登録した場合と違い過去バージョンについての情報は取得できません。

```
~$ apt list -a code
一覧表示... 完了
code/now 1.33.1-1554971066 amd64 [インストール済み、ローカル]
```

## アンインストール

少し飽きてきましたがお約束通りのアンインストール

```
~$ sudo apt remove code

~$ code --verison
-bash: /usr/bin/code: そのようなファイルやディレクトリはありません
```