概要
先日、Ubuntu 20.04 がリリースされましたね!リリースノートによると、ついに Python のデフォルトバージョンが3.8
になりました。
大変おめでたいので、開発用 PC に Ubuntu 20.04 をセットアップした時のメモを、備忘録として残してみます。
対象読者
- Ubuntu をソフトウェア開発に使う方
- Ubuntu 初〜中級者
目次
Ubuntu 20.04 のインストール
環境
Ubuntu だと相性問題も色々とあるかもしれないので、一応主要な情報を記載しておきます。
こちらの構成で、特に問題なくインストールできました。
- OS: Ubuntu 20.04 Desktop
- CPU: Ryzen 9 3900X
- GPU: RTX 2070
- MB: X570 Taichi
ISO ファイルのダウンロード
こちらからダウンロードします。
様々な Ubuntu フレーバーも存在するので、お好きなものを入れても良いと思います。
個人的にはUbuntu Budgie
は、便利な機能がたくさんありそうなので気になりました。
インストール USB の作成
Windows だとRufus、Ubuntu だとSuper -> "usb"で検索
してStartup Disk Creator
が使えます。
どちらも Ubuntu 公式にドキュメントがあります。
USB から起動してインストール
事前に、BIOS で起動順を設定しておくか、手動で USB から起動して下さい。
デュアルブートにする場合はパーティションの設定が必要ですが、それ以外は特にハマらないと思うので、ここの説明は省略します。
NVIDIA Driver のインストール
ここはドライバのインストール以前に OS を起動する段階でハマる可能性が高いです。
Ubuntu 18.04 では、インストール直後に GUI がバグっているため、CUI ログインをして作業が必要だったり、色々と苦しめられました…
今回はすんなり起動してくれましたが、もしハマった人は、古いバージョンを入れてみると良いかもしれません。
それでもダメな場合は、Ubuntu NVIDIA ドライバ インストール
等でググると色々出てくるので、頑張って解決しましょう。
さて、ドライバのインストールですが、いくつか方法があります。
-
ubuntu-drivers
コマンドでインストールする -
Software & Updates
のAdditional Drivers
からインストールする - NVIDIA 公式からドライバをダウンロードしてインストールする
詳細は、こちらに詳しく書いてあるので(Ubuntu 18.04 ですが)、ここでは 1 についてのみ説明します。
(Optional) PPA を追加する
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
(Optional) 推奨ドライバを確認する
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:03.1/0000:0d:00.0 ==
modalias : pci:v000010DEd00001F07sv00001043sd00008670bc03sc00i00
vendor : NVIDIA Corporation
model : TU106 [GeForce RTX 2070 Rev. A]
driver : nvidia-driver-440 - distro non-free recommended
driver : nvidia-driver-435 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
ドライバをインストールする
- 自動で推奨ドライバをインストールする場合
sudo ubuntu-drivers autoinstall
- 手動でバージョン指定をしてインストールする場合
sudo apt install nvidia-driver-440
はい、これで完了です…とは残念ながらなりません。
ドライバのインストール後に再起動したら、ログイン画面でループしてしまう可能性もあるため、再起動してログインできるまでが NVIDIA ドライバインストールです。
ログインループにハマってしまった場合、違うバージョンのドライバを入れたり、
Ubuntu NVIDIA ドライバー
+ blacklist nouveau / grub nomodeset / セキュアブート
あたりのワードで検索してみると、解決策が見つかるかもしれません。
今回はこちらも、特にトラブルは発生しませんでした。平和な時代になったものです。
最終的に、nvidia-smi
を実行して GPU の情報が表示されれば完了です。
$ nvidia-smi
Thu Apr 30 02:57:11 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64 Driver Version: 440.64 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 2070 Off | 00000000:0D:00.0 On | N/A |
| 26% 31C P8 9W / 215W | 1210MiB / 7979MiB | 3% Default |
+-------------------------------+----------------------+----------------------+
SSH 公開鍵の生成と登録
ssh-keygen -t rsa -b 4096
cat ~/.ssh/id_rsa.pub
表示された公開鍵をコピペして登録して下さい。
日本語入力の設定
何通りか方法があります。
日本語 Remixをインストールした場合は、特に設定不要のはずです。
Option1. インプットメソッドフレームワークの選択
iBus
Fcitx
- その他
個人的には、JIS キーボードなら iBus
で良いかと思います。
US キーボードの場合は、Fcitx
だと Alt の空打ちで 日本語入力 ON/OFF の切り替えができるそうなので、便利かもしれません。
Fcitx
の設定については、こちらが分かりやすかったです。
Option2. 日本語入力 ON/OFF の切り替え方法
- インプットメソッドフレームワークで切り替える
- IME (
Mozc
) 単体で切り替える
1 は、インプットメソッドフレームワーク側でキーボードを2種類用意しておき、Mozcは常に日本語入力ON、もう一方は常にOFFで切り替える
というイメージです。
僕は 2 を使っています。Mac 風にしたい方は、以下のような設定をしておくと便利です。
Mozc
で JIS キーボードなのに US キーボードとして認識されてしまう場合は、/usr/share/ibus/component/mozc.xml
を編集すれば治ります。
- <layout>default</layout>
+ <layout>jp</layout>
Terminatorの項にも書いてありますが、ibus-setup
-> EmojiでCtrl-Shift-E
をCtrl-Shift-Alt-E
あたりに変更しておくと良いと思います。
ソフトウェアのインストール
GUI アプリケーション
特に解説はしませんが、リンクだけ書いておきます。
apt
とsnap
どちらでもインストールができるものが多いですが、snap
版だと日本語入力ができない不具合もあるそうなので、僕はsnap
推奨のもの以外はapt
で入れています。
仕事用と個人用でブラウザのプロファイルを分けたい方は、Chrome の他に、Chrome Beta もインストールするのがオススメです。
Ubuntu 版 の Chrome 単体では、Windows 版 のように上手くプロファイル管理をしてくれないと感じたためです。
参考までに僕の使っているものを載せてみます。必要なものだけインストールしてください。
最初に sudo apt install git curl
くらいはしておくと、色々とスムーズにインストールできると思います。
fish shell
機能豊富で設定も少なくて済む、ミニマリストにピッタリの Shell です。
プラグイン管理の Fisher と、便利なプラグインもいくつか一緒に入れると良いです。
# Fish Shell
sudo apt install fish
# Fisher
curl -sL git.io/fisher | source && fisher install jorgebucaran/fisher
# Plugins
fish -c "fisher install rafaelrinaldi/pure oh-my-fish/plugin-pbcopy edc/bass jethrokuan/z jethrokuan/fzf decors/fish-ghq"
sudo apt install fzf
chsh
でログインシェルを変更しても良いですが、色々とハマりポイントもあるのと、Bash
との併用のために環境変数を共通化したいので、僕は以下のように .bashrc
で fish
を呼び出しています。
(ROSを使っていると、ツール周りのサポートの関係で、基本はfishを使いつつ、必要な時はBashも使いたい
ことが結構あるんですよね。)
# ~/.bashrc
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# Original .bashrc
source /etc/skel/.bashrc
# Fish Shell
exec fish
参考
source /etc/skel/.bashrc
の部分は、元々の.bashrc
が長くて見通しが悪いので置き換えています。スッキリするのでオススメです。
先頭の# If not running interactively, don't do anything
は消すと問題が起きるので残しましょう。
上記は簡単にするために省略して書きましたが、このままだと問題があります。
問題 1. fish
がインストールされていないとターミナルが起動しなくなる
# ~/.bashrc
command -v fish > /dev/null 2>&1 && exec fish
問題 2. fish
上で bash
と実行しても Bash
に切り替わらない
以下のようなハックで回避できます。
# ~/.config/fish/config.fish
alias bash='env FISH_VERSION=$FISH_VERSION bash'
# ~/.bashrc
if [ -z "$FISH_VERSION" ]; then
command -v fish > /dev/null 2>&1 && exec fish
fi
Vim
クリップボード連携機能が必要な場合は vim-gtk3
をインストールして、~/.vimrc
に set clipboard=unnamedplus
を追加します。
以前は vim-gnome
もありましたが、廃止されたようですね。
sudo apt install vim-gtk3
Terminator
分割できるターミナルです。デフォルトで使い勝手が良いので使っています。
Ctrl-Shift-E / Ctrl-Shift-O / Ctrl-Shift-X
だけ覚えておけば何とかなります。
sudo apt install terminator
Ctrl-Shift-Eが絵文字にアサインされていたので、違うものに変更した方が良さそうです。
Linuxbrew
apt
だと配布されていない or バージョンが古いソフトをインストールする場合に便利です。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
# ~/.bashrc
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
Docker
これも色々とインストール方法があってややこしいのですが、今回はこちらの方法でインストールしました。
curl -fsSL https://get.docker.com | sh
でも良いと思います。
GPUを使う場合はここを見てnvidia-container-toolkit
をインストールします。
その他
その他インストールしたソフトの名前と一言コメントだけ書いておきます。
最初に入れておかなくても、必要になったらその場でインストールすれば良いです。
apt で入るもの
-
flameshot
: スクショを撮って画像を加工できます -
peek
: GIF を撮るのに便利です -
simplescreenrecorder
: GIF 以外はこっちを使っています -
ffmpeg
: 撮影した動画をさくっと圧縮するのに便利です -
silversearcher-ag
:grep
はもう使っていられない… -
mlocate
:locate
が使えるようになります -
bat
: いい感じにシンタックスハイライトしてcat
してくれます(apt
版だとコマンドはbatcat
です) -
fd-find
:find
のオプションも僕には難しすぎるので…(apt
版だとコマンドはfdfind
です) -
fzf
: これ単体で使うことは少ないですが、色んなツールが依存していたりします -
tig
: TUI で Git ログを見れます -
tree
: ディレクトリ構造を見れます -
xsel
: 標準出力をクリップボードにコピーできます(pbcopy
のエイリアスを作るのがオススメです) -
htop
: これを表示させているだけで仕事している感が出るとか出ないとか -
jq
: JSON ファイルから何かを抽出したい時(ほとんどの人は滅多になさそう)に使えます
brew で入るもの
-
ripgrep
:ag
に飽きた方へ(あまり使ってないです) -
sd
:sed
の使い方イマイチわからん人でも使えると思います -
ghq
:git clone
時にどこに置くか考えなくて良くなるので便利です -
yq
:jq
の YAML 版です
カスタマイズ
ホームディレクトリのフォルダ名を英語にする
これをしないと実質 cd
できないので、必ず設定した方が良いです。
LANG=C xdg-user-dirs-gtk-update
CapsLock を Ctrl にする
sudo apt install gnome-tweaks
gnome-tweaks
で gnome-tweaks
を開き、以下の箇所で設定できます。念の為2つ設定しています。
- Keyboard & Mouse -> Additional Layout Options
- Ctrl Position -> Caps Lock as Ctrl
- Caps Lock behavior -> Caps Lock is also a Ctrl
または、以下のコマンドでも変更できます。
gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:nocaps', 'caps:ctrl_modifier']"
どうやら不具合でこの設定が無効化されてしまうことがあるようですが、Alt+F2
-> r
-> Enter
をすれば直るようです。
https://askubuntu.com/questions/1286997/caps-lock-remapping-stops-working
ターミナルで無限スクロールバックできるようにする
デフォルト値だと、ログメッセージが途切れてしまうことが多いので、設定した方が良いです。
Terminator
だと以下のように設定できます。
スクリーンショットのショートカットを変更する
ご自分の用途に合わせて、好きなように設定すれば良いです。
僕は選択範囲をクリップボードにコピーしてSlackに貼り付ける
ことが多いので、それに PrintScreen
を割り当てています。
flameshotを使う方は、以下のように既存のショートカットを無効化し、flameshot
のショートカットを追加すると良いでしょう。
スワップファイルを拡張する
増やしておくと安心です。
# (Check swapfile)
free -h
# Remove current swapfile
sudo swapoff /swapfile
sudo rm /swapfile
# Create new swapfile
sudo fallocate -l 32G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# (Check swapfile again)
free -h
Windows とのデュアルブートで時計がずれるのを直す
時計がずれると気になる人は設定してみて下さい。
sudo timedatectl set-local-rtc true
便利な GNOME Shell Extensions をインストールする
sudo apt install chrome-gnome-shell
をしてから、Firefox か Chrome で ここを開くと、便利な拡張機能がインストールできます。
Click here to install browser extension.
と表示されていたらクリックして、ブラウザ拡張をインストールして下さい。
拡張機能のページで、以下のようにボタンをON
にするとインストールされます。
設定用アプリは、extensions
で検索すると出てきます。 Tweaks
からでも設定できます。
僕は以下のものをインストールしています。
このへんを見て、自分に合うものを探してみて下さい。
まとめ
自分の開発用 PC セットアップ方法を整理してみました。もし誰かのお役に立てば幸いです。
詳細までは書ききれなかったとこも多いので、気になる方はご自身で深く調べてみて下さい。
他にもオススメの設定があれば、コメント欄でぜひ教えて下さい!