goo blog サービス終了のお知らせ 

週刊これは夢?!

それとも…。
すぐ忘れちゃうので備忘録用ブログ。
週1ペースで書くことを、ゆるい目標にしていました。

UTF-8 Ambiguous Characters : FreeBSD Ports オプション選択時の曖昧文字対策

2024-09-03 | 電脳

UTF-8には、文脈によって文字幅が異なる (曖昧 (Ambiguous))な文字がある。
簡単に言うと、同じ文字なのに、全角で表示されたり半角で表示されたりする。

設定で回避できることもあるけれど、アプリが対応していなかったりとすっきりしない。

私は、CUI端末にPuttyをつかい、その上で Gnu Screen と Tmux を使っている。
というのもアプリ、端末(Putty)、Gnu Screen / Tmux の組み合せで、あっちではいけるけどこっちはだめ、でもこのアプリだと逆、みたいなめんどくさい状態になっているから。

特に画面の崩れが酷いのが、FreeBSD で Ports の管理をする時。
Gnu Screen では、オプションの選択画面になるともうなにがなんだかわからなくなる。

カーソルを動かすと画面がさらに崩れるので、どうにもお手上げになってしまう。
(↓の図はまだマシな状態。カーソルの動きにあわせて画面がどんどん崩れていく)

これはダイアログ表示のために利用している罫線が半角扱いで描画されるのに、画面では全角として表示されるためのようだ。
Tmux であればなんとか回避できる環境になったのだが、それでも時々崩れる(意味不明)。

時々、思い出しては調べていたのだが、 IIJ の方の記事に対策を見つけた。
Portsのオプション選択画面で利用されているコマンドが portconfig ( /usr/ports/ports-mgmt/portconfig ) で、罫線をASCIIにする設定があるとのこと。
設定方法までは書いてなかったので、portsconfig について調べてみた。

サンプルを真似して下のようにしてみると、全く画面が崩れなかった。すばらしい!!!

# cd /usr/ports/editor/vim
# env PORTCONFIG_ASCIILINES=Y make config

さっそく ~/.shrc に次を追加した。

 PORTCONFIG_ASCIILINES="YES"; export PORTCONFIG_ASCIILINES
 NO_COLOR="YES"; export NO_COLOR

感謝!
ちなみに、NO_COLOR は文字だけの表示にする設定だが、スッキリしてとても良かったので採用した。

参考
端末の文字幅問題の傾向と対策
https://eng-blog.iij.ad.jp/archives/12576

portconfig
https://gitlab.com/alfix/portconfig


GnuPG 2 と Emacs

2024-05-25 | 電脳

秘密文書は GnuPG で暗号化しておくと便利である。
編集する時は、復号化→編集→暗号化をする必要がある。
Emacs を利用すれば、普通のファイルと同じように gpg ファイルを開き、編集し、保存できる。

ただし、暗号化して保存する時に、パスフレーズを2回入力する必要がある。
復号化する時に入力したパスフレーズをもう一度、入力しなくてはいけない。
面倒なだけでなく、入力を間違えたら二度とファイルを開けなくなってしまう。

□結論
現状(2024-05)だと、保存時には2回パスフレーズを入力する必要がある。

□背景
GnuPG には 鍵方式とパスワード/パスフレーズ(Symmetric)方式がある。
個人的に使うだけならパスワード方式で十分だと思う。

また、GnuPGのバージョンも 1.4 と 2.0系があり、1.4は簡単に使うことができた。
ところが、Emacs が 24ぐらいになった頃から、GnuPG 1.4 が使えなくなり、 2.0系しか使えなくなった。

Emacs から GnuPG を利用する時は EasyPG が用意されている。
パスワードをキャッシュするには、 epa-file-cache-passphrase-for-symmetric-encryption を non-nill にすれば良いのだが、セキュリティの問題からデフォルトでは nil になっている。
ところが、 Emacs 24 以降はこれが機能していないらしい。gpg-agent を使えともある。
EmacsWiki: Easy PG: Caching Password for Symmetric Encryption

GnuPG 2.0以降だと、パスフレーズをキャッシュするためには、GnuPG Agent を利用する必要がある。 Caching Passphrases (EasyPG Assistant User’s Manual)
gpg ファイルを開くと gpg-agent は起動しているが、それだけ。
保存する時は再度(2回)パスフレーズを入力しないといけない。

□いましている設定

- pgp-agent.conf の設定 Agent Options (Using the GNU Privacy Guard)

