downloader

package
v1.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 14, 2026 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APTPackageVerifier

type APTPackageVerifier struct {
	// contains filtered or unexported fields
}

APTPackageVerifier APT包专用验证器

func NewAPTPackageVerifier

func NewAPTPackageVerifier(config *glpm.ManagerConfig) *APTPackageVerifier

NewAPTPackageVerifier 创建APT包验证器

func (*APTPackageVerifier) CalculateHash

func (v *APTPackageVerifier) CalculateHash(filePath string, hashType string) (string, error)

CalculateHash 计算文件哈希值

func (*APTPackageVerifier) GetPackageInfo

func (v *APTPackageVerifier) GetPackageInfo(pkgFile string) (PackageInfo, error)

GetPackageInfo 获取DEB包信息

func (*APTPackageVerifier) VerifyDirectory

func (v *APTPackageVerifier) VerifyDirectory(dir string, pkgName string) ([]string, error)

VerifyDirectory 验证目录中的所有包文件

func (*APTPackageVerifier) VerifyPackage

func (v *APTPackageVerifier) VerifyPackage(pkgFile string, pkgInfo PackageInfo) error

VerifyPackage 验证APT包

type AptDownloader

type AptDownloader struct {
	// contains filtered or unexported fields
}

AptDownloader APT包下载器

func NewAptDownloader

func NewAptDownloader(config *glpm.ManagerConfig, architecture string) *AptDownloader

NewAptDownloader 创建APT下载器实例

func (*AptDownloader) Download

func (d *AptDownloader) Download(ctx context.Context, pkgName string, destDir string) error

Download 实现下载功能

func (*AptDownloader) DownloadMultiple

func (d *AptDownloader) DownloadMultiple(ctx context.Context, pkgNames []string, destDir string) error

DownloadMultiple 下载多个包(并发下载)

func (*AptDownloader) GetDependencies

func (d *AptDownloader) GetDependencies(ctx context.Context, pkgName string) ([]string, error)

GetDependencies 获取指定包的所有依赖

func (*AptDownloader) GetManagerName

func (d *AptDownloader) GetManagerName() string

GetManagerName 获取包管理器名称

func (*AptDownloader) ListDownloadedFiles

func (d *AptDownloader) ListDownloadedFiles(destDir string) ([]string, error)

ListDownloadedFiles 列出已下载的文件

func (*AptDownloader) VerifyDownload

func (d *AptDownloader) VerifyDownload(ctx context.Context, pkgName string, destDir string) error

VerifyDownload 验证已下载的包

type DefaultPackageVerifier

type DefaultPackageVerifier struct{}

DefaultPackageVerifier 默认包验证器

func NewDefaultPackageVerifier

func NewDefaultPackageVerifier() *DefaultPackageVerifier

NewDefaultPackageVerifier 创建默认包验证器

func (*DefaultPackageVerifier) CalculateHash

func (v *DefaultPackageVerifier) CalculateHash(filePath string, hashType string) (string, error)

CalculateHash 计算文件哈希值

func (*DefaultPackageVerifier) GetPackageInfo

func (v *DefaultPackageVerifier) GetPackageInfo(pkgFile string) (PackageInfo, error)

GetPackageInfo 获取包信息

func (*DefaultPackageVerifier) VerifyDirectory

func (v *DefaultPackageVerifier) VerifyDirectory(dir string, pkgName string) ([]string, error)

VerifyDirectory 验证目录中的所有包文件

func (*DefaultPackageVerifier) VerifyPackage

func (v *DefaultPackageVerifier) VerifyPackage(pkgFile string, pkgInfo PackageInfo) error

VerifyPackage 验证包文件

type Downloader

type Downloader interface {
	// Download 下载指定包到指定目录
	Download(ctx context.Context, pkgName string, destDir string) error
	// GetDependencies 获取指定包的所有依赖
	GetDependencies(ctx context.Context, pkgName string) ([]string, error)
	// GetManagerName 获取包管理器名称
	GetManagerName() string
	// VerifyDownload 验证已下载的包
	VerifyDownload(ctx context.Context, pkgName string, destDir string) error
	// ListDownloadedFiles 列出已下载的文件
	ListDownloadedFiles(destDir string) ([]string, error)
}

Downloader 定义包下载器接口

type DownloaderFactory

type DownloaderFactory struct{}

