この記事は openSUSE Advent Calendar 2023 の5日目です。

openSUSE 15.6 にむけて、packaeges-i18n の翻訳を始めています。翻訳は Weblate を使うのですが、対話的にWebベースで作業をすると結構手間がかかります。量が多い場合は、翻訳対象データをダウンロードし、ローカルで作業した方が速くなります。
ローカルで作業するときには、オープンソースの翻訳支援ツール OmegaT を使うのが便利です。さらに、NICT が開発した機械翻訳システム textra を併用すると翻訳効率が大幅に向上します。そのために、OmegaT 用のプラグインも用意されています。

openSUSE の packages-i10n の翻訳は、しばらく前から上記の組み合わせで作業を行っていました。Weblateから未翻訳分の行を gettext po 形式でダウンロードして OmegaT で翻訳、仕上がったら po ファイルをアップロードすれば作業は終わります。textra がかなりきれいに訳してくれるので、1日あれば数百行の翻訳をこなす事ができます。今これを書いている時点でも、カテゴリ x (先頭が x で始まるパッケージ群) の追加翻訳数百行をだいたい1日で終えています。

しかし、環境を最新のWindows11にするため、OmegaTとプラグインも最新にした所、動作エラーとなり、原因を捜すのに苦労しました。結論から言うと、OmegaT用のプラグイン最新版(v2022.2.2) では Windows10/11 環境での OmegaT では動作しません。一つ前のバージョン v2022.2.1 では動きます。もしも、他の翻訳に OmegaT+textra を使う事を考えているのであれば注意してください。

ALPでYaSTを使ってみる (X版)

By Syuta Hashimoto @ 2023-12-04 08:00

ALP (Adaptive Linux Platform)は、SUSEとopenSUSEで開発している次世代OSのベースです。イミュータブルで軽量な仕様となっています。

この冬発売のGeeko MagazineにインストールとCockpitというブラウザから管理できるアプリの体験記を書いていますので、ぜひ皆さん試してみてください。

さて、今日は昨日の続きでALPの上でYaSTを動かしてみます。今日はX版です。方法はこちらに書いてあるのでその通り行っていきます。

X版の画面表示は、SSHのXフォワーディングでSSH接続元に表示する方法です。

まず、ALPにSSH Xフォワーディング用のパッケージを入れます。

ALPはイミュータブルのため、通常のzypperコマンドではなく、transactional-updateコマンドでパッケージを一時領域にインストールし、その後、リブートして有効化します。

# transactional-update pkg install xauth && reboot

次にALPにログインするときに、Xフォワードのオプションをつけます。

ssh -X syuta@192.168.122.114

yastはroot権限が必要なため、suを行います。

su -

そして、実行するコンテナを特定します。

# podman search yast-mgmt-qt

ドキュメントにあるイメージを見つけます。

registry.opensuse.org/suse/alp/workloads/tumbleweed_containerfiles/suse/alp/workloads/yast-mgmt-qt

ではこのイメージを実行しましょう。完了するとSSH接続元にYaSTの画面が表示されます。

# podman container runlabel run registry.opensuse.org/suse/alp/workloads/tumbleweed_containerfiles/suse/alp/workloads/yast-mgmt-qt

無事表示されました。各メニューへもアクセスできます。またALPの制御が楽になりましたね。

背景のコンソールがALPにログインしている状態、手前のYaSTがホストPCに表示されているウィンドウです

openSUSE 15.5 で試したのですが、GlusterFS の中の glusterd は peer との通信にデフォルトで IPv6 で通信しています。 /etc/hosts に IPv4 アドレスでホスト名を指定してもそこを見ません。
IPv4 で通信させるためには、 /etc/glusterfs/glsuterd.vol に

option transport.listen-backlog 1024

と言う行を追加する必要があります。

openSUSE にログインする時は、ほとんどWindows マシンから Teraterm を使っています。編集はほとんど emacs です。しかし、ある日から突然、emacs の編集ができなくなってしまいました。 Ctrl+Space を入力しても set-mark-command が聞かなくなってしまったのです。
いろいろ調べて見たら原因が分かりました。最近バージョンアップした powertoys 0.70.0 が Ctrl+Space を横取りしていたのですね。

