ARCHIVESDRIVE HB

オイラはホームベーカリー!

WSL2 で利用している Ubuntu 18.04 LTS を 20..04 LTS にアップグレードする

Windows の開発環境しばらくメンテナンスしてなかったな、ということで Ubuntu をアップグレードし……どうやってやるんだ? という感じだったので。

WSL1 を使っている場合は注意が必要らしい

へぇー! という感じ、これ解決したっぽいけど、どうなのかな。 VirtualBox に用意してある Windows 検証環境が WSL1 で Ubuntu 動かしているのであとで調べておきたいお気持ち。

qiita.com

18.04 LTS を 20.04 LTS へ

アップグレードに利用する do-release-upgrade コマンド、 WindowsStore からインストールしていれば標準で入っているのありがたいですね。

sudo apt update
sudo apt upgrade
sudo do-release-upgrade -y

do-release-upgrade 中の選択肢について

基本全部 y でオッケーです。 標準出力にちょいちょい no such file or directory とか出てくるかもしれませんが、僕は問題なかったので大丈夫でしょう! ダメだったらわからん!

sshd_config どうする? というダイアログも出てくると思うのですが、「既存のファイルで置き換える」が標準選択されているはずなので、そのまま enter してくだち。 あとは流れで。

WSL2 の Linux 再起動

reboot 投げれないじゃん! と思ってたのですが、以下のようにやるとのことです。

  1. wsl --list でディストリ一覧を確認する
  2. wsl -t ディストリ名 で対象のディストリを停止する
  3. 即座に再起動するのでこれで完了

Ubuntu アップグレード直後に「再起動しろ!」と言われます。 が、何もせずもう一度 Terminal 立ち上げると「再起動して?」と標準出力で再び警告してくれます。 上記のように -t で停止からの自動再起動してやると、出力消えて cat /etc/issue にも 20.04 LTS と刻まれるのでこれでよさそうです。

vagrant で追加した環境から名前解決できないなった

bash 環境の検証用に CentOS7 の環境を新しく用意したら、名前解決できなくて yum コマンドがことごとく死んだ話。

ロケ地

結論を先に

Vagrantfile に以下を記述する。 すでに vb.gui などの記述で config.vm_provider を記述してある場合は、同じブロックに追記で良いです。

config.vm.provider :virtualbox do |vb|
  vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end
続きを読む

URI.encode した日本語ファイルへのアクセスで ActionController::RoutingError が発生する

タイトルがすべてって感じです (しろめ) 。

日本語ファイルにアクセスすると死ぬ

public 以下に配置した /doc/テスト2017.pdf みたいな日本語ファイルにアクセスすると ActionController::RoutingError が発生して死ぬ。

続きを読む

pull.rebase

git 2.27.0 以降で git pull を実行すると、 pull.rebase 未設定の場合は以下のように警告が出ます。 色々書いてあるのですが、2.26.0 以前の動作と同様で構わないので、僕は git config --global pull.rebase false として解決しました。

warning: Pulling without specifying how to reconcile divergent branches is
discouraged. You can squelch this message by running one of the following
commands sometime before your next pull:

  git config pull.rebase false  # merge (the default strategy)
  git config pull.rebase true   # rebase
  git config pull.ff only       # fast-forward only

You can replace "git config" with "git config --global" to set a default
preference for all repositories. You can also pass --rebase, --no-rebase,
or --ff-only on the command line to override the configured default per
invocation.

参考:

blog.agile.esm.co.jp

EBS 拡張で growpart がコケてヒヤヒヤした

古いインスタンス (M3.medium) の EBS を拡張する作業があったのですが、 growpart がエラーを返してきて焦ったので。

LANG が悪い

echo $LANG などして、 LANG=ja_JP.UTF-8 つまりシェルが日本語環境だとエラーが帰ってくるようです。 こんなん。

[root@ebs-fuyashitai-instance ~]# growpart /dev/xvda 1
/bin/growpart: 行 170: シリンダ数*255、63*: 構文エラー: オペランドが予期されます (エラーのあるトークンは "シリンダ数*255、63*")

どうする?

export LANG="en_US.UTF-8" とかして、セッション維持しているシェルだけ英語環境にしてから作業しましょう。

[root@ebs-fuyashitai-instance ~]# locale
LANG=ja_JP.utf8
LC_CTYPE="ja_JP.utf8"
LC_NUMERIC="ja_JP.utf8"
LC_TIME="ja_JP.utf8"
LC_COLLATE="ja_JP.utf8"
LC_MONETARY="ja_JP.utf8"
LC_MESSAGES="ja_JP.utf8"
LC_PAPER="ja_JP.utf8"
LC_NAME="ja_JP.utf8"
LC_ADDRESS="ja_JP.utf8"
LC_TELEPHONE="ja_JP.utf8"
LC_MEASUREMENT="ja_JP.utf8"
LC_IDENTIFICATION="ja_JP.utf8"
LC_ALL=
[root@ebs-fuyashitai-instance ~]# export LANG="en_US.UTF-8"
[root@ebs-fuyashitai-instance ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
[root@ebs-fuyashitai-instance ~]# growpart /dev/xvda 1
CHANGED: partition=1 start=2048 old: size=62908492 end=62910540 new: size=209710462,end=209712510

できましたね、このあとはファイルシステムの拡張を実施すればオッケーです。 しかしまー、使っているプロプライエタリミドルウェアが必須要件として LANG に JP な環境を要求するので、スルッと終わるはずの作業が終わらなく、めっちゃ焦りましたね。

参考: hacknote.jp