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

Ubuntu

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

環境

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

もろもろ所感

インストールメディアの作成

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

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

ソフトウェアアップデート

/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にする

/etc/default/keyboardを変更。

XKBOPTIONS="ctrl:nocaps"

Japanese Teamレポジトリ

https://www.ubuntulinux.jp/japanese

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

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

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

「言語サポート」をチェック

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

fcitx5をインストール。

$ sudo apt install fcitx5-mozc

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

.bashrc, .profileの移植

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

いろいろインストール

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

fcitx 5の設定

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

VirtualBox Guest OSとしての設定

VBox Guest Addition

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なんとかというプロセスが起動していることを確認。たぶん、できているだろう。。

共有フォルダ

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の設定

従来通り。

~/.config/user-dirs.dirs

いつも通り設定。

byobu

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の設定

$ 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

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

設定マネージャ

ウィンドウマネージャ

ウィンドウマネージャ (詳細)

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

外観

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

パネル

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

キーボード

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

リムーバブルデバイスとメディア

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

セッションと起動

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

時計の設定

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

$ sudo systemctl restart systemd-timesyncd.service

GtkのEmacsキーバインド

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

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

Emacs

$ 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が発動しない

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吐いてくる

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

問題点: 範囲選択の背景色が変

上記サイトによると、

The Gtk selection face is no longer used for the 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

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

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

アドオン

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

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

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

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

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

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

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

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

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

Perl

$ 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

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

stylish-haskellをインストール。

$ cabal install stylish-haskell

wild-bind

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をいきなりビルドしてみる。新たにfreezeしてビルド完了。正常に動いている気がする。

kon-board

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

$ 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

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

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

pandoc

$ cabal install pandoc-cli

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

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

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

$ sudo apt install pipx
$ pipx ensurepath

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が使えない

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

RuntimeError: Cannot understand pandocversion=3.6

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

この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が使われない。

これのせいな気がする。

多分だけど、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をサポートできなくなっているようだ。

これはヒドい。。

どうするか。

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

とりあえずpandoc-2とpandoc-3を区別して両方インストールしておくといいかもしれない。ここによると、"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

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

$ sudo apt install rsnapshot

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

docker

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

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

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

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

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

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

Last-modified: 2025-03-06 (木) 14:10:30 (315d)