Ubuntu Tips

本稿は Ubuntu 関連の設定やトラブルシューティング等を雑多にまとめた備忘録であるため、対象読者等は特に想定しておりません



リポジトリ関連

add-apt-repositoryで追加したリポジトリは /etc/apt/sources.list.d/ 配下に置いてあるため、削除する場合は直接ファイルを削除することになります

# 確認
$ ls -l /etc/apt/sources.list.d

# リポジトリを削除
## hoge-repository を削除する場合
$ sudo rm /etc/apt/source.list.d/hoge-repository.list
$ sudo rm /etc/apt/source.list.d/hoge-repository.list.save

# パッケージアップデート
$ sudo apt update && sudo apt upgrade -y

dpkgで設定エラーが発生する場合

エラーが発生しているパッケージを一旦 /var/lib/dpkg/info/ から削除する必要があります

# 例として docker-ce パッケージがエラーを起こしている場合

# /var/lib/dpkg/info/ ディレクトリに移動
$ cd /var/lib/dpkg/info

# docker-ce を含むパッケージを列挙して削除
$ ls -a . | grep docker-ce | sudo xargs rm -Rf

# 自動削除実行
$ sudo apt -y autoremove

# アップデート実行
$ sudo apt update && sudo apt upgrade -y

ここまで終わったら、もう一度パッケージのインストールを試みると上手くいく場合があります


デスクトップ環境設定

デスクトップ環境設定は gsettings コマンドで行います

現在の設定一覧を表示

$ for s in $(gsettings list-schemas); do gsettings list-recursively $s; done

ショートカット(デスクトップエントリ)設定

Ubuntu においては *.desktop ファイルがショートカットファイル(デスクトップエントリファイル)となります

デスクトップエントリファイルは、基本的に以下のような内容で記述します

[Desktop Entry]
Type=Application                          # Application | Link | Directory
Version=1.0                               # ファイルが準拠しているデスクトップエントリ仕様のバージョン(省略可)
Name=jMemorize                            # ショートカット名
Comment=Flash card based learning tool    # コメントはツールチップとして表示される(省略可)
Path=/opt/jmemorise                       # 実行ファイルが存在するフォルダのパス or リンク先パス(Application Type では省略可)
Exec=jmemorize                            # 実行コマンド(Link, Directory Type では不要)
Icon=jmemorize                            # エントリを表示するときに使われるアイコンの名前(省略可)
Terminal=false                            # ターミナルを開くかどうか(省略可)
Categories=Education;Languages;Java;      # エントリを表示するカテゴリを記述(省略可)

アプリケーションメニューに表示するショートカット

~/.local/share/applications/ にデスクトップエントリを置けば、アプリケーションメニューに表示されます

なお、ユーザ設定ではなくシステム設定にしたい場合は /usr/share/applications/ に置きましょう

スタートアップ登録

~/.config/autostart/ にデスクトップエントリを置けば、スタートアップに登録されます

GNOME系列など XDG 互換のデスクトップ環境であれば /etc/xdg/autostart/ に置いたデスクトップエントリもスタートアップ実行されます


ターミナルでパスワード・フィードバックを得る

ターミナルでパスワードを打つ時、カーソルが動かないため、打っているのかどうか分からないことが(特にLinux初心者には)あります

そういった場合は *** などと表示するように設定すると良いです

# /etc/sudoers を編集
$ sudo visudo
### <diff>
# ...(略)...
Defaults  env_reset
Defaults  pwfeedback # <= pwfeedback を追加
Defaults  mail_badpass
# ...(略)...
### </diff>

起動が遅すぎるとき

起動時のサービス分析

# 何に時間がかかっているのかざっと見る
$ systemd-analyze

# 詳細分析
$ systemd-analyze blame

apt-daily-upgrade.service などに時間がかかっている場合

アップデートがないか検索するのに時間がかかっているため、自動アップデートを無効化するために以下のファイルを変更します

/etc/apt/apt.conf.d/20auto-upgrades
- APT::Periodic::Update-Package-Lists "1";
- APT::Periodic::Unattended-Upgrade "1";
+ APT::Periodic::Update-Package-Lists "0";
+ APT::Periodic::Unattended-Upgrade "0";

plymouth-quit-wait.service に時間がかかっている場合

plymouthは起動の進捗状況をプログレスバー等で表示するパッケージで、無効化したところで問題にはならないため無効化します

