きな粉もち.net

.NET関連仕事に携わっています。OSSのソースを読んで気がついたことを中心に呟いたりブログに投稿したりしています。最近はUiPathを使ったRPAも研究中。気軽にフォローやツッコミよろしくおねがいします! Gitはここを使っています https://github.com/kinakomotitti

Linux × パッケージ管理 × apt? yum? rpm?

この記事の目的

この記事では、
Linuxで使われるパッケージ管理コマンドの使い分けをまとめること
を目的としています。
日常的には、.NET 開発者としてWindowsOSを触っていますが、
.NET Coreをはじめとして、LinuxOSを触る機会も増えてきました。
いざLinuxでの開発業務が始まったときに戸惑わないようにするためにも
Linuxの使い方を少しずつまとめてみようと思います。

本題

★そもそもLinuxのOSって何があるの?

UbuntuRedHatCentOSでしょ。知ってる。

と思っていました。
Linux ディストリビューション
で検索したところ、そんなことはなかったです。

https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Linux_Distribution_Timeline.svg/320px-Linux_Distribution_Timeline.svg.png

もはや見えませんが、大きく分けて、
Debian系」から派生したLinuxRedHat系」から派生したLinuxが存在します。
自分が知っていたUbuntuは、Debian系で、
RedHatCentOSRedHat系ということになります。
それぞれにたくさんの派生Linuxがいるようです。
把握しきれません。。。(/・ω・)/

よくよく見ると、Debian系には、Lindowsや、Raspbianがあることがわかります。
また、よく耳にするOSのAndroidChrome OS
  Debian系でもRedHat系でもないということもわかります。

Linux・・・・あなたは想像をはるかに超えた広い世界に存在しているのですね( ゚Д゚)

Debian

全体的な世界観を見たところで、Debian系とRedHat系に焦点を絞ってまとめていきます。
まずは、Debian系。
Ubuntuですね。

Debian系は、コミュニティベースで開発されているOSです。
そして、100%フリーソフトウェアです。
そのため、Debianから派生しているUbuntuも無料で利用することができます。
無料、ありがたい。

Debian系のOSでは、deb形式のパッケージ管理システムを利用します。

 (Ubuntuは、Windows 10のストアアプリとしても配布されています。
  Windowsubuntuを使うときは、このdeb形式のパッケージ管理システムを使うことになるようです。)


deb形式のパッケージをインストール・アンインストール・更新するためには、
dpkgコマンドを利用します。
このdpkgコマンドでは、パッケージのインストールなどの操作が可能ですが、
パッケージの依存関係の解決はできません。
つまり、依存関係の解決を手動で行う必要があります。

そんな操作を自動でやってくれるのが、dpkgの後に登場したaptコマンドです。
aptコマンドでは、依存関係の解決を行ってくれるため、
dpkgコマンドより簡単にパッケージの導入ができるようになります。

とりあえず、aptコマンドは、dpgkのすごい版として認識しておけばよいかと思っています。
もしくは、dpgkを良しなに使ってパッケージを管理してくれるaptコマンド。としてもあっているかもしれません。

このaptコマンドのオプションには、取得可能なパッケージを表示するlistオプションがあります。
これを使って、目的のパッケージを探すこともできるので、パッケージのURLを探す手間が省けて楽ができます。

参考Windows ストアでインストールしてきたUbuntuで[apt list]を実行したときのイメージは以下の通りです。
Ubuntuなので、特別な設定なしに利用することができます。
f:id:kinakomotitti:20180703212830p:plain

RedHat

続いて、RedHat系についてみていきます。
RedHat系のLinuxの仲間には、有償のものも含まれています。
CentOSのように完全無償化されているものもあります。
エンタープライズ向けに有償で提供されているディストリビューションもあるLinuxとして認識しておけば間違いがないのだと思います。

そんなRedHat系のLinuxでは、パッケージ管理システムにrpmを利用しています。
rpmは、Debian系でいうところのdpkgコマンドと同じ高さにあるコマンドです。
ということは、rpmを管理するすごい版のコマンドもあります。
それが、yumコマンドです。
yumコマンドも、aptコマンドのように、インストールしたいパッケージの依存関係を解決してくれます。

何の情報にもなりませんが、Ubuntu上でrpmyumを実行すると、コマンドがないと怒られます。
f:id:kinakomotitti:20180703212844p:plain

まとめ

Linux初心者の自分が躓いたことを調べてみました。
簡単にまとめておきます。
Debian系:Ubuntuなど
dpkg : パッケージの単体インストールをしてくれる人
apt : dpkgをまとめて管理して、依存関係を解決しながらパッケージをインストールしてくれる人
RedHat系:RedHatCentOSなど
rpm: パッケージの単体インストールをしてくれる人
yum : rpmをまとめて管理して、依存関係を解決しながらパッケージをインストールしてくれる人

参考文献

  ・果てしなくわかりやすくまとめられているサイトを参考にさせていただきました。
   eng-entrance.com
  ・Wikiから画像を拝借しました。   
   Linuxディストリビューション - Wikipedia