No Such Blog or Diary

«Prev || 1 | 2 | 3 | 4 | 5 |...| 59 | 60 | 61 || Next»

StrongSwan

Ubuntu を 12.04 とかからアップデートしたら,VPN が通らなくなった.何が悪いんだろうかとログを見てみたらどうも OpenSwan が消えてなくなったようで.いつの間に?

ということで,設定そのままで sudo apt-get install strongswan と叫んで StrongSwan を入れたら普通に動いた.めでたしめでたし.

expect コマンド

「こういう文字列がターミナルに来たら,文字出力とかをしろ」というのをやってくれるコマンド.条件と動作を簡単な言語で書ける.

パスワード認証しかできない ssh サーバに繋いで自動で何かをさせるとかいうのに有用.とりあえず裏でパスワード入れてくれて何もなかったかのように振る舞うだけのもの:

ssh_connect() {
expect <(echo '
  set timeout -1
  proc password_input {} {
    global password
    send $password
    send "\n"
    expect "password:" password_input "Password:" password_input "Last login:" begin_interact
  }
  proc begin_interact {} {
    log_user 1
    interact
  }
  log_user 0
  eval spawn -noecho /usr/bin/ssh -t -o StrictHostKeyChecking=no user@ssh_host
  expect "Password:" password_input "password:" password_input "Last login:" begin_interact
')
}

閑話休題.

サーバによって "password: " だったり "Password:" だったりでハマった.どうも一部のマシンに入れないなぁと思っていたら一文字目の大文字小文字が違ったとは.

Mailman で ML の設定をコマンドラインから

何やら config_list とかいうコマンドがあるようで.config_list -o mlconf.py list_name とかやると各種設定を代入する python プログラム片が手に入る(-o の後のファイルに書き出される)ので,必要なところだけ代入値を書き換えてあげて config_list -i mlconf.py list_name とすれば設定できる.

書き換える必要のない代入は無くてもいいので,例えば複数のリストに対して footer を空にする設定を反映したければ,msg_footer = '' とだけ書いたファイルを用意して for でリスト名をぶん回せばいい.

まあ,年度ごとに ML を用意するときとかに“いつもの設定”をファイルに書いておけば ML の用意がスクリプト一発になるので便利.GUI でやるのは面倒すぎる.

aliases の :include:

エイリアスをメーリングリスト的に使うときに転送先のアドレスを別のファイルに書いて置ける機能.今までカンマ区切りで一行に列挙してたよ……(大きなサイズの ML は Mailman だったし).

ということで,hoge-ml というメーリングリストのメンバーを /etc/mail-aliases/hoge-ml-members に書き並べておいて,/etc/aliases に次を書いて newaliases すればよいと.

hoge-ml:	:include:/etc/mail-aliases/hoge-ml-members

これでファイル内に列挙されたメンバーに送られる.しかもこのメンバーを列挙したファイルの更新時には newaliases はいらないので楽という.

メンバーを列挙したファイルを使うと Mailman と違ってメンバーのメタ情報をコメントとしてかなり自由に書いておけるので,メタ情報を含めてのメンバー管理に便利かもしれない.Mailman でも"名前"として文字列を保存できるけど変なものを書くと事故りそうだし.

だがしかし,やっぱりメールヘッダに連番入れたくなるので Mailman と連携し始めるとかいうオチかな.

MSYS2 の MinGW64 コンソールをタスクバーにピン留め

起動してるのをピン留めしても何か設定が変なので,mintty が環境設定しつつ bash を呼ぶようなショートカットを作ってそれをピン留めすることにした.設定すべき環境変数は MSYSTEM で,これを MINGW64 にすると MinGW 64bit な状態になってくれる.なので次のコマンドへのショートカットを作ればいい.

C:\msys64\usr\bin\mintty.exe /bin/env MSYSTEM="MINGW64" /bin/bash -l -i

閑話休題.

スタートメニューから呼ばれるコマンド msys2_shell.cmd を眺めて,バッチファイルで頑張ってるなぁとか思った.自分がバッチファイルを最後に書いたのは何年前くらいなんだろうか.まったく思い出せん.

Windows 用に emacs を MinGW/MSYS2 でコンパイルする

毎度 Windows 用の emacs のバイナリをどこから手に入れるか悩ましいので,自前でコンパイルしてしまえとやってみた.

とりあえず,IME パッチの README を参考に emacs 25 をば.

1.MinGW のツールチェインなどを MSYS2 に入れる.画像まわりのライブラリとか必要そうなのをテキトウに投入.

pacman -S base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-xpm-nox mingw-w64-x86_64-libtiff mingw-w64-x86_64-giflib mingw-w64-x86_64-libpng mingw-w64-x86_64-libjpeg-turbo mingw-w64-x86_64-librsvg mingw-w64-x86_64-libxml2 mingw-w64-x86_64-gnutls

2.MSYS2 の MinGW 64bit のシェルを起動する.環境変数を適切に設定すりゃいいのかもしれないけれど面倒なのでスタートメニューから起動するのが楽.

3.git clone で emacs 25 のソース取ってくる.とりあえず /d/etc/emacs-build/ で作業するとして.git の古い履歴はいらんので浅く clone.

cd /d/etc/emacs-build/
git clone --depth=1 -b emacs-25 git://git.savannah.gnu.org/emacs.git

4.IMEパッチをゲットして適用する.

cd emacs
wget https://gist.githubusercontent.com/rzl24ozi/8c20b904c9f5e588ba99/raw/0d5694e22a70cb3ea639f27013e4134c9772f1ed/emacs-25.1-w32-ime.diff
patch -p 0 < emacs-25.1-w32-ime.diff

5.コンパイルする.折角なので -Ofast -march=native で速いバイナリを.インストール先を /d/etc/emacs-built/ とかにしてみる.

./autogen.sh
CFLAGS='-Ofast -march=native' ./configure --prefix=/d/etc/emacs-built --without-imagemagick
make -j4
make install

以上の流れで普通に動くものができた.思いのほか楽.めでたしめでたし.

追記:libwinpthread-1.dll が無いって怒られたら C:\msys64\mingw64\bin のあたりから持ってくる?

«Prev || 1 | 2 | 3 | 4 | 5 |...| 59 | 60 | 61 || Next»
Search
Feeds

Page Top