Surface GoにAnaconda3をインストール

先日保留にしていた Python だけれど、結局 Jupyter Notebook を使ってみたくて Anaconda をインストールした。Anaconda は Python のディストリビューションのひとつで、科学計算関係のライブラリが多くバンドルされていて、そっち方面でよく使われているようだ。
まぁ、科学計算はともかく、Jupyter Notebook も使えるようになるというので Anaconda を選んだってわけ。
インストールは chocolatey を使った。

PS C:\Windows\system32> choco install anaconda3
Chocolatey v0.10.11
Installing the following packages:
anaconda3
By installing you accept licenses for the packages.
Progress: Downloading anaconda3 5.1.0... 100%

anaconda3 v5.1.0 [Approved]
anaconda3 package files install completed. Performing other installation steps.
The package anaconda3 wants to run 'chocolateyinstall.ps1'.
Note: If you don't run this script, the installation will fail.
Note: To confirm automatically next time, use '-y' or consider:
choco feature enable -n allowGlobalConfirmation
Do you want to run the script?([Y]es/[N]o/[P]rint): Y

WARNING: installing anaconda3, this can take a long time, because the installer will write tons of files on your disk
WARNING: Please sit back and relax
WARNING: This usually will take 10-15 mins on an SSD, and about 30 mins on HDD
WARNING:
WARNING: If you want to make sure the program is running, you can open Task Manager
WARNING: you will find the installer running in Background Process
WARNING: Url has SSL/TLS available, switching to HTTPS for download
Downloading anaconda3 64 bit
  from 'https://repo.continuum.io/archive/Anaconda3-5.1.0-Windows-x86_64.exe'
Progress: 100% - Completed download of C:\Users\takatoh\AppData\Local\Temp\chocolatey\anaconda3\5.1.0\Anaconda3-5.1.0-Windows-x86_64.exe (537.08 MB).
Download of Anaconda3-5.1.0-Windows-x86_64.exe (537.08 MB) completed.
Hashes match.
Installing anaconda3...
anaconda3 has been installed.
  anaconda3 can be automatically uninstalled.
 The install of anaconda3 was successful.
  Software installed to 'C:\tools\anaconda3'

Chocolatey installed 1/1 packages.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

コマンドひとつでインストールできるのはいいけど、500MB 以上あるじゃないか。えらい時間がかかった。

で、これで Python が使えるようになったかというと、だめだった。python は C:\tools\Anaconda3 にインストールされているけど、パスが通っていない。chocolatey がやってくれなかったみたいだ。仕方がないので、自分でパスを通した。

PS C:\Users\takatoh> python -V
Python 3.6.4 :: Anaconda, Inc.

これでOK。

[追記]

上記で Python は使えるようになったけど、pip や Anaconda のパッケージマネージャである conda コマンドは相変わらず使えない。使えるようにするには C:\tools\Anaconda\Scripts にパスを通す。通したうえで conda list コマンドを実行してみると、これだけのパッケージがインストールされているのがわかる。