DownloaderFactory 下载器工厂

func NewDownloaderFactory

func NewDownloaderFactory() *DownloaderFactory

NewDownloaderFactory 创建下载器工厂实例

func (*DownloaderFactory) GetDownloader

func (f *DownloaderFactory) GetDownloader(managerName string, config *glpm.ManagerConfig, architecture string) (Downloader, error)

GetDownloader 获取指定类型的下载器

func (*DownloaderFactory) GetHTTPDownloader added in v1.3.1

func (f *DownloaderFactory) GetHTTPDownloader(managerName string, architecture string) (Downloader, error)

GetHTTPDownloader 获取HTTP下载器(跨平台)

func (*DownloaderFactory) GetHTTPDownloaderWithConfig added in v1.3.1

func (f *DownloaderFactory) GetHTTPDownloaderWithConfig(managerName string, architecture string, repoConfig *RepositoryConfig) (Downloader, error)

GetHTTPDownloaderWithConfig 使用指定配置创建HTTP下载器

type HTTPDownloader added in v1.3.1

type HTTPDownloader struct {
	// contains filtered or unexported fields
}

HTTPDownloader 基于HTTP协议的跨平台下载器 支持在Windows/Linux/macOS上直接从源仓库下载包文件

func NewHTTPDownloader added in v1.3.1

func NewHTTPDownloader(architecture string, repoConfig *RepositoryConfig) *HTTPDownloader

NewHTTPDownloader 创建HTTP下载器

func (*HTTPDownloader) Download added in v1.3.1

func (h *HTTPDownloader) Download(ctx context.Context, pkgName string, destDir string) error

Download 下载指定包到目标目录

func (*HTTPDownloader) GetDependencies added in v1.3.1

func (h *HTTPDownloader) GetDependencies(ctx context.Context, pkgName string) ([]string, error)

GetDependencies 获取包的依赖列表

func (*HTTPDownloader) GetManagerName added in v1.3.1

func (h *HTTPDownloader) GetManagerName() string

GetManagerName 获取管理器名称

func (*HTTPDownloader) ListDownloadedFiles added in v1.3.1

func (h *HTTPDownloader) ListDownloadedFiles(destDir string) ([]string, error)

ListDownloadedFiles 列出已下载的文件

func (*HTTPDownloader) VerifyDownload added in v1.3.1

func (h *HTTPDownloader) VerifyDownload(ctx context.Context, pkgName string, destDir string) error

VerifyDownload 验证已下载的包

type HTTPRecursiveDownloader added in v1.3.1

type HTTPRecursiveDownloader struct {
	// contains filtered or unexported fields
}

HTTPRecursiveDownloader HTTP模式下的递归依赖下载器

func NewHTTPRecursiveDownloader added in v1.3.1

func NewHTTPRecursiveDownloader(downloader *HTTPDownloader) *HTTPRecursiveDownloader

NewHTTPRecursiveDownloader 创建HTTP递归下载器实例

func (*HTTPRecursiveDownloader) DownloadPackageWithDependencies added in v1.3.1

func (hrd *HTTPRecursiveDownloader) DownloadPackageWithDependencies(ctx context.Context, pkgName string, destDir string) error

DownloadPackageWithDependencies 递归下载包及其所有依赖

type PackageInfo

type PackageInfo struct {
	Name         string
	Version      string
	Architecture string
	Hash         string
	HashType     string
}

PackageInfo 包信息结构

type PackageMetadata added in v1.3.1

type PackageMetadata struct {
	PackageName  string
	Version      string
	Architecture string
	Depends      []string
	Filename     string
	MD5sum       string
	SHA256       string
	Size         int64
}

PackageMetadata 包元数据

type PackageValidationResult

type PackageValidationResult struct {
	FilePath    string
	IsValid     bool
	Error       error
	PackageInfo PackageInfo
}

PackageValidationResult 验证结果

type PackageVerifier

type PackageVerifier interface {
	// VerifyPackage 验证包文件
	VerifyPackage(pkgFile string, pkgInfo PackageInfo) error
	// VerifyDirectory 验证目录中的所有包文件
	VerifyDirectory(dir string, pkgName string) ([]string, error)
	// GetPackageInfo 获取包信息
	GetPackageInfo(pkgFile string) (PackageInfo, error)
	// CalculateHash 计算文件哈希值
	CalculateHash(filePath string, hashType string) (string, error)
}