allow-loopback-pinentry
allow-emacs-pinentry
default-cache-ttl 1800 ←標準で600秒なので、なくてもいけると思うのだが…。

- emacs の設定

(require 'epa-file)
(epa-file-enable)
(setq epa-pinentry-mode 'loopback)

- shell の設定

GPG_TTY=$(tty)
export GPG_TTY

□最後の望み?

EmacsWiki: Easy PG: Caching Password for Symmetric Encryption に epg.el にパッチをあてる方法が書いてある。
2014年のパッチ。
時間がある時に試してみたいが、10年も放置されているんだよね。


FreeBSD 14

2024-04-30 | 電脳

そろそろ良いかなとFreeBSDを13から14にアップグレードした。

身近な所で変更が入っていて、いくつかはまった所を記録しておく。

  1.  標準シェルが csh から sh に変更
  2.  /usr/ports 管理用の portsnap が標準コマンドからなくなる
  3.  標準メール転送ソフトが sendmail から Dragonfly Mail Agent (dma) になる

□ 標準シェルが csh から sh に変更

日常的に使うシェルは zsh なので、影響はないが、root になった時、環境変数などの影響を排除し、できるだけ素の状態にするため、root のログインシェルを変更していない。
ただ、コマンドの履歴とその補完だけはやりやすくしていた。

その設定が効かなくなったので、アップグレード直後は困惑した。
少し調べて、標準shell が変更されたとわかったので、.shrc を編集した。
これまでの履歴を参照しなくなってしまったのでちょっと不便。統合しなくちゃ…

□ /usr/ports 管理用の portsnap が標準コマンドからなくなる

portsnap 自体は ports の中にあるので、使いつづけたければ、ports からインストールすればいい。

今回は git による管理になってしばらくしていることと、portsnap が標準で用意されなくなったので、git を使って ports tree を更新してみることにした。

/usr/ports の準備の仕方は FreeBSD Project の Handbook にしたがった。
ports tree の update は "# git -C /usr/ports pull" か "make update" でいける。

ただ、index まではもってこないようで、これだけだと、pkg や portmaster での操作にえらく時間がかかる。

index を用意するには "make index" か "make fetchindex" をする必要がある。"make index" はそれなりに時間がかかる。

あわせると次になる。

  % cd /usr/ports && make update fetchindex

 

□標準メール転送ソフトが sendmail から Dragonfly Mail Agent (dma) になる

システムが定期的に送ってくるメール。daily run outopu とか、security run output みたいなメール。
root でログインしないと読めないのは不便だし、そもそもログインしてまで読みたくはない。が、目を通しておく必要がある。

そこで、"/root/.forward" ファイルを利用して、root から私のユーザーアカウントに転送し、それを"~/.forward" で maildrop にわたして、メールソフトで読めるようにしていた。

ところが、Dragonfly Mail Agent は ".forward" を利用しない。
9年前?のTODO にリストされたままになっている。

root から 特定のユーザーやメールアドレスに転送するのは、/etc/mail/aliases で指定できる。
一般ユーザーの転送設定を /etc/mail/aliases に書くのは避けたい。
一応やってはみたが、maildrop に渡す設定もうまく書けなかった。

転送されたメールをcronで読みこめないかと試行錯誤したができず手詰まり。

結局、dma をあきらめ、 sendmail に戻す。やり方は Handbook を参考にする。

  1. /etc/mail/mailer.conf を /usr/share/examples/sendmail/mailer.conf に変更
  2. /etc/rc.conf  に sendmail_enable="NO" と記述
  3. サーバーを再起動。

かなりdma で一般ユーザーが .forwad を使わずになんとかする方法を探したのだけれどみつけられなかった。
".forwad" が使えなくても困らないのだろうか。


右クリック禁止

2024-04-05 | 電脳

右クリック禁止のサイト。

ソースで oncontextmenu="return false;" を指定してあるため右クリックを押しても反応がない。

でも、Firefox なら「Shift + 右クリック」でメニューを表示できる。

ありがとう奥村先生! ありがとう Firefox!

 

ちなみにこのサイト。ガラケーの画面仕様のままなのか、めっちゃ見にくい。

これも addon Stylebot でみやすくすることができた。ありがとう!!


FreeBSD で portsdowngrade (Git 手動対応)

2023-12-19 | 電脳

FreeBSD の Ports を downgrade したい時、以前は portsdowngrade を使うことができた。
FreeBSD が ports tree の管理を subversion から git に変えたので、portsdowngrade が使えなくなった。

git を使っていないので、 ports tree のバージョンを戻す方法がわからない。
port をひとつだけ一時的に戻すなら手動でもなんとかできる。
git の History を確認しながら手動で port のファイルを戻し、ダウングレードをした。

□ 手順

FreeBSD の port tree を用意する。

FreeBSD の port tree https://github.com/freebsd/freebsd-ports から目的の port を探す。
(今回は security/gnupg )

"History" をクリックし、目的のバージョンを探し、右にあるアイコン "View at this point in the history" をクリック。
(今回は 2.4.3にアップグレードする前、2023/2/8のコミットをクリック)

手元のソースと見比べ、更新されているファイル、削除されているフォルダ・ファイルをさがし、入れ替え・追加。
(今回は Makefile distinfo pkg-plist が変わっており、files/patch-dirmngr_server.c がなくなっていた)

必要なファイルがそろったらインストール実行
# make deinstall
# make install clean

以上

依存port にバージョンの制限があったり、複数のportsがからみあっていると、無理かも。

□ 参考サイト

□ 背景

GnuPG の ports が 2023年6月に2.4.3にアップグレードしてから、emacs で GnuPGによるファイルの保存ができなくなった。このことは GnuEmacs も GnuPG も認識していたようだが、待てど暮らせど解決しないまま放置されていた。
おそらく対策が簡単だから。2.4前のバージョンに戻せばいい。

FreeBSD の ports が subversion で管理されていた頃は、 portsdowngrade という port を使うことで、簡単にバージョンを戻すことができた。
現在は git で管理されているので、使うことができなくなった。
Git で ports tree を管理すれば良いのだが、git を使ったことがないので、導入+使い方を修得するというハードルがあった。

一言で言うとめんどい。そのうち修正されるやろ、と放置していたのだが、まさか半年たっても修正されないとは…。ということでやっと実行。

※2024.03.04
2024年2月9日にGnuPGのportが 2.4.4 になった。
GnuPGの Release Note によると、Emacs で動かなくなっていた対応パッチ(T6481)がはいった模様。
port をアップグレードすると、Emacs でGnuPGが使えるようになっていた。


Thunderbird のスレッド表示設定:広げる(展開)か折りたたむか

2023-11-17 | 電脳

Thunderbirdを更新したら(たぶん115から)スレッド表示が常に広がる(展開する)ようになってしまった。

私のスレッドの使い方は、基本折りたたんでおいて、読みたいスレッドを広げて読むやりかた。
そこで、スレッド表示はまず折りたたんで表示するようにしたかった。

設定はメニューから行う。

「メニュー」 → 「表示」 → 「スレッド」
ここで、「すべてのスレッドを広げる」か「すべてのスレッドを折りたたむ」を選ぶ。

この設定、チェックマークがつくものではないので、一時的な設定だと勘違いしていたが、この設定をしている時に開いているフォルダだけではなく、すべてのフォルダで同じ設定になった。

めでたしめでたし


Firefox のメインメニューバーにWindowsのアクセントカラーを反映させる

2022-07-28 | 電脳

* 2021/10/07

Firefox 92 (proton) でアクティブウィンドウのメインメニューバー(タブバーがならぶ所)の背景色を変更し、Windows のアクセントカラーにした。

* 2022/07/28

Firefox 103 で設定の名前が変更されたらしく、以前の設定ではメインメニューバーやタブバーにWindowsのアクセントカラーを反映させることができなくなった。

-moz-accent-color-moz-accent-color-foregroundAccentColorAccentColorText に変更された模様

参考サイト How to Get Windows Accent Colors back in Firefox 92? を確認すると、Firefox103を含めて、いくつか設定が更新されていたので下記を修正する。


* 方法
userChrome.css というファイルに設定を書くことで、Firefox のUIを変更する。

(1) about:config の変更

デフォルトだと userChrome.css の設定を無視するので、反映するようにFirefox の設定を変更する。

URLバーに about:config と打ち込む。
表示されるページから toolkit.legacyUserProfileCustomizations.stylesheets という項目をさがす。
その値を false から true に変更する。

(2) Firefox のプロファイルフォルダーの下に、chromeというフォルダを作る。

まず、Firefox のプロファイルフォルダーを開く。
URLバーに about:support と打ち込むか、メニューからヘルプ → 他のトラブルシューティング情報で「トラブルシューティング情報」を表示する。
「アプリケーション基本情報」にある「プロファイルフォルダー」からフォルダーを開くことができる。
その中に chrome という名前のフォルダを作成する。

(3) userChrome.css というファイルを作成する。

上で作成した chrome というフォルダを開き、その中に新規テキストファイルを作成したあと、名前を userChrome.css に変更する。
拡張子を txt から css に変更するのに気をつけてください。

(4) userChrome.css に設定を書き込む。

下の内容をファイルに書き込み保存する。

Firefox 103 からの設定

/* Show active colors on main menu bar */
#TabsToolbar,
#navigator-toolbox,
#tabs-newtab-button,
#titlebar toolbarbutton:not(:hover):not(:active),
#scrollbutton-up:not(:hover):not(:active),
#scrollbutton-down:not(:hover):not(:active),
.titlebar-color {
background: AccentColor !important;
color: AccentColorText;
fill: AccentColorText !important;
}

#TabsToolbar:-moz-window-inactive,
#navigator-toolbox:-moz-window-inactive,
#tabs-newtab-button:-moz-window-inactive,
#titlebar toolbarbutton:not(:hover):not(:active):-moz-window-inactive,
#scrollbutton-up:not(:hover):not(:active):-moz-window-inactive,
#scrollbutton-down:not(:hover):not(:active):-moz-window-inactive,
.titlebar-color {
background: unset !important;
color: unset;
fill: unset !important;
transition: none !important;
}

Firefox 92 の頃の設定

/* Show active colors on main menu bar */
#TabsToolbar,
#navigator-toolbox {
background: -moz-accent-color !important;
color: white;
}

#TabsToolbar:-moz-window-inactive,
#navigator-toolbox:-moz-window-inactive {
background: unset !important;
color: unset;
}


