レオンハルトジャパン公式BLOG

技術的な情報を公開するスペースです。

宇宙一わかりにくいラズパイ入門(仮称)④

宇宙一わかりにくいラズパイ入門(仮称)③の続きです。
宇宙一わかりにくいラズパイ入門(仮称)④では、アップデート、アップグレード、そして「Vim」です。宇宙一わかりにくい(略)は「Vim」です(大切なので2回言いました。)

宇宙一わかりにくいラズパイ入門(仮称)の趣旨

Raspberry Pi2 Model B に Raspbian(Jessie)をインストールして「IoT×Blockchain までやってしまうよ!」な企画を開始しました。はっきり言って「超絶わかりにくい」ので良質な書籍やブログを読むことをオススメします。皆様の貴重なお時間をムダにするのは本懐ではありません。興味がある方だけ読んでみてください(にっこり)

Raspbian のアップデート

正しくは「パッケージリストの更新」を意味しますが、シンプルに説明すると「Windows Update」のようなものです。これには apt-get コマンドを使います。これから飽きるほど使いますので、実際にやってみながら説明しますね。ちなみに git コマンドも使うことになります。ただし、運用フェーズで何も考えずにアップデートするものではありません。アプリケーションが動かなくなるかもしれませんからね。

pi@raspberrypi:~ $ sudo apt-get update
Get:1 http://mirrordirector.raspbian.org jessie InRelease [15.0 kB]
Get:2 http://archive.raspberrypi.org jessie InRelease [13.2 kB]
Get:3 http://mirrordirector.raspbian.org jessie/main armhf Packages [8,962 kB]
Get:4 http://archive.raspberrypi.org jessie/main armhf Packages [142 kB]
Hit http://archive.raspberrypi.org jessie/ui armhf Packages
Ign http://archive.raspberrypi.org jessie/main Translation-en_US
Ign http://archive.raspberrypi.org jessie/main Translation-en
12% [3 Packages 939 kB/8,962 kB 10%]                           131 kB/s 1min 1s
Ign http://archive.raspberrypi.org jessie/ui Translation-en_US
Ign http://archive.raspberrypi.org jessie/ui Translation-en
Get:5 http://mirrordirector.raspbian.org jessie/contrib armhf Packages [37.5 kB]
Get:6 http://mirrordirector.raspbian.org jessie/non-free armhf Packages [70.3 kB]
Get:7 http://mirrordirector.raspbian.org jessie/rpi armhf Packages [1,356 B]
Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/contrib Translation-en
Ign http://mirrordirector.raspbian.org jessie/main Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/main Translation-en
Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/non-free Translation-en
Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en_US
Ign http://mirrordirector.raspbian.org jessie/rpi Translation-en
Fetched 9,242 kB in 1min 8s (134 kB/s)
Reading package lists... Done

ソフトのアップグレード

正しくは「インストールされてるパッケージの更新」を意味します。Raspbian(Jessie)に最初からインストールされているソフトをアップグレードするのですね。なぜアップグレードするのかと言いますと、機能追加、セキュリティ(脆弱性対応)、バグ(ソフトの問題)のためです。ただし、運用フェーズで何も考えずにアップグレードするものではありません。アップデートと同じ意味ですね。

ようやく Vim 登場!

宇宙一わかりにくいラズパイ入門(仮称)①に書きましたが、公式サイト(ラズベリーパイ財団)だとダウンロード時間が長いので、ミラーサイト(北陸先端科学技術大学院大学 JAIST)を使わせていただきましょう。このためには、/etc/apt/sources.list を書き換えないといけませんが、もう nano はやめましょうか。ほかに vi というテキストエディタが最初からインストールされていますが、これはかなり若干クセがあります。Red Hat Enterprise Linux 系譜ディストリビューションAmazon LinuxCentOS)を使う時も同じ操作ができるようにするためです。決して、Vim中毒者(通称:Vimmer)になるためではありません。Google先生Vimmer を検索すると「他のキーワードに「vimmer こわい」と表示されますが気のせいです(にっこり)

# -y は[Y/n]で Y を自動選択するオプション。
pi@raspberrypi:~ $ sudo apt-get -y install vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  vim-runtime
Suggested packages:
  ctags vim-doc vim-scripts