PackageVerifier 包验证器接口

type PackageVerifierFactory

type PackageVerifierFactory struct{}

PackageVerifierFactory 包验证器工厂

func NewPackageVerifierFactory

func NewPackageVerifierFactory() *PackageVerifierFactory

NewPackageVerifierFactory 创建包验证器工厂

func (*PackageVerifierFactory) GetVerifier

func (f *PackageVerifierFactory) GetVerifier(managerName string, config *glpm.ManagerConfig) PackageVerifier

GetVerifier 获取包验证器

type RecursiveDownloader

type RecursiveDownloader struct {
	// contains filtered or unexported fields
}

RecursiveDownloader 递归下载器

func NewRecursiveDownloader

func NewRecursiveDownloader(d Downloader) *RecursiveDownloader

NewRecursiveDownloader 创建递归下载器实例

func (*RecursiveDownloader) CollectDependencies

func (rd *RecursiveDownloader) CollectDependencies(ctx context.Context, pkgName string) ([]string, error)

CollectDependencies 收集所有依赖(递归收集,不下载)

func (*RecursiveDownloader) DeduplicateDependencies

func (rd *RecursiveDownloader) DeduplicateDependencies(deps []string) []string

DeduplicateDependencies 去除依赖列表中的重复项

func (*RecursiveDownloader) DownloadPackageWithDependencies

func (rd *RecursiveDownloader) DownloadPackageWithDependencies(ctx context.Context, pkgName string, destDir string) error

DownloadPackageWithDependencies 递归下载包及其所有依赖 isOfflineMode: 是否为离线包模式(使用-f参数),离线包模式下依赖清单不包含主包

func (*RecursiveDownloader) DownloadPackageWithDependenciesWithMode

func (rd *RecursiveDownloader) DownloadPackageWithDependenciesWithMode(ctx context.Context, pkgName string, destDir string, isOfflineMode bool) error

DownloadPackageWithDependenciesWithMode 递归下载包及其所有依赖(支持离线包模式) isOfflineMode: 是否为离线包模式(使用-f参数),离线包模式下依赖清单不包含主包

type RepositoryConfig added in v1.3.1

type RepositoryConfig struct {
	// Debian/Ubuntu 仓库配置
	BaseURL      string   // 仓库基础URL,如 http://archive.ubuntu.com/ubuntu/
	Distribution string   // 发行版,如 "jammy", "bookworm"
	Components   []string // 组件,如 ["main", "universe", "restricted"]
	Suites       []string // 套件,如 ["focal", "jammy"]

	// YUM/RPM 仓库配置
	RepoURL      string // YUM仓库URL
	RepodataPath string // repodata路径,如 "repodata/"

	// 自定义URL支持
	CustomBaseURL string // 用户自定义的基础URL,优先级最高
	CustomRepoURL string // 用户自定义的YUM仓库URL

	// HTTP请求头配置
	EnableHeaders bool              // 是否启用浏览器请求头(默认false)
	Headers       map[string]string // 自定义HTTP请求头
}

RepositoryConfig 仓库配置

type RepositoryInfo added in v1.3.1

type RepositoryInfo struct {
	Name        string // 仓库名称
	Description string // 描述
	Type        string // 类型: debian, ubuntu, uos, kylin, deepin, centos
	Version     string // 版本代号
	Arch        string // 架构
	URL         string // 仓库URL
}

RepositoryInfo 仓库信息

type RepositoryManager added in v1.3.1

type RepositoryManager struct{}

RepositoryManager 仓库配置管理器

func NewRepositoryManager added in v1.3.1

func NewRepositoryManager() *RepositoryManager

NewRepositoryManager 创建仓库管理器

func (*RepositoryManager) GetRepositoryConfig added in v1.3.1

func (m *RepositoryManager) GetRepositoryConfig(systemType, version, arch string) *RepositoryConfig

GetRepositoryConfig 获取指定系统的仓库配置 使用清华大学镜像站,支持 Debian, Ubuntu, UOS, Kylin, Deepin

func (*RepositoryManager) GetRepositoryConfigWithCustomURL added in v1.3.1

func (m *RepositoryManager) GetRepositoryConfigWithCustomURL(systemType, version, arch, customURL string) *RepositoryConfig

GetRepositoryConfigWithCustomURL 获取仓库配置,支持自定义URL customURL: 用户自定义的基础URL,为空则使用默认镜像源