(5) Firefoxs を再起動する。

変更を有効化するには、about:support(ヘルプ → 他のトラブルシューティング情報)のページで「起動時キャッシュを消去…」をクリックすると、Firefox が再起動する。

* 参考サイト
How to Get Windows Accent Colors back in Firefox 92?

* 背景
2021年6月に Firefox 89 が公開され、proton というデザインが採用された。
89と90の間は proton を無効にして従来のデザインのままにすることができた。
8月に Firefox 91 が公開されると、 proton を無効にすることができなくなった。

個人的には、デザインの変更に違和感があったが、使いやすさなどはともかく、そのうち慣れるだろうと思っていたし、実際慣れた。
ただ、私の使い方だとしばしば困ることがあった。
これはFirefox の問題というより、Windows のUWP (Universal Windows Platform) のデザインの問題なのかもしれない。

デスクトップアプリであれば、Windowsの設定からアクセントカラーを選ぶことで、アクティブウィンドウのタイトルバーに反映させることができた。
UWPアプリだと、タイトルバーの色を変更できないうえに、アクティブウィンドウと非アクティブウィンドウで(ほとんど?)違いがない。
アクティブウィンドウには、ウィンドウのまわりに影をつけることができるが、注意して見ればわかる程度。
アクティブウィンドウと非アクティブウィンドウが重なっていない限り、パッと見では区別しにくい。
どちらが上(アクティブ)なのかわかりにくいので、どれがアクティブなのかと考えた上で、迷ったらウィンドウをクリックしてから操作することになる。
複数のウィンドウをまたいで作業をしている時や注意していない時は、しばしば別のウィンドウを操作してしまうはめになった。


