背景
PlatformIOとは、Arduinoなどの組み込み機器のプログラムを開発できる環境です。UbuntuでPlatformIOを更新しようとしても出来ない事態に遭遇したので、備忘録を兼ねて対応内容を共有します。
使ったもの
PlatformIOをインストールしたUbuntu症状
下記のPlatformIOの更新コマンドでも。pipの更新コマンドでも、PlatformIOを更新できない状況になりました。(コマンド実行後にOSを再起動しても更新できませんでした。)
PlatformIOの更新コマンド
platformio upgrade
pipでの更新コマンド
pip3 install --upgrade platformio
分かったこと
PlatformIOはインストール方法によって実行ファイルの配置先が変わることが分かりました。下記のように管理者権限でインストールすると
sudo pip3 install platformio # 実行しないことをお勧めします下記の実行可能ファイルが配置されます。
/usr/local/bin/pio /usr/local/bin/piodebuggdb /usr/local/bin/platformio
下記のように管理者権限無しでインストールするか
pip3 install platformio管理者権限無しでアップグレードを行うか
pip3 install --upgrade platformioPlatformIOのアップグレードコマンドを実行すると
platformio upgrade下記の実行可能ファイルが配置または更新されます。
/home/asuki/.local/bin/pio /home/asuki/.local/bin/piodebuggdb /home/asuki/.local/bin/platformio
管理者権限無しでファイルを更新しても、管理者権限で配置した古いファイルが読み込まれていたことが今回の原因でした。
対応方法
自分の場合はこれらの条件が重なって更新できませんでした。- 「管理者権限で配置したファイル」が古いバージョンのままだった。
- 実行ファイルを読み込みが/usr/local/binが先で/home/[ユーザー名]/.local/binが後だったので、管理者権限無しで更新しても設定が反映されない状況だった。
管理者権限でアンインストールして、インストールしなおす
管理者権限無しでインストールしたものと、管理者権限でインストールしたものを削除する必要があるため、アンインストールを2回実施した後にインストールを行います。# 管理者権限無しでインストールしたファイルをアンインストール pip3 uninstall platformio # 管理者権限でインストールしたファイルをアンインストール sudo pip3 uninstall platformio # 管理者権限無しでインストール pip3 install platformio
ファイルの読み込み順序を変更する
自分の場合は/usr/[ユーザー名]/.local/binを~/.bashrcで下記のように読み込ませていました。export PATH=$PATH:$HOME/.local/bin
これだと
「ファイルを読み込み終えた後、まだ読み込んでいないファイルを~/.local/binから読み込む」
という記述になっているので、
「~/.local/binからファイルを読み込み、その後他のファイルを読み込む」
という下記の記述に変更することで、「platformio upgrade」コマンドなどで更新したファイルを読み込めます。
export PATH=$HOME/.local/bin:$PATH
しかしながら、この方法では/usr/local/binに使わないファイルが残ってしまうので、「管理者権限でアンインストールしてインストールしなおす」方法の方がお勧めです。
余談: 使ってないファイルの調査
使っていないplatformioのファイルが余分に配置されているかどうかは、下記のコマンドで確認できます。for path in ${PATH//:/ } do find $path -type f -iname platformio done
使われないファイルが存在する場合は、複数のファイルを検出します。
検出するファイルが1つだけなら、期待通りに配置されています。
まとめ
「sudo pip3 install platformio」でインストールしたことが今回の不具合の原因でした。PlatformIOの説明ページでも指示されるように「pip3 install platformio」もしくは「pip3 install -U platformio」コマンドでインストールするのが良さそうです。
0 件のコメント :
コメントを投稿