| 1 | <?xml version='1.0' encoding='UTF-8'?> |
1 | <?xml version='1.0' encoding='UTF-8'?> |
| 2 | <!DOCTYPE sections SYSTEM "/dtd/book.dtd"> |
2 | <!DOCTYPE sections SYSTEM "/dtd/book.dtd"> |
| 3 | |
3 | |
| 4 | <!-- The content of this document is licensed under the CC-BY-SA license --> |
4 | <!-- The content of this document is licensed under the CC-BY-SA license --> |
| 5 | <!-- See http://creativecommons.org/licenses/by-sa/1.0 --> |
5 | <!-- See http://creativecommons.org/licenses/by-sa/2.5 --> |
| 6 | |
6 | |
| 7 | <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/handbook/hb-working-portage.xml,v 1.22 2004/02/03 20:25:45 swift Exp $ --> |
7 | <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/handbook/hb-working-portage.xml,v 1.73 2010/02/13 20:54:07 nightmorph Exp $ --> |
| 8 | |
8 | |
| 9 | <sections> |
9 | <sections> |
|
|
10 | |
|
|
11 | <abstract> |
|
|
12 | This chapter explains the "simple" steps a user definitely needs to know to |
|
|
13 | maintain the software on his system. |
|
|
14 | </abstract> |
|
|
15 | |
|
|
16 | <version>1.66</version> |
|
|
17 | <date>2010-02-13</date> |
|
|
18 | |
| 10 | <section> |
19 | <section> |
| 11 | <title>Obtaining Package Information</title> |
20 | <title>Welcome to Portage</title> |
| 12 | <subsection> |
|
|
| 13 | <title>The Lord of All Tools: emerge</title> |
|
|
| 14 | <body> |
21 | <body> |
| 15 | |
22 | |
| 16 | <p> |
|
|
| 17 | The main Portage tool that most users will use is <c>emerge</c>. We have already |
|
|
| 18 | used it during the Gentoo installation and in the previous chapter, but we just |
|
|
| 19 | briefly explained how to use it. This chapter will elaborate on <c>emerge</c> |
|
|
| 20 | and teach you how to use <c>emerge</c> to fix all your software-related needs. |
|
|
| 21 | </p> |
23 | <p> |
| 22 | |
24 | Portage is probably Gentoo's most notable innovation in software management. |
|
|
25 | With its high flexibility and enormous amount of features it is frequently seen |
|
|
26 | as the best software management tool available for Linux. |
| 23 | <p> |
27 | </p> |
| 24 | <c>emerge</c> is the command used to install, remove, query and maintain |
28 | |
| 25 | software packages. It is a front-end for <c>ebuild</c>; people interested in |
|
|
| 26 | becoming Gentoo professionals will learn how to use <c>ebuild</c> later on. For |
|
|
| 27 | now, we will focus on <c>emerge</c> as it has functionality that <c>ebuild</c> |
|
|
| 28 | lacks (such as resolving dependencies, searching the Portage tree, etc.). |
|
|
| 29 | </p> |
29 | <p> |
| 30 | |
30 | Portage is completely written in <uri link="http://www.python.org">Python</uri> |
|
|
31 | and <uri link="http://www.gnu.org/software/bash">Bash</uri> and therefore fully |
|
|
32 | visible to the users as both are scripting languages. |
| 31 | <p> |
33 | </p> |
| 32 | Since <c>emerge</c> is the most important tool for Gentoo users, it has an |
34 | |
| 33 | extensive manpage you can read by issuing <c>man emerge</c>. You can also view |
|
|
| 34 | the in-command help by running <c>emerge --help</c>. |
|
|
| 35 | </p> |
35 | <p> |
|
|
36 | Most users will work with Portage through the <c>emerge</c> tool. This chapter |
|
|
37 | is not meant to duplicate the information available from the emerge man page. |
|
|
38 | For a complete rundown of emerge's options, please consult the man page: |
|
|
39 | </p> |
| 36 | |
40 | |
| 37 | <pre caption="Retrieving help for emerge"> |
41 | <pre caption="Reading the emerge man page"> |
| 38 | # <i>man emerge</i> |
42 | $ <i>man emerge</i> |
| 39 | # <i>emerge --help</i> |
|
|
| 40 | </pre> |
43 | </pre> |
| 41 | |
44 | |
| 42 | </body> |
|
|
| 43 | </subsection> |
|
|
| 44 | <subsection> |
|
|
| 45 | <title>The Portage Tree</title> |
|
|
| 46 | <body> |
45 | </body> |
| 47 | |
|
|
| 48 | <p> |
|
|
| 49 | Before we continue describing <c>emerge</c>, let us first take a look at the |
|
|
| 50 | Portage Tree. Go to <path>/usr/portage</path> and do a listing of the available |
|
|
| 51 | directories. We use <c>ls --classify</c> to list the contents of a |
|
|
| 52 | directory as it will show directories with a trailing "/". |
|
|
| 53 | </p> |
|
|
| 54 | |
|
|
| 55 | <pre caption="Viewing the Portage Tree"> |
|
|
| 56 | # <i>cd /usr/portage; ls --classify</i> |
|
|
| 57 | app-admin/ dev-ml/ gnome-libs/ net-print/ |
|
|
| 58 | app-arch/ dev-perl/ gnome-office/ net-wireless/ |
|
|
| 59 | app-benchmarks/ dev-php/ header.txt net-www/ |
|
|
| 60 | app-cdr/ dev-python/ incoming/ net-zope/ |
|
|
| 61 | app-crypt/ dev-ruby/ jython/ packages/ |
|
|
| 62 | app-dicts/ dev-tcltk/ kde-apps/ profiles/ |
|
|
| 63 | app-doc/ dev-tex/ kde-base/ releases/ |
|
|
| 64 | app-editors/ dev-util/ kde-i18n/ scripts/ |
|
|
| 65 | app-emacs/ distfiles/ kde-libs/ sec-policy/ |
|
|
| 66 | app-emulation/ eclass/ licenses/ skel.ChangeLog |
|
|
| 67 | app-games/ experimental/ media-fonts/ skel.ebuild |
|
|
| 68 | app-gnustep/ files/ media-gfx/ skel.metadata.xml |
|
|
| 69 | app-i18n/ fresco-base/ media-libs/ snapshots/ |
|
|
| 70 | app-misc/ games-action/ media-plugins/ sys-apps/ |
|
|
| 71 | app-office/ games-arcade/ media-radio/ sys-build/ |
|
|
| 72 | app-pda/ games-board/ media-sound/ sys-cluster/ |
|
|
| 73 | app-portage/ games-emulation/ media-tv/ sys-devel/ |
|
|
| 74 | app-sci/ games-engines/ media-video/ sys-fs/ |
|
|
| 75 | app-shells/ games-fps/ metadata/ sys-kernel/ |
|
|
| 76 | app-text/ games-kids/ net-analyzer/ sys-kmods/ |
|
|
| 77 | app-vim/ games-misc/ net-apache/ sys-libs/ |
|
|
| 78 | app-xemacs/ games-mud/ net-dialup/ unix2tcp/ |
|
|
| 79 | berlin-base/ games-puzzle/ net-dns/ x11-base/ |
|
|
| 80 | dev-ada/ games-roguelike/ net-firewall/ x11-libs/ |
|
|
| 81 | dev-cpp/ games-rpg/ net-fs/ x11-misc/ |
|
|
| 82 | dev-db/ games-server/ net-ftp/ x11-plugins/ |
|
|
| 83 | dev-dotnet/ games-simulation/ net-im/ x11-terms/ |
|
|
| 84 | dev-embedded/ games-sports/ net-irc/ x11-themes/ |
|
|
| 85 | dev-games/ games-strategy/ net-libs/ x11-wm/ |
|
|
| 86 | dev-haskell/ games-util/ net-mail/ xfce-base/ |
|
|
| 87 | dev-java/ glep/ net-misc/ xfce-extra/ |
|
|
| 88 | dev-lang/ gnome-apps/ net-nds/ |
|
|
| 89 | dev-libs/ gnome-base/ net-news/ |
|
|
| 90 | dev-lisp/ gnome-extra/ net-p2p/ |
|
|
| 91 | </pre> |
|
|
| 92 | |
|
|
| 93 | <p> |
|
|
| 94 | As you can see, the Portage tree has several subdirectories. Most of them are |
|
|
| 95 | the <e>categories</e> in which the Gentoo packages, called <e>ebuilds</e>, |
|
|
| 96 | reside. Take a look at, for instance, <path>app-office</path>: |
|
|
| 97 | </p> |
|
|
| 98 | |
|
|
| 99 | <pre caption="Viewing a category"> |
|
|
| 100 | # <i>cd app-office; ls --classify</i> |
|
|
| 101 | abiword/ gnotime/ kmymoney2/ ooodi/ plan/ timestamp.x |
|
|
| 102 | dia/ gnucash/ koffice/ oooqs/ qhacc/ |
|
|
| 103 | dia2code/ gnumeric/ lxbank/ openoffice/ sc/ |
|
|
| 104 | facturalux/ ical/ lyx/ openoffice-bin/ scribus/ |
|
|
| 105 | gaby/ kbudget/ mdbtools/ openoffice-ximian/ siag/ |
|
|
| 106 | gnofin/ khacc/ mrproject/ phprojekt/ texmacs/ |
|
|
| 107 | </pre> |
|
|
| 108 | |
|
|
| 109 | <p> |
|
|
| 110 | Inside a category you will find the packages belonging to that category, with a |
|
|
| 111 | separate directory for each package. Let us take a look at the <c>openoffice</c> |
|
|
| 112 | package: |
|
|
| 113 | </p> |
|
|
| 114 | |
|
|
| 115 | <pre caption="Viewing a package"> |
|
|
| 116 | # <i>cd openoffice; ls --classify</i> |
|
|
| 117 | ChangeLog files/ openoffice-1.0.3-r1.ebuild openoffice-1.1.0-r2.ebuild |
|
|
| 118 | Manifest metadata.xml openoffice-1.1.0-r1.ebuild openoffice-1.1.0.ebuild |
|
|
| 119 | </pre> |
|
|
| 120 | |
|
|
| 121 | <p> |
|
|
| 122 | Remember that we told you that a Gentoo package is called an ebuild? Well, in |
|
|
| 123 | the example directory four of such ebuilds are stored. Their naming is |
|
|
| 124 | almost identical: they only differ in the version name. |
|
|
| 125 | You are free to view the contents of such a package: they are plain scripts. We |
|
|
| 126 | will not discuss it right now as it isn't important to know if you plan on just |
|
|
| 127 | using Gentoo. |
|
|
| 128 | </p> |
|
|
| 129 | |
|
|
| 130 | <p> |
|
|
| 131 | The other files are the <path>ChangeLog</path> (which contains a listing of all |
|
|
| 132 | the changes done to the ebuilds), <path>Manifest</path> (which contains the |
|
|
| 133 | checksums and filesizes of all the files in the directory) and |
|
|
| 134 | <path>metadata.xml</path> (which contains more information about the package, |
|
|
| 135 | such as the responsible development group -- called <e>herd</e> -- and a more |
|
|
| 136 | extensive description). |
|
|
| 137 | </p> |
|
|
| 138 | |
|
|
| 139 | <p> |
|
|
| 140 | Inside the <path>files</path> directory you will find extra files, needed by |
|
|
| 141 | Portage: digests (checksums and permissions of the files needed by a single |
|
|
| 142 | version of the package), patches, example configuration files, etc. |
|
|
| 143 | </p> |
|
|
| 144 | |
|
|
| 145 | <pre caption="Viewing the extra files"> |
|
|
| 146 | # <i>cd files; ls --classify</i> |
|
|
| 147 | 1.0.3/ digest-openoffice-1.0.3-r1 digest-openoffice-1.1.0-r1 |
|
|
| 148 | 1.1.0/ digest-openoffice-1.1.0 digest-openoffice-1.1.0-r2 |
|
|
| 149 | # <i>cd 1.1.0; ls --classify</i> |
|
|
| 150 | fixed-gcc.patch ooffice-wrapper-1.3 |
|
|
| 151 | newstlportfix.patch openoffice-1.1.0-linux-2.6-fix.patch |
|
|
| 152 | no-mozab.patch openoffice-1.1.0-sparc64-fix.patch |
|
|
| 153 | nptl.patch |
|
|
| 154 | </pre> |
|
|
| 155 | |
|
|
| 156 | <p> |
|
|
| 157 | If you go back to the root of the Portage tree (<path>/usr/portage</path>) you |
|
|
| 158 | will notice that there are other, non-category directories too. We will discuss |
|
|
| 159 | those later in this chapter. |
|
|
| 160 | </p> |
|
|
| 161 | |
|
|
| 162 | </body> |
|
|
| 163 | </subsection> |
|
|
| 164 | <subsection> |
|
|
| 165 | <title>Search for a Package</title> |
|
|
| 166 | <body> |
|
|
| 167 | |
|
|
| 168 | <p> |
|
|
| 169 | If you are new to Linux or Gentoo, you might not know what tool you need for |
|
|
| 170 | what job. To facilitate searching, <c>emerge</c> provides you with a way to |
|
|
| 171 | search through the available packages on your system. There are two ways you can |
|
|
| 172 | search through packages: by <e>name</e>, or by <e>name</e> and |
|
|
| 173 | <e>description</e>. |
|
|
| 174 | </p> |
|
|
| 175 | |
|
|
| 176 | <p> |
|
|
| 177 | To search through the Portage tree by name, use <c>emerge search</c>. For |
|
|
| 178 | instance, to find out more about <c>mozilla</c>: |
|
|
| 179 | </p> |
|
|
| 180 | |
|
|
| 181 | <pre caption="Showing information about mozilla"> |
|
|
| 182 | # <i>emerge search mozilla</i> |
|
|
| 183 | Searching... |
|
|
| 184 | [ Results for search key : mozilla ] |
|
|
| 185 | [ Applications found : 5 ] |
|
|
| 186 | <comment>(Some output removed to improve readability)</comment> |
|
|
| 187 | * net-www/mozilla |
|
|
| 188 | Latest version available: 1.5-r1 |
|
|
| 189 | Latest version installed: 1.4-r3 |
|
|
| 190 | Size of downloaded files: 29,153 kB |
|
|
| 191 | Homepage: http://www.mozilla.org |
|
|
| 192 | Description: The Mozilla Web Browser |
|
|
| 193 | |
|
|
| 194 | * net-www/mozilla-firebird |
|
|
| 195 | Latest version available: 0.7 |
|
|
| 196 | Latest version installed: [ Not Installed ] |
|
|
| 197 | Size of downloaded files: 37,850 kB |
|
|
| 198 | Homepage: http://www.mozilla.org/projects/firebird/ |
|
|
| 199 | Description: The Mozilla Firebird Web Browser |
|
|
| 200 | <comment>(...)</comment> |
|
|
| 201 | </pre> |
|
|
| 202 | |
|
|
| 203 | <p> |
|
|
| 204 | If you want to include a search through the descriptions too, use the |
|
|
| 205 | <c>--searchdesc</c> argument: |
|
|
| 206 | </p> |
|
|
| 207 | |
|
|
| 208 | <pre caption="Search through the descriptions too"> |
|
|
| 209 | # <i>emerge --searchdesc mozilla</i> |
|
|
| 210 | Searching... |
|
|
| 211 | [ Results for search key : mozilla ] |
|
|
| 212 | [ Applications found : 10 ] |
|
|
| 213 | <comment>(Some output removed to improve readability)</comment> |
|
|
| 214 | * dev-libs/nss-3.8 |
|
|
| 215 | Latest version available: 3.8 |
|
|
| 216 | Latest version installed: 3.8 |
|
|
| 217 | Size of downloaded files: 2,782 kB |
|
|
| 218 | Homepage: http://www.mozilla.org/projects/security/pki/nss/ |
|
|
| 219 | Description: Mozilla's Netscape Security Services Library that implements PKI support |
|
|
| 220 | </pre> |
|
|
| 221 | |
|
|
| 222 | <p> |
|
|
| 223 | As you can see, the output of <c>emerge</c> informs you about the category and |
|
|
| 224 | name of the package, the available version, the currently installed version, |
|
|
| 225 | the size of the downloaded files, the homepage and the small description. |
|
|
| 226 | </p> |
|
|
| 227 | |
|
|
| 228 | <p> |
|
|
| 229 | You see something new? Yes, <e>downloaded files</e>. When you tell Portage to |
|
|
| 230 | install a package, it of course needs to have the necessary sources (or |
|
|
| 231 | precompiled packages) available. It therefore checks the contents of |
|
|
| 232 | <path>/usr/portage/distfiles</path> (for source code) or |
|
|
| 233 | <path>/usr/portage/packages/All</path> (for precompiled packages) to see if the |
|
|
| 234 | necessary files are already available. If not, it downloads the necessary files |
|
|
| 235 | and places them in those directories. |
|
|
| 236 | </p> |
|
|
| 237 | |
|
|
| 238 | <!-- |
|
|
| 239 | <note> |
|
|
| 240 | Searching the Portage Tree, especially when using <c>- -searchdesc</c>, is very |
|
|
| 241 | time consuming. There are other, more performant tools available. We will |
|
|
| 242 | describe those in the chapter on <uri link="?part=2&chap=7">Gentoolkit and |
|
|
| 243 | Other Tools</uri>. |
|
|
| 244 | </note> |
|
|
| 245 | --> |
|
|
| 246 | |
|
|
| 247 | </body> |
|
|
| 248 | </subsection> |
|
|
| 249 | <subsection> |
|
|
| 250 | <title>Viewing the ChangeLog</title> |
|
|
| 251 | <body> |
|
|
| 252 | |
|
|
| 253 | <p> |
|
|
| 254 | While browsing through the Portage Tree, you saw that there was a ChangeLog for |
|
|
| 255 | each package. You can view the ChangeLog entries between the available version |
|
|
| 256 | and the installed version with <c>emerge</c> too. Use the |
|
|
| 257 | <c>--pretend --changelog</c> (<c>-pl</c> in short) options. As an example we |
|
|
| 258 | will view the ChangeLog entries for <c>gnumeric</c>: |
|
|
| 259 | </p> |
|
|
| 260 | |
|
|
| 261 | <pre caption="Viewing the ChangeLog entries for gnumeric"> |
|
|
| 262 | # <i>emerge --pretend --changelog gnumeric</i> |
|
|
| 263 | <comment>(Some output removed to improve readability)</comment> |
|
|
| 264 | *gnumeric-1.2.2 |
|
|
| 265 | |
|
|
| 266 | 27 Nov 2003; foser <foser@gentoo.org> gnumeric-1.2.2.ebuild : |
|
|
| 267 | New release, requested in #34492 |
|
|
| 268 | updated deps |
|
|
| 269 | |
|
|
| 270 | 12 Nov 2003; Jason Wever <weeve@gentoo.org> gnumeric-1.2.0.ebuild: |
|
|
| 271 | Marked stable on sparc, fixes bug #32405. |
|
|
| 272 | |
|
|
| 273 | 14 Oct 2003; Jason Wever <weeve@gentoo.org> gnumeric-1.0.8.ebuild: |
|
|
| 274 | Added ~sparc keyword. Fixes bug #31150. |
|
|
| 275 | </pre> |
|
|
| 276 | |
|
|
| 277 | </body> |
|
|
| 278 | </subsection> |
|
|
| 279 | </section> |
46 | </section> |
| 280 | <section> |
47 | <section> |
| 281 | <title>Updating Portage</title> |
48 | <title>The Portage Tree</title> |
| 282 | <subsection> |
|
|
| 283 | <title>Introduction</title> |
|
|
| 284 | <body> |
|
|
| 285 | |
|
|
| 286 | <p> |
|
|
| 287 | Searching through Portage is nice, but if you don't update your Portage Tree |
|
|
| 288 | regularly, you will be stuck with the packages and versions available on your |
|
|
| 289 | system. This means that your system will get outdated pretty soon and that |
|
|
| 290 | you will be missing bugfixes and remedies for possible security problems. |
|
|
| 291 | </p> |
|
|
| 292 | |
|
|
| 293 | <p> |
|
|
| 294 | There are several ways to update your Portage Tree. The most popular method is |
|
|
| 295 | by using one of our <uri link="/main/en/mirrors.xml">rsync mirrors</uri>. |
|
|
| 296 | Another one is by using a Portage snapshot (in case a firewall or unavailability |
|
|
| 297 | of a network prohibits the use of the rsync server). |
|
|
| 298 | </p> |
|
|
| 299 | |
|
|
| 300 | </body> |
|
|
| 301 | </subsection> |
49 | <subsection> |
|
|
50 | <title>Ebuilds</title> |
|
|
51 | <body> |
|
|
52 | |
|
|
53 | <p> |
|
|
54 | When we talk about packages, we often mean software titles that are available to |
|
|
55 | the Gentoo users through the Portage tree. The Portage tree is a collection of |
|
|
56 | <e>ebuilds</e>, files that contain all information Portage needs to maintain |
|
|
57 | software (install, search, query, ...). These ebuilds reside in |
|
|
58 | <path>/usr/portage</path> by default. |
|
|
59 | </p> |
|
|
60 | |
|
|
61 | <p> |
|
|
62 | Whenever you ask Portage to perform some action regarding software titles, it |
|
|
63 | will use the ebuilds on your system as a base. It is therefore important that |
|
|
64 | you regularly update the ebuilds on your system so Portage knows about new |
|
|
65 | software, security updates, etc. |
|
|
66 | </p> |
|
|
67 | |
|
|
68 | </body> |
| 302 | <subsection> |
69 | </subsection> |
| 303 | <title>Selecting a Mirror for rsync</title> |
|
|
| 304 | <body> |
|
|
| 305 | |
|
|
| 306 | <p> |
|
|
| 307 | It is adviseable to first select a fast <uri |
|
|
| 308 | link="/main/en/mirrors.xml">mirror</uri> close to you. You can do this manually |
|
|
| 309 | (by setting the <c>SYNC</c> variable in <path>/etc/make.conf</path>) or use |
|
|
| 310 | <c>mirrorselect</c> to do this for you automatically. As the <c>SYNC</c> |
|
|
| 311 | variable will be discussed later on, we will focus on using <c>mirrorselect</c>. |
|
|
| 312 | First install <c>mirrorselect</c> by emerging it: |
|
|
| 313 | </p> |
|
|
| 314 | |
|
|
| 315 | <pre caption="Installing mirrorselect"> |
|
|
| 316 | # <i>emerge --usepkg mirrorselect</i> |
|
|
| 317 | </pre> |
|
|
| 318 | |
|
|
| 319 | <p> |
|
|
| 320 | Now run <c>mirrorselect</c> to automatically select mirrors for you (it will |
|
|
| 321 | also setup Portage to use a mirror for the source code): |
|
|
| 322 | </p> |
|
|
| 323 | |
|
|
| 324 | <pre caption="Running mirrorselect"> |
|
|
| 325 | # <i>mirrorselect -a -s3</i> |
|
|
| 326 | </pre> |
|
|
| 327 | |
|
|
| 328 | </body> |
|
|
| 329 | </subsection> |
70 | <subsection> |
| 330 | <subsection> |
|
|
| 331 | <title>Updating Portage</title> |
71 | <title>Updating the Portage Tree</title> |
| 332 | <body> |
72 | <body> |
| 333 | |
73 | |
| 334 | <p> |
|
|
| 335 | To update Portage using rsync, simply run <c>emerge sync</c>: |
|
|
| 336 | </p> |
74 | <p> |
|
|
75 | The Portage tree is usually updated with <uri |
|
|
76 | link="http://rsync.samba.org/">rsync</uri>, a fast incremental file transfer |
|
|
77 | utility. Updating is fairly simple as the <c>emerge</c> command provides a |
|
|
78 | front-end for rsync: |
|
|
79 | </p> |
| 337 | |
80 | |
| 338 | <pre caption="Updating Portage using emerge sync"> |
81 | <pre caption="Updating the Portage tree"> |
| 339 | # <i>emerge sync</i> |
82 | # <i>emerge --sync</i> |
| 340 | </pre> |
83 | </pre> |
| 341 | |
84 | |
| 342 | <p> |
|
|
| 343 | If this fails (due to network problems, or a firewall), you can try using |
|
|
| 344 | <c>emerge-webrsync</c> which will download a Portage Tree snapshot using |
|
|
| 345 | <c>wget</c>. This also means that you can use proxies if you want. We discussed |
|
|
| 346 | how to setup your system to use proxies during the Gentoo installation. |
|
|
| 347 | </p> |
85 | <p> |
|
|
86 | If you are unable to rsync due to firewall restrictions you can still update |
|
|
87 | your Portage tree by using our daily generated Portage tree snapshots. The |
|
|
88 | <c>emerge-webrsync</c> tool automatically fetches and installs the latest |
|
|
89 | snapshot on your system: |
|
|
90 | </p> |
| 348 | |
91 | |
| 349 | <pre caption="Updating Portage using emerge-webrsync"> |
92 | <pre caption="Running emerge-webrsync"> |
| 350 | # <i>emerge-webrsync</i> |
93 | # <i>emerge-webrsync</i> |
| 351 | </pre> |
94 | </pre> |
| 352 | |
95 | |
| 353 | </body> |
96 | </body> |
| 354 | </subsection> |
97 | </subsection> |
| 355 | </section> |
98 | </section> |
| 356 | <section> |
99 | <section> |
| 357 | <title>Maintaining Software</title> |
100 | <title>Maintaining Software</title> |
| 358 | <subsection> |
101 | <subsection> |
| 359 | <title>Building or Prebuilt?</title> |
102 | <title>Searching for Software</title> |
| 360 | <body> |
|
|
| 361 | |
|
|
| 362 | <p> |
|
|
| 363 | Gentoo provides ebuilds, the Gentoo packages if you like. But when you want to |
|
|
| 364 | install such an ebuild, you can choose between <e>building</e> the package and |
|
|
| 365 | using a <e>prebuilt</e> package. But what are the advantages/disadvantages of |
|
|
| 366 | both approaches, and can they be used next to each other? |
|
|
| 367 | </p> |
|
|
| 368 | |
|
|
| 369 | <p> |
|
|
| 370 | As you probably have guessed, building packages takes a lot of time (especially |
|
|
| 371 | if you have little resources or want to build big packages, such as <uri |
|
|
| 372 | link="http://www.kde.org">KDE</uri>, <uri |
|
|
| 373 | link="http://www.openoffice.org">OpenOffice.org</uri>, etc.). By building the |
|
|
| 374 | package, you can use the <c>USE</c> setting to tweak the package to your system. |
|
|
| 375 | Of course, you can also define high optimization options (in the <c>CFLAGS</c> |
|
|
| 376 | and <c>CXXFLAGS</c> variables) to compile the package with. |
|
|
| 377 | </p> |
|
|
| 378 | |
|
|
| 379 | <p> |
|
|
| 380 | Using prebuilt packages improves the installation time (as no more compilation |
|
|
| 381 | is needed), but you will lose the advantages of the <c>USE</c> setting and the |
|
|
| 382 | <c>CFLAGS</c> & <c>CXXFLAGS</c> variables. |
|
|
| 383 | </p> |
|
|
| 384 | |
|
|
| 385 | <p> |
|
|
| 386 | As previously stated, prebuilt packages are stored in the |
|
|
| 387 | <path>/usr/portage/packages/All</path> directory, while the source code of the |
|
|
| 388 | packages is placed in <path>/usr/portage/distfiles</path>. If you have finished |
|
|
| 389 | installing a package you can remove the package or source code from the |
|
|
| 390 | respective directory. However, you might want to keep the package/source code of |
|
|
| 391 | the latest version, just in case you want to reinstall the package (so you don't |
|
|
| 392 | have to redownload it). |
|
|
| 393 | </p> |
|
|
| 394 | |
|
|
| 395 | </body> |
103 | <body> |
| 396 | </subsection> |
104 | |
|
|
105 | <p> |
|
|
106 | To search through the Portage tree after software titles, you can use |
|
|
107 | <c>emerge</c> built-in search capabilities. By default, <c>emerge --search</c> |
|
|
108 | returns the names of packages whose title matches (either fully or partially) |
|
|
109 | the given search term. |
|
|
110 | </p> |
|
|
111 | |
|
|
112 | <p> |
|
|
113 | For instance, to search for all packages who have "pdf" in their name: |
|
|
114 | </p> |
|
|
115 | |
|
|
116 | <pre caption="Searching for pdf-named packages"> |
|
|
117 | $ <i>emerge --search pdf</i> |
|
|
118 | </pre> |
|
|
119 | |
|
|
120 | <p> |
|
|
121 | If you want to search through the descriptions as well you can use the |
|
|
122 | <c>--searchdesc</c> (or <c>-S</c>) switch: |
|
|
123 | </p> |
|
|
124 | |
|
|
125 | <pre caption="Searching for pdf-related packages"> |
|
|
126 | $ <i>emerge --searchdesc pdf</i> |
|
|
127 | </pre> |
|
|
128 | |
|
|
129 | <p> |
|
|
130 | When you take a look at the output, you'll notice that it gives you a lot of |
|
|
131 | information. The fields are clearly labelled so we won't go further into their |
|
|
132 | meanings: |
|
|
133 | </p> |
|
|
134 | |
|
|
135 | <pre caption="Example 'emerge --search' output"> |
|
|
136 | * net-print/cups-pdf |
|
|
137 | Latest version available: 1.5.2 |
|
|
138 | Latest version installed: [ Not Installed ] |
|
|
139 | Size of downloaded files: 15 kB |
|
|
140 | Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ |
|
|
141 | Description: Provides a virtual printer for CUPS to produce PDF files. |
|
|
142 | License: GPL-2 |
|
|
143 | </pre> |
|
|
144 | |
|
|
145 | </body> |
| 397 | <subsection> |
146 | </subsection> |
|
|
147 | <subsection> |
| 398 | <title>Installing Software from Sources</title> |
148 | <title>Installing Software</title> |
| 399 | <body> |
149 | <body> |
| 400 | |
150 | |
| 401 | <p> |
151 | <p> |
| 402 | Okay, enough talking, let's cut to the chase. To install a package, you will use |
152 | Once you've found a software title to your liking, you can easily install it |
| 403 | the <c>emerge</c> command. If you don't want to use any prebuilt packages, you |
153 | with <c>emerge</c>: just add the package name. For instance, to install |
| 404 | can just use <c>emerge <package-name></c> or <c>emerge |
|
|
| 405 | <category>/<package-name></c>. As an example we'll install |
|
|
| 406 | <c>gnumeric</c>: |
154 | <c>gnumeric</c>: |
| 407 | </p> |
155 | </p> |
| 408 | |
156 | |
| 409 | <pre caption="Building gnumeric"> |
157 | <pre caption="Installing gnumeric"> |
| 410 | # <i>emerge gnumeric</i> |
158 | # <i>emerge gnumeric</i> |
| 411 | </pre> |
159 | </pre> |
| 412 | |
160 | |
| 413 | <p> |
161 | <p> |
| 414 | This will download the source code for you and unpacks, compiles and installs |
162 | Since many applications depend on each other, any attempt to install a certain |
| 415 | the package on your system. It will also do the same for all the dependencies. |
163 | software package might result in the installation of several dependencies as |
| 416 | If you want to see what dependencies will be installed with it, use the |
164 | well. Don't worry, Portage handles dependencies well. If you want to find out |
| 417 | <c>--pretend</c> option (<c>-p</c> in short): |
165 | what Portage <e>would</e> install when you ask it to install a certain package, |
|
|
166 | add the <c>--pretend</c> switch. For instance: |
| 418 | </p> |
167 | </p> |
| 419 | |
168 | |
| 420 | <pre caption="Pretending to build gnumeric"> |
169 | <pre caption="Pretend to install gnumeric"> |
| 421 | # <i>emerge --pretend gnumeric</i> |
170 | # <i>emerge --pretend gnumeric</i> |
| 422 | </pre> |
171 | </pre> |
| 423 | |
172 | |
| 424 | <p> |
173 | <p> |
| 425 | If you want to download the source code of the package and its dependencies, |
174 | When you ask Portage to install a package, it will download the necessary source |
| 426 | but don't want to build the package, use the <c>--fetchonly</c> option |
175 | code from the internet (if necessary) and store it by default in |
| 427 | (<c>-f</c> in short): |
176 | <path>/usr/portage/distfiles</path>. After this it will unpack, compile and |
|
|
177 | install the package. If you want Portage to only download the sources without |
|
|
178 | installing them, add the <c>--fetchonly</c> option to the <c>emerge</c> command: |
| 428 | </p> |
179 | </p> |
| 429 | |
180 | |
| 430 | <pre caption="Fetching sources for gnumeric"> |
181 | <pre caption="Download the sourcecode for gnumeric"> |
| 431 | # <i>emerge --fetchonly gnumeric</i> |
182 | # <i>emerge --fetchonly gnumeric</i> |
| 432 | </pre> |
183 | </pre> |
| 433 | |
184 | |
| 434 | <p> |
|
|
| 435 | If you want to see where <c>emerge</c> downloads the sources from, combine the |
|
|
| 436 | <c>--fetchonly</c> and <c>--pretend</c> options: |
|
|
| 437 | </p> |
|
|
| 438 | |
|
|
| 439 | <pre caption="Showing URLs of the sources for gnumeric"> |
|
|
| 440 | # <i>emerge --fetchonly --pretend gnumeric</i> |
|
|
| 441 | </pre> |
|
|
| 442 | |
|
|
| 443 | <p> |
|
|
| 444 | You can also opt to install a specific version of a package. |
|
|
| 445 | For instance, if you want to install a gnumeric version older than 1.2 -- for |
|
|
| 446 | any reason whatsoever :) you would type: |
|
|
| 447 | </p> |
|
|
| 448 | |
|
|
| 449 | <pre caption="Installing a specific gnumeric version"> |
|
|
| 450 | # <i>emerge "<gnumeric-1.2"</i> |
|
|
| 451 | </pre> |
|
|
| 452 | |
|
|
| 453 | <p> |
|
|
| 454 | Other possibilities are of course ">" (later version) and "=" (the exact |
|
|
| 455 | version). |
|
|
| 456 | </p> |
|
|
| 457 | |
|
|
| 458 | </body> |
185 | </body> |
| 459 | </subsection> |
|
|
| 460 | <subsection> |
186 | </subsection> |
| 461 | <title>Installing Prebuilt Packages</title> |
|
|
| 462 | <body> |
|
|
| 463 | |
|
|
| 464 | <p> |
|
|
| 465 | When you want to install a prebuilt package, you should use the <c>--usepkg</c> |
|
|
| 466 | option (<c>-k</c> in short). This will use the binary package available in |
|
|
| 467 | <path>/usr/portage/packages/All</path> <e>if</e> the package and the version of |
|
|
| 468 | the application you want to install match. |
|
|
| 469 | </p> |
|
|
| 470 | |
|
|
| 471 | <pre caption="Installing a prebuilt package for gnumeric"> |
|
|
| 472 | # <i>emerge --usepkg gnumeric</i> |
|
|
| 473 | </pre> |
|
|
| 474 | |
|
|
| 475 | <p> |
|
|
| 476 | If you want to use the binary package, even if the versions don't match, use |
|
|
| 477 | <c>--usepkgonly</c> (<c>-K</c> in short). |
|
|
| 478 | </p> |
|
|
| 479 | |
|
|
| 480 | <pre caption="Installing the prebuilt package for gnumeric"> |
|
|
| 481 | # <i>emerge --usepkgonly gnumeric</i> |
|
|
| 482 | </pre> |
|
|
| 483 | |
|
|
| 484 | <p> |
|
|
| 485 | If you don't have the prebuilt package on your system yet, you can have |
|
|
| 486 | <c>emerge</c> download it from a mirror, defined in the <c>PORTAGE_BINHOST</c> |
|
|
| 487 | variable declared in <path>/etc/make.conf</path>. |
|
|
| 488 | </p> |
|
|
| 489 | |
|
|
| 490 | <p> |
|
|
| 491 | To download the binary package in case this package doesn't exist on |
|
|
| 492 | your system already, use <c>--getbinpkg</c> (<c>-g</c> in short): |
|
|
| 493 | </p> |
|
|
| 494 | |
|
|
| 495 | <pre caption="Downloading and installing a prebuilt package for gnumeric"> |
|
|
| 496 | # <i>emerge --getbinpkg gnumeric</i> |
|
|
| 497 | </pre> |
|
|
| 498 | |
|
|
| 499 | <p> |
|
|
| 500 | This will download the package and the package-related information for you and |
|
|
| 501 | install it on your system, together with the dependencies. If you want to see |
|
|
| 502 | what dependencies will be installed with it, use the <c>--pretend</c> option |
|
|
| 503 | (<c>-p</c> in short): |
|
|
| 504 | </p> |
|
|
| 505 | |
|
|
| 506 | <pre caption="Pretending to download the prebuilt packages for gnumeric"> |
|
|
| 507 | # <i>emerge --getbinpkg --pretend gnumeric</i> |
|
|
| 508 | </pre> |
|
|
| 509 | |
|
|
| 510 | <p> |
|
|
| 511 | You can also opt to download the prebuilt package (and the package-related |
|
|
| 512 | information) <e>without</e> checking the information on your local system and |
|
|
| 513 | <e>without</e> using the prebuilt package already on your system (if |
|
|
| 514 | applicable), use the <c>--getbinpkgonly</c> option (<c>-G</c> in short): |
|
|
| 515 | </p> |
|
|
| 516 | |
|
|
| 517 | <pre caption="Installing a prebuilt package without using local information"> |
|
|
| 518 | # <i>emerge --getbinpkgonly gnumeric</i> |
|
|
| 519 | </pre> |
|
|
| 520 | |
|
|
| 521 | <p> |
|
|
| 522 | You can also opt to install a specific version of a package. |
|
|
| 523 | For instance, if you want to install a gnumeric version older than 1.2 -- for |
|
|
| 524 | any reason whatsoever :) you would type: |
|
|
| 525 | </p> |
|
|
| 526 | |
|
|
| 527 | <pre caption="Installing a specific gnumeric version"> |
|
|
| 528 | # <i>emerge --usepkg "<gnumeric-1.2"</i> |
|
|
| 529 | </pre> |
|
|
| 530 | |
|
|
| 531 | <p> |
|
|
| 532 | Other possibilities are of course ">" (later version) and "=" (the exact |
|
|
| 533 | version). |
|
|
| 534 | </p> |
|
|
| 535 | |
|
|
| 536 | |
|
|
| 537 | </body> |
|
|
| 538 | </subsection> |
187 | <subsection> |
|
|
188 | <title>Finding Installed Package Documentation</title> |
|
|
189 | <body> |
|
|
190 | |
|
|
191 | <p> |
|
|
192 | Many packages come with their own documentation. Sometimes, the <c>doc</c> USE |
|
|
193 | flag determines whether the package documentation should be installed or not. |
|
|
194 | You can check the existence of a <c>doc</c> USE flag with the <c>emerge -vp |
|
|
195 | <package name></c> command. |
|
|
196 | </p> |
|
|
197 | |
|
|
198 | <pre caption="Checking the existence of a doc USE flag"> |
|
|
199 | <comment>(alsa-lib is just an example, of course.)</comment> |
|
|
200 | # <i>emerge -vp alsa-lib</i> |
|
|
201 | [ebuild N ] media-libs/alsa-lib-1.0.14_rc1 -debug +doc 698 kB |
|
|
202 | </pre> |
|
|
203 | |
|
|
204 | <p> |
|
|
205 | The best way of enabling the <c>doc</c> USE flag is doing it on a per-package |
|
|
206 | basis via <path>/etc/portage/package.use</path>, so that you get documentation |
|
|
207 | only for packages that you are interested in. Enabling this flag globally is |
|
|
208 | known to cause problems with circular dependencies. For more information, please |
|
|
209 | read the <uri link="?part=2&chap=2">USE Flags</uri> chapter. |
|
|
210 | </p> |
|
|
211 | |
|
|
212 | <p> |
|
|
213 | Once the package installed, its documentation is generally found in a |
|
|
214 | subdirectory named after the package under the <path>/usr/share/doc</path> |
|
|
215 | directory. You can also list all installed files with the <c>equery</c> tool |
|
|
216 | which is part of the <c>app-portage/gentoolkit</c> <uri |
|
|
217 | link="/doc/en/gentoolkit.xml">package</uri>. |
|
|
218 | </p> |
|
|
219 | |
|
|
220 | <pre caption="Locating package documentation"> |
|
|
221 | # <i>ls -l /usr/share/doc/alsa-lib-1.0.14_rc1</i> |
|
|
222 | total 28 |
|
|
223 | -rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz |
|
|
224 | -rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz |
|
|
225 | drwxr-xr-x 2 root root 8560 May 17 21:54 html |
|
|
226 | -rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz |
|
|
227 | |
|
|
228 | <comment>(Alternatively, use equery to locate interesting files:)</comment> |
|
|
229 | # <i>equery files alsa-lib | less</i> |
|
|
230 | media-libs/alsa-lib-1.0.14_rc1 |
|
|
231 | * Contents of media-libs/alsa-lib-1.0.14_rc1: |
|
|
232 | /usr |
|
|
233 | /usr/bin |
|
|
234 | /usr/bin/alsalisp |
|
|
235 | <comment>(Output truncated)</comment> |
|
|
236 | </pre> |
|
|
237 | |
|
|
238 | </body> |
| 539 | <subsection> |
239 | </subsection> |
| 540 | <title>Working with Dependencies</title> |
240 | <subsection> |
|
|
241 | <title>Removing Software</title> |
| 541 | <body> |
242 | <body> |
| 542 | |
243 | |
| 543 | <p> |
|
|
| 544 | Portage has an extensive support for dependency handling. Although you usually |
|
|
| 545 | don't need to even think about this (as dependencies are automatically handled |
|
|
| 546 | by Portage) some users might want to know how you can work with <c>emerge</c> |
|
|
| 547 | and dependencies. |
|
|
| 548 | </p> |
244 | <p> |
| 549 | |
245 | When you want to remove a software package from your system, use <c>emerge |
|
|
246 | --unmerge</c>. This will tell Portage to remove all files installed by that |
|
|
247 | package from your system <e>except</e> the configuration files of that |
|
|
248 | application if you have altered those after the installation. Leaving the |
|
|
249 | configuration files allows you to continue working with the package if you ever |
|
|
250 | decide to install it again. |
| 550 | <p> |
251 | </p> |
| 551 | For instance, if you want Portage to pretend that none of the dependencies of a |
252 | |
| 552 | package are installed, you can use <c>--emptytree</c> (<c>-e</c> in short). This |
|
|
| 553 | is useful with <c>--pretend</c> to display a complete tree of dependencies for |
|
|
| 554 | any particular package. Without <c>--pretend</c>, <c>emerge</c> will (re)compile |
|
|
| 555 | all listed packages. However, <c>glibc</c> will <e>not</e> be listed as |
|
|
| 556 | dependency for safety reasons. |
|
|
| 557 | </p> |
253 | <p> |
| 558 | |
254 | However, a <brite>big warning</brite> applies: Portage will <e>not</e> check if |
| 559 | <pre caption="Show all dependencies of gnumeric"> |
255 | the package you want to remove is required by another package. It will however |
| 560 | # <i>emerge --emptytree --pretend gnumeric</i> |
256 | warn you when you want to remove an important package that breaks your system |
| 561 | </pre> |
257 | if you unmerge it. |
| 562 | |
|
|
| 563 | <p> |
258 | </p> |
| 564 | Another argument is <c>--nodeps</c>, which will ask Portage to try install the |
|
|
| 565 | given package without taking care of the dependencies. It is trivial that this |
|
|
| 566 | can lead to failures. |
|
|
| 567 | </p> |
|
|
| 568 | |
259 | |
| 569 | <pre caption="Installing gnumeric without taking care of the dependencies"> |
260 | <pre caption="Removing gnumeric from the system"> |
| 570 | # <i>emerge --nodeps gnumeric</i> |
261 | # <i>emerge --unmerge gnumeric</i> |
| 571 | </pre> |
262 | </pre> |
| 572 | |
263 | |
| 573 | <p> |
|
|
| 574 | The opposite of <c>--nodeps</c> is <c>--onlydeps</c>, which will have Portage |
|
|
| 575 | install all dependencies of a given package, but not the package itself: |
|
|
| 576 | </p> |
264 | <p> |
| 577 | |
265 | When you remove a package from your system, the dependencies of that package |
| 578 | <pre caption="Installing the dependencies of gnumeric"> |
266 | that were installed automatically when you installed the software are left. To |
| 579 | # <i>emerge --onlydeps gnumeric</i> |
267 | have Portage locate all dependencies that can now be removed, use |
|
|
268 | <c>emerge</c>'s <c>--depclean</c> functionality. We will talk about this later |
|
|
269 | on. |
| 580 | </pre> |
270 | </p> |
| 581 | |
271 | |
| 582 | </body> |
272 | </body> |
| 583 | </subsection> |
273 | </subsection> |
| 584 | <subsection> |
274 | <subsection> |
| 585 | <title>Updating your System</title> |
275 | <title>Updating your System</title> |
| 586 | <body> |
276 | <body> |
| 587 | |
277 | |
| 588 | <p> |
278 | <p> |
| 589 | Portage knows two special tags to denote a set of software packages: |
279 | To keep your system in perfect shape (and not to mention install the latest |
| 590 | <e>system</e> and <e>world</e>. You have already seen the former while |
280 | security updates) you need to update your system regularly. Since Portage only |
| 591 | installing Gentoo if you didn't use a <e>stage3</e> installation. To refresh |
281 | checks the ebuilds in your Portage tree you first have to update your Portage |
| 592 | things: <e>system</e> is the collection of <e>core</e> packages, necessary to |
282 | tree. When your Portage tree is updated, you can update your system with |
| 593 | have a working Gentoo system. |
283 | <c>emerge --update world</c>. In the next example, we'll also use the |
| 594 | </p> |
284 | <c>--ask</c> switch which will tell Portage to display the list of packages it |
| 595 | |
285 | wants to upgrade and ask you if you want to continue: |
| 596 | <p> |
286 | </p> |
| 597 | The <e>world</e> tag consists of all software you have installed yourself on |
287 | |
| 598 | your system plus the <e>system</e> information. In other words, every time you |
288 | <pre caption="Updating your system"> |
| 599 | emerge a package using <c>emerge <package-name></c>, the |
289 | # <i>emerge --update --ask world</i> |
| 600 | <c><package-name></c> is registered in the <e>world</e> file |
290 | </pre> |
| 601 | (<path>/var/cache/edb/world</path>). Dependencies are <e>not</e> part of the |
291 | |
| 602 | <e>world</e> file, but we will get to that later. |
|
|
| 603 | </p> |
292 | <p> |
| 604 | |
293 | Portage will then search for newer version of the applications you have |
| 605 | <p> |
294 | installed. However, it will only verify the versions for the applications you |
| 606 | If you want to update the system packages, use the <c>--update</c> option |
295 | have <e>explicitly</e> installed (the applications listed in |
| 607 | (<c>-u</c> in short): |
296 | <path>/var/lib/portage/world</path>) - it does not thoroughly check their |
| 608 | </p> |
297 | dependencies. If you want to update <e>every single package</e> on your system, |
| 609 | |
298 | add the <c>--deep</c> argument: |
| 610 | <pre caption="Updating the system packages"> |
|
|
| 611 | # <i>emerge --update system</i> |
|
|
| 612 | </pre> |
|
|
| 613 | |
|
|
| 614 | <p> |
|
|
| 615 | An identical approach can be used for the world packages: |
|
|
| 616 | </p> |
299 | </p> |
| 617 | |
300 | |
| 618 | <pre caption="Updating your entire system"> |
301 | <pre caption="Updating your entire system"> |
| 619 | # <i>emerge --update world</i> |
302 | # <i>emerge --update --deep world</i> |
| 620 | </pre> |
303 | </pre> |
| 621 | |
304 | |
| 622 | <p> |
|
|
| 623 | Again, if you want to see what <c>emerge</c> wants to update, use the |
|
|
| 624 | <c>--pretend</c> option together with the <c>--update</c> option: |
|
|
| 625 | </p> |
305 | <p> |
| 626 | |
306 | Since security updates also happen in packages you have not explicitly installed |
| 627 | <pre caption="Pretending to update your entire system"> |
307 | on your system (but that are pulled in as dependencies of other programs), it |
| 628 | # <i>emerge --pretend --update world</i> |
308 | is recommended to run this command once in a while. |
| 629 | <comment>(Some output removed to improve readability)</comment> |
|
|
| 630 | [ebuild U ] net-misc/wget-1.9-r1 [1.9] |
|
|
| 631 | [ebuild UD] media-video/dvdauthor-0.5.0 [0.5.3] |
|
|
| 632 | [ebuild U ] net-analyzer/ethereal-0.9.16 [0.9.14] |
|
|
| 633 | </pre> |
|
|
| 634 | |
|
|
| 635 | <p> |
309 | </p> |
| 636 | Right next to the word "ebuild" you will notice a letter (or combination of |
310 | |
| 637 | letters) which gives you more information about the package: |
311 | <p> |
|
|
312 | If you have altered any of your <uri link="?part=2&chap=2">USE flags</uri> |
|
|
313 | lately you might want to add <c>--newuse</c> as well. Portage will then verify |
|
|
314 | if the change requires the installation of new packages or recompilation of |
|
|
315 | existing ones: |
|
|
316 | </p> |
|
|
317 | |
|
|
318 | <pre caption="Performing a full update"> |
|
|
319 | # <i>emerge --update --deep --newuse world</i> |
|
|
320 | </pre> |
|
|
321 | |
|
|
322 | </body> |
|
|
323 | </subsection> |
|
|
324 | <subsection> |
|
|
325 | <title>Metapackages</title> |
|
|
326 | <body> |
|
|
327 | |
|
|
328 | <p> |
|
|
329 | Some packages in the Portage tree don't have any real content but are used to |
|
|
330 | install a collection of packages. For instance, the <c>kde-meta</c> package will |
|
|
331 | install a complete KDE environment on your system by pulling in various |
|
|
332 | KDE-related packages as dependencies. |
|
|
333 | </p> |
|
|
334 | |
|
|
335 | <p> |
|
|
336 | If you ever want to remove such a package from your system, running <c>emerge |
|
|
337 | --unmerge</c> on the package won't have much effect as the dependencies remain |
|
|
338 | on the system. |
|
|
339 | </p> |
|
|
340 | |
|
|
341 | <p> |
|
|
342 | Portage has the functionality to remove orphaned dependencies as well, but since |
|
|
343 | the availability of software is dynamically dependent you first need to update |
|
|
344 | your entire system fully, including the new changes you applied when changing |
|
|
345 | USE flags. After this you can run <c>emerge --depclean</c> to remove the |
|
|
346 | orphaned dependencies. When this is done, you need to rebuild the applications |
|
|
347 | that were dynamically linked to the now-removed software titles but don't |
|
|
348 | require them anymore. |
|
|
349 | </p> |
|
|
350 | |
|
|
351 | <p> |
|
|
352 | All this is handled with the following three commands: |
|
|
353 | </p> |
|
|
354 | |
|
|
355 | <pre caption="Removing orphaned dependencies"> |
|
|
356 | # <i>emerge --update --deep --newuse world</i> |
|
|
357 | # <i>emerge --depclean</i> |
|
|
358 | # <i>revdep-rebuild</i> |
|
|
359 | </pre> |
|
|
360 | |
|
|
361 | <p> |
|
|
362 | <c>revdep-rebuild</c> is provided by the <c>gentoolkit</c> package; don't forget |
|
|
363 | to emerge it first: |
|
|
364 | </p> |
|
|
365 | |
|
|
366 | <pre caption="Installing the gentoolkit package"> |
|
|
367 | # <i>emerge gentoolkit</i> |
|
|
368 | </pre> |
|
|
369 | |
|
|
370 | </body> |
|
|
371 | </subsection> |
|
|
372 | </section> |
|
|
373 | <section> |
|
|
374 | <title>When Portage is Complaining...</title> |
|
|
375 | <subsection> |
|
|
376 | <title>About SLOTs, Virtuals, Branches, Architectures and Profiles</title> |
|
|
377 | <body> |
|
|
378 | |
|
|
379 | <p> |
|
|
380 | As we stated before, Portage is extremely powerful and supports many features |
|
|
381 | that other software management tools lack. To understand this, we explain a few |
|
|
382 | aspects of Portage without going into too much detail. |
|
|
383 | </p> |
|
|
384 | |
|
|
385 | <p> |
|
|
386 | With Portage different versions of a single package can coexist on a system. |
|
|
387 | While other distributions tend to name their package to those versions (like |
|
|
388 | <c>freetype</c> and <c>freetype2</c>) Portage uses a technology called |
|
|
389 | <e>SLOT</e>s. An ebuild declares a certain SLOT for its version. Ebuilds with |
|
|
390 | different SLOTs can coexist on the same system. For instance, the |
|
|
391 | <c>freetype</c> package has ebuilds with <c>SLOT="1"</c> and <c>SLOT="2"</c>. |
|
|
392 | </p> |
|
|
393 | |
|
|
394 | <p> |
|
|
395 | There are also packages that provide the same functionality but are implemented |
|
|
396 | differently. For instance, <c>metalogd</c>, <c>sysklogd</c> and <c>syslog-ng</c> |
|
|
397 | are all system loggers. Applications that rely on the availability of "a system |
|
|
398 | logger" cannot depend on, for instance, <c>metalogd</c>, as the other system |
|
|
399 | loggers are as good a choice as any. Portage allows for <e>virtuals</e>: each |
|
|
400 | system logger provides <c>virtual/syslog</c> so that applications can depend on |
|
|
401 | <c>virtual/syslog</c>. |
|
|
402 | </p> |
|
|
403 | |
|
|
404 | <p> |
|
|
405 | Software in the Portage tree can reside in different branches. By default your |
|
|
406 | system only accepts packages that Gentoo deems stable. Most new software titles, |
|
|
407 | when committed, are added to the testing branch, meaning more testing needs to |
|
|
408 | be done before it is marked as stable. Although you will see the ebuilds for |
|
|
409 | those software in the Portage tree, Portage will not update them before they are |
|
|
410 | placed in the stable branch. |
|
|
411 | </p> |
|
|
412 | |
|
|
413 | <p> |
|
|
414 | Some software is only available for a few architectures. Or the software doesn't |
|
|
415 | work on the other architectures, or it needs more testing, or the developer that |
|
|
416 | committed the software to the Portage tree is unable to verify if the package |
|
|
417 | works on different architectures. |
|
|
418 | </p> |
|
|
419 | |
|
|
420 | <p> |
|
|
421 | Each Gentoo installation adheres to a certain <c>profile</c> which contains, |
|
|
422 | amongst other information, the list of packages that are required for a system |
|
|
423 | to function normally. |
|
|
424 | </p> |
|
|
425 | |
|
|
426 | </body> |
|
|
427 | </subsection> |
|
|
428 | <subsection id="blocked"> |
|
|
429 | <title>Blocked Packages</title> |
|
|
430 | <body> |
|
|
431 | |
|
|
432 | <pre caption="Portage warning about blocked packages (with --pretend)"> |
|
|
433 | [blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1) |
|
|
434 | </pre> |
|
|
435 | |
|
|
436 | <pre caption="Portage warning about blocked packages (without --pretend)"> |
|
|
437 | !!! Error: the mail-mta/postfix package conflicts with another package. |
|
|
438 | !!! both can't be installed on the same system together. |
|
|
439 | !!! Please use 'emerge --pretend' to determine blockers. |
|
|
440 | </pre> |
|
|
441 | |
|
|
442 | <p> |
|
|
443 | Ebuilds contain specific fields that inform Portage about its dependencies. |
|
|
444 | There are two possible dependencies: build dependencies, declared in |
|
|
445 | <c>DEPEND</c> and run-time dependencies, declared in <c>RDEPEND</c>. When one of |
|
|
446 | these dependencies explicitly marks a package or virtual as being <e>not</e> |
|
|
447 | compatible, it triggers a blockage. |
|
|
448 | </p> |
|
|
449 | |
|
|
450 | <p> |
|
|
451 | While recent versions of Portage are smart enough to work around minor blockages |
|
|
452 | without user intervention, occasionally you will need to fix it yourself, as |
|
|
453 | explained below. |
|
|
454 | </p> |
|
|
455 | |
|
|
456 | <p> |
|
|
457 | To fix a blockage, you can choose to not install the package or unmerge the |
|
|
458 | conflicting package first. In the given example, you can opt not to install |
|
|
459 | <c>postfix</c> or to remove <c>ssmtp</c> first. |
|
|
460 | </p> |
|
|
461 | |
|
|
462 | <p> |
|
|
463 | You may also see blocking packages with specific atoms, such as |
|
|
464 | <b><</b>media-video/mplayer-1.0_rc1-r2. In this case, updating to a more |
|
|
465 | recent version of the blocking package would remove the block. |
|
|
466 | </p> |
|
|
467 | |
|
|
468 | <p> |
|
|
469 | It is also possible that two packages that are yet to be installed are blocking |
|
|
470 | each other. In this rare case, you should find out why you need to install both. |
|
|
471 | In most cases you can do with one of the packages alone. If not, please file a |
|
|
472 | bug on <uri link="http://bugs.gentoo.org">Gentoo's bugtracking system</uri>. |
|
|
473 | </p> |
|
|
474 | |
|
|
475 | </body> |
|
|
476 | </subsection> |
|
|
477 | <subsection id="masked"> |
|
|
478 | <title>Masked Packages</title> |
|
|
479 | <body> |
|
|
480 | |
|
|
481 | <pre caption="Portage warning about masked packages"> |
|
|
482 | !!! all ebuilds that could satisfy "bootsplash" have been masked. |
|
|
483 | </pre> |
|
|
484 | |
|
|
485 | <pre caption="Portage warning about masked packages - reason"> |
|
|
486 | !!! possible candidates are: |
|
|
487 | |
|
|
488 | - gnome-base/gnome-2.8.0_pre1 (masked by: <i>~x86 keyword</i>) |
|
|
489 | - lm-sensors/lm-sensors-2.8.7 (masked by: <i>-sparc keyword</i>) |
|
|
490 | - sys-libs/glibc-2.3.4.20040808 (masked by: <i>-* keyword</i>) |
|
|
491 | - dev-util/cvsd-1.0.2 (masked by: <i>missing keyword</i>) |
|
|
492 | - games-fps/unreal-tournament-451 (masked by: <i>package.mask</i>) |
|
|
493 | - sys-libs/glibc-2.3.2-r11 (masked by: <i>profile</i>) |
|
|
494 | </pre> |
|
|
495 | |
|
|
496 | <p> |
|
|
497 | When you want to install a package that isn't available for your system, you |
|
|
498 | will receive this masking error. You should try installing a different |
|
|
499 | application that is available for your system or wait until the package is put |
|
|
500 | available. There is always a reason why a package is masked: |
| 638 | </p> |
501 | </p> |
| 639 | |
502 | |
| 640 | <ul> |
503 | <ul> |
| 641 | <li> |
504 | <li> |
| 642 | <e>B</e> (blocks) The package listed to the left is blocking the emerge of |
505 | <b>~arch keyword</b> means that the application is not tested sufficiently |
| 643 | the package listed to the right |
506 | to be put in the stable branch. Wait a few days or weeks and try again. |
| 644 | </li> |
507 | </li> |
| 645 | <li> |
508 | <li> |
| 646 | <e>N</e> (new) The package is new to your system and will be emerged for the |
509 | <b>-arch keyword</b> or <b>-* keyword</b> means that the application does |
| 647 | first time |
510 | not work on your architecture. If you believe the package does work file |
|
|
511 | a bug at our <uri link="http://bugs.gentoo.org">bugzilla</uri> website. |
| 648 | </li> |
512 | </li> |
| 649 | <li> |
513 | <li> |
| 650 | <e>R</e> (reemerge) The package isn't new, but needs to be reemerged |
514 | <b>missing keyword</b> means that the application has not been tested on |
|
|
515 | your architecture yet. Ask the architecture porting team to test the package |
|
|
516 | or test it for them and report your findings on our <uri |
|
|
517 | link="http://bugs.gentoo.org">bugzilla</uri> website. |
| 651 | </li> |
518 | </li> |
| 652 | <li> |
519 | <li> |
| 653 | <e>F</e> (fetch) The package requires that you download the source code |
520 | <b>package.mask</b> means that the package has been found corrupt, unstable |
| 654 | manually (for instance due to licencing issues) |
521 | or worse and has been deliberately marked as do-not-use. |
| 655 | </li> |
522 | </li> |
| 656 | <li> |
523 | <li> |
| 657 | <e>U</e> (update) The package already exists on your system but will be |
524 | <b>profile</b> means that the package has been found not suitable for your |
| 658 | upgraded |
525 | profile. The application might break your system if you installed it or is |
| 659 | </li> |
526 | just not compatible with the profile you use. |
| 660 | <li> |
|
|
| 661 | <e>UD</e> (downgrade) The package already exists on your system but will be |
|
|
| 662 | downgraded |
|
|
| 663 | </li> |
|
|
| 664 | <li> |
|
|
| 665 | <e>U-</e> (slot warning) The package you have installed on your system |
|
|
| 666 | is listed as a package that can not coexist with a different version, but |
|
|
| 667 | your update does. The update will be installed and the older version will be |
|
|
| 668 | removed. |
|
|
| 669 | </li> |
527 | </li> |
| 670 | </ul> |
528 | </ul> |
| 671 | |
529 | |
| 672 | <p> |
|
|
| 673 | In certain cases, an update may mean a downgrade (i.e. install an older version |
|
|
| 674 | instead of a newer version). If you don't want this to happen, use the |
|
|
| 675 | <c>--upgradeonly</c> option (<c>-U</c> in short): |
|
|
| 676 | </p> |
|
|
| 677 | |
|
|
| 678 | <pre caption="Upgrading your entire system"> |
|
|
| 679 | # <i>emerge --update --upgradeonly world</i> |
|
|
| 680 | </pre> |
|
|
| 681 | |
|
|
| 682 | <p> |
|
|
| 683 | Of course, we are talking here about <e>system</e> and <e>world</e>, but you can |
|
|
| 684 | perform the same actions for individual software packages. |
|
|
| 685 | </p> |
|
|
| 686 | |
|
|
| 687 | </body> |
530 | </body> |
| 688 | </subsection> |
|
|
| 689 | <subsection> |
531 | </subsection> |
| 690 | <title>Removing Software</title> |
532 | <subsection id="missingdependencies"> |
| 691 | <body> |
533 | <title>Missing Dependencies</title> |
| 692 | |
|
|
| 693 | <p> |
|
|
| 694 | If you want to remove software from your system, you can use the <c>unmerge</c> |
|
|
| 695 | option (<c>-C</c> - capital C - in short): |
|
|
| 696 | </p> |
|
|
| 697 | |
|
|
| 698 | <pre caption="Uninstalling software"> |
|
|
| 699 | # <i>emerge unmerge gnumeric</i> |
|
|
| 700 | </pre> |
|
|
| 701 | |
|
|
| 702 | <p> |
|
|
| 703 | If you want to test a removal (but not perform it), you can use <c>--pretend</c> |
|
|
| 704 | again: |
|
|
| 705 | </p> |
|
|
| 706 | |
|
|
| 707 | <pre caption="Pretending to uninstall software"> |
|
|
| 708 | # <i>emerge --pretend unmerge gnumeric</i> |
|
|
| 709 | </pre> |
|
|
| 710 | |
|
|
| 711 | <warn> |
|
|
| 712 | Portage doesn't verify if a package is a dependency for another |
|
|
| 713 | installed package. It also doesn't warn you if the package is part of |
|
|
| 714 | <e>system</e>, i.e. a core application necessary for the correct functioning of |
|
|
| 715 | your system! |
|
|
| 716 | </warn> |
|
|
| 717 | |
|
|
| 718 | <p> |
|
|
| 719 | Once the unmerge begins you will see a long list of filenames belonging to the |
|
|
| 720 | package. Some of these filenames will have a flag displayed to the |
|
|
| 721 | left of the filename. The flags <c>!mtime</c>, <c>!empty</c>, and <c>cfgpro</c> |
|
|
| 722 | specify reasons why certain files are not being removed while the package is. |
|
|
| 723 | Files listed without any of these three flags are removed from the |
|
|
| 724 | filesystem successfully. The three flags specify the following reasons: |
|
|
| 725 | </p> |
|
|
| 726 | |
|
|
| 727 | <ul> |
|
|
| 728 | <li> |
|
|
| 729 | <c>!mtime</c> : The listed file has been changed since it was installed, |
|
|
| 730 | probably by you or some tool |
|
|
| 731 | </li> |
|
|
| 732 | <li> |
|
|
| 733 | <c>!empty</c> : The listed directory is not empty |
|
|
| 734 | </li> |
|
|
| 735 | <li> |
|
|
| 736 | <c>cfgpro</c> : This file is located inside a protected directory and will |
|
|
| 737 | not be touched for safety |
|
|
| 738 | </li> |
|
|
| 739 | </ul> |
|
|
| 740 | |
|
|
| 741 | </body> |
534 | <body> |
| 742 | </subsection> |
535 | |
| 743 | </section> |
536 | <pre caption="Portage warning about missing dependency"> |
| 744 | <section> |
537 | emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4". |
| 745 | <title>Software Availability</title> |
538 | |
|
|
539 | !!! Problem with ebuild sys-devel/gcc-3.4.2-r2 |
|
|
540 | !!! Possibly a DEPEND/*DEPEND problem. |
|
|
541 | </pre> |
|
|
542 | |
|
|
543 | <p> |
|
|
544 | The application you are trying to install depends on another package that is not |
|
|
545 | available for your system. Please check <uri |
|
|
546 | link="http://bugs.gentoo.org">bugzilla</uri> if the issue is known and if not, |
|
|
547 | please report it. Unless you are mixing branches this should not occur and is |
|
|
548 | therefore a bug. |
|
|
549 | </p> |
|
|
550 | |
|
|
551 | </body> |
| 746 | <subsection> |
552 | </subsection> |
| 747 | <title>ARCH or not?</title> |
553 | <subsection id="ambiguousebuild"> |
| 748 | <body> |
554 | <title>Ambiguous Ebuild Name</title> |
| 749 | |
|
|
| 750 | <p> |
|
|
| 751 | Gentoo places its packages in two possible stadia called <e>ARCH</e> and |
|
|
| 752 | <e>~ARCH</e>. Don't take this literally: the stadia depend on the architecture |
|
|
| 753 | you are using. In other words, for x86-based systems you have <e>x86</e> and |
|
|
| 754 | <e>~x86</e>, for ppc-based systems you have <e>ppc</e> and <e>~ppc</e> etc. |
|
|
| 755 | </p> |
|
|
| 756 | |
|
|
| 757 | <p> |
|
|
| 758 | The <e>~ARCH</e> stadium means that the package works for the developer in |
|
|
| 759 | charge of the package, but that the package hasn't been tested thoroughly enough |
|
|
| 760 | by the community to be placed in <e>ARCH</e>. <e>~ARCH</e> packages usually go |
|
|
| 761 | to <e>ARCH</e> after being bugfree for a sufficient amount of time. |
|
|
| 762 | </p> |
|
|
| 763 | |
|
|
| 764 | <p> |
|
|
| 765 | Your system will use <e>ARCH</e> packages per default. If you want to live on |
|
|
| 766 | the edge, don't mind having a broken package once in a while, know how to deal |
|
|
| 767 | with a broken system and you like submitting bugreports to <uri |
|
|
| 768 | link="http://bugs.gentoo.org">bugs.gentoo.org</uri>, then you can opt to use |
|
|
| 769 | <e>~ARCH</e> packages. To "move" your system to a <e>~ARCH</e>-using system, |
|
|
| 770 | edit the <c>ACCEPT_KEYWORDS</c> variable in <path>/etc/make.conf</path> so that |
|
|
| 771 | it reads <e>~ARCH</e> (again: for x86-based systems: <e>~x86</e>, etc.). |
|
|
| 772 | </p> |
|
|
| 773 | |
|
|
| 774 | <p> |
|
|
| 775 | Note though that it is far from trivial (if even impossible) to go back to |
|
|
| 776 | <e>ARCH</e> from <e>~ARCH</e>. |
|
|
| 777 | </p> |
|
|
| 778 | |
|
|
| 779 | <p> |
|
|
| 780 | If you want to update your system now, you will notice that <e>a lot</e> of |
|
|
| 781 | packages will be updated! |
|
|
| 782 | </p> |
|
|
| 783 | |
|
|
| 784 | </body> |
555 | <body> |
| 785 | </subsection> |
556 | |
|
|
557 | <pre caption="Portage warning about ambiguous ebuild names"> |
|
|
558 | [ Results for search key : listen ] |
|
|
559 | [ Applications found : 2 ] |
|
|
560 | |
|
|
561 | * dev-tinyos/listen [ Masked ] |
|
|
562 | Latest version available: 1.1.15 |
|
|
563 | Latest version installed: [ Not Installed ] |
|
|
564 | Size of files: 10,032 kB |
|
|
565 | Homepage: http://www.tinyos.net/ |
|
|
566 | Description: Raw listen for TinyOS |
|
|
567 | License: BSD |
|
|
568 | |
|
|
569 | * media-sound/listen [ Masked ] |
|
|
570 | Latest version available: 0.6.3 |
|
|
571 | Latest version installed: [ Not Installed ] |
|
|
572 | Size of files: 859 kB |
|
|
573 | Homepage: http://www.listen-project.org |
|
|
574 | Description: A Music player and management for GNOME |
|
|
575 | License: GPL-2 |
|
|
576 | |
|
|
577 | !!! The short ebuild name "listen" is ambiguous. Please specify |
|
|
578 | !!! one of the above fully-qualified ebuild names instead. |
|
|
579 | </pre> |
|
|
580 | |
|
|
581 | <p> |
|
|
582 | The application you want to install has a name that corresponds with more than |
|
|
583 | one package. You need to supply the category name as well. Portage will inform |
|
|
584 | you of possible matches to choose from. |
|
|
585 | </p> |
|
|
586 | |
|
|
587 | </body> |
| 786 | <subsection> |
588 | </subsection> |
| 787 | <title>Masked Packages</title> |
589 | <subsection id="circulardependencies"> |
| 788 | <body> |
590 | <title>Circular Dependencies</title> |
| 789 | |
|
|
| 790 | <p> |
|
|
| 791 | When you want to install a package, you might come across the following message: |
|
|
| 792 | </p> |
|
|
| 793 | |
|
|
| 794 | <pre caption="Message about masked packages"> |
|
|
| 795 | Calculating dependencies |
|
|
| 796 | !!! <comment>all ebuilds that could satisfy </comment><your package><comment> have been masked.</comment> |
|
|
| 797 | </pre> |
|
|
| 798 | |
|
|
| 799 | <p> |
|
|
| 800 | A package can be masked due to two reasons: |
|
|
| 801 | </p> |
|
|
| 802 | |
|
|
| 803 | <ol> |
|
|
| 804 | <li>The package is in <e>~ARCH</e> while you use <e>ARCH</e></li> |
|
|
| 805 | <li>The package is hard-masked explicitly</li> |
|
|
| 806 | </ol> |
|
|
| 807 | |
|
|
| 808 | <p> |
|
|
| 809 | If the package is masked because of the first reason, and you <e>really</e> want |
|
|
| 810 | to install it (knowing that there <e>is</e> a reason why it isn't available in |
|
|
| 811 | <e>ARCH</e>), you can temporarily accept <e>~ARCH</e> packages: |
|
|
| 812 | </p> |
|
|
| 813 | |
|
|
| 814 | <pre caption="Temporarily accepting ~ARCH packages"> |
|
|
| 815 | # <i>ACCEPT_KEYWORDS="~x86" emerge gnumeric</i> |
|
|
| 816 | </pre> |
|
|
| 817 | |
|
|
| 818 | <p> |
|
|
| 819 | A package is hardmasked if it is listed in |
|
|
| 820 | <path>/usr/portage/profiles/package.mask</path>. If you read this file, you |
|
|
| 821 | will also read the reason why the package is hardmasked (it is usually added as |
|
|
| 822 | a comment). If you want to install the package nevertheless (despite all the |
|
|
| 823 | possible warnings we could ever throw at your head about "breaking your system", |
|
|
| 824 | "breaks other packages", or "badly needs testing"), create the |
|
|
| 825 | <path>/etc/portage/package.unmask</path> file and list the package in it (use |
|
|
| 826 | the same format as is used in <path>/usr/portage/profiles/package.mask</path>). |
|
|
| 827 | </p> |
|
|
| 828 | |
|
|
| 829 | <p> |
|
|
| 830 | Do <e>not</e> alter the <path>/usr/portage/profiles/package.mask</path> file as |
|
|
| 831 | all changes are undone the next time you update your Portage tree. If you want |
|
|
| 832 | to hardmask a package create <path>/etc/portage/package.mask</path> and list the |
|
|
| 833 | package in it (use the same format as mentioned above). |
|
|
| 834 | </p> |
|
|
| 835 | |
|
|
| 836 | <!-- |
|
|
| 837 | <p> |
|
|
| 838 | Another trick to circumvent the "masked package" problem is to install the |
|
|
| 839 | package using the full path. This will ignore both the <c>ACCEPT_KEYWORD</c> |
|
|
| 840 | settings and the <path>package.mask</path> listing. |
|
|
| 841 | </p> |
|
|
| 842 | |
|
|
| 843 | <pre caption="Installing a package without checking for stadium / masking"> |
|
|
| 844 | # <i>emerge /usr/portage/app-office/gnumeric/gnumeric-1.2.0.ebuild</i> |
|
|
| 845 | </pre> |
|
|
| 846 | --> |
|
|
| 847 | |
|
|
| 848 | </body> |
591 | <body> |
| 849 | </subsection> |
592 | |
|
|
593 | <pre caption="Portage warning about circular dependencies"> |
|
|
594 | !!! Error: circular dependencies: |
|
|
595 | |
|
|
596 | ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1 |
|
|
597 | ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2 |
|
|
598 | </pre> |
|
|
599 | |
|
|
600 | <p> |
|
|
601 | Two (or more) packages you want to install depend on each other and can |
|
|
602 | therefore not be installed. This is most likely a bug in the Portage tree. |
|
|
603 | Please resync after a while and try again. You can also check <uri |
|
|
604 | link="http://bugs.gentoo.org">bugzilla</uri> if the issue is known and if not, |
|
|
605 | report it. |
|
|
606 | </p> |
|
|
607 | |
|
|
608 | </body> |
| 850 | <subsection> |
609 | </subsection> |
| 851 | <title>Blocked Packages</title> |
610 | <subsection id="fetchfailed"> |
|
|
611 | <title>Fetch failed</title> |
|
|
612 | <body> |
|
|
613 | |
|
|
614 | <pre caption="Portage warning about fetch failed"> |
|
|
615 | !!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing... |
|
|
616 | <comment>(...)</comment> |
|
|
617 | !!! Some fetch errors were encountered. Please see above for details. |
|
|
618 | </pre> |
|
|
619 | |
|
|
620 | <p> |
|
|
621 | Portage was unable to download the sources for the given application and will |
|
|
622 | try to continue installing the other applications (if applicable). This failure |
|
|
623 | can be due to a mirror that has not synchronised correctly or because the ebuild |
|
|
624 | points to an incorrect location. The server where the sources reside can also be |
|
|
625 | down for some reason. |
|
|
626 | </p> |
|
|
627 | |
|
|
628 | <p> |
|
|
629 | Retry after one hour to see if the issue still persists. |
|
|
630 | </p> |
|
|
631 | |
| 852 | <body> |
632 | </body> |
|
|
633 | </subsection> |
|
|
634 | <subsection id="profileprotect"> |
|
|
635 | <title>System Profile Protection</title> |
|
|
636 | <body> |
| 853 | |
637 | |
| 854 | <p> |
638 | <pre caption="Portage warning about profile-protected package"> |
| 855 | You have a situation when you receive the following error on your screen: |
639 | !!! Trying to unmerge package(s) in system profile. 'sys-apps/portage' |
|
|
640 | !!! This could be damaging to your system. |
|
|
641 | </pre> |
|
|
642 | |
| 856 | </p> |
643 | <p> |
| 857 | |
644 | You have asked to remove a package that is part of your system's core packages. |
| 858 | <pre caption="Blocking package"> |
645 | It is listed in your profile as required and should therefore not be removed |
| 859 | [blocks B ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0) |
646 | from the system. |
| 860 | </pre> |
|
|
| 861 | |
|
|
| 862 | <p> |
647 | </p> |
| 863 | In the above example, the package <c>bonobo-activation</c> is blocking the |
648 | |
| 864 | emerge of <c>libbonobo</c>. To resolve this issue, remove the |
649 | </body> |
| 865 | <c>bonobo-activation</c> package and continue: |
650 | </subsection> |
|
|
651 | <subsection id="digesterror"> |
|
|
652 | <title>Digest Verification Failures</title> |
|
|
653 | <body> |
|
|
654 | |
| 866 | </p> |
655 | <p> |
| 867 | |
656 | Sometimes, when you attempt to emerge a package, it will fail with the message: |
| 868 | <pre caption="Resolving a blocking situation"> |
|
|
| 869 | # <i>emerge unmerge bonobo-activation</i> |
|
|
| 870 | </pre> |
657 | </p> |
|
|
658 | |
|
|
659 | <pre caption="Digest verification failure"> |
|
|
660 | >>> checking ebuild checksums |
|
|
661 | !!! Digest verification failed: |
|
|
662 | </pre> |
|
|
663 | |
|
|
664 | <p> |
|
|
665 | This is a sign that something is wrong with the Portage tree -- often, it is |
|
|
666 | because a developer may have made a mistake when committing a package to the |
|
|
667 | tree. |
|
|
668 | </p> |
|
|
669 | |
|
|
670 | <p> |
|
|
671 | When the digest verification fails, do <e>not</e> try to re-digest the package |
|
|
672 | yourself. Running <c>ebuild foo manifest</c> will not fix the problem; it will |
|
|
673 | almost certainly make it worse! |
|
|
674 | </p> |
|
|
675 | |
|
|
676 | <p> |
|
|
677 | Instead, wait an hour or two for the tree to settle down. It's likely that the |
|
|
678 | error was noticed right away, but it can take a little time for the fix to |
|
|
679 | trickle down the Portage tree. While you're waiting, check <uri |
|
|
680 | link="http://bugs.gentoo.org">Bugzilla</uri> and see if anyone has reported |
|
|
681 | the problem yet. If not, go ahead and file a bug for the broken package. |
|
|
682 | </p> |
|
|
683 | |
|
|
684 | <p> |
|
|
685 | Once you see that the bug has been fixed, you may want to re-sync to pick up |
|
|
686 | the fixed digest. |
|
|
687 | </p> |
|
|
688 | |
|
|
689 | <impo> |
|
|
690 | This does <e>not</e> mean that you can re-sync your tree multiple times! As |
|
|
691 | stated in the rsync policy (when you run <c>emerge --sync</c>), users who sync |
|
|
692 | too often will be banned! In fact, it's better to just wait until your next |
|
|
693 | scheduled sync, so that you don't overload the rsync servers. |
|
|
694 | </impo> |
| 871 | |
695 | |
| 872 | </body> |
696 | </body> |
| 873 | </subsection> |
697 | </subsection> |
| 874 | </section> |
698 | </section> |
| 875 | </sections> |
699 | </sections> |