あけましておめでとうございます。年賀状代わりに開発環境の構築記事を差し上げます。
いやわりと真剣に、開発環境にはその開発者の近況が表れていると思うのですよ。
いっちょあなたもどうですか 😀
閑話休題。
以下今日やった Ubuntu 20.04 LTS のインストール作業記録です。語調変わるのはご勘弁。
Hyper-V VM の用意
特に難しいことはない。
ブリッジ仮想スイッチを作り、第2世代タイプにしてセキュアブートを無効化するくらい。
あとチェックポイント(自動スナップショット)はうざいので無効化している。
WSL2 は、インフラ用途だと systemd がないとかカーネルを使い分けられないので見送っている。
Ubuntu のインストール
Ubuntu の GUI はいらないので Server をインストールする。
https://releases.ubuntu.com/20.04.1/ubuntu-20.04.1-live-server-amd64.iso
このイメージには Canonical が作っている subiquity というインストーラーが入っていて、従来の debian-installer よりとても扱いやすい。仕事ではイメージをハックしてカスタムインストーラーを作っているのだけどそれはまた別途どこかに書く、かもしれない。
インストール後の作業
systemd-networkd の設定
後述するように netplan.io は消してしまうので、ネットワーク設定は /etc/systemd/network/eth0.network
ファイルに改めて作っておく。
こんな感じで書ける。
[Match] Name=eth0 [Network] Address=10.AA.BB.CC/24 Gateway=10.AA.BB.1 DNS=8.8.8.8
不要なツールを purge
外部通信を行うツールや個人的に絶対使わないツールを purge しておく。一部ツールは勝手に外部通信する。
- apport, apport-symptoms: crash report 収集ツール。無効化されているし、いらない
- fwupd: ファームウェア自動更新ツール, インターネットからダウンロードを試みる
- popularity-contest: 定期的にパッケージインストール情報を外部に送信する
- unattended-upgrades: 自動的にパッケージ更新を行う(ために外部通信する)
- update-manager-core: パッケージ更新情報を自動で取得する(ために外部通信する)
- nano: 簡素なエディタ。これがあると
visudo
が vi(vim) でなく nano を起動してしまう - netplan.io: サーバーでは systemd-networkd を直接使うほうが幅広い機能を使えて良い
$ sudo apt purge -y --autoremove apport apport-symptoms \ fwupd nano netplan.io popularity-contest \ unattended-upgrades update-manager-core
以下のパッケージが purge できた。
- apport:amd64 (2.20.11-0ubuntu27.12)
- apport-symptoms:amd64 (0.23)
- bolt:amd64 (0.8-4)
- cloud-init:amd64 (20.2-45-g5f7825e2-0ubuntu1~20.04.1)
- eatmydata:amd64 (105-7)
- fwupd:amd64 (1.3.11-1~focal1)
- fwupd-signed:amd64 (1.27.1ubuntu2+1.3.11-1~focal1)
- libarchive13:amd64 (3.4.0-2ubuntu1)
- libeatmydata1:amd64 (105-7)
- libfwupd2:amd64 (1.3.11-1~focal1)
- libfwupdplugin1:amd64 (1.3.11-1~focal1)
- libgcab-1.0-0:amd64 (1.4-1)
- libgpgme11:amd64 (1.13.1-7ubuntu2)
- libgudev-1.0-0:amd64 (1:233-1)
- libgusb2:amd64 (0.3.4-0.1)
- libjson-glib-1.0-0:amd64 (1.4.4-2ubuntu2)
- libjson-glib-1.0-common:amd64 (1.4.4-2ubuntu2)
- libnetplan0:amd64 (0.99-0ubuntu3~20.04.2)
- libsmbios-c2:amd64 (2.4.3-1)
- libtss2-esys0:amd64 (2.3.2-1)
- libxmlb1:amd64 (0.1.15-2)
- nano:amd64 (4.8-1ubuntu1)
- netplan.io:amd64 (0.99-0ubuntu3~20.04.2)
- popularity-contest:amd64 (1.69ubuntu1)
- python3-apport:amd64 (2.20.11-0ubuntu27.12)
- python3-blinker:amd64 (1.4+dfsg1-0.3ubuntu1)
- python3-debconf:amd64 (1.5.73)
- python3-debian:amd64 (0.1.36ubuntu1)
- python3-distro-info:amd64 (0.23ubuntu1)
- python3-distupgrade:amd64 (1:20.04.23)
- python3-entrypoints:amd64 (0.3-2ubuntu1)
- python3-httplib2:amd64 (0.14.0-1ubuntu1)
- python3-importlib-metadata:amd64 (1.5.0-1)
- python3-jinja2:amd64 (2.10.1-2)
- python3-jsonpatch:amd64 (1.23-3)
- python3-json-pointer:amd64 (2.0-0ubuntu1)
- python3-jsonschema:amd64 (3.2.0-0ubuntu2)
- python3-jwt:amd64 (1.7.1-2ubuntu2)
- python3-keyring:amd64 (18.0.1-2ubuntu1)
- python3-launchpadlib:amd64 (1.10.13-1)
- python3-lazr.restfulclient:amd64 (0.14.2-2build1)
- python3-lazr.uri:amd64 (1.0.3-4build1)
- python3-markupsafe:amd64 (1.1.0-1build2)
- python3-more-itertools:amd64 (4.2.0-1build1)
- python3-oauthlib:amd64 (3.1.0-1ubuntu2)
- python3-problem-report:amd64 (2.20.11-0ubuntu27.12)
- python3-pyrsistent:amd64 (0.15.5-1build1)
- python3-secretstorage:amd64 (2.3.1-2ubuntu1)
- python3-simplejson:amd64 (3.16.0-2ubuntu2)
- python3-systemd:amd64 (234-3build2)
- python3-update-manager:amd64 (1:20.04.10.1)
- python3-wadllib:amd64 (1.3.3-3build1)
- python3-zipp:amd64 (1.0.0-1)
- tpm-udev:amd64 (0.4)
- ubuntu-minimal:amd64 (1.450.1)
- ubuntu-release-upgrader-core:amd64 (1:20.04.23)
- ubuntu-server:amd64 (1.450.1)
- ubuntu-standard:amd64 (1.450.1)
- unattended-upgrades:amd64 (2.3)
- update-manager-core:amd64 (1:20.04.10.1)
- update-notifier-common:amd64 (3.192.30)
build-essential をインストール
開発機なので基本として。gcc や make など必須系のパッケージが入る。
$ sudo apt update $ sudo apt install -y --no-install-recommends build-essential
dotfiles で初期設定
よくあるあれです。 github.com
やってることは本当に必要最小限。VSCode に乗り換えたので .emacs もない。
FILES = .gitconfig .bash_aliases .screenrc .tmux.conf .vimrc PACKAGES = build-essential manpages-dev glibc-doc linux-doc git jq \ gdb debconf-utils fakeroot devscripts PWD := $(shell pwd) all: @echo Making symlinks to dotfiles... for f in $(FILES); do \ rm -f $$HOME/$$f; \ ln -s $(PWD)/$$f $$HOME/$$f; \ done @echo Insert hooks... if ! grep -q '^. $(PWD)/.bashrc' $$HOME/.bashrc; then \ echo ". $(PWD)/.bashrc" >>$$HOME/.bashrc; \ fi if ! grep -q '^. $(PWD)/.profile' $$HOME/.profile; then \ echo ". $(PWD)/.profile" >>$$HOME/.profile; \ fi if ! grep -q '^ . $$HOME/.profile.local' $$HOME/.profile; then \ echo 'if [ -f $$HOME/.profile.local ]; then' >>$$HOME/.profile; \ echo ' . $$HOME/.profile.local' >>$$HOME/.profile; \ echo 'fi' >>$$HOME/.profile; \ fi setup: @echo Install packages... sudo apt-get -y install --no-install-recommends $(PACKAGES) .PHONY: all setup
$ git clone https://github.com/ymmt2005/dotfiles $ cd dotfiles $ make setup $ make
Go をインストール
最近は Go でしかプログラミングしてません。
Python 長年使っていたのも、今やってるプロジェクトでは全廃しちゃいました。
というわけで Go をインストールします。
$ sudo rm -rf /usr/local/go # 再インストールするときは消してから $ curl -fsL https://golang.org/dl/go1.15.6.linux-amd64.tar.gz | sudo tar -C /usr/local -xzf -
Docker をインストール
snap ではなく Docker 公式を入れるのが無難です。 公式手順通りにやるだけ。
Install Docker Engine on Ubuntu | Docker Documentation
以上
Windows の VisualStudio Code から Remote Development with SSH で後は開発できるので、これにて完了です。
開発環境、年々シンプルになって、こだわりのポイントが何を purge するかくらいになっちゃいました。