Exheredludis/doc/faq/different.html.part
2012-08-05 17:56:23 +01:00

99 lines
4.7 KiB
HTML

<!-- 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>You can use <code>BUILD_OPTIONS: work=preserve</code> for a similar effect.</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 <code>symbols=preserve</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>symbols=split</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 cave import.</p>