The following NEW packages will be installed:
  vim vim-runtime
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 5,857 kB of archives.
After this operation, 28.2 MB of additional disk space will be used.
Get:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main vim-runtime all 2:7.4.488-7 [5,047 kB]
Get:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main vim armhf 2:7.4.488-7 [809 kB]
Fetched 5,857 kB in 21s (276 kB/s)
Selecting previously unselected package vim-runtime.
(Reading database ... 126313 files and directories currently installed.)
Preparing to unpack .../vim-runtime_2%3a7.4.488-7_all.deb ...
Adding 'diversion of /usr/share/vim/vim74/doc/help.txt to /usr/share/vim/vim74/doc/help.txt.vim-tiny by vim-runtime'
Adding 'diversion of /usr/share/vim/vim74/doc/tags to /usr/share/vim/vim74/doc/tags.vim-tiny by vim-runtime'
Unpacking vim-runtime (2:7.4.488-7) ...
Selecting previously unselected package vim.
Preparing to unpack .../vim_2%3a7.4.488-7_armhf.deb ...
Unpacking vim (2:7.4.488-7) ...
Processing triggers for man-db (2.7.0.2-5) ...
Setting up vim-runtime (2:7.4.488-7) ...
Processing /usr/share/vim/addons/doc
Setting up vim (2:7.4.488-7) ...
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vim (vim) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vimdiff (vimdiff) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rvim (rvim) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rview (rview) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vi (vi) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/view (view) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/ex (ex) in auto mode
# デフォルトエディタの変更
# vim.basicを選択します。vim.tiny は低機能なのでオススメしません
pi@raspberrypi:~ $ sudo update-alternatives --config editor
There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode

nanoとedのアンインストール

# アンイストールコマンドは autoremove 
# nanoの削除
pi@raspberrypi:~ $ sudo apt-get -y autoremove nano
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  nano
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,356 kB disk space will be freed.
(Reading database ... 127978 files and directories currently installed.)
Removing nano (2.2.6-3) ...
Processing triggers for install-info (5.2.0.dfsg.1-6) ...
Processing triggers for man-db (2.7.0.2-5) ...

# edの削除
pi@raspberrypi:~ $ sudo apt-get -y autoremove ed
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  ed
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 77.8 kB disk space will be freed.
(Reading database ... 127894 files and directories currently installed.)
Removing ed (1.10-2) ...
Processing triggers for man-db (2.7.0.2-5) ...
Processing triggers for install-info (5.2.0.dfsg.1-6) ...

デフォルトエディタの再確認

pi@raspberrypi:~ $ sudo update-alternatives --config editor
There are 2 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /usr/bin/vim.basic   30        auto mode
* 1            /usr/bin/vim.basic   30        manual mode
  2            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number: 0

viをVimエイリアスへ(Vimコマンド練習も兼用)

pi@raspberrypi:~ $ ls -all | grep .bashrc
-rw-r--r--  1 pi   pi    3512 Feb  9 23:56 .bashrc
pi@raspberrypi:~ $ cp -p .bashrc .bashrc.old
pi@raspberrypi:~ $ vim .bashrc
# :set number で行番号表示
# :syntax on で色付け(シンタックスハイライト)
# 94行目まで移動し、IキーでINSERTモードにする
 90 # some more ls aliases
 91 #alias ll='ls -l'
 92 #alias la='ls -A'
 93 #alias l='ls -CF'
 94 alias vi='vim'     # 追加
 95 alias ll='ls -all' # 追加
 96 

# Escキーで表示モードに戻り :wq! で上書き保存して終了(:q! は保存せずに終了)
pi@raspberrypi:~ $ diff .bashrc .bashrc.old
94,95d93
< alias vi='vim'
< alias ll='ls -all'

# llコマンドが使えないことを確認
pi@raspberrypi:~ $ ll
-bash: ll: command not found

# 設定を反映
pi@raspberrypi:~ $ source .bashrc

# ll コマンドが使えることを確認
pi@raspberrypi:~ $ ll
total 120
drwxr-xr-x 17 pi   pi    4096 Mar  3 23:48 .
drwxr-xr-x  3 root root  4096 Jan  1  1970 ..
-rw-r--r--  1 pi   pi      69 Feb 10 01:16 .asoundrc
-rw-------  1 pi   pi   10554 Mar  3 18:31 .bash_history
-rw-r--r--  1 pi   pi     220 Feb  9 23:56 .bash_logout
-rw-r--r--  1 pi   pi    3546 Mar  3 23:48 .bashrc
-rw-r--r--  1 pi   pi    3512 Feb  9 23:56 .bashrc.old

