summaryrefslogtreecommitdiff
path: root/docs/manual/tags.md
blob: 8e706884ad67ff12daeec2338f232e3b4c94fcb5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
---
layout: default
title: rpm.org - RPM Tags
---
# RPM Tags

The package's meta data in stored in the RPM header. The header is a binary data structure that stores the single pieces of data in tags. Each tag has a pre-defined meaning and data type. These are not stored in the header itselfs but need to be known by the code reading the header. In the header the tags are only refered by their number.

## Tag types

### Scalar types

There are four unsigned integer types for RPM tags:

* `int8`
* `int16`
* `int32`
* `int64`

Additionally there is a `char` datatype that is also only used once.

There is a `bin` datatype for arbitrary data that is basically an `char` array.

There are two string types: Plain `string` with is zero terminated and of arbitary length (within the header size restriction).

`i18nstring`s are translated to the requested locale when queried.

### Arrays

Each tag is either of a plain scalar type or is an array of one of these types. While not enforced by the type system the RPM code assumes that tags belonging together have the same number of entries e.g. one for each file.

### Mappings

While not technically a type on its own there are several mappings. These consists of two or more tags working together. One array (called dictionary, often named `*dict`) contains a list of values while another tag (called an index) contains integers referencing a position in the first one. The index can either be a plain integer or an integer array.

## Base package tags

Tag Name    | Value| Type       | Description
------------|------|------------|------------
Name        | 1000 | string     | Package name.
Version     | 1001 | string     | Package version.
Release     | 1002 | string     | Package release.
Epoch       | 1003 | int32      | Package epoch (optional). An absent epoch is equal to epoch value `0`.
License     | 1014 | string     | License of the package contents.
Summary     | 1004 | i18nstring | One line summary of the package's purpose.
Description | 1005 | i18nstring | Multiline description of the package's purpose
Os          | 1021 | string     | The operating system the package is for
Arch        | 1022 | string     | The architecture the package is for. `noarch` is a special case denoting a architecture independent package.

## Informative package tags

Tag Name           | Value| Type         | Description
-------------------|------|--------------|------------
Buildhost          | 1007 | string       | Hostname of the system the package was built on.
Buildtime          | 1006 | int32        | Unix timestamp of package build time.
Bugurl             | 5012 | string       | URL to package bug tracker.
Changelogname      | 1081 | string array | Per entry changelog author information, typically `name <email>`.
Changelogtext      | 1082 | string array | Per entry changelog text.
Changelogtime      | 1080 | int32 array  | Per entry changelog Unix timestamp.
Cookie             | 1094 | string       | An opaque value for tracking packages from a single build operation.
Distribution       | 1010 | string       | Distribution name.
Disttag            | 1155 | string       | Distribution acronym.
Disturl            | 1123 | string       | Distribution specific URL of the package.
Encoding           | 5062 | string       | Encoding of the header string data. When present it is always `utf-8` and the data has actually been validated.
Group              | 1016 | i18nstring   | Group of the package.
Modularitylabel    | 5096 | string
Optflags           | 1122 | string       | `%{optflags}` value at the time of package build.
Packager           | 1015 | string       | Packager contact information.
Platform           | 1132 | string       | Package platform (arch-os-vendor).
Policies           | 1150 | string array
Policyflags        | 5033 | int32 array
Policynames        | 5030 | string array
Policytypes        | 5031 | string array
Policytypesindexes | 5032 | int32 array
Rpmversion         | 1064 | string       | Version of rpm used to build the package.
Sourcepkgid        | 1146 | bin
Sourcerpm          | 1044 | string       | Package source rpm file name.
Translationurl     | 5100 | string       | URL of upstream translation service/repository
UpstreamReleases   | 5101 | string       | URL to check for newer releases from upstream e.g. for build systems to check for newer upstream releases and then to notify the packager.
Url                | 1020 | string       | Package URL, typically project upstream website.
Vcs                | 5034 | string       | (Public) upstream source code VCS location. Format `<vcs>:<address>` with `<vcs>` being the VCS command used (e.g. `git`, `svn`, `hg`, ...) and `<address>` being the location of the repository as used by the VCS tool to clone/checkout the repository (e.g. `https://github.com/rpm-software-management/rpm.git`).
Vendor             | 1011 | string       | Package vendor contact information.

## Packages with files

