Chapter 1. Software Installation

Applications shall either be packaged in the RPM packaging format as defined in this specification, or supply an installer which is LSB conforming (for example, calls LSB commands and utilities). [1]

Distributions shall provide a mechanism for installing applications in this packaging format with some restrictions listed below. [2]

1.1. Package File Format

An RPM format file consists of 4 sections, the Lead, Signature, Header, and the Payload. All values are stored in network byte order.

Table 1-1. RPM File Format

Lead
Signature
Header
Payload

These 4 sections shall exist in the order specified.

The lead section is used to identify the package file.

The signature section is used to verify the integrity, and optionally, the authenticity of the majority of the package file.

The header section contains all available information about the package. Entries such as the package's name, version, and file list, are contained in the header.

The payload section holds the files to be install.

1.1.1. Lead Section

struct rpmlead {
    unsigned char magic[4];
    unsigned char major, minor;
    short type;
    short archnum;
    char name[66];
    short osnum;
    short signature_type;
    char reserved[16];
} ;

magic

Value identifying this file as an RPM format file. This value shall be "\355\253\356\333".

major

Value indicating the major version number of the file format version. This value shall be 3.

minor

Value indicating the minor revision number of file format version. This value shall be 0.

type

Value indicating whether this is a source or binary package. This value shall be 0 to indicate a binary package.

archnum

Value indicating the architecture for which this package is valid. This value is specified in the architecture-specific LSB specification.

name

A NUL terminated string that provides the package name. This name shall conform with the Package Naming section of this specification.

osnum

Value indicating the Operating System for which this package is valid. This value shall be 1.

signature_type

Value indicating the type of the signature used in the Signature part of the file. This value shall be 5.

reserved

Reserved space. The value is undefined.

1.1.2. Header Structure

The Header structure is used for both the Signature and Header Sections. A Header Structure consists of 3 parts, a Header record, followed by 1 or more Index records, followed by 0 or more bytes of data associated with the Index records. A Header structure shall be aligned to an 8 byte boundary.

Table 1-2. Signature Format

Header Record
Array of Index Records
Store of Index Values

1.1.2.1. Header Record

struct rpmheader {
    unsigned char magic[4];
    unsigned char reserved[4];
    int nindex;
    int hsize;
    } ;

magic

Value identifying this record as an RPM header record. This value shall be "\216\255\350\001".

reserved

Reserved space. This value shall be "\000\000\000\000".

nindex

The number of Index Records that follow this Header Record. There should be at least 1 Index Record.

hsize

The size in bytes of the storage area for the data pointed to by the Index Records.

1.1.2.2. Index Record

struct rpmhdrindex {
    int tag;
    int type;
    int offset;
    int count;
    } ;

tag

Value identifying the purpose of the data associated with this Index Record. This value of this field is dependent on the context in which the Index Record is used, and is defined below and in later sections.

type

Value identifying the type of the data associated with this Index Record. The possible type values are defined below.

offset

Location in the Store of the data associated with this Index Record. This value should between 0 and the value contained in the hsize of the Header Structure.

count

Size of the data associated with this Index Record. The count is the number of elements whose size is defined by the type of this Record.

1.1.2.2.1. Index Type Values

The possible values for the type field are defined in this table.

Table 1-3. Index Type values

TypeValueSize (in bytes)Alignment
RPM_NULL_TYPE0Not Implemented. 
RPM_CHAR_TYPE111
RPM_INT8_TYPE211
RPM_INT16_TYPE322
RPM_INT32_TYPE444
RPM_INT64_TYPE5Reserved. 
RPM_STRING_TYPE6variable, NUL terminated1
RPM_BIN_TYPE711
RPM_STRING_ARRAY_TYPE8Variable, sequence of NUL terminated strings1
RPM_I18NSTRING_TYPE9variable, sequence of NUL terminated strings1

The string arrays specified for enties of type RPM_STRING_ARRAY_TYPE and RPM_I18NSTRING_TYPE are vectors of strings in a contiguous block of memory, each element separated from its neighbors by a NUL character.

Index records with type RPM_I18NSTRING_TYPE shall always have a count of 1. The array entries in an index of type RPM_I18NSTRING_TYPE correspond to the locale names contained in the RPMTAG_HDRI18NTABLE index.

1.1.2.2.2. Index Tag Values

Some values are designated as header private, and may appear in any header structure. These are defined here. Additional values are defined in later sections.

Table 1-4. Header Private Tag Values

