summaryrefslogtreecommitdiffstats
path: root/zarb-ml/mageia-dev/2012-September/018919.html
blob: 5a7fda7e9fe646a3de8275e3e0e881d30b3dda61 (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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
 <HEAD>
   <TITLE> [Mageia-dev] ANNOUNCE: The /usr move cometh! &lt;---- Instructions
   </TITLE>
   <LINK REL="Index" HREF="index.html" >
   <LINK REL="made" HREF="mailto:mageia-dev%40mageia.org?Subject=Re%3A%20%5BMageia-dev%5D%20ANNOUNCE%3A%20The%20/usr%20move%20cometh%21%20%3C----%20Instructions&In-Reply-To=%3C5061AF4B.1030504%40colin.guthr.ie%3E">
   <META NAME="robots" CONTENT="index,nofollow">
   <META http-equiv="Content-Type" content="text/html; charset=us-ascii">
   <LINK REL="Previous"  HREF="018914.html">
   <LINK REL="Next"  HREF="018922.html">
 </HEAD>
 <BODY BGCOLOR="#ffffff">
   <H1>[Mageia-dev] ANNOUNCE: The /usr move cometh! &lt;---- Instructions</H1>
    <B>Colin Guthrie</B> 
    <A HREF="mailto:mageia-dev%40mageia.org?Subject=Re%3A%20%5BMageia-dev%5D%20ANNOUNCE%3A%20The%20/usr%20move%20cometh%21%20%3C----%20Instructions&In-Reply-To=%3C5061AF4B.1030504%40colin.guthr.ie%3E"
       TITLE="[Mageia-dev] ANNOUNCE: The /usr move cometh! &lt;---- Instructions">mageia at colin.guthr.ie
       </A><BR>
    <I>Tue Sep 25 15:19:07 CEST 2012</I>
    <P><UL>
        <LI>Previous message: <A HREF="018914.html">[Mageia-dev] ANNOUNCE: The /usr move cometh! &lt;---- Instructions
</A></li>
        <LI>Next message: <A HREF="018922.html">[Mageia-dev] ANNOUNCE: The /usr move cometh! &lt;---- Instructions
</A></li>
         <LI> <B>Messages sorted by:</B> 
              <a href="date.html#18919">[ date ]</a>
              <a href="thread.html#18919">[ thread ]</a>
              <a href="subject.html#18919">[ subject ]</a>
              <a href="author.html#18919">[ author ]</a>
         </LI>
       </UL>
    <HR>  
<!--beginarticle-->
<PRE>'Twas brillig, and Thierry Vignaud at 25/09/12 11:07 did gyre and gimble:
&gt;<i> On 9 September 2012 20:42, Colin Guthrie &lt;<A HREF="https://www.mageia.org/mailman/listinfo/mageia-dev">mageia at colin.guthr.ie</A>&gt; wrote:
</I>&gt;&gt;&gt;<i> Those cannot be done anymore.
</I>&gt;&gt;&gt;<i> Now updating rpm in order to be able to sole the unifiedsystemdir depends
</I>&gt;&gt;&gt;<i> pulls filesystem...
</I>&gt;&gt;&gt;<i> Classic egg &amp; chicken issue...
</I>&gt;&gt;<i>
</I>&gt;&gt;<i> Yes, this has been a problem for a while now in Cauldron. But not many
</I>&gt;&gt;<i> users are asking this question these days, so the likely path now is
</I>&gt;&gt;<i> from mga2 -&gt; cauldron which is probably where the effort should be focused.
</I>&gt;<i> 
</I>&gt;<i> BTW I tested live upgrade from FC17 to FC18.
</I>&gt;<i> It works smoothly if you don't have third party packages.
</I>&gt;<i> in FC there's no need for a special boot, everything is hanled by filesystem
</I>&gt;<i> package's pre/post scripts:
</I>&gt;<i> 
</I>&gt;<i> $ rpm -q --scripts filesystem -v
</I>&gt;<i> pretrans scriptlet (using &lt;lua&gt;):
</I>&gt;<i> --#
</I>&gt;<i> --# If we are running in pretrans in a fresh root, there is no /usr
</I>&gt;<i> and symlinks.
</I>&gt;<i> --# We cannot be sure, to be the very first rpm in the transaction list,
</I>&gt;<i> --# so, let's create the toplevel symlinks here and the directories
</I>&gt;<i> they point to.
</I>&gt;<i> --# When our rpm is unpacked by cpio, it will set all permissions and
</I>&gt;<i> modes later.
</I>&gt;<i> --#
</I>&gt;<i> 
</I>&gt;<i> if posix.stat(&quot;/usr&quot;) == nil then
</I>&gt;<i>     posix.mkdir(&quot;/usr&quot;)
</I>&gt;<i> end
</I>&gt;<i> 
</I>&gt;<i> for i,dir in ipairs({&quot;/lib&quot;, &quot;/lib64&quot;, &quot;/sbin&quot;, &quot;/bin&quot;}) do
</I>&gt;<i>     if posix.stat(&quot;/usr&quot;..dir) == nil then
</I>&gt;<i>         posix.mkdir(&quot;/usr&quot;..dir)
</I>&gt;<i>         if posix.stat(dir, &quot;mode&quot;) == nil then
</I>&gt;<i>             posix.symlink(&quot;usr&quot;..dir, dir)
</I>&gt;<i>         end
</I>&gt;<i>     end
</I>&gt;<i> end
</I>&gt;<i> 
</I>&gt;<i> return 0
</I>&gt;<i> postinstall scriptlet (using &lt;lua&gt;):
</I>&gt;<i> posix.symlink(&quot;../run&quot;, &quot;/var/run&quot;)
</I>&gt;<i> posix.symlink(&quot;../run/lock&quot;, &quot;/var/lock&quot;)
</I>
We have pretty much the same script in our package if you look, but this
does not process the move transition itself (i.e. there is nothing to
move content from /bin to /usr/bin before rmdir'ing the dir and
replacing it with a symlink).

What this script achieves is to ensure that the filesystem layout is
correct when installing the very first packages e.g. in a chroot. This
is needed because some packages (not filesystem.rpm) may package a file
/bin/foo. rpm does not guarentee ordering of the package installation
transaction so if we install the foo package (which will trigger the
installation of filesystem) we cannot guarentee that filesystem will be
installed before foo and thus we need to prevent the creation of the
/bin dir that would happen if foo was installed first.

The comments in the script explain this pretty clearly.


Regarding what does the actual move of files, I cannot say but if it
happens automatically on a yum upgrade I'd certainly be interested to
know how it's done without breaking things... Also I'm surprised that
rpm let you do the upgrade as fedora have the same checks on their
filesystem rpm as we do (i.e. it refuses to install if the /bin +
friends are NOT symlinks)... so I'd be interested to know how this is
done...

Col



-- 

Colin Guthrie
colin(at)mageia.org
<A HREF="http://colin.guthr.ie/">http://colin.guthr.ie/</A>

Day Job:
  Tribalogic Limited <A HREF="http://www.tribalogic.net/">http://www.tribalogic.net/</A>
Open Source:
  Mageia Contributor <A HREF="http://www.mageia.org/">http://www.mageia.org/</A>
  PulseAudio Hacker <A HREF="http://www.pulseaudio.org/">http://www.pulseaudio.org/</A>
  Trac Hacker <A HREF="http://trac.edgewall.org/">http://trac.edgewall.org/</A>
</PRE>


<!--endarticle-->
    <HR>
    <P><UL>
        <!--threads-->
	<LI>Previous message: <A HREF="018914.html">[Mageia-dev] ANNOUNCE: The /usr move cometh! &lt;---- Instructions
</A></li>
	<LI>Next message: <A HREF="018922.html">[Mageia-dev] ANNOUNCE: The /usr move cometh! &lt;---- Instructions
</A></li>
         <LI> <B>Messages sorted by:</B> 
              <a href="date.html#18919">[ date ]</a>
              <a href="thread.html#18919">[ thread ]</a>
              <a href="subject.html#18919">[ subject ]</a>
              <a href="author.html#18919">[ author ]</a>
         </LI>
       </UL>

<hr>
<a href="https://www.mageia.org/mailman/listinfo/mageia-dev">More information about the Mageia-dev
mailing list</a><br>
</body></html>