FreeBSD ports "pkg version -vL=" の結果が "succeeds index" となる。

2022-07-16 | 電脳

FreeBSD で ports tree を利用している。

"portsnap fetch update" を実行すると、ports tree が最新になる。
"# pkg version -vL=" を実行すると、インストールされている ports のバージョンが ports tree と違うものがリストアップされる。

通常はインストールされているパッケージのバージョンが最新版より古いので "<" が表示される。
ところが、今回は ">" "succeeds index" となり、インストールされているバージョンが最新版より新しいと表示された。

めったにないことなので調べてみた。
インストールされている ports tree のバージョンが、/usr/ports/INDEX-*.db にあるバージョンより高いことが原因らしい。

ports tree のインデックスをダウンロードする。
# cd /usr/ports
# make fetchindex

参考  FreeBSD Forums "perl5 succeeds index"

 # pkg version -v
          /usr/ports/INDEX-*.db と比較する ⇒ ">"
 # pkg version --ports -v
          ports tree と比較する ⇒ "="


FreeBSD ports db5

2022-07-05 | 電脳

□期限切れになった port が更新されない

# db5-5.3.28_8: Tag: expiration_date Value: 2022-06-30
# db5-5.3.28_8: Tag: deprecated Value: EOLd, potential security issues, maybe use db18 instead

