mew+mhcで休日の設定

スケジュール管理は遠い昔からemacs上でmew + mhcを使って来ました。古いmhcについていた休日のリストはすっかり古くなって新しいデータに入れ替えないと、自分だけうっかり休日を平日だと間違っておかしな言動をしてしまいがちです。

今年は天皇即位があるため5月の連休もやたら長くて、わけがわからなくなっています。というわけでmhcの休日データのアップデートです。

ありがたいことに、mhcの開発者の方はこつこつ休日データをアップデートしてくださっています。ここが本家のサイトですが、データはgithubのこちらに置かれています。ソースなどのディレクトリ構造が見えますが、このなかのsamplesというディレクトリを叩いてその下へ入るとjapanese-holidays.mhccというファイルがあります。12日前に更新されているので、やはりこつこつアップデートされているようです。ありがたいことです。

このファイルを開いて中身をコピーします。右クリックでsave link as...とかで保存すると、htmlの余計なタグもついてきてしまいます。うまい方法が分からないので、ファイルの中身を表示してマウスで全部選んでテキストエディタに貼り付けて保存、という乱暴な方法でコピーしました。

保存するときに文字コードをJISにしないと文字化けします。保存したファイルを、~/.scheduleとrenameしてから、mewを再起動してmhcを立ち上げるとちゃんと「即位の日」もちゃんと休日として表示されるようになりました。

OpenMPIのインストール

職場のLinuxベースのクラスタマシンはすでに6年選手でボロボロですが,それでもだましだまし使っています。OSも古いRedHat Linuxなのでライブラリの類も古くて新しいコードをコンパイルするのに問題があったりします。あるコードをインストールするにあたって,OpenMPIとgfortranのバージョンが古くて実行時にリンクすべきライブラリが存在しない,というエラーに見舞われました。

しょうがないので新しいOpenMPIのインストールをしようとしたのですが,当然のようにいろいろな依存関係があってワナにはまりました。久しぶり,というよりももう十数年ぶりにソースからインストールをはじめたのでさすがにヘロヘロでした。忘れないようにそのメモを。

openmpi-3.1.3のインストールには新しいgccが必要そうなのですが,なんか途中からどうでもよくなってコンパイルできてしまいました。いずれにしても,gcc-7.4.0をインストールすることにしました。ところが,これにはgmp, mpfr, mpcなどたくさんの依存関係があります。というわけで,gmpのインストールからはじめました。

gmp-6.1.2をダウンロードしてきて展開後,ソースのトップディレクトリに移動して,
./configure
make
make check
とします。suしてからmake installです。

~/.cshrcのLD_LIBRARY_PATHに/usr/local/libを追加してrehashしておきます。

次に,mpfr-4.0.1をダウンロードしてきて展開後,ソースのトップディレクトリに移動して,
./configure
make
make check
とします。ところがmake checkで
libmpfr.so: undefined reference to `__gmpn_com'
というエラーがでて止まります。よくわからないので見なかったことにしてsuしてからmake installしてしまいます。

次は,mpc-1.1.0をダウンロードしてきてこれまでと同様にソースのトップディレクトリで
./configure --with-mpfr=/usr/local/
とします。なぜかオプションをつけないとmpfrのライブラリを発見できませんでした。
make
make check
とすると最後まで完走するので,suして
make install
します。

次はisl-0.2.0です。
./configure
make
make check
make install
です。

これでいよいよgccのコンパイルに取り掛かります。gcc-7.4.0をダウンロードしてきてソースのトップディレクトリでconfigureをするとエラーでひっかかります。メッセージにしたがって
./configure --disable-multilib
とするととりあえずconfigureが最後まで進むので
make
します。なぜか,makeがconfigureを呼んでcrt1.oがない,というエラーで止まります。結局,解決できずに目をつぶってOpenMPIのコンパイルに進んでしまいます(全然,だめじゃん...)。

gccのコンパイルに挫折してopenmpi-3.1.3をインストールするってのはどうなの,と思いますが,なぜか,configureもコンパイルも通ってしまいました。
./configure
make
make check
make install
です。これでいいのか,っていうとまるでダメな気もするのですが最後までいったのでよしとすることにしてしまいます。

他のユーザーのために/etc/ld.so.conf.d/use-local-lib.confというファイルを作ってそこへ
/usr/local/lib
/usr/lib64
と書き込んで
ldconfig
としておきます。

なんかいろいろやっているうちにgcc-7.4.0で
./configure --disable-multilib
make
とするとコンパイルがすすむようになりました。なぜできてるのか,なぜできてないのか,よくわからんようになってきました。

いずれにしても,全然解決してないような...

さらなる脆弱性

先日,sshdのCBC modeを無効化しましたが,改めてポートスキャンをかけたら,新たな脆弱性が見つかりました。どうやら,/etc/ssh/sshd_configに設定した

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128

のなかのarcfour???がダメだったようです。なので,

Ciphers aes128-ctr,aes192-ctr,aes256-ctr

としてsshdを再起動です。ついでにfreebsd-updateでOSにパッチがでていたのでパッチをあてて,システムごと再起動しました。

これでOKならよいのですが...。