PS C:\Users\takatoh> conda list
# packages in environment at C:\tools\Anaconda3:
#
# Name                    Version                   Build  Channel
_ipyw_jlab_nb_ext_conf    0.1.0            py36he6757f0_0
alabaster                 0.7.10           py36hcd07829_0
anaconda                  5.1.0                    py36_2
anaconda-client           1.6.9                    py36_0
anaconda-navigator        1.7.0                    py36_0
anaconda-project          0.8.2            py36hfad2e28_0
asn1crypto                0.24.0                   py36_0
astroid                   1.6.1                    py36_0
astropy                   2.0.3            py36hfa6e2cd_0
attrs                     17.4.0                   py36_0
babel                     2.5.3                    py36_0
backports                 1.0              py36h81696a8_1
backports.shutil_get_terminal_size 1.0.0            py36h79ab834_2
beautifulsoup4            4.6.0            py36hd4cc5e8_1
bitarray                  0.8.1            py36hfa6e2cd_1
bkcharts                  0.2              py36h7e685f7_0
blaze                     0.11.3           py36h8a29ca5_0
bleach                    2.1.2                    py36_0
bokeh                     0.12.13          py36h047fa9f_0
boto                      2.48.0           py36h1a776d2_1
bottleneck                1.2.1            py36hd119dfa_0
bzip2                     1.0.6                hbe05fcf_4
ca-certificates           2017.08.26           h94faf87_0
certifi                   2018.1.18                py36_0
cffi                      1.11.4           py36hfa6e2cd_0
chardet                   3.0.4            py36h420ce6e_1
click                     6.7              py36hec8c647_0
cloudpickle               0.5.2                    py36_1
clyent                    1.2.2            py36hb10d595_1
colorama                  0.3.9            py36h029ae33_0
comtypes                  1.1.4                    py36_0
conda                     4.4.10                   py36_0
conda-build               3.4.1                    py36_0
conda-env                 2.6.0                h36134e3_1
conda-verify              2.0.0            py36h065de53_0
console_shortcut          0.1.1                h6bb2dd7_3
contextlib2               0.5.5            py36he5d52c0_0
cryptography              2.1.4            py36he1d7878_0
curl                      7.58.0               h7602738_0
cycler                    0.10.0           py36h009560c_0
cython                    0.27.3           py36h22f4c84_0
cytoolz                   0.9.0            py36hfa6e2cd_0
dask                      0.16.1                   py36_0
dask-core                 0.16.1                   py36_0
datashape                 0.5.4            py36h5770b85_0
decorator                 4.2.1                    py36_0
distributed               1.20.2                   py36_0
docutils                  0.14             py36h6012d8f_0
entrypoints               0.2.3            py36hfd66bb0_2
et_xmlfile                1.0.1            py36h3d2d736_0
fastcache                 1.0.2            py36hfa6e2cd_2
filelock                  2.0.13           py36h20000bf_0
flask                     0.12.2           py36h98b5e8f_0
flask-cors                3.0.3            py36h8a3855d_0
freetype                  2.8                  h51f8f2c_1
get_terminal_size         1.0.0                h38e98db_0
gevent                    1.2.2            py36h342a76c_0
glob2                     0.6              py36hdf76b57_0
greenlet                  0.4.12           py36ha00ad21_0
h5py                      2.7.1            py36he54a1c3_0
hdf5                      1.10.1               h98b8871_1
heapdict                  1.0.0                    py36_2
html5lib                  1.0.1            py36h047fa9f_0
icc_rt                    2017.0.4             h97af966_0
icu                       58.2                 ha66f8fd_1
idna                      2.6              py36h148d497_1
imageio                   2.2.0            py36had6c2d2_0
imagesize                 0.7.1            py36he29f638_0
intel-openmp              2018.0.0             hd92c6cd_8
ipykernel                 4.8.0                    py36_0
ipython                   6.2.1            py36h9cf0123_1
ipython_genutils          0.2.0            py36h3c5d0ee_0
ipywidgets                7.1.1                    py36_0
isort                     4.2.15           py36h6198cc5_0
itsdangerous              0.24             py36hb6c5a24_1
jdcal                     1.3              py36h64a5255_0
jedi                      0.11.1                   py36_0
jinja2                    2.10             py36h292fed1_0
jpeg                      9b                   hb83a4c4_2
jsonschema                2.6.0            py36h7636477_0
jupyter                   1.0.0                    py36_4
jupyter_client            5.2.2                    py36_0
jupyter_console           5.2.0            py36h6d89b47_1
jupyter_core              4.4.0            py36h56e9d50_0
jupyterlab                0.31.4                   py36_0
jupyterlab_launcher       0.10.2                   py36_0
lazy-object-proxy         1.3.1            py36hd1c21d2_0
libcurl                   7.58.0               h7602738_0
libiconv                  1.15                 h1df5818_7
libpng                    1.6.34               h79bbb47_0
libssh2                   1.8.0                hd619d38_4
libtiff                   4.0.9                h0f13578_0
libxml2                   2.9.7                h79bbb47_0
libxslt                   1.1.32               hf6f1972_0
llvmlite                  0.21.0           py36he0b0552_0
locket                    0.2.0            py36hfed976d_1
lxml                      4.1.1            py36hef2cd61_1
lzo                       2.10                 h6df0209_2
markupsafe                1.0              py36h0e26971_1
matplotlib                2.1.2            py36h016c42a_0
mccabe                    0.6.1            py36hb41005a_1
menuinst                  1.4.11           py36hfa6e2cd_0
mistune                   0.8.3                    py36_0
mkl                       2018.0.1             h2108138_4
mkl-service               1.1.2            py36h57e144c_4
mpmath                    1.0.0            py36hacc8adf_2
msgpack-python            0.5.1            py36he980bc4_0
multipledispatch          0.4.9            py36he44c36e_0
navigator-updater         0.1.0            py36h8a7b86b_0
nbconvert                 5.3.1            py36h8dc0fde_0
nbformat                  4.4.0            py36h3a5bc1b_0
networkx                  2.1                      py36_0
nltk                      3.2.5            py36h76d52bb_0
nose                      1.3.7            py36h1c3779e_2
notebook                  5.4.0                    py36_0
numba                     0.36.2          np114py36h12cb543_0
numexpr                   2.6.4            py36h30784b8_0
numpy                     1.14.0           py36h4a99626_1
numpydoc                  0.7.0            py36ha25429e_0
odo                       0.5.1            py36h7560279_0
olefile                   0.45.1                   py36_0
openpyxl                  2.4.10                   py36_0
openssl                   1.0.2n               h74b6da3_0
packaging                 16.8             py36ha0986f6_1
pandas                    0.22.0           py36h6538335_0
pandoc                    1.19.2.1             hb2460c7_1
pandocfilters             1.4.2            py36h3ef6317_1
parso                     0.1.1            py36hae3edee_0
partd                     0.3.8            py36hc8e763b_0
path.py                   10.5             py36h2b94a8f_0
pathlib2                  2.3.0            py36h7bfb78b_0
patsy                     0.5.0                    py36_0
pep8                      1.7.1                    py36_0
pickleshare               0.7.4            py36h9de030f_0
pillow                    5.0.0            py36h0738816_0
pip                       9.0.1            py36h226ae91_4
pkginfo                   1.4.1            py36hb0f9cfa_1
pluggy                    0.6.0            py36hc7daf1e_0
ply                       3.10             py36h1211beb_0
prompt_toolkit            1.0.15           py36h60b8f86_0
psutil                    5.4.3            py36hfa6e2cd_0
py                        1.5.2            py36hbcfbabc_0
pycodestyle               2.3.1            py36h7cc55cd_0
pycosat                   0.6.3            py36h413d8a4_0
pycparser                 2.18             py36hd053e01_1
pycrypto                  2.6.1            py36hfa6e2cd_7
pycurl                    7.43.0.1         py36h74b6da3_0
pyflakes                  1.6.0            py36h0b975d6_0
pygments                  2.2.0            py36hb010967_0
pylint                    1.8.2                    py36_0
pyodbc                    4.0.22           py36h6538335_0
pyopenssl                 17.5.0           py36h5b7d817_0
pyparsing                 2.2.0            py36h785a196_1
pyqt                      5.6.0            py36hb5ed885_5
pysocks                   1.6.7            py36h698d350_1
pytables                  3.4.2            py36h71138e3_2
pytest                    3.3.2                    py36_0
python                    3.6.4                h6538335_1
python-dateutil           2.6.1            py36h509ddcb_1
pytz                      2017.3           py36h1d3fa6b_0
pywavelets                0.5.2            py36hc649158_0
pywin32                   222              py36hfa6e2cd_0
pywinpty                  0.5              py36h6538335_1
pyyaml                    3.12             py36h1d1928f_1
pyzmq                     16.0.3           py36he714bf5_0
qt                        5.6.2           vc14h6f8c307_12  [vc14]
qtawesome                 0.4.4            py36h5aa48f6_0
qtconsole                 4.3.1            py36h99a29a9_0
qtpy                      1.3.1            py36hb8717c5_0
requests                  2.18.4           py36h4371aae_1
rope                      0.10.7           py36had63a69_0
ruamel_yaml               0.15.35          py36hfa6e2cd_1
scikit-image              0.13.1           py36hfa6e2cd_1
scikit-learn              0.19.1           py36h53aea1b_0
scipy                     1.0.0            py36h1260518_0
seaborn                   0.8.1            py36h9b69545_0
send2trash                1.4.2                    py36_0
setuptools                38.4.0                   py36_0
simplegeneric             0.8.1                    py36_2
singledispatch            3.4.0.3          py36h17d0c80_0
sip                       4.18.1           py36h9c25514_2
six                       1.11.0           py36h4db2310_1
snowballstemmer           1.2.1            py36h763602f_0
sortedcollections         0.5.3            py36hbefa0ab_0
sortedcontainers          1.5.9                    py36_0
sphinx                    1.6.6                    py36_0
sphinxcontrib             1.0              py36hbbac3d2_1
sphinxcontrib-websupport  1.0.1            py36hb5e5916_1
spyder                    3.2.6                    py36_0
sqlalchemy                1.2.1            py36hfa6e2cd_0
sqlite                    3.22.0               h9d3ae62_0
statsmodels               0.8.0            py36h6189b4c_0
sympy                     1.1.1            py36h96708e0_0
tblib                     1.3.2            py36h30f5020_0
terminado                 0.8.1                    py36_1
testpath                  0.3.1            py36h2698cfe_0
tk                        8.6.7                hcb92d03_3
toolz                     0.9.0                    py36_0
tornado                   4.5.3                    py36_0
traitlets                 4.3.2            py36h096827d_0
typing                    3.6.2            py36hb035bda_0
unicodecsv                0.14.1           py36h6450c06_0
urllib3                   1.22             py36h276f60a_0
vc                        14                   h0510ff6_3
vs2015_runtime            14.0.25123                    3
wcwidth                   0.1.7            py36h3d5aa90_0
webencodings              0.5.1            py36h67c50ae_1
werkzeug                  0.14.1                   py36_0
wheel                     0.30.0           py36h6c3ec14_1
widgetsnbextension        3.1.0                    py36_0
win_inet_pton             1.0.1            py36he67d7fd_1
win_unicode_console       0.5              py36hcdbd4b5_0
wincertstore              0.2              py36h7fe50ca_0
winpty                    0.4.3                         4
wrapt                     1.10.11          py36he5f5981_0
xlrd                      1.1.0            py36h1cb58dc_1
xlsxwriter                1.0.2            py36hf723b7d_0
xlwings                   0.11.5                   py36_0
xlwt                      1.3.0            py36h1a4751e_0
yaml                      0.1.7                hc54c509_2
zict                      0.1.3            py36h2d8e73e_0
zlib                      1.2.11               h8395fce_2