FreeBSD のports を利用している。
subversion が apr1 を必要とし、apr1 が db5 を必要とする。
db5 が EOL のため、db18 にしたいのだが、7月になっても apr1 が更新されない。

□帰結
db5 / db18 をインストールしないことにした。
subversion のオプションを調べると " BDB=OFF" になっていた。
apr1 を利用しているのは subversion だけなので apr1 のBDBオプションをオンからオフにした。

□db18への乗り換え模索
最初、db5 の代わりに db18 をインストールする方法を調べた。
/etc/make.conf に "DEFAULT_VERSIONS+= bdb=18" と設定する方法があった。
これでうまくいったとの報告もあったが、make / portmaster ともに反映してくれなかった。
/etc/make.conf に設定する方法が反映されないのは、他の設定でもおきているので、私の環境の問題かもしれない

コマンド "portmaster -m USES=bdb:18 devel/apr1" を実行してみた。
db5 ではなくdb18 をインストールはじめたが、db18 を延々とインストールしようとしてループしてしまった。
" USES=bdb:18" は /usr/ports/CHANGE の 20160426 にある記述。

ここで今回はお手上げ。
apr1 と BDB を利用する ports を今後利用することになったら不具合が生じることになるかもしれない。
忘れないようにしたいが、たぶん忘れてしまうのだろう…

 

□追記:2023.04.04

apr1 をapr-1.7.3.1.6.3からapr-1.7.3.1.6.3_1にアップデートする時に不具合が生じた。

"pkg-static: Unable to access file /usr/ports/devel/apr1/work/stage/usr/local/lib/apr-util-1/apr_dbm_gdbm-1.so:No such file or directory" というエラーがでてインストールに失敗した。
しかもアップデートする過程で apr-1.7.3.1.6.3 を削除した後、インストールに失敗し、復元されずに削除されたままになった。
pkg info から消えてしまい、"pkg info -rd subversion" をすると "apr-(null)" と表示されていた。

FreshPortsで確認すると

devel/apr1: Update BDB support
* Allow no BDB
* Correct license with BDB 18
* Spelling

とあった。変更していたオプションが修正されたことによる可能性が高い。
"make rmconfig" した後、無事インストールできた。

 

emacs の iseach で SKK が起動せず、日本語検索ができなくなってた

2021-10-20 | 電脳
GNU Emacs での日本語入力に ddskk を利用している。
Emacs の 検索 isearch で skk による日本語入力ができず、困っていたのだが、
原因が ddskk を Melpa からのインストールしていたためだった。

make を利用して ddskk をインストールすると、skk-setup.el がインストールされる。
現在、skk-setup.el には、キーバインドの設定と isearch 時の設定がある。
なので、特に設定をしなくても、isearch でSKKによる日本語検索ができる。

ところが、Melpa 経由で ddskk をインストールすると、 skk-setup.el がインストールされない。
iseach で SKK を利用するためには、.skk などに設定をする必要がある。
How to install DDSKK using MELPA の「3. DDSKK の設定」を参照してください)

下記を skk-setup.el から .skk にコピペしたら isearch で SKK がつかえるようになった。

;;; Isearch setting.
(defun skk-isearch-setup-maybe ()
(require 'skk-vars)
(when (or (eq skk-isearch-mode-enable 'always)
(and (boundp 'skk-mode)
skk-mode
skk-isearch-mode-enable))
(skk-isearch-mode-setup)))

(defun skk-isearch-cleanup-maybe ()
(require 'skk-vars)
(when (and (featurep 'skk-isearch)
skk-isearch-mode-enable)
(skk-isearch-mode-cleanup)))

(add-hook 'isearch-mode-hook #'skk-isearch-setup-maybe)
(add-hook 'isearch-mode-end-hook #'skk-isearch-cleanup-maybe)


migemo + isearch で skk が起動できないので気付いた。
いつもはmigemo だけで十分検索ができ、不満はなかったので気付くのに時間がかかった。
migemo だけだと不要なヒットが多すぎたので、日本語だけで検索したくなったので気付くことができた。

ずっと昔は isearch の設定があったのだけれど、Emacsのバージョンアップでその設定が使えなくなりコメントアウト。
それでも skk-setup.el のおかげか不満なく使えていた。
最近 melpa からインストールするようになって、ドキュメントを読んでやっと気付いた、という感じ。
昔は使えた設定がそのままになっているので、見直さないといけないなぁ