はじめに
sshにてログインまで出来ましたが、ここから「Raspberry Pi Zero 2 W」を開発できるように環境を整えようと思います。
前回(Raspberry Pi Zero 2 Wの初期設定から無線接続(固定IP設定)まで)
前回はWindowsからTeraTermでRaspberry Pi Zero 2 Wにログインするところまでやりました。
1. Linux整備の目的
本章では自分でなんとなくインストールしたツールやアプリがたくさんあるので、それらについて使用するものと使用用途等を記載し、それらをインストールや設定ができれば開発環境の構築ができるようにまとめたいと思います。
※ ここからは「Raspberry Pi Zero 2 W」内でのコマンド投入となります。
2. aptの更新と確認
まずRaspberry Pi OSを最新の状態に更新します。
最新の状態は以下のコマンドにて実施します。
※ 私はむかーしRedhat系をやっていましたがその時はyumとかdnfでした。その内容はおまけに記載します。
sudo apt update
sudo apt upgrade -y
sudo apt update:Raspberry Pi(Linux)で利用可能なソフトの情報(パッケージ)一覧情報を最新にする
sudo apt upgrade -y:「sudo apt update」で更新したパッケージ一覧から既にインストール済みのパッケージを最新版に更新する(「-y」はコマンド投入後すべて「Yes」を選択するオプション)
3. vim整備
vimのインストール方法
Raspberry Pi OS は軽量版だと「vi互換(vim-tiny)」が入っていて機能が制限されていることがあるみたいです。
私はvi大好きマンなので、viのフル機能をインストールします。
以下のコマンド投入でフル機能版になります。
sudo apt install vim
通常使用するviについて
私はLinux上のテキスト編集はviで行うため、vimの環境を整備していこうと思います。
まず、Raspberry PiをTeraTermで接続したときに以下のことができなくて割と困りました。。。
- 挿入モードにてバックスペースで文字を削除できない
- TeraTerm上のテキストをマウスで選択しただけでコピーできない
- コピーしたテキストを右クリックでペーストできない(「-- (insert) VISUAL --」になる)
これが地味に困るので、vimの整備は早急に行いました。
以下のコマンドの投入で環境を作成します。
vi ~/.vimrc
上記コマンドを投入したら「i:挿入」を押下して、以下のコマンド投入後、「Esc→wq」で保存を行います。
set nocompatible
set backspace=indent,eol,start
set mouse=
set expandtab
set tabstop=4
set shiftwidth=4
set nocompatible:vi互換の動作を無効に設定(いらないという人もいるがとりあえず書いておく)
set backspace=indent,eol,start:バックスペースキーで文字削除できるように設定
set mouse=:マウス機能をOFFに設定
set expandtab:ここは後述のpythonのために設定。Tabキーを押したときに「\t」ではなく半角スペースに変換する
set tabstop=4:ここは後述のpythonのために設定。タブを4文字幅として表示する
set shiftwidth=4ここは後述のpythonのために設定。インデント(>> や <<)を行ったときの幅を4文字にする
【注意!】root権限で使用するviについて
root権限で使用する際には上記設定が反映されなくなってしまうので注意!
⇒ sudo は「rootユーザーとして実行」するため、rootのホームディレクトリ(/root)を参照する。
私はこれで躓き、またバックスペースやコピペができなくなり悲しくなりました。。。
root権限時には以下の場所のvim環境(.vimrc)を見に行きます。
/root/.vimrc
「.vimrc」の設定はユーザー毎に設定が必要なのです!!(ユーザー毎にvi環境設定しただろうから、そりゃそうかと思うのですが、これは後になって気づきました。)
今は、私しか使わないためvi環境もユーザー環境のをそのままコピーしてroot権限時も使用します。
sudo cp ~/.vimrc /root/.vimrc
4. 開発環境構築
vimの設定が完了しましたので、開発環境の構築を行っていこうと思います。
開発言語選定
開発環境は「Python」がやりやすいです。
私は以前C言語をやっていましたが、明らかに「Python」の方が楽です。高速処理であればC言語の方が優秀とありますが、(コンパイルしてオブジェクト化してるからそら速いわね)そんなに処理速度にこだわらなければ「Python」でいいかと思います。
Pythonのインストール方法
以下のコマンド投入でpythonのインストールができます。
# 利用可能なパッケージ一覧情報を最新にする
sudo apt update
# pythonのインストール
sudo apt install python3
# pipのインストール
sudo apt install python3-pip
# pythonのGPIO操作用ライブラリインストール
sudo apt install python3-gpiozero
※ pipはpython専用のインストーラです。pythonのライブラリや環境をインストールするときによく使います。
【重要!】Pythonの罠
では早速pythonのインストールをしようと思った際に罠が仕掛けられていました。。。
Raspberry PiからLCDで画面出力しようと思った際にインストールが必要なライブラリ「RPLCD」をインストールした際に以下のエラーが発生しました。
error: externally-managed-environment
エラーの内容をよく見てみると以下の記載があります。
# OS管理で入れたいなら apt を使え
To install Python packages system-wide, try apt install python3-xyz
# 開発用なら仮想環境を作れ
create a virtual environment using python3 -m venv
で最後に以下のような文章がありました。(日本語は意訳)
# 「--break-system-packages」をつけると強制突破できるが、OSが壊れる可能性あるぞ
note: If you believe this is a mistake, please contact your Python
installation or OS distribution provider.
You can override this, at the risk of breaking your Python
installation or OS, by passing --break-system-packages.
超ビビりな私は仮想環境を作ることにしました。
どうやらRaspberry Pi OS(Debian系)は、「OSを守るためにグローバルpipを制限している」ということらしいです。
そもそもRaspberry Pi OSではシステム回り(NetworkManager、raspi-config、cloud-init等々)にpythonを使っているみたいです。
なのでpipでライブラリや環境をバコスコ入れてしまうと上記で記載した本来のRaspberry Pi OS周りのシステムのライブラリや環境までも上書きされてしまって最悪起動しなくなる危険性があります。
上記の理由からpipは制限されているみたいなんですよね。
なので、pipを使いたかったら開発用の環境(仮想環境)を使ってやるか、pipを使わずにaptで環境を整えてやるかになるわけです。
仮想環境構築
さて、思う存分pipを使用するために仮想環境を構築します。
仮想環境は以下のコマンド投入でコマンド投入場所をカレントディレクトリで構築されます。
python3 -m venv "仮想環境のディレクトリ名"
作成された環境に対し、以下のコマンドを投入することで、上記で作った環境の優先順位があがり元々の/bin/以降(実行ファイル全般)に加え/仮想環境のbin/以降が追加され最優先で動くこととなります。(/仮想環境のbin/にpipやpythonがある)
source "仮想環境のディレクトリ名"/bin/activate
ちなみに仮想環境時は以下のように仮想環境のディレクトリ名が頭に()付で出てきます。
("仮想環境のディレクトリ名") user@host:~$
元の環境に戻す際には以下のコマンド投入で元の環境に戻ります。
deactivate
お手軽仮想環境設定
ただ、起動ごとに毎回以下のコマンドを投入しないといけないのが辛いです。
source "仮想環境のディレクトリ名"/bin/activate
なので以下のコマンドを記載した環境設定用のシェルスクリプトを作成し、それをたたくだけで仮想環境になるようにしました。
#!/bin/bash
source "仮想環境のディレクトリ名"/bin/activate
上記の環境設定用のシェルスクリプトを以下のコマンドで全権限付与します。
chmod +x "環境設定用のシェルスクリプト"
ここまでできれば、以降は以下のコマンドで仮想環境を構築できます。
. "環境設定用のシェルスクリプト"
※ 「. 」が大事
5. 開発環境完成!!
ここまで出来たらpipも使い放題ですし、不自由なくpythonで開発ができるかと思います。
ただ、以前の記憶とメモを便りに書いているため不足分はあるかもしれません。
それはまた、見つかったときに随時追記していこうと思います。
【おまけ】aptについてRedHat系との比較
むかーしRedhat系をやっていましたが、その時はyumとかdnfとか使ってました。
どうやらRaspberry PiはUbuntuと同じDebianをベースにしたOSみたいです。
なんとなく違いが気になったのでまとめを以下に記載します。
| RedHat系 | Debian系 | |
|---|---|---|
| インストールソフト用コマンド | yum / dnf | apt |
| インストールされたソフトの拡張子 | rpm | deb |
| パッケージ一覧の場所 | /etc/yum.repos.d | /etc/apt/sources.list |
次回(Raspberry Pi Zero 2 WでのGPIO制御(LED点灯))

