パッケージ管理ツールの紹介【OS/言語別】

はじめに
プログラミングやWeb開発を行う上で、様々な環境でパッケージの導入が必要となることがあります。
例えば、JavaScriptでの開発ではReactやVue.jsなどのフレームワークを導入する必要がありますが、OSやプログラミング言語によって使用されるパッケージ管理ツールは様々であり、初学者の方にとっては非常にわかりにくいことがあります。
そこで、この記事では代表的なパッケージ管理ツールの概要と使い方をまとめました。
代表的なパッケージ管理ツール
OS系
OS | 代表的なコマンド |
---|---|
Linux(Red Hat系) | rpm、yum、dnf |
Linux(Debian系) | dpkg、apt |
Mac | Homebrew |
Windows | Winget、Chocolatey |
プログラミング言語系
言語 | 代表的なコマンド |
---|---|
JavaScript(Node.js) | npm、npx、yarn |
PHP | Composer |
Python | pip |
Ruby | gem |
OS系パッケージ管理ツール
Linux(Red Hat系)
rpm(Red Hat Package Manager)
コマンド
# パッケージをインストールする
rpm -ivh {パッケージ名}
# パッケージをアンインストールする
rpm -e {パッケージ名}
概要
- Red Hat系のLinuxディストリビューションで利用されるパッケージ管理ツールであり、RPMパッケージを扱うためのコマンドです。
- RPMパッケージをインストール、アップグレード、アンインストールすることができます。
また、RPMパッケージの情報を表示したり、依存関係を解決するための依存関係の確認や解決を行うことができます。 - ただし、依存関係の解決は自動的には行われません。
依存しているライブラリやパッケージがインストールされていない場合は、手動でインストールする必要があります。 - また、RPMパッケージによっては、依存関係を解決するために、別のRPMパッケージをインストールする必要がある場合があります。
yum(Yellowdog Updater Modified)
コマンド
# パッケージをインストールする
yum install {パッケージ名}
# パッケージをアンインストールする
yum erase {パッケージ名}
概要
- RPMパッケージを統合管理するためのコマンドです。
- RPMパッケージを自動的にダウンロードしてインストールすることができます。
また、リポジトリからRPMパッケージを検索したり、アップグレードを実行したり、アンインストールすることもできます。 - yumコマンドは、依存関係を自動的に解決してくれるため、必要なライブラリやパッケージを自動的にダウンロードしてインストールすることができます。
これにより、手動で依存関係を解決する必要がなくなり、より簡単なパッケージ管理が可能になります。 - また、yumコマンドは、リポジトリ上のRPMパッケージを統合管理しているため、様々なパッケージを統一的に管理することができます。
これにより、複数のRPMパッケージを個別に管理する必要がなくなり、管理が容易になります。
dnf(Dandified Yum)
コマンド
# パッケージをインストールする
dnf install {パッケージ名}
# パッケージをアンインストールする
dnf erase {パッケージ名}
概要
- yumの後継バージョンとなるコマンドです。
Python3で書かれており、パフォーマンスが向上しています。 - yumと同じように、RPMパッケージを自動的にダウンロードしてインストールすることができます。
さらに、依存関係を自動的に解決し、リポジトリからパッケージを検索、アップグレード、アンインストールすることができます。 - dnfは、yumからの移行が進められており、最新バージョンのRed Hat Enterprise LinuxやCentOSでは、dnfがデフォルトのパッケージ管理ツールとなっています。
- ただし、yumとdnfは互換性があり、既存のyumコマンドを使用しても、実際にはdnfコマンドが実行されます。
- 最新バージョンのRed Hat Enterprise LinuxやCentOSでは、yumは非推奨となり、将来のバージョンではサポートが終了する可能性があります。
そのため、今後はdnfを使用することが推奨されます。
Linux(Debian系)
dpkg
コマンド
# パッケージをインストールする
dpkg -i {パッケージ名}
# パッケージをアンインストールする
dpkg -r {パッケージ名}
概要
- Debianパッケージ管理システムの一部であり、Debian、Ubuntu、Linux MintなどのDebian系のLinuxディストリビューションで使用されるパッケージを管理するためのコマンドです。
- dpkgはdeb形式のパッケージを扱います。
- dpkgコマンドを使用すると、パッケージのインストール、アンインストール、更新、検索などを行うことができます。
また、dpkg-debコマンドを使用すると、新しいパッケージを作成することもできます。 - dpkgは依存関係を解決することができません。
そのため、apt(Advanced Packaging Tool)と呼ばれるツールが使用されます。
apt(Advanced Package Tool)
コマンド
# パッケージをインストールする
apt install {パッケージ名}
# パッケージをアンインストールする
apt remove {パッケージ名}
概要
- dpkgを使用して.debパッケージをインストール、アップグレード、削除するためのコマンドです。
- apt-getやapt-cacheと同じ機能を持っており、apt-getとapt-cacheを統合したものとなっています。
- apt-getは、aptの一部であり、パッケージのインストール、アップグレード、削除などを行うためのコマンドです。
- apt-cacheは、パッケージの検索や情報の取得を行うためのコマンドです。
- パッケージの依存関係を解決し、必要なパッケージを自動的にダウンロードしてインストールすることができます。
また、パッケージの検索や更新、アップグレードも行うことができます。
Mac
Homebrew
コマンド
# パッケージをインストールする
brew install {パッケージ名}
# パッケージをアンインストールする
brew uninstall {パッケージ名}
概要
- MacOSおよびLinux環境におけるパッケージマネージャの1つで、デファクトスタンダードとされています。
- Appleからは提供されていませんが、macOS向けに開発されており、Appleが提供するコマンドラインツールに依存しています。
そのため、MacOS環境に最適化されていますが、LinuxやWindows(WSL)でも動作します。 - また、Homebrewは基本的にオープンソースであり、多数のコミュニティメンバーによって開発・メンテナンスされています。
Windows
Winget
コマンド
# パッケージをインストールする
winget install {パッケージ名}
# パッケージをアンインストールする
winget uninstall {パッケージ名}
概要
- Microsoftが開発したWindows環境における公式パッケージマネージャーです。
- Windows 10バージョン2004以降で利用可能で、コマンドラインからWindowsアプリケーションやツールを簡単にインストール、アップグレード、アンインストールすることができます。
- Windowsのパッケージマネージャーとして標準化されたもので、パッケージはMicrosoft Storeから提供されます。
従って、パッケージが安全であることが保証され、アプリケーションの配布元をユーザーが確認する必要がありません。 - また、パッケージの記述にはYAMLファイル形式が採用され、開発者が手軽にパッケージを作成できるようになっています。
- 他のパッケージマネージャと比較してまだ新しいツールですが、Microsoftが開発した公式のパッケージマネージャとして注目されています。
Chocolatey
コマンド
# パッケージをインストールする
choco install {パッケージ名}
# パッケージをアンインストールする
choco uninstall {パッケージ名}
概要
- Windows環境におけるパッケージマネージャの1つです。
- コマンドラインからWindowsアプリケーションやツールを簡単にインストール、アップグレード、アンインストールすることができます。
- パッケージを管理するためのコマンドラインツールが用意されており、コミュニティによってメンテナンスされています。
- また、商用版のChocolatey for Businessが提供されており、組織内でのパッケージ管理やセキュリティなどの機能を追加できます。
- Chocolateyは、Windowsのパッケージマネージャとして広く使われており、コミュニティが活発であり、多数のパッケージが提供されています。
プログラミング言語系パッケージ管理ツール
JavaScript(Node.js)
npm(Node Package Manager)
コマンド
# package.jsonに記載のパッケージをインストールする
npm install
# パッケージをインストールする
npm install {パッケージ名}
# パッケージをアンインストールする
npm uninstall {パッケージ名}
概要
- JavaScriptのパッケージマネージャであり、Node.jsの標準パッケージマネージャとして使用されています。
- 公式のnpmレジストリーからパッケージをインストールしたり、自分で作成したパッケージを公開したり、パッケージの依存関係を管理することができます。
- また、npmは、Node.jsのインストール時に同梱されており、npmコマンドを使って簡単にパッケージをインストールできます。
npx(Node Package Executer)
コマンド
# create-nuxt-appを実行する場合
npx create-nuxt-app {プロジェクト名}
概要
- npmのパッケージを直接実行するためのコマンドです。
npxを使用することで、グローバルにインストールする必要がないパッケージを手軽に実行することができます。 - 通常、npmでパッケージをインストールすると、パッケージがインストールされたディレクトリに実行ファイルが作成され、グローバルに実行できるようになります。
しかし、npxを使用すると、インストールせずに直接実行できます。 - また、npxは常に最新バージョンをダウンロードして実行するため、常に最新のパッケージを使用することができます。
yarn(Yet Another Resource Negotiator)
コマンド
# package.jsonに記載のパッケージをインストールする
yarn install
# パッケージをインストールする
yarn add {パッケージ名}
# パッケージをアンインストールする
yarn remove {パッケージ名}
概要
- JavaScriptのパッケージマネージャであり、npmに代わる選択肢として開発されました。
- npmと同様に、JavaScriptのライブラリやツールのパッケージを管理することができますが、いくつかの機能面でnpmよりも優れているとされています。
- 具体的には、yarnは以下のような機能を備えています。
- キャッシュ機能による高速化
- インストール済みのパッケージはキャッシュされるため、同じバージョンのパッケージを再度インストールする場合には、キャッシュから取得することができ、高速に処理を完了することができます。
- パッケージの自動解決
- 依存関係の解決を行う際に、パッケージのインストール順序を最適化することができます。
- ワークスペース機能
- 複数のパッケージを同一のリポジトリ内に管理することができ、共通の依存関係を持たせることができます。
- バージョン固定機能
- パッケージのバージョンを固定することができます。
- キャッシュ機能による高速化
- なお、yarnはFacebookによって開発されており、npmと同様にオープンソースのプロジェクトとして公開されています。
PHP
Composer
コマンド
# composer.jsonに記載のパッケージをインストールする
composer install
# パッケージをインストールする
composer require {パッケージ名}
# パッケージをアンインストールする
composer remove {パッケージ名}
概要
- PHPの依存パッケージを管理するためのパッケージマネージャです。
- PHPアプリケーションやライブラリに必要な依存関係を自動的に解決し、手動でパッケージをダウンロードしてインストールする必要がなくなります。
- Composerは、プロジェクト内にcomposer.jsonと呼ばれる設定ファイルを作成し、必要なパッケージを定義することで使用します。
composer.jsonファイルには、依存関係のリストやパッケージのバージョン、パッケージのインストール先などを指定できます。 - Composerは、コマンドラインツールとして提供されており、パッケージのインストールや更新、依存関係の解決などの操作を実行することができます。
Python
pip(Pip Installs Packages)
コマンド
# パッケージをインストールする
pip install {パッケージ名}
# パッケージをアンインストールする
pip uninstall {パッケージ名}
概要
- Pythonのパッケージをインストール・アップグレード・アンインストールするためのツールです。
- Python 2.7.9以降、Python 3.4以降には標準で含まれており、多くのパッケージがpipで提供されています。
- また、pipを使って作成されたパッケージはPyPI(Python Package Index)に登録され、誰でもインストールできるようになっています。
Ruby
gem(RubyGems)
コマンド
# パッケージをインストールする
gem install {パッケージ名}
# パッケージをアンインストールする
gem uninstall {パッケージ名}
概要
- Rubyのパッケージマネージャーであるgemは、Rubyで書かれたライブラリやアプリケーションなどのパッケージを管理するためのコマンドです。
- gemを使うことで、必要なパッケージを簡単にダウンロードしてインストールしたり、アンインストールしたり、また最新版にアップデートしたりすることができます。
- また、gemには膨大な数のパッケージが存在しており、開発者は自分でパッケージを作成して公開することもできます。
さいごに
以上、代表的なパッケージ管理ツールについて解説してきました。
パッケージ管理ツールは、開発において欠かせないツールの一つであり、正しい使い方を身につけることで、開発の効率を大幅に向上させることができます。
本記事を参考にして、自分の開発環境に最適なツールを選択し、スムーズな開発を行っていただければ幸いです。