#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の画面もフルスクリーンになってくれた。