はじめに
slrn (S-Lang Newsreader) は、UNIX系システムで動作する、高機能なスレッド対応のテキストベースニュースリーダーである。
コマンドラインから操作でき、軽量でカスタマイズ性が高いのが特徴となっている。
packages.ubuntu.com/noble/news/slrn
環境
WSL2 Ubuntu 24.04 LTS
slrn: 1.0.3使い方
インストール
Ubuntuの公式リポジトリに含まれているため、apt コマンドで簡単にインストールできる。
sudo apt update
sudo apt install slrnログ
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
crack-common gyp libcares2 libgl1-amber-dri libglapi-mesa libjs-async libjs-events
libjs-inherits libjs-is-typedarray libjs-prettify libjs-regenerate libjs-source-map
libjs-sprintf-js libjs-typedarray-to-buffer libllvm17t64 liblttng-ust-common1t64
liblttng-ust-ctl5t64 liblttng-ust1t64 libnotify-bin libqt5x11extras5 libre2-10
libssl-dev libuv1-dev libxcb-damage0 mesa-utils-bin node-abbrev
node-ampproject-remapping node-ansi-regex node-ansi-styles node-aproba
node-are-we-there-yet node-arrify node-async node-async-each node-auto-bind
node-babel-plugin-add-module-exports node-babel7-runtime node-balanced-match
node-base64-js node-binary-extensions node-brace-expansion node-busboy node-camelcase
node-caniuse-lite node-chownr node-chrome-trace-event node-ci-info node-cjs-module-lexer
node-cli-boxes node-cli-cursor node-clone node-collection-visit node-color-convert
node-color-name node-colors node-commander node-commondir node-concat-stream
node-console-control-strings node-convert-source-map node-core-js node-core-js-pure
node-core-util-is node-data-uri-to-buffer node-decompress-response node-deep-is
node-defaults node-define-property node-delegates node-depd node-diff
node-electron-to-chromium node-encoding node-end-of-stream node-err-code node-error-ex
node-es-module-lexer node-escape-string-regexp node-eslint-utils
node-eslint-visitor-keys node-esquery node-estraverse node-esutils node-events
node-fancy-log node-fast-deep-equal node-fast-levenshtein node-fetch node-find-up
node-flatted node-foreground-child node-fs-readdir-recursive node-fs-write-stream-atomic
node-fs.realpath node-function-bind node-get-caller-file node-get-stream node-get-value
node-glob node-globals node-got node-graceful-fs node-growl node-has-flag
node-has-unicode node-has-value node-has-values node-hosted-git-info node-iconv-lite
node-ieee754 node-iferr node-imurmurhash node-indent-string node-inflight node-inherits
node-ini node-interpret node-ip node-ip-regex node-is-arrayish node-is-binary-path
node-is-buffer node-is-descriptor node-is-extglob node-is-path-cwd node-is-plain-obj
node-is-plain-object node-is-stream node-is-typedarray node-is-windows node-isarray
node-isexe node-isobject node-js-tokens node-json-buffer node-json-parse-better-errors
node-json-schema node-json-schema-traverse node-json-stable-stringify node-jsonify
node-jsonparse node-kind-of node-levn node-loader-runner node-locate-path
node-lodash-packages node-lowercase-keys node-lru-cache node-map-visit node-memfs
node-merge-stream node-mimic-response node-minimatch node-minimist node-minipass
node-mute-stream node-n3 node-negotiator node-npm-run-path node-object-inspect
node-object-visit node-once node-optimist node-optionator node-osenv node-p-cancelable
node-p-limit node-p-locate node-p-map node-pascalcase node-path-dirname node-path-exists
node-path-is-absolute node-path-is-inside node-path-type node-pify node-pkg-dir
node-postcss-value-parser node-prelude-ls node-process-nextick-args
node-promise-inflight node-promise-retry node-promzard node-prr node-pump node-punycode
node-quick-lru node-randombytes node-read node-readable-stream node-rechoir
node-regenerator-runtime node-regenerator-transform node-regexpp node-regjsgen
node-repeat-string node-require-directory node-require-from-string node-resolve
node-resolve-cwd node-resolve-from node-restore-cursor node-resumer node-retry
node-run-queue node-safe-buffer node-serialize-javascript node-set-blocking
node-set-immediate-shim node-shebang-command node-shebang-regex node-shell-quote
node-signal-exit node-slash node-slice-ansi node-source-list-map node-source-map
node-spdx-correct node-spdx-exceptions node-spdx-expression-parse node-spdx-license-ids
node-sprintf-js node-ssri node-stack-utils node-string-decoder node-strip-bom
node-supports-color node-tapable node-terser node-text-table node-through
node-time-stamp node-to-fast-properties node-tslib node-type-check node-typedarray
node-typedarray-to-buffer node-undici node-unicode-canonical-property-names-ecmascript
node-unicode-match-property-value-ecmascript node-unicode-property-aliases-ecmascript
node-unset-value node-uri-js node-util-deprecate node-uuid node-v8flags
node-validate-npm-package-license node-wcwidth.js node-webpack-sources node-wordwrap
node-wrappy node-write-file-atomic node-xtend node-y18n node-yallist node-yaml
nodejs-doc xbitmaps
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
libcanlock3 libuu0
Suggested packages:
slrnpull
The following NEW packages will be installed:
libcanlock3 libuu0 slrn
0 upgraded, 3 newly installed, 0 to remove and 6 not upgraded.
Need to get 608 kB of archives.
After this operation, 2066 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu noble/universe amd64 libcanlock3 amd64 3.3.0-1build1 [16.4 kB]
Get:2 http://archive.ubuntu.com/ubuntu noble/universe amd64 libuu0 amd64 0.5.20-14 [60.3 kB]
Get:3 http://archive.ubuntu.com/ubuntu noble/universe amd64 slrn amd64 1.0.3+dfsg-6ubuntu1 [532 kB]
Fetched 608 kB in 2s (316 kB/s)
Preconfiguring packages ...
Selecting previously unselected package libcanlock3:amd64.
(Reading database ... 118885 files and directories currently installed.)
Preparing to unpack .../libcanlock3_3.3.0-1build1_amd64.deb ...
Unpacking libcanlock3:amd64 (3.3.0-1build1) ...
Selecting previously unselected package libuu0.
Preparing to unpack .../libuu0_0.5.20-14_amd64.deb ...
Unpacking libuu0 (0.5.20-14) ...
Selecting previously unselected package slrn.
Preparing to unpack .../slrn_1.0.3+dfsg-6ubuntu1_amd64.deb ...
Unpacking slrn (1.0.3+dfsg-6ubuntu1) ...
Setting up libuu0 (0.5.20-14) ...
Setting up libcanlock3:amd64 (3.3.0-1build1) ...
Setting up slrn (1.0.3+dfsg-6ubuntu1) ...
Processing triggers for man-db (2.12.0-4build2) ...
Processing triggers for libc-bin (2.39-0ubuntu8.6) ...インストールされたバージョンを確認する。
slrn --versionslrn 1.0.3
S-Lang Library Version: 2.3.3
Operating System: Linux
COMPILE TIME OPTIONS:
Backends: +nntp +slrnpull +spool
External programs / libs: +canlock +inews +ssl +uudeview +iconv
Features: +decoding +emphasized_text +end_of_thread +fake_refs +gen_msgid
-grouplens -msgid_cache +piping +rnlock +spoilers -strict_from
Using 64 bit integers for article numbers.
DEFAULTS:
Default server object: nntp
Default posting mechanism: nntp設定と起動
slrn を利用するには、接続するNNTPサーバー(ニュースサーバー)を指定する。環境変数 NNTPSERVER を設定するのが一般的となる。
例えば、プロバイダや契約しているニュースサーバーのアドレスを指定する。(例: news.example.com)
export NNTPSERVER=news.example.comもし、無料で試せるサーバーを探している場合は、Eternal September などが有名。
サーバーを指定した状態で起動する。初回起動時に -f オプションを指定してグループ情報を取得することもできる。
slrnまたは、設定ファイル ~/.slrnrc を作成してカスタマイズすることも可能だ。デフォルトの設定ファイルを作成するには以下のコマンドを実行する。
slrn --createこれにより、カレントディレクトリに .slrnrc という名前で設定ファイルのテンプレートが作成される。これをホームディレクトリに配置して編集する。
mv .slrnrc ~/.slrnrcトラブルシューティング
起動時に以下のエラーが表示される場合がある。
Loading /usr/share/slrn/slang/slrn.sl
Reading startup file /etc/news/slrn.rc.slrn fatal error:
Unable to find a valid hostname for constructing your e-mail address.
You probably want to specify a hostname in your .slrnrc file.
Please see the "slrn reference manual" for full details.これは完全修飾ドメイン名(FQDN)が取得できない環境などで発生する。
この場合、~/.slrnrc ファイルにホスト名を明示的に設定することで回避できる。
# ~/.slrnrc に以下を追記(任意のホスト名で可)
set hostname "localhost"おわりに
使ってみたけど、今だともっと便利なものがあるので使うかも…?って感じだった。