Python Boot CampテキストをUbuntu 16.04 LTSで試す

2017.10で告知のあった「Python Boot Camp in 鹿児島」で使う「Python Boot Campテキスト」を見るとLinuxはUbuntu 17.04 serverがターゲットになっている

1. Pythonをはじめる前に — Python Boot Camp Text 2016.04.28 ドキュメント

1.3.3. Linux (Ubuntu Server) での場合
ここではLinuxとしてUbuntu 17.04にPython3.6をインストールする方法を説明します。

LTSのDesktop使いたい人も居るだろうなとUbuntu 16.04 LTS arm64で一通り確認してみた

「1.3.3. Linux (Ubuntu Server) での場合」のPython導入は以下のように3.5に変更

$ sudo apt update && sudo apt upgrade -y
$ sudo apt -y install python3.5 python3.5-dev python3.5-venv
$ python3.5 -V
Python 3.5.2

「5.1.2. ファイルへの書き込み」でファイルの確認前にflushしないとファイルが空

>>> f.flush()

「5.1.5. 追記モードでの書き込み」でファイルの確認前にflushしないとファイルが更新されない

>>> f.flush()

後は問題無さそう

Debianの場合もstable(stretch)では同じだと思う.Python 3.6はtesting(Buster)以降になるみたい(未確認)

このチュートリアルはBeautifulSoupまでやるので例えばcalibrでニュースサイトをスクレイピングしてKindleに自動転送といったようなレシピも書けるようになりますね :)

Ubuntu 16.04 aarch64環境でmozc pkgが無いのでsource pkgからbuild

EDIT: 現在は次の記事の手順のほうが良いと思います -> Debian, Ubuntu で 上流のパッケージを借りてくる – matoken’s meme

 

最近Ubuntu 16.04 aarch64のi3 wmにモニタとキーボードを繋いでデスクトップ利用を試しています.しかし,日本語入力のためのmozcのバイナリパッケージが見当たりません.確認すると,xenialからartfulではi386/amd64/armhfのみの対応.

Debianではarmelも対応していますが,arm64はやっぱりありません.

armhf/armelで動いているならarm64もあまり悩まずソースパッケージからbuildできるのではと試してみました.

#dpkg –add-archtecture armhfしてMultiarchにしてarmhfのMozcを使うという手でも行けそうな気はする.(未確認)

環境構築

必要なパッケージの導入と,ソースパッケージの入手を行います.

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install build-essential devscripts
$ sudo apt build-dep fcitx-mozc
$ apt source fcitx-mozc
  • apt build-depは指定したパッケージをbuildするのに必要なパッケージを導入できます.
  • apt sourceは指定したパッケージのソースパッケージを導入して展開してくれます.

※もしソースパッケージが見つからない場合はsource.listにdeb-srcの行があるか確認してみてください.無ければapt edit-sourcesコマンドで/etc/apt/source.listファイルを編集してdeb-srcを有効にしてください.以下のページが参考になると思います.

Archtectureにarm64を追加してバイナリパッケージ作成

次にソースディレクトリに降りて,debian/controlファイルを開き,必要なパッケージのArchtectureにarm64を登録します.mozc-dataはallなのでそのままにしておきます.(はじめarm64をaarch64にしてうまく行かなかったですorz)

$ cd mozc-2.17.2116.102+gitfd0f5b34+dfsg
$ cp debian/control debian/control.org
$ vi debian/control
$ diff -u debian/control.org debian/control
--- debian/control.org  2017-05-30 17:06:44.000000000 +0000  
+++ debian/control      2017-05-30 17:07:19.000000000 +0000  
@@ -28,7 +28,7 @@                                            
  This open-source project originates from Google Japanese Input.
                              mozc-data                               
 Package: ibus-mozc                                          
-Architecture: i386 amd64 armel armhf                        
+Architecture: i386 amd64 armel armhf arm64                  
 Depends: ${misc:Depends}, ${shlibs:Depends}, mozc-data,     
        ibus (>= 1.2), mozc-server (= ${binary:Version}), tegaki-zinnia-japanese
 Recommends: mozc-utils-gui (= ${binary:Version})            dpkg-buildpackage
