openpkg/uuid.pod

Mon, 28 Jan 2013 17:37:18 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Mon, 28 Jan 2013 17:37:18 +0100
changeset 758
a2c6460cfb16
parent 13
cb59d6afeb61
permissions
-rw-r--r--

Correct socket error reporting improvement with IPv6 portable code,
after helpful recommendation by Saúl Ibarra Corretgé on OSips devlist.

michael@13 1 ##
michael@13 2 ## uuid -- OpenPKG UUID Update Utility
michael@428 3 ## Copyright (c) 2000-2012 OpenPKG GmbH <http://openpkg.com/>
michael@13 4 ##
michael@428 5 ## This software is property of the OpenPKG GmbH, DE MUC HRB 160208.
michael@428 6 ## All rights reserved. Licenses which grant limited permission to use,
michael@428 7 ## copy, modify and distribute this software are available from the
michael@428 8 ## OpenPKG GmbH.
michael@13 9 ##
michael@428 10 ## THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
michael@13 11 ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
michael@13 12 ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
michael@13 13 ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
michael@13 14 ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
michael@13 15 ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
michael@13 16 ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
michael@13 17 ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
michael@13 18 ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
michael@13 19 ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
michael@13 20 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
michael@13 21 ## SUCH DAMAGE.
michael@13 22 ##
michael@13 23
michael@13 24 =pod
michael@13 25
michael@13 26 =head1 NAME
michael@13 27
michael@13 28 B<openpkg uuid> - OpenPKG UUID Update Utility
michael@13 29
michael@13 30 =head1 SYNOPSIS
michael@13 31
michael@13 32 B<openpkg uuid> [B<--verbose>] [B<--multicast>] B<reset>|B<update>|B<info>
michael@13 33
michael@13 34 =head1 DESCRIPTION
michael@13 35
michael@13 36 The B<openpkg uuid> command is the maintenance utility for the DCE 1.1
michael@13 37 and ISO/IEC 11578:1996 compliant I<Universally Unique Identifiers>
michael@13 38 (UUID) of an B<OpenPKG> instance. It is internally based on B<OSSP
michael@13 39 uuid>.
michael@13 40
michael@13 41 UUIDs are 128 bit numbers which are intended to have a high likelihood
michael@13 42 of uniqueness over space and time and are computationally difficult
michael@13 43 to guess. They are globally unique identifiers which can be locally
michael@13 44 generated without contacting a global registration authority. UUIDs are
michael@13 45 intended as unique identifiers for both mass tagging objects with an
michael@13 46 extremely short lifetime and to reliably identifying very persistent
michael@13 47 objects across a network. The three classical UUID variants are DCE 1.1
michael@13 48 UUIDs of version 1 (time and node based), version 3 (name based) and
michael@13 49 version 4 (random number based).
michael@13 50
michael@13 51 For an B<OpenPKG> instance, three different UUIDs are used:
michael@13 52
michael@13 53 =over 3
michael@13 54
michael@13 55 =item 1. B<OpenPKG Registry> (C<UUID_REGISTRY>)
michael@13 56
michael@13 57 This is a version 1 UUID which uniquely identifiers the B<OpenPKG>
michael@13 58 instance for global registration purposes. It is generated just once in
michael@13 59 the lifetime of the B<OpenPKG> instance. The value of this UUID cannot
michael@13 60 be recalculated deterministically.
michael@13 61
michael@13 62 =item 2. B<OpenPKG Instance> (C<UUID_INSTANCE>)
michael@13 63
michael@13 64 This is a version 3 UUID which summarizes the B<OpenPKG>
michael@13 65 instance parameters. Currently the values of the following
michael@13 66 particular OpenPKG RPM macros are uses as input:
michael@13 67
michael@13 68 %{l_openpkg_release} %{l_prefix}
michael@13 69 %{l_susr} %{l_suid} %{l_sgrp} %{l_sgid}
michael@13 70 %{l_musr} %{l_muid} %{l_mgrp} %{l_mgid}
michael@13 71 %{l_rusr} %{l_ruid} %{l_rgrp} %{l_rgid}
michael@13 72 %{l_nusr} %{l_nuid} %{l_ngrp} %{l_ngid}
michael@13 73
michael@13 74 The value of this UUID can be recalculated deterministically and will
michael@13 75 not chance as long as none of the values of the above macro do not
michael@13 76 change. This UUID can be used for detecting OpenPKG release upgrades,
michael@13 77 accidentally changed UIDs or GIDs, etc. Notice that version 3 UUIDs are
michael@13 78 message digests (actually MD5 based) and so are one-way functions which do
michael@13 79 not allow one to recalculate the input values from the UUID.
michael@13 80
michael@13 81 =item 3. B<OpenPKG Platform> (C<UUID_PLATFORM>)
michael@13 82
michael@13 83 This is a version 3 UUID which summarizes the B<OpenPKG> platform
michael@13 84 parameters. Currently the OpenPKG RPM platform id plus the FQDN and IP
michael@13 85 address of the underlying host are used as input. This UUID can be used
michael@13 86 for detecting operating system and host changes. Notice that version
michael@13 87 3 UUIDs are message digests (actually MD5 based) and so are one-way
michael@13 88 functions which do not allow one to recalculate the input values from
michael@13 89 the UUID.
michael@13 90
michael@13 91 =back
michael@13 92
michael@13 93 =head1 OPTIONS
michael@13 94
michael@13 95 =over 4
michael@13 96
michael@13 97 =item B<--verbose>
michael@13 98
michael@13 99 Print verbose messages during operation.
michael@13 100
michael@13 101 =item B<--multicast>
michael@13 102
michael@13 103 Generate a random multicast MAC address instead of using the real IEEE
michael@13 104 802 MAC address of the underlying host when generating the version 1
michael@13 105 UUID C<UUID_REGISTRY>.
michael@13 106
michael@13 107 =back
michael@13 108
michael@13 109 =head1 COMMANDS
michael@13 110
michael@13 111 =over 4
michael@13 112
michael@13 113 =item B<reset>
michael@13 114
michael@13 115 This resets the three UUIDs C<UUID_REGISTRY>, C<UUID_INSTANCE> and
michael@13 116 C<UUID_PLATFORM> to the "Nil UUID". They are then automatically
michael@13 117 regenerated within one day if already done explicitly afterward with
michael@13 118 "C<openpkg uuid update>".
michael@13 119
michael@13 120 =item B<update>
michael@13 121
michael@13 122 This updates the three UUIDs C<UUID_REGISTRY>, C<UUID_INSTANCE> and
michael@13 123 C<UUID_PLATFORM> to the "Nil UUID". C<UUID_REGISTRY> is kept unless it
michael@13 124 is the "Nil UUID" (see "C<openpkg uuid reset>" command above). The UUIDs
michael@13 125 C<UUID_INSTANCE> and C<UUID_PLATFORM> are updated only if their input
michael@13 126 values (and this way the resulting UUIDs) have changed. This operation
michael@13 127 is performed daily automatically.
michael@13 128
michael@13 129 =item B<info>
michael@13 130
michael@13 131 This print summary page of identification information, including all
michael@13 132 UUIDs and all of their calculation inputs.
michael@13 133
michael@13 134 =back
michael@13 135
michael@13 136 =head1 FILES
michael@13 137
michael@13 138 The three UUIDs of the B<OpenPKG> instance are stored in the file
michael@13 139 C<@l_prefix@/etc/openpkg/uuid> in Bourne-Shell syntax. An example
michael@13 140 content is:
michael@13 141
michael@13 142 UUID_REGISTRY="81eca44e-4d18-11d8-a837-0090272ff725"
michael@13 143 UUID_INSTANCE="c55a8d2d-31bb-3ae0-9edb-68337af61acc"
michael@13 144 UUID_PLATFORM="05ec2532-9e3f-37dc-a7ed-b291c2c463ed"
michael@13 145
michael@13 146 =head1 CAVEATS
michael@13 147
michael@13 148 By default and in full compliance with DCE 1.1 and ISO/IEC 11578:1996,
michael@13 149 the OpenPKG Registry UUID (C<UUID_REGISTRY>) contains the IEEE 802 MAC
michael@13 150 address of the underlying host. If this is not acceptable by local
michael@13 151 security policies you can easily at any time generate a new OpenPKG
michael@13 152 Registry UUID with a random multicast MAC address instead by running:
michael@13 153
michael@13 154 $ openpkg uuid reset
michael@13 155 $ openpkg uuid --multicast update
michael@13 156
michael@13 157 =head1 SEE ALSO
michael@13 158
michael@13 159 B<OSSP uuid> E<lt>http://www.ossp.org/pkg/lib/uuid/E<gt>.
michael@13 160
michael@13 161 =head1 HISTORY
michael@13 162
michael@13 163 The B<openpkg uuid> command first appeared in B<OpenPKG 2.0>.
michael@13 164
michael@13 165 =cut
michael@13 166

mercurial