
Ubuntuのインストールとその後
こんにちは,ぎいとです.
先日の記事でUbuntu 20.04 LTS がリリースされたのでLiveUSBを作成してインストールしまして.今回はその続きでざっくりした開発環境を整えて行こう的な記事です.初心者による初心者のための記事ですので,上級者の方は嘲笑いながら見ていってください.
初心者のためとはいっても説明は雑かもしれないので気になるところは別の記事にまとめます.
こうした方がいいよ〜みたいなありがたい御意見もお待ちしています.それでは.
とりあえずapt-get
まずは絶対使うパッケージをインストールしていきます.その他にも俺はこれ使うぜみたいなの教えてください.
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install build-essential curl git vim tmux zsh
ちなみに数年前からLinuxbrewが利用可能.こちらを利用するのも手だがCaskは使えないようなので注意.Linuxbrewを利用する場合,Linuxbrewのインストール以外では基本的にroot権限が必要なくなるので煩わしさは減るかもしれない.筆者はUbuntuに浸かってみたいのでaptを使うことにしている.
なおapt-getでインストールされるパッケージと違うバージョンのパッケージがインストールされたりもするらしい.
build-essentialはgccとか色々です.あまり詳しくないので触れませんが,開発者はインストールしておくものでしょう.多分.
curlはwgetみたいなやつ.gitは言わずもがな.筆者はvimを扱えるかっこいい大人になりたいのでvim.もっとイケてる人はNeovimかも.そしてtmux.zshはなんかすごい人たちは使っているらしい?のでその真似です.
vimとgit,tmuxは初期設定を済ませます.記事はたくさんあると思うので割愛.zshは別記事にしたいと思います.
Albert
AlbertはMacで言うところのAlfredでしょうか.Linux環境であればそこまで重要ではないような気がしますが,アプリケーションの起動とかができます.プラグインを用いて辞書機能をつけることができるかもしれませんが,まだできてないのでできたら書きます.
似たようなアプリでCerebroなるものがあるようですが,日本語の記事が少ないのでとりあえず保留.使ってみて使用感が全然違うようならまたそちらも記事にします(多分しない).
インストールは公式に従います.ちょっと入力が面倒ですが手順通りで問題なくインストールできました.すでにUbuntu 20.04 に対応した手順が載っていたので難しくないでしょう.
インストール後起動すると,匿名でのデータ収集に協力するかどうか聞かれます.次のポップアップはOKを押します.続いて設定画面が開かれるので設定を済ませます.

Hotkeyは[Super(command,window)+Space]を割り当てる趣味です.Autostart on loginにチェックを入れますが,これだけでは自動で起動しないようなので次の処理.
$ mkdir ~/.config/autostart/
$ ln -s /usr/share/applications/albert.desktop ~/.config/autostart/
初期状態だとなにもしてくれないので,使用する機能にチェックを入れる.

Docker
Dockerはインストールの方法がいくつかあるようです.公式ドキュメントより簡単なやり方です.こちらを参照しました.
# docker.ioのインストール
$ sudo apt-get install docker.io
# docker.searviceを起動できるようにする
$ sudo systemctl enable --now docker
# dockerを利用できる権限をユーザに付与
$ sudo usermod -aG docker $(whoami)
# 再起動
$ reboot
# 確認
$ docker --version
$ docker run --rm docker/whalesay cowsay 'Hello, World!'
クジラさんが出迎えてくれたら完了.
ちなみにdocker.ioとは何かについてはこちらを参照するのが早そう.ざっくり言うとUbuntuが管理しているDockerのパッケージ.らしい.
ssh
Openssh-searverはsshで,ログインされる(サーバ)側としての準備です.逆にログインを行う(クライアント)側に必要なOpebssh-clientは通常インストールされているはず.なのでわざわざsshでログインしない場合には不要な設定.
ログインされる側Ubuntuは,LAN内でのIPアドレスを事前に固定してあります.紛らわしさを解消するため,サーバ側での操作はサーバ側でログインして行うことにしているが,できない場合はsshでログインして操作する(openssh-serverのインストールはどうしようもない?).
実際にsshでログインするにはopenssh-searverをインストールすればいいが,セキュリティを考えるなら公開鍵認証までやるべき.ちょっと複雑になるがサーバ側とクライアント側でいくつかの手順を踏む.
# openssh-serverのインストール
$ sudo apt-get install openssh-searver
# sshデーモンの起動を確認
$ systemctl status sshd
sshdがアクティブになっていることを確認したらクライアント側の設定に移ります.
クライアント側で次のようにして秘密鍵と公開鍵を作成,その後サーバ側に作成したauthorized_keysにクライアント側で作成した公開鍵を書き込む.コマンドが実行されたら質問されるので答える.
# 公開鍵と秘密鍵の作成
$ ssh-keygen -t ecdsa
...
1.保存先は~/.ssh/id_ecdsa でいいかどうか.こだわりがなければEnterを押せばOK.
2.パスフレーズの入力.なくてもいいがあった方がいい.秘密鍵を利用する際のパスワード.
3.確認用にもう一度入力.
ちなみにecdsaは楕円曲線暗号.rsaを指定することもできる.
次にサーバ側のIPアドレス(X.X.X.X)とサーバ側のユーザ名(uname)でクライアント側からscpで公開鍵を送る.これをautorized_keysに書き込めば下準備はほぼ完了./home/unameはunameのホームディレクトリ.
# .ssh/id_ecdsa.pub を送信
$ scp .ssh/id_ecdsa.pub uname@X.X.X.X:/home/uname
この段階ではサーバ側のユーザにログインする際のパスワードが求められるはず.正しく入力すればコピーが完了します.
ここまでできたら最後に,サーバ側で受け取った公開鍵をauthorized_keysに書き込む.
# 公開鍵認証を設定する
$ mkdir .ssh
$ touch .ssh/authorized_keys
$ cat id_ecdsa.pub >> .ssh/authorized_keys
クライアント側から先ほどssh-keygenコマンドで入力したパスフレーズでログインできることを確認して終了.
最後に/etc/ssh/sshd_configの設定をいくつか書き換えるが,公開鍵認証ができていることを確認できていることを必ず確認しできているならセキュリティを考慮して,PasswordAuthenticationをno,PubkeyAuthenricationをyes,PermitRootLoginをyes(Ubuntuの場合はprohibit-password)にする.サーバに直接ログインできず,公開鍵認証ができていなかった場合死ぬほど面倒なことになるらしい.
なおクライアント側でsshの設定ファイル(.ssh/config)を書いておくとユーザ名とIPアドレスの入力を省けたりする.
基本的なパッケージのインストールと設定はこれくらいでしょうか.
その他
好みの問題ですがデスクトップのサイドバー(Doc)をオフにします.また,~/Desktop/は空なのに,homeとゴミ箱があるのは気持ち悪いのでそれも消します.デスクトップがゴチャゴチャしているのは嫌いなのです.
$ gsettings set org.gnome.shell.extensions.dash-to-dock dock-fixed false
$ gsettings set org.gnome.shell.extensions.desktop-icons show-trash false
$ gsettings set org.gnome.shell.extensions.desktop-icons show-trash false
消したものを見えるようにするにはfalseをtrueにして同じコマンドでいいでしょう.
マウスなしでも操作がしやすいようにショートカットキーの設定もしたりします.といってもウィンドウの削除とかワークスペースの移動とかその辺りくらい.画面ロックも相当うざいからオフにした気がします.
ターミナルエミュレータは選ぶのが面倒だったのでインストールしませんでした.見た目は大事だけどとりあえずこのまま生きてみようと思います.
次はなにしようかな〜