ねこ日記

プログラミング学習の記録

aptとは何か

「〜とは何か」シリーズができそう。

aptについてまとめ。

aptの説明

wikiによると

apt = Advanced Packaging Tool
Debian用に開発されたパッケージ管理システム

読み方は「アプト」

wikiの続き

dpkgのフロントエンドとして動作するように設計されたが、現在はRPMに対応するように移植されたapt-rpmもある。コンパイル済みのソフトウェアを管理する機能に加え、ソースコードからソフトウェアをコンパイルする際の依存関係を解決する機能も備えている。

なるほど分からん。

説明の説明(前半)

パッケージ管理システム

OSというひとつの環境で、各種のソフトウェアの導入と削除、そしてソフトウェア同士やライブラリとの依存関係を管理するシステム

つまり 「Debian用に開発されたパッケージ管理システム」 はDebian上でソフトウェア周りの面倒ごとを簡単に管理できるように作ってある機能、ということか。

説明の説明(後半)

dpkg

Debianのパッケージ管理システムの基礎となるソフトウェアである

読み方は「ディーピーケージー」

dpkgは低水準ツールで、複雑なことをしたい時にはaptの方が良いよう。

フロントエンド

ユーザーなどと直接やり取りをする要素のことをフロントエンド、フロントエンドの入力データや指示をもとに、処理を行って結果を出力したり、記録媒体に保存したりする処理をバックエンドといいます

aptは「dpkgのフロントエンドとして動作するように設計された」とは・・・ パッケージを管理するための操作についてユーザーに直接関わるということ。 ユーザーはdpkgを直に実行するのではなくてaptを通して実行している。ということはdpkgはバックエンドということかな。

なぜdpkgよりもaptの方が複雑な処理に向いているのかというと、パッケージ間の依存関係などを認知して、ユーザーが欲しいと思うパッケージの周辺も一括でいい感じにしてくれるからということらしい。

パッケージ間の関係性

関係 説明
依存 パッケージを導入するのに欠かすことのでないパッケージ
推奨 無くてもよいが、プログラムの機能を利用するために通常は導入するパッケージ
提案 無くてもよいが、導入することによってプログラムの機能を向上させるパッケージ
衝突 パッケージを導入することで、同一の機能を有するなどの理由で削除されるパッケージ

もしもaptを使わずに直接dpkgを実行するのならば、この関係性を自分で調べて、追加したり削除したりしないといけない。考えただけで面倒そう。

RPM

パッケージには実行形式とそうでないものの2つあるらしい。 RPM形式パッケージは実行形式ではないもののうちの1つ。 aptは通常deb形式パッケージ(これも実行形式ではない)を扱う模様。

コンパイル

コンピュータ・プログラミング言語の処理系(言語処理系)の一種で、高水準言語によるソースコードから、機械語に(あるいは、元のプログラムよりも低い水準のコードに)変換すること。そのためのプログラムをコンパイラという。

英和辞書によると compile = 編集する compiler = 編集者

つまり通訳みたいな? OSに「異国の言葉でスッゲーむすがしく書いてあったからあんたにわかるようにしてやったZE」みたいなことだろうか。(違うかもしれない)

以上をもとに 「dpkgのフロントエンドとして動作するように設計されたが、現在はRPMに対応するように移植されたapt-rpmもある。コンパイル済みのソフトウェアを管理する機能に加え、ソースコードからソフトウェアをコンパイルする際の依存関係を解決する機能も備えている。」を読むとなんとなくわかる気がする!

調べ切らなかったこと

ツールの水準(高水準・低水準)とは何だろう。 なんとなくイメージはできるけど、何かヒエラルキーのような水準を定義したものがあったりするんだろうか・・・?

参考に読んだもの

APT - Wikipedia

コンパイル(コンパイル)とは - コトバンク

dpkg - Wikipedia

今さら聞けない!? 「フロントエンド」と「バックエンド」 - ITips(アイティップス)|転職@type