|
|
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.2 2003/11/25 17:34:47 swift Exp $ --> |
7 | <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/handbook/hb-working-portage.xml,v 1.51 2005/05/17 14:39:26 neysx Exp $ --> |
| 5 | |
8 | |
| 6 | <sections> |
9 | <sections> |
|
|
10 | |
|
|
11 | <version>1.46</version> |
|
|
12 | <date>2005-05-17</date> |
|
|
13 | |
| 7 | <section> |
14 | <section> |
| 8 | <title>Obtaining Package Information</title> |
15 | <title>Welcome to Portage</title> |
| 9 | <subsection> |
|
|
| 10 | <title>The Lord of All Tools: emerge</title> |
|
|
| 11 | <body> |
16 | <body> |
| 12 | |
17 | |
| 13 | <p> |
|
|
| 14 | We have briefly encountered <c>emerge</c> in the previous chapter, but not to |
|
|
| 15 | the extent that you are now able to work with it to its fullest potential. We |
|
|
| 16 | will fix that right now ;-) |
|
|
| 17 | </p> |
18 | <p> |
| 18 | |
19 | Portage is probably Gentoo's most notable innovation in software management. |
|
|
20 | With its high flexibility and enormous amount of features it is frequently seen |
|
|
21 | as the best software management tool available for Linux. |
| 19 | <p> |
22 | </p> |
| 20 | <c>emerge</c> is the command used to install, remove, query and maintain |
23 | |
| 21 | software packages. It is a front-end for <c>ebuild</c>; people interested in |
|
|
| 22 | becoming Gentoo professionals will learn how to use <c>ebuild</c> later on. For |
|
|
| 23 | now, we will focus on <c>emerge</c> as it has functionality that <c>ebuild</c> |
|
|
| 24 | lacks (such as resolving dependencies, searching the Portage tree, etc.). |
|
|
| 25 | </p> |
24 | <p> |
| 26 | |
25 | Portage is completely written in <uri link="http://www.python.org">Python</uri> |
|
|
26 | and <uri link="http://www.gnu.org/software/bash">Bash</uri> and therefore fully |
|
|
27 | visible to the users as both are scripting languages. |
| 27 | <p> |
28 | </p> |
| 28 | Since <c>emerge</c> is the most important tool for Gentoo users, it has an |
29 | |
| 29 | extensive manpage you can read by issuing <c>man emerge</c>. You can also view |
|
|
| 30 | the in-command help by running <c>emerge --help</c>. |
|
|
| 31 | </p> |
30 | <p> |
|
|
31 | Most users will work with Portage through the <c>emerge</c> tool. This chapter |
|
|
32 | is not meant to duplicate the information available from the emerge man page. |
|
|
33 | For a complete rundown of emerge's options, please consult the man page: |
|
|
34 | </p> |
| 32 | |
35 | |
| 33 | <pre caption="Retrieving help for emerge"> |
36 | <pre caption="Reading the emerge man page"> |
| 34 | # <i>man emerge</i> |
37 | $ <i>man emerge</i> |
| 35 | # <i>emerge --help</i> |
|
|
| 36 | </pre> |
38 | </pre> |
| 37 | |
39 | |
| 38 | </body> |
|
|
| 39 | </subsection> |
|
|
| 40 | <subsection> |
|
|
| 41 | <title>The Portage Tree</title> |
|
|
| 42 | <body> |
40 | </body> |
| 43 | |
|
|
| 44 | <p> |
|
|
| 45 | Before we continue describing <c>emerge</c>, let us first take a look at the |
|
|
| 46 | Portage Tree. Go to <path>/usr/portage</path> and do a listing of the available |
|
|
| 47 | directories. |
|
|
| 48 | </p> |
|
|
| 49 | |
|
|
| 50 | <pre caption="Viewing the Portage Tree"> |
|
|
| 51 | # <i>cd /usr/portage; ls --classify</i> |
|
|
| 52 | <comment>(The --classify will append a special character to note the filetype)</comment> |
|
|
| 53 | app-admin/ dev-ml/ gnome-libs/ net-print/ |
|
|
| 54 | app-arch/ dev-perl/ gnome-office/ net-wireless/ |
|
|
| 55 | app-benchmarks/ dev-php/ header.txt net-www/ |
|
|
| 56 | app-cdr/ dev-python/ incoming/ net-zope/ |
|
|
| 57 | app-crypt/ dev-ruby/ jython/ packages/ |
|
|
| 58 | app-dicts/ dev-tcltk/ kde-apps/ profiles/ |
|
|
| 59 | app-doc/ dev-tex/ kde-base/ releases/ |
|
|
| 60 | app-editors/ dev-util/ kde-i18n/ scripts/ |
|
|
| 61 | app-emacs/ distfiles/ kde-libs/ sec-policy/ |
|
|
| 62 | app-emulation/ eclass/ licenses/ skel.ChangeLog |
|
|
| 63 | app-games/ experimental/ media-fonts/ skel.ebuild |
|
|
| 64 | app-gnustep/ files/ media-gfx/ skel.metadata.xml |
|
|
| 65 | app-i18n/ fresco-base/ media-libs/ snapshots/ |
|
|
| 66 | app-misc/ games-action/ media-plugins/ sys-apps/ |
|
|
| 67 | app-office/ games-arcade/ media-radio/ sys-build/ |
|
|
| 68 | app-pda/ games-board/ media-sound/ sys-cluster/ |
|
|
| 69 | app-portage/ games-emulation/ media-tv/ sys-devel/ |
|
|
| 70 | app-sci/ games-engines/ media-video/ sys-fs/ |
|
|
| 71 | app-shells/ games-fps/ metadata/ sys-kernel/ |
|
|
| 72 | app-text/ games-kids/ net-analyzer/ sys-kmods/ |
|
|
| 73 | app-vim/ games-misc/ net-apache/ sys-libs/ |
|
|
| 74 | app-xemacs/ games-mud/ net-dialup/ unix2tcp/ |
|
|
| 75 | berlin-base/ games-puzzle/ net-dns/ x11-base/ |
|
|
| 76 | dev-ada/ games-roguelike/ net-firewall/ x11-libs/ |
|
|
| 77 | dev-cpp/ games-rpg/ net-fs/ x11-misc/ |
|
|
| 78 | dev-db/ games-server/ net-ftp/ x11-plugins/ |
|
|
| 79 | dev-dotnet/ games-simulation/ net-im/ x11-terms/ |
|
|
| 80 | dev-embedded/ games-sports/ net-irc/ x11-themes/ |
|
|
| 81 | dev-games/ games-strategy/ net-libs/ x11-wm/ |
|
|
| 82 | dev-haskell/ games-util/ net-mail/ xfce-base/ |
|
|
| 83 | dev-java/ glep/ net-misc/ xfce-extra/ |
|
|
| 84 | dev-lang/ gnome-apps/ net-nds/ |
|
|
| 85 | dev-libs/ gnome-base/ net-news/ |
|
|
| 86 | dev-lisp/ gnome-extra/ net-p2p/ |
|
|
| 87 | </pre> |
|
|
| 88 | |
|
|
| 89 | <p> |
|
|
| 90 | As you can see, the Portage tree has several subdirectories. Most of them are |
|
|
| 91 | the <e>categories</e> in which the Gentoo packages, called <e>ebuilds</e>, |
|
|
| 92 | reside. Take a look at, for instance, <path>app-office</path>: |
|
|
| 93 | </p> |
|
|
| 94 | |
|
|
| 95 | <pre caption="Viewing a category"> |
|
|
| 96 | # <i>cd app-office; ls --classify</i> |
|
|
| 97 | abiword/ gnotime/ kmymoney2/ ooodi/ plan/ timestamp.x |
|
|
| 98 | dia/ gnucash/ koffice/ oooqs/ qhacc/ |
|
|
| 99 | dia2code/ gnumeric/ lxbank/ openoffice/ sc/ |
|
|
| 100 | facturalux/ ical/ lyx/ openoffice-bin/ scribus/ |
|
|
| 101 | gaby/ kbudget/ mdbtools/ openoffice-ximian/ siag/ |
|
|
| 102 | gnofin/ khacc/ mrproject/ phprojekt/ texmacs/ |
|
|
| 103 | </pre> |
|
|
| 104 | |
|
|
| 105 | <p> |
|
|
| 106 | Inside a category you will find the packages belonging to that category, with a |
|
|
| 107 | seperate directory for each package. Let us take a look at the <c>openoffice</c> |
|
|
| 108 | package: |
|
|
| 109 | </p> |
|
|
| 110 | |
|
|
| 111 | <pre caption="Viewing a package"> |
|
|
| 112 | # <i>cd openoffice; ls --classify</i> |
|
|
| 113 | ChangeLog files/ openoffice-1.0.3-r1.ebuild openoffice-1.1.0-r2.ebuild |
|
|
| 114 | Manifest metadata.xml openoffice-1.1.0-r1.ebuild openoffice-1.1.0.ebuild |
|
|
| 115 | </pre> |
|
|
| 116 | |
|
|
| 117 | <p> |
|
|
| 118 | Remember that we told you that a Gentoo package is called an ebuild? Well, in |
|
|
| 119 | the example directory four of such ebuilds are stored. Their naming is |
|
|
| 120 | almost identical: they only differ in the version name. |
|
|
| 121 | You are free to view the contents of such a package: they are plain scripts. We |
|
|
| 122 | will not discuss it right now as it isn't important to know if you plan on just |
|
|
| 123 | using Gentoo. |
|
|
| 124 | </p> |
|
|
| 125 | |
|
|
| 126 | <p> |
|
|
| 127 | The other files are the <path>ChangeLog</path> (which contains a listing of all |
|
|
| 128 | the changes done to the ebuilds), <path>Manifest</path> (which contains the |
|
|
| 129 | checksums and permissions of all the files in the directory) and |
|
|
| 130 | <path>metadata.xml</path> (which contains more information about the package, |
|
|
| 131 | such as the responsible development group -- called <e>herd</e> and a more |
|
|
| 132 | extensive description). |
|
|
| 133 | </p> |
|
|
| 134 | |
|
|
| 135 | <p> |
|
|
| 136 | Inside the <path>files</path> directory you will find extra files, needed by |
|
|
| 137 | Portage: digests (checksums and permissions of the files needed by a single |
|
|
| 138 | version of the package), patches, example configuration files, etc. |
|
|
| 139 | </p> |
|
|
| 140 | |
|
|
| 141 | <pre caption="Viewing the extra files"> |
|
|
| 142 | # <i>cd files; ls --classify</i> |
|
|
| 143 | 1.0.3/ digest-openoffice-1.0.3-r1 digest-openoffice-1.1.0-r1 |
|
|
| 144 | 1.1.0/ digest-openoffice-1.1.0 digest-openoffice-1.1.0-r2 |
|
|
| 145 | # <i>cd 1.1.0; ls --classify</i> |
|
|
| 146 | fixed-gcc.patch ooffice-wrapper-1.3 |
|
|
| 147 | newstlportfix.patch openoffice-1.1.0-linux-2.6-fix.patch |
|
|
| 148 | no-mozab.patch openoffice-1.1.0-sparc64-fix.patch |
|
|
| 149 | nptl.patch |
|
|
| 150 | </pre> |
|
|
| 151 | |
|
|
| 152 | <p> |
|
|
| 153 | If you go back to the root of the Portage tree (<path>/usr/portage</path>) you |
|
|
| 154 | will notice that there are other, non-category directories too. We will discuss |
|
|
| 155 | those later in this chapter. |
|
|
| 156 | </p> |
|
|
| 157 | |
|
|
| 158 | </body> |
|
|
| 159 | </subsection> |
|
|
| 160 | <subsection> |
|
|
| 161 | <title>Search for a Package</title> |
|
|
| 162 | <body> |
|
|
| 163 | |
|
|
| 164 | <p> |
|
|
| 165 | If you are new to Linux or Gentoo, you might not know what tool you need for |
|
|
| 166 | what job. To facilitate searching, <c>emerge</c> provides you with a way to |
|
|
| 167 | search through the available packages on your system. There are two ways you can |
|
|
| 168 | search through packages: by <e>name</e>, or by <e>name</e> and |
|
|
| 169 | <e>description</e>. |
|
|
| 170 | </p> |
|
|
| 171 | |
|
|
| 172 | <p> |
|
|
| 173 | To search through the Portage tree by name, use <c>emerge search</c>. For |
|
|
| 174 | instance, to find out more about <c>mozilla</c>: |
|
|
| 175 | </p> |
|
|
| 176 | |
|
|
| 177 | <pre caption="Showing information about mozilla"> |
|
|
| 178 | # <i>emerge search mozilla</i> |
|
|
| 179 | Searching... |
|
|
| 180 | [ Results for search key : mozilla ] |
|
|
| 181 | [ Applications found : 5 ] |
|
|
| 182 | <comment>(Some output removed to improve readability)</comment> |
|
|
| 183 | * net-www/mozilla |
|
|
| 184 | Latest version available: 1.5-r1 |
|
|
| 185 | Latest version installed: 1.4-r3 |
|
|
| 186 | Size of downloaded files: 29,153 kB |
|
|
| 187 | Homepage: http://www.mozilla.org |
|
|
| 188 | Description: The Mozilla Web Browser |
|
|
| 189 | |
|
|
| 190 | * net-www/mozilla-firebird |
|
|
| 191 | Latest version available: 0.7 |
|
|
| 192 | Latest version installed: [ Not Installed ] |
|
|
| 193 | Size of downloaded files: 37,850 kB |
|
|
| 194 | Homepage: http://www.mozilla.org/projects/firebird/ |
|
|
| 195 | Description: The Mozilla Firebird Web Browser |
|
|
| 196 | <comment>(...)</comment> |
|
|
| 197 | </pre> |
|
|
| 198 | |
|
|
| 199 | <p> |
|
|
| 200 | If you want to include a search through the descriptions too, use the |
|
|
| 201 | <c>--searchdesc</c> argument: |
|
|
| 202 | </p> |
|
|
| 203 | |
|
|
| 204 | <pre caption="Search through the descriptions too"> |
|
|
| 205 | # <i>emerge --searchdesc mozilla</i> |
|
|
| 206 | Searching... |
|
|
| 207 | [ Results for search key : mozilla ] |
|
|
| 208 | [ Applications found : 10 ] |
|
|
| 209 | <comment>(Some output removed to improve readability)</comment> |
|
|
| 210 | * dev-libs/nss-3.8 |
|
|
| 211 | Latest version available: 3.8 |
|
|
| 212 | Latest version installed: 3.8 |
|
|
| 213 | Size of downloaded files: 2,782 kB |
|
|
| 214 | Homepage: http://www.mozilla.org/projects/security/pki/nss/ |
|
|
| 215 | Description: Mozilla's Netscape Security Services Library that implements PKI support |
|
|
| 216 | </pre> |
|
|
| 217 | |
|
|
| 218 | <p> |
|
|
| 219 | As you can see, the output of <c>emerge</c> informs you about the category and |
|
|
| 220 | name of the package, the available version, the currently installed version, |
|
|
| 221 | the size of the downloaded files, the homepage and the small description. |
|
|
| 222 | </p> |
|
|
| 223 | |
|
|
| 224 | <p> |
|
|
| 225 | You see something new? Yes, <e>downloaded files</e>. When you tell Portage to |
|
|
| 226 | install a package, it ofcourse needs to have the necessary sources (or |
|
|
| 227 | precompiled packages) available. It therefor checks the contents of |
|
|
| 228 | <path>/usr/portage/distfiles</path> (for sourcecode) or |
|
|
| 229 | <path>/usr/portage/packages/All</path> (for precompiled packages) to see if the |
|
|
| 230 | necessary files are already available. If not, it downloads the necessary files |
|
|
| 231 | and places them in those directories. |
|
|
| 232 | </p> |
|
|
| 233 | |
|
|
| 234 | <note> |
|
|
| 235 | Searching the Portage Tree, especially when using <c>--searchdesc</c>, is very |
|
|
| 236 | time consuming. There are other, more performant tools available. We will |
|
|
| 237 | describe those in the chapter on <uri link="?part=2&chap=7">Gentoolkit and |
|
|
| 238 | Other Tools</uri>. |
|
|
| 239 | </note> |
|
|
| 240 | |
|
|
| 241 | </body> |
|
|
| 242 | </subsection> |
|
|
| 243 | </section> |
41 | </section> |
| 244 | <section> |
42 | <section> |
| 245 | <title>Updating Portage</title> |
43 | <title>The Portage Tree</title> |
| 246 | <subsection> |
|
|
| 247 | <title>Introduction</title> |
|
|
| 248 | <body> |
|
|
| 249 | |
|
|
| 250 | <p> |
|
|
| 251 | Searching through Portage is nice, but if you don't update your Portage Tree |
|
|
| 252 | regularly, you will be stuck with the packages and versions available on your |
|
|
| 253 | system. This means that your system will get outdated pretty soon, and that |
|
|
| 254 | packages with possible security problems will remain on your system. |
|
|
| 255 | </p> |
|
|
| 256 | |
|
|
| 257 | <p> |
|
|
| 258 | There are several ways to update your Portage Tree. The most popular method is |
|
|
| 259 | by using one of our <uri link="/main/en/mirrors.xml">rsync mirrors</uri>. |
|
|
| 260 | Another one is by using a Portage snapshot (in case a firewall or unavailability |
|
|
| 261 | of a network prohibits the use of the rsync server). |
|
|
| 262 | </p> |
|
|
| 263 | |
|
|
| 264 | </body> |
|
|
| 265 | </subsection> |
44 | <subsection> |
|
|
45 | <title>Ebuilds</title> |
|
|
46 | <body> |
|
|
47 | |
|
|
48 | <p> |
|
|
49 | When we talk about packages, we often mean software titles that are available to |
|
|
50 | the Gentoo users through the Portage tree. The Portage tree is a collection of |
|
|
51 | <e>ebuilds</e>, files that contain all information Portage needs to maintain |
|
|
52 | software (install, search, query, ...). These ebuilds reside in |
|
|
53 | <path>/usr/portage</path> by default. |
|
|
54 | </p> |
|
|
55 | |
|
|
56 | <p> |
|
|
57 | Whenever you ask Portage to perform some action regarding software titles, it |
|
|
58 | will use the ebuilds on your system as a base. It is therefore important that |
|
|
59 | you regularly update the ebuilds on your system so Portage knows about new |
|
|
60 | software, security updates, etc. |
|
|
61 | </p> |
|
|
62 | |
|
|
63 | </body> |
| 266 | <subsection> |
64 | </subsection> |
| 267 | <title>Selecting a Mirror for rsync</title> |
|
|
| 268 | <body> |
|
|
| 269 | |
|
|
| 270 | <p> |
|
|
| 271 | It is adviseable to first select a fast <uri |
|
|
| 272 | link="/main/en/mirrors.xml">mirror</uri> close to you. You can do this manually |
|
|
| 273 | (by setting the <c>SYNC</c> variable in <path>/etc/make.conf</path>) or use |
|
|
| 274 | <c>mirrorselect</c> to do this for you automatically. As the <c>SYNC</c> |
|
|
| 275 | variable will be discussed later on, we will focus on using <c>mirrorselect</c>. |
|
|
| 276 | First install <c>mirrorselect</c> by emerging it: |
|
|
| 277 | </p> |
|
|
| 278 | |
|
|
| 279 | <pre caption="Installing mirrorselect"> |
|
|
| 280 | # <i>emerge --usepkg mirrorselect</i> |
|
|
| 281 | </pre> |
|
|
| 282 | |
|
|
| 283 | <p> |
|
|
| 284 | Now run <c>mirrorselect</c> to automatically select mirrors for you (it will |
|
|
| 285 | also setup Portage to use a mirror for the sourcecode): |
|
|
| 286 | </p> |
|
|
| 287 | |
|
|
| 288 | <pre caption="Running mirrorselect"> |
|
|
| 289 | # <i>mirrorselect -a -s3</i> |
|
|
| 290 | </pre> |
|
|
| 291 | |
|
|
| 292 | </body> |
|
|
| 293 | </subsection> |
65 | <subsection> |
| 294 | <subsection> |
|
|
| 295 | <title>Updating Portage</title> |
66 | <title>Updating the Portage Tree</title> |
| 296 | <body> |
67 | <body> |
| 297 | |
68 | |
| 298 | <p> |
|
|
| 299 | To update Portage using rsync, simply run <c>emerge sync</c>: |
|
|
| 300 | </p> |
69 | <p> |
|
|
70 | The Portage tree is usually updated with <uri |
|
|
71 | link="http://rsync.samba.org/">rsync</uri>, a fast incremental file transfer |
|
|
72 | utility. Updating is fairly simple as the <c>emerge</c> command provides a |
|
|
73 | front-end for rsync: |
|
|
74 | </p> |
| 301 | |
75 | |
| 302 | <pre caption="Updating Portage using emerge sync"> |
76 | <pre caption="Updating the Portage tree"> |
| 303 | # <i>emerge sync</i> |
77 | # <i>emerge --sync</i> |
| 304 | </pre> |
78 | </pre> |
| 305 | |
79 | |
| 306 | <p> |
|
|
| 307 | If this fails (due to network problems, or a firewall), you can try using |
|
|
| 308 | <c>emerge-webrsync</c> which will download a Portage Tree snapshot using |
|
|
| 309 | <c>wget</c>. This also means that you can use proxies if you want. We discussed |
|
|
| 310 | how to setup your system to use proxies during the Gentoo installation. |
|
|
| 311 | </p> |
80 | <p> |
|
|
81 | If you are unable to rsync due to firewall restrictions you can still update |
|
|
82 | your Portage tree by using our daily generated Portage tree snapshots. The |
|
|
83 | <c>emerge-webrsync</c> tool automatically fetches and installs the latest |
|
|
84 | snapshot on your system: |
|
|
85 | </p> |
| 312 | |
86 | |
| 313 | <pre caption="Updating Portage using emerge-webrsync"> |
87 | <pre caption="Running emerge-webrsync"> |
| 314 | # <i>emerge-webrsync</i> |
88 | # <i>emerge-webrsync</i> |
| 315 | </pre> |
89 | </pre> |
| 316 | |
90 | |
| 317 | </body> |
91 | </body> |
| 318 | </subsection> |
92 | </subsection> |
| 319 | </section> |
93 | </section> |
| 320 | <section> |
94 | <section> |
| 321 | <title>Maintaining Software</title> |
95 | <title>Maintaining Software</title> |
| 322 | <subsection> |
96 | <subsection> |
|
|
97 | <title>Searching for Software</title> |
|
|
98 | <body> |
|
|
99 | |
|
|
100 | <p> |
|
|
101 | To search through the Portage tree after software titles, you can use |
|
|
102 | <c>emerge</c> built-in search capabilities. By default, <c>emerge --search</c> |
|
|
103 | returns the names of packages whose title matches (either fully or partially) |
|
|
104 | the given search term. |
|
|
105 | </p> |
|
|
106 | |
|
|
107 | <p> |
|
|
108 | For instance, to search for all packages who have "pdf" in their name: |
|
|
109 | </p> |
|
|
110 | |
|
|
111 | <pre caption="Searching for pdf-named packages"> |
|
|
112 | $ <i>emerge --search pdf</i> |
|
|
113 | </pre> |
|
|
114 | |
|
|
115 | <p> |
|
|
116 | If you want to search through the descriptions as well you can use the |
|
|
117 | <c>--searchdesc</c> (or <c>-S</c>) switch: |
|
|
118 | </p> |
|
|
119 | |
|
|
120 | <pre caption="Searching for pdf-related packages"> |
|
|
121 | $ <i>emerge --searchdesc pdf</i> |
|
|
122 | </pre> |
|
|
123 | |
|
|
124 | <p> |
|
|
125 | When you take a look at the output, you'll notice that it gives you a lot of |
|
|
126 | information. The fields are clearly labelled so we won't go further into their |
|
|
127 | meanings: |
|
|
128 | </p> |
|
|
129 | |
|
|
130 | <pre caption="Example 'emerge --search' output"> |
|
|
131 | * net-print/cups-pdf |
|
|
132 | Latest version available: 1.5.2 |
|
|
133 | Latest version installed: [ Not Installed ] |
|
|
134 | Size of downloaded files: 15 kB |
|
|
135 | Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ |
|
|
136 | Description: Provides a virtual printer for CUPS to produce PDF files. |
|
|
137 | License: GPL-2 |
|
|
138 | </pre> |
|
|
139 | |
|
|
140 | </body> |
|
|
141 | </subsection> |
|
|
142 | <subsection> |
| 323 | <title>Installing Software</title> |
143 | <title>Installing Software</title> |
| 324 | <body> |
144 | <body> |
| 325 | |
145 | |
| 326 | </body> |
146 | <p> |
| 327 | </subsection> |
147 | Once you've found a software title to your liking, you can easily install it |
| 328 | <subsection> |
148 | with <c>emerge</c>: just add the package name. For instance, to install |
| 329 | <title>Updating Software</title> |
149 | <c>gnumeric</c>: |
| 330 | <body> |
150 | </p> |
|
|
151 | |
|
|
152 | <pre caption="Installing gnumeric"> |
|
|
153 | # <i>emerge gnumeric</i> |
|
|
154 | </pre> |
|
|
155 | |
|
|
156 | <p> |
|
|
157 | Since many applications depend on each other, any attempt to install a certain |
|
|
158 | software package might result in the installation of several dependencies as |
|
|
159 | well. Don't worry, Portage handles dependencies well. If you want to find out |
|
|
160 | what Portage <e>would</e> install when you ask it to install a certain package, |
|
|
161 | add the <c>--pretend</c> switch. For instance: |
|
|
162 | </p> |
|
|
163 | |
|
|
164 | <pre caption="Pretend to install gnumeric"> |
|
|
165 | # <i>emerge --pretend gnumeric</i> |
|
|
166 | </pre> |
|
|
167 | |
|
|
168 | <p> |
|
|
169 | When you ask Portage to install a package, it will download the necessary source |
|
|
170 | code from the internet (if necessary) and store it by default in |
|
|
171 | <path>/usr/portage/distfiles</path>. After this it will unpack, compile and |
|
|
172 | install the package. If you want Portage to only download the sources without |
|
|
173 | installing them, add the <c>--fetchonly</c> option to the <c>emerge</c> command: |
|
|
174 | </p> |
|
|
175 | |
|
|
176 | <pre caption="Download the sourcecode for gnumeric"> |
|
|
177 | # <i>emerge --fetchonly gnumeric</i> |
|
|
178 | </pre> |
| 331 | |
179 | |
| 332 | </body> |
180 | </body> |
| 333 | </subsection> |
181 | </subsection> |
| 334 | <subsection> |
182 | <subsection> |
| 335 | <title>Removing Software</title> |
183 | <title>Removing Software</title> |
| 336 | <body> |
184 | <body> |
|
|
185 | |
|
|
186 | <p> |
|
|
187 | When you want to remove a software package from your system, use <c>emerge |
|
|
188 | --unmerge</c>. This will tell Portage to remove all files installed by that |
|
|
189 | package from your system <e>except</e> the configuration files of that |
|
|
190 | application if you have altered those after the installation. Leaving the |
|
|
191 | configuration files allows you to continue working with the package if you ever |
|
|
192 | decide to install it again. |
|
|
193 | </p> |
|
|
194 | |
|
|
195 | <p> |
|
|
196 | However, a <brite>big warning</brite> applies: Portage will <e>not</e> check if |
|
|
197 | the package you want to remove is required by another package. It will however |
|
|
198 | warn you when you want to remove an important package that breaks your system |
|
|
199 | if you unmerge it. |
|
|
200 | </p> |
|
|
201 | |
|
|
202 | <pre caption="Removing gnumeric from the system"> |
|
|
203 | # <i>emerge --unmerge gnumeric</i> |
|
|
204 | </pre> |
|
|
205 | |
|
|
206 | <p> |
|
|
207 | When you remove a package from your system, the dependencies of that package |
|
|
208 | that were installed automatically when you installed the software are left. To |
|
|
209 | have Portage locate all dependencies that can now be removed, use |
|
|
210 | <c>emerge</c>'s <c>--depclean</c> functionality. We will talk about this later |
|
|
211 | on. |
|
|
212 | </p> |
|
|
213 | |
|
|
214 | </body> |
|
|
215 | </subsection> |
|
|
216 | <subsection> |
|
|
217 | <title>Updating your System</title> |
|
|
218 | <body> |
|
|
219 | |
|
|
220 | <p> |
|
|
221 | To keep your system in perfect shape (and not to mention install the latest |
|
|
222 | security updates) you need to update your system regularly. Since Portage only |
|
|
223 | checks the ebuilds in your Portage tree you first have to update your Portage |
|
|
224 | tree. When your Portage tree is updated, you can update your system with |
|
|
225 | <c>emerge --update world</c>: |
|
|
226 | </p> |
|
|
227 | |
|
|
228 | <pre caption="Updating your system"> |
|
|
229 | # <i>emerge --update world</i> |
|
|
230 | </pre> |
|
|
231 | |
|
|
232 | <p> |
|
|
233 | Portage will then search for newer version of the applications you have |
|
|
234 | installed. However, it will only verify the versions for the applications you |
|
|
235 | have explicitly installed - not the dependencies. If you want to update every |
|
|
236 | single package on your system, add the <c>--deep</c> argument: |
|
|
237 | </p> |
|
|
238 | |
|
|
239 | <pre caption="Updating your entire system"> |
|
|
240 | # <i>emerge --update --deep world</i> |
|
|
241 | </pre> |
|
|
242 | |
|
|
243 | <p> |
|
|
244 | If you have altered any of your <uri link="?part=2&chap=2">USE flags</uri> |
|
|
245 | lately you might want to add <c>--newuse</c> as well. Portage will then verify |
|
|
246 | if the change requires the installation of new packages or recompilation of |
|
|
247 | existing ones: |
|
|
248 | </p> |
|
|
249 | |
|
|
250 | <pre caption="Performing a full update"> |
|
|
251 | # <i>emerge --update --deep --newuse world</i> |
|
|
252 | </pre> |
|
|
253 | |
|
|
254 | </body> |
|
|
255 | </subsection> |
|
|
256 | <subsection> |
|
|
257 | <title>Metapackages</title> |
|
|
258 | <body> |
|
|
259 | |
|
|
260 | <p> |
|
|
261 | Some packages in the Portage tree don't have any real content but are used to |
|
|
262 | install a collection of packages. For instance, the <c>kde</c> package will |
|
|
263 | install a complete KDE environment on your system by pulling in various |
|
|
264 | KDE-related packages as dependencies. |
|
|
265 | </p> |
|
|
266 | |
|
|
267 | <p> |
|
|
268 | If you ever want to remove such a package from your system, running <c>emerge |
|
|
269 | --unmerge</c> on the package won't have much effect as the dependencies remain |
|
|
270 | on the system. |
|
|
271 | </p> |
|
|
272 | |
|
|
273 | <p> |
|
|
274 | Portage has the functionality to remove orphaned dependencies as well, but since |
|
|
275 | the availability of software is dynamically dependent you first need to update |
|
|
276 | your entire system fully, including the new changes you applied when changing |
|
|
277 | USE flags. After this you can run <c>emerge --depclean</c> to remove the |
|
|
278 | orphaned dependencies. When this is done, you need to rebuild the applications |
|
|
279 | that were dynamically linked to the now-removed software titles but don't |
|
|
280 | require them anymore. |
|
|
281 | </p> |
|
|
282 | |
|
|
283 | <p> |
|
|
284 | All this is handled with the following three commands: |
|
|
285 | </p> |
|
|
286 | |
|
|
287 | <pre caption="Removing orphaned dependencies"> |
|
|
288 | # <i>emerge --update --deep --newuse world</i> |
|
|
289 | # <i>emerge --depclean</i> |
|
|
290 | # <i>revdep-rebuild</i> |
|
|
291 | </pre> |
|
|
292 | |
|
|
293 | <p> |
|
|
294 | <c>revdep-rebuild</c> is provided by the <c>gentoolkit</c> package; don't forget |
|
|
295 | to emerge it first: |
|
|
296 | </p> |
|
|
297 | |
|
|
298 | <pre caption="Installing the gentoolkit package"> |
|
|
299 | # <i>emerge gentoolkit</i> |
|
|
300 | </pre> |
| 337 | |
301 | |
| 338 | </body> |
302 | </body> |
| 339 | </subsection> |
303 | </subsection> |
| 340 | </section> |
304 | </section> |
| 341 | <section> |
305 | <section> |
| 342 | <title>Software Availability</title> |
306 | <title>When Portage is Complaining...</title> |
| 343 | <subsection> |
|
|
| 344 | <title>ARCH or not?</title> |
|
|
| 345 | <body> |
|
|
| 346 | |
|
|
| 347 | </body> |
|
|
| 348 | </subsection> |
307 | <subsection> |
|
|
308 | <title>About SLOTs, Virtuals, Branches, Architectures and Profiles</title> |
|
|
309 | <body> |
|
|
310 | |
|
|
311 | <p> |
|
|
312 | As we stated before, Portage is extremely powerful and supports many features |
|
|
313 | that other software management tools lack. To understand this, we explain a few |
|
|
314 | aspects of Portage without going into too much detail. |
|
|
315 | </p> |
|
|
316 | |
|
|
317 | <p> |
|
|
318 | With Portage different versions of a single package can coexist on a system. |
|
|
319 | While other distributions tend to name their package to those versions (like |
|
|
320 | <c>freetype</c> and <c>freetype2</c>) Portage uses a technology called |
|
|
321 | <e>SLOT</e>s. An ebuild declares a certain SLOT for its version. Ebuilds with |
|
|
322 | different SLOTs can coexist on the same system. For instance, the |
|
|
323 | <c>freetype</c> package has ebuilds with <c>SLOT="1"</c> and <c>SLOT="2"</c>. |
|
|
324 | </p> |
|
|
325 | |
|
|
326 | <p> |
|
|
327 | There are also packages that provide the same functionality but are implemented |
|
|
328 | differently. For instance, <c>metalogd</c>, <c>sysklogd</c> and <c>syslog-ng</c> |
|
|
329 | are all system loggers. Applications that rely on the availability of "a system |
|
|
330 | logger" cannot depend on, for instance, <c>metalogd</c>, as the other system |
|
|
331 | loggers are as good a choice as any. Portage allows for <e>virtuals</e>: each |
|
|
332 | system logger provides <c>virtual/syslog</c> so that applications can depend on |
|
|
333 | <c>virtual/syslog</c>. |
|
|
334 | </p> |
|
|
335 | |
|
|
336 | <p> |
|
|
337 | Software in the Portage tree can reside in different branches. By default your |
|
|
338 | system only accepts packages that Gentoo deems stable. Most new software titles, |
|
|
339 | when committed, are added to the testing branch, meaning more testing needs to |
|
|
340 | be done before it is marked as stable. Although you will see the ebuilds for |
|
|
341 | those software in the Portage tree, Portage will not update them before they are |
|
|
342 | placed in the stable branch. |
|
|
343 | </p> |
|
|
344 | |
|
|
345 | <p> |
|
|
346 | Some software is only available for a few architectures. Or the software doesn't |
|
|
347 | work on the other architectures, or it needs more testing, or the developer that |
|
|
348 | committed the software to the Portage tree is unable to verify if the package |
|
|
349 | works on different architectures. |
|
|
350 | </p> |
|
|
351 | |
|
|
352 | <p> |
|
|
353 | Each Gentoo installation adheres to a certain <c>profile</c> which contains, |
|
|
354 | amongst other information, the list of packages that are required for a system |
|
|
355 | to function normally. |
|
|
356 | </p> |
|
|
357 | |
|
|
358 | </body> |
| 349 | <subsection> |
359 | </subsection> |
|
|
360 | <subsection id="blocked"> |
|
|
361 | <title>Blocked Packages</title> |
|
|
362 | <body> |
|
|
363 | |
|
|
364 | <pre caption="Portage warning about blocked packages (with --pretend)"> |
|
|
365 | [blocks B ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0) |
|
|
366 | </pre> |
|
|
367 | |
|
|
368 | <pre caption="Portage warning about blocked packages (without --pretend)"> |
|
|
369 | !!! Error: the gnome-base/bonobo-activation package conflicts with another package. |
|
|
370 | !!! both can't be installed on the same system together. |
|
|
371 | !!! Please use 'emerge --pretend' to determine blockers. |
|
|
372 | </pre> |
|
|
373 | |
|
|
374 | <p> |
|
|
375 | Ebuilds contain specific fields that inform Portage about its dependencies. |
|
|
376 | There are two possible dependencies: build dependencies, declared in |
|
|
377 | <c>DEPEND</c> and run-time dependencies, declared in <c>RDEPEND</c>. When one of |
|
|
378 | these dependencies explicitly marks a package or virtual as being <e>not</e> |
|
|
379 | compatible, it triggers a blockage. |
|
|
380 | </p> |
|
|
381 | |
|
|
382 | <p> |
|
|
383 | To fix a blockage, you can choose to not install the package or unmerge the |
|
|
384 | conflicting package first. In the given example, you can opt not to install |
|
|
385 | <c>libbonobo</c> or to remove <c>bonobo-activation</c> first. |
|
|
386 | </p> |
|
|
387 | |
|
|
388 | </body> |
|
|
389 | </subsection> |
|
|
390 | <subsection id="masked"> |
| 350 | <title>Masked Packages</title> |
391 | <title>Masked Packages</title> |
| 351 | <body> |
392 | <body> |
| 352 | |
393 | |
|
|
394 | <pre caption="Portage warning about masked packages"> |
|
|
395 | !!! all ebuilds that could satisfy "bootsplash" have been masked. |
|
|
396 | </pre> |
|
|
397 | |
|
|
398 | <pre caption="Portage warning about masked packages - reason"> |
|
|
399 | !!! possible candidates are: |
|
|
400 | |
|
|
401 | - gnome-base/gnome-2.8.0_pre1 (masked by: <i>~x86 keyword</i>) |
|
|
402 | - lm-sensors/lm-sensors-2.8.7 (masked by: <i>-sparc keyword</i>) |
|
|
403 | - sys-libs/glibc-2.3.4.20040808 (masked by: <i>-* keyword</i>) |
|
|
404 | - dev-util/cvsd-1.0.2 (masked by: <i>missing keyword</i>) |
|
|
405 | - media-video/ati-gatos-4.3.0 (masked by: <i>package.mask</i>) |
|
|
406 | - sys-libs/glibc-2.3.2-r11 (masked by: <i>profile</i>) |
|
|
407 | </pre> |
|
|
408 | |
|
|
409 | <p> |
|
|
410 | When you want to install a package that isn't available for your system, you |
|
|
411 | will receive this masking error. You should try installing a different |
|
|
412 | application that is available for your system or wait until the package is put |
|
|
413 | available. There is always a reason why a package is masked: |
|
|
414 | </p> |
|
|
415 | |
|
|
416 | <ul> |
|
|
417 | <li> |
|
|
418 | <b>~arch keyword</b> means that the application is not tested sufficiently |
|
|
419 | to be put in the stable branch. Wait a few days or weeks and try again. |
|
|
420 | </li> |
|
|
421 | <li> |
|
|
422 | <b>-arch keyword</b> or <b>-* keyword</b> means that the application does |
|
|
423 | not work on your architecture. If you believe the package does work file |
|
|
424 | a bug at our <uri link="http://bugs.gentoo.org">bugzilla</uri> website. |
|
|
425 | </li> |
|
|
426 | <li> |
|
|
427 | <b>missing keyword</b> means that the application has not been tested on |
|
|
428 | your architecture yet. Ask the architecture porting team to test the package |
|
|
429 | or test it for them and report your findings on our <uri |
|
|
430 | link="http://bugs.gentoo.org">bugzilla</uri> website. |
|
|
431 | </li> |
|
|
432 | <li> |
|
|
433 | <b>package.mask</b> means that the package has been found corrupt, unstable |
|
|
434 | or worse and has been deliberately marked as do-not-use. |
|
|
435 | </li> |
|
|
436 | <li> |
|
|
437 | <b>profile</b> means that the package has been found not suitable for your |
|
|
438 | profile. The application might break your system if you installed it or is |
|
|
439 | just not compatible with the profile you use. |
|
|
440 | </li> |
|
|
441 | </ul> |
|
|
442 | |
| 353 | </body> |
443 | </body> |
| 354 | </subsection> |
|
|
| 355 | <subsection> |
444 | </subsection> |
| 356 | <title>Blocked Packages</title> |
445 | <subsection id="missingdependencies"> |
|
|
446 | <title>Missing Dependencies</title> |
|
|
447 | <body> |
|
|
448 | |
|
|
449 | <pre caption="Portage warning about missing dependency"> |
|
|
450 | emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4". |
|
|
451 | |
|
|
452 | !!! Problem with ebuild sys-devel/gcc-3.4.2-r2 |
|
|
453 | !!! Possibly a DEPEND/*DEPEND problem. |
|
|
454 | </pre> |
|
|
455 | |
|
|
456 | <p> |
|
|
457 | The application you are trying to install depends on another package that is not |
|
|
458 | available for your system. Please check <uri |
|
|
459 | link="http://bugs.gentoo.org">bugzilla</uri> if the issue is known and if not, |
|
|
460 | please report it. Unless you are mixing branches this should not occur and is |
|
|
461 | therefore a bug. |
|
|
462 | </p> |
|
|
463 | |
| 357 | <body> |
464 | </body> |
|
|
465 | </subsection> |
|
|
466 | <subsection id="ambiguousebuild"> |
|
|
467 | <title>Ambiguous Ebuild Name</title> |
|
|
468 | <body> |
|
|
469 | |
|
|
470 | <pre caption="Portage warning about ambiguous ebuild names"> |
|
|
471 | !!! The short ebuild name "aterm" is ambiguous. Please specify |
|
|
472 | !!! one of the following fully-qualified ebuild names instead: |
|
|
473 | |
|
|
474 | dev-libs/aterm |
|
|
475 | x11-terms/aterm |
|
|
476 | </pre> |
|
|
477 | |
|
|
478 | <p> |
|
|
479 | The application you want to install has a name that corresponds with more than |
|
|
480 | one package. You need to supply the category name as well. Portage will inform |
|
|
481 | you of possible matches to choose from. |
|
|
482 | </p> |
|
|
483 | |
|
|
484 | </body> |
|
|
485 | </subsection> |
|
|
486 | <subsection id="circulardependencies"> |
|
|
487 | <title>Circular Dependencies</title> |
|
|
488 | <body> |
|
|
489 | |
|
|
490 | <pre caption="Portage warning about circular dependencies"> |
|
|
491 | !!! Error: circular dependencies: |
|
|
492 | |
|
|
493 | ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1 |
|
|
494 | ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2 |
|
|
495 | </pre> |
|
|
496 | |
|
|
497 | <p> |
|
|
498 | Two (or more) packages you want to install depend on each other and can |
|
|
499 | therefore not be installed. This is most likely a bug in the Portage tree. |
|
|
500 | Please resync after a while and try again. You can also check <uri |
|
|
501 | link="http://bugs.gentoo.org">bugzilla</uri> if the issue is known and if not, |
|
|
502 | report it. |
|
|
503 | </p> |
|
|
504 | |
|
|
505 | </body> |
|
|
506 | </subsection> |
|
|
507 | <subsection id="fetchfailed"> |
|
|
508 | <title>Fetch failed</title> |
|
|
509 | <body> |
|
|
510 | |
|
|
511 | <pre caption="Portage warning about fetch failed"> |
|
|
512 | !!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing... |
|
|
513 | <comment>(...)</comment> |
|
|
514 | !!! Some fetch errors were encountered. Please see above for details. |
|
|
515 | </pre> |
|
|
516 | |
|
|
517 | <p> |
|
|
518 | Portage was unable to download the sources for the given application and will |
|
|
519 | try to continue installing the other applications (if applicable). This failure |
|
|
520 | can be due to a mirror that has not synchronised correctly or because the ebuild |
|
|
521 | points to an incorrect location. The server where the sources reside can also be |
|
|
522 | down for some reason. |
|
|
523 | </p> |
|
|
524 | |
|
|
525 | <p> |
|
|
526 | Retry after one hour to see if the issue still persists. |
|
|
527 | </p> |
|
|
528 | |
|
|
529 | </body> |
|
|
530 | </subsection> |
|
|
531 | <subsection id="profileprotect"> |
|
|
532 | <title>System Profile Protection</title> |
|
|
533 | <body> |
|
|
534 | |
|
|
535 | <pre caption="Portage warning about profile-protected package"> |
|
|
536 | !!! Trying to unmerge package(s) in system profile. 'sys-apps/portage' |
|
|
537 | !!! This could be damaging to your system. |
|
|
538 | </pre> |
|
|
539 | |
|
|
540 | <p> |
|
|
541 | You have asked to remove a package that is part of your system's core packages. |
|
|
542 | It is listed in your profile as required and should therefore not be removed |
|
|
543 | from the system. |
|
|
544 | </p> |
| 358 | |
545 | |
| 359 | </body> |
546 | </body> |
| 360 | </subsection> |
547 | </subsection> |
| 361 | </section> |
548 | </section> |
| 362 | </sections> |
549 | </sections> |