Include RHEL, CentOS epoch number in version

This commit is contained in:
Kota Kanbe
2017-04-26 12:20:21 +09:00
committed by kota kanbe
parent c989c31aeb
commit 1a319859eb
2 changed files with 16 additions and 11 deletions

10
Gopkg.lock generated
View File

@@ -141,7 +141,7 @@ memo = "bd95ed8c2b0aa32327ae55d88bff888b8198d238f7a71eee0f8663494664a0ac"
branch = "master"
name = "github.com/kotakanbe/goval-dictionary"
packages = ["config","db","log","models"]
revision = "c33f7c4a77c3522ea25a70b9c38e1ae910f106cb"
revision = "9aba0cebf04ef546c7ae8666fea5e142b9e90fc1"
[[projects]]
branch = "master"
@@ -237,25 +237,25 @@ memo = "bd95ed8c2b0aa32327ae55d88bff888b8198d238f7a71eee0f8663494664a0ac"
branch = "master"
name = "github.com/ymomoi/goval-parser"
packages = ["oval"]
revision = "fa7d8e949108b0b2b7d124bef9a7f2bda9b6dd69"
revision = "4ddf6fc4f1a1af026f7cae41f76979c7ff2b2e2f"
[[projects]]
branch = "master"
name = "golang.org/x/crypto"
packages = ["curve25519","ed25519","ed25519/internal/edwards25519","ssh","ssh/agent","ssh/terminal"]
revision = "96846453c37f0876340a66a47f3f75b1f3a6cd2d"
revision = "3543873453996aaab2fc6b3928a35fc5ca2b5afb"
[[projects]]
branch = "master"
name = "golang.org/x/net"
packages = ["context","idna","publicsuffix"]
revision = "d212a1ef2de2f5d441c327b8f26cf3ea3ea9f265"
revision = "da118f7b8e5954f39d0d2130ab35d4bf0e3cb344"
[[projects]]
branch = "master"
name = "golang.org/x/sys"
packages = ["unix"]
revision = "ea9bcade75cb975a0b9738936568ab388b845617"
revision = "8c0a5eacbac818f9011015b17992f53d9cec3e8f"
[[projects]]
branch = "master"

View File

@@ -244,7 +244,7 @@ func (o *redhat) scanPackages() error {
}
func (o *redhat) scanInstalledPackages() (installedPackages models.PackageInfoList, err error) {
cmd := "rpm -qa --queryformat '%{NAME}\t%{VERSION}\t%{RELEASE}\n'"
cmd := "rpm -qa --queryformat '%{NAME}\t%{EPOCHNUM}\t%{VERSION}\t%{RELEASE}\n'"
r := o.exec(cmd, noSudo)
if r.isSuccess() {
// e.g.
@@ -269,14 +269,20 @@ func (o *redhat) scanInstalledPackages() (installedPackages models.PackageInfoLi
func (o *redhat) parseScannedPackagesLine(line string) (models.PackageInfo, error) {
fields := strings.Fields(line)
if len(fields) != 3 {
if len(fields) != 4 {
return models.PackageInfo{},
fmt.Errorf("Failed to parse package line: %s", line)
}
ver := ""
if fields[1] == "0" {
ver = fields[2]
} else {
ver = fmt.Sprintf("%s:%s", fields[1], fields[2])
}
return models.PackageInfo{
Name: fields[0],
Version: fields[1],
Release: fields[2],
Version: ver,
Release: fields[3],
}, nil
}
@@ -471,13 +477,12 @@ func (o *redhat) parseYumCheckUpdateLine(line string) (models.PackageInfo, error
if len(verfields) != 2 {
return models.PackageInfo{}, fmt.Errorf("Unknown format: %s", line)
}
version := o.regexpReplace(verfields[0], `^[0-9]+:`, "")
release := verfields[1]
repos := strings.Join(fields[2:len(fields)], " ")
return models.PackageInfo{
Name: packName,
NewVersion: version,
NewVersion: verfields[0],
NewRelease: release,
Repository: repos,
}, nil