|
|
1 | <?xml version='1.0' encoding='UTF-8'?> |
|
|
2 | <!DOCTYPE sections SYSTEM "/dtd/book.dtd"> |
|
|
3 | |
| 1 | <!-- 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 --> |
| 2 | <!-- See http://creativecommons.org/licenses/by-sa/1.0 --> |
5 | <!-- See http://creativecommons.org/licenses/by-sa/2.0 --> |
| 3 | |
6 | |
| 4 | <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/handbook/hb-working-portage.xml,v 1.6 2003/11/27 14:45:38 swift Exp $ --> |
7 | <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/handbook/hb-working-portage.xml,v 1.41 2004/10/23 11:02:06 swift Exp $ --> |
| 5 | |
8 | |
| 6 | <sections> |
9 | <sections> |
| 7 | <section> |
10 | <section> |
| 8 | <title>Obtaining Package Information</title> |
11 | <title>Welcome to Portage</title> |
| 9 | <subsection> |
|
|
| 10 | <title>The Lord of All Tools: emerge</title> |
|
|
| 11 | <body> |
12 | <body> |
| 12 | |
13 | |
| 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 learn you how to use <c>emerge</c> to fix all your software-related needs. |
|
|
| 18 | </p> |
14 | <p> |
| 19 | |
15 | Portage is probably Gentoo's most notable innovation in software management. |
|
|
16 | With its high flexibility and enormous amount of features it is frequently seen |
|
|
17 | as the best software management tool available for Linux. |
| 20 | <p> |
18 | </p> |
| 21 | <c>emerge</c> is the command used to install, remove, query and maintain |
19 | |
| 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> |
20 | <p> |
| 27 | |
21 | Portage is completely written in <uri link="http://www.python.org">Python</uri> |
|
|
22 | and <uri link="http://www.gnu.org/software/bash">Bash</uri> and therefore fully |
|
|
23 | visible to the users as both are scripting languages. |
| 28 | <p> |
24 | </p> |
| 29 | Since <c>emerge</c> is the most important tool for Gentoo users, it has an |
25 | |
| 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> |
26 | <p> |
|
|
27 | Most users will work with Portage through the <c>emerge</c> tool. This chapter |
|
|
28 | is not meant to duplicate the information available from the emerge man page. |
|
|
29 | For a complete rundown of emerge's options, please consult the man page: |
|
|
30 | </p> |
| 33 | |
31 | |
| 34 | <pre caption="Retrieving help for emerge"> |
32 | <pre caption="Reading the emerge man page"> |
| 35 | # <i>man emerge</i> |
33 | $ <i>man emerge</i> |
| 36 | # <i>emerge --help</i> |
|
|
| 37 | </pre> |
34 | </pre> |
| 38 | |
35 | |
| 39 | </body> |
|
|
| 40 | </subsection> |
|
|
| 41 | <subsection> |
|
|
| 42 | <title>The Portage Tree</title> |
|
|
| 43 | <body> |
36 | </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 | seperate 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 | |
|
|
| 159 | </body> |
|
|
| 160 | </subsection> |
|
|
| 161 | <subsection> |
|
|
| 162 | <title>Search for a Package</title> |
|
|
| 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> |
|
|
| 258 | |
|
|
| 259 | </body> |
|
|
| 260 | </subsection> |
|
|
| 261 | </section> |
37 | </section> |
| 262 | <section> |
38 | <section> |
| 263 | <title>Updating Portage</title> |
39 | <title>The Portage Tree</title> |
| 264 | <subsection> |
|
|
| 265 | <title>Introduction</title> |
|
|
| 266 | <body> |
|
|
| 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> |
|
|
| 283 | </subsection> |
40 | <subsection> |
|
|
41 | <title>Ebuilds</title> |
|
|
42 | <body> |
|
|
43 | |
|
|
44 | <p> |
|
|
45 | When we talk about packages, we often mean software titles that are available to |
|
|
46 | the Gentoo users through the Portage tree. The Portage tree is a collection of |
|
|
47 | <e>ebuilds</e>, files that contain all information Portage needs to maintain |
|
|
48 | software (install, search, query, ...). These ebuilds reside in |
|
|
49 | <path>/usr/portage</path> by default. |
|
|
50 | </p> |
|
|
51 | |
|
|
52 | <p> |
|
|
53 | Whenever you ask Portage to perform some action regarding software titles, it |
|
|
54 | will use the ebuilds on your system as a base. It is therefore important that |
|
|
55 | you regularly update the ebuilds on your system so Portage knows about new |
|
|
56 | software, security updates, etc. |
|
|
57 | </p> |
|
|
58 | |
|
|
59 | </body> |
| 284 | <subsection> |
60 | </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 | |
|
|
| 310 | </body> |
|
|
| 311 | </subsection> |
61 | <subsection> |
| 312 | <subsection> |
|
|
| 313 | <title>Updating Portage</title> |
62 | <title>Updating the Portage Tree</title> |
| 314 | <body> |
63 | <body> |
| 315 | |
64 | |
| 316 | <p> |
|
|
| 317 | To update Portage using rsync, simply run <c>emerge sync</c>: |
|
|
| 318 | </p> |
65 | <p> |
|
|
66 | The Portage tree is usually updated with <uri |
|
|
67 | link="http://rsync.gentoo.org">rsync</uri>, a fast incremental file transfer |
|
|
68 | utility. Updating is fairly simple as the <c>emerge</c> command provides a |
|
|
69 | front-end for rsync: |
|
|
70 | </p> |
| 319 | |
71 | |
| 320 | <pre caption="Updating Portage using emerge sync"> |
72 | <pre caption="Updating the Portage tree"> |
| 321 | # <i>emerge sync</i> |
73 | # <i>emerge --sync</i> |
| 322 | </pre> |
74 | </pre> |
| 323 | |
75 | |
| 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> |
76 | <p> |
|
|
77 | If you are unable to rsync due to firewall restrictions you can still update |
|
|
78 | your Portage tree by using our daily generated Portage tree snapshots. The |
|
|
79 | <c>emerge-webrsync</c> tool automatically fetches and installs the latest |
|
|
80 | snapshot on your system: |
|
|
81 | </p> |
| 330 | |
82 | |
| 331 | <pre caption="Updating Portage using emerge-webrsync"> |
83 | <pre caption="Running emerge-webrsync"> |
| 332 | # <i>emerge-webrsync</i> |
84 | # <i>emerge-webrsync</i> |
| 333 | </pre> |
85 | </pre> |
| 334 | |
86 | |
| 335 | </body> |
87 | </body> |
| 336 | </subsection> |
88 | </subsection> |
| 337 | </section> |
89 | </section> |
| 338 | <section> |
90 | <section> |
| 339 | <title>Maintaining Software</title> |
91 | <title>Maintaining Software</title> |
| 340 | <subsection> |
92 | <subsection> |
| 341 | <title>Building or Prebuild?</title> |
93 | <title>Searching for Software</title> |
| 342 | <body> |
|
|
| 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>prebuild</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 prebuild 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, prebuild 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> |
94 | <body> |
| 378 | </subsection> |
95 | |
|
|
96 | <p> |
|
|
97 | To search through the Portage tree after software titles, you can use |
|
|
98 | <c>emerge</c> built-in search capabilities. By default, <c>emerge search</c> |
|
|
99 | returns package names whos title corresponds with (either fully or partially) |
|
|
100 | the given search term. |
|
|
101 | </p> |
|
|
102 | |
|
|
103 | <p> |
|
|
104 | For instance, to search for all packages who have "pdf" in their name: |
|
|
105 | </p> |
|
|
106 | |
|
|
107 | <pre caption="Searching for pdf-named packages"> |
|
|
108 | $ <i>emerge search pdf</i> |
|
|
109 | </pre> |
|
|
110 | |
|
|
111 | <p> |
|
|
112 | If you want to search through the descriptions as well you can use the |
|
|
113 | <c>--searchdesc</c> (or <c>-S</c>) switch: |
|
|
114 | </p> |
|
|
115 | |
|
|
116 | <pre caption="Searching for pdf-related packages"> |
|
|
117 | $ <i>emerge --searchdesc pdf</i> |
|
|
118 | </pre> |
|
|
119 | |
|
|
120 | <p> |
|
|
121 | When you take a look at the output, you'll notice that it gives you a lot of |
|
|
122 | information. The fields are clearly labelled so we won't go further into their |
|
|
123 | meanings: |
|
|
124 | </p> |
|
|
125 | |
|
|
126 | <pre caption="Example emerge search output"> |
|
|
127 | * net-print/cups-pdf |
|
|
128 | Latest version available: 1.5.2 |
|
|
129 | Latest version installed: [ Not Installed ] |
|
|
130 | Size of downloaded files: 15 kB |
|
|
131 | Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ |
|
|
132 | Description: Provides a virtual printer for CUPS to produce PDF files. |
|
|
133 | License: GPL-2 |
|
|
134 | </pre> |
|
|
135 | |
|
|
136 | </body> |
| 379 | <subsection> |
137 | </subsection> |
|
|
138 | <subsection> |
| 380 | <title>Installing Software from Sources</title> |
139 | <title>Installing Software</title> |
| 381 | <body> |
140 | <body> |
| 382 | |
141 | |
| 383 | <p> |
142 | <p> |
| 384 | Okay, enough talking, let's cut to the chase. To install a package, you will use |
143 | Once you've found a software title to your liking, you can easily install it |
| 385 | the <c>emerge</c> command. If you don't want to use any prebuild packages, you |
144 | with <c>emerge</c>: just add the package name. For instance, to install |
| 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>: |
145 | <c>gnumeric</c>: |
| 389 | </p> |
146 | </p> |
| 390 | |
147 | |
| 391 | <pre caption="Building gnumeric"> |
148 | <pre caption="Installing gnumeric"> |
| 392 | # <i>emerge gnumeric</i> |
149 | # <i>emerge gnumeric</i> |
| 393 | </pre> |
150 | </pre> |
| 394 | |
151 | |
| 395 | <p> |
152 | <p> |
| 396 | This will download the sourcecode for you and unpacks, compiles and installs the |
153 | Since many applications depend on each other, any attempt to install a certain |
| 397 | package on your system. It will also do the same for all the dependencies. If |
154 | software package might result in the installation of several dependencies as |
| 398 | you want to see what dependencies will be installed with it, use the |
155 | well. Don't worry, Portage handles dependencies well. If you want to find out |
| 399 | <c>--pretend</c> option (<c>-p</c> in short): |
156 | what Portage <e>would</e> install when you ask it to install a certain package, |
|
|
157 | add the <c>--pretend</c> switch. For instance: |
| 400 | </p> |
158 | </p> |
| 401 | |
159 | |
| 402 | <pre caption="Pretending to build gnumeric"> |
160 | <pre caption="Pretend to install gnumeric"> |
| 403 | # <i>emerge --pretend gnumeric</i> |
161 | # <i>emerge --pretend gnumeric</i> |
| 404 | </pre> |
162 | </pre> |
| 405 | |
163 | |
| 406 | <p> |
164 | <p> |
| 407 | If you want to download the sourcecode of the package and its dependencies, |
165 | When you ask Portage to install a package, it will download the necessary source |
| 408 | but don't want to build the package, use the <c>--fetchonly</c> option |
166 | code from the internet (if necessary) and store it by default in |
| 409 | (<c>-f</c> in short): |
167 | <path>/usr/portage/distfiles</path>. After this it will unpack, compile and |
|
|
168 | install the package. If you want Portage to only download the sources without |
|
|
169 | installing them, add the <c>--fetchonly</c> option to the <c>emerge</c> command: |
| 410 | </p> |
170 | </p> |
| 411 | |
171 | |
| 412 | <pre caption="Fetching sources for gnumeric"> |
172 | <pre caption="Download the sourcecode for gnumeric"> |
| 413 | # <i>emerge --fetchonly gnumeric</i> |
173 | # <i>emerge --fetchonly gnumeric</i> |
| 414 | </pre> |
174 | </pre> |
| 415 | |
175 | |
| 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 | |
|
|
| 440 | </body> |
176 | </body> |
| 441 | </subsection> |
|
|
| 442 | <subsection> |
177 | </subsection> |
| 443 | <title>Installing Prebuild Packages</title> |
178 | <subsection> |
|
|
179 | <title>Removing Software</title> |
| 444 | <body> |
180 | <body> |
| 445 | |
181 | |
| 446 | <p> |
|
|
| 447 | When you want to install a prebuild 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> |
182 | <p> |
|
|
183 | When you want to remove a software package from your system, use <c>emerge |
|
|
184 | unmerge</c>. This will tell Portage to remove all files installed by that |
|
|
185 | package from your system <e>except</e> the configuration files of that |
|
|
186 | application if you have altered those after the installation. Leaving the |
|
|
187 | configuration files allows you to continue working with the package if you ever |
|
|
188 | decide to install it again. |
|
|
189 | </p> |
| 452 | |
190 | |
| 453 | <pre caption="Installing a prebuild package for gnumeric"> |
191 | <p> |
|
|
192 | However, a <brite>big warning</brite> applies: Portage will <e>not</e> check if |
|
|
193 | the package you want to remove is required by another package. It will however |
|
|
194 | warn you when you want to remove an important package that breaks your system |
|
|
195 | if you unmerge it. |
|
|
196 | </p> |
|
|
197 | |
|
|
198 | <pre caption="Removing gnumeric from the system"> |
| 454 | # <i>emerge --usepkg gnumeric</i> |
199 | # <i>emerge unmerge gnumeric</i> |
| 455 | </pre> |
200 | </pre> |
| 456 | |
201 | |
| 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> |
202 | <p> |
| 461 | |
203 | When you remove a package from your system, the dependencies of that package |
| 462 | <pre caption="Installing the prebuild package for gnumeric"> |
204 | that were installed automatically when you installed the software are left. To |
| 463 | # <i>emerge --usepkgonly gnumeric</i> |
205 | have Portage locate all dependencies that can now be removed, use |
| 464 | </pre> |
206 | <c>emerge</c>'s <c>depclean</c> functionality. We will talk about this later on. |
| 465 | |
|
|
| 466 | <!-- TODO When handbook goes life, comment out this parts until the mirrors have |
|
|
| 467 | been updated with online GRP packages. --> |
|
|
| 468 | <p> |
207 | </p> |
| 469 | If you don't have the prebuild package on your system yet, you can have |
|
|
| 470 | <c>emerge</c> download it from a mirror, defined in the <c>PORTAGE_BINHOST</c> |
|
|
| 471 | variable declared in <path>/etc/make.conf</path>. |
|
|
| 472 | </p> |
|
|
| 473 | |
|
|
| 474 | <p> |
|
|
| 475 | To download the binary package in case this package doesn't exist on |
|
|
| 476 | your system already, use <c>--getbinpkg</c> (<c>-g</c> in short): |
|
|
| 477 | </p> |
|
|
| 478 | |
|
|
| 479 | <pre caption="Downloading and installing a prebuild package for gnumeric"> |
|
|
| 480 | # <i>emerge --getbinpkg gnumeric</i> |
|
|
| 481 | </pre> |
|
|
| 482 | |
|
|
| 483 | <p> |
|
|
| 484 | This will download the package and the package-related information for you and |
|
|
| 485 | install it on your system, together with the dependencies. If you want to see |
|
|
| 486 | what dependencies will be installed with it, use the <c>--pretend</c> option |
|
|
| 487 | (<c>-p</c> in short): |
|
|
| 488 | </p> |
|
|
| 489 | |
|
|
| 490 | <pre caption="Pretending to download the prebuild packages for gnumeric"> |
|
|
| 491 | # <i>emerge --ginbinpkg --pretend gnumeric</i> |
|
|
| 492 | </pre> |
|
|
| 493 | |
|
|
| 494 | <p> |
|
|
| 495 | You can also opt to download the prebuild package (and the package-related |
|
|
| 496 | information) <e>without</e> checking the information on your local system and |
|
|
| 497 | <e>without</e> using the prebuild package already on your system (if |
|
|
| 498 | applicable), use the <c>--getbinpkgonly</c> option (<c>-G</c> in short): |
|
|
| 499 | </p> |
|
|
| 500 | |
|
|
| 501 | <pre caption="Installing a prebuild package without using local information"> |
|
|
| 502 | # <i>emerge --getbinpkgonly gnumeric</i> |
|
|
| 503 | </pre> |
|
|
| 504 | |
|
|
| 505 | <!-- TODO Up until here --> |
|
|
| 506 | |
|
|
| 507 | <p> |
|
|
| 508 | You can also opt to install a specific version of a package. |
|
|
| 509 | For instance, if you want to install a gnumeric version older than 1.2 -- for |
|
|
| 510 | any reason whatsoever :) you would type: |
|
|
| 511 | </p> |
|
|
| 512 | |
|
|
| 513 | <pre caption="Installing a specific gnumeric version"> |
|
|
| 514 | # <i>emerge --usepkg "<gnumeric-1.2"</i> |
|
|
| 515 | </pre> |
|
|
| 516 | |
|
|
| 517 | <p> |
|
|
| 518 | Other possibilities are of course ">" (later version) and "=" (the exact |
|
|
| 519 | version). |
|
|
| 520 | </p> |
|
|
| 521 | |
|
|
| 522 | |
208 | |
| 523 | </body> |
209 | </body> |
| 524 | </subsection> |
210 | </subsection> |
| 525 | <subsection> |
211 | <subsection> |
| 526 | <title>Updating your System</title> |
212 | <title>Updating your System</title> |
| 527 | <body> |
213 | <body> |
| 528 | |
214 | |
| 529 | <p> |
215 | <p> |
| 530 | Portage knows two special tags to denote a set of software packages: |
216 | To keep your system in perfect shape (and not to mention install the latest |
| 531 | <e>system</e> and <e>world</e>. You have already seen the former while |
217 | security updates) you need to update your system regularly. Since Portage only |
| 532 | installing Gentoo if you didn't use a <e>stage3</e> installation. To refresh |
218 | checks the ebuilds in your Portage tree you first have to update your Portage |
| 533 | things: <e>system</e> is the collection of <e>core</e> packages, necessary to |
219 | tree. When your Portage tree is updated, you can update your system with |
| 534 | have a working Gentoo system. |
220 | <c>emerge --update world</c>: |
| 535 | </p> |
|
|
| 536 | |
|
|
| 537 | <p> |
221 | </p> |
| 538 | The <e>world</e> tag consists of all software you have installed yourself on |
222 | |
| 539 | your system plus the <e>system</e> information. In other words, every time you |
223 | <pre caption="Updating your system"> |
| 540 | emerge a package using <c>emerge <package-name></c>, the |
224 | # <i>emerge --update world</i> |
| 541 | <c><package-name></c> is registered in the <e>world</e> file |
225 | </pre> |
| 542 | (<path>/var/cache/edb/world</path>). Dependencies are <e>not</e> part of the |
226 | |
| 543 | <e>world</e> file, but we will get to that later. |
|
|
| 544 | </p> |
227 | <p> |
| 545 | |
228 | Portage will then search for newer version of the applications you have |
| 546 | <p> |
229 | installed. However, it will only verify the versions for the applications you |
| 547 | If you want to update the system packages, use the <c>--update</c> option |
230 | have explicitly installed - not the dependencies. If you want to update every |
| 548 | (<c>-u</c> in short): |
231 | single package on your system, add the <c>--deep</c> argument: |
| 549 | </p> |
|
|
| 550 | |
|
|
| 551 | <pre caption="Updating the system packages"> |
|
|
| 552 | # <i>emerge --update system</i> |
|
|
| 553 | </pre> |
|
|
| 554 | |
|
|
| 555 | <p> |
|
|
| 556 | An identical approach can be used for the world packages: |
|
|
| 557 | </p> |
232 | </p> |
| 558 | |
233 | |
| 559 | <pre caption="Updating your entire system"> |
234 | <pre caption="Updating your entire system"> |
| 560 | # <i>emerge --update world</i> |
235 | # <i>emerge --update --deep world</i> |
| 561 | </pre> |
236 | </pre> |
| 562 | |
237 | |
| 563 | <p> |
|
|
| 564 | Again, if you want to see what <c>emerge</c> wants to update, use the |
|
|
| 565 | <c>--pretend</c> option together with the <c>--update</c> option: |
|
|
| 566 | </p> |
238 | <p> |
| 567 | |
239 | If you have altered any of your <uri link="?part=2&chap=2">USE flags</uri> |
| 568 | <pre caption="Pretending to update your entire system"> |
240 | lately you might want to add <c>--newuse</c> as well. Portage will then verify |
| 569 | # <i>emerge --pretend --update world</i> |
241 | if the change requires the installation of new packages or recompilation of |
| 570 | <comment>(Some output removed to improve readability)</comment> |
242 | existing ones: |
| 571 | [ebuild U ] net-misc/wget-1.9-r1 [1.9] |
|
|
| 572 | [ebuild UD] media-video/dvdauthor-0.5.0 [0.5.3] |
|
|
| 573 | [ebuild U ] net-analyzer/ethereal-0.9.16 [0.9.14] |
|
|
| 574 | </pre> |
|
|
| 575 | |
|
|
| 576 | <p> |
243 | </p> |
| 577 | Right next to the word "ebuild" you will notice a letter (or combination of |
244 | |
| 578 | letters) which gives you more information about the package: |
245 | <pre caption="Performing a full update"> |
|
|
246 | # <i>emerge --update --deep --newuse world</i> |
|
|
247 | </pre> |
|
|
248 | |
|
|
249 | </body> |
|
|
250 | </subsection> |
|
|
251 | <subsection> |
|
|
252 | <title>Stub Packages</title> |
|
|
253 | <body> |
|
|
254 | |
|
|
255 | <p> |
|
|
256 | Some packages in the Portage tree don't have any real content but are used to |
|
|
257 | install a collection of packages. For instance, the <c>kde</c> package will |
|
|
258 | install a complete KDE environment on your system by pulling in various |
|
|
259 | KDE-related packages as dependencies. |
|
|
260 | </p> |
|
|
261 | |
|
|
262 | <p> |
|
|
263 | If you ever want to remove such a package from your system, running <c>emerge |
|
|
264 | unmerge</c> on the package won't have much effect as the dependencies remain on |
|
|
265 | the system. |
|
|
266 | </p> |
|
|
267 | |
|
|
268 | <p> |
|
|
269 | Portage has the functionality to remove orphaned dependencies as well, but since |
|
|
270 | the availability of software is dynamically dependent you first need to update |
|
|
271 | your entire system fully, including the new changes you applied when changing |
|
|
272 | USE flags. After this you can run <c>emerge depclean</c> to remove the orphaned |
|
|
273 | dependencies. When this is done, you need to rebuild the applications that were |
|
|
274 | dynamically linked to the now-removed software titles but don't require them |
|
|
275 | anymore. |
|
|
276 | </p> |
|
|
277 | |
|
|
278 | <p> |
|
|
279 | All this is handled with the following three commands: |
|
|
280 | </p> |
|
|
281 | |
|
|
282 | <pre caption="Removing orphaned dependencies"> |
|
|
283 | # <i>emerge --update --deep --newuse world</i> |
|
|
284 | # <i>emerge depclean</i> |
|
|
285 | # <i>revdep-rebuild</i> |
|
|
286 | </pre> |
|
|
287 | |
|
|
288 | <p> |
|
|
289 | <c>revdep-rebuild</c> is provided by the <c>gentoolkit</c> package; don't forget |
|
|
290 | to emerge it first: |
|
|
291 | </p> |
|
|
292 | |
|
|
293 | <pre caption="Installing the gentoolkit package"> |
|
|
294 | # <i>emerge gentoolkit</i> |
|
|
295 | </pre> |
|
|
296 | |
|
|
297 | </body> |
|
|
298 | </subsection> |
|
|
299 | </section> |
|
|
300 | <section> |
|
|
301 | <title>When Portage is Complaining...</title> |
|
|
302 | <subsection> |
|
|
303 | <title>About SLOTs, Virtuals, Branches, Architectures and Profiles</title> |
|
|
304 | <body> |
|
|
305 | |
|
|
306 | <p> |
|
|
307 | As we stated before, Portage is extremely powerful and supports many features |
|
|
308 | that other software management tools lack. To understand this, we explain a few |
|
|
309 | aspects of Portage without going in too much detail. |
|
|
310 | </p> |
|
|
311 | |
|
|
312 | <p> |
|
|
313 | With Portage different versions of a single package can coexist on a system. |
|
|
314 | While other distributions tend to name their package to those versions (like |
|
|
315 | <c>freetype</c> and <c>freetype2</c>) Portage uses a technology called |
|
|
316 | <e>SLOT</e>s. An ebuild declares a certain SLOT for its version. Ebuilds with |
|
|
317 | different SLOTs can coexist on the same system. For instance, the |
|
|
318 | <c>freetype</c> package has ebuilds with <c>SLOT="1"</c> and <c>SLOT="2"</c>. |
|
|
319 | </p> |
|
|
320 | |
|
|
321 | <p> |
|
|
322 | There are also packages that provide the same functionality but are implemented |
|
|
323 | differently. For instance, <c>metalogd</c>, <c>sysklogd</c> and <c>syslog-ng</c> |
|
|
324 | are all system loggers. Applications that rely on the availability of "a system |
|
|
325 | logger" cannot depend on, for instance, <c>metalogd</c>, as the other system |
|
|
326 | loggers are as good a choice as any. Portage allows for <e>virtuals</e>: each |
|
|
327 | system logger provides <c>virtual/syslog</c> so that applications can depend on |
|
|
328 | <c>virtual/syslog</c>. |
|
|
329 | </p> |
|
|
330 | |
|
|
331 | <p> |
|
|
332 | Software in the Portage tree can reside in different branches. By default your |
|
|
333 | system only accepts packages that Gentoo deems stable. Most new software titles, |
|
|
334 | when committed, are added to the testing branch, meaning more testing needs to |
|
|
335 | be done before it is marked as stable. Although you will see the ebuilds for |
|
|
336 | those software in the Portage tree, Portage will not update them before they are |
|
|
337 | placed in the stable branch. |
|
|
338 | </p> |
|
|
339 | |
|
|
340 | <p> |
|
|
341 | Some software is only available for a few architectures. Or the software doesn't |
|
|
342 | work on the other architectures, or it needs more testing, or the developer that |
|
|
343 | committed the software to the Portage tree is unable to verify if the package |
|
|
344 | works on different architectures. |
|
|
345 | </p> |
|
|
346 | |
|
|
347 | <p> |
|
|
348 | Each Gentoo installation adheres to a certain <c>profile</c> which contains, |
|
|
349 | amongst other information, the list of packages that are required for a system |
|
|
350 | to function normally. |
|
|
351 | </p> |
|
|
352 | |
|
|
353 | </body> |
|
|
354 | </subsection> |
|
|
355 | <subsection id="blocked"> |
|
|
356 | <title>Blocked Packages</title> |
|
|
357 | <body> |
|
|
358 | |
|
|
359 | <pre caption="Portage warning about blocked packages (with --pretend)"> |
|
|
360 | [blocks B ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0) |
|
|
361 | </pre> |
|
|
362 | |
|
|
363 | <pre caption="Portage warning about blocked packages (without --pretend)"> |
|
|
364 | !!! Error: the gnome-base/bonobo-activation package conflicts with another package. |
|
|
365 | !!! both can't be installed on the same system together. |
|
|
366 | !!! Please use 'emerge --pretend' to determine blockers. |
|
|
367 | </pre> |
|
|
368 | |
|
|
369 | <p> |
|
|
370 | Ebuilds contain specific fields that inform Portage about its dependencies. |
|
|
371 | There are two possible dependencies: build dependencies, declared in |
|
|
372 | <c>DEPEND</c> and run-time dependencies, declared in <c>RDEPEND</c>. When one of |
|
|
373 | these dependencies explicitly marks a package or virtual as being <e>not</e> |
|
|
374 | compatible, it triggers a blockage. |
|
|
375 | </p> |
|
|
376 | |
|
|
377 | <p> |
|
|
378 | To fix a blockage, you can choose to not install the package or unmerge the |
|
|
379 | conflicting package first. In the given example, you can opt not to install |
|
|
380 | <c>libbonobo</c> or to remove <c>bonobo-activation</c> first. |
|
|
381 | </p> |
|
|
382 | |
|
|
383 | </body> |
|
|
384 | </subsection> |
|
|
385 | <subsection id="masked"> |
|
|
386 | <title>Masked Packages</title> |
|
|
387 | <body> |
|
|
388 | |
|
|
389 | <pre caption="Portage warning about masked packages"> |
|
|
390 | !!! all ebuilds that could satisfy "bootsplash" have been masked. |
|
|
391 | </pre> |
|
|
392 | |
|
|
393 | <pre caption="Portage warning about masked packages - reason"> |
|
|
394 | !!! possible candidates are: |
|
|
395 | |
|
|
396 | - gnome-base/gnome-2.8.0_pre1 (masked by: <i>~x86 keyword</i>) |
|
|
397 | - lm-sensors/lm-sensors-2.8.7 (masked by: <i>-sparc keyword</i>) |
|
|
398 | - sys-libs/glibc-2.3.4.20040808 (masked by: <i>-* keyword</i>) |
|
|
399 | - dev-util/cvsd-1.0.2 (masked by: <i>missing keyword</i>) |
|
|
400 | - media-video/ati-gatos-4.3.0 (masked by: <i>package.mask</i>) |
|
|
401 | - sys-libs/glibc-2.3.2-r11 (masked by: <i>profile</i>) |
|
|
402 | </pre> |
|
|
403 | |
|
|
404 | <p> |
|
|
405 | When you want to install a package that isn't available for your system, you |
|
|
406 | will receive this masking error. You should try installing a different |
|
|
407 | application that is available for your system or wait until the package is put |
|
|
408 | available. There is always a reason why a package is masked: |
| 579 | </p> |
409 | </p> |
| 580 | |
410 | |
| 581 | <ul> |
411 | <ul> |
| 582 | <li> |
412 | <li> |
| 583 | <e>B</e> (blocks) The package listed to the left is blocking the emerge of |
413 | <b>~arch keyword</b> means that the application is not tested sufficiently |
| 584 | the package listed to the right |
414 | to be put in the stable branch. Wait a few days or weeks and try again. |
| 585 | </li> |
415 | </li> |
| 586 | <li> |
416 | <li> |
| 587 | <e>N</e> (new) The package is new to your system and will be emerged for the |
417 | <b>-arch keyword</b> or <b>-* keyword</b> means that the application does |
| 588 | first time |
418 | not work on your architecture. If you believe the package does work file |
|
|
419 | a bug at our <uri link="http://bugs.gentoo.org">bugzilla</uri> website. |
| 589 | </li> |
420 | </li> |
| 590 | <li> |
421 | <li> |
| 591 | <e>R</e> (reemerge) The package isn't new, but needs to be reemerged |
422 | <b>missing keyword</b> means that the application has not been tested on |
|
|
423 | your architecture yet. Ask the architecture porting team to test the package |
|
|
424 | or test it for them and report your findings on our <uri |
|
|
425 | link="http://bugs.gentoo.org">bugzilla</uri> website. |
| 592 | </li> |
426 | </li> |
| 593 | <li> |
427 | <li> |
| 594 | <e>F</e> (fetch) The package requires that you download the sourcecode |
428 | <b>package.mask</b> means that the package has been found corrupt, unstable |
| 595 | manually (for instance due to licencing issues) |
429 | or worse and has been deliberately marked as do-not-use. |
| 596 | </li> |
430 | </li> |
| 597 | <li> |
431 | <li> |
| 598 | <e>U</e> (update) The package already exists on your system but will be |
432 | <b>profile</b> means that the package has been found not suitable for your |
| 599 | upgraded |
433 | profile. The application might break your system if you installed it or is |
| 600 | </li> |
434 | just not compatible with the profile you use. |
| 601 | <li> |
|
|
| 602 | <e>UD</e> (downgrade) The package already exists on your system but will be |
|
|
| 603 | downgraded |
|
|
| 604 | </li> |
|
|
| 605 | <li> |
|
|
| 606 | <e>U-</e> (slot warning) The package you have installed on your system |
|
|
| 607 | is listed as a package that can not coexist with a different version, but |
|
|
| 608 | your update does. The update will be installed and the older version will be |
|
|
| 609 | removed. |
|
|
| 610 | </li> |
435 | </li> |
| 611 | </ul> |
436 | </ul> |
| 612 | |
437 | |
| 613 | <p> |
|
|
| 614 | In certain cases, an update may mean a downgrade (i.e. install an older version |
|
|
| 615 | instead of a newer version). If you don't want this to happen, use the |
|
|
| 616 | <c>--upgradeonly</c> option (<c>-U</c> in short): |
|
|
| 617 | </p> |
|
|
| 618 | |
|
|
| 619 | <pre caption="Upgrading your entire system"> |
|
|
| 620 | # <i>emerge --update --upgradeonly world</i> |
|
|
| 621 | </pre> |
|
|
| 622 | |
|
|
| 623 | <p> |
|
|
| 624 | Of course, we are talking here about <e>system</e> and <e>world</e>, but you can |
|
|
| 625 | perform the same actions for individual software packages. |
|
|
| 626 | </p> |
|
|
| 627 | |
|
|
| 628 | </body> |
438 | </body> |
| 629 | </subsection> |
|
|
| 630 | <subsection> |
439 | </subsection> |
| 631 | <title>Removing Software</title> |
440 | <subsection id="missingdependencies"> |
| 632 | <body> |
441 | <title>Missing Dependencies</title> |
| 633 | |
|
|
| 634 | <p> |
|
|
| 635 | If you want to remove software from your system, you can use the <c>unmerge</c> |
|
|
| 636 | option (<c>-C</c> - capital C - in short): |
|
|
| 637 | </p> |
|
|
| 638 | |
|
|
| 639 | <pre caption="Uninstalling software"> |
|
|
| 640 | # <i>emerge unmerge gnumeric</i> |
|
|
| 641 | </pre> |
|
|
| 642 | |
|
|
| 643 | <p> |
|
|
| 644 | If you want to test a removal (but not perform it), you can use <c>--pretend</c> |
|
|
| 645 | again: |
|
|
| 646 | </p> |
|
|
| 647 | |
|
|
| 648 | <pre caption="Pretending to uninstall software"> |
|
|
| 649 | # <i>emerge --pretend unmerge gnumeric</i> |
|
|
| 650 | </pre> |
|
|
| 651 | |
|
|
| 652 | <warn> |
|
|
| 653 | Portage doesn't verify if a package is a dependency for another |
|
|
| 654 | installed package. It also doesn't warn you if the package is part of |
|
|
| 655 | <e>system</e>, i.e. a core application necessary for the correct functioning of |
|
|
| 656 | your system! |
|
|
| 657 | </warn> |
|
|
| 658 | |
|
|
| 659 | </body> |
442 | <body> |
| 660 | </subsection> |
443 | |
| 661 | </section> |
444 | <pre caption="Portage warning about missing dependency"> |
| 662 | <section> |
445 | emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-4.2-r4". |
| 663 | <title>Software Availability</title> |
446 | |
|
|
447 | !!! Problem with ebuild sys-devel/gcc-3.4.2-r2 |
|
|
448 | !!! Possibly a DEPEND/*DEPEND problem. |
|
|
449 | </pre> |
|
|
450 | |
|
|
451 | <p> |
|
|
452 | The application you are trying to install depends on another package that is not |
|
|
453 | available for your system. Please check <uri |
|
|
454 | link="http://bugs.gentoo.org">bugzilla</uri> if the issue is known and if not, |
|
|
455 | please report it. Unless you are mixing branches this should not occur and is |
|
|
456 | therefore a bug. |
|
|
457 | </p> |
|
|
458 | |
|
|
459 | </body> |
| 664 | <subsection> |
460 | </subsection> |
| 665 | <title>ARCH or not?</title> |
461 | <subsection id="ambiguousebuild"> |
| 666 | <body> |
462 | <title>Ambiguous Ebuild Name</title> |
| 667 | |
|
|
| 668 | <p> |
|
|
| 669 | Gentoo places its packages in two possible stadia called <e>ARCH</e> and |
|
|
| 670 | <e>~ARCH</e>. Don't take this literally: the stadia depend on the architecture |
|
|
| 671 | you are using. In other words, for x86-based systems you have <e>x86</e> and |
|
|
| 672 | <e>~x86</e>, for ppc-based systems you have <e>ppc</e> and <e>~ppc</e> etc. |
|
|
| 673 | </p> |
|
|
| 674 | |
|
|
| 675 | <p> |
|
|
| 676 | The <e>~ARCH</e> stadium means that the package works for the developer in |
|
|
| 677 | charge of the package, but that the package hasn't been tested thoroughly enough |
|
|
| 678 | by the community to be placed in <e>ARCH</e>. <e>~ARCH</e> packages usually go |
|
|
| 679 | to <e>ARCH</e> after being bugfree for a sufficient amount of time. |
|
|
| 680 | </p> |
|
|
| 681 | |
|
|
| 682 | <p> |
|
|
| 683 | Your system will use <e>ARCH</e> packages per default. If you want to live on |
|
|
| 684 | the edge, don't mind having a broken package once in a while, and you like |
|
|
| 685 | submitting bugreports to <uri |
|
|
| 686 | link="http://bugs.gentoo.org">bugs.gentoo.org</uri>, then you can opt to use |
|
|
| 687 | <e>~ARCH</e> packages. To "move" your system to a <e>~ARCH</e>-using system, |
|
|
| 688 | edit the <c>ACCEPT_KEYWORDS</c> variable in <path>/etc/make.conf</path> so that |
|
|
| 689 | it reads <e>~ARCH</e> (again: for x86-based systems: <e>~x86</e>, etc.). |
|
|
| 690 | </p> |
|
|
| 691 | |
|
|
| 692 | <p> |
|
|
| 693 | If you want to update your system now, you will notice that <e>a lot</e> of |
|
|
| 694 | packages will be updated! |
|
|
| 695 | </p> |
|
|
| 696 | |
|
|
| 697 | </body> |
463 | <body> |
| 698 | </subsection> |
464 | |
|
|
465 | <pre caption="Portage warning about ambiguous ebuild names"> |
|
|
466 | !!! The short ebuild name "aterm" is ambiguous. Please specify |
|
|
467 | !!! one of the following fully-qualified ebuild names instead: |
|
|
468 | |
|
|
469 | dev-libs/aterm |
|
|
470 | x11-terms/aterm |
|
|
471 | </pre> |
|
|
472 | |
|
|
473 | <p> |
|
|
474 | The application you want to install has a name that corresponds with more than |
|
|
475 | one package. You need to supply the category name as well. Portage will inform |
|
|
476 | you of possible matches to choose from. |
|
|
477 | </p> |
|
|
478 | |
|
|
479 | </body> |
| 699 | <subsection> |
480 | </subsection> |
| 700 | <title>Masked Packages</title> |
481 | <subsection id="circulardependencies"> |
| 701 | <body> |
482 | <title>Circular Dependencies</title> |
| 702 | |
|
|
| 703 | <p> |
|
|
| 704 | When you want to install a package, you might come across the following message: |
|
|
| 705 | </p> |
|
|
| 706 | |
|
|
| 707 | <pre caption="Message about masked packages"> |
|
|
| 708 | Calculating dependencies |
|
|
| 709 | !!! <comment>all ebuilds that could satisfy </comment><your package><comment> have been masked.</comment> |
|
|
| 710 | </pre> |
|
|
| 711 | |
|
|
| 712 | <p> |
|
|
| 713 | A package can be masked due to two reasons: |
|
|
| 714 | </p> |
|
|
| 715 | |
|
|
| 716 | <ol> |
|
|
| 717 | <li>The package is in <e>~ARCH</e> while you use <e>ARCH</e></li> |
|
|
| 718 | <li>The package is hard-masked explicitly</li> |
|
|
| 719 | </ol> |
|
|
| 720 | |
|
|
| 721 | <p> |
|
|
| 722 | If the package is masked because of the first reason, and you <e>really</e> want |
|
|
| 723 | to install it (knowing that there <e>is</e> a reason why it isn't available in |
|
|
| 724 | <e>ARCH</e>), you can temporarily accept <e>~ARCH</e> packages: |
|
|
| 725 | </p> |
|
|
| 726 | |
|
|
| 727 | <pre caption="Temporarily accepting ~ARCH packages"> |
|
|
| 728 | # <i>ACCEPT_KEYWORDS="~x86" emerge gnumeric</i> |
|
|
| 729 | </pre> |
|
|
| 730 | |
|
|
| 731 | <p> |
|
|
| 732 | A package is hardmasked if it is listed in |
|
|
| 733 | <path>/usr/portage/profiles/package.mask</path>. If you read this file, you |
|
|
| 734 | will also read the reason why the package is hardmasked (it is usually added as |
|
|
| 735 | a comment). If you want to install the package nevertheless (despite all the |
|
|
| 736 | possible warnings we could ever throw at your head about "breaking your system", |
|
|
| 737 | "breaks other packages", or "badly needs testing"), create the |
|
|
| 738 | <path>/etc/portage/package.unmask</path> file and list the package in it (use |
|
|
| 739 | the same format as is used in <path>/usr/portage/profiles/package.mask</path>). |
|
|
| 740 | </p> |
|
|
| 741 | |
|
|
| 742 | <p> |
|
|
| 743 | Do <e>not</e> alter the <path>/usr/portage/profiles/package.mask</path> file as |
|
|
| 744 | all changes are undone the next time you update your Portage tree. |
|
|
| 745 | </p> |
|
|
| 746 | |
|
|
| 747 | <p> |
|
|
| 748 | Another trick to circumvent the "masked package" problem is to install the |
|
|
| 749 | package using the full path. This will ignore both the <c>ACCEPT_KEYWORD</c> |
|
|
| 750 | settings and the <path>package.mask</path> listing. |
|
|
| 751 | </p> |
|
|
| 752 | |
|
|
| 753 | <pre caption="Installing a package without checking for stadium / masking"> |
|
|
| 754 | # <i>emerge /usr/portage/app-office/gnumeric/gnumeric-1.2.0.ebuild</i> |
|
|
| 755 | </pre> |
|
|
| 756 | |
|
|
| 757 | </body> |
483 | <body> |
| 758 | </subsection> |
484 | |
|
|
485 | <pre caption="Portage warning about circular dependencies"> |
|
|
486 | !!! Error: circular dependencies: |
|
|
487 | |
|
|
488 | ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1 |
|
|
489 | ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2 |
|
|
490 | </pre> |
|
|
491 | |
|
|
492 | <p> |
|
|
493 | Two (or more) packages you want to install depend on each other and can |
|
|
494 | therefore not be installed. This is most likely a bug in the Portage tree. |
|
|
495 | Please resync after a while and try again. You can also check <uri |
|
|
496 | link="http://bugs.gentoo.org">bugzilla</uri> if the issue is known and if not, |
|
|
497 | report it. |
|
|
498 | </p> |
|
|
499 | |
|
|
500 | </body> |
| 759 | <subsection> |
501 | </subsection> |
| 760 | <title>Blocked Packages</title> |
502 | <subsection id="fetchfailed"> |
|
|
503 | <title>Fetch failed</title> |
|
|
504 | <body> |
|
|
505 | |
|
|
506 | <pre caption="Portage warning about fetch failed"> |
|
|
507 | !!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing... |
|
|
508 | <comment>(...)</comment> |
|
|
509 | !!! Some fetch errors were encountered. Please see above for details. |
|
|
510 | </pre> |
|
|
511 | |
|
|
512 | <p> |
|
|
513 | Portage was unable to download the sources for the given application and will |
|
|
514 | try to continue installing the other applications (if applicable). This failure |
|
|
515 | can be due to a mirror that has not synchronised correctly or because the ebuild |
|
|
516 | points to an incorrect location. The server where the sources reside can also be |
|
|
517 | down for some reason. |
|
|
518 | </p> |
|
|
519 | |
|
|
520 | <p> |
|
|
521 | Retry after one hour to see if the issue still persists. |
|
|
522 | </p> |
|
|
523 | |
| 761 | <body> |
524 | </body> |
|
|
525 | </subsection> |
|
|
526 | <subsection id="profileprotect"> |
|
|
527 | <title>System Profile Protection</title> |
|
|
528 | <body> |
| 762 | |
529 | |
| 763 | <p> |
530 | <pre caption="Portage warning about profile-protected package"> |
| 764 | You have a situation when you receive the following error on your screen: |
531 | !!! Trying to unmerge package(s) in system profile. 'sys-apps/portage' |
|
|
532 | !!! This could be damaging to your system. |
|
|
533 | </pre> |
|
|
534 | |
| 765 | </p> |
535 | <p> |
| 766 | |
536 | You have asked to remove a package that is part of your system's core packages. |
| 767 | <pre caption="Blocking package"> |
537 | It is listed in your profile as required and should therefore not be removed |
| 768 | [blocks B ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0) |
538 | from the system. |
| 769 | </pre> |
|
|
| 770 | |
|
|
| 771 | <p> |
539 | </p> |
| 772 | In the above example, the package <c>bonobo-activation</c> is blocking the |
|
|
| 773 | emerge of <c>libbonobo</c>. To resolve this issue, remove the |
|
|
| 774 | <c>bonobo-activation</c> package and continue: |
|
|
| 775 | </p> |
|
|
| 776 | |
|
|
| 777 | <pre caption="Resolving a blocking situation"> |
|
|
| 778 | # <i>emerge unmerge bonobo-activation</i> |
|
|
| 779 | </pre> |
|
|
| 780 | |
540 | |
| 781 | </body> |
541 | </body> |
| 782 | </subsection> |
542 | </subsection> |
| 783 | </section> |
543 | </section> |
| 784 | </sections> |
544 | </sections> |