├── README.md
├── scraper.py
├── scraper_Pandas.ipynb
└── selector.py
/README.md:
--------------------------------------------------------------------------------
1 | # WebscrapingDatabases
2 | a database scraper created with mechanical soup and sqlite
3 |
4 | author: Mariya Sha
5 |
6 | ### Watch on YouTube:
7 | This repository was created to support a YouTube tutorial:
8 |
9 | https://youtu.be/MkGQmZoMuRM
10 |
11 |
12 |
13 | 
14 |
15 | ### File Info:
16 | scraper.py
17 |
18 | is designed to webscrape a table from Wikipedia and store it in an SQlite database.
19 |
20 |
21 | selector.py
22 |
23 | is designed to test wether our database from scraper.py was properly created.
24 |
25 |
--------------------------------------------------------------------------------
/scraper.py:
--------------------------------------------------------------------------------
1 | import mechanicalsoup
2 | import pandas as pd
3 | import sqlite3
4 |
5 | # create browser object & open URL
6 | browser = mechanicalsoup.StatefulBrowser()
7 | browser.open("https://en.wikipedia.org/wiki/Comparison_of_Linux_distributions")
8 |
9 | # extract all table headers (entire "Distribution" column)
10 | th = browser.page.find_all("th", attrs={"class": "table-rh"})
11 | # tidy up and slice off non-table elements
12 | distribution = [value.text.replace("\n", "") for value in th]
13 | distribution = distribution[:95]
14 |
15 | # extract table data (the rest of the table)
16 | td = browser.page.find_all("td")
17 | # tidy up and slice off non-table elements
18 | columns = [value.text.replace("\n", "") for value in td]
19 | columns = columns[6:1051]
20 |
21 | column_names = ["Founder",
22 | "Maintainer",
23 | "Initial_Release_Year",
24 | "Current_Stable_Version",
25 | "Security_Updates",
26 | "Release_Date",
27 | "System_Distribution_Commitment",
28 | "Forked_From",
29 | "Target_Audience",
30 | "Cost",
31 | "Status"]
32 |
33 | dictionary = {"Distribution": distribution}
34 |
35 | # insert column names and their data into a dictionary
36 | for idx, key in enumerate(column_names):
37 | dictionary[key] = columns[idx:][::11]
38 |
39 | # convert dictionary to data frame
40 | df = pd.DataFrame(data = dictionary)
41 |
42 | # create new database and cursor
43 | connection = sqlite3.connect("linux_distro.db")
44 | cursor = connection.cursor()
45 |
46 | # create database table and insert all data frame rows
47 | cursor.execute("create table linux (Distribution, " + ",".join(column_names)+ ")")
48 | for i in range(len(df)):
49 | cursor.execute("insert into linux values (?,?,?,?,?,?,?,?,?,?,?,?)", df.iloc[i])
50 |
51 | # PERMANENTLY save inserted data in "linux_distro.db"
52 | connection.commit()
53 |
54 | connection.close()
55 |
56 |
--------------------------------------------------------------------------------
/scraper_Pandas.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 5,
6 | "metadata": {},
7 | "outputs": [
8 | {
9 | "name": "stdout",
10 | "output_type": "stream",
11 | "text": [
12 | "*********************\n",
13 | "0\n",
14 | " 0 1\n",
15 | "0 NaN This article has multiple issues. Please help ...\n",
16 | "1 NaN This article needs to be updated. The reason g...\n",
17 | "2 NaN This article may require cleanup to meet Wikip...\n",
18 | "*********************\n",
19 | "1\n",
20 | " 0 1\n",
21 | "0 NaN This article needs to be updated. The reason g...\n",
22 | "*********************\n",
23 | "2\n",
24 | " 0 1\n",
25 | "0 NaN This article may require cleanup to meet Wikip...\n",
26 | "*********************\n",
27 | "3\n",
28 | " Distribution Founder Maintainer \\\n",
29 | "0 AlmaLinux AlmaLinux Foundation AlmaLinux Foundation \n",
30 | "1 Alpine Linux Alpine Linux Team Alpine Linux Team \n",
31 | "2 ALT Linux ALT Linux Team ALT Linux Team, ALT Linux LLC \n",
32 | "3 antiX Anticapitalista Anticapitalista \n",
33 | "4 ArchBang Willensky Aristide Stan McLaren \n",
34 | ".. ... ... ... \n",
35 | "92 Xandros Xandros Incorporated Xandros Incorporated \n",
36 | "93 Zentyal eBox Technologies eBox Technologies \n",
37 | "94 Zenwalk Jean-Philippe Guillemin dev team \n",
38 | "95 Zorin OS Zorin Group Zorin Group \n",
39 | "96 Distribution Founder Maintainer \n",
40 | "\n",
41 | " Initial release year Current stable version Security updates (years) \\\n",
42 | "0 2021 8.4 10 years[2] \n",
43 | "1 2006 3.14.1[3] ? \n",
44 | "2 2001 10.0[4] ? \n",
45 | "3 2007 19.4[5] ? \n",
46 | "4 2011 Rolling Rolling \n",
47 | ".. ... ... ... \n",
48 | "92 2001 ? ? \n",
49 | "93 2005 6.2[79] ? \n",
50 | "94 2004 Rolling[80] ? \n",
51 | "95 2009 OS 15.3[81] ? \n",
52 | "96 Initial release year Current stable version Security updates (years) \n",
53 | "\n",
54 | " Release date System distribution commitment \\\n",
55 | "0 2021-05-26 X \n",
56 | "1 2021-08-04 X \n",
57 | "2 2021-12-16 X \n",
58 | "3 2021-05-21 X \n",
59 | "4 ? X \n",
60 | ".. ... ... \n",
61 | "92 2007-07-26 X \n",
62 | "93 2020-06-04 X \n",
63 | "94 2020-12-10 X \n",
64 | "95 2020-10-08 X \n",
65 | "96 Release date System distribution commitment \n",
66 | "\n",
67 | " Forked from Target audience \\\n",
68 | "0 Red Hat Enterprise Linux (RHEL) server, workstation \n",
69 | "1 LEAF Project security, lightweight, general \n",
70 | "2 Mandrake Linux general, school \n",
71 | "3 Debian, MEPIS old computers \n",
72 | "4 Arch Linux (UKM Edition) general \n",
73 | ".. ... ... \n",
74 | "92 Corel Linux ? \n",
75 | "93 Debian, Ubuntu small business server \n",
76 | "94 Slackware general \n",
77 | "95 Ubuntu general, desktop \n",
78 | "96 Forked from Target audience \n",
79 | "\n",
80 | " Cost Status \n",
81 | "0 None Active \n",
82 | "1 None Active \n",
83 | "2 None Active \n",
84 | "3 None Active \n",
85 | "4 None Active \n",
86 | ".. ... ... \n",
87 | "92 Commercial Inactive \n",
88 | "93 Some editions are free of charge ? \n",
89 | "94 None Active \n",
90 | "95 Zorin OS Lite & Core are free, while Business ... Active \n",
91 | "96 Cost Status \n",
92 | "\n",
93 | "[97 rows x 12 columns]\n",
94 | "*********************\n",
95 | "4\n",
96 | " Distribution Default Linux kernel Default file system \\\n",
97 | "0 Alpine Linux Binary blobs ext4 \n",
98 | "1 ALT Linux Binary blobs ext3 \n",
99 | "2 Arch Linux Binary blobs[83] none[84] \n",
100 | "3 BLAG Linux-libre ext3 \n",
101 | "4 Bodhi Linux Binary blobs ext4 \n",
102 | ".. ... ... ... \n",
103 | "65 Webconverger Binary blobs gitfs \n",
104 | "66 XBMC Live Binary blobs ext3 \n",
105 | "67 Zentyal Binary blobs ext4 \n",
106 | "68 Zenwalk Binary blobs ext4 \n",
107 | "69 Distribution Default Linux kernel Default file system \n",
108 | "\n",
109 | " Default init system \\\n",
110 | "0 openrc \n",
111 | "1 systemd \n",
112 | "2 systemd \n",
113 | "3 sysvinit \n",
114 | "4 systemd \n",
115 | ".. ... \n",
116 | "65 sysvinit \n",
117 | "66 systemd \n",
118 | "67 systemd \n",
119 | "68 sysvinit \n",
120 | "69 Default init system \n",
121 | "\n",
122 | " Install-time desktop environment or window manager selection \\\n",
123 | "0 none \n",
124 | "1 KDE Plasma Workspaces, Xfce \n",
125 | "2 Awesome, Budgie, Cinnamon, CuteFish, Deepin, E... \n",
126 | "3 GNOME \n",
127 | "4 Moksha (Enlightenment fork) \n",
128 | ".. ... \n",
129 | "65 dwm enforcing a Browser-only interface \n",
130 | "66 XBMC Media Center \n",
131 | "67 LXDE \n",
132 | "68 Xfce \n",
133 | "69 Install-time desktop environment or window man... \n",
134 | "\n",
135 | " Reproducible builds \n",
136 | "0 In progress[82] \n",
137 | "1 No \n",
138 | "2 In progress[86][87] \n",
139 | "3 No \n",
140 | "4 No \n",
141 | ".. ... \n",
142 | "65 No \n",
143 | "66 No \n",
144 | "67 No \n",
145 | "68 No \n",
146 | "69 Reproducible builds \n",
147 | "\n",
148 | "[70 rows x 6 columns]\n",
149 | "*********************\n",
150 | "5\n",
151 | " Distribution \\\n",
152 | "0 Alpine Linux \n",
153 | "1 Arch Linux \n",
154 | "2 BackTrack \n",
155 | "3 BLAG \n",
156 | "4 Bodhi Linux \n",
157 | "5 BOSS Linux \n",
158 | "6 CentOS \n",
159 | "7 Chakra \n",
160 | "8 Clear Linux OS \n",
161 | "9 CRUX \n",
162 | "10 Debian[132] \n",
163 | "11 Devuan \n",
164 | "12 Dragora GNU/Linux-Libre \n",
165 | "13 dyne:bolic \n",
166 | "14 Fedora[137] \n",
167 | "15 Finnix \n",
168 | "16 Gentoo[143] \n",
169 | "17 gNewSense \n",
170 | "18 Guix System[149] \n",
171 | "19 Hyperbola GNU/Linux-libre \n",
172 | "20 Kali Linux \n",
173 | "21 LibreCMC \n",
174 | "22 Manjaro Linux \n",
175 | "23 MEPIS \n",
176 | "24 Musix GNU+Linux \n",
177 | "25 OpenELEC \n",
178 | "26 openSUSE Leap \n",
179 | "27 openSUSE Tumbleweed \n",
180 | "28 OpenWrt[155] \n",
181 | "29 Oracle Linux[156] \n",
182 | "30 Parabola GNU/Linux-libre \n",
183 | "31 Red Flag Linux \n",
184 | "32 Red Hat Linux[165] \n",
185 | "33 Red Hat Enterprise Linux[167] \n",
186 | "34 Sabayon Linux \n",
187 | "35 Scientific Linux \n",
188 | "36 SHR \n",
189 | "37 Slackware \n",
190 | "38 Solus \n",
191 | "39 Source Mage GNU/Linux \n",
192 | "40 SUSE Linux Enterprise Server[175] \n",
193 | "41 Trisquel GNU/Linux \n",
194 | "42 TurnKey GNU/Linux \n",
195 | "43 Ubuntu/Kubuntu/Xubuntu/Lubuntu \n",
196 | "44 Ututo \n",
197 | "45 Void Linux \n",
198 | "46 XBMCbuntu \n",
199 | "47 Yellow Dog Linux \n",
200 | "48 Distribution \n",
201 | "\n",
202 | " x86 \\\n",
203 | "0 Yes \n",
204 | "1 Unofficial[121]Official discontinued 2017-11-0... \n",
205 | "2 Discontinued from BackTrack 5 and superseded b... \n",
206 | "3 Yes \n",
207 | "4 Yes \n",
208 | "5 Yes \n",
209 | "6 AltArch \n",
210 | "7 No \n",
211 | "8 ? \n",
212 | "9 Yes \n",
213 | "10 Yes \n",
214 | "11 Yes \n",
215 | "12 Yes \n",
216 | "13 Yes \n",
217 | "14 Discontinued from Fedora 30 \n",
218 | "15 Yes \n",
219 | "16 Yes \n",
220 | "17 Yes \n",
221 | "18 Yes \n",
222 | "19 Yes \n",
223 | "20 Yes \n",
224 | "21 No \n",
225 | "22 YesUnofficial[153] \n",
226 | "23 Yes \n",
227 | "24 Yes \n",
228 | "25 Yes \n",
229 | "26 No \n",
230 | "27 Yes \n",
231 | "28 Yes \n",
232 | "29 Yes \n",
233 | "30 Yes \n",
234 | "31 Discontinued8.0[163] \n",
235 | "32 Discontinued9.0 \n",
236 | "33 Discontinued2.1-6[168] \n",
237 | "34 Discontinued \n",
238 | "35 Yes \n",
239 | "36 No \n",
240 | "37 Yes \n",
241 | "38 No \n",
242 | "39 Yes \n",
243 | "40 Yes \n",
244 | "41 Yes \n",
245 | "42 Selected ISOsavailable \n",
246 | "43 Discontinued from Ubuntu 20.04 \n",
247 | "44 Yes \n",
248 | "45 Yes \n",
249 | "46 Yes \n",
250 | "47 No \n",
251 | "48 x86 \n",
252 | "\n",
253 | " x86-64 \\\n",
254 | "0 Yes \n",
255 | "1 Yes \n",
256 | "2 Discontinued from BackTrack 5 and superseded b... \n",
257 | "3 Yes \n",
258 | "4 Yes \n",
259 | "5 Yes \n",
260 | "6 Yes \n",
261 | "7 Yes \n",
262 | "8 Yes \n",
263 | "9 Yes \n",
264 | "10 Yes4.0+ \n",
265 | "11 Yes \n",
266 | "12 Yes \n",
267 | "13 No \n",
268 | "14 Yes \n",
269 | "15 Yes \n",
270 | "16 Yes \n",
271 | "17 Yes \n",
272 | "18 Yes \n",
273 | "19 Yes \n",
274 | "20 Yes \n",
275 | "21 No \n",
276 | "22 Yes \n",
277 | "23 Yes \n",
278 | "24 No \n",
279 | "25 Yes \n",
280 | "26 Yes \n",
281 | "27 Yes \n",
282 | "28 Yes \n",
283 | "29 Yes \n",
284 | "30 Yes \n",
285 | "31 Discontinued8.0[163] \n",
286 | "32 No \n",
287 | "33 Yes3+ \n",
288 | "34 Yes \n",
289 | "35 Yes \n",
290 | "36 No \n",
291 | "37 Yes \n",
292 | "38 Yes \n",
293 | "39 Yes \n",
294 | "40 Yes \n",
295 | "41 Yes \n",
296 | "42 Yes \n",
297 | "43 Yes \n",
298 | "44 Yes \n",
299 | "45 Yes \n",
300 | "46 No \n",
301 | "47 No \n",
302 | "48 x86-64 \n",
303 | "\n",
304 | " arm \\\n",
305 | "0 Yes \n",
306 | "1 Unofficial[123] \n",
307 | "2 Discontinued from BackTrack 5 and superseded b... \n",
308 | "3 No \n",
309 | "4 Discontinued2013-10-23[126] \n",
310 | "5 ? \n",
311 | "6 AltArch \n",
312 | "7 ? \n",
313 | "8 ? \n",
314 | "9 No \n",
315 | "10 Yes2.2+ \n",
316 | "11 Yes \n",
317 | "12 No \n",
318 | "13 No \n",
319 | "14 Yes[138] \n",
320 | "15 No \n",
321 | "16 Yes[144] \n",
322 | "17 No \n",
323 | "18 limited support for armhf 32-bit and aarch64 6... \n",
324 | "19 No \n",
325 | "20 Yes \n",
326 | "21 No \n",
327 | "22 Yes[154] \n",
328 | "23 Yes \n",
329 | "24 No \n",
330 | "25 Yes \n",
331 | "26 v7 64 \n",
332 | "27 v6 v7 64 \n",
333 | "28 Yes \n",
334 | "29 No \n",
335 | "30 Yes, ARMv7[158][159] \n",
336 | "31 No \n",
337 | "32 No \n",
338 | "33 Yes[169] \n",
339 | "34 No \n",
340 | "35 No \n",
341 | "36 Yes \n",
342 | "37 Yes \n",
343 | "38 No \n",
344 | "39 No \n",
345 | "40 AArch64 only[176] \n",
346 | "41 No \n",
347 | "42 No - but under development by community \n",
348 | "43 Yes, including 64-bit ARMv8-A \n",
349 | "44 No \n",
350 | "45 Yes \n",
351 | "46 Yes \n",
352 | "47 No \n",
353 | "48 arm \n",
354 | "\n",
355 | " ia64 ppc[116] \\\n",
356 | "0 No No \n",
357 | "1 No Discontinued unofficial port \n",
358 | "2 No No \n",
359 | "3 No No \n",
360 | "4 No No \n",
361 | "5 No Yes \n",
362 | "6 Discontinued3.5-3.84.1-4.7[127] Beta, Discontinued4.0 \n",
363 | "7 No No \n",
364 | "8 ? No \n",
365 | "9 No No \n",
366 | "10 Discontinued3.0-7.0[133] Discontinued2.2-8 \n",
367 | "11 No No \n",
368 | "12 No No \n",
369 | "13 No No \n",
370 | "14 Discontinued from Fedora 9[139] Discontinued from Fedora 17 \n",
371 | "15 No Yes \n",
372 | "16 Yes Yes \n",
373 | "17 No No \n",
374 | "18 No No \n",
375 | "19 No No \n",
376 | "20 No No \n",
377 | "21 No No \n",
378 | "22 No No \n",
379 | "23 No No \n",
380 | "24 No No \n",
381 | "25 No No \n",
382 | "26 No No \n",
383 | "27 No No \n",
384 | "28 No Yes \n",
385 | "29 Discontinued5[157] No \n",
386 | "30 No No \n",
387 | "31 Discontinued3[164] No \n",
388 | "32 Discontinued7.1-7.2 Test release5.1[166] \n",
389 | "33 Discontinued2.1-5[170] Yes3+ \n",
390 | "34 No No \n",
391 | "35 Discontinued3-4 No \n",
392 | "36 No No \n",
393 | "37 No No \n",
394 | "38 No No \n",
395 | "39 No Yes \n",
396 | "40 Yes Yes \n",
397 | "41 No No \n",
398 | "42 No No \n",
399 | "43 No Yes \n",
400 | "44 No No \n",
401 | "45 No Unofficial[178] \n",
402 | "46 No No \n",
403 | "47 No Yes \n",
404 | "48 ia64 ppc \n",
405 | "\n",
406 | " ppc64 sparc32 \\\n",
407 | "0 Yes No \n",
408 | "1 No No \n",
409 | "2 No No \n",
410 | "3 No No \n",
411 | "4 No No \n",
412 | "5 Yes No \n",
413 | "6 AltArch Beta4.2[127][128] \n",
414 | "7 No No \n",
415 | "8 No No \n",
416 | "9 No No \n",
417 | "10 Yes Discontinued2.1-4.0[134] \n",
418 | "11 No No \n",
419 | "12 No No \n",
420 | "13 No No \n",
421 | "14 Yes No \n",
422 | "15 Yes No \n",
423 | "16 Yes Yes \n",
424 | "17 No No \n",
425 | "18 No No \n",
426 | "19 In progress[151] No \n",
427 | "20 No No \n",
428 | "21 No No \n",
429 | "22 No No \n",
430 | "23 No No \n",
431 | "24 No No \n",
432 | "25 No No \n",
433 | "26 ppc64le No \n",
434 | "27 Yes No \n",
435 | "28 No No \n",
436 | "29 No No \n",
437 | "30 Test release[160] No \n",
438 | "31 Discontinued3[164] No \n",
439 | "32 No Discontinued4.0-4.25.1-6.2 \n",
440 | "33 Yes3+ No \n",
441 | "34 No No \n",
442 | "35 No No \n",
443 | "36 No No \n",
444 | "37 No Discontinued?[172] \n",
445 | "38 No No \n",
446 | "39 No No \n",
447 | "40 Yes No \n",
448 | "41 No No \n",
449 | "42 No No \n",
450 | "43 Yes No \n",
451 | "44 No No \n",
452 | "45 Unofficial[178] No \n",
453 | "46 No No \n",
454 | "47 Yes No \n",
455 | "48 ppc64 sparc32 \n",
456 | "\n",
457 | " sparc64 hppa[117] \\\n",
458 | "0 No No \n",
459 | "1 No No \n",
460 | "2 No No \n",
461 | "3 No No \n",
462 | "4 No No \n",
463 | "5 No No \n",
464 | "6 No No \n",
465 | "7 No No \n",
466 | "8 No No \n",
467 | "9 No No \n",
468 | "10 Discontinued-7[135] Discontinued3.0-5.0 \n",
469 | "11 No No \n",
470 | "12 No No \n",
471 | "13 No No \n",
472 | "14 Inactive from Fedora 12[140] No \n",
473 | "15 No No \n",
474 | "16 Yes Yes \n",
475 | "17 No No \n",
476 | "18 No No \n",
477 | "19 No No \n",
478 | "20 No No \n",
479 | "21 No No \n",
480 | "22 No No \n",
481 | "23 No No \n",
482 | "24 No No \n",
483 | "25 No No \n",
484 | "26 No No \n",
485 | "27 No No \n",
486 | "28 No No \n",
487 | "29 No No \n",
488 | "30 No No \n",
489 | "31 No No \n",
490 | "32 Test release5.1[166] No \n",
491 | "33 No No \n",
492 | "34 No No \n",
493 | "35 No No \n",
494 | "36 No No \n",
495 | "37 No No \n",
496 | "38 No No \n",
497 | "39 No No \n",
498 | "40 No No \n",
499 | "41 No No \n",
500 | "42 No No \n",
501 | "43 No No \n",
502 | "44 No No \n",
503 | "45 No No \n",
504 | "46 No No \n",
505 | "47 No No \n",
506 | "48 sparc64 hppa \n",
507 | "\n",
508 | " loongson mips[118] \\\n",
509 | "0 No No \n",
510 | "1 Discontinued. Unofficial port[124] No \n",
511 | "2 No No \n",
512 | "3 No No \n",
513 | "4 No No \n",
514 | "5 No No \n",
515 | "6 No No \n",
516 | "7 No No \n",
517 | "8 No No \n",
518 | "9 No No \n",
519 | "10 Yes Yes3.0+ \n",
520 | "11 No No \n",
521 | "12 No No \n",
522 | "13 No No \n",
523 | "14 In progress Inactive from Fedora 13[141] \n",
524 | "15 No No \n",
525 | "16 Yes[145] Yes[146][147] \n",
526 | "17 Yes Yes \n",
527 | "18 No No \n",
528 | "19 No No \n",
529 | "20 No No \n",
530 | "21 No Yes XBurst \n",
531 | "22 No No \n",
532 | "23 No No \n",
533 | "24 No No \n",
534 | "25 No No \n",
535 | "26 No No \n",
536 | "27 No No \n",
537 | "28 No Yes \n",
538 | "29 No No \n",
539 | "30 Discontinued[161] Discontinued[161] \n",
540 | "31 No No \n",
541 | "32 No Test release5.1[166] \n",
542 | "33 No No \n",
543 | "34 No No \n",
544 | "35 No No \n",
545 | "36 No No \n",
546 | "37 No No \n",
547 | "38 No No \n",
548 | "39 ? No \n",
549 | "40 No No \n",
550 | "41 No No \n",
551 | "42 No No \n",
552 | "43 No No \n",
553 | "44 In progress No \n",
554 | "45 No No \n",
555 | "46 No No \n",
556 | "47 No No \n",
557 | "48 loongson mips \n",
558 | "\n",
559 | " sh s390 \\\n",
560 | "0 No No \n",
561 | "1 No No \n",
562 | "2 No No \n",
563 | "3 No No \n",
564 | "4 No No \n",
565 | "5 No No \n",
566 | "6 No Discontinued3.5-3.84.1-4.7[127][129] \n",
567 | "7 No No \n",
568 | "8 No No \n",
569 | "9 No No \n",
570 | "10 In progress Discontinued3.0-7 \n",
571 | "11 No No \n",
572 | "12 No No \n",
573 | "13 No No \n",
574 | "14 No No \n",
575 | "15 No No \n",
576 | "16 Yes Yes \n",
577 | "17 No No \n",
578 | "18 No No \n",
579 | "19 No No \n",
580 | "20 No No \n",
581 | "21 No No \n",
582 | "22 No No \n",
583 | "23 No No \n",
584 | "24 No No \n",
585 | "25 No No \n",
586 | "26 No No \n",
587 | "27 No No \n",
588 | "28 Yes No \n",
589 | "29 No No \n",
590 | "30 No No \n",
591 | "31 No No \n",
592 | "32 No Discontinued7.2 \n",
593 | "33 No Discontinued3-4[171] \n",
594 | "34 No No \n",
595 | "35 No No \n",
596 | "36 No No \n",
597 | "37 No Discontinued?[173] \n",
598 | "38 No No \n",
599 | "39 No No \n",
600 | "40 No No \n",
601 | "41 No No \n",
602 | "42 No No \n",
603 | "43 No No \n",
604 | "44 No No \n",
605 | "45 No No \n",
606 | "46 No No \n",
607 | "47 No No \n",
608 | "48 sh s390 \n",
609 | "\n",
610 | " s390x alpha[119] \\\n",
611 | "0 Yes No \n",
612 | "1 No No \n",
613 | "2 No No \n",
614 | "3 No No \n",
615 | "4 No No \n",
616 | "5 No No \n",
617 | "6 Discontinued3.5-3.84.1-4.7[127][129] Discontinued4.2-4.3[127][130][131] \n",
618 | "7 No No \n",
619 | "8 No No \n",
620 | "9 No No \n",
621 | "10 Yes7+ Discontinued2.1-5.0 \n",
622 | "11 No No \n",
623 | "12 No No \n",
624 | "13 No No \n",
625 | "14 Yes No \n",
626 | "15 No No \n",
627 | "16 Yes Yes \n",
628 | "17 No No \n",
629 | "18 No No \n",
630 | "19 No No \n",
631 | "20 No No \n",
632 | "21 No No \n",
633 | "22 No No \n",
634 | "23 No No \n",
635 | "24 No No \n",
636 | "25 No No \n",
637 | "26 No No \n",
638 | "27 Yes No \n",
639 | "28 No No \n",
640 | "29 No No \n",
641 | "30 No No \n",
642 | "31 No No \n",
643 | "32 Yes Discontinued2.1-7.1 \n",
644 | "33 Yes3+ No \n",
645 | "34 No No \n",
646 | "35 No No \n",
647 | "36 No No \n",
648 | "37 Discontinued?[173] Discontinued8.1[174] \n",
649 | "38 No No \n",
650 | "39 No No \n",
651 | "40 Yes No \n",
652 | "41 No No \n",
653 | "42 No No \n",
654 | "43 Ubuntu only, 16.04+[177] No \n",
655 | "44 No No \n",
656 | "45 No No \n",
657 | "46 No No \n",
658 | "47 No No \n",
659 | "48 s390x alpha \n",
660 | "\n",
661 | " m68k[120] riscv \n",
662 | "0 No No \n",
663 | "1 No No \n",
664 | "2 No No \n",
665 | "3 No No \n",
666 | "4 No No \n",
667 | "5 No No \n",
668 | "6 No No \n",
669 | "7 No No \n",
670 | "8 No No \n",
671 | "9 No No \n",
672 | "10 Discontinued2.0-3.1 In progress[136] \n",
673 | "11 No No \n",
674 | "12 No No \n",
675 | "13 No No \n",
676 | "14 No In progress[142] \n",
677 | "15 No No \n",
678 | "16 Yes Test release[148] \n",
679 | "17 No No \n",
680 | "18 No In progress[150] \n",
681 | "19 No In progress[152] \n",
682 | "20 No No \n",
683 | "21 No No \n",
684 | "22 No No \n",
685 | "23 No No \n",
686 | "24 No No \n",
687 | "25 No No \n",
688 | "26 No No \n",
689 | "27 No RV64G \n",
690 | "28 No No \n",
691 | "29 No No \n",
692 | "30 No Test release[162] \n",
693 | "31 No No \n",
694 | "32 Test release5.1[166] No \n",
695 | "33 No No \n",
696 | "34 No No \n",
697 | "35 No No \n",
698 | "36 No No \n",
699 | "37 No No \n",
700 | "38 No No \n",
701 | "39 No No \n",
702 | "40 No No \n",
703 | "41 No No \n",
704 | "42 No No \n",
705 | "43 No No \n",
706 | "44 No No \n",
707 | "45 No No \n",
708 | "46 No No \n",
709 | "47 No No \n",
710 | "48 m68k riscv \n",
711 | "*********************\n",
712 | "6\n",
713 | " Distribution Free software repositories \\\n",
714 | "0 Alpine Linux Free, and nonfree \n",
715 | "1 ALT Linux Free, and nonfree \n",
716 | "2 Arch Linux Free, and nonfree \n",
717 | "3 BLAG Free only \n",
718 | "4 Bodhi Linux Free, and nonfree \n",
719 | "5 CentOS Free, and nonfree \n",
720 | "6 Chakra Free, and nonfree \n",
721 | "7 ClearOS Free, and nonfree \n",
722 | "8 Clear Linux OS ? \n",
723 | "9 CrunchBang Linux Free, and nonfree \n",
724 | "10 Debian Free, and nonfree \n",
725 | "11 Devuan Free, and nonfree \n",
726 | "12 Dragora GNU/Linux-Libre Free only \n",
727 | "13 dyne:bolic Free only \n",
728 | "14 Fedora Free, and nonfree \n",
729 | "15 Gentoo Free, and nonfree \n",
730 | "16 gNewSense Free only \n",
731 | "17 Guix System Free only \n",
732 | "18 Hyperbola GNU/Linux-libre Free only \n",
733 | "19 Knoppix Free, and nonfree \n",
734 | "20 LibreCMC Free only \n",
735 | "21 Linux Mint Free, and nonfree \n",
736 | "22 Mageia Free, and nonfree \n",
737 | "23 Mandriva Linux Free, and nonfree \n",
738 | "24 Manjaro Linux Free, and nonfree \n",
739 | "25 MEPIS Free, and nonfree \n",
740 | "26 Musix GNU+Linux Free only \n",
741 | "27 OpenELEC Free, and nonfree \n",
742 | "28 openSUSE Free, and nonfree \n",
743 | "29 OpenWrt Free, and nonfree \n",
744 | "30 Parabola GNU/Linux-libre Free only \n",
745 | "31 Pardus Free, and nonfree \n",
746 | "32 Parsix Free, and nonfree \n",
747 | "33 PCLinuxOS Free, and nonfree \n",
748 | "34 Puppy Free, and nonfree \n",
749 | "35 Red Hat Enterprise Linux Free, and nonfree \n",
750 | "36 Rxart Free, and nonfree \n",
751 | "37 Sabayon Linux Free, and nonfree \n",
752 | "38 Scientific Free, and nonfree \n",
753 | "39 Slackware Free, and nonfree \n",
754 | "40 Slax Free, and nonfree \n",
755 | "41 SliTaz GNU/Linux Free, and nonfree \n",
756 | "42 Solus Free, and nonfree \n",
757 | "43 Source Mage GNU/Linux Free, and nonfree \n",
758 | "44 SUSE Linux Free, and nonfree \n",
759 | "45 Tiny Core Linux Free, and nonfree \n",
760 | "46 Tiny SliTaz Free, and nonfree \n",
761 | "47 Trisquel Free only \n",
762 | "48 TurnKey GNU/Linux Free, and nonfree \n",
763 | "49 Ubuntu, Kubuntu, Xubuntu Free, and nonfree \n",
764 | "50 Ututo Free only \n",
765 | "51 Vector Linux Free, and nonfree \n",
766 | "52 Void Linux Free, nonfree and multilib \n",
767 | "53 XBMC Live Free, and nonfree \n",
768 | "54 Zentyal Free, and nonfree \n",
769 | "55 Zenwalk Free, and nonfree \n",
770 | "56 Distribution Free software repositories \n",
771 | "\n",
772 | " Approximate number of pre-compiled packages \\\n",
773 | "0 13,888[179][180] \n",
774 | "1 8,300[181] \n",
775 | "2 11,573[182][183] \n",
776 | "3 10,000[189] \n",
777 | "4 [a][190] \n",
778 | "5 6,813[b][191] \n",
779 | "6 3,074[192] \n",
780 | "7 [c] \n",
781 | "8 ? \n",
782 | "9 [d][190] \n",
783 | "10 89,889[190] \n",
784 | "11 [f][190] \n",
785 | "12 484 \n",
786 | "13 ? \n",
787 | "14 64,362[194] \n",
788 | "15 10,000[196] \n",
789 | "16 ? \n",
790 | "17 18,921[198] \n",
791 | "18 14,494[202] \n",
792 | "19 [i][190] \n",
793 | "20 826 \n",
794 | "21 [j][190] \n",
795 | "22 17,283 (i586), 11,409 (x86-64)[203] \n",
796 | "23 22600 \n",
797 | "24 ? \n",
798 | "25 [l][190] \n",
799 | "26 1819 \n",
800 | "27 140[207] \n",
801 | "28 42,236 with PackMan[208] \n",
802 | "29 2000 \n",
803 | "30 23,000[209] \n",
804 | "31 4000 \n",
805 | "32 [m][190] \n",
806 | "33 12000 \n",
807 | "34 700 \n",
808 | "35 3,000 (plus 9,155 from EPEL[210]) \n",
809 | "36 [n][190] \n",
810 | "37 [o] \n",
811 | "38 [p] \n",
812 | "39 2292 \n",
813 | "40 2050 \n",
814 | "41 3,381[213] \n",
815 | "42 9500 \n",
816 | "43 118 \n",
817 | "44 24094 \n",
818 | "45 25160 \n",
819 | "46 50 \n",
820 | "47 52,748[215] \n",
821 | "48 [q][190] (plus ≈30 custom packages) \n",
822 | "49 93,920[s][190][216] \n",
823 | "50 5000 \n",
824 | "51 ? \n",
825 | "52 6000 \n",
826 | "53 ? \n",
827 | "54 [u][190] \n",
828 | "55 2000 \n",
829 | "56 Approximate number of pre-compiled packages \n",
830 | "\n",
831 | " Approximate number of source packages \\\n",
832 | "0 ? \n",
833 | "1 ? \n",
834 | "2 74,786 from AUR[184][185] \n",
835 | "3 ? \n",
836 | "4 ? \n",
837 | "5 ? \n",
838 | "6 CCR: 5,342[193] \n",
839 | "7 ? \n",
840 | "8 ? \n",
841 | "9 ? \n",
842 | "10 28,923[e] \n",
843 | "11 ? \n",
844 | "12 ? \n",
845 | "13 ? \n",
846 | "14 30,681[195] \n",
847 | "15 19,092[197][g] \n",
848 | "16 ? \n",
849 | "17 18921 \n",
850 | "18 ? \n",
851 | "19 ? \n",
852 | "20 ? \n",
853 | "21 ? \n",
854 | "22 8,834[204] \n",
855 | "23 ? \n",
856 | "24 [k][185] \n",
857 | "25 ? \n",
858 | "26 ? \n",
859 | "27 ? \n",
860 | "28 34000 \n",
861 | "29 ? \n",
862 | "30 ? \n",
863 | "31 ? \n",
864 | "32 14900 \n",
865 | "33 ? \n",
866 | "34 ? \n",
867 | "35 ? \n",
868 | "36 ? \n",
869 | "37 ? \n",
870 | "38 ? \n",
871 | "39 7,705 from SlackBuilds[211] \n",
872 | "40 ? \n",
873 | "41 ? \n",
874 | "42 ? \n",
875 | "43 8876 \n",
876 | "44 11385 \n",
877 | "45 ? \n",
878 | "46 ? \n",
879 | "47 ? \n",
880 | "48 21,041[r] (currently TurnKey only supplies sou... \n",
881 | "49 24,474[t] \n",
882 | "50 ? \n",
883 | "51 ? \n",
884 | "52 6719 \n",
885 | "53 ? \n",
886 | "54 ? \n",
887 | "55 ? \n",
888 | "56 Approximate number of source packages \n",
889 | "\n",
890 | " Default package management tool(s) Package format \\\n",
891 | "0 apk .apk \n",
892 | "1 APT (APT-RPM), RPM RPM \n",
893 | "2 Pacman .pkg.tar.zst[186] \n",
894 | "3 RPM, yum, APT RPM \n",
895 | "4 APT .dpkg \n",
896 | "5 RPM, yum/up2date RPM \n",
897 | "6 Pacman (will be replaced by Akabei in future) .pkg.tar.xz \n",
898 | "7 RPM, yum RPM \n",
899 | "8 ? ? \n",
900 | "9 APT .deb \n",
901 | "10 APT .deb \n",
902 | "11 APT .deb \n",
903 | "12 pkgsystem .tlz \n",
904 | "13 APT .deb \n",
905 | "14 DNF, yum, PackageKit RPM \n",
906 | "15 Portage .ebuild, .tbz2 \n",
907 | "16 APT .deb \n",
908 | "17 Guix .scm, .go \n",
909 | "18 Pacman .pkg.tar.xz \n",
910 | "19 APT .deb \n",
911 | "20 ? ? \n",
912 | "21 APT .deb \n",
913 | "22 urpmi, rpmdrake RPM \n",
914 | "23 urpmi, rpmdrake RPM \n",
915 | "24 Pacman .pkg.tar.xz \n",
916 | "25 APT .deb \n",
917 | "26 APT .deb \n",
918 | "27 XBMCbuntu addon manager, own and 3rd party addons .zip \n",
919 | "28 YaST, Zypper RPM \n",
920 | "29 opkg .ipk \n",
921 | "30 Pacman .pkg.tar.xz \n",
922 | "31 PiSi .pisi \n",
923 | "32 APT .deb \n",
924 | "33 APT, RPM RPM \n",
925 | "34 PupGet, DotPup .pup, .pet \n",
926 | "35 RPM, yum RPM \n",
927 | "36 APT .deb \n",
928 | "37 Portage, Entropy ebuild, .tbz2 \n",
929 | "38 APT/yum RPM \n",
930 | "39 slackpkg tgz, .txz, .tlz, .tbz \n",
931 | "40 none .lzm \n",
932 | "41 Tazpkg .tazpkg \n",
933 | "42 eopkg .eopkg \n",
934 | "43 Sorcery Package Manager src \n",
935 | "44 YaST, Zypper RPM \n",
936 | "45 ab, tce-load tcz \n",
937 | "46 Web site[214] tazpkg \n",
938 | "47 APT .deb \n",
939 | "48 APT .deb \n",
940 | "49 APT .deb \n",
941 | "50 UTUTO Package Manager ebuild \n",
942 | "51 slapt-get, gslapt, installpkg tgz \n",
943 | "52 xbps .xbps \n",
944 | "53 APT .deb \n",
945 | "54 APT .deb \n",
946 | "55 netpkg, installpkg, upgradepkg tgz, txz \n",
947 | "56 Default package management tools Package format \n",
948 | "\n",
949 | " Default installer \\\n",
950 | "0 setup-alpine \n",
951 | "1 NaN \n",
952 | "2 arch-install-scripts[187] and archinstaller[188] \n",
953 | "3 NaN \n",
954 | "4 Ubiquity \n",
955 | "5 Anaconda \n",
956 | "6 NaN \n",
957 | "7 NaN \n",
958 | "8 ? \n",
959 | "9 NaN \n",
960 | "10 Debian-Installer \n",
961 | "11 Debian-Installer \n",
962 | "12 ? \n",
963 | "13 Debian-Installer \n",
964 | "14 Anaconda \n",
965 | "15 None (third-party install scripts only) \n",
966 | "16 Debian-Installer \n",
967 | "17 guix system init[199] \n",
968 | "18 None (third-party install scripts only) \n",
969 | "19 NaN \n",
970 | "20 NaN \n",
971 | "21 Ubiquity \n",
972 | "22 DrakX \n",
973 | "23 DrakX \n",
974 | "24 Calamares[205] \n",
975 | "25 MEPIS Install \n",
976 | "26 Debian-Installer \n",
977 | "27 NaN \n",
978 | "28 YaST \n",
979 | "29 - \n",
980 | "30 None (third-party install scripts only) or Cal... \n",
981 | "31 YALI \n",
982 | "32 NaN \n",
983 | "33 NaN \n",
984 | "34 NaN \n",
985 | "35 Anaconda \n",
986 | "36 NaN \n",
987 | "37 Calamares \n",
988 | "38 NaN \n",
989 | "39 bash script[212] \n",
990 | "40 NaN \n",
991 | "41 tazinst \n",
992 | "42 os-installer \n",
993 | "43 NaN \n",
994 | "44 YaST \n",
995 | "45 tc-install, core2usb \n",
996 | "46 NaN \n",
997 | "47 Ubiquity \n",
998 | "48 DI-Live (custom fork of Debian Installer) \n",
999 | "49 Ubiquity \n",
1000 | "50 ? \n",
1001 | "51 NaN \n",
1002 | "52 ncurses script \n",
1003 | "53 NaN \n",
1004 | "54 dpkg \n",
1005 | "55 NaN \n",
1006 | "56 Default installer \n",
1007 | "\n",
1008 | " Graphical installation process Netinstall Netboot \n",
1009 | "0 No ? ? \n",
1010 | "1 Yes ? ? \n",
1011 | "2 No Yes iPXE \n",
1012 | "3 Yes No No \n",
1013 | "4 Yes ? ? \n",
1014 | "5 Yes Yes ? \n",
1015 | "6 Package manager in development ? ? \n",
1016 | "7 No ? ? \n",
1017 | "8 ? ? ? \n",
1018 | "9 Yes ? ? \n",
1019 | "10 Yes Yes PXE \n",
1020 | "11 Yes Yes PXE \n",
1021 | "12 No No No \n",
1022 | "13 Yes No No \n",
1023 | "14 Yes Yes ? \n",
1024 | "15 Yes[h] Yes PXE \n",
1025 | "16 Yes Yes No \n",
1026 | "17 Yes[200] Yes[201] No \n",
1027 | "18 No Yes ? \n",
1028 | "19 No ? ? \n",
1029 | "20 No No No \n",
1030 | "21 Yes ? ? \n",
1031 | "22 Yes Yes ? \n",
1032 | "23 Yes ? ? \n",
1033 | "24 Yes[206] Yes iPXE \n",
1034 | "25 Yes ? ? \n",
1035 | "26 Yes No No \n",
1036 | "27 Yes ? ? \n",
1037 | "28 Yes Yes ? \n",
1038 | "29 No ? ? \n",
1039 | "30 Yes Yes ? \n",
1040 | "31 Yes ? ? \n",
1041 | "32 Yes ? ? \n",
1042 | "33 Yes ? ? \n",
1043 | "34 Yes ? ? \n",
1044 | "35 Yes ? ? \n",
1045 | "36 Yes ? ? \n",
1046 | "37 Yes ? ? \n",
1047 | "38 Yes ? ? \n",
1048 | "39 No Yes Yes \n",
1049 | "40 NaN ? ? \n",
1050 | "41 Yes iPXE iPXE \n",
1051 | "42 Yes No No \n",
1052 | "43 Yes ? ? \n",
1053 | "44 Yes ? ? \n",
1054 | "45 Yes ? ? \n",
1055 | "46 No ? iPXE \n",
1056 | "47 Yes Yes ? \n",
1057 | "48 No No No \n",
1058 | "49 Yes Yes PXE \n",
1059 | "50 ? No No \n",
1060 | "51 Yes ? ? \n",
1061 | "52 Yes Yes No \n",
1062 | "53 No ? ? \n",
1063 | "54 Yes ? ? \n",
1064 | "55 Yes ? ? \n",
1065 | "56 Graphical installation process Netinstall Netboot \n",
1066 | "*********************\n",
1067 | "7\n",
1068 | " Distribution \\\n",
1069 | "0 Arch Linux \n",
1070 | "1 AUSTRUMI \n",
1071 | "2 BLAG Linux and GNU \n",
1072 | "3 Bodhi Linux \n",
1073 | "4 CentOS \n",
1074 | "5 Chakra \n",
1075 | "6 Clear Linux OS \n",
1076 | "7 Debian \n",
1077 | "8 Devuan \n",
1078 | "9 Dragora GNU/Linux-Libre \n",
1079 | "10 dyne:bolic \n",
1080 | "11 Fedora \n",
1081 | "12 Gentoo \n",
1082 | "13 gNewSense[217] \n",
1083 | "14 Grml \n",
1084 | "15 Guix System[218] \n",
1085 | "16 Hyperbola GNU/Linux-libre \n",
1086 | "17 Knoppix CD \n",
1087 | "18 Knoppix DVD \n",
1088 | "19 LibreCMC \n",
1089 | "20 Mandriva Linux One \n",
1090 | "21 Manjaro Linux \n",
1091 | "22 MEPIS \n",
1092 | "23 Musix GNU+Linux \n",
1093 | "24 Nanolinux \n",
1094 | "25 openGEU \n",
1095 | "26 openSUSE (Not 42.1) \n",
1096 | "27 OpenWrt \n",
1097 | "28 Parabola GNU/Linux-libre \n",
1098 | "29 Pardus \n",
1099 | "30 PCLinuxOS \n",
1100 | "31 Pentoo \n",
1101 | "32 Porteus \n",
1102 | "33 Puppy Linux (Slacko) \n",
1103 | "34 Puredyne \n",
1104 | "35 Sabayon Linux Live CD \n",
1105 | "36 Sabayon Linux Live DVD \n",
1106 | "37 Scientific Linux \n",
1107 | "38 Slackware \n",
1108 | "39 Slax \n",
1109 | "40 Solus \n",
1110 | "41 SystemRescueCD \n",
1111 | "42 SliTaz GNU/Linux \n",
1112 | "43 Tails \n",
1113 | "44 Tiny Core Linux \n",
1114 | "45 Tiny SliTaz \n",
1115 | "46 Trisquel \n",
1116 | "47 TurnKey GNU/Linux Core (base) appliance ISO \n",
1117 | "48 Ubuntu \n",
1118 | "49 Ututo \n",
1119 | "50 Edubuntu \n",
1120 | "51 Kubuntu \n",
1121 | "52 XBMC Live \n",
1122 | "53 Zentyal \n",
1123 | "54 Xubuntu \n",
1124 | "55 Distribution \n",
1125 | "\n",
1126 | " Size of media (MB) RAM use (MB) Boots from CD \\\n",
1127 | "0 742 minimum 80 Yes \n",
1128 | "1 301 NaN Yes \n",
1129 | "2 696 ? Yes \n",
1130 | "3 1024 80 Yes \n",
1131 | "4 603 (Minimal) 4,096 (DVD) NaN Yes \n",
1132 | "5 2150 NaN No \n",
1133 | "6 ? ? ? \n",
1134 | "7 958 NaN Yes \n",
1135 | "8 868 NaN Yes \n",
1136 | "9 655 ? Yes \n",
1137 | "10 1650 ? up to version 2.x \n",
1138 | "11 1434 256 to 1,024 Yes \n",
1139 | "12 260 (Minimal) 2,048 (Live DVD) up to 128 Yes \n",
1140 | "13 1200 512 ? \n",
1141 | "14 460 32 to 128 Yes \n",
1142 | "15 612 146 No \n",
1143 | "16 660 and 688 ? Yes \n",
1144 | "17 700 128 to 320 Yes \n",
1145 | "18 4813 128 to 500 No \n",
1146 | "19 ? ? No \n",
1147 | "20 700 128 to 768 Yes \n",
1148 | "21 473 to 2,200[219] 256 to 1,024 Yes \n",
1149 | "22 700 to 4,000 128 to 512 Yes \n",
1150 | "23 2000 ? No \n",
1151 | "24 18 ≈64 Yes \n",
1152 | "25 700 192 to 512 Yes \n",
1153 | "26 700 128 to 768 Yes \n",
1154 | "27 min 4 min 16 No \n",
1155 | "28 400 to 3,300 ? Yes \n",
1156 | "29 1,256 to 1,276 256 to 1,024 Yes \n",
1157 | "30 130 to 700 96 to 512 Yes \n",
1158 | "31 666 and 700 48 to 96 Yes \n",
1159 | "32 224 to 373 min 36 ? \n",
1160 | "33 235 32 to 192 Yes \n",
1161 | "34 542 NaN Yes \n",
1162 | "35 695 NaN Yes \n",
1163 | "36 2400 NaN No \n",
1164 | "37 431 to 2,300[221] 640 Yes \n",
1165 | "38 2600 64 to 1,024[222] Yes \n",
1166 | "39 200 96 to 320 Yes \n",
1167 | "40 1200 1024 No \n",
1168 | "41 459 NaN Yes \n",
1169 | "42 50 48 to 256 Yes \n",
1170 | "43 ≈900 ≈1,024 No \n",
1171 | "44 16 46 Yes \n",
1172 | "45 1.44 4 Yes \n",
1173 | "46 1,500[223] 384 Yes \n",
1174 | "47 212 ~173 Yes \n",
1175 | "48 1,700[224] 384 Yes \n",
1176 | "49 3500 ? No \n",
1177 | "50 2,900[225] NaN Yes \n",
1178 | "51 1,400[226] 384 Yes \n",
1179 | "52 700 256 to 1,024 Yes \n",
1180 | "53 600 256 Yes \n",
1181 | "54 1,200[227] 256 Yes \n",
1182 | "55 Size of media (MB) RAM use (MB) Boots from CD \n",
1183 | "\n",
1184 | " Boots from DVD Installable live CD/DVD Installable from USB \n",
1185 | "0 Yes Yes Yes \n",
1186 | "1 Yes Yes Yes \n",
1187 | "2 No ? NaN \n",
1188 | "3 Yes Yes Yes \n",
1189 | "4 Yes Yes (installable since 6.0) Yes \n",
1190 | "5 Yes Yes Yes \n",
1191 | "6 ? ? ? \n",
1192 | "7 Yes Yes Yes \n",
1193 | "8 Yes Yes Yes \n",
1194 | "9 ? ? ? \n",
1195 | "10 Yes ? ? \n",
1196 | "11 Yes Yes Yes \n",
1197 | "12 Yes Yes Yes \n",
1198 | "13 ? Yes ? \n",
1199 | "14 No Yes Yes \n",
1200 | "15 Yes Yes Yes \n",
1201 | "16 Yes Yes Yes \n",
1202 | "17 Yes Only DVD edition is maintained NaN \n",
1203 | "18 Yes NaN NaN \n",
1204 | "19 No No No \n",
1205 | "20 Yes Yes Yes \n",
1206 | "21 Yes Yes Yes \n",
1207 | "22 Yes Yes Yes \n",
1208 | "23 Yes Yes Yes \n",
1209 | "24 Yes Yes Yes \n",
1210 | "25 NaN Yes NaN \n",
1211 | "26 Yes Yes Yes \n",
1212 | "27 No No No \n",
1213 | "28 Yes Yes Yes \n",
1214 | "29 Yes Yes Yes \n",
1215 | "30 Yes Yes Yes \n",
1216 | "31 Yes By hand[220] By hand \n",
1217 | "32 ? Yes Yes \n",
1218 | "33 Yes Yes Yes \n",
1219 | "34 Yes Yes Yes \n",
1220 | "35 Yes Yes Yes \n",
1221 | "36 Yes Yes Yes \n",
1222 | "37 Yes Yes Yes \n",
1223 | "38 Yes Yes Yes \n",
1224 | "39 Yes NaN Yes \n",
1225 | "40 Yes Yes Yes \n",
1226 | "41 Yes Yes Yes \n",
1227 | "42 Yes Yes Yes \n",
1228 | "43 Yes Yes Yes (when run from DVD) \n",
1229 | "44 Yes Yes Yes \n",
1230 | "45 Yes By SliTaz By SliTaz \n",
1231 | "46 Yes Yes Yes \n",
1232 | "47 Yes Yes Yes \n",
1233 | "48 Yes Yes Yes \n",
1234 | "49 Yes Yes ? \n",
1235 | "50 Yes Yes NaN \n",
1236 | "51 Yes Yes Yes \n",
1237 | "52 No Yes Yes \n",
1238 | "53 Yes Yes Yes \n",
1239 | "54 Yes Yes Yes \n",
1240 | "55 Boots from DVD Installable live CD/DVD Installable from USB \n",
1241 | "*********************\n",
1242 | "8\n",
1243 | " Distribution Compile time buffer checks \\\n",
1244 | "0 Alpine Linux Yes[228] \n",
1245 | "1 BLAG Unknown \n",
1246 | "2 Android (operating system) Yes \n",
1247 | "3 Clear Linux OS Unknown \n",
1248 | "4 Debian Yes \n",
1249 | "5 Dragora GNU/Linux-Libre Unknown \n",
1250 | "6 dyne:bolic Unknown \n",
1251 | "7 Fedora Yes \n",
1252 | "8 Gentoo Optional \n",
1253 | "9 gNewSense Unknown \n",
1254 | "10 Guix System Unknown \n",
1255 | "11 LibreCMC Unknown \n",
1256 | "12 Mandriva Unknown \n",
1257 | "13 Musix GNU+Linux Unknown \n",
1258 | "14 Parabola GNU/Linux-libre Unknown \n",
1259 | "15 Slackware Unknown \n",
1260 | "16 SUSE Linux Yes \n",
1261 | "17 Solus Yes \n",
1262 | "18 Trisquel Unknown \n",
1263 | "19 Ubuntu Yes[234] \n",
1264 | "20 Ututo Unknown \n",
1265 | "\n",
1266 | " Mandatory access control \\\n",
1267 | "0 Unknown \n",
1268 | "1 Unknown \n",
1269 | "2 Yes, since Android Marshmallow \n",
1270 | "3 Unknown \n",
1271 | "4 SELinux, AppArmor \n",
1272 | "5 Unknown \n",
1273 | "6 Unknown \n",
1274 | "7 SELinux[229] \n",
1275 | "8 SELinux, AppArmor \n",
1276 | "9 SELinux, AppArmor[v] \n",
1277 | "10 Unknown \n",
1278 | "11 Unknown \n",
1279 | "12 AppArmor \n",
1280 | "13 Unknown \n",
1281 | "14 Optional[231] \n",
1282 | "15 AppArmor, tomoyo \n",
1283 | "16 AppArmor[232] \n",
1284 | "17 AppArmor \n",
1285 | "18 SELinux, AppArmor[w] \n",
1286 | "19 SELinux, AppArmor [234] \n",
1287 | "20 Unknown \n",
1288 | "\n",
1289 | " Software executable space protection grsecurity \\\n",
1290 | "0 PaX Discontinued in 3.8.0 \n",
1291 | "1 Unknown Unknown \n",
1292 | "2 Optional Optional \n",
1293 | "3 Unknown Unknown \n",
1294 | "4 PaX optional Optional \n",
1295 | "5 Unknown Unknown \n",
1296 | "6 Unknown Unknown \n",
1297 | "7 Exec Shield[230] No \n",
1298 | "8 PaX optional Optional \n",
1299 | "9 Unknown Unknown \n",
1300 | "10 Unknown Unknown \n",
1301 | "11 Unknown Unknown \n",
1302 | "12 Unknown Unknown \n",
1303 | "13 Unknown Unknown \n",
1304 | "14 Unknown Optional[231] \n",
1305 | "15 Unknown Unknown \n",
1306 | "16 Hardware NX and other methods in mainline kern... No \n",
1307 | "17 Unknown No \n",
1308 | "18 Unknown Unknown \n",
1309 | "19 PaX optional Optional \n",
1310 | "20 Unknown Unknown \n",
1311 | "\n",
1312 | " RSBAC \n",
1313 | "0 Unknown \n",
1314 | "1 Unknown \n",
1315 | "2 Optional \n",
1316 | "3 Unknown \n",
1317 | "4 Optional \n",
1318 | "5 Unknown \n",
1319 | "6 Unknown \n",
1320 | "7 No \n",
1321 | "8 Optional \n",
1322 | "9 Unknown \n",
1323 | "10 Unknown \n",
1324 | "11 Unknown \n",
1325 | "12 Yes \n",
1326 | "13 Unknown \n",
1327 | "14 Unknown \n",
1328 | "15 Optional \n",
1329 | "16 No \n",
1330 | "17 Unknown \n",
1331 | "18 Unknown \n",
1332 | "19 Optional \n",
1333 | "20 Unknown \n",
1334 | "*********************\n",
1335 | "9\n",
1336 | " .mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:\"[ \"}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:\" ]\"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}.mw-parser-output .infobox .navbar{font-size:100%}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}vteLinux distributions \\\n",
1337 | "0 Android \n",
1338 | "1 Arch \n",
1339 | "2 Debian \n",
1340 | "3 Ubuntu \n",
1341 | "4 Fedora \n",
1342 | "5 Red Hat \n",
1343 | "6 Gentoo \n",
1344 | "7 Slackware \n",
1345 | "8 Mandriva \n",
1346 | "9 Other \n",
1347 | "10 Category List Comparison \n",
1348 | "\n",
1349 | " .mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:\"[ \"}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:\" ]\"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}.mw-parser-output .infobox .navbar{font-size:100%}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}vteLinux distributions.1 \n",
1350 | "0 /e/ Android-IA Android-x86 EMUI Fire OS Graphe... \n",
1351 | "1 ArchBang ArchLabs Artix BlackArch Chakra Endea... \n",
1352 | "2 antiX Astra Bharat Operating System Solutions ... \n",
1353 | "3 Official: Kubuntu Lubuntu Ubuntu Budgie Ubuntu... \n",
1354 | "4 BLAG Linux and GNU Korora Red Hat AlmaLinux Ce... \n",
1355 | "5 AlmaLinux CentOS ClearOS EulerOS Linpus Linux ... \n",
1356 | "6 Calculate Linux Chromium OS Chrome OS Sabayon ... \n",
1357 | "7 Austrumi Linux DNALinux Kongoni NimbleX Platyp... \n",
1358 | "8 ALT Linux Mageia OpenMandriva Lx PCLinuxOS ROS... \n",
1359 | "9 4MLinux Alpine CHAOS Clear Linux OS CRUX GoboL... \n",
1360 | "10 Category List Comparison \n",
1361 | "*********************\n",
1362 | "10\n",
1363 | " 0 1\n",
1364 | "0 Ubuntu Official: Kubuntu Lubuntu Ubuntu Budgie Ubuntu...\n",
1365 | "*********************\n",
1366 | "11\n",
1367 | " 0 1\n",
1368 | "0 Red Hat AlmaLinux CentOS ClearOS EulerOS Linpus Linux ...\n",
1369 | "*********************\n",
1370 | "12\n",
1371 | " vteLinux vteLinux.1\n",
1372 | "0 Linux kernel History Kernel Linus's law Linux-libre Linux s...\n",
1373 | "1 Controversies Criticism of Linux Criticism of desktop Linux ...\n",
1374 | "2 Distributions General comparison Distributions list Netbook-...\n",
1375 | "3 Organizations LinuxChix Linux Counter Linux Documentation Pr...\n",
1376 | "4 Adoption Adopters Desktop Embedded Gaming Mobile Range ...\n",
1377 | "5 Media DistroWatch Free Software Magazine Full Circle...\n",
1378 | "6 Category Portal Category Portal\n",
1379 | "*********************\n",
1380 | "13\n",
1381 | " vteFree and open-source software \\\n",
1382 | "0 General \n",
1383 | "1 Softwarepackages \n",
1384 | "2 Community \n",
1385 | "3 Organisations \n",
1386 | "4 Licenses \n",
1387 | "5 Types and standards \n",
1388 | "6 Challenges \n",
1389 | "7 Related topics \n",
1390 | "8 Portal Category \n",
1391 | "\n",
1392 | " vteFree and open-source software.1 \n",
1393 | "0 Alternative terms for free software Comparison... \n",
1394 | "1 Audio Bioinformatics Codecs Configuration mana... \n",
1395 | "2 Free software movement History Open-source-sof... \n",
1396 | "3 Free Software Movement of India Free Software ... \n",
1397 | "4 AFL Apache APSL Artistic Beerware BSD Creative... \n",
1398 | "5 Comparison of licenses Contributor License Agr... \n",
1399 | "6 Digital rights management Hardware restriction... \n",
1400 | "7 Forking GNU Manifesto Microsoft Open Specifica... \n",
1401 | "8 Portal Category \n",
1402 | "*********************\n",
1403 | "14\n",
1404 | " 0 1\n",
1405 | "0 Types and standards Comparison of licenses Contributor License Agr...\n"
1406 | ]
1407 | }
1408 | ],
1409 | "source": [
1410 | "import pandas as pd\n",
1411 | "import ssl\n",
1412 | "\n",
1413 | "ssl._create_default_https_context = ssl._create_unverified_context\n",
1414 | "\n",
1415 | "scraped = pd.read_html(\"https://en.wikipedia.org/wiki/Comparison_of_Linux_distributions\")\n",
1416 | "\n",
1417 | "for idx, table in enumerate(scraped):\n",
1418 | " print(\"*********************\")\n",
1419 | " print(idx)\n",
1420 | " print(table)"
1421 | ]
1422 | },
1423 | {
1424 | "cell_type": "code",
1425 | "execution_count": 6,
1426 | "metadata": {},
1427 | "outputs": [
1428 | {
1429 | "data": {
1430 | "text/html": [
1431 | "
\n", 1449 | " | Distribution | \n", 1450 | "Founder | \n", 1451 | "Maintainer | \n", 1452 | "Initial release year | \n", 1453 | "Current stable version | \n", 1454 | "Security updates (years) | \n", 1455 | "Release date | \n", 1456 | "System distribution commitment | \n", 1457 | "Forked from | \n", 1458 | "Target audience | \n", 1459 | "Cost | \n", 1460 | "Status | \n", 1461 | "
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", 1466 | "AlmaLinux | \n", 1467 | "AlmaLinux Foundation | \n", 1468 | "AlmaLinux Foundation | \n", 1469 | "2021 | \n", 1470 | "8.4 | \n", 1471 | "10 years[2] | \n", 1472 | "2021-05-26 | \n", 1473 | "X | \n", 1474 | "Red Hat Enterprise Linux (RHEL) | \n", 1475 | "server, workstation | \n", 1476 | "None | \n", 1477 | "Active | \n", 1478 | "
1 | \n", 1481 | "Alpine Linux | \n", 1482 | "Alpine Linux Team | \n", 1483 | "Alpine Linux Team | \n", 1484 | "2006 | \n", 1485 | "3.14.1[3] | \n", 1486 | "? | \n", 1487 | "2021-08-04 | \n", 1488 | "X | \n", 1489 | "LEAF Project | \n", 1490 | "security, lightweight, general | \n", 1491 | "None | \n", 1492 | "Active | \n", 1493 | "
2 | \n", 1496 | "ALT Linux | \n", 1497 | "ALT Linux Team | \n", 1498 | "ALT Linux Team, ALT Linux LLC | \n", 1499 | "2001 | \n", 1500 | "10.0[4] | \n", 1501 | "? | \n", 1502 | "2021-12-16 | \n", 1503 | "X | \n", 1504 | "Mandrake Linux | \n", 1505 | "general, school | \n", 1506 | "None | \n", 1507 | "Active | \n", 1508 | "
3 | \n", 1511 | "antiX | \n", 1512 | "Anticapitalista | \n", 1513 | "Anticapitalista | \n", 1514 | "2007 | \n", 1515 | "19.4[5] | \n", 1516 | "? | \n", 1517 | "2021-05-21 | \n", 1518 | "X | \n", 1519 | "Debian, MEPIS | \n", 1520 | "old computers | \n", 1521 | "None | \n", 1522 | "Active | \n", 1523 | "
4 | \n", 1526 | "ArchBang | \n", 1527 | "Willensky Aristide | \n", 1528 | "Stan McLaren | \n", 1529 | "2011 | \n", 1530 | "Rolling | \n", 1531 | "Rolling | \n", 1532 | "? | \n", 1533 | "X | \n", 1534 | "Arch Linux (UKM Edition) | \n", 1535 | "general | \n", 1536 | "None | \n", 1537 | "Active | \n", 1538 | "
... | \n", 1541 | "... | \n", 1542 | "... | \n", 1543 | "... | \n", 1544 | "... | \n", 1545 | "... | \n", 1546 | "... | \n", 1547 | "... | \n", 1548 | "... | \n", 1549 | "... | \n", 1550 | "... | \n", 1551 | "... | \n", 1552 | "... | \n", 1553 | "
92 | \n", 1556 | "Xandros | \n", 1557 | "Xandros Incorporated | \n", 1558 | "Xandros Incorporated | \n", 1559 | "2001 | \n", 1560 | "? | \n", 1561 | "? | \n", 1562 | "2007-07-26 | \n", 1563 | "X | \n", 1564 | "Corel Linux | \n", 1565 | "? | \n", 1566 | "Commercial | \n", 1567 | "Inactive | \n", 1568 | "
93 | \n", 1571 | "Zentyal | \n", 1572 | "eBox Technologies | \n", 1573 | "eBox Technologies | \n", 1574 | "2005 | \n", 1575 | "6.2[79] | \n", 1576 | "? | \n", 1577 | "2020-06-04 | \n", 1578 | "X | \n", 1579 | "Debian, Ubuntu | \n", 1580 | "small business server | \n", 1581 | "Some editions are free of charge | \n", 1582 | "? | \n", 1583 | "
94 | \n", 1586 | "Zenwalk | \n", 1587 | "Jean-Philippe Guillemin | \n", 1588 | "dev team | \n", 1589 | "2004 | \n", 1590 | "Rolling[80] | \n", 1591 | "? | \n", 1592 | "2020-12-10 | \n", 1593 | "X | \n", 1594 | "Slackware | \n", 1595 | "general | \n", 1596 | "None | \n", 1597 | "Active | \n", 1598 | "
95 | \n", 1601 | "Zorin OS | \n", 1602 | "Zorin Group | \n", 1603 | "Zorin Group | \n", 1604 | "2009 | \n", 1605 | "OS 15.3[81] | \n", 1606 | "? | \n", 1607 | "2020-10-08 | \n", 1608 | "X | \n", 1609 | "Ubuntu | \n", 1610 | "general, desktop | \n", 1611 | "Zorin OS Lite & Core are free, while Business ... | \n", 1612 | "Active | \n", 1613 | "
96 | \n", 1616 | "Distribution | \n", 1617 | "Founder | \n", 1618 | "Maintainer | \n", 1619 | "Initial release year | \n", 1620 | "Current stable version | \n", 1621 | "Security updates (years) | \n", 1622 | "Release date | \n", 1623 | "System distribution commitment | \n", 1624 | "Forked from | \n", 1625 | "Target audience | \n", 1626 | "Cost | \n", 1627 | "Status | \n", 1628 | "
97 rows × 12 columns
\n", 1632 | "