Tag Name          | Value| Type         | Description
------------------|------|--------------|------------
Archivesize       | 1046 | int32        | (Compressed) payload size.
Dirnames          | 1118 | string array | dirname(3) components of contained paths
Filedigestalgo    | 5011 | int32        | ID of file digest algorithm. If missing, considered `0` for `md5`.
Longarchivesize   | 271  | int64        | (Compressed) payload size when > 4GB.
Longsize          | 5009 | int64        | Installed package size when > 4GB.
Payloadcompressor | 1125 | string       | Payload compressor name (as passed to rpmio `Fopen()`)
Payloadflags      | 1126 | string       | Payload compressor level (as passed to rpmio `Fopen()`)
Payloadformat     | 1124 | string       | Payload format (`cpio`)
Prefixes          | 1098 | string array | Relocatable prefixes (on relocatable packages).
Size              | 1009 | int32        | Installed package size.

## Per-file information

Tag Name        | Value| Type         | Description
----------------|------|--------------|------------
Basenames       | 1117 | string array | basename(3) of the path.
Dirindexes      | 1116 | int32 array  | Index into dirname(3) array of the pacakge (see Dirname tag).
Filedevices     | 1095 | int32 array  | Abstract device ID (hardlink calculation only).
Filedigests     | 1035 | string array | File cryptographic digest (aka hash) using algorithm specified in  Filedigestalgo.
Fileflags       | 1037 | int32 array  | File virtual attributes (doc, license, ghost, artifact etc)
Filegroupname   | 1040 | string array | Unix group name.
Fileinodes      | 1096 | int32 array  | Abstract inode number (hardlink calculation only).
Filelangs       | 1097 | string array | Optional language of the file (eg man page translations)
Filelinktos     | 1036 | string array | Symlink target for symlink files.
Filemodes       | 1030 | int16 array  | Unix file mode.
Filemtimes      | 1034 | int32 array  | Unix file modification timestamp (aka mtime).
Filerdevs       | 1033 | int16 array  | Device ID (of device files)
Filesizes       | 1028 | int32 array  | File size (when all files are < 4GB)
Fileusername    | 1039 | string array | Unix owner name
Fileverifyflags | 1045 | int32 array  | File verification flags (which aspects of file to verify)
Longfilesizes   | 5008 | int64 array  | File size (when files > 4GB are present)

### Optional file information

Tag Name            | Value| Type         | Description
--------------------|------|--------------|------------
Classdict           | 1142 | string array | File class (libmagic string) dictionary
Dependsdict         | 1145 | int32 array  | File dependencies dictionary
Filecaps            | 5010 | string array | `cap_to_text(3)` textual representation of file capabilities.
Fileclass           | 1141 | int32 array  | Index into Classdict
Filecolors          | 1140 | int32 array  | File "color" - 1 for 32bit ELF, 2 for 64bit ELF and 0 otherwise
Filedependsn        | 1144 | int32 array  | Number of file dependencies in Dependsdict, starting from Filedependsx
Filedependsx        | 1143 | int32 array  | Index into Dependsdict denoting start of this file's dependencies.
Filesignaturelength | 5091 | int32        | IMA signature length.
Filesignatures      | 5090 | string array | IMA signature (hex encoded).
Veritysignaturealgo | 277  | int32        | fsverity signature algorithm ID.
Veritysignatures    | 276  | string array | fsverity signature (base64 encoded).

## Dependency information

All dependency tags follow the same pattern. The name tag contains
dependency token names, the flags tag may contain additional context
information and the dependency is versioned as per (`RPMSENSE_*` bitfield),
the range related to the version specified in the version tag.

### Hard dependencies

Tag Name       | Value| Type
---------------|------|--------------
Providename    | 1047 | string array
Provideversion | 1113 | string array
Provideflags   | 1112 | int32 array

Requirename    | 1049 | string array
Requireversion | 1050 | string array
Requireflags   | 1048 | int32 array

Conflictname    | 1054 | string array
Conflictversion | 1055 | string array
Conflictflags   | 1053 | int32 array

Obsoletename    | 1090 | string array
Obsoleteversion | 1115 | string array
Obsoleteflags   | 1114 | int32 array

### Soft dependencies

Tag Name       | Value| Type
---------------|------|--------------
Enhancename    | 5055 | string array
Enhanceversion | 5056 | string array
Enhanceflags   | 5057 | int32 array