func (*RepositoryManager) GetRepositoryConfigWithHeaders added in v1.3.1

func (m *RepositoryManager) GetRepositoryConfigWithHeaders(systemType, version, arch, customURL string, enableHeaders bool) *RepositoryConfig

GetRepositoryConfigWithHeaders 获取仓库配置,支持自定义URL和请求头 enableHeaders: 是否启用浏览器请求头(默认false)

func (*RepositoryManager) ListSupportedSystems added in v1.3.1

func (m *RepositoryManager) ListSupportedSystems() []RepositoryInfo

ListSupportedSystems 返回支持的系统列表

type SourceEntry added in v1.3.1

type SourceEntry struct {
	Enabled      bool     // 是否启用
	Type         string   // 类型: deb, deb-src, rpm, yum
	URL          string   // 仓库URL
	Distribution string   // 发行版
	Components   []string // 组件
	Arch         string   // 架构(可选)
	SourceFile   string   // 来源文件
	LineNum      int      // 行号
}

SourceEntry 代表一个源配置项

func (*SourceEntry) ToRepositoryConfig added in v1.3.1

func (e *SourceEntry) ToRepositoryConfig() *RepositoryConfig

ToRepositoryConfig 将SourceEntry转换为RepositoryConfig

type SourcesConfig added in v1.3.1

type SourcesConfig struct {
	Entries    []SourceEntry // 所有源条目
	ValidCount int           // 有效条目数
	ErrorCount int           // 错误条目数
}

SourcesConfig 源配置文件解析结果

func ParseSourcesFile added in v1.3.1

func ParseSourcesFile(filePath string) (*SourcesConfig, error)

ParseSourcesFile 解析源配置文件(支持.list、.repo和.sources格式)

func (*SourcesConfig) GetDebianEntries added in v1.3.1

func (c *SourcesConfig) GetDebianEntries() []SourceEntry

GetDebianEntries 获取所有Debian源

func (*SourcesConfig) GetEntriesByType added in v1.3.1

func (c *SourcesConfig) GetEntriesByType(sourceType string) []SourceEntry

GetEntriesByType 根据类型获取源条目

func (*SourcesConfig) GetFirstEntry added in v1.3.1

func (c *SourcesConfig) GetFirstEntry() *SourceEntry

GetFirstEntry 获取第一个有效的源条目

func (*SourcesConfig) GetYUMEntries added in v1.3.1

func (c *SourcesConfig) GetYUMEntries() []SourceEntry

GetYUMEntries 获取所有YUM源

func (*SourcesConfig) String added in v1.3.1

func (c *SourcesConfig) String() string

String 返回配置的字符串表示

type ValidatePackageResults

type ValidatePackageResults struct {
	Results    []PackageValidationResult
	ValidCount int
	TotalCount int
}

ValidatePackageResults 批量验证结果

type YUMChecksum added in v1.3.1

type YUMChecksum struct {
	Type  string `xml:"type,attr"`
	Value string `xml:",chardata"`
}

type YUMData added in v1.3.1

type YUMData struct {
	Type     string      `xml:"type,attr"`
	Location YUMLocation `xml:"location"`
	Checksum YUMChecksum `xml:"checksum"`
}

type YUMHTTPDownloader added in v1.3.1

type YUMHTTPDownloader struct {
	*HTTPDownloader
}

YUMHTTPDownloader YUM HTTP下载器

func NewYUMHTTPDownloader added in v1.3.1

func NewYUMHTTPDownloader(architecture string, repoConfig *RepositoryConfig) *YUMHTTPDownloader

NewYUMHTTPDownloader 创建YUM HTTP下载器

func (*YUMHTTPDownloader) Download added in v1.3.1

func (h *YUMHTTPDownloader) Download(ctx context.Context, pkgName string, destDir string) error

Download 下载RPM包

func (*YUMHTTPDownloader) GetDependencies added in v1.3.1

func (h *YUMHTTPDownloader) GetDependencies(ctx context.Context, pkgName string) ([]string, error)

GetDependencies 获取依赖

func (*YUMHTTPDownloader) GetManagerName added in v1.3.1

func (h *YUMHTTPDownloader) GetManagerName() string

GetManagerName 获取管理器名称

func (*YUMHTTPDownloader) ListDownloadedFiles added in v1.3.1

