By Syuta Hashimoto @
2022-12-14 08:54
この記事は openSUSE Advent Calendar 2022 の14日目です。
大分遅くなりましたが、先月、自宅のopenSUSEを15.4にアップデートしました。なお、SLES15 サービスパック3(Leap 15.3のベース)は、2022年12月でサポートが切れる(セキュリティパッチの提供などが終了する)ので、皆さん15.4にアップデートすることをおすすめします。
さて、15.4にアップデートしたところ、emacsを起動した時に初期設定が反映されなくなりました。
そこでXDDCのもくもく会で力を貸して頂いて対処したので、書いてみます。なお、最終的な解決までには至りませんでした。
結論
/usr/share/hunspell に、ja_JP.affとja_JP.dicを配置する(中身は何でも良い)
症状
emacsを起動しても初期設定が反映されない
*Messages*に以下のメッセージが表示されている
ispell-find-hunspell-dictionaries: Can’t find Hunspell dictionary with a .aff affix file
教えてくださった方法
Ubuntuの開発者の方に、まずstraceでemacs.d/init.el読んでるかみてみたら?と教えて頂きました。
strace -f emacs > strace.log
straceはシステムコールやシグナルをトレースするプログラムです。
このログをinit.elでgrepしても、ヒットしませんでした。なので、そもそもinit.elを読んで無いようです。
どうやら、メッセージにある通り、hunspellの起動が失敗していて、init.elの読み込みまで進んでないようです。
それでhunspellでログをgrepしていると、/usr/share/hunspell/ja_JP.affと/usr/share/hunspell/ja_JP.dicを読みに行く跡がありました。
そこで、/usr/share/hunspell/en_US.affと/usr/share/hunspell/en_US.dicをそれぞれコピーして/usr/share/hunspell/ja_JP.affと/usr/share/hunspell/ja_JP.dicとして配置した所、無事init.elを読み込みました。
hunspellは日本語チェックをする事はないので、このファイルがあることは問題にならないのですが、回避策にしかならないですね・・・
hunspellはどうやらLANGの値を見ているらしく、以下のように起動するとエラーなく起動できました。
LANG=en_US.UTF-8 emacs
hunspellがLANGの値を見る所を探っていけば、根本解決までいけそうですね。
By Syuta Hashimoto @
2022-12-11 14:26
この記事は openSUSE Advent Calendar 2022 の11日目です。
12/4(日)の前日設営と、12/5(月)、6(火)に、Open Source Summit Japan 2022にボランティアスタッフとして参加してきました。
そこでCDN大手のAkamaiさんがブースを出していて、Linodeというクラウドプロバイダーを買収してクラウドサービスを始めたとアピールされていました。クーポン頂いちゃいました。
そしてなんとそのLinodeのイメージにopenSUSE Leapが入っていました。
(クラウドでサーバー用途で使うならMicroOSがいいですが、さすがに利用者が遠ざかってしまいますかね・・・)
他にも、AlmaLinux、Alpine、Arch、CentOS、Debian、Fedora、Gentoo、Kali、Rocky、Slackware、Ubuntuと、一通り揃っているのでは無いでしょうか。(さすがにミラクルはない模様・・・ここはプッシュのチャンスかも)
お値段はこんな感じです。
Shared CPUだとかなりお安い感じで使えるのでは無いでしょうか。パフォーマンスがどれくらい出るものなのか、興味深いですね。なお、GPUは日本だと選べませんでした。
作成時にsshキーを登録できるので、すぐにssh接続で使えます。IPもグローバルを振ってくれます。
podmanをインストールしてnginxを動かしてみました。
いつも通りの操作で普通に動きました。
せっかくなので、クラウドで遊ぶ時は使わせて頂こうと思います。
あと、各リージョンのベンチマークができるサービスもあったので、後日紹介させて頂きます。
Category
openSUSE,
未分類 |
受け付けていません
By ribbon @
2022-12-10 10:46
この記事は openSUSE Advent Calendar 2022 の10日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、powerprofilesctl を紹介します。
コマンド名: powerprofilesctl
パッケージ: power-profiles-daemon-0.12-1.2.x86_64
動作: ○
詳細:
powerprofilesctl は、電源モードの表示や変更を行うプログラムです。powerprofiles は GNOME の 設定→電源 で表示される電源モードになります。プロファイルの一覧、現状のプロファイル状態は以下のようにして表示できます。
% powerprofilesctl list
balanced:
Driver: placeholder
* power-saver:
Driver: placeholder
% powerprofilesctl get
power-saver
また変更は下記のように行えます。
# powerprofilesctl set balanced
# powerprofilesctl get
balanced
ただ、電源プロファイルを変更することはほとんど無いので、このコマンドの出番はあまりないのかもしれません。
Category
openSUSE,
Tips,
サーバ,
デスクトップ |
受け付けていません
By ribbon @
2022-12-07 21:40
この記事は openSUSE Advent Calendar 2022 の5日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、hostnamectl を紹介します。
コマンド名: hostnamectl
パッケージ: systemd-249.12-150400.8.13.1.x86_64
動作: ○
詳細:
hostnamectl は、システムのホスト名や関連する情報の表示や変更を行うプログラムです。昔ながらの、ホスト名を表示するプログラム hostname は、引数を指定しないで入力すると、単にホスト名を返すだけですが、hostnamectl を引数を指定しないで実行すると、
Static hostname: suse154
Icon name: computer-vm
Chassis: vm
Machine ID: 61ee5253e44f403c9918308e232c84b8
Boot ID: 2dc4f7eae3724c6497708a64e08a516c
Virtualization: kvm
Operating System: openSUSE Leap 15.4
CPE OS Name: cpe:/o:opensuse:leap:15.4
Kernel: Linux 5.14.21-150400.24.33-default
Architecture: x86-64
Hardware Vendor: QEMU
Hardware Model: Standard PC _i440FX + PIIX, 1996_
と、たくさんの情報を表示します。今回テストしている環境が KVM 配下であることもバレてしまいます。旧来の hostname コマンドと互換を取るには、引数として hostname を指定すれば良いです。単に hostname を返します。
もちろん、root でないとできませんが、host 名を変更することも可能です。
# hostnamectl hostname suse154A
# hostnamectl hostname
suse154A
そのほかに、JSON形式で出力することも可能です。
hostnamectl --json=pretty
{
"Hostname" : "suse154",
"StaticHostname" : "suse154",
"PrettyHostname" : null,
"DefaultHostname" : "localhost",
"HostnameSource" : "static",
"IconName" : "computer-vm",
"Chassis" : "vm",
"Deployment" : null,
"Location" : null,
"KernelName" : "Linux",
"KernelRelease" : "5.14.21-150400.24.33-default",
"KernelVersion" : "#1 SMP PREEMPT_DYNAMIC Fri Nov 4 13:55:06 UTC 2022 (76cfe60)",
"OperatingSystemPrettyName" : "openSUSE Leap 15.4",
"OperatingSystemCPEName" : "cpe:/o:opensuse:leap:15.4",
"OperatingSystemHomeURL" : "https://www.opensuse.org/",
"HardwareVendor" : "QEMU",
"HardwareModel" : "Standard PC _i440FX + PIIX, 1996_",
"ProductUUID" : null
}
JSON 形式で出力する場合、hostname オプションを指定すると、json 機能は無効になってしまうようです。
従来からの hostname コマンドもたぶん残っていくとは思いますが、新しい hostnamectl コマンドも覚えて置いた方が良いかもしれません。
Category
openSUSE,
Tips,
サーバ |
受け付けていません
By ribbon @
2022-12-07 00:42
この記事は openSUSE Advent Calendar 2022 の7日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、loginctl を紹介します。
コマンド名: localectl
パッケージ: systemd-249.12-150400.8.13.1.x86_64
動作: ○
詳細:
loginctl は、systemd の login マネージャからの情報を表示したり設定するためのツールです。表示に関しては、従来の w コマンドや ps コマンド などの機能が含まれています。たとえば、現在ログインしている情報は、下記のように表示されます。
%loginctl
SESSION UID USER SEAT TTY
11 1000 ribbon pts/0
12 1000 ribbon pts/2
13 0 root
6 1000 ribbon seat0 tty2
w コマンドではこのように表示されます。表示する内容がかなり異なります。
%w
20:10:49 up 12:55, 5 users, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ribbon : : 15:20 ?xdm? 2:18 0.07s gdm-session-worker [pam/gdm-password]
ribbon tty2 tty2 15:20 12:55m 0.08s 0.08s /usr/lib/gnome-session-binary
ribbon pts/0 192.168.X.Y 18:17 10:29 0.28s 0.00s less
ribbon pts/2 192.168.X.Y 19:46 1.00s 0.11s 0.01s w
root pts/3 ::1 20:02 7:58 0.09s 0.09s -bash
自分自身のセッション情報は session-status サブコマンドで表示できます。
%loginctl session-status
12 - ribbon (1000)
Since: Sat 2022-12-03 19:46:34 JST; 28min ago
Leader: 7798 (sshd)
TTY: pts/2
Remote: 192.168.X.Y
Service: sshd; type tty; class user
State: active
Unit: session-12.scope
┣ 7798 "sshd: ribbon [priv]" ""
┣ 7800 "sshd: ribbon@pts/2" "" ""
┣ 7801 -bash
┣ 8134 loginctl session-status
┗ 8135 less
さらに、 user-status サブコマンドで、詳細な情報を得ることができます。pstree コマンドにも似た感じです。
%loginctl user-status
ribbon (1000)
Since: Sat 2022-12-03 15:20:50 JST; 5h 8min ago
State: active
Sessions: 12 11 *6
Linger: no
Unit: user-1000.slice
┣session-11.scope
┃┣ 7431 "sshd: ribbon [priv]" ""
┃┣ 7437 "sshd: ribbon@pts/0" "" ""
┃┣ 7438 -bash
┃┣ 7780 man loginctl
┃┗ 7792 less
┣session-12.scope
┃┣ 7798 "sshd: ribbon [priv]" ""
┃┣ 7800 "sshd: ribbon@pts/2" "" ""
┃┣ 7801 -bash
┃┣ 8270 loginctl user-status
┃┗ 8271 less
┣session-6.scope
┃┣ 4748 "gdm-session-worker [pam/gdm-password]"
┃┣ 4778 /usr/bin/gnome-keyring-daemon --daemonize --login
┃┣ 4784 /usr/lib/gdm/gdm-wayland-session /usr/bin/gnome-session
┃┣ 4788 /usr/lib/gnome-session-binary
┃┗ 7997 /usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh
┗user@1000.service
┣app.slice
┃┣app-gnome-YaST2\x2dorg.opensuse.yast.LAN-5394.scope
┃┃┣ 5523 dbus-launch --autolaunch 61ee5253e44f403c9918308e232c84b8 --binary-syntax>
┃┃┗ 5524 /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 --print-address 7>
┃┣app-gnome-gnome\x2dsoftware\x2dservice-5036.scope
┃┃┗ 5036 /usr/bin/gnome-software --gapplication-service
┃┣app-gnome-org.gnome.Evolution\x2dalarm\x2dnotify-5045.scope
┃┃┗ 5045 /usr/lib/evolution-data-server/evolution-data-server/evolution-alarm-noti>
┃┣app-gnome-org.gnome.SettingsDaemon.DiskUtilityNotify-5018.scope
┃┃┗ 5018 /usr/lib/gsd-disk-utility-notify
そのほかに、セッションを強制切断する kill-session サブコマンドがあります。たとえば、ssh でログインしているセッションを強制切断するためには、
1) w コマンドでユーザを調べる
2) そのユーザが使っている sshd プロセスを ps コマンドで調べる
3) kill コマンドでそのプロセスを終了させる。
というステップが必要でしたが、loginctl では、セッション番号を表示させた後、そのセッションを終了するコマンドを入力することで作業が行えますので、手間が減ります。
# loginctl
SESSION UID USER SEAT TTY
11 1000 ribbon pts/0
12 1000 ribbon pts/2
13 0 root
6 1000 ribbon seat0 tty2
4 sessions listed.
# loginctl kill-session 13
# loginctl
SESSION UID USER SEAT TTY
11 1000 ribbon pts/0
12 1000 ribbon pts/2
6 1000 ribbon seat0 tty2
3 sessions listed.
loginctl は、表示形式が見やすいので、w コマンドなどと併用すると便利でしょう。
Category
openSUSE,
Tips,
サーバ,
デスクトップ |
受け付けていません
By ribbon @
2022-12-04 08:12
この記事は openSUSE Advent Calendar 2022 の4日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、busctl を紹介します。
コマンド名: busctl
パッケージ: systemd-249.12-150400.8.13.1.x86_64
動作: ○
詳細:
busctl は、D-Bus の状態を表示させたり、設定を行ったりするためのツールです。取りあえず起動してみると、
NAME PID PROCESS USER CONNECTION UNIT SESSION DESCRIPTION
:1.0 1 systemd root :1.0 init.scope - -
:1.1 632 wickedd-dhcp6 root :1.1 wickedd-dhcp6.service - -
:1.10 705 wickedd-nanny root :1.10 wickedd-nanny.service - -
:1.105 3249 busctl ribbon :1.105 session-4.scope 4 -
:1.13 720 ModemManager root :1.13 ModemManager.service - -
:1.16 1120 gdm root :1.16 display-manager.service - -
:1.17 1128 accounts-daemon root :1.17 accounts-daemon.service - -
:1.2 618 avahi-daemon avahi :1.2 avahi-daemon.service - -
:1.24 1275 power-profiles- root :1.24 power-profiles-daemon.service - -
:1.26 1280 rtkit-daemon root :1.26 rtkit-daemon.service - -
:1.27 1274 upowerd root :1.27 upower.service - -
:1.3 628 wickedd-auto4 root :1.3 wickedd-auto4.service - -
:1.32 1324 wpa_supplicant root :1.32 wpa_supplicant.service - -
:1.4 630 wickedd-dhcp4 root :1.4 wickedd-dhcp4.service - -
:1.45 1437 colord colord :1.45 colord.service - -
のように、現在のバスの一覧が表示されます。とは言っても、D-bus がどういう物で、何をしているかを分かっていないと、この表示の意味も分かりませんね。Wikipedia先生に聞いてみると、
D-Bus(Desktop Bus、ディーバス)は、メッセージバスと呼ばれる、アプリケーション間でやりとりを行うための、プロセス間通信 (IPC) 実装の1つである。
なのだそうです。
Unix系のプロセス間通信としては、パイプ、シグナル、ソケットとかいろいろありました。また、KDE や Gnome も独自のプロセス間通信機能を持っていました。それらの乱立を統一化するために作られたのが D-Bus ということになります。
ただ、D-Bus そのものは、ユーザが直接さわる物ではありません。あくまでもプロセス(プログラム)の世界で使われるものです。そのため、busctl も、D-Bus の動作の確認やデバッグ、テスト用に使われるものと思った方がよいでしょう。
Category
openSUSE,
Tips,
サーバ,
デスクトップ,
未分類 |
受け付けていません
By ribbon @
2022-12-03 00:00
この記事は openSUSE Advent Calendar 2022 の3日目です。
メーカー製のプロダクトの一部には、Windows/Mac だけではなくて Linux 向けの物を用意している場合があります。しかし、たまたま使おうとしたものが、Ubuntu 向けしかありませんでした。
そこで、Ubuntu 向けのバイナリ(dpkg として提供されている物) が openSUSE で動くかどうかを試してみました。
結論から言うと、できます。しかもやり方は難しくありません。
まず、Ubuntu 上で、openSUSE で動かしたいバイナリ(dpkg) をインストールします。この時、どこにインストールされたかを控えておきます。dpkg -deb -c dpkg名 とすれば一覧が表示されます。
次に、インストールされたファイルを全部まとめて openSUSE 側に持って行き、展開します。その後、展開したファイル中にあるターゲットのプログラムを起動すれば動作します。
たとえば、QNAP が提供している、QNAP NAS 一覧を表示したり、ログインしたりするためのツール QFinderPro で試してみましょう。Ubuntu 上では、dpkg の内容は
$ dpkg-deb -c QNAPQfinderProUbuntux64-7.8.2.0928.deb
drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./
drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/
drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/
drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/bin/
drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/bin/QNAP/
drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/
drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/
-rw-rw-r-- qnap/qnap 5587 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/cs.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 6546 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/da.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 5731 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/de.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 13337 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/el.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 5497 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/en.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 5847 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/es.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 6431 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/fi.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 5945 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/fr.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 6025 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/hu.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 5752 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/it.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 6276 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/ja.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 38927 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/ko.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 6498 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/nl.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 6454 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/nn.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 5714 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/pl.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 5700 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/pt.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 5716 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/ro.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 7367 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/ru.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 6516 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/sv.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 8952 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/th.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 5696 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/tr.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 5093 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/zhcn.UEPConsentForm.htm
-rw-rw-r-- qnap/qnap 6582 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/Docs/zhtw.UEPConsentForm.htm
drwxrwxr-x qnap/qnap 0 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/License/
-rw-rw-r-- qnap/qnap 94964 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/License/QfinderThirdPartySoftwareNotices.htm
-rwxrwxr-x qnap/qnap 20314824 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/QfinderPro
-rwxrwxr-x qnap/qnap 274 2022-09-28 18:55 ./usr/local/bin/QNAP/QfinderPro/QfinderPro.sh
(以下略)
となっています。ですので、/usr/local/bin/QNAP 配下やその他を何らかの手段で openSUSE 側に持って行き、展開します。あとは、 /usr/local/bin/QNAP/QfinderPro/QfinderPro.sh を実行すれば、Ubuntu 向けとして提供されているプログラムが openSUSE でも動きます。
Category
openSUSE,
Tips,
デスクトップ |
受け付けていません