6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS7でyumのgroupinstallができなかった件

Last updated at Posted at 2018-05-21

経緯など

エラーが出たので確認したところそもそもCentOS7からパッケージグループ名が変わっててbaseとかcoreとか存在しないっぽい。

個人的にgroup名のスペースや言語設定で名前変わることに納得いかなかったのでgroupidつかってました。groupidはgrouplistのとき-vつけるとカッコ()内に表示されてるやつ。(ansibleのyumモジュールだとgroupidは@^groupidという表現をする)

ここ↓みると--setopt=group_package_types=mandatory,default,optionalつけると元通りのgroup、groupid名でいけますと書いてある
https://access.redhat.com/solutions/1310043

インストールはできたが、grouplistでもとのgroup、groupid名を引くことができない。

で、どうするかというと、# yum groups mark convertを打つと現在入ってるパッケージをもとにパッケージグループをupgrade対象のホワイトリストに割り当てる?インストール済みとしてmarkする?というような。manと動確でそんな感じでよさそうな気がした。

そうすると、変更後前後のインストール済みgroup、groupid名は以下のかんじになる

Ansibleのyumモジュールではsetoptオプションの対応がないっぽいのでcommandモジュールかなんかつかうしかなさそう。


- name: base packages group install
  #yum:
  command: yum -y groupinstall "{{ item }}" --setopt=group_package_types=mandatory,default,optional
#    name: "@^{{ item }}"
#    state: present
#    conf: /etc/yum.conf
  with_items:
    - core
    - base
    - development
    - compat-libraries
    - console-internet
    - perl-runtime

このタスクでインストールしたあとに、yum groups mark convert打つ前後の確認すると以下のように★のとこが増えてる

# yum grouplist -v
Installed Groups:
   Compatibility Libraries (compat-libraries)
   Console Internet Tools (console-internet)
   Development Tools (development)
↓
Installed Groups:
   Compatibility Libraries (compat-libraries)
   Console Internet Tools (console-internet)
   Development Tools (development)
   Legacy UNIX Compatibility (legacy-unix)★
   Security Tools (security-tools)★
   System Administration Tools (system-admin-tools)★

yum groups mark convertで増えてたlegacy-unixなどでgrouplistでチェックタスクつくるといいのと入れる時もこの名前にしたほうがいいのかも?
と思いきや実際にyum groupinstall legacy-unix security-tools system-admin-tools --setopt=group_package_types=mandatory,default,optionalで表示されたパッケージとyum groupinstall core base perl-runtime --setopt=group_package_types=mandatory,default,optionalで表示されたものは結構違ってました。

それとAnsibleにしたときは@^じゃなくて@で動いたりはしたのですが、他のあとからのタスクでバージョン指定で入れてたりexcludeしてたりすると1回目の後からタスクの時と2回動かしたグループインストールの時にパッケージ競合でエラーで止まるので冪等とはなんだったのかという感じになったりなど。
対策としては
・groupinstallしない
・1回いれたら2回目はリポジトリを無効化しpriorityはなし
・rpm -qaのリストを食わせてカスタムリポジトリからインストールする(environmentごとにdiffって差分を別のリストから入れる)
というくらいがよさそうなんじゃないでしょうか。updateする場合は個別にタスク生成して実行などで。

パッケージ管理は統合する話もなんとなくちら聞きしましたがいつになるのか等よくわからず願望なだけかもしれなくて眉唾なんですかね。
と思ったらYumの後継としてDNFというのがある模様でした。(めんどうだからaptと統合しないかなとか思ってしまったけど、エディタとOSと同様に統合するわけなくて用途にあわせて好きに使えばいい話ですかね)
https://ja.wikipedia.org/wiki/DNF_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)

さんこう

man 8 yum
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sec-working_with_package_groups

6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?