らずぱい日記

定年したので日記でもかくか。って感じ

Ubuntuのパッケージ管理

今回Ubuntuを触るのが初めてなのでメモっておくことにする。

RaspberryPi4を少し触ったが、ちょくちょくシステムを壊して再インストールを数回してしまったので少し基本的なところを押さえておかないとなかなか感覚だけでは無理っぽい。幸い時間があるので調べたことをメモしておこう。どうせまたシステム壊すので見返しながら素早く再構築できるように。。。

 

-----------------------------------
1.Ubuntuのパッケージ管理
-----------------------------------
ソフトウェアをインストール、アップグレード、構成、および削除するための
パッケージ管理システムがある。パッケージ管理システムは、Debian GNU / Linuxディストリビューションで使用されているものと同じシステムから派生している。
Debianパッケージファイルは拡張子.debパッケージは通常、コンパイル済みのバイナリ形式です。
したがって、インストールは迅速であり、ソフトウェアのコンパイルは必要ありません。

昔はGCCコンパイルしていたのだが便利になったもんじゃの。
./configure -> make -> make install を何回やったもんじゃろ。

新しいソフトウェアパッケージのインストール、既存のソフトウェアパッケージの
アップグレード、パッケージリストインデックスの更新、さらにはUbuntu全体の
アップグレードなどの機能を実行するaptコマンドがある。

 

■aptの使い方(aptはコマンドラインツール)
GUIで行うよりコマンドラインで行った方が精神的に落ち着くわ。

・パッケージのインストール:
$ sudo apt install パッケージ名

・パッケージの削除
$ sudo apt remove パッケージ名

※複数のパッケージ:インストールまたは削除する複数のパッケージをスペースで区切って指定できます。
vineLinuxなどでapt-getコマンドを多用していたが、ubuntuでは注意項目があるみたい

--purgeオプションを追加apt removeすると、パッケージ構成ファイルも削除される。
これは望ましい効果である場合とそうでない場合があるため、注意して使用してください。

・パッケージインデックスの更新
APTパッケージインデックスは、基本的に、/etc/apt/sources.listファイルと/etc/apt/sources.list.dディレクトリで
定義されたリポジトリから利用可能なパッケージのデータベースです。
リポジトリで行われた最新の変更でローカルパッケージインデックスを更新するには、次のように入力します。

※updateはインデックスの更新のみです。

$ sudo apt update

・パッケージのアップグレード
システムをアップグレードするには、まず、パッケージインデックスを更新(update)してから、次のように入力します。

$ sudo apt upgrade

※新たなUbuntuのリリースの参照は、
https://ubuntu.com/server/docs/upgrade-introduction
で詳細がわかります。

APTの使用の詳細はapt helpで確認してください。

list - パッケージ名に基づいてパッケージを一覧表示します
search - パッケージの説明を検索
show - パッケージの詳細を表示します
install - パッケージをインストールします
reinstall - パッケージを再インストールします
remove - パッケージを削除します
autoremove - 未使用のパッケージをすべて自動的に削除します
update - 利用可能なパッケージのリストを更新します
upgrade - パッケージをインストール/アップグレードしてシステムをアップグレードします
full-upgrade - パッケージを削除/インストール/アップグレードしてシステムをアップグレードします
edit-sources - ソース情報ファイルを編集します
satisfy - 依存関係の文字列を満たす

■dpkg
dpkgは、Debianベースのシステム用のパッケージマネージャーです。
パッケージのインストール、削除、ビルドはできますが、他のパッケージ管理システムとは異なり、
パッケージまたはその依存関係を自動的にダウンロードしてインストールすることはできません。
以下はdpkgを使用してローカルにインストールされたパッケージを管理する方法について説明します。

・インストールおよびアンインストールされたすべてのパッケージを含む、システムのパッケージデータベース内
のすべてのパッケージをターミナルプロンプトから一覧表示するには、次のように入力します。

$dpkg -l

・システム上のパッケージの数によっては、これにより大量の出力が生成される可能性があります。
出力をgrepにパイプして、特定のパッケージがインストールされているかどうかを確認します。

