blob: ad5e37e9df5c5e7b21b42dd4c7d02f5816036189 (
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
|
% on the following slides, include icon in the left sidebar
\def\lximg{/usr/share/lx/icons/fueller.png}
\input{configpres}
\title{Debian Package Management}
\maketitle
% stop displaying 'fueller.png' on the following slides
\def\lximg{none}
\subsection{Debian Package Management}
\subsubsection{Introduction}
\begin{frame}
\frametitle{Package Management}
\begin{itemize}
\item Dependencies
\item Updates
\item Licensing
\item Managing Repositories
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Debian Package Management}
\begin{itemize}
\item Binary packages (.deb)
\item dpkg is the base software of the Debian Package Management System
\end{itemize}
\end{frame}
\subsubsection{dpkg}
\begin{frame}[fragile]
\frametitle{Using dpkg}
\begin{verbatim}
# Install a package
dpkg -i packagename.deb
# Get a list of the installed packages
dpkg -l
# Get a list of the installed packages
# which match a specific pattern
dpkg -l zlib*
# remove a package
dpkg -r packagename
# remove a package
# (and it's configuration files)
dpkg -P packagename
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{Using dpkg}
\begin{verbatim}
# Figure out to which package a
# file belongs do
dpkg -S /bin/df
# Get a list of files
# which will be installed
# with a package
dpkg -L coreutils
# Get sone informations about an archive
dpkg -I packagename.deb
# Reconfigure a package
dpkg-reconfigure packagename
\end{verbatim}
\end{frame}
\subsubsection{APT}
\begin{frame}
\frametitle{The \textbf{A}dvanced \textbf{P}ackaging \textbf{T}oolkit}
\begin{itemize}
\item DPKG is the mechanism to install the package itself. APT will keep track of
the dependencies and so on...
\item Consists of several tools:
\item apt-get
\item apt-cache
\item ...
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{The \textbf{A}dvanced \textbf{P}ackaging \textbf{T}oolkit}
Repository list is kept in:
\begin{verbatim}
/etc/apt/sources.list
\end{verbatim}
The repository list looks like:
\begin{verbatim}
deb http://debian.tu-bs.de/debian lenny \
main contrib non-free
deb-src http://debian.tu-bs.de/debian lenny \
main contrib non-free
[...]
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{The \textbf{A}dvanced \textbf{P}ackaging \textbf{T}oolkit}
There are several frontends for APT. The most important ones are:
\begin{itemize}
\item aptitude
\item synaptic
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{apt-get}
\begin{verbatim}
# Update the package list
apt-get update
# Upgrade all packages on your system
apt-get upgrade
# Upgrade packages on your system AND
# and resolves any new dependencies
apt-get dist-upgrade
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{apt-get}
\begin{verbatim}
# Install a package
apt-get install packagename
# Remove a package
apt-get remove packagename
# Remove a package
# including its configuration files
apt-get --purge remove packagename
# Clean the local apt cache
apt-get clean
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{apt-cache}
\begin{verbatim}
# Looking for a package
apt-cache search minicom
# Show dependencies
apt-cache depends minicom
# Show a user readable record
apt-cache show minicom
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{apt-get behind a proxy}
/etc/apt/apt.conf.d/02proxy:
\begin{verbatim}
Acquire::http::Proxy "http://proxy:8080";
\end{verbatim}
with user:
\begin{verbatim}
Acquire::http::Proxy \
"http://user@proxy:8080";
\end{verbatim}
with user and password:
\begin{verbatim}
Acquire::http::Proxy \
"http://user:pass@proxy:8080";
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{aptitude}
Aptitude has an \textbf{advanced dependency handling} and a graphical front-end. The
syntax is quite similar to apt-get and apt-cache:
\begin{verbatim}
# apt-get install minicom
aptitude install minicom
# apt-cache search minicom
aptitude search minicom
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{apt-get vs. aptitude ;-)}
apt-get has super cow powers; aptitude does not!! ;-)
\begin{verbatim}
$ aptitude moo
There are no Easter Eggs in this program.
$ apt-get moo
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
...."Have you mooed today?"...
\end{verbatim}
\end{frame}
\subsubsection{deb packages}
\begin{frame}
\frametitle{The .deb file format}
A Debian archive contains three files:
\begin{itemize}
\item debian-binary: Version of the archive formate
\item control.tar.gz: GZIPPed Tarball containing the archive's control files
\item data.tar.gz: GZIPPed Tarball containing the archives data files
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Creating .deb packages}
Directory structure:
\begin{verbatim}
hello_pkt/
debian/
changelog
control
copyright
...
bin/
hello
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{Creating .deb packages}
\begin{verbatim}
# hello_pkt/debian/control
Package: hello
Version: 0.0.1
Section: misc
Priority: optional
Architecture: i386
Depends: libc6 (>= 2.2.4-4)
Maintainer: Max Mustermann <m@mustermail.de>
Description: Simple hello world program
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{Creating .deb packages}
\begin{verbatim}
# Building the package
dpkg-deb -b hello_pkt
# dpkg -I hello_pkt.deb
[...]
Version: 0.0.1
Section: misc
Priority: optional
Architecture: i386
Depends: libc6 (>= 2.2.4-4)
Maintainer: Max Mustermann <m@mustermail.de>
Description: Simple hello world program
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
\frametitle{Creating .deb packages}
\begin{verbatim}
$ ar -tv hello_pkt.deb
rw-r--r-- 0/0 [...] 2011 debian-binary
rw-r--r-- 0/0 [...] 2011 control.tar.gz
rw-r--r-- 0/0 [...] 2011 data.tar.gz
\end{verbatim}
\end{frame}
\subsubsection{debhelper}
\begin{frame}[fragile]
\frametitle{dh\_make}
dh\_make is a helper to create skeletons for the contents in the DEBIAN/
directory:
\begin{verbatim}
$ mkdir hello-0.0.1
$ cd hello-0.0.1
$ dh_make -c gpl2 -n -s -e m@mustermann.de
\end{verbatim}
\end{frame}
\begin{frame}
\begin{thebibliography}{1}
\bibitem{debian} http://www.debian.org
\end{thebibliography}
\end{frame}
\input{tailpres}
|