func (h *YUMHTTPDownloader) ListDownloadedFiles(destDir string) ([]string, error)

ListDownloadedFiles 列出已下载文件

func (*YUMHTTPDownloader) VerifyDownload added in v1.3.1

func (h *YUMHTTPDownloader) VerifyDownload(ctx context.Context, pkgName string, destDir string) error

VerifyDownload 验证下载

type YUMLocation added in v1.3.1

type YUMLocation struct {
	Href string `xml:"href,attr"`
}

type YUMPackage added in v1.3.1

type YUMPackage struct {
	Name     string             `xml:"name"`
	Arch     string             `xml:"arch"`
	Version  YUMVersion         `xml:"version"`
	Location YUMPackageLocation `xml:"location"`
	Requires []YUMRequire       `xml:"format>requires>entry"`
	Size     int64              `xml:"size>package"`
}

type YUMPackageLocation added in v1.3.1

type YUMPackageLocation struct {
	Href string `xml:"href,attr"`
}

type YUMPackageMetadata added in v1.3.1

type YUMPackageMetadata struct {
	PackageName  string
	Version      string
	Architecture string
	Location     string
	Depends      []string
	SHA256       string
	Size         int64
}

YUMPackageMetadata YUM包元数据

type YUMPackageVerifier

type YUMPackageVerifier struct {
	// contains filtered or unexported fields
}

YUMPackageVerifier YUM包专用验证器

func NewYUMPackageVerifier

func NewYUMPackageVerifier(config *glpm.ManagerConfig) *YUMPackageVerifier

NewYUMPackageVerifier 创建YUM包验证器

func (*YUMPackageVerifier) CalculateHash

func (v *YUMPackageVerifier) CalculateHash(filePath string, hashType string) (string, error)

CalculateHash 计算文件哈希值

func (*YUMPackageVerifier) GetPackageInfo

func (v *YUMPackageVerifier) GetPackageInfo(pkgFile string) (PackageInfo, error)

GetPackageInfo 获取RPM包信息

func (*YUMPackageVerifier) VerifyDirectory

func (v *YUMPackageVerifier) VerifyDirectory(dir string, pkgName string) ([]string, error)

VerifyDirectory 验证目录中的所有包文件

func (*YUMPackageVerifier) VerifyPackage

func (v *YUMPackageVerifier) VerifyPackage(pkgFile string, pkgInfo PackageInfo) error

VerifyPackage 验证YUM包

type YUMPrimary added in v1.3.1

type YUMPrimary struct {
	XMLName  xml.Name     `xml:"metadata"`
	Packages []YUMPackage `xml:"package"`
}

YUMPrimary XML结构

type YUMRepomd added in v1.3.1

type YUMRepomd struct {
	XMLName xml.Name  `xml:"repomd"`
	Data    []YUMData `xml:"data"`
}

YUMRepomd XML结构

type YUMRequire added in v1.3.1

type YUMRequire struct {
	Name string `xml:"name,attr"`
}

type YUMVersion added in v1.3.1

type YUMVersion struct {
	Ver string `xml:"ver,attr"`
	Rel string `xml:"rel,attr"`
	Epo string `xml:"epoch,attr"`
}

type YumDownloader

type YumDownloader struct {
	// contains filtered or unexported fields
}

YumDownloader YUM包下载器

func NewYumDownloader

func NewYumDownloader(config *glpm.ManagerConfig, architecture string) *YumDownloader

NewYumDownloader 创建YUM下载器实例

func (*YumDownloader) Download

func (d *YumDownloader) Download(ctx context.Context, pkgName string, destDir string) error

Download 实现下载功能

func (*YumDownloader) GetDependencies

func (d *YumDownloader) GetDependencies(ctx context.Context, pkgName string) ([]string, error)

GetDependencies 获取指定包的所有依赖

func (*YumDownloader) GetManagerName

func (d *YumDownloader) GetManagerName() string

GetManagerName 获取包管理器名称

func (*YumDownloader) ListDownloadedFiles

func (d *YumDownloader) ListDownloadedFiles(destDir string) ([]string, error)

ListDownloadedFiles 列出已下载的文件

func (*YumDownloader) VerifyDownload

func (d *YumDownloader) VerifyDownload(ctx context.Context, pkgName string, destDir string) error

VerifyDownload 验证已下载的包

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL