平山::Ubuntu Linux 14.04 64ビット版

このページについて

このページは、Ubuntu Linux 14.04 64ビット版に関する個人的なメモです。

私が自分のパソコンでUbuntuを使っているため、 ソフトのインストールの記録などをメモしています。 教育用計算機システムの端末に使われているOSもUbuntu Linuxです(ただしバージョンは異なります)ので、教育用計算機システムを使ったり、システム管理したりするときにも、このメモは役に立つかもしれません。 なお、このメモは、あくまで自分のパソコンに関するメモですので、 教育用計算機システムの話ではありません。 私は、教育用計算機システムの管理者ではありません。

これまで私はUbuntu 12.04LTSを使ってきて、14.04LTSに乗り換えた。そのため、 12.04と14.04の違いについて個人的な感想を書いているところがちらほらある。

ハードウェア構成

CPU
Intel Core i7
メモリ
16GB
グラフィックカード
AMD HD7750
SSD/HDD
SSD Plextor M3Pro 128GB * 1個 (OS用), LSI MegaRAID SAS 9265-8i RAID 6 実容量680GB (ホームディレクトリとVMware用), HDD * 2個(バックアップ用)

ユーザの作成

インストール時にはダミーのユーザを作って、あとからユーザhirayamaを追加 する。hirayamaのユーザIDとグルーブIDをこれまで使ってきた値にしたいため。 ただし,GUIツールでは,ユーザIDやグルーブIDを変えられないようなので, vipw, vigrコマンドを使って,変更した。

インストール後もダミーのユーザのアカウントは残しておこう。ubuntuでは rootでのログインをしないような設計思想になっているので、何かのミスで hirayamaがログインできなくなったときに、ダミーユーザでログインことがで きる。

Japanese Teamのパッケージレポジトリを追加する

今回私は、Japanese Teamが配布している日本語Remixを使ったので、 これは不要(設定済み)。

日本語Remixでない素のUbuntuをインストールした人は、下記を参考に Japanese Teamのパッケージレポジトリを追加する。

日本語ディレクトリを英語に

デスクトップとかダウンロードなど日本語名のディレクトリが、ホームディレクトリ に作られている。日本語ディレクトリだと、何かと不便なことが多いので、 英語ディレクトリにしておく。コマンドは下記の通り。

LANG=C xdg-user-dirs-gtk-update

ディレクトリ中にファイルがあると、元のディレクトリが残ってしまうらしいので、 早めにやっておくのがよそさう。

固定IPアドレスを設定する.

/etc/hostname

の中身が

snowdorp

になっていることを確認する。

/etc/hosts

に,127.0.1.1という気持ちの悪いIPアドレスが書かれているので,ここを,

10.29.201.35            snowdrop   snowdrop.sao.kono

にした. 他にも自分で実験するためのマシンがあるので、それらも記入して、 結局下記のようになっている。

127.0.0.1	localhost
10.29.201.33	sedge sedge.sao.kono
10.29.201.34	spurge spurge.sao.kono
10.29.201.35	snowdrop snowdrop.sao.kono
10.29.201.36	sundew sundew.sao.kono

/etc/hostsにはIPv6関係の設定も書かれていたが、特にいじらずに放置した。

続いて、/etc/network/interfacesを編集したくなるが、サーバ版とは異なり, これを直接いじってはいけないらしい.GUIから設定するものらしい.

「システム設定」->「ネットワーク」->「有線」->「オプション」-> 「IPv4設定」->「手動」->「追加」

アドレス
10.29.201.35
ネットマスク
255.255.255.0
ゲートウェイ
10.29.201.22
DNSサーバ
10.29.201.71
ドメインを検索
sao.kono

IPv6は使わないので、「IPv6設定」を「無視」にしておいた。

これらの設定をした後,/etc/network/interfacesを見てみたが, 内容は元のまま変わっていない。今回の設定は, どこか他のファイルに書かれるようだ。

resolv.conf

/etc/resolv.confを見ると,なぜかnameserverが自分自身?(127.0.1.1)になっ ている。GUIのネットワークの設定ツールから,ちゃんとDNSの設定をしてある ので,これは気にしないことにする。(GUIのネットワークの設定ツールの設定 結果が書かれるファイルはこれではないようだ。)なお,今となっては,このファ イルは直接編集してはいけないらしい。resolvconfコマンドで設定するとのこ と。

/etc/hosts.allow, /etc/hosts.deny

/etc/hosts.allowの設定内容はこんな感じ。必要最小限のマシンからのアクセ スのみ許可している。

ALL: 127.0.0.1
ALL: 10.29.201.33
ALL: 10.29.201.34
ALL: 10.29.201.35
ALL: 10.29.201.36
sshd: 10.29.201.0/255.255.255.0

