Ubuntu 16.04 に Kindle for PC をインストールする
最近は電子書籍ばかり買っていて、PDF で提供されていれば問題がないのだけれど PDF がない場合はしかたなく Amazon で購入しています。 技術書の内容をちょっと試すには PC で読んでいたほうが都合がよいので Ubuntu に Kindle をインストールしてみました。その時の覚書です。
この記事を書いたときのバージョン
Wine のインストール
Windows 版の Kindle for PC を Linux で動かすには Wine が必要です。Wine は 32 bit 版を使用します。
64 bit の Ubuntu を使用している場合は 32 bit アーキテクチャを有効にします。
$ sudo dpkg --add-architecture i386
Wine のリポジトリを追加します。
$ wget https://dl.winehq.org/wine-builds/Release.key $ sudo apt-key add Release.key $ sudo apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/
リポジトリをアップデートして、Wine をインストールします。 Kindle for PC と Wine の動作する組み合わせのうち最新のものをインストールしてください。 組み合わせは WineHQ - Amazon Kindle for PC で確認することができます。 Platinum か Gold のものを選ぶとよさそうです。 今回は Wine 2.0 を使いたかったので、バージョンの近い winehq-stable (このときは v2.1 だった) をインストールすることにしました。
$ sudo apt-get update
$ sudo apt-get install --install-recommends winehq-stable
他にも winehq-devel (開発ブランチ)、winehq-staging (ステージングブランチ) があります。
Wine の設定
Ubuntu 16.04: WineでKindle for PC (Windows)を動かす - Narrow Escape によると Kindle for PC は Windows 7 または Windows 8.1 でないと動作しないようです。
Wine の設定画面を立ち上げます。途中で Mono、Gecko などのインストールが促された場合はそのままインストールしてください。
$ winecfg
設定画面から Windows Version を Windows 8.1 に設定します。
Kindle for PC のインストール
Kindle for PC は次の URL からダウンロードしてきました。
URL の 44183
や 1.17.44183
のあたりを調整すると他のバージョンもダウンロードできるようでした。
https://s3.amazonaws.com/kindleforpc/44183/KindleForPC-installer-1.17.44183.exe
$ wine KindleForPC-installer-1.17.44183.exe
これでインストールは完了です。
補足
ここからは捕捉です。 インストールがうまくいかなかった場合など必要があれば参照してください。
フォントが豆腐になった場合
MS 系のフォントを別のフォントに置き換えます。ここでは、Ubuntu に標準で入っている Takao 系のフォントを使用しています。
次の内容を任意のファイル名 (font-replace-takao.reg など) で作成します。 文字コードは CP932 または Shift_JIS にしてください。
REGEDIT4 [HKEY_CURRENT_USER\Software\Wine\Fonts\Replacements] "MS Gothic"="Takaoゴシック" "MS Mincho"="Takao明朝" "MS PGothic"="Takao Pゴシック" "MS PMincho"="Takao P明朝" "MS UI Gothic"="TakaoExゴシック" "MS ゴシック"="Takaoゴシック" "MS 明朝"="Takao明朝" "MS Pゴシック"="Takao Pゴシック" "MS P明朝"="Takao P明朝"
regedit を起動しファイルをインポートします。
$ wine regedit
レジストリ > レジストリのインポート から作成したファイルをインポートします。
これで日本語が正しく表示されるようになりました。
インストールをやりなおす場合
インストールしてみてうまくいかない場合は環境をきれいにしてやりなおしたいと思いますが Wine はただアンインストールするだけではきれいになりません。 ここでは環境をきれいにする手順を説明します。
まず、アインインストールします。
$ sudo apt purge winehq-stable $ sudo apt autoremove
残ったファイルを削除します。
$ rm -rf ~/.wine $ rm -f ~/.config/menus/applications-merged/wine-* $ rm -rf ~/.local/share/applications/wine $ rm -f ~/.local/share/applications/wine-* $ rm -f ~/.local/share/desktop-directories/wine-*
まとめ
これで、Kindle 本を PC でも読めるようになりました。でも、バージョンアップするときはまたちょっと苦労するのかな…
参考文献
ThinkPad T440s を Ubuntu 14.04 から 16.04 にアップグレードした
以前、ThinkPad T440s へ Ubuntu 14.04 をインストールした - nkenbou のはまり日記 で構築したマシンを年末年始を利用して 16.04 にアップグレードしました。
基本的には Ubuntu のアップグレード通知から難なくアップグレード完了です。
問題の ClickPad (パコパコパッド) ですが、こちらも 14.04 の頃から時間が経っているためか今回は簡単に解決できました。
sudo apt-get install xserver-xorg-input-libinput
以上!
はまったら ThinkPad 買い換えてやろうかと思っていたけど (散財)、あっけないほど簡単にアップグレードできちゃいましたとさ。
Ubuntu 14.04 LTS で Emacs 24.5 をビルドする
普通にビルドすると必要なライブラリが足りないので、build-dep
を使って必要なライブラリを一気にインストールします。
まず、build-dep
を使えるようにします。
sudo apt-get install build-essential
その後、Emacs に依存するライブラリをインストールします。
sudo apt-get build-dep emacs24
後は、Emacs をビルドするだけ。
wget -O- http://ftp.gnu.org/gnu/emacs/emacs-24.5.tar.xz | tar xJf - cd emacs-24.5 ./configure make sudo make install
参考:
Cygwin 版 Emacs の flycheck (JSHint) で JavaScript のシンタックスチェックをする
問題
Cygwin 版 Emacs で flycheck を使用して JavaScript のシンタックスチェックができるようにするまでには、いくつもの問題があり一筋縄では行きませんでした。
ここでは、試行錯誤して辿り着いた一つの方法を紹介します。なお、僕の環境は gnupack を使用しています。
実際の環境:
- OS: Windows 7
- Emacs: gnupack_devel-12.03-2015.02.01
- flycheck: flycheck-20150412.242
- Node.js: v0.12.2
- JSHint: jshint v2.6.3
flycheck のインストール
flycheck のインストールは普通に行います。例えば package.el でインストールするには以下のようにします。
M-x package-refresh-contents
M-x package-install flycheck
Node.js のインストール
flycheck で JavaScript のシンタックスチェックを行う場合、裏では JSHint が使用されます。
JSHint は Node.js の npm コマンドでインストールします。Cygwin 版 Emacs を使用しているので、Cygwin 上に JSHint をインストールしたいところですが、Node.js の Wiki に書かれている通り、Node.js で Cygwin がサポートされなくなっています。
仕方がないので、Windows に JSHint をインストールして Cygwin 経由で JSHint を使用することにします。Node.js はインストーラーや nodist からインストールします。詳細なインストール手順は省略しますが、インストールが完了すると npm コマンドが使用できるようになっているはずです。
Node.js のインストーラー: https://nodejs.org/
nodist (GitHub): https://github.com/marcelklehr/nodist
JSHint のインストール
npm コマンドでグローバルに JSHint をインストールします。
npm install jshint --global
js2-mode のフックで flycheck-mode を有効にする
僕は JavaScript を書くときには js2-mode を使用しているので、js2-mode のフックで flycheck-mode を有効にします。
init.el:
(add-hook 'js2-mode-hook '(flycheck-mode t))
通常ならここまでの設定をすれば、JavaScript のバッファで flycheck が実行されるようになるはずですが、Cygwin 版 Emacs では動作しませんでした。flycheck-mode は有効になっているのですがチェック結果が表示されませんでした。
原因
flycheck が JSHint を呼び出すときは、対象のファイルを /tmp/flycheckXXXX/ にコピーして (XXXX 部分はランダム)、コピーしたファイルに対してチェックを行います 。JSHint へパラメーターとして渡されるファイルのパスは /tmp/flycheckXXXX/対象ファイル.js のようになります。しかし、/
(スラッシュ区切り) や /tmp/
は Windows では解析できないため、ERROR: Can't open /tmp/flycheckXXXX/対象ファイル.js
のようにエラーになってしまいます。
解決方法
解決方法として思いついたのは、JSHint にパラメーターとして渡すファイルパスの /
(スラッシュ区切り) や /tmp/
部分を Windows 上のパスに変換してしまうことでした。試しに flycheck の中のファイルパスを取得する関数に advice を設定して Cygwin 上ファイルパス -> Windows 上ファイルパスに変換するようにしたところ、JSHint は正常に実行されるようになり結果も返ってきましたが、今度は結果をパースする flycheck の別の関数で新たな問題が発生しました。
JSHint からの結果にはチェック対象のファイルパス (JSHint へのパラメーターと同一) が含まれており、flycheck ではそのファイルパスを使ってチェック後の処理を行っていました。しかし、このファイルパスは JSHint に渡す前に Windows 上でのファイルパスに変換してしまっているので正常に処理できなくなっていました。
そこで、これも同じように JSHint からの結果に含まれる Windows 上ファイルパスを元の Cygwin 上ファイルパスに戻してしまえばよいと思い、advice を設定 (Cygwin 上ファイルパス -> Windows 上ファイルパスの変換の時とは別の関数に設定) して元に戻したところ正常に動作することが確認できました。
しかし、最終的には flycheck にいろいろ手を入れすぎるのは嫌だったので、JSHint を実行する前後でファイルパスの変換を行うシェルスクリプトを書いて flycheck からはそのシェルスクリプトを呼ぶように設定することにしました。また、--config オプションのファイルパスも Cygwin 上のファイルパス -> Windows 上のファイルパスに変換しています。
シェルスクリプト (ファイル名: flycheck-jshint-cygwin):
<2015-5-16 Sat>変更: .jshintrc が祖先ディレクトリに存在する場合しない場合の両方で動作するようにした。
#!/bin/bash filename=$(cygpath -w ${@:$#}) if [ $# -eq 2 ]; then output=$(/c/nodist/bin/jshint $1 $filename) else config=$(cygpath -w $3) output=$(/c/nodist/bin/jshint $1 $2 $config $filename) fi tmp_win=$(cygpath -w /tmp/ | sed -e 's/\\/\\\\/g') output=$(echo "$output" | sed -e '/^\t*<file name=\".\+\">$/ {s|'${tmp_win}'|/tmp/|; s|\\|/|g}') echo "$output"
flycheck-jshint-cygwin はパスの通ったところに配置してください。また、/c/nodist/bin/jshint
の部分は実際の環境に合わせて jshint のコマンドがインストールされているパスを指定してください。
init.el に書く flycheck の設定:
(when (eq system-type 'cygwin) (flycheck-define-checker javascript-jshint "A JavaScript syntax and style checker using jshint. See URL `http://www.jshint.com'." :command ("flycheck-jshint-cygwin" "--checkstyle-reporter" (config-file "--config" flycheck-jshintrc) source) :error-parser flycheck-parse-checkstyle :error-filter flycheck-dequalify-error-ids :modes (js-mode js2-mode js3-mode)) )
flycheck の設定は flycheck 内に定義済みのものをコピーしてきて、使用コマンドを "jshint"
-> "flycheck-jshint-cygwin"
に書き換えることで定義を上書きしています。
flycheck-mode の有効化 + α
最後に js2-mode のフックで flycheck-mode を有効にします。
init.el:
(add-hook 'js2-mode-hook (lambda () (flycheck-mode t))) )
ここまでの設定で Cygwin 版 Emacs で JavaScript の flycheck が動作するようになりました。
また、js2-mode で flycheck を使用する場合は js2-mode で標準で実行されるシンタックスチェックを無効にすることをおすすめします。
(add-hook 'js2-mode-hook (lambda () (setq js2-mode-show-parse-errors nil) (setq js2-mode-show-strict-warnings nil) (flycheck-mode t))) )
Ubuntu 14.04 上に VirtualBox で Windows 環境を構築する
今回 VirtualBox で、ホストを Ubuntu、ゲストを Windows の環境を作ってみました。
試した環境は以下の通りです。
- Lenovo ThinkPad T440s
- インテル Core i7-4600U プロセッサー (2.10GHz, 4MB, 1600MHz)
- 12GB PC3-12800 DDR3L (4GBオンボード + 8GB)
- 14.0型 FHD液晶 (1920 x 1080 IPS 300nit)
- インテル HD グラフィックス 4400
- 500GB ハード・ディスク・ドライブ, 7200rpm
- ホスト OS: Ubuntu 14.04
- ゲスト OS: Windows 7 Enterprise 評価版
VirtualBox のインストール
基本的なインストールは VirtualBox のサイト(Linux_Downloads – Oracle VM VirtualBox)に従ってインストールすれば OK です。日本語サイトでは Ubuntu で Virtualbox を使う を参考にさせていただきました。
/etc/apt/sources.list に以下を追加します。
deb http://download.virtualbox.org/virtualbox/debian trusty contrib
https://www.virtualbox.org/download/oracle_vbox.asc から Oracle public key をダウンロードします。
以下のコマンドで Oracle public key を追加します。
sudo apt-key add oracle_vbox.asc
以下のコマンドで VirtualBox をインストールします。
sudo apt-get update
sudo apt-get install virtualbox-4.3
ホストに Oracle VM VirtualBox Extension Pack をインストールする
USB 2.0 のサポートを有効にしたり、リモートデスクトップをサポートするために、ホストに Oracle VM VirtualBox Extension Pack をインストールします。
Downloads – Oracle VM VirtualBox から Oracle VM VirtualBox Extension Pack をダウンロードします。
ダウンロードしたファイルを実行してインストールします。
ゲストに 64-bit OS を選択できるようにする
仮想マシンの新規作成でゲストに 64-bit OS が選択できないことがあります。
これを解決するには BIOS の設定で BIOS - Security - Virtualization とメニューを選択していき、 Intel (R) Virtualization Technology に "Enabled"を設定します。
端末本来の解像度に設定する
最初はゲストのディスプレイが「汎用 非PnPモニター」になってしまい、ワイドディスプレイをフルに使えませんでした。
仮想マシン上のディスプレイでワイドモニタなどの解像度に対応するため、ゲスト OS に VirtualBox Guest Additions をインストールします。
インストール手順については VirtualBoxを大画面で使う(Guest Additions) を参考にしました。
仮想マシンにインストールする Windows
今なら、Windows 7, 8 の評価版が Microsoft からダウンロードできます。 評価に使うだけなら便利なのでおすすめです。
ダウンロードサイトは以下です。
ThinkPad T440s へ Ubuntu 14.04 をインストールした
長年使ってきた X200 から T440s への乗り換えを行いました。 載せた OS は Ubuntu 14.04 LTS です。
スペックは以下の通り。
- Lenovo ThinkPad T440s
- インテル Core i7-4600U プロセッサー (2.10GHz, 4MB, 1600MHz)
- 12GB PC3-12800 DDR3L (4GBオンボード + 8GB)
- 14.0型 FHD液晶 (1920 x 1080 IPS 300nit)
- インテル HD グラフィックス 4400
- 500GB ハード・ディスク・ドライブ, 7200rpm
Ubuntu の Live USB を作成する
まずは、UNetbootin を使って、Ubuntu のインストール用 USB を作成します。 このツールは Ubuntu でも Windows でも公開されているのでお好きなものを使ってください。
Ubuntu での使用方法は以下のサイトを参考にしました。
UbuntuTips/Install/Unetbootinの使用方法 - Ubuntu Japanese Wiki
Secure boot を無効にする
次に、作成した Live USB を使用して Ubuntu をインストールしたいのですが、初期状態だとブート時に USB が選択できません。 原因は Secure boot が有効になっているためで、プリインストールされている OS (Windows) でしか起動できなくなっています。
以下の手順で Secure boot を無効にします。
PC の電源を入れて、"Lenovo" が表示されているところで F1 キーを押し BIOS の設定画面に入ります。 Security - Secure Boot とメニューを選択していき、Secure Boot を "Disabled" に設定します。
参考
UbuntuTips/Install/UEFI - Ubuntu Japanese Wiki
Ubuntu のインストール
いよいよ、Ubuntu のインストールです。 PC を起動し、"Lenovo" が表示されているところで F12 キーを押すと、ブートの選択肢が表示されます。 そこで、Ubuntu の Live USB を選択します。
あとは、Ubuntu のインストーラーの指示に従ってインストールしてください。
ちなみに、パーティションは以下のように分割しました。
参考
UbuntuTips/Install/UEFI - Ubuntu Japanese Wiki
Install Ubuntu 14.04 alongside Windows 8.1 in 10 easy steps « Everyday Linux User
ディレクトリを英語名にする
ターミナルでパスを入力するときディレクトリが日本語名だと不便なので英語にします。
ターミナルから以下のコマンドを実行します。
LANG=C xdg-user-dirs-gtk-update
参考
【Ubuntu 14.04】ディレクトリを英語名に変更する | ざかしんく
CapsLock キーを Ctrl キーに置き換える
Emacs 使いにとっては定番作業。
ターミナルから以下のコマンドを実行して、キーボードプラグインを有効にします。
dconf reset /org/gnome/settings-daemon/plugins/keyboard/active
そして、以下のコマンドで、CapsLock キーを Ctrlキーに置き換えます。
dconf write /org/gnome/desktop/input-sources/xkb-options "['ctrl:nocaps']"
CapsLock キーと Ctrl キーを入れ替える場合や、設定をもとに戻す場合については以下のサイトを参考にしてください。
UbuntuTips/Desktop/HowToSetCapsLockAsCtrl - Ubuntu Japanese Wiki
ClickPad (パコパコパッド)を快適に使えるようにする
悪名高きパコパコパッドの設定です。
いろいろなサイトにいろいろな設定方法がのっていたのですが、どれを試しても不十分かうまくいかないものばかりで、満足する方法を見つけるのに苦労しました。。心が何度も折れそうになった(実際に折れた)。
結局は
ScottGarman/thinkpad_t440s · GitHub
から一式ダウンロードして、中に含まれている "build_middle_click_driver.sh" を実行することでドライバーの設定ができました。
ただし、事前に fakeroot をインストールしておく必要があります。
sudo apt-get instal fakeroot
あとは、先ほどのシェルを実行するだけ。実行中の確認メッセージは全て "yes" です。
./build_middle_click_driver.sh
<2014-12-4 Thu>追記:
上記コマンドで、/etc/X11/xorg.conf.d/90-evdev-trackpoint.conf が作成されます。 このファイルを修正すると、ClickPad の設定を変更することができます。 僕の設定内容は以下の通り。
Section "InputClass"
Identifier "Clickpad"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
# Synaptics options come here.
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
Option "SoftButtonAreas" "77% 0 0 100% 45% 77% 0 100%"
Option "AreaTopEdge" "100%"
Option "AreaBottomEdge" "0"
EndSection
Section "InputClass"
Identifier "TrackPoint"
MatchProduct "TrackPoint"
MatchDriver "evdev"
Option "EmulateWheel" "1"
Option "EmulateWheelButton" "2"
Option "XAxisMapping" "6 7"
EndSection
SoftButtonAreas の値の意味は以下の通りです。少しずつ変更して T440s でちょうど良い範囲に調整しました。
RightButtonAreaLeft RightButtonAreaRight RightButtonAreaTop RightButtonAreaBottom MiddleButtonAreaLeft MiddleButtonAreaRight MiddleButtonAreaTop MiddleButtonAreaBottom
それから、RightButtonAreaBottom、MiddleButtonAreaBottom と AreaTopEdge を 100% に設定して、ボタンを上下いっぱいに広げることでタッチパッド部分を無効にしています。
それでも、パコパコパッドは使いづらいです。昔の 左・中・右 にボタンが分かれているインターフェースが恋しい。さらにいえば、ThinkPad にパッドは不要です!
Lenovo さん、元に戻してくれないかな〜。もしくは、プログラマ用の ThinkPad を作って販売してほしいものです。でないと、次は Mac に浮気をしてしまいそう…。
プログラミング用フォント Ricty
Emacs のフォントを Ricty にした。今までは、Adobe の Source Code Pro を使っていたが、Ricty は日本語もきれいとのことだったので導入することにした。
Ricty とは
Ricty は Linux におけるプログラミングに向いたフォント。 InconsolataとMigu 1Mという2つの等幅フォントの合成で、プログラミングに最適なフォントとして知られている。
その他にも、全角スペースが可視化されるため、コードにうっかり紛れ込むこともなくなる。
Ricty のインストール
ライセンスの都合上フォント用ファイルを配布できないらしく、フォント生成スクリプトを使ってインストールする必要がある。
インストール方法は、
git clone https://github.com/yascentur/Ricty
をしたのち、README.md をみてインストールする。