NameTag ValueTypeCountStatus
RPMTAG_HEADERSIGNATURES62BIN16Optional
RPMTAG_HEADERIMMUTABLE63BIN16Optional
RPMTAG_HEADERI18NTABLE100STRING_ARRAY Required

RPMTAG_HEADERSIGNATURES

The signature tag differentiates a signature header from a metadata header, and identifies the original contents of the signature header.

RPMTAG_HEADERIMMUTABLE

This tag contains an index record which specifies the portion of the Header Record which was used for the calculation of a signature. This data shall be preserved or any header-only signature will be invalidated.

RPMTAG_HEADERI18NTABLE

Contains a list of locales for which strings are provided in other parts of the package.

Not all Index records defined here will be present in all packages. Each tag value has a status which is defined here.

Required

This Index Record shall be present.

Optional

This Index Record may be present.

Informational

This Index Record may be present, but does not contribute to the processing of the package.

Deprecated

This Index Record should not be present.

Obsolete

This Index Record shall not be present.

Reserved

This Index Record shall not be present.

1.1.2.3. Header Store

The header store contains the values specified by the Index structures. These values are aligned according to their type and padding is used if needed. The store is located immediately following the Index structures.

1.1.3. Signature Section

The Signature section is implemented using the Header structure. The signature section defines the following additional tag values which may be used in the Index structures.

These values exist to provide additional information about the rest of the package.

Table 1-5. Signature Tag Values

NameTag ValueTypeCountStatus
SIGTAG_SIGSIZE1000INT321Required
SIGTAG_PAYLOADSIZE1007INT321Optional

SIGTAG_SIGSIZE

This tag specifies the combined size of the Header and Payload sections.

SIGTAG_PAYLOADSIZE

This tag specifies the uncompressed size of the Payload archive, including the cpio headers.

These values exist to ensure the integrity of the rest of the package.

Table 1-6. Signature Digest Tag Values

NameTag ValueTypeCountStatus
SIGTAG_MD51004BIN16Required
SIGTAG_SHA1HEADER1010STRING1Optional

SIGTAG_MD5

This tag specifies the 128-bit MD5 checksum of the combined Header and Archive sections.

SIGTAG_SHA1HEADER

This index contains the SHA1 checksum of the entire Header Section, including the Header Record, Index Records and Header store.

These values exist to provide authentication of the package.

Table 1-7. Signature Signing Tag Values

NameTag ValueTypeCountStatus
SIGTAG_PGP1002BIN1Optional
SIGTAG_GPG1005BIN65Optional
SIGTAG_DSAHEADER1011BIN1Optional
SIGTAG_RSAHEADER1012BIN1Optional

SIGTAG_PGP

This tag specifies the RSA signature of the combined Header and Payload sections. The data is formatted as a Version 3 Signature Packet as specified in RFC 2440: OpenPGP Message Format.

SIGTAG_GPG

The tag contains the DSA signature of the combined Header and Payload sections. The data is formatted as a Version 3 Signature Packet as specified in RFC 2440: OpenPGP Message Format.

SIGTAG_DSAHEADER

The tag contains the DSA signature of the Header section. The data is formatted as a Version 3 Signature Packet as specified in RFC 2440: OpenPGP Message Format. If this tag is present,then the SIGTAG_GPG tag shall also be present.

SIGTAG_RSAHEADER

The tag contains the RSA signature of the Header section.The data is formatted as a Version 3 Signature Packet as specified in RFC 2440: OpenPGP Message Format. If this tag is present, then the SIGTAG_PGP shall also be present.

1.1.4. Header Section

The Header section is implemented using the Header structure. The Header section defines the following additional tag values which may be used in the Index structures.

1.1.4.1. Package Information

The following tag values are used to indicate information that describes the package as a whole.

Table 1-8. Package Info Tag Values

NameTag ValueTypeCountStatus
RPMTAG_NAME1000STRING1Required
RPMTAG_VERSION1001STRING1Required
RPMTAG_RELEASE1002STRING1Required
RPMTAG_SUMMARY1004I18NSTRING1Required
RPMTAG_DESCRIPTION1005I18NSTRING1Required
RPMTAG_SIZE1009INT321Required
RPMTAG_DISTRIBUTION1010STRING1Informational
RPMTAG_VENDOR1011STRING1Informational
RPMTAG_LICENSE1014STRING1Required
RPMTAG_GROUP1016I18NSTRING1Required
RPMTAG_URL1020STRING1Informational
RPMTAG_OS1021STRING1Required
RPMTAG_ARCH1022STRING1Required
RPMTAG_SOURCERPM1044STRING1Informational
RPMTAG_ARCHIVESIZE1046INT321Optional
RPMTAG_RPMVERSION1064STRING1Informational
RPMTAG_COOKIE1094STRING1Optional
RPMTAG_DISTURL1123STRING1Informational
RPMTAG_PAYLOADFORMAT1124STRING1Required
RPMTAG_PAYLOADCOMPRESSOR1125STRING1Required
RPMTAG_PAYLOADFLAGS1126STRING1Required