Surface Goが届いたのでセットアップ

もうおとといの話になるけど、注文してあった Surface Go が届いたのでセットアップをした。
セットアップといっても Windows のそれは、画面の案内に沿ってやっていくだけなのでサクッと終了。どういうわけかホスト名を指定するところがなかったので、スタートメニューから[設定]→[システム]→[バージョン情報]と辿って、「このPCの名前を変更」ボタンを押して変更した。名前は flambay にした。

Surface Go の Windows は Sモードといって、Microsoft Store のアプリしか使えないようになている(その代わり安全でパフォーマンスも悪くならないらしい)ので、これを解除して普通の Windwos 10 Home にする。このページから Microsoft Store を開くとSモードを解除するページに飛んだので(今試したら出てこなかったけど)、「インストール」を押して解除。なんだかすぐに終わったので大丈夫か?と思ったけど、大丈夫らしい。後に書くどちゃんと Microsoft Store 以外のアプリもインストールできるようになったのでOKのようだ。
アプリのインストールには Chocolatey という、Windows 用のパッケージマネージャーを使った。

 cf. Chocolatey

要するに Ubuntu の apt や Mac の homebrew みたいなもの。インストールするには、PowerShell を管理者モードで開いて、インストールページにあるコマンドをコピペして実行する。インストール出来たら、いろんなアプリをコマンドだけでインストールできるようになる。とりあえずは次のアプリをインストールした。

  • Chocolatey GUI
  • Ruby
  • Go
  • GIt
  • Google Chrome
  • Sublime Text3
  • Dropbox
  • 秀丸エディタ

