diff --git a/deb/list.go b/deb/list.go index f6d0918b..dc59d232 100644 --- a/deb/list.go +++ b/deb/list.go @@ -38,6 +38,11 @@ type PackageList struct { providesIndex map[string][]*Package } +// PackageConflictError means that package can't be added to the list due to error +type PackageConflictError struct { + error +} + // Verify interface var ( _ sort.Interface = &PackageList{} @@ -90,7 +95,7 @@ func (l *PackageList) Add(p *Package) error { existing, ok := l.packages[key] if ok { if !existing.Equals(p) { - return fmt.Errorf("conflict in package %s", p) + return &PackageConflictError{fmt.Errorf("conflict in package %s", p)} } return nil } diff --git a/deb/remote.go b/deb/remote.go index 67169581..881fe292 100644 --- a/deb/remote.go +++ b/deb/remote.go @@ -468,7 +468,11 @@ func (repo *RemoteRepo) DownloadPackageIndexes(progress aptly.Progress, d aptly. } err = repo.packageList.Add(p) if err != nil { - return err + if _, ok := err.(*PackageConflictError); ok { + progress.ColoredPrintf("@y[!]@| @!skipping package %s: duplicate in packages index@|", p) + } else { + return err + } } err = collectionFactory.PackageCollection().Update(p)