以下のファイルを変更します

/etc/default/grub
- GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
+ GRUB_CMDLINE_LINUX_DEFAULT="noplymouth video=SVIDEO-1:d"

その後、以下のコマンドを実行します

# grubログインマネージャーに変更を反映
$ sudo update-grub

# サービス自体も無効化
$ sudo systemctl disable plymouth-quit-wait.service

キーボードマッピングを変更したいとき

  • xev コマンド
    • キー情報を調べるためのコマンド
    • xev のウィンドウがアクティブな状態でキーを打つと、その情報がコンソールに表示される
  • xmodmap コマンド
    • キーボードマッピングを取得・変更するコマンド
    • xmodmap -pke で現在のマッピングを確認できる
    • キーボードのバインディングを変更する場合は以下のコマンドで行う

      # キーコード: 物理的なキーコード
      # Key: バインディングするキーのシンボル
      # Shift+Key 以降: 修飾キーありの場合にバインディングするキーのシンボル(省略可)
      $ xmodmap -e 'keycode <キーコード> = <Key> <Shift+Key> <mode_switch+Key> <mode_switch+Shift+Key> <AltGr+Key> <AltGr+Shift+Key>'

例: InsertキーとEndキーを交換する場合

# `xev` もしくは `xmodmap -pke` で各キーコードを調べる
# -> Endキー: 115, Insertキー: 118

# EndキーをInsertキーに割り当て
$ xmodmap -e 'keycode 115 = Insert NoSymbol Insert'

# InsertキーをEndキーに割り当て
$ xmodmap -e 'keycode 118 = End NoSymbol End'

# ログイン時に自動的にキーマップを変更したい場合は ~/.bash_profile に設定を記述する
$ tee -a ~/.bash_profile << EOS
xmodmap -e 'keycode 115 = Insert NoSymbol Insert'
xmodmap -e 'keycode 118 = End NoSymbol End'
EOS

# シェル再起動
$ exec $SHELL -l

ログイン出来なくなった時

  • Ctrl + Alt + F1でコンソールログイン可能
  • lighdmでログイン出来ない場合は、gdmをインストールしてみる
    • ディスプレイマネージャ(ログイン画面)は以下のコマンドで変更可能

      $ sudo dpkg-reconfigure ディスプレイマネージャ名

Ctrl + Alt + F1 の コンソールで文字化けする場合

$ vi ~/.bashrc
### <diff>
# 以下の行を追加
case $TERM in
    linux) LANG=C ;;
esac
### </diff>

Ubuntu デスクトップ環境の変更

Ubuntu 18.04 デフォルトのデスクトップ環境は GNOME ですが、GNOMEデスクトップ環境は比較的メモリ消費量が多いです

主なデスクトップ環境のメモリ使用量は以下の通りです(※メモリ使用量は目安)

デスクトップ環境 メモリ使用量 特徴 ツールキット ウィンドウマネージャ ファイルマネージャ
GNOME3 728 MiB 洗練, 機能性 GTK+ 3 Mutter Nautilus
Cinnamon 540 MiB リッチ, スリム GTK+ 3 Muffin Nemo
KDE Plasma 500 MiB 派手, ギミック Qt5 KWin Dolphin
MATE 354 MiB シンプル, 機能美 GTK+ 3 Marco Caja
Xfce 325 MiB 堅実, 軽量 GTK+ 2 / 3 Xfwm Thunar
LXDE (GTK+ 3) 274 MiB 最小限, 軽量 GTK+ 3 Openbox PCManFM

Mate環境への変更

# install Mate Desktop
$ sudo apt install -y ubuntu-mate-desktop
### <tui>
check for a default display manager.

  1. gdm3  2. lightdm

Default display manager: # <= lightdm を選択
### </tui>

# Mate + Marco Window Manager 環境では Ctrl + Alt + T でターミナル起動ができないため、ショートカットキー設定
$ gsettings set org.mate.Marco.global-keybindings run-command-terminal '<Control><Alt>t'

# LibreOffice不要なら削除
$ sudo apt remove -y libreoffice*
$ sudo apt autoremove -y

# 再起動
$ sudo reboot

元に戻す場合

# uninstall Mate Desktop
$ sudo apt remove -y ubuntu-mate-desktop mate-* ubuntu-mate-* \
       plymouth-theme-ubuntu-mate-* lightdm
