diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2021-12-13 12:42:11 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2021-12-13 12:43:58 -0800 |
commit | b846956c6003136b819cdf1ae001bb652aff1167 (patch) | |
tree | 86d47467bd47a0a6b3f5a2bf52863d2657900b27 | |
parent | ac119c80e4b6c2c676cdb2b25e0b56f2a093c55d (diff) | |
download | tar-b846956c6003136b819cdf1ae001bb652aff1167.tar.gz |
More reproducible tarball doc
* doc/tar.texi (PAX keywords): Improve discussion of how
to generate reproducible tarballs.
-rw-r--r-- | doc/tar.texi | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/doc/tar.texi b/doc/tar.texi index 389a3448..64efcebd 100644 --- a/doc/tar.texi +++ b/doc/tar.texi @@ -10423,6 +10423,9 @@ the following forms: When used with one of archive-creation commands, this option instructs @command{tar} to omit from extended header records that it produces any keywords matching the string @var{pattern}. +If the pattern contains shell metacharacters like @samp{*}, it should +be quoted to prevent the shell from expanding the pattern before +@command{tar} sees it. When used in extract or list mode, this option instructs tar to ignore any keywords matching the given @var{pattern} in the extended @@ -10431,7 +10434,7 @@ matching notation described in @acronym{POSIX 1003.2}, 3.13 (@pxref{wildcards}). For example: @smallexample ---pax-option delete=security.* +--pax-option 'delete=security.*' @end smallexample would suppress security-related information. @@ -10560,11 +10563,9 @@ For example, to set all modification times to the current date, you use the following option: @smallexample ---pax-option='mtime:=@{now@}' +--pax-option 'mtime:=@{now@}' @end smallexample -Note quoting of the option's argument. - @cindex archives, binary equivalent @cindex binary equivalent archives, creating As another example, here is the option that ensures that any two @@ -10572,7 +10573,7 @@ archives created using it, will be binary equivalent if they have the same contents: @smallexample ---pax-option=atime:=0 +--pax-option delete=atime @end smallexample @noindent @@ -10581,27 +10582,33 @@ from them, you will also need to eliminate changes due to ctime, as shown in examples below: @smallexample ---pax-option=atime:=0,ctime:=0 +--pax-option 'delete=[ac]time' @end smallexample @noindent -or +Normally @command{tar} saves an mtime value with subsecond resolution +in an extended header for any file with a timestamp that is not on a +one-second boundary. This is in addition to the traditional mtime +timestamp in the header block, which can represent integer timestamps +in the 1970-01-01 00:00:00 through 2242-03-16 12:56:31 @sc{utc}. If +this traditional timestamp suffices and you do not want subsecond +timestamp resolution, you can use: @smallexample ---pax-option=atime:=0,delete=ctime +--pax-option 'delete=[acm]time' @end smallexample -Notice, that if you create an archive in POSIX format (@pxref{posix}) -and the environment variable @env{POSIXLY_CORRECT} is set, then the -two archives created using the same options on the same set of files -will not be byte-to-byte equivalent even with the above option. This -is because the posix default for extended header names includes the -PID of the tar process, which is different at each run. To produce -byte-to-byte equivalent archives in this case, either unset -@env{POSIXLY_CORRECT}, or use the following option: +If the environment variable @env{POSIXLY_CORRECT} is set, two POSIX +archives created using the same options on the same set of files might +not be byte-to-byte equivalent even with the above options. This is +because the POSIX default for extended header names includes +@command{tar}'s process @acronym{ID}, which typically differs at each +run. To produce byte-to-byte equivalent archives in this case, either +unset @env{POSIXLY_CORRECT}, or use the following option, which can be +combined with the above options: @smallexample ----pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0,ctime:=0 +--pax-option exthdr.name=%d/PaxHeaders/%f @end smallexample @node Checksumming |