Gauche はパッケージがなかったので公式サイトから msi インストーラをダウンロードして普通にインストールした。
あと、Python をインストールしたいんだけど、今回は Jupyter notebook も使ってみたいので、どうしようか考えている。

とりあえずこんなところでいったん終了。

WindowsからSambaの共有フォルダにコピーするときエラーが発生するようになってしまった

Samba で共有フォルダを作っている Ubuntu マシン(wplj)の外付け HDD を ext4 にフォーマットしたところ、Windows からファイルをコピーするときに、頻繁にエラーが発生するようになってしまった。
そもそも wplj の共有フォルダは Windows マシンのデータバックアップに使っていたもので、もとは NTFS のまま使っていた。そこに robocopy コマンドでバックアップをとっていた。例えば次のように。

robocopy /mir F:\softwares P:\

F: は Windows マシンの外付け HDD、P: は wplj の共有フォルダをネットワークドライブとして割り当てたものだ。wplj の外付け HDD が NTFS のときはこれで何の問題もなくバックアップできていたんだけど、ext4 にしたら「予期しないネットワークエラー」が頻繁に発生するようになってしまった、というわけ。robocopy コマンドだけでなく、エクスプローラーを使ってコピーしてみても状況は同じだった。まったくコピーができないわけじゃないので、ますますわからない。Web を見ながらいくつか解決方法を試してみたけれど、状況は変わらず。それで困っている。

