1 |
Mark Knecht <markknecht@×××××.com> posted |
2 |
5bdc1c8b0901271531q5fe91aa9nc10e7202e3300b06@××××××××××.com, excerpted |
3 |
below, on Tue, 27 Jan 2009 15:31:24 -0800: |
4 |
|
5 |
> On Tue, Jan 27, 2009 at 3:08 PM, Sebastian Redl |
6 |
> <sebastian.redl@×××××××××××.at> wrote: |
7 |
>> Mark Knecht wrote: |
8 |
>>> I seem to be a bit confused about the correct usage of ~amd64 vs |
9 |
>>> unmasking a package in the portage.unmask file. Thanks in advance. |
10 |
>>> |
11 |
>>> |
12 |
>>> What's the proper way for me to limit glib at the currently installed |
13 |
>>> revision level? |
14 |
>>> |
15 |
>>> |
16 |
>> portage.unmask is for masking, portage.keywords for keywording. These |
17 |
>> are not the same. |
18 |
>> |
19 |
>> You can accept the ~amd64 keyword for just a single version the same |
20 |
>> way you can unmask just a single version. Put this in portage.keywords: |
21 |
>> |
22 |
>> =dev-libs/glib-2.18.4 ~amd64 |
23 |
>> |
24 |
>> |
25 |
>> Sebastian |
26 |
> |
27 |
> Thank you Sebastian. That worked fine. |
28 |
> |
29 |
> Now, the same thing didn't work for portage-2.2_rc23. For that one I |
30 |
> actually had to add it to portage.unmask also. I think that's because |
31 |
> it's actually hard masked? Is that correct? |
32 |
|
33 |
Yes, that's correct. |
34 |
|
35 |
Really, Gentoo has four levels of masking available to devs to use, |
36 |
depending on what they think is appropriate. Three of these are keyword |
37 |
masks (one stronger than another), the other is hard mask. |
38 |
|
39 |
A really new package may be masked three of the four ways. It may have |
40 |
no keywords at all, plus be hard-masked in the main profiles/package.mask |
41 |
file. |
42 |
|
43 |
As it becomes clear that it can work on the various archs, it will get |
44 |
~arch keywords for each where it is known to work at all. Also, new |
45 |
versions of packages that had previously known to work on an arch |
46 |
versions will usually start as ~arch masked. ~arch (for whichever arch, |
47 |
~amd64, ~x86, etc) means the upstream package version is known to work on |
48 |
a particular arch, and is reasonably stable such that it's a "Gentoo |
49 |
stable candidate", but that there may still be problems with the ebuild |
50 |
itself (as opposed to the upstream package), or problems between it and |
51 |
other Gentoo stable packages that need to be resolved before it can go |
52 |
stable. Also, if one or more of a package's dependencies remain |
53 |
unstable, the ebuild itself cannot be stablized until all its |
54 |
dependencies are stable. |
55 |
|
56 |
Conversely, if a package is tested and is now known NOT to work on a |
57 |
particular arch, and that isn't likely to change, a -arch (as in -amd64, |
58 |
-x86, etc) keyword may be used. This may be used for instance if the |
59 |
package only works on little-endian systems such as x86 and amd64, but |
60 |
not on big-endian systems such as ppc. An x86 binary-only package would |
61 |
likely be marked -mips, etc, but not -amd64, since multilib will probably |
62 |
allow it to run there. |
63 |
|
64 |
Once all potential problems have been resolved (including all |
65 |
dependencies are stable) and there are no open bugs on a particular |
66 |
version for, typically, 30 days, it can go arch-stable, that is, keyword |
67 |
x86, amd64, etc. |
68 |
|
69 |
That covers three of the four types, all keyword related, no-keyword, |
70 |
~arch, and -arch, plus arch-stable. The fourth type of masking is called |
71 |
hard-masking. That's an entry in the package.mask file either for |
72 |
everyone (in profile/package.mask) or for specific profiles (nomultilib |
73 |
profiles will have 32-bit x86-only binaries masked, as they require |
74 |
multilib). Typically, this is used for entirely inappropriate for stable |
75 |
packages, say the KDE-4.0 packages, because it was simply too immature |
76 |
yet to ever go stable, and for otherwise stable packages that are found |
77 |
to have security issues, etc. |
78 |
|
79 |
To see what versions of a package are available, period, along with their |
80 |
keywording and mask status, you can use the epkginfo <pkg> command. If |
81 |
you know a version exists in the tree (or an overlay you have active) and |
82 |
you wish to see why portage isn't considering it for merging, use emerge |
83 |
--pretend =<pkg-ver> or a variant such as a slot (gcc:4.2 for the 4.2 |
84 |
slot of gcc, for instance). |
85 |
|
86 |
Two things to note: One, if you have a package listed in package.unmask, |
87 |
it won't matter which package.mask file it's listed in (the main profiles/ |
88 |
package.mask, another package.mask file in your cascading profile, or |
89 |
your own package.mask in /etc/portage), that will hard-unmask (but not |
90 |
change the keyword status of, so it may still be keyword masked) that |
91 |
package. package.unmask therefore overrides all package.mask files |
92 |
including your own, and you need to be careful with it, because it'll |
93 |
override security masks as a result. |
94 |
|
95 |
Two, if for some reason you want to try a package that isn't keyworded |
96 |
for your arch at all, you can use the ** keyword in package.keyword. |
97 |
|
98 |
-- |
99 |
Duncan - List replies preferred. No HTML msgs. |
100 |
"Every nonfree program has a lord, a master -- |
101 |
and if you use the program, he is your master." Richard Stallman |