Ubuntu に Android SDK を入れたら SQLite3 (sqlite3) がそちらを参照するようになってしまった

状況

  • 以下のように sqlite3 が複数の場所にインストールされている
  • $PATH の設定上、/home/foobar/android/sdk/platform-tools/sqlite3 が優先されて使われる
$ which sqlite3
/home/foobar/android/sdk/platform-tools/sqlite3

# sudo apt install によってインストールした sqlite3
$ ls -la /usr/bin/sqlite3
.rwxr-xr-x root root 320 KB Sun Mar 31 17:24:45 2024 /usr/bin/sqlite3
$ /home/foobar/android/sdk/platform-tools/sqlite3 --version
3.44.3 2024-03-24 21:15:01 d68fb8b5dbb8305e00d2dd14d8fe6b3d9f67e2459102ff160d956a6b75ddc18e (64-bit)

$ /usr/bin/sqlite3 --version
3.45.1 2024-01-30 16:01:20 e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257ccalt1 (64-bit)

この状況だと具体的にどういう挙動となるか

  • sudo apt upgrade を行っても sqlite3 のバージョンが上がっていかない(=バージョンが上がった sqlite3 が使われない)
  • SQLite3 の対話モードに入った際に、特殊なキー(カーソルキーなど)を押すと制御文字がテキスト文字として入力されてしまう
    • たとえば、左矢印キーを押すと ^[[D と入力され、カーソルが左に移動しない

gyazo.com

どうしたか(対処方法)

  • /home/foobar/android/sdk/platform-tools/sqlite3 をリネームしてコマンドを見つけられなくした*1

上記対処方法の問題点

  • Android SDK をアップデートしたときに sqlite3 が上書き更新されてしまう
  • Android SDK にて sqlite3 を使うときに問題が出るのではないか*2

結論

  • リネームにより一時的に解決したが、恒久的な解決方法はこれを書いている時点では定まっていない
    • sqlite3 以外のコマンドについては Android SDK 内のファイル*3 を優先的に使いたいので、$PATH の順序を変えたくはない

*1:シンボリックリンクに置き換えてもいいかもしれない

*2:まだ遭遇していない

*3:たとえば adb とか

Powered by はてなブログ