aboutsummaryrefslogtreecommitdiff
path: root/doc/HOWTO.rst
blob: 74c411cf2aacf9d878ad1e7d73279e389d641221 (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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
=====================================
HOWTO Break your system using Paludis
=====================================
---------------------------------------------
and maybe get a usable chroot if you're lucky
---------------------------------------------

.. DANGER::
   READ EVERYTHING CAREFULLY, OR YOU WILL BREAK YOUR SYSTEM!

THIS WILL PROBABLY NOT ACTUALLY WORK! Paludis is at the very early alpha stage.
It can sometimes install things, if you're very lucky, but it can't uninstall
them, upgrade them sensibly or anything like that. There are zillions of things
that are not implemented. There are zillions of things that Paludis does
differently from Portage -- some of these are intentional, some are not.

Do not try to use Paludis and Portage to install things inside the same root.
The config and vdb formats are not compatible!

Install Paludis locally, being sure to configure sysconfdir as /etc to avoid
confusion later on. There's an ebuild at::

    http://svn.berlios.de/viewcvs/*checkout*/paludis/overlay/sys-apps/paludis/paludis-0.ebuild

You'll need libebt, eselect and subversion. You should seriously consider
grabbing an svn snapshot of eselect if 1.0.2 hasn't been released yet.

Make sure the test suite passes (either FEATURES="test" for Portage, or 'make
check'). If it fails, don't continue until you figure out why.

Set up a local bootstrap config directory. We're assuming you're using
/mychroot as the root path. The reason for doing things this way will become
apparent later on.

::

    mkdir ~/.paludis-bootstrap
    cat <<END > ~/.paludis-bootstrap/specpath
    root = /mychroot
    config-suffix =
    END

Make some skeleton directories and files::

    mkdir -p /mychroot/etc/{env.d,paludis/repositories}
    mkdir -p /mychroot/var/{db/pkg,paludis/repositories/gentoo/distfiles}
    mkdir -p /mychroot/tmp/
    touch /mychroot/etc/ld.so.conf

Set up your keywords.conf. At the very least, you'll need a "* keywords" line.
Further lines can be added in the form "atom keywords"::

    cat <<END > /mychroot/etc/paludis/keywords.conf
    * x86
    dev-cpp/libebt x86 ~x86
    sys-apps/paludis x86 ~x86
    dev-util/subversion x86 ~x86
    app-admin/eselect x86 ~x86
    app-editors/vim x86 ~x86
    app-editors/vim-core x86 ~x86
    END

Set up your use.conf. At the very least, you'll need a "* flags" line. Again,
additional per-atom lines can be specified. The -apache2 is important, if you
value your sanity, since you'll be installing subversion::

    cat <<END > /mychroot/etc/paludis/use.conf
    * -doc nls unicode -apache2
    app-editors/vim -nls
    END

Set up your package_unmask.conf and package_mask.conf, if necessary::

    cat <<END > /mychroot/etc/paludis/package_unmask.conf
    app-editors/vim
    app-editors/vim-core
    END

Set up your bashrc. This must NOT be used to change any values that affect
dependency resolution (e.g. USE, LINGUAS). It can be used to set CFLAGS, CHOST
and the like (on some archs you'll have to do this to avoid getting junk from
your profile)::

    cat <<END > /mychroot/etc/paludis/bashrc
    export CFLAGS="-O2 -march=pentium4 -fomit-frame-pointer"
    export CXXFLAGS="\${CFLAGS}"
    export CHOST="i686-pc-linux-gnu"
    END

Set up your repository files. Do not tinker with the VDB location! Here we'll
avoid using /usr/portage for the main tree because sticking data that gets
changed on /usr is silly. We use the ${ROOT} variable, which is set magically,
to make the config work both in and outside of a chroot (this is one of the
reasons we have the weird-looking specpath thing)::

    cat <<END > /mychroot/etc/paludis/repositories/gentoo.conf
    location = \${ROOT}/var/paludis/repositories/gentoo/
    sync = rsync://rsync.europe.gentoo.org/gentoo-portage/
    profile = \${ROOT}/var/paludis/repositories/gentoo/profiles/default-linux/x86/2006.0
    format = portage
    END

    cat <<END > /mychroot/etc/paludis/repositories/installed.conf
    location = \${ROOT}/var/db/pkg/
    format = vdb
    END

    cat <<END > /mychroot/etc/paludis/repositories/paludis-overlay.conf
    location = \${ROOT}/var/paludis/repositories/paludis-overlay/
    sync = svn://svn.berlios.de/paludis/overlay
    profile = \${ROOT}/var/paludis/repositories/gentoo/profiles/default-linux/x86/2006.0
    eclassdir = \${ROOT}/var/paludis/repositories/gentoo/eclass
    distdir = \${ROOT}/var/paludis/repositories/gentoo/distfiles
    cache = /var/empty
    format = portage
    importance = 10
    END

Now check that the config looks ok, and sync::

    paludis --config-suffix bootstrap --list-repositories
    sudo paludis --config-suffix bootstrap --sync

If you have problems, try adding "--log-level debug". This may or may not give
helpful information....

The initial sync will be slow. You can cheat and copy an existing Portage tree
checkout into /mychroot/var/paludis/repositories/gentoo/, but remember to
preserve mtimes and permissions if you do. Note that there's no hideously
painful 'Updating the Portage cache...' to go through. Paludis will use the
metadata cache, if available, but does not use the dep cache.

Now install baselayout and then system. We install baselayout manually first
because it's easier than creating a bunch of directories manually.

Note that Paludis will use src_test regardless of FEATURES (FEATURES is a
Portage thing, and Paludis doesn't use it any more than it has to).
Unfortunately, various system packages have broken test suites, so the system
install will probably bomb out midway unless you export SKIP_FUNCTIONS=test
beforehand.

Also note that there're a whole load of circular dependencies in system
(ncurses <-> gpm, patch <-> patch, gcc <-> glibc for example), so you'll
almost certainly need --dl-drop-circular at this stage.

::

    paludis --config-suffix bootstrap --install --pretend --dl-drop-all sys-apps/baselayout
    sudo paludis --config-suffix bootstrap --install --dl-drop-all sys-apps/baselayout

    paludis --config-suffix bootstrap --install --pretend --dl-drop-circular system
    sudo paludis --config-suffix bootstrap --install --dl-drop-circular system

Note that system will pull in Portage. That's a profiles thing that's
unavoidable for now. It won't pull in Paludis, so we do that manually::

    paludis --config-suffix bootstrap --install --pretend sys-apps/paludis
    sudo paludis --config-suffix bootstrap --install sys-apps/paludis

And that should (but probably won't) give you a usable chroot::

    sudo cp /etc/resolv.conf /mychroot/etc/
    sudo chroot /mychroot
    export HOME=/root
    cd
    mount -tproc none /proc
    mount -tsysfs none /sys
    udevstart
    eselect env update
    source /etc/profile
    ( . /etc/paludis/bashrc ; gcc-config -1 )
    eselect env update
    source /etc/profile
    paludis --install app-editors/vim
    paludis --uninstall app-editors/nano
    paludis --uninstall sys-apps/portage

.. vim: set et sw=4 spell spelllang=en ft=glep :