2020-05-10

5/10

TerraformのKubernetes Providerを試してみる

※ブログに移した: TerraformのKubernetes ProviderでK8sのリソース管理にトライ - progrhyme’s tech blog

Ubuntuでもanyenvを使うことにした

Ubuntuで最近Ruby触ってなかったので、入っているRubyが古いことに気づいたのだけど、rbenvも git clone して入れたものなので、古い。
plenv, pyenvも同様である。

4/28にmacOSでanyenvを試したのだけど、Ubuntuでも使ってみることにした。

https://github.com/anyenv/anyenv

自分環境のセットアップスクリプトに setup-rbenv.sh とか入れてるけど、anyenvで管理した方が筋がよさそう。

anyenv install

Linuxbrewを入れてるので、brewでインストールできた。

% brew install anyenv
==> Downloading https://linuxbrew.bintray.com/bottles/anyenv-1.1.1.x86_64_linux.bottle.tar.gz
######################################################################## 100.0%
==> Pouring anyenv-1.1.1.x86_64_linux.bottle.tar.gz
🍺  /home/linuxbrew/.linuxbrew/Cellar/anyenv/1.1.1: 23 files, 48.4KB

% anyenv init
# Load anyenv automatically by adding
# the following to ~/.zshrc:

eval "$(anyenv init -)"

% eval "$(anyenv init -)"
ANYENV_DEFINITION_ROOT(/home/quiche/.config/anyenv/anyenv-install) doesn't exist. You can initialize it by:
> anyenv install --init

% anyenv install --init
Manifest directory doesn't exist: /home/quiche/.config/anyenv/anyenv-install
Do you want to checkout ? [y/N]: y
Cloning https://github.com/anyenv/anyenv-install.git master to /home/quiche/.config/anyenv/anyenv-install...
Cloning into '/home/quiche/.config/anyenv/anyenv-install'...
remote: Enumerating objects: 48, done.
remote: Total 48 (delta 0), reused 0 (delta 0), pack-reused 48
Unpacking objects: 100% (48/48), done.

Completed!

ここまでやって exec $SHELL -l してもまだPATHには変化なし。
どうも何かしら *env をインストールしないといけないらしい。

anyenv install rbenv してからシェルに再ログインすると、PATHに $HOME/.anyenv/envs/rbenv/shims, $HOME/.anyenv/envs/rbenv/bin が追加された。

rubyのインストールでややハマった

% rbenv install 2.7.1 -v
:
ruby: error while loading shared libraries: libruby.so.2.7: cannot open shared object file: No such file or directory
uncommon.mk:1130: recipe for target 'revision.tmp' failed
make: *** [revision.tmp] Error 127

BUILD FAILED (Ubuntu 18.04 using ruby-build 20200401-11-g12af1c3)

上のようなエラーで失敗した。
どうもこれはrdocの生成でコケているようだ。

ただ、ビルドログを見たら下のようなエラーも出ていた。

% view /tmp/ruby-build.20200510143333.6198.log
:
1660 *** Following extensions are not compiled:$
1661 dbm:$
1662 >-Could not be configured. It will not be installed.$
1663 >-Check ext/dbm/mkmf.log for more details.$
1664 gdbm:$
1665 >-Could not be configured. It will not be installed.$
1666 >-Check ext/gdbm/mkmf.log for more details.$
1667 *** Fix the problems, then remove these directories and try again if you want.$
:

よくわからないままビルドに必要そうなパッケージをインストールしてリトライした。

sudo apt install build-essential bison libffi-dev libgdbm-dev libgdbm-compat-dev \
  libreadline-dev libssl-dev zlib1g-dev

参考: Rubyをソースからコンパイルするときの依存ライブラリ - Qiita

上で、いくつかのパッケージは既にインストールされていた。

リトライした結果、結局、さっきと同じrubyのエラーで失敗した。
ビルドログから、dbm関連のエラーは消えていたので、そこは解消したらしい。

闇雲に別のまっさらなシェルを立ち上げて再度インストールを試みたところ、成功した。

