ラズパイのupgradeがまたもや失敗

毎度おなじみの、apt updateとupgradeですが、ラズパイはどうも失敗率が高いです。
特に大容量のアップデートが発生するとエラーが多いようです(経験則ですが)。

今回のエラーはupgrade中に発生した初めて見るメッセージで大量の文字化けを含むものでした・・・(´・ω・`)

~ $ sudo apt-get -f install
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 45 個。
1 個のパッケージが完全にインストールまたは削除されていません。
この操作後に追加で 0 B のディスク容量が消費されます。
samba-common (2:4.5.12+dfsg-2+deb9u2) を設定しています ...
/var/lib/dpkg/info/samba-common.templates のスタンザ 1 の `Description-pt_BR(ここから文字化け始まる。画面2ページ分程度。)  付近でテンプレートの解析に失敗しました
dpkg: パッケージ samba-common の処理中にエラーが発生しました (--configure):
 サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 255 を返しました
処理中にエラーが発生しました:
 samba-common
E: Sub-process /usr/bin/dpkg returned an error code (1)

これを気安くリブートしたりすると、再起不能になってSDカードから作り直すというのは、過去に経験していますので、update/upgradeはとことんやってからリブートするというのを肝に銘じています。

しかし何度Update/Upgradeしてもエラーメッセージは消えず、aptの代わりのaptitudeをしても補正の代替案が出てきません。

うーむ困ったぞ。

一応、システム自体は動いているので、アップデート関係の設定が壊れたかダウンロードして更新されるはずのファイルが壊れているか、そのあたりに問題があると見当をつけ(られるようになった!)て、エラーメッセージでぐぐってみました。

こちらを参照(いつもお世話様です。)

結局、/var/lib/dpkg/info/samba-commonというファイルの更新版が壊れていたようで、消去した後にapt upgradeしたら次に進むことができました。

しかーし。
今度は、ハッシュサムが適合しませんと言われています・・・(´・ω・`)

これは、経験則ではサーバ側のファイルが当方のアップデート途中で更新されたりすると起こりえますので、再度はじめからapt update/upgradeすれば、たいてい治ります。・・・4回ほど繰り返して漸く治りました。

OK Google

さて、ラズパイをリブートして最初からGoogle Assistantを設定してみました。
今回は、滞りなくVNCから設定することができました。
これまでは、ボタンによるWakeの方法と、OK Googleと話しかける方法とが、別々のソフトウェアで提供されていましたが、新しいバージョンでは、一つのコマンドで両方対応できるようになっています。

段々と便利になりますね。


Ubuntu: aptのインストールトラブル

いつものようにUbuntuを起動すると、すぐにapt-get updateとapt-get upgradeをする癖がついています。

今日はこれで半日潰れました。

apportというパッケージがインストールできません。しかも、かなりシリアスな状態とのメッセージが。

悩まされたのはこれです。

SyntaxError: invalid syntax
dpkg: パッケージ apport の処理中にエラーが発生しました (--remove):
サブプロセス インストール済みの pre-removal スクリプト はエラー終了ステータス 1 を返しました
Traceback (most recent call last):
File "/usr/bin/pycompile", line 38, in
from debpython.namespace import add_namespace_files
File "/usr/share/python/debpython/namespace.py", line 120
except (IOError, OSError), e:
^
SyntaxError: invalid syntax
dpkg: error while cleaning up:
サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス 1 を返しました
処理中にエラーが発生しました:
apport
E: Sub-process /usr/bin/dpkg returned an error code (1)

いろいろ調べて、原因がわかりました。
インストーラで使われているpythonのコマンドが一部python3に対応していないらしいのです。
そこで、下記にしたがってバージョンをあえてpython2に指定しました。
といっても、プログラムの先頭にこれを書き加えるだけです。

#!/usr/bin/python2

以下を参考にしました。

Ubuntu 16.04 その3 - デフォルトのPythonをPython2からPython3へ変更


Ubuntuから変なメッセージが

ソフトウェアの更新をすると、Ubuntuからエラーメッセージが出ます。
.ucf-dist拡張子がおかしいということなので、何かのソフトが認識できないという意味であろうと思われますが、中を見ると普通のテキストで何やら登録されているようです。こういう時にLinuxはテキストファイルに書かれているので対処がしやすいです。

Ubuntuこちらを参考にして解消。つまり思い切って消去しました。
Ubuntu 16.10 その53 - aptコマンド実行時に20auto-upgrades.ucf-distに関するメッセージが表示されるhttps://kledgeb.blogspot.jp/2016/11/ubuntu-1610-53-apt20auto-upgradesucf.html