ところで、よくわからないんだけど、CentOS マシン(aybesea)にたてた Samba の共有フォルダでは、上記のようなエラーは起こらない。なぜだろう?

新しいPC(Windows 10)のセットアップをした

昨日の話。Windowsマシン valarie の買い替えの新しい PC のセットアップをした。Windows の更新にすげー時間がかかったせいで1日仕事だった。
セットアップ自体は特に難しいところはないんだけど、途中で Windows の更新をするところで数時間もかかってしまった。特に、「完了の割合」が 99% になってからずっと2時間くらい進まず、結局お祈りしながら強制リブートした。無事リブートしたのでよしとする。更新がどうなったかは分からないけど、今日になってみたら新しい更新がインストールされていたので、結果としては大丈夫だったようだ。
以下、インストールしたアプリケーション。

  • Norton Internet Security
  • iTunes
  • Dropbox
  • Firefox
  • Adobe Reader DC
  • Sublime Text 3
  • 秀丸
  • Git
  • RLogin
  • FFFTP
  • VirtualBox
  • B’s Recoder GOLD
  • Microsoft Office 2013
  • Ruby
  • Python
  • Node.js

とりあえずこんなところ。
あ、ホスト名は montana にした。
あと古いマシンは廃棄する前に CentOS を入れていろいろ実験してみるつもり。

新しいPCが届いたのでWindowsを消してUbuntuをインストールした

また PC 買ったのかといわれそうだけど、これは予定通り。去年買ったノートPC が予定外だったのだ。
新しい PC は Ubuntu をインストールして宅内ネットワークのファイルサーバ兼WEBサーバにする。ホスト名は wplj。

Windows10 のセットアップとリカバリメディア作成

まずは Windows 10 のセットアップ。これは最低限の設定で。
それから、万が一 Ubuntu がうまくインストールできなかった時のために Windows10 のリカバリメディアを作成しておく。スタートメニューの「HP ヘルプとサポート」から「HP Recovery Manager」を起動。手順に従ってリカバリメディアを作成した(全部でDVD-R 3枚)。結構時間がかかる。

起動ドライブの順序変更

再起動中に F2 キーを押して BIOS 設定に移動、USB の CD-ROM ブートを内部 HD よりも優先に設定する。そして起動。すると Windows が起動してしまった。もう一度 BIOS 設定に移動して確認すると、ちゃんと USB CD-ROM が優先になっている。おかしい。仕方がないので、BIOS の BOOT メニューから USB CD-ROM ブートを選んだ。

Ubuntu 16.04 LTSのインストール

今度はちゃんと Ubuntu の DVD から起動したので、Ubuntu のインストールをする。途中、「Ubuntuのインストール中にアップデートをダウンロードする」を選ぶ。
また、Windows Boot Manager が検出されるので「ディスクを削除してUbuntuをインストール」を選択。あとはほぼデフォルトで。コンピューターの名前は上に書いた通り wplj。ユーザーは takatoh を作った。
しばらくしてインストールが完了。再起動すると、無事 Ubuntu が起動した。

