2022/06/11(土)FreeBSD 13.1R + Perl 5.36.0 の環境で adiaryの更新時エラー
2022/06/11 6:33
提起の通り、FreeBSD 13.1R 上で Perl 5.36.0 の環境で、adiary 3.40c を稼働させて、
おもむろに記事作成や更新を行うと、
[AutoLoader] Can't modify undef operator in scalar assignment at lib/SatsukiApp/adiary_4.pm line 925, near "undefといったエラーが出るようになりました。FreeBSD 13.0R + Perl 5.32 の環境までは発生しない。
}"
Compilation failed in require at lib/Satsuki/AutoLoader.pm line 42.
OSもPerlも同時に更新したため、
Perl のバージョンアップで挙動が変わったのか、OSで何かあるのかが判らない状態です。
但し、更新そのものは出来ている模様。
これは、lib/SatsukiApp/adiary_4.pm の 913行目~
sub void_plugin_images { my $self = shift; my $h = shift; my $form = shift; foreach(keys(%$form)) { if ($_ !~ /^(\w+)_void$/) { next; } if (! $form->{$_}) { next; } my $n = $1; $h->{$n} = undef $h->{"${n}_w"} = undef $h->{"${n}_h"} = undef } }と、なっているところを
sub void_plugin_images { my $self = shift; my $h = shift; my $form = shift; foreach(keys(%$form)) { if ($_ !~ /^(\w+)_void$/) { next; } if (! $form->{$_}) { next; } my $n = $1; $h->{$n} = undef ; $h->{"${n}_w"} = undef ; $h->{"${n}_h"} = undef ; } }とすると、回避出来ました。これが正しいのかどうかは判りません。
2022/03/31(木)postgresql にて、任意の select 文を csv 出力する
2022/03/31 3:38
# psql -h サーバFQDN DB名 -U ユーザ名 -c "《任意のselect 文》;" -A -F , > output.csvサーバFQDN は、ホスト名のほか、IPアドレスでも可能です。自ホストの場合は localhost と指定します。
DB名・ユーザ名は、そのままですね。
任意のselect文は、全体をダブルクォーテーションで括ります。終端には必ずセミコロン「;」を付けます。
select 文中に括弧やダブルクォーテーションが入る場合、エスケープが必要かもしれません。
-A は、「桁揃えなしのテーブル出力」で、これを指定しないと、CSV 出力の際に余計なスペース等が入ってしまいます。
-F は、「桁揃えなし出力時のフィールド区切り文字」で、デフォルトの区切り文字は "|" なので、CSV 出力の場合は、必ずカンマ「,」を指定します。
あとは、リダイレクトで出力ファイル名の指定。
文字コードは、DBの文字コードが適用されます。
2022/03/31(木)FreeBSD12/FreeBSD13 にて Let's Encrypt を使う(manual 編)
2022/03/31 2:18
FreeBSD Ports においては、 securiry/py-certbot をインストールするのは、従来と同じです。
Webサーバ自体が Firewall 内部で、ルータのIPマスカレードや、NATで外部から直接アクセスできない(Firewall の内と外でIPアドレスが違うと Let's Encrypt のツールでは自動取得・自動更新は難しいと思う)ネットワーク構成の場合、--manual オプションで使うのが当方の環境では最も確実です。
但し、アクセス制限をかけたり、リダイレクトしている場合は、それらを全て一旦全て解除し、出来る限りフリーアクセスの状態にしないと、HTTPステータスが 401 になったり、 301 になったりで上手くいかない。
他に、もっと効率的な手法があればいいのですが、、
# certbot certonly --manual --preferred-challenges http-01 -d host.example.comのように入力すると、
Saving debug log to /var/log/letsencrypt/letsencrypt.logのように表示されます。
Requesting a certificate for host.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:
yPcvsXmaN4k_2rk-ZxFKmbp0EwgrmlgLflIPa5EsYtU.xGBBOehwohStkrITKI6h3ng8cYkGYXMtZXQnLK8SHUA
And make it available on your web server at this URL:
http://host.example.com/.well-known/acme-challenge/yPcvsXmaN4k_2rk-ZxFKmbp0EwgrmlgLflIPa5EsYtU
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
外部から、
http://host.example.com/.well-known/acme-challenge/yPcvsXmaN4k_2rk-ZxFKmbp0EwgrmlgLflIPa5EsYtU
でアクセス出来るよう、ファイルの中身が
yPcvsXmaN4k_2rk-ZxFKmbp0EwgrmlgLflIPa5EsYtU.xGBBOehwohStkrITKI6h3ng8cYkGYXMtZXQnLK8SHUA
であるコンテンツをサーバ上に設置するように。。 という意味のメッセージの模様:
上手くいくと、
Successfully received certificate.のようなメッセ―ジが表示されます。
Certificate is saved at: /usr/local/etc/letsencrypt/live/host.example.com/fullchain.pem
Key is saved at: /usr/local/etc/letsencrypt/live/host.example.com/privkey.pem
This certificate expires on 2022-06-28.
These files will be updated when the certificate renews.
NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
得られた公開鍵・秘密鍵を実際に運用するサーバに適切にセットアップすることで、公開鍵・秘密鍵のアップデート、新規登録が共に可能です。
尚、有効期間は 90日だが、一度同じホスト(FQDN)名で、Let's Encrypt のサーバ証明書を作ると、デフォルトでは、前回の有効期限から90日となる模様。