初めてのCentOS8のインストールに当たっては、カジュアルにMinimumグループを選んだ。CentOS7の頃は特に問題を感じなかったからだ。もちろんMinimumはあれもこれも入っていないので、追加しなければならないパッケージは多い。が、少なくとも必要最低限は入っていると期待できた。それよりもよく分からないパッケージグループを選んでコンテナなんちゃら、とかをインストールされるよりはマシと思うのだ。
が、CentOS8のMinimumをインストールして、tar
が入っていないことに気づいたとき、これはヤバいなと考え直した。今回のメジャーアップデートにおいては、yum
がdnf
に移行するという結構大きな変更があったが、同時にパッケージの作り直しも行われたわけで、よくよく調べておかないと大事なものがなくなっているかもしれない。
自分はGUIインストーラは信じていないので(選択肢が少なすぎ、選択の幅も狭すぎ、結局思ったようにはインストールできない)、Minimumでインストールした後でコンソールから調整するか、最終的にはKickstartでインストールできるようパッケージおよびグループリストを完成させることを目指すことにする。
新旧パッケージを比較する
というわけで、まずは新旧CentOSのMinimumパッケージリストを比較するところから始める。パッケージグループの内容を確認するには、yum
/dnf
で次のようなコマンドを使う。
[root@c7 ~]# yum groupinfo 'Minimal Install'
Loaded plugins: fastestmirror
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* epel: nrt.edge.kernel.org
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Environment Group: Minimal Install
Environment-Id: minimal
Description: Basic functionality.
Mandatory Groups:
+core
Optional Groups:
+debugging
[root@c8 ~]# dnf groupinfo 'Minimal Install'
Last metadata expiration check: 0:00:08 ago on Thu 26 Sep 2019 10:34:52 PM EDT.
Environment Group: Minimal Install
Description: Basic functionality.
Mandatory Groups:
Core
Optional Groups:
Guest Agents
Standard
CentOS7/8、双方とも[Cc]oreというグループに紐づいているようだ。Coreの中身は具体的なパッケージのリストなので、これを比較してみよう。
[root@c8 ~]# dnf groupinfo Core
Last metadata expiration check: 0:03:08 ago on Thu 26 Sep 2019 10:34:52 PM EDT.
Group: Core
Description: Smallest possible installation
Mandatory Packages:
audit
basesystem
bash
coreutils
:
:
こんな具合にリストが出てくる。パッケージにはMandatory、Default、Optionalの3つのカテゴリがあるが、Optionalは置いといてMandatoryとDefaultのパッケージを抜き出して、sort
してcomm
してみよう。するとこうなる。
■CentOS7のみ(CentOS8から消えたもの)
btrfs-progs
dhclient
iptables
postfix
tar
■CentOS8のみ(CentOS7から増えたもの)
authselect grubby rng-tools
dnf lsscsi sssd-common
dnf-plugins-core prefixdevname sssd-kcm
dnf-plugin-spacewalk
■両方にあるもの
audit initscripts ncurses rsyslog
basesystem iproute NetworkManager selinux-policy-targeted
bash iprutils NetworkManager-team setup
biosdevname iputils NetworkManager-tui sg3_utils
coreutils irqbalance openssh-clients sg3_utils-libs
cronie kbd openssh-server shadow-utils
curl kernel-tools parted sudo
dracut-config-rescue kexec-tools passwd systemd
e2fsprogs less plymouth tuned
filesystem libsysfs policycoreutils util-linux
firewalld lshw procps-ng vim-minimal
glibc man-db rootfiles xfsprogs
hostname microcode_ctl rpm yum
※ *-firmware は除いた
…こうしてみるとなんでtar
を抜いたのかという気分になってくる。
入れてみたいパッケージグループを考える
入れるべきパッケージグループはどうだろう? 普段使うコマンドがたくさん入っていて、使わないものは極力入っていないパッケージグループがあればベストだ。CentOS8が現在サポートしているパッケージグループは以下の通りだ。
[root@c8 ~]# dnf grouplist
Last metadata expiration check: 0:07:37 ago on Thu 26 Sep 2019 11:15:44 PM EDT.
Available Environment Groups:
Server with GUI
Server
Workstation
KDE Plasma Workspaces
Virtualization Host
Custom Operating System
Installed Environment Groups:
Minimal Install
Installed Groups:
System Tools
Available Groups:
Container Management
.NET Core Development
RPM Development Tools
Smart Card Support
Development Tools
Graphical Administration Tools
Headless Management
Legacy UNIX Compatibility
Network Servers
Scientific Support
Security Tools
Fedora Packager
パッと見たところ、Serverが自分にはあっていそうだが、
[root@c8 ~]# dnf groupinfo Server
Last metadata expiration check: 0:07:37 ago on Thu 26 Sep 2019 11:15:44 PM EDT.
Environment Group: Server
Description: An integrated, easy-to-manage server.
no group 'dns-server' from environment 'server-product-environment'
Mandatory Groups:
Container Management
Core
Hardware Support
Headless Management
Server product core
Standard
Optional Groups:
Basic Web Server
Debugging Tools
FTP Server
File and Storage Server
GNOME
Guest Agents
Hardware Monitoring Utilities
Infiniband Support
Mail Server
Network File System Client
Network Servers
Performance Tools
Remote Management for Linux
Virtualization Hypervisor
Windows File Server
なんだかどれも魅力的には見えない。
Standard
さてリストをよく見ていると、Standardというのがあるのに気づく。実はCoreのOptional Groupにもあって、Minimal Installでは入らないが、なかなかよさそうだ。内容はこんな感じ。
acl ed mlocate sudo
at ethtool mtr symlinks
attr file nano systemd-udev
bash-completion fprintd-pam net-tools tar
bc gnupg2 nmap-ncat tcpdump
blktrace insights-client pciutils teamd
bpftool iptstate pinfo time
bzip2 irqbalance plymouth tree
centos-release kmod-kvdo psacct unzip
centos-release-eula kpatch quota usbutils
chrony ledmon realmd util-linux-user
cockpit libstoragemgmt rng-tools vdo
cpio logrotate rsync vim-enhanced
crontabs lsof rsyslog-gnutls virt-what
cryptsetup lvm2 rsyslog-gssapi wget
cyrus-sasl-plain mailcap rsyslog-relp which
dbus man-pages smartmontools words
dnf-plugin-spacewalk mcelog sos xfsdump
dos2unix mdadm sssd zip
dosfstools microcode_ctl strace
いくつかのコマンドはシステムコマンドの依存関係ですでに入っているものもあるが、これを追加することでいろいろ捗りそうなものもある。個人的にはtar
、lsof
、net-tools
、rsync
、strace
、wget
、zip
がうれしい。
Development Tools
もうひとつ、さくらのクラウドのCentOS7のアーカイブに入っているパッケージグループであるDevelopment Toolsも確認しておこう。
asciidoc gcc make redhat-rpm-config
autoconf gcc-c++ patchutils rpm-build
automake gdb perl-Fedora-VSP rpm-sign
binutils git perl-generators source-highlight
bison glibc-devel pesign strace
byacc intltool pkgconf systemtap
ctags libtool pkgconf-m4 valgrind
diffstat ltrace pkgconf-pkg-config valgrind-devel
flex
これもgit
やmake
などなど入っているのでよい感じだ。
まとめ
さて、Minimumインストールの後、どのようにすればよいかだが、StandardとDevelopment Toolsを入れた後、細かなパッケージを適宜追加・削除するのがいいのかな、と思う。ちなみにStandardの中にはcockpit
というWeb管理ツールが入っているのだが、この種のものは嫌いなのでどうしても入れたくない。手動で2つのパッケージグループをインストールし、かつcockpitを除外したいならこうなる。
dnf install @Standard '@Development Tools' -x cockpit* -x nano
とりあえずはこれでなんとか始めるしかないようだ。Kickstartは調整に時間がかかるので、完成したらまた別の記事にしたいと思う。