[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Proposed update to nestselect in stable



Dear Release Team,

In order to make netselect-apt functional for Squeeze users (see bugs #667985
and #665876) I would like to upload a new netselect package to stable.

Please find attached a proposed diff (generated using interdiff) with the
fixes that would be included in the new package. The code is also available
in the Squeeze branch of netselect's SVN repository at svn.debian.org [1]

The changes introduced in this upgrade would be:

  * To netselect-apt: make it work in order to parse properly the mirrors
    list file available at the Debian site. Some code to better handle
    future issues has been also introduced.
  * To netselect-apt's manpage: Update documentation to describe known
    limitations and point users to other information sources.
  * To debian/control: Update Homepage address

The changes are already available in the Sid distribution and  have been
tested in a Squeeze chroot and dot not seem to introduce any new bugs.

Feel free to contact me should you need more information.

Thanks for your assistance,


Javier


[1]
http://anonscm.debian.org/viewvc/collab-maint/deb-maint/netselect/branch/squeeze/
diff -u netselect-0.3.ds1/netselect-apt netselect-0.3.ds1/netselect-apt
--- netselect-0.3.ds1/netselect-apt
+++ netselect-0.3.ds1/netselect-apt
@@ -5,6 +5,7 @@
 #
 # Author: Avery Pennarun <apenwarr@debian.org>
 # Enhancements: Filippo Giunchedi <filippo@esaurito.net>
+#               Javier Fernandez-Sanguino <jfs@debian.org>
 #
 # License: public domain.  Please feel free to improve this script.  It
 # doesn't really belong in the netselect package, particularly since the
@@ -49,18 +50,20 @@
 {
 	SEARCH="$1"
 	PROTO="$2"
-	out=$(netselect -v -s 1 $(cat "$infile" \
+        hosts=$(cat "$infile" \
 		| perl -n -e '
 			$/="<br><br>";
 			while(<>){
 				next if $_ !~ /Site:/;
 				if( ( /Includes architectures:.+'"$arch"'.+/i ||
 						$_ !~ /Includes architectures:/ ) &&
-						m@<br>'"$SEARCH"':.*<a href="('"$PROTO"'://.*?)">@i
+						m@<br>'"$SEARCH"':.*<a.*?href="('"$PROTO"'://.*?)">@i
 					){
 					print("$1\n");
 				}
-			}'))
+			}')
+        [ -z "$hosts" ] && return 200
+	out=`netselect -v -s 1 $hosts`
 	rv=$?
 	echo $out | awk '{print $2}'
 	return $rv
@@ -78,6 +81,23 @@
 	log "most likely you don't have enough permission."
 }
 
+netselect_parse_error()
+{
+        log "netselect-apt was unable to obtain a list of valid hosts from"
+        if [ "$tmpinfile" = "0" ] ;then
+            log "the file provided ($infile)."
+        else
+            log "the file downloaded from the url '$url'."
+        fi
+        log "This might happen because of any of the following reasons: "
+        log "   - there was an error in the file "
+        log "   - the file is not in the format netselect-apt expected "
+        log "   - there is a bug in netselect-apt "
+        log "Please manually check the file. If you believe its contents are correct, file "
+        log "a bug (hint: use 'reportbug') against netselect-apt and provide the file as "
+        log "well as the output generated by the program (hint: use 'script')."
+}
+
 usage()
 {
 	log "Usage: netselect-apt [OPTIONS] [ debian_release ]"
@@ -164,6 +184,9 @@
 elif [ $netselect_rv -eq 6 ]; then
 	netselect_permission_error
 	exit 2
+elif [ $netselect_rv -eq 200 ]; then
+        netselect_parse_error
+        exit 2
 else
 	netselect_generic_error
 	exit 2
diff -u netselect-0.3.ds1/netselect-apt.1 netselect-0.3.ds1/netselect-apt.1
--- netselect-0.3.ds1/netselect-apt.1
+++ netselect-0.3.ds1/netselect-apt.1
@@ -23,6 +23,15 @@
 The output file is written to
 .IR OUTFILE .
 
+If 
+.BR netselect
+is not installed setuid, then 
+.BR netselect-apt
+needs to run as an administrator user (i.e. root). This is only required
+because the network probes done by 
+.BR netselect
+requires these permissions. No changes are done to the system.
+
 If
 .BI "\-i" " INFILE"
 is passed
@@ -78,8 +87,37 @@
+.SH LIMITATIONS
+.BR netselect-apt
+is unable to work with restricted environments in which network filtering is
+implemented as it relies on 
+.BR netselect
+being able to find a suitable mirror. To do this, the system where the script is run
+needs to have network visibility of the mirrors, as it will probe them using UDP probes.
+
+.BR netselect-apt
+is also unable to work in environments where HTTP or FTP network connections have to be
+done through a proxy host, as it relies in being able to test the validity of the
+remote mirrors doing direct network connections to them.
+
+.BR netselect-apt
+will not check if the mirror it suggests as the "fastest" mirror is either valid or
+up-to-date. It is recommended that users that use this tool also validate that the
+mirrors suggested are official mirrors and are also current.
+
+
 .SH SEE ALSO
 .BR netselect (1),
 .BR wget (1),
+.BR curl (1),
 .BR apt (8),
 .IR sources.list (5).
 
+For Debian GNU/Linux it is recommended that users review the official mirror
+list in http://www.debian.org/mirror/official, as well as the mirror checker
+tool at http://mirror.debian.org/status.html (which provides information on the
+up-to-dateness status of mirrors)
+
 .SH AUTHOR
-Avery Pennarun <apenwarr@nit.ca>
+Avery Pennarun <apenwarr@gmail.com>
+
+This manual page and program have been also enhanced by
+Filippo Giunchedi <filippo@esaurito.net> and Javier Fernandez-Sanguino <jfs@debian.org>
+
diff -u netselect-0.3.ds1/debian/changelog netselect-0.3.ds1/debian/changelog
--- netselect-0.3.ds1/debian/changelog
+++ netselect-0.3.ds1/debian/changelog
@@ -1,3 +1,26 @@
+netselect (0.3.ds1-14+squeeze1) stable; urgency=medium
+
+  * Backport fixes and documentation to Squeeze to fix grave bugs.
+  * netselect-apt: 
+    - modify regular expression to to parse newest mirrors list with
+      rel="nofollow" in href links. Thanks to "Nameless" for the patch
+      (Closes: #667985, #665876)
+    - Make the script more robust by having it check and detect some common
+      issues when running netselect: 
+        * No hosts are found to use with netselect, due to an incorrect file
+          being provided or an error when downloading the mirror list
+      Now the script will at least abort with a (hopefully useful) error
+      message instead of writting a useless sources.list (Closes: 238888)
+    - More verbose output when netselect-apt fails indicating possible causes
+      of errors
+  * netselect-apt.1: Update documentation:
+      - List known limitations of the program
+      - Reference the mirror pages for Debian for more information
+      - Add the Debian maintainers to the author's list
+  * debian/control: Update Homepage address
+
+ -- Javier Fernández-Sanguino Peña <jfs@debian.org>  Wed, 11 Apr 2012 02:12:51 +0200
+
 netselect (0.3.ds1-14) unstable; urgency=low
 
   * Fix spelling mistake in netselect-apt.1
diff -u netselect-0.3.ds1/debian/control netselect-0.3.ds1/debian/control
--- netselect-0.3.ds1/debian/control
+++ netselect-0.3.ds1/debian/control
@@ -6,7 +6,7 @@
 Build-Depends: debhelper (>= 5), po-debconf
 VCS-Svn: svn://svn.debian.org/svn/collab-maint/deb-maint/netselect/trunk
 VCS-Browser: http://svn.debian.org/wsvn/collab-maint/deb-maint/netselect/trunk
-Homepage: http://alumnit.ca/~apenwarr/netselect/
+Homepage: http://github.com/apenwarr/netselect
 
 Package: netselect
 Architecture: any

Attachment: signature.asc
Description: Digital signature


Reply to: