Kubuntu 19.04/19.10/20.04ことはじめ

# Kubuntu 19.04/19.10の概要
Ubuntu 19.04/19.10と基本的に同じ。デスクトップがKDE。
KDE Plasma Version: 5.15.4 (19.04)/5.16.4 (19.10)

# 良い所
基本的にUbuntuなので、Ubuntuの為に用意されている様々なもの(情報やアプリ)の多くが使える。
例えば、[VS Code](https://code.visualstudio.com/download)や[Mendeley](https://www.mendeley.com/download-desktop/Linux/)は`*.deb`のアプリがあるし、Ubuntu周りの`apt-get`でのインストールの情報は殆ど使える。

デスクトップがKDEなので、これが好きな場合は良い。
使ってみて良かったのは、4Kディスプレイに繋いだ時の拡大率。Gnome(Ubuntu 19.04)では、デスクトップの拡大率が100%の次が200%で大きすぎる。KDEでは2.0倍よりも小さい1.5倍の選択肢があり、自分の環境ではこれが大きさとして最適だった。(Kubuntu 19.10では、1.2倍、1.3倍等、もっと細かい倍率が選べる。)

# 初期設定
## CapsLockをctrlにする
`Input Devices`から`Keyboard`の`Advanced`タブで、`Configure keyboard options`をアクティブにして、`Caps Lock Behavior`のなかの`Caps Lock is also a Ctrl`にチェックを入れる。

## Desktop5, Desktop6へのショートカットでのスイッチ
デフォルトで`Ctrl+Fn`で、n(<5)までのヴァーチャルデスクトップにスイッチできる。n=5, 6についてはデフォルトでは対応していないので、設定の必要がある。

場所は`system setting`の`Shortcuts`、`Global Shortcuts`の`Kwin`の`Switch to Desktop 5`で指定可能。


# `*.deb`のインストール

`dpkg -i *.deb`でもインストールできるが、依存関係を解決してくれる`gdebi`なるアプリがある。[debファイルからインストールする際に依存関係で悩んだら - Qiita](https://qiita.com/yanoshi/items/5faf97012bf7889feccf)



# `dpkg`の使い方

```bash
dpkg -S char # char がマッチするファイルを含んだパッケージを表示する
```

# ライブラリの場所
## apt-getで入れたblas, lapack, fftwの位置
apt-getで入れたblas, lapack, fftwの位置がわからなかったのでメモ。
CentOSやOpenSUSEと違って、`/usr/lib64/`には無い。

```bash
/usr/lib/x86_64_linux-gnu/blas/libblas.a
/usr/lib/x86_64_linux-gnu/lapack/liblapack.a
/usr/lib/x86_64_linux-gnu/libfftw3.a
```

共有ライブラリも同じディレクトリにある。

# トラブルシューティング
## pyenvでデスクトップが立ち上がらなくなるかも
pyenvの設定の途中でqt5の環境を書き換えてしまう事があるので、Kubuntu 19.04でも同じ問題が表れるかも。
解決法の一つ: [OpenSUSE Leap 42.3事始め - Qiita](https://qiita.com/Yasushi-Shinohara/items/e53a55eb925cf6d2f1db#pyenv%E3%81%A7anaconda%E3%82%92%E5%85%A5%E3%82%8C%E3%81%9F%E3%82%89%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E3%81%8C%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%8C%E3%82%89%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F)

## pyenvで入れたanaconda3-5.3.1のpipでGPyが入れられない

あれこれ試みたものの入れられなかった。Ubuntu 16.04でも入れられなかったので何かしら共通する問題がありそう。
anaconda3-4.4.0で試したところpipでGPyが入れられたので、こちらを使っている。

## xtermでターミナルを開くとデスクトップの拡大率を上げているときに小さすぎる
`.bashrc`に

```bash
alias xterm='xterm -fa "Monospace" -fs 9' #フォントの指定と、フォントサイズの指定
```
を記入して、大きなフォントサイズのxtermを呼ぶようにした。指定できるフォントは`fc-list`で表示されるのと、Konsoleの端末セッティングの変更で選べるフォントで調べられる。
前まで使っていて、`alias xterm='xterm -fn 10x20'`だと、フォントもデフォルトのままだし、サイズの調整とかもあんまりフレキシブルにはできない。

## gnuplotのtab補完の挙動が変
tabで補完をすると、bashで行った時と違って、ディレクトリ名を補完してそこでPATHを閉じてしまう。(`"./hoge/hoge.dat"`としたいときに`"./ho`でtab補完を試みると`"./hoge" `となってしまって、`hoge.dat`まで補完してくれない。)
どうも、ライセンスの関係でreadlineライブラリのライセンスの問題らしい：[filename completion in gnuplot does not complete the boundary - Stack Overflow](https://stackoverflow.com/questions/24407886/filename-completion-in-gnuplot-does-not-complete-the-boundary/24408177#24408177)。

自分でビルドして、正しくreadlineを読み込むようにすれば解決できるはず。
ビルドをしなくとも、`rlwrap`を使えば、期待通りのtab補完ができる。

```bash
alias gnuplot="rlwrap -c -a --break-chars "\"\'\"\'"(){}[],#@;|\`"\"\'" gnuplot"
```
でgnuplotを呼び出す際にrlwrapを使うようにaliasを設定しておけば、`gnuplot`で呼び出すことで、適切にtab補完できる挙動をしてくれる。
参考にさせていただいたサイト：[キロスのゲーム日記 gnuplotのタブ補完の挙動の変更](http://kiros255.com/blog-entry-97.html)

## xterm内でemacsを立ち上げるとaltがメタキーとして機能しない

下記の項目を参照して
[Configuring XTerm to Default to Meta Sends Escape](http://frequal.com/linux/XTermMetaSendsEscape.html)
[How to make xterm to send the Alt key to emacs as Meta? - Ask Ubuntu](https://askubuntu.com/questions/442644/how-to-make-xterm-to-send-the-alt-key-to-emacs-as-meta)
[[楽天ブログ] 書いた記事をまとめて取得するスクリプト | びっくりポン - 楽天ブログ](https://plaza.rakuten.co.jp/bikkuripon/diary/200807070000/)
[【Proton.jp】 .Xdfaults と .Xresources の違い](http://www.proton.jp/main/trashbox/dotfiles.html)

```bash
XTerm*metaSendsEscape: true
```
を`~/.Xdefaults`に記載して、`xrdb -merge $HOME/.Xresources`で適用してみたところ、確かにxterm内のemacsでaltがメタキーとして機能するようになったが、ウィンドウ関係の様子が変わってしまった。
次回の再起動時にこの辺の挙動をいくつか実験してみる。
メモ：`xrdb -query`で関連する設定が確認できる。

## Kubuntu 19.10/19.04でdropboxがうまく動かない
ある筐体(NUC8i5BEH)にKubuntu19.10を入れると、OS自体は普通に入るんだけど、Dropboxがうまい事入らない。

インストールはされて、同期も終わる。ただ、ファイル変更に伴うシンクロがうまくいっていないみたい。ファイルを更新後に、適宜snooze⇒resumeをしないと同期をしてくれない。それと、rebootかけると、永遠(誇張)にファイルをシンクロしてくれない。

### 妄想
デーモンがうまく立ち上がっていない説が濃厚？
最初の起動時は、デーモンも立ち上げるコマンドが含まれているけど、それがOS再起動時に立ち上がる設定になっていないから、うまくいっていない って思うと、一応つじつまが合う。

### Kubuntu関係ない説
今入れようとしているDropboxのバージョンの問題かもしれない。
https://www.dropboxforum.com/t5/Files-folders/My-desktop-app-is-showing-that-a-file-is-unsyncable-What-can-I/td-p/401027

### 93.4.273では期待通りに動いているように見えるがそうじゃない(2020/03/23)
バージョン 92.4.382の不具合の可能性を考え、アップデートを待って93.4.273が出るまで待ってインストール。前回までと違う点として、`gdebi`で`dropbox_2020.03.04_amd64.deb`をインストールした。

~~インストール直後は、ファイル更新にsnooze⇒resumeが必要だった。念のためrebootをしたところ、ファイルのシンクロもうまくいき、ファイルのアップロード更新も期待通り随時更新してくれるようになった。
一応、解決。(2020/3/22)~~
起動後しばらくたったら、やはりsnooze⇒resumeしないとアップロード側の同期をしてくれない状況に戻った。(2020/3/23)

同期フォルダを増やしてから問題が再起したので、これかも: [Ubuntu で Dropbox の同期が出来なかったときの対処方法 - Secret Garden(Instrumental)](http://secret-garden.hatenablog.com/entry/2018/01/21/222812)

### `fs.inotify.max_user_watches`の更新で問題解決(2020/03/23)
[Ubuntu で Dropbox の同期が出来なかったときの対処方法 - Secret Garden(Instrumental)](http://secret-garden.hatenablog.com/entry/2018/01/21/222812)にある通り、linuxのdropboxでは、監視するファイルの数が`fs.inotify.max_user_watches`で決まっている。多分linuxのdropboxはこの数字を参照していて、参照ファイル数がこの数字を超えるときちんと同期してくれなくなる(と思うと、上記で述べた ファイル数が少ないときは正常に同期してくれたのに、同期ファイルを増やしたら随時アップロードをしてくれなくなった状況が説明できる)。使っているKubuntu19.10では、`/proc/sys/fs/inotify/max_user_watches`を確認すると、デフォルトでは8192が入っていた。これを以下の手続きで上限の524288まで拡大させる。

設定ファイルに以下を追記

```:/etc/sysctl.conf
fs.inotify.max_user_watches=524288
```
そして、

```bash
sudo sysctl -p
```
で、変更した設定を反映。`/proc/sys/fs/inotify/max_user_watches`をみると、524288が書かれているはず。

これだけだとdropboxの挙動には反映されず、dropboxをいったん停止(snooze/pauseではなくて、quit)して、再度起動することで、ファイルを更新すると随時アップロードしてくれる挙動を示した。めでたし、めでたし。

参考：[UbuntuにVS Code導入と監視ファイル制限の拡張 - Qiita](https://qiita.com/neuwell/items/c827c80673de0d787d41), [lsyncdで上限ファイル数を超えた時の対処策 - UNIX的なアレ](https://wadap.hatenablog.com/entry/20100123/1264211202)

## Kubuntu20.04のxrdpでリモートデスクトップをすると、画面をlockしたときにすさまじい通信が発生する

Kubuntu20.04では(多分Kubuntu 19.04/19.10でも)`sudo apt install xrdp`で簡単にWindows機からremote desktop(RDP)接続が出来る。
こうして(ポートフォワーディングしたりして)ご機嫌で、RDPしていたら、少し目を離している隙にデータの通信量がとんでもない量になっていることに気づき、原因を精査したところ、Kubuntu20.04へのRDP由来であることが分かった。

状況を色々整理したところ、Kubuntu20.04にRDPでネットワーク速度に特に制限を付けずに、最高画質(32bit)で1920x1080で接続しスクリーンをロックすると、デフォルト設定では75 Mbpsで通信を始めた。これは、スクリーンをロックした際に表示される画面を変えると、あるパターンでは30 Mbps程度に下がった。
そこで、スクリーンをロックした際に表示される画面を水色の単色に替えたところ、通信量は0とみなせる程度(< 100 Kbps)まで下がった。

通信量を削減したい場合は、Kubuntu20.04の場合、スクリーンをロックしない設定にするか、ロックした際の画面を単色にすると良い。

## environment modulesが入っているはずなのに、使えない (`module: command not found`)
モジュールのコマンドを入力すると`module: command not found`が出ているのに、`sudo apt install environment-modules`を実行すると、「すでに最新版がインストールされている」と表示される問題。  
moduleは以下のスクリプトを呼び込まないと、使えないのでコンソールなり使いたいスクリプトの中で呼び出す必要がある。

```console
source /etc/profile.d/modules.sh  #sh/bashスクリプト
source /etc/profile.d/modules.csh #csh/tcshスクリプト
```

### ThinkPadの中央ボタンを押してスクロールしようとするとbrowserでペーストがされてしまう
**必ずしもUbuntu/Kubuntu/KDEの問題ではない可能性が高い。**
ThinkPadのキーボードを使っていると、Kubuntuでは、マウス部分の中央ボタンに相当するボタンを押しながらカーソルを動かすとスクロールをしてくれる。しかし、これをいくつかのアプリケーション上で行おうとすると、クリップボードの内容がペーストされる挙動が同時に置き、非常にストレスフルである。特にFirefoxの場合は、これは止められるので、その止め方。

参考URL: https://askubuntu.com/questions/4507/how-do-i-disable-middle-mouse-button-click-paste

アドレスバーに`about:config`を入力して、設定を書き換える。検索で`middlemouse.paste`を見つけて、ダブルクリックで、ここをfalseに変える。特にブラウザを再起動しなくても直後から反映された。

### K3bでisoをDVDに焼こうとするとエラーで止まる
Kubuntu 22.04のisoをダウンロードして、二層DVDに焼こうとしたところ、以下のエラーで停止した。
```
:-( More than 50% of space will be *wasted*!
Fatal Error at Startup: Wrong Medium Type
```

Braseroでも同じ問題が表れてた・
このメッセージで検索すると、どうもDVDstylerをバックエンドに使った際に、ある組み合わせで現れる問題らしい。

[Burning Dual-Layer Disk through K3B / Newbie Corner / Arch Linux Forums](https://bbs.archlinux.org/viewtopic.php?id=64360)によると、他の候補として`xfburn`が挙げられていた。

xfburnを使ってisoをDVDに焼いたものでKubuntu 22.04をインストールしたら、無事完了した。

# インストール草の根活動

```bash
# WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
sudo apt install libbz2-dev
# WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
sudo apt install libreadline-dev
# WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
sudo apt install libsqlite3-dev
```