RPMTAG_NAME

This tag specifies the name of the package.

RPMTAG_VERSION

This tag specifies the version of the package.

RPMTAG_RELEASE

This tag specifies the release of the package.

RPMTAG_SUMMARY

This tag specifies the summary description of the package. The summary value pointed to by this index record contains a one line description of the package.

RPMTAG_DESCRIPTION

This tag specifies the description of the package. The description value pointed to by this index record contains a full desription of the package.

RPMTAG_SIZE

This tag specifies the sum of the sizes of the regular files in the archive.

RPMTAG_DISTRIBUTION

A string containing the name of the distribution on which the package was built.

RPMTAG_VENDOR

A string containing the name of the organization that produced the package.

RPMTAG_LICENSE

This tag specifies the license which applies to this package.

RPMTAG_GROUP

This tag specifies the administrative group to which this package belongs.

RPMTAG_URL

URL for what??

RPMTAG_OS

This tag specifies the OS of the package. The OS value pointed to by this index record shall be "linux".

RPMTAG_ARCH

This tag specifies the architecture of the package. The architecture value pointed to by this index record is defined in architecture specific LSB specification.

RPMTAG_SOURCERPM

This tag specifies the name of the source RPM

RPMTAG_ARCHIVESIZE

This tag specifies the uncompressed size of the Payload archive, including the cpio headers.

RPMTAG_RPMVERSION

This tag indicates the version of RPM tool used to build this package. The value is unused.

RPMTAG_COOKIE

This tag contains an opaque string whose contents are undefined.

RPMTAG_DISTURL

URL of the distribution?

RPMTAG_PAYLOADFORMAT

This tag specifies the format of the Archive section. The format value pointed to by this index record shall be 'cpio'.

RPMTAG_PAYLOADCOMPRESSOR

This tag specifies the compression used on the Archive section. The compression value pointed to by this index record shall be 'gzip'

RPMTAG_PAYLOADFLAGS

This tag indicates the compression level used for the Payload. This value shall always be '9'.

1.1.4.2. Installation Information

The following tag values are used to provide information needed during the installation of the package.

Table 1-9. Installation Tag Values

NameTag ValueTypeCountStatus
RPMTAG_PREIN1023STRING1Optional
RPMTAG_POSTIN1024STRING1Optional
RPMTAG_PREUN1025STRING1Optional
RPMTAG_POSTUN1026STRING1Optional
RPMTAG_PREINPROG1085STRING1Optional
RPMTAG_POSTINPROG1086STRING1Optional
RPMTAG_PREUNPROG1087STRING1Optional
RPMTAG_POSTUNPROG1088STRING1Optional

RPMTAG_PREIN

This tag specifies the preinstall scriptlet. If present, then RPMTAG_PREINPROG shall also be present.

RPMTAG_POSTIN

This tag specifies the postinstall scriptlet. If present, then RPMTAG_POSTINPROG shall also be present.

RPMTAG_PREUN

his tag specifies the preuninstall scriptlet. If present, then RPMTAG_PREUNPROG shall also be present.

RPMTAG_POSTUN

This tag specified the postuninstall scriptlet. If present, then RPMTAG_POSTUNPROG shall also be present.

RPMTAG_PREINPROG

This tag specifies the name of the intepreter to which the preinstall scriptlet will be passed. The intepreter pointed to by this index record shall be '/bin/sh'.

RPMTAG_POSTINPROG

This tag specifies the name of the intepreter to which the postinstall scriptlet will be passed. The intepreter pointed to by this index record shall be '/bin/sh'.

RPMTAG_PREUNPROG

This tag specifies the name of the intepreter to which the preuninstall scriptlet will be passed. The intepreter pointed to by this index record shall be '/bin/sh'.

RPMTAG_POSTUNPROG

This program specifies the name of the intepreter to which the postuninstall scriptlet will be passed. The intepreter pointed to by this index record shall be '/bin/sh'.

1.1.4.3. File Information

