-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy patha825.html
254 lines (253 loc) · 4.69 KB
/
a825.html
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Related Systems</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="The Haskell Cabal"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Layered Tools"
HREF="a818.html"><LINK
REL="NEXT"
TITLE="Python Distutils"
HREF="x853.html"></HEAD
><BODY
CLASS="APPENDIX"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Haskell Cabal: A Common Architecture for Building Applications and Tools</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="a818.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x853.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="APPENDIX"
><H1
CLASS="APPENDIX"
><A
NAME="AEN825"
>B. Related Systems</A
></H1
><P
>I will try to outline interesting points in a variety of systems
that we can learn from. These systems may be intended for building or
installing packages, or repositories for packages. I am not deeply
familiar with all of the tools here, and would be interested in
hearing more relevant points from someone with more knowledge.
Another weakness of mine is that I don't know much about Microsoft
Windows, so some good examples for Windows systems would be
helpful.</P
><DIV
CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="LIP-APPENDIX-DEBIAN"
>B.1. Debian</A
></H1
><P
>The <A
HREF="http://www.debian.org"
TARGET="_top"
>Debian GNU/Linux system</A
>
is a good example of a <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>binary</I
></SPAN
> distribution
(meaning that packages are distributed in binary, as opposed to source
code form), and its packaging system (<SPAN
CLASS="APPLICATION"
>dpkg</SPAN
>)
is somewhat similar to the more famous <SPAN
CLASS="APPLICATION"
>RPM</SPAN
>.
Debian has several other tools to help the user to install packages,
most notably, <B
CLASS="COMMAND"
>apt</B
>. The Debian toolset is
interesting for several reasons:
<P
></P
><UL
><LI
><P
>It handles dependencies extremely well. A single
command can download and install a package, as well as downloading
and installing all of its dependencies.</P
></LI
><LI
><P
>It handles updates extremely well. One command
(<B
CLASS="COMMAND"
>apt-get update</B
>) checks for new versions of
packages and updates a local database. Another command
(<B
CLASS="COMMAND"
>apt-get dist-upgrade</B
>) downloads and installs all
new versions of installed packages and any new
dependencies.</P
></LI
><LI
><P
>There are standard commands for downloading and
building packages from source. If I'm interested in hacking on a
package, I can run <B
CLASS="COMMAND"
>apt-get source packagename</B
>
which will download and unpack the source code for the package. The
source can then be built with the standard command
<B
CLASS="COMMAND"
>debuild</B
>.</P
></LI
><LI
><P
>The Debian Project maintains a central repository
for packages, and the packaging tools offer support for using
unofficial repositories as well. The central repositories include a
set of servers, the <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>autobuilders</I
></SPAN
>, which compile
uploaded source packages for a variety of hardware architectures
(see below) and make them available as binary packages. As a
packager, I merely upload the source code to my package, and the
autobuilders do the rest.</P
></LI
><LI
><P
>Currently the hardware architectures supported by
Debian are Intel x86, Motorola 68k, Sun SPARC, Alpha, PowerPC, ARM,
MIPS, HP PA-RISC, IA-64, S/390. Debian also runs on non-Linux
systems, including GNU/Hurd, GNU/NetBSD, and GNU/FreeBSD. The
package management tools also run on MacOS X under the name of the
<SPAN
CLASS="APPLICATION"
>Fink</SPAN
> project.</P
></LI
></UL
></P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="a818.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x853.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Layered Tools</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
> </TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Python Distutils</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>