/etc/hosts.denyの設定内容はこんな感じ。原則アクセス不可にしている。

ALL: ALL

ssh

sshというメタパッケージを入れる。

設定ファイル/etc/ssh/sshd_configを見るとなぜか、rootでのログインが有効 になっているので、無効にする。

PermitRootLogin no      ← noにしておく

automount

autofsパッケージをインストールする。 /etc/auto.masterは、設定ファイルだが、/etc/auto.netはスクリプトになって いる。

$ sudo mkdir /net

でマウントポイントnetを作った。

/etc/auto.masterの中で、参考例で書かれているように/netの行を一行追加(下記)して、 再起動した。

/net    -hosts

/netの下から、コンピュータ名/ディレクトリ名でアクセスすれば、exportされ ているディレクトリを自動的にマウントする。別段/etc/fstab等を書き換える 必要ない。便利でありがたい。

NFSサーバ

VMWareの仮想マシン等の自分の実験マシンからNFSマウントをしたいことがある ため、インストールした。

インストールしたパッケージ

  • nfs-kernel-server

ちなみにNFSクライアントのパッケージはnfs-common。 私の場合、nfs-commonはこの時点ですでに入っていた。

/etc/exportsの設定内容は以下の通り。

# Disks being exported
/diskb  sedge(rw,no_root_squash,no_subtree_check) spurge(rw,no_root_squash,no_subtree_check) snowdrop(rw,no_root_squash,no_subtree_check) sundew(rw,no_root_squash,no_subtree_check)
/diskc  sedge(rw,no_root_squash,no_subtree_check) spurge(rw,no_root_squash,no_subtree_check) snowdrop(rw,no_root_squash,no_subtree_check) sundew(rw,no_root_squash,no_subtree_check)
/diskd  sedge(rw,no_root_squash,no_subtree_check) spurge(rw,no_root_squash,no_subtree_check) snowdrop(rw,no_root_squash,no_subtree_check) sundew(rw,no_root_squash,no_subtree_check)

/diskbの行についての解説。

  • 「/diskb」はexport(公開)するディレクトリ。
  • 「sedge」は許可クライアント名。
  • 括弧の中の、rwは読み書き可の設定。no_root_squashは、クライアントのrootユーザが/diskbへroot権限でアクセス可の設定。(no_root_squashはセキュリティ的に危ないので、よく考えて使うこと。)
  • 「no_subtree_check」は、読み書きなどの許可がされているかどうかを、上流のディレクトリまで調べに行くことを無効にしている。セキュリティ的には有効の方がよいが、アクセスしにくるのは自分が管理するマシンなので、パフォーマンス優先の設定にしている。
  • 他のクライアントについても、スペースで区切って並べれば良い。この例では、「spurge」「snowdrop」「sundew」というクライアントについても同様に設定している。
  • sedge, spurge, sundewの名前とIPアドレスの情報を,/etc/hostsに記述しておくことを忘れずに。

/etc/exportsを書き換えたら、NFSサーバを再起動する。

% sudo service nfs-kernel-server restart

これで、クライアントからアクセスできるようになった。

zsh

究極のシェルZshは欠かせない。以下のパッケージをインストール。

  • zsh
  • zsh-doc

基本コマンド

  • vim
  • nkf
  • lv

自動起動するアプリの管理

xmodmapなど、自動起動したいコマンドを書いたシャルスクリプトを予め作って おき、それを「自動起動するアプリケーション」に登録する。 シェルスクリプトというのがミソ。私が試したところでは、 コマンド単体を登録するのはOKだが、コマンドと引数を登録すると、動作しない。 従って、引数を伴うコマンドを登録したいときには、 シェルスクリプトの中にコマンドと引数を書いて、 そのシェルスクリプトを登録するとよい。

12.04LTSのころは、右上のシステムアイコンから「自動起動するアプリケーショ ン」が呼びたせたが、現在は、そのアプリは非表示になったらしい。 Dashホームから「自動起動」で検索すれば出てくるので、「自動起動するアプリケーショ ン」を開く。自動起動したいプログラムを追加する。

以下は、自動起動するプログラムとして、私が追加したもののメモ

  • Dropbox (~/.dropbox-dist/dropboxdを実行すると登録される)
  • System Load Indicator (indicator-multiloadを実行すると登録される)
  • gkrellm (手動で登録)
  • 自分のシェルスクリプト (手動で登録)

日本語入力ibus-mozc

12.04のときにはお世話になったIBusであるが、 14.04ではいまいちのようなので、使わないことにする。 よってここは何もしない。 日本語Remix標準のFcitxをそのまま使うことにする。

Ibusの問題点の解説は下記参照。

日本語入力Fcitx

設定については、下記ページが参考になる。

ctrl+spaceを無効にする。

