(続)Bash on Ubuntu on Windows 環境構築

はじめに

さて、Bash on Ubuntu on Windows 環境構築の続きです。

とりあえず、最初にGitの設定です。

git config --global user.name "氏名"
git config --global user.email "メールアドレス"
git config --global color.ui auto

Ruby(rbenv)環境設定

まずは、Rubyの環境を入れなきゃということで、rbenvです。

GitHub – rbenv/rbenv: Groom your app’s Ruby environment

git cloneでパッケージダウンロードして、ホームディレクトリ直下の「~/.rbenv」に展開です。

$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

もろもろ設定です。

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc

「~/.bashrc」に設定と書いていますが、「.bashrc」は既にゴチャゴチャ書かれているので、実際は「.profile」側に書いています。

「.bashrc」あるいは「.profile」を変更したので、シェル(コンソール)を開き直します。

続いて「ruby-build」もインストールします。

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

とりあえず、Rubyは最新版を入れておきますかね。ついでにBundler(gem)も入れておきます。

$ rbenv install 2.4.1
$ rbenv global 2.4.1
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
$ gem install bundler
$ rbenv rehash

Java(Oracle Java SE)

簡単ですが、Java(Oracle Java SE)もインストールしておきます。

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer

TeX(TeXLive)

TeXもインストールします。TeXはaptではなくtlmgrで管理したいので、install-tlをダウンロードします。

$ wget ftp://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz
$ tar xvzf install-tl-unx.tar.gz
$ cd install-tl-2017MMDD(展開した日付が入ります)

最小構成で構築したいので、 スキームを「scheme-small」と指定してインストールします。

$ sudo ./install-tl -repository ftp://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/ -scheme scheme-small

PATHも有効になるよう設定しておきましょう。

$ echo 'export PATH="/usr/local/texlive/2017/bin/x86_64-linux:$PATH"' >> ~/.bashrc

次に、sudoでtlmgrを動かしたいのですが、rootにはPATHが通っていません。sudo時にユーザのPATHを引き継げるようにするために、以下の設定をします。

(参考)sudo時に環境変数PATHが引き継がれない時の対策

「/etc/sudoers」を「visudo」にて編集します。

$ sudo visudo

以下2行をコメントアウト(行頭に「#」を付ける)

#Defaults env_reset
#Defaults secure_path="/usr/loca/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

そして、以下を追記します。

Defaults env_keep += "PATH"

それでは、「sudo tlmgr」でセットアップの続きをします。

$ sudo tlmgr update --self --all
$ sudo tlmgr install collection-langjapanese
$ kanji-config-updmap-sys status
CURRENT family for ja: ipaex
Standby family : ipa

私が論文や授業テキスト等を作成する上で、必要なパッケージもインストールしておきます。

$ sudo tlmgr install here moreverb

適当なサンプルTeXファイルを作成して、コンパイルとPDF化を試してみます。

\documentclass{jsarticle}
\begin{document}
Hello World!!
こんにちは、世界。
\LaTeX

\begin{equation}
 \sum_{i=0}^\infty x_i
\end{equation}
\end{document}

platexコマンドによるコンパイルと、dvipdfmxによりDVIファイルをPDFに変換します。

$ platex hello.tex
$ dvipdfmx hello.dvi

PDF化の際に、次のようなオプションを指定すると、フォント埋め込みなしのPDFを作成することができます。

$ dvipdfmx hello.dvi -f ptex-noEmbed.map -f otf-noEmbed.map

MySQL

RailsにてMySQLが必要なため、MySQLをインストールします。

$ sudo apt-get install mysql-server

これまで、設定ファイルは「/etc/my.cnf」をいじれば良かったのですが、今回はあれこれ複数のファイルにconfファイルを分けて管理しているようです。デフォルトの文字エンコーディング方式をUTF-8に設定します。

まずは、「/etc/mysql/mysql.conf.d/mysqld.cnf」、このファイルの最後の行に次のセンテンスを追加しておきます。

character-set-server=utf8

次に、「/etc/mysql/conf.d/mysql.cnf」、これには、次のセンテンスを追記しておきます。

[mysql]
default-character-set=utf8

それでは、MySQLのサービスを開始してみます。

$ sudo service mysql start

続いて、(MySQLの)rootのパスワードの変更だったり、リモートからの接続を拒否したりするためのセキュリティの設定を行います。

$ sudo mysql_secure_installation

それでは、MySQLにrootでログインしてみます。

$ mysql -u root -p

接続を確認したら「status」コマンドを打ってみて、charactersetがすべて「utf8」になっているかどうか確認します。

mysql > status
mysql > \q
$

後、Railsを使用する上で必要なライブラリもaptでインストールしておきます。

$ sudo apt install libxml2 libxml2-dev mysql-dev libmysqld-dev libxst1-dev pkg-config nodejs

その他備忘録

BoW上でRailsを動かす際にハマったこと。

MySQLのバージョンが新しくなり、前に使用していたgem(mysql2)のバージョン(0.3.16)では対応できなくなっていたため、「Gemfile」にて、次のように指定します。

gem 'mysql2', '~> 0.3.16'

Rails実行時クエリにて、前のMySQLのバージョンでは生じなかったエラーが。。。

Expression #1 of ORDER BY clause is not in SELECT list, references column

要は、SELECTで指定していないフィールドをORDER BYで指定してはダメよ、ということなのですが、かなり制約が厳しくなっています。確認すると。。。

mysql > select @@sql_mode;

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

ここに「ONLY_FULL_GROUP_BY」が入っています。これをsql_modeから外します。「my.cnf」(BoWでは、/etc/mysql/conf/mysqld.conf)の[mysqld]配下に、以下を記載します(「ONLY_FULL_GROUP_BY」を外す)。

sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

最初は、Windows側のホームディレクトリ(C:\Users\hoge、即ち/mnt/c/Users/hoge)配下のディレクトリに、Railsディレクトリを展開してみたのですが、これがかなり遅い。もともと非力のノートパソコン(CPUがCore M-5Y10 0.8〜2GHzMAX)なので遅いことは遅いのですが、「rails s」と叩いてから、WEBrickが完全に起動するまでに約35秒もかかります。ページを遷移するたびに遅さを実感し、これでは開発効率が低下してしまいます。

ならば、BoW側のホームディレクトリ(~/)配下のディレクトリに、Railsディレクトリを展開してみたところ、こちらはWEBrickの起動に約7秒でした。起動時間その差1/5!

WSLでRails開発する場合は、Railsディレクトリを「/mnt/c」配下ではなく、WSLのファイルシステム上に置く必要があることがわかりました。

やはり、WSLにてファイルの作成や更新などの作業する際は、WSLのファイルシステム上、即ち「C:\Users\hoge\AppData\Local\lxss」配下を利用しなければ効率悪いということですな。Windowsエクスプローラからアクセスしづらい場所なので、ショートカットを用意して置きましょう。dvipdfmxで生成したPDFファイルや、Linux上の画像処理プログラムにて生成した画像データなどの確認で、Windowsのビューワーが使いたいですものね。ついでにWindowsのエディタでテキストファイルの編集も。。。といきたいところですが、前にも「Bash on Ubuntu on Windows 環境設定」で書きましたが、Windows側から、WSLのファイルシステムにアクセス(作成or更新)するのは元々厳禁なようです。テキストファイルの作成や編集等はLinux上のVimやEmacsを使用しましょう。

(続)Bash on Ubuntu on Windows 環境構築」への2件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中