ワイ将、Ubuntuの使い手なり
Windowsほしいよおーーーーー。
VSCodeも使い方わからないし、tigもわからないし、postmanもとりあえずインスコしただけなので
買って満足して使わなくなること請け合いなので買わないけどさ。
そんなもの買う余裕もないし。
ということでMacにUbuntu環境ドッキングしてMacの恩恵0な使い方をしている異端児として
Ubuntuのパッケージ管理ツールをまとめてみる。
余計なことも書いてあるかもしれないけど大目にみろよな!
Debian系のパッケージツール
世の中のWebサービスの大半でLinux系のサーバOSが利用されている。
ワイの仮想環境はUbuntuというディストリビューションを利用しているのだが
このOSはDebianの系譜を汲んでいる。
このパッケージ管理ツールは歴史的にdpkg(たぶんDebianPacKaGeの意)→apt-get(apt)→aptitudeの順に新しい(気がする)。
dpkg
パッケージ管理をしないツール。
なので本来ここでは紹介すべきではないが一応歴史的経緯の説明がてら。
.debの拡張子を持ったパッケージをインストールしたりするのに使われる。
インストールコマンドは以下。
dpkg -i パッケージ名
apt-get
APT(Advanced Packaging Tool)のCLI実装のこと(だと思う、誰か助けて)。
公式には apt-get for retrieval of packages and information about them from authenticated sources and for installation, upgrade and removal of packages together with their dependencies
(apt-getはパッケージそのものや信頼されているソースからのパッケージに関する情報の検索や、依存関係のあるパッケージ同士をインスコしたりアップグレードしたりアンスコしたりするためのものだ)
とある。
とにかくプログラムに何かパッケージをインストールしとけ!とおこられたときに
(sudo) apt-get install パッケージ名
すればだいたいなんとかなる(持論)。
apt
上でダメなら apt install パッケージ名
をやるのも手。
公式には apt is a high-level command-line interface for better interactive usage
(aptはよりよい対話的用途のためのハイレベルなコマンドラインインターフェースだ)
とあって、対話的にパッケージを管理できるのが売りのようだ。
こちらもAPTのCUI実装のようなものなのでどちらを使っても同一管理になってるはず。
aptitude
よくわからないが上のやつらよりも拡張性が高そう(感想)。
LPICレベル1にもばちこり出題されていたが今や下火になってるらしい(噂)。
RedHat系のパッケージツール
rpm
dpkg
のようにパッケージを管理しないツール。
依存関係を含めて管理したい場合は後述の yum
を使う。
yum
CentOSとか使ってれば基本的にこれ使うと思う。
yum install パッケージ名
で依存関係も含めてパッケージをインスコしてくれる。
CentOS卒業マンなので細かい説明は以下を参照してください。
その他のパッケージ管理ツール
npm
Node.jsのパッケージ管理ツール。
結構よく出てくる(体感)。
yarn
facebook謹製のパッケージ管理ツール。
なんかナウいらしい(雑)。
紛らわしいもの
紛らわしいと言うより初心者を混乱させる系のツール。
gem
Rubyのライブラリであるgemを管理するためのツール。
依存関係は解決しない(たぶん)。
bundler
gem(ライブラリ)の依存関係を管理してくれるツール。
このライブラリのこのバージョンとこのライブラリのこのバージョンは同時に動かすとバグるぜというのを避けてくれる。
pip
Pythonのライブラリ管理ツール。
Rubyで言うところのgemとbundlerの機能を持つ(と思う)。
依存関係を管理するための設定ファイルを用意してあげればpip install
で依存関係含めてインスコしてくれるっぽい。
rbenv
Rubyのバージョン管理ツール。
いまやプロジェクト配下にディレクトリを切ってそこにgemをインストールしてプロジェクト単位でgemを管理するという流れが当たり前になっているが、
昔はRuby自体がgemを管理していて、Rubyのバージョンを切り替えるごとにgemのバージョンも変わるようになっていた。
プロジェクトのルートディレクトリ配下に .ruby-version
置いてそのプロジェクトで使うrubyのバージョンを定義しておき、
ルートディレクトリで bundle install --path vendor/bundle
すれば vendor/*
にgem群が入って他のプロジェクトの環境を汚すことはなくなる。
バージョン管理というかバージョン切り替えツールくらいの感じ。
*env系が増えに増えて何が何やら、、、
RubyもPythonもPerlもNode.jsも使うとかなら anyenv
入れてから rbenv
pyenv
plenv
ndenv
入れるみたいな流れになると思う。
まとめ
最後のやつこれ全部覚えなければいけないんですか?
はいそうです、フルスタック名乗るくらいならね(真顔)
発狂してもいいですか?
オワオワリ。