Emacsを使っていると、ctrl+spaceをFcitxに取られるのが困る。Fcitxの設定画 面において、「全体の設定」->「入力メソッドのオンオフ」から切り替えのキー ボードショートカットを変更できる。

ここで、「拡張オプションの表示」にチェックを入れると、もっと細かい 設定ができるようになる。 特に便利なのが、入力メソッドのオンとオフを異なるキーに割り当てる設定。 些細なことのように思われるかもしれないが、これは便利ですぞ。 私は「半角全角」キーのようなトグルスイッチ方式は、操作結果が現在の状態に依存するので、わかりにくく不便だと思う。 例えて言えば、順序回路の難しさである。 一方、入力メソッドのオンとオフを異なるキーに割り当てれば、操作の結果が現在の状態に関係ないので、わかりやすく便利。 例えて言えば、組み合わせ回路の単純さである。

Mozcの設定変更

Mozcを起動した状態で、インジケータ上のFcitxをクリックすると、 「Mozcツール」というメニューが選べる。そこからMozcの設定変更ができる。 かな入力も選べる。そう、私は今となっては珍しい、かな入力派なのである。

MozcのPPAを登録

2014年9月時点では、まだTrusty用の更新はない。 いずれ、ppa:japanese-testers/mozc を登録する予定。

代わりに、あわしろいくや氏のppa:japanese-testers/fcitxを登録した。 これは、ローマ字入力ではなくかな入力に設定している人に役に立つ。 これにより、fcitx-mozcのかな入力時に¥キーを打つと、「ー」(長音)でなく「ろ」に なってしまうバグが修正される。感謝。 詳しくは、fcitx-mozc/fcitx-anthyのかな入力修正版を参照。

% sudo add-apt-repository ppa:japanese-testers/fcitx
% sudo apt-get update
% sudo apt-get upgrade

Emacs

以下のパッケージを入れた。バージョンとしては、Emacs24が入った。

  • emacs
  • emacs-mozc

EmacsのXIMを無効化

Emacs上では、XIM経由のFcitxではなく、mozc.elの方を使いたいので、XIMを無 視する設定をする。 $HOME/.Xresourcesに

! XIMを無効化
Emacs*useXIM: false

とすればよい、、、はずなのだが、Ubuntu12.04のころから、X(?)にはバグがあ り、この設定が反映されない。ibus.elの作者がバグ報告している。 https://bugs.launchpad.net/ubuntu/+source/emacs23/+bug/949126

とりあえずの対処療法としては、 $HOME/.Xresourcesの「Emacs」の代わりに「Emacs24」とすれば良い。

! XIMを無効化
Emacs24*useXIM: false

emacs-mozcの設定

~/.emacs.d/init.elに、下記の設定を入れると、最低限使えるようになる。

