Déjà Dup Backups
Déjà Dup Backups
デスクトップ版に最初から入っているバックアップソフト。
そのままだとバージョンが低いので、snap 版に入れ替えて使っていたのですが、
snap 版のサポートが今後ないかもということなので、Flatpak 版を入れていきます。
Flatpak インストール
まずは Flatpak を入れます。
Flatpak.org から Ubuntu Quick Setup
sudo apt install flatpak sudo apt update sudo apt upgrade sudo apt install gnome-software-plugin-flatpak flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo shutdown -r now
インストールしてアップデートしてプラグインいれてリポジトリ追加してシステム再起動です。
Déjà Dup Backups インストール
Flatpak 版の Déjà Dup Backups を入れていきます。
そのまえに現在の snap 版の設定を確認してみます。
先程の Snap より。
dconf dump /org/gnome/deja-dup/
これから snap 版をアンインストールしますが、確認した設定は残ります。
その設定を Flatpak 版に移行後、Déjà Dup Backups をインストールして起動します。
sudo snap remove deja-dup mkdir -p ~/.var/app/org.gnome.DejaDup/config/glib-2.0/settings dconf dump /org/gnome/deja-dup/ | sed ';s|^\[|[org/gnome/deja-dup/|;s|deja-dup//]|deja-dup]|' > ~/.var/app/org.gnome.DejaDup/config/glib-2.0/settings/keyfile flatpak install flathub org.gnome.DejaDup flatpak run org.gnome.DejaDup
了
grep
grep
global regular expression print の略。
直訳すると全体正規表現(regular expression)出力とかになる?
よく | で橋渡しされて検索などで使われる。
正規表現
特殊文字(メタ文字)を使って文字列をパターンとして指定できる機能。
標準規格がない。
Linux は POSIX にて正規表現の標準規格が定められている。
基本正規表現と、拡張正規表現の2種類。
拡張正規表現を使うには、
grep -E egrep
どちらかを使う。
代表的なメタ文字と使用例
| 記号 | 意味 | 使用例 | 一致する文字列の例 | 基本 | 拡張 |
|---|---|---|---|---|---|
| . | 任意の1文字 | abc. | abcd、abca | ◯ | ◯ |
| ^ | 行頭 | ^abc | abc から始まる行 | ◯ | ◯ |
| $ | 行末 | abc$ | abc で終わる行 | ◯ | ◯ |
| [ ] | [ ] の中のどれか1文字 | [abc] | abc のどれかが含まれる行 ※[ ] 内のメタ文字は通常の文字として扱われる |
◯ | ◯ |
| [a-z] | a-z のアルファベットのどれか1文字 | a[a-z]c | aac、abc、acc | ◯ | ◯ |
| [^ ] | [ ] の中にない、どれか1文字 | [^abc] | abc 以外が含まれる行 | ◯ | ◯ |
| ( ) | ( ) の中の文字列 | (abc) | 文字列 abc が含まれる行 | ◯ | ◯ |
| * | 直前の文字の0回以上の繰り返し | abc* | ab、abc、abcc | ◯ | ◯ |
| + | 直前の文字の1回以上の繰り返し | abc+ | abc、abcc、abccc | ✕ | ◯ |
| ? | 直前の文字がまったくないか一つだけある | abc? | ab、abc | ✕ | ◯ |
| | | 左右いずれかの文字列 | ab|bc | ab か bc のどちらかが含まれる行 | ✕ | ◯ |
| \ | エスケープ記号 | \\ | メタ文字を通常の文字として扱う | ◯ | ◯ |
Terminal
Terminal
Terminal - Ubuntu Desktop では GNOME端末 のこと。
起動のショートカットキーは Ctrl+Alt+t 。
終了は exit と入力して Enter (実行) 。
慣例?に倣えばショートカットキーのキーは T 等、大文字で書きますが、ここでは入力通りに小文字で書いています。
基本のショートカットキー集
| キーバインド | 動作 |
|---|---|
| ← または Ctrl+b | 1文字左へカーソル移動 backward |
| → または Ctrl+f | 1文字右へカーソル移動 forward |
| Home または Ctrl+a | 行頭へカーソル移動 ahead |
| End または Ctrl+e | 行末へカーソル移動 end |
| Delete または Ctrl+d | カーソル位置の文字を削除 delete |
| Backspace または Ctrl+h | カーソル位置の前にある文字を削除 |
| Ctrl+k | カーソル位置から行末までの文字を切り取る |
| Ctrl+w | カーソル位置の直前にある1単語を切り取る |
| Ctrl+y | 切り取った文字をペーストする yank |
| ↑ または Ctrl+p | 1つ古い履歴を呼び出す |
| ↓ または Ctrl+n | 1つ新しい履歴を呼び出す |
| Ctrl+r | 履歴を後方検索 |
| Ctrl+s | 履歴を前方検索 |
| Enter または Ctrl+m | コマンドを実行する |
| Ctrl+o | コマンドを実行後、1つ新しい履歴を呼び出す |
| Tab または Ctrl+i | 入力補完 |
| Ctrl+l | 画面を消去する |
| Ctrl+c | コマンドの強制終了 |
コピペは Ctrl+Shift+c Ctrl+Shift+v と、Shift キーが必要になる。
他には検索するときも Ctrl+Shift+f となるので注意。
Ctrl+Shift+w でターミナルの現在使用中のタブが閉じる。
一つしか開いていない場合は、ターミナルを終了する。
exit と入力するのも、マウスに手をやるのも面倒な時はどうぞ。
履歴
Ctrl+p を繰り返したり Ctrl+r で履歴を検索してもよいが、
history [表示する履歴数]
で新しいものから指定した数だけ履歴を表示して、
![使いたい履歴の番号]
で、再利用することもできる。
便利な機能
; で区切って複数のコマンドを入力、一度の Enter で順番に実行する。
\ の直後の Enter は実行ではなく改行になる。長いコマンドを \ を使うことで内容は同じだが、見た目に分かりやすく入力できる。
Docker
Docker
みんな大好き Docker を入れていきます。
Docker Engine インストール
古い競合するパッケージをアンインストール
と、公式のドキュメントに書いてある。
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
一応やったけど、私の環境では、必要なかったです。
Docker GPG key を登録
curl 入れてなかったら事前にインストールしておくこと。
sudo apt update sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc
リポジトリを設定
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update
最新バージョンをインストールする
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
これで Docker がインストールできました。
docker グループを作成して、ユーザーを所属させる
いちいち sudo で起動していられないので docker グループを作って所属する。
sudo gpasswd -a ユーザー名 docker newgrp - docker
バージョン確認
docker -v
2024/02/22 時点で、Docker のバージョンは 25.0.3。
ついでに docker-compose 。
docker compose version
Docker compose のバージョンは 2.24.5 でした。
Rootless モード
個人で Docker を使うのに Rootless 環境を作る必要はあまりないかなと思っていますが、sudo 権限を持たないユーザーを docker グループ に加えるのは危険なので、ちょっと安全に Docker を使おうよというお話。
uidmap をインストールして、Docker デーモンの停止
前提条件として newuidmap と newgidmap が必要なので、パッケージ uidmap をインストール。
現在、system 全体で Docker デーモンが動いている状態なので停止します。
dbus-user-session が入っていなかったらインストールしてシステムを再起動しておきます。
(インストール済でしたのでスキップします)
sudo apt install uidmap sudo systemctl disable --now docker.service docker.socket
Rootless ユーザー(を作成して)Docker インストール
sudo グループに入っていないユーザーでログイン。(ないので最初に作る)
tombo さんが仲間に入りました。
tombo でログインして、
systemd のユーザーインスタンスを自動起動。
sudo adduser tombo sudo login tombo loginctl enable-linger tombo
23.10 では、
id で UID を確認(1001 でした)して、
環境変数 $XDG_RUNTIME_DIR を設定。
22.04 ではしなくて良い。
id echo export XDG_RUNTIME_DIR=/run/user/1001 >> ~/.bashrc exec $SHELL -l
Rootless Docker 本体インストール
そのまま tombo で作業しています。
curl -fsSL https://get.docker.com/rootless | sh
インストールの最後辺りに表示された環境変数を ~/.bashrc に追加。
echo export PATH=/home/tombo/bin:$PATH >> ~/.bashrc echo export DOCKER_HOST=unix:///run/user/1001/docker.sock >> ~/.bashrc exec $SHELL -l
バージョンを確認
docker -v docker compose version
2024/02/22 時点で、Rootless Docker のバージョンは 25.0.2 でした。
Rootfull とはバージョン違ったりもするのね。
Hello World
sudo 権限のない tombo さんが、docker run hello-world する。
docker run hello-world
Hello from Docker! が表示されれば良い。
言語 プログラミングのための環境構築
Git
Git のインストール。忘れずに config。
sudo apt install git git config --global user.name (ユーザー名) git config --global user.email (メールアドレス)
etckeeper
Git を入れたらこれ入れて、Ubuntu の設定ファイルのバージョン管理。
sudo apt install etckeeper
あとは勝手に/etc/ 内部 の変更履歴が保存されていく。
Ruby 環境構築
rbenv - Ruby バージョン管理をインストール
ruby-build で Ruby をビルドするためのツール・ライブラリのインストール。
sudo apt install autoconf patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev
rbenv、ruby-build をインストール。
git clone https://github.com/rbenv/rbenv.git ~/.rbenv git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenv をロードするようにシェルに設定する。
echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bashrc
シェルの再起動。
exec $SHELL -l
Rubyのインストール
インストールできる安定バージョンを確認。
rbenv install -l
Ruby をインストール(例 3.2.3)
rbenv install 3.2.3
インストール後、通常使う Ruby のバージョンとして設定する。
rbenv global 3.2.3
バージョンの確認。
ruby -v
Rubyの更新があったとき
Ruby に修正や更新などバージョンアップがあったときは rbenv plugin を update して、
git -C "$(rbenv root)"/plugins/ruby-build pull
最新のバージョンをインストールする。
Python 環境構築
Python ビルドツール・ライブラリのインストール
Ruby のと重なっているのもあるけど、公式通りで。
sudo apt install build-essential libbz2-dev libdb-dev \ libreadline-dev libffi-dev libgdbm-dev liblzma-dev \ libncursesw5-dev libsqlite3-dev libssl-dev \ zlib1g-dev uuid-dev tk-dev
ここからは、pyenv でいろんな Python をインストールして、venv でライブラリの依存関係をワークスペース毎に分離して、パッケージの管理を Poetry で行えるようにそれぞれインストールしていきます。
pyenv インストール
pyenv : https://github.com/pyenv/pyenv インストール。
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
~/.bashrc に pyenv を追加。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc
~/.profile か、~/.bash_profile または ~/.bash_login が存在していればそれに、なかったら ~/.profile に pyenv を追加。by 公式
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile echo 'eval "$(pyenv init -)"' >> ~/.profile
他はなし。
シェルを再起動する。
exec $SHELL -l
Python インストール
インストールできる Python のバージョンを確認して、
Python 3.12.2 をインストールしたら、
vnev で分離環境作成。
pyenv install -l pyenv install 3.12.2 ~/.pyenv/versions/3.12.2/bin/python -m venv .venv
で、VS Code で環境変更は Python のインタプリターに .venv/bin/python を選択。
Poetry インストール
Poetry : https://python-poetry.org/ インストールしてパス通す。
インストールに必要な curl が Ubuntu に初めから入ってないのでここでインストール。
sudo apt install curl
22.04LTS のリポジトリに入ってる curl のバージョンは低いですけどセキュリティアップデートとかは Ubuntu 開発チームがきっちり更新している、サポート期間中は更新されていくのでこれで。
2024/02/20 時点で、Version: 7.81.0-1ubuntu1.15
snap で例えば、sudo snap install --edge curl で最新の 8.6.0 なんか入れられますけど、--classic オプションが付けられないので入れません。
curl -sSL https://install.python-poetry.org | python3 - echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc exec $SHELL -l
java 環境構築
SDKMAN でバージョン管理
SDKMAN : https://sdkman.io/ インストールしてパス通し、バージョン確認。
curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk version
java インストール
インストールできる java の種類とバージョンを確認。
sdk list java
とりあえず無指定で java を入れて、
セットされた java を確認。
sdk install java sdk current java
Using java version 21.0.2-tem
デフォルトでは Temurin の 21.0.2 が入りました。2024/02/10。
GO をインストール
https://go.dev/ にて最新バージョンを確認。go1.22.0 (released 2024-02-06)
curl で取得(ダウンロード)して、/usr/local 以下に解凍。
パスを設定して、バージョンを確認できたら OK。
curl -LO https://go.dev/dl/go1.22.0.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz echo export PATH=$PATH:/usr/local/go/bin >> ~/.profile exec $SHELL -l go version
次回からは、先に
sudo rm -rf /usr/local/go
で、以前のファイルを削除してから作業する。
TypeScript 環境構築
nvm インストール
nvm : https://github.com/nvm-sh/nvm でバージョン管理するのでインストール、シェルに追加。バージョン確認まで。
v0.39.7 released this Dec 6, 2023
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc exec $SHELL -l nvm --version
Node.js の最新の LTS 版をインストール
これに npm も含まれる。
nvm install --lts
インストールされた各々のバージョン確認。
node -v npm -v
お疲れ様でしたぁ(汗
アプリ関係
アプリ関係
Google Chrome インストール
Firefox でもいいけど、やっぱり Chrome 。
wget でファイルを取得(ダウンロード)して apt install でインストール。
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install ./google-chrome-stable_current_amd64.deb
不要になった Firefox を設定も含めて完全削除。
sudo snap remove --purge firefox sudo apt purge firefox sudo apt purge thunderbird sudo apt autoremove
ついでに Thunderbird も削除して、もう必要とされないファイルもアンインストール。
Gmail で十分になってしまって、メールクライアントソフトがいらん子になってしまって幾星霜。
Visual Studio Code インストール
身も蓋もないけど、Windows のように webサイトからダウンロードしてインストールするのが一番手っ取り早い。snap 版は日本語入力に不具合が生じるので、deb 版一択で。
Chrome で、
https://code.visualstudio.com/ にいって、.deb ファイルをダウンロードする。 ファイルを右クリックで開き、ソフトウェアのインストールを選択してインストールする。
Ubuntu 23.10 以降なら、deb ファイルをダウンロードしたフォルダから、
sudo apt install ./code*amd64.deb
インストールしてしまえば、リポジトリ情報も登録されるので、わざわざファイルを落としにいかなくても apt コマンドで管理できる。
前述の Chrome も何だったらこれで良い。
ZFS
前提は NAS なので、 ZFS で、RAID-Z を構築する。
OpenZFS インストール
sudo apt install zfsutils-linux
zfs pool 作成
まずディスクの確認。
ls -lA /dev/disk/by-id/
ata-ST4000DM004-2CV104_******H8 ata-ST4000DM004-2CV104_******VS ata-ST4000DM004-2CV104_******LT
一部マスクしてます。
で、この情報を下に raidz pool を作成。
慣例にならって pool 名を tank にしています。
zpool create tank raidz /dev/disk/by-id/ata-ST4000DM004-2CV104_******H8 /dev/disk/by-id/ata-ST4000DM004-2CV104_******VS /dev/disk/by-id/ata-ST4000DM004-2CV104_******LT
オプション
タイムスタンプ機能を off。圧縮機能をデフォルト設定で ON。ついでに 一ヶ月に一回の Scrub を設定。
sudo zfs set atime=off tank sudo zfs set compression=zstd tank sudo systemctl enable zfs-scrub-monthly@tank.timer
データセット作成
サブフォルダーというか、samba 共有したいフォルダを作成。
sudo zfs create tank/media sudo zfs create tank/iso sudo zfs create tank/backup
samba 共有
zfs 自体に共有機能があって、それを設定してもよいが、一元管理したいので、/etc/samba/smb.conf に設定を追加する。
$ sudo nano /etc/samba/smb.conf : : #共有するフォルダと共有の情報を追加 [media] comment = Ubuntu22.04 path = /tank/media writable = yes guest ok = no force create mode = 0775 force directory mode = 0775 [iso] comment = Ubuntu22.04 path = /tank/iso writable = yes guest ok = no force create mode = 0775 force directory mode = 0775 [backup] comment = Ubuntu22.04 path = /tank/backup writable = yes guest ok = no force create mode = 0775 force directory mode = 0775
samba を再起動して設定を反映する。
sudo systemctl restart smbd