Documentation
ΒΆ
Overview ΒΆ
Package nfpm provides ways to package programs in some linux packaging formats.
Index ΒΆ
- func ClearPackagers()
- func Enumerate() []string
- func PrepareForPackager(info *Info, packager string) (err error)
- func RegisterPackager(format string, p Packager)
- func Validate(info *Info) (err error)
- type APK
- type APKScripts
- type APKSignature
- type ArchLinux
- type ArchLinuxScripts
- type Config
- type Deb
- type DebScripts
- type DebSignature
- type DebTriggers
- type ErrFieldEmpty
- type ErrNoPackager
- type ErrSigningFailure
- type IPK
- type IPKAlternative
- type Info
- type MSIX
- type MSIXApplication
- type MSIXCapabilities
- type MSIXDependencies
- type MSIXIdentity
- type MSIXProperties
- type MSIXSignature
- type MSIXTargetDeviceFamily
- type MSIXVisualElements
- type Overridables
- type PackageSignature
- type Packager
- type PackagerWithExtension
- type RPM
- type RPMRequires
- type RPMScripts
- type RPMSignature
- type Scripts
Constants ΒΆ
This section is empty.
Variables ΒΆ
This section is empty.
Functions ΒΆ
func ClearPackagers ΒΆ
func ClearPackagers()
ClearPackagers clear all registered packagers, used for testing.
func Enumerate ΒΆ added in v2.37.0
func Enumerate() []string
Enumerate lists the available packagers
func PrepareForPackager ΒΆ added in v2.27.0
PrepareForPackager validates the configuration for the given packager and prepares the contents for said packager.
func RegisterPackager ΒΆ
RegisterPackager a new packager for the given format.
Types ΒΆ
type APK ΒΆ
type APK struct {
Arch string `yaml:"arch,omitempty" json:"arch,omitempty" jsonschema:"title=architecture in apk nomenclature"`
Signature APKSignature `yaml:"signature,omitempty" json:"signature,omitempty" jsonschema:"title=apk signature"`
Scripts APKScripts `yaml:"scripts,omitempty" json:"scripts,omitempty" jsonschema:"title=apk scripts"`
}
type APKScripts ΒΆ added in v2.5.0
type APKSignature ΒΆ
type APKSignature struct {
PackageSignature `yaml:",inline" json:",inline"`
// defaults to <maintainer email>.rsa.pub
KeyName string `` /* 127-byte string literal not displayed */
}
type ArchLinux ΒΆ added in v2.20.0
type ArchLinux struct {
Pkgbase string `` /* 147-byte string literal not displayed */
Arch string `yaml:"arch,omitempty" json:"arch,omitempty" jsonschema:"title=architecture in archlinux nomenclature"`
Packager string `yaml:"packager,omitempty" json:"packager,omitempty" jsonschema:"title=organization that packaged the software"`
Scripts ArchLinuxScripts `yaml:"scripts,omitempty" json:"scripts,omitempty" jsonschema:"title=archlinux-specific scripts"`
}
type ArchLinuxScripts ΒΆ added in v2.20.0
type Config ΒΆ
type Config struct {
Info `yaml:",inline" json:",inline"`
Overrides map[string]*Overridables `` /* 155-byte string literal not displayed */
// contains filtered or unexported fields
}
Config contains the top level configuration for packages.
func ParseFileWithEnvMapping ΒΆ added in v2.4.0
ParseFileWithEnvMapping decodes YAML data from a file path into a configuration struct.
func ParseWithEnvMapping ΒΆ added in v2.4.0
ParseWithEnvMapping decodes YAML data from an io.Reader into a configuration struct.
type Deb ΒΆ
type Deb struct {
Arch string `yaml:"arch,omitempty" json:"arch,omitempty" jsonschema:"title=architecture in deb nomenclature"`
ArchVariant string `` /* 142-byte string literal not displayed */
Scripts DebScripts `yaml:"scripts,omitempty" json:"scripts,omitempty" jsonschema:"title=scripts"`
Triggers DebTriggers `yaml:"triggers,omitempty" json:"triggers,omitempty" jsonschema:"title=triggers"`
Breaks []string `yaml:"breaks,omitempty" json:"breaks,omitempty" jsonschema:"title=breaks"`
Signature DebSignature `yaml:"signature,omitempty" json:"signature,omitempty" jsonschema:"title=signature"`
Compression string `` /* 163-byte string literal not displayed */
Fields map[string]string `yaml:"fields,omitempty" json:"fields,omitempty" jsonschema:"title=fields"`
Predepends []string `yaml:"predepends,omitempty" json:"predepends,omitempty" jsonschema:"title=predepends directive,example=nfpm"`
}
Deb is custom configs that are only available on deb packages.
type DebScripts ΒΆ
type DebScripts struct {
Rules string `yaml:"rules,omitempty" json:"rules,omitempty" jsonschema:"title=rules"`
Templates string `yaml:"templates,omitempty" json:"templates,omitempty" jsonschema:"title=templates"`
Config string `yaml:"config,omitempty" json:"config,omitempty" jsonschema:"title=config"`
}
DebScripts is scripts only available on deb packages.
type DebSignature ΒΆ
type DebSignature struct {
PackageSignature `yaml:",inline" json:",inline"`
// Only debsign still supported
Method string `yaml:"method,omitempty" json:"method,omitempty" jsonschema:"title=method role,enum=dpkg-sig,enum=debsign,default=debsign"`
// origin, maint or archive (defaults to origin)
Type string `yaml:"type,omitempty" json:"type,omitempty" jsonschema:"title=signer role,enum=origin,enum=maint,enum=archive,default=origin"`
Signer string `yaml:"signer,omitempty" json:"signer,omitempty" jsonschema:"title=signer"`
}
type DebTriggers ΒΆ
type DebTriggers struct {
Interest []string `yaml:"interest,omitempty" json:"interest,omitempty" jsonschema:"title=interest"`
InterestAwait []string `yaml:"interest_await,omitempty" json:"interest_await,omitempty" jsonschema:"title=interest await"`
InterestNoAwait []string `yaml:"interest_noawait,omitempty" json:"interest_noawait,omitempty" jsonschema:"title=interest noawait"`
Activate []string `yaml:"activate,omitempty" json:"activate,omitempty" jsonschema:"title=activate"`
ActivateAwait []string `yaml:"activate_await,omitempty" json:"activate_await,omitempty" jsonschema:"title=activate await"`
ActivateNoAwait []string `yaml:"activate_noawait,omitempty" json:"activate_noawait,omitempty" jsonschema:"title=activate noawait"`
}
DebTriggers contains triggers only available for deb packages. https://wiki.debian.org/DpkgTriggers https://man7.org/linux/man-pages/man5/deb-triggers.5.html
type ErrFieldEmpty ΒΆ
type ErrFieldEmpty struct {
// contains filtered or unexported fields
}
ErrFieldEmpty happens when some required field is empty.
func (ErrFieldEmpty) Error ΒΆ
func (e ErrFieldEmpty) Error() string
type ErrNoPackager ΒΆ
type ErrNoPackager struct {
// contains filtered or unexported fields
}
ErrNoPackager happens when no packager is registered for the given format.
func (ErrNoPackager) Error ΒΆ
func (e ErrNoPackager) Error() string
type ErrSigningFailure ΒΆ
type ErrSigningFailure struct {
Err error
}
ErrSigningFailure is returned whenever something went wrong during the package signing process. The underlying error can be unwrapped and could be crypto-related or something that occurred while adding the signature to the package.
func (*ErrSigningFailure) Error ΒΆ
func (s *ErrSigningFailure) Error() string
func (*ErrSigningFailure) Unwrap ΒΆ added in v2.46.1
func (s *ErrSigningFailure) Unwrap() error
type IPK ΒΆ added in v2.37.0
type IPK struct {
ABIVersion string `yaml:"abi_version,omitempty" json:"abi_version,omitempty" jsonschema:"title=abi version"`
Alternatives []IPKAlternative `yaml:"alternatives,omitempty" json:"alternatives,omitempty" jsonschema:"title=alternatives"`
Arch string `yaml:"arch,omitempty" json:"arch,omitempty" jsonschema:"title=architecture in deb nomenclature"`
AutoInstalled bool `yaml:"auto_installed,omitempty" json:"auto_installed,omitempty" jsonschema:"title=auto installed,default=false"`
Essential bool `yaml:"essential,omitempty" json:"essential,omitempty" jsonschema:"title=whether package is essential,default=false"`
Fields map[string]string `yaml:"fields,omitempty" json:"fields,omitempty" jsonschema:"title=fields"`
Predepends []string `yaml:"predepends,omitempty" json:"predepends,omitempty" jsonschema:"title=predepends directive,example=nfpm"`
Tags []string `yaml:"tags,omitempty" json:"tags,omitempty" jsonschema:"title=tags"`
}
IPK is custom configs that are only available on deb packages.
type IPKAlternative ΒΆ added in v2.37.0
type IPKAlternative struct {
Priority int `yaml:"priority,omitempty" json:"priority,omitempty" jsonschema:"title=priority"`
Target string `yaml:"target,omitempty" json:"target,omitempty" jsonschema:"title=target"`
LinkName string `yaml:"link_name,omitempty" json:"link_name,omitempty" jsonschema:"title=link name"`
}
IPKAlternative represents an alternative for an IPK package.
type Info ΒΆ
type Info struct {
Overridables `yaml:",inline" json:",inline"`
Name string `yaml:"name" json:"name" jsonschema:"title=package name"`
Arch string `yaml:"arch" json:"arch" jsonschema:"title=target architecture,example=amd64"`
Platform string `yaml:"platform,omitempty" json:"platform,omitempty" jsonschema:"title=target platform,example=linux,default=linux"`
Epoch string `yaml:"epoch,omitempty" json:"epoch,omitempty" jsonschema:"title=version epoch,example=2,default=extracted from version"`
Version string `yaml:"version" json:"version" jsonschema:"title=version,example=v1.0.2,example=2.0.1"`
VersionSchema string `` /* 134-byte string literal not displayed */
Release string `yaml:"release,omitempty" json:"release,omitempty" jsonschema:"title=version release,example=1"`
Prerelease string `yaml:"prerelease,omitempty" json:"prerelease,omitempty" jsonschema:"title=version prerelease,default=extracted from version"`
VersionMetadata string `yaml:"version_metadata,omitempty" json:"version_metadata,omitempty" jsonschema:"title=version metadata,example=git"`
Section string `yaml:"section,omitempty" json:"section,omitempty" jsonschema:"title=package section,example=default"`
Priority string `yaml:"priority,omitempty" json:"priority,omitempty" jsonschema:"title=package priority,example=extra"`
Maintainer string `yaml:"maintainer,omitempty" json:"maintainer,omitempty" jsonschema:"title=package maintainer,example=me@example.com"`
Description string `yaml:"description,omitempty" json:"description,omitempty" jsonschema:"title=package description"`
Vendor string `yaml:"vendor,omitempty" json:"vendor,omitempty" jsonschema:"title=package vendor,example=MyCorp"`
Homepage string `yaml:"homepage,omitempty" json:"homepage,omitempty" jsonschema:"title=package homepage,example=https://example.com"`
License string `yaml:"license,omitempty" json:"license,omitempty" jsonschema:"title=package license,example=MIT"`
Changelog string `` /* 183-byte string literal not displayed */
DisableGlobbing bool `` /* 133-byte string literal not displayed */
MTime time.Time `yaml:"mtime,omitempty" json:"mtime,omitempty" jsonschema:"title=time to set into the files generated by nFPM"`
Target string `yaml:"-" json:"-"`
}
Info contains information about a single package.
func WithDefaults ΒΆ
WithDefaults set some sane defaults into the given Info.
func (*Info) GetChangeLog ΒΆ
func (i *Info) GetChangeLog() (log *chglog.PackageChangeLog, err error)
GetChangeLog parses the provided changelog file.
type MSIX ΒΆ added in v2.46.0
type MSIX struct {
Arch string `yaml:"arch,omitempty" json:"arch,omitempty" jsonschema:"title=architecture in msix nomenclature"`
Publisher string `yaml:"publisher" json:"publisher" jsonschema:"title=publisher identity,example=CN=MyCompany\\, O=MyCompany\\, C=US"`
Identity MSIXIdentity `yaml:"identity,omitempty" json:"identity,omitempty" jsonschema:"title=package identity"`
Properties MSIXProperties `yaml:"properties,omitempty" json:"properties,omitempty" jsonschema:"title=package properties"`
Applications []MSIXApplication `yaml:"applications" json:"applications" jsonschema:"title=applications in the package"`
Dependencies MSIXDependencies `yaml:"dependencies,omitempty" json:"dependencies,omitempty" jsonschema:"title=target device families"`
Capabilities MSIXCapabilities `yaml:"capabilities,omitempty" json:"capabilities,omitempty" jsonschema:"title=package capabilities"`
Signature MSIXSignature `yaml:"signature,omitempty" json:"signature,omitempty" jsonschema:"title=msix signature"`
}
MSIX contains configs that are only available on MSIX packages.
type MSIXApplication ΒΆ added in v2.46.0
type MSIXApplication struct {
ID string `yaml:"id" json:"id" jsonschema:"title=application ID"`
Executable string `yaml:"executable" json:"executable" jsonschema:"title=executable path in package"`
EntryPoint string `yaml:"entry_point,omitempty" json:"entry_point,omitempty" jsonschema:"title=entry point,default=Windows.FullTrustApplication"`
VisualElements MSIXVisualElements `yaml:"visual_elements,omitempty" json:"visual_elements,omitempty" jsonschema:"title=visual elements"`
}
MSIXApplication describes an application entry in an MSIX package.
type MSIXCapabilities ΒΆ added in v2.46.0
type MSIXCapabilities struct {
Capabilities []string `yaml:"capabilities,omitempty" json:"capabilities,omitempty"`
DeviceCapabilities []string `yaml:"device_capabilities,omitempty" json:"device_capabilities,omitempty"`
Restricted []string `yaml:"restricted,omitempty" json:"restricted,omitempty"`
}
MSIXCapabilities contains capability declarations for MSIX packages.
type MSIXDependencies ΒΆ added in v2.46.0
type MSIXDependencies struct {
TargetDeviceFamilies []MSIXTargetDeviceFamily `yaml:"target_device_families,omitempty" json:"target_device_families,omitempty"`
}
MSIXDependencies contains dependency information for MSIX packages.
type MSIXIdentity ΒΆ added in v2.46.0
type MSIXIdentity struct {
ResourceID string `yaml:"resource_id,omitempty" json:"resource_id,omitempty" jsonschema:"title=resource identifier"`
}
MSIXIdentity contains identity fields for MSIX packages.
type MSIXProperties ΒΆ added in v2.46.0
type MSIXProperties struct {
DisplayName string `yaml:"display_name,omitempty" json:"display_name,omitempty" jsonschema:"title=display name"`
PublisherDisplayName string `yaml:"publisher_display_name,omitempty" json:"publisher_display_name,omitempty" jsonschema:"title=publisher display name"`
Logo string `yaml:"logo,omitempty" json:"logo,omitempty" jsonschema:"title=package logo path"`
}
MSIXProperties contains display properties for MSIX packages.
type MSIXSignature ΒΆ added in v2.46.0
type MSIXSignature struct {
PFXFile string `yaml:"pfx_file,omitempty" json:"pfx_file,omitempty" jsonschema:"title=PFX certificate file"`
KeyPassphrase string `yaml:"-" json:"-"` // populated from NFPM_MSIX_PASSPHRASE env var
}
MSIXSignature contains signing configuration for MSIX packages.
type MSIXTargetDeviceFamily ΒΆ added in v2.46.0
type MSIXTargetDeviceFamily struct {
Name string `yaml:"name" json:"name" jsonschema:"title=device family name,example=Windows.Desktop"`
MinVersion string `yaml:"min_version" json:"min_version" jsonschema:"title=minimum OS version,example=10.0.17763.0"`
MaxVersionTested string `yaml:"max_version_tested" json:"max_version_tested" jsonschema:"title=max tested version,example=10.0.22621.0"`
}
MSIXTargetDeviceFamily describes a target device family for an MSIX package.
type MSIXVisualElements ΒΆ added in v2.46.0
type MSIXVisualElements struct {
DisplayName string `yaml:"display_name,omitempty" json:"display_name,omitempty"`
Description string `yaml:"description,omitempty" json:"description,omitempty"`
BackgroundColor string `yaml:"background_color,omitempty" json:"background_color,omitempty" jsonschema:"default=transparent"`
Square150x150Logo string `yaml:"square150x150_logo,omitempty" json:"square150x150_logo,omitempty"`
Square44x44Logo string `yaml:"square44x44_logo,omitempty" json:"square44x44_logo,omitempty"`
}
MSIXVisualElements contains visual presentation settings for an MSIX application.
type Overridables ΒΆ
type Overridables struct {
Replaces []string `yaml:"replaces,omitempty" json:"replaces,omitempty" jsonschema:"title=replaces directive,example=nfpm"`
Provides []string `yaml:"provides,omitempty" json:"provides,omitempty" jsonschema:"title=provides directive,example=nfpm"`
Depends []string `yaml:"depends,omitempty" json:"depends,omitempty" jsonschema:"title=depends directive,example=nfpm"`
Recommends []string `yaml:"recommends,omitempty" json:"recommends,omitempty" jsonschema:"title=recommends directive,example=nfpm"`
Suggests []string `yaml:"suggests,omitempty" json:"suggests,omitempty" jsonschema:"title=suggests directive,example=nfpm"`
Conflicts []string `yaml:"conflicts,omitempty" json:"conflicts,omitempty" jsonschema:"title=conflicts directive,example=nfpm"`
Contents files.Contents `yaml:"contents,omitempty" json:"contents,omitempty" jsonschema:"title=files to add to the package"`
Umask os.FileMode `yaml:"umask,omitempty" json:"umask,omitempty" jsonschema:"title=umask for file contents,example=112"`
Scripts Scripts `yaml:"scripts,omitempty" json:"scripts,omitempty" jsonschema:"title=scripts to execute"`
RPM RPM `yaml:"rpm,omitempty" json:"rpm,omitempty" jsonschema:"title=rpm-specific settings"`
Deb Deb `yaml:"deb,omitempty" json:"deb,omitempty" jsonschema:"title=deb-specific settings"`
APK APK `yaml:"apk,omitempty" json:"apk,omitempty" jsonschema:"title=apk-specific settings"`
ArchLinux ArchLinux `yaml:"archlinux,omitempty" json:"archlinux,omitempty" jsonschema:"title=archlinux-specific settings"`
IPK IPK `yaml:"ipk,omitempty" json:"ipk,omitempty" jsonschema:"title=ipk-specific settings"`
MSIX MSIX `yaml:"msix,omitempty" json:"msix,omitempty" jsonschema:"title=msix-specific settings"`
}
Overridables contain the field which are overridable in a package.
type PackageSignature ΒΆ added in v2.2.3
type PackageSignature struct {
// PGP secret key, can be ASCII-armored
KeyFile string `yaml:"key_file,omitempty" json:"key_file,omitempty" jsonschema:"title=key file,example=key.gpg"`
KeyID *string `yaml:"key_id,omitempty" json:"key_id,omitempty" jsonschema:"title=key id,example=bc8acdd415bd80b3"`
KeyPassphrase string `yaml:"-" json:"-"` // populated from environment variable
// SignFn, if set, will be called with the package-specific data to sign.
// For deb and rpm packages, data is the full package content.
// For apk packages, data is the SHA1 digest of control tgz.
//
// This allows for signing implementations other than using a local file
// (for example using a remote signer like KMS).
SignFn func(data io.Reader) ([]byte, error) `yaml:"-" json:"-"` // populated when used as a library
}
type Packager ΒΆ
type Packager interface {
Package(info *Info, w io.Writer) error
ConventionalFileName(info *Info) string
}
Packager represents any packager implementation.
type PackagerWithExtension ΒΆ added in v2.20.0
type RPM ΒΆ
type RPM struct {
Arch string `yaml:"arch,omitempty" json:"arch,omitempty" jsonschema:"title=architecture in rpm nomenclature"`
BuildHost string `` /* 130-byte string literal not displayed */
Scripts RPMScripts `yaml:"scripts,omitempty" json:"scripts,omitempty" jsonschema:"title=rpm-specific scripts"`
Requires RPMRequires `yaml:"requires,omitempty" json:"requires,omitempty" jsonschema:"title=rpm-specific requires"`
Group string `yaml:"group,omitempty" json:"group,omitempty" jsonschema:"title=package group,example=Unspecified"`
Summary string `yaml:"summary,omitempty" json:"summary,omitempty" jsonschema:"title=package summary"`
Compression string `` /* 163-byte string literal not displayed */
Signature RPMSignature `yaml:"signature,omitempty" json:"signature,omitempty" jsonschema:"title=rpm signature"`
Packager string `yaml:"packager,omitempty" json:"packager,omitempty" jsonschema:"title=organization that actually packaged the software"`
Prefixes []string `yaml:"prefixes,omitempty" json:"prefixes,omitempty" jsonschema:"title=Prefixes for relocatable packages"`
}
RPM is custom configs that are only available on RPM packages.
type RPMRequires ΒΆ added in v2.47.0
type RPMRequires struct {
Post []string `yaml:"post,omitempty" json:"post,omitempty" jsonschema:"title=post requires directive,example=nfpm"`
}
RPMRequires represents qualified RPM Requires dependencies.
type RPMScripts ΒΆ added in v2.5.0
type RPMScripts struct {
PreTrans string `yaml:"pretrans,omitempty" json:"pretrans,omitempty" jsonschema:"title=pretrans script"`
PostTrans string `yaml:"posttrans,omitempty" json:"posttrans,omitempty" jsonschema:"title=posttrans script"`
Verify string `yaml:"verify,omitempty" json:"verify,omitempty" jsonschema:"title=verify script"`
}
RPMScripts represents scripts only available on RPM packages.
type RPMSignature ΒΆ
type RPMSignature struct {
PackageSignature `yaml:",inline" json:",inline"`
}
type Scripts ΒΆ
type Scripts struct {
PreInstall string `yaml:"preinstall,omitempty" json:"preinstall,omitempty" jsonschema:"title=pre install"`
PostInstall string `yaml:"postinstall,omitempty" json:"postinstall,omitempty" jsonschema:"title=post install"`
PreRemove string `yaml:"preremove,omitempty" json:"preremove,omitempty" jsonschema:"title=pre remove"`
PostRemove string `yaml:"postremove,omitempty" json:"postremove,omitempty" jsonschema:"title=post remove"`
}
Scripts contains information about maintainer scripts for packages.
Directories
ΒΆ
| Path | Synopsis |
|---|---|
|
Package apk implements nfpm.Packager providing .apk bindings.
|
Package apk implements nfpm.Packager providing .apk bindings. |
|
Package arch implements nfpm.Packager providing bindings for Arch Linux packages.
|
Package arch implements nfpm.Packager providing bindings for Arch Linux packages. |
|
cmd
|
|
|
nfpm
command
|
|
|
Package deb implements nfpm.Packager providing .deb bindings.
|
Package deb implements nfpm.Packager providing .deb bindings. |
|
Package deprecation provides centralized deprecation notice messaging for nfpm.
|
Package deprecation provides centralized deprecation notice messaging for nfpm. |
|
internal
|
|
|
cmd
Package cmd contains the main nfpm cli source code.
|
Package cmd contains the main nfpm cli source code. |
|
glob
Package glob provides file globbing for use in nfpm.Packager implementations
|
Package glob provides file globbing for use in nfpm.Packager implementations |
|
Package ipk implements nfpm.Packager providing .ipk bindings.
|
Package ipk implements nfpm.Packager providing .ipk bindings. |
|
Package msix implements nfpm.Packager providing .msix bindings.
|
Package msix implements nfpm.Packager providing .msix bindings. |
|
Package rpm implements nfpm.Packager providing .rpm bindings using google/rpmpack.
|
Package rpm implements nfpm.Packager providing .rpm bindings using google/rpmpack. |



