diff --git a/scan/centos.go b/scan/centos.go index 7c00fd1a..4f89ed2c 100644 --- a/scan/centos.go +++ b/scan/centos.go @@ -47,15 +47,26 @@ func (o *centos) depsFast() []string { if o.getServerInfo().Mode.IsOffline() { return []string{} } + // repoquery - return []string{"yum-utils"} + majorVersion, _ := o.Distro.MajorVersion() + if majorVersion < 8 { + return []string{"yum-utils"} + } + return []string{"dnf-utils"} } func (o *centos) depsFastRoot() []string { - return []string{ - "yum-utils", - "yum-plugin-ps", + if o.getServerInfo().Mode.IsOffline() { + return []string{} } + + // repoquery + majorVersion, _ := o.Distro.MajorVersion() + if majorVersion < 8 { + return []string{"yum-utils"} + } + return []string{"dnf-utils"} } func (o *centos) depsDeep() []string { diff --git a/scan/redhatbase.go b/scan/redhatbase.go index 7f16923c..6fe41786 100644 --- a/scan/redhatbase.go +++ b/scan/redhatbase.go @@ -363,7 +363,11 @@ func (o *redhatBase) scanUpdatablePackages() (models.Packages, error) { return nil, xerrors.Errorf("Failed to `yum makecache`: %w", err) } - cmd := `repoquery --all --pkgnarrow=updates --qf="%{NAME} %{EPOCH} %{VERSION} %{RELEASE} %{REPO}"` + isDnf := o.exec(util.PrependProxyEnv(`repoquery --version | grep dnf`), o.sudo.repoquery()).isSuccess() + cmd := `repoquery --all --pkgnarrow=updates --qf='%{NAME} %{EPOCH} %{VERSION} %{RELEASE} %{REPO}'` + if isDnf { + cmd = `repoquery --upgrades --qf='%{NAME} %{EPOCH} %{VERSION} %{RELEASE} %{REPONAME}' -q` + } for _, repo := range o.getServerInfo().Enablerepo { cmd += " --enablerepo=" + repo } diff --git a/scan/rhel.go b/scan/rhel.go index 84edabca..29181ca8 100644 --- a/scan/rhel.go +++ b/scan/rhel.go @@ -53,7 +53,13 @@ func (o *rhel) depsFastRoot() []string { if o.getServerInfo().Mode.IsOffline() { return []string{} } - return []string{"yum-utils"} + + // repoquery + majorVersion, _ := o.Distro.MajorVersion() + if majorVersion < 8 { + return []string{"yum-utils"} + } + return []string{"dnf-utils"} } func (o *rhel) depsDeep() []string {