Open6

盆栽活動

kfly8kfly8
  • neovim の設定を、vim script から luaに変更
  • lsp client をcocから、builtin client に変更
  • asdf, homebrew をやめる
    • package 管理は、devboxに変更
    • 言語処理系は、miseに変更
kfly8kfly8

手元の開発環境を次のように変更した。このスクラップは、その備忘。

BEFORE

  • asdf
    • 主にプログラミング言語の処理系をいれるのに利用。
    • 可能な限り .tool-versionsに寄せようとしていた
  • Homebrew
    • asdfで入れられないパッケージをいれるのに利用
    • 現実は、asdfでも入れられるものもごちゃっとはいってた。

AFTER

  • Devbox
    • 手元の開発環境の身の回り品はこちらでいれる。
  • mise
    • 補助ツール。プログラミング言語の処理系をさくっと複数試したい時に利用
    • mise.toml はわざとリポジトリに入れていない。

https://github.com/kfly8/dotfiles

kfly8kfly8

BEFOREで気になっていた点

Homebrewは豊富にパッケージが利用できるし手軽。ただ、複数の環境でシュッと同じ状態を作ることは面倒だと感じていた。Brewfileを利用すれば、パッケージを一覧管理できるが、面倒くさがりの私は、このBrewfileに記述することなく、インストールしたパッケージがたくさんあった。

また、asdfは、.tool-versions でパッケージを一覧管理できるのでこれで管理しようとしていたが、asdfで入れられないパッケージもあり、全てのパッケージをこちらに寄せきれなかった。また、さくっと特定バージョンのプログラミングを試すのに、miseと比べると手順が多く煩わしく感じた。

AFTERの希望

改めて考えてみると、neovim, ghq, fzfなど手元の開発環境の身の回り品は、安定して動作して欲しいと思った。そして、どの環境であっても同じように動作してほしい。キーボードを持ち歩いて生活するのと同じ。いつも同じように安心して、プログラミングしたい。

検討に挙がったもの

  • asdfをやめて、homebrewに戻し、Brewfileに寄せ切る。運用がんばる。
    • 運用でカバーできないから、複数環境で同じ状態を作ることに苦労している今がある。頑張るのはやめる。
  • home-manager
    • dotfilesを置き換える目的に合致しそう。
    • 設定ファイルの書き方が、Devboxに比べ、nixの学習が必要になりそう。
  • jetfiy.comのDevbox
    • devbox globalを使えば、dotfilesを置き換えできそう。⇒自分はできた。
    • home-managerと違い、JSONで簡潔に設定できて楽そう。
    • .devcontainerやDockerファイルの生成など、応用が効きやすい作りになってそう。

https://www.publickey1.jp/blog/22/dockerdevbox_020.html

kfly8kfly8
  • Net::SSLeayをインストールするために、libressl をソースからインストールした。
# tar.gz はここにある。
https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/

curl -O https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.6.1.tar.gz

# ダウンロードしたアーカイブを解凍
tar -xzf libressl-3.6.1.tar.gz
cd libressl-3.6.1


# configureスクリプトの実行
./configure --prefix=/usr/local/libressl

# makeコマンドでコンパイル
make

# インストール(sudo権限が必要な場合があります)
sudo make install


export OPENSSL_PREFIX="/usr/local/libressl"

# 他の関連する環境変数も設定
export PATH="$OPENSSL_PREFIX/bin:$PATH"
export LDFLAGS="-L$OPENSSL_PREFIX/lib"
export CPPFLAGS="-I$OPENSSL_PREFIX/include"
kfly8kfly8
  • DBD::postgres や DBD::msyqld をインストールするために、postgres, mysqlをdevbox globalでインストールした。
  • brew prefix みたいなことを、nix で一発でする方法がわからなくて、愚直な書き方になった。
export OPENSSL_PREFIX="/usr/local/libressl"
export PATH="$OPENSSL_PREFIX/bin:$PATH"

export PGDATA=$DEVBOX_GLOBAL/virtenv/postgresql/data
export PGHOST=$DEVBOX_GLOBAL/virtenv/postgresql

export MYSQL_UNIX_PORT=$DEVBOX_GLOBAL/virtenv/mysql80/run/mysql.sock
export MYSQL_PID_FILE=$DEVBOX_GLOBAL/virtenv/mysql80/run/mysql.pid
export MYSQL_BASEDIR=$DEVBOX_GLOBAL/nix/profile/default
export MYSQL_HOME=$DEVBOX_GLOBAL/virtenv/mysql80/run
export MYSQL_DATADIR=$DEVBOX_GLOBAL/virtenv/mysql80/data

# To build Net::SSLeay
export LDFLAGS="-L$OPENSSL_PREFIX/lib"
export CPPFLAGS="-I$OPENSSL_PREFIX/include"

zstd_version=`zstd --version | perl -nl -e 'print $1 if /v([\d\.]+)/'`
zstd_store=`nix-store --query --references $(which zstd) | grep "zstd-$zstd_version$"`
mysql_store=`nix-store --query --references $(which mysql) | grep "mysql-wrapped"`

# To build DBD::mysql
export LIBRARY_PATH="$mysql_store/lib:$zstd_store/lib:$LIBRARY_PATH"