これで皆さんも Vimmer Vim使いです。viコマンドで Vim が使えます。llコマンドで ls -allコマンドのエイリアス(別名)となります。 実はviをVimエイリアスにする必要はないのですが、Amazon Linux で使える技なのでやっておきました(にっこり)

リポジトリの変更

/etc/apt/sources.list を http://mirrordirector.raspbian.org/raspbian/からhttp://ftp.jaist.ac.jp/raspbian/へ変更しましょう。

pi@raspberrypi:~ $ sudo cp -p /etc/apt/sources.list /etc/apt/sources.list.old
pi@raspberrypi:~ $ sudo vi /etc/apt/sources.list
#deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi # コメントアウト
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi

deb http://ftp.jaist.ac.jp/raspbian jessie main contrib non-free rpi # 追加(jessieであることが大事)
pi@raspberrypi:~ $ diff /etc/apt/sources.list /etc/apt/sources.list.old
1c1
< #deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
---
> deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
4,5d3
<
< deb http://ftp.jaist.ac.jp/raspbian jessie main contrib non-free rpi

インストールされてるパッケージの更新

apt-get upgrade の出番です。国内のサーバをアクセスするので、気持ちいいくらい速いですよ。

pi@raspberrypi:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  bluej cpio firmware-atheros firmware-brcm80211 firmware-libertas firmware-ralink firmware-realtek libbluetooth3 libc-bin libc-dev-bin libc6 libc6-dbg libc6-dev
  libgcrypt20 libgraphite2-3 libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc libraspberrypi0 libssh-4 libssh2-1 libssl1.0.0 locales multiarch-support nodered
  openssl perl perl-base perl-modules python-pil python-rpi.gpio python3-pil python3-rpi.gpio raspberrypi-bootloader raspi-config rc-gui wiringpi
37 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 108 MB of archives.
After this operation, 2,200 kB of additional disk space will be used.
Do you want to continue? [Y/n] y # [y]を押す。

(中略)

Setting up libraspberrypi0 (1.20160225-1) ...
Setting up libraspberrypi-dev (1.20160225-1) ...
Setting up libraspberrypi-doc (1.20160225-1) ...
Setting up libraspberrypi-bin (1.20160225-1) ...
Processing triggers for libc-bin (2.19-18+deb8u3) ...
Processing triggers for initramfs-tools (0.120) ...

パッケージ数の確認

Raspbian(Jessie)のデフォルトにインストールされているパッケージ数を調べてみましょう。古典的な dpkgコマンド実行後に |(パイプ)で標準出力結果を渡して、 wc -l で行数を計算します。

pi@raspberrypi:~ $ dpkg -l | wc -l
1151

1151もありますね。正確には1150です。nano が rc になっています。これはパッケージ(nano)は削除したけど、設定ファイルは残っているよと教えてくれているのです。それでは消しましょうか。

pi@raspberrypi:~ $ dpkg -l | grep nano
rc  nano                                  2.2.6-3                                   armhf        small, friendly text editor inspired by Pico

設定ファイルも含めたパッケージの削除

apt-get purge の出番です。

pi@raspberrypi:~ $ sudo apt-get -y purge nano
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  nano*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 0 B of additional disk space will be used.
(Reading database ... 127881 files and directories currently installed.)
Removing nano (2.2.6-3) ...
Purging configuration files for nano (2.2.6-3) ...

pi@raspberrypi:~ $ dpkg -l | wc -l
1150

1150になりましたね。nanoは設定ファイルも含め、完全に削除されたわけですね。これでは君たちもVimmer Vim使いです! apt-getコマンドと、dpkgコマンドはよく使うのでGoogle先生に相談しながら少しずつ経験値を上げていきましょう。

(それでも続く)

Amazon Web Services、“Powered by Amazon Web Services”ロゴ、及び本ブログで使用されるその他のAWS商標は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
※ SORACOM、その他のSORACOMサービスは、株式会社ソラコム登録商標または商標です。