$ sudo apt autoremove -y

# gdm3 (GNOME3) に戻す
$ sudo apt install --reinstall -y gdm3
$ sudo reboot

ターミナルエミュレータをTerminatorに変更

# install terminator
$ sudo apt install terminator

# デフォルトターミナルを terminator に変更
$ gsettings set org.mate.applications-terminal exec terminator

FileManagerをnemoに変更

MateではなくGNOMEデスクトップ環境で設定する場合は org.gnome.*** の gsettings に対して設定を行います

# install nemo
$ sudo apt install -y nemo

# デフォルトFileManagerを nemo に変更
$ xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search
## Mate.FileManager => nemo
$ gsettings set org.mate.session.required-components filemanager nemo
## Mate.ShowDesktopIcons => false (デスクトップアイコンは nemo の機能を使う)
$ gsettings set org.mate.background show-desktop-icons false
## nemo-desktop をスタートアップ起動(xdg-autostart登録)
$ sudo tee /etc/xdg/autostart/nemo-desktop.desktop <<EOF
[Desktop Entry]
Type=Application
Exec=nemo-desktop
Hidden=false
NoDisplay=false
Name=Nemo Desktop
EOF

# nemo のデフォルトターミナルを terminator に変更
$ gsettings set org.cinnamon.desktop.default-applications.terminal exec terminator

# nautilus(GNOME Ubuntu FileManager), caja(MATE Ubuntu FileManager)削除
$ sudo apt remove -y nautilus caja
$ sudo apt autoremove -y

nemoでカスタムアクション設定

nemoにカスタムアクションを登録する場合は ~/.local/share/nemo/actions/ or ~/usr/share/nemo/actions/***.nemo_action ファイルを作成します

基本的な書き方は以下の通りです

[Nemo Action]
# *** 必須項目 ***
Name=メニューに表示する名前

## 実行コマンドに使える snipet
### %U - insert URI list of selection
### %F - insert path list of selection
### %P - insert path of parent (current) directory
### %f or %N (deprecated) - insert display name of first selected file
### %p - insert display name of parent directory
### %D - insert device path of file
Exec=実行コマンド

## どのようなファイル選択時にメニュー表示するか
Selection=[s]ingle | [m]ultiple | any | notnone | none

# *** EITHER REQUIRED ***
# Extensions か Mimetypes を設定
Extensions=dir; # 拡張子: `;`で複数指定可能 | dir, none, nodir, any, 拡張子名
#Mimetypes=text/plain;

# *** OPTIONAL ***
Comment=ツールチップに表示される項目
Icon-Name=folder # 現在のデスクトップテーマで使えるアイコン名を指定: /usr/share/icons/<Theme>/***
Terminal=false # ターミナル表示するか

## その他項目は /usr/share/nemo/actions/sample.nemo_action を参照
例: VSCode登録
# 「open in code」メニュー
$ tee ~/.local/share/nemo/actions/open_in_code.nemo_action <<EOS
[Nemo Action]
Name=Open in Code
Exec=/usr/bin/code %P
Selection=none
Extensions=dir;
Comment=Open in Visual Studio Code editor.
Terminal=false
EOS

# 「open with code」メニュー
$ tee ~/.local/share/nemo/actions/open_with_code.nemo_action <<EOS
[Nemo Action]
Name=Open with Code
Exec=/usr/bin/code %P/%f
Selection=single
Extensions=any;
Comment=Open with Visual Studio Code editor.
Terminal=false
EOS

カーネルモジュールのエラーについて

カーネルアップデート後、何らかのモジュールをビルドしようとした際 make[1]: *** /lib/modules/X.X.X-XXX-generic/build 系のエラーが出る場合があります

これは、現在のカーネルバージョンに対応する linux-headers がないために発生します

  • 参考: https://webnetforce.net/cannnot-use-make/

    # 現在のカーネルバージョンに対応する linux-headers をインストール
    $ sudo apt-get install linux-headers-$(uname -r)
    
    # シンボリックリンクを貼る
    $ sudo ln -s /usr/src/linux-headers-$(uname -r)/ /lib/modules/$(uname -r)/build
Avatar
Ameno Yoya
Webプログラマ

経験はログに残して初めて資産となる

comments powered by Disqus

関連項目