$ dpkg -l | grep apache2
ii apache2 2.4.41-4ubuntu3.1 arm64 Apache HTTP Server
ii apache2-bin 2.4.41-4ubuntu3.1 arm64 Apache HTTP Server (modules and other binary files)
ii apache2-data 2.4.41-4ubuntu3.1 all Apache HTTP Server (common files)
ii apache2-utils 2.4.41-4ubuntu3.1 arm64 Apache HTTP Server (utility programs for web servers)

・パッケージ(この場合はufwパッケージ)によってインストールされたファイルを一覧表示するには、次のように入力します。

$ dpkg -L ufw

・どのパッケージがファイルをインストールしたかわからない場合はdpkg -S、教えてくれる。例えば:

$ dpkg -S /etc/apache2/apache2.conf
apache2: /etc/apache2/apache2.conf

apache2パッケージによってインストールされたことがわかる。

※パッケージのインストールプロセス中に自動的に生成され、ファイルシステム上にあるdpkg -S場合でも、
どのパッケージに属しているかわからない場合があります。

・次のように.deb入力して、ローカルファイルをインストールできます。

$ sudo dpkg -i インストールするローカル.debファイルの実際のファイル名

・パッケージのアンインストールは、次の方法で実行できます。
$ sudo dpkg -r zip

※上の場合zipパッケージが削除されますが、それに依存するパッケージは引き続きインストールされていて、正しく機能しなくなる可能性があります。
  あまり使わない方がよい。

■APT構成
システムのリポジトリ
/etc/apt/sources.listファイルと
/etc/apt/sources.list.dディレクトリ。
に格納されている。
ファイルを編集して、リポジトリを有効または無効にすることができます。
ファイルの先頭に表示される適切な行をコメントアウトするだけです。
コメントアウトは行頭に#で行えます。
デフォルトでは、ユニバースリポジトリマルチバースリポジトリは有効になっていますが、無効にする場合は/etc/apt/sources.list、次の行を編集してコメントします。

■自動更新
無人アップグレードパッケージは、更新されたパッケージを自動的にインストールするために使用でき、
すべてのパッケージを更新するか、セキュリティ更新プログラムをインストールするように構成できます。
まず、ターミナルに次のように入力してパッケージをインストールします。

$sudo apt install unattended-upgrades

無人アップグレードを構成/etc/apt/apt.conf.d/50unattended-upgradesするには、ニーズに合わせて以下を編集および調整します。
※二重の「//」はコメントとして機能するため、「//」に続くものは評価されません。

Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security"
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";


ブラックリストに登録すると特定のパッケージも自動的に更新されません。パッケージをブラックリストに登録するには、パッケージをリストに追加します。

Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};

自動更新を有効にするに/etc/apt/apt.conf.d/20auto-upgradesは、適切なapt構成オプションを編集および設定します。

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

上記の構成では、パッケージリストが更新され、利用可能なアップグレードが毎日ダウンロードおよびインストールされます。
ローカルダウンロードアーカイブは毎週クリーンアップされます。
新しいバージョンのUbuntuにアップグレードされたサーバーでは、応答によっては、上記のファイルが存在しない場合があります。
この場合、この名前の新しいファイルの作成も機能するはずです。

無人アップグレードの結果はに記録され/var/log/unattended-upgradesます。

■通知
無人アップグレードで、アップグレードが必要なパッケージや問題のあるパッケージの詳細を管理者にメールで送信できるようになります。
/etc/apt/apt.conf.d/50unattended-upgradesで構成Unattended-Upgrade::Mailする
もう1つの便利なパッケージはapticronです。
apticronは、更新が利用可能なシステム上のパッケージに関する情報と、各パッケージの変更の概要を管理者に
電子メールで送信するようにcronジョブを構成します。

apticronパッケージをインストールするには、ターミナルで次のように入力します。
$ sudo apt install apticron

パッケージがインストールされたら、編集して/etc/apticron/apticron.conf、メールアドレスとその他のオプションを設定します。

EMAIL="root@example.com"