• 差分
  • リロード
  • 一覧
  • 最終更新のRSS

#author("2025-03-03T11:40:11+09:00","","")
#author("2025-03-06T14:10:30+09:00","","")
[[Ubuntu]]

Xubuntu 24.04 Noble Numbat インストールメモ

#contents

* 環境 [#d3dc9145]

- 試験環境
-- VM on VirtualBox (6.1.28 -> 7.0.22) on Windows 11

* もろもろ所感 [#c0534b28]

- Xubuntu 24.04はまだWaylandじゃないらしい。Xorgがバリバリ走ってる。
-- Xubuntu 24.10にはWaylandサポートが導入されているらしい。 https://xubuntu.org/news/xubuntu-24-10-released/

* インストールメディアの作成 [#kbe12471]

USBメモリにISOファイルを書き込む。

 $ sudo dd bs=4M if=xubuntu-24.04.2-desktop-amd64.iso of=/dev/sdb conv=sync,noerror

* ソフトウェアアップデート [#mbe01e18]

/etc/apt/apt.conf.d/90proxy にプロキシの設定を実施。

software-properties-gtk コマンドでGUI設定プログラムを開こうとしたが、起動しない。。
設定メニューのアイコンをクリックしても起動しない。。

よく分からんが、「Software Updater」アプリをまず起動して、そのSettingsボタンを押すと起動する。

とりあえずAPTミラーをJAISTに設定。

パッケージの更新チェックは毎日(Daily)とし、更新があればDisplay immediatelyとした(セキュリティ更新も、それ以外も)。

で、sudo apt update; sudo apt upgrade を実施。

* CapsLockをControlにする [#s263e8a6]

/etc/default/keyboardを変更。

 XKBOPTIONS="ctrl:nocaps"

* Japanese Teamレポジトリ [#w140e560]

https://www.ubuntulinux.jp/japanese

Ubuntu 24.04から、日本語Remixの配布もしなくなったようだ。

Japanese Teamレポジトリで提供されているパッケージも、unzipコマンドの日本語ファイル名文字化け対策くらいだという。

いったんインストールをスキップ。

* 「言語サポート」をチェック [#i93c986d]

インストーラで日本語を選択したはずが、Japanese languageがインストールされていない。。インストールして再起動。

fcitx5をインストール。

 $ sudo apt install fcitx5-mozc

「言語サポート」でIMとしてfcitx5を指定。

* .bashrc, .profileの移植 [#x0e285ca]

これまでの環境から.bashrc, .profileを持ってきて、適宜移植。

* いろいろインストール [#u7e5f9d3]

 $ sudo apt install build-essential git curl lv byobu net-tools fonts-takao

* fcitx 5の設定 [#e09e22f0]

- 邪魔そうなホットキーを削除
- 「クリップボード」アドオンを無効化

* VirtualBox Guest OSとしての設定 [#l891935c]

** VBox Guest Addition [#f878b197]

Guest Addition CDイメージをダウンロードして、マウントして、VBoxLinuxAdditions.runを実行。

・・・エラーが出た。stddef.hがないという。でもlocate stddef.hで見つかるんだけどな。

VirtualBoxのバージョンが低いせいだろうか? 上げてみるか。 VirtualBox 7.0.22にアップデート。

アップデートしたあと、VMを起動。Guest Addition CD imageを挿入したら、"Your system is currently running old guest additions"といった感じのメッセージがVM内で出た。

エラーが出ていたような気がしていたが、実はインストールできていた・・・?

VirtualBox側のメニューから「Guest additionsのアップグレード」を選択。再起動して、/usr/bin/VBoxなんとかというプロセスが起動していることを確認。たぶん、できているだろう。。

** 共有フォルダ [#s0d99de5]

VM内でディレクトリ /mnt/share を作成。/etc/fstabに以下の記述を追加。

 share /mnt/share vboxsf defaults,noauto 0 0

VirtualBox側の設定で、"share"という共有フォルダを作成し、/mnt/shareにマウントすると設定した。

・・・共有フォルダ設定を入れるとなぜかVMが起動しない。。Xubuntuの起動シーケンス中にフリーズしている感じ。

Guest additionsのインストールに不備がある? Guest additions CD imageを再度挿入して、インストールスクリプトを改めて実行した。

その後再起動して、共有フォルダ設定を入れた。普通に起動して、共有フォルダをマウントできた。

* mozcの設定 [#l11b4d9a]

従来通り。

- スペースの入力 半角
- テンキーからの入力 直接入力
- サジェストは無効
- キーマップは https://github.com/debug-ito/debug-ito-mozc

* ~/.config/user-dirs.dirs [#o4db9189]

いつも通り設定。

* byobu [#s7b952a5]

byobuを初回起動後、プロンプトを普通にする。

 $ byobu-disable-prompt

エスケープシーケンスをCtrl-zに変更。C-aの挙動は"Emacs mode"で。

$HOME/.config/byobu/.tmux.confを以下の内容に設定。

 bind-key -T prefix 2    split-window -v
 bind-key -T prefix 3    split-window -h
 bind-key -T prefix "C-^"  resize-pane -U 5
 bind-key -T prefix "M-^"  resize-pane -D 5
 bind-key -T prefix "C-]"  resize-pane -R 5
 bind-key -T prefix "M-]"  resize-pane -L 5
 bind-key -T prefix "+"    select-layout even-vertical
 bind-key -T prefix "*"    select-layout even-horizontal

なお、.tmux.confの内容はF5を押すことでbyobuにリロードさせることができる。

* Gitの設定 [#h0eb7bff]

 $ git config --global user.name "Toshio Ito"
 $ git config --global user.email (Email address)
 $ git config --global pager.branch false
 $ git config --global pager.tag false
 $ git config --global init.defaultBranch main

* Xfce4 Terminal [#v71c1bd8]

適宜設定。GUIの設定メニューをいじればたいていOK。

* 設定マネージャ [#t7ce73d0]

** ウィンドウマネージャ [#fc6eaad5]

- フォントは Sans regular
- テーマは https://github.com/debug-ito/Gtk-Mejiro

** ウィンドウマネージャ (詳細) [#tf2bf6d4]

- コンポジット処理
-- 「ウィンドウの循環中アイコンとともにウィンドウのプレビューを表示する」ON
-- 「影を落とす」はOFF

** 外観 [#i473962d]

- テーマはGtk-Mejiro
- アイコンはElementary Xfce
- フォントは Sans (システムフォント)
- ヒンティングはなし

** パネル [#p07456c0]

- モード: デスクバー
- 左寄せ
- 行数: 2
- 背景なし (システムスタイル)
- 不透明度 100%
- CPUグラフを追加
- 時計の表示方式は %H:%M%n(%a)%n%m/%d

** キーボード [#m624e15b]

- ショートカット
-- emacs: Super+E
-- xfce4-terminal -x byobu: Super+B

** リムーバブルデバイスとメディア [#d53f6818]

自動マウントや自動再生はなし

** セッションと起動 [#ie82b7b3]

- 自動開始アプリケーション
-- blueman-appletをOFF
- 詳細
--「起動時にGNOMEサービスを起動する」をOFF

* 時計の設定 [#cb8e32ae]

/etc/systemd/timesyncd.conf にNTPサーバの情報を書き、timesyncdを再起動。

 $ sudo systemctl restart systemd-timesyncd.service

* GtkのEmacsキーバインド [#sd42f8cb]

https://github.com/debug-ito/GtkEmacs-debug-ito

READMEに従って設定したが、いったん ~/.config/gtk-3.0/settings.ini の設定は見送ってみた。


* Emacs [#z6ebf0a9]

 $ sudo apt install emacs

なぜかpostfixもインストールされた。。

 $ sudo apt install emacs-goodies-el elpa-magit emacs-mozc

.emacsほかの設定は https://github.com/debug-ito/debug-ito-emacs-env から。

MELPA(https://stable.melpa.org/packages/ )から以下のパッケージをインストール。

- yasnippet-0.14.1
- yaml-mode-0.0.16
- go-mode-1.6.0
- haskell-mode-17.5

cperl-modeはEmacsにバンドルされているやつを使ってみる。

** 問題点: cperl-modeでyasnippetが発動しない [#o51b34c4]

TABキー押してもyasnippetが展開されない。一方で、C-iなら展開される。

local-set-keyで<tab>にバインドしていたのが原因だったようだ。 https://github.com/debug-ito/debug-ito-emacs-env/blob/cf9412698e756e1082c3b9123e9d24f5b76933de/dot.emacs.el#L217

そもそもこれ、何のためにバインドしていたんだっけ・・・? 消してよさそう。

** 問題点: magitがめっちゃwarning吐いてくる [#u98d87d1]

最初の実行時だけかも。コンパイル時のwarningか?

** 問題点: 範囲選択の背景色が変 [#m5029421]

- https://www.masteringemacs.org/article/whats-new-in-emacs-29-1

上記サイトによると、

> The Gtk selection face is no longer used for the region.

という変更が入ったっぽい。

- https://janert.me/blog/2024/better-highlighting-for-the-emacs-region/

M-x describe-face region を実行すると、以下のようになっていた。

 Foreground: gtk_selection_fg_color
 Background: lightgoldenrod2

これにより、黄色地に白文字という非常に見にくい設定になっていた。

ていうか、foreground設定は自分の.emacs.elでカスタムしたものだった。。

GUIモードで動作する際に以下の設定を両方入れることで解決。

 (set-face-attribute 'region nil :foreground "gtk_selection_fg_color")
 (set-face-attribute 'region nil :background "gtk_selection_bg_color")


* Vivaldi [#xc7f19e6]

公式サイト https://vivaldi.com/ からDEBパッケージをダウンロードしてインストール。

ブックマークをエクスポートしておくことを忘れずに。。

** アドオン [#va7f5c90]

- NoScript https://chromewebstore.google.com/detail/noscript/doojmbjmlfjjnbmnoijecmcbfeoakpjm?hl=ja
-- ScriptSafeを使っていたが、Chromeストアで「Chrome 拡張機能のベスト プラクティスに沿わないため、まもなくサポートされなくなる可能性があります」という警告が出ていた。開発も止まっているような感じ。
-- 一方で、Firefox時代に使っていたNoScriptがいつの間にかChromeでも動くようになっていたので、こちらを使ってみる。
- Format Link https://chrome.google.com/webstore/detail/format-link/pocemhmkmchpgamlnocemnbhlcjcbjgg
- Set Character Encoding https://chrome.google.com/webstore/detail/set-character-encoding/bpojelgakakmcfmjfilgdlmhefphglae
- Print Edit WE https://chrome.google.com/webstore/detail/print-edit-we/olnblpmehglpcallpnbgmikjblmkopia?hl=ja
- Proxy Switcher and Manager https://chrome.google.com/webstore/detail/proxy-switcher-and-manage/onnfghpihccifgojkpnnncpagjcdbjod/related

** 問題点: 会社のプロキシを経由したHTTPSアクセスで、サーバ証明書エラー [#f9cb9348]

一部のWebサイトについて、会社のプロキシを経由するとサーバ証明書の検証に失敗してエラーになった。

会社プロキシが指定するroot CA証明書を信頼しないといけない。update-ca-certificateコマンドでローカルシステムには証明書をインポートしたが、Vivaldiは独自に設定しないといけないっぽい。

アドレスバーに chrome://settings/certificates と打ち込み、証明書をインポートして問題を解消。

** 問題点: Vivaldiを起動すると「xdg-openを開きますか?」というダイアログが出る [#f178f586]

どうやら「vivaldi://startpage」というURLを開こうとしているらしい。

- https://forum.vivaldi.net/topic/81283/open-xdg-open

「設定」「一般」において、

- 「起動時に開くページ」を「ホームページ」から「スタートページ」に。
- 「ホームページ」は「スタートページ」のまま。

に設定することで問題解消。どうも起動時にホームページとしてスタートページを読み込もうとすると問題が発生するっぽい。「起動時に開くページ」を最初からスタートページにしておけばよさそう。

* Perl [#g05ef08f]

 $ sudo apt install cpanminus perl-doc

環境変数の設定。

 export PATH="$HOME/perl5/bin:$PATH"
 export PERL5LIB="$HOME/perl5/lib/perl5:$PERL5LIB"
 export PERL_CPANM_OPT="-l $HOME/perl5"

cpanmをアップデート。

 $ cpanm App::cpanminus

EVとBusyBirdをインストールしてみる。

 $ cpanm EV BusyBird

問題なくインストールできた。

ツール類をインストール。

 $ cpanm Daiku App::Ack


* Haskell [#cc2540cb]

https://www.haskell.org/ghcup/ からghcupをインストール。デフォルトでghc-9.4.8がインストールされた。

stylish-haskellをインストール。

 $ cabal install stylish-haskell

** wild-bind [#r0133c48]

[[wild-bind:https://github.com/debug-ito/wild-bind]]のビルドを試みる。

pre-requisiteとして以下を実行したが、

 $ sudo apt-get install libx11-dev libxss-dev libgirepository1.0-dev libwebkit2gtk-4.0-dev libgtksourceview-3.0-dev

libwebkit2gtk-4.0-devパッケージがない。4.1ならあるようだ。

 $ sudo apt-get install libx11-dev libxss-dev libgirepository1.0-dev libwebkit2gtk-4.1-dev libgtksourceview-3.0-dev

ghc-9.2.5でビルド実行。

zlibパッケージのダウンロードでエラー。これ、以前からよくあるんだけど、多分会社のプロキシが原因。なんかおかしなフィルタ設定が入っているのか? とりあえずVPN外に出てビルド実行。

gi-cairo-1.0.27, gi-glib-2.0.27のビルドでエラー。両方ともこんなエラー。

 Parse error: Error when parsing "record [Error] / function [domain_register] / parameters / parameter [error_type_init]": Unknown scope type "forever" 

これか https://github.com/haskell-gi/haskell-gi/issues/439

freezeしているhaskell-gi関係のパッケージバージョンが低いせいかもしれない。re-freezeが必要。

どうせre-freezeするので、[[wild-bind-debugito:https://github.com/debug-ito/wild-bind-debugito]]をいきなりビルドしてみる。新たにfreezeしてビルド完了。正常に動いている気がする。

** kon-board [#zc1111bd]

[[kon-board:https://github.com/debug-ito/kon-board]]のビルドを試みる。ghcupでghc-8.8.4をインストール。

cabal build allでビルドできた。

ついでにElm-0.19.1 compilerをインストールして、frontendのビルドにも成功。

Elmコードのテストにはnpxコマンドが必要だった。これをインストールするためにnpmをインストール。

 $ sudo apt install npm

本当はこのあとさらにnpmのバージョン管理ツール("n"とか)を入れてnpmを最新にしたりするのがいいんだろうけど、いったんこのままでいいや・・・

npxコマンドを使えるようにして、make testを実行。PASSした。

* LaTeX [#l57e0cca]

 $ sudo apt install texlive texlive-lang-japanese texlive-fonts-extra texlive-science

EPS関連ツールもインストール。

 $ sudo apt install psutils ps2eps

gnuplotをインストール。

 $ sudo apt install gnuplot-qt

これで論文のビルドができることを確認。

* KeePassXC [#wa71d432]

これまでパスワードマネージャとしてKeePassXを使っていたが、開発終了しているとのことで、後継のKeePassXCに移行する。

特に問題なく、これまで使っていたデータベースファイルを開けているようだ。

* pandoc [#e92db1b7]

 $ cabal install pandoc-cli

"pandoc" packageはlibraryしか含まないので、executableをインストールするには"pandoc-cli"が必要らしい。

追加のフィルタもインストール。

- https://github.com/tomduck/pandoc-fignos
- https://github.com/tomduck/pandoc-tablenos
- https://github.com/pandocker/pandoc-docx-pagebreak-py

これらはPythonパッケージなので、pipxコマンドでインストールする。

 $ sudo apt install pipx
 $ pipx ensurepath

[[pipx:https://github.com/pypa/pipx]]はアプリケーションごとに独立したPython環境を作ってくれるらしい。(pipコマンドでインストールしようとしたらエラーになった)

 $ pipx install pandoc-fignos
 $ pipx install pandoc-tablenos
 $ pipx install git+https://github.com/pandocker/pandoc-docx-pagebreak-py

** 問題点: pandoc-fignos, pandoc-tablenosが使えない [#vfef1432]

これでドキュメントをビルドしようとしたらfignosが以下のエラーを吐いた。

 RuntimeError: Cannot understand pandocversion=3.6

pandocのバージョンが高すぎる・・・? pandocxnosのコードを見たところ、pandoc-2系までしかサポートしていないようだ。

- https://github.com/tomduck/pandoc-xnos/issues/28

このissue, だいぶ前から指摘されていて、バージョンチェックを緩めるp-rが複数来ているにも関わらず、作者の方が一向に対応していないようだ。
ていうか、issueやp-rに応答すらしていない。大丈夫か?

バージョンチェックを緩めたforkをインストールして使う、という手はあるようだが。それ、pipxでどうやればいいんだろ?

とりあえずいったんfignosとtablenosをアンインストール。

 $ pipx uninstall pandoc-fignos 
 $ pipx uninstall pandoc-tablenos

pandoc-xnosのfork( https://github.com/TimothyElder/pandoc-xnos )でpandocのバージョンフィルタが3.x系を許容するように修正されているとのことなので、こいつを入れてみる。

 $ pipx install --preinstall git+https://github.com/TimothyElder/pandoc-xnos pandoc-fignos
 $ pipx install --preinstall git+https://github.com/TimothyElder/pandoc-xnos pandoc-tablenos

これでpandocを試したが、同じエラーが継続。インストールされたpandocxnosのコードを見たところ、forkのpandoc-xnosが使われていない感じ。なんで??

さらにinjectを試してみる。

 $ pipx inject pandoc-fignos git+https://github.com/TimothyElder/pandoc-xnos
 $ pipx inject pandoc-tablenos git+https://github.com/TimothyElder/pandoc-xnos

これでも同じエラーが継続。

もう一度アンインストール。

 $ pipx uninstall pandoc-fignos 
 $ pipx uninstall pandoc-tablenos

これでvenvからはpandoc-fignosやxnosが完全に消えていることを確認。

以下のようにいろいろ試したが、

 $ pipx install -v --preinstall git+https://github.com/TimothyElder/pandoc-xnos pandoc-fignos
 $ pipx inject -v -f pandoc-fignos git+https://github.com/TimothyElder/pandoc-xnos
 $ pipx inject -v --include-apps pandoc-fignos git+https://github.com/TimothyElder/pandoc-xnos

どうもfork versionが使われない。

これのせいな気がする。

- [[Injecting VCS URL of package that is already installed does not install proper version · Issue #1545 · pypa/pipx · GitHub:https://github.com/serious-scaffold/ss-python/]]

多分だけど、pandoc-fignosをインストールする時点でoriginalのxnosがインストールされるんだけど、その後forkをインストールするときにforkのバージョンがoriginalと同じなのでインストールがスキップされてしまう、ということだろう。

"--preinstall"オプションを使う場合、まずxnosのforkがインストールされているようだが、その後fignosをインストールする際にご丁寧にpip install --upgrade pandoc-xnosを実行している。このせいでforkがoriginalに上書きされてしまっている気がする。

というわけで、workaroundとしては上記issueにあるように、

 $ pipx install pandoc-fignos
 $ pipx runpip pandoc-fignos install git+https://github.com/TimothyElder/pandoc-xnos --force-reinstall

とすればOK. tablenosについても同様。

これでpandocでドキュメントのビルドはできるようになったが、figureについてうまく動かない。

- (docxへ変換の場合) 図のキャプションにラベル(「図1」などのやつ)がつかない。
- 図への参照の解決に失敗し、「pandoc-fignos: Bad reference: @fig:xxxx」といった警告が出る。

どうやらそもそもpandoc-fignosは本当にpandoc-3.xをサポートできなくなっているようだ。

- [["Bad reference" - syntax doesn't work on recent pandoc releases · Issue #107 · tomduck/pandoc-fignos · GitHub:https://github.com/tomduck/pandoc-fignos/issues/107]]

これはヒドい。。

どうするか。

- pandocのバージョンを2.x系列に下げる。
- [[pandoc-crossref:https://hackage.haskell.org/package/pandoc-crossref]]に乗り換える。
-- こちらはHaskellで書かれているし、pandoc-3をサポートしている感じ。
-- ただ、Markdownソースファイルの形式はfignos, tablenosと互換性がないし、docxへの変換がうまく動くかどうかは未検証。

とりあえずpandoc-2とpandoc-3を区別して両方インストールしておくといいかもしれない。[[ここ:https://zenn.dev/mod_poppo/articles/haskell-setup-2023]]によると、"cabal install --program-suffix=-1.19 --constraint="happy==1.19.*" happy"といった感じで特定バージョンのインストールができそう。

pandoc-3とpandoc-2をそれぞれインストールする。

まずインストール済みのpandoc executableを削除。

 $ rm ~/.cabal/bin/pandoc

pandoc-3.6をインストール。

 $ cabal install --program-suffix=-3.6 --constraint="pandoc-cli==3.6" pandoc-cli

前回のビルドプランをちゃんと覚えていたようで、ビルドなしで完了。素晴らしい。

次はpandoc-2.19.2をインストール。

 $ cabal install --program-suffix=-2.19.2 --constraint="pandoc==2.19.2" pandoc

で、~/binにpandocコマンドのsymlinkを張っておく。

 $ ln -s ~/.cabal/bin/pandoc-2.19.2 ~/bin/pandoc

pandoc-fignos, tablenosは小細工抜きでインストール。

 $ pipx install pandoc-fignos
 $ pipx install pandoc-tablenos

これで既存のドキュメントはpandoc-2.19.2を使うことになり、無事ビルドできるようになった。やれやれ。

新しくドキュメントを作るときはpandoc-3とpandoc-crossrefを試してみてもいいかもしれない。

* rsnapshot [#e45ba54f]

とりあえずインストール。

 $ sudo apt install rsnapshot

まあ、そんなに変化があるようには見えない。

* docker [#d4f5105d]

https://docs.docker.com/engine/install/ubuntu/ に従ってインストール。

https://docs.docker.com/engine/daemon/proxy/#systemd-unit-file に従ってプロキシを設定。

通常アカウントでdockerを使えるようにする。

 $ sudo usermod -a -G docker t-ito

* Dropbox [#l51b0063]

https://linux.dropbox.com/packages/dropbox.py をダウンロードして、dropbox.py start -i を実行。WebブラウザでDropboxにログインして、同期完了。

* 問題点: VirtualBoxのフルスクリーンモードでVMを起動しても、VMのディスプレイ設定がフルスクリーンにならない [#p9b231ab]

起動時にフルスクリーンモードにしているが、VMはフルスクリーンよりも小さいディスプレイ設定になっている。
ログイン後、いったんフルスクリーンを解除して、改めてフルスクリーンにすると、VMのディスプレイ設定もそれにあわせて変更される。

VMをフルスクリーンにあわせた状態で、「ディスプレイ」設定を開き、その状態で「適用」ボタンを押してみた。

これがよかったのか、次回起動時はログイン後にVMの画面もフルスクリーンになってくれた。