(require 'mozc)
(setq default-input-method "japanese-mozc")

なお、他のサイトでよく書かれている 「(set-language-environment "Japanese")」は設定不要、 というか設定してはいけない。 これを設定してしまうと、なぜか日本語ファイル名が化けるようになる。

半角/全角キーで日本語入力を切り替えたいときは、下記の設定をどうぞ。

(global-set-key [zenkaku-hankaku] 'toggle-input-method)
(add-hook 'mozc-mode-hook
	  (lambda()
	    (define-key mozc-mode-map [zenkaku-hankaku] 'toggle-input-method)))

少し解説すると、 global-set-keyにより、半角/全角キーでMozcモードをONできるようになる。 一方、mozc.elは、mozc-modeに入ると、半角全角キーのイベントを奪ってしまうた め、そのキーをglobal-set-keyするだけでは、日本語入力をOFFにする切り替 えがうまくいかない。mozc-mode-mapのキーバインドも合わせて変更する必要 がある。

その件に関する参考URL

ちょっとだけ便利になる小技は、日本語入力のときに、カーソルを赤色にすること。 これをすると、 モードラインまで視線を動かさずに、Mozcモードになっているかいないかを カーソルの色で判断できるので、お勧め。

(defun th:check-mozc-and-set-cursor-color ()
  (if mozc-mode
      (set-cursor-color "red")
      (set-cursor-color "black")))
(add-hook 'input-method-activate-hook 'th:check-mozc-and-set-cursor-color)
(add-hook 'input-method-inactivate-hook 'th:check-mozc-and-set-cursor-color)
(run-at-time t 3 ;; repeat in every 3 seconds.
	     'th:check-mozc-and-set-cursor-color)

少し解説すると、 2つのadd-hookは、MozcがONになったときとOFFになったときにカーソルの色を変えるための設定。 run-at-timeは、念の為。 hookを通らない場面でも、確実にカーソルの色が正しくなるようにしている。 これがあると、 例えば、Emacsで複数のウィンドウを使っていて、MozcモードがON状態のバッファと OFF状態のバッファとの間でカーソルを行き来したときにも、 カーソルの色が変わる。 3秒毎にチェックを繰り返しているが、3秒という値は適当に決めたもので、 深い意味はない。

あとは、かな入力する人は、下記をどうぞ。 ¥キーで長音が出るようになる。(デフォルトでは「ろ」になってしまうのを修正)

(mozc-keymap-remove-entry mozc-keymap-kana-106jp ?\\)
(mozc-keymap-put-entry mozc-keymap-kana-106jp ?\\ "\u30fc")

CPUメーター等

CPUやネットワークなどのセンサ表示として、下記はぜひ入れておきたい。

  • indicator-multiload (System Load Indicator)
  • gkrellm

gkrellm

gkrellmはそのままではログイン時に自動起動してくれないので、手作業で「自 動起動するアプリケーション」に登録する。 コマンド名の欄は、単に「gkrellm」だけ。

下記は設定変更のメモ

  • 「全体」->「オプション」の「終了時にウィンドウの位置を保存...」にチェックを入れる。
  • 「全体」->「プロパティ」の下記をチェックする。
    • 「同じ種類のウィンドウの中で最下面にする」
    • 「タスクとしてタスクバーに格納しない」
    • 「タスクとしてページャに格納しない」

gkrellmに伴って、libsensors4(lm-sensors)も一緒にインストールされたよう だ。lm-sensorsにより、CPU温度などのセンサの値を取れるようになるらしい。 過去には、lm-sensorsは、多少の手作業による設定を伴うはずだったのだが、 今回は、何もしていない。

Dropbox

Dropboxオフィシャルページに、ダウンロード・インストール方法が書かれている。 debパッケージはなぜかバージョンがやたら古いので、「コマンドラインで Dropbox をインストールする」に従ってやった。

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

.dropbox-distフォルダから Dropbox デーモンを実行。

~/.dropbox-dist/dropboxd

日本語LaTeXのインストール

以下のパッケージを入れれば、texlive等、日本語LaTeXとして必要なものがひ と通り入るみたい。

  • texlive-lang-cjk
  • latex-cjk-japanese
  • xdvik-ja

以下は必須ではないが、私が使いたいので入れた。 いっそのこと、texliveパッケージを入れてしまえばみんな入るのかもしれないが、 とりあえずは、ほしいものだけ入れていくことにした。

  • texlive-science
  • texlive-math-extra

やや情報が古いが、入れておくと良さそうなものが, https://wiki.ubuntulinux.jp/JapaneseLocalizedDerivative/LaTeXForJapanese に解説されている。

12.04のときにはlocaleとしてはUTF8なのに、LaTeX関連(たとえばplatex)のみ EUCJPのままという、ちぐはぐな状況だったが、14.04ではついに LaTeXもUTF8対応になった。

あと、Emacs用の入力支援ツールも入れておく。 国内向けでは野鳥(パッケージ名:yatex)が人気だが、 私はAUC-TeX派。パッケージ名はauctex。

  • auctex

w3m-el

EmacsからWebアクセスをしたいことがあるので、w3m-elをインストール。

以下のパッケージをインストール

  • w3m
  • w3m-el
  • w3m-img

過去の12.04のEmacs23+w3m-el-snapshotのときには、Hikiの書き込み時にエラー が出る現象に見舞われたが、Emacs24+w3m-elの今回は、問題なくHikiも編集で きる。ありがたい。

ubuntu-restricted-extras

ubuntu-restricted-extrasというパッケージを入れると、 MP3, MPEG, Flashなど,マルチメディア系のサードパーティ製ソフトが一気に 入って便利。その反面、実際に何が入ったのかよく知らないまま使うことにな る。

Unityの設定ツール

Unityの基本的な設定は「システム設定」で行うが,さらに細かい設定をしたい ときには,別途上級者向けの設定ツールをインストールすればよい。

  • unity-tweak-tool (Ubuntu Tweak)
  • compizconfig-settings-manager (CompizConfig設定マネージャ)

ただし,CompizConfig設定マネージャは,設定をミスると元に戻せなくなる ほど危なっかしいらしいので,設定の確認のみに使うことにする。

LibreOfficeのPPAを登録

今後ずっと新しいLibreOfficeを使っていきたいので, ppa:libreoffice/ppaを登録した。

sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get dist-upgrade

ja_JP.EUC-JP

参考URL http://d.hatena.ne.jp/orangehat/20090421

過去の私の資産(遺産?)にはEUCで書かれたものが多いので、EUC-JPのロケール を使いたい。しかし、標準インストールしただけのUbuntuでは、EUC-JPロケー ルは使えない。現在使えるロケールは、「locale -a」で確認できる。

% locale -a | grep 'ja_JP'
ja_JP.utf8

ロケールを追加するコマンドは、「locale-gen」。指定できるロケールは、 /usr/share/i18n/SUPPORTEDファイルに書かれているもの。確認すると、 ja_JP.EUC-JPというロケールが書かれているので、これをlocale-genに指定す る。

% grep -i 'ja_JP' /usr/share/i18n/SUPPORTED
ja_JP.EUC-JP EUC-JP
ja_JP.UTF-8 UTF-8
% sudo locale-gen ja_JP.EUC-JP
Generating locales...
  ja_JP.EUC-JP... done
Generation complete.

これにより、/var/lib/locales/supported.d/localファイルにja_JP.EUC-JPが 追加され、ja_JP.EUC-JPロケールが使えるようになった。

% cat /var/lib/locales/supported.d/local
ja_JP.UTF-8 UTF-8
en_US.UTF-8 UTF-8
ja_JP.EUC-JP EUC-JP

再度、「locale -a」すると、ja_JP.EUC-JPではなく、ja_JP.eucjp(ハイフンが ない)と表示される。

% locale -a | grep 'ja_JP'
ja_JP.eucjp
ja_JP.utf8

実際にロケールを指定して、ロケール依存コマンドを試してみた感じでは、 ja_JP.EUC-JPでも、ja_JP.eucjpでも大丈夫のようだ。

Samba

12.04のときには、バージョン3.6.3を使っていた。 14.04では、バージョン4.1.6になった。 メジャーバージョンが上がって、設定方法がどう変わったのかが心配だったが、 私の使い方に関しては、ほとんど同じ設定方法がそのまま使えたので、安心した。

インストールしたパッケージ

  • samba
  • samba-doc

設定をするためのGUIツールは,system-config-sambaパッケージらしいが,と りあえず今回はインストールしないで様子見とする。

Web検索すると、ユーザがLinux側の自分の「共有」ディレクトリのみを公開し て、Windowsの共有フォルダとして誰にでもアクセスできるようにする方法がよ く見つかる。この方法は準備が簡単であるので、とりあえず使う程度なら、 それでも良いだろう。

しかし、私がやりたいのは、Linux側のホームディレクトリをまるごとWindows からアクセスすることである。もちろん、自分のホームディレクトリに Windows側からアクセスするときには、ログイン名とパスワードで認証を行うよ うにする。このような使い方をする場合には、/etc/samba/smb.confに設定をす る。以下は、私の設定のdiffである。特に重要な部分は、Windows側の workgroupを確認して、「workgroup」に忘れずに設定しておくことと、 「[homes]」セクションの設定をすることである。

% cd /etc/samba
% diff smb.conf.org smb.conf
29c29
<    workgroup = WORKGROUP
---
>    workgroup = HIRLAB
44a45,48
> # Added by Hirayama
>    allow insecure wide links = yes
>    wide links = yes
>
193,195c197,199
< ;[homes]
< ;   comment = Home Directories
< ;   browseable = no
---
> [homes]
>    comment = Home Directories
>    browseable = no
199c203
< ;   read only = yes
---
>    read only = no
203c207
< ;   create mask = 0700
---
>    create mask = 0644
207c211
< ;   directory mask = 0700
---
>    directory mask = 0755
214c218
< ;   valid users = %S
---
>    valid users = %S

「# Added by Hirayama」の部分は、「[global]」セクションに設定したもの。 セキュリティが下がるが便利になる。

allow insecure wide links = yes
wide links = yes

これは、シンボリックリンクが張られている先が、ホームディレクトリの 階層の外部であってもアクセスを認めるという設定。 デフォルトで「unix extensions = yes」になっているため、 上記の2行とも設定することに注意。(どちらか片方だけではうまくいかない。)

あとは、samba用パスワードを設定する。

% sudo smbpasswd -a hirayama

samba用パスワードが記録されるファイルは,/var/lib/samba/passdb.tdbらしい。

% sudo pdbedit -u hirayama -v

で,samba用パスワードが設定された日時を確認できる。

以上の設定で,Windows側から,「\\snowdrop\hirayama」というパスで,自分 のホームディレクトリにアクセスできるようになった。

cronを使って、データのバックアップ

Linuxでは、/etc/cron.daily/に、処理を記述したshスクリプトを入れておけば、 その処理が毎日(dailyで)行われる(/etc/crontab参照)。

そこで、以下の内容のshスクリプトを用意し、localbackupというファイル名 にし、実行権を付けて、/etc/cron.daily/においた。

#!/bin/sh
# By Hirayama

HOSTNAME=$(hostname)
THISDIR=$(cd $(dirname $0) && pwd)
FREQUENCY=${THISDIR##*/cron\.}
BACKUPDIR=/diskb/backup
# Backup of 'etc', 'var', 'usr' of $HOSTNAME
cd / && /usr/bin/nice -n 19 tar zcvf ${BACKUPDIR}/${HOSTNAME}-${FREQUENCY}.tar.gz etc var usr > ${BACKUPDIR}/${HOSTNAME}-${FREQUENCY}.log 2>&1

# Backup of vmware-disk'
#cd /diskd && /usr/bin/nice -n 19 tar zcvf ${BACKUPDIR}/vmware-disk-${FREQUENCY}.tar.gz vmware-disk > ${BACKUPDIR}/vmware-disk-${FREQUENCY}.log 2>&1

# Backup of /diskd/home
umask 077 && cd /diskd && /usr/bin/nice -n 19 tar zcvf ${BACKUPDIR}/home-${FREQUENCY}.tar.gz home > ${BACKUPDIR}/home-${FREQUENCY}.log 2>&1

/etc/cron.weekly/や/etc/cron.monthly/にも、同様にlocalbackupファイルを おいた。ファイルの中の$FREQUENCYは、ディレクトリ名に応じて, weekly, monthlyのようになるようにしてある。

さて、このlocalbackupが実際に起動される時刻は、/etc/crontabに設定する。 私は、真夜中に実行されるように時刻を設定しておいた。はずなのが、なぜか、 昼にバックアップが開始されてしまう。変だな、と思って、よくよく /etc/crontabをみると、anacronがある場合には、実行しないようになっていた。 昼にバックアップを開始していたのは、cronではなくanacronの方だった。 anacronがあっても、真夜中に実行してほしいので、/etc/crontabのanacronに 関する判定を削除した。以下がそのdiff。

% diff /etc/crontab.org /etc/crontab
12,14c12,14
< 25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
< 47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
< 52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
---
> 25 0	* * *	root	cd / && run-parts --report /etc/cron.daily
> 47 1	* * 6	root	cd / && run-parts --report /etc/cron.weekly
> 52 2	1 * *	root	cd / && run-parts --report /etc/cron.monthly

私のマシンは、ずっと電源を入れっぱなしなので、anacronは不要。とはいえ、 anacronが全く起動しないようにするには、別途作業が必要になるので、 anacronは放置。/etc/cron.daily/0anacronというスクリプトがあるおかげ で、cronが動作すると、anacronのタイムスタンプも更新されるようになってい る。そのため、cronが実施された日は、昼間にバックアップが開始されること はない。というわけで、anacronは放置しておいてかまわない。

さらに、(ルートの権限ではなく)自分の権限で研究室のNFSサーバにバックアッ プするため、crontabコマンドを使って、以下のような設定をした。 (参考 man crontab) ここで、mycipherは自分で作った暗号化コマンド。

SHELL=/bin/bash
USER=hirayama
HOME=/diskd/home/hirayama
PATH=/diskd/home/hirayama/bin:/usr/local/bin:/usr/X11R6/bin:/usr/bin:/bin
BACKUPDIR=/net/pub/nfs/share/tmp/hirayama/snowdrop
MY_HOURLY_BACKUPDIR=/diskc/hirayama-tmp/hourly-backup

#backup of my home
22 5 17 * *   cd $HOME/.. && /usr/bin/nice -n 19 tar zcf - $USER | $HOME/bin/mycipher > $BACKUPDIR/monthly
22 4 * * 3    cd $HOME/.. && /usr/bin/nice -n 19 tar zcf - $USER | $HOME/bin/mycipher > $BACKUPDIR/weekly
22 3 * * *    cd $HOME/.. && /usr/bin/nice -n 19 tar zcf - $USER | $HOME/bin/mycipher > $BACKUPDIR/daily

00 0,2,4,6,8,10,12,14,16,18,20,22 * * *    cd $HOME/.. && /usr/bin/nice -n 19 rsync -av --delete $USER ${MY_HOURLY_BACKUPDIR}/even-oclock/ > ${MY_HOURLY_BACKUPDIR}/even-oclock.log 2> ${MY_HOURLY_BACKUPDIR}/even-oclock-error.log
00 1,3,5,7,9,11,13,15,17,19,21,23 * * *    cd $HOME/.. && /usr/bin/nice -n 19 rsync -av --delete $USER ${MY_HOURLY_BACKUPDIR}/odd-oclock/ > ${MY_HOURLY_BACKUPDIR}/odd-oclock.log 2> ${MY_HOURLY_BACKUPDIR}/odd-oclock-error.log

# backup of diskc-monthly
05 2 2 * *     /usr/bin/nice -n 19 cat /diskb/backup/diskc-monthly.tar.gz | $HOME/bin/mycipher > $BACKUPDIR/diskc-monthly.mycipher
# backup of diskd-monthly
25 2 2 * *     /usr/bin/nice -n 19 cat /diskb/backup/diskd-monthly.tar.gz | $HOME/bin/mycipher > $BACKUPDIR/diskd-monthly.mycipher
# backup of snowdrop
40 6 * * 4      /usr/bin/nice -n 19 cat /diskb/backup/snowdrop-daily.tar.gz | $HOME/bin/mycipher > $BACKUPDIR/snowdrop.mycipher

実際には、/var/spool/cron/crontabs/にユーザ名のファイルが置かれる。

ntp

マシンの時刻が正しい状態に保たれるための仕組み。

昔Ubuntu 9.10の頃は,明示的に 「システム管理」->「日付と時刻の設定」 で,ntpサーバを指定したものだが, 今回は,「システム設定」->「時刻と日付」を見ても, ntpサーバを指定する欄がない。 「インターネット経由で自動的に時刻を合わせる」が選択されていれば, どこかのntpサーバを見るようになっているみたいなので, これで良しとする。

プリンタの設定 (CUPS printer)

「システム設定」->「印刷」からCUPSの設定ができる。 CUPSで適切なPPDファイルを選べば、通常は簡単にプリンタの設定ができる。

Mew

標準パッケージよりも後に、最新安定版であるMew-6.6が出たので、 そちらを野良インストールすることにした。

に書かれている方法で、インストールした。 具体的には、作業用のディレクトリを作って、そこで下記のようなことをした。

% git clone git://github.com/kazu-yamamoto/Mew.git
% cd Mew
% git pull
% make distclean
% ./configure
% make
% sudo make info
% sudo make jinfo
% sudo make install
% sudo make install-jinfo

あと個人的な好みではあるが、現代において.elcファイルはもう不要(あるとか えってチューニングの足かせになる)と思うので、.elcファイルは手動で消して おいた。

% cd /usr/local/share/emacs/site-lisp/mew
% sudo rm *.elc

a2ps

コマンドでテキストファイルをプリンタに印刷したいことがある。 そのようなときに使うコマンドがこれ。 私はしばらくa2psは,日本語に対応していないと誤解していたが、 実際には対応している。 「a2ps --list encodings」すると、対応しているコードを確認できる。 それによると、オプションに「--encoding=euc-jp」 を指定すると,EUC-JPコードの日本語テキストを扱うことができる。 例えば,

% a2ps --encoding=euc-jp foo.txt

のようにすれば,EUC-JPコードのテキストファイルfoo.txtを, デフォルトプリンタに印刷できる。

% a2ps --encoding=euc-jp foo.txt -o foo.ps

のようにすれば,EUC-JPコードのテキストファイルfoo.txtを,PSファイル foo.psに変換できる。

UTF(ユニコード)に対応していないことは残念ではあるが, nkf等でEUC-JPに変換しながらa2psを使えば良いので,日本語を 扱う上では困らない。 今後はこの作戦で行くことにする。

実は,UTFに対応したa2psのようなものとして,mpageコマンドがある。 しかしUTFコードの日本語テキストをmpageで変換したPSファイルは, evinceやghostscript上ではちゃんと表示されるのに, いざ印刷するとプリンタ側でエラーとなり弾かれてしまう。 プリンタはしっかりポストスクリプト対応プリンタなのに。 mpageが生成したPSファイルの中を見ると, 生の日本語テキストが含まれている。これが良くないのかもしれない。 解決法としては、そのPSファイルをps2pdfコマンドでPDFに変換すると、 evinceなどのPDFビューワを使って印刷できるようになる。

逆に、a2psで生成したPSファイルをps2pdfコマンドでPDFに変換しようとすると、 「segmentation fault (core dumped)」してしまう。不思議だ。

Oracle Java

ブラウザにJavaプラグインがほしいので、純正のOracleのJavaをインストール する.2014年9月時点ではJava7が推奨のようだが、 新しいJava8が気になるので,こちらにする.

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

Evince

日本語フォントが埋め込まれていない場合に、 Ryumin(明朝)がゴシックで表示されてしまう。 対処法は下記URLの「代替フォントの設定」を参考にした。

私は、IPAのバグフィックス版であるTakaoフォントを代替フォントにした。 14.04の日本語版RemixではTakaoフォントはデフォルトでインストールされている。 私の~/.config/fontconfig/fonts.confは以下のような感じ。 今回のTakaoフォントであれば、 フォントのディレクトリパスは指定しなくても大丈夫。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

<match target="pattern">
  <test qual="any" name="family">
    <string>Ryumin</string>
  </test>
  <edit name="family" mode="prepend" binding="strong">
    <string>TakaoExMincho</string>
  </edit>
</match>
<match target="pattern">
  <test qual="any" name="family">
    <string>GothicBBB</string>
  </test>
  <edit name="family" mode="prepend" binding="strong">
    <string>TakaoExGothic</string>
  </edit>
</match>

</fontconfig>

fc-matchコマンドで確認してみる。

% fc-match Ryumin
TakaoExMincho.ttf: "TakaoEx明朝" "Regular"

はいOK、ちゃんとRyuminに対してTakaoEx明朝が代替フォント に設定されました。 と思って、evinceを実行すると、残念ながらゴシックのまま、、、??? なぜかわからないが、14.04のevinceは、~/.config/fontconfig/fonts.confを 見てくれないようだ。 仕方がないので、以下のようにして、システム側にコピーする。

$ sudo cp ~/.config/fontconfig/fonts.conf /etc/fonts/local.conf

ファイル名をlocal.confにしていることに注意。 /etc/fonts/fonts.confにそうしろ、と書いてある(下記)から。

DO NOT EDIT THIS FILE.
IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED.
LOCAL CHANGES BELONG IN 'local.conf'.

この後、evinceを実行すると、ちゃんとRyuminが明朝体で表示されるようになった。 めでたし、めでたし。

LaTeXで生成されるpdfファイルに日本語フォントを埋め込む

日本語フォントをPDFに埋め込みたいので、 モリサワフォントを購入した。 (ヒラギノフォントの場合も以下の流れは同じ)

まずは、フォントのインストール。/usr/share/fonts/opentypeの下に morisawaというディレクトリを掘り、そこにフォントファイルを入れる。 フォントキャッシュのクリアもする。

% ls /usr/share/fonts/opentype/morisawa
A-OTF-FutoGoB101Pro-Bold.otf   A-OTF-MidashiGoPro-MB31.otf
A-OTF-FutoMinA101Pro-Bold.otf  A-OTF-MidashiMinPro-MA31.otf
A-OTF-GothicBBBPro-Medium.otf  A-OTF-RyuminPro-Light.otf
A-OTF-Jun101Pro-Light.otf
% sudo fc-cache -f -v

TeX Liveには、始めからモリサワフォント用のmapファイルが用意されている。 そのため、コマンド一発で、モリサワフォントを埋め込む設定ができる。 とてもありがたい。

モリサワフォントをPDFファイルに埋め込むように設定する。

% sudo kanji-config-updmap-sys morisawa

(フリーのフォントを埋め込みたい場合には、morisawaの代わりに、ipaや ipaexが指定できる。)

dvipdfmxによるPDF生成には埋め込まれるようになった一方で、dvipsによるPS 生成は文字化けするようになった。まあ、よしとする。

ついでに、kanji-config-updmap-sysコマンドの他の使い方例を以下に残しておく。

フォントを埋め込まないように設定する。

% sudo kanji-config-updmap-sys nofont

現在の設定と選択可能候補を確認する。

% sudo kanji-config-updmap-sys status

埋め込みの設定の後,何らかの理由で一時的にフォントを埋め込まずにPDFを作りたい ときには,-fオプションでcid-x.mapを指定すればよい。例えば 以下のようにする。

% dvipdfmx -f cid-x.map foo.dvi

一時的に埋め込むフォントを変えてPDFを作りたいときには、 -fオプションでptex-*.mapを指定する。 「*」のところには、上記の方法で確認した選択可能候補の名前が入る。 例えばヒラギノにしたいときには、下記のようにする。

% dvipdfmx -f ptex-hiragino-pron.map foo.dvi

Common Lisp

私が使うプログラミング言語はCommon Lisp。 Emacsのプログラミング支援ツールSlimeもインストールする。

  • sbcl
  • sbcl-doc
  • clisp
  • clisp-doc
  • slime

バージョン管理

  • subversion
  • git

グラフィックツール

  • imagemagick
  • inkscape
  • gimp

32bitライブラリ

過去の遺産の都合で、64ビットOS上で、32ビットソフトウェアを動かしたいことがある。 そのための32ビット互換ライブラリパッケージが「ia32-libs」なのだが、なんと14.04では提供されていない。 あまりにも動作検証が大変で、面倒を見てくれる人がいなくなったらしい。

14.04に13.04のia32-libsを強引にインストールする 方法は残っているが、かなり自己責任ということになりそう。 なお、2014年9月時点で、すでにraringは消されてしまっていたので、私の場合はpreciseに置き換えて実行した。

AppArmor

AppArmorは、ファイルアクセスを監視するセキュリティ機能。 私の場合、ホームディレクトリのパスが標準的でないため、 AppArmorでブロックされやすい。 対策としては、/etc/apparmor.d/tunables/homeファイルに、 自分のホームディレクトリを設定すればよい( Ubuntu helpを参照 )はずなのだが、設定しても、まだいくつかブロックが発生しているようだ。 私がいろいろ変なことをしているからかもしれない。

セキュリティ的には下がってしまうが、結局AppArmorをアンインストールした。

Last modified:2018/08/27 10:29:56
Keyword(s):
References:[平山::Ubuntu Linux 16.04 64ビット版] [kainuma] [yamataku]