Recommendname    | 5046 | string array
Recommendversion | 5047 | string array
Recommendflags   | 5048 | int32 array

Suggestname    | 5049 | string array
Suggestversion | 5050 | string array
Suggestflags   | 5051 | int32 array

Supplementname    | 5052 | string array
Supplementversion | 5053 | string array
Supplementflags   | 5054 | int32 array

Ordername    | 5035 | string array
Orderversion | 5036 | string array
Orderflags   | 5037 | int32 array

## Scriptlets

### Basic scriptlets

All scriptlet tags follow the same pattern. The main tag contains the
corresponding scriptlet (eg `%postin`) body. If present, the prog tag
denotes the scriptlet interpreter and possible arguments, and flags tag
contains additional processing information such as whether to macro
expand the scriptlet body.

`%postin` script is executed right after the package got installed

Tag Name    | Value| Type
------------|------|--------------
Postin      | 1024 | string
Postinflags | 5021 | int32
Postinprog  | 1086 | string array

`%posttrans` scripts are all executed at the end of the transaction that installed their packages

Posttrans      | 1152 | string
Posttransflags | 5025 | int32
Posttransprog  | 1154 | string array

`%postuntrans` scripts are all executed at the end of the transaction that removes their packages

Postuntrans      | 5104 | string
Postuntransflags | 5108 | int32
Postuntransprog  | 5106 | string array

`%postun` script is executed right after the package was removed

Postun      | 1026 | string
Postunflags | 5023 | int32
Postunprog  | 1088 | string array

`%prein` script is executed right before the package is installed

Prein      | 1023 | string
Preinflags | 5020 | int32
Preinprog  | 1085 | string array

`%pretrans` scripts are executed for to be installed packages before any packages are installed/removed

Pretrans      | 1151 | string
Pretransflags | 5024 | int32
Pretransprog  | 1153 | string array

`%preuntrans` scripts are executed for to be removed packages before any packages are installed/removed

Preuntrans      | 5103 | string
Preuntransflags | 5107 | int32
Preuntransprog  | 5105 | string array

`%preun` script is executed right before the package gets removed

Preun      | 1025 | string
Preunflags | 5022 | int32
Preunprog  | 1087 | string array

`%verify` script is executed when the package is verified (e.g. with `rpm -V`)

Verifyscript      | 1079 | string
Verifyscriptflags | 5026 | int32
Verifyscriptprog  | 1091 | string array

### Triggers

[Triggers](triggers.md) are stored in a combination of dependency and scriptlet tags.

Triggerscripts, Triggerscriptflags and Triggerscriptprog form a scriptlet
triplet, and Triggername, Triggerflags, Triggerversion form a dependency
triplet. Triggerindexes is a per dependency index into Triggerscripts,
binding the two triplets together.

Tag Name           | Value| Type
-------------------|------|--------------
Triggerflags       | 1068 | int32 array
Triggerindex       | 1069 | int32 array
Triggername        | 1066 | string array
Triggerscriptflags | 5027 | int32 array
Triggerscriptprog  | 1092 | string array
Triggerscripts     | 1065 | string array
Triggerversion     | 1067 | string array

### File triggers

[File trigger](file_triggers.md) tags are like normal trigger tags,
with an additional priority tag to affect trigger running order. File
triggers in Filetrigger-tags run once per triggered package, whereas
triggers in Transfiletrigger-tags run once per transaction.

Tag Name               | Value| Type
-----------------------|------|--------------
Filetriggerflags       | 5072 | int32 array
Filetriggerindex       | 5070 | int32 array
Filetriggername        | 5069 | string array
Filetriggerpriorities  | 5084 | int32 array
Filetriggerscriptflags | 5068 | int32 array
Filetriggerscriptprog  | 5067 | string array
Filetriggerscripts     | 5066 | string array
Filetriggerversion     | 5071 | string array

Transfiletriggerflags       | 5082 | int32 array
Transfiletriggerindex       | 5080 | int32 array
Transfiletriggername        | 5079 | string array
Transfiletriggerpriorities  | 5085 | int32 array
Transfiletriggerscriptflags | 5078 | int32 array
Transfiletriggerscriptprog  | 5077 | string array
Transfiletriggerscripts     | 5076 | string array
Transfiletriggerversion     | 5081 | string array

## Signatures and digests

[Signatures](signatures.md) allow to verify the origin of a package.