とりあえずはここまで。あとの設定とかはエントリを分けて書く。

ImageMagickでR,G,BのRとBを入れ替える

手元に色のおかしい bmp 画像があった。どうも R,G,B が入れ替わっているらしい。
ImageMagick の convert コマンドで何とかできないかとググってみたら、↓このページを見つけた。

 cf. ImageMagickを使ったグレイスケール、反転、RGB入れ替えについて – Qiita

このページによると、いったん R,G,B それぞれの画像に分解してから、順番を入れ替えて合成すればいいようだ。詳しくは書かないけど、中間ファイルを作らなきゃいけないし、convert コマンドのオプション指定も難しい(詳しくは理解してない)。それでも試してみると、どうやら R と B を入れ替えると正常らしい色に変換できた。
とはいえ、画像ファイルは千個以上もあっていちいち手でやってられないので、スクリプト(バッチファイル)を書いた。
一つは、色のおかしい bmp ファイルを正常な png ファイルに変換するスクリプト。

@echo off
convert %1 -fX R img_R.png
convert %1 -fX G img_G.png
convert %1 -fX B img_B.png
convert ( img_B.png img_G.png img_R.png ) -set clorspace RGB -combine -set colorspace sRGB img_BGR.png
convert -flip img_BGR.png %2
del img_*.png

もう一つは、上記のスクリプトをカレントディレクトリの全 bmp ファイルに適用するスクリプト。

for %%I in (*.bmp) do convertBGR %%I %%~nI.png

これで全部正常になった。

Windows 10環境のrubygemsでSSLエラーが発生した場合の対処法

新しい PC のセットアップ中、rubygems でエラーが発生した。環境は次の通り。

  • Windows 10 Home
  • Ruby 2.3.1 (RubyInstaller)
  • gem 2.5.1

発生したエラーは:

^o^ > gem install acm
ERROR:  Could not find a valid gem 'acm' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

どうも、SSLのエラーらしい。

で、いろいろとググりながら試した結果、次の手順でうまく回避できたのでメモしておく。

rubygemsのアップデート

普通なら gem コマンドでアップデートできるけど、それが使えないので rubygems.org からダウンロードしてアップデートする。
 cf. rubygems-update 2.6.8
上のリンクから、rubygems-update の最新版 2.6.8 をダウンロード、インストールする。

^o^ > gem install rubygems-update-2.6.8.gem --local
Successfully installed rubygems-update-2.6.8
Parsing documentation for rubygems-update-2.6.8
Installing ri documentation for rubygems-update-2.6.8
Done installing documentation for rubygems-update after 39 seconds
1 gem installed

^o^ > gem -v
2.5.1

インストールしただけではアップデートされないので、update_rubygems コマンドでアップデートする。

^o^ > update_rubygems
RubyGems 2.6.8 installed
Parsing documentation for rubygems-2.6.8
Installing ri documentation for rubygems-2.6.8
(以下略)

長々とメッセージが出るけど、これでアップデートできた。

^o^ > gem -v
2.6.8

確認

これで、正常に使えるようになったはず。

^o^ > gem install acm
Fetching: thor-0.19.1.gem (100%)
Successfully installed thor-0.19.1
Fetching: acm-0.4.2.gem (100%)
Successfully installed acm-0.4.2
Parsing documentation for thor-0.19.1
Installing ri documentation for thor-0.19.1
Parsing documentation for acm-0.4.2
Installing ri documentation for acm-0.4.2
Done installing documentation for thor, acm after 2 seconds
2 gems installed

OK。

参考ページ

 cf. Ruby distros, RubyGems, and SSL—Oy vey!

新しいPCが届いた

HP の EliteBook Folio G1 ってやつ。1週間ほど前の夜中、薄くて軽くて頑丈、っていう惹句についうっかりとポチッたもの。確かに12.5型にしては軽い。
OS は Ubuntu じゃなくてプリインストールの Windows 10 Home をそのまま使うことにした。MS-Office を使いたいからそのほうがいいんだよね。
朝からセットアップを始めて、一通り終わったところ。rubygems がエラーをはいてちょっとハマったけど、他は特に問題なし。ホスト名は sofa にした。
以下、インストールしたアプリケーション。

  • Microsoft Office 2013
  • Firefox
  • Dropbox
  • Ruby
  • Python
  • Node.js
  • Gauche
  • Haskell
  • Perl
  • Git
  • 秀丸エディタ

