aboutsummaryrefslogtreecommitdiff
path: root/doc/faq/different.html.part
blob: ef674fd7e1f7a4841ff4b394f3bb6710d3defd03 (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
<!-- vim: set tw=120 ft=html sw=4 sts=4 et : -->

<h1>FAQ: Things Paludis Does Differently</h1>

<ul>
    <li><a href="different.html#features">No <code>FEATURES</code> Equivalent</a></li>
    <li><a href="different.html#mkdir">No Automatic Directory Creation</a></li>
    <li><a href="different.html#revdep_rebuild">Revdep-rebuild Equivalent</a></li>
    <li><a href="different.html#layman">Alternatives to Layman</a></li>
    <li><a href="different.html#package_provided">No <code>package.provided</code> file</a></li>
</ul>

<h2 id="features">No <code>FEATURES</code> Equivalent</h2>

<p>Paludis doesn't use the <code>FEATURES</code> variable. We find this to be
a rather ugly way of handling things. We do have equivalents to most values:</p>

<dl>
    <dt>ccache</dt>
    <dd>See <a href="howdoi.html#ccache">Use <code>ccache</code></a>.</dd>

    <dt>collision-protect</dt>
    <dd>There are various third party hooks that implement this. We might start
    shipping one as a demo hook at some point. Note that collision-protect is
    conceptually broken and you shouldn't be using it.</dd>

    <dt>distcc</dt>
    <dd>See <a href="howdoi.html#distcc">Use <code>distcc</code></a>.</dd>

    <dt>keepwork, keeptemp, noclean</dt>
    <dd>The <code>builtin_tidyup</code> phase does cleaning up. You can turn
    this phase off using <code>SKIP_FUNCTIONS="tidyup"</code>.</dd>

    <dt>nodoc, noinfo, noman</dt>
    <dd>You could write a hook that removes the relevant directories from
    <code>$D</code>.</dd>

    <dt>nostrip</dt>
    <dd>Set the flags <code>-split -strip</code> in the BUILD_OPTIONS group in use.conf, for the packages you want it
    to apply to.</dd>

    <dt>sandbox</dt>
    <dd>Always on.</dd>

    <dt>splitdebug</dt>
    <dd>Set the flags <code>split strip</code> in the BUILD_OPTIONS group in use.conf, for the packages you want it to
    apply to.</dd>

    <dt>test</dt>
    <dd>Controlled by <code>BUILD_OPTIONS: optional_tests</code> in use.conf.</dd>
</dl>

<h2 id="mkdir">No Automatic Directory Creation</h2>

<p>Portage usually automatically creates directories for things. Paludis will
usually refuse to create directories, except as a subdirectory of an existing
Paludis-owned directory. This is for security reasons -- Paludis does not know
what permissions are correct for you for the directory, and unlike Portage it
does not grant back-door root access to all users in a particular group.</p>

<p>As of Paludis 0.46.0, when Paludis does create cache subdirectories, it will
copy the mode of the main cache directory rather than going by your umask.</p>

<p>Incidentally, if you want to let multiple users do Paludis cache writes and
the like, you should look into what <code>chmod +s</code> does to directories.
Note, however, that malicious users who can write cache files can probably gain
local root access.</p>

<h2 id="revdep_rebuild">Revdep-rebuild Equivalent</h2>

<p>Use <code>cave fix-linkage</code>.</p>

<h2 id="layman">Alternatives to Layman</h2>

<p>Portage does not natively support multiple repositories, so the <code>layman</code> tool is used to hack around this.
Since Paludis does support multiple repositories, there is no need for a fancy tool to manage and sync overlays.</p>

<p>Adding a repository to Paludis simply requires an appropriate configuration file to be created, and then a normal
sync to be carried out. It is possible to create repository configuration files by hand; however, an automated method is
available which simplifies things considerably. To enable the automated method, simply ensure that the <a
    href="../configuration/repositories/unavailable.html">unavailable</a> and <a
    href="../configuration/repositories/repository.html">repository</a> repositories have been configured, and then a
repository can automatically by configured simply by installing <code>repository/somerepo</code>.</p>

<p>Note that previously, a script named <code>playman</code> was used for this purpose; the automatic method is now
considered preferable.</p>

<h2 id="package_provided">No <code>package.provided</code> file</h2>

<p>Portage supports pretending that a package is installed for the purposes of dependency resolution via a file called
<code>package.provided</code>. Paludis provides a cleaner approach, in the form of <a
    href="../clients/cave-import.html"><code>cave import</code></a>. <code>cave import</code> allows you to more cleanly
reinstall, uninstall, and upgrade unpackaged packages, using the same sort of merge/unmerge process that paludis uses
for ebuilds.</p>

<p>To use <code>cave import</code>, you will first have to configure an
<a href="../configuration/repositories/installed_unpackaged.html"><code>installed_unpackaged</code></a> format repository.</p>

<p>To get a more direct equivalent of package.provided, you can "install" an empty directory with importare.</p>