summaryrefslogtreecommitdiffstats
path: root/chapter_17.xml
blob: eb13319fd199cb71f63f0b6dfd9cf97e20afd735 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<?xml version="1.0"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "/usr/share/xml/docbook/xml-dtd-4.5/docbookx.dtd">

<chapter>
<title>Package Management</title>

<para>
Package management is an essential part of any Linux distribution.
Every piece of software included by Slackware, along with many
third-party tools are distributed as source code that can be compiled,
but compiling all those thousands of different applications and
libraries is tedious and time consuming. That's why many people prefer
to install pre-compiled software packages. In fact, when you installed
Slackware, the <application>setup</application> program primarily
worked by running package management tools on a list of packages. Here
we'll look at the various tools used for handling Slackware packages.
</para>

<section>
<title><application>pkgtool</application></title>

<para>
The simplest way to perform package maintenance tasks is to invoke
<application>pkgtool</application>(8), a menu-driven interface to some of
the other tools.  <application>pkgtool</application> allows you to
install or remove packages as well as view the contents of those
packages and the list of currently installed packages in a
user-friendly ncurses interface.
</para>

<imagedata fileref="img/pkgtool.png" format="PNG"/>

<para>
<application>pkgtool</application> is a convenient and easy way to
perform the most basic tasks, but for more advanced work more flexible
tools are needed.
</para>

</section>

<section>
<title>Installing, Removing, and Upgrading Packages</title>

<para>
While <application>pkgtool</application> scores points for convenience,
<application>installpkg</application>(8) is much more capable of
handling odd tasks, such as quickly installing a single package, 
installing an entire disk set of packages, or scripting an install.
<application>installpkg</application> takes a list of packages to
install, and simply installs them without asking any questions. Like
all Slackware package management tools, it assumes that you know what
you're doing and doesn't pretend to be smarter than you. In its
simplest form, <application>installpkg</application> simply takes a
list of packages to install, and does exactly what you would expect.
</para>

<screen><prompt>darkstar:~# </prompt><userinput>installpkg blackbox-0.70.1-i486-2.txz</userinput>
Verifying package blackbox-0.70.1-i486-2.txz.
Installing package blackbox-0.70.1-i486-2.txz:
PACKAGE DESCRIPTION:
# blackbox (Blackbox window manager)
#
# Blackbox is that fast, light window manager you have been looking for
# without all those annoying library dependencies.
#
# Also included in this package is the bbkeys utility for controlling
# keyboard shortcut commands from within Blackbox.
#
# The Blackbox home page is http://blackboxwm.sourceforge.net
#
Package blackbox-0.70.1-i486-2.txz installed.</screen>

<para>
You can of course install multiple packages at a time, and in fact use
shell wild cards.  The following installs all of the "N" series
packages from a mounted CD-ROM.
</para>

<screen><prompt>darkstar:~# </prompt><userinput>installpkg /mnt/cdrom/slackware/n/*.txz</userinput></screen>

<para>
Removing a package is every bit as easy as installing one. As you might
expect, the command to do this is
<application>removepkg</application>(8). Simply tell it which packages
to remove, and <application>removepkg</application> will check the
contents of the package database and remove all the files and
directories for that package with one caveat. If that file is included
in multiple installed packages, it will be skipped and if a directory
has new files in it, the directory will be left in place. Because of
this, removing packages takes a good while longer than installing them.
</para>

<screen><prompt>darkstar:~# </prompt><userinput>removepkg blackbox-0.70.1-i486-2.txz</userinput>
</screen>

<para>
Finally, upgrading is just as easy with (you guessed it),
<application>upgradepkg</application>(8) which first installs a new
package, then removes whatever files and directories are left-over from
the old package. One important thing to remember is that
<application>upgradepkg</application> doesn't check to see if the
previously installed package has a higher version number than the "new"
package, so it can also be used to downgrade to older versions.
</para>



<screen><prompt>darkstar:~# </prompt><userinput>upgradepkg blackbox-0.70.1-i486-2.txz</userinput>

+==============================================================================
| Upgrading blackbox-0.65.0-x86_64-4 package using
./blackbox-0.70.1-i486-2.txz
+==============================================================================

Pre-installing package blackbox-0.70.1-i486-2...

Removing package
/var/log/packages/blackbox-0.65.0-x86_64-4-upgraded-2010-02-23,16:50:51...
  --> Deleting symlink /usr/share/blackbox/nls/POSIX
  --> Deleting symlink /usr/share/blackbox/nls/US_ASCII
  --> Deleting symlink /usr/share/blackbox/nls/de
  --> Deleting symlink /usr/share/blackbox/nls/en
  --> Deleting symlink /usr/share/blackbox/nls/en_GB
...
Package blackbox-0.65.0-x86_64-4 upgraded with new package
./blackbox-0.70.1-i486-2.txz.</screen>

<para>
All of these tools have useful arguments. For example, the
<arg>--root</arg> to <application>installpkg</application> will install
packages into an arbitrary directory. The <arg>--dry-run</arg> argument
will instruct <application>upgradepkg</application> to simply tell you
what it would attempt without actually making any changes to the
system. For complete details, you should (as always) refer to the man
pages.
</para>

</section>

<section>
<title>Package Compression Formats</title>

<para>
We won't go in depth into the details of package formats, but a few
words should be given here.  In the past, all Slackware packages were
compressed with the <application>gzip</application>(1) compression
utility, which was a good compromise between compression speed and
size.  Recently, new compression schemes have been added and the
package management tools have been upgraded to handle these. Today,
official Slackware packages are compressed with the
<application>xz</application> utility and end with .txz extensions.
Older packages (and many third party packages) still use the .tgz
extension.
</para>

</section>

<section>
<title><application>slackpkg</application></title>

<para>
  The <application>slackpkg</application> is an automated tool for
management of Slackware Linux Packages. It was in /extra for 
the release of slackware-12.1, and since the release of 
slackware-12.2 it is included in the ap/ series of a base 
installation.
</para>
<para>
  For more information see the <application>man</application> pages for
slackpkg(8) and slackpkg.conf(5).
</para>
<para>
Homepage: <ulink url="http://www.slackpkg.org/">http://www.slackpkg.org/</ulink>
</para>

</section>

</chapter>