| 1 | <!-- The content of this document is licensed under the CC-BY-SA license --> |
1 | <!-- The content of this document is licensed under the CC-BY-SA license --> |
| 2 | <!-- See http://creativecommons.org/licenses/by-sa/1.0 --> |
2 | <!-- See http://creativecommons.org/licenses/by-sa/1.0 --> |
| 3 | |
3 | |
| 4 | <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/handbook/hb-working-portage.xml,v 1.1 2003/11/20 10:52:35 swift Exp $ --> |
4 | <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/handbook/hb-working-portage.xml,v 1.13 2003/12/04 22:26:19 swift Exp $ --> |
| 5 | |
5 | |
| 6 | <sections> |
6 | <sections> |
| 7 | <section> |
7 | <section> |
| 8 | <title>Obtaining Package Information</title> |
8 | <title>Obtaining Package Information</title> |
| 9 | <subsection> |
9 | <subsection> |
| 10 | <title>The Lord of All Tools: emerge</title> |
10 | <title>The Lord of All Tools: emerge</title> |
| 11 | <body> |
11 | <body> |
| 12 | |
12 | |
|
|
13 | <p> |
|
|
14 | The main Portage tool that most users will use is <c>emerge</c>. We have already |
|
|
15 | used it during the Gentoo installation and in the previous chapter, but we just |
|
|
16 | briefly explained how to use it. This chapter will elaborate on <c>emerge</c> |
|
|
17 | and teach you how to use <c>emerge</c> to fix all your software-related needs. |
|
|
18 | </p> |
|
|
19 | |
|
|
20 | <p> |
|
|
21 | <c>emerge</c> is the command used to install, remove, query and maintain |
|
|
22 | software packages. It is a front-end for <c>ebuild</c>; people interested in |
|
|
23 | becoming Gentoo professionals will learn how to use <c>ebuild</c> later on. For |
|
|
24 | now, we will focus on <c>emerge</c> as it has functionality that <c>ebuild</c> |
|
|
25 | lacks (such as resolving dependencies, searching the Portage tree, etc.). |
|
|
26 | </p> |
|
|
27 | |
|
|
28 | <p> |
|
|
29 | Since <c>emerge</c> is the most important tool for Gentoo users, it has an |
|
|
30 | extensive manpage you can read by issuing <c>man emerge</c>. You can also view |
|
|
31 | the in-command help by running <c>emerge --help</c>. |
|
|
32 | </p> |
|
|
33 | |
|
|
34 | <pre caption="Retrieving help for emerge"> |
|
|
35 | # <i>man emerge</i> |
|
|
36 | # <i>emerge --help</i> |
|
|
37 | </pre> |
|
|
38 | |
|
|
39 | </body> |
|
|
40 | </subsection> |
|
|
41 | <subsection> |
|
|
42 | <title>The Portage Tree</title> |
|
|
43 | <body> |
|
|
44 | |
|
|
45 | <p> |
|
|
46 | Before we continue describing <c>emerge</c>, let us first take a look at the |
|
|
47 | Portage Tree. Go to <path>/usr/portage</path> and do a listing of the available |
|
|
48 | directories. We use <c>ls --classify</c> to list the contents of a |
|
|
49 | directory as it will show directories with a trailing "/". |
|
|
50 | </p> |
|
|
51 | |
|
|
52 | <pre caption="Viewing the Portage Tree"> |
|
|
53 | # <i>cd /usr/portage; ls --classify</i> |
|
|
54 | app-admin/ dev-ml/ gnome-libs/ net-print/ |
|
|
55 | app-arch/ dev-perl/ gnome-office/ net-wireless/ |
|
|
56 | app-benchmarks/ dev-php/ header.txt net-www/ |
|
|
57 | app-cdr/ dev-python/ incoming/ net-zope/ |
|
|
58 | app-crypt/ dev-ruby/ jython/ packages/ |
|
|
59 | app-dicts/ dev-tcltk/ kde-apps/ profiles/ |
|
|
60 | app-doc/ dev-tex/ kde-base/ releases/ |
|
|
61 | app-editors/ dev-util/ kde-i18n/ scripts/ |
|
|
62 | app-emacs/ distfiles/ kde-libs/ sec-policy/ |
|
|
63 | app-emulation/ eclass/ licenses/ skel.ChangeLog |
|
|
64 | app-games/ experimental/ media-fonts/ skel.ebuild |
|
|
65 | app-gnustep/ files/ media-gfx/ skel.metadata.xml |
|
|
66 | app-i18n/ fresco-base/ media-libs/ snapshots/ |
|
|
67 | app-misc/ games-action/ media-plugins/ sys-apps/ |
|
|
68 | app-office/ games-arcade/ media-radio/ sys-build/ |
|
|
69 | app-pda/ games-board/ media-sound/ sys-cluster/ |
|
|
70 | app-portage/ games-emulation/ media-tv/ sys-devel/ |
|
|
71 | app-sci/ games-engines/ media-video/ sys-fs/ |
|
|
72 | app-shells/ games-fps/ metadata/ sys-kernel/ |
|
|
73 | app-text/ games-kids/ net-analyzer/ sys-kmods/ |
|
|
74 | app-vim/ games-misc/ net-apache/ sys-libs/ |
|
|
75 | app-xemacs/ games-mud/ net-dialup/ unix2tcp/ |
|
|
76 | berlin-base/ games-puzzle/ net-dns/ x11-base/ |
|
|
77 | dev-ada/ games-roguelike/ net-firewall/ x11-libs/ |
|
|
78 | dev-cpp/ games-rpg/ net-fs/ x11-misc/ |
|
|
79 | dev-db/ games-server/ net-ftp/ x11-plugins/ |
|
|
80 | dev-dotnet/ games-simulation/ net-im/ x11-terms/ |
|
|
81 | dev-embedded/ games-sports/ net-irc/ x11-themes/ |
|
|
82 | dev-games/ games-strategy/ net-libs/ x11-wm/ |
|
|
83 | dev-haskell/ games-util/ net-mail/ xfce-base/ |
|
|
84 | dev-java/ glep/ net-misc/ xfce-extra/ |
|
|
85 | dev-lang/ gnome-apps/ net-nds/ |
|
|
86 | dev-libs/ gnome-base/ net-news/ |
|
|
87 | dev-lisp/ gnome-extra/ net-p2p/ |
|
|
88 | </pre> |
|
|
89 | |
|
|
90 | <p> |
|
|
91 | As you can see, the Portage tree has several subdirectories. Most of them are |
|
|
92 | the <e>categories</e> in which the Gentoo packages, called <e>ebuilds</e>, |
|
|
93 | reside. Take a look at, for instance, <path>app-office</path>: |
|
|
94 | </p> |
|
|
95 | |
|
|
96 | <pre caption="Viewing a category"> |
|
|
97 | # <i>cd app-office; ls --classify</i> |
|
|
98 | abiword/ gnotime/ kmymoney2/ ooodi/ plan/ timestamp.x |
|
|
99 | dia/ gnucash/ koffice/ oooqs/ qhacc/ |
|
|
100 | dia2code/ gnumeric/ lxbank/ openoffice/ sc/ |
|
|
101 | facturalux/ ical/ lyx/ openoffice-bin/ scribus/ |
|
|
102 | gaby/ kbudget/ mdbtools/ openoffice-ximian/ siag/ |
|
|
103 | gnofin/ khacc/ mrproject/ phprojekt/ texmacs/ |
|
|
104 | </pre> |
|
|
105 | |
|
|
106 | <p> |
|
|
107 | Inside a category you will find the packages belonging to that category, with a |
|
|
108 | separate directory for each package. Let us take a look at the <c>openoffice</c> |
|
|
109 | package: |
|
|
110 | </p> |
|
|
111 | |
|
|
112 | <pre caption="Viewing a package"> |
|
|
113 | # <i>cd openoffice; ls --classify</i> |
|
|
114 | ChangeLog files/ openoffice-1.0.3-r1.ebuild openoffice-1.1.0-r2.ebuild |
|
|
115 | Manifest metadata.xml openoffice-1.1.0-r1.ebuild openoffice-1.1.0.ebuild |
|
|
116 | </pre> |
|
|
117 | |
|
|
118 | <p> |
|
|
119 | Remember that we told you that a Gentoo package is called an ebuild? Well, in |
|
|
120 | the example directory four of such ebuilds are stored. Their naming is |
|
|
121 | almost identical: they only differ in the version name. |
|
|
122 | You are free to view the contents of such a package: they are plain scripts. We |
|
|
123 | will not discuss it right now as it isn't important to know if you plan on just |
|
|
124 | using Gentoo. |
|
|
125 | </p> |
|
|
126 | |
|
|
127 | <p> |
|
|
128 | The other files are the <path>ChangeLog</path> (which contains a listing of all |
|
|
129 | the changes done to the ebuilds), <path>Manifest</path> (which contains the |
|
|
130 | checksums and permissions of all the files in the directory) and |
|
|
131 | <path>metadata.xml</path> (which contains more information about the package, |
|
|
132 | such as the responsible development group -- called <e>herd</e> -- and a more |
|
|
133 | extensive description). |
|
|
134 | </p> |
|
|
135 | |
|
|
136 | <p> |
|
|
137 | Inside the <path>files</path> directory you will find extra files, needed by |
|
|
138 | Portage: digests (checksums and permissions of the files needed by a single |
|
|
139 | version of the package), patches, example configuration files, etc. |
|
|
140 | </p> |
|
|
141 | |
|
|
142 | <pre caption="Viewing the extra files"> |
|
|
143 | # <i>cd files; ls --classify</i> |
|
|
144 | 1.0.3/ digest-openoffice-1.0.3-r1 digest-openoffice-1.1.0-r1 |
|
|
145 | 1.1.0/ digest-openoffice-1.1.0 digest-openoffice-1.1.0-r2 |
|
|
146 | # <i>cd 1.1.0; ls --classify</i> |
|
|
147 | fixed-gcc.patch ooffice-wrapper-1.3 |
|
|
148 | newstlportfix.patch openoffice-1.1.0-linux-2.6-fix.patch |
|
|
149 | no-mozab.patch openoffice-1.1.0-sparc64-fix.patch |
|
|
150 | nptl.patch |
|
|
151 | </pre> |
|
|
152 | |
|
|
153 | <p> |
|
|
154 | If you go back to the root of the Portage tree (<path>/usr/portage</path>) you |
|
|
155 | will notice that there are other, non-category directories too. We will discuss |
|
|
156 | those later in this chapter. |
|
|
157 | </p> |
|
|
158 | |
| 13 | </body> |
159 | </body> |
| 14 | </subsection> |
160 | </subsection> |
| 15 | <subsection> |
161 | <subsection> |
| 16 | <title>Search for a Package</title> |
162 | <title>Search for a Package</title> |
| 17 | <body> |
163 | <body> |
|
|
164 | |
|
|
165 | <p> |
|
|
166 | If you are new to Linux or Gentoo, you might not know what tool you need for |
|
|
167 | what job. To facilitate searching, <c>emerge</c> provides you with a way to |
|
|
168 | search through the available packages on your system. There are two ways you can |
|
|
169 | search through packages: by <e>name</e>, or by <e>name</e> and |
|
|
170 | <e>description</e>. |
|
|
171 | </p> |
|
|
172 | |
|
|
173 | <p> |
|
|
174 | To search through the Portage tree by name, use <c>emerge search</c>. For |
|
|
175 | instance, to find out more about <c>mozilla</c>: |
|
|
176 | </p> |
|
|
177 | |
|
|
178 | <pre caption="Showing information about mozilla"> |
|
|
179 | # <i>emerge search mozilla</i> |
|
|
180 | Searching... |
|
|
181 | [ Results for search key : mozilla ] |
|
|
182 | [ Applications found : 5 ] |
|
|
183 | <comment>(Some output removed to improve readability)</comment> |
|
|
184 | * net-www/mozilla |
|
|
185 | Latest version available: 1.5-r1 |
|
|
186 | Latest version installed: 1.4-r3 |
|
|
187 | Size of downloaded files: 29,153 kB |
|
|
188 | Homepage: http://www.mozilla.org |
|
|
189 | Description: The Mozilla Web Browser |
|
|
190 | |
|
|
191 | * net-www/mozilla-firebird |
|
|
192 | Latest version available: 0.7 |
|
|
193 | Latest version installed: [ Not Installed ] |
|
|
194 | Size of downloaded files: 37,850 kB |
|
|
195 | Homepage: http://www.mozilla.org/projects/firebird/ |
|
|
196 | Description: The Mozilla Firebird Web Browser |
|
|
197 | <comment>(...)</comment> |
|
|
198 | </pre> |
|
|
199 | |
|
|
200 | <p> |
|
|
201 | If you want to include a search through the descriptions too, use the |
|
|
202 | <c>--searchdesc</c> argument: |
|
|
203 | </p> |
|
|
204 | |
|
|
205 | <pre caption="Search through the descriptions too"> |
|
|
206 | # <i>emerge --searchdesc mozilla</i> |
|
|
207 | Searching... |
|
|
208 | [ Results for search key : mozilla ] |
|
|
209 | [ Applications found : 10 ] |
|
|
210 | <comment>(Some output removed to improve readability)</comment> |
|
|
211 | * dev-libs/nss-3.8 |
|
|
212 | Latest version available: 3.8 |
|
|
213 | Latest version installed: 3.8 |
|
|
214 | Size of downloaded files: 2,782 kB |
|
|
215 | Homepage: http://www.mozilla.org/projects/security/pki/nss/ |
|
|
216 | Description: Mozilla's Netscape Security Services Library that implements PKI support |
|
|
217 | </pre> |
|
|
218 | |
|
|
219 | <p> |
|
|
220 | As you can see, the output of <c>emerge</c> informs you about the category and |
|
|
221 | name of the package, the available version, the currently installed version, |
|
|
222 | the size of the downloaded files, the homepage and the small description. |
|
|
223 | </p> |
|
|
224 | |
|
|
225 | <p> |
|
|
226 | You see something new? Yes, <e>downloaded files</e>. When you tell Portage to |
|
|
227 | install a package, it of course needs to have the necessary sources (or |
|
|
228 | precompiled packages) available. It therefore checks the contents of |
|
|
229 | <path>/usr/portage/distfiles</path> (for sourcecode) or |
|
|
230 | <path>/usr/portage/packages/All</path> (for precompiled packages) to see if the |
|
|
231 | necessary files are already available. If not, it downloads the necessary files |
|
|
232 | and places them in those directories. |
|
|
233 | </p> |
|
|
234 | |
|
|
235 | <note> |
|
|
236 | Searching the Portage Tree, especially when using <c>--searchdesc</c>, is very |
|
|
237 | time consuming. There are other, more performant tools available. We will |
|
|
238 | describe those in the chapter on <uri link="?part=2&chap=7">Gentoolkit and |
|
|
239 | Other Tools</uri>. |
|
|
240 | </note> |
|
|
241 | |
|
|
242 | </body> |
|
|
243 | </subsection> |
|
|
244 | <subsection> |
|
|
245 | <title>Viewing the ChangeLog</title> |
|
|
246 | <body> |
|
|
247 | |
|
|
248 | <p> |
|
|
249 | While browsing through the Portage Tree, you saw that there was a ChangeLog for |
|
|
250 | each package. You can view this ChangeLog with <c>emerge</c> too. Use the |
|
|
251 | <c>--pretend --changelog</c> (<c>-pl</c> in short) options. As an example we |
|
|
252 | will view the ChangeLog entries for <c>gnumeric</c>: |
|
|
253 | </p> |
|
|
254 | |
|
|
255 | <pre caption="Viewing the ChangeLog entries for gnumeric"> |
|
|
256 | # <i>emerge --pretend --changelog gnumeric</i> |
|
|
257 | </pre> |
| 18 | |
258 | |
| 19 | </body> |
259 | </body> |
| 20 | </subsection> |
260 | </subsection> |
| 21 | </section> |
261 | </section> |
| 22 | <section> |
262 | <section> |
| 23 | <title>Updating Portage</title> |
263 | <title>Updating Portage</title> |
| 24 | <subsection> |
264 | <subsection> |
| 25 | <title>Using rsync</title> |
265 | <title>Introduction</title> |
| 26 | <body> |
|
|
| 27 | |
|
|
| 28 | </body> |
266 | <body> |
| 29 | </subsection> |
267 | |
|
|
268 | <p> |
|
|
269 | Searching through Portage is nice, but if you don't update your Portage Tree |
|
|
270 | regularly, you will be stuck with the packages and versions available on your |
|
|
271 | system. This means that your system will get outdated pretty soon and that |
|
|
272 | you will be missing bugfixes and remedies for possible security problems. |
|
|
273 | </p> |
|
|
274 | |
|
|
275 | <p> |
|
|
276 | There are several ways to update your Portage Tree. The most popular method is |
|
|
277 | by using one of our <uri link="/main/en/mirrors.xml">rsync mirrors</uri>. |
|
|
278 | Another one is by using a Portage snapshot (in case a firewall or unavailability |
|
|
279 | of a network prohibits the use of the rsync server). |
|
|
280 | </p> |
|
|
281 | |
|
|
282 | </body> |
| 30 | <subsection> |
283 | </subsection> |
| 31 | <title>Using a Downloaded Snapshot</title> |
284 | <subsection> |
|
|
285 | <title>Selecting a Mirror for rsync</title> |
|
|
286 | <body> |
|
|
287 | |
|
|
288 | <p> |
|
|
289 | It is adviseable to first select a fast <uri |
|
|
290 | link="/main/en/mirrors.xml">mirror</uri> close to you. You can do this manually |
|
|
291 | (by setting the <c>SYNC</c> variable in <path>/etc/make.conf</path>) or use |
|
|
292 | <c>mirrorselect</c> to do this for you automatically. As the <c>SYNC</c> |
|
|
293 | variable will be discussed later on, we will focus on using <c>mirrorselect</c>. |
|
|
294 | First install <c>mirrorselect</c> by emerging it: |
|
|
295 | </p> |
|
|
296 | |
|
|
297 | <pre caption="Installing mirrorselect"> |
|
|
298 | # <i>emerge --usepkg mirrorselect</i> |
|
|
299 | </pre> |
|
|
300 | |
|
|
301 | <p> |
|
|
302 | Now run <c>mirrorselect</c> to automatically select mirrors for you (it will |
|
|
303 | also setup Portage to use a mirror for the sourcecode): |
|
|
304 | </p> |
|
|
305 | |
|
|
306 | <pre caption="Running mirrorselect"> |
|
|
307 | # <i>mirrorselect -a -s3</i> |
|
|
308 | </pre> |
|
|
309 | |
| 32 | <body> |
310 | </body> |
|
|
311 | </subsection> |
|
|
312 | <subsection> |
|
|
313 | <title>Updating Portage</title> |
|
|
314 | <body> |
|
|
315 | |
|
|
316 | <p> |
|
|
317 | To update Portage using rsync, simply run <c>emerge sync</c>: |
|
|
318 | </p> |
|
|
319 | |
|
|
320 | <pre caption="Updating Portage using emerge sync"> |
|
|
321 | # <i>emerge sync</i> |
|
|
322 | </pre> |
|
|
323 | |
|
|
324 | <p> |
|
|
325 | If this fails (due to network problems, or a firewall), you can try using |
|
|
326 | <c>emerge-webrsync</c> which will download a Portage Tree snapshot using |
|
|
327 | <c>wget</c>. This also means that you can use proxies if you want. We discussed |
|
|
328 | how to setup your system to use proxies during the Gentoo installation. |
|
|
329 | </p> |
|
|
330 | |
|
|
331 | <pre caption="Updating Portage using emerge-webrsync"> |
|
|
332 | # <i>emerge-webrsync</i> |
|
|
333 | </pre> |
| 33 | |
334 | |
| 34 | </body> |
335 | </body> |
| 35 | </subsection> |
336 | </subsection> |
| 36 | </section> |
337 | </section> |
| 37 | <section> |
338 | <section> |
| 38 | <title>Maintaining Software</title> |
339 | <title>Maintaining Software</title> |
| 39 | <subsection> |
340 | <subsection> |
| 40 | <title>Installing Software</title> |
341 | <title>Building or Prebuilt?</title> |
| 41 | <body> |
|
|
| 42 | |
|
|
| 43 | </body> |
342 | <body> |
| 44 | </subsection> |
343 | |
|
|
344 | <p> |
|
|
345 | Gentoo provides ebuilds, the Gentoo packages if you like. But when you want to |
|
|
346 | install such an ebuild, you can choose between <e>building</e> the package, or |
|
|
347 | using a <e>prebuilt</e> package. But what are the advantages/disadvantages of |
|
|
348 | both approaches, and can they be used next to each other? |
|
|
349 | </p> |
|
|
350 | |
|
|
351 | <p> |
|
|
352 | As you probably have guessed, building packages takes a lot of time (especially |
|
|
353 | if you have little resources or want to build big packages, such as <uri |
|
|
354 | link="http://www.kde.org">KDE</uri>, <uri |
|
|
355 | link="http://www.openoffice.org">OpenOffice.org</uri>, etc.). By building the |
|
|
356 | package, you can use the <c>USE</c> setting to tweak the package to your system. |
|
|
357 | Of course, you can also define high optimization options (in the <c>CFLAGS</c> |
|
|
358 | and <c>CXXFLAGS</c> variables) to compile the package with. |
|
|
359 | </p> |
|
|
360 | |
|
|
361 | <p> |
|
|
362 | Using prebuilt packages improves the installation time (as no more compilation |
|
|
363 | is needed), but you will lose the advantages of the <c>USE</c> setting and the |
|
|
364 | <c>CFLAGS</c> & <c>CXXFLAGS</c> variables. |
|
|
365 | </p> |
|
|
366 | |
|
|
367 | <p> |
|
|
368 | As previously stated, prebuilt packages are stored in the |
|
|
369 | <path>/usr/portage/packages/All</path> directory, while the sourcecode of the |
|
|
370 | packages are placed in <path>/usr/portage/distfiles</path>. If you have finished |
|
|
371 | installing a package you can remove the package or sourcecode from the |
|
|
372 | respective directory. However, you might want to keep the package/sourcecode of |
|
|
373 | the latest version, just in case you want to reinstall the package (so you don't |
|
|
374 | have to redownload it). |
|
|
375 | </p> |
|
|
376 | |
|
|
377 | </body> |
| 45 | <subsection> |
378 | </subsection> |
| 46 | <title>Updating Software</title> |
379 | <subsection> |
|
|
380 | <title>Installing Software from Sources</title> |
|
|
381 | <body> |
|
|
382 | |
|
|
383 | <p> |
|
|
384 | Okay, enough talking, let's cut to the chase. To install a package, you will use |
|
|
385 | the <c>emerge</c> command. If you don't want to use any prebuilt packages, you |
|
|
386 | can just use <c>emerge <package-name></c> or <c>emerge |
|
|
387 | <category>/<package-name></c>. As an example we'll install |
|
|
388 | <c>gnumeric</c>: |
|
|
389 | </p> |
|
|
390 | |
|
|
391 | <pre caption="Building gnumeric"> |
|
|
392 | # <i>emerge gnumeric</i> |
|
|
393 | </pre> |
|
|
394 | |
|
|
395 | <p> |
|
|
396 | This will download the sourcecode for you and unpacks, compiles and installs the |
|
|
397 | package on your system. It will also do the same for all the dependencies. If |
|
|
398 | you want to see what dependencies will be installed with it, use the |
|
|
399 | <c>--pretend</c> option (<c>-p</c> in short): |
|
|
400 | </p> |
|
|
401 | |
|
|
402 | <pre caption="Pretending to build gnumeric"> |
|
|
403 | # <i>emerge --pretend gnumeric</i> |
|
|
404 | </pre> |
|
|
405 | |
|
|
406 | <p> |
|
|
407 | If you want to download the sourcecode of the package and its dependencies, |
|
|
408 | but don't want to build the package, use the <c>--fetchonly</c> option |
|
|
409 | (<c>-f</c> in short): |
|
|
410 | </p> |
|
|
411 | |
|
|
412 | <pre caption="Fetching sources for gnumeric"> |
|
|
413 | # <i>emerge --fetchonly gnumeric</i> |
|
|
414 | </pre> |
|
|
415 | |
|
|
416 | <p> |
|
|
417 | If you want to see where <c>emerge</c> downloads the sources from, combine the |
|
|
418 | <c>--fetchonly</c> and <c>--pretend</c> options: |
|
|
419 | </p> |
|
|
420 | |
|
|
421 | <pre caption="Showing URLs of the sources for gnumeric"> |
|
|
422 | # <i>emerge --fetchonly --pretend gnumeric</i> |
|
|
423 | </pre> |
|
|
424 | |
|
|
425 | <p> |
|
|
426 | You can also opt to install a specific version of a package. |
|
|
427 | For instance, if you want to install a gnumeric version older than 1.2 -- for |
|
|
428 | any reason whatsoever :) you would type: |
|
|
429 | </p> |
|
|
430 | |
|
|
431 | <pre caption="Installing a specific gnumeric version"> |
|
|
432 | # <i>emerge "<gnumeric-1.2"</i> |
|
|
433 | </pre> |
|
|
434 | |
|
|
435 | <p> |
|
|
436 | Other possibilities are of course ">" (later version) and "=" (the exact |
|
|
437 | version). |
|
|
438 | </p> |
|
|
439 | |
| 47 | <body> |
440 | </body> |
|
|
441 | </subsection> |
|
|
442 | <subsection> |
|
|
443 | <title>Installing Prebuilt Packages</title> |
|
|
444 | <body> |
|
|
445 | |
|
|
446 | <p> |
|
|
447 | When you want to install a prebuilt package, you should use the <c>--usepkg</c> |
|
|
448 | option (<c>-k</c> in short). This will use the binary package available in |
|
|
449 | <path>/usr/portage/packages/All</path> <e>if</e> the package and the version of |
|
|
450 | the application you want to install match. |
|
|
451 | </p> |
|
|
452 | |
|
|
453 | <pre caption="Installing a prebuilt package for gnumeric"> |
|
|
454 | # <i>emerge --usepkg gnumeric</i> |
|
|
455 | </pre> |
|
|
456 | |
|
|
457 | <p> |
|
|
458 | If you want to use the binary package, even if the versions don't match, use |
|
|
459 | <c>--usepkgonly</c> (<c>-K</c> in short). |
|
|
460 | </p> |
|
|
461 | |
|
|
462 | <pre caption="Installing the prebuilt package for gnumeric"> |
|
|
463 | # <i>emerge --usepkgonly gnumeric</i> |
|
|
464 | </pre> |
|
|
465 | |
|
|
466 | <p> |
|
|
467 | If you don't have the prebuilt package on your system yet, you can have |
|
|
468 | <c>emerge</c> download it from a mirror, defined in the <c>PORTAGE_BINHOST</c> |
|
|
469 | variable declared in <path>/etc/make.conf</path>. |
|
|
470 | </p> |
|
|
471 | |
|
|
472 | <p> |
|
|
473 | To download the binary package in case this package doesn't exist on |
|
|
474 | your system already, use <c>--getbinpkg</c> (<c>-g</c> in short): |
|
|
475 | </p> |
|
|
476 | |
|
|
477 | <pre caption="Downloading and installing a prebuilt package for gnumeric"> |
|
|
478 | # <i>emerge --getbinpkg gnumeric</i> |
|
|
479 | </pre> |
|
|
480 | |
|
|
481 | <p> |
|
|
482 | This will download the package and the package-related information for you and |
|
|
483 | install it on your system, together with the dependencies. If you want to see |
|
|
484 | what dependencies will be installed with it, use the <c>--pretend</c> option |
|
|
485 | (<c>-p</c> in short): |
|
|
486 | </p> |
|
|
487 | |
|
|
488 | <pre caption="Pretending to download the prebuilt packages for gnumeric"> |
|
|
489 | # <i>emerge --getbinpkg --pretend gnumeric</i> |
|
|
490 | </pre> |
|
|
491 | |
|
|
492 | <p> |
|
|
493 | You can also opt to download the prebuilt package (and the package-related |
|
|
494 | information) <e>without</e> checking the information on your local system and |
|
|
495 | <e>without</e> using the prebuilt package already on your system (if |
|
|
496 | applicable), use the <c>--getbinpkgonly</c> option (<c>-G</c> in short): |
|
|
497 | </p> |
|
|
498 | |
|
|
499 | <pre caption="Installing a prebuilt package without using local information"> |
|
|
500 | # <i>emerge --getbinpkgonly gnumeric</i> |
|
|
501 | </pre> |
|
|
502 | |
|
|
503 | <p> |
|
|
504 | You can also opt to install a specific version of a package. |
|
|
505 | For instance, if you want to install a gnumeric version older than 1.2 -- for |
|
|
506 | any reason whatsoever :) you would type: |
|
|
507 | </p> |
|
|
508 | |
|
|
509 | <pre caption="Installing a specific gnumeric version"> |
|
|
510 | # <i>emerge --usepkg "<gnumeric-1.2"</i> |
|
|
511 | </pre> |
|
|
512 | |
|
|
513 | <p> |
|
|
514 | Other possibilities are of course ">" (later version) and "=" (the exact |
|
|
515 | version). |
|
|
516 | </p> |
|
|
517 | |
|
|
518 | |
|
|
519 | </body> |
|
|
520 | </subsection> |
|
|
521 | <subsection> |
|
|
522 | <title>Working with Dependencies</title> |
|
|
523 | <body> |
|
|
524 | |
|
|
525 | <p> |
|
|
526 | Portage has an extensive support for dependency handling. Although you usually |
|
|
527 | don't need to even think about this (as dependencies are automatically handled |
|
|
528 | by Portage) some users might want to know how you can work with <c>emerge</c> |
|
|
529 | and dependencies. |
|
|
530 | </p> |
|
|
531 | |
|
|
532 | <p> |
|
|
533 | For instance, if you want Portage to pretend that none of the dependencies of a |
|
|
534 | package are installed, you can use <c>--emptytree</c> (<c>-e</c> in short). This |
|
|
535 | is useful with <c>--pretend</c> to display a complete tree of dependencies for |
|
|
536 | any particular package. Without <c>--pretend</c>, <c>emerge</c> will (re)compile |
|
|
537 | all listed packages. However, <c>glibc</c> will <e>not</e> be listed as |
|
|
538 | dependency for safety reasons. |
|
|
539 | </p> |
|
|
540 | |
|
|
541 | <pre caption="Show all dependencies of gnumeric"> |
|
|
542 | # <i>emerge --emptytree --pretend gnumeric</i> |
|
|
543 | </pre> |
|
|
544 | |
|
|
545 | <p> |
|
|
546 | Another argument is <c>--nodeps</c>, which will ask Portage to try install the |
|
|
547 | given package without taking care of the dependencies. It is trivial that this |
|
|
548 | can lead to failures. |
|
|
549 | </p> |
|
|
550 | |
|
|
551 | <pre caption="Installing gnumeric without taking care of the dependencies"> |
|
|
552 | # <i>emerge --nodeps gnumeric</i> |
|
|
553 | </pre> |
|
|
554 | |
|
|
555 | <p> |
|
|
556 | To opposite of <c>--nodeps</c> is <c>--onlydeps</c>, which will have Portage |
|
|
557 | install all dependencies of a given package, but not the package itself: |
|
|
558 | </p> |
|
|
559 | |
|
|
560 | <pre caption="Installing the dependencies of gnumeric"> |
|
|
561 | # <i>emerge --onlydeps gnumeric</i> |
|
|
562 | </pre> |
|
|
563 | |
|
|
564 | </body> |
|
|
565 | </subsection> |
|
|
566 | <subsection> |
|
|
567 | <title>Updating your System</title> |
|
|
568 | <body> |
|
|
569 | |
|
|
570 | <p> |
|
|
571 | Portage knows two special tags to denote a set of software packages: |
|
|
572 | <e>system</e> and <e>world</e>. You have already seen the former while |
|
|
573 | installing Gentoo if you didn't use a <e>stage3</e> installation. To refresh |
|
|
574 | things: <e>system</e> is the collection of <e>core</e> packages, necessary to |
|
|
575 | have a working Gentoo system. |
|
|
576 | </p> |
|
|
577 | |
|
|
578 | <p> |
|
|
579 | The <e>world</e> tag consists of all software you have installed yourself on |
|
|
580 | your system plus the <e>system</e> information. In other words, every time you |
|
|
581 | emerge a package using <c>emerge <package-name></c>, the |
|
|
582 | <c><package-name></c> is registered in the <e>world</e> file |
|
|
583 | (<path>/var/cache/edb/world</path>). Dependencies are <e>not</e> part of the |
|
|
584 | <e>world</e> file, but we will get to that later. |
|
|
585 | </p> |
|
|
586 | |
|
|
587 | <p> |
|
|
588 | If you want to update the system packages, use the <c>--update</c> option |
|
|
589 | (<c>-u</c> in short): |
|
|
590 | </p> |
|
|
591 | |
|
|
592 | <pre caption="Updating the system packages"> |
|
|
593 | # <i>emerge --update system</i> |
|
|
594 | </pre> |
|
|
595 | |
|
|
596 | <p> |
|
|
597 | An identical approach can be used for the world packages: |
|
|
598 | </p> |
|
|
599 | |
|
|
600 | <pre caption="Updating your entire system"> |
|
|
601 | # <i>emerge --update world</i> |
|
|
602 | </pre> |
|
|
603 | |
|
|
604 | <p> |
|
|
605 | Again, if you want to see what <c>emerge</c> wants to update, use the |
|
|
606 | <c>--pretend</c> option together with the <c>--update</c> option: |
|
|
607 | </p> |
|
|
608 | |
|
|
609 | <pre caption="Pretending to update your entire system"> |
|
|
610 | # <i>emerge --pretend --update world</i> |
|
|
611 | <comment>(Some output removed to improve readability)</comment> |
|
|
612 | [ebuild U ] net-misc/wget-1.9-r1 [1.9] |
|
|
613 | [ebuild UD] media-video/dvdauthor-0.5.0 [0.5.3] |
|
|
614 | [ebuild U ] net-analyzer/ethereal-0.9.16 [0.9.14] |
|
|
615 | </pre> |
|
|
616 | |
|
|
617 | <p> |
|
|
618 | Right next to the word "ebuild" you will notice a letter (or combination of |
|
|
619 | letters) which gives you more information about the package: |
|
|
620 | </p> |
|
|
621 | |
|
|
622 | <ul> |
|
|
623 | <li> |
|
|
624 | <e>B</e> (blocks) The package listed to the left is blocking the emerge of |
|
|
625 | the package listed to the right |
|
|
626 | </li> |
|
|
627 | <li> |
|
|
628 | <e>N</e> (new) The package is new to your system and will be emerged for the |
|
|
629 | first time |
|
|
630 | </li> |
|
|
631 | <li> |
|
|
632 | <e>R</e> (reemerge) The package isn't new, but needs to be reemerged |
|
|
633 | </li> |
|
|
634 | <li> |
|
|
635 | <e>F</e> (fetch) The package requires that you download the sourcecode |
|
|
636 | manually (for instance due to licencing issues) |
|
|
637 | </li> |
|
|
638 | <li> |
|
|
639 | <e>U</e> (update) The package already exists on your system but will be |
|
|
640 | upgraded |
|
|
641 | </li> |
|
|
642 | <li> |
|
|
643 | <e>UD</e> (downgrade) The package already exists on your system but will be |
|
|
644 | downgraded |
|
|
645 | </li> |
|
|
646 | <li> |
|
|
647 | <e>U-</e> (slot warning) The package you have installed on your system |
|
|
648 | is listed as a package that can not coexist with a different version, but |
|
|
649 | your update does. The update will be installed and the older version will be |
|
|
650 | removed. |
|
|
651 | </li> |
|
|
652 | </ul> |
|
|
653 | |
|
|
654 | <p> |
|
|
655 | In certain cases, an update may mean a downgrade (i.e. install an older version |
|
|
656 | instead of a newer version). If you don't want this to happen, use the |
|
|
657 | <c>--upgradeonly</c> option (<c>-U</c> in short): |
|
|
658 | </p> |
|
|
659 | |
|
|
660 | <pre caption="Upgrading your entire system"> |
|
|
661 | # <i>emerge --update --upgradeonly world</i> |
|
|
662 | </pre> |
|
|
663 | |
|
|
664 | <p> |
|
|
665 | Of course, we are talking here about <e>system</e> and <e>world</e>, but you can |
|
|
666 | perform the same actions for individual software packages. |
|
|
667 | </p> |
| 48 | |
668 | |
| 49 | </body> |
669 | </body> |
| 50 | </subsection> |
670 | </subsection> |
| 51 | <subsection> |
671 | <subsection> |
| 52 | <title>Removing Software</title> |
672 | <title>Removing Software</title> |
| 53 | <body> |
673 | <body> |
|
|
674 | |
|
|
675 | <p> |
|
|
676 | If you want to remove software from your system, you can use the <c>unmerge</c> |
|
|
677 | option (<c>-C</c> - capital C - in short): |
|
|
678 | </p> |
|
|
679 | |
|
|
680 | <pre caption="Uninstalling software"> |
|
|
681 | # <i>emerge unmerge gnumeric</i> |
|
|
682 | </pre> |
|
|
683 | |
|
|
684 | <p> |
|
|
685 | If you want to test a removal (but not perform it), you can use <c>--pretend</c> |
|
|
686 | again: |
|
|
687 | </p> |
|
|
688 | |
|
|
689 | <pre caption="Pretending to uninstall software"> |
|
|
690 | # <i>emerge --pretend unmerge gnumeric</i> |
|
|
691 | </pre> |
|
|
692 | |
|
|
693 | <warn> |
|
|
694 | Portage doesn't verify if a package is a dependency for another |
|
|
695 | installed package. It also doesn't warn you if the package is part of |
|
|
696 | <e>system</e>, i.e. a core application necessary for the correct functioning of |
|
|
697 | your system! |
|
|
698 | </warn> |
|
|
699 | |
|
|
700 | <p> |
|
|
701 | Once the unmerge begins you will see a long list of filenames belonging to the |
|
|
702 | package. Some of these filenames will have a flag displayed to the |
|
|
703 | left of the filename. The flags <c>!mtime</c>, <c>!empty</c>, and <c>cfgpro</c> |
|
|
704 | specify reasons why certain files are not being removed while the package is. |
|
|
705 | Files listed without any of these three flags are removed from the |
|
|
706 | filesystem successfully. The three flags specify the following reasons: |
|
|
707 | </p> |
|
|
708 | |
|
|
709 | <ul> |
|
|
710 | <li> |
|
|
711 | <c>!mtime</c> : The listed file has been changed since it was installed, |
|
|
712 | probably by you or some tool |
|
|
713 | </li> |
|
|
714 | <li> |
|
|
715 | <c>!empty</c> : The listed directory is not empty |
|
|
716 | </li> |
|
|
717 | <li> |
|
|
718 | <c>cfgpro</c> : Another already installed package claims to own this file |
|
|
719 | </li> |
|
|
720 | </ul> |
| 54 | |
721 | |
| 55 | </body> |
722 | </body> |
| 56 | </subsection> |
723 | </subsection> |
| 57 | </section> |
724 | </section> |
| 58 | <section> |
725 | <section> |
| 59 | <title>Software Availability</title> |
726 | <title>Software Availability</title> |
| 60 | <subsection> |
727 | <subsection> |
| 61 | <title>ARCH or not?</title> |
728 | <title>ARCH or not?</title> |
| 62 | <body> |
729 | <body> |
| 63 | |
730 | |
|
|
731 | <p> |
|
|
732 | Gentoo places its packages in two possible stadia called <e>ARCH</e> and |
|
|
733 | <e>~ARCH</e>. Don't take this literally: the stadia depend on the architecture |
|
|
734 | you are using. In other words, for x86-based systems you have <e>x86</e> and |
|
|
735 | <e>~x86</e>, for ppc-based systems you have <e>ppc</e> and <e>~ppc</e> etc. |
|
|
736 | </p> |
|
|
737 | |
|
|
738 | <p> |
|
|
739 | The <e>~ARCH</e> stadium means that the package works for the developer in |
|
|
740 | charge of the package, but that the package hasn't been tested thoroughly enough |
|
|
741 | by the community to be placed in <e>ARCH</e>. <e>~ARCH</e> packages usually go |
|
|
742 | to <e>ARCH</e> after being bugfree for a sufficient amount of time. |
|
|
743 | </p> |
|
|
744 | |
|
|
745 | <p> |
|
|
746 | Your system will use <e>ARCH</e> packages per default. If you want to live on |
|
|
747 | the edge, don't mind having a broken package once in a while, and you like |
|
|
748 | submitting bugreports to <uri |
|
|
749 | link="http://bugs.gentoo.org">bugs.gentoo.org</uri>, then you can opt to use |
|
|
750 | <e>~ARCH</e> packages. To "move" your system to a <e>~ARCH</e>-using system, |
|
|
751 | edit the <c>ACCEPT_KEYWORDS</c> variable in <path>/etc/make.conf</path> so that |
|
|
752 | it reads <e>~ARCH</e> (again: for x86-based systems: <e>~x86</e>, etc.). |
|
|
753 | </p> |
|
|
754 | |
|
|
755 | <p> |
|
|
756 | If you want to update your system now, you will notice that <e>a lot</e> of |
|
|
757 | packages will be updated! |
|
|
758 | </p> |
|
|
759 | |
| 64 | </body> |
760 | </body> |
| 65 | </subsection> |
761 | </subsection> |
| 66 | <subsection> |
762 | <subsection> |
| 67 | <title>Masked Packages</title> |
763 | <title>Masked Packages</title> |
| 68 | <body> |
764 | <body> |
| 69 | |
765 | |
|
|
766 | <p> |
|
|
767 | When you want to install a package, you might come across the following message: |
|
|
768 | </p> |
|
|
769 | |
|
|
770 | <pre caption="Message about masked packages"> |
|
|
771 | Calculating dependencies |
|
|
772 | !!! <comment>all ebuilds that could satisfy </comment><your package><comment> have been masked.</comment> |
|
|
773 | </pre> |
|
|
774 | |
|
|
775 | <p> |
|
|
776 | A package can be masked due to two reasons: |
|
|
777 | </p> |
|
|
778 | |
|
|
779 | <ol> |
|
|
780 | <li>The package is in <e>~ARCH</e> while you use <e>ARCH</e></li> |
|
|
781 | <li>The package is hard-masked explicitly</li> |
|
|
782 | </ol> |
|
|
783 | |
|
|
784 | <p> |
|
|
785 | If the package is masked because of the first reason, and you <e>really</e> want |
|
|
786 | to install it (knowing that there <e>is</e> a reason why it isn't available in |
|
|
787 | <e>ARCH</e>), you can temporarily accept <e>~ARCH</e> packages: |
|
|
788 | </p> |
|
|
789 | |
|
|
790 | <pre caption="Temporarily accepting ~ARCH packages"> |
|
|
791 | # <i>ACCEPT_KEYWORDS="~x86" emerge gnumeric</i> |
|
|
792 | </pre> |
|
|
793 | |
|
|
794 | <p> |
|
|
795 | A package is hardmasked if it is listed in |
|
|
796 | <path>/usr/portage/profiles/package.mask</path>. If you read this file, you |
|
|
797 | will also read the reason why the package is hardmasked (it is usually added as |
|
|
798 | a comment). If you want to install the package nevertheless (despite all the |
|
|
799 | possible warnings we could ever throw at your head about "breaking your system", |
|
|
800 | "breaks other packages", or "badly needs testing"), create the |
|
|
801 | <path>/etc/portage/package.unmask</path> file and list the package in it (use |
|
|
802 | the same format as is used in <path>/usr/portage/profiles/package.mask</path>). |
|
|
803 | </p> |
|
|
804 | |
|
|
805 | <p> |
|
|
806 | Do <e>not</e> alter the <path>/usr/portage/profiles/package.mask</path> file as |
|
|
807 | all changes are undone the next time you update your Portage tree. |
|
|
808 | </p> |
|
|
809 | |
|
|
810 | <p> |
|
|
811 | Another trick to circumvent the "masked package" problem is to install the |
|
|
812 | package using the full path. This will ignore both the <c>ACCEPT_KEYWORD</c> |
|
|
813 | settings and the <path>package.mask</path> listing. |
|
|
814 | </p> |
|
|
815 | |
|
|
816 | <pre caption="Installing a package without checking for stadium / masking"> |
|
|
817 | # <i>emerge /usr/portage/app-office/gnumeric/gnumeric-1.2.0.ebuild</i> |
|
|
818 | </pre> |
|
|
819 | |
| 70 | </body> |
820 | </body> |
| 71 | </subsection> |
821 | </subsection> |
| 72 | <subsection> |
822 | <subsection> |
| 73 | <title>Blocked Packages</title> |
823 | <title>Blocked Packages</title> |
| 74 | <body> |
824 | <body> |
|
|
825 | |
|
|
826 | <p> |
|
|
827 | You have a situation when you receive the following error on your screen: |
|
|
828 | </p> |
|
|
829 | |
|
|
830 | <pre caption="Blocking package"> |
|
|
831 | [blocks B ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0) |
|
|
832 | </pre> |
|
|
833 | |
|
|
834 | <p> |
|
|
835 | In the above example, the package <c>bonobo-activation</c> is blocking the |
|
|
836 | emerge of <c>libbonobo</c>. To resolve this issue, remove the |
|
|
837 | <c>bonobo-activation</c> package and continue: |
|
|
838 | </p> |
|
|
839 | |
|
|
840 | <pre caption="Resolving a blocking situation"> |
|
|
841 | # <i>emerge unmerge bonobo-activation</i> |
|
|
842 | </pre> |
| 75 | |
843 | |
| 76 | </body> |
844 | </body> |
| 77 | </subsection> |
845 | </subsection> |
| 78 | </section> |
846 | </section> |
| 79 | </sections> |
847 | </sections> |