From a3d3db4ad4bd1a9048df339c59f3c9148b7bca84 Mon Sep 17 00:00:00 2001 From: Troy Will Date: Mon, 20 Apr 2009 03:03:53 -0700 Subject: [PATCH] added experimental/gnu-sql --- experimental/gnu-sql | 496 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 496 insertions(+) create mode 100644 experimental/gnu-sql diff --git a/experimental/gnu-sql b/experimental/gnu-sql new file mode 100644 index 0000000..656bd35 --- /dev/null +++ b/experimental/gnu-sql @@ -0,0 +1,496 @@ +#!/usr/bin/perl +#!/usr/bin/env perl +use strict; +use warnings; +use DBI; +# http://sql-info.de/mysql/examples/Perl-DBI-examples.html + +# http://mailliststock.wordpress.com/2007/03/01/sqlite-examples-with-bash-perl-and-python/ +my $repository = '/tmp/'; +my $stow_dir = '/stow'; +my $target_dir = +my $su_command = 'sudo'; +my $tar_command = 'tar --verbose --extract --file'; +my $database = 'gnu.db'; +unlink($database); + +my $dbh = DBI->connect("dbi:SQLite:$database", "", "", {RaiseError => 1, AutoCommit => 1}); +# su -c 'aptitude install libdbd-sqlite3-perl' on a Debian system TDW 2009-04-19 + +&populate_gnu_mirrors($dbh); +&populate_gnu_software($dbh); +&print_mirrors; +&print_software; +#&stow_gnu_software('make'); +#&stow_gnu_software('mdk'); +&stow_gnu_software('gmp'); +#&stow_gnu_software('gcc'); + +################################################ Subroutines only below this line ############################ + +#&populate_gnu_contributors($dbh); + +sub stow_gnu_software { + my ( $software ) = @_; + print "\t$software\n"; +# $dbh->do("CREATE TABLE gnu_software (id INTEGER PRIMARY KEY, short_name TEXT UNIQUE, name TEXT, latest_version TEXT, date_checked DATE )"); + my $sth_id = $dbh->prepare("SELECT id, latest_version FROM gnu_software WHERE short_name = \'$software\'"); + $sth_id->execute(); + my ($software_id, $version) = $sth_id->fetchrow_array(); + print "$software => $version\n"; + # Given software short name, get id + # Given id, get version + my $all = $dbh->selectall_arrayref("SELECT * FROM mirror_url"); + foreach my $row (@$all) { + my ($software_id, $country_id, $region_id, $url, $date_checked ) = @$row; + } + my $sth = $dbh->prepare('SELECT url FROM mirror_url WHERE id = ?'); + $sth->execute(1); + my $url = $sth->fetchrow_array(); + my $sth2 = $dbh->prepare('SELECT directory, latest_tarball FROM latest_tarball WHERE gnu_software_id = ?'); + $sth2->execute($software_id); + my ( $directory, $tarball ) = $sth2->fetchrow_array; + my $download_command = "wget --no-clobber ${url}${directory}/$tarball"; + system ("$download_command"); + system ("$tar_command $tarball"); + chdir ("$software-$version"); + open(OUT, ">stow-$software-$version"); + print OUT "#!/bin/bash\n"; + print OUT "set -o errexit # exit on error\n"; + print OUT "./configure --prefix=/usr/local\n"; + print OUT "make\n"; + print OUT "$su_command make DESTDIR=$stow_dir/$software-$version install\n"; + print OUT "$su_command stow $software-$version\n"; + print OUT "$su_command /sbin/ldconfig -v\n"; + close(OUT); +} + +sub print_software { + print "=================================== Table gnu_software =================================\n"; + # $dbh->do("CREATE TABLE gnu_software (id INTEGER PRIMARY KEY, short_name TEXT UNIQUE, name TEXT, latest_version TEXT, date_checked DATE )"); + my $all = $dbh->selectall_arrayref("SELECT * FROM gnu_software ORDER BY short_name"); + foreach my $row (@$all) { + my ($id, $short_name, $name, $latest_version, $date_checked ) = @$row; + print "$short_name\t$latest_version v.$latest_version\t$name\n"; + } +} + +sub print_mirrors { +# $dbh->do("CREATE TABLE continent (id INTEGER PRIMARY KEY, name TEXT)"); +# $dbh->do("CREATE TABLE country (id INTEGER PRIMARY KEY, continent_id INTEGER, name TEXT)"); +# $dbh->do("CREATE TABLE region (id INTEGER PRIMARY KEY, name TEXT)"); +# $dbh->do("CREATE TABLE mirror_url (id INTEGER PRIMARY KEY, country_id, region_id, url TEXT, date_checked DATE)"); + my $all = $dbh->selectall_arrayref("SELECT * FROM mirror_url ORDER BY country_id, region_id, url"); + foreach my $row (@$all) { + my ($id, $country_id, $region_id, $url, $date_checked ) = @$row; + print "$id\t$country_id\t$region_id\t$url\t$date_checked\n"; + } +} + +sub populate_gnu_software { + my $dbh = shift; + $dbh->do("CREATE TABLE gnu_software (id INTEGER PRIMARY KEY, short_name TEXT UNIQUE, name TEXT, latest_version TEXT, date_checked DATE )"); + $dbh->do("CREATE TABLE latest_tarball (id INTEGER PRIMARY KEY, gnu_software_id INTEGER, directory TEXT, latest_tarball TEXT, date_checked )"); + + #################### Populate table gnu_software #################### + $dbh->do("INSERT INTO gnu_software VALUES (1, 'make', 'GNU Make', '3.81', '2009-04-19')"); + $dbh->do("INSERT INTO gnu_software VALUES (2, 'emacs', 'GNU Emacs', '0.00', '1971-01-01')"); + $dbh->do("INSERT INTO gnu_software VALUES (3, 'mdk', 'GNU MIX Development Kit', '1.2.4', '2009-04-19')"); + my $sth_gs = $dbh->prepare("INSERT INTO gnu_software VALUES (?, ?, ?, ?, ?)"); + $sth_gs->execute(4,'gcc','GNU Compiler Collection', '4.3.3', '2009-04-20'); + $sth_gs->execute(5,'gmp','GNU Multiple Precision Arithmetic Library', '4.3.0', '2009-04-20'); + +# http://www.alliedquotes.com/mirrors/gnu/gnu/gcc/gcc-4.3.3/gcc-4.3.3.tar.bz2 + #################### Populate table latest_tarball #################### + # Populate latest_tarball + # latest_tarball (id INTEGER PRIMARY KEY, gnu_software_id INTEGER, directory TEXT, latest_tarball TEXT, date_checked ) + $dbh->do("INSERT INTO latest_tarball VALUES (1, 1, 'make', 'make-3.81.tar.bz2', '2009-04-19')"); + # Emacs here id 2 + $dbh->do("INSERT INTO latest_tarball VALUES (3, 3, 'mdk/v1.2.4', 'mdk-1.2.4.tar.gz', '2009-04-19')"); + my $sth_lt = $dbh->prepare("INSERT INTO latest_tarball VALUES (?, ?, ?, ?, ?)"); + $sth_lt->execute(4, 4, 'gcc/gcc-4.3.3', 'gcc-4.3.3.tar.bz2', '2009-04-20'); + $sth_lt->execute(5, 5, 'gmp', 'gmp-4.3.0.tar.bz2', '2009-04-20'); +} + +sub populate_gnu_mirrors { + my $dbh = shift; + $dbh->do("CREATE TABLE continent (id INTEGER PRIMARY KEY, name TEXT)"); + $dbh->do("CREATE TABLE country (id INTEGER PRIMARY KEY, continent_id INTEGER, name TEXT)"); + $dbh->do("CREATE TABLE region (id INTEGER PRIMARY KEY, name TEXT)"); + $dbh->do("CREATE TABLE mirror_url (id INTEGER PRIMARY KEY, country_id, region_id, url TEXT, date_checked DATE)"); + + $dbh->do("INSERT INTO continent VALUES (1, 'Asia')"); + $dbh->do("INSERT INTO continent VALUES (2, 'Africa')"); + $dbh->do("INSERT INTO continent VALUES (3, 'North America')"); + $dbh->do("INSERT INTO continent VALUES (4, 'South America')"); + $dbh->do("INSERT INTO continent VALUES (5, 'Antartica')"); + $dbh->do("INSERT INTO continent VALUES (6, 'Europe')"); + $dbh->do("INSERT INTO continent VALUES (7, 'Australia')"); + + # Countries + $dbh->do("INSERT INTO country VALUES (1, 3, 'United States')"); + + #Regions + $dbh->do("INSERT INTO region VALUES (1, 'Not specified')"); + $dbh->do("INSERT INTO region VALUES (2, 'California')"); + + #Urls + my $date_checked = '2009-04-19'; + my $sth_mu = $dbh->prepare("INSERT INTO mirror_url VALUES (?, ?, ?, ?, ?)"); + $sth_mu->execute(1, 1, 2, 'ftp://mirrors.kernel.org/gnu/', '2009-04-19'); + $sth_mu->execute(2, 1, 2, 'http://mirrors.kernel.org/gnu/', '2009-04-19'); + $sth_mu->execute(3, 1, 2, 'ftp.keystealth.org/pub/gnu/gnu/', '2009-04-19'); + $sth_mu->execute(4, 1, 2, 'ftp://mirrors.usc.edu/pub/gnu/', '2009-04-19'); + $sth_mu->execute(5, 1, 2, 'http://mirrors.usc.edu/pub/gnu/', '2009-04-19'); + $sth_mu->execute(6, 1, 2, 'http://www.alliedquotes.com/mirrors/gnu/gnu/', '2009-04-19'); + + +# $dbh->do("INSERT INTO mirror_url VALUES (1, 1, 2, 'ftp://mirrors.kernel.org/gnu/', '2009-04-19')"); +# o [22]http://mirrors.kernel.org/gnu/ +} +exit +__END__ +GNU mirror list + + * United States + + California + o [21]ftp://mirrors.kernel.org/gnu/ + o [22]http://mirrors.kernel.org/gnu/ + o [23]ftp://ftp.keystealth.org/pub/gnu/gnu/ + o [24]ftp://mirrors.usc.edu/pub/gnu/ + o [25]http://mirrors.usc.edu/pub/gnu/ + o [26]http://www.alliedquotes.com/mirrors/gnu/gnu/ + + Colorado + o [27]http://cudlug.cudenver.edu/GNU/gnu/ + + Idaho + o [28]http://mirror.its.uidaho.edu/pub/gnu/ + o [29]ftp://mirror.its.uidaho.edu/gnu/ + o [30]rsync://mirror.its.uidaho.edu/gnu + + Illinois + o [31]http://ftp.gnu.mirrors.hoobly.com/gnu/ + o [32]ftp://mirror.anl.gov/pub/gnu/ + o [33]http://mirror.anl.gov/pub/gnu/ + o [34]http://www.netgull.com/gnu/ + o [35]http://astromirror.uchicago.edu/gnu/ + + Massachusetts + o [36]ftp://aeneas.mit.edu/pub/gnu/ + + Michigan + o [37]http://ftp.wayne.edu/pub/gnu/ + + New York + o [38]http://mirror.cinquix.com/pub/gnu/ + o [39]ftp://mirror.cinquix.com/pub/gnu/ + o [40]mirror.cinquix.com::gnuftp + + North Carolina + o [41]http://mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/ + o [42]rsync://mirrors.ibiblio.org::gnuftp/ + + Pennsylvania + o [43]ftp://ftp.club.cc.cmu.edu/gnu/ + o [44]http://ftp.club.cc.cmu.edu/pub/gnu/ + + Texas + o [45]http://www.gnu.potius.org/ + o [46]http://gnu.inetbridge.net/ + * The Americas (other than the U.S.) + + Brazil + o [47]ftp://ftp.unicamp.br/pub/gnu/ + + Canada + o [48]ftp://mirror.csclub.uwaterloo.ca/gnu/ + o [49]http://mirror.csclub.uwaterloo.ca/gnu/ + o [50]ftp://gnu.mirror.iweb.com/gnu/ + o [51]http://gnu.mirror.iweb.com/gnu/ + o [52]rsync://gnu.mirror.iweb.com/gnu + + Costa Rica + o [53]ftp://mirrors.ucr.ac.cr/GNU/gnu + o [54]http://mirrors.ucr.ac.cr/GNU/gnu + o [55]rsync://mirrors.ucr.ac.cr/GNU/gnu + * Africa + + South Africa + o [56]ftp://ftp.is.co.za/mirror/ftp.gnu.org/gnu + * Asia + + Japan + o [57]http://core.ring.gr.jp/pub/GNU/ + o [58]ftp://ftp.ring.gr.jp/pub/GNU/ + + Korea + o [59]ftp://ftp.kaist.ac.kr/gnu/ + + Malaysia + o [60]ftp://mirror.publicns.net/pub/gnu/gnu/ + o [61]http://mirror.publicns.net/pub/gnu/gnu/ + + Taiwan + o [62]ftp://ftp.ntu.edu.tw/pub/gnu/gnu/ + o [63]ftp://ftp.twaren.net/Unix/GNU/gnu/ + o [64]http://ftp.twaren.net/Unix/GNU/gnu/ + + Thailand + o [65]http://ftp.thaios.net/gnu/ + + Vietnam + o [66]http://gnu.billfett.com/gnu/ + o [67]http://gnu.07vn.com/gnu/ + o [68]ftp://mirror-fpt-telecom.fpt.net/gnu/ + o [69]http://mirror-fpt-telecom.fpt.net/gnu/ + * Europe + + Austria + o [70]ftp://gd.tuwien.ac.at/gnu/gnusrc/ + o [71]http://gd.tuwien.ac.at/gnu/gnusrc/ + + Belgium + o [72]ftp://ftp.easynet.be/gnu/ + o [73]http://ftp.easynet.be/ftp/gnu/ + + Czech Republic + o [74]ftp://ftp.sh.cvut.cz/MIRRORS/gnu/pub/gnu/ + o [75]http://ftp.sh.cvut.cz/MIRRORS/gnu/pub/gnu/ + + Denmark + o [76]http://ftp.download-by.net/gnu/gnu/ + + Finland + o [77]ftp://ftp.funet.fi/pub/gnu/prep/ + + France + o [78]ftp://ftp.ironie.org/ftp.gnu.org/pub/gnu/ + o [79]http://gnu.mirror.ironie.org/pub/gnu/ + o [80]ftp://mirror.cict.fr/gnu/ + + Germany + o [81]ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu. + org/ + o [82]ftp://ftp.cs.tu-berlin.de/pub/gnu/ + o [83]ftp://ftp.informatik.rwth-aachen.de/pub/gnu/ + o [84]ftp://ftp.cw.net/pub/gnu/ + o [85]ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu. + org/ + o [86]ftp://ftp.cw.net/pub/gnu/ + o [87]http://www.de-mirrors.de/gnuftp/ + o [88]http://www.very-clever.com/download/gnu/ + o [89]http://mirrors.zerg.biz/gnu/ + + Greece + o [90]ftp://ftp.duth.gr/pub/gnu/ + o [91]ftp://ftp.ntua.gr/pub/gnu/ + o [92]ftp://ftp.cc.uoc.gr/mirrors/gnu/ + o [93]http://ftp.cc.uoc.gr/mirrors/gnu/ + + Ireland + o [94]ftp://ftp.esat.net/pub/gnu/ + o [95]ftp://ftp.heanet.ie/mirrors/ftp.gnu.org/gnu/ + o [96]http://ftp.heanet.ie/mirrors/ftp.gnu.org/gnu/ + + Netherlands + o [97]ftp://ftp.mirror.nl/pub/mirror/gnu/ + o [98]ftp://ftp.nluug.nl/pub/gnu/ + o [99]http://gnu.cyclingchampion.com/gnu/ + + Norway + o [100]ftp://ftp.uninett.no/pub/gnu/ + + Poland + o [101]ftp://ftp.task.gda.pl/pub/gnu/ + o [102]ftp://sunsite.icm.edu.pl/pub/gnu/ + o [103]ftp://ftp.piotrkosoft.net/pub/mirrors/ftp.gnu.org/g + nu/ + o [104]http://piotrkosoft.net/pub/mirrors/ftp.gnu.org/gnu/ + + Portugal + o [105]ftp://mirrors.nfsi.pt/pub/gnu/ + o [106]http://mirrors.nfsi.pt/gnu/ + + Russia + o [107]http://mirror.prvtgeo.com/ftp.gnu.org/ + o [108]rsync://mirror.prvtgeo.com/gnuftp/ + o [109]ftp://ftp.chg.ru/pub/gnu/ + + Slovenia + o [110]http://gnu.wsection.com/ + o [111]http://mirror.lihnidos.org/GNU/ftp/ + o [112]http://mirror.lihnidos.org/GNU/alpha/ + + Spain + o [113]ftp://ftp.gul.es/gnu/pub/gnu/ + o [114]http://ftp.gul.es/gnu/pub/gnu/ + + Sweden + o [115]ftp://ftp.isy.liu.se/pub/gnu/ + o [116]ftp://ftp.sunet.se/pub/gnu/ + o [117]ftp://ftp.df.lth.se/pub/ftp.gnu.org/pub/gnu/ + o [118]http://ftp.df.lth.se/pub/ftp.gnu.org/pub/gnu/ + + Switzerland + o [119]ftp://sunsite.cnlab-switch.ch/mirror/gnu/ + + Turkey + o [120]ftp://ftp.ulak.net.tr/gnu/gnu/ + + UK + o [121]ftp://www.mirrorservice.org/sites/ftp.gnu.org/ + o [122]http://www.mirrorservice.org/sites/ftp.gnu.org/ + + Ukraine + o [123]ftp://ftp.gnu.org.ua/gnu/ + +Add your mirror to this list + + We welcome and appreciate more mirrors. If you are able to provide + one, please see [124]http://www.gnu.org/server/mirror.html for + information and instructions. + +TeX and how to obtain it + + TeX is a document formatter that is used by the FSF for all its + documentation. You will need it if you want to make printed manuals. + + TeX is freely redistributable. You can get it over the Internet or on + physical media. See [125]http://tug.org/texlive. + +Supporting the free software movement + + If you agree with the free software ideals we espouse, or just like + GNU software, please consider supporting the Free Software Foundation, + by joining as an associate member ([126]http://fsf.org/join), making a + donation ([127]http://www.fsf.org/associate/support_freedom/donate), + or buying books or promotional items ([128]http://shop.fsf.org). For + still other ways to contribute to GNU, both technical and + non-technical, see [129]http://www.gnu.org/help. + + Your support will help ensure the future of free software. + + [130]back to top + + Please send FSF & GNU inquiries to [131]gnu@gnu.org. There are also + [132]other ways to contact the FSF. + Please send broken links and other corrections or suggestions to + [133]webmasters@gnu.org. + + Please see the [134]Translations README for information on + coordinating and submitting translations of this article. + + Copyright © 1997, 1998, 1999, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Free Software Foundation, Inc., + + + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + + Verbatim copying and distribution of this entire article is permitted + worldwide without royalty in any medium provided this notice is + preserved. + + Updated: $Date: 2009/04/12 16:23:45 $ + +Translations of this page + + * [135]English [en] + +References + + 1. file://localhost/home/troy/git/stow/experimental/ftp.html#content + 2. file://localhost/home/troy/git/stow/experimental/ftp.html#searcher + 3. file://localhost/home/troy/git/stow/experimental/ftp.html#translations + 4. file://localhost/home/troy/git/stow/experimental/ftp.html#navigation + 5. file://localhost/ + 6. file://localhost/gnu/gnu.html + 7. file://localhost/philosophy/philosophy.html + 8. file://localhost/licenses/licenses.html + 9. file://localhost/software/software.html + 10. file://localhost/help/help.html + 11. https://www.fsf.org/associate/support_freedom?referrer=4052 + 12. http://www.gnu.org/order/ftp.html + 13. mailto:gnu@gnu.org + 14. ftp://ftp.gnu.org/ + 15. ftp://ftp.gnu.org/ + 16. http://ftpmirror.gnu.org/ + 17. http://gnu.org/software/gzip + 18. http://bzip.org/ + 19. http://www.gnupg.org/documentation/faqs.en.html#q4.19 + 20. http://www.gnu.org/directory + 21. ftp://mirrors.kernel.org/gnu/ + 22. http://mirrors.kernel.org/gnu/ + 23. ftp://ftp.keystealth.org/pub/gnu/gnu/ + 24. ftp://mirrors.usc.edu/pub/gnu/ + 25. http://mirrors.usc.edu/pub/gnu/ + 26. http://www.alliedquotes.com/mirrors/gnu/gnu/ + 27. http://cudlug.cudenver.edu/GNU/gnu/ + 28. http://mirror.its.uidaho.edu/pub/gnu/ + 29. ftp://mirror.its.uidaho.edu/gnu/ + 30. rsync://mirror.its.uidaho.edu/gnu + 31. http://ftp.gnu.mirrors.hoobly.com/gnu/ + 32. ftp://mirror.anl.gov/pub/gnu/ + 33. http://mirror.anl.gov/pub/gnu/ + 34. http://www.netgull.com/gnu/ + 35. http://astromirror.uchicago.edu/gnu/ + 36. ftp://aeneas.mit.edu/pub/gnu/ + 37. http://ftp.wayne.edu/pub/gnu/ + 38. http://mirror.cinquix.com/pub/gnu/ + 39. ftp://mirror.cinquix.com/pub/gnu/ + 40. ftp://mirror.cinquix.com/ + 41. http://mirrors.ibiblio.org/pub/mirrors/gnu/ftp/gnu/ + 42. rsync://mirrors.ibiblio.org/ + 43. ftp://ftp.club.cc.cmu.edu/gnu/ + 44. http://ftp.club.cc.cmu.edu/pub/gnu/ + 45. http://www.gnu.potius.org/ + 46. http://gnu.inetbridge.net/ + 47. ftp://ftp.unicamp.br/pub/gnu/ + 48. ftp://mirror.csclub.uwaterloo.ca/gnu/ + 49. http://mirror.csclub.uwaterloo.ca/gnu/ + 50. ftp://gnu.mirror.iweb.com/gnu/ + 51. http://gnu.mirror.iweb.com/gnu/ + 52. rsync://gnu.mirror.iweb.com/gnu + 53. ftp://mirrors.ucr.ac.cr/GNU/gnu + 54. http://mirrors.ucr.ac.cr/GNU/gnu + 55. rsync://mirrors.ucr.ac.cr/GNU/gnu + 56. ftp://ftp.is.co.za/mirror/ftp.gnu.org/gnu + 57. http://core.ring.gr.jp/pub/GNU/ + 58. ftp://ftp.ring.gr.jp/pub/GNU/ + 59. ftp://ftp.kaist.ac.kr/gnu/ + 60. ftp://mirror.publicns.net/pub/gnu/gnu/ + 61. http://mirror.publicns.net/pub/gnu/gnu/ + 62. ftp://ftp.ntu.edu.tw/pub/gnu/gnu/ + 63. ftp://ftp.twaren.net/Unix/GNU/gnu/ + 64. http://ftp.twaren.net/Unix/GNU/gnu/ + 65. http://ftp.thaios.net/gnu/ + 66. http://gnu.billfett.com/gnu/ + 67. http://gnu.07vn.com/gnu/ + 68. ftp://mirror-fpt-telecom.fpt.net/gnu/ + 69. http://mirror-fpt-telecom.fpt.net/gnu/ + 70. ftp://gd.tuwien.ac.at/gnu/gnusrc/ + 71. http://gd.tuwien.ac.at/gnu/gnusrc/ + 72. ftp://ftp.easynet.be/gnu/ + 73. http://ftp.easynet.be/ftp/gnu/ + 74. ftp://ftp.sh.cvut.cz/MIRRORS/gnu/pub/gnu/ + 75. http://ftp.sh.cvut.cz/MIRRORS/gnu/pub/gnu/ + 76. http://ftp.download-by.net/gnu/gnu/ + 77. ftp://ftp.funet.fi/pub/gnu/prep/ + 78. ftp://ftp.ironie.org/ftp.gnu.org/pub/gnu/ + 79. http://gnu.mirror.ironie.org/pub/gnu/ + 80. ftp://mirror.cict.fr/gnu/ + 81. ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/ + 82. ftp://ftp.cs.tu-berlin.de/pub/gnu/ + 83. ftp://ftp.informatik.rwth-aachen.de/pub/gnu/ + 84. ftp://ftp.cw.net/pub/gnu/ + 85. ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/ + 86. ftp://ftp.cw.net/pub/gnu/ + 87. http://www.de-mirrors.de/gnuftp/ + 88. http://www.very-clever.com/download/gnu/ + 89. http://mirrors.zerg.biz/gnu/ + 90. ftp://ftp.duth.gr/pub/gnu/ + 91. ftp://ftp.ntua.gr/pub/gnu/ + 92. ftp://ftp.cc.uoc.gr/mirrors/gnu/ + 93. http://ftp.cc.uoc.gr/mirrors/gnu/ + 94. ftp://ftp.esat.net/pub/gnu/ + 95. ftp://ftp.heanet.ie/mirrors/ftp.gnu.org/gnu/ + 96. http://ftp.heanet.ie/mirrors/ftp.gnu.org/gnu/ + 97. ftp://ftp.mirror.nl/pub/mirror/gnu/ + 98. ftp://ftp.nluug.nl/pub/gnu/ + 99. http://gnu.cyclingchampion.com/gnu/ + 100. ftp://ftp.uninett.no/pub/gnu/ + 101. ftp://ftp.task.gda.pl/pub/gnu/ + 102. ftp://sunsite.icm.edu.pl/pub/gnu/ + 103. ftp://ftp.piotrkosoft.net/pub/mirrors/ftp.gnu.org/gnu/ + 104. http://piotrkosoft.net/pub/mirrors/ftp.gnu.org/gnu/ + 105. ftp://mirrors.nfsi.pt/pub/gnu/ + 106. http://mirrors.nfsi.pt/gnu/ + 107. http://mirror.prvtgeo.com/ftp.gnu.org/ + 108. rsync://mirror.prvtgeo.com/gnuftp/ + 109. ftp://ftp.chg.ru/pub/gnu/ + 110. http://gnu.wsection.com/ + 111. http://mirror.lihnidos.org/GNU/ftp/ + 112. http://mirror.lihnidos.org/GNU/alpha/ + 113. ftp://ftp.gul.es/gnu/pub/gnu/ + 114. http://ftp.gul.es/gnu/pub/gnu/ + 115. ftp://ftp.isy.liu.se/pub/gnu/ + 116. ftp://ftp.sunet.se/pub/gnu/ + 117. ftp://ftp.df.lth.se/pub/ftp.gnu.org/pub/gnu/ + 118. http://ftp.df.lth.se/pub/ftp.gnu.org/pub/gnu/ + 119. ftp://sunsite.cnlab-switch.ch/mirror/gnu/ + 120. ftp://ftp.ulak.net.tr/gnu/gnu/ + 121. ftp://www.mirrorservice.org/sites/ftp.gnu.org/ + 122. http://www.mirrorservice.org/sites/ftp.gnu.org/ + 123. ftp://ftp.gnu.org.ua/gnu/ + 124. http://www.gnu.org/server/mirror.html + 125. http://tug.org/texlive + 126. http://fsf.org/join + 127. http://www.fsf.org/associate/support_freedom/donate + 128. http://shop.fsf.org/ + 129. http://www.gnu.org/help + 130. file://localhost/home/troy/git/stow/experimental/ftp.html#header + 131. mailto:gnu@gnu.org + 132. file://localhost/contact/ + 133. mailto:webmasters@gnu.org + 134. file://localhost/server/standards/README.translations.html + 135. file://localhost/order/ftp.html