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