@@ -45,7 +45,7 @@                                            
  This open-source project originates from Google Japanese Input.
                                mozc-data                             
 Package: fcitx-mozc                                         
-Architecture: i386 amd64 armel armhf                        
+Architecture: i386 amd64 armel armhf arm64                  
 Depends: ${misc:Depends}, ${shlibs:Depends}, fcitx-bin, fcitx-data, fcitx-modules,
        mozc-server (= ${binary:Version}), mozc-data, tegaki-zinnia-japanese
 Recommends: fcitx, mozc-utils-gui (= ${binary:Version})     
@@ -64,7 +64,7 @@                                            
  fcitx-mozc provides client part of the Mozc input method.  

 Package: emacs-mozc                                         
-Architecture: i386 amd64 armel armhf                        
+Architecture: i386 amd64 armel armhf arm64                  
 Depends: ${misc:Depends}, emacs | emacs23 | emacs24, emacs-mozc-bin (= ${binary:Version})
 Conflicts: emacsen-common (<< 2.0.0)                        
 Description: Mozc for Emacs                                 
@@ -76,7 +76,7 @@                                            
  This open-source project originates from Google Japanese Input.

 Package: emacs-mozc-bin                                     
-Architecture: i386 amd64 armel armhf                        
+Architecture: i386 amd64 armel armhf arm64                  
 Depends: ${misc:Depends}, ${shlibs:Depends}, mozc-server (= ${binary:Version})
 Description: Helper module for emacs-mozc                   
  Mozc is a Japanese Input Method Editor (IME) designed for multi-platform
@@ -87,7 +87,7 @@                                            
  This open-source project originates from Google Japanese Input.

 Package: mozc-server                                        
-Architecture: i386 amd64 armel armhf                        
+Architecture: i386 amd64 armel armhf arm64                  
 Depends: ${misc:Depends}, ${shlibs:Depends}                 
 Multi-Arch: foreign                                         
 Description: Server of the Mozc input method                
@@ -99,7 +99,7 @@                                            
  This open-source project originates from Google Japanese Input.

 Package: mozc-utils-gui                                     
-Architecture: i386 amd64 armel armhf                        
+Architecture: i386 amd64 armel armhf arm64                  
 Depends: ${misc:Depends}, ${shlibs:Depends}, mozc-data      
 Recommends: mozc-server (= ${binary:Version})               
 Suggests: ibus-qt

次にdpkg-buildpackageコマンドでパッケージを作成します.手元のマシンではちょうど1時間ほどで終了しました.(あとで-j4とかすると30分ほどに)

