- アシスタントマネージャー
- オフショアPJマネージャー
- 業務改善(BPR)
- Other occupations (76)
-
Development
- オフショアPJマネージャー
- Web Engineer
- エンジニアオープンポジション
- Javaエンジニア(楽楽明細)
- ブリッジSE(大阪)
- ブリッジSE/オフショア開発
- エンジニアリングマネージャ
- テックリード(大阪/PHP)
- プロジェクトマネージャー
- PM(楽楽シリーズ)
- Webエンジニア(大阪PHP)
- フロントエンドマネージャー候補
- フロントエンドエンジニア
- Webエンジニア
- フロントエンド(リーダー)
- Android/iOSアプリ
- 社内SE(大阪/セキュリティ)
- インフラエンジニア
- 社内SE(大阪/インフラ)
- インフラエンジニア/マネージャ
- DevOps Engineer
- 社内SE(データエンジニア)
- 戦略企画・データマネジメント
- データマネジメント・戦略企画
- AI/機械学習エンジニア
- QAリーダー/マネージャー
- システム企画
- 品質管理/技術支援チーム
- 社内SE(業務改善推進)
- UI/UXマネージャー
- UIデザイナー(リーダー)
- UIデザイナー
-
Business
- アシスタントマネージャー
- PdM(楽楽シリーズ)
- 開発マネージャー
- PMMプロダクトマーケティング
- 導入支援/導入コンサルタント
- プロジェクトマネージャ(大阪)
- プロダクトセキュリティ
- プロダクトマネージャー(AI)
- プロダクトマネージャー
- ドメインエキスパート
- プロダクトマネージャー(UX)
- 経営企画/事業分析
- 経営企画
- データマネジメント・マーケ戦略
- 法務
- 内部監査(業務監査)
- セールスマネージャー
- 法人営業/カスタマーサクセス
- 営業企画オープンポジション
- 営業企画(イネーブルメント)
- ITセールス(広島)
- ITセールス(名古屋)
- フィールドセールス
- フィールドセールス(名古屋)
- フィールドセールス(法人営業)
- 法人営業
- フィールドセールス(東京)
- 営業企画(戦略立案)
- ITセールス
- ビジネスオープン
- ITセールス経験者
- ブランド企画
- CSマーケティング
- オンラインマーケティング
- マーケティング担当
- マーケティングリーダー
- オフラインマーケティング
- 営業推進リーダー(楽楽精算)
- 製品企画/プロダクトマーケ
- ブランド企画・ブランディング
- 製品企画/法要件(楽楽明細)
- 企画マーケティング
- Other
yum installで学ぶ!yumの仕組み
はじめに
エンジニアのnorthmkyです。
業務ではシステムの運用保守チームに所属しているので断然サーバ周りの作業が多いということで今回はその中でもyum
コマンドについてまとめてみました。
おそらくこれを読めば
yum
とrpm
との違いって?とりあえずyum
使ってるけど...yum install [package]
って打つだけでなんでDL&Installできるの?
という疑問は少し解消されるかと思います。
まだまだ浅い知識なので間違っているところがあれば指摘いただけると嬉しいです。
yumとは
まずものすごく大雑把にいいますとyumは下記になります。
- パッケージ管理システム
- rpmというパッケージ管理システムをラッパーしている
yumはRedHat系ディストリビューションのパッケージ管理システムです。
パッケージというのは「ソフトウェアを構成するファイルらをまとめたもの」で、設定ファイルやドキュメント、プログラム本体、プログラム本体が動くためのライブラリなどがそれにあたります。1
Linuxでは「パッケージ読み解き、ソフトウェアを正しく動作させるようにする」「パッケージの情報を管理する」ことでソフトウェアを使える/管理する仕組みを採用していて、今回取り上げるyumはLinuxディストリビューションのなかでRedHat系のパッケージ管理システムとなります。
このyumですが実際裏側ではrpmというパッケージ管理システムを使っています。
「rpmではできなかった点をyumができるようにしている」という立ち位置になっています。
この出来なかった点が冒頭に述べた
- 「リポジトリ」による自動更新機能
- 依存関係の管理(検出だけじゃない)
です。
リポジトリとは
意味のあるまとまりでパッケージを複数格納している場所のことです。
この場所には下記が格納されています。
- 複数のパッケージ(
./*.rpm
) - ためのライブラリなどがそれにあたります。1ら(
./repodata
)
パッケージが複数存在してもその場所はリポジトリとは言えません。メタ情報があってリポジトリとなります。2
yumではこのリポジトリの情報を元にパッケージを検索したり、installを行います。
yum/rpm/リポジトリの関係性
yumとrpmとリポジトリの配置場所との関係性は下記のようになっています。
yumは
/etc/yum.repos.d/*.repo
に記載されているリポジトリ場所にあるパッケージらに対してrpm経由でDLしたり、インストールしたり、必要であればインストール時に依存関係のあるパッケージを検出して一緒にインストールしたりします。
逆をいえば、/etc/yum.repos.d/*.repo
以外のレポジトリは情報がないのでyumは取得することができませんので注意してください。
では、実際によく打つコマンドを例にしてどのようになっているか見てみます。
yum install
を見てみる
「このコマンド(ソフトウェア)、インストールしてないからインストールしよう」というのはよくあると思うので
今回はyum isntall [package]
を通してどんなことが行われているかを見ていきたいと思います。
大枠の流れは上記のようになっています。
今回はphpをインストールしてみたいと思います。 (OS:CentOS6)
こちらを実行すると、下記のようによく見る
インストールしますか?
という対話モードになります。 この中身を見ていきましょう。
1. ミラーサイトの中で一番地理的に近いミラーサーバを各レポジトリごとに探す
結果としてリポジトリの場所(URL)のほとんどが.jp
ドメインつきなため、一番地理的に近いミラーサイトをレスポンスを計測して選んだというのがわかります。
これはyumが、前述した/etc/yum.repos.d/*.repo
のリポジトリの情報からインストールするリポジトリの場所を決定しています。ではphpのパッケージが存在する 「base」というリポジトリの情報が記載されているCentOS-Base.repo
を見てみます。
*.repo
の中には基本的にはリポジトリ情報が複数記載されています。
mirrorlist
に設定されているURLを実際に叩くと、
ミラーサイトのリストが返ってきます。
このリストからyumは一番近い場所を選定して、リポジトリ内のパッケージを取得する、ということをしているようです。 今回はftp.jaist.ac.jp
でした。
2. 必要なパッケージ情報を取得する
phpパッケージを対象にしただけですが、実際には依存してる他パッケージもインストールの準備をしています。 パッケージが依存しているソフトウェアは、パッケージ(.rpm)のSPECファイルというパッケージのメタ情報(ソースバージョンなど)を記載したファイルに記載してあります。3 この情報をRPMデータベース(/var/lib/rpm
)4と呼ばれるパッケージの情報を保存しておくDBに登録し、install前に検索をかけ、依存関係の有無を見ています。
このような処理が走ったあとでDL&installが行われます。
おわりに
yumについてまとめてみました。
yumとは
に記載した
- パッケージ管理システム
- rpmというパッケージ管理システムをラッパーしている
が伝えることができていれば幸いです。
ネットではチートシートや「rpmよりyumをまずは使うべし」などのハウツーの記事は多いのですが、
改めてどういった仕組み、処理でインストールが行われているかの記事はあまり見なかったので試行錯誤しながら執筆しました。
少しでも知識の助けになれば幸いです。(そして私自身の正しい知識の定着のためにもご指摘頂けると非常に助かります...!!)