Tag Name          | Value| Type         | Description
------------------|------|--------------|------------
Dsaheader         | 267  | bin          | OpenPGP DSA signature of the header (if thus signed)
Longsigsize       | 270  | int64        | Header+payload size if > 4GB.
Payloaddigest     | 5092 | string array | Cryptographic digest of the compressed payload.
Payloaddigestalgo | 5093 | int32        | ID of the payload digest algorithm.
Payloaddigestalt  | 5097 | string array | Cryptographic digest of the uncompressed payload.
Rsaheader         | 268  | bin          | OpenPGP RSA signature of the header (if thus signed).
Sha1header        | 269  | string       | SHA1 digest of the header.
Sha256header      | 273  | string       | SHA256 digest of the header.
Siggpg            | 262  | bin          | OpenPGP DSA signature of the header+payload (if thus signed).
Sigmd5            | 261  | bin          | MD5 digest of the header+payload.
Sigpgp            | 259  | bin          | OpenPGP RSA signature of the header+payload (if thus signed).
Sigsize           | 257  | int32        | Header+payload size.

## Installed package headers only

The following tags are added to the headers during installation and do not
exist in RPM package files.


Tag Name       | Value| Type         | Description
---------------|------|--------------|------------
Filestates     | 1029 | char array   | Per-file installed status information (installed/skipped/forced etc)
Installcolor   | 1127 | int32        | "Color" of transaction in which the package was installed.
Installtid     | 1128 | int32        | ID of transaction in which the package was installed.
Installtime    | 1008 | int32        | Unix timestamp of package installation.
Instprefixes   | 1099 | string array
Origbasenames  | 1120 | string array | Original Basenames (relocated packages only)
Origdirindexes | 1119 | int32 array  | Original Dirindexes (relocated packages only)
Origdirnames   | 1121 | string array | Original Dirnames (relocated packages only)


## Source packages

Tag Name      | Value| Type         | Description
--------------|------|--------------|------------
Buildarchs    | 1089 | string array | If present, specifies the architectures the package may be built for.
Excludearch   | 1059 | string array | If present, limits the architectures on which the package is buildable by excluding those specified.
Excludeos     | 1060 | string array | If present, limits the operating systems on which the package is buildable by excluding those specified.
Exclusivearch | 1061 | string array | If present, limits the architectures on which the package is buildable exclusively to those specified.
Exclusiveos   | 1062 | string array | If present, limits the operating systems on which the package is buildable exclusively to those specified.
Nopatch       | 1052 | int32 array  | Denotes a patch number for which source is not supplied.
Nosource      | 1051 | int32 array  | Denotes a source number for which source is not supplied.
Patch         | 1019 | string array | Patch file names.
Source        | 1018 | string array | Source file names.
Sourcepackage | 1106 | int32        | Denotes a source rpm.
Spec          | 5099 | string       | Expanded and parsed spec contents.

## Internal / special

Tag Name        | Value| Type         | Description
----------------|------|--------------|------------
Headeri18ntable | 100 | string array | Locales for which the header has translations.
Headerimmutable | 63  | bin          | Special tag to return the unmodified, original image of the header even after data has been added to it in eg installation.
Pubkeys         | 266  | string array | used in gpg-pubkey special packages in the RPM data base

## Deprecated / Obsolete

These tags are not longer in active use. If encountered in packages
they are ignored.

Tag Name           | Value| Type         | Description
-------------------|------|--------------|------------
Filecontexts       | 1147 | string array
Fscontexts         | 1148 | string array
Gif                | 1012 | bin
Icon               | 1043 | bin
Oldenhancesname    | 1159 | string array
Oldenhancesversion | 1160 | string array
Oldenhancesflags   | 1161 | int32 array
Oldfilenames       | 1027 | string array
Oldsuggestsname    | 1156 | string array
Oldsuggestsversion | 1157 | string array
Oldsuggestsflags   | 1158 | int32 array
Patchesflags       | 1134 | int32 array
Patchesname        | 1133 | string array
Patchesversion     | 1135 | string array
Recontexts         | 1149 | string array
Removetid          | 1129 | int32
Xpm                | 1013 | bin

## Aliases

Aliases are simply shorthands or alternative names for other tags.

