Enscriptのトラブルの解決法(冗長)

今まで動いていた自作のPerlスクリプトによるQSLカード記入面のデータ出力(enscript入力形式) から,enscript (PS=Postscript形式の出力)により印刷イメージのPSを生成する手順で,それぞれは動くのですが,出力されたPS形式のファイルをPDF化すると,どうしても等幅フォントCourierが文字抜けします.全部が出ないわけでなく,ざっと見て大文字だけかと思えばそうでもなく,また数字は “1” 以外全部抜けているようです.

解決策

Slackwareにおいては “Courier New” のTrue Typeフォント(TTF)をインストールするだけ

もう少し厳密に言えば,enscriptに与えるフォント名を “Courier”, “Courier-Bold” などから, “Courier-New”, “Courier-New-Bold” などに変更する必要があります

フリーのCourier Newフォントの取得

あちこちにありますが,Fonts Geekというサイトから,Courier NewとCourier New Boldをダウンロードしました(ついでにMonacoも).

Linuxのホストへのインストール

Slackware ARM 15.0のホストにTrue Typeフォントをインストールする手順を探してインストールします./usr/share/fonts/TTFにコピーしてから,テーブルファイルをupdateするコマンドを実行するような方法だと思いましたが,そのとおりでした.

ダウンロードしたフォントのファイル名は, “Courier New Bold.ttf”などスペースが入っていますが, “Courier-New-Bold.ttf” のように,スペースをハイフンに変えました.また, “Regular” は削除しました.

Updateには,mkfontdirmkfontscaleコマンドを使います.

以上でこれまで通り,enscriptとps2pdfで正しい印刷イメージができます.

動作確認できたdistro

上記は,Slackware ARM (32bit) 15.0ですが,Slackware AArch64 currentでも確認できました.

その後,Raspberry Pi OS (64bit) + KDE Plasma Desktopの環境でも試してみました.Debian系で Courier New のTrue Typeフォントをインストールする正攻法は,

apt install ttf-mscorefonts-installer

のようです.これで,Slackware同様にenscriptに与えるフォント名を “Courier-New”, “Courier-New-Bold” などとすることで,正常なPDFができるようになりました.

確認したのは,Slackware ARM (32bit) 15.0のみですが,たぶん,AMD64でも大丈夫だと思います.
むしろ,こちらが必要です.
32bit版.

一時的にWebサーバー止まります

当Webサーバーを入れているケースのクーリングファンが止まってしまいました.他のケースと入れ替えるので,7月30日のいずれかの時間帯に30分程度停止します.

追記: 作業は既に完了

見込みの30分を少々超過しましたが,作業は既に完了しています.

2022年7月30日(土) 18:55 記

よくあるベアリングの不良と思われます.

サーバーをガチャンと切り替えてみました

切り替えてみました.httpdのサービスのうち,WordPressは大丈夫なようです.

これより後,めんどくさいのでカテゴリーは,LinuxとNetwork,Raspberry Piくらいにします.

また,あまりに詳しい作業内容については,セキュリティー上の問題もあるので書きません.

1度サーバーをガチャンと切り替えてみます (2) 準備に手間取ってます

4月8日頃にガチャンと切り替える予定

2022年4月6日(水)の午前中に,ガチャンと切り替えようかと思いましたが,肝心なBIND (named)の設定がまだと気がつき,着手しましたが,難航しています.

もともとBINDのことはあんまり理解してないまま使ってきてました.解ってないのにいろいろ過去の複雑な事情が設定に盛りこまれています.

BINDもセキュリティーの事情からバージョンが上がる度にそういう曖昧さが許されなくなってきているようで,Slackware 14.xで動いていた設定をそのままコピーしても,エラーが出て動いてくれませんでした.

ということで,1, 2日かけて,BINDの設定をチューニングしてから,いよいよガチャンと切り替えます.

追記: とりあえずBIND動きました

BIND (named)の設定のエラーは,メッセージを見ながら,理解していないなりに😓 直して,エラーが出なくなりました.

しかし,システムを起動しても,namedもntpdも動いていない.前のシステムの起動手順などを見てみても,特に変わらないのですが.

なんとなく勘で,システムの時間が設定されていないとnamedが動かず,namedが動いていないから,ntpdがサーバーのipアドレスを取得できなくて動かないのではないか,と当たりを付けました.

一番の問題は,Raspberry Pi Model Bシリーズが,バッテリーにより駆動されるhardware clockを持っていないことです.起動時に何もしないと,1970年1月1日から始まってしまいます.

もともとの起動順は,rc.Mから呼ばれたrc.inet2によって,rc.bindがスタートして,そのあと,rc.Mの少し後でrc.ntpdが起動されます.これでしばらくするとclockが同期しますが,少し時間がかかるので,ntpd起動の前に,

/usr/sbin/ntpdate 0.pool.ntp.org

を実行するように,rc.ntpdに追加してあります.

SlackwareARM 14.xではこれで問題ありませんでした.つまり,システムの時間が1970年1月1日でもnamedは起動して,その後に起動するntpdのサーバー名を解決してくれます.しかし,SlackwareARM 15.0付属のBIND 9.16.xでは,システムの時間がめちゃくちゃだと,namedが居座らずに異常終了してしまいます.

そして,ntpdが時間サーバーのipアドレスを解決できずにやはり異常終了してしまう.

「ニワトリが先かたまごが先か」問題です.

仕方がないので,0.pool.ntp.orgでたまたま表示される1つのipアドレス(仮にnn.nn.nn.nn)を使い,rc.Mの中のrc.inet2起動の前に,

/usr/sbin/ntpdate  nn.nn.nn.nn

を書いて,解決しました.poolなのに,固定的に使うのは趣旨に反すると思いますが,起動時の一回だけだから勘弁しもらいましょう.

動けばいいのだ™
ntpdate実行時も.

1度サーバーをガチャンと切り替えてみます

LAN内で,新しいサーバーの準備をしています.デフォルトのmail transfer agent (MTA)がsendmailからPostfixに変わったとか,httpdはたぶん動くだろうとか解りましたが,実際に外からアクセスできるようにしてみないと,動くかどうか解りません.

2022年4月6日(水)の午前中に切り替えを予定しています.あんまりひどかったら元に戻します.

以後しばらくは当サイトの運用が不安定になるかもしれませんので,ご承知ください.

安定しましたら,またお知らせします.