$ dpkg-buildpackage -us -uc
$ ls ../*.debmozc-data
../emacs-mozc-bin_2.17.211archtecture6.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb  ../ibus-mozc_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb    ../mozc-utils-gui_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb
../emacs-mozc_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb      ../mozc-data_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_all.deb
../fcitx-mozc_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb      ../mozc-server_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb

出来上がったパッケージの導入

今回はfcitxを使っていたので,fcitx-mozcを導入しました.導入した後にログインしなおして,fcitx-config-gtkを起動するとMozcが登録されて利用できるようになりました. :)

$ sudo apt-get install ../mozc-server_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb ../mozc-data_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_all.deb ../fcitx-mozc_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb ../mozc-utils-gui_2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu1.1_arm64.deb 

重かったり不具合が出るようならskkあたりにしようかと思っていましたが,現在このパッケージを1週間ほど利用して特に問題なく使えています.

あまり推奨しませんが,私の作ったパッケージをしばらく以下においておきます.必要な方は試してみてください.(上の手順に + dhc -i + dpkg-buildpackage -j4したもの)

ところでこれはどうすればいいのかな.Debianでも動作確認してバグレポでok?そしてUbuntuはSync mozc from Debian unstableを待つ感じ?

Podcastが無くなって困る

現在Podcastをpodgetで取得して,

2 * * * *       podget -s

その中の新しいものだけをownCloudにコピーしてAndroidやPCで視聴しています.

10 * * * *      cd ~mk/POD ; find . -mmin -2880 -type f | egrep -v 'm3u$|LOG\/' | rsync --delete --progress --files-from=- ~mk/POD/ /var/www/owncloud/data/matoken/files/podcast/; find /var/www/owncloud/data/matoken/files/podcast/ -ctime +7 -type f -print0 | xargs -0 rm ; find /var/www/owncloud/data/matoken/files/podcast/news/ -mmin +1`

今日聞こうとしたらownCloud内のPodcastが0個になっていました.心当たりはUbuntu 14.04 LTSからUbuntu 16.04 LTSへのdist-upgrade.ownCloudは上げる前と後に動作確認してたんで他の部分が怪しいとログを見るとpodgetがエラーを吐いています.こんな感じ.

$ podget -s
/home/mk/.podget/podgetrc cannot be verified to be compatible with this version of podget.

It is missing the version line that is included in configuration files created by newer versions of podget.

Please create a new configuration file by running 'podget --create-config <FILENAME>',
and then converting your old configuration to the new format.  Then move the new file
in place of the old and podget will work as it used to.

設定ファイルが使えなくなってるみたいですね.枯れてるのかと思ってたら結構変化があったようです.
ちなみに更新前のバージョンがpodget 0.6.9-1で現在はpodget 0.7.9-1でした.

てことで,設定ファイルの雛形を別の場所に書き出して,

$ podget --create-config /tmp/podgetrc
podget

Configuration filename specified by -c or --create-config violates the following rules...

Suggestion(s):
  1. Filenames should not include any directory configuration.
     Remove the directory configuration.
     If you need to specify a directory other than the default,
     use the -d or --dir_config command line options.

Closing session.

…….--dir_config付けて再度.

$ podget --dir_config /tmp --create-config podgetrc
podget
  Installing default user configuration file in /tmp/podgetrc
  Installing default server list configuration.

Closing session.

https://gist.github.com/1b5fba2e949409a87e1955e0c779b057

diffを取ってみると設定項目自体はそう変わってない感じですが,設定値が大文字小文字が変わったりしています.
比較しながら書き換えて叩くと動き始めたようです.

$ podget
podget


Session directory not found, creating
Session file not found.  Creating podget.18364 .

-------------------------------------------------
Category: tech                 Name: 電脳空間カウボーイズ

Downloading feed index from http://feeds.feedburner.com/weblogs/csc
2017-04-06 06:13:13 URL:http://feeds.feedburner.com/weblogs/csc [46549] -> "-" [1]

Downloading csc_2017_design2.mp3 from http://onosendai.jp/csc
2017-04-06 06:20:43 URL:http://onosendai.jp/csc/csc_2017_design2.mp3 [51781411/51781411] -> "/home/mk/POD/tech/電脳空間カウボーイズ/csc_2017_design2.mp3" [1]
PLAYLIST: Adding tech/電脳空間カウボーイズ/csc_2017_design2.mp3 to /home/mk/POD/New-2017-04-06.m3u

Downloading csc_2017_design1.mp3 from http://onosendai.jp/csc
2017-04-06 06:25:04 URL:http://onosendai.jp/csc/csc_2017_design1.mp3 [37304885/37304885] -> "/home/mk/POD/tech/電脳空間カウボーイズ/csc_2017_design1.mp3" [1]
PLAYLIST: Adding tech/電脳空間カウボーイズ/csc_2017_design1.mp3 to /home/mk/POD/New-2017-04-06.m3u
 :

しかし,ダウンロード済みのファイルも取得しているような?
新規のみの設定にしているつもりなんですが,初回は舐めちゃうのかな?2度目のときに確認してみます.

# Force
# 0 == Only download new material.
# 1 == Force download all items even those you've downloaded before.
FORCE=0

とりあえず終わるまではsoundcloud辺りで聞いてます.

その後2回目はちゃんと期待通りの動作するのを確認したのでcrontabに登録し直しました.