幸いにも、このキーバインディングは変更可能でした。そこで、まず使わないであろう、Windows+Space に変更することで難を逃れました。

最近では、Video系はHDMI/Display Port、信号系は USB Type-C で統一されつつある感がしますが、まだまだ古い機種があると、種々のコネクタ形状のケーブルがたくさんあります。USB でも mini/micro なものもありますし、カメラなどに繋ぐケーブルもあります。そして、それらはほとんどが黒色。USB3のタイプAコネクタ内部は水色になっていますが、それを除くとぱっと見ただけでは区別が付きません。
そこで、ケーブルを色分けしてわかりやすくすることを考えました。
手段としてはいろいろあります。テプラシールなどを貼り付けてしまう方法とかが一番楽そうですが、今回はコネクタ部分の補強も兼ね、熱収縮性チューブを使ってみることにしました。

熱収縮チューブとは

熱収縮チューブとは、その名の通り、加熱することで縮まるプラスチックチューブです。色、太さ、性質など、種々の特性を持ったチューブが各社から販売されています。ヒシチューブとかスミチューブとか、商品名で呼ばれることもあります。100均ショップなどでも売っていますが、ホームセンターなどでも取り扱いはあるようです。今回は、秋葉原まで行って買ってみることにしました。秋葉原ではガード下のお店(だいぶ減っちゃいましたけど)で、種々の色を混ぜた、サンプル品を売っていますので。複数の幅のものを買っておきました。

スミチューブサンプル品

取りあえず試してみる

今回入手したものは住友電工が作っている、スミチューブでした。おおよそ熱を加えると径が1/2くらいになります。そこで、比較的径が細い所に使ってみることにしました。
加熱はヘアドライヤーでは無理で、高熱が出るヒートガンとかが必要です。今回ははんだごてを使う事にしました。たまたま従来から使っていたものが壊れてしまった(電源線が切れた)ので、新しいものを手配。新品なのできれいな部分を直接熱収縮チューブにあてて縮めることにしました。あまり熱を加えすぎると、ベースの方のケーブルを痛めてしまうので、思うようには縮まりませんでした。また、伸縮率が1/2くらいなので、大きな段差がある所では、収縮しきれなかったというのもありました。

MicroUSBコネクタに巻いてみる

まるごと覆うのは諦める

段差がある所を覆うのは無理そうと諦め、コネクタ部分の一部を覆うようにチューブを付けて見ることにしました。それだと手軽ですぐに判別がつきます。ただ、コネクタ部分は結構分厚いので、買ってきたサンプル品では、タイプAのコネクタにはうまく入りませんでした。Type-C のコネクタにはうまい感じで入ったので、そちらだけ付けて見ました。
こうすればぱっと見てなんだかすぐに分かるかなと思います。

USB-TypeC コネクタに巻いてみる

openSUSE 15.4 では、emacs が動かなくなることがあります。その問題と、暫定的な解決方法は、https://blog.geeko.jp/syuta-hashimoto/3113 に書かれていました。

しかし、今試してみたところ、rpm -e コマンドで、hunspell,hunspell-tools を抜くことで、emacs を問題なく起動することが出来ました。

emacs がうまく起動しなかった場合、上記の方法も試してみてください。

less の終了時に画面を残したい

By ribbon @ 2022-12-24 00:10

FreeBSD ではできているのに、openSUSE で、less を使ってファイルやマニュアルを表示すると、less終了後に表示された画面が消えてしまいます。結果を見ながら別の作業をしたいときには少々不便です。調べた結果、この問題を解決するにはいくつかの方法があることが分かりました。

  1. オプション -X (または –no-init) を引数として指定して起動する。
    一番簡単なやり方です。
  2. 環境変数 LESS に -X オプションを指定しておく。
    あらかじめシェルの初期設定ファイル (.bashrc とか .cshrc とか) に、
    LESS=’-X’
    を指定しておきます。
  3. terminfo の値を変更する。
    http://kurokawh.blogspot.com/2015/01/linuxcygwin-less-man.html や、https://t9md.hatenadiary.org/entry/20080802/1217655775によると、terminfo の値を修正することによっても変更出来るそうです(この方法は試していません)。

ただし、アプリケーションによっては、画面を消すことを前提としている物もあるようなので、色々テストしながら設定をするのが良さそうです。