【Arch Linux】Trac1.4が起動しなくなっていた

Arch Linuxの更新を行ったためか、Tracが動かなくなった。

import hashlibで、エラーがでている様子。 Pythonの仮想環境にて、

python2.7 -v -c "import hashlib"

としてみると、 /usr/lib/python2.7/lib-dynload/_hashlib.so の読み込み付近で、エラーが起きていることがわかった。

ldd /usr/lib/python2.7/lib-dynload/_hashlib.so

として依存関係をみると、 libcrypto.so.1.1 のライブラリが見つけられていなかった。 findすると、確かにない。

debiann11に、libcrypto.so.1.1があったので、Arch linuxの/usr/lib/にコピーして、

ldconfig

を実行した。

その後、

ldd /usr/lib/python2.7/lib-dynload/_hashlib.so

としてみると、今度は、ライブラリを見つけたようだ。

Tracを起動すると、今度は、無事起動した。良かった。

【Linux】cronでsftp転送に失敗していた原因

毎日取得していたバックアップが、 取れていないことに気がついた。 いつからかは、よくわからない。

バックアップするファイルの生成は、 できていて、sftp転送が失敗しているのがわかった。

バックアップ処理を、shellから手動で実行すると、 sftp転送に成功したが、cronからの実行では失敗する。

ログを出すようにすると、 Permission denied (publickey). とでている。

環境変数や、権限を疑ったが、そうではないようだ。 お手上げなのでsftpに-vを着けて詳細を出力させる。

手動実行とcronからの実行時のログを比較した。

どうやら手動の時は、ssh-agentが認証しているようだ。 確かに、パスフレーズ付きのカギを指定していた。 なんてこった。

バックアップ用にパスフレーズの無い秘密鍵用意して 設置したら、バックアップがとれる用になった。

前に秘密鍵を交換するときに、間違えたのが原因。 ファイル名が同じだったので、パスフレーズ付きの ものに変えてしまったのだ。

これを機にバックアップ用の秘密鍵は、 ファイル名を変えるようにした。

【Arch Linux】Nginxがwarningを吐いているのに、気が付く。

nginxの設定を変更して、確認ために、 nginx -t としたとき、ワーニングが出ていることに気がついた。

could not build optimal types_hash, you should increase either types_hash_max_size: 1024 or types_hash_bucket_size: 64;

メッセージしたがって、以下のように、サイズの指定をした。

http {
:
  types_hash_max_size  2048;
  types_hash_bucket_size  128; 
:
}

しかし、ワーニングメッセージは、消えなかった。

なんてこったい? そもそも、types_hashとは、なんだ?

ちょっと前に、mime.typesの更新があって、サイズがすごく大きくなったことを思い出した。 これが原因かもしれないと思って、取っておいた元のmime.typesに戻したところ、 ワーニングがでなくなった。

types_hashは、mime_typesのハッシュのなのかも知れない。

しかし、こんな直しかたで良かったのだろうか? 今後、mime.typesが、また小さくなるまで、更新できないじゃないか。

【Arch Linux】ジェルからJavaScriptをminifyしたい

シェルスクリプトの中でしたいので、コマンドラインからシンプル呼べるものが欲しかった。

  • ES2015に対応しててほしい。

  • 圧縮率も気にしない。

node, npmのインストールは、避けられなさそうなのでよいとして、 モジュールをグローバルインストールしたくない。

調べてみると、minifiyツールは、terserを使うのがよさげ、 npxコマンドを利用すると、ローカルインストールのパッケージをコマンドラインから呼べそう。

  • インストール

npm install terser

  • minifi

npx terser -c -m -o build/js/something.min.js build/js/something.js

よし、きた。 求めよ、されば与えられん。 先人たちに、感謝。

参考

2019年のJavaScript minifier "terser" - Qiita

npm でローカルインストールしたパッケージを CLI でコマンド実行する方法(npm-srcipts, npx) - Qiita

【Arch Linux】winscpが繋がらなくなった

winscpから接続しようとしたら、つながらなくなった。 puttyでは、接続できるので、意味がよくわからない。

sshdのlogを調べてみると、

userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

という記録がある。

ssh-rsaでは、つながせないようになったようだ。 設定で、ssh-rsaを許可するようにもできるのだろうが、 こういう時には、公開鍵の交換してしまうほうがよかろう。

EdDSAを使って公開鍵を作り直した。 puttyでは、つなげるので、鍵交換は可能だ。

新しい公開鍵を使用するようにすると、winscpでも、つながるようになった。 やれやれ。

【Debian】emacs27.2をインストール

emacsが古い

Debian10で、提供されているemacsのバージョンが、26.1と古い。
おかげでmelpaに接続できず、パッケージ類のインストールができなかった。

emacsは、カスタマイズして使うのが前提なので、致命的である。

仕方がないので、頑張る

aptで入れたemacsは、アンインストールした。
最新のemacsをインストールすることにする。
Debianは、詳しくないが、emacsのビルドインストールは、
別のLinuxでやったことがある。
ビルド環境と、依存するパッケージを入れれば、なんとかなるだろう。

ビルド環境

依存パッケージ

  • libncurses-dev
  • autoconf
  • libneon27-gnutls-dev

ビルド手順

cd /usr/local/src
tar zxvfp emacs-27.2.tar.gz
cd emacs-27.2
bash autogen.sh
./configure -without-x -without-selinux
make
make install

最新のemacs

  • ビルド、インストールができるようになった。
  • これで、当分emacsに困らない。

【Debian】/bin/shは、bashでない

CentOSで利用しているシェルスクリプトを、Debianで、

sh mount_nas.sh

とすると、エラーが指摘されて動かなかった。

bash mount_nas.sh

で、実行すると動作した。

調べると「/bin/sh」が「dash」のシンボリックリンクになっていた。
そして「dash」とは、軽量かつPOSIX互換を目指すUnixシェルだという。

ひとまず 拡張子を、.bashに変更し、一行目も、修正した。

#!/usr/bin/env bash

今回、bashスクリプトは、dashで動かないことは分かったが、
dashスクリプトは、bashでも動くということだろうか?