Linuxセットアップ
はじめに
Linux 環境を作ったときに行っておきたい設定。
私が WSL2 でやっておきたいだけのメモです。
rc
PS1
WSL2 Ubuntu を主に使っているが、コンソールのプロンプトが ユーザ名@マシン名 ディレクトリ名 $ みたいになっている。
私の場合はブログで貼り付けたりするので、あまり名前などは載ってほしくない。
現在のディレクトリ名だけでよい。
PS1='\[\033[01;33m\]\w\[\033[0;32m\]\$\[\033[00m\] '
LD_LIBRARY_PATHとPKG_CONFIG_PATH
make install で /usr/local/ に置きたくないときがあって、そういうときに $HOME/.local/ に置いている。
ライブラリの読み込みだけなら LD_LIBRARY_PATH で、pkgconfig を使って CFLAGS などを設定したければ PKG_CONFIG_PATH も設定する。
検索パスなので、設定していても負担にはなるまい(たぶん)。
export LD_LIBRARY_PATH=$HOME/.local/lib
export PKG_CONFIG_PATH=$HOME/.local/lib/pkgconfig
LD_LIBRARY_PATH になくても /etc/ld.so.conf.d/ の設定も反映される。
WSL2のubuntu と RaspbianOS は /etc/ld.so.conf.d/libc.conf に /usr/local/lib が入っていたので LD_LIBRARY_PATH に書かなくても良い。
PKG_CONFIG_PATH は /etc にそういうのがないので書かないといけない。
が /usr/local/lib/pkgconfig などは参照するようになっているので書かなくても良い。
pkg-config --variable pc_path pkg-config で調べられる。
ベルを鳴らさない
他にもあると思うがよく鳴らしてしまうところだけ。
~/.inputrc
set bell-style none
~/.vimrc
set belloff=all
build-essential
sudo apt install build-essential
C/C++ のコンパイルと make はできるようになりそうだ。 CMake は含まれていない。
$ apt show build-essential
......
Depends: libc6-dev | libc-dev, gcc (>= 4:12.3), g++ (>= 4:12.3), make, dpkg-dev (>= 1.17.11)
......
いつも “build-essentials” と “s” を付けるかどうかで迷い、 英語圏は単数/複数に厳しいから付けるだろう、とやってエラーになる。 なんで付けないんだろう?
jq
sudo apt install jq
Git
名前とメールアドレス
初めて commit しようとしたときにエラーになって気付くから意識しなくてもよいとは思う。
仕事で別のアカウントで作業することもあるだろうから、そういうときはわざと設定せず、--global をつけずリポジトリごとに付けるようにすると良いだろう。
$ git config --global user.name "ほげほげ"
$ git config --global user.email "はにゃはにゃ"
デフォルトブランチ
特に呼び名にこだわりはないので、よく使われているし短いしで “main” にしておく。
git config --global init.defaultBranch main
protoc
protoc
protoc-gen-go, protoc-gen-go-grpc
$HOME/go/bin/ にインストールされる。
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
protoc-gen-validate
PostgreSQL
ユーザ(role)の追加
インストール直後は postgres ユーザしか扱えないようなので、一旦 su で postgres になりきる。
sudo su postgres
ROLE="アクセスさせたいアカウント"
PASS="あなたの使いたいパスワード"
echo "CREATE ROLE ${ROLE} CREATEDB LOGIN;" | psql
echo "ALTER ROLE ${ROLE} with PASSWORD '${PASS}';" | psql #パスワードを付けないなら不要(NULLで削除)
ROLE="削除したいアカウント"
echo "DROP ROLE ${ROLE};" | psql