Alias Name  | Tag             | Type         | Description
------------|-----------------|--------------|------------
C           | Conflictname    | string array
Conflicts   | Conflictname    | string array
E           | Epoch           | int32
Enhances    | Enhancename     | string array
Filemd5s    | Filedigests     | string array
Hdrid       | Sha1header      | string
N           | Name            | string
Obsoletes   | Obsoletename    | string array
O           | Obsoletename    | string array
Oldenhances | Oldenhancesname | string array
Oldsuggests | Oldsuggestsname | string array
P           | Providename     | string array
Pkgid       | Sigmd5          | bin
Provides    | Providename     | string array
R           | Release         | string
Recommends  | Recommendname   | string array
Requires    | Requirename     | string array
Suggests    | Suggestname     | string array
Supplements | Supplementname  | string array
V           | Version         | string

## Extensions

Extension tags do not exist in concrete form anywhere, their data is
constructed at query time based on other information in the headers
or runtime environment. A few physical tags do have an extension format
as well however, these exceptions noted below.

Tag Name      | Value| Type         | Description
--------------|------|--------------|------------
Archsuffix    | 5098 | string       | Package file arch suffix (".src", ".nosrc" or .`arch`)
Dbinstance    | 1195 | int32        | Header ID of installed package, 0 otherwise.
Epochnum      | 5019 | int32        | Package epoch as numeric value (0 if not present).
Evr           | 5013 | string       | Formatted `epoch:version-release` string of the package
Fileclass     | 1141 | string array | Per-file formatted libmagic classification strings, calculated from the Fileclass and Classdict tags. Note overlap with the concrete Fileclass tag with different type (integer array)!
Headercolor   | 5017 | int32        | Header "color" calculated from file colors.
Nevr          | 5015 | string       | Formatted `name-epoch:version-release` string of the package
Nevra         | 5016 | string       | Formatted `name-epoch:version-release.arch` string of the package
Nvr           | 5014 | string       | Formatted `name-version-release` string of the package
Nvra          | 1196 | string       | Formatted `name-version-release.arch` string of the package
Filenames     | 5000 | string array | Per file paths contained in the package, calculated from the path triplet.
Filenlinks    | 5045 | int32 array  | Per file hardlink number, calculated from inode/device information.
Fileprovide   | 5001 | string array | Per file dependency capabilities provided by the corresponding files.
Filerequire   | 5002 | string array | Per file dependency capabilities required by the corresponding files.
Instfilenames | 5040 | string array | Per file paths installed from the package, calculated from the path triplet and file status info.


These tags provide 64bit values regardless of underlying storage size. They return the value of the concrete tag if present or the value of the corresponding  32bit tag as an 64bit value. Always use these to access the sizes. See [Large File support](large_files.md) for details.

Longfilesizes | Per file sizes in 64bit format
Longarchivesize | Archive size in 64bit format
Longsize | Uncompressed size in 64bit format
Longsigsize | Header+payload size in 64bit format

Tag Name              | Value| Type         | Description
----------------------|------|--------------|------------
Origfilenames         | 5007 | string array | Original Filenames in relocated packages.
Providenevrs          | 5042 | string array | Formatted `name [op version]` provide dependency strings.
Conflictnevrs         | 5044 | string array | Formatted `name [op version]` conflict dependency strings.
Obsoletenevrs         | 5043 | string array | Formatted `name [op version]` obsolete dependency strings.
Enhancenevrs          | 5061 | string array | Formatted `name [op version]` enhance dependency strings.
Recommendnevrs        | 5058 | string array | Formatted `name [op version]` recommend dependency strings.
Requirenevrs          | 5041 | string array | Formatted `name [op version]` require dependency strings.
Suggestnevrs          | 5059 | string array | Formatted `name [op version]` suggest dependency strings.
Supplementnevrs       | 5060 | string array | Formatted `name [op version]` supplement dependency strings.
Sysusers              | 5109 | string array | Formatted systemd-sysusers lines for the package. |
Filetriggerconds      | 5086 | string array | Formatted file trigger condition information.
Filetriggertype       | 5087 | string array | Formatted file trigger type information.
Transfiletriggerconds | 5088 | string array | Formatted transaction file trigger condition information.
Transfiletriggertype  | 5089 | string array | Formatted transaction file trigger type information.
Triggerconds          | 5005 | string array | Formatted trigger condition information.
Triggertype           | 5006 | string array | Formatted trigger type information.
Verbose               | 5018 | int32        | Returns 1 if rpm is running in verbose mode.