The following tag values are used to provide information about the files in the payload. This information is provided in the header to allow more efficient access of the information.

Table 1-10. File Info Tag Values

NameTag ValueTypeCountStatus
RPMTAG_OLDFILENAMES1027STRING_ARRAY Optional
RPMTAG_FILESIZES1028INT32 Required
RPMTAG_FILEMODES1030INT16 Required
RPMTAG_FILERDEVS1033INT16 Required
RPMTAG_FILEMTIMES1034INT32 Required
RPMTAG_FILEMD5S1035STRING_ARRAY Required
RPMTAG_FILELINKTOS1036STRING_ARRAY Required
RPMTAG_FILEFLAGS1037INT32 Required
RPMTAG_FILEUSERNAME1039STRING_ARRAY Required
RPMTAG_FILEGROUPNAME1040STRING_ARRAY Required
RPMTAG_FILEDEVICES1095INT32 Required
RPMTAG_FILEINODES1096INT32 Required
RPMTAG_FILELANGS1097STRING_ARRAY Required
RPMTAG_DIRINDEXES1116INT32 Optional
RPMTAG_BASENAMES1117STRING_ARRAY Optional
RPMTAG_DIRNAMES1118STRING_ARRAY Optional

RPMTAG_OLDFILENAMES

This tag specifies the filenames when not in a compressed format as determined by the absense of rpmlib(CompressedFileNames) in the RPMTAG_REQUIRENAME index.

RPMTAG_FILESIZES

This tag specifies the size of each file in the archive.

RPMTAG_FILEMODES

This tag specifies the mode of each file in the archive.

RPMTAG_FILERDEVS

This tag specifies the device number from which the file was copied.

RPMTAG_FILEMTIMES

This tag specifies the modification time in seconds since the epoch of each file in the archive.

RPMTAG_FILEMD5S

This tag specifies the ASCII representation of the MD5 sum of the corresponding file contents. This value is empty if the corresponding archive entry is not a regular file.

RPMTAG_FILELINKTOS

The target for a symlink, otherwise NULL.

RPMTAG_FILEFLAGS

This tag specifies the bit(s) to classify and control how files are to be installed.

RPMTAG_FILEUSERNAME

This tag specifies the owner of the corresponding file.

RPMTAG_FILEGROUPNAME

This tag specifies the of the corresponding file.

RPMTAG_FILEDEVICES

This tag specifies the 16 bit device number from which the file was copied.

RPMTAG_FILEINODES

This tag specifies the inode value from the original file on the build host.

RPMTAG_FILELANGS

This tag specifies a per-file locale marker used to install only locale specific subsets of files when the package is installed.

RPMTAG_DIRINDEXES

This tag specifies the index into the array provided by the RPMTAG_DIRNAMES Index which contains the directory name for the corresponding filename.

RPMTAG_BASENAMES

This tag specifies the base portion of the corresponding filename.

RPMTAG_DIRNAMES

This tag specifies the directory portion of the corresponding filename. Each directory name shall contain a trailing '/'.

One of RPMTAG_OLDFILENAMES or the tuple RPMTAG_DIRINDEXES,RPMTAG_BASENAMES,RPMTAG_DIRNAMES shall be present, but not both.

1.1.4.4. Dependency Information

The following tag values are used to provide information about interdependencies between packages.

Table 1-11. Package Dependency Tag Values

NameTag ValueTypeCountStatus
RPMTAG_PROVIDENAME1047STRING_ARRAY1Required
RPMTAG_REQUIREFLAGS1048INT32 Required
RPMTAG_REQUIRENAME1049STRING_ARRAY Required
RPMTAG_REQUIREVERSION1050STRING_ARRAY Required
RPMTAG_CONFLICTFLAGS1053INT32 Optional
RPMTAG_CONFLICTNAME1054STRING_ARRAY Optional
RPMTAG_CONFLICTVERSION1055STRING_ARRAY Optional
RPMTAG_OBSOLETENAME1090STRING_ARRAY Optional
RPMTAG_PROVIDEFLAGS1112INT32 Required
RPMTAG_PROVIDEVERSION1113STRING_ARRAY Required
RPMTAG_OBSOLETEFLAGS1114INT321Optional
RPMTAG_OBSOLETEVERSION1115STRING_ARRAY Optional

RPMTAG_PROVIDENAME

This tag indicates the name of the dependency provided by this package.

RPMTAG_REQUIREFLAGS

Bits(s) to specify the dependency range and context.

RPMTAG_REQUIRENAME

This tag indicates the dependencies for this package.

RPMTAG_REQUIREVERSION

This tag indicates the versions associated with the values found in the RPMTAG_REQUIRENAME Index.

RPMTAG_CONFLICTFLAGS

Bits(s) to specify the conflict range and context.

RPMTAG_CONFLICTNAME

This tag indicates the conflictind dependencies for this package.

RPMTAG_CONFLICTVERSION

This tag indicates the versions associated with the values found in the RPMTAG_CONFLICTNAME Index.

RPMTAG_OBSOLETENAME

This tag indicates the obsoleted dependencies for this package.

RPMTAG_PROVIDEFLAGS

Bits(s) to specify the conflict range and context.

RPMTAG_PROVIDEVERSION

This tag indicates the versions associated with the values found in the RPMTAG_PROVIDENAME Index.

RPMTAG_OBSOLETEFLAGS

Bits(s) to specify the conflict range and context.

RPMTAG_OBSOLETEVERSION

This tag indicates the versions associated with the values found in the RPMTAG_OBSOLETENAME Index.

1.1.4.4.1. Package Dependency Values

The package dependencies are stored in the RPMTAG_REQUIRENAME and RPMTAG_REQUIREVERSION index records. The following values may be used.

Table 1-12. Index Type values

NameVersionMeaningStatus
rpmlib(VersionedDependencies)3.0.3-1Indicates that the package contains RPMTAG_PROVIDENAME, RPMTAG_OBSOLETENAME or RPMTAG_PREREQ records that have a version associated with them.Optional
rpmlib(PayloadFilesHavePrefix)4.0-1Indicates the filenames in the Archive have had "." prepended to them.Optional
rpmlib(CompressedFileNames)3.0.4-1Indicates that the filenames in the Payload are represented in the RPMTAG_DIRINDEXES, RPMTAG_DIRNAME and RPMTAG_BASENAMES indexes.Optional
/bin/sh Interpreter usually required for installation scripts.Optional

Additional dependencies are specified in the Package Dependencies section of this document, and the architecture specific documents.

1.1.4.4.2. Package Dependencies Attributes

The package dependency attributes are stored in the RPMTAG_REQUIREFLAGS, RPMTAG_PROVIDEFLAGS and RPMTAG_OBSOLETEFLAGS index records. The following values may be used.

Table 1-13. Package Dependency Attributes

NameValueMeaning
RPMSENSE_LESS0x02 
RPMSENSE_GREATER0x04 
RPMSENSE_EQUAL0x08 
RPMSENSE_PREREQ0x40 
RPMSENSE_INTERP0x100 
RPMSENSE_SCRIPT_PRE0x200 
RPMSENSE_SCRIPT_POST0x400 
RPMSENSE_SCRIPT_PREUN0x800 
RPMSENSE_SCRIPT_POSTUN0x1000 
RPMSENSE_RPMLIB0x1000000 

1.1.4.5. Other Information

The following tag values are also found in the Header section.

Table 1-14. Other Tag Values

NameTag ValueTypeCountStatus
RPMTAG_BUILDTIME1006INT321Informational
RPMTAG_BUILDHOST1007STRING1Informational
RPMTAG_FILEVERIFYFLAGS1045INT32 Optional
RPMTAG_CHANGELOGTIME1080INT32 Optional
RPMTAG_CHANGELOGNAME1081STRING_ARRAY Optional
RPMTAG_CHANGELOGTEXT1082STRING_ARRAY Optional
RPMTAG_OPTFLAGS1122STRING1Informational
RPMTAG_RHNPLATFORM1131STRING1Deprecated
RPMTAG_PLATFORM1132STRING1Informational

RPMTAG_BUILDTIME

This tag specifies the time as seconds since the epoch at which the package was built.

RPMTAG_BUILDHOST

This tag specifies the hostname of the system on which which the package was built.

RPMTAG_FILEVERIFYFLAGS

This tag specifies the bit(s) to control how files are to be verified after install, specifying which checks should be performed.

RPMTAG_CHANGELOGTIME

This tag specifies the Unix time in seconds since the epoch associated with each entry in the Changelog file.

RPMTAG_CHANGELOGNAME

This tag specifies the name of who made a change to this package

RPMTAG_CHANGELOGTEXT

This tag specifies the changes asssociated with a changelog entry.

RPMTAG_OPTFLAGS

This tag indicates additional flags which may have been passed to the compiler when building this package.

RPMTAG_RHNPLATFORM

This tag contains an opaque string whose contents are undefined.

RPMTAG_PLATFORM

This tag contains an opaque string whose contents are undefined.

1.1.5. Payload Section

The Payload section contains a compressed cpio archive. The format of this section is defined by RFC 1952: GZIP File Format Specification.

When uncompressed, the cpio archive contains a sequence of records for each file. Each record contains a CPIO Header, Filename, Padding, and File Data.

Table 1-15. CPIO File Format

CPIO HeaderHeader structure as defined below.
FilenameNUL terminated ASCII string containing the name of the file.
Padding0-3 bytes as needed to align the file stream to a 4 byte boundary.
File dataThe contents of the file.
Padding0-3 bytes as needed to align the file stream to a 4 byte boundary.

The CPIO Header uses the following header structure (sometimes referred to as "new ASCII" or "SVR4 cpio"). All numbers are stored as ASCII representations of their hexadecimal value with leading zeros as needed to fill the field. With the exception of c_namesize and the corresponding name string, and c_checksum, all information contained in the CPIO Header is also represented in the Header Section. The values in in the CPIO Header shall match the values contained in the Header Section.

struct {
        char    c_magic[6];
        char    c_ino[8];
        char    c_mode[8];
        char    c_uid[8];
        char    c_gid[8];
        char    c_nlink[8];
        char    c_mtime[8];
        char    c_filesize[8];
        char    c_devmajor[8];
        char    c_devminor[8];
        char    c_rdevmajor[8];
        char    c_rdevminor[8];
        char    c_namesize[8];
        char    c_checksum[8];
        };

c_magic

Value identifying this cpio format. This value shall be "070701".

c_ino

This field contains the inode number from the filesystem from which the file was read. This field is ignored when installing a package. This field shall match the corresponding value in the RPMTAG_FILEINODES index in the Header section.

c_mode

Permission bits of the file. This is an ascii representation of the hexadecimal number representing the bit as defined for the st_mode field of the stat structure defined for the stat function. This field shall match the corresponding value in the RPMTAG_FILEMODES index in the Header section.

c_uid

Value identifying this owner of this file. This value matches the uid value of the corresponding user in the RPMTAG_FILEUSERNAME as found on the system where this package was built. The username specified in RPMTAG_FILEUSERNAME should take precedence when installing the package.

c_gid

Value identifying this group of this file. This value matches the gid value of the corresponding user in the RPMTAG_FILEGROUPNAME as found on the system where this package was built. The groupname specified in RPMTAG_FILEGROUPNAME should take precedence when installing the package.

c_nlink

Value identifying the number of links associated with this file. If the value is greater than 1, then this filename will be linked to 1 or more files in this archive that has a matching value for the c_ino, c_devmajor and c_devminor fields.

c_mtime

Value identifying the modification time of the file when it was read. This field shall match the corresponding value in the RPMTAG_FILEMTIMES index in the Header section.

c_filesize

Value identifying the size of the file. This field shall match the corresponding value in the RPMTAG_FILESIZES index in the Header section.

c_devmajor

The major number of the device containing the file system from which the file was read. With the exception of processing files with c_nlink >1, this field is ignored when installing a package. This field shall match the corresponding value in the RPMTAG_FILEDEVICES index in the Header section.

c_devminor

The minor number of the device containing the file system from which the file was read. With the exception of processing files with c_nlink >1, this field is ignored when installing a package. This field shall match the corresponding value in the RPMTAG_FILEDEVICES index in the Header section.

c_rdevmajor

The major number of the raw device containing the file system from which the file was read. This field is ignored when installing a package. This field shall match the corresponding value in the RPMTAG_RDEVS index in the Header section.

c_rdevminor

The minor number of the raw device containing the file system from which the file was read. This field is ignored when installing a package. This field shall match the corresponding value in the RPMTAG_RDEVS index in the Header section.

c_namesize

Value identifying the length of the filename, which is located immediately following the CPIO Header structure.

c_checksum

Value containing the CRC checksum of the file data. This field is not used, and shall contain the value "00000000". This field is ignored when installing a package.

A record with the filename "TRAILER!!!" indicates the last record in the archive.

Notes

[1]

Supplying an RPM format package is encouraged because it makes systems easier to manage. A future version of the LSB may require RPM, or specify a way for an installer to update a package database.

Applications are also encouraged to uninstall cleanly.

[2]

The distribution itself may use a different packaging format for its own packages, and of course it may use any available mechanism for installing the LSB-conformant packages.