とりあえずこんなところか。rubygems の問題の解決方法はエントリーを分けて書く。

Windows10にアップグレードした

Windows マシン(valarie)を Windows7 から Windows10 にアップグレードした。昨日からダウンロードを始めて、今朝になってやっと終わった。2GB 超えのダウンロードは不安定なうちの無線LANにはつらいよ。

ダウンロードを別にすれば、アップグレード自体はすんなりといった。……ように見えたけど、なんと Office が起動できない。正確に言うと、起動するとあっという間にウィンドウが閉じてしまう。
スタートメニュー→設定→アプリと機能からインストールされている Office 2013を選ぶと、利用不可となっている。こりゃ再インストールしないとダメかなと思いつつ修復をやってみたら、うまく動作するようになった。利用不可のままなのが気になるけど。

そのほかはまだあまり試してないけど、インストールしてあるゲームのうち少なくともいくつかはダメな模様。Ruby や Python は大丈夫そう。ゲームは VirtualBox で Windows7 を使うか。

wikiの引越し

昨日は MySQL をインストールするところから始めて、MediaWiki を動かすところまで書いたけど、そのあと Windows マシンで運用している既存の wiki の引越しもしたのだった。今日はその手順について、(うろ覚えで)書く。

データベースとファイルのバックアップ

まずはデータベースの中身をファイルに吐き出させる。msqldump をいうコマンドを使うんだけど、パスが通ってなかったのでフルパスで指定。

^o^ > C:\VertrigoServ\Mysql\bin\mysqldump -u root -p wiki > wiki.sql

それから、アップロードしたファイルが保存されているフォルダを zip で固める。

^o^ > cd \www\wiki
^o^ > zip -r images.zip images

2つのファイルを持って、Ubuntu のマシンに移動。

データベースの更新とファイルの配置

Windows マシンから持ってきた wiki.sql ファイルを MySQL に読み込ます。

takatoh@nightschool $ mysql -u root -p wiki < wiki.sql

それから、images.zip を展開。すでに images フォルダがあるけどそのまま上書きする。

takatoh@nightschool $ cd /var/www/html/wiki
takatoh@nightschool $ unzip images.zip

これで一応完了。

エラー発生

ところがブラウザでアクセスしてみると、エラーが発生した。画面には「A database query error has occurred. This may indicate a bug in the software.」とか出ている。どうもデータベースのエラーのよう。ググってみたら↓このページを見つけた。

 cf. [RESOLVED] Database error in upgrading from 1.18 to 1.22

どうやら、mw-config/index.php にアクセスしてインストールをやり直せってことらしい。そのとおりにする。インストールの画面になり、進めていくとLocalSettings.php の中の $wgUpgradeKey の値を入力しろと促されるので入力する。そしたら何やらデータベースをアップグレードしているようになり、完了。
再度ブラウザでアクセスすると、ちゃんと表示された。

画像が表示されない

これは単にファイルのパーミッションの問題だった。images フォルダを展開、上書きした時に所有者が takatoh になってしまって、wiki のユーザーからアクセスできないようになっていた。なので、次のようにして解決。

takatoh@nightschool $ sudo chown -R 2246:500 images
takatoh@nightschool $ sudo chmod -R 755 images

Windowsマシンからだと表示がおかしい

Ubuntu マシンから、localhost でアクセスするぶんには問題は解決したけど、Windows マシンからアクセスすると表示がおかしい。おかしいというのは、本文は表示されるんだけど、スタイルシートなんかが読み込まれていない感じ。
ググって見つけたページがここのコメント欄。

 cf. XAMPP1.81が社内のLANに公開できない – QA@IT

LocalSettings.php の中の $wgServer の値が localhost になっているのが原因らしい。次のようにホスト名に変えた。

$wgServer = "http://nightschool";

これで、無事 Windows マシンからもちゃんと使えるようになった。