まだ ~/.rbenv に古いrbenvが入っていて、 ruby~/.rbenv/shims/ruby を向いていたので、その辺が悪さをしていたのかもしれない。

これで駄目だったらrdocの生成をオフしようかと思っていた。

参考:

clenvでTravis CIのビルド通知とバッジを修正した

https://github.com/progrhyme/clenv

昔、リポジトリを key-amb -> progrhyme に移したのだけど、そのせいでバッジとSlack通知がおかしくなっていた。

Slackのインテグレーション自体は生きていたので、 travis コマンドで設定をし直した。

gem i travis
travis encrypt "<Slack Workspace>:<Slack Integration Token>" --add notifications.slack.rooms

これで .travis.yml が更新されたので、GitHubにpushして完了。

バッジも新しいURLで取得した。

参考:

次世代のシェルとは

https://ngs-lang.org/

4年前にもブクマしてたやつ。

これC言語製だったか。

今さっきググったらGolang製のフォーマッタ/パーサ/インタープリタを見つけた。

https://github.com/mvdan/sh

なんか、そのうち全部JavaScriptになるんじゃないかな、って気もするんだよなぁ。

macOSはJavaScriptでOSと対話できるようになったし、GNOME ShellもJavaScriptで拡張できるらしいし。

まあ、よくできたプログラム言語がごろごろある現状、敢えて0から再実装する必要ないよねってことか。

そんなわけでclenvを再開するモチベーションが湧かない今日この頃。

Node.jsが筆頭だけど、JavaScriptで実装されたシェルも色々あるみたい。
※ただ、OSのシェルとはどれもちょっと違うかも。

POSIXはもう気にしなくてもいいだろうと思うものの、どの環境でもスッと動いてほしいとは思う。
そういえばfishってどうだっけと思って、改めてチラ見してシェルにメモした。
これはC++製なんですね。

参考:

Ubuntuでfishを少しだけ試してみた

Install:

https://launchpad.net/~fish-shell/+archive/ubuntu/release-3 の通り:

sudo apt-add-repository ppa:fish-shell/release-3
sudo apt-get update
sudo apt-get install fish

fish で起動する。

体感そんな悪くない。
bashで書いたスクリプトはシバン書いてるから実行したら普通に動くし、特に戸惑うことはない感じ。

少しカスタマイズしたら十分使いやすくなりそう。

fisherを試す

テーマを使ってみたかったので、fisherを入れてテーマを入れてみる。

https://github.com/jorgebucaran/fisher

READMEに従ってインストール

curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish

色々ハマったんだけど、最終的に次の要領で、まあまあいい感じになった:

powerlineのインストール
sudo apt install powerline

参考:

※↑に書かれている ~/.config/fish/config.fish の設定をすると、fishでpowerlineは使えるが、他のテーマを入れるとおかしくなる。(カニバってしまう?)

powerlineを使うには対応したフォントが必要らしい。これに中々気づかなかった。

https://github.com/microsoft/cascadia-code/releases から、最新版を ~/.fonts にインストールした。

参考: フォントのインストール | Ubuntu初心者の集いブログ

テーマの追加

この後、fishを起動し、 fisher add oh-my-fish/theme-bobthefish で、まあまあいい感じになった。

ただ、プロンプトの左端が I となっていて、これはスクリーンショットによると本来は矢印記号が出るはずなんじゃないかと思う。

theme-bobthefish のガイドに従って、 https://github.com/ryanoasis/nerd-fonts/releases も入れてみたけど、特に変わらない。

上手く行かなかったこと

上まで辿りついたが、 theme-budspencer だと上手く行かなかった。
プロンプトでENTERだけを押しても改行されない感じになってしまう。

参考

GASでWebアプリ作るテスト

Google Apps ScriptでWebアプリケーションをつくる - Qiitaを写経。 ステップ5の「データをGoogleスプレッドシートに保存」はまだできていない。

JS, CSSを分割したところから上手く行かなくなった。 原因は以下の2つ: