--- /dev/null
+James McCoy <jamessan@debian.org>
+James McCoy <jamessan@debian.org> <vega.james@gmail.com>
--- /dev/null
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+\f
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
--- /dev/null
+# Copyright James McCoy <jamessan@debian.org> 2013.
+# Modifications copyright 2002 Julian Gilbey <jdg@debian.org>
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+package Devscripts::Compression;
+
+use Dpkg::Compression qw(!compression_get_property);
+use Dpkg::IPC;
+use Exporter qw(import);
+
+our @EXPORT = (
+ @Dpkg::Compression::EXPORT,
+ qw(compression_get_file_extension_regex compression_guess_from_file),
+ );
+
+eval {
+ Dpkg::Compression->VERSION(1.02);
+ 1;
+} or do {
+ # Ensure we have compression_get_file_extension_regex, regardless of the
+ # version of Dpkg::Compression to ease backporting.
+ *{'Devscripts::Compression::compression_get_file_extension_regex'} = sub
+ {
+ return $compression_re_file_ext;
+ };
+};
+
+# This can potentially be moved to Dpkg::Compression
+
+my %mime2comp = (
+ "application/x-gzip" => "gzip",
+ "application/gzip" => "gzip",
+ "application/x-bzip2" => "bzip2",
+ "application/bzip2 " => "bzip2",
+ "application/x-xz" => "xz",
+ "application/xz" => "xz",
+ "application/zip" => "zip",
+ "application/x-compress" => "compress",
+ "application/java-archive" => "zip",
+);
+
+sub compression_guess_from_file {
+ my $filename = shift;
+ my $mimetype;
+ spawn(exec => ['file', '--dereference', '--brief', '--mime-type', $filename],
+ to_string => \$mimetype,
+ wait_child => 1);
+ chomp($mimetype);
+ if (exists $mime2comp{$mimetype}) {
+ return $mime2comp{$mimetype};
+ } else {
+ return;
+ }
+}
+
+# comp_prog and default_level aren't provided because a) they aren't needed in
+# devscripts and b) the Dpkg::Compression API isn't rich enough to support
+# these as compressors
+my %comp_properties = (
+ compress => {
+ file_ext => 'Z',
+ decomp_prog => ['uncompress'],
+ },
+ zip => {
+ file_ext => 'zip',
+ decomp_prog => ['unzip'],
+ }
+);
+
+sub compression_get_property
+{
+ my ($compression, $property) = @_;
+ if (!exists $comp_properties{$compression}) {
+ return Dpkg::Compression::compression_get_property($compression, $property);
+ }
+
+ if (exists $comp_properties{$compression}{$property}) {
+ return $comp_properties{$compression}{$property};
+ }
+ return;
+}
+
+1;
--- /dev/null
+#
+# DB_File::Lock
+#
+# by David Harris <dharris@drh.net>
+#
+# Copyright (c) 1999-2000 David R. Harris. All rights reserved.
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+#
+
+# We rename the package so that we don't have to package it separately.
+# package DB_File::Lock;
+package Devscripts::DB_File_Lock;
+
+require 5.004;
+
+use strict;
+use vars qw($VERSION @ISA $locks);
+
+@ISA = qw(DB_File);
+$VERSION = '0.05';
+
+use DB_File ();
+use Fcntl qw(:flock O_RDWR O_RDONLY O_WRONLY O_CREAT);
+use Carp qw(croak carp);
+use Symbol ();
+
+# import function can't be inherited, so this magic required
+sub import
+{
+ my $ourname = shift;
+ my @imports = @_; # dynamic scoped var, still in scope after package call in eval
+ my $module = caller;
+ my $calling = $ISA[0];
+ eval " package $module; import $calling, \@imports; ";
+}
+
+sub _lock_and_tie
+{
+ my $package = shift;
+
+ ## Grab the type of tie
+
+ my $tie_type = pop @_;
+
+ ## There are two ways of passing data defined by DB_File
+
+ my $lock_data;
+ my @dbfile_data;
+
+ if ( @_ == 5 ) {
+ $lock_data = pop @_;
+ @dbfile_data = @_;
+ } elsif ( @_ == 2 ) {
+ $lock_data = pop @_;
+ @dbfile_data = @{$_[0]};
+ } else {
+ croak "invalid number of arguments";
+ }
+
+ ## Decipher the lock_data
+
+ my $mode;
+ my $nonblocking = 0;
+ my $lockfile_name = $dbfile_data[0] . ".lock";
+ my $lockfile_mode;
+
+ if ( lc($lock_data) eq "read" ) {
+ $mode = "read";
+ } elsif ( lc($lock_data) eq "write" ) {
+ $mode = "write";
+ } elsif ( ref($lock_data) eq "HASH" ) {
+ $mode = lc $lock_data->{mode};
+ croak "invalid mode ($mode)" if ( $mode ne "read" and $mode ne "write" );
+ $nonblocking = $lock_data->{nonblocking};
+ $lockfile_name = $lock_data->{lockfile_name} if ( defined $lock_data->{lockfile_name} );
+ $lockfile_mode = $lock_data->{lockfile_mode};
+ } else {
+ croak "invalid lock_data ($lock_data)";
+ }
+
+ ## Warn about opening a lockfile for writing when only locking for reading
+
+ # NOTE: This warning disabled for RECNO because RECNO seems to require O_RDWR
+ # even when opening only for reading.
+
+ carp "opening with write access when locking only for reading (use O_RDONLY to fix)"
+ if (
+ ( $dbfile_data[1] && O_RDWR or $dbfile_data[1] && O_WRONLY ) # any kind of write access
+ and $mode eq "read" # and opening for reading
+ and $tie_type ne "TIEARRAY" # and not RECNO
+ );
+
+ ## Determine the mode of the lockfile, if not given
+
+ # THEORY: if someone can read or write the database file, we must allow
+ # them to read and write the lockfile.
+
+ if ( not defined $lockfile_mode ) {
+ $lockfile_mode = 0600; # we must be allowed to read/write lockfile
+ $lockfile_mode |= 0060 if ( $dbfile_data[2] & 0060 );
+ $lockfile_mode |= 0006 if ( $dbfile_data[2] & 0006 );
+ }
+
+ ## Open the lockfile, lock it, and open the database
+
+ my $lockfile_fh = Symbol::gensym();
+ my $saved_umask = umask(0000) if ( umask() & $lockfile_mode );
+ my $open_ok = sysopen($lockfile_fh, $lockfile_name, O_RDWR|O_CREAT,
+ $lockfile_mode);
+ umask($saved_umask) if ( defined $saved_umask );
+ $open_ok or croak "could not open lockfile ($lockfile_name)";
+
+ my $flock_flags = ($mode eq "write" ? LOCK_EX : LOCK_SH) | ($nonblocking ? LOCK_NB : 0);
+ if ( not flock $lockfile_fh, $flock_flags ) {
+ close $lockfile_fh;
+ return undef if ( $nonblocking );
+ croak "could not flock lockfile";
+ }
+
+ my $self = $tie_type eq "TIEHASH"
+ ? $package->SUPER::TIEHASH(@_)
+ : $package->SUPER::TIEARRAY(@_);
+ if ( not $self ) {
+ close $lockfile_fh;
+ return $self;
+ }
+
+ ## Store the info for the DESTROY function
+
+ my $id = "" . $self;
+ $id =~ s/^[^=]+=//; # remove the package name in case re-blessing occurs
+ $locks->{$id} = $lockfile_fh;
+
+ ## Return the object
+
+ return $self;
+}
+
+sub TIEHASH
+{
+ return _lock_and_tie(@_, 'TIEHASH');
+}
+
+sub TIEARRAY
+{
+ return _lock_and_tie(@_, 'TIEARRAY');
+}
+
+sub DESTROY
+{
+ my $self = shift;
+
+ my $id = "" . $self;
+ $id =~ s/^[^=]+=//;
+ my $lockfile_fh = $locks->{$id};
+ delete $locks->{$id};
+
+ $self->SUPER::DESTROY(@_);
+
+ # un-flock not needed, as we close here
+ close $lockfile_fh;
+}
+
+
+
+
+
+1;
+__END__
+
+=head1 NAME
+
+DB_File::Lock - Locking with flock wrapper for DB_File
+
+=head1 SYNOPSIS
+
+ use DB_File::Lock;
+ use Fcntl qw(:flock O_RDWR O_CREAT);
+
+ $locking = "read";
+ $locking = "write";
+ $locking = {
+ mode => "read",
+ nonblocking => 0,
+ lockfile_name => "/path/to/shared.lock",
+ lockfile_mode => 0600,
+ };
+
+ [$X =] tie %hash, 'DB_File::Lock', $filename, $flags, $mode, $DB_HASH, $locking;
+ [$X =] tie %hash, 'DB_File::Lock', $filename, $flags, $mode, $DB_BTREE, $locking;
+ [$X =] tie @array, 'DB_File::Lock', $filename, $flags, $mode, $DB_RECNO, $locking;
+
+ # or place the DB_File arguments inside a list reference:
+ [$X =] tie %hash, 'DB_File::Lock', [$filename, $flags, $mode, $DB_HASH], $locking;
+
+ ...use the same way as DB_File for the rest of the interface...
+
+=head1 DESCRIPTION
+
+This module provides a wrapper for the DB_File module, adding locking.
+
+When you need locking, simply use this module in place of DB_File and
+add an extra argument onto the tie command specifying if the file should
+be locked for reading or writing.
+
+The alternative is to write code like:
+
+ open(LOCK, "<$db_filename.lock") or die;
+ flock(LOCK, LOCK_SH) or die;
+ tie(%db_hash, 'DB_File', $db_filename, O_RDONLY, 0600, $DB_HASH) or die;
+ ... then read the database ...
+ untie(%db_hash);
+ close(LOCK);
+
+This module lets you write
+
+ tie(%db_hash, 'DB_File::Lock', $db_filename, O_RDONLY, 0600, $DB_HASH, 'read') or die;
+ ... then read the database ...
+ untie(%db_hash);
+
+This is better for two reasons:
+
+(1) Less cumbersome to write.
+
+(2) A fatal exception in the code working on the database which does
+not lead to process termination will probably not close the lockfile
+and therefore cause a dropped lock.
+
+=head1 USAGE DETAILS
+
+Tie to the database file by adding an additional locking argument
+to the list of arguments to be passed through to DB_File, such as:
+
+ tie(%db_hash, 'DB_File::Lock', $db_filename, O_RDONLY, 0600, $DB_HASH, 'read');
+
+or enclose the arguments for DB_File in a list reference:
+
+ tie(%db_hash, 'DB_File::Lock', [$db_filename, O_RDONLY, 0600, $DB_HASH], 'read');
+
+The filename used for the lockfile defaults to "$filename.lock"
+(the filename of the DB_File with ".lock" appended). Using a lockfile
+separate from the database file is recommended because it prevents weird
+interactions with the underlying database file library
+
+The additional locking argument added to the tie call can be:
+
+(1) "read" -- acquires a shared lock for reading
+
+(2) "write" -- acquires an exclusive lock for writing
+
+(3) A hash with the following keys (all optional except for the "mode"):
+
+=over 4
+
+=item mode
+
+the locking mode, "read" or "write".
+
+=item lockfile_name
+
+specifies the name of the lockfile to use. Default
+is "$filename.lock". This is useful for locking multiple resources with
+the same lockfiles.
+
+=item nonblocking
+
+determines if the flock call on the lockfile should
+block waiting for a lock, or if it should return failure if a lock can
+not be immediately attained. If "nonblocking" is set and a lock can not
+be attained, the tie command will fail. Currently, I'm not sure how to
+differentiate this between a failure form the DB_File layer.
+
+=item lockfile_mode
+
+determines the mode for the sysopen call in opening
+the lockfile. The default mode will be formulated to allow anyone that
+can read or write the DB_File permission to read and write the lockfile.
+(This is because some systems may require that one have write access to
+a file to lock it for reading, I understand.) The umask will be prevented
+from applying to this mode.
+
+=back
+
+Note: One may import the same values from DB_File::Lock as one may import
+from DB_File.
+
+=head1 GOOD LOCKING ETIQUETTE
+
+To avoid locking problems, realize that it is B<critical> that you release
+the lock as soon as possible. See the lock as a "hot potato", something
+that you must work with and get rid of as quickly as possible. See the
+sections of code where you have a lock as "critical" sections. Make sure
+that you call "untie" as soon as possible.
+
+It is often better to write:
+
+ # open database file with lock
+ # work with database
+ # lots of processing not related to database
+ # work with database
+ # close database and release lock
+
+as:
+
+ # open database file with lock
+ # work with database
+ # close database and release lock
+
+ # lots of processing not related to database
+
+ # open database file with lock
+ # work with database
+ # close database and release lock
+
+Also realize that when acquiring two locks at the same time, a deadlock
+situation can be caused.
+
+You can enter a deadlock situation if two processes simultaneously try to
+acquire locks on two separate databases. Each has locked only one of
+the databases, and cannot continue without locking the second. Yet this
+will never be freed because it is locked by the other process. If your
+processes all ask for their DB files in the same order, this situation
+cannot occur.
+
+=head1 OTHER LOCKING MODULES
+
+There are three locking wrappers for DB_File in CPAN right now. Each one
+implements locking differently and has different goals in mind. It is
+therefore worth knowing the difference, so that you can pick the right
+one for your application.
+
+Here are the three locking wrappers:
+
+Tie::DB_Lock -- DB_File wrapper which creates copies of the database file
+for read access, so that you have kind of a multiversioning concurrent
+read system. However, updates are still serial. Use for databases where
+reads may be lengthy and consistency problems may occur.
+
+Tie::DB_LockFile -- DB_File wrapper that has the ability to lock and
+unlock the database while it is being used. Avoids the tie-before-flock
+problem by simply re-tie-ing the database when you get or drop a
+lock. Because of the flexibility in dropping and re-acquiring the lock
+in the middle of a session, this can be massaged into a system that will
+work with long updates and/or reads if the application follows the hints
+in the POD documentation.
+
+DB_File::Lock (this module) -- extremely lightweight DB_File wrapper
+that simply flocks a lockfile before tie-ing the database and drops the
+lock after the untie. Allows one to use the same lockfile for multiple
+databases to avoid deadlock problems, if desired. Use for databases where
+updates are reads are quick and simple flock locking semantics are enough.
+
+(This text duplicated in the POD documentation, by the way.)
+
+=head1 AUTHOR
+
+David Harris <dharris@drh.net>
+
+Helpful insight from Stas Bekman <stas@stason.org>
+
+=head1 SEE ALSO
+
+DB_File(3).
+
+=cut
--- /dev/null
+# This is Debbugs.pm from the Debian devscripts package
+#
+# Copyright (C) 2008 Adam D. Barratt
+# select() is Copyright (C) 2007 Don Armstrong
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+package Devscripts::Debbugs;
+
+=head1 OPTIONS
+
+=item select [key:value ...]
+
+Uses the SOAP interface to output a list of bugs which match the given
+selection requirements.
+
+The following keys are allowed, and may be given multiple times.
+
+=over 8
+
+=item package
+
+Binary package name.
+
+=item source
+
+Source package name.
+
+=item maintainer
+
+E-mail address of the maintainer.
+
+=item submitter
+
+E-mail address of the submitter.
+
+=item severity
+
+Bug severity.
+
+=item status
+
+Status of the bug.
+
+=item tag
+
+Tags applied to the bug. If I<users> is specified, may include
+usertags in addition to the standard tags.
+
+=item owner
+
+Bug's owner.
+
+=item correspondent
+
+Address of someone who sent mail to the log.
+
+=item affects
+
+Bugs which affect this package.
+
+=item bugs
+
+List of bugs to search within.
+
+=item users
+
+Users to use when looking up usertags.
+
+=item archive
+
+Whether to search archived bugs or normal bugs; defaults to 0
+(i.e. only search normal bugs). As a special case, if archive is
+'both', both archived and unarchived bugs are returned.
+
+=back
+
+For example, to select the set of bugs submitted by
+jrandomdeveloper@example.com and tagged wontfix, one would use
+
+select("submitter:jrandomdeveloper@example.com", "tag:wontfix")
+
+=cut
+
+use strict;
+use warnings;
+
+my $soapurl='Debbugs/SOAP/1';
+our $btsurl='http://bugs.debian.org/';
+my @errors;
+
+sub init_soap {
+ my $soapproxyurl;
+ if ($btsurl =~ m%^https?://(.*)/?$%) {
+ $soapproxyurl = $btsurl . '/';
+ } else {
+ $soapproxyurl = 'http://' . $btsurl . '/';
+ }
+ $soapproxyurl =~ s%//$%/%;
+ $soapproxyurl .= 'cgi-bin/soap.cgi';
+ my $soap = SOAP::Lite->uri($soapurl)->proxy($soapproxyurl);
+
+ $soap->transport->env_proxy();
+ $soap->on_fault(\&getSOAPError);
+
+ return $soap;
+}
+
+my $soap_broken;
+sub have_soap {
+ return ($soap_broken ? 0 : 1) if defined $soap_broken;
+ eval {
+ require SOAP::Lite;
+ };
+
+ if ($@) {
+ if ($@ =~ m%^Can't locate SOAP/%) {
+ $soap_broken="the libsoap-lite-perl package is not installed";
+ } else {
+ $soap_broken="couldn't load SOAP::Lite: $@";
+ }
+ }
+ else {
+ $soap_broken = 0;
+ }
+ return ($soap_broken ? 0 : 1);
+}
+
+sub getSOAPError {
+ my ($soap, $result) = @_;
+ my $err;
+ if (ref($result)) {
+ $err = $result->faultstring;
+ } else {
+ $err = $soap->transport->status;
+ }
+ chomp $err;
+ push @errors, $err;
+
+ return new SOAP::SOM;
+}
+
+sub usertags {
+ die "Couldn't run usertags: $soap_broken\n" unless have_soap();
+
+ my @args = @_;
+
+ my $soap = init_soap();
+ my $usertags = $soap->get_usertag(@_);
+
+ if (@errors or not defined $usertags) {
+ my $error = join("\n", @errors);
+ die "Error retrieving usertags from SOAP server: $error\n";
+ }
+
+ my $result = $usertags->result();
+
+ if (@errors or not defined $result) {
+ my $error = join("\n", @errors);
+ die "Error retrieving usertags from SOAP server: $error\n";
+ }
+
+ return $result;
+}
+
+sub select {
+ die "Couldn't run select: $soap_broken\n" unless have_soap();
+ my @args = @_;
+ my %valid_keys = (package => 'package',
+ pkg => 'package',
+ src => 'src',
+ source => 'src',
+ maint => 'maint',
+ maintainer => 'maint',
+ submitter => 'submitter',
+ from => 'submitter',
+ status => 'status',
+ tag => 'tag',
+ tags => 'tag',
+ usertag => 'tag',
+ usertags => 'tag',
+ owner => 'owner',
+ dist => 'dist',
+ distribution => 'dist',
+ bugs => 'bugs',
+ archive => 'archive',
+ severity => 'severity',
+ correspondent => 'correspondent',
+ affects => 'affects',
+ );
+ my %users;
+ my %search_parameters;
+ my $soap = init_soap();
+ for my $arg (@args) {
+ my ($key,$value) = split /:/, $arg, 2;
+ next unless $key;
+ if (exists $valid_keys{$key}) {
+ if ($valid_keys{$key} eq 'archive') {
+ $search_parameters{$valid_keys{$key}} = $value
+ if $value;
+ } else {
+ push @{$search_parameters{$valid_keys{$key}}},
+ $value if $value;
+ }
+ } elsif ($key =~/users?$/) {
+ $users{$value} = 1 if $value;
+ } else {
+ warn "select(): Unrecognised key: $key\n";
+ }
+ }
+ my %usertags;
+ for my $user (keys %users) {
+ my $ut = usertags($user);
+ next unless defined $ut and $ut ne "";
+ for my $tag (keys %{$ut}) {
+ push @{$usertags{$tag}},
+ @{$ut->{$tag}};
+ }
+ }
+ my $bugs = $soap->get_bugs(%search_parameters,
+ (keys %usertags)?(usertags=>\%usertags):()
+ );
+
+ if (@errors or not defined $bugs) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving bugs from SOAP server: $error\n";
+ }
+
+ my $result = $bugs->result();
+ if (@errors or not defined $result) {
+ my $error = join( "\n", @errors );
+ die "Error while retrieving bugs from SOAP server: $error\n";
+ }
+
+ return $result;
+}
+
+sub status {
+ die "Couldn't run status: $soap_broken\n" unless have_soap();
+ my @args = @_;
+
+ my $soap = init_soap();
+
+ my $bugs = $soap->get_status(@args);
+
+ if (@errors or not defined $bugs) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving bug statuses from SOAP server: $error\n";
+ }
+
+ my $result = $bugs->result();
+
+ if (@errors or not defined $result) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving bug statuses from SOAP server: $error\n";
+ }
+
+ return $result;
+}
+
+sub versions {
+ die "Couldn't run versions: $soap_broken\n" unless have_soap();
+
+ my @args = @_;
+ my %valid_keys = (package => 'package',
+ pkg => 'package',
+ src => 'source',
+ source => 'source',
+ time => 'time',
+ binary => 'no_source_arch',
+ notsource => 'no_source_arch',
+ archs => 'return_archs',
+ displayarch => 'return_archs',
+ );
+
+ my %search_parameters;
+ my @archs = ();
+ my @dists = ();
+
+ for my $arg (@args) {
+ my ($key,$value) = split /:/, $arg, 2;
+ $value ||= "1";
+ if ($key =~ /^arch(itecture)?$/) {
+ push @archs, $value;
+ } elsif ($key =~ /^dist(ribution)?$/) {
+ push @dists, $value;
+ } elsif (exists $valid_keys{$key}) {
+ $search_parameters{$valid_keys{$key}} = $value;
+ }
+ }
+
+ $search_parameters{arch} = \@archs if @archs;
+ $search_parameters{dist} = \@dists if @dists;
+
+ my $soap = init_soap();
+
+ my $versions = $soap->get_versions(%search_parameters);
+
+ if (@errors or not defined $versions) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving package versions from SOAP server: $error\n";
+ }
+
+ my $result = $versions->result();
+
+ if (@errors or not defined $result) {
+ my $error = join("\n", @errors);
+ die "Error while retrieivng package versions from SOAP server: $error";
+ }
+
+ return $result;
+}
+
+sub versions_with_arch {
+ die "Couldn't run versions_with_arch: $soap_broken\n" unless have_soap();
+ my @args = @_;
+
+ my $versions = versions(@args, 'displayarch:1');
+
+ if (not defined $versions) {
+ die "Error while retrieivng package versions from SOAP server: $@";
+ }
+
+ return $versions;
+}
+
+sub newest_bugs {
+ die "Couldn't run newest_bugs: $soap_broken\n" unless have_soap();
+ my $count = shift || '';
+
+ return if $count !~ /^\d+$/;
+
+ my $soap = init_soap();
+
+ my $bugs = $soap->newest_bugs($count);
+
+ if (@errors or not defined $bugs) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving newest bug list from SOAP server: $error";
+ }
+
+ my $result = $bugs->result();
+
+ if (@errors or not defined $result) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving newest bug list from SOAP server: $error";
+ }
+
+ return $result;
+}
+
+# debbugs currently ignores the $msg_num parameter
+# but eventually it might not, so we support passing it
+
+sub bug_log {
+ die "Couldn't run bug_log: $soap_broken\n" unless have_soap();
+
+ my $bug = shift || '';
+ my $message = shift;
+
+ return if $bug !~ /^\d+$/;
+
+ my $soap = init_soap();
+
+ my $log = $soap->get_bug_log($bug, $message);
+
+ if (@errors or not defined $log) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving bug log from SOAP server: $error\n";
+ }
+
+ my $result = $log->result();
+
+ if (@errors or not defined $result) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving bug log from SOAP server: $error\n";
+ }
+
+ return $result;
+}
+
+sub binary_to_source {
+ die "Couldn't run binary_to_source: $soap_broken\n"
+ unless have_soap();
+
+ my $soap = init_soap();
+
+ my $binpkg = shift;
+ my $binver = shift;
+ my $arch = shift;
+
+ return if not defined $binpkg or not defined $binver;
+
+ my $mapping = $soap->binary_to_source($binpkg, $binver, $arch);
+
+ if (@errors or not defined $mapping) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving binary to source mapping from SOAP server: $error\n";
+ }
+
+ my $result = $mapping->result();
+
+ if (@errors or not defined $result) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving binary to source mapping from SOAP server: $error\n";
+ }
+
+ return $result;
+}
+
+sub source_to_binary {
+ die "Couldn't run source_to_binary: $soap_broken\n"
+ unless have_soap();
+
+ my $soap = init_soap();
+
+ my $srcpkg = shift;
+ my $srcver = shift;
+
+ return if not defined $srcpkg or not defined $srcver;
+
+ my $mapping = $soap->source_to_binary($srcpkg, $srcver);
+
+ if (@errors or not defined $mapping) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving source to binary mapping from SOAP server: $error\n";
+ }
+
+ my $result = $mapping->result();
+
+ if (@errors or not defined $result) {
+ my $error = join("\n", @errors);
+ die "Error while retrieving source to binary mapping from SOAP server: $error\n";
+ }
+
+ return $result;
+}
+
+1;
+
+__END__
+
--- /dev/null
+# Based vaguely on the deprecated dpkg-perl package modules
+# Dpkg::Package::List and Dpkg::Package::Package.
+# This module creates an object which holds package names and dependencies
+# (just Depends and Pre-Depends).
+# It can also calculate the total set of subdependencies using the
+# fulldepends method.
+#
+# Copyright 2002 Julian Gilbey <jdg@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+package Devscripts::PackageDeps;
+use strict;
+use Carp;
+use Dpkg::Control;
+require 5.006_000;
+
+
+# This reads in a package file list, such as /var/lib/dpkg/status,
+# and parses it.
+
+# Syntax: new Devscripts::PackageDeps($filename)
+
+sub new ($$)
+{
+ my $this = shift;
+ my $class = ref ($this) || $this;
+ my $filename = shift;
+
+ my $self = {};
+
+ if (! defined $filename) {
+ croak ("requires filename as parameter");
+ }
+
+ bless ($self, $class);
+ $self->parse ($filename);
+ return $self;
+}
+
+# Internal functions
+
+my $multiarch;
+
+sub multiarch ()
+{
+ if (!defined $multiarch) {
+ $multiarch = (system('dpkg --assert-multi-arch >/dev/null 2>&1') >> 8) == 0;
+ }
+ return $multiarch;
+}
+
+sub parse ($$)
+{
+ my $self = shift;
+ my $filename = shift;
+
+ if (! defined $filename) {
+ croak("requires filename as parameter");
+ }
+ open PACKAGE_FILE, $filename or
+ croak("Unable to load $filename: $!");
+
+ my $ctrl;
+ PACKAGE_ENTRY:
+ while (defined($ctrl = Dpkg::Control->new(type => CTRL_FILE_STATUS))
+ && $ctrl->parse(\*PACKAGE_FILE, $filename)) {
+
+ # So we've got a package
+ my $pkg = $ctrl->{Package};
+ my @deps = ();
+
+ if ($ctrl->{Status} =~ /^\S+\s+\S+\s+(\S+)$/) {
+ my $status = $1;
+ unless ($status eq 'installed' or $status eq 'unpacked') {
+ undef $ctrl;
+ next PACKAGE_ENTRY;
+ }
+ }
+
+ for my $dep (qw(Depends Pre-Depends)) {
+ if (exists $ctrl->{$dep}) {
+ my $value = $ctrl->{$dep};
+ $value =~ s/\([^)]+\)//g; # ignore versioning information
+ $value =~ tr/ \t//d; # remove spaces
+ my @dep_pkgs = split /,/, $value;
+ foreach my $dep_pkg (@dep_pkgs) {
+ my @dep_pkg_alts = split /\|/, $dep_pkg;
+ if (@dep_pkg_alts == 1) { push @deps, $dep_pkg_alts[0]; }
+ else { push @deps, \@dep_pkg_alts; }
+ }
+ }
+ }
+
+ $self->{$pkg} = \@deps;
+ if ($ctrl->{Architecture} ne 'all' && multiarch) {
+ my $arch = $ctrl->{Architecture};
+ @deps = map { "$_:$arch" } @deps;
+ $self->{"$pkg:$arch"} = \@deps;
+ }
+ undef $ctrl;
+ }
+ close PACKAGE_FILE or
+ croak("Problems encountered reading $filename: $!");
+}
+
+
+# Get direct dependency information for a specified package
+# Returns an array or array ref depending on context
+
+# Syntax: $obj->dependencies($package)
+
+sub dependencies ($$)
+{
+ my $self = shift;
+ my $pkg = shift;
+
+ if (! defined $pkg) {
+ croak("requires package as parameter");
+ }
+
+ if (! exists $self->{$pkg}) {
+ return undef;
+ }
+
+ return wantarray ?
+ @{$self->{$pkg}} : $self->{$pkg};
+}
+
+
+# Get full dependency information for a specified package or packages,
+# including the packages themselves.
+#
+# This only follows the first of sets of alternatives, and ignores
+# dependencies on packages which do not appear to exist.
+# Returns an array or array ref
+
+# Syntax: $obj->full_dependencies(@packages)
+
+sub full_dependencies ($@)
+{
+ my $self = shift;
+ my @toprocess = @_;
+ my %deps;
+
+ return wantarray ? () : [] unless @toprocess;
+
+ while (@toprocess) {
+ my $next = shift @toprocess;
+ $next = $$next[0] if ref $next;
+ # Already seen?
+ next if exists $deps{$next};
+ # Known package?
+ next unless exists $self->{$next};
+ # Mark it as a dependency
+ $deps{$next} = 1;
+ push @toprocess, @{$self->{$next}};
+ }
+
+ return wantarray ? keys %deps : [ keys %deps ];
+}
+
+
+# Given a set of packages, find a minimal set with respect to the
+# pre-partial order of dependency.
+#
+# This is vaguely based on the dpkg-mindep script by
+# Bill Allombert <ballombe@debian.org>. It only follows direct
+# dependencies, and does not attempt to follow indirect dependencies.
+#
+# This respects the all packages in sets of alternatives.
+# Returns: (\@minimal_set, \%dependencies)
+# where the %dependencies hash is of the form
+# non-minimal package => depending package
+
+# Syntax: $obj->min_dependencies(@packages)
+
+sub min_dependencies ($@)
+{
+ my $self = shift;
+ my @pkgs = @_;
+ my @min_pkgs = ();
+ my %dep_pkgs = ();
+
+ return (\@min_pkgs, \%dep_pkgs) unless @pkgs;
+
+ # We create a directed graph: the %forward_deps hash records arrows
+ # pkg A depends on pkg B; the %reverse_deps hash records the
+ # reverse arrows
+ my %forward_deps;
+ my %reverse_deps;
+
+ # Initialise
+ foreach my $pkg (@pkgs) {
+ $forward_deps{$pkg} = {};
+ $reverse_deps{$pkg} = {};
+ }
+
+ foreach my $pkg (@pkgs) {
+ next unless exists $self->{$pkg};
+ my @pkg_deps = @{$self->{$pkg}};
+ while (@pkg_deps) {
+ my $dep = shift @pkg_deps;
+ if (ref $dep) {
+ unshift @pkg_deps, @$dep;
+ next;
+ }
+ if (exists $forward_deps{$dep}) {
+ $forward_deps{$pkg}{$dep} = 1;
+ $reverse_deps{$dep}{$pkg} = 1;
+ }
+ }
+ }
+
+ # We start removing packages from the tree if they have no dependencies.
+ # Once we have no such packages left, we must have mutual or cyclic
+ # dependencies, so we pick a random one to remove and then start again.
+ # We continue this until there are no packages left in the graph.
+ PACKAGE:
+ while (scalar keys %forward_deps) {
+ foreach my $pkg (keys %forward_deps) {
+ if (scalar keys %{$forward_deps{$pkg}} == 0) {
+ # Great, no dependencies!
+ if (scalar keys %{$reverse_deps{$pkg}}) {
+ # This package is depended upon, so we can remove it
+ # with care
+ foreach my $dep_pkg (keys %{$reverse_deps{$pkg}}) {
+ # take the first mentioned package for the
+ # recorded list of depended-upon packages
+ $dep_pkgs{$pkg} ||= $dep_pkg;
+ delete $forward_deps{$dep_pkg}{$pkg};
+ }
+ } else {
+ # This package is not depended upon, so it must
+ # go into our mindep list
+ push @min_pkgs, $pkg;
+ }
+ # Now remove this node
+ delete $forward_deps{$pkg};
+ delete $reverse_deps{$pkg};
+ next PACKAGE;
+ }
+ }
+
+ # Oh, we didn't find any package which didn't depend on any other.
+ # We'll pick a random one, then. At least *some* package must
+ # be depended upon in this situation; let's pick one of these.
+ foreach my $pkg (keys %forward_deps) {
+ next unless scalar keys %{$reverse_deps{$pkg}} > 0;
+
+ foreach my $dep_pkg (keys %{$forward_deps{$pkg}}) {
+ delete $reverse_deps{$dep_pkg}{$pkg};
+ }
+ foreach my $dep_pkg (keys %{$reverse_deps{$pkg}}) {
+ # take the first mentioned package for the
+ # recorded list of depended-upon packages
+ $dep_pkgs{$pkg} ||= $dep_pkg;
+ delete $forward_deps{$dep_pkg}{$pkg};
+ }
+
+ # Now remove this node
+ delete $forward_deps{$pkg};
+ delete $reverse_deps{$pkg};
+ # And onto the next package
+ goto PACKAGE;
+ }
+
+ # Ouch! We shouldn't ever get here
+ croak("Couldn't determine mindeps; this can't happen!");
+ }
+
+ return (\@min_pkgs, \%dep_pkgs);
+}
+
+1;
--- /dev/null
+#! /usr/bin/perl -w
+
+# Copyright Bill Allombert <ballombe@debian.org> 2001.
+# Modifications copyright 2002 Julian Gilbey <jdg@debian.org>
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+package Devscripts::Packages;
+
+use Carp;
+use Dpkg::Control;
+
+BEGIN{
+ use Exporter ();
+ use vars qw(@EXPORT @ISA %EXPORT_TAGS);
+ @EXPORT=qw(PackagesToFiles FilesToPackages PackagesMatch InstalledPackages);
+ @ISA=qw(Exporter);
+ %EXPORT_TAGS=();
+}
+
+=head1 NAME
+
+Devscript::Packages - Interface to the dpkg package database
+
+=head1 SYNOPSIS
+
+use Devscript::Packages;
+
+@files=PackagesToFiles(@packages);
+
+@packages=FilesToPackages(@files);
+
+@packages=PackagesMatch($regexp);
+
+$packages_hashref=InstalledPackages($sources);
+
+=head1 DESCRIPTION
+
+
+PackagesToFiles: Return a list of files contained in a list of packages.
+
+FilesToPackages: Return a list of packages containing at least
+one file in a list of files, taking care to handle diversions correctly.
+
+PackagesMatch: list of packages whose status match regexp.
+
+InstalledPackages: ref to hash with keys being installed packages
+(status = install ok installed). If $sources is true, then include
+the corresponding source packages as well in the list.
+
+=cut
+
+my $multiarch;
+
+sub multiarch ()
+{
+ if (!defined $multiarch) {
+ $multiarch = (system('dpkg --assert-multi-arch >/dev/null 2>&1') >> 8) == 0;
+ }
+ return $multiarch;
+}
+
+# input: a list of packages names.
+# output: list of files they contain.
+
+sub PackagesToFiles (@)
+{
+ return () if @_ == 0;
+
+ my %files=();
+
+ # We fork and use an exec, so that we don't have to worry how long an
+ # input string the shell can handle.
+
+ my $pid;
+ my $sleep_count=0;
+ do {
+ $pid = open(DPKG, "-|");
+ unless (defined $pid) {
+ carp("cannot fork: $!");
+ croak("bailing out") if $sleep_count++ > 6;
+ sleep 10;
+ }
+ } until defined $pid;
+
+ if ($pid) { # parent
+ while (<DPKG>) {
+ chomp;
+ next if /^package diverts others to: / or -d $_;
+ $files{$_} = 1;
+ }
+ close DPKG or croak("dpkg -L failed: $!");
+ } else { # child
+ # We must use C locale, else diversion messages may be translated.
+ $ENV{'LC_ALL'}='C';
+ exec('dpkg', '-L', @_)
+ or croak("can't exec dpkg -L: $!");
+ }
+
+ return keys %files;
+}
+
+
+# This basically runs a dpkg -S with a few bells and whistles
+#
+# input: a list of files.
+# output: list of packages they belong to.
+
+sub FilesToPackages (@)
+{
+ return () if @_ == 0;
+
+ # We fork and use an exec, so that we don't have to worry how long an
+ # input string the shell can handle.
+
+ my @dpkg_out;
+ my $pid;
+ my $sleep_count=0;
+ do {
+ $pid = open(DPKG, "-|");
+ unless (defined $pid) {
+ carp("cannot fork: $!");
+ croak("bailing out") if $sleep_count++ > 6;
+ sleep 10;
+ }
+ } until defined $pid;
+
+ if ($pid) { # parent
+ while (<DPKG>) {
+ # We'll process it later
+ chomp;
+ push @dpkg_out, $_;
+ }
+ if (! close DPKG) {
+ # exit status of 1 just indicates unrecognised files
+ if ($? & 0xff || $? >> 8 != 1) {
+ carp("warning: dpkg -S exited with signal " . ($? & 0xff) . " and status " . ($? >> 8));
+ }
+ }
+ } else { # child
+ # We must use C locale, else diversion messages may be translated.
+ $ENV{'LC_ALL'}='C';
+ open STDERR, '>& STDOUT'; # Capture STDERR as well
+ exec('dpkg', '-S', @_)
+ or croak("can't exec dpkg -S: $!");
+ }
+
+
+ my %packages=();
+ foreach my $curfile (@_) {
+ my $pkgfrom;
+ foreach my $line (@dpkg_out) {
+ # We want to handle diversions nicely.
+ # Ignore local diversions
+ if ($line =~ /^local diversion from: /) {
+ # Do nothing
+ }
+ elsif ($line =~ /^local diversion to: (.+)$/) {
+ if ($curfile eq $1) {
+ last;
+ }
+ }
+ elsif ($line =~ /^diversion by (\S+) from: (.+)$/) {
+ if ($curfile eq $2) {
+ # So the file we're looking has been diverted
+ $pkgfrom=$1;
+ }
+ }
+ elsif ($line =~ /^diversion by (\S+) to: (.+)$/) {
+ if ($curfile eq $2) {
+ # So the file we're looking is a diverted file
+ # We shouldn't see it again
+ $packages{$1} = 1;
+ last;
+ }
+ }
+ elsif ($line =~ /^dpkg: \Q$curfile\E not found\.$/) {
+ last;
+ }
+ elsif ($line =~ /^dpkg-query: no path found matching pattern \Q$curfile\E\.$/) {
+ last;
+ }
+ elsif ($line =~ /^(.*): \Q$curfile\E$/) {
+ my @pkgs = split /,\s+/, $1;
+ if (@pkgs == 1 || !grep /:/, @pkgs) {
+ # Only one package, or all Multi-Arch packages
+ map { $packages{$_} = 1 } @pkgs;
+ }
+ else {
+ # We've got a file which has been diverted by some package
+ # or is Multi-Arch and so is listed in two packages. If it
+ # was diverted, the *diverting* package is the one with the
+ # file that was actually used.
+ my $found=0;
+ foreach my $pkg (@pkgs) {
+ if ($pkg eq $pkgfrom) {
+ $packages{$pkgfrom} = 1;
+ $found=1;
+ last;
+ }
+ }
+ if (! $found) {
+ carp("Something wicked happened to the output of dpkg -S $curfile");
+ }
+ }
+ # Prepare for the next round
+ last;
+ }
+ }
+ }
+
+ return keys %packages;
+}
+
+
+# Return a list of packages whose status entries match a given pattern
+
+sub PackagesMatch ($)
+{
+ my $match=$_[0];
+ my @matches=();
+
+ open STATUS, '/var/lib/dpkg/status'
+ or croak("Can't read /var/lib/dpkg/status: $!");
+
+ my $ctrl;
+ while (defined($ctrl = Dpkg::Control->new())
+ && $ctrl->parse(\*STATUS, '/var/lib/dpkg/status')) {
+ if ("$ctrl" =~ m/$match/m) {
+ my $package = $ctrl->{Package};
+ if ($ctrl->{Architecture} ne 'all' && multiarch) {
+ $package .= ":$ctrl->{Architecture}";
+ }
+ push @matches, $package;
+ }
+ undef $ctrl;
+ }
+
+ close STATUS or croak("Problem reading /var/lib/dpkg/status: $!");
+ return @matches;
+}
+
+
+# Which packages are installed (Package and Source)?
+
+sub InstalledPackages ($)
+{
+ my $source = $_[0];
+
+ open STATUS, '/var/lib/dpkg/status'
+ or croak("Can't read /var/lib/dpkg/status: $!");
+
+ my $ctrl;
+ while (defined($ctrl = Dpkg::Control->new(type => CTRL_FILE_STATUS))
+ && $ctrl->parse(\*STATUS, '/var/lib/dpkg/status')) {
+ if ($ctrl->{Status} !~ /^install\s+ok\s+installed$/) {
+ next;
+ }
+ if ($source) {
+ if (exists $ctrl->{Source}) {
+ $matches{$ctrl->{Source}} = 1;
+ }
+ }
+ if (exists $ctrl->{Package}) {
+ $matches{$ctrl->{Package}} = 1;
+ if ($ctrl->{Architecture} ne 'all' && multiarch) {
+ $matches{"$ctrl->{Package}:$ctrl->{Architecture}"} = 1;
+ }
+ }
+ undef $ctrl;
+ }
+
+ close STATUS or croak("Problem reading /var/lib/dpkg/status: $!");
+
+ return \%matches;
+}
+
+1;
+
+=head1 AUTHOR
+
+Bill Allombert <ballombe@debian.org>
+
+=head1 COPYING
+
+Copyright 2001 Bill Allombert <ballombe@debian.org>
+Modifications copyright 2002 Julian Gilbey <jdg@debian.org>
+dpkg-depcheck is free software, covered by the GNU General Public License, and
+you are welcome to change it and/or distribute copies of it under
+certain conditions. There is absolutely no warranty for dpkg-depcheck.
+
+=cut
--- /dev/null
+# Copyright Bill Allombert <ballombe@debian.org> 2001.
+# Modifications copyright 2002 Julian Gilbey <jdg@debian.org>
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+package Devscripts::Set;
+
+use strict;
+
+BEGIN{
+ use Exporter ();
+ use vars qw(@EXPORT @ISA %EXPORT_TAGS);
+ @EXPORT=qw(SetMinus SetInter SetUnion);
+ @ISA=qw(Exporter);
+ %EXPORT_TAGS=();
+}
+
+# Several routines to work with arrays whose elements are unique
+# (here called sets)
+
+=head1 NAME
+
+Devscripts::Set - Functions for handling sets.
+
+=head1 SYNOPSIS
+
+use Devscripts::Set;
+
+@set=ListToSet(@list);
+
+@setdiff=SetMinus(\@set1,\@set2);
+
+@setinter=SetInter(\@set1,\@set2);
+
+@setunion=SetUnion(\@set1,\@set2);
+
+=head1 DESCRIPTION
+
+ListToSet: Make a set (array with duplicates removed) from a list of
+items given by an array.
+
+SetMinus, SetInter, SetUnion: Compute the set theoretic difference,
+intersection, union of two sets given as arrays.
+
+=cut
+
+# Transforms a list to a set, removing duplicates
+# input: list
+# output: set
+
+sub ListToSet (@)
+{
+ my %items;
+
+ grep $items{$_}++, @_;
+
+ return keys %items;
+}
+
+
+# Compute the set-theoretic difference of two sets.
+# input: ref to Set 1, ref to Set 2
+# output: set
+
+sub SetMinus ($$)
+{
+ my ($set1,$set2)=@_;
+ my %items;
+
+ grep $items{$_}++, @$set1;
+ grep $items{$_}--, @$set2;
+
+ return grep $items{$_}>0, keys %items;
+}
+
+
+# Compute the set-theoretic intersection of two sets.
+# input: ref to Set 1, ref to Set 2
+# output: set
+
+sub SetInter ($$)
+{
+ my ($set1,$set2)=@_;
+ my %items;
+
+ grep $items{$_}++, @$set1;
+ grep $items{$_}++, @$set2;
+
+ return grep $items{$_}==2, keys %items;
+}
+
+
+#Compute the set-theoretic union of two sets.
+#input: ref to Set 1, ref to Set 2
+#output: set
+
+sub SetUnion ($$)
+{
+ my ($set1,$set2)=@_;
+ my %items;
+
+ grep $items{$_}++, @$set1;
+ grep $items{$_}++, @$set2;
+
+ return grep $items{$_}>0, keys %items;
+}
+
+1;
+
+=head1 AUTHOR
+
+Bill Allombert <ballombe@debian.org>
+
+=head1 COPYING
+
+Copyright 2001 Bill Allombert <ballombe@debian.org>
+Modifications Copyright 2002 Julian Gilbey <jdg@debian.org>
+dpkg-depcheck is free software, covered by the GNU General Public License, and
+you are welcome to change it and/or distribute copies of it under
+certain conditions. There is absolutely no warranty for dpkg-depcheck.
+
+=cut
--- /dev/null
+# This module is stolen from debbugs until the real
+# URI::query_form properly handles ; and is released
+# under the terms of the GPL version 2, or any later
+# version at your option.
+# See the file README and COPYING for more information.
+#
+# Copyright 2007 by Don Armstrong <don@donarmstrong.com>.
+# query_form is
+# Copyright 1995-2003 Gisle Aas.
+# Copyright 1995 Martijn Koster.
+
+
+package Devscripts::URI;
+
+=head1 NAME
+
+Devscripts::URI -- Derivative of URI which overrides the query_param
+ method to use ';' instead of '&' for separators.
+
+=head1 SYNOPSIS
+
+use Devscripts::URI;
+
+=head1 DESCRIPTION
+
+See L<URI> for more information.
+
+=head1 BUGS
+
+None known.
+
+=cut
+
+use warnings;
+use strict;
+use base qw(URI URI::_query);
+
+=head2 query_param
+
+ $uri->query_form( $key1 => $val1, $key2 => $val2, ... )
+
+Exactly like query_param in L<URI> except query elements are joined by
+; instead of &.
+
+=cut
+
+{
+
+ package URI::_query;
+
+ no warnings 'redefine';
+ # Handle ...?foo=bar&bar=foo type of query
+ sub URI::_query::query_form {
+ my $self = shift;
+ my $old = $self->query;
+ if (@_) {
+ # Try to set query string
+ my @new = @_;
+ if (@new == 1) {
+ my $n = $new[0];
+ if (ref($n) eq "ARRAY") {
+ @new = @$n;
+ }
+ elsif (ref($n) eq "HASH") {
+ @new = %$n;
+ }
+ }
+ my @query;
+ while (my($key,$vals) = splice(@new, 0, 2)) {
+ $key = '' unless defined $key;
+ $key =~ s/([;\/?:@&=+,\$\[\]%])/$URI::Escape::escapes{$1}/g;
+ $key =~ s/ /+/g;
+ $vals = [ref($vals) eq "ARRAY" ? @$vals : $vals];
+ for my $val (@$vals) {
+ $val = '' unless defined $val;
+ $val =~ s/([;\/?:@&=+,\$\[\]%])/$URI::Escape::escapes{$1}/g;
+ $val =~ s/ /+/g;
+ push(@query, "$key=$val");
+ }
+ }
+ # We've changed & to a ; here.
+ $self->query(@query ? join(';', @query) : undef);
+ }
+ return if !defined($old) || !length($old) || !defined(wantarray);
+ return unless $old =~ /=/; # not a form
+ map { s/\+/ /g; uri_unescape($_) }
+ # We've also changed the split here to split on ; as well as &
+ map { /=/ ? split(/=/, $_, 2) : ($_ => '')} split(/[&;]/, $old);
+ }
+}
+
+
+
+
+
+
+1;
+
+
+__END__
+
+
+
+
+
+
--- /dev/null
+# Copyright (C) 1998,2002 Julian Gilbey <jdg@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at
+# your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+# The functions in this Perl module are versort, upstream_versort and
+# deb_versort. They each take as input an array of elements of the form
+# [version, data, ...] and sort them into decreasing order according to dpkg's
+# understanding of version sorting. The output is a sorted array. In
+# upstream_versort, "version" is assumed to be an upstream version number only,
+# whereas in deb_versort, "version" is assumed to be a Debian version number,
+# possibly including an epoch and/or a Debian revision. versort is available
+# for compatibility reasons. It compares versions as Debian versions
+# (i.e. 1-2-4 < 1-3) but disables checks for wellformed versions.
+#
+# The returned array has the greatest version as the 0th array element.
+
+package Devscripts::Versort;
+use Dpkg::Version;
+
+sub versort (@)
+{
+ return _versort(0, sub { return shift->[0] }, @_);
+}
+
+sub deb_versort (@)
+{
+ return _versort(1, sub { return shift->[0] }, @_);
+}
+
+sub upstream_versort (@)
+{
+ return _versort(0, sub { return "1:" . shift->[0] . "-0" }, @_);
+}
+
+sub _versort ($@)
+{
+ my ($check, $getversion, @namever_pairs) = @_;
+
+ foreach my $pair (@namever_pairs) {
+ unshift(@$pair, Dpkg::Version->new(&$getversion($pair), check => $check));
+ }
+
+ my @sorted = sort { $b->[0] <=> $a->[0] } @namever_pairs;
+
+ foreach my $pair (@sorted) {
+ shift @$pair;
+ }
+
+ return @sorted;
+}
+
+1;
--- /dev/null
+# Simplified Makefile for devscripts
+
+include Makefile.common
+
+DESTDIR =
+
+PERL_MODULES = Devscripts
+EXAMPLES = conf.default README.mk-build-deps
+
+PREFIX ?= /usr
+DOCDIR ?= $(PREFIX)/share/doc/devscripts
+MAN1DIR ?= $(PREFIX)/share/man/man1
+
+all: version make_scripts $(EXAMPLES) translated_manpages
+
+version:
+ rm -f version
+ dpkg-parsechangelog | perl -ne '/^Version: (.*)/ && print $$1' \
+ > version
+
+conf.default: conf.default.in version
+ rm -f $@ $@.tmp
+ VERSION=`cat version` && sed -e "s/###VERSION###/$$VERSION/" $< \
+ > $@.tmp && mv $@.tmp $@
+
+translated_manpages:
+ $(MAKE) -C po4a/
+ touch translated_manpages
+
+clean_translated_manpages:
+ # Update the POT/POs and remove the translated man pages
+ $(MAKE) -C po4a/ clean
+ rm -f translated_manpages
+
+clean: clean_scripts clean_translated_manpages
+ rm -f version conf.default make_scripts
+
+online-test:
+ $(MAKE) -C test/ online-test
+
+test: test_test test_scripts
+
+test-installed:
+ $(MAKE) -C test/ $@
+
+install: all install_scripts
+ cp -a $(PERL_MODULES) $(DESTDIR)$(PERLMOD_DIR)
+ cp $(EXAMPLES) $(DESTDIR)$(EXAMPLES_DIR)
+ install -D README $(DESTDIR)$(DOCDIR)/README
+ install -dD $(DESTDIR)$(MAN1DIR)
+ cp doc/*.1 $(DESTDIR)$(MAN1DIR)
+ ln -sf edit-patch.1 $(DESTDIR)$(MAN1DIR)/add-patch.1
+
+test_test:
+ $(MAKE) -C test/ test
+
+make_scripts: version
+ $(MAKE) -C scripts/
+ touch $@
+clean_scripts: clean_translated_manpages
+ $(MAKE) -C scripts/ clean
+test_scripts:
+ $(MAKE) -C scripts/ test
+install_scripts:
+ $(MAKE) -C scripts/ install DESTDIR=$(DESTDIR)
+
+.PHONY: online-test test test-installed
--- /dev/null
+GEN_MAN1S := bts.1 build-rdeps.1 chdist.1 dcontrol.1 debcheckout.1 debcommit.1 \
+ deb-reversion.1 desktop2menu.1 dget.1 licensecheck.1 mass-bug.1 \
+ mk-build-deps.1 mk-origtargz.1 namecheck.1 rmadison.1 sadt.1 svnpath.1 \
+ tagpending.1 origtargz.1 transition-check.1 who-permits-upload.1
+
+PERLMOD_DIR = /usr/share/devscripts
+EXAMPLES_DIR = /usr/share/devscripts
+
--- /dev/null
+README for Debian devscripts package
+====================================
+
+Devscripts provides several scripts which may be of use to Debian
+developers. The following gives a summary of the available scripts --
+please read the manpages for full details about the use of these
+scripts. They are contributed by multiple developers; for details of
+the authors, please see the code or manpages.
+
+Also, many of these scripts have dependencies on other packages, but
+rather than burden the package with a large number of dependencies,
+most of which will not be needed by most people, the individual
+dependencies are listed as "Recommends" in the control file. This
+ensures that the packages will be installed by default but allows
+users to remove them if desired. The dependencies and recommendations
+are listed in square brackets in the description below, as well as in
+the Description field in the control file.
+
+And now, in mostly alphabetical order, the scripts:
+
+- annotate-output: run a command and prepend time and stream (O for stdout,
+ E for stderr) for every line of output
+
+- archpath: Prints arch (tla/Bazaar) package names. Also supports
+ calculating the package names for other branches. [tla | bazaar]
+
+- bts: A command-line tool for accessing the BTS, both to
+ send mails to control@bts.debian.org and to access the web pages and
+ SOAP interface of the BTS. [www-browser, libauthen-sasl-perl,
+ libnet-smtp-ssl-perl, libsoap-lite-perl, libwww-perl, bsd-mailx | mailx]
+
+- build-rdeps: Searches for all packages that build-depend on a given package
+ [dctrl-tools]
+
+- chdist: tool to easily play with several distributions [dctrl-tools]
+
+- checkbashisms: check whether a /bin/sh script contains any common
+ bash-specific contructs
+
+- cowpoke: upload a Debian source package to a cowbuilder host and build it,
+ optionally also signing and uploading the result to an incoming queue
+ [ssh-client]
+
+- cvs-debi, cvs-debc: wrappers around debi and debc respectively (see below)
+ which allow them to be called from the CVS working directory.
+ [cvs-buildpackage]
+
+- cvs-debrelease: wrapper around debrelease which allows it to be called
+ from the CVS working directory. [cvs-buildpackage, dupload | dput,
+ ssh-client]
+
+- cvs-debuild: A wrapper for cvs-buildpackage to use debuild as its package
+ building program. [cvs-buildpackage, fakeroot, lintian, gnupg]
+
+- dcmd: run a given command replacing the name of a .changes or .dsc file
+ with each of the files referenced therein
+
+- dcontrol: remotely query package and source control files for all Debian
+ distributions. [liburl-perl, libwww-perl]
+
+- dd-list: given a list of packages, pretty-print it ordered by maintainer
+
+- debc: List contents of current package. Do this after a successful
+ "debuild" to see if the package looks all right.
+
+- debchange (abbreviation dch): Modifies debian/changelog and manages version
+ numbers for you. It will either increment the version number or add a
+ entry for the current version, depending upon the options given to it.
+ [libdistro-info-perl, libparse-debcontrol-perl, libsoap-lite-perl]
+
+- debcheckout: checkout the development repository of a Debian package
+
+- debclean: Clean a Debian source tree. Debclean will clean all Debian
+ source trees below the current directory, and if requested, also remove
+ all files that were generated from these source trees (that is .deb, .dsc
+ and .changes files). It will keep the .diffs and original files, though,
+ so that the binaries and other files can be rebuilt if necessary.
+ [fakeroot]
+
+- debcommit: Commits changes to cvs, darcs, svn, svk, tla, bzr, git, or hg,
+ using new entries in debian/changelog as the commit message. Also supports
+ tagging Debian package releases. [cvs | darcs | subversion | svk | tla |
+ bzr | git-core | mercurial, libtimedate-perl]
+
+- debdiff: A program which examines two .deb files or two .changes files and
+ reports on any difference found in their file lists. Useful for ensuring
+ that no files were inadvertently lost between versions. Can also examine
+ two .dsc files and report on the changes between source versions.
+ For a deeper comparison one can use the debbindiff package.
+ [wdiff, patchutils]
+
+- debi: Installs the current package by using the setuid root debpkg
+ script described below. It assumes that the current package has
+ just been built (for example by debuild), and the .deb lives in the
+ parent directory, and will effectively run dpkg -i on the .deb. The
+ ability to install the package with a very short command is very
+ useful when troubleshooting packages.
+
+- debpkg: A wrapper for dpkg used by debi to allow convenient testing
+ of packages. For debpkg to work, it needs to be made setuid root,
+ and this needs to be performed by the sysadmin -- it is not
+ installed as setuid root by default. (Note that being able to run a
+ setuid root debpkg is effectively the same as having root access to
+ the system, so this should be done with caution.) Having debpkg as
+ a wrapper for dpkg can be a Good Thing (TM), as it decreases the
+ potential for damage by accidental wrong use of commands in
+ superuser mode (e.g., an inadvertent rm -rf * in the wrong directory
+ is disastrous as many can attest to).
+
+- debrelease: A wrapper around dupload or dput which figures out which
+ version to upload, and then calls dupload or dput to actually perform
+ the upload. [dupload | dput, ssh-client]
+
+- debrsign: This transfers a .changes/.dsc pair to a remote machine for
+ signing, and runs debsign on the remote machine over an SSH connection.
+ [gnupg, debian-keyring, ssh-client]
+
+- debsign: Use GNU Privacy Guard to sign the changes (and possibly dsc)
+ files created by running dpkg-buildpackage with no-sign options. Useful
+ if you are building a package on a remote machine and wish to sign it on
+ a local one. This script is capable of automatically downloading the
+ .changes and .dsc files from a remote machine. [gnupg, debian-keyring,
+ ssh-client]
+
+- debsnap: grab packages from http://snapshot.debian.org [libwww-perl,
+ libjson-perl]
+
+- debuild: A wrapper for building a package (i.e., dpkg-buildpackage) to
+ avoid problems with insufficient permissions and wrong paths etc.
+ Debuild will set up the proper environment for building a package.
+ Debuild will use the fakeroot program to build the package by default, but
+ can be instructed to use any other gain-root command, or can even be
+ installed setuid root. Debuild can also be used to run various of
+ the debian/rules operations with the same root-gaining procedure.
+ Debuild will also run lintian to check that the package does not
+ have any major policy violations. [fakeroot, lintian, gnupg]
+
+- deb-reversion: increases a binary package version number and repacks the
+ package, useful for porters and the like
+
+- dep3changelog: generate a changelog entry from a DEP3-style patch header
+
+- desktop2menu: given a freedesktop.org desktop file, generate a skeleton
+ for a menu file [libfile-desktopentry-perl]
+
+- dget: Downloads Debian source and binary packages. Point at a .changes or
+ .dsc to download all references files. Specify a package name to download
+ it from the configured apt repository. [wget | curl]
+
+- diff2patches: extracts patches from a .diff.gz file placing them under
+ debian/ or, if present, debian/patches [patchutils]
+
+- dpkg-depcheck, dpkg-genbuilddeps: Runs a specified command (such as
+ debian/rules build) or dpkg-buildpackage, respectively, to determine the
+ packages used during the build process. This information can be helpful
+ when trying to determine the packages needed in the Build-Depends etc.
+ lines in the debian/control file. [build-essential, strace]
+
+- dscextract: extract a single file from a Debian source package [patchutils]
+
+- dscverify: check the signature and MD5 sums of a dsc file against the most
+ current Debian keyring on your system. [gnupg, debian-keyring,
+ libdigest-md5-perl]
+
+- edit-patch: add/edit a patch for a source package and commit the changes
+ [quilt | dpatch | cdbs]
+
+- getbuildlog: download package build logs from Debian auto-builders [wget]
+
+- grep-excuses: grep the update_excuses.html file to find out what is
+ happening to your packages. [libterm-size-perl, wget, w3m]
+
+- licensecheck: given a list of source files, attempt to determine which
+ license (or combination of licenses) each file is placed under.
+
+- list-unreleased: searches for packages marked UNRELEASED in their
+ changelog
+
+- manpage-alert: locate binaries without corresponding manpages [man-db]
+
+- mass-bug: mass-file bug reports [bsd-mailx | mailx]
+
+- mergechanges: merge .changes files from the same release but built
+ on different architectures
+
+- mk-build-deps: Given a package name and/or control file, generate a binary
+ package which may be installed to satisfy the build-dependencies of the
+ given package. [equivs]
+
+- mk-origtargz: Rename upstream tarball, optionally changing the compression
+ and removing unwanted files.
+ [unzip, xz-utils, file]
+
+- namecheck: Check project names are not already taken.
+
+- nmudiff: prepare a diff of this version (presumably an NMU against the
+ previously released version (as per the changelog) and submit the diff
+ to the BTS. [patchutils, mutt]
+
+- origtargz: fetch the orig tarball of a Debian package from various sources,
+ and unpack it
+
+- plotchangelog: display information from a changelog graphically using
+ gnuplot. [libtimedate-perl, gnuplot]
+
+- pts-subscribe: subscribe to the PTS (Package Tracking System) for a
+ limited period of time [bsd-mailx | mailx, at]
+
+- rc-alert: list installed packages which have release-critical bugs
+ [wget | curl]
+
+- rmadison: remotely query the Debian archive database about packages
+ [liburi-perl, wget | curl]
+
+- sadt: run DEP-8 tests [python3-debian]
+
+- suspicious-source: output a list of files which are not common source
+ files [python3-magic]
+
+- svnpath: Prints the path to the Subversion repository of a Subversion
+ checkout. Also supports calculating the paths for branches and
+ tags in a repository independent fashion. Used by debcommit to generate
+ svn tags. [subversion]
+
+- tagpending: runs from a Debian source tree and tags bugs that are to be
+ closed in the latest changelog as pending. [libsoap-lite-perl]
+
+- transition-check: Check a list of source packages for involvement in
+ transitions for which uploads to unstable are currently blocked
+ [libwww-perl, libyaml-syck-perl]
+
+- uscan: Automatically scan for and download upstream updates. Uscan can
+ also call a program such as uupdate to attempt to update the Debianised
+ version based on the new update. Whilst uscan could be used to release
+ the updated version automatically, it is probably better not to without
+ testing it first. Uscan can also verify detached OpenPGP signatures if
+ upstream's signing key is known. [gpgv, gnupg, liblwp-protocol-https-perl,
+ libwww-perl, unzip, xz-utils, file]
+
+- uupdate: Update the package with an archive or patches from
+ an upstream author. This will be of help if you have to update your
+ package. It will try to apply the latest diffs to your package and
+ tell you how successful it was. [patch]
+
+- what-patch: determine what patch system, if any, a source package is using
+ [patchutils]
+
+- whodepends: check which maintainers' packages depend on a package
+
+- who-permits-upload: Retrieve information about Debian Maintainer access
+ control lists [gnupg, libencode-locale-perl, libparse-debcontrol-perl,
+ libwww-perl, debian-keyring]
+
+- who-uploads: determine the most recent uploaders of a package to the Debian
+ archive [gnupg, debian-keyring, debian-maintainers, wget]
+
+- wnpp-alert: list installed packages which are orphaned or up for adoption
+ [wget | curl]
+
+- wnpp-check: check whether there is an open request for packaging or
+ intention to package bug for a package [wget | curl]
+
+- wrap-and-sort: wrap long lines and sort items in packaging files
+ [python3-debian]
+
+- /usr/share/doc/devscripts/examples: This directory contains examples of
+ procmail and exim scripts for sorting mail arriving to Debian
+ mailing lists.
+
+Typical Maintenance cycle with devscripts
+-----------------------------------------
+
+1. cd <source directory of package>
+
+2. Editing of files
+
+3. Log the changes with: dch -i "I changed this"
+ If desired, use debcommit to commit changes to cvs, svn, arch or git.
+
+4. Run debuild to compile it. If it fails, return to 2. (You could
+ also just test the compilation by running the appropriate part of
+ debian/rules.)
+
+5. Check if package contents appear to be ok with "debc"
+
+6. Install the package with "debi" and test the functionality it
+ should provide. (Note that this step requires debpkg to be setuid
+ root, or you to be logged in as root or similar.)
+
+7. If all is ok release it by running debrelease.
+
+8. Optionally, use debcommit --release to commit and tag the release
+ in revision control.
+
+
+Wrapper scripts
+---------------
+
+Devscripts includes two wrappers (the above mentioned "debuild" and
+"debpkg") that are intended to make life easier for Debian developers.
+These wrappers unset most environment variables for security reasons,
+set a secure PATH and then run the appropriate program (such as dpkg).
+Processing Makefiles is inherently dangerous though, since any UNIX
+command can be executed. The fakeroot command makes it possible to
+build a package in a secure way: it does not require any genuine root
+access, but rather pretends that it has it. It is strongly
+recommended that you install the "fakeroot" package! Installation of
+a package with dpkg always requires superuser mode and is therefore
+inherently dangerous. Debi aims to reduce the possibility of typos
+by only performing a dpkg -i as root. This does not, however, do
+anything for security, as there is no problem creating a package with
+a setuid-root shell using fakeroot and then installing it with debpkg.
+So only allow trusted users access to a setuid root debpkg, if at all!
+
+The wrappers have to be manually equipped to gain the necessary
+privileges to do their jobs because of security concerns. You have to
+equip "debpkg" with superuser privileges. "debuild" needs superuser
+privileges only if fakeroot or another gain-root command is not
+available.
+
+You can either:
+
+(a) invoke these wrappers from "sudo" or "super" or any other way you
+ have to control superuser access, or
+
+(b) you can set them up to be accessible only to a group of users.
+ (Some people suggest that this is highly dangerous since it
+ creates another executable that runs with the setuid root bit set
+ and which won't ever ask you for a password!) If you choose this
+ method, it can be done by issuing the following command:
+
+ dpkg-statoverride --update --add root root_group 4754 /usr/bin/debpkg
+
+ once (and similarly for debuild if you really need it). This will
+ enable access to debpkg for all users who are members of the group
+ "root_group". Remember that you are in effect giving those users
+ superuser access to your system! This information will be stored
+ in the dpkg database and remembered across upgrades.
+
+ Because of the security implications, only do this on your home
+ linux box, NOT on a busy internet server (and possibly not even
+ there).
+
+Originally by Christoph Lameter <clameter@waterf.org>
+Modified extensively by Julian Gilbey <jdg@debian.org>
--- /dev/null
+@packagename@ for Debian
+
+
+This package has the sole purpose of installing packages required for
+building the Debian package indicated by its name; it does so by
+depending on these packages:
+
+@depends@
+
+It was generated by the mk-build-deps program from the information in
+the Build-Depends field(s) of the source package.
+
+@packagename@ can be safely removed after the package it was created for
+is built. If that breaks anything, a dependency is missing in the
+package's Depends field.
--- /dev/null
+List of things to do when adding a new script to devscripts package:
+
+1. Add the script under scripts/
+ - the script should have .sh or .pl extension, otherwise have a look at
+ scripts/Makefile and patch it
+ - if the script is perl and uses embedded POD for documentation, add an
+ entry to the GEN_MAN1S variable in Makefile
+2. Add an entry in README
+3. Add an entry in debian/control
+4. Add an entry in po4a/devscripts-po4a.conf
+5. Add any necessary entries to the Suggests: and Recommends: lines in
+ debian/control
+6. Modify conf.default.in and debian/postinst if necessary
+7. Modify debian/copyright if necessary
+8. Add entries in .gitignore
+9. Add a changelog entry
--- /dev/null
+# This configuration file gives defaults for the scripts in
+# the devscripts package, as documented in the individual manpages.
+# Variables defined here may be overridden by a per-user ~/.devscripts
+# configuration file, which has exactly the same syntax as this file.
+#
+# This file is sourced by /bin/bash, and should only contain
+# comment lines (beginning with a '#'), and lines of the form
+# VARIABLE=value
+# The value must be quoted if there are spaces in it.
+# Variables corresponding to switches (on/off; yes/no) must take
+# one of the values 'yes' or 'no'.
+# The variable names are all of the form PROGNAME_VARNAME,
+# or DEVSCRIPTS_VARNAME if they are more generally applicable.
+#
+# As new variables are introduced into the devscripts program, their
+# descriptions and default values will be appended as comments
+# to this file.
+
+# Variables recognised as of devscripts version ###VERSION###:
+
+##### Package-wide variables
+#
+# Lists of which scripts are affected by these package-wide variables
+# can be found in the devscripts.conf(5) manpage.
+#
+#
+# Directory Name Checking
+#
+# Several programs check the directory name and refuse to function if
+# it does not match the name of the package being worked on. (The
+# details are described in the individual manpages.)
+# These two variables control this behaviour, corresponding to the
+# --check-dirname-level and --check-dirname-regex command line options.
+# The possible values of DEVSCRIPTS_CHECK_DIRNAME_LEVEL are:
+# 0 never check the directory name
+# 1 check the directory name only if the program has changed directory
+# 2 always check the directory name
+# The variable DEVSCRIPTS_DIRNAME_REGEXP is a Perl regex which
+# defines what is considered a valid directory name for the source
+# package PACKAGE; if it includes a '/', then it must match the full
+# directory path, otherwise it must match the full directory name.
+#
+# The default settings are:
+# DEVSCRIPTS_CHECK_DIRNAME_LEVEL=1
+# DEVSCRIPTS_CHECK_DIRNAME_REGEX='PACKAGE(-.+)?'
+
+##### annotate-output
+#
+# No variables currently
+
+##### archpath
+#
+# No variables currently
+
+##### bts
+#
+# Default bts show/bugs to run in offline mode?
+# BTS_OFFLINE=no
+#
+# Cache all visited bug reports once a cache has been established
+# for the first time?
+# BTS_CACHE=yes
+#
+# How much to mirror when caching? The minimal amount (min), the mbox
+# version as well (mbox) or the whole works (full)?
+# BTS_CACHE_MODE=min
+#
+# Always refresh the cache, even if nothing's changed?
+# BTS_FORCE_REFRESH=no
+#
+# How do we read an mbox? This will be split on whitespace, then
+# %s is replaced by the mbox name and %% by a single %.
+# BTS_MAIL_READER='mutt -f %s'
+#
+# What sendmail command do we use? This will be split on whitespace.
+# BTS_SENDMAIL_COMMAND='/usr/sbin/sendmail'
+#
+# Download only new bugs when caching? If set to yes, don't check for
+# updates in bugs we already have.
+# BTS_ONLY_NEW=no
+#
+# Which SMTP host should be used? Note that if both an SMTP host and
+# sendmail command are specified in the configuration file(s), the SMTP
+# host will be used unless overridden by --sendmail on the command line
+# BTS_SMTP_HOST=reportbug.debian.org
+#
+# If the SMTP host specified above requires authentication, the following
+# options may be used to specify the username and password to use.
+# If only a username is provided then the password will be prompted for
+# before sending the e-mail
+# BTS_SMTP_AUTH_USERNAME=user
+# BTS_SMTP_AUTH_PASSWORD=pass
+#
+# Specify a HELO to use when connecting to the SMTP host. If not supplied
+# and the file /etc/mailname exists, its contents will be used as the HELO
+# BTS_SMTP_HELO=foo.example.com
+#
+# Include resolved bugs when caching?
+# BTS_INCLUDE_RESOLVED=yes
+#
+# Suppress BTS acknowledgment e-mails (ignored by the control bot)
+# BTS_SUPPRESS_ACKS=no
+#
+# Allow the generated message to be edited and, if necessary, abandoned
+# before sending it to the control bot?
+#
+# If set to yes, prompt for confirmation / edit / abandonment.
+# If set to force, spawn an editor and then proceed as if set to yes
+# BTS_INTERACTIVE=no
+#
+# Specify a list of e-mail addresses to which a carbon copy of the
+# generated e-mail to the control bot should automatically be sent.
+# BTS_DEFAULT_CC=example@example.com
+#
+# Which debbugs server should be used?
+# BTS_SERVER=bugs.debian.org
+
+##### chdist
+#
+# No variables currently
+
+##### checkbashisms
+#
+# No variables currently
+
+##### cowpoke
+#
+# No variables currently; see cowpoke.conf and cowpoke(1)
+
+##### cvs-debc
+#
+# No variables currently
+
+##### cvs-debi
+#
+# No variables currently
+
+##### cvs-debrelease
+#
+# No variables currently
+
+##### cvs-debuild
+#
+# No variables currently
+
+##### dd-list
+#
+# No variables currently
+
+##### dcmd
+#
+# No variables currently
+
+##### dcontrol
+#
+# URL to query
+# DCONTROL_URL="https://qa.debian.org/cgi-bin/dcontrol"
+
+##### debc
+#
+# debc recognises the DEBRELEASE_DEBS_DIR variable; see debrelease
+# below for more information.
+
+##### deb-reversion
+#
+# No variables currently
+
+##### debchange/dch
+#
+# Preserve the source tree dirname if the upstream version changes?
+# DEBCHANGE_PRESERVE=no
+#
+# Query the BTS when --closes is being used?
+# DEBCHANGE_QUERY_BTS=yes
+#
+# Select a heuristic to use to determine whether the package has released.
+# See the debchange man page for details.
+# DEBCHANGE_RELEASE_HEURISTIC=log
+# DEBCHANGE_RELEASE_HEURISTIC=changelog
+#
+# Introduce multiple-maintainer markers in changelog sections?
+# DEBCHANGE_MULTIMAINT=yes
+#
+# When appending to a multiple-maintainer changelog, if there are
+# existing changes made by the current maintainer, should new
+# changelog entries be appended to the existing entries?
+# DEBCHANGE_MULTIMAINT_MERGE=no
+#
+# When appending entries to the changelog, should the trailer line
+# be maintained as-is?
+# DEBCHANGE_MAINTTRAILER=yes
+#
+# Use a fixed timezone in changelog entries?
+# DEBCHANGE_TZ=UTC
+#
+# Allow a new version to be lower than the current package version
+# if the new version matches the specified regular expression
+# DEBCHANGE_LOWER_VERSION_PATTERN=bpo
+#
+# Attempt to automatically determine whether the current changelog
+# stanza represents an NMU?
+# DEBCHANGE_AUTO_NMU=yes
+#
+# When --release was used and an editor presented, force the changelog
+# to be explicitly saved in the editor? If this is set to "no" then
+# the changes made by --release will be automatically saved.
+# DEBCHANGE_FORCE_SAVE_ON_RELEASE=yes
+
+##### debcheckout
+#
+# List of space-separated pairs REGEXP/REPLACEMENT_TEXT to define
+# custom rules to enable authenticated mode.
+# DEBCHECKOUT_AUTH_URLS=''
+#
+# For debian-dir-only repositories, also retrieve the source
+# package, unpack it, and move the missing files over.
+# DEBCHECKOUT_SOURCE=auto
+#
+# Username for authenticated mode, can be overriden with -u|--user.
+# DEBCHECKOUT_USER=''
+#
+# See debcheckout(1) for a more precise description of syntax and
+# semantics of these settings.
+
+##### debclean
+#
+# Remove .deb, .changes, .dsc and .upload files?
+# DEBCLEAN_CLEANDEBS=no
+
+##### debcommit
+#
+# Strip a leading "* " from commit messages taken from changelogs?
+# DEBCOMMIT_STRIP_MESSAGE=yes
+#
+# Sign created tags using gnupg?
+# DEBCOMMIT_SIGN_TAGS=no
+#
+# Take any uncommitted changes in the changelog in
+# to account when determining the commit message
+# for a release?
+# DEBCOMMIT_RELEASE_USE_CHANGELOG=no
+#
+# Sign commits using gnupg?
+# DEBCOMMIT_SIGN_COMMITS=no
+
+##### debdiff
+#
+# Show directory names which appear in the filelist?
+# DEBDIFF_DIRS=no
+#
+# Compare control files?
+# DEBDIFF_CONTROL=yes
+#
+# Which control files to compare? A comma-separated list, with
+# possibilities such as postinst, config and so on; ALL means compare
+# all control files.
+# DEBDIFF_CONTROLFILES=control
+#
+# Show files which have moved between .debs?
+# DEBDIFF_SHOW_MOVED=no
+#
+# Option to pass to wdiff
+# DEBDIFF_WDIFF_OPT=
+#
+# Include the output of diffstat?
+# DEBDIFF_SHOW_DIFFSTAT=no
+#
+# Compare control files in source packages using wdiff?
+# DEBDIFF_WDIFF_SOURCE_CONTROL=no
+#
+# Always compare package in version order, rather than the order specified
+# on the command line?
+# DEBDIFF_AUTO_VER_SORT=no
+#
+# Unpack tarballs found in the top level source directory.
+# DEBDIFF_UNPACK_TARBALLS=yes
+
+##### debi
+#
+# debc recognises the DEBRELEASE_DEBS_DIR variable; see debrelease
+# below for more information.
+
+##### debpkg
+#
+# No variables currently
+
+##### debrelease
+#
+# This specifies which uploader program to use. As of devscripts ###VERSION###
+# the recognised values are "dupload" (default) and "dput". Check the
+# debrelease(1) manpage for any recent changes to this variable
+# DEBRELEASE_UPLOADER=dupload
+#
+# This specifies the directory, relative to the top of the source
+# tree, in which the .changes and .debs files are to be found. Note
+# that this also affects debc and debi.
+# DEBRELEASE_DEBS_DIR=..
+
+##### debrsign
+#
+# No variables currently
+
+##### debsign
+#
+# debsign recognises the DEBRELEASE_DEBS_DIR variable; see debrelease
+# above for more information.
+#
+# Always re-sign files even if they are already signed, without prompting.
+# DEBSIGN_ALWAYS_RESIGN=yes
+#
+# Which signing program to use? gpg and pgp are the usual values; the
+# default is determined as described in the manpage.
+# Corresponds to -p option
+# DEBSIGN_PROGRAM=
+#
+# How the signing program works; must be either gpg or pgp as of
+# devscripts version ###VERSION###. The default is described in the
+# manpage. Corresponds to -sgpg and -spgp.
+# DEBSIGN_SIGNLIKE=
+#
+# Maintainer name (only used to determine GPG keyid; -m option)
+# DEBSIGN_MAINT=
+#
+# GPG keyid to use (-k option)
+# DEBSIGN_KEYID=
+
+##### debsnap
+#
+# Where to put the directory named <prefix>-<package>/
+# default: source-$package_name if unset
+# DEBSNAP_DESTDIR=
+#
+# Verbosely show messages (yes/no)
+# default: no
+# DEBSNAP_VERBOSE=no
+#
+# The base URL of the archive to download from
+# DEBSNAP_BASE_URL=http://snapshot.debian.org
+#
+# A sed regexp to transform pool/<component>/f/foo into the desired layout
+# default: make the directory from pool/<component>/f/foo to pool/f/foo
+# DEBSNAP_CLEAN_REGEX="s@\([^/]*\)/[^/]*/\(.*\)@\1/\2@"
+#
+# Where the Sources.gz lives, subdirectory of DEBSNAP_BASE_URL/<clean dir>/
+# default: DEBSNAP_BASE_URL/<clean dir>/source/Sources.gz
+# DEBSNAP_SOURCES_GZ_PATH=source/Sources.gz
+
+##### debuild
+#
+# Do we preserve the whole environment except for PATH?
+# DEBUILD_PRESERVE_ENV=no
+#
+# Are there any environment variables we should preserve? This should
+# be a comma-separated list.
+# DEBUILD_PRESERVE_ENVVARS=""
+#
+# How to set a preserved environment variable, in this case to set
+# FOO=bar.
+# DEBUILD_SET_ENVVAR_FOO=bar
+#
+# Do we check for the existence of the .orig.tar.gz before calling
+# dpkg-buildpackage?
+# DEBUILD_TGZ_CHECK=yes
+#
+# Corresponds to the dpkg-buildpackage -r option.
+# DEBUILD_ROOTCMD=fakeroot
+#
+# Extra options given to dpkg-buildpackage before any command-line
+# options specified. Single options containing spaces should be
+# quoted, for example "-m'Julian Gilbey <jdg@debian.org>' -us -uc"
+# If this contains a -r, -d or -D option, this will also be recognised
+# when running debuild binary|binary-arch|...
+# DEBUILD_DPKG_BUILDPACKAGE_OPTS=""
+#
+# Do we run lintian at the end of a full run?
+# DEBUILD_LINTIAN=yes
+#
+# Extra options given to lintian before any command-line options
+# specified.
+# DEBUILD_LINTIAN_OPTS=""
+#
+# Colon-separated list of options to be added to the beginning
+# of PATH once it has been sanitised
+# DEBUILD_PREPEND_PATH="/usr/lib/ccache"
+#
+# Credentials to pass to debrsign when signing dsc / changes files
+# Setting this option to a non-blank string implies using debrsign
+# DEBUILD_SIGNING_USERNAME="user@host"
+#
+# Hooks; see the manpage for details of these
+# DEBUILD_DPKG_BUILDPACKAGE_HOOK=""
+# DEBUILD_CLEAN_HOOK=""
+# DEBUILD_DPKG_SOURCE_HOOK=""
+# DEBUILD_BUILD_HOOK=""
+# DEBUILD_BINARY_HOOK=""
+# DEBUILD_FINAL_CLEAN_HOOK=""
+# DEBUILD_LINTIAN_HOOK=""
+# DEBUILD_SIGNING_HOOK=""
+# DEBUILD_POST_DPKG_BUILDPACKAGE_HOOK=""
+
+##### dget
+#
+# Extra directories to search for files in addition to
+# /var/cache/apt/archives. This is a colon-separated list of directories.
+# DGET_PATH=""
+#
+# Unpack downloaded source packages
+# DGET_UNPACK=yes
+#
+# Verify source package signatures using dscverify
+# DGET_VERIFY=yes
+
+##### diff2patches
+#
+# No variables currently
+
+##### dpkg-depcheck
+#
+# Extra options given to dpkg-depcheck before any command-line
+# options specified. For example: "-b --features=-catch-alternatives"
+# DPKG_DEPCHECK_OPTIONS=""
+
+##### dpkg-genbuilddeps
+#
+# No variables currently
+
+##### dpkg-sig
+#
+# dpkg-sig is not a part of devscripts, but shares this configuration file.
+# It pays attention to the values of DEBSIGN_MAINT and DEBSIGN_KEY in
+# addition to the following.
+#
+# This key ID takes precedence over the rest
+# DPKGSIG_KEYID=
+#
+# Do we sign the .changes and .dsc files? See the manpage for more
+# info. Valid options are no, auto, yes, full and force_full.
+# DPKGSIG_SIGN_CHANGES=auto
+#
+# Do we cache the gpg passphrase by default? This can be dangerous!
+# DPKGSIG_CACHE_PASS=no
+
+##### dscverify
+#
+# A colon separated list of extra keyrings to read.
+# DSCVERIFY_KEYRINGS=""
+
+##### getbuildlog
+#
+# No variables currently
+
+##### grep-excuses
+#
+# This specifies a default maintainer name or email to hunt for
+# GREP_EXCUSES_MAINTAINER=""
+#
+# Is this running on ftp-master.debian.org? If so, we use the local
+# excuses file
+# GREP_EXCUSES_FTP_MASTER=no
+
+##### licensecheck
+#
+# Print the file header being parsed before the corresponding license
+# information?
+# LICENSECHECK_VERBOSE=no
+#
+# How many lines of each file should be parsed for license information?
+# LICENSECHECK_PARSELINES=60
+
+##### list-unreleased
+#
+# No variables currently
+
+##### mergechanges
+#
+# No variables currently
+
+##### manpage-alert
+#
+# No variables currently
+
+##### mass-bug
+#
+# No variables currently
+
+#### mk-build-deps
+#
+# Which tool to use for installing build depends?
+# MKBUILDDEPS_TOOL="/usr/bin/apt-get --no-install-recommends"
+#
+# Remove package files after install?
+# MKBUILDDEPS_REMOVE_AFTER_INSTALL=yes
+#
+# Tool used to gain root privileges to install the deb
+# MKBUILDDEPS_ROOTCMD=''
+
+##### namecheck
+#
+# No variables currently; see .namecheckrc
+
+##### nmudiff
+#
+# Number of days to indicate that an NMU upload has been delayed by
+# using the DELAYED upload queue. 0 indicates no delay.
+# Defaults to "XX" which adds a placeholder to the e-mail.
+# NMUDIFF_DELAY=3
+#
+# Should we use mutt to edit and send the message or just a plain old
+# editor?
+# NMUDIFF_MUTT=yes
+#
+# Should we always submit a new report (yes), always send to the bugs
+# which are being closed (no), or send to the bug being closed if
+# there is only one of them, otherwise send a new report (maybe)?
+# NMUDIFF_NEWREPORT=maybe
+#
+# nmudiff also uses the value of BTS_SENDMAIL_COMMAND if NMUDIFF_MUTT=no
+
+##### plotchangelog
+#
+# Command line options to use (space separated). None of the options
+# should contain spaces. Use the PLOTCHANGELOG_GNUPLOT variable for
+# the --gnuplot command line option.
+# PLOTCHANGELOG_OPTIONS=""
+#
+# Here we can give gnuplot options. Any command line --gnuplot
+# commands will be appended to these.
+# PLOTCHANGELOG_GNUPLOT=""
+
+##### pts-subscribe
+#
+# How long will we subscribe for by default? The default is 30 days.
+# Setting this to 'forever' means that no unsubscription request will
+# be scheduled.
+# PTS_UNTIL='now + 30 days'
+
+##### rc-alert
+#
+# No variables currently
+
+##### rmadison
+#
+# Add a custom URL to the default list of shorthands so one
+# can use it with -u without having to specify the full URL
+#
+# RMADISON_URL_MAP_EXAMPLE=http://example.com/madison.cgi
+#
+# Default URL to use if none is specified on the command line.
+# RMADISON_DEFAULT_URL=debian
+#
+# Default architecture to use if none is specified on the command line.
+# use --architecture='*' to run an unrestricted query when
+# RMADISON_ARCHITECTURE is set.
+# RMADISON_ARCHITECTURE=source,i386,amd64,all
+
+##### svnpath
+#
+# No variables currently
+
+##### tagpending
+#
+# No variables currently
+
+##### transition-check
+#
+# No variables currently
+
+##### uscan
+#
+# Should we download newer upstream files we come across?
+# USCAN_DOWNLOAD=yes
+#
+# Should we use FTP PASV mode for ftp:// links? 'default' means let
+# Net::FTP(3) make the choice (primarily based on the FTP_PASSIVE
+# environment variable); 'yes' and 'no' override the default
+# USCAN_PASV=default
+#
+# Should we create a symlink from the downloaded tar.gz file to
+# pkg_version.orig.tar.gz, rename it like this or do nothing?
+# Options are 'symlink'/'yes', 'rename' or 'no'
+# USCAN_SYMLINK=yes
+#
+# Should we use DEHS style output (XML format)?
+# USCAN_DEHS_OUTPUT=no
+#
+# Should we give verbose output?
+# USCAN_VERBOSE=no
+#
+# What user agent string should we send with requests?
+# (Default is 'Debian uscan X.Y.Z')
+# USCAN_USER_AGENT=''
+#
+# Where should downloaded files be placed?
+# USCAN_DESTDIR=..
+#
+# Automatically repack bzipped tar or zip archives to gzipped tars?
+# USCAN_REPACK=no
+#
+# Use the Files-Excluded field in debian/copyright to determine whether
+# the orig tarball needs to be repacked to remove non-DFSG content?
+# USCAN_EXCLUSION=yes
+
+##### uupdate
+#
+# Should we retain the pristine upstream source wherever possible?
+# UUPDATE_PRISTINE=yes
+#
+# Should we symlink the .orig.tar.gz file to its new name or
+# copy it instead? yes=symlink, no=copy
+# UUPDATE_SYMLINK_ORIG=yes
+#
+# Corresonds to the dpkg-buildpackage -r option and debuild
+# DEBUILD_ROOTCMD option. Normally, this can be left empty, as then
+# the debuild setting will be used.
+# UUPDATE_ROOTCMD=''
+
+##### whodepends
+#
+# No variables currently
+
+##### who-uploads
+#
+# Display the date of the upload?
+# WHOUPLOADS_DATE=no
+#
+# Maximum number of uploads to display per package
+# WHOUPLOADS_MAXUPLOADS=3
+#
+# Colon-separated list of keyrings to examine by default
+# WHOUPLOADS_KEYRINGS=/usr/share/keyrings/debian-keyring.gpg:/usr/share/keyrings/debian-keyring.pgp:/usr/share/keyrings/debian-maintainers.gpg
+
+##### wnpp-alert
+#
+# No variables currently
+
+##### wnpp-check
+#
+# No variables currently
+
--- /dev/null
+# System configuration file for cowpoke
+# This file is sourced as a bash shell script, see cowpoke(1) for more details.
+
+# Global defaults
+# These apply to every arch and dist in a single cowpoke invocation.
+# ------------------------------------------------------------------
+
+# The hostname of the machine where cowbuilder is installed
+# eg. BUILDD_HOST="buildd.your.org"
+BUILDD_HOST=
+
+# The username for unprivileged operations on BUILDD_HOST
+# If unset the user that invoked cowpoke will be assumed, or the user that
+# is configured for the BUILDD_HOST in your ssh config will be used.
+#BUILDD_USER=
+
+# The Debian architecture(s) to build for. A space separated list of
+# architectures may be used here to build for all of them in a single pass.
+#BUILDD_ARCH="$(dpkg-architecture -qDEB_BUILD_ARCH 2>/dev/null)"
+
+# The Debian distro to build for. A space separated list of distros may be
+# used here to build for all of them in a single pass.
+#BUILDD_DIST="unstable"
+
+# The directory (under BUILDD_USER's home if relative) to upload packages
+# for building and where build logs and the result of post-build checks will
+# be placed
+#INCOMING_DIR="cowbuilder-incoming"
+
+# The filesystem root for all pbuilder COW and result files. Arch and dist
+# specific subdirectories normally will be created under this. The apt cache
+# and temporary build directory will also be located under this path.
+#PBUILDER_BASE="/var/cache/pbuilder"
+
+# The gpg key id to pass to debsign's -k option. eg. SIGN_KEYID="0x12345678"
+# Leave this unset if you do not wish to sign packages built in this way.
+#SIGN_KEYID=
+
+# The 'host' alias to pass to dput. eg. UPLOAD_QUEUE="ftp-master"
+# Leave this unset if you do not wish to upload packages built this way.
+# This option will be ignored if SIGN_KEYID is unset.
+#UPLOAD_QUEUE=
+
+# The command to use to gain root privileges on the remote build machine.
+# This is only required to invoke cowbuilder and allow it to enter its chroot,
+# so you may restrict this user to only being able to run that command with
+# escalated privileges. Something like this in sudoers will enable invoking
+# cowbuilder without an additional password entry required:
+# youruser ALL = NOPASSWD: /usr/sbin/cowbuilder
+# Alternatively you could use ssh with a forwarded key, or whatever other
+# mechanism suits your local access policy. su -c isn't really suitable
+# here due to its quoting requirements being different from all the rest.
+#BUILDD_ROOTCMD="sudo"
+
+# The utility to use when creating a new build root. Alternatives are
+# debootstrap or cdebootstrap.
+#DEBOOTSTRAP="cdebootstrap"
+
+# If set, package files resulting from the build will be copied to the path
+# (local or remote) that this is set to, after the build completes. It is
+# unset by default and can be overridden with --return or --no-return.
+# The given path must exist, it will not be created.
+#RETURN_DIR="."
+
+# =============================================================================
+#
+# Arch and dist specific options
+# These are variables of the form: $arch_$dist_VAR, which apply only for a
+# particular target arch/dist build. The following variables are supported:
+#
+# $arch_$dist_RESULT_DIR - The directory where pbuilder/cowbuilder will place
+# the built package, and where any previously built
+# packages may be found for comparison using debdiff
+# after building.
+#
+# $arch_$dist_BASE_PATH - The directory where the COW master files are found.
+#
+# $arch_$dist_BASE_DIST - The code name to pass as the --distribution option
+# for cowbuilder instead of $dist. This is necessary
+# when $dist is a locally significant name assigned
+# to some specially configured build chroot, such as
+# 'wheezy_backports', and not the formal suite name
+# of a distro release known to debootstrap.
+#
+# $arch_$dist_CREATE_OPTS - A bash array containing additional options to pass
+# verbatim to cowbuilder when this chroot is created
+# for the first time (using the --create option).
+# This is useful when options like --othermirror are
+# wanted to create specialised chroot configurations
+# such as 'wheezy_backports'.
+#
+# $arch_$dist_UPDATE_OPTS - A bash array containing additional options to pass
+# verbatim to cowbuilder each time the base of this
+# chroot is updated.
+#
+# $arch_$dist_BUILD_OPTS - A bash array containing additional options to pass
+# verbatim to cowbuilder each time a package build is
+# performed in this chroot. This is useful when you
+# want to use some option like --twice which cowpoke
+# does not directly need to care about.
+#
+# Each element in these arrays corresponds to a single argument (in the ARGV
+# sense) that will be passed to cowbuilder. This ensures that arguments which
+# may contain whitespace or have strange quoting requirements or other special
+# characters will not be mangled before they get to cowbuilder.
+#
+# Bash arrays are initialised using the following form:
+# VARIABLE=( "arg1" "arg 2" "--option" "value" "--opt=val" "etc. etc." )
+#
+#
+# $arch_$dist_SIGN_KEYID - An optional arch and dist specific override for
+# the global SIGN_KEYID option.
+#
+# $arch_$dist_UPLOAD_QUEUE - An optional arch and dist specific override for
+# the global UPLOAD_QUEUE option.
+#
+# -----------------------------------------------------------------------------
+
+#amd64_unstable_RESULT_DIR="$PBUILDER_BASE/amd64/unstable/result"
+#amd64_unstable_BASE_PATH="$PBUILDER_BASE/amd64/unstable/base.cow"
+
+#amd64_experimental_RESULT_DIR="$PBUILDER_BASE/amd64/experimental/result"
+#amd64_experimental_BASE_PATH="$PBUILDER_BASE/amd64/experimental/base.cow"
+
+#i386_unstable_RESULT_DIR="$PBUILDER_BASE/i386/unstable/result"
+#i386_unstable_BASE_PATH="$PBUILDER_BASE/i386/unstable/base.cow"
+
+#i386_experimental_RESULT_DIR="$PBUILDER_BASE/i386/experimental/result"
+#i386_experimental_BASE_PATH="$PBUILDER_BASE/i386/experimental/base.cow"
+
+#amd64_wheezy_bpo_BASE_DIST="wheezy"
+#amd64_wheezy_bpo_CREATE_OPTS=(--othermirror "deb http://ftp.debian.org/debian wheezy-backports main")
+
--- /dev/null
+devscripts (2.14.0) unstable; urgency=medium
+
+ uscan now looks for upstream's keyring under debian/upstream/ as either
+ signing-key.pgp or, for an armored keyring, signing-key.asc. The previously
+ used location, debian/upstream-signing-key.pgp, will be checked as a last
+ resort for a transition period.
+
+ -- James McCoy <jamessan@debian.org> Sat, 25 Jan 2014 10:19:02 -0500
+
+devscripts (2.11.9) unstable; urgency=low
+
+ The default for mk-build-deps --tool option/MKBUILDDEPS_TOOL configuration
+ changed from "apt-get" to "apt-get --no-install-recommends".
+
+ -- James McCoy <jamessan@debian.org> Sun, 17 Jun 2012 22:56:26 +0200
+
+devscripts (2.11.7) unstable; urgency=low
+
+ The heuristic used to determine what action to perform when no options are
+ given to debchange now defaults to 'changelog'. To stay with the previous
+ behavior, DEBCHANGE_RELEASE_HEURISTIC=log can be added to the configuration
+ file.
+
+ Enabling the changelog heuristic also enables DEBCHANGE_MAINTTRAILER. This
+ can be disabled by adding DEBCHANGE_MAINTTRAILER=no to the configuration
+ file.
+
+ -- James McCoy <jamessan@debian.org> Sun, 29 Apr 2012 18:38:46 -0400
+
+devscripts (2.11.2) unstable; urgency=low
+
+ Support for pgp-style commands has been removed from debsign/debrsign. As
+ such, the DEBSIGN_SIGNLIKE configuration variable has also been removed.
+
+ -- James McCoy <jamessan@debian.org> Tue, 15 Nov 2011 21:36:40 -0500
+
+devscripts (2.10.54) unstable; urgency=low
+
+ manpage-alert now, as originally intended, prints out the full path to the
+ binary which is lacking a manpage instead of simply the binary name.
+
+ Before:
+ No manual entry for somebinary
+
+ After:
+ No manual entry for /usr/bin/somebinary
+
+ -- James Vega <jamessan@debian.org> Thu, 06 Aug 2009 18:03:41 -0400
+
+devscripts (2.10.24) unstable; urgency=low
+
+ Starting with devscripts 2.10.21, debchange attempts to
+ automatically determine whether an NMU changelog should be
+ started, by comparing DEBEMAIL and DEBFULLNAME to the
+ package's Maintainer and Uploaders fields.
+
+ This behaviour may now be disabled using the DEBCHANGE_AUTO_NMU
+ configuration file variable.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Mon, 07 Apr 2008 14:38:08 +0100
+
+devscripts (2.10.20) unstable; urgency=low
+
+ devscripts 2.10.19 modified debcommit's --release option to use the
+ uncommitted changes (if any) in the changelog to derive the commit
+ message.
+
+ This behaviour is now optional and can be enabled using the -R /
+ --release-use-changelog command line option or by setting the
+ DEBCOMMIT_RELEASE_USE_CHANGELOG configuration option to "yes".
+
+ The default is to use the previous (i.e. pre-2.10.19) behaviour.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Wed, 19 Mar 2008 20:31:20 +0000
+
+devscripts (2.10.19) unstable; urgency=low
+
+ In devscripts 2.10.17, dget was modified to unpack source packages by
+ default. The new -d switch or the DGET_UNPACK configuration file option
+ may be used to indicate that the unpacking should not occur.
+
+ As linda has been removed from both unstable and testing, support for
+ it has been removed from debuild and cvs-debuild.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Thu, 13 Mar 2008 19:33:38 +0000
--- /dev/null
+- Fix translations for the new auto-generated devscripts.1
--- /dev/null
+Please do *not* report bugs about devscripts not depending on some
+package it is already recommending. As devscripts contains many tools,
+it recommends many packages but does not depend on them so that they
+are installed by default but may be removed if desired.
--- /dev/null
+#!/bin/sh
+
+printf "\n--- /etc/devscripts.conf ---\n" >&3
+
+if [ -f /etc/devscripts.conf ]; then
+ egrep '^[^#]' /etc/devscripts.conf | \
+ egrep -v "^\s*BTS_SMTP_AUTH_" >&3
+else
+ echo "Not present" >&3
+fi
+
+printf "\n--- ~/.devscripts ---\n" >&3
+
+if [ -f ~/.devscripts ]; then
+ egrep '^[^#]' ~/.devscripts | \
+ egrep -v "^\s*BTS_SMTP_AUTH_" >&3
+else
+ echo "Not present" >&3
+fi
--- /dev/null
+devscripts (2.15.1) unstable; urgency=medium
+
+ [ Julien Cristau ]
+ * grep-excuses: update URLs to use https://release.debian.org/
+
+ [ David Prévot ]
+ * French translation update
+
+ -- James McCoy <jamessan@debian.org> Thu, 01 Jan 2015 09:50:36 -0500
+
+devscripts (2.14.11) unstable; urgency=medium
+
+ [ Paul Wise ]
+ * Suggest debbindiff for deep .deb comparisons
+ * Use mirror.ftp-master instead of specific hostnames
+
+ [ James McCoy ]
+ * debcommit: Correctly show --strip-message is the default in --help.
+ (Closes: #766885)
+ * mk-origtargz: Warn about unmatched Files-Excluded patterns. (Closes:
+ #766641)
+ * annotate-output: Fix handling of a date format that contains whitespace.
+ (Closes: #766180)
+ * Fix regression in dpkg-architecture using scripts when only -a or -t is
+ specified, rather than both or neither. (Closes: #768587)
+
+ [ Jakub Wilk ]
+ * sadt:
+ + Fix handling of rw-build-tree restriction
+ + Improve handling of non-executable test files. When rw-build-tree is in
+ effect, simply chmod the file. Otherwise, attempt to chmod the file
+ (skipping the test on failure) and restore the original permissions on
+ completion. (Closes: #749729)
+
+ [ Adam D. Barratt ]
+ * debchange:
+ + Fix handling of changelogs where the most recent trailer line does not
+ include a maintainer name. (Closes: #766516)
+ + Add jessie-backports to the version mapping for --bpo.
+ * bts: Support the "stretch", "buster", "stretch-ignore" and "buster-ignore"
+ tags.
+
+ [ Stefano Zacchiroli ]
+ * bts:
+ + Support for the "newcomer" tag
+ + Backward compatibility for the old "gift" usertag: drop
+ documentation for it, but do both gift and newcomer (user)tagging for
+ the time being
+
+ -- James McCoy <jamessan@debian.org> Wed, 03 Dec 2014 23:01:48 -0500
+
+devscripts (2.14.10) unstable; urgency=medium
+
+ * Fix all the other calls to dpkg-architecture in devscripts.
+ (Closes: #764963 ... again)
+
+ -- James McCoy <jamessan@debian.org> Mon, 13 Oct 2014 22:35:31 -0400
+
+devscripts (2.14.9) unstable; urgency=medium
+
+ * debuild: Only pass -a/-t to dpkg-architecture when the user has specified
+ values for them. (Closes: #764963)
+
+ -- James McCoy <jamessan@debian.org> Sun, 12 Oct 2014 21:32:05 -0400
+
+devscripts (2.14.8) unstable; urgency=medium
+
+ [ James McCoy ]
+ * uscan:
+ + Ensure $keyring is defined before trying to use it when checking whether
+ the upstream keyring exists.
+ + Strip the Referer header when using qa.debian.org's Sourceforge
+ redirector. When there's a foreign Referer header, Sourceforge responds
+ with a web page containing a <meta refresh=...> redirect to the actual
+ file, causing uscan to save the web page rather than the file. (Closes:
+ #764367)
+ * uupdate: When updating a 1.0 source format package, remove any symlinks in
+ the new upstream source before applying the Debian diff, restoring the
+ symlinks after. This prevents patch from following the symlinks, which
+ may point to targets outside of the source tree, when applying the diff.
+ Thanks to Jakub Wilk for the discovery and suggested fix.
+ (Closes: #737160, CVE-2014-1833)
+
+ [ Ron Lee ]
+ * cowpoke: Add --sign and --upload command line overrides.
+
+ -- James McCoy <jamessan@debian.org> Sat, 11 Oct 2014 00:22:34 -0400
+
+devscripts (2.14.7) unstable; urgency=low
+
+ [ Cyril Brulebois ]
+ * deb-reversion: update change_version(), fixing the missing call_hook
+ statement in the udeb case. That was overlooked when the changelog
+ massaging was made conditional, and causes hooks to be ignored for
+ udebs. (Closes: #757425)
+
+ [ James McCoy ]
+ * debsign/debi/debc: Delay checking for the existence of the
+ --debs-dir/DEBRELEASE_DEBS_DIR directory until we get to code that
+ actually uses said directory. (Closes: #544366)
+ * mk-build-deps: Pass the file, not package, names to unlink when --remove
+ is given. (Closes: #757481)
+ * debcheckout: Always define $origtgz_name when a URL is specified on the
+ command line. (Closes: #757614)
+ * dcmd: Add --debtar option and restrict --tar/--orig to orig.tar.*. Thanks
+ to Osamu Aoki for the patch. (Closes: #622561)
+ * grep-excuses: Remove useless call to “hostname --fqdn”. (Closes: #758668)
+ * build-rdeps: Recognize arch-qualified package names. Thanks to Stuart
+ Prescott for the patch. (Closes: #757807)
+ * uscan:
+ + Consistently pass the path to the downloaded (and possibly
+ renamed/symlinked/…) file as an argument to the watch file's action
+ command.
+ + Add support for a repacksuffix option to the watch file. This is passed
+ through to mk-origtargz. (Closes: #753772)
+ + Specify Referer header when traversing http(s) sites. Thanks to David
+ Prévot for the patch. (Closes: #739137)
+ * mk-origtargz: Add a --repack-suffix option to adjust the upstream version
+ when the upstream sources are modified (e.g., due to Files-Excluded).
+ * bts: Don't send the email when the user saves an empty body for the email.
+ (Closes: #762888)
+
+ [ Benjamin Drung ]
+ * Remove unused build-dependencies libjson-perl and libterm-size-perl
+
+ [ Joachim Breitner ]
+ * mk-origtargz: Treat jars like zip files (Closes: #754203)
+
+ [ Dominique Dumont ]
+ * licensecheck: Check javascript files. (Closes: #762070)
+
+ -- James McCoy <jamessan@debian.org> Thu, 25 Sep 2014 20:49:15 -0400
+
+devscripts (2.14.6) unstable; urgency=medium
+
+ [ Benjamin Drung ]
+ * suspicious-source: Add image/tiff, application/pgp-keys, and image/x-icon
+ to whitelisted mime-types. Add .gmo to whitelisted file extensions.
+ * wrap-and-sort: Add --max-line-length option with a default of 79 characters
+ (it was previously hard-coded to 80 characters). (Closes: #756067)
+
+ [ Guillem Jover ]
+ * nmudiff: Send control messages inline. (Closes: #752152)
+
+ [ Paul Wise ]
+ * rmadison: bpo madison is dead, remove it
+ * rmadison: add new to the defaults for Debian
+ * rmadison: document the defaults in the manual page
+
+ [ James McCoy ]
+ * namecheck: Remove berlios, since it no longer hosts code. (Closes:
+ #752382)
+ * mk-build-deps:
+ + Provide the package name, not file name, to “dpkg --remove” when package
+ install fails.
+ + Read all of the output from “apt-cache showsrc” to ensure mk-build-deps
+ doesn't get stuck waiting for apt-cache to exit.
+ + Pass the name of the .deb file out of build_equiv to ensure the correct
+ .deb is installed. (Closes: #753657)
+
+ [ Christoph Berg ]
+ * Update all qa.debian.org URLs to https://.
+
+ [ Ron Lee ]
+ * cowpoke:
+ + Allow more flexibility for specialised build chroots.
+ It's now possible to specify arbitrary 'dist' names, with arbitrary
+ special configurations on top of the real BASE_DIST suite. This means
+ it's easy to have things like a chroot for wheezy-backports which will
+ be able to pull other deps from the backports repo, while still having
+ a pristine wheezy build chroot on the same build host. Or to have a
+ staging chroot for unstable, with extra build deps pulled in from a
+ local repository, or installed manually, while still having a pristine
+ sid chroot for building other packages to upload. And it all works the
+ same as normal, you just pass --dist=wheezy_bpo to select the chroot.
+ + Allow SIGN_KEYID and UPLOAD_QUEUE to be overridden per arch/dist.
+ This makes a lot more sense now that the above is easily possible.
+ People can use that for private or work (in progress) builds too, and
+ this can reduce the chance of accidentally uploading to the wrong place,
+ or signing some package not intended for upload with a key that would
+ would let it be accepted by dak.
+ + Better handling of --debbuildopts. There were some corner cases for
+ this where the required quoting of options could be rather weird in the
+ intersection of all the layers it might get passed through. This should
+ make it more forgiving and better able to always DTRT.
+
+ [ David Prévot ]
+ * uscan.1: Use +dfsg suffix in examples
+
+ -- James McCoy <jamessan@debian.org> Mon, 04 Aug 2014 22:34:17 -0400
+
+devscripts (2.14.5) unstable; urgency=medium
+
+ * debchange:
+ + Verify $opt_vendor is defined before trying to use it to avoid a warning
+ about an unitialized variable.
+ + utf-8 decode the maintainer name when reading it from the changelog.
+ (Closes: #750855)
+ * uscan: Use HEAD instead of GET to check for possible GPG signature URLs.
+ (Closes: #750929)
+ * debcheckout: Handle more variations of Alioth URLs when attempting to
+ perform an authenticated checkout. (Closes: #750542)
+
+ -- James McCoy <jamessan@debian.org> Tue, 10 Jun 2014 21:16:02 -0400
+
+devscripts (2.14.4) unstable; urgency=medium
+
+ * mk-origtargz: Fix DEP8 test failures due to differences in how the script
+ is named when it's run.
+ * debchange: Use Dpkg::Changelog::Parse to parse the changelog instead of
+ performing manual parsing in debchange. (Closes: #749980)
+
+ -- James McCoy <jamessan@debian.org> Sat, 31 May 2014 09:47:19 -0400
+
+devscripts (2.14.3) unstable; urgency=medium
+
+ [ Benjamin Drung ]
+ * wrap-and-sort: Sanitize spaces between alternative package names.
+ (Closes: #747818)
+
+ [ Martin Pitt ]
+ * Install recommends for the autopkgtest, otherwise a lot of necessary tools
+ like wdiff are missing.
+ * test_uscan: Add missing --compression in --installed mode, to fix the
+ autopkgtest.
+ * Add missing zip autopkgtest dependency (used by test_uscan).
+
+ [ James McCoy ]
+ * uscan:
+ + Specify file name instead of path in --dehs mode's target node.
+ (Closes: #747901)
+ + Add target-path node to dehs output for those who care about the actual
+ path to the file.
+ + Restore display of final file name after file is downloaded.
+ * mk-origtargz: Use file's mime detection to detect zip files. (Closes:
+ #748462)
+ * chdist: Finish reading output from child processes to avoid getting a
+ SIGPIPE when closing their read handle. (Closes: #749504)
+
+ [ Christoph Berg ]
+ * uscan: Fix "upsteam" typo. (Closes: #749343)
+
+ [ Paul Wise ]
+ * uscan: Also accept https for copyright-format URLs (Closes: #749498)
+
+ -- James McCoy <jamessan@debian.org> Tue, 27 May 2014 23:24:01 -0400
+
+devscripts (2.14.2) unstable; urgency=medium
+
+ [ Jakub Wilk ]
+ * sadt:
+ + Add support for @builddeps@ in tests' Depends. (Closes: #736798)
+
+ [ Benjamin Drung ]
+ * Bump Standard-Version to 3.9.5.
+ * Wrap long line in extended description.
+
+ [ Paul Wise ]
+ * Use HTTPS for the buildd logs to avoid a redirect
+ * Fix scraping of the wnpp web pages due to https links
+
+ [ Daniel Kahn Gillmor ]
+ * uscan: check for likely upstream signatures if none are known (Closes:
+ #732449)
+
+ [ Cyril Brulebois ]
+ * deb-reversion: Add support for udebs. (Closes: #739437)
+
+ [ Gunnar Wolf ]
+ * debcommit: Add switch+conf.setting allowing to specify Git to sign
+ every single commit (Closes: #741040)
+
+ [ James McCoy ]
+ * debcommit: Add hg and bzr support to DEBCOMMIT_SIGN_COMMITS.
+ * mk-build-deps: Uninstall the build-dep packages if apt isn't able to
+ complete their install. (Closes: #743462)
+ * dpkg-depcheck: Convert relative paths to absolute before filtering, so
+ filters properly match the path. Thanks to William King for the patch.
+ (Closes: #744320)
+ * debchange:
+ + Document the default urgency is medium. Thanks to Anders Kaseorg for
+ the patch. (Closes: #745565)
+ + Add “binary-only=yes” to binNMU changelog stanzas. Thanks to Thorsten
+ Glaser for the patch. (Closes: #746612)
+
+ [ Andreas Tille ]
+ * uscan: Allow a different compression scheme when repacking upstream
+ tarballs. (Closes: #730768)
+
+ [ Antonio Terceiro ]
+ * debi/debc: always try ../build-area/ when the changes file is not found
+ under ../ (even when not using svn)
+
+ [ Joachim Breitner ]
+ * mk-origtargz: New script to rename (or symlink or copy) a downloaded
+ upstream tarball to the correct name, possibly changing the compression
+ scheme and removing files listed in debian/copyright's Excluded-Files.
+ This is now also used by uscan, where most of the code comes from.
+
+ -- James McCoy <jamessan@debian.org> Sun, 11 May 2014 13:15:22 -0400
+
+devscripts (2.14.1) unstable; urgency=medium
+
+ * Actually install sadt. (Closes: #736683)
+
+ -- James McCoy <jamessan@debian.org> Sat, 25 Jan 2014 22:15:46 -0500
+
+devscripts (2.14.0) unstable; urgency=medium
+
+ [ Jakub Wilk ]
+ * Add sadt, a simple implementation of DEP-8 test runner (closes: #712095).
+
+ [ James McCoy ]
+ * chdist:
+ + Ensure error messages end with an EOL. (Closes: #734307)
+ + Make short options (-d, -a, -h) work. (Closes: #736504)
+ * licensecheck: Add handling for a variation of 3 clause BSD.
+ * rc-alert:
+ + Ensure the tag/dist description order is stable. (Closes: #735286)
+ + Automatically determine what the ignore tag means, instead of
+ hard-coding dist names.
+ * uscan:
+ + Download the PGP signature the same way the archive was downloaded.
+ (Closes: #735085, #736476)
+ + Skip the watchfile line if pgpsigurlmangle is defined but
+ upstream-signing-key.pgp is missing. (Closes: #735084)
+ + Update the GitHub example. Based on a patch by YABUKI Yukiharu.
+ (Closes: #728182)
+ + Support escaped characters in the Files-Excluded patterns. Thanks to
+ Csillag Tamas and Russ Albery for the patch. (Closes: #733111)
+ + Move keyring location for signature verification under debian/upstream/.
+ + Use the armored keyring debian/upstream/signing-key.asc for signature
+ verification if the unarmored keyring doesn't exist. (Closes: #720957)
+ + Fix regex in get_main_source_dir. (Closes: #735906)
+
+ -- James McCoy <jamessan@debian.org> Sat, 25 Jan 2014 10:19:02 -0500
+
+devscripts (2.13.9) unstable; urgency=low
+
+ [ Martin Pitt ]
+ * autopkgtest: Add "allow-stderr" restriction to avoid failing tests because
+ of the HTTP server log on stderr.
+
+ [ James McCoy ]
+ * uscan:
+ + Repack the tarball and verify it is a compressed archive without
+ allowing arbitrary code execution. Fixes CVE-2013-6888.
+ + Use find's -exec to call rm directly instead of piping to xargs.
+ (Closes: #732006, CVE-2013-7085)
+ + Follow tar's recommended security practices
+ - Use --keep-old-files --no-overwrite-dir
+ - Ensure parent directory of directory used for repacking archive isn't
+ accessible to other users.
+ + Fix handling of 'dirname' exclusions, so 'dirname/*' isn't required.
+
+ [ Salvatore Bonaccorso ]
+ * uscan: Fix unitialized value warning when copyright is not in
+ copyright-format 1.0. (Closes: #732807)
+
+ -- James McCoy <jamessan@debian.org> Mon, 23 Dec 2013 15:28:45 -0500
+
+devscripts (2.13.8) unstable; urgency=medium
+
+ [ James McCoy ]
+ * uscan: Fix arbitrary command execution when using USCAN_EXCLUSION.
+ (Closes: #731849)
+
+ [ Adam D. Barratt ]
+ * Honour USCAN_EXCLUSION. (Closes: #731885)
+
+ -- James McCoy <jamessan@debian.org> Tue, 10 Dec 2013 20:26:42 -0500
+
+devscripts (2.13.7) unstable; urgency=medium
+
+ * Fix imports of Devscripts::Compression. (Closes: #731847)
+
+ -- James McCoy <jamessan@debian.org> Tue, 10 Dec 2013 07:49:54 -0500
+
+devscripts (2.13.6) unstable; urgency=medium
+
+ [ James McCoy ]
+ * chdist: Fix a [A-z] regex typo.
+ * uscan: Properly handle a non-machine readable d/copyright file. (Closes:
+ #731537)
+ * suspicious-source: Correct message when python3-magic isn't installed.
+ (Closes: #731553)
+ * bts:
+ + Document that “bts tag nnn security” will Cc the security team.
+ (Closes: #684301)
+ + Document the behavior of leaving the version out of the found command.
+ (Closes: #683480)
+ * build-rdeps: Only match against package names instead of any substring of
+ Build-Depends(-Indep). (Closes: #649165)
+ * debchange: Correct description of -e in --help output. (Closes: #712030)
+ * Update scripts to use Dpkg::Compression's compression_get_file_extension_regex().
+
+ [ Louis Bettens ]
+ * debchange, mass-bug, bts: Replace call to date -R with strftime().
+ (Closes: #486594)
+
+ -- James McCoy <jamessan@debian.org> Mon, 09 Dec 2013 20:42:09 -0500
+
+devscripts (2.13.5) unstable; urgency=low
+
+ [ James McCoy ]
+ * namecheck: Fix “406 Not Acceptable” error when querying Alioth. (Closes:
+ #725228)
+ * uscan:
+ + Allow specifying file exclusion rules in d/copyright so uscan can
+ automatically repack upstream archives which contain non-DFSG content.
+ Thanks to Andreas Tille, gregor herrmann, and Rafael Laboissiere for the
+ patches. (Closes: #685787)
+ + Require LWP::Protocol::https instead of Crypt::SSLeay to access https
+ sites. (Closes: #624317)
+ * test/*:
+ + Pass --no-conf to commands which may be influenced by ~/.devscripts
+ + Fix a test failure in test_uscan_online due to different version format.
+ * rc-alert: Be more flexible in the formatting of the HTML being parsed.
+ (Closes: #729779)
+ * who-uploads: Use long keyid format to avoid ambiguity. (Closes: #674579)
+
+ [ Evgeni Golov ]
+ * debcheckout: allow setting the user for auth mode in the config. (Closes:
+ #722171)
+
+ [ Joachim Breitner ]
+ * debcommit: Fix --release with darcs when the repository is clean. (Closes:
+ #728177)
+
+ [ Christoph Berg ]
+ * origtargz: Document pristine-tar support in the manpage.
+ * rmadison: Support -r (--regex) parameter. (This is still unsupported on
+ qa.debian.org, but possible on some 3rd-party repositories like
+ apt.postgresql.org.)
+
+ [ Benjamin Drung ]
+ * test/test_debchange: Strip distribution data outdated warnings. (Closes:
+ #726694)
+
+ [ Translation updates ]
+ * German, Chris Leick.
+ * French, David Prévot.
+
+ [ Julien Cristau ]
+ * debchange: the default setting for urgency is now 'medium' (Closes: #730343)
+
+ -- James McCoy <jamessan@debian.org> Wed, 04 Dec 2013 22:27:45 -0500
+
+devscripts (2.13.4) unstable; urgency=low
+
+ [ James McCoy ]
+ * Document which scripts use libdistro-info-perl. (Closes: #708311)
+ * Make curl return a proper exit code for HTTP errors. (Closes: #720508)
+ * mk-build-deps: Define the deb's version when parsing a debian/control
+ file. (Closes: #721939)
+ * checkbashisms: Sort the keys of the bashisms hashes to provide
+ consistently ordered output. This avoids false positive failures in the
+ test suite.
+
+ [ Charles Pigott ]
+ * Fix POD issues. (LP: #1226318, Closes: #719828)
+
+ [ Matthias Klumpp ]
+ * debchange: Add support for Tanglu. (Closes: #722547)
+
+ [ Translation updates ]
+ * French, David Prévot.
+
+ -- James McCoy <jamessan@debian.org> Thu, 19 Sep 2013 18:53:57 -0400
+
+devscripts (2.13.3) unstable; urgency=low
+
+ [ gregor herrmann ]
+ * debcommit: Add the source package name to commit/tag messages. (Closes:
+ #704236)
+
+ [ Paul Wise ]
+ * In chdist bash completion, don't print warnings if ~/.chdist is missing
+ * Support 'new' in the rmadison URL list.
+
+ [ James McCoy ]
+ * dpkg-buildpackage: Use "dpkg-checkbuilddeps -A" for arch-indep builds.
+ Bump dpkg-dev Depends to 1.16.4 accordingly.
+ * Suppress "given/when is experimental" warnings when using Perl 5.18.
+ * mk-build-deps: Take Build-Conflicts(-Indep) into account. (Closes:
+ #712227)
+ * debcommit: Use "git status --porcelain" to check for a dirty working
+ directory. (Closes: #712166)
+ * uscan: Add "Accept: */*" header to fix downloading from Alioth. Thanks to
+ Dmitry Smirnov for the patch. (Closes: #712261)
+ * transition-check: Work around Pod::Simple change which causes Perl 5.18's
+ pod2man to fail. (Closes: #714599)
+ * licensecheck:
+ + Check haskell files. Thanks to Jens Petersen for the patch.
+ + Handle differing lengths of comment leaders when autodetecting comments.
+ (Closes: #714835)
+ * uscan/rc-alert: Fix roff errors in man pages. Thanks to Eric S. Raymond
+ for the patch. (Closes: #712701)
+ * dscverify: Use ~/.gnupg/trustedkeys.gpg, if available. (Closes: #600048)
+
+ [ Chris Boot ]
+ * bts: Fix no-mutt option. (Closes: #709999)
+
+ [ Daniel Kahn Gillmor ]
+ * Enable OpenPGP signature verification (Closes: #610712)
+
+ [ Yaroslav Halchenko ]
+ * licensecheck: Check .go (Go) files (Closes: #711467)
+ * wnpp-check: Add bug URL to output and reorder columns to ease reading.
+ (Closes: #715572)
+
+ [ Bernhard R. Link ]
+ * uscan: properly cope with colons and minus signs in upstream versions.
+ (Closes: #658999)
+
+ [ Phillip Hands ]
+ * licensecheck:
+ + allow plural: copyright notices
+ + ignore "copyright holders"
+ + alternative BSD-3 wording "authors" and "_any_ contributors"
+ + ignore #defines containing (c)
+ + fix "copyright ownership"
+ + ignore "copyright statement"
+ + ignore "copyright string"
+ + ignore coyright (claim|is|in), and fix test
+ + ignore "copyright to"
+
+ -- James McCoy <jamessan@debian.org> Thu, 15 Aug 2013 20:00:57 -0400
+
+devscripts (2.13.2) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * Correct git location in debian/copyright file (Closes: #703853)
+
+ [ James McCoy ]
+ * licensecheck: Regex-escape file contents that are used as part of a
+ pattern. (Closes: #704434, LP: #1164261)
+ * bts:
+ + Accept the "jessie" and "jessie-ignore" tags. (Closes: #705817)
+ + Email $pkg@packages.debian.org when reassigning a bug to src:$pkg.
+ (Closes: #707636)
+ * uscan: Define local replacements for die/warn instead of setting
+ $SIG{__DIE__}/$SIG{__WARN__} to prevent breaking die/warn in other
+ modules. (Closes: #669942)
+ * licensecheck: Fix invalid regular expression syntax. (Closes: #706232)
+ * debchange:
+ + Set Wheezy as the default --bpo target. (Closes: #703633)
+ + Recognize oldstable backports while oldstable is supported. (Closes:
+ #707616)
+ * rc-alert: Change description of I flag to reference wheezy instead of
+ lenny. (Closes: #683491)
+ * who-permits-upload:
+ + Use consistent formatting in the "SEE ALSO" section of the POD.
+ + Fix spelling mistakes.
+ + Fix handling of encoding.
+ * Move debian/bug/* so dh_bugfiles handles installing them.
+ * Upload to unstable.
+
+ [ Christoph Berg ]
+ * dget: "--all pkg" will download all binaries for source package pkg.
+
+ [ Raphael Geissert ]
+ * checkbashisms: Fix false positives in $_ checks. (Closes: #691389)
+
+ [ Arno Töll ]
+ * New script who-permits-upload, which retrieves information about Debian
+ Maintainer access control lists. (Closes: #688830)
+
+ [ David Prévot ]
+ * Formating manpages review. (Closes: #707299)
+
+ [ Translation updates ]
+ * French, David Prévot.
+ * German, Chris Leick.
+
+ -- James McCoy <jamessan@debian.org> Sun, 12 May 2013 23:05:26 -0400
+
+devscripts (2.13.1) experimental; urgency=low
+
+ [ Laurent Rineau ]
+ * licensecheck:
+ - Fix the detection of (L|A)GPL. (Closes: #700938)
+ - Fix comments pattern detection. (Closes: #700944)
+
+ [ Benjamin Drung ]
+ * wnpp-check: Correct download links to fix regression from previous release.
+ * Switch to debhelper 9.
+ * Convert Python scripts to python3 (Closes: #680313).
+ * Move git repository to collab-maint.
+ * Remove Julian Gilbey, Mohammed Adnène Trojette, Christoph Berg,
+ Stefano Zacchiroli, Adam D. Barratt, and Luk Claes from uploaders list.
+ Thanks for your work.
+
+ [ James McCoy ]
+ * debdiff: Handle control files with odd permissions. Thanks to Julian
+ Gilbey for the patch. (Closes: #702610)
+ * mk-build-deps: Skip malformed stanzas instead of outright failing.
+ (Closes: #679631)
+
+ [ Dmitrijs Ledkovs ]
+ * wrap-and-sort: Add trailing comma option (Closes: #703323).
+
+ [ Markus Wanner ]
+ * uscan: more debug info to allow checking uversionmangle patterns.
+
+ -- Benjamin Drung <bdrung@debian.org> Fri, 22 Mar 2013 14:39:13 +0100
+
+devscripts (2.13.0) experimental; urgency=low
+
+ [ Christoph Berg ]
+ * origtargz: New script: fetch the orig tarball of a Debian package from
+ various sources, and unpack it
+ * debcommit: --changelog-info will pass --author and --date for git commits.
+
+ [ James McCoy ]
+ * licensecheck: Recognize MPL 2.0 licenses. Thanks to Ryan Pavlik for the
+ patch. (Closes: #687664)
+ * namecheck: Check Apache's projects page for names. (Closes: #686862)
+ * debcommit:
+ + Drop checks for old dpkg versions and always use the necessary Perl
+ modules (Dpkg::Changelog::Parse, Dpkg::Vendor::Ubuntu,
+ Dpkg::Changelog::Entry::Debian).
+ + Add changelog info support for hg and bzr.
+ * annotate-output:
+ + Handle an incomplete line of output. (Closes: #695609)
+ + Don't treat backslashes in the command's output as an escape. (Closes:
+ #695613)
+ + Don't swallow leading whitespace. (Closes: #695612, LP: #1120917)
+ * dscverify: Use "gpg --status-fd" to determine if a valid signature is
+ found and only use the signed content. (Closes: #695914)
+ * wrap-and-sort: Fix repeated word in man page. (Closes: #696363)
+
+ [ Dmitry Smirnov ]
+ * licensecheck:
+ + Remove any regular comments pattern. (Closes: #526698)
+ + Improve command line parsing.
+ + Fix GPL license version detection bug.
+ + Fix BSD-3-clause detection.
+
+ [ Paul Wise ]
+ * checkbashisms: When examining a bash script, indicate the lack of use of
+ bashisms.
+ * uscan:
+ + Access GitHub directly instead of using githubredir.debian.net in
+ example GitHub watch URL.
+ + Add an example watch URL that matches the various file extensions used
+ by common archive formats.
+ + Add an example watch URL for Google Code projects.
+
+ [ Benjamin Drung ]
+ * Add bashism test cases from Raphael Geissert.
+ * Add autopkgtest support. (LP: #1073330)
+ * suspicious-source: Add inode/symlink and image/x-xpmi to whitelisted
+ mime-types.
+ * wrap-and-sort:
+ + Put special entries (variables and placeholders) at the end of the list.
+ + Sort debian/control*.in files too.
+ * licensecheck: detect (L)GPL licenses more permissively. Thanks to
+ Laurent Rineau for the patch. (Closes: #659231)
+ * Bump Standards-Version to 3.9.4 (no changes needed).
+
+ [ Cyril Brulebois ]
+ * Don't auto reverse diffs when DEBDIFF_AUTO_VER_SORT is set to yes, and
+ when the version in both packages is the same. (Closes: #650732)
+
+ [ Tony Mancill ]
+ * debsnap: Escape the package name when used in regex. (Closes: #696018)
+
+ [ David Prévot ]
+ * Minor manpages convention fix: do not terminate the SEE ALSO lists with a
+ period. (Closes: #696416)
+ * French translation update.
+
+ [ Josselin Mouette ]
+ * nmudiff: Use dpkg-parsechangelog to fix manual parsing bug (Closes: #700584)
+
+ [ Raphael Geissert ]
+ * checkbashisms:
+ + allow -FOO- as heredoc delimiter
+ + simplify mixed single/double balanced quotes correctly
+ + correct description of 'setvar'
+ + detect traps for DEBUG, ERRNO, or RETURN
+ + check for incorrect args. to 'exit' (Closes: #687450)
+ + fix handling of # characters in quoted strings
+ + detect use of $FUNCNAME, $TMOUT, and $TIMEFORMAT
+ + detect uses of sleep with anything other than an int.
+ + detect the use of the hash utility and $_
+ + check for other forms of brace expansion
+ + check for use of non-standard tilde expansion
+ + check for case modification expansions
+ + check for the use of $GLOBIGNORE
+
+ [ Regid Ichira ]
+ * rc-alert: Support using curl as alternative to wget. (Closes: #690024)
+ * wnpp-alert: Support using curl as alternative to wget. (Closes: #690056)
+ * wnpp-check: Support using curl as alternative to wget. (Closes: #690059)
+
+ [ Colin Watson ]
+ * debian/control: Mark devscripts Multi-Arch: foreign. (Closes: #694760)
+ * debchange, debcommit: Set the timestamp of temporary editor files back
+ one second, to make modification detection more reliable in the absence
+ of subsecond granularity. (Closes: #697923)
+
+ -- Benjamin Drung <bdrung@debian.org> Mon, 18 Feb 2013 21:50:11 +0100
+
+devscripts (2.12.6) unstable; urgency=low
+
+ * Actual install German translation.
+
+ -- Benjamin Drung <bdrung@debian.org> Sun, 25 Nov 2012 00:30:00 +0100
+
+devscripts (2.12.5) unstable; urgency=low
+
+ [ James McCoy ]
+ * bts:
+ + Provide a clearer error message when Authen::SASL isn't installed.
+ (Closes: #689816)
+ + Don't require a usertag after 'bts usertag <bug> ='. (Closes: #689815)
+ + Don't require a package after 'bts affects <bug> ='. (Closes: #690131)
+ * Add German translation of man pages. Thanks to Chris Leick. (Closes:
+ #687985)
+
+ [ Benjamin Drung ]
+ * Fix Subversion typo and write all instances of it with an capital initial
+ letter. Thanks to Regid Ichira for the finding. (Closes: #689953)
+ * debuild:
+ - Fix failure if called with --preserve-env and GREP_OPTIONS is set.
+ Thanks to Aaron Culich for the patch. (Closes: #501056, LP: #581319)
+ - Add missing bits to support dpkg-genchanges hook.
+ Thanks to Maciej Malycha for the patch. (LP: #1065201)
+ * wrap-and-sort: Sort Pre-Depends list (LP: #1070599)
+
+ [ David Prévot ]
+ * French translation update.
+
+ -- Benjamin Drung <bdrung@debian.org> Wed, 24 Oct 2012 22:15:34 +0200
+
+devscripts (2.12.4) unstable; urgency=low
+
+ [ James McCoy ]
+ * dget: Avoid an infinite loop when a .changes/.dsc file references itself.
+ (Closes: #687670)
+ * debdiff:
+ + Set $TMPDIR when running interdiff so its temp files get cleaned up on
+ exit.
+ + Fallback to manual diff of source package if interdiff fails. (Closes:
+ #685202)
+ * dcmd: Don't add "--" to the command being executed. The user has to know
+ where this should be used/if it can be used. (Closes: #687964)
+ * debcheckout: Fix collision in short options. Use -P for --package.
+ (Closes: #688150)
+
+ [ Benjamin Drung ]
+ * licensecheck: Recognize licenses in (fixed-form) Fortran code. Thanks to
+ Francesco Poli for the patch and the example. (Closes: #687452)
+
+ -- James McCoy <jamessan@debian.org> Mon, 24 Sep 2012 18:51:12 -0400
+
+devscripts (2.12.3) unstable; urgency=medium
+
+ [ Benjamin Drung ]
+ * licensecheck:
+ - Don't truncate other licenses on Public domain or WTFPL presence.
+ Thanks to Garrett Holmstrom from Fedora for the patch.
+ - Remove trailing spaces.
+ - add --machine option that outputs results in a machine readable format.
+ Thanks to Eric Lavarde for the patch. (Closes: #583750)
+ - Trim trailing period from some GPL notices' versions.
+
+ [ Richard W.M. Jones ]
+ * licensecheck: Check OCaml programs by default (*.ml, *.mli).
+
+ [ Ville Skyttä ]
+ * Spelling fixes.
+ * licensecheck: Trim trailing comma from some GPL notices' versions.
+
+ [ David Prévot ]
+ * licensecheck.1: Consistency fix.
+ * French translation update.
+
+ [ Cyril Brulebois ]
+ * getbuildlog: When several build logs are available, save all of them
+ instead of downloading them all but only keeping the oldest. (Closes:
+ #683231)
+
+ [ Christoph Berg ]
+ * debcheckout: When --package is given, use this package name rather than
+ trying to guess it from the url. Useful for URLs like
+ http://anonscm.debian.org/bzr/pkg-postgresql/postgresql-9.2/sid-pgapt/.
+ * po4a/Makefile: use po4a --keep=0 so the build system doesn't die with
+ untranslated scripts
+ * dcmd: Reimplement endswith() with case. The original missed quoting and
+ made my brain hurt.
+ * dcmd: Allow digits, underscores, and dots in section/component names.
+
+ [ Raphael Geissert ]
+ * dcmd: Allow arguments to contain spaces. (Closes: #687584)
+
+ [ James McCoy ]
+ * debdiff: Fix regression in exit code, introduced in 2.11.4. (Closes:
+ #686247)
+ * dget:
+ + Fix CVE-2012-2241 (arbitrary file deletion)
+ + Only match policy-compliant source package names.
+ * dscverify: Fix CVE-2012-2240 (arbitrary code execution)
+
+ -- James McCoy <jamessan@debian.org> Sat, 15 Sep 2012 15:23:41 -0400
+
+devscripts (2.12.2) unstable; urgency=high
+
+ * annotate-output: Fix to prevent symlink attack: don't delete
+ safely-created file and reuse its name. Instead, create temporary
+ directory and create FIFOs therein. Also, be sure to remove temporaries
+ upon catchable signal. Thanks to Jim Meyering for the patch. Fixes
+ CVE-2012-3500.
+
+ -- James McCoy <jamessan@debian.org> Sun, 26 Aug 2012 11:16:17 -0400
+
+devscripts (2.12.1) unstable; urgency=low
+
+ * debchange:
+ - Fix crash if libdistro-info-perl is not installed. (Closes: #680213,
+ LP: #1022563)
+ - Recognize stable-proposed-updates as Debian distribution (Closes: #677613)
+
+ -- Benjamin Drung <bdrung@debian.org> Fri, 13 Jul 2012 22:06:43 +0200
+
+devscripts (2.12.0) unstable; urgency=low
+
+ [ Benjamin Drung ]
+ * debchange:
+ - Query name for stable-backport from distro-info.
+ - On Ubuntu always default to targeting the release that it's run from,
+ not the current devel release, since its primary use on stable releases
+ will be for preparing PPA uploads. (LP: #1001068)
+
+ [ James McCoy ]
+ * build-rdeps, chdist, debsnap, dpkg-depcheck, rc-alert: Exit when unknown
+ options are provided. (Closes: #679374)
+ * dscverify: Use GetOptions to handle argument parsing. (Closes: #679148)
+ * uscan: Properly use the File::Temp interface so files aren't being created
+ with the stringified version of a file glob. (Closes: #678193)
+ * rc-alert:
+ + Unset wget's continue option to ensure the bug list is properly
+ downloaded. (Closes: #677229)
+ + Handle rc bugs assigned to source packages. (Closes: #576853)
+ * Devscripts/Packages.pm, Devscripts/PackageDeps.pm:
+ + Parse dpkg's status file using Dpkg::Control.
+ + Make functions Multi-Arch aware so they can handle $pkg:$arch naming.
+ (Closes: #664811)
+
+ -- James McCoy <jamessan@debian.org> Sat, 30 Jun 2012 11:12:45 -0400
+
+devscripts (2.11.9) unstable; urgency=low
+
+ [ David Prévot ]
+ * French translation update.
+
+ [ Ron Lee ]
+ * cowpoke: Properly strip the arguments to dpkg --compare-versions
+
+ [ Christoph Berg ]
+ * debcheckout: Also recognize bzr+ssh:// schema.
+
+ [ Bernhard R. Link ]
+ * debchange: fix NMU detection to not NMU QA packages (Closes: #676881)
+
+ [ James McCoy ]
+ * debchange: Add more documentation about the effects of changelog
+ heuristic. (Closes: #673974)
+ * mk-build-deps:
+ + Provide a more descriptive README.Debian for generated packages. Thanks
+ to chrysn for the patch. (Closes: #675337)
+ + Do not install Recommends by default. (Closes: #575245)
+
+ [ Benjamin Drung ]
+ * debchange: Use the Dpkg::Vendor Perl API directly to avoid the overhead
+ of the command line dpkg-vendor script.
+ * Use dpkg-buildflags for C code.
+ * wrap-and-sort: Fix damaging debian/install with no newline at the
+ end of file (LP: #1014365).
+
+ -- Benjamin Drung <bdrung@debian.org> Sun, 17 Jun 2012 22:56:26 +0200
+
+devscripts (2.11.8) unstable; urgency=low
+
+ [ David Prévot ]
+ * French translation update.
+
+ [ James McCoy ]
+ * dd-list:
+ + Recognize -h argument, as documented.
+ + Don't error when given multiple binary packages from the same source.
+ (Closes: #672309)
+ * Also note DEBCHANGE_MAINTTRAILER change in NEWS entry for 2.11.7.
+ (Closes: #672973)
+ * dget:
+ + Fix handling of sources.list entries with a port. (Closes: #672460) Still
+ can't handle entries at the same domain but different ports until
+ #154868 is fixed.
+ * debcheckout:
+ + Document the DEBCHECKOUT_SOURCE configuration variable.
+ + Determine the source package name when downloading the source tarball.
+ This ensures the downloaded files aren't incorrectly removed after being
+ downloaded.
+ + Adapt find_repo() to determine the tarball name for native packages.
+
+ [ Benjamin Drung ]
+ * debchange:
+ + Add --vendor= and DEBCHANGE_VENDOR to override the distributor ID
+ returned by dpkg-vendor.
+ + Always perform Vendor check.
+ + Fall back to Debian vendor when a Debian-specific command-line option
+ has been supplied (--nmu, --qa, --bin-nmu, --bpo).
+ + Adjust --security template for Ubuntu.
+ + Add -R/--rebuild flag for Ubuntu's no-change rebuilds.
+ + Append ubuntu1 to version when incrementing on Ubuntu, unless a
+ -U/--upstream option is given.
+ + On Ubuntu, don't copy the previous distribution name for a new changelog
+ entry. Use the Ubuntu devel release.
+ + Don't use NMU versioning for NMUs / Security uploads on Ubuntu.
+ + dch --increment changes XbuildY to Xubuntu1 on Ubuntu (LP: #690230).
+ + Try to guess the vendor based on the given distribution name (LP: #723715)
+ + Prefer UBUMAIL over DEBEMAIL on Ubuntu (LP: #929846).
+ * Add first tests for licensecheck.
+ * Add online test for uscan.
+
+ [ Stefano Rivera ]
+ * devscripts.Logger Don't substitute arguments into logged strings unless
+ they were provided. (LP: #968129)
+ * debchange: Use distro-info to determine Ubuntu release names (LP: #997932).
+ * Incorporate Ubuntu's delta:
+ Move debian-keyring, equivs, libcrypt-ssleay-perl, and libsoap-lite-perl
+ to Suggests when building on Ubuntu.
+
+ [ Salvatore Bonaccorso ]
+ * bts: When searching for usertags use tag= in the url (followed by
+ the options containing users=). (Closes: #675071).
+
+ [ Raphael Geissert ]
+ * dget: ignore duplicate repository URLs. (Closes: #675258)
+
+ [ Kees Cook ]
+ * licensecheck: Catch LGPL more robustly. (Closes: #623283)
+
+ [ Thijs Kinkhorst ]
+ * debdiff: Do not generate warnings when debdiff'ing dpkg source format
+ 3.0 (git). (Closes: #668372)
+ * debuild: Do not warn for missing upstream tarball if package is source
+ format 3.0 (git). (Closes: #668372)
+
+ [ Scott Moser ]
+ * uscan: Support watch files that reference S3 bucket listings.
+ (Closes: #630756, LP: #798293)
+
+ [ Yaroslav Halchenko ]
+ * licensecheck: Check licenses in .m (Octave/Matlab), .tex (LaTeX),
+ and .pyx (Python's pyrex) files (Closes: #604529)
+
+ [ Ivan Borzenkov ]
+ * licensecheck: Add detection code for Beerware license. (Closes: #597463)
+
+ -- Benjamin Drung <bdrung@debian.org> Thu, 31 May 2012 17:50:56 +0200
+
+devscripts (2.11.7) unstable; urgency=low
+
+ [ James McCoy ]
+ * bts:
+ + Generate a proper Cc field with "reassign … . done …". (Closes:
+ #668132)
+ + Document -m as an alias for show's --mbox. (Closes: #670107)
+ * debchange:
+ + Remove EOLed releases Lenny and Maverick.
+ + Change DEBCHANGE_RELEASE_HEURISTIC default to "changelog".
+ + Correctly handle NMU detection when there is no whitespace after a comma
+ in Uploaders. (Closes: #642342)
+ * mergechanges: Handle continuation lines correctly. Thanks to Ben
+ Hutchings for the patch. (Closes: #656415)
+ * debcheckout: Allow specifying a branch for Vcs-Git fields. Thanks to
+ Bernhard R. Link for the patch. (Closes: #655085, #600745)
+ * d/control: Change Maintainer address to devscripts-devel@lists.alioth.d.o
+ * wnpp-alert: Use dpkg-query instead of directly parsing dpkg's status file.
+ (Closes: #669579)
+ * dpkg-depcheck: Match the new error message from “dpkg -S”. Thanks to Bao
+ Haojun for the patch. (Closes: #667581)
+ * list-unreleased: Update excluded directories to include other common
+ VCSes.
+ * svnpath: Always run “svn info” instead of checking for .svn. (Closes:
+ #645106)
+ * mk-build-deps:
+ + Make error messages more explicit about what went wrong. (Closes:
+ #596561)
+ + Use Dpkg::IPC to run apt-cache.
+ + Don't run equivs if no package information was parsed.
+ * uscan: Clarify behavior of the --destdir option. (Closes: #659389)
+ * debi: Add -u and -m as synonyms for --upgrade and --multi. (Closes:
+ #662773)
+
+ [ Benjamin Drung ]
+ * Introduce a test suite for the scripts based on shunit2.
+
+ [ Stefano Rivera ]
+ * debchange: Recognise the Ubuntu Quantal Quetzal release.
+
+ [ Christoph Berg ]
+ * debcheckout: Fix --source error message.
+
+ [ Raphael Geissert ]
+ * checkbashisms:
+ + detect the use of 'setvar'
+ + do not unconditionally swallow stdin (Closes: #669578)
+ + Allow stdin to be checked by accepting '-' as file name
+ + detect substr expansion with dynamic length (Closes: #610465)
+
+ -- James McCoy <jamessan@debian.org> Sun, 06 May 2012 20:05:58 -0400
+
+devscripts (2.11.6) unstable; urgency=low
+
+ [ James McCoy ]
+ * mk-build-deps: Fix handling of debian/control files. (Closes: #665496)
+ * uscan: Fix formatting in man page. Thanks to Samuel Bronson for the
+ patch. (Closes: #665325)
+ * debsign: Fix quoting in handling of --debs-dir.
+ (Closes: #666048, LP: #966867)
+
+ [ Benjamin Drung ]
+ * cowpoke.1, deb-reversion.dbk, dscextract.1: Fix typos "occured",
+ "transfered", and "addtional". Thanks to A. Costa for the patches.
+ (Closes: #655681)
+ * debcommit:
+ + Subversion 1.7 has only one .svn folder per working copy.
+ Thanks to Simon Olofsson for the patch. (Closes: #645106)
+ + Support .hg in parent directories.
+ Thanks to Simon Olofsson for the patch. (Closes: #652967)
+
+ [ David Prévot ]
+ * Typo and stylish fix for dscextract(1). (Closes: #630423)
+
+ -- Benjamin Drung <bdrung@debian.org> Fri, 30 Mar 2012 15:53:36 +0200
+
+devscripts (2.11.5) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * deb-reversion:
+ + Re-fix handling of multi-word hooks. (Closes: #660782).
+ This was originally fixed in 2.9.14 but accidentally broken again in
+ 2.9.26.
+ + Correctly handle cases where a changelog file was not found, possibly
+ because of the use of symlinks. (Closes: #660788)
+
+ [ Jakub Wilk ]
+ * deb-reversion: Simplify option parsing, also allowing simpler quoting of
+ arguments.
+
+ [ James McCoy ]
+ * dd-list: Fix correlation of given package name when it does not match the
+ source package name. (Closes: #655854)
+ * dcmd: Escape directory name so it doesn't interfere with sed command.
+ (Closes: #649227)
+ * debsnap: Check whether architectures have been specified. (Closes:
+ #655932)
+ * pts-subscribe: Correct URL to Developer's Reference. (Closes: #661337)
+ * mk-build-deps: Use the most recent version when multiple package versions
+ are available. (Closes: #633143)
+
+ [ Benjamin Drung ]
+ * edit-patch:
+ + Do not unapply quilt patches. Thanks to Michael Hall for
+ the patch. (Closes: #662689, LP: #947180)
+ + Remove trailing .sh when checking if the script is being run as edit-patch
+ or add-patch. Thanks to Michael Hall for the patch. (LP: #953857)
+ * Bump Standard-Version to 3.9.3 (no changes needed).
+
+ -- Benjamin Drung <bdrung@debian.org> Sat, 24 Mar 2012 11:26:32 +0100
+
+devscripts (2.11.4) unstable; urgency=high
+
+ * Urgency "high" for security fixes.
+
+ [ James McCoy ]
+ * bts: Revert usertags' handling of more than one +/-/=. Only the first one
+ is relevant.
+
+ [ Ryan Niebur ]
+ * dget: when finding the sources.list entry for the repository to
+ download a package from, match any port with the correct hostname
+ because apt-cache policy does not output port numbers in URLs
+ (Closes: #601951)
+
+ [ Adam D. Barratt ]
+ * debdiff:
+ + Fix a regression in the handling of embedded tarballs (a side
+ effect of the changes introduced to resolve #571528).
+ + Extend the changes from #571528 to cover more situations where
+ user or file input is passed to an external program. Fixes
+ CVE-2012-2012 (and any instance of CVE-2012-2011 not already
+ covered by #571528).
+
+ [ Paul Wise ]
+ * suspicious-source: Also ignore mercurial and darcs VCS directories
+ (Closes: #659966).
+
+ [ Benjamin Drung ]
+ * suspicious-source: Add inode/x-empty to whitelist of MIME types
+ (Closes: #659946).
+
+ [ Raphael Geissert ]
+ * debdiff:
+ + Remove undocumented feature treating extensionless files as if
+ they were packages (Closes: #659559)
+ + Add missing chdir for dpkg-source and remove extraneous quoting
+ of --exclude parameters.
+ + Fix CVE-2012-0210 (insufficient input sanitising reading .dsc
+ and .changes files).
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Wed, 15 Feb 2012 19:19:31 +0000
+
+devscripts (2.11.3) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * debchange: Fix typo in the description of --no-force-save-on-release.
+
+ [ David Prévot ]
+ * manpage typographic and convention review. (Closes: #649450)
+ * French translation update.
+
+ [ James McCoy ]
+ * Update tools to uniformly handle the supported compression types for
+ source packages. (Closes: #650118)
+ * uscan:
+ + Use "gzip -n" when repacking zip files. Thanks to Franz Schrober for
+ the patch. (Closes: #646691)
+ + Handle filenames with special characters. (Closes: #648299)
+ * debdiff: Handle paths with special characters. (Closes: #571528)
+ * bts: Add minimal verification of email arguments. (Closes: #654460)
+ * licensecheck:
+ + Recognize GPL version when "of the License" isn't present. Thanks to
+ Ville Skyttä for the patch.
+ + Correctly capture license version for Affero when "as published by"
+ isn't present. Thanks to Ville Skyttä for the patch.
+
+ [ Benjamin Drung ]
+ * wrap-and-sort: Do not sort executable files (executable .install files could
+ be programs since debhelper 8.9.12). Thanks to Stefano Rivera for the
+ patch. (Closes: #655142)
+
+ -- James McCoy <jamessan@debian.org> Mon, 09 Jan 2012 20:19:11 -0500
+
+devscripts (2.11.2) unstable; urgency=low
+
+ [ Gerfried Fuchs ]
+ * Remove the word "of" from the BSD 3 clause check, it might not be in
+ there.
+
+ [ James McCoy ]
+ * Remove support for PGP-style commands from debsign/debrsign. (Closes:
+ #639204)
+ + DEBSIGN_SIGNLIKE config variable removed
+ * Update scripts to use GNU getopt-compatible option parsing. (Closes:
+ #641979)
+ + For Perl scripts, use Getopt::Long's "gnu_compat" and "bundling" modes.
+ When allowed, also use "permute" for full GNU getopt compatibility.
+ + For shell scripts, use getopt instead of manual option parsing.
+ - Update uses of getopt to show usage when getopt fails.
+ * licensecheck:
+ + Recognize more generated files, MIT/X11 variants, Microsoft Permissive
+ License (Ms-PL), and a libpng variant. Thanks to Paweł Hajdan, Jr for
+ the patches. (Closes: #641497, #647524, #647526, #647527)
+ * debchange: Document that only `$1' backreference replacements are
+ supported. Thanks to Matthijs Kooijman for the patch. (Closes: #639813)
+ * mergechanges: Use awk instead of sed to handle massaging the final output
+ so we can better control the processing. (Closes: #640782)
+ * uscan: Fully support lzma and xz tarballs. Based on a patch from Tanguy
+ Ortolo. (Closes: #631713)
+ * debi: Document --multi, --with-depends, and --tool in the man page.
+ (Closes: #644983)
+ * dd-list:
+ + Correctly handle maintainer names which have a comma. (Closes: #646562)
+ + Sort results by full-name instead of trying to parse the names.
+ (Closes: #638602)
+ + Parse sources files directly instead of invoking apt-cache. (Closes:
+ #376595)
+ + Allow specifying which sources files to read. (Closes: #509983)
+ * Remove references to obsolete PGP keyrings in who-uploads/dscverify.
+ * who-uploads: Don't check for default keyrings with --no-default-keyrings.
+ (Closes: #515058)
+
+ [ Stefano Rivera ]
+ * debchange: Add precise as a recognised Ubuntu distro.
+
+ [ David Prévot ]
+ * bts: Remove outdated information from documentation for owner command.
+ (Closes: #625990)
+
+ [ Steve Langasek ]
+ * new script dep3changelog, which parses a DEP3 patch header and feeds a
+ suitable changelog entry to dch. (Closes: #599777)
+
+ [ Michael Prokop ]
+ * debcheckout: Use DESTDIR also for debian/ only VCS packages. (Closes:
+ 648654)
+
+ -- James McCoy <jamessan@debian.org> Tue, 15 Nov 2011 21:36:40 -0500
+
+devscripts (2.11.1) unstable; urgency=low
+
+ [ David Prévot ]
+ * Stylish manual pages convention review. (Closes: #628447)
+ * Handle the last description in devscripts(1). (Closes: #628086)
+ * French translation updates.
+
+ [ Adam D. Barratt ]
+ * debian/copyright: Update repository information somewhat belatedly
+ for the move to git.
+
+ [ James Vega ]
+ * debchange: Remove dapper from the list of recognized distributions.
+ * debcheckout: Handle Alioth's new anonymous access URLs when converting to
+ authenticated URLs. (Closes: #628674)
+ * debsnap: Allow -a to be specified multiple times. Thanks to Timo Juhani
+ Lindfors for the suggestion.
+ * uscan: Fix --destdir regression when repacking zip archives. Thanks to
+ Christian Kastner for the patch. (Closes: #628076)
+ * mergechanges: Do not drop fields when the Files/Checksums-* fields are not
+ at the end of the source files. (Closes: #625620)
+ * debuild: Call dpkg-source --before-build/--after-build when emulating
+ dpkg-buildpackage. (Closes: #628481)
+ * chdist:
+ + Create /etc/apt/apt.conf.d and /etc/apt/preferences.d in the chdist
+ directory structure. (Closes: #528274, LP: #566682)
+ + When multiple binary versions exist, use newest version for
+ compare-src-bin-*.
+ + Copy archive keyrings to etc/apt/trusted.gpg.d.
+
+ [ Christoph Berg ]
+ * dscextract: new script, extracts a single file from a Debian source
+ package.
+ * debcheckout: When retrieving the source for debian/-only repositories,
+ move all .dsc components to the current directory, not just .orig.tar.gz.
+ * uscan: Catch perl warning with incorrect watch files without ().
+ Also, catch warnings on non-matches of ()? constructs.
+
+ [ Stefano Rivera ]
+ * Support //scheme-local URLs in hrefs, correctly (as used by Google code)
+ (Closes: #630808)
+
+ -- James Vega <jamessan@debian.org> Mon, 22 Aug 2011 19:51:03 -0400
+
+devscripts (2.11.0) unstable; urgency=low
+
+ [ James Vega ]
+ * getbuildlog:
+ + Query the updated build log status pages.
+ + Request the raw log file when downloading.
+ * debcheckout: Use the destination directory, not package name, when
+ checking for where the checkout happened. (Closes: #627030)
+ * Merge from Ubuntu:
+ + dscverify: Use Ubuntu keyrings if on an Ubuntu-based system.
+ + rmadison: Use Ubuntu's rmadison instance on Ubuntu.
+ * namecheck: Update Alioth's "unknown project" pattern. Thanks to Nelson A.
+ de Oliveira for the patch. (Closes: #627824)
+ * Add lintian overrides for the ldconfig calls dh adds to post{inst,rm}.
+
+ [ Benjamin Drung ]
+ * Move add-patch, edit-patch, suspicious-source, what-patch, and wrap-and-sort
+ from ubuntu-dev-tools into devscripts (Closes: #568481).
+ * Remove EOL whitespaces (Closes: #502525).
+ * dget.1: Mention `debcheckout` under `SEE ALSO`. Thanks to Paul Menzel for
+ the patch. (Closes: #596245)
+ * debchange, uupdate: Use dpkg-vendor instead of lsb_release.
+ * Merge from Ubuntu:
+ + debuild: Enforce Ubuntu merge policy.
+ + debsign: Implement DEBSIGN_ALWAYS_RESIGN variable to skip the
+ "Would you like to use the current signature?" question. (Closes: #447955)
+ * Add test infrastructure.
+
+ [ David Prévot ]
+ * Partial manual pages convention review (Closes: #626015).
+
+ -- James Vega <jamessan@debian.org> Tue, 24 May 2011 23:55:36 -0400
+
+devscripts (2.10.73) unstable; urgency=low
+
+ [ James Vega ]
+ * uscan:
+ + Use the correct path when repacking zip files. (Closes: #622889)
+ + Make file show all matched file types instead of just the first.
+ (Closes: #574155)
+ * uupdate: Handle hidden files when the upstream archive doesn't contain its
+ files under one top-level directory. (Closes: #601945)
+ * bts:
+ + Indicate version argument is optional for done command. (Closes:
+ #623567)
+ + Silence warnings with (un)subscribe command when no email is specified.
+ (Closes: #626086)
+ + Indicate email argument is optional for (un)subscribe commands.
+ * debsnap:
+ + Add support for downloading binary packages. Thanks to Timo Juhani
+ Lindfors for the patch. (Closes: #587523)
+ + Only download a file if it doesn't exist or its hashsum doesn't match
+ the one specified by snapshot.d.o.
+ * debchange:
+ + Add -M option to use debian/control's Maintainer information. Thanks to
+ Modestas Vainius for the patch. (Closes: #560900)
+ + Update recognized Ubuntu releases (- jaunty/karmic, + oneiric).
+ * dget: Improve wget()'s handling of file/copy URIs. Thanks to Adam
+ Borowski for the suggestions.
+ + Allow relative paths for file/copy URIs.
+ + Follow symlinks when copying/hard linking files from a local cache.
+ (Closes: #515852)
+ + Call system() with a list of arguments to prevent shell interpolation of
+ the command.
+
+ [ Benjamin Drung ]
+ * Add myself to uploaders.
+ * Wrap and sort lists in debian/control. (Closes: #577999)
+ * Switch to simple dh 8 rule.
+ * debcommit: Support for committing from debian/ when using bzr. Thanks to
+ Loïc Minier for the patch. (Closes: #580861)
+ * debian/control: Bump Standards-Version to 3.9.2 (no changes needed).
+
+ [ Patrick Schoenfeld ]
+ * checkbashisms:
+ - add code to detect weither STDIN is a pipe and if so, write the lines
+ passed via stdin to a tempfile
+ - add tempfile filename to the list of files to process
+ - add logic to detect if filename is a tempfile and if so, use the string
+ "(stdin)" for filename display instead of the real filename.
+ (Closes: #586500)
+
+ -- James Vega <jamessan@debian.org> Mon, 09 May 2011 22:42:12 -0400
+
+devscripts (2.10.72) unstable; urgency=low
+
+ [ James Vega ]
+ * debuild: Use 3-argument form of open to suppress warnings about unused
+ symbols. (Closes: #606054)
+ * Cleanup Recommends to avoid pulling in as many packages by default. The
+ remaining Recommends are relevant to the more commonly used scripts or
+ functionality. Relationships removed from Recommends were either added to
+ Suggests if it makes sense to call some attention to them or were removed
+ from debian/control completely. (Closes: #605102, #610310, LP: #485264)
+ * uscan:
+ + Let unzip convert text files to native line endings when repacking.
+ Thanks to Daniel Kahn Gilmor for the suggestion. (Closes: #618513)
+ + Avoid "Use of uninitialized value" warning when URL doesn't have
+ "/" after the host. Thanks to Mats Erik Andersson for the patch.
+ (Closes: #600909)
+ + Parse responses from FTP sites on a line-by-line basis to help prevent
+ overly greedy regular expressions in watch files returning bad results.
+ (Closes: #597963)
+ + Fix "Use of uninitialized value" warnings when processing certain
+ version 1 watch files.
+ + Fix various issues when repacking a zip to a tarball. Thanks to
+ Christian Kastner for the patch. (Closes: #615108)
+ - Run tar from within the temp directory to prevent getting a ‘./’
+ archive member.
+ - Use root/root as the owner for the archive members to prevent leaking
+ the user's login.
+ * Remove use of lzma command in favor of xz. (Closes: #599641)
+ + debian/control: Remove lzma from Recommends.
+ + uscan: Use xz to repack lzma tarballs.
+ + uupdate: Use xz to handle lzma-compressed files.
+ * More typography updates for man pages. Thanks to David Prévot for the
+ patch. (Closes: #616630)
+ * pts-subscribe: Do not perform arithmetic comparison of --until argument.
+ Thanks to Stefano Rivera for the patch. (Closes: #620194)
+ * mk-build-deps:
+ + Add --root-cmd option to install the build-dep .deb. Thanks to Felipe
+ Sateler for the patch. (Closes: #615135)
+ + Add MKBUILDDEPS_ROOTCMD configuration variable.
+ + Show modified configuration variables in usage.
+ * debchange: Correct the backport name in the man page. Thanks to Salvatore
+ Bonaccorso for the patch. (Closes: #617675)
+ * getbuildlog:
+ + Remove experimental.debian.net, now that experimental logs show up on
+ the normal buildd site. (Closes: #621758)
+ + Remove temp file if the script exits early.
+ * licensecheck: Remove "(the License)" from check for Apache license.
+ Thanks to Dmitry Kurochkin for the suggestion. (Closes: #620902)
+
+ [ Ron Lee ]
+ * cowpoke: add a --return option that copies the build results back to a
+ directory somewhere. (Closes: #614268)
+
+ [ Christoph Berg ]
+ * debcheckout: Correctly extract package name from svn://.../trunk/$pkg
+ style URLs.
+
+ -- James Vega <jamessan@debian.org> Fri, 15 Apr 2011 00:21:57 -0400
+
+devscripts (2.10.71) unstable; urgency=low
+
+ [ Christoph Berg ]
+ * debcommit (git): Don't treat "no files to commit" as an error when called
+ with --release, otherwise it is not possible to tag after the final build.
+
+ [ James Vega ]
+ * bts:
+ + Use Pod::Text to remove POD markup before displaying the help. (Closes:
+ #613502)
+ + Document that whitespace is required around the dot/comma separating
+ command stanzas. (Closes: #595893)
+ * dget: Ignore IO::File errors from local cache when a URL is given.
+ The local cache should be used when accessible, but not prevent downloads
+ when it isn't. (Closes: #599354)
+ * build-rdeps: Remove hard-coded path for grep-dctrl.
+ * debchange:
+ + Require an argument for the --allow-lower-version option. (Closes:
+ #597675)
+ + Since the entry added by --closes requires editing anyway, require the
+ user to save the changelog for it update the original changelog.
+
+ [ Patrick Schoenfeld ]
+ * build-rdeps: Update release_pattern for the new InRelease release files,
+ which apt began downloading in newer versions instead of the Release file.
+ (Closes: #613941)
+
+ [ Ron Lee ]
+ * cowpoke: try to rsync source files to the build host. (Closes: #610072)
+ Thanks to Joachim Breitner for the idea and initial patch.
+
+ -- James Vega <jamessan@debian.org> Sat, 19 Feb 2011 11:23:20 -0500
+
+devscripts (2.10.70) unstable; urgency=low
+
+ [ James Vega ]
+ * debuild:
+ + Properly quote shell variable when parsing options. (Closes: #556248)
+ + Don't treat “-nc” as implying binary only build. (Closes: #607303)
+ + Add recognition of dpkg-buildpackage's “-A” option for building only
+ binary independent packages.
+ * pts-subscribe: Handle “--until 0” the same as “--forever”. (Closes:
+ #604740)
+ * uscan:
+ + Update documentation to use “.+” instead of “.*” in groupings. Thanks
+ to Ben Finney for the patch. (Closes: #606060)
+ + Add “target” element to --dehs' XML, specifying the name of the
+ downloaded file. (Closes: #598514)
+ * debcheckout: Use the correct prototype for set_destdir. (Closes: #606053)
+ * Use “mktemp --tmpdir” instead of specifying an absolute path under /tmp.
+ (Closes: #610027)
+ * Fix a typo in debchange(1). (Closes: #610192)
+ * bts: Make the message number optional for the “summary” sub-command. This
+ allows clearing an already set summary. (Closes: #610326)
+ * rmadison: Document udd url shorthand, added in 2.10.62. (Closes: #589437)
+ * Use appropriate typography for literal vs. replacement text in man pages.
+ Thanks to David Prévot for the patch and French translation updates.
+ (Closes: #600212)
+ * dd-list: Ignore extraneous whitespace. (Closes: #595251)
+ * build-rdeps: Remove extraneous EOL whitespace in the output. (Closes:
+ #612500)
+ * debian/control: Bump Standards-Version to 3.9.1.0 -- no changes necessary.
+
+ [ Christoph Berg ]
+ * debcheckout: For debian-dir-only repositories, also retrieve the source
+ package, unpack it, and move the missing files over. Add a new option
+ --source (DEBCHECKOUT_SOURCE) to control this behavior. (Closes: #535767)
+ * Makefiles: Fix parallelization for use with make -j N.
+ * rmadison: New configuration variable: RMADISON_ARCHITECTURE.
+ Set the default architecture to use unless overridden by a command line
+ option. To see any packages with a set B<RMADISON_ARCHITECTURE>, use
+ --architecture='*'. By Uli Martens.
+
+ [ Raphael Geissert ]
+ * rmadison: Exit with a non-zero code if curl/wget has a failure. (Closes:
+ #513685)
+
+ -- James Vega <jamessan@debian.org> Wed, 09 Feb 2011 02:38:32 -0500
+
+devscripts (2.10.69+squeeze1) stable; urgency=low
+
+ * bts: Accept the "wheezy" and "wheezy-ignore" tags. (Closes: #612521)
+ * debchange:
+ + Set Squeeze as the default backports target.
+ + Recognize "lenny-backports-sloppy" and "squeeze-backports"
+ distributions.
+ + Remove "etch-backports" and "etch-volatile" distributions.
+
+ -- James Vega <jamessan@debian.org> Sun, 06 Feb 2011 01:01:14 -0500
+
+devscripts (2.10.69) unstable; urgency=low
+
+ [ James Vega ]
+ * po4a: Add targets to transform translated POD/DocBook files into man
+ pages. (Closes: #597782)
+ * Include command list in localized devscripts.1. (Closes: #597906)
+ * Fix a couple markup issues in source files for generated man pages.
+ * bts: Don't send an empty email when --no-action is given. (Closes:
+ #600822)
+
+ [ David Prévot ]
+ * Update French translation. (Closes: #599234, #600033)
+
+ [ Patrick Schoenfeld ]
+ * Replace occurrences of old FSF address with the FSF recommendation
+ what should be written inside of source files.
+ (Closes: #502512)
+
+ -- James Vega <jamessan@debian.org> Thu, 21 Oct 2010 07:36:42 -0400
+
+devscripts (2.10.68) unstable; urgency=low
+
+ [ James Vega ]
+ * dget: Fix parsing of apt-cache and sources.list when given only a package
+ name. (Closes: #594904)
+ * debchange:
+ + Remove EOL Ubuntu release Intrepid. Add new development release Natty.
+ (Closes: #593659)
+ + Remove Etch and add Squeeze as backports targets. Lenny is still the
+ default bpo target.
+ * rmadison: Change Backports URL to backports.debian.org. (Closes: #595714)
+
+ [ Luk Claes ]
+ * Adjust rmadison documentation for move of accessible projectb mirror
+ from merkel to ries.
+
+ -- James Vega <jamessan@debian.org> Wed, 08 Sep 2010 18:46:35 -0400
+
+devscripts (2.10.67) unstable; urgency=low
+
+ * debcommit: Use the first detected changelog instead of the last. (Closes:
+ #591368)
+ * debsnap: Remove use of pure-perl specific functions from JSON module.
+ (Closes: #591392)
+ * debchange: Clarify how the TZ environment variable affects debchange.
+ Based on a patch by Rolf Leggewie. (LP: #330430)
+
+ -- James Vega <jamessan@debian.org> Sat, 14 Aug 2010 12:02:17 -0400
+
+devscripts (2.10.66) unstable; urgency=low
+
+ [ James Vega ]
+ * bts:
+ + Fix ability to clear all tags on a bug. (Closes: #539688)
+ + Detect invalid characters in usertags. (Closes: #590930)
+ + Allow specifying multiple tag modifiers (+, -, =) in one usertag stanza.
+ * rc-alert: Add missing hyphens and correct formatting in the man page.
+ Based on a patch by Salvatore Bonaccorso. (Closes: #589607)
+ * checkbashisms: Allow kill & trap XSI-isms unless --posix is given, as per
+ Policy 3.9.1.0. (Closes: #486823)
+ * debchange: Add --[no]multimaint-merge option, corresponding to the
+ DEBCHANGE_MULTIMAINT_MERGE configuration variable. (Closes: #590842)
+ * licensecheck: Add .pas, .inc, .dtd., .xsl, and .mod files to the default
+ check list. (Closes: #534988, #591305)
+ * build-rdeps: Escape regular expression metacharacters in package names.
+ (Closes: #590832)
+ * Build-Depends on po4a (>= 0.40) so po4a recognizes .TQ macro.
+
+ [ Cyril Brulebois ]
+ * uscan: Get rid of extra quoting in dpkg --compare-versions calls.
+ (Closes: #590178)
+
+ [ Carsten Hey ]
+ * debsign: Add options --re-sign and --no-re-sign to let the user choose
+ whether an already signed file should be resigned. (Closes: #580821)
+
+ -- James Vega <jamessan@debian.org> Mon, 02 Aug 2010 01:31:38 -0400
+
+devscripts (2.10.65.1) unstable; urgency=low
+
+ * debc:
+ + Call changelog_parse correctly. (Closes: #588947)
+ + Update bash completion to complete *.changes files and package names.
+ Thanks to Stefano Rivera for the patch. (Closes: #584703)
+
+ -- James Vega <jamessan@debian.org> Tue, 13 Jul 2010 20:10:09 -0400
+
+devscripts (2.10.65) unstable; urgency=low
+
+ [ James Vega ]
+ * Remove mergechanges from the set of commands which use completion of
+ package names. (Closes: #578167)
+ * bts:
+ + Use sendmail to send mails with extra headers when $(DEB)EMAIL aren't
+ present. (Closes: #577564)
+ + Document that $(DEB)EMAIL must be in the environment to send email using
+ either --mutt or --smtp-host. (Closes: #578334)
+ + Cleanup the help output and add some options which were only documented
+ in the man page.
+ + Allow specifying multiple tag modifiers (+, -, =) in one tag stanza.
+ (Closes: #578118)
+ + Document the valid values for the status key in the select command.
+ (Closes: #583067)
+ * debsnap:
+ + Iterate over the list of files listed for a hash until we find one that
+ matches the requested package. (Closes: #584734)
+ + Warn and move on to the next file if no files are present for a given
+ hash or none match the requested package. (Closes: #587265)
+ + Handle error responses from snapshot.debian.org. (Closes: #587217)
+ + Use the basename of the file being downloaded as the name under which to
+ save it. (Closes: #584735)
+ + Do not remove the destination directory when --force is given. (Closes:
+ #587517)
+ * Remove --ignore-dirname options (and deprecation notices) from all
+ scripts. 6.5 years is long enough to stop using that option.
+ * diff2patches: Document the patch naming scheme and use of “debian/” as the
+ destination directory when “debian/patches/” doesn't exist. (Closes:
+ #552693)
+ * mk-build-deps:
+ + Add options to build packages which depend on solely Build-Depends or
+ Build-Depends-Indep. (Closes: #498898)
+ + Include build-essential in Depends. (Closes: #565889)
+ * debi: Use “dpkg -O” instead of parsing dpkg-query's output to upgrade only
+ packages which are already installed. (Closes: #563390)
+ * debcheckout: Specifically call out that Debian hosts are already handled
+ in DEBCHECKOUT_AUTH_URLS' description. Thanks to martin f. krafft for the
+ suggested wording. (Closes: #530581)
+ * debchange: When running “dch -r”, use <dist>-backports if a backports
+ upload is detected. (Closes: #588502)
+ * uupdate: Use “0ubuntu1” for the Debian revision of the version number when
+ running uupdate on Ubuntu systems. Based on a patch by Guillaume Martres.
+ (Closes: #577998)
+ * Ship French man pages in UTF-8 now that #196762 is fixed.
+
+ [ Martin Zobel-Helas ]
+ * Remove svk from Recommends, it is no longer in the archive. (Closes:
+ #581224)
+
+ [ Raphael Geissert ]
+ * checkbashisms:
+ + Makefile handling:
+ - Simplify make variables as shell variables. (Closes: #535368)
+ - Convert all $$ to $.
+ - Recognize SHELL setting in Makefile when being set as an override.
+ - Ignore make's '-' for ignore errors.
+ - Fix some false positives due to target names.
+ + Detect incorrect use of ^ instead of ! for negation in pattern matching
+ collections. (Closes: #497489)
+ + Detect use of {post,pre}{increment,decrement} in arithmetic expansion.
+ (Closes: #572006)
+ + Detect use of Bash's “printf -v var ...” or the %b and %q format
+ specifiers.
+ + Detect use of the Bash's “coproc” keyword.
+ + Detect use of Bash's “;;&” and ”;&” operators.
+ + Add support for handling line continuations. (Closes: #531327)
+ + Fix a false positive with file redirection.
+ + Fix handling of indented heredoc delimiters.
+ + Fix some parsing of quoted strings.
+ + Detect use of exponentiation.
+ + Detect use of the 'jobs' built-in.
+ + Detect use of command with options other than “-p”.
+ + Fix a false positive with redirection to an fd specified via a variable.
+ + Detect unexpected EOF for unclosed heredocs, quoted strings, and line
+ continuations.
+
+ [ Simon McVittie ]
+ * mk-build-deps:
+ + Build an Arch: any package if any of the Build-Depends have architecture
+ requirements. (Closes: #580600)
+ + Allow specifying for which architecture to build the package.
+
+ [ Charles Plessy ]
+ * debchange: Add “--team” support. (Closes: #588714)
+
+ -- James Vega <jamessan@debian.org> Mon, 12 Jul 2010 23:22:08 -0400
+
+devscripts (2.10.64) unstable; urgency=low
+
+ [ Stefano Zacchiroli ]
+ * devscripts.1: generic documentation for $DEBEMAIL and $DEBFULLNAME
+
+ [ James Vega ]
+ * Devscripts::Versort: Correct _versort so the lists it returns aren't
+ shorter than the ones passed in to _versort. (Closes: #577654)
+ * debcheckout: Switch from using the Switch module to Perl 5.10's switch
+ feature.
+
+ -- James Vega <jamessan@debian.org> Tue, 13 Apr 2010 23:46:10 -0400
+
+devscripts (2.10.63) unstable; urgency=low
+
+ [ Christoph Berg ]
+ * debcheckout: inject extra slash in "hg ssh://hg.debian.org//" URLs so
+ paths are not based in the user's $HOME.
+
+ [ James Vega ]
+ * Devscripts::Versort:
+ + Restore previous behavior of versort not performing a check on whether
+ the version is a valid Debian version. (Closes: #577043)
+ + Re-add deb_versort which ensures the versions are valid Debian versions.
+ * debian/control:
+ + Require dpkg-dev >= 1.15.4.1 since we're using bits of the new Perl API.
+ + Add libjson-perl to Build-Depends so we can syntax check debsnap.
+ * debcheckout: Use $DEBEMAIL/$DEBFULLNAME to set username in .hg/hgrc.
+
+ [ David Paleino ]
+ * debsnap: rewritten from scratch in Perl, use snapshot.debian.org
+ and its JSON API (Closes: #530416)
+
+ [ Thorsten Glaser ]
+ * debsign: Convert to a Debian Policy §10.4 shell script. (Closes: #577251)
+
+ -- James Vega <jamessan@debian.org> Mon, 12 Apr 2010 23:56:40 -0400
+
+devscripts (2.10.62) unstable; urgency=low
+
+ [ James Vega ]
+ * debcommit:
+ + Fix a regression where only debian/ changes were being committed in CVS
+ repos. Thanks to Thomas Parmelan for the patch. (Closes: #563918)
+ + Change '~' in version numbers to '.' when tagging in git. Thanks to
+ Damyan Ivanov. (Closes: #564075)
+ + Treat darcs similar to hg with respect to determining the commit
+ message. Fold a single change into one line and spawn an editor if
+ multiple changes are detected. (Closes: #563901)
+ + Ensure the commit message presented to the user for editing always has
+ an EOL on the last line.
+ * rmadison:
+ + Add http://qa.debian.org/cgi-madison/madison.cgi, shorthand "udd", as a
+ known madison URL.
+ + Detect an existing '?' in a URL and use '&' to append more cgi
+ parameters. Thanks to Raphael Geissert.
+ * chdist:
+ + Add "use strict" and update for compliance.
+ + Use Dpkg::Version to perform version comparisons.
+ * Devscripts::Versort: Use Dpkg::Version::version_compare instead of
+ invoking “dpkg --compare-versions”.
+ * debian/control:
+ + Update Vcs-* to point to the new Git repository.
+ + Remove Conflicts on kdesdk-scripts from Etch.
+ + Bump Standards-Version to 3.8.4 -- no changes necessary.
+ * dcmd: Allow capital letters for the section and priority fields. (Closes:
+ #565159)
+ * debcheckout: Ensure "/git/" is at the start of the URL's path when
+ performing an authenticated clone of an Alioth git repo.
+ * uupdate:
+ + Fix a typo which caused redirection of stdout to a file name "@".
+ (Closes: #569062)
+ + Add support for xz compressed archives/patches and 7z archives. Thanks
+ to Hideki Yamane for the patch. (Closes: #568615)
+ + Clarify wording when neither a diff nor a debian.tar is found. (Closes:
+ #575820)
+ * Update descriptions of debcommit to include darcs as a supported VCS.
+ (Closes: #570138)
+ * debchange:
+ + Add maverick as a valid distribution. Thanks to Benjamin Drung for the
+ patch. (Closes: #576287)
+ + Treat a trailing '+' like a trailing '~' when incrementing the version
+ number. (Closes: #521642)
+ * debuild: Expose two new variables (epoch-less source version, and upstream
+ version) to hooks. Thanks to gregor herrmann for the patch. (Closes:
+ 573092)
+ * checkbashisms: Detect more Bash builtins -- readarray, mapfile, enable.
+ (Closes: #568473)
+ * dd-list: Clarify that --dctrl simply changes the expected format of the
+ list of packages. Thanks to Adeodato Simó for the suggestion. (Partially
+ addresses #509983)
+ * Add bash completion of package names for various Devscripts commands.
+ Thanks to Simon Paillard for the patch. (Closes: #507776)
+ * Document in dscverify(1) that /usr/share/keyrings/debian-maintainers.gpg
+ is one of the default keyrings.
+ * dget: Add description of the use of dscverify to the description in the
+ man page. (Closes: #537367)
+ * Add support for working with/recognizing xz archives to debchange,
+ debdiff, debuild, uscan.
+ * Use standalone “set -e” lines in maintainer scripts.
+ * Add debian/source/format with "3.0 (native)".
+
+ [ Patrick Schoenfeld ]
+ * nmudiff: Fix "[nmudiff] please include --tagpending option" by applying the
+ patch from Gregor Herrmann. Thanks. (Closes: #559549)
+ * build-rdeps:
+ + Add some documentation to the manpage, which emphasizes on the fact that
+ the tool has some external dependencies (namely apt Sources files)
+ + Add a proper argument passing to test_for_valid_component() so that
+ it really gets the filename and not the Release file entry.
+ + Add a check to test_for_valid_component() to test if a given Sources
+ file actually exists and otherwise print a more meaningful warning.
+ (Closes: #564443)
+
+ [ Adam D. Barratt ]
+ * debchange: Sanitise list of distributions. Remove {sarge,etch}-backports
+ and sarge-volatile, none of which accept uploads any more.
+
+ [ Martin Zobel-Helas ]
+ * checkbashisms: Fix typo spotted by Dann Frazier. (Closes: #575554)
+
+ -- James Vega <jamessan@debian.org> Mon, 05 Apr 2010 23:00:39 -0400
+
+devscripts (2.10.61) unstable; urgency=low
+
+ * bts: Correct the address used to email the submitter when using the "bts
+ done" command.
+
+ -- James Vega <jamessan@debian.org> Sat, 02 Jan 2010 22:20:19 -0500
+
+devscripts (2.10.60) unstable; urgency=low
+
+ The "Welcome to the New Year" release.
+
+ [ James Vega ]
+ * checkbashisms: Detect use of {x..z} expansion. Thanks to Raphael
+ Geissert. (Closes: #560774)
+ * who-uploads: Show usage if no arguments are given. Thanks to Kumar
+ Appaiah. (Closes: #560955)
+ * uscan:
+ + Add missing escape of '\' in man page. Thanks to Marco Túlio Gontijo
+ for the patch. (Closes: #562587)
+ + Add missing verb in description of FTP syntax. Thanks to Marco Túlio
+ Gontijo for the patch. (Closes: #562586)
+ * annotate-output: Allow specifying a timestamp format. (Closes: #539720)
+ * bts:
+ + Always include "thanks" at the end of the control block. (Closes:
+ #542962)
+ + Allow specifying which fields will be shown by "bts status". (Closes:
+ #499283, #323782)
+ + Add "verbose" option to "bts status", which will also show fields that
+ don't have a set value.
+ + Add "done" command which sends a close command as well as Ccing the bug
+ submitter. (Closes: #482751)
+ * build-rdeps:
+ + Add --origin option to specify which origin to use.
+ + Use the Release file to determine which Sources file(s) to search for
+ the given origin. Thanks to Michael Schutte for the patch. (Closes:
+ #545115)
+
+ [ Patrick Schoenfeld ]
+ * licensecheck: Add support for some common variants of the WTFPL
+
+ [ Ryan Niebur ]
+ * deb-reversion: Fix use with recent dpkg-dev, thanks to Salvatore
+ Bonaccorso (Closes: #559702)
+
+ [ Adam D. Barratt ]
+ * Bump Standards-Version to 3.8.3. No changes required.
+ * build-rdeps: Correct spelling error in manpage ("ommitted" -> "omitted").
+ * checkbashisms: Correct spelling error in manpage ("preceeded" ->
+ "preceded").
+ * decbommit: Correct spelling error in manpage ("commiting" ->
+ "committing").
+
+ -- James Vega <jamessan@debian.org> Fri, 01 Jan 2010 23:30:33 -0500
+
+devscripts (2.10.59) unstable; urgency=low
+
+ [ James Vega ]
+ * debrelease: Do not use .svn/deb-layout to determine debsdir if --debs-dir
+ was used. (Closes: #558172)
+ * checkbashisms: Fix a false positive detection of ". $(foo bar)/baz" as
+ attempting to pass arguments to a sourced script. (Closes: #557639)
+
+ [ Joachim Breitner ]
+ * debcommit: Add support for having only debian/ under a svn, cvs or darcs
+ VCS (Closes: #450878)
+
+ -- James Vega <jamessan@debian.org> Tue, 01 Dec 2009 00:16:53 -0500
+
+devscripts (2.10.58) unstable; urgency=low
+
+ * who-uploads: Correct the argument to wget's -O option. Thanks to
+ Yves-Alexis Perez for the patch. (Closes: #557507)
+
+ -- James Vega <jamessan@debian.org> Sun, 22 Nov 2009 09:16:03 -0500
+
+devscripts (2.10.57) unstable; urgency=low
+
+ [ James Vega ]
+ * debcommit: Fix gathering of "Closes" with dpkg >= 1.15.5.2. (Closes:
+ #557318)
+
+ [ Ben Finney ]
+ * Tighten default dirname regex to match a version only if it contains
+ at least one character: ‘PACKAGE(-.+)?’. (Closes: #521126)
+
+ -- James Vega <jamessan@debian.org> Sat, 21 Nov 2009 18:01:28 -0500
+
+devscripts (2.10.56) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * debchange: Update the list of known Ubuntu distributions, adding
+ lucid (lynx) and removing gutsy.
+
+ [ James Vega ]
+ * mk-build-deps:
+ + Use Pod::Usage to generate the --help message. This keeps the message
+ in sync with the POD instead of keeping two different texts in sync.
+ (Closes: #548245)
+ + Skip comment/blank lines when parsing the control file. (Closes:
+ #549402)
+ * debchange:
+ + Based on a scan of the lintian lab, add '.', '!', and ':' to the set of
+ punctuation characters we strip from the distribution name when we parse
+ an "Upload to ..." line. (Closes: #548171)
+ + Consistently use “--nomainttrailer” in the manpage. (Closes: #544351)
+ * debuild:
+ + Recognize dpkg-source's -z/-Z options. (Closes: #553205)
+ + Remove references to pbuilder-satisfydepends. Suggest mk-build-deps
+ instead. (Closes: #446318)
+ * debcommit:
+ + Handle the split up of Dpkg::Changelog in Dpkg 1.15.5.2.
+ + Use Dpkg::Changelog::Parse, if available, instead of shelling out to
+ dpkg-parsechangelog.
+ + Remove use of deprecated L<> markup for pod2man.
+ * who-uploads: Set a 30 second timeout when invoking wget instead of using
+ wget's default 900 second timeout. (Closes: #541732)
+ * debsign: Update the dcut reference to point to ftp.upload.debian.org
+ instead of ftp-master.debian.org.
+ * debrelease:
+ + Support using buildArea from .svn/deb-layout. (Closes: #456226)
+ + Change to the package root directory before verifying the existence of
+ debsdir.
+ * bts: Remove use of deprecated L<> markup for pod2man.
+
+ [ Ryan Niebur ]
+ * add w3m to suggests for grep-excuses -w, check for it at runtime too
+ (Closes: #551516)
+ * mk-build-deps: allow passing options to the command in
+ MKBUILDDEPS_TOOL. Setting MKBUILDDEPS_TOOL="aptitude --schedule-
+ only" in ~/.devscripts should work now. (Closes: #547164)
+ * mergechanges:
+ + if both input files have the same file listed but with
+ different checksums, keep the first and get rid of the one from the
+ second.
+ + make trailing whitespace consistent with how 'normal'
+ .changes file are
+
+ [ Patrick Schoenfeld ]
+ * debchange:
+ + Include patch from Mathieu Parent to allow --newversion to be mixed
+ together with --package. (Closes: #549469)
+
+ [ Stefano Zacchiroli ]
+ * debcheckout: Set user.name and user.email in the checked out repository if
+ it is a git repo. (Closes: #555025)
+
+ -- James Vega <jamessan@debian.org> Fri, 20 Nov 2009 00:28:13 -0500
+
+devscripts (2.10.55) unstable; urgency=high
+
+ * Urgency "high" for security fix fix
+
+ [ Ryan Niebur ]
+ * uscan: fix a regression from the security fix when the command is
+ given parameters. use Text::ParseWords::shellwords to parse the
+ given command.
+ * dch: fix comparison of versions when the new and current version are
+ the same (Closes: #545099)
+
+ [ Adam D. Barratt ]
+ * bts: Refer to the "--no-ack" option rather than the incorrect "--no-acks"
+ in the description of the BTS_SUPPRESS_ACKS variable. Thanks, Jakub
+ Wilk. (Closes: #542961)
+ * licensecheck: Add missing blank line in POD. Thanks, Nicolas Francois.
+ * uscan: Fix regressions introduced by the security fix in the previous
+ upload. The parser now correctly keeps track of the last match when /g
+ is used to avoid infinite loops. Thanks, Raphael Geissert and Martín
+ Ferrari. (Closes: #544931)
+ * l10n updates; thanks, Nicolas Francois: (Closes: #545327)
+ + Update French manpage translations
+ + Fix addendum format for dcontrol in po4a/devscripts-po4a.conf
+ + Use --previous when invoking po4a
+ * debian/control: Bump version of po4a build-dependency to 0.31 to ensure
+ support for --previous.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Fri, 11 Sep 2009 10:02:52 +0100
+
+devscripts (2.10.54) unstable; urgency=high
+
+ * Urgency "high" for security update
+
+ [ James Vega ]
+ * debchange: Clarify the wording for the explanation of
+ --force-save-on-release. (Closes: #539155)
+ * grep-excuses: Document that -w only works with a package name.
+ * manpage-alert: Fix handling of commands which start with non-word
+ characters. Based on a patch from Ville Skyttä.
+ * bts: Add support for the limit command. (Closes: #541698)
+ * tagpending: Use 'bts limit source ...' instead of 'bts package ...' and
+ listing every binary package the source produces. This will prevent
+ tagpending emails from exceeding the 998 characters per line limit of
+ email.
+
+ [ Adam D. Barratt ]
+ * bts:
+ + Make "tags NNNNNN =" operate correctly again. (Closes: #539688)
+ + Use >& rather than writing to filehandles under /dev/fd.
+ (Closes: #517917)
+ * cowpoke:
+ + Update to new upstream version
+ - Run with reduced privileges and only elevate them when needed to
+ run cowbuilder.
+ - Don't explicitly pass a buildd username unless it is set, this allows
+ people to configure the remote username in their ssh config or
+ similar. (Closes: #538191)
+ - Supply pbuilder with the --buildplace and --aptcache options to
+ enable use with reduced privileges.
+ - Relative paths are all relative to the BUILDD_USER's home directory
+ now, not the incoming dir.
+ - Add --dpkg-opts support for passing options on to dpkg.
+ - Autoclean the apt-cache so it doesn't grow unbounded.
+ * dcmd: Add filtering options for udebs. (Closes: #541827)
+ * debchange: Don't output spurious characters when extended Unicode
+ characters are passed on the command line. (Closes: #542484)
+ * dget: Update the dpkg-source output matching to enable --build to work
+ again. (Closes: #541409)
+ * uscan: Evaluate mangle rules without evaluating them directly as Perl
+ code to avoid the possibility of remote code execution. This is
+ CVE-2009-2946. As a side effect, (Closes: #515209)
+ * Packaging changes: Add sensible-utils to Recommends. Several scripts
+ make use of sensible-editor and it has moved from debianutils so is
+ no longer essential. (Closes: #541846)
+
+ [ Patrick Schoenfeld ]
+ * Add an example for githubredir.debian.net to the uscan manpage
+ (Closes: #539923)
+
+ [ Christoph Berg ]
+ * debdiff: New option --no-unpack-tarballs to skip unpacking tarballs
+ contained in source packages.
+
+ [ Ryan Niebur ]
+ * uscan: add --download-current-version option (Closes: #539724)
+ * Add myself to Uploaders
+ * debchange: add support for using --package with -i to change the
+ source package name (Closes: #515885)
+ * debcheckout: use bzr+ssh instead of sftp, thanks to Colin Watson for
+ the patch (Closes: #526068)
+ * debchange: remove NMU version when -i is ran without -n or auto nmu
+ (Closes: 487323)
+ * uscan: add support for repacking lzma compressed tarballs, thanks to
+ Michal Čihař for the patch (Closes: #514504)
+ * namecheck: use comments instead of pod blocks so that they don't get
+ translated, thanks to Florentin Duneau for the patch (Closes:
+ #529062)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Wed, 02 Sep 2009 20:22:29 +0100
+
+devscripts (2.10.53) unstable; urgency=low
+
+ The "Debconf fish!" upload
+
+ [ Adam D. Barratt ]
+ * bts:
+ + Add a missing "use IO::File" to make "bts select file:foo" work.
+ Thanks, Raphaël Hertzog. (Closes: #538288)
+ + Add the "affects" command to mark a bug as affecting packages other
+ than the package it was filed against.
+ * checkbashisms: Detect the use of "source" when the sourced filename
+ contains a tilde (Closes: #528592) or consists of a single character
+ (Closes: #535252). Thanks, Raphael Geissert and Ryan Niebur.
+ * debcommit: Add darcs support. Thanks to Joachim Breitner for the patch.
+ (Closes: #536037)
+ * nmudiff:
+ + Fix specification of BCc to control@bugs so that it's interpreted
+ as an option to mutt and not as a recipient address. Thanks, Filippo
+ Giunchedi. (Closes: #534585)
+ + Add a missing "feel" to the delayed/XX template. Thanks, Raphael
+ Geissert.
+ * rmadison:
+ + Add patch from Ubuntu to make lookups against their database work again.
+ (The server moved from people.ubuntu.com to people.canonical.com)
+ (Closes: #537302)
+ + When using curl, follow redirects by default. (Also from the Ubuntu
+ patch).
+ * debian/control: Replace descriptions of cvs-* with those from README,
+ because they're better.
+
+ [ Patrick Schoenfeld ]
+ * bts: Implement a --mutt parameter, which allows mails to be sent
+ using mutt.
+ * debchange: Implement a dist indication mechanism that parses
+ an 'Upload to $DIST' line and sets the distribution accordingly, when
+ the --release parameter is used. (Closes: #515346)
+ * debi:
+ + Implement a --with-depends switch to install depencies of the
+ package together with the package
+ (Closes: #511061)
+ + Implement a --tool switch to choose the tool for installing
+ dependencies
+ * dget: Make it clear in manpage and usage information, that dget is capable
+ of processing several URLs or packages (Closes: #535977)
+ * dscverify:
+ + Implement a --verbose option to disable suppressing
+ of GPG output (Closes: #525670)
+ + Add a notice to the manpage of dscverify that the debian-keyring package
+ has the potential to be out of date and how this can be worked around
+ (Closes: #438679)
+ + Document standard keyring locations in the dscverify manpage
+ * licensecheck: Skip empty files instead of reporting that they don't
+ have a copyright (Closes: #535337)
+ * nmudiff: Use 'bts select' to test, weither a check already has a patch
+ tag set or not and only set it, if not (Closes: #519678)
+ * Add a script listing to devscripts.1 which is auto-generated from
+ debian/control (Closes: #504008)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Wed, 29 Jul 2009 15:12:24 +0100
+
+devscripts (2.10.52) unstable; urgency=low
+
+ * debdiff: Make --diffstat work again; accidentally broken in 2.10.48.
+ * uupdate: Fix invocation of *cat when attempting to apply diffs.
+ Thanks, Yannick Roehlly. (Closes: #533415)
+ * debian/control: Update Standards-Version to 3.8.2 (no changes needed)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Wed, 17 Jun 2009 19:39:33 +0100
+
+devscripts (2.10.51) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * bts:
+ + Add a note to the description of --smtp-server explaining that
+ reportbug.debian.org does not support relaying and is therefore not a
+ suitable server to use in circumstances where $package@packages.d.o
+ may be automatically Cced.
+ + Ignore the --{force-,}interactive options when combined with -n.
+ (Closes: #531422)
+ * checkbashisms:
+ + Detect shellscript wrappers that use "then" or "else" before calling
+ exec. Thanks, Raphael Geissert. (Closes: #530815)
+ + Fix a false positive detection of ". $(foo bar)" as attempting to pass
+ arguments to a sourced script. Thanks, Raphael Geissert.
+ + Detect use of passing arguments to a sourced script as part of a
+ conditional statement. Thanks, Raphael Geissert.
+ + Correctly count the number of quotes in a line when detecting whether
+ we are currently inside a "quoted block". Thanks, Raphael Geissert.
+ (Closes: #531247)
+ + Do not check the contents of a dpatch. The wrapper script always uses
+ /bin/sh and we can't detect the interpreter of a patch.
+ + Improve the check for the use of $[] inside quoted text. Thanks,
+ Raphael Geissert.
+ + Apply the "common lead-in text" to the "readonly" check.
+ + Remove "\\" from the list of unsafe backslash escapes, as it appears to
+ work in all shells.
+ * dcmd: Parse changes / dsc files containing section or priority entries of
+ "-". (Closes: #531593)
+ * licensecheck: Fix an error in a regular expression which led to an
+ uninitialized value warning and missing version for some GPL headers.
+ Thanks, Jakub Wilk. (Closes: #531059)
+ * uscan: Make a regular expression example in the manpage clearer. Thanks,
+ Jason Heeris. (Closes: #530362)
+ * uupdate: Add support for .lzma compressed tarballs and diffs. Thanks to
+ Simon Richter for the patch. (Closes: #531570)
+
+ [ James Vega ]
+ * bts: Only Cc $package@packages.debian.org if we're reasonably sure we have
+ an email body instead of simply control messages; i.e., if the user
+ specifies the --force-interactive option or the --interactive option and
+ chooses to edit the email body. (Closes: #530926)
+ * uscan: Log the correct filename when running the post-download action.
+ Simplify the surrounding logic so the logging and command are less likely
+ to get out of sync in the future.
+
+ [ Mohammed Adnène Trojette ]
+ * pts-subscribe: refer to bsd-mailx rather to the transitional mailx
+ package. Thanks Ansgar Burchardt for the patch. (Closes: #531332)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Mon, 15 Jun 2009 18:57:20 +0100
+
+devscripts (2.10.50) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * chdist: Make --data-dir work with relative paths. (Closes: #528254)
+ * debchange: Add karmic (koala) to the list of recognised Ubuntu
+ distributions.
+ * debsnap: Fix mktemp call to use a sufficient number of Xs in the template
+ string (Closes: #528193) and use -t rather than hard-coding /tmp.
+ * debuild: Use printf when parsing the DEBUILD_LINTIAN_OPTS configuration
+ file variable, to avoid eating -E. (Closes: #527027)
+ * mass-bug: Add an option to specify that the supplied package names are
+ those of source packages rather than binary packages. Based on a patch
+ by Felipe Sateler. (Closes: #527396)
+ * rc-alert: Use standard single quotes in the debtags section of the manpage
+ to avoid odd formatting and warnings from man
+ * uscan: Pass -n to gzip when repacking bz2 files to ensure consistent
+ checksums. Thanks, Damyan Ivanov. (Closes: #504672)
+
+ [ Christoph Berg ]
+ * dget: -u implies dpkg-source --no-check. Also, force LC_ALL=C to correctly
+ capture dpkg-source output with --build.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Thu, 21 May 2009 21:50:18 +0100
+
+devscripts (2.10.49) unstable; urgency=low
+
+ * debchange:
+ + Use == for numeric comparison, not eq.
+ + Mention in the help output and manpage that a dummy changelog entry
+ may be supplied in conjunction with --release in order to avoid
+ spawning an editor.
+ + Add a configuration variable and command line option to allow the
+ recent change to --release's "auto-save" behaviour to be disabled.
+ For consistency with other debchange options, the default is to
+ retain the behaviour introduced in 2.10.48 - i.e. that the changelog
+ must be explicitly saved after the use of --release. (Closes: #524393)
+ * debcommit: If the installed version of dpkg-dev supports retrieving a
+ list of appropriate bugs, automatically generate bzr --fixes arguments
+ for Launchpad bugs as well as Debian bugs. Thanks, Colin Watson.
+ (Closes: #525823)
+ * debsign: Make the PGP signing method work again. Thanks, Florian Weimer.
+ (Closes: #518821)
+ * getbuildlog: Add a missing "use lib" to allow the special "last" and
+ "last-all" versions to work correctly. Thanks, Iustin Pop.
+ (Closes: #523982)
+ * licensecheck: Add detection of the AGPL. Thanks, Didier Raboud.
+ (Closes: #520903)
+ * namecheck: Fix the formatting of a number of POD strings, also making
+ them easier to translate. Thanks, Florentin Duneau. (Closes: #526047)
+ * rc-alert:
+ + Allow the generated list of bugs to be restricted to those affecting
+ packages with particular debtags facets. Thanks, Jan Hauke Rahm.
+ (Closes: #523523)
+ + Allow the generated list of bugs to be sorted using popcon results.
+ Thanks, Jan Hauke Rahm. (Closes: #478833)
+ * rmadison: Allow a default URL to be specified in the configuration file.
+ Thanks, Roland Mas. (Closes: #524198)
+ * uscan: Remove a superfluous and repeated copy of the site name in an FTP
+ error message. Thanks, Vaclav Ovsik.
+ * Makefile: Remove cruft relating to French manpages, which has been handled
+ by the po4a setup for a while now.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sat, 02 May 2009 19:34:55 +0100
+
+devscripts (2.10.48) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * Update Standards Version to 3.8.1 (no changes required)
+ * debchange: Fix a couple of syntax errors in the "does an orig tarball
+ exist?" test introduced for #500932.
+ * debdiff:
+ + Don't bail if diff returned an exit status of 2 when comparing
+ files. If there are binary files in either of the trees being compared
+ then that's expected as the files can't be reliably compared.
+ + Don't claim that the exit status on failure will be anything other than
+ 255 (i.e. the result of die()ing).
+ * nmudiff: Adapt to handle the fact that debdiff will now return an exit
+ status of 1 when comparing non-identical source packages.
+ * debian/copyright: Explicitly refer to the GPL-2 and GPL-3 common license
+ files rather than the "GPL" symlink.
+
+ [ Patrick Schoenfeld ]
+ * debchange: When renaming a directory (because of version change)
+ and noticing that no matching orig tarball exist, emit a warning.
+ (Closes: #500932)
+ * uscan: Use maximum compression rate while repacking files from bzip2/zip
+ into gzip. Thanks Nelson A. de Oliveira.
+ (Closes: #522442)
+
+ [ James Vega ]
+ * debchange: As per the other edit flags, do not modify the original
+ changelog when using `debchange -r' unless the user saves the temporary
+ changelog. (Closes: #422450)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sun, 12 Apr 2009 16:11:40 +0100
+
+devscripts (2.10.47) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * dcontrol: Produce "friendly" error messages if liburi-perl and/or
+ libwww-perl aren't installed.
+ * debdiff:
+ + Don't treat an absence of differences as an error when comparing
+ source packages. (Closes: #515683)
+ + Set the exit status correctly when comparing source packages. If
+ differences were found, debdiff will now exit with a status of 1, as
+ per debdiff(1).
+ + Support bzip2 and lzma compressed orig tarballs. (Closes: #473969)
+ * debuild: Support bzip2 and lzma compressed orig tarballs.
+ (Closes: #473974)
+ * licensecheck:
+ + Document --no-conf.
+ + Fix an uninitialised variable warning when --no-conf is used. Thanks.
+ Cristian Greco. (Closes: #515047)
+ * nmudiff:
+ + Rework the arguments passed to mutt in order to avoid problems
+ attaching the diff with recent versions of mutt. Thanks, Adeodato
+ Simó. (Closes: #518127)
+ + Allow the specification of a particular DELAYED queue, rather
+ than including the "DELAYED/XX" placeholder. May be specified as
+ 0 to remove mention of DELAYED. (Closes: #518126)
+ * rc-alert: Modify the description of the "I" flag to reference the
+ squeeze-ignore tag rather than etch-ignore.
+ * debian/control, README: Add liburi-perl to the description of dcontrol.
+
+ [ James Vega ]
+ * bts: Include the module name when calling MIME::Base64::encode_base64
+ since MIME::Base64 is only being 'require'd not 'use'd. Thanks Євгеній
+ Мещеряков. (Closes: #516117)
+ * debchange: Do not use an empty gecos field when trying to determine the
+ maintainer's name. (Closes: 516423)
+
+ [ Christoph Berg ]
+ * dcontrol: New script to query binary and source package control files at
+ http://qa.debian.org/cgi-bin/dcontrol.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Wed, 04 Mar 2009 19:23:24 +0000
+
+devscripts (2.10.46) unstable; urgency=low
+
+ * bts:
+ + If the debbugs host in use is bugs(-*).d.o, use bugs-master.d.o when
+ reporting spam to match recent changes to the BTS.
+ + If -n / --no-action was given on the command line, print the URL that
+ would have been used to report spam rather than sending the report.
+ + Accept the new "squeeze" and "squeeze-ignore" tags.
+ * debchange:
+ + Add lenny-backports and lenny-volatile to the list of recognised
+ distributions. (Closes: #514818)
+ + Don't accept "sarge", "etch" or "lenny" as valid distributions. dak
+ requires suite names (e.g. "stable") rather than codenames.
+ + Modify --bpo to produce a changelog suitable for uploading to
+ lenny-backports rather than etch-backports by default. If the latest
+ changelog entry is for an etch backport, a new etch-backports stanza
+ will be produced instead.
+ * licensecheck:
+ + Remove C /* */ comments. Based on a patch by Jörg Sommer.
+ + Identify another couple of forms of GPL wording. (Closes: #514811)
+ + Add .xs (Perl XS files) and .vala (GNOME Vala source files) to the
+ default list of files to process. (Closes: #513770, #514337)
+ + Fix a bug in a regular expression which meant that .h files weren't
+ included in the default list of files to search.
+ + Add support for the Boost, Python and zlib/libpng licenses. Thanks,
+ Cristian Greco. (Closes: #514812)
+ * README.newscripts: Correct the "svn propset" syntax added in the previous
+ upload.
+ * debian/lintian.overrides: New file to allow us to override lintian
+ thinking that the mention of snapshot.debian.net in debsnap's description
+ is a reference to an upstream homepage.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Thu, 12 Feb 2009 19:19:16 +0000
+
+devscripts (2.10.45) unstable; urgency=low
+
+ [ Patrick Schoenfeld ]
+ * debsnap: Added new script from Ron Lee and David Paleino,
+ which grabs source packages from snapshot.debian.net.
+ (Closes: #511345)
+ * Add a hint to README.newscripts that new scripts might need a modification
+ to debian/copyright
+
+ [ Adam D. Barratt ]
+ * debchange:
+ + When adding a NEWS item, automatically propagate the urgency from the
+ changelog. (Closes: #511911)
+ + Make -v and -l interoperate with NEWS files properly again.
+ * debcheckout: Fix a typo and perform some QA on the manpage.
+ * debdiff: Default to comparing source packages in the order they were
+ passed on the command line once more, rather than using the "automagic
+ version sorting" introduced in 2.10.41. The new DEBDIFF_AUTO_VER_SORT
+ configuration file option allows the default behaviour to be controlled.
+ (Closes: #512290)
+ * debsign: Add further quoting around the use and generation of temporary
+ directory names, in case $TMPDIR contains spaces.
+ * mergechanges: Correct spelling of "parameters". Thanks, Kumar Appaiah.
+ (Closes: #512164)
+ * README.newscripts: Add a note about marking the script file as executable
+ in the repository.
+
+ [ James Vega ]
+ * bts: Document correspondent and affects keys for select command.
+ * debcheckout:
+ + Filter TopGit branches out of the list of branches given to
+ --git-track since "tg populate" already created them.
+ + Determine the actual HEAD ref to skip when first cloning a git repo
+ instead of assuming it is master. This ensures branches don't get
+ skipped when specifying extra branches to track with --git-track.
+ + Correct the Vcs-* example for Vim.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Wed, 21 Jan 2009 19:41:48 +0000
+
+devscripts (2.10.44) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * bts:
+ + Allow an alternative debbugs server to be specified. (Closes: #508676)
+ + Modify "bts status" to request source package information, so that we
+ don't always return "unknown".
+ + Don't issue repeated "user foo" commands for the same user.
+ + Remove excess whitespace from usertag commands.
+ * checkbashisms:
+ + Rework the comment detection code to avoid matching "$#" and to avoid
+ a number of similar issues. (Closes: #510343)
+ + Flag the use of "source" with an unquoted argument containing no path
+ information. (Closes: #510345)
+ * Debbugs.pm: Allow the address of the debbugs server to be specified
+ rather than hard-coding bugs.debian.org.
+ * debchange:
+ + Correctly increment bpo version numbers.
+ + Attempt to do the right thing (or at least something sensible) if the
+ package version ends in a tilde. (Closes: #510313)
+ * debdiff:
+ + Fix a couple of formatting issues in the manpage.
+ + Mention --{no-,}diffstat in the help message.
+ + Don't treat "DEBDIFF_SHOW_DIFFSTAT=no" as a modification from default
+ settings.
+ * licensecheck:
+ + Add .cs (C# source files) to the default list of files to check.
+ (Closes: #508163)
+ + Detect the CDDL license. Thanks to Mike Hommey for the patch.
+ (Closes: #510574)
+ * uscan: Improve parsing of non-HTMLised FTP directory listings so that
+ "foobar.tar.gz" doesn't match a request for "bar.tar.gz".
+ * conf.default.in:
+ + Use the new reportbug.debian.org as an example SMTP host for bts
+ rather than bugs.debian.org.
+ + Add BTS_SERVER.
+
+ [ Christoph Berg ]
+ * dscverify: Accept -u as an alias for --nosigcheck, inspired by dput -u.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Mon, 05 Jan 2009 19:20:04 +0000
+
+devscripts (2.10.43) unstable; urgency=low
+
+ The "how did I miss that one?" release
+
+ * debsign: Fix a use of mktemp to actually generate unique filenames.
+ (Closes: #508111)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Mon, 08 Dec 2008 06:32:18 +0000
+
+devscripts (2.10.42) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * checkbashisms: Fix a variable redeclaration warning. Thanks,
+ Neutron Soutmun. (Closes: #506975)
+ * cvs-deb{i,release}: Use mktemp rather than a temporary directory
+ name based on the process ID.
+ * debi: Add an "upgrade" option indicating that only those packages
+ already installed on the system should be installed, rather than
+ all packages listed in the .changes file. Thanks, Colin Watson.
+ (Closes: #506663)
+ * debsign:
+ + Use mktemp rather than a temporary directory name based on the
+ process ID. (Closes: #507482)
+ + Use temporary files rather than redirecting gpg's stdin and stdout,
+ enabling the use of pinentry-gtk2. (Closes: #507479)
+ * uscan:
+ + Remove the downloads.sourceforge.net example from the manpage.
+ It no longer works due to changes in the website structure. Thanks,
+ Alexander Block.
+ + Be more intelligent with redirects and relative filenames. This should
+ help in situations where the watchfile contains http://example.com/foo
+ which is a redirect to http://example.com/foo/, with the latter
+ containing relative filenames.
+ * uupdate: Use mktemp rather than a temporary directory name based on
+ the process ID.
+
+ [ Christoph Berg ]
+ * rmadison: Add debug.debian.net.
+
+ [ Patrick Schoenfeld ]
+ * dget: Fix misspelt wget option (should be --no-cache instead of
+ --no-chache) (Closes: #507672)
+
+ [ James Vega ]
+ * debcheckout: Use B<> and I<> to denote the different options sections
+ instead of =head2/=head3 since the latter cause pod2usage not to display
+ any options when running debcheckout -h.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sun, 07 Dec 2008 17:04:52 +0000
+
+devscripts (2.10.41) unstable; urgency=low
+
+ [ Patrick Schoenfeld ]
+ * build-rdeps:
+ + Make default pattern for source files match on codename
+ as well as suite (unstable, sid)
+ + Add a --exclude-component parameter which can be specified
+ multiple times to exclude certain components (e.g. main, contrib,
+ non-free).
+ + Add missing documentation of the --only-main param in
+ the manpage
+ + Update author email address
+
+ [ Adam D. Barratt ]
+ * bts:
+ + Don't attempt to iterate the list of bugs returned by "bts status"
+ if it's empty, thereby avoiding a "Can't use string ("") as a HASH
+ ref" error.
+ + Correctly handle only one argument being passed to "block" or
+ "unblock".
+ * checkbashisms:
+ + Add an updated check for $'' which is much less prone to false
+ positives. Thanks Filippo Giunchedi. (Closes: #504292)
+ + Add an updated check for $"" based on Filippo's $'' patch.
+ * dcmd: Allow only a subset of the files listed in the .changes / .dsc
+ file to be selected. (Closes: #481415)
+ * Debbugs.pm:
+ + Really fix the special-casing of the "archive" key in select() to
+ get rid of an uninitialized value warning.
+ + Check whether a SOAP call returned a valid value before attempting to
+ call result() on it.
+ + Produce more useful error messages on failure. (Closes: #496013)
+ * debdiff: When comparing source packages, do so in version order rather
+ than the order the .dsc files were passed on the command line. (May
+ be disabled using --no-auto-ver-sort if desired.) (Closes: #505264)
+ * debsign: Support using DEBRELEASE_DEBS_DIR to specify the location
+ of .dsc and .changes files when called without an explicit path to
+ a file. Based on a patch by Philippe Le Brouster. (Closes: #502419)
+ * tagpending: If an error occurs retrieving the list of bugs for the
+ package, suggest using "--force" in order to tag all the bugs as
+ pending without attempting to query the BTS.
+ * po4a/po/fr.po: Remove a duplicated word and fix a typo. Thanks Franck
+ Joncourt. (Closes: #505786)
+
+ [ James Vega ]
+ * debcheckout: Add support for working around repositories that don't
+ follow standard behavior (like bzr.d.o not running a smart server).
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Wed, 19 Nov 2008 19:32:43 +0000
+
+devscripts (2.10.40) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * bts:
+ + Update the manpage to mention local caching in the description
+ section and correct a typo. (Closes: #499397)
+ + Accept a command consisting purely of a comment. (Closes: #501252)
+ * cowpoke:
+ + Update to new upstream version
+ - Multiple architecture and distribution support.
+ - Options are now specified using --option rather than being listed
+ after the .dsc file.
+ - There is now a --create option to allow new build roots to be
+ easily created.
+ - There are two new configuration file options BUILDD_DIST (the
+ default distribution for which packages will be built) and
+ DEBOOTSTRAP, allowing one to specify which of {c,}debootstrap
+ should be used.
+ - The RESULT_DIR configuration variable has been replaced by
+ PBUILDER_BASE which points to pbuilder's base folder under which
+ architecture and distribution directories will be created.
+ - cowpoke.conf now supports per-arch and per-distribution options.
+ * debchange:
+ + Don't attempt to automatically determine if the current changelog is
+ an NMU if an alternative changelog location was specified using the
+ CHANGELOG environment variable.
+ + Update the Ubuntu distribution list. Add jaunty and remove the
+ no-longer supported warty, hoary, edgy and fiesty. Also add
+ "-backports" as a supported "extension".
+ + Modify the message produced by --closes to make it clearer that it
+ is intended to be edited to add details of the bug and fix as
+ appropriate. (Closes: #495743)
+ * debcommit:
+ + Allow --release to be combined with --edit or --confirm. Based on
+ a patch by Eric Gerlach. (Closes: #497988)
+ + Allow a newly initialised (i.e. containing no HEAD) git tree to be
+ committed to. Based on a patch by Eric Gerlach. (Closes: #497995)
+ * debdiff: Correctly handle hyphenated distribution names when generating
+ a diff against the previous version of the package. (Closes: #503950)
+ * getbuildlog:
+ + Apply some patches from Jörg Sommer (Closes: #496065)
+ - Unescape %7Es in log URLs to allow explicitly searching for
+ package versions containing tildes.
+ - Simplify a couple of variable assignments and use shell string
+ operations to extract the version and architecture from the logs.
+ + Allow the logs for the build with the largest version number to be
+ easily retrieved. Based on a patch by Jörg Sommer.
+ * licensecheck: Match a couple more variants on the wording of a
+ 3-clause BSD license. (Closes: #503378)
+ * nmudiff: Require an explicit confirmation as to whether the generated
+ mail should be sent, rather than defauling to not sending it.
+ (Closes: #483657)
+ * tagpending: Don't output a spurious empty line near the end of the
+ changelog comments under some circumstances.
+ * uscan:
+ + Document the USCAN_TIMEOUT configuration file variable.
+ (Closes: #502517)
+ + Add a USCAN_REPACK configuration file variable indicating that bzip
+ tar or zip archives should always be repacked to gzip tar archives.
+ (Closes: #502516)
+
+ [ Christoph Berg ]
+ * debian/control: Remove the Dm-Upload-Allowed flag.
+
+ [ Stefano Zacchiroli ]
+ * debcheckout:
+ + try to guess repository type when given raw URLs
+ + update user info about Vcs-* fields (correct developers' reference
+ section, add an URL to it)
+ + suggest using apt-get source as a fallback (Closes: #488717)
+ + add support to define custom rules for authenticated mode, this way
+ personal repos can benefit from '-a' (Closes: #501568)
+ + add -d/--details option to print extended information about
+ reopsitories, in machine parseable format. Implement dumping of
+ TopGit-specific information for TopGit-enabled GIT repositories
+ + initialize TopGit's automatically, for GIT repositories which are
+ recognized as being managed with TopGit (Closes: #499264)
+ + add --git-track option to require tracking of remote branches when
+ checking out GIT repositories (Closes: #499050)
+
+ [ Patrick Schoenfeld ]
+ * debsign: Unset GREP_OPTIONS to avoid problems when this variable is set
+ in the users environment. (Closes: #504017)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Wed, 05 Nov 2008 19:18:27 +0000
+
+devscripts (2.10.39) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * bts:
+ + Allow an explicit HELO to be specified when connecting via SMTP.
+ + If a HELO is not specified then attempt to use the content of
+ /etc/mailname instread.
+ + Expand on the definition of "claim" in the manpage. (Closes: #501142)
+ + Trim anything that doesn't look like an e-mail address from $DEBEMAIL or
+ $EMAIL before using it for un/claim or un/subscribe. (Closes: #501162)
+ + Update the documentation for "bts select" to make it clearer that
+ specifying a key multiple times gives "or" semantics. (Closes: #499434)
+ * checkbashisms:
+ + Recognise brace expansions containing a leading or trailing empty value
+ ("{,foo}", etc). Thanks Jonny Lamb. (Closes: #499971)
+ + Recognise the use of "source" with quoted arguments. (Closes: #501171)
+ * debdiff: Ensure exit status is always explicitly set (and set
+ correctly). (Closes: #500256)
+ * debian/rules: Create a link from the French pts-subscribe manpage
+ as pts-unsubscribe, so long as the former exists (i.e. has been
+ sufficiently translated).
+ * licensecheck: Add support for fortran and Scilab files and for detecting
+ the CeCILL and "SGI Free B" licenses. Thanks Sylvestre Ledru
+ (Closes: #501447)
+ * uscan: Allow --download-version to be more useful in situations where a
+ current upstream version higher than that to be downloaded has been
+ specified. Thanks James Westby. (Closes: #501932)
+
+ [ James Vega ]
+ * pts-subscribe: When called as pts-unsubscribe, send an unsubscribe request
+ to the PTS. (Closes: #500585)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sun, 12 Oct 2008 20:24:23 +0100
+
+devscripts (2.10.38) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * When upgrading from devscripts 2.10.36, remove the incorrectly
+ created /etc/devscripts.con if it is present and add the affected
+ section to /etc/devscripts.conf instead.
+ * tagpending: Re-add an accidentally removed blank line at the end
+ of the generated comments.
+
+ [ Patrick Schoenfeld ]
+ * mk-build-deps:
+ + Implement --install switch which installs a generated package and its
+ depends afterwards.
+ + Add an option --tool to specify which tool to use when installing the
+ packages (default: apt-get)
+ + Add an option --remove to specify that package files should be deleted
+ after installing it.
+ + Enable configuration file parsing
+ + Add a configuration option MKBUILDDEPS_TOOL to specify which tool shall
+ be used if the installation of the build-depends after creation is
+ requested.
+ + Add a configuration option MKBUILDDEPS_REMOVE_AFTER_INSTALL to configure
+ that package files shall always be removed after installing the
+ created packages and its build-depends.
+
+ [ Mohammed Adnène Trojette ]
+ * Comment out functions available only on Ubuntu. (Closes: #499884)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Tue, 23 Sep 2008 18:58:12 +0100
+
+devscripts (2.10.37) unstable; urgency=low
+
+ * Fix typo in postinst. (Closes: #499639)
+
+ -- Mohammed Adnène Trojette <adn+deb@diwi.org> Sun, 21 Sep 2008 02:11:26 +0200
+
+devscripts (2.10.36) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * bts:
+ + Use a User-Agent header to indicate that the mail was sent via bts,
+ rather a comment in the body of the generated e-mail. Thanks Thijs
+ Kinkhorst and Josh Triplett. (Closes: #493884)
+ + Add a (largely undocumented) --toolname switch to allow tools calling
+ bts to add themselves to the User-Agent header.
+ + If the BTS specifies a character set when serving an HTML file, add an
+ equivalent META tag to the cached file so that it is rendered correctly.
+ (pkgreport.cgi's output is now UTF-8).
+ + Fix the cache file mangling for status mboxes, maintainer links, links
+ to resolved bugs, second and subsequent bug links and version graphs.
+ In the process (hopefully) make a number of the mangles more resilient
+ to BTS HTML changes.
+ + Mention in the manpage that BTS_ONLY_NEW corresponds to --only-new.
+ + Ensure that the "clone" command is always passed at least one new bug ID
+ (Closes: #497826) and that the new IDs are negative numbers.
+ + No longer automatically CC the generated mail to the bug address if a
+ comment was made. Similar functionality may be implemented in the BTS
+ at a later date but in the meantime we'll avoid creating noise in the
+ bug logs. (Closes: #497748)
+ * checkbashisms: Flag "read without variable" and "read with options other
+ than -r" separately to ensure that all uses are correctly matched. Thanks
+ to Frank Lichtenheld for pointing this out via a related bug in lintian.
+ * cowpoke: If BUILDD_ROOTCMD is set, use BUILDD_USER for debrsigning, rather
+ than root. Patch from Cyril Brulebois. (Closes: #495536)
+ * Debbugs.pm: Special-case the "archive" key in select(). The BTS really
+ doesn't like it being passed as an array. (Closes: #498201)
+ * debcommit:
+ + When committing to a bzr repository with a message including bug
+ closures, pass corresponding --fixes to bzr. Thanks James Westby
+ for the patch. (Closes: #496643)
+ + Fix a POD error.
+ * debdiff: Add an option allowing control files in debian/ in source packages
+ to be compared using wdiff.
+ * debsign: When copying .changes files from a remote host, attempt to process
+ each copied file if a wildcard was used in the filename (Closes: #491627)
+ * nmudiff: Add support for using $DEBFULLNAME as well as $DEBEMAIL when
+ generating the From: header for a sendmail-generated mail. Based on a
+ patch from Thomas Viehmann. (Closes: #496460)
+ * rc-alert: Fix missing characters in a couple of option names in the help
+ text.
+ * tagpending:
+ + Fix a typo in the help output. Thanks Thijs Kinkhorst. (Closes: #494131)
+ + Use the new "bts --toolname" switch instead of an in-body comment to
+ indicate that tagpending was used.
+ + Make the --wnpp option work again. Thanks gregor herrmann.
+ (Closes: #497820)
+ * uscan: Exit with the correct status when --watchfile was used.
+ (Closes: #498057)
+
+ [ Stefano Zacchiroli ]
+ * bts: add support for the fake "gift" tag. It is to be used as a shorthand
+ for the "gift" usertag, see http://wiki.debian.org/qa.debian.org/GiftTag
+
+ [ James Vega ]
+ * bts: Add new 'status' command which returns various bits of information
+ about the state of the given bugs. Thanks to Don Armstrong for the patch.
+ (Closes: #494614)
+
+ [ Joey Hess ]
+ * bts: Add new 'summary' command.
+
+ [ Patrick Schoenfeld ]
+ * build-rdeps: Add a --distribution parameter to enable selection of
+ another distribution instead of unstable
+ (Closes: #471498)
+
+ [ James Vega ]
+ * uscan: Correct the <base ...> regex to be case-insensitive. (Closes:
+ #495265)
+
+ [ Christoph Berg ]
+ * debsign: Fix debsign -r dir/*.changes, and do some QA on the manpage.
+ Continue with next file if an already existing signature is kept.
+ * dget: Make -q really quiet.
+
+ [ Mohammed Adnène Trojette ]
+ * nmudiff: Use a friendlier template inspired from Lucas Nussbaum's
+ patch. (Closes: #496628)
+ * namecheck:
+ + New script by Steve Kemp included to check project names are not
+ already taken. (Closes: #484271)
+ + Remove reference to a LICENSE file.
+ + Don't lose the project name during the check.
+ * bts: document that the cache auto-cleaning is overzealous on noatime
+ partitions. Patch from intrigeri <intrigeri@boum.org>. (Closes: #488486)
+
+ [ Colin Watson ]
+ * dpkg-depcheck: Remove -F in order to be compatible with current strace.
+ I'm not sure exactly when plain 'strace -f' started being able to follow
+ vfork on Linux, but it's at least as long ago as Debian 4.0, possibly
+ strace 4.4.93 which would place it before Debian 3.1, so a dependency
+ doesn't seem to be necessary. (Closes: #497955)
+
+ [ Patrick Schoenfeld ]
+ * Update my email address
+ * mk-build-deps: Automatically find debian/control if inside of a package
+ source tree and no argument is given
+
+ [ Luk Claes ]
+ * Update debsign for new commands of .commands (Closes: #498649).
+
+ -- Luk Claes <luk@debian.org> Sat, 20 Sep 2008 18:37:41 +0200
+
+devscripts (2.10.35) unstable; urgency=low
+
+ * checkbashisms: Only flag "local x y" and "local foo=bar" when --posix is
+ used, as the use of the constructs is likely to become policy compliant
+ in the near future (see Policy bug #473019)
+ * debcommit: When --diff is used, don't open an editor to confirm commit
+ messages
+ * po4a/po/fr.po: Update French manpage translations; thanks Nicolas FRANCOIS
+ (Closes: #491001)
+ * who-uploads: Call "gpg --verify" with LC_ALL set to C to ensure that
+ the output is in the expected format (Closes: #492474)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sat, 26 Jul 2008 21:57:20 +0100
+
+devscripts (2.10.34) unstable; urgency=low
+
+ * checkbashisms:
+ + Match the use of "shell echo -n" and "if foo then echo -n"
+ + Fix a thinko in the quoted-block detection (thankfully the effects were
+ largely benign, unless one was attempting to check libtool...)
+ + Fix false positives in the checks for "dirs", "popd", "pushd", "shopt"
+ and "ulimit" and the "echo with unsafe backslash", brace expansion and
+ invalid function name checks
+ + Fix a false-positive in the "source script with arguments check"
+ + Fix a false negative in the "function" check (Closes: #490223)
+ + Treat """" as "" when removing quotes
+ + Catch shell script wrappers which use "foo $0 $@ &\nexec true"
+ + Don't treat '. "a b"' as a sourced script being passed arguments
+ + Strip leading @s from makefile lines
+ * debchange:
+ + Also collapse UNRELEASED stanzas when -d is used
+ + Fix a typo ("ether") in the manpage; thanks Raphael Geissert
+ * debcheckout:
+ + Improve git repository handling with --file
+ + Fix directory naming when using -f and no explicit destination directory
+ was specified
+ * uscan:
+ + Parse sites which embed newlines inside hrefs (horrible, but works)
+ + Always treat patterns referring to FTP sites as case-sensitive rather
+ than a confusing (and broken) mixture of case-sensitive and
+ case-insensitive matching
+ + Correctly match directory names in HTMLised FTP proxy listings; the
+ equivalent change for filenames was applied in 2.10.11 (#448636)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Tue, 15 Jul 2008 19:24:29 +0100
+
+devscripts (2.10.33) unstable; urgency=low
+
+ The "bigger brown paper bag" upload
+
+ * bts, debchange, mass-bug: Revert the changes introduced in #486594.
+ "date -R" gives us a locale-independent string, strftime() doesn't.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sun, 29 Jun 2008 13:36:35 +0100
+
+devscripts (2.10.32) unstable; urgency=low
+
+ * bts: Fix brown paper bag. When establishing an SMTPS connection, only use
+ the hostname, rather than the fully specified "ssmtp://hostname[:port]"
+ string
+ * chdist: Fix sed expressions in src2bin (Closes: #488422)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sat, 28 Jun 2008 13:44:12 -0700
+
+devscripts (2.10.31) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * bts
+ + Replace the use of date -R with strftime(). Thanks Stephen Gran.
+ + Allow an SMTP host to be specified as using SMTPS and/or a
+ non-standard port number
+ * checkbashisms:
+ + Add a check for $UID being set to -x
+ + Apply a small fix to part of the "quoted block detection"
+ + Quote test expressions using qr to allow perl to optionally compile
+ or otherwise optimise them. Thanks to Frank Lichtenheld for the idea.
+ + Add a --posix option which flags constructs not supported by POSIX but
+ permitted by Debian Policy (echo -n, local (with no options or
+ assignments) and test / [ using -a or -o )
+ + Improve the suggested replacement for $UID and $EUID (Closes: #488190)
+ * Debbugs.pm: Move initialisation of the SOAP object in to a common routine
+ and set the underlying transport object to honour proxies from the
+ environment (Closes: #487592)
+ * debchange, nmudiff: Replace calls to date -R with strftime(). Thanks
+ Stephen Gran (Closes: #486594)
+ * debuild: Update the dpkg-buildpackage emulation to use whitespace as the
+ separator in DEB_BUILD_OPTIONS as per Debian Policy 3.8.0 and to print a
+ warning if an unrecognised option is encountered; based on the
+ corresponding patch to Dpkg::BuildOptions
+ * debsign: If we don't have permission to create files in the same location
+ as the originals, use a temporary location instead (Closes: #487999)
+ * licensecheck:
+ + Add .cxx and .hxx to the default list of file extensions to check
+ (Closes: #487384)
+ + Add _MTN (monotone) to the default exclusion expression
+ * rc-alert: Allow bugs matching specific sets of tags or applying to
+ specific distributions to be included or excluded from the list of
+ reported bugs (Closes: #487513)
+ * uscan:
+ + Add an example of a newer form of watch file syntax for SourceForge
+ based projects to the manpage
+ + If the site being checked redirects to another with a directory
+ structure that does not match the original site, check for download URLs
+ that refer to any of the redirected sites, in addition to the original
+ site. Based on a patch by Raphael Geissert (Closes: #487436)
+ * debian/control
+ + Suggest libnet-smtp-ssl-perl (>= 1.01-2) in order to allow bts to
+ support SMTPS. The versioned dependency is required in order to ensure
+ that a fixed libio-socket-ssl-perl is used.
+ + Add libnet-smtp-ssl-perl to the description of bts
+ * README: Add libnet-smtp-ssl-perl to the description of bts
+
+ [ James Vega ]
+ * Debbugs.pm
+ + Actually include the documented 'severity' key for the select
+ function.
+ + Fix some whitespace.
+ * who-uploads: Accept -M as a short form for --max-uploads
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sat, 28 Jun 2008 10:24:56 -0700
+
+devscripts (2.10.30) unstable; urgency=low
+
+ * bts: MIME-encode the Subject: header of the generated mail in case it
+ contains any non-ASCII characters (Closes: #486395)
+ * checkbashisms:
+ + Apply a couple of small fixes to the "quoted block detection" and the
+ removal of quoted strings
+ + Temporarily disable the $"" and $'' checks as they're very prone to
+ false positives
+ + Fix typoes in the heredoc and popd checks (Closes: #486159)
+ + Fix a couple of small bugs in the "function name containing invalid
+ characters" and "read with options other than -r" tests
+ * debchange:
+ + Don't automatically open an editor when creating a new changelog if
+ a package name and version are supplied and either --empty was used
+ or the text of a changelog entry was supplied on the command line.
+ Based on a patch from Steve Magoun (Closes: #484334)
+ + Don't automatically add an "initial release" stanza to a newly created
+ changelog if the text of a changelog entry was supplied on the command
+ line. Thanks Steve Magoun.
+ * debcheckout:
+ + Produce the correct URL for "project-based" darcs.d.o repositories in
+ authenticated mode (Closes: #485044)
+ + Correctly handle absolute pathnames as the checkout path for a single
+ file (Closes: #485888)
+ * debdiff: When using --show-moved, indicate whether the two lists of
+ packages being compared are different (this should have always worked,
+ but didn't due to a small logic bug)
+ * licensecheck:
+ + Apply patches from Ben Finney to use the copyright parser to determine
+ whether a file contains a valid copyright statement (Closes: #486013)
+ and to match more forms of copyright statement (Closes: #486216)
+ + Handle another variant of the copyright symbol
+ * tagpending: Add a comment to the generated e-mail indicating that the
+ script was used (Closes: #486092)
+ * who-uploads: Allow the date of each upload to be displayed. Based on a
+ patch by Filippo Giunchedi (Closes: #486344)
+ * wnpp-check: Fix a small typo in the manpage (Closes: #484582)
+ * debian/control:
+ + Bump Standards-Version to 3.8.0 (no changes)
+ + Add bsd-mailx to the mailx | mailutils Recommends as mailx is now
+ a transitional package for bsd-mailx
+ * debian/{link,rules}: Don't install the fr/man1/dch.1 symlink if the
+ corresponding debchange.1 wasn't installed (e.g. due to not being
+ sufficiently translated) (Closes: #485094)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Mon, 16 Jun 2008 19:59:50 +0100
+
+devscripts (2.10.29) unstable; urgency=low
+
+ * checkbashisms:
+ + Add checks for "sh -r", "sh -D", "sh [-+]O" and "sh with long options"
+ + Don't treat scripts with dash or ash shebangs as "/bin/sh scripts", as
+ dash implements some extensions to POSIX
+ + Correctly match heredocs using "<<-"
+ + Add checks for $'', $"", the use of echo with backslash escapes, $SHLVL,
+ $POSIXLY_CORRECT and $PIPESTATUS. Based on a patch by Raphael Geissert.
+ * debchange: Update the manual page to refer to +nmu versioning for native
+ packages (Closes: #483861)
+ * debdiff: Don't apply patches when extracting a Format 3.0 (quilt) source
+ package, to minimise noise in the diffs (Closes: #475506)
+ * getbuildlog: New script from Frank S. Thomas to download build logs for
+ a given package (Closes: #483169)
+ * mass-bug:
+ + Allow the component parts of a version number to be used in the template,
+ as #EPOCH#, #UPSTREAM_VERSION# and #REVISION# (Closes: #482587)
+ + Add a command-line option to specify that the generated e-mails should
+ not be wrapped to 70 characters (Closes: #483030)
+ + Allow the sendmail command to begin with a tilde
+ * mergechanges: Allow changes files with Formats of 1.7 and 1.8 to be merged,
+ by removing the Checksums-* fields from the Format: 1.8 files. The result
+ will be a valid Format: 1.7 changes file. (Closes: #481585)
+ * who-uploads: Call gpg with --no-auto-check-trustdb to ensure that gpg
+ doesn't attempt to perform a (potentially time-consuming) trustdb update
+ (Closes: #483878)
+ * wnpp-check: New script from David Paleino to check whether a package has
+ has open bugs requested that it be packaged (RFP) or intending to do so
+ (ITP) (Closes: #483707)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Tue, 03 Jun 2008 19:28:09 +0100
+
+devscripts (2.10.28) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * bts, build-rdeps, chdist, debcommit, dget, mass-bug: Fix POD errors in
+ the manpages. Thanks Riccardo Stagni (Closes: #479609)
+ * bts: Improve the message produced when unknown options are passed to
+ a command to include the command name
+ * checkbashisms:
+ + Also match use of "SHELL=/bin/bash -e" when checking whether a makefile
+ explicitly uses bash
+ + Update the check for "function" to more closely match lintian's (and
+ therefore be less prone to false positives)
+ + Update the check for "echo -e" to only match -n as an extra option
+ rather than all theoretically possible options, thus reducing false
+ positives
+ + Further improve the heredoc detection (to allow the space in "<< 'foo'")
+ + Make the check for "process substitution" ignore quoted strings
+ + Fix false positives in the tests for "time" and "test with unary -a"
+ + Apply various improvements to "quoted block" detection
+ + Correctly match 'echo "$(< $0)"'
+ + Add checks for "$[" (a deprecated form of arithmetic expansion) and
+ the use of the -a or -f arguments to the "readonly" builtin
+ * cowpoke: New script to upload a Debian source package to a cowbuilder host
+ and build it, optionally also signing and uploading the result to an
+ incoming queue (Closes: #479274)
+ * dcmd: Correctly handle the "debian-installer" section in a .changes
+ file (Closes: #481691)
+ * debsign: Use "mv -f" instead of plain "mv" when stripping an existing GPG
+ signature or updating the file sizes within the changes file before
+ signing it, as is already done for moving the resulting signed files
+ (Closes: #479569)
+ * dget: Mention in the manpage that dget supports udebs so long as an
+ appropriate packages file is available to apt (Closes: #480461)
+ * mergechanges: Send error output to stderr rather than stdout
+ (Closes: #481583)
+ * scripts/Makefile: Run podchecker(1) before building pod-generated
+ manpages to avoid the generated file containing a "POD errors" section
+
+ [ James Vega ]
+ * mk-build-deps:
+ + Fix Depends generation when both Build-Depends and Build-Depends-Indep
+ exist so that the last package of the former and the first package of
+ the latter are not listed as one concatenated string.
+ + Use the Source package name instead of the first listed Binary package
+ when parsing a control file.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Mon, 19 May 2008 19:38:35 +0100
+
+devscripts (2.10.27) unstable; urgency=low
+
+ * bts:
+ + When reassigning bugs, CC the maintainer of the new package(s)
+ (Closes: #478014)
+ + Fix an uninitialised value warning when using claim and unclaim with
+ no claim specified and $EMAIL and $DEBEMAIL unset
+ * chdist: Add armel to the list of architectures in the bash completion
+ * checkbashisms:
+ + When rebuilding the list of bashisms to check, ensure it is based
+ on whether the current file is a makefile, rather than whether the
+ previous file was. Thanks to Raphael Geissert for the brown paper bag.
+ + Match use of "SHELL=bash" as well as "SHELL=/bin/bash" in makefile mode
+ + Improve heredoc detection to avoid triggering on "foo bar << x" whilst
+ still matching 'cat <<"xyz"'
+ + Add a variant on the "[ a == b ]" test
+ + Enhance the "echo -e" test to also catch "echo -ne"
+ + Add checks for "type", "time", "dirs" and $UID
+ + Make several of the checks less prone to false positives
+ + Re-enable the check for "complete"
+ * dcmd:
+ + Preserve a leading "./" on .dsc and .changes filenames (Closes: #478172)
+ + Correctly handle packages with a section of "component/section"
+ (Closes: #478829)
+ * debchange:
+ + Correctly handle the BTS returning no bugs for a package when --closes
+ is used (either because the package doesn't exist in the archive
+ or it has no open bugs) (Closes: #477398)
+ + Add intrepid (ibex) to the list of Ubuntu distributions
+ + Skip auto-NMU detection if -e was used or when editing an UNRELEASED
+ changelog and using the "changelog" release heuristic
+ * debcheckout:
+ + Use the Vcs-* headers from the highest available version rather than
+ the first returned by "apt-get source" (Closes: #477386)
+ + Allow the Vcs-* headers from any of the available package versions to
+ be used
+ * debcommit:
+ + Ignore --confirm and --edit when combined with --diff
+ + Fix commit message detection for bzr; thanks Colin Watson
+ (Closes: #478667)
+ + Remove trailing newlines after editing the commit message
+ + Don't attempt to commit if an editor was spawned (either via --edit
+ or automatically) and the user quit without updating and saving the
+ message
+ * licensecheck: Correctly detect LGPLv3+ (Closes: #477742)
+ * tagpending: Use option bundling (so that e.g. "tagpending -ni" works)
+ * transition-check: New script to determine whether a set of source packages
+ is involved in a transition for which uploads to unstable are currently
+ blocked (Closes: #477922)
+ * debian/control:
+ + Add transition-check
+ + Recommend libyaml-syck-perl (for transition-check)
+ + Move build-essential back to Suggests as it's only required by
+ dpkg-depcheck and dpkg-genbuilddeps and will be installed in a build
+ environment anyway
+ + Fix a typo in the Suggests field (svn-buildpacakge)
+ + Move libfile-desktopentry-perl back to Suggests
+ + Remove libdigest-md5-perl from Recommends as it's Provided by perl since
+ sarge
+ + Re-order the "dupload | dput" recommendation to favour dput and remove
+ the version constraint from dupload as it refers to a version older than
+ that in oldstable
+ + Remove the versioned conflicts on debmake, dupload and suidmanager, as
+ they all referred to versions of those packages older than those in
+ oldstable
+ + Remove the version constraints from the perl build-dependency, the perl
+ dependency and the gnupg recommendation, as the referenced versions are
+ all satisfied in oldstable and above
+ + Remove the dependencies on debianutils and sed. Both are essential and
+ the version constraints in the dependencies are satisfied in oldstable
+ and above
+ * README: Add transition-check
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sat, 03 May 2008 17:30:46 +0100
+
+devscripts (2.10.26) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * bts: Update documentation for "forwarded" to indicate that it may also
+ be used with a URL (for instance, for an upstream bug tracker)
+ (Closes: #475896)
+ * checkbashisms:
+ + Add experimental makefile support (only enabled if -f is used)
+ + Modify the "2>&foo" check to allow a valid file descriptor followed
+ by a backslash (for line continuations)
+ + Check the initial lines of shell script wrappers. Based on a patch from
+ Raphael Geissert
+ + Fix a couple of the quoted block detection checks so as not to trigger
+ on escaped quotes and correctly count quotes within lines containing ''
+ or ""
+ + Only rebuild the lists of expressions to search for when required,
+ rather than for each line of each file
+ + Disable "makefile mode" after checking a makefile if the next file to
+ check isn't a makefile
+ + Several enhancements to heredoc detection:
+ - Heredoc delimiters may contain "non word" characters if the delimiter
+ is quoted. As a side-effect, delimiters which match one of the bashism
+ expressions may now be flagged due to the order in which checks are
+ performed.
+ - SUS specifies that a heredoc ends on a line consisting solely of a
+ delimiter, so we enforce that and also don't check such lines.
+ - Delimiters may now contain regular expression meta-characters.
+ + Match shell script wrappers that don't pass on parameters when execing
+ (for example for scripts which take all input from STDIN)
+ + Add a check for process substitution (using "foo <(bar)")
+ * debchange:
+ + Allow a changelog with no entries to be created. (Note that
+ such a changelog will cause a warning from dpkg-parsehchangelog the
+ next time debchange is used with it) (Closes: #475578)
+ + Correctly handle control files containing comments when checking
+ for NMUs (Closes: #475750)
+ + Fix a side-effect of the automagic NMU detection functionality which
+ could lead to a spurious stanza being added to the end of the changelog
+ + Skip automatic NMU detection if -a or -r was passed on the command line
+ or if libparse-debcontrol-perl is not installed
+ + Add {oldstable-,testing-,}proposed-updates to the list of supported
+ distributions (Closes: #476264)
+ + Add oldstable to the list of supported distributions, as updates
+ to oldstable have been possible for some time
+ + Allow automatic NMU detection to be disabled from the command line
+ (Closes: #476985)
+ * debcommit: Modify the "strip message" functionality so that:
+ + Changelog lines beginning with any of *, + or - are considered to
+ indicate a "change" for the purposes of deciding whether to strip
+ the message
+ + When trimming leading whitespace on continuation lines, only spaces
+ and tabs are considered rather than line breaks (Closes: #475337)
+ * debdiff:
+ + Make the diffstat header for comparisons between two Debian revisions
+ the same as that between two upstream versions
+ + Normalise directory names in all file headers within a diff, not just
+ the first
+ * debian/control:
+ + Suggest instead of Recommending gnuplot and cvs-buildpackage
+ + Suggest svn-buildpackage (Closes: #476240)
+ + Drop libparse-debcontrol-perl build-dependency now that debchange no
+ longer fails in the absence of the package
+ * debuild:
+ + Run dpkg-buildpackage directly where possible, rather than emulating it.
+ Emulation will still be used if any of the clean, dpkg-source, build,
+ binary, dpkg-genchanges or final-clean hooks are defined, as dpkg
+ does not currently support them. (Closes: #476100)
+ + Make it clearer that a particular invocation is using the emulated
+ dpkg-buildpackage, and why.
+ + Automatically preserve the (C, CPP, CXX, LD and F)FLAGS variables and
+ the corresponding *FLAGS_APPEND variables
+ + Add *FLAGS and *FLAGS_APPEND support to the emulated dpkg-buildpackage
+ + When running dpkg-buildpackage directly, pass through unrecognised
+ options (with a warning) rather than aborting the build ourselves
+ * diff2patches: Update to new upstream version.
+ * dscverify:
+ + Update for the .changes and .dsc format introduced with dpkg 1.14.17:
+ - Handle Checksums-Sha(1|256)
+ - Reject .changes files with unsupported Formats and any file with
+ unsupported Checksums fields
+ * licensecheck: Replace a literal copyright symbol with a hex escape
+ so that the package builds using etch's po4a (Closes: #476251)
+ * mergechanges:
+ + Update for the new .changes format introduced with dpkg 1.14.17:
+ - Handle Checksums-Sha(1|256) (Closes: #475957)
+ - Only allow .changes files with the same Format to be merged
+ - Reject .changes files with unsupported Formats or Checksums fields
+ * rmadison: Allow custom shorthand URLs to be defined (Closes: #472922)
+ * uscan: Allow a particular upstream release to be downloaded rather than
+ the most recent (assuming it is in the list retrieved by the watch file)
+ (Closes: #475828)
+
+ [ Christoph Berg ]
+ * dcmd: If no command is given, print filenames line-by-line.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Mon, 21 Apr 2008 19:45:34 +0100
+
+devscripts (2.10.25) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * debchange: Escape arguments to --local (Closes: #475034)
+ * debdiff: Ensure arguments to --exclude are properly quoted in case they
+ contain shell meta-characters (Closes: #475075)
+ * debsign:
+ + Add support for the new Checksums-Sha* .changes file fields
+ introduced by dpkg 1.14.17 (Closes: #474949)
+ + Abort if any unknown Checksums-* fields are found in the .changes
+ file
+ + Abort if the Format field of the .changes file is unsupported
+ (greater than 1.8, less than 1.7 or non-numeric)
+ + Use a case-insensitive search for field names
+
+ [ James Vega ]
+ * debian/control: Set subversion as the first VCS Recommends alternative.
+
+ -- Martin Zobel-Helas <zobel@debian.org> Wed, 09 Apr 2008 16:04:36 +0200
+
+devscripts (2.10.24) unstable; urgency=low
+
+ [ Martin Zobel-Helas ]
+ * Don't look for debian/control if invoked with -c. We also then are not
+ looking for NMUs. (Closes: #474564)
+
+ [ Adam D. Barratt ]
+ * debchange:
+ + Add a DEBCHANGE_AUTO_NMU configuration file option allowing the NMU
+ heuristics introduced in 2.10.21 to be disabled. Based on a patch by
+ gregor herrmann
+ + Fix and improve some manpage formatting. Thanks gregor herrmann
+ + Skip NMU detection when creating a new changelog
+ + Fix NEWS files in combination with NMU versioning
+ + Do not trigger NMU detection if the current changelog was authored
+ by the current user
+ + Fix uninitialised variable warning if Uploaders is empty
+ (Closes: #474687)
+ + Correctly handle UTF-8 maintainer / uploaders (Closes: #474685)
+ + Revert the NMU urgency change introduced in 2.10.21. NMUs now default
+ to the default "low" urgency. (Closes: #474720)
+ * debian/control:
+ + Move devscripts-el back to Suggests as it doesn't fit the definition
+ of something we should be Recommending
+ + Add lsb-release to the description of debchange
+ + Add unzip to the description of uscan
+ + Move mutt to Suggests
+ * README:
+ + Add recommended packages to desktop2menu, dget and rmadison
+ + Add svk to the description of debcommit
+ + Add lsb-release to the description of debchange
+ + Add unzip to the description of uscan
+ + Replace references to ssh with ssh-client
+ + Move the list of used packages to the end of the description of
+ each script
+
+ [ James Vega ]
+ * debian/control:
+ + Change ssh Recommends to ssh-client. (Closes: #474682)
+ + Unify the tool descriptions to show the tools they use at the end of the
+ description.
+ * rc-alert: Allow the user to pass a list of packages to the script.
+ (Closes: #474659)
+ * wnpp-alert: Allow the user to pass a list of packages to the script.
+ (Closes: #463665)
+ * nmudiff: Fix a typo in the usage.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Mon, 07 Apr 2008 18:47:35 +0100
+
+devscripts (2.10.23) unstable; urgency=low
+
+ * Move the current Suggests: to Recommends: so that they are pulled in by
+ default but may be removed if desired (Closes: #474559)
+ * bug/presubj: Update in line with the change to Recommends:
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sun, 06 Apr 2008 16:53:46 +0100
+
+devscripts (2.10.22) unstable; urgency=low
+
+ * bts: Allow a default list of e-mail addresses which should be sent copies
+ of all generated e-mails to be specified (Closes: #474203)
+ * debchange: Produce a more succinct and useful error message if
+ libparse-debcontrol-perl isn't installed. (Closes: #474476)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sun, 06 Apr 2008 14:55:48 +0100
+
+devscripts (2.10.21) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * bts:
+ + Allow SMTP authentication to be used when sending e-mails
+ + Automatically append "thanks" and the contents of ~/.signature
+ (if present) when --force-interactive was used (Closes: #474205)
+ * bug/script:
+ + Don't produce an error if either of the configuration files doesn't
+ exist (Closes: #472748)
+ + Don't include the BTS_SMTP_AUTH_* options
+ * checkbashisms:
+ + Strip off the quoted portion of a line that ends a "quoted block" before
+ deciding whether it's a comment line and skipping it
+ + Fix heredoc detection to match '<< \EOT ... EOT'
+ + Improve the invalid function name test to not trigger on IFS="()"
+ + Modify the brace expansion test to allow "${foo},${bar}"
+ + Add another variation on the theme of shell wrapper detection
+ ("foo && exec bar")
+ + Temporarily disable the check for "complete" as it's too prone to false
+ positives
+ + Add checks for pushd, popd, ulimit, shopt and $SHELLOPTS
+ + Remove check for $((var+1)) as dash now supports the syntax (the syntax
+ is POSIX compliant but was not supported properly by dash)
+ + Improve quoted string handling to cope with "'foo'"
+ + Add a test for export being passed options other than -p
+ (Closes: #473700)
+ * dcmd: Apply patch from Romain to correctly match the x11 section
+ * debchange: Fix spurious output when adding a changelog entry containing
+ non-ASCII characters (Closes: #473769)
+ * debcheckout:
+ + Tighten the "repository owner" regex for darcs.d.o to correctly check
+ http://darcs.d.o/~foo/bar/baz against user foo
+ + Ignore a repository owner mismatch in "print mode"
+ + In authenticated mode, ensure that a checked-out personal git.d.o
+ respository will be writable by the user passed on the command line
+ (Closes: #447791)
+ * debcommit: Strip epochs from hg tags (Closes: #473593)
+ * debdiff: Add a --diffstat option (Closes: #370286)
+ * dget: Pass --all-versions to apt-cache show in case the user has
+ configured it to only show the candidate version. Thanks Håkon Stordahl
+ (Closes: #472747)
+ * dscverify:
+ + Add debian-maintainers to the default set of keyrings
+ + Add a --no-default-keyrings option to override the default keyrings
+ * mk-build-deps: New script by Vincent Fourmond to build a binary package
+ satisfying the build-dependencies of a given package (Closes: #474302)
+ * tagpending: Allow the mail sent to the BTS to be displayed and (assuming
+ --noact is not in effect) confirmed before sending
+ * who-uploads: Mention the debian-maintainers keyring in --help
+ * README, debian/control:
+ + Add libsasl-authen-perl to Suggests and the description of bts, to
+ support SMTP authentication
+ + Add equivs to Suggests (for mk-build-deps)
+ + Add libparse-debcontrol-perl to Suggests and the description of
+ debchange
+
+ [ Martin Zobel-Helas ]
+ * debchange
+ + Set urgency=high if NMU and no other urgency set (Closes: #474391)
+ + Set to NMU if packager is neither in Uploaders nor Maintainer
+ (Closes: #474399)
+ + Add abbreviation -q for --qa (Closes: #474434)
+
+ -- Martin Zobel-Helas <zobel@debian.org> Sat, 05 Apr 2008 18:13:28 +0200
+
+devscripts (2.10.20) unstable; urgency=low
+
+ * bts:
+ + Only append a single ellipsis to the mail subject once it becomes
+ too long, rather than for each extra command (Closes: #471304)
+ + Make --no-action and --(force-)interactive work if neither DEBEMAIL
+ nor EMAIL are set (Closes: #467066)
+ + Add --cc-addr to --help output
+ * checkbashisms:
+ + Make --version actually produce version information
+ + Fix explanation of VAR+=foo
+ + Fix an error in the "shell script wrapper" detection
+ + Enhance the "invalid function name" check to allow a leading bracket
+ before the function name
+ + Don't treat '' at the beginning of a line as the start of a quoted block
+ + Allow a heredoc marker to begin with a backslash
+ + Enhance quoted block detection to handle escaped quotes better
+ + Enhance "shell script wrapper" detection to catch more ways of
+ disguising a non shell script as one
+ + If more than one issue was found within a single line, output each
+ rather than just the first
+ * dcmd: New script from Romain Francoise to run a given command replacing
+ the name of a .changes or .dsc file with each of the files referenced
+ therein (Closes: #472492)
+ * debcheckout: Allow specific files from the repository to be retrieved
+ rather than checking out the repository (Closes: #469242)
+ * debcommit:
+ + Make the change to --release's behaviour introduced in the last
+ upload optional. If -R / --release-use-changelog is used then
+ the changelog will be checked for uncommitted changes when determining
+ the commit message. The default is not to do so and use the message
+ passed with --message (if any) or "releasing version X.Y.Z" as before.
+ (Closes: #471723)
+ + When creating summary lines for git and hg, ignore any subchanges
+ (i.e. lines indented by more than two spaces and starting with *, +
+ or -)
+ + Add documentation to the manpage of the current VCS-specific features
+ + Make --strip-message also strip leading spaces from continuation lines
+ + Strip single change commit messages by default
+ * debdiff:
+ + Escape package names when normalising path names (Closes: #471282)
+ + Make tarball-in-tarball support more intelligent. If a sub-tarball
+ named foo.tar.gz unpacks to a directory named foo, the directory is
+ renamed to =unpacked-tarN= so that the directory names match across
+ the unpacked packages (Closes: #459294)
+ * debuild:
+ + Add a --prepend-path option allowing $PATH to have directories added
+ to it once it has been sanitised, for example to add /usr/lib/ccache.
+ Based on a patch by Matt T. Proud (Closes: #460719)
+ + Add a --username option to allow debrsign to be used instead of debsign
+ (Closes: #262253)
+ * dget: Support /etc/apt/sources.list.d (Closes: #471672)
+ * uscan:
+ + Correctly handle an explicit upstream-version of 0 (Closes: #471503)
+ + Add "watch" to the manpage's summary line (Closes: #452930)
+ * debian/copyright: Explicitly indicate that diff2patches is GPL >= 3
+ rather than the package's standard >= 2.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Mon, 24 Mar 2008 22:14:22 +0000
+
+devscripts (2.10.19) unstable; urgency=low
+
+ * debsign: Correctly handle signing an automatically located .changes
+ file if none was passed on the command line (Closes: #468761)
+ * debchange:
+ + Apply a more elegant fix for the bugfix in 2.10.18.
+ Thanks to gregor herrmann for pointing the obvious solution out.
+ + Don't complain about the package version changing from native to
+ non-native if --nmu or --security was used
+ + Fix an unescaped hyphen in the manpage
+ + If starting a changelog stanza for a new maintainer upload with
+ the distribution set to UNRELEASED, check whether the previous
+ stanza is also UNRELEASED and, if so, merge them (assuming the
+ "changelog" release heuristic is in use) (Closes: #458130)
+ + Add non-maintainer uploads (including security and QA uploads),
+ backports and the use of local version strings to the list of
+ cases where debchange doesn't have to guess the user's intentions
+ + Add an --allow-lower-version option which is similar to
+ --force-bad-version but allows a regular expression to be specified
+ which the new version must match. Based on a patch by Frank Küster
+ (Closes: #381159)
+ + Modify the version-handling code to generate NMU versions of the
+ form X+nmu1 for Debian-native packages
+ * checkbashisms:
+ + Use Getopt::Long for option parsing
+ + Add an option to force checking of scripts that would normally be
+ skipped (Closes: #469023)
+ + Clarify in the manpage that some issues detected by the script may
+ be XSIisms etc rather than strictly bash-specific features
+ + Add checks for suspend, caller, complete/compgen, declare/typeset,
+ disown, builtin, set -[BHT], alias -p, unalias -a, local with
+ options or an assigned value and $BASH(_*). Thanks to Raphael
+ Geissert for the patch (Closes: #469050)
+ + Modify each of the simple shell variable tests (e.g. $RANDOM) to
+ also match ${variable}
+ + Identify and ignore multi-line quoted text (Closes: #464641)
+ + Reorder a couple of checks so that ". foo $HOSTNAME" is detected as
+ source passing arguments rather than misuse of $HOSTNAME
+ + Fix a potential false positive on "2>& 1"
+ + Fix an unescaped hyphen in the manpage
+ + Add a check for function names containing characters other than
+ alphanumerics and underscore
+ + Modify the "read without variable" test to also catch options other
+ than -r. Thanks Luca Capello (Closes: #470696)
+ + Add an option to allow flagging of lines which do not contain bashisms
+ but which may contain other useful information - for example, checking
+ whether $BASH is set before using bashisms or $RANDOM being used as a
+ local variable rather than the bash built-in variable (Closes: #470999)
+ + Add a check for "VAR+=foo" (Closes: #471001)
+ + Also detect <<< inside a quoted string (Closes: #471059)
+ + Improve comment detection and removal to not remove "s/#/foo/"
+ * bts:
+ + Allow the sendmail command to begin with a ~ (Closes: #469207)
+ + Don't treat "userblah" as an alias for "users" in "select"
+ * debcommit:
+ + Set $SVKDIFF before calling "svk diff" (Closes: #469238)
+ + If there are uncommitted changes to the changelog when --release is
+ used, use them as the commit message. Otherwise use the message passed
+ with --message or "releasing version X.Y" as currently
+ (Closes: #470366)
+ + Format commit messages in a more useful manner for git and hg. The
+ first change found is unfolded and used as the summary line. If more
+ than one change was found then an editor is spawned so that the message
+ can be fine-tuned if required (Closes: #402531)
+ * deb[ci]:
+ + Allow either package names or filenames to be passed on the
+ command line (Closes: #469663)
+ + Fix reference to dpkg-deb(8) (should be section 1) and an unescaped
+ hyphen in the manpage
+ * annotate-output.1, cvs-debi.1, dd-list.1, debuild.1, dpkg-depcheck.1,
+ dpkg-genbuilddeps.1, nmudiff.1, plotchangelog.1, uscan.1,
+ devscripts.conf.5: Fix unescaped hyphens
+ * nmudiff: Fix --nomutt's To: handling. Thanks Thomas Viehmann
+ (Closes: #470069)
+ * Debbugs.pm:
+ + Turn on "use strict" and "use warnings" which got lost when moving
+ the code from bts
+ + Don't attempt to iterate the result of usertags() in select if
+ it's empty (Closes: #470025)
+ + Skip arguments to select() that contain valid keys but not values
+ + Print a warning about unrecognised keys passed to select()
+ + Add on_fault handlers to SOAP calls so we can return useful error
+ messages
+ * debuild:
+ + Add working -j / DEB_BUILD_OPTS=parallel support
+ (Finally closes: #457235)
+ + Remove linda support. Thanks Thijs Kinkhorst (Closes: #470478)
+ * debcheckout: Add launchpad.net/foo to the list of recognised
+ Launchpad repository formats for authenticated mode. Thanks Martin
+ Pitt
+ * cvs-debuild: Remove linda support. Thanks Thijs Kinkhorst.
+ * Packaging changes:
+ + debian/control, README, conf.default.in: Remove references to linda
+ + Add a NEWS file to alert dget users to the change in 2.10.17 to unpack
+ source packages by default (Closes: #470809)
+ * grep-excuses: Fix reference to bjorn.haxx.se in help output to refer to
+ release.d.o/migration
+ * debpkg: Fix reference to dpkg(8) in the manpage
+ * pts-subscribe: Don't complain about mail and/or at not being available
+ if --help / --version were used. Also don't complain about at unless an
+ unsubscription mail needs generating. (Closes: #471088)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sun, 16 Mar 2008 17:00:34 +0000
+
+devscripts (2.10.18.1) unstable; urgency=low
+
+ The "I need a bigger brown paper bag" upload
+
+ * checkbashsisms: Simplify the >&/&>file check and in the process fix
+ another couple of potential false positives.
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Fri, 29 Feb 2008 08:55:16 +0000
+
+devscripts (2.10.18) unstable; urgency=low
+
+ [ Patrick Schoenfeld ]
+ * licensecheck: Detect a less common form of GPL usage
+
+ [ Adam D. Barratt ]
+ * checkbashisms: Fix a couple of brown paper bag issues with the >&file
+ and herestring checks added in the last release. Thanks to Raphael
+ Geissert for spotting the breakage so quickly.
+ * debchange: Fix an off-by-one in the fix for #452806 that caused an
+ extra blank line to be added before the trailer line
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Fri, 29 Feb 2008 06:50:51 +0000
+
+devscripts (2.10.17) unstable; urgency=low
+
+ The "Pia for DPL" upload
+
+ [ Adam D. Barratt ]
+ * checkbashisms:
+ + Fix a false positive in the $(( test (Closes: #465364)
+ + Add detection for <<<, $(OS|MACH)TYPE, $HOST(TYPE|NAME), $EUID,
+ $DIRSTACK, $SECONDS and /dev/(tcp|udp) (Closes: #465386)
+ + Enhance heredoc detection to not trigger on <<<
+ * Debbugs.pm: Update to match the current debbugs SOAP interface. Add
+ status(), usertags(), versions() and versions_with_arch(),
+ newest_bugs(), bug_log(), source_to_binary() and binary_to_source()
+ * tagpending:
+ + Rewrite in perl using Debbugs.pm
+ + Optionally (and by default) include the changelog header line and
+ any relevant changelog entries as comments in the generated mail
+ (Closes: #439688)
+ * debcheckout:
+ + Handle spaces between -d and the root for cvs repositories
+ (Closes: #465849)
+ + Fix a warning about uninitialised values when a module name is not
+ supplied for a cvs repository
+ + In auth mode, set push_location for bzr branches (Closes: #453447)
+ * uscan:
+ + Add support for repacking .zip archives, based on a patch
+ from Antonio Terceiro (Closes: #456587)
+ + Mention an alternative form of sourceforge URL in the manpage that
+ allows checking for new versions when the qa.d.o redirector doesn't
+ work (Closes: #433408)
+ + Fix an escaping error in one of the manpage's examples for twisted
+ * Packaging changes:
+ + README: Update descriptions of tagpending and debchange
+ + debian/control:
+ - Add unzip(1) to Suggests for uscan's zip repacking
+ - Update descriptions of tagpending and debchange
+ * debcommit:
+ + Use "git diff" instead of "git-diff" (Closes: #466158)
+ + Ignore whitespace changes in diffs
+ * dget: Correctly handle the processing of a file that we've already
+ retrieved (Closes: #445546)
+ * wnpp-alert: Note in the manpage that the results are source package
+ based
+ * debchange:
+ + Modify --closes to use SOAP / Debbugs.pm
+ + Add hardy (heron) to the list of supported Ubuntu distributions
+ + Use existing changelog data directly rather than re-using
+ dpkg-parsechangelog's Changes: field and therefore don't apply any
+ reformatting (Closes: #452806)
+ + Use "etch-backports" instead of "Etch backports" in bpo changelog
+ entries (Closes: #467582)
+ * bts:
+ + Add a --force-interactive option which is similar to --interactive
+ but spawns an editor for the message before prompting for sending
+ confirmation (Closes: #467134)
+ + Allow the use of --{force-,}interactive to be specified in the
+ configuration file (Closes: #467131)
+ * debsign: Allow multiple files to be signed in a single invocation
+ (Closes: #457355)
+ * mass-bug:
+ + Correctly detect the start of a signature in the template file
+ (Closes: #467496)
+ + Allow package versions to be specified in the package list file
+ as package_version (Closes: #467581)
+ * mergechanges: Merge the Description: fields from each of the supplied
+ changes files. Thanks to Vincent Danjean for the patch
+ (Closes: #442972)
+ * debuild: Allow preserve-envvars to contain wildcard entries (of the
+ form STEM*) (Closes: #405440)
+
+ [ Christoph Berg ]
+ * dget:
+ + Make unpacking downloaded source packages the default, use -d for the
+ old behaviour.
+ + Check signature of source packages using dscverify, use -u to disable.
+ (Closes: #434521)
+
+ [ Patrick Schoenfeld ]
+ * licensecheck: Support a less common form of MIT license usage
+
+ [ Mohammed Adnène Trojette ]
+ * debian/bug:
+ + make reportbug add configuration data in bug reports.
+ + print a message to sensitise users about our "Suggests vs Depends"
+ policy.
+
+ [ Stefano Zacchiroli ]
+ * debcommit: add support for a new --diff option which dumps changes on
+ standard output instead of committing them
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Wed, 27 Feb 2008 18:18:56 +0000
+
+devscripts (2.10.16) unstable; urgency=low
+
+ The "storm before the calm" release
+
+ * checkbashisms:
+ + Correct the $(<) check to not flag $(<foo grep bar) (Closes: #464522)
+ + Tighten the $(( / (( regex
+ + Modify the ". foo bar" check to allow ". `foo bar`" (Closes: #464984)
+ + Ensure that an explanation is provided for the ". foo bar" check
+ + Fix the "shell wrapper" regex to allow a space after ; and before exec
+ (Closes: #464976)
+ + Add posh to the list of supported interpreters. Thanks to Raphael
+ Geissert.
+ + Warn about use of >& and <& redirecting to a file (POSIX specifies
+ behaviour for - and file descriptors only) (Really closes: #461653)
+ * debbugs.pm: New module to encapsulate some of the common BTS functionality
+ used by various scripts. Currently contains initial support for some
+ SOAP methods.
+ * bts: Use debbugs.pm for select()
+ * tagpending: Fix the bts select call to also handle forwarded bugs
+ (Closes: #464787)
+ * debchange: Warn if the package appears to have switched from Debian native
+ to non-native or vice versa (Closes: #440957)
+ * uscan: Don't insist on an upstream version being supplied on the command
+ line if one is present in the watch file (Closes: #350307)
+ * debuild: Really fix -j, so that --lintian-opts works again
+ (Closes: #465264)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Mon, 11 Feb 2008 19:50:15 +0000
+
+devscripts (2.10.15) unstable; urgency=low
+
+ [ Patrick Schoenfeld ]
+ * checkbashisms: Add a check for the $(<) bashism (which is catting a file)
+ (Closes: #463743)
+ * dget: Implemented a '--build' parameter which builds a package with
+ dpkg-buildpackage after its download (Closes: #457977)
+ * build-rdeps: Add a license header so that licensecheck does recognize
+ the license and copyright
+
+ [ Adam D. Barratt ]
+ * checkbashisms:
+ + Correct the fix for #461653. >& is permitted by POSIX, &> isn't. Thanks
+ to Sven Joachim.
+ + Modify the "echo -e", "exec -[acl]" and "let" tests to require
+ whitespace before the matched text in order to reduce false positives.
+ Thanks to Russ Allbery for pointing the issue out.
+ * debchange: Allow the use of an unknown / unofficial distribution to be
+ forced (Closes: #463449)
+ * bts:
+ + Allow the generated e-mail to be edited before sending
+ (Closes: #456331)
+ + Handle cache files generated by versions of bts that didn't name
+ attachments correctly (Closes: #464079)
+ * uscan:
+ + Fix quoting of a manpage example (Closes: #452934)
+ + Output a message if --report-status was used but no watch file was found
+ (Closes: #409128)
+ * debuild: Recognise -j as a valid option when it's passed on the command
+ line as well as in the configuration file (Really closes: #457235)
+ * debcommit: Check the debian directory for indications of version control
+ to handle situations where the upstream source and packaging are managed
+ through different VCSes (Closes: #384230)
+ * mergechanges: Fix a typo in the manpage
+ * tagpending(1):
+ + Remove ldapsearch(1) from SEE ALSO, as the script hasn't used LDAP for
+ some time
+ + Fix the script's name in the title block
+ * whodepends: Remove duplicated wording from the manpage
+ * whouploads: Reduce the length of a line in the manpage to fix warnings
+ from man
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Wed, 06 Feb 2008 19:31:00 +0000
+
+devscripts (2.10.14) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * uscan:
+ + Document the USCAN_DESTDIR configuration variable (Closes: #460717)
+ + uscan: Correctly set the default User-Agent header (Closes: #462770)
+ * bts:
+ + Fix downloading of named attachments (Closes: #460850)
+ + Add support for setting X-Debbugs-No-Ack (Closes: #458973)
+ * grep-excuses: Update wipnity functionality in line with the move of
+ testing.pl to release.d.o
+ * checkbashisms:
+ + Warn about the use of >& and &> (Closes: #461653)
+ + Bring the script largely back in to sync with lintian's checks/scripts:
+ - don't check scripts that appear to be shell scripts but aren't
+ (Closes: #463257)
+ - don't flag potential issues if they occur inside single quotes
+ - separate out those issues that should only be flagged if they occur
+ inside quoted strings
+ - catch the use of kill -[0-9] or -[A-Z], trap with signal numbers
+ and [[ foo ]]
+ * deb-reversion: Support passing -b / --force-bad-version to dch
+ (Closes: #461557)
+ * mass-bug: Allow setting of tags. Thanks to Pierre Habouzit for the
+ patch (Closes: #462649)
+ * debcommit: Allow the commit message to be edited before passing it
+ to the VCS. Thanks to Patrick Schoenfeld for the patch (Closes: #462758)
+ * debuild: Pass -j through to dpkg-buildpackage (Closes: #461239)
+ * tagpending: Use "bts select" instead of wget where possible
+ * dget: Correctly parse arguments to --path (Closes: #460970)
+ * Packaging changes
+ + Update to debhelper v6
+ + Decapitalise the short description to match the Developer's Reference's
+ recommendations
+
+ [ Mohammed Adnène Trojette ]
+ * debcheckout: remove "-d" from Vcs-Cvs: field if a maintainer puts it.
+
+ [ Christoph Berg ]
+ * debcommit: also look for \t in the diff for GNU-style changelogs.
+
+ [ Patrick Schoenfeld ]
+ * Joining the team
+ * debcommit: Work around problems when colordiff is used as diff-cmd for
+ svn/svk or when the always color configuration of git is set
+ (Closes: #462686)
+ * Added new script 'build-rdeps', a utility to find all packages that
+ reverse depend on a given package (Closes: #326966)
+
+ -- Adam D. Barratt <adam@adam-barratt.org.uk> Sat, 02 Feb 2008 20:19:49 +0000
+
+devscripts (2.10.13) unstable; urgency=low
+
+ * The 'we sponsor Adam for DM' upload
+
+ [ Mohammed Adnène Trojette ]
+ * debcheckout: wrap error message. (Closes: #459372)
+
+ [ Adam D. Barratt ]
+ * grep-excuses:
+ + Only check for the presence of libterm-size-perl if -w / --wipnity
+ is being used.
+ + Improve the error message when libterm-size-perl isn't installed.
+ * debian/control: Add libterm-size-perl to the description of grep-excuses
+ (Closes: #459586)
+ * README: Add libterm-size-perl to the description of grep-excuses
+
+ [ James Vega ]
+ * tagpending: Handle new-style links to individual bug reports which are
+ simply the bug-numer.
+ * bts: Handle both relative and absolute links on BTS webpages.
+ * debchange:
+ + Handle both relative and absolute links when parsing BTS webpages.
+ (Closes: #459947)
+ + Do not include "Debian Bug report logs" in the changelog entry when
+ using --closes.
+
+ [ Luk Claes ]
+ * whodepends: Support showing source packages instead of binary ones thanks
+ to Otavio Salvador.
+
+ [ Joey Hess ]
+ * bts: Add a <base> tag to the page sent to the browser so that unqualified
+ urls work.
+
+ [ Martin Zobel-Helas ]
+ * Add Dm-Upload-Allowed filed, so Adam can upload devscripts.
+ * updated french translation
+
+ -- Martin Zobel-Helas <zobel@debian.org> Fri, 11 Jan 2008 10:32:59 +0100
+
+devscripts (2.10.12) unstable; urgency=low
+
+ [ Stefano Zacchiroli ]
+ * debcheckout: add auth support for *.launchpad.net. Thanks to Colin Watson
+ for the patch (Closes: #451672)
+
+ [ Mohammed Adnène Trojette ]
+ * debian/control:
+ + bump Standards-Version to 3.7.3.
+ + build-depend on and suggest libterm-size-perl.
+ * debian/dirs: create /etc
+ * bts:
+ + add a -n/--no-action option printing emails to stdout instead
+ of sending them. (Closes: #458603)
+ + add a "SEE ALSO" section in manual page. (Closes: #458296)
+ + automatically Cc: team@security.debian.org when (un)tagging a bug
+ security. (Closes: #458840)
+ * chdist: generate a manual page from source.
+ * dch:
+ + add a --bin-nmu option for binNMUs. (Closes: #458496)
+ + add a -s/--security option for Security Team uploads inspired by
+ Ubuntu's.
+ + add a -l/--local option to allow adding suffixes to a Debian version
+ number. (Closes: #284658)
+ * debc/debi: don't mess up --debs-dir option's argument when
+ debian/svn-deblayout is present. (Closes: #446414)
+ * debcheckout: add support for authentication mode with darcs.
+ Thanks Luca Capello for the patch. (Closes: #445714)
+ * debdiff: make diff output p1-compatible (for native packages or when
+ interdiff is not available). Thanks dAniel hAhler for the patch.
+ (Closes: #456223)
+ * diff2patches: new patch written by Raphael Geissert <atomo64@gmail.com>.
+ Extracts patches from a .diff.gz file placing them under debian/ or,
+ if present, debian/patches. (Closes: #456626)
+ * grep-excuses: permit requests to http://bjorn.haxx.se/debian/
+ with --wipnity, -w option. Idea and implementation courtesy from
+ Julian Mehnle <julian@mehnle.net>. (Closes: #448279)
+ * mass-bug: add --user and --usertags options to avoid their wrapping.
+ (Closes: #429479)
+ * Changes pulled from Ubuntu's diff:
+ + debian/control:
+ - suggest wget|curl instead of wget
+ - suggest lsb-release
+ + debuild: preserve DEBEMAIL environment variable.
+
+ [ Adam D. Barratt ]
+ * who-uploads: Actually check debian-keyring.pgp by default rather
+ than .gpg twice. Thanks to Philipp Kern for pointing the issue out
+ (Closes: #456209)
+ * who-uploads: Check debian-maintainers.gpg by default. Thanks to
+ Philipp Kern for the suggestion (Closes: #456208)
+ * debian/control, README: Add debian-maintainers to the suggested
+ package list
+ * debchange: Add a configuration file option to allow overriding the
+ default setting of -t / --mainttrailer (Closes: #454254, #453644)
+ * debchange: Correctly handle using an empty changelog entry to switch
+ the distribution to UNRELEASED when using the changelog heuristic
+ (Closes: #453690)
+
+ [ Luk Claes ]
+ * chdist: Add bash_completion script for chdist (Closes: #457842)
+ * chdist: Added improvements and fixed bugs. Thanks to Raphaël Pinson
+ (Closes: #457841)
+ * debdiff: Add support for tar.bz2 tarballs in orig.tar.gz
+
+ -- Luk Claes <luk@debian.org> Sat, 05 Jan 2008 16:27:11 +0100
+
+devscripts (2.10.11) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * uscan: Correctly parse HTMLised FTP directory listings. Thanks to
+ Vaclav Ovsik for the patch (Closes: #448636)
+ * desktop2menu: New script to generate skeleton menu files from
+ freedesktop.org .desktop files. Thanks to Sune Vuorela (Closes: #448730)
+ * debchange: Default to using -t / --mainttrailer when using the "changelog"
+ heuristic. Thanks to Joey Hess for the patch (Closes: #448795)
+ * debcommit: Automatically include the changelog in the list of files to be
+ committed (Closes: #419657, again)
+ * debcommit: Correctly pull the depot path from the output of svk info
+
+ [ Luk Claes ]
+ * debdiff: Support tarball in tarball (Closes: #439667).
+ * debdiff: Support p-u-new use case (Closes: #439666).
+ * chdist: New script to easily play with several distributions.
+ Closes: #438971
+ * debian/control: Add build dependency on libfile-desktopentry-perl and
+ liburi-perl so perl -c won't fail for desktop2menu and rmadison.
+
+ [ Joey Hess ]
+ * debcommit: Avoid svk hang by only running svk if ~/.svk/local exists.
+ Closes: #420899
+ * debcommit: Try harder to see if the package is in git. Look for
+ .git in parent directories too.
+
+ -- Luk Claes <luk@debian.org> Wed, 14 Nov 2007 22:53:22 +0100
+
+devscripts (2.10.10) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * licensecheck
+ + Better detect 3-clause BSD licenses (Closes: #442630)
+ + Detect ISC style licenses. Thanks to Patrick Schoenfeld for the
+ patch (Closes: #448000)
+ + Always check a single file argument even if it doesn't match
+ the file pattern regex
+ * bts: Update for new bugspam.cgi syntax (Closes: #445557)
+ * wnpp-alert: Add an option to display the changes since the last
+ invocation. Based on a patch by Luca Bedogni; thanks.
+ (Closes: #446910)
+ * svnpath: Fix a couple of typoes (Closes: #448167)
+
+ [ James Vega ]
+ * debcheckout: -u should imply -a, as documented. Thanks Luca Capello for
+ the patch. (Closes: #445706)
+
+ [ Joey Hess ]
+ * debcommit: Support creating signed tags using git. Controlled by the
+ DEBCOMMIT_SIGN_TAGS setting, not enabled by default.
+ * debcommit: When run in a clean git repo with -r -a, git-commit would
+ exit nonzero as there was nothing to commit. Instead, check if
+ the repo is clean; don't run git commit in this case, and proceed with
+ tagging.
+ * debcommit: Name git tags "debian/$version" or just with the package
+ version number for native version numbers. Closes: #446699
+
+ -- Joey Hess <joeyh@debian.org> Sun, 28 Oct 2007 16:45:56 -0400
+
+devscripts (2.10.9) unstable; urgency=low
+
+ [ Mohammed Adnène Trojette ]
+ * uscan: allow the path for downloaded files to be specified. Thanks Steffen
+ Moeller for the patch. (Closes: #439060)
+ * debsign: work in $TMPDIR (if set) or /tmp. (Closes: #420472)
+
+ [ Adam D. Barratt ]
+ * debchange:
+ + Add an option to not modify the trailer line when editing or
+ appending changelog entries (Closes: #435980)
+ + Make -r use the distribution specified in the previous changelog entry by
+ default (Closes: #364510)
+ + Use the package changelog to determine version information for the NEWS
+ file by default (Closes: #316662)
+ + Allow an explicit empty changelog entry to be passed on the command line
+ to allow non-interactive changes to the distribution and urgency without
+ adding a changelog entry (Closes: #442267)
+ + Make -r only change the distribution if it was previously UNRELEASED.
+ Combining -r and -D on a changelog that's not UNRELEASED now
+ causes a warning and does not change the distribution (Closes: #443081)
+ * licensecheck: Attempt to distinguish between versions of the BSD license
+ (Closes: #442630)
+ * bts: Improve the documentation of forcemerge. Thanks to dann frazier.
+ (Closes: #442930)
+
+ [ Stefano Zacchiroli ]
+ * uscan: add a --repack option to repack .tar.bz2 archives to .tar.gz
+ archives upon request
+
+ -- Mohammed Adnène Trojette <adn+deb@diwi.org> Wed, 03 Oct 2007 00:54:28 +0200
+
+devscripts (2.10.8) unstable; urgency=low
+
+ [ Mohammed Adnène Trojette ]
+ * debcommit:
+ + allow an alternate location for the changelog. By default
+ debian/changelog is used. Thanks Sjoerd Simons and Laurent Bigonville
+ for the patches. (Closes: #437387)
+ + add a -C/--confirm option to confirm the commit message. Thanks Laurent
+ Bigonville for forwardporting the patch from Ubuntu. (Closes: #439054)
+ + allow tagging with bazaar. (Closes: #441105)
+ * debuild:
+ + keep DISPLAY, XAUTHORITY and GNOME_KEYRING_SOCKET environment
+ variables around for safe keeping before we destroy the
+ environment, and re-set them before running debsign; thanks Steve
+ Kovalik for the patch. (Closes: #322208)
+ + also keep GPG_AGENT_INFO and SSH_AUTH_SOCK.
+ * licensecheck: decruft // comments. (Closes: #441073)
+ * debchange: update according to new Backports.org policy. (Closes: #439854)
+
+ [ Stefano Zacchiroli ]
+ * debcheckout: new script to checkout the version control system repository
+ of a package
+
+ [ Joey Hess ]
+ * debcheckout: when checking out svn repos, check them out into a directory
+ named for the package, to avoid checking out into ie, a trunk directory.
+
+ [ Adam D. Barratt ]
+ * licensecheck
+ + tidy up the pre-check regexes
+ + unescape "\@"s in copyright statements
+ + decruft © as well as (C)
+ + make the copyright regex more flexible
+ + correctly handle metacharacters found in potential copyright statements
+ * debdiff: allow whitespace to be ignored in diffs (Closes: #439163)
+ * debcommit
+ + Allow changes to only debian/changelog to be committed.
+ Thanks to martin f krafft for the patch. (Closes: #439992)
+ + Allow the leading "* " to be stripped from commit messages
+ (Closes: #440013)
+ * bts: Change working directory back to its original location before
+ running the browser (Closes: #436095)
+ * checkbashisms: Catch the use of test/[ with a unary -a operator. Thanks to
+ Matthew Wilcox for the suggestion.
+
+ [ Julian Gilbey ]
+ * The package should suggest git-core, not git (Closes: #440018)
+ * debchange: update for new BTS layout (pkgreport.cgi syntax changed)
+
+ [ Joey Hess ]
+ * Add list-unreleased, by Frans Pop.
+
+ -- Mohammed Adnène Trojette <adn+deb@diwi.org> Tue, 11 Sep 2007 16:46:04 +0200
+
+devscripts (2.10.7) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * debian/control: Add libsoap-lite-perl to the Suggests and
+ description for bts
+ * README
+ + Add libcrypt-ssleay-perl to the description for uscan
+ + Add libsoap-lite-perl to the description for bts
+ + Mention the SOAP interface in the description for bts
+ * debchange: Fix NMU versioning for Debian native packages
+ * dd-list: Sort developer names case-insensitively. Thanks to Steinar H.
+ Gunderson for the suggestion
+ * bts
+ + Fix test for libwww-perl not being installed
+ + Only pass -c to mail(1) if there are Cc: addresses
+ (Closes: #433385)
+ + Add support for selecting bug lists via the SOAP interface. This
+ requires libsoap-lite-perl. Thanks to Don Armstrong for the patch
+ (Closes: #433169)
+ * deb-reversion: Apply patch from Adeodato Simó to ensure -v is
+ honoured (Closes: #433492)
+ * debcommit: When using git, allow either all files or only those in
+ the index to be committed. Thanks to Martin F Krafft and Junichi
+ Uekawa for the patch. (Closes: #402539, #427429, #433081)
+ * uscan
+ + Allow a user agent string to be specified (Closes: #433419)
+ + Fix https support (Closes: #423669)
+ + Correctly set exit status after downloading (Closes: #431840)
+ * licensecheck
+ + Allow directories to be passed as arguments
+ + Allow a pattern to be specified indicating files / directories
+ which should be excluded from checking. The default is the same
+ as dpkg-source's -i option
+ + Allow the set of files to be checked to be specified via a
+ regular expression
+ + Optionally attempt to find copyright statements
+
+ [ Christoph Berg ]
+ * rmadison: Support ubuntu and querying multiple archives, suggested by
+ Loïc Minier. (Closes: #431303)
+ * dget: Downloading multiple binaries was broken. (Closes: #428827)
+
+ [ Stefano Zacchiroli ]
+ * dd-list: list Uploaders per default, added --nouploaders option to
+ force the old behaviour
+
+ [ Mohammed Adnène Trojette ]
+ * debi: add svn-buildpackage support. Thanks to Raphaël Hertzog for
+ the patch. (Closes: #315409, #417609)
+ * dch: add --bpo support. (Closes: #434183)
+ * debcommit: add debian/changelog to the list of files to commit. Thanks
+ Damyan Ivanov for the patch. (Closes: #419657)
+ * bts: add file:// to local urls. (Closes: #435011)
+ * checkbashims: add a -n/--newline option (disabled by default) to
+ also check "echo -n" as Debian Policy 10.4 requires /bin/sh to support
+ it. (Closes: #426584)
+ * tagpending: add a -t/--to option that adds a -v option to the
+ dpkg-parsechangelog call. (Closes: #434145)
+ * debian/rules: use [ ! -f Makefile ] || $(MAKE) clean instead of -$(MAKE)
+ clean.
+
+ -- Mohammed Adnène Trojette <adn+deb@diwi.org> Fri, 10 Aug 2007 00:35:06 +0200
+
+devscripts (2.10.6) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * bts
+ + Cc bug reports if the control message contains a comment
+ (Closes: #429649)
+ + Support passing multiple packages / addresses to "bts cache"
+ (Closes: #416548)
+ + Add archive / unarchive support
+ + Make caching of "status mboxes" work again
+ * Fix changelog typos (Closes: #429774)
+ * debdiff: Sort conffiles and control before comparing them. Thanks to Peter
+ Samuelson for the patch (Closes: #421781)
+ * tagpending
+ + Use tag=pending rather than include=pending (Closes: #430786)
+ + Sort bug numbers in numerical order
+ + Process bugs that are already tagged pending and closed in the changelog
+
+ [ James Vega ]
+ * uupdate:
+ + When displaying patch reject files, show the path to the new upstream
+ directory where they're contained. (Closes: #419133)
+ * uscan:
+ + Support https URLs. This requires installing libcrypt-ssleay-perl.
+ (Closes: #423669)
+ * debian/control:
+ + Add libcrypt-ssleay-perl to Suggests and description for uscan.
+ * wnpp:
+ + Update the manpage and help output to document what RFA, RFH, and O
+ mean. Also add a pointer to the WNPP website. (Closes: #421872)
+ * PackageDeps:
+ + Use ||= instead of |= to set the package name in %dep_pkgs. It is the
+ correct way to do things and |= causes odd results on at least amd64.
+ (Closes: #419024)
+
+ [ Mohammed Adnène Trojette ]
+ * Release.
+
+ -- Mohammed Adnène Trojette <adn+deb@diwi.org> Sat, 30 Jun 2007 12:58:41 +0200
+
+devscripts (2.10.5) unstable; urgency=low
+
+ [ Luk Claes ]
+ * debc: Make reporting on a single deb work again (Closes: #419487).
+
+ [ Adam D. Barratt ]
+ * debchange: Add gutsy (gibbon) and UNRELEASED to the list of recognised
+ Ubuntu distributions
+ * rc-alert
+ + Update HTML parsing to support the new structure of the RC bug page
+ + The "I" tag can now also mean "lenny-ignore"
+ + Add "[E]xperimental" to the distribution list, and remove "X"
+ ("not in testing")
+ * bts
+ + Allow the use of SMTP instead of sendmail. Thanks to Josh Triplett for
+ the patch (Closes: #420847)
+ + Fix syntax error when reverting to default SENDMAILCMD
+ + When cleaning up a bug's cache entries, also remove {raw,status}.mbox
+ + Fix pod formatting so that the description of the "fixed" command
+ actually appears in the manpage.
+ + Add an option to not cache resolved bugs (Closes: #340259, #378342)
+ + Fix URL parsing to account for recent HTML changes (Closes: #429236)
+ + Always download version graphs rather than the new "options page"
+ + Fix attachment parsing code to handle "filename="
+ * mass-bug: Fix syntax error when reverting to default SENDMAILCMD
+ * dd-list: Treat teams.debian.net addresses as mailing lists rather
+ than individuals
+ * tagpending: Update license statement to GPL >= 2
+ * uscan: Ensure --dehs generates well-formed XML (Closes: #426996)
+
+ [ Martin Zobel-Helas ]
+ * debchange: Add volatile to the list of recognised Debian distributions
+ * debchange: Add backports to the list of recognised Debian distributions
+
+ [ Christoph Berg ]
+ * rmadison: -t, --time: show projectb snapshot date
+
+ -- James Vega <jamessan@debian.org> Tue, 19 Jun 2007 13:57:22 +0100
+
+devscripts (2.10.4) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * grep-excuses: make the maintainer regex more restrictive to avoid accidental
+ matches (Closes: #419462)
+ * debchange: make adding multiple changelog blocks for a single maintainer optional
+ (Closes: #419880)
+ * Conflict with versions of kdesdk-scripts which shipped /usr/bin/licensecheck
+ (Closes: #419754)
+ * Ensure DEBCHANGE_TZ is always set (Closes: #419863)
+ * Add myself to Uploaders
+
+ [ Julian Gilbey ]
+ * bts: update tags list to include lenny
+
+ [ Luk Claes ]
+ * debian/control: Add myself to Uploaders
+ * licensecheck: Escape @kde otherwise build fails
+
+ -- Luk Claes <luk@debian.org> Mon, 23 Apr 2007 20:22:58 +0200
+
+devscripts (2.10.3) unstable; urgency=low
+
+ [ Adam D. Barratt ]
+ * licensecheck: New script to determine which license(s) source files
+ are under (Closes: #382148)
+ * bts: Add claim / unclaim support, based on a patch by zobel
+ (Closes: #385957)
+ * debchange: don't add duplicate maintainer blocks in multi-maintainer
+ mode (Closes: #383542)
+ * Better document debchange's dependencies (Closes: #417633)
+ * tagpending
+ + Make the wnpp check introduced in 2.10.0 optional as it can be very expensive
+ + Improve error message for skipped bugs (Closes: #418884)
+ * rmadison: handle missing liburi-perl more gracefully
+
+ [ Mohammed Adnène Trojette ]
+ * bts: add an --cc-addr to allow sending carbon copies of emails sent
+ to control@bugs.debian.org. (Closes: #333371)
+ * debchange: drop NMU revision when doing a QA upload. (Closes: #415995)
+ * debclean: add a -d option to skip build dependencies check.
+ (Closes: #370066)
+
+ [ Julian Gilbey ]
+ * debchange: load URI::Escape module carefully to give a meaningful
+ warning message if the liburi-perl package is not installed
+
+ [ Christoph Berg ]
+ * uscan: use a different project in the example for the sf.net redirector.
+ (Closes: #418978)
+ * debchange: optionally set changelog timezone from DEBCHANGE_TZ.
+ (Closes: #417261)
+
+ -- Christoph Berg <myon@debian.org> Mon, 16 Apr 2007 14:56:59 +0200
+
+devscripts (2.10.2) unstable; urgency=low
+
+ * The "zobel's birthday" upload.
+
+ [ Adam D. Barratt ]
+ * scripts/Makefile: Override make's default .sh rule so that the package
+ version string actually gets written to the scripts
+ * debian/rules: Fix check for unwanted debug information to account for
+ bts now being in scripts/
+ * Fix encoding of French manpages (Closes: #415240)
+ * bts
+ + Update prunecache() for maintainer / status mboxes and version graphs
+ + Simplify version graph handling code (should now handle all graphs
+ correctly)
+ + Add support for fixed / notfixed (Closes: #340838)
+ * Documentation fixes, based on suggestions from Adeodato Simó
+ + debian/control: update description of debcommit
+ + README: replace reference to bazaar with bzr
+ + nmudiff.1: add missing unbold after an option
+ + dscverify.pl: remove obsolete comment
+ (Closes: #415486)
+
+ [ Martin Zobel-Helas ]
+ * Adding myself to Uploaders
+ * bts
+ + add option to only get bugs never downloaded before (Closes: #366925)
+ + dont forward bugs within the bts (Closes: #406632)
+ * include sample procmail script for autosubscribing to bugs
+ (Closes: #353048)
+
+ [ Christoph Berg ]
+ * debcommit: support hg/mercurial and revamp manpage a bit.
+ * debian/control: suggest mercurial and svk, wrap some fields for easier
+ readability.
+ * dpkg 1.14.0 will obsolete 822-date, apply patch by Guillem Jover to use
+ `date -R` (Closes: #415794)
+
+ [ James Vega ]
+ * Update debchange, rmadison, and tagpending to uri escape package names
+ given to wget. (Closes: #416004)
+ * debian/control: Suggest liburi-perl and add to list of packages used by
+ debchange, rmadison, and tagpending.
+
+ -- Martin Zobel-Helas <zobel@debian.org> Sat, 24 Mar 2007 10:21:02 +0100
+
+devscripts (2.10.1) unstable; urgency=low
+
+ * debian/control: set Maintainer to pkg-devscripts@teams.debian.net.
+
+ -- Mohammed Adnène Trojette <adn+deb@diwi.org> Sat, 17 Mar 2007 00:07:02 +0100
+
+devscripts (2.10.0) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * debchange: fix Ubuntu's distro codename check (bash regexp!)
+ * control: change maintainer name to mailing list (Closes: #411591)
+
+ [ Mohammed Adnène Trojette ]
+ * debian/control:
+ + add myself to Uploaders.
+ + suggest bzr, not bazaar (deprecated). (Closes: #414051)
+ + suggest git.
+ * po4a/po/fr.po: update French manpage translation (Closes: #400568)
+ + Patch from Julien Cristau.
+ * debdiff: allow use with no argument (Closes: #369691)
+ + Patch from Julien Danjou.
+ * deb-reversion: change license to Artistic 2.0. (Closes: #381731)
+
+ [ Christoph Berg ]
+ * Also joining the team
+ * dget: consult apt-get source for missing files (Closes: #394809)
+ * rmadison: new upstream version, supports querying other archives
+ (specifically backports.org)
+
+ [ Stefano Zacchiroli ]
+ * package maintenance changes
+ + debian/control:
+ - added myself as an uploader
+ - added XS-Vcs-Browser field
+ - bumped debhelper deps to >> 5 (changed debian/compat accordingly)
+ + added debian/svn-deblayout with the default tags dir
+ + moved examples under examples/ (changed debian/examples accordingly)
+ + moved scripts under scripts/, created subordinated Makefile there
+ + debian/{dirs,links}: delegated directory/symlink creation to dh_link
+ + debian/manpages: delegated manpage installation to dh_installman
+ + scripts/Makefile: removed the need of explicitly listing scripts
+ * bts: list the available severities in the manpage (Closes: #412186)
+ * bts: clarified the meaning of "owner" in the docs (Closes: #403859)
+ * checkbashisms: add detection of "${!prefix"-like bashisms, patch from Adam
+ D. Barratt (Closes: #409028)
+ * dd-list: enable (-b cmdline flag) output of binary package names, patch
+ from Frank Küster (Closes: #403207)
+ * debcommit: added support for specifying the list of files to commit on
+ cmdline, patch from Damyan Ivanov (Closes: #381152)
+ * mass-bug: enable (--severity cmdline flag) the specification of the
+ severity of the reported bugs, based on a patch from Adam D. Barratt
+ (Closes: #386124)
+ * tagpending: enable (-c cmdline flag) tagging bugs as confirmed in addition
+ to tagging them as pending, based on a patch from Adam D. Barratt
+ (Closes: #382884)
+ * tagpending: factorized some code for delivering info to the user
+ * tagpending: added an extra check to ensure that bugs to be tagged belong
+ to the current package
+ * uscan: added --force-download to force download when changelog is in sync
+ with upstream version, based on a patch from Ian Wienand (Closes: #364116)
+
+ [ Adam D. Barratt ]
+ * Joining the team
+ * COPYING: update FSF postal address
+ * debian/copyright:
+ - annotate-output is GPLv2 only
+ - whodepends is in the public domain
+ * tagpending: modify bug list display code to indicate whether --noact was
+ used
+ * tagpending: support marking wnpp bugs as pending (Closes: #398178)
+ * debc.1: Fix reference to debi (thanks, Frans Pop)
+ * {cvs-,}debc.1: Fix reference to installing packages (thanks, Frans Pop)
+ * debc: Add support for udebs, based on a patch from Frans Pop
+ (Closes: #404952)
+ * svnpath: is GPLv2 or later
+ * bts:
+ - handle new status / maintainer mbox links when downloading bugs
+ (Closes: #414200)
+ - use the maintainer mbox as the default mbox (i.e. for --mbox and
+ cached as $bug.mbox). The "raw" mboxes are now saved as $bug.raw.mbox
+ - attempt to download version graphs in "full caching" mode
+ * dscverify: Add --nosigcheck (Closes: #397720)
+ * uscan: Fix typo in error message when combining --report-status and
+ --verbose
+ * manpage-alert: New script to locate binaries without corresponding
+ manpages (Closes: #414907)
+
+ [ James Vega ]
+ * debian/control: Add myself to the Uploaders list.
+ * bts: chdir back to the invoking directory before leaving prunecache()
+ (Closes: #413793)
+ * scripts/Makefile: Specify an include directory when running Perl in order
+ to handle the source restructuring.
+
+ -- Mohammed Adnène Trojette <adn+deb@diwi.org> Fri, 16 Mar 2007 21:53:35 +0100
+
+devscripts (2.9.27) unstable; urgency=low
+
+ * checkbashisms: check for 'select' (thanks to James Abley, Ubuntu user)
+ * debchange: add support for Ubuntu's distro codenames
+ * debchange: add support for ~ in version numbers (Closes: #400173)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 1 Dec 2006 08:02:53 +0000
+
+devscripts (2.9.26) unstable; urgency=low
+
+ * deb-reversion: update to new upstream version (Closes: #329374)
+ * debc/debi: handle specifying changes file on command line again
+ (Closes: #398152)
+ * debc/debi: handle arch all packages correctly (oops!) (Closes:
+ #398597)
+ * dget: new upstream version, supports looking in other places for
+ files, new binnmu version scheme, --no-cache, file:// and copy:// and
+ fixed bug that --help/--version required other arguments (Closes:
+ #385954, #356208)
+ * nmudiff: allow configuration of whether to send report to existing
+ bugs or create a new bug (Closes: #397912)
+ * uscan: avoid spurious undefined warning if --package is used
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 17 Nov 2006 13:03:03 +0000
+
+devscripts (2.9.25) unstable; urgency=low
+
+ * nmudiff: reinstall mutt as mailer of choice, but now provide the
+ option to use it or not (Closes: #397641)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 8 Nov 2006 20:39:24 +0000
+
+devscripts (2.9.24) unstable; urgency=low
+
+ * debc/debi: handle multi-arch .changes files (Closes: #385673)
+ * debchange: allow non-official distributions (Closes: #397546)
+ * debdiff: handle files moving between multiple packages correctly
+ (Closes: #392977)
+ * debuild: make -B -b work sensibly (Closes: #396232)
+ * debuild: don't check for .orig.tar.gz if we're doing a binary-only
+ build (Closes: #394627)
+ * dget: improve manpage (Closes: #376237)
+ * dget: warn and exit with error if URL cannot be downloaded (Closes:
+ #376932)
+ * mass-bug: don't wrap signatures (Closes: #386123)
+ * nmudiff: clean up properly, and abort on editor error
+ * tagpending: make -v mean verbose; add long option names (Closes:
+ #387293)
+ * uscan: set HTTP user agent name (Closes: #397354)
+ * wnpp-alert: check return status of wget calls (Closes: #364479)
+ * [I18N] Include new versions of French manpages (Closes: #379614)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 8 Nov 2006 19:16:22 +0000
+
+devscripts (2.9.23) unstable; urgency=low
+
+ * bts: automatically create cache directory when bts show is used
+ (Closes: #370205)
+ * debchange: can change urgency and distro using -D and -u flags
+ (Closes: #373271)
+ * debuild: check for either .orig.tar.gz or a .orig directory, as
+ dpkg-source does (Closes: #366286)
+ * dget: introduce --insecure option for allowing downloading from site
+ with self-signed certificate (Closes: #393942)
+ * nmudiff: much improved behaviour:
+ - remove dependency on mutt (use /usr/sbin/sendmail instead)
+ - automatically mail the relevant bugs rather than submit a new bug
+ report; this can be changed using the --new command line option
+ - allow for aborting, changing the bug number submitted to and editing
+ the whole message
+ - checking for errors rather than making a mess of things
+ - cleaning up the manpage
+ (Closes: #378264, #386147, #370056)
+ * uscan: fix handling of ftp directory listings with number-only
+ directory names (Closes: #372609)
+ * uscan: warn if no parentheses in one-term version 2/3 watchfile
+ (Closes: #375557)
+ * uupdate: handle ~ in version numbers (Closes: #397100)
+ * who-uploads: add GPG key ID to "unrecognised key" message (Closes:
+ #397293)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 6 Nov 2006 18:11:46 +0000
+
+devscripts (2.9.22) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * Makefile: remove -ldl flag in libvfork linker line (from checklib
+ output, see http://rerun.lefant.net/checklib)
+ * control: make list render nicely with new aptitude list-handling
+ facility (Closes: #388856)
+ * bts: documentation for show usertag=...: s/user=/users=/
+ * checkbashisms: make reasons for concern explicit, and show whole line
+ of original script, not just matched fragment
+ * dget: support ~ in package version numbers (Closes: #389482)
+ * rmadison: make curl quiet (important when piping the output of
+ rmadison)
+ * who-uploads: don't bother with iconv -t option; it's the default
+ behaviour anyway (see Bug#384835)
+
+ [ Joshua Kwan ]
+ * Remove myself from Uploaders. -ENOTIME :(
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 11 Oct 2006 20:16:02 +0100
+
+devscripts (2.9.21) unstable; urgency=low
+
+ * bts: reportspam/spamreport can now take multiple bug numbers
+ * bts: add support for forcemerge (Closes: #369050, #380041)
+ * bts: always include "# Automatically generated email" message (thanks
+ to Justin Pryzby for spotting this)
+ * bts: chdir back to original directory after downloading files (Closes:
+ #372546)
+ * bts: don't automatically use a -t option unless we are using
+ /usr/sbin/sendmail or /usr/sbin/exim* (Closes: #373664)
+ * bts: allow mailreader setting to contain spaces (Closes: #370208)
+ * checkbashisms: check for $((cnt+1)), echo -n/-e, exec -c/-l/-a, let
+ and $RANDOM (Closes: #369851, #377195, #378406, #383613)
+ * dd-list: treat lists.alioth.debian.org like lists.debian.org (Closes:
+ #373809)
+ * debchange: clarified name of changelog file in more error/warning
+ messages (see bug#368961)
+ * debchange: can specify a NEWS file to edit (still defaults to
+ debian/NEWS) (Closes: #384676)
+ * debdiff: fixed --move(-regex) options (broken by #203781 and #230702
+ fix in 2.9.17) (Closes: #370388)
+ * dpkg-genbuilddeps: clean up if statement (Closes: #365372)
+ * nmudiff: stop using dpkg-parsechangelog to avoid barfing over broken
+ changelogs (Closes: #374773)
+ * rc-alert: now pick up all installed packages (Closes: #370463)
+ * uscan: fix handling of recursive http URLs (Closes: #377518)
+ * who-depends: convert output into locale charset (Closes: #384835)
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 29 Aug 2006 11:35:00 +0100
+
+devscripts (2.9.20) unstable; urgency=low
+
+ * debuild: set DEB_{BUILD,HOST}_* variables as dpkg-buildpackage does
+ (Closes: #364256)
+ * debuild: improve missing .orig.tar.gz warning
+ * uscan: mention upgrading points in the manpage.
+ * uupdate: allow upstream version numbers to use A-Z (Closes:#367055)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 17 May 2006 07:27:17 +0100
+
+devscripts (2.9.19) unstable; urgency=low
+
+ * debuild: fix -I and -i option handling (Closes: #363368)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 20 Apr 2006 21:41:51 +0100
+
+devscripts (2.9.18) unstable; urgency=low
+
+ * uscan: fix parsing howler: uscan would never work like this - oops!
+ (Closes: #363338)
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 18 Apr 2006 17:58:20 +0100
+
+devscripts (2.9.17) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * several Perl scripts: make sure we set the SIGPIPE handler before
+ doing an open '-|'
+ * bts: actually support the --sendmail option rather than just say we
+ do! (Closes: #293715)
+ * bts: fix URI in manpage (Closes: #360783)
+ * bts: fix unblock NNNNN by|with NNNNN handling (Closes: #361029)
+ * bts: fix uninitialized value bugs (Closes: #362187)
+ * debchange: add --qa option (Closes: #358278)
+ * debdiff: check file permissions and new/deleted control files (Closes:
+ #203781, #230702)
+ * debdiff: option --controlfiles to allow comparing postinst
+ etc. (Closes: #218222)
+ * debrelease, debc, debi: support searching for .changes and .debs in a
+ directory other than the parent of the currnent source directory with
+ --debs-dir command line and DEBRELEASE_DEBS_DIR configuration file
+ options (Closes: #309362)
+ * debuild: emulate dpkg-buildpackage rather than call it (unless
+ dpkg-cross is installed); this provides a hook facility (Closes:
+ #226947)
+ * debuild: complains if debian revision in native version (Closes:
+ #262525)
+ * dget: fix manpage type (Closes: #361877)
+ * mass-bug: new script (Closes: #355505)
+ * pts-subscribe: fix config boilerplate to actually set default timeout
+ (Closes: #360857)
+ * pts-subscribe.1: improve the wording of the manpage (Closes: #360027)
+ * svnpath: fix svk info error (Closes: #361979)
+ * uscan: *really* fix the uninitialized value bug (Closes: #356959,
+ #361319)
+ * uscan: provide downloadurlmangle and filenamemangle options to mangle
+ the URL and filename before attempting to perform and save the
+ download respectively (Closes: #327404)
+ * uscan: fix manpage typo (dversionmangle) (Closes: #362202)
+ * uscan: provide "versionmangle" option which does both
+ {u,d}versionmangle (Closes: #350455)
+ * uupdate: correct syntax error (Closes: #360995)
+ * who-uploads: new script to determine most recent uploaders of a
+ package to the Debian archive (Closes: #347809)
+
+ [ Joey Hess ]
+ * dd-list: actually support white-space separate pages names from stdin,
+ as documented on man page.
+ * rmadison: escape "+" in package names in http query string
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 16 Apr 2006 19:43:15 +0100
+
+devscripts (2.9.16) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * Fix 2.9.15 changelog to refer to pts-subscribe, not pkg-subscribe
+ (Closes: #353413)
+ * bts: be stricter about bug number cruft (Closes: #356318)
+ * bts: add spamreport as a synonym for reportspam
+ * debcommit: add --help, --version
+ * debdiff: fix unnecessary chdir (Closes: #354862)
+ * debdiff: compare control files in multi-deb binary packages - this was
+ just a coding problem, and could have been done for ages (Closes: #354868)
+ * pts-subscribe: Depends on the "at" package (Closes: #353502)
+ * uupdate: handle already-unpacked source code archives (Closes: #286253)
+ * uscan: avoid warnings on one-word actions (Closes: #356959)
+ * uscan: clarify manpage regarding spaces in URLs (Closes: #359190)
+ * debian/rules: remove mention of DH_ALWAYS_EXCLUDE (see Bug#352626)
+
+ [ Joey Hess ]
+ * debcommit: Add program name to all error messages.
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 29 Mar 2006 16:20:17 +0100
+
+devscripts (2.9.15) unstable; urgency=low
+
+ * bts: handle bts show pkg archive=yes more gracefully
+ * bts: require mailx | mailutils (mailutils provides mailx anyhow)
+ * bts: always allow Bug#NNNNNN: or #NNNNN etc. in commands (Closes:
+ #353049)
+ * bts: support caching RC bug pages (Closes: #236312)
+ * bts: support subscribe/unsubscribe commands (Closes: #339661)
+ * bts: support alternative sendmail command (Closes: #343752)
+ * debdiff: handle multi-binary packages and allow comparison of control
+ files from each corresponding pair of binary packages - thanks to
+ Robert Luberda <robert@debian.org> for the patch (Closes: #174858)
+ * general: improve getopt handling
+ * pts-subscribe: new script to subscribe to the PTS for a limited time
+ period (Closes: #202866)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 16 Feb 2006 16:17:15 +0000
+
+devscripts (2.9.14) unstable; urgency=low
+
+ * deb-reversion: correctly handle multiword hooks (Closes: #351250)
+ * deb-reversion: die if not being run as root or using fakeroot
+ * deb-reversion: major improvements to manpage
+ * debchange: fall back on NAME envvar if DEBFULLNAME is not defined
+ (Closes: #340292)
+ * debrelease: allow it to run in normal situations again (broken when
+ fixing #322926, #217546)
+ * uscan: always pass --no-symlink to uupdate as uscan does the
+ symlinking itself (Closes: #345874)
+ * uscan: handle multi-word actions
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 13 Feb 2006 11:33:47 +0000
+
+devscripts (2.9.13) unstable; urgency=low
+
+ * Don't include .svn directory in md5sums (Closes: #352273)
+ * bts: fix new caching code (thanks to Frank Lichtenheld for this one)
+ (Closes: #352476)
+ * bts: correctly handle DEBEMAIL='Name <email>' (Closes: #342883)
+ * debcommit: handle commit messages for git-based setups (Closes:
+ #352004)
+ * uscan: check sanity of downloaded files (Closes: #303958)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 12 Feb 2006 12:46:22 +0000
+
+devscripts (2.9.12) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * bts: show/bugs: update to recognise new URL formats in BTS pages
+ (based on bug #349259)
+ * bts: show/bugs: allow options with from:<submitter> etc. to work
+ correctly (Closes: #345464)
+ * bts: accept "submitter nnnnn !" format (Closes: #348349)
+ * debchange: update to recognise new URL formats in BTS pages (Closes:
+ #349259)
+ * debchange: quitting the editor with -e option and no changes no longer
+ modifies the changelog (Closes: #349091)
+ * debuild: dpkg-buildpackage -> dpkg-buildpackage(1) in EXAMPLES section
+ of manpage (Closes: #351363)
+ * nmudiff: include in package (Closes: #349337)
+ * nmudiff: improved old version code from Steinar using supplied patch
+ (Closes: #351791)
+
+ [ Joey Hess ]
+ * Add rmadison program by Christoph Berg. Closes: #350335
+
+ [ Nicolas François ]
+ * Makefile
+ build the man pages in the `all' rule
+ remove the translated manpages and update the POT/POs in `clean'
+ * po4a/add_fr/translator_french.add moved to po4a/fr/translator_man.add
+ The addendum is moved to the language directory.
+ It was renamed because a pod and dbk addendum will be added latter
+ * po4a/devscripts.fr.po moved to po4a/po/fr.po, and updated
+ This is important for the l10n robot used to find the POs that need to
+ be updated
+ * po4a/devscripts.pot moved to po4a/po/devscripts.pot
+ * po4a/devscripts-po4a.conf
+ update due to the new file hierarchy
+ * po4a/fr/*.[15]
+ The translated man pages were removed. They are generated at build
+ time.
+ (Closes: #347671)
+
+ [ Joey Hess ]
+ * Add build dep on po4a to support above changes.
+ * Add dget program by Christoph Berg. Closes: #332286
+ * Patch from Matt Kraai to add --exclude support to debdiff. Closes: #328382
+ * debsign: don't abort or complain if stty fails, as might happen
+ if run w/o a controlling terminal. Closes: #345636
+
+ -- Joey Hess <joeyh@debian.org> Thu, 9 Feb 2006 13:47:03 -0500
+
+devscripts (2.9.11) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * bts: allow found to take only one argument (Closes: #342515)
+ * svnpath: fix .SH NAME line in manpage (Closes: #342059)
+ * manpage typos: thanks to A Costa and Niko Tyni for these (Closes:
+ #342295, #342296, #342297, #342298, #342299, #342300, #342301,
+ #342302, #342770); I have not changed "manpage" to "man page", though,
+ as the former is standard UN*X terminology
+ * debchange, debuild, debrelease, debsign, debrsign: handle multiarch
+ changes files (Closes: #322926, #217546)
+
+ [ Joey Hess ]
+ * debcommit: add support for git, thanks to Panagiotis Issaris.
+ Closes: #343694
+ * nmudiff: new program by Steinar H. Gunderson.
+ * nmudiff: use sensible-editor to better comply with policy
+ * nmudiff: wrote a man page
+ * nmudiff: improve old version finding code
+
+ -- Joey Hess <joeyh@debian.org> Fri, 20 Jan 2006 14:36:27 -0500
+
+devscripts (2.9.10) unstable; urgency=low
+
+ * bts: handle 8-bit encodings in DEBFULLNAME for "From:" field of emails
+ sent (Closes: #339657)
+ * bts: submitter and reassign accept multiple bug numbers (Closes:
+ #237726)
+ * bts: document "it" for referring to previous bug number
+ * debchange: provide -m/--maintmaint switch to use the maintainer name
+ from the most recent changelog entry rather than using the environment
+ variables (Closes: #232000)
+ * debcommit: add support for bzr (Closes: #340301)
+ * debuild: improve examples in manpage (Closes: #326881)
+ * dpkg-depcheck: completely rewrite symlink handling code to fix bug
+ where /usr was a symlink (Closes: #246006)
+
+ -- Julian Gilbey <jdg@debian.org> Sat, 3 Dec 2005 20:24:38 +0000
+
+devscripts (2.9.9) unstable; urgency=low
+
+ [ Filippo Giunchedi ]
+ * uscan: add option to set LWP timeout, patch by Stephen Quinney
+ (Closes: #335181)
+
+ [ Julian Gilbey ]
+ * bts: fix handling of arguments to show command; translate "tag:..."
+ into "include=..." when given as a second argument (Closes: #338171)
+ * bts: don't treat something like "bts close #123456" as a comment
+ (Closes: #337737)
+ * debchange: reapply --edit patch from bug#234434 (Closes: #336632)
+ * debcommit: fix version grepping in changelog parsing (Closes: #336025)
+ * debdiff: add --quiet switch and set exit status according to diff
+ status (Closes: #337829)
+ * debuild: improve grammar of usage message
+
+ [ Joey Hess ]
+ * bts: sleep a default of 5 seconds between bts cache downloads
+ to avoid hammering the underprovisioned debian BTS/master archive server.
+ * bts: add --cache-delay parameter to tune this
+
+ -- Joey Hess <joeyh@debian.org> Mon, 21 Nov 2005 10:46:49 -0500
+
+devscripts (2.9.8) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * bts: don't require user for usertags (Closes: #326560)
+ * bts: fix manpage typos (Closes: #328972, #328974, #328477)
+ * bts: fix bug in getting timestamps
+ * debdiff: handle filenames with spaces (Closes: #334145)
+ * debdiff: compare symlinks more carefully (Closes: #327090)
+ * dd-list: support displaying uploaders with new --uploaders/-u option
+ (Closes: #328459)
+ * uscan: correctly handle version 2 watchfiles with multiple groups
+ (Closes: #327258)
+ * uupdate: handle csae of debian/ directory in upstream sources (Closes:
+ #320836)
+ * uupdate: fix --no-symlink option (Closes: #333390)
+ * don't allow non-bash scripts in the package (Closes: #331223)
+
+ [ Joey Hess ]
+ * debchange: -r needs to enable multi-maintainer markers when releasing a
+ package if the releaser is not the same as the only person who made any
+ changes.
+
+ [ Joshua Kwan ]
+ * Clarify annotate-output sub-description in control file.
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 16 Oct 2005 13:07:30 +0100
+
+devscripts (2.9.7) unstable; urgency=low
+
+ * bts: oops, left out a space in usertags command
+
+ -- Julian Gilbey <jdg@polya.uklinux.net> Sun, 4 Sep 2005 01:51:24 +0100
+
+devscripts (2.9.6) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * bts: tags: revert change in 2.9: reinstate "fixed-in-experimental" (it
+ still appears to be in use) and don't need "help" twice (Closes: #325480)
+ * bts: show/cache: lots of changes to make compatible with new BTS HTML
+ pages (Closes: #325966)
+ Also store devscripts version with cached files, so that such changes
+ can be handled more smoothly in future.
+ * bts: small cleanups for output messages, minor bugfixes etc.
+ * bts: introduce spam command to report spam in bug reports
+ * bts: support new user/usertags commands (Closes: #326265)
+ * checkbashisms: correctly detect "function" keyword (Closes: #324599)
+ * uscan: report on package being scanned when --report is used (Closes:
+ #324102)
+ * uscan: provide --report-status option to distinguish from --report,
+ which is now quieter (Closes: #325097, #325980)
+
+ [ Filippo Giunchedi ]
+ * uscan: fixed some repeated tags when used with --dehs
+ * uscan: expand some entities in dehs_output
+ * bts: download bugs.css and use it (Closes: #323781)
+ * bts: remove some old cache handling cruft since sarge is released
+
+ [ Joey Hess ]
+ * dd-list: add --dctrl option for quick reading from grep-dctrl.
+ * grep-excuses: remove special case for running locally on ftp-master,
+ which breaks every time ftp-master moves (or directories are reorganised),
+ and only saved some loopback traffic anyway.
+ * grep-excuses: fix non-robust html parsing that caused ugly messages
+ when it failed to find </ul> at the end of the excuses file due
+ to reformatting.
+
+ -- Julian Gilbey <jdg@polya.uklinux.net> Sun, 4 Sep 2005 01:08:47 +0100
+
+devscripts (2.9.5) unstable; urgency=low
+
+ [ Joey Hess ]
+ * bts: Make block command accept "by" or "with" after the blocked bug,
+ but do not make either mandatory.
+ * debcommit: try to add support for svk
+
+ [ Julian Gilbey ]
+ * bts: fix clone command (Closes: #321798)
+ * debchange: add comment to manpage about building sponsored uploads
+ (Closes: #321960)
+ * debchange: introduce --create option: allows creation of changelogs /
+ NEWS files (Closes: #220755, #322716), and inform user about this
+ option if changelog / NEWS file is not found (Closes: #316661)
+ * debchange: allow option (--nomultimaint) to not use this
+ multi-maintainer changelog format
+ * debsign: fix noecho behaviour for interrupted gpg call (Closes:
+ #321684)
+ * uscan: --report actually reports useful information (Closes: #313323)
+ * wnpp-alert: RFA -> RFH (Closes: #321707)
+
+ [ Joey Hess ]
+ * bts: Deal with recent bts changes in html munging code.
+
+ -- Joey Hess <joeyh@debian.org> Wed, 17 Aug 2005 12:08:09 -0400
+
+devscripts (2.9.4) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * bts: fix forwarded command (Closes: #320703)
+ * debchange: un-html-ise bug titles when using --closes
+
+ [ Joey Hess ]
+ * bts: Support new block and unblock commands.
+
+ -- Joey Hess <joeyh@debian.org> Wed, 3 Aug 2005 22:13:47 -0400
+
+devscripts (2.9.3) unstable; urgency=low
+
+ [ Filippo Giunchedi ]
+ * added deb-reversion by martin f krafft (Closes: #284642)
+ * modified Makefile to handle docbook-generated manpages and build-depend on
+ xsltproc + docbook-xsl
+
+ [ Joey Hess ]
+ * Fix suggests on subversion.
+ * Other cleanups to references to revision control programs.
+
+ [ Joshua Kwan ]
+ * debchange: Fix dch -D behavior by adding some parentheses. closes: #319687
+ * Add French manual pages, thanks to the French l10n team. closes: #292780
+
+ [ Julian Gilbey ]
+ * bts: support for notfound command (Closes: #320569)
+ * debchange: change --closes command output format to place "(Closes:
+ #nnnnn)" at end of changelog entry
+ * debchange: don't require changelog to be modified when -e or -r option
+ used
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 31 Jul 2005 14:50:10 +0100
+
+devscripts (2.9.2) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * debcommit: fix recognition of cvs trees
+
+ [ Joey Hess ]
+ * bts: Fix over-broad cgi url mangling to avoid mangling urls that are part
+ of bug reports.
+ * bts: fix retitle command, broken by extra param change in 2.9.
+ Closes: #319367
+
+ -- Joey Hess <joeyh@debian.org> Thu, 21 Jul 2005 12:57:47 -0400
+
+devscripts (2.9.1) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * annotate -> annotate-output renaming, removing package conflict
+ (closes: #319271, #319289)
+ * debcommit: Apply Colin Watson's arch patch (see #319072)
+
+ [ Joey Hess ]
+ * debchange: Fix parsing of --release-heuristic switch.
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 21 Jul 2005 09:51:17 +0100
+
+devscripts (2.9) unstable; urgency=low
+
+ [ Julian Gilbey ]
+ * bts: fix bts --mbox show nnnn after bts show nnnn
+ * bts: add etch and etch-ignore tags (closes: #312493)
+ * bts: tags: remove "fixed-in-experimental" and add "help"
+ * debchange: use word "file" in manpage for --changelog option (closes:
+ #301917)
+ * debchange: debian/NEWS.Debian should have been debian/NEWS (closes:
+ #303886)
+ * debuild: correct manpage typo (closes: #309825)
+ * debdiff: handle debdiff on two identically-named native .dsc files
+ (closes: #307318)
+ * grep-excuses: no longer cache web page, as per bug#309802 (closes:
+ #225955)
+ * rc-alert: no longer automatically create cache directory, as per
+ bug#309802
+ * uscan: handle annoying error message (closes: #303607)
+ * uscan: mangle http://sf.net/ to use Filippo's sf.php script and work
+ (closes: #242884)
+ * uscan: handle tar.bz2 packages (related to #317331)
+ * uupdate: handle dpkg 1.13 source format allowing bz2-compressed files
+ and .debian.tar.gz files (closes: #317331)
+ * wnpp-alert: accept -h and -v short options (closes: #304240)
+ * wnpp-alert: don't cache such small files (closes: #309802)
+ * wnpp-alert: check help_requested file and handle packages with no
+ descriptions (closes: #318737)
+
+ [ Joshua Kwan ]
+ * Add a new script whodepends, written by Moshe Zadka, to check
+ which maintainers' packages depend on a particular package.
+ closes: #175832 (longstanding, huh?)
+ * checkbashims: show usage if 0 arguments provided.
+
+ [ Filippo Giunchedi ]
+ * debdiff: handle .udeb files if found in .changes (closes: #215477)
+ * debchange: add support for forcing a lower version
+ (-b/--force-bad-version) (closes: #251436, #183424)
+ * debsign: support for signing .commands files (Closes: #224523)
+ * added annotate.sh and annotate.1
+ * added archpath.sh and archpath.1, patch by Colin Watson (Closes: #319072)
+ * export DH_ALWAYS_EXCLUDE in debian/rules as we are not interested in
+ .svn/CVS directories
+
+ [ Joey Hess ]
+ * debchange: support generating multi-developer changelogs, currently only
+ supporting the format used in this changelog entry. If multiple developers
+ are detected it will automatically add [ Full Name ] lines to disambiguate
+ who did what.
+ * debdiff: fix debdiff of dsc files to work with new dpkg-dev.
+ Closes: #313293, #314811
+ * Add debcommit, a script to commit to svn (or cvs) based on the contents of
+ the changelog, and svnpath, which it uses to generate svn tags.
+ Closes: #316577
+ * debchange: Don't allow --closes in --news mode.
+ * debchange: In --news mode, don't include "* Non-maintainer upload."
+ entries
+ * debchange: In --news mode, separate each new entry with a blank line
+ and do not add bullets, to encourage not writing NEWS files like changelog
+ files. Closes: #316660
+ * debchange: Add --release-heuristic and DEBCHANGE_RELEASE_HEURISTIC
+ options to control how it tells if a package was released.
+ * debchange: Add new "changelog" release heuristic, which looks
+ for a distribution of "UNRELEASED" in a changelog (and adds such a
+ distribution by default when making new entries). Useful for packages
+ maintained/released by multiple people.
+ * debchange: Patch from David B Harris to implement --edit option.
+ Closes: #234434
+ * Add dd-list, originally by Lars Wirzenius, rewritten in perl.
+ Closes: #316102
+ * Ignore whitespace around package names in dd-list --stdin.
+ * debchange: Add --release option.
+ * bts: update and apply Filippo's patch to add a progress display while
+ caching bugs. Closes: #237842
+ * tagpending.1: Remove obsolete note about it using LDAP.
+ * bts: add support for new version tracking extensions in the Debian BTS
+ control interface.
+ * bts: add support for "bts show package dist=stable" and the like.
+ * bts: check for additional options and die
+ * tagpending: add missing space after package limit when calling bts
+
+ -- Filippo Giunchedi <filippo@debian.org> Wed, 20 Jul 2005 14:33:05 +0200
+
+devscripts (2.8.14) unstable; urgency=low
+
+ * uscan: fix second showstopper (broken URL parsing) (closes: #301169)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 24 Mar 2005 14:33:05 +0000
+
+devscripts (2.8.13) unstable; urgency=low
+
+ * bts: provide --quiet option (closes: #299344)
+ * dpkg-depcheck: improve sgml catalog regexp (closes: #295845)
+ * uupdate: improve error message (closes: #267317)
+ * uscan: fix showstopper (closes: #301177)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 24 Mar 2005 09:13:15 +0000
+
+devscripts (2.8.12) unstable; urgency=low
+
+ * bts: allow --mbox etc. options to appear after the show/bugs keyword
+ as well as before, and similarly with the "cache" command
+ * bts: allow bug numbers to end with a ":" (closes: #300965)
+ * debchange: use access rather than stat for checking file permissions
+ (closes: #298659); also do same to debi and debuild
+ * debdiff: don't hardcode wdiff path
+ * debsign: correct obsolete head syntax (closes: #300844)
+ * uscan: watch files are now version=3 (should have done this with
+ 2.8.11, oops)
+ * uscan: now support DEHS-style output and --watchfile etc options
+ * uscan: also state upstream URL for newer versions (closes: #230813)
+ * uscan: handle funny upstream version numbers using multiple groups
+ (closes: #282255) and version-number mangling, both for upstream
+ version numbers (closes: #266095) and Debian version numbers (closes:
+ #261385)
+ * uscan: support --rename option to rename file instead of symlinking it
+ (closes: #227952)
+ * uscan: call find with -follow option: this should not cause any
+ problems (if it does, we can make it optional) (closes: #243758)
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 15 Mar 2005 18:41:25 +0000
+
+devscripts (2.8.11) unstable; urgency=low
+
+ * Julian Gilbey
+ - Added a dependency on sed (>= 2.95) as wnpp uses the T command (thanks
+ to Olafur Jens Sig for alerting me to this one)
+ - bts: fix --cache-mode=mbox after --cache-mode=min bug (closes: #290487)
+ - bts: quieten (hopefully) unnecessary warning from HTML::Parse for
+ funny characters (closes: #292671)
+ - debchange: support --changelog and --news options for specifying
+ changelog (closes: #219135, #261878)
+ - debchange: remove emacs backup file (closes: #297489)
+ - debchange: document --nmu in manpage (closes: #299234)
+ - debsign: check for gpg version for no-show-policy-url option
+ (closes: #293792)
+ - uscan: change behaviour with respect to directory name checking: now
+ only checks directories with matching names, rather than downloading
+ newer versions regardless (closes: #260538)
+ - uscan: handle metacharacters in directory components (closes: #262489)
+ - uscan: allow directory name patterns (not quite recursive, but it's
+ pretty much what was requested) (closes: #143284)
+ * Joshua Kwan
+ - dscverify: Don't use --emulate-md-encode-bug in dscverify anymore,
+ it's been obsoleted with gnupg 1.4.0. (closes: #293791)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 13 Mar 2005 13:51:29 +0000
+
+devscripts (2.8.10) unstable; urgency=low
+
+ * bts: better fix for option handling bug. Options must all appear
+ before first action name (closes: #290253 again, and prevents other
+ similar problems with tag - tagname)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 13 Jan 2005 10:57:15 +0000
+
+devscripts (2.8.9) unstable; urgency=medium
+
+ * bts: fix option handling to allow '+' to go through again.
+ closes: #290253
+
+ -- Joshua Kwan <joshk@triplehelix.org> Thu, 13 Jan 2005 01:17:39 -0800
+
+devscripts (2.8.8) unstable; urgency=low
+
+ * bts: fix mbox handling in 2.8.7; this also obviates the need for
+ cleaning out the cache if upgrading from 2.8.6.
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 11 Jan 2005 09:58:38 +0000
+
+devscripts (2.8.7) unstable; urgency=low
+
+ * bts: fix option handling, thanks to Tristan Seligmann (closes:
+ #289672)
+ * bts: support reading downloaded mbox versions of bugs with mutt or
+ alternative mail readers; also provide finer grained control over what
+ gets cached in general. NOTE that this has changed some incompatible
+ changes from those introduced in version 2.8.6 (closes: #251099)
+ * debclean: remove obsolete French translation of manpage
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 10 Jan 2005 18:42:20 +0000
+
+devscripts (2.8.6) unstable; urgency=low
+
+ * Julian Gilbey
+ - bts: download attachments when caching bug reports (closes: #254102)
+ - debian/control: add Suggests: libwww-perl (closes: #277388)
+ - debchange: switch from ldap to wget for searching BTS (for
+ efficiency) (closes: #284650)
+ - tagpending: switch from ldap to wget for searching BTS (for
+ efficiency)
+ - uupdate: apply patch from Matthew Palmer to fix overwriting upstream
+ files (closes: #230090)
+
+ -- Joshua Kwan <joshk@triplehelix.org> Tue, 28 Dec 2004 11:51:38 -0800
+
+devscripts (2.8.5) unstable; urgency=medium
+
+ * Julian Gilbey
+ - bts: fix "bts bugs :" error
+ - bts: accept "bts tags nnnnnn +tag" syntax
+ - bts: rejuvenate the close command (closes: #245956)
+ - bts: fix typo (closes: #268608)
+ - debchange: fixed pipe error (closes: #228749)
+ - debchange: requires perl >= 5.8, so make this a Depends: in the
+ control file (will be standard in sarge anyway, so it's not a
+ particularly big deal) (closes: #241138)
+ - debuild: correctly count the saved envvars (closes: #268985)
+ - debsign: correctly handle DEBSIGN_SIGNLIKE config option (closes:
+ #270262)
+ - tagpending: make ldap optional (closes: #269124)
+ - tagpending: fix -n output message (closes: #269125)
+ - tagpending: give progress output; introduce silent option
+ - uscan: support version numbers with ~ (change Devscripts::Versort to
+ simply call dpkg --compare-versions to do the work) (closes: #232286)
+ - wnpp-alert: now correctly reports on orphaned packages as well
+ (tweaked some sed scripts; don't know what was actually wrong :-/ )
+ (closes: #268948)
+ * Joshua Kwan
+ - debrsign: Warn if you passed a changes file but omitted the remote
+ address.
+ - Update debchange and tagpending for new bts2ldap gateway.
+ - Remove ${perl:Depends} from control file, dh_perl is not guessing that
+ we do actually need 5.8, and so we end up with a perl (>= 5.8), perl
+ dependency, which is wrong.
+
+ -- Joshua Kwan <joshk@triplehelix.org> Sun, 26 Sep 2004 13:41:37 -0700
+
+devscripts (2.8.4) unstable; urgency=medium
+
+ * The Barbrady release ("Move along people, there's NOTHING TO SEE here..")
+ * Add build-depends on the perl packages that perl -c needs to do its thing.
+ Thanks Anibal Monsalve Salazar for pointing this out. Closes: #266847
+
+ -- Joshua Kwan <joshk@triplehelix.org> Thu, 19 Aug 2004 09:13:14 -0700
+
+devscripts (2.8.3) unstable; urgency=medium
+
+ * The "timely bug report" release.
+ * uupdate.sh: [ $# ne 0 ] -> [ $# -ne 0 ]. Thanks Fumitoshi UKAI.
+ (Closes: #266221)
+ * Run perl -c on all the Perl scripts and sh -n on all of the shell
+ scripts, in foresight of future syntax errors.
+ * tagpending.sh: Add a space after the source package name. Thanks Guillem
+ Jover for pointing this out.
+ * Remove the last remnants of the abandoned debpanic script from debi.pl.
+ * bts.pl: Fix gooood crack in 'it' usage. ($it eq undef -> not defined $it.)
+ (Closes: #266717)
+
+ -- Joshua Kwan <joshk@triplehelix.org> Wed, 18 Aug 2004 01:28:37 -0700
+
+devscripts (2.8.2) unstable; urgency=low
+
+ * tagpending.sh:
+ - s/help/usage/. Another buglet found by Steve Kowalik. Sigh!
+ (Closes: #265412)
+ - Include the source package name in the 'package' portion of
+ the generated message. (Closes: #265445)
+
+ -- Joshua Kwan <joshk@triplehelix.org> Mon, 16 Aug 2004 13:23:10 -0700
+
+devscripts (2.8.1) unstable; urgency=medium
+
+ * debchange.pl: Don't check for -w 'debian/changelog', check whether
+ we're in debian/ first, to avoid false positives. (Closes: #264310)
+ * tagpending.sh: Steve Kowalik's personal email is s3kr1t, so don't use
+ mail(1) to send the control email, but toss it all to bts.pl which will
+ handle all the $DEBEMAIL and $EMAIL and such. (Closes: #264767)
+
+ -- Joshua Kwan <joshk@triplehelix.org> Tue, 10 Aug 2004 09:41:14 -0700
+
+devscripts (2.8) unstable; urgency=low
+
+ * Now comaintained by Joshua Kwan and Julian Gilbey.
+ * Build system:
+ - `pwd` -> $(CURDIR) in debian/rules.
+ - Remove $(CWRAPPERS) in Makefile's clean target.
+ * archive/cvs-buildpackage: Remove.
+ * debchange:
+ - Add -n / --nmu option for NMUs. (Closes: #184944)
+ - Our BTS web parser is broken. Move to Net::LDAP and the
+ more machine-friendly bts2ldap gateway. Change the Suggests:
+ on libwww-perl to libnet-ldap-perl.
+ - Do not proceed with parsing versions and contacting the BTS if
+ debian/changelog is not writable. (Closes: #235485, #178080)
+ * debsign:
+ - Don't prompt to overwrite the dsc file (ie. may be owned by root,
+ parent dir owned by yourself) - force it and hope it works.
+ (Closes: #249950)
+ - Change nonstandard head -1 to head -n 1. (Closes: #231130)
+ - Add a versioned dependency on gnupg (>= 1.0.7), when
+ --no-show-policy-url was added. (Closes: #228938)
+ * debrsign:
+ - Add --path option to specify full path to gnupg/pgp. (Closes: #243013)
+ * debuild:
+ - Preserve GPG_TTY so that gpg-agent is recognized. (Closes: #254112)
+ * bts:
+ - Recognize the 'l10n' tag for bts. (Closes: #227735)
+ - bts.1: Fix extraneous indentation. (Closes: #236309)
+ - Allow 'it' as an alias to the previous bug referenced.
+ (Closes: #256051)
+ - cache: Fix uninitialized value warning by checking how many arguments
+ were passed. (Closes: #225317)
+ * Devscripts::Versort:
+ - Apply Roderick Schertler's patch to fix an infinite loop comparing
+ identical non-Debian revisions. (Closes: #236344)
+ * rc-alert:
+ - rc-alert.1: Add SEE ALSO for popbugs(1). (Closes: #227078)
+ * uscan:
+ - uscan.pl, uscan.1: Add brief mention for --debug. (Closes: #238655)
+ - uscan.pl: remove HTTP GET data from downloaded file. (Closes: #247175)
+ * New scripts by me:
+ - tagpending: Within a source directory, tags all bugs not already
+ 'pending' to be as such. (associated: tagpending.1)
+
+ -- Joshua Kwan <joshk@triplehelix.org> Fri, 6 Aug 2004 14:06:00 -0700
+
+devscripts (2.7.95.1) unstable; urgency=low
+
+ * bts: fixed some major blunders in bts show command: now shows
+ something in offline mode, and multiple instances of bts show work
+ concurrently
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 11 Dec 2003 18:47:25 +0000
+
+devscripts (2.7.95) unstable; urgency=low
+
+ * New script:
+ - cvs-debrelease: to complete the cvs-* scripts bundle, this one
+ replicates the debrelease behaviour
+ * bts: remove special tag:<tag> processing, as the BTS understands
+ tag:<tag> requests (thanks Colin!)
+ * cvs-deb{c,i}: call deb{c,i} directly
+ * debchange: don't give unnecessary UTF-8 warning notice (closes:
+ #222110)
+ * dscverify: fix ENOENT bug (closes: #222890)
+ * uscan: some minor cleanups
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 8 Dec 2003 23:14:49 +0000
+
+devscripts (2.7.94.3) unstable; urgency=low
+
+ * debi/debc: fix typo in determining .changes filename (closes: #221842)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 20 Nov 2003 21:50:54 +0000
+
+devscripts (2.7.94.2) unstable; urgency=low
+
+ * Fix bts email From: line bug (closes: #221848)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 20 Nov 2003 14:31:36 +0000
+
+devscripts (2.7.94.1) unstable; urgency=low
+
+ * And get rc-alert to work (closes: #221767)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 20 Nov 2003 00:43:31 +0000
+
+devscripts (2.7.94) unstable; urgency=low
+
+ * Really include rc-alert (closes: #221550)
+ * debchange: fix UTF-8 problems (closes: #218785)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 19 Nov 2003 15:26:25 +0000
+
+devscripts (2.7.93) unstable; urgency=low
+
+ * New scripts:
+ - cvs-debuild: wrapper for debuild to use cvs-buildpackage, or for
+ cvs-buildpackage to use debuild (closes: #36344 at last!)
+ - cvs-debi, cvs-debc: wrapper for debi, debc to use in conjunction
+ with cvs-debuild or cvs-buildpackage; function like
+ debi and debc, but are run from the CVS working
+ directory instead (also in #36344)
+ - rc-alert: list all installed packages which appear in the
+ list of packages with RC bugs
+ - wnpp-alert: list all installed packages which appear in the WNPP
+ orphaned or up-for-adoption lists (closes: #188246)
+ * lots of scripts: remove --ignore-dirname option and provide
+ --check-dirname-level and --check-dirname-regex along with
+ configuration file options to set the default directory name-checking
+ behaviour (closes: #218153)
+ * lots of scripts: provide --no-conf/--noconf option for all scripts
+ which read the devscripts configuration files, and provide useful
+ information when the --help option is used (closes: #218224)
+ * bts: identify itself in its automatic emails (closes: #199312)
+ * bts: dangerous "no-option" behaviour to cleancache changed
+ * bts: completely rewrite the caching system using LWP, based on an idea
+ gleaned from the original rc-alert together with knowledge of the BTS
+ internals ;-); this does give a couple of minor disadvantages, but
+ lots of major advantages too (the code is *much* cleaner now, and we
+ only need to store each page once!); there is still a slightly messy
+ converter to convert the old cache to the new format, but that shall
+ go away soonish (probably after 2-3 months or sarge release, whichever
+ is sooner), to be replaced with a simple warning
+ * bts: support "bts bugs tag:<tag>" (closes: #218494)
+ * bts: deprecate "bts close" command, following the lead of debbugs
+ * accept EMAIL as well as DEBEMAIL (closes: #219127)
+ * debi, debc: rewrote in Perl (there was so much Perl embedded, it
+ didn't make sense to leave it in shell script)
+ * debi, debc: provide --no-conf option
+ * debc/debi: support only listing/installing specified packages (closes:
+ #200372)
+ * debchange: improve regex to recognise more successful uploads (closes:
+ #218242)
+ * debchange: perform various UTF-8 checks (closes: #218785)
+ * debpkg: remove /usr/local components from PATH
+ * debsign: improve gpg/pgp selection heuristics (closes: #158614,
+ #211031)
+ * debsign: improve manpage
+ * debuild: fix command line parsing (uploaded this one as 2.7.92.1)
+ (closed #218108, #218234)
+ * debuild: more command-line parsing stuff (closes: #218379, #220900)
+ * debuild: pass -e<maint> option to debsign (oops!)
+ * debuild: deprecate -E option (dpkg-buildpackage now uses it); so only
+ -e and -r short options are left
+ * debuild: deprecate -L/--lintian option for indicating lintian options,
+ replace with --lintian-opts
+ * debuild: support linda (closes: #178456)
+ * debuild: now always recognises -d/-D options to skip/force use of
+ dpkg-checkbuilddeps (closes: #188216)
+ * grep-excuses: converted to use wget and caching instead of libwww-perl
+ (faster)
+ * plotchangelog: provided --cumulative option
+ * devscripts.conf.5: new manpage (closes: #217858)
+ * removed the dummy build, release and signchanges scripts (they were
+ renamed over four years ago)
+ * updated the devscripts.conf default file to add new programs to the
+ list
+ * note that it's really sourced by /bin/bash. not generic /bin/sh (and
+ modify the rest of the package accordingly); this cleans up a minor
+ inconsistency
+ * place symlink to the default config file in doc directory
+ * improved tempfile security in plotchangelogs, debdiff, grep-excuses
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 17 Nov 2003 22:40:29 +0000
+
+devscripts (2.7.92.1) unstable; urgency=low
+
+ * debuild: fix command line parsing (backported from 2.7.93pre2)
+ (closes: #218108, #218234)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 31 Oct 2003 10:33:07 +0000
+
+devscripts (2.7.92) unstable; urgency=low
+
+ * Security fix: be a lot more careful when traversing directory trees
+ looking for debian/changelog files; only perform potentially harmful
+ actions if the directory name matches the package name (i.e., package
+ or package-<anything>). Affects the following programs: debc,
+ debchange/dch, debclean, debuild, debi, debrelease, uscan, uupdate
+ (closes: #205471)
+ * bts: update tags list again (closes: #207260)
+ * bts: update BROWSER URL (closes: #207052)
+ * bts: handle '+' in package names when caching (closes: #215830)
+ * bts: provide online links instead of/as well as local ones
+ * bts: provide new commands package, owner, noowner
+ * bts: provide cleancache command
+ * bts: expire old automatically downloaded bugs from the cache
+ * bts: fix tag command for multiple tags (closes: #215986)
+ * debchange: fix off-by-one editor line error (closes: #204512)
+ * debchange: apply Matt Zimmerman's patch to support --distribution and
+ --urgency options (closes: #197106)
+ * debdiff: allow "--move-regex from to" to use $1, ... in "to" part
+ (closes: #204114)
+ * debdiff: fix syntax error (closes: #217715)
+ * debi: fix typo so only install .debs and not .udebs (closes: #207955)
+ * debsign: fix policy-url inclusion with gnupg (closes: #204685)
+ * dpkg-depcheck: check for build-essential being installed (closes:
+ #216809)
+ * dpkg-genbuilddeps: remove comment about strace bug (closes: #212277)
+ * grep-excuses: quote package name (closes: #212476)
+ * uupdate: correct syntax error when hunting reject files (closes: #206768)
+ * uupdate: *really* accept symlink options (closes: #212253)
+ * uupdate: correct symlink comment (closes: #213590)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 27 Oct 2003 22:12:03 +0000
+
+devscripts (2.7.91) unstable; urgency=low
+
+ * debdiff: fix regex error with --move option (closes: #204113)
+ * debuild: close build log file before exiting (closes: #204076)
+ * mergechanges: use correct default filename when epochs are present
+ (closes: #195761)
+ * uupdate: fix Devscripts::Versort to not do infinite loops (closes:
+ #204192)
+ * uupdate: make -v work (closes: #204232)
+ * uupdate: handle new files introduced upstream better (closes: #197478)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 6 Aug 2003 15:27:53 +0100
+
+devscripts (2.7.90) unstable; urgency=low
+
+ * Version number: this is heading towards 2.8.0; there are several more
+ contributed scripts to add first, though.
+ * bts: add comment on from:<submitter> and src:<package> options for bts
+ bugs (closes: #155658)
+ * bts: fix clone command (closes: #185524, #201088, #201090)
+ * bts: use sensible-browser instead of trying to parse BROWSER ourselves
+ (closes: #185827)
+ * bts: add caching capabilities (closes: #188229)
+ * bts: update list of valid tags (closes: #196751, #201149)
+ * bts: fix "sumitter" typo (closes: #203162)
+ * debchange: use new upstream version number found from changelog
+ (closes: #154144, #181974)
+ * debchange: provide --closes capability (closes: #153910)
+ * debclean: added French manpage (closes: #180224)
+ * debdiff: the --move <from> <to> should not regard the <from> as a
+ regex (closes: #183930); add --move-regex which accepts regexps
+ * debit: remove script, as debian-test has been removed from unstable
+ * debuild: fix --rootcmd bug (closes: #180862)
+ * debuild: add GPG_AGENT_INFO and remove PGPPASS to default preservation
+ list (closes: #186659)
+ * debuild: log build to log file (closes: #164585)
+ * dpkg-depcheck: give -a more functionality when used in combination
+ with -b, -d or -m (closes: #143306)
+ * dpkg-depcheck: add discard-sgml-catalogs feature (closes: #147369)
+ * plotchangelog: applied Joey's patch to add -d/--dump option (closes:
+ #182878)
+ * uupdate: added some more sanity and success checks (closes: #188711)
+ * uupdate: improved option handling (closes: #145711)
+ * uupdate: provided symlink/copy option (closes: #150845)
+ * uscan: sort directories into a sensible order before we begin and add
+ some intelligence to save some work in certain cases (closes: #156434)
+ * uscan: add some variation to the exit status (closes: #192786)
+ * uscan: clarify manpage (closes: #201278)
+ * README: added dependency information (closes: #183299)
+ * NEW SCRIPT: checkbashisms (closes: #163316)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 1 Aug 2003 11:50:16 +0100
+
+devscripts (2.7.2) unstable; urgency=low
+
+ * bts: add sarge and experimental tags (closes: #170389)
+ * bts: add submitter command (closes: #172161)
+ * bts: reopen submitter name is optional (closes: #171046)
+ * debchange: handle upstream version numbers with : or - correctly
+ (closes: #174818)
+ * debpkg: Created a compiled debpkg wrapper so that suidperl is no
+ longer needed for debpkg to be suid root
+ * debdiff: Quieten interdiff check when interdiff not installed and
+ sh=dash (from #168862, now reassigned to dash)
+ * debdiff: mention interdiff in control file
+ * grep_excuses: drop email grepping, as this no longer appears in
+ update_excuses output (closes: #174300)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 1 Jan 2003 10:34:25 +0000
+
+devscripts (2.7.1) unstable; urgency=low
+
+ * The "bugfix time" release
+ * bts: support new "clone" command (closes: #141995)
+ * bts: shouldn't be noisy if no arguments received (closes: #147181)
+ * bts: browser selection code improvement (closes: #150751)
+ * debdiff: fix config file typo (closes: #149712)
+ * debpkg: untaint @ARGV to quieten perl
+ * debuild: add dpkg-checkbuilddeps command when given binary* option
+ (closes: #141159)
+ * debuild: "fakeroot :" test replaced with "fakeroot true" to work on
+ Hurd
+ * debuild: pass DEBSIGN_* environment variables (closes: #159848)
+ * debrelease: no longer collapse when a -t <host> option is given for
+ dupload
+ * debsign: remove PATH-cleaning code etc., as it actually provides no
+ security and is annoying (closes: #161509)
+ * dpkg-depcheck: Fix typo in help message (closes: #140923)
+ * dpkg-depcheck: Fix regexp (quote filename properly) (closes: #143298)
+ * uupdate: correct .orig.tar.gz handling (closes: #147657)
+ * uscan: fix to support weird dpkg version number handling
+ (closes: #159052)
+ * several perl scripts "use 5.6.0" -> "use 5.006_000" (closes: #154770)
+ * upgrade standards version (support new DEB_BUILD_OPTIONS)
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 1 Oct 2002 16:46:02 +0100
+
+devscripts (2.7.0) unstable; urgency=low
+
+ * debclean: don't remove .upload files (closes: #140161)
+ * I think it's ready enough to bump the version number!
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 31 Mar 2002 10:02:49 +0100
+
+devscripts (2.6.99) unstable; urgency=low
+
+ * debdiff: fix dsc handling on native packages (closes: #139776)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 25 Mar 2002 08:52:34 +0000
+
+devscripts (2.6.98) unstable; urgency=low
+
+ * uscan: fix handling of HTTP-proxied FTP requests (closes: #138882)
+ * uscan: add --debug features
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 24 Mar 2002 22:51:03 +0000
+
+devscripts (2.6.97) unstable; urgency=low
+
+ * debdiff: add support for comparing source packages (closes: #94908)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 17 Mar 2002 23:46:17 +0000
+
+devscripts (2.6.96) unstable; urgency=low
+
+ * uscan: typo in manpage (closes: #138486)
+ * uscan: allow per-site PASV/active selection (closes: #127646)
+ * add devscripts.1 manpage (closes: #138485)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 17 Mar 2002 12:28:53 +0000
+
+devscripts (2.6.95) unstable; urgency=low
+
+ * debuild: don't die with -tc option (closes: #138478)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 15 Mar 2002 17:14:53 +0000
+
+devscripts (2.6.94) unstable; urgency=low
+
+ * James' comment means that the procmail script can be even more
+ economical.
+ * Also correct the regexp (which would have failed in the past)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 15 Mar 2002 16:58:53 +0000
+
+devscripts (2.6.93) unstable; urgency=low
+
+ * debuild: use lintian according to DEBUILD_LINTIAN ;-) (closes: #138445)
+ * procmail examples: update for ACCEPTED messages (closes: #138460)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 15 Mar 2002 16:01:31 +0000
+
+devscripts (2.6.92) unstable; urgency=low
+
+ * debdiff: fixed syntax error (closes: #138381)
+ * debdiff: and use proper logic for wdiff exit status (closes: #138383)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 15 Mar 2002 11:17:07 +0000
+
+devscripts (2.6.91) unstable; urgency=low
+
+ * grep-excuses: fixed parsing problem (closes: #138227)
+ * uscan: fixed FTP regex
+ * uscan: chdir back to where we started between directories
+ (closes: #138232)
+ * uupdate: add (and document) bzip2 support (closes: #138247)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 14 Mar 2002 10:06:35 +0000
+
+devscripts (2.6.90) unstable; urgency=low
+
+ * Simplified whole build process.
+ * Removed broken i18n support -- if it's wanted, we can reintroduce it
+ when Perl supports a --dump-po-strings type function (or we can write
+ it manually)
+ * devscripts now has a config file! Yeah! (closes: #40729)
+ * New scripts:
+ - dpkg-depcheck (from Bill Allombert <ballombe@debian.org>)
+ - grep-excuses (closes: #129444)
+ - mergechanges (closes: #130849)
+ * bts: document BROWSER in ENVIRONMENT VARIABLES section (closes:
+ #116417)
+ * bts: accepts 'tags' as a synonym for 'tag' (closes: #113262)
+ * bts: accepts --help and --version arguments
+ * debchange: allow it to understand both dupload and dput .upload
+ formats
+ * debchange: handle EMAIL='Full Name <email@address>' (closes: #133632)
+ * debchange: now uses config variable for --preserve option
+ * debchange: introduce -d/--fromdirname option (closes: #116352)
+ * debchange: clarify --newversion explanation in manpage (closes: #137392)
+ * debclean: introduced --cleandebs option and config variable: now only
+ removes .deb etc. files if specifically requested to
+ * debdiff: fixed dirs moving around among multiple packages (closes:
+ #113151)
+ * debdiff: use configuration file
+ * debrelease: can use dput or dupload (closes: #118071)
+ * debrelease: can now handle source-only uploads
+ * debrelease: use configuration file
+ * deb[r]sign: teach it about source-only .changes files
+ * debsign: don't delete signed files if the scp to transfer them back
+ failed (thanks to Joey Hess for patch) (closes: #126395)
+ * debsign: use configuration file
+ * debuild: teach it about source-only builds (closes: #114699) and
+ binary-only builds (closes: #115168)
+ * debuild: correct -E description in usage info (closes: #126171)
+ * debuild: correct -p option handling (closes: #122870)
+ * debuild: now uses configuration file (closes: #36793)
+ * debuild: check for existence of fakeroot (closes: #137605)
+ * dpkg-genbuilddeps: now a wrapper around dpkg-depcheck. This latter
+ program can be used instead if there is a problem with strace hanging
+ on dpkg --build; simply only trace the build target.
+ * dscverify: now uses the same gpg command as katie for signature
+ verification, which has simplified the code significantly
+ * dscverify: now also check signature on .dsc file included in .changes
+ file
+ * dscverify: now uses configuration file
+ * uscan: rewrote in Perl to make handling other bugs simpler
+ * uscan: new, simpler, watch file format available, ironically also
+ allows handling of more complex http:// searches (closes: #126789)
+ * uscan: correct handling of absolute filenames (closes: #120416, #126768)
+ * uscan: verbose and non-verbose modes available (closes: #126705)
+ * uscan: report-only mode available (closes: #126705)
+ * uscan: allows choosing PASV or non-PASV (default) mode (closes: #127646)
+ * uscan: symlinks (by default) pkg_version.orig.tar.gz to downloaded
+ file (closes: #127580)
+ * uscan: now uses configuration file
+ * uupdate: correct match regexp (closes: #114798)
+ * uupdate: now uses pristine source by default (closes: #131448)
+ * debian.procmail: remove old quake list reference (closes: #136058)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 4 Feb 2002 13:00:36 +0000
+
+devscripts (2.6.4) unstable; urgency=low
+
+ * Fix postscript typo (closes: #112437)
+ * bts: add missing tags (closes: #113240)
+ * bts: fix comment handling in bts control commands (closes: #113890)
+ * plotchangelog: add -b/--bugcount option to --help output (closes:
+ #112585)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 1 Oct 2001 08:49:59 +0100
+
+devscripts (2.6.3) unstable; urgency=low
+
+ * bts: Fix typos (closes: #110519)
+ * bts: Implement esr's BROWSER spec (closes: #111061)
+ * bts: Multiple command caching, thanks to Colin Watson (closes:
+ #111066)
+ * bts: Recognise DEBEMAIL and fake From: line if it's set (closes:
+ #111148)
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 4 Sep 2001 15:24:53 +0100
+
+devscripts (2.6.2) unstable; urgency=low
+
+ * Get the build-indep -> build-arch change correct as well - D'Oh!
+ (closes: #110042)
+
+ -- Julian Gilbey <jdg@debian.org> Sat, 25 Aug 2001 22:30:17 +0100
+
+devscripts (2.6.1) unstable; urgency=low
+
+ * Build-Depends-Indep -> Build-Depends (closes: #109746)
+ * bts doesn't automatically default to w3m (closes: #109699)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 24 Aug 2001 01:53:37 +0100
+
+devscripts (2.6.0) unstable; urgency=low
+
+ * Added new "bts" script (closes: #104407)
+ * Added Ben Collins' dpkg-genbuilddeps program (note that this makes
+ this package "Architecture: any" rather than the previous
+ "Architecture: all"); unfortunately, it is currently disabled due to a
+ bug in strace (or perhaps it's in dpkg)
+ * Fix dscverify MD5 -> Digest::MD5 (required the old libmd5-perl package
+ to work correctly) (closes: #105814)
+ * Change "OK then, aborting." message in debsign (closes: #100654)
+ * Correct spelling priviledge -> privilege (closes: #101774)
+ * Improvement in uupdate tmp dir handling (thanks to Decklin Foster)
+ (closes: #106057)
+ * dscverify now accepts local keyrings (closes: #98431)
+ * Fixed plotchangelog bugs (closes: #102416, #102417)
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 21 Aug 2001 20:27:53 +0100
+
+devscripts (2.5.30) unstable; urgency=low
+
+ * Remove /etc/upload.sites if it still exists.
+ * Correct use of $! in perl scripts (closes: #97185)
+ * Add wdiff recommendation in control file for debdiff (closes: #94907)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 6 Jun 2001 16:02:08 +0100
+
+devscripts (2.5.29) unstable; urgency=medium
+
+ * And do all of the other debian.procmail security regex's while we're
+ at it.
+
+ -- Julian Gilbey <jdg@debian.org> Sat, 5 May 2001 22:51:04 +0100
+
+devscripts (2.5.28) unstable; urgency=medium
+
+ * Fix security hole in debian.procmail example: replace [^@] regex by
+ something more restrictive (reported by Shane Wegner <shane@debian.org>)
+
+ -- Julian Gilbey <jdg@debian.org> Sat, 5 May 2001 22:28:20 +0100
+
+devscripts (2.5.27) unstable; urgency=low
+
+ * debdiff: compares control files in more situations (closes: #94562)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 20 Apr 2001 17:30:43 +0100
+
+devscripts (2.5.26) unstable; urgency=low
+
+ * Fixed debdiff; added wdiff formatting options
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 17 Apr 2001 11:04:23 +0100
+
+devscripts (2.5.25) unstable; urgency=low
+
+ * Fixed plotchangelog bugs (closes: #93204, #93205)
+ * Enhanced debdiff (closes: #58459, #59827, #79952): can now diff
+ control files and see which files have moved between packages (not
+ perfect, but pretty good)
+ * dch aborts if the temporary changelog is not modified (mtime check) --
+ patch by Colin Watson <cjw44@flatline.org.uk> (closes: #72237)
+ * Improve forward.exim (master.procmail was already done) (closes: #78474)
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 17 Apr 2001 09:42:55 +0100
+
+devscripts (2.5.24) unstable; urgency=low
+
+ * Improve debpkg error handling with no options given
+ * debsign should exit with status 0 if signed file is not resigned
+ (closes: #92833)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 4 Apr 2001 18:24:39 +0100
+
+devscripts (2.5.23) unstable; urgency=low
+
+ * Fix uscan to handle funny HTML hrefs (closes: #89749)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 2 Apr 2001 01:01:26 +0100
+
+devscripts (2.5.22) unstable; urgency=low
+
+ * Remove dependency on gettext; there are no translations for this
+ package to date, and no easy ways of generating the needed message
+ files (closes: #92167)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 30 Mar 2001 15:45:31 +0100
+
+devscripts (2.5.21) unstable; urgency=low
+
+ * Introduced --set-envvar option to debuild (might close #88586)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 5 Mar 2001 15:58:59 +0000
+
+devscripts (2.5.20) unstable; urgency=low
+
+ * Modified README to refer to dpkg-statoverride instead of suidmanager
+ * debsign: Add -e option (closes: #85847)
+ * debsign: lots of improvements to bring it into line with current
+ dpkg-buildpackage
+ * Modified package description to list dependencies of each script
+ * Removed dependency on ftp (and ftp-ssl should Provide: ftp)
+ (closes: #86765)
+ * Updated for new Perl setup; changed source dependencies to cope
+ * Standards version 3.5.2
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 25 Feb 2001 14:21:01 +0000
+
+devscripts (2.5.19) unstable; urgency=low
+
+ * Quote package name in regexps (closes: #85566)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 11 Feb 2001 22:49:28 +0000
+
+devscripts (2.5.18) unstable; urgency=low
+
+ * Correct /bin/sh -> /bin/bash in shell scripts; broke due to my
+ configure script using the shell variable BASH, which was /bin/sh when
+ /bin/sh was linked to bash. Oops. (closes: #85089)
+ * Correct debchange directory renaming behaviour (closes: #78468)
+ * Correct ~ -> $HOME in debrsign (closes: #81147)
+ * Changed tar I -> tar --bzip2 in uupdate (closes: #81507)
+ * Corrected uscan.1 (thanks to Jim Van Zandt) (closes: #83095)
+ * debchange: sets urgency to low automatically (closes: #83584)
+ * debclean: Correct directory changing (closes: #84309)
+ * Conflict with old suidmanager
+ * debchange: --help should never fail! (closes: #78383)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 7 Feb 2001 10:47:28 +0000
+
+devscripts (2.5.17) unstable; urgency=low
+
+ * debuild: Allow through DEB_* and GNUPGHOME environment
+ variables. (Closes: #77822)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 14 Dec 2000 12:03:56 +0000
+
+devscripts (2.5.16) unstable; urgency=low
+
+ * debdiff: Set locale to C before doing parsed dpkg-deb call
+ (closes: #68325 again)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 11 Dec 2000 23:07:07 +0000
+
+devscripts (2.5.15) unstable; urgency=low
+
+ * Correct debsign typo -- oops! (closes: #79366)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 11 Dec 2000 22:17:55 +0000
+
+devscripts (2.5.14) unstable; urgency=low
+
+ * master.procmail: add -oi option to sendmail invocation
+ * debdiff: attempt to fix hardlinks problem (closes: #68325)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 10 Dec 2000 23:50:35 +0000
+
+devscripts (2.5.13) unstable; urgency=low
+
+ * debsign: Fix manpage (line beginning with dot disappeared)
+ (closes: #76984)
+ * debsign: Give explanatory warning message about RSA(REF) extensions if
+ gpg fails, due to silly/paranoid gpg exit values (closes: #75677)
+ * debsign: use new Changed-By field if it exists (closes: #77226)
+ * deb(r)sign: now allows signing of just a .dsc file (closes: #77822)
+ * dch: Use more intelligent way of determining name and email address
+ (thanks to Roderick Schertler, roderick@argon.org; closes: #63764)
+ * uscan: Use binary mode for ftp (closes: #67336)
+ * uscan: Use passive mode for ftp (closes: #68539)
+ * parsechangelog: put in check for libtimedate-perl package and issue
+ meaningful error message if not found (closes: #67710)
+ * master.procmail: prevent looping (closes: #65256)
+
+ -- Julian Gilbey <jdg@debian.org> Sat, 9 Dec 2000 23:53:23 +0000
+
+devscripts (2.5.12) unstable; urgency=low
+
+ * dscverify: Correct test for --help, --version to be *after* test for
+ no arguments
+ * uupdate: allow .tar.bz2 archive files (but not yet for pristine
+ source; will do soon, once I've upgraded to woody and dpkg is ready
+ for it) (closes: #64113)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 22 May 2000 13:55:38 +0100
+
+devscripts (2.5.11) unstable; urgency=low
+
+ * Fix checkgettext.pm so it actually works when liblocale-gettext-perl
+ is not installed (conflict with POSIX module)
+ * Modify dscverify to see the keyrings on ftp-master as well as on
+ master.
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 22 May 2000 10:27:26 +0100
+
+devscripts (2.5.10) unstable; urgency=low
+
+ * Fix debsign to check for $GNUPGHOME as well as ~/.gnupg (closes bug
+ reported by Gerfried Fuchs <alfie@innocent.com>)
+ * Fix debian-test script to work with new version of debian-test
+ (closes: #51527)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 11 May 2000 12:04:29 +0100
+
+devscripts (2.5.9) unstable; urgency=low
+
+ * Change Getopt::Long::config back to Getopt::Long::Configure in dch as
+ this is a woody package, and I am not going to worry about slink
+ compliance any longer.
+ * debsign checks to see whether the .dsc file has already been signed
+ (closes: #54963)
+ * Fixed scp bug when changes file name is given relative to remote home
+ directory (closes: #61504)
+ * Corrected help message in debc (closes: #61541)
+ * Changed dupload recommends to suggests; all package maintainers will
+ have dupload installed anyone, one would presume (closes: #57847)
+ * Removed recommendations etc on netstd and perl(-suid) from the control
+ file as their replacements are already standard in potato.
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 4 Apr 2000 17:45:18 +0100
+
+devscripts (2.5.8) frozen unstable; urgency=low
+
+ * Correct debdiff to allow 2 *.changes files (closes: #58458)
+ (RM: this is an important bug)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 13 Mar 2000 23:37:05 +0000
+
+devscripts (2.5.7) unstable; urgency=low
+
+ * Remove install-stamp from debian/rules
+ * Change Getopt::Long::Configure to Getopt::Long::config in dch to allow
+ the package to still work in slink (closes: #51442)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 1 Dec 1999 00:50:44 +0000
+
+devscripts (2.5.6) unstable; urgency=low
+
+ * Correct debuild bug. Again. This regexp is getting silly ;)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 24 Nov 1999 09:28:44 +0000
+
+devscripts (2.5.5) unstable; urgency=low
+
+ * Correct debuild to only pass -spgp and -sgpg options to debsign, not
+ -sa and suchlike (closes: #51065)
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 23 Nov 1999 12:18:47 +0000
+
+devscripts (2.5.4) unstable; urgency=low
+
+ * Added perl shebang test to debian-test suite
+ * Recompile to correct perl shebang line (closes: #51039 and all other
+ reports about the same thing!)
+ * Preserve DEB_BUILD_OPTIONS (request from Joseph Carter)
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 23 Nov 1999 11:19:12 +0000
+
+devscripts (2.5.3) unstable; urgency=low
+
+ * Correct uupdate syntax error (closes: #50881)
+ * Correct debsign regexp error again! (closes: #50877)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 22 Nov 1999 18:24:00 +0000
+
+devscripts (2.5.2) unstable; urgency=low
+
+ * Fixed debrelease back in version 2.5.0 to pass on options to dupload,
+ but forgot to say so.
+ * All of the programs which look for a .changes file now accept the
+ dpkg-buildpackage/dpkg-architecture -a and -t options (again, done in
+ 2.5.0)
+ * Correct 'eq' -> '-eq' in test command (and it's the third time I've
+ made that mistake in as many days...) (closes: #50549)
+ * Added a simple debian-test script to check that I get the version
+ numbering right....
+ * Added build dependecies (which wasn't really that hard...)
+ * Correct debdiff problem: forgot to chdir back after looking at first
+ changes file
+ * debit now runs debian-test *without* su nobody; I believe that it is
+ the responsibility of the test programs themselves to handle choosing
+ their userid
+ * Correct handling of .changes file entries when package is in
+ non-US/main/libs or suchlike (really closes: #50281)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 19 Nov 1999 01:50:32 +0000
+
+devscripts (2.5.1) unstable; urgency=low
+
+ * Cleaned up Makefile.am
+ * Small correction to mustsetvar logic in uscan
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 16 Nov 1999 21:44:26 +0000
+
+devscripts (2.5.0) unstable; urgency=low
+
+ * Add -m option to deb(r)sign to parallel the behaviour of
+ dpkg-buildpackage; this is obviously desirable, and necessary to
+ * make sure that debuild pays attention to any -m, -k, -p or -s options
+ given to dpkg-buildpackage when calling debsign (should close #50281),
+ and
+ * make debsign sign the right .changes file! (closes: #50134)
+ * Teach debdiff to fully handle potato version of dpkg -c output
+ * Make debdiff able to handle .changes files as well as just single .deb
+ files
+ * Make debdiff Perl more idiomatic
+ * Allow deb[ic] to handle multiple binary packages by parsing .changes
+ file (closes: #33699)
+ * Merged deb[ic] into one file, as their functionality is almost
+ identical
+ * Corrected a few more occurrences of manually parsing changelogs (which
+ I should have done when correcting bug #43082)
+ * Add Joey's plotchangelog program (closes: #50150)
+ * Added a README.i18n file
+ * Added James R. Van Zandt's debit script, merged into a single script
+ with debi.
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 16 Nov 1999 02:41:57 +0000
+
+devscripts (2.4.6) unstable; urgency=low
+
+ * Rebuild with correct Perl paths
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 12 Nov 1999 02:26:42 +0000
+
+devscripts (2.4.5) unstable; urgency=low
+
+ * Remove references to libtricks package from descriptions (close:
+ #49937, even though I made the correction the day before the bug
+ report arrived!)
+ * Only suggest gnupg rather that recommend (closes: #49882)
+ * s/sprint/sprintf/ in dscverify (closes: #49721)
+ * Add --version and --help options to all programs (and this effectively
+ closes: #49554)
+ * Add long options to all programs except for deb(r)sign, as the options
+ there match those in dpkg-buildpackage (closes: #41850)
+ * No longer suggest PGP, as GNU Privacy Guard with the requisite
+ extensions should be sufficient
+ * Correct debdiff to take account of new format of dpkg-deb -c output
+ (and why did it change?)
+ * Make sure debian/rules clean really does that (error in Makefile.am)
+ * Rewrite of internals of debuild in several places, especially with
+ regard to -r handling. Much nicer logic now.
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 12 Nov 1999 01:49:40 +0000
+
+devscripts (2.4.4) unstable; urgency=low
+
+ * Correct spurious debian/changelog.dch error message (closes: #49435)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 7 Nov 1999 18:02:07 +0000
+
+devscripts (2.4.3) unstable; urgency=low
+
+ * Add ssh | ssh-nonfree suggest (forgot when adding remote signing
+ capabilities to deb(r)sign in 2.4.[01])
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 7 Nov 1999 02:37:17 +0000
+
+devscripts (2.4.2) unstable; urgency=low
+
+ * Change netstd dependency to netstd (<<3.07-8) | ftp dependency
+ (closes: #49322, #49331)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 7 Nov 1999 02:24:43 +0000
+
+devscripts (2.4.1) unstable; urgency=low
+
+ * Added remote changes file functionality to debsign
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 4 Nov 1999 01:09:13 +0000
+
+devscripts (2.4.0) unstable; urgency=low
+
+ * Use Edward Betts' procmailrc examples files
+ * Suggest perl5-suid | perl-suid instead of perl-suid (closes: #42873)
+ * Corrected debchange to handle all sorts of version numbers, and to
+ use dpkg-parsechangelog for correctness (closes: #43082)
+ * Corrected dscverify: use POSIX and don't have barewords (closes: #45858)
+ * Renamed signchanges to debsign
+ * Allowed .changes name to be determined automatically by debsign
+ * Added debrsign program (closes: #44051)
+ * Cleaned up shebang lines
+ * Corrected uscan to allow absolute links (closes: #45672)
+ * Make ftp connections passive (closes: #46193)
+ * Corrected extraneous directory changing (closes: #46645)
+ * Use dpkg-parsechangelog to determine package name and version in
+ uupdate (closes: #47402)
+ * Make pgp/gpg choice of debsign behave in the same way as
+ dpkg-buildpackage.
+ * dscverify now uses GPG and will need an RSA extension to check PGP
+ signatures
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 28 Oct 1999 16:39:42 +0100
+
+devscripts (2.3.9) unstable; urgency=low
+
+ * Correct gpg signchanges patch (closes: #42188, thanks to Adam Heath)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 8 Aug 1999 10:05:34 +0100
+
+devscripts (2.3.8) unstable; urgency=low
+
+ * Changed perl5 dependency to perl5 | perl (closes: #42329)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 4 Aug 1999 10:32:39 +0100
+
+devscripts (2.3.7) unstable; urgency=low
+
+ * Correct html patch (closes: #41986)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 28 Jul 1999 00:37:59 +0100
+
+devscripts (2.3.6) unstable; urgency=low
+
+ * Corrected Makefile.am bug which makes all Perl scripts begin #! @PERL@
+ -- ouch!! (closes: #41846, part of #41850)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 25 Jul 1999 02:12:37 +0100
+
+devscripts (2.3.5) unstable; urgency=low
+
+ * Change Suggests: libmd5-perl to libdigest-md5-perl
+ * Incorporated Joseph Carter's gpg patch to signchanges (closes: #40727)
+ * Incorporated Raphael Hertzog's patch to not depend on
+ liblocale-gettext-perl (closes: #40596)
+ * Applied Piotr Roszatycki's patch to allow uscan to use http://
+ prefixed locations (closes: #41272)
+
+ -- Julian Gilbey <jdg@debian.org> Fri, 23 Jul 1999 09:24:53 +0100
+
+devscripts (2.3.4) unstable; urgency=low
+
+ * Change perl dependency to perl5 dependency
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 1 Jul 1999 23:02:33 +0100
+
+devscripts (2.3.3) unstable; urgency=low
+
+ * Corrected debpkg manpage (closes: #40279)
+ * Remove dependency on dupload (closes: #40382)
+ * Add -p (preserve directory name) option to dch (closes: #39385)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 1 Jul 1999 02:54:24 +0100
+
+devscripts (2.3.2) unstable; urgency=low
+
+ * More corrections to uscan, with thanks to Thomas Quinot. Closes:
+ #40227
+ * Added -e/-E options to debuild (closes: #40071)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 27 Jun 1999 03:00:22 +0100
+
+devscripts (2.3.1) unstable; urgency=low
+
+ * Really fix bug#38798 this time: versort and uscan now work correctly
+ together
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 22 Jun 1999 00:45:52 +0100
+
+devscripts (2.3.0) unstable; urgency=low
+
+ * Reinstated the release script (renamed as debrelease) (closes #34122)
+ * dch can now determine (in conjunction with dupload 2.1) whether or not
+ to increment the version number without needing an explicit option
+ (closes #34130)
+ * Internationalisation of the package
+ * Correct the (internal) versort library file description (closes:
+ #38798)
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 22 Jun 1999 00:45:39 +0100
+
+devscripts (2.2.7) unstable; urgency=low
+
+ * signchanges now correctly handles signing binary-only changes files
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 31 May 1999 22:35:20 +0100
+
+devscripts (2.2.6) unstable; urgency=low
+
+ * Corrected silly dscverify bug so it now works with filenames with no
+ directory components -- duh! (closes: #38065)
+ * Corrected perl regexp in signchanges so it now finds the dsc file
+ (closes: #38049)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 23 May 1999 16:44:32 +0100
+
+devscripts (2.2.5) unstable; urgency=high
+
+ * Now only recommend fakeroot (and not libtricks) to alleviate grave
+ bug #37592 against dpkg
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 13 May 1999 01:45:02 +0100
+
+devscripts (2.2.4) unstable; urgency=low
+
+ * debchange/dch now looks for environment variable DEBEMAIL before
+ EMAIL (closes: #37199)
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 5 May 1999 23:55:15 +0100
+
+devscripts (2.2.3) unstable; urgency=low
+
+ * Correct debdiff Perl error and inconsistency
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 4 May 1999 05:01:17 +0100
+
+devscripts (2.2.2) unstable; urgency=low
+
+ * Fixed signchanges to die if PGP fails, rather than to wipe the
+ unsigned .changes file (closes: #36625)
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 27 Apr 1999 01:57:57 +0100
+
+devscripts (2.2.1) unstable; urgency=low
+
+ * Correct copyright notice in debdiff.1
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 21 Apr 1999 02:10:59 +0100
+
+devscripts (2.2.0) unstable; urgency=low
+
+ * Merged Yann's debdiff manpage with my attempt; bumping up the minor
+ number because of the new program
+ * Simplified debdiff's exit values
+ * debdiff is now licensed under version 2 of the GPL, rather than
+ version 2 or later
+ * Modified debchange/dch to always use the current date at the end of
+ the changelog section, even when adding an entry
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 19 Apr 1999 20:00:34 +0100
+
+devscripts (2.1.6) unstable; urgency=low
+
+ * Modify debdiff to ignore the destinations of symlinks
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 13 Apr 1999 23:44:47 +0100
+
+devscripts (2.1.5) unstable; urgency=low
+
+ * Now only Suggests: rather than Recommend: perl-suid (closes: #35635)
+ * Added Roderick's patch to dscverify, and added a change directory
+ feature of my own: a .changes file may be in any directory, and the
+ program will cd to that directory before trying to read any files
+ (closes: #34255)
+ * Added a rewritten, Perl version, of Yann Dirson's debdiff script
+ (closes: #34781)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 12 Apr 1999 22:50:44 +0100
+
+devscripts (2.1.4) unstable; urgency=low
+
+ * Modify versort to be locale-independent, matching the corresponding
+ expected change in dpkg
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 3 Mar 1999 01:10:37 +0000
+
+devscripts (2.1.3) unstable; urgency=low
+
+ * Removed CVS files from .orig.tar.gz file!
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 25 Feb 1999 19:57:50 +0000
+
+devscripts (2.1.2) unstable; urgency=low
+
+ * Made debpkg pick up gid root as well as uid root
+
+ -- Julian Gilbey <jdg@debian.org> Tue, 23 Feb 1999 18:08:23 +0000
+
+devscripts (2.1.1) unstable; urgency=low
+
+ * Moved package from utils to devel (closes: #33410)
+
+ -- Julian Gilbey <jdg@debian.org> Sun, 21 Feb 1999 00:52:26 +0000
+
+devscripts (2.1.0) unstable; urgency=low
+
+ * Correct README to refer to libtricks package rather than fakeroot
+ package (closes: #32736)
+ * Modify uupdate to accept a -u argument to keep an Upstream pristine
+ source (closes: #32680, #12443); bump up the minor version number for
+ this
+ * A few other miscellaneous bug fixes to uupdate to be stricter about
+ seeming problems
+ * Added a new program: signchanges for signing a .changes/.dsc pair
+ without needing any of the rest of the source or binary files to be
+ present; this is useful for when a developer must build a package on
+ a machine other than the one on which he is signing
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 3 Feb 1999 02:31:15 +0000
+
+devscripts (2.0.6) unstable; urgency=low
+
+ * Updated man page for uupdate to reflect change in 2.0.5
+
+ -- Julian Gilbey <jdg@debian.org> Wed, 20 Jan 1999 12:44:11 +0000
+
+devscripts (2.0.5) unstable; urgency=low
+
+ * Made test invocations POSIX compliant by removing -a connectives
+ * Uupdate now also accepts an absolute filename (closes: #31884)
+ * Allowed debuild to accept a space after the -r option
+ * More checks in uupdate to make it more robust
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 18 Jan 1999 16:51:16 +0000
+
+devscripts (2.0.4) unstable; urgency=low
+
+ * Changed control file to refer to package libtricks rather than old
+ name fakeroot (spotted by Edward Betts)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 11 Jan 1999 00:24:02 +0000
+
+devscripts (2.0.3) unstable; urgency=medium
+
+ * Second attempt at correcting critical /tmp security bug (thanks to
+ Joey Hess!)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 7 Jan 1999 22:46:01 +0000
+
+devscripts (2.0.2) unstable; urgency=low
+
+ * Disallow debchange and uupdate from being run by root or setuid; this
+ prevents possible /tmp exploits (Spotted by Joey Hess)
+ * Use the TMPDIR environment variable instead of /tmp if it is set
+ (requested by Zephaniah E, Hull)
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 7 Jan 1999 21:56:11 +0000
+
+devscripts (2.0.1) unstable; urgency=low
+
+ * Corrected silly LIBDIR bug in uscan
+ * Corrected missing newline characted in debchange
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 7 Jan 1999 18:24:58 +0000
+
+devscripts (2.0.0) unstable; urgency=low
+
+ * New maintainer
+ * Standards: 2.5.0.0
+ * New version numbering scheme: major.minor.patchlevel
+ * Changed the name of build to debuild. build now just prints an error
+ message and will disappear completely in the near future.
+ * Correct handling of epochs in debc, debi and release (closes: #29855)
+ * Use environment variables EDITOR, then VISUAL, and failing that,
+ /usr/bin/editor in accordance with policy 5.3 (except that VISUAL is
+ not mentioned there) (closes: #28605)
+ * Many modifications to uscan: it now compares version numbers
+ correctly, using a Perl script which works in a similar way to
+ dpkg --compare-versions, and it no longer has the extra 0 bug
+ (closes: #19235, #19467); it no longer uses ncftp but only ftp
+ (closes: #20968)
+ * uscan now expects the watch file to explicitly indicate how to deduce
+ the version number from the filename, by writing the filename as a
+ Perl regular expression and enclosing the version number part in (...)
+ * uupdate now allows a version number as an argument after the archive
+ filename, allowing it to work in harmony with uscan (closes: #20278)
+ * uupdate no longer tries to remove *.orig files, as the only ones which
+ are created by GNU patch are those where the patch failed, and we
+ probably _want_ to keep those (closes: #25774)
+ * build rewritten in Perl (now called debuild); has a nicer handling of
+ command line options (can accept a -r option with one of binary etc.,
+ and doesn't need an explicit -r option if there are other
+ dpkg-buildpackage options) (closes: #27752)
+ * debpkg rewritten in Perl as well
+ * This package is now an Architecture: all package as there are no
+ binaries left
+ * debchange now uses the last distributions mentioned in the changelog
+ as the default for the new version (closes: #30204)
+ * debchange now uses the environment variables DEBFULLNAME and EMAIL as
+ the uploader's details if these are set
+ * release has been deprecated in favour of dupload, and now just prints
+ a message suggesting the use of dupload instead (Closes: #29826,
+ #29978)
+ * The debchange command line options have been changed. debchange no
+ longer pays attention to the presence of a RELEASED file. The -i
+ option is for Increasing the Debian release number; the -a option is
+ for Appending to the current version, and the -v option specifies a
+ specific version number. One of these is mandatory
+ * Debchange now adds new changelog entries to the END of the current
+ section, rather than the beginning
+ * Improved logic of upgrading the Debian release number in debchange
+ * Debchange does not supply a release number if there is an explicit
+ version number provided
+ * Now debchange works on a version of the changelog in /tmp and only
+ overwrites the current changelog if everything is OK; this is much
+ safer than the original version. Also, all system calls have their
+ return status checked
+ * release and build now print error messages suggesting their
+ replacements
+ * debuild now runs lintian by default if it is installed; there is an
+ override facility etc., as described in the manpage (Closes: #18254)
+ * Added Roderick Schertler's dscverify program to devscripts
+ * Rewrote many bits of many man pages
+ * debian/rules and Makefile modified to use debhelper
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 7 Jan 1999 02:46:04 +0000
+
+devscripts (1.7.1) frozen unstable; urgency=medium
+
+ * Corrected file permissions (Closes: #31447)
+
+ -- Julian Gilbey <jdg@debian.org> Mon, 4 Jan 1999 10:29:19 +0000
+
+devscripts (1.7) frozen unstable; urgency=low
+
+ * Changed uupdate to be more choosy about the version numbers
+ automatically recognised (Closes: #30838)
+ * New maintainer
+
+ -- Julian Gilbey <jdg@debian.org> Thu, 24 Dec 1998 13:07:13 +0000
+
+devscripts (1.6) unstable; urgency=low
+
+ * #23098 build manpage update
+ * #23097 build: Preserve FAKEROOTKEY
+ * #19172 remove description for deblint
+ * #18564 depend on mailx
+ * #14314 release: epochs work now.
+ * #18498 conffiles are now absolute
+ * #24455 #24074 release: new scp requires -q option
+
+ -- Christoph Lameter <clameter@debian.org> Sat, 11 Jul 1998 21:45:47 -0700
+
+devscripts (1.5) unstable; urgency=low
+
+ * #18235: build checks for executable bit on debian/rules and sets it if
+ not set before building package. build fails when debian/rules is not
+ present.
+
+ -- Christoph Lameter <clameter@debian.org> Sun, 15 Feb 1998 20:01:09 -0800
+
+devscripts (1.4) unstable; urgency=low
+
+ * Upgrade to 2.4.0.0
+ * remove deblint from the package since there is now lintian which is much
+ better.
+
+ -- Christoph Lameter <clameter@debian.org> Sat, 14 Feb 1998 14:37:42 -0800
+
+devscripts (1.3) unstable; urgency=low
+
+ * build: change default path. Remove sbin dirs add /usr/local/bin
+
+ -- Christoph Lameter <clameter@debian.org> Wed, 4 Feb 1998 13:07:04 -0800
+
+devscripts (1.2) unstable; urgency=low
+
+ * Fix a problem with anonymous ftp upload of larger lists of files.
+ * Remove ftp.fuller.edu and lalug.org upload queue since they no longer exist.
+ * Add anonymous ftp type upload capability.
+ * Add third party site upload capability.
+ * Add debs.fuller.edu site information
+
+ -- Christoph Lameter <clameter@debian.org> Tue, 2 Dec 1997 12:53:18 -0800
+
+devscripts (1.1) unstable; urgency=low
+
+ * Remove release fix for epochs introduced in 1.0 since it breaks lots of
+ things until I figure out what is wrong.
+ * Drop dependency on fileutils.
+
+ -- Christoph Lameter <clameter@debian.org> Wed, 29 Oct 1997 17:14:26 -0800
+
+devscripts (1.0) unstable; urgency=low
+
+ * release: Make scp not ask anything so release does not hang when scp
+ wants a password.
+ * #13908 Try to fix release so that it handles epochs.
+ * #13681 Fix manpage for release to indicate that no annoucements will be
+ generated when dupload is used.
+ * #13777 no longer use printf in debchange (dch)
+ * #13846 Output Format of release changed
+ * Suggest fakeroot
+ * Split off from debmake
+ * Update documentation
+
+ -- Christoph Lameter <clameter@debian.org> Mon, 20 Oct 1997 21:02:27 -0700
--- /dev/null
+Source: devscripts
+Section: devel
+Priority: optional
+Maintainer: Devscripts Devel Team <devscripts-devel@lists.alioth.debian.org>
+Uploaders: James McCoy <jamessan@debian.org>,
+ Martin Zobel-Helas <zobel@debian.org>,
+ Patrick Schoenfeld <schoenfeld@debian.org>,
+ Ryan Niebur <ryanryan52@gmail.com>,
+ Benjamin Drung <bdrung@debian.org>
+Standards-Version: 3.9.5
+Build-Depends: debhelper (>= 9),
+ docbook-xsl,
+ file,
+ libdistro-info-perl,
+ libfile-desktopentry-perl,
+ libparse-debcontrol-perl,
+ libtimedate-perl,
+ liburi-perl,
+ libwww-perl,
+ lsb-release,
+ perl,
+ po4a (>= 0.40),
+ pylint,
+ python3-all,
+ python3-debian (>= 0.1.15),
+ python3-magic,
+ python3-setuptools,
+ shunit2 (>= 2.1.6),
+ unzip,
+ wdiff,
+ xsltproc,
+ xz-utils,
+ zip
+XS-Testsuite: autopkgtest
+Vcs-Browser: https://anonscm.debian.org/gitweb/?p=collab-maint/devscripts.git
+Vcs-Git: git://anonscm.debian.org/collab-maint/devscripts.git
+
+Package: devscripts
+Architecture: any
+Multi-Arch: foreign
+Depends: dpkg-dev (>= 1.16.4),
+ ${misc:Depends},
+ ${perl:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends}
+Recommends: at,
+ dctrl-tools,
+ dput | dupload,
+ fakeroot,
+ file,
+ gnupg,
+ libdistro-info-perl,
+ libencode-locale-perl,
+ libjson-perl,
+ libparse-debcontrol-perl,
+ liburi-perl,
+ libwww-perl,
+ lintian,
+ man-db,
+ patch,
+ patchutils,
+ python3-debian (>= 0.1.15),
+ python3-magic,
+ sensible-utils,
+ strace,
+ unzip,
+ wdiff,
+ wget | curl,
+ xz-utils,
+ ${vendor:Recommends}
+Suggests: bsd-mailx | mailx,
+ build-essential,
+ cvs-buildpackage,
+ debbindiff,
+ devscripts-el,
+ gnuplot,
+ gpgv,
+ libauthen-sasl-perl,
+ libfile-desktopentry-perl,
+ libnet-smtp-ssl-perl,
+ libterm-size-perl,
+ libtimedate-perl,
+ libyaml-syck-perl,
+ mutt,
+ ssh-client,
+ svn-buildpackage,
+ w3m,
+ ${vendor:Suggests}
+Breaks: ubuntu-dev-tools (<< 0.147~)
+Replaces: ubuntu-dev-tools (<< 0.124~)
+Description: scripts to make the life of a Debian Package maintainer easier
+ Contains the following scripts, dependencies/recommendations shown in
+ brackets afterwards:
+ .
+ - annotate-output: run a command and prepend time and stream (O for stdout,
+ E for stderr) for every line of output
+ - archpath: print tla/Bazaar package names [tla | bazaar]
+ - bts: a command-line tool for manipulating the BTS [www-browser,
+ libauthen-sasl-perl, libnet-smtp-ssl-perl, libsoap-lite-perl, libwww-perl,
+ bsd-mailx | mailx]
+ - build-rdeps: search for all packages that build-depend on a given package
+ [dctrl-tools]
+ - chdist: tool to easily play with several distributions [dctrl-tools]
+ - checkbashisms: check whether a /bin/sh script contains any common
+ bash-specific contructs
+ - cowpoke: upload a Debian source package to a cowbuilder host and build it,
+ optionally also signing and uploading the result to an incoming queue
+ [ssh-client]
+ - cvs-debi, cvs-debc: wrappers around debi and debc respectively (see below)
+ which allow them to be called from the CVS working directory
+ [cvs-buildpackage]
+ - cvs-debrelease: wrapper around debrelease which allows it to be called
+ from the CVS working directory [cvs-buildpackage, dupload | dput,
+ ssh-client]
+ - cvs-debuild: wrapper for cvs-buildpackage to use debuild as its package
+ building program [cvs-buildpackage, fakeroot, lintian, gnupg]
+ - dcmd: run a given command replacing the name of a .changes or .dsc file
+ with each of the files referenced therein
+ - dcontrol: remotely query package and source control files for all Debian
+ distributions [liburl-perl, libwww-perl]
+ - dd-list: given a list of packages, pretty-print it ordered by maintainer
+ - debc: display the contents of just-built .debs
+ - debchange/dch: automagically add entries to debian/changelog files
+ [libdistro-info-perl, libparse-debcontrol-perl, libsoap-lite-perl]
+ - debcheckout: checkout the development repository of a Debian package
+ - debclean: clean a Debian source tree [fakeroot]
+ - debcommit: commit changes to cvs, darcs, svn, svk, tla, bzr, git, or hg,
+ basing commit message on changelog [cvs | darcs | subversion | svk | tla |
+ bzr | git-core | mercurial, libtimedate-perl]
+ - debdiff: compare two versions of a Debian package to check for
+ added and removed files. Use the debbindiff package for deep comparisons.
+ [wdiff, patchutils]
+ - debi: install a just-built package
+ - debpkg: dpkg wrapper to be able to manage/test packages without su
+ - debrelease: wrapper around dupload or dput [dupload | dput, ssh-client]
+ - debsign, debrsign: sign a .changes/.dsc pair without needing any of
+ the rest of the package to be present; can sign the pair remotely
+ or fetch the pair from a remote machine for signing [gnupg,
+ debian-keyring, ssh-client]
+ - debsnap: grab packages from http://snapshot.debian.org [libwww-perl,
+ libjson-perl]
+ - debuild: wrapper to build a package without having to su or worry
+ about how to invoke dpkg to build using fakeroot. Also deals
+ with common environment problems, umask etc. [fakeroot, lintian, gnupg]
+ - deb-reversion: increase a binary package version number and repacks the
+ package, useful for porters and the like
+ - dep3changelog: generate a changelog entry from a DEP3-style patch header
+ - desktop2menu: given a freedesktop.org desktop file, generate a skeleton
+ for a menu file [libfile-desktopentry-perl]
+ - dget: download Debian source and binary packages [wget | curl]
+ - diff2patches: extract patches from a .diff.gz file placing them under
+ debian/ or, if present, debian/patches [patchutils]
+ - dpkg-depcheck, dpkg-genbuilddeps: determine the packages used during
+ the build of a Debian package; useful for determining the Build-Depends
+ control field needed [build-essential, strace]
+ - dscextract: extract a single file from a Debian source package [patchutils]
+ - dscverify: verify the integrity of a Debian package from the
+ .changes or .dsc files [gnupg, debian-keyring, libdigest-md5-perl]
+ - edit-patch: add/edit a patch for a source package and commit the changes
+ [quilt | dpatch | cdbs]
+ - getbuildlog: download package build logs from Debian auto-builders [wget]
+ - grep-excuses: grep the update_excuses.html file for your packages
+ [libterm-size-perl, wget, w3m]
+ - licensecheck: attempt to determine the license of source files
+ - list-unreleased: search for unreleased packages
+ - manpage-alert: locate binaries without corresponding manpages [man-db]
+ - mass-bug: mass-file bug reports [bsd-mailx | mailx]
+ - mergechanges: merge .changes files from the same release but built
+ on different architectures
+ - mk-build-deps: given a package name and/or control file, generate a binary
+ package which may be installed to satisfy the build-dependencies of the
+ given package [equivs]
+ - mk-origtargz: rename upstream tarball, optionally changing the compression
+ and removing unwanted files [unzip, xz-utils, file]
+ - namecheck: check project names are not already taken
+ - nmudiff: mail a diff of the current package against the previous version
+ to the BTS to assist in tracking NMUs [patchutils, mutt]
+ - origtargz: fetch the orig tarball of a Debian package from various sources,
+ and unpack it
+ - plotchangelog: view a nice plot of the data in a changelog file
+ [libtimedate-perl, gnuplot]
+ - pts-subscribe: subscribe to the PTS for a limited period of time
+ [bsd-mailx | mailx, at]
+ - rc-alert: list installed packages which have release-critical bugs
+ [wget | curl]
+ - rmadison: remotely query the Debian archive database about packages
+ [liburi-perl, wget | curl]
+ - sadt: run DEP-8 tests [python3-debian]
+ - suspicious-source: output a list of files which are not common source
+ files [python3-magic]
+ - svnpath: print Subversion repository paths [subversion]
+ - tagpending: run from a Debian source tree and tag bugs that are to be
+ closed in the latest changelog as pending [libsoap-lite-perl]
+ - transition-check: check a list of source packages for involvement in
+ transitions for which uploads to unstable are currently blocked
+ [libwww-perl, libyaml-syck-perl]
+ - uscan: scan upstream sites for new releases of packages [gpgv, gnupg,
+ liblwp-protocol-https-perl, libwww-perl, unzip, xz-utils, file]
+ - uupdate: integrate upstream changes into a source package [patch]
+ - what-patch: determine what patch system, if any, a source package is using
+ [patchutils]
+ - whodepends: check which maintainers' packages depend on a package
+ - who-uploads: determine the most recent uploaders of a package to the Debian
+ archive [gnupg, debian-keyring, debian-maintainers, wget]
+ - wnpp-alert: list installed packages which are orphaned or up for adoption
+ [wget | curl]
+ - wnpp-check: check whether there is an open request for packaging or
+ intention to package bug for a package [wget | curl]
+ - who-permits-upload: Retrieve information about Debian Maintainer access
+ control lists [gnupg, libencode-locale-perl, libparse-debcontrol-perl,
+ libwww-perl, debian-keyring]
+ - wrap-and-sort: wrap long lines and sort items in packaging files
+ [python3-debian]
+ .
+ Also included are a set of example mail filters for filtering mail
+ from Debian mailing lists using exim, procmail, etc.
--- /dev/null
+The current development version can be downloaded from the git
+repository at
+
+ git://anonscm.debian.org/collab-maint/devscripts.git
+
+or browsed online at https://anonscm.debian.org/gitweb/?p=collab-maint/devscripts.git
+
+This is a package written originally by Christoph Lameter
+<clameter@debian.org> and extensively modified by Julian Gilbey
+<jdg@debian.org>.
+
+Many of the scripts were originally written by other people. Please
+see the individual files (scripts and manpages) for more information.
+
+Most of the Devscripts::* Perl modules are from the deprecated
+dpkg-perl package, copyright (C) 1997 Klee Dienes <klee@mit.edu>
+
+With the exceptions listed below, the whole package is licensed under
+the GPL, version 2 or later.
+
+- annotate-output, debdiff and nmudiff are released under version 2
+ (only) of the GPL.
+
+- debsnap and diff2patches are released under version 3 or later of the GPL
+
+- deb-reversion is under the Artistic License version 2.0.
+
+- namecheck and the Perl module DB_File::Lock used by bts are copyright
+ under the same terms as Perl, that is:
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either:
+
+ a) the GNU General Public License as published by the Free Software
+ Foundation; either version 1, or (at your option) any later
+ version, or
+
+ b) the "Artistic License" which comes with Perl.
+
+- whodepends, wnpp-alert and wnpp-check are in the public domain
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License, versions 2 and 3, can be found in
+`/usr/share/common-licenses/GPL-2' and `/usr/share/common-licenses/GPL-3'
+and the Artistic License in `/usr/share/common-licenses/Artistic'.
+
+Files: doc/edit-patch.1
+ scripts/edit-patch.sh
+Copyright: 2009-2011, Canonical Ltd.
+License: GPL-3
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, version 3 of the License.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ version 3 can be found in the /usr/share/common-licenses/GPL-3 file.
+
+Files: doc/what-patch.1
+ scripts/what-patch.sh
+ test/test_uscan
+Copyright: 2009, Jonathan Patrick Davies <jpds@ubuntu.com>
+ 2006-2008, Kees Cook <kees@ubuntu.com>
+ 2007-2008, Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>
+ 2013, Rafael Laboissiere <rafael@laboissiere.net>
+License: GPL-3+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ version 3 can be found in the /usr/share/common-licenses/GPL-3 file.
+
+Files: doc/suspicious-source.1
+ doc/wrap-and-sort.1
+ scripts/devscripts/*
+ scripts/devscripts/test/*
+ scripts/sadt*
+ scripts/setup.py
+ scripts/suspicious-source
+ scripts/wrap-and-sort
+Copyright: 2009-2014, Benjamin Drung <bdrung@debian.org>
+ 2010-2011, Stefano Rivera <stefanor@ubuntu.com>
+License: ISC
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
--- /dev/null
+examples/*
--- /dev/null
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+# Define item leadin/leadout for man output
+my $ITEM_LEADIN = '.IP "\fI';
+my $ITEM_LEADOUT = '\fR(1)"';
+
+# Open control file
+open(CONTROL, "< ../debian/control") or die "unable to open control: $!";
+
+my $package;
+my $description;
+
+# Parse the control file
+while(<CONTROL>) {
+ chomp;
+ # A line starting with ' -' indicates a script
+ if (/^ - ([^:]*): (.*)/) {
+ if ($package and $description) {
+ # If we get here, then we need to output the man code
+ print $ITEM_LEADIN . $package . $ITEM_LEADOUT . "\n";
+ print $description . "\n";
+ }
+ $package = $1;
+ $description = $2
+ }
+ # Handle the last description
+ elsif (/^ \./ and $package and $description) {
+ print $ITEM_LEADIN . $package . $ITEM_LEADOUT . "\n";
+ print $description . "\n";
+ }
+ else {
+ s/^.{3}//;
+ $description .= $_;
+ }
+}
--- /dev/null
+cowpoke.conf /etc
--- /dev/null
+/usr/bin/cvs-debi /usr/bin/cvs-debc
+/usr/bin/debchange /usr/bin/dch
+/usr/bin/debi /usr/bin/debc
+/usr/bin/pts-subscribe /usr/bin/pts-unsubscribe
+/usr/share/devscripts/conf.default /usr/share/doc/devscripts/devscripts.conf.ex
+/usr/share/man/man1/debchange.1.gz /usr/share/man/man1/dch.1.gz
+/usr/share/man/man1/pts-subscribe.1.gz /usr/share/man/man1/pts-unsubscribe.1.gz
+/usr/share/man/de/man1/debchange.1.gz /usr/share/man/de/man1/dch.1.gz
+/usr/share/man/de/man1/pts-subscribe.1.gz /usr/share/man/de/man1/pts-unsubscribe.1.gz
+/usr/share/man/de/man1/edit-patch.1.gz /usr/share/man/de/man1/add-patch.1.gz
+/usr/share/man/fr/man1/debchange.1.gz /usr/share/man/fr/man1/dch.1.gz
+/usr/share/man/fr/man1/pts-subscribe.1.gz /usr/share/man/fr/man1/pts-unsubscribe.1.gz
+/usr/share/man/fr/man1/edit-patch.1.gz /usr/share/man/fr/man1/add-patch.1.gz
--- /dev/null
+# "debsnap: grab packages from http://snapshot.debian.org" isn't a homepage
+devscripts: description-possibly-contains-homepage http://snapshot.debian.org
+# using dh causes useless ldconfig calls to be added to post{inst,rm}
+devscripts: postinst-has-useless-call-to-ldconfig
+devscripts: postrm-has-useless-call-to-ldconfig
--- /dev/null
+scripts/*.1
+scripts/*.5
+po4a/de/*.1
+po4a/de/*.5
+po4a/fr/*.1
+po4a/fr/*.5
--- /dev/null
+#! /bin/sh
+set -e
+
+if [ "$1" = configure ]
+then
+ if dpkg --compare-versions "$2" lt 2.6.90 && [ ! -f /etc/devscripts.conf ]
+ then
+ cp /usr/share/devscripts/conf.default /etc/devscripts.conf
+ elif [ -f /etc/devscripts.conf ]
+ then
+ # Are we dealing with an upgrade from pre-sarge?
+ if dpkg --compare-versions "$2" lt 2.8.14
+ then
+ if dpkg --compare-versions "$2" lt 2.7.1
+ then
+ # This is for bug #149712. Oops.
+ perl -i -pe 's/DEBDIFF_SHOWMOVED/DEBDIFF_SHOW_MOVED/g' \
+ /etc/devscripts.conf
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.7.90
+ then
+ # Added in devscripts 2.7.90:
+ cat >> /etc/devscripts.conf <<EOF
+
+# debchange/dch option added in version 2.7.90:
+#
+# Query the BTS when --closes is being used?
+# DEBCHANGE_QUERY_BTS=yes
+#
+# uupdate option added in version 2.7.90:
+#
+# Should we symlink the .orig.tar.gz file to its new name or
+# copy it instead? yes=symlink, no=copy
+# UUPDATE_SYMLINK_ORIG=yes
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.7.93
+ then
+ # Added in devscripts 2.7.93:
+ cat >> /etc/devscripts.conf <<EOF
+
+# debuild options added in version 2.7.93:
+#
+# Do we run linda at the end of a full run?
+# DEBUILD_LINDA=no
+#
+# Extra options given to linda before any command-line options
+# specified.
+# DEBUILD_LINDA_OPTS=""
+
+##### Package-wide variables first introduced in version 2.7.93:
+#
+# Lists of which scripts are affected by these package-wide variables
+# can be found in the devscripts.conf(5) manpage.
+#
+#
+# Directory Name Checking
+#
+# Several programs check the directory name and refuse to function if
+# it does not match the name of the package being worked on. (The
+# details are described in the individual manpages.)
+# These two variables control this behaviour, corresponding to the
+# --check-dirname-level and --check-dirname-regex command line options.
+# The possible values of DEVSCRIPTS_CHECK_DIRNAME_LEVEL are:
+# 0 never check the directory name
+# 1 check the directory name only if the program has changed directory
+# 2 always check the directory name
+# The variable DEVSCRIPTS_DIRNAME_REGEXP is a Perl regex which
+# defines what is considered a valid directory name for the source
+# package PACKAGE; if it includes a '/', then it must match the full
+# directory path, otherwise it must match the full directory name.
+#
+# The default settings are:
+# DEVSCRIPTS_CHECK_DIRNAME_LEVEL=1
+# DEVSCRIPTS_CHECK_DIRNAME_REGEX='PACKAGE(-.+)?'
+EOF
+ fi
+
+ if [ "$2" = "2.8.6" ]
+ then
+ # Added in devscripts 2.8.6:
+ cat >> /etc/devscripts.conf <<EOF
+
+##### bts options changes between version 2.8.6 and version 2.8.7:
+#
+# The following option replaces the previous BTS_FULL_MIRROR option.
+# How much to mirror when caching? The minimal amount (min), the mbox
+# version as well (mbox) or the whole works (full)?
+# BTS_CACHE_MODE=min
+#
+# The following is a new option
+# How do we read an mbox? This will be split on whitespace, then
+# %s is replaced by the mbox name and %% by a single %.
+# BTS_MAIL_READER='mutt -f %s'
+EOF
+ elif dpkg --compare-versions "$2" lt 2.8.7
+ then
+ # Added in devscripts 2.8.6 and 2.8.7:
+ cat >> /etc/devscripts.conf <<EOF
+
+##### bts options added in versions 2.8.6 and 2.8.7:
+#
+# Default bts show/bugs to run in offline mode?
+# BTS_OFFLINE=no
+#
+# Cache all visited bug reports once a cache has been established
+# for the first time?
+# BTS_CACHE=yes
+#
+# How much to mirror when caching? The minimal amount (min), the mbox
+# version as well (mbox) or the whole works (full)?
+# BTS_CACHE_MODE=min
+#
+# Always refresh the cache, even if nothing's changed?
+# BTS_FORCE_REFRESH=no
+#
+# How do we read an mbox? This will be split on whitespace, then
+# %s is replaced by the mbox name and %% by a single %.
+# BTS_MAIL_READER='mutt -f %s'
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.8.12
+ then
+ # Added in devscripts 2.8.12:
+ cat >> /etc/devscripts.conf <<EOF
+
+##### uscan option added in version 2.8.12:
+#
+# Should we use DEHS style output (XML format)?
+# USCAN_DEHS_OUTPUT=no
+#
+EOF
+ fi
+ fi
+
+ # The next section is all post-sarge updates
+ if dpkg --compare-versions "$2" lt 2.8.15
+ then
+ # Added in devscripts 2.8.15:
+ cat >> /etc/devscripts.conf <<EOF
+
+##### debchange option added in version 2.8.15:
+#
+# Select a heuristic to use to determine whether the package has released.
+# See the debchange man page for details.
+# DEBCHANGE_RELEASE_HEURISTIC=log
+# DEBCHANGE_RELEASE_HEURISTIC=changelog
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.9.5
+ then
+ # Added in devscripts 2.9.5:
+ cat >> /etc/devscripts.conf <<EOF
+
+##### debchange option added in version 2.9.5:
+#
+# Introduce multiple-maintainer markers in changelog sections?
+# DEBCHANGE_MULTIMAINT=yes
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.9.15
+ then
+ # Added in devscripts 2.9.15:
+ cat >> /etc/devscripts.conf <<EOF
+
+##### bts option added in version 2.9.15
+#
+# What sendmail command do we use? This will be split on whitespace.
+# BTS_SENDMAIL_COMMAND='/usr/sbin/sendmail'
+
+##### dpkg-sig options added in version 2.9.15
+#
+# dpkg-sig is not a part of devscripts, but shares this configuration file.
+# It pays attention to the values of DEBSIGN_MAINT and DEBSIGN_KEY in
+# addition to the following.
+#
+# This key ID takes precedence over the rest
+# DPKGSIG_KEYID=
+#
+# Do we sign the .changes and .dsc files? See the manpage for more
+# info. Valid options are no, auto, yes, full and force_full.
+# DPKGSIG_SIGN_CHANGES=auto
+#
+# Do we cache the gpg passphrase by default? This can be dangerous!
+# DPKGSIG_CACHE_PASS=no
+
+##### pts-subscribe added in version 2.9.15
+#
+# How long will we subscribe for by default? The default is 30 days.
+# Setting this to 'forever' means that no unsubscription request will
+# be scheduled.
+# PTS_UNTIL='now + 30 days'
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.9.17
+ then
+ # Added in devscripts 2.9.17:
+ cat >> /etc/devscripts.conf <<EOF
+
+##### debdiff option added in version 2.9.17
+#
+# Which control files to compare? A comma-separated list, with
+# possibilities such as postinst, config and so on; ALL means compare
+# all control files.
+# DEBDIFF_CONTROLFILES=control
+
+##### debrelease/debc/debi option added in version 2.9.17
+#
+# This specifies the directory, relative to the top of the source
+# tree, in which the .changes and .debs files are to be found. Note
+# that this option affects all of debrelease, debc and debi.
+# DEBRELEASE_DEBS_DIR=..
+
+##### debuild options added in version 2.9.17
+#
+# Do we check for the existence of the .orig.tar.gz before calling
+# dpkg-buildpackage?
+# DEBUILD_TGZ_CHECK=yes
+#
+# Hooks; see the manpage for details of these
+# DEBUILD_DPKG_BUILDPACKAGE_HOOK=""
+# DEBUILD_CLEAN_HOOK=""
+# DEBUILD_DPKG_SOURCE_HOOK=""
+# DEBUILD_BUILD_HOOK=""
+# DEBUILD_BINARY_HOOK=""
+# DEBUILD_FINAL_CLEAN_HOOK=""
+# DEBUILD_LINTIAN_HOOK=""
+# DEBUILD_SIGNING_HOOK=""
+# DEBUILD_POST_DPKG_BUILDPACKAGE_HOOK=""
+
+##### who-uploads options added in version 2.9.17
+#
+# Maximum number of uploads to display per package
+# WHOUPLOADS_MAXUPLOADS=3
+#
+# Colon-separated list of keyrings to examine by default
+# WHOUPLOADS_KEYRINGS=/usr/share/keyrings/debian-keyring.gpg:/usr/share/keyrings/debian-keyring.pgp
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.9.26
+ then
+ # Added in devscripts 2.9.25/26, but version comparison test was
+ # incorrect in version 2.9.25:
+ cat >> /etc/devscripts.conf <<EOF
+
+##### nmudiff options added in versions 2.9.25 and 2.9.26
+#
+# Should we use mutt to edit and send the message or just a plain old
+# editor?
+# NMUDIFF_MUTT=yes
+#
+# Should we always submit a new report (yes), always send to the bugs
+# which are being closed (no), or send to the bug being closed if
+# there is only one of them, otherwise send a new report (maybe)?
+# NMUDIFF_NEWREPORT=maybe
+#
+# nmudiff also uses the value of BTS_SENDMAIL_COMMAND if NMUDIFF_MUTT=no
+
+##### dget option added in version 2.9.26
+#
+# Extra directories to search for files in addition to
+# /var/cache/apt/archives. This is a colon-separated list of directories.
+# DGET_PATH=""
+EOF
+
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.3
+ then
+ # Added in devscripts 2.10.3
+ cat >> /etc/devscripts.conf <<EOF
+
+##### licensecheck options added in version 2.10.3
+#
+# Print the file header being parsed before the corresponding license
+# information?
+# LICENSECHECK_VERBOSE=no
+#
+# How many lines of each file should be parsed for license information?
+# LICENSECHECK_PARSELINES=60
+
+##### debchange option added in version 2.10.3
+#
+# Use a fixed timezone in changelog entries?
+# DEBCHANGE_TZ=UTC
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.4
+ then
+ # Added in devscripts 2.10.4
+ cat >> /etc/devscripts.conf <<EOF
+
+##### debchange option added in version 2.10.4
+#
+# When appending to a multiple-maintainer changelog, if there are
+# existing changes made by the current maintainer, should new
+# changelog entries be appended to the existing entries?
+# DEBCHANGE_MULTIMAINT_MERGE=no
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.5
+ then
+ # Added in devscripts 2.10.5
+ # BTS_ONLY_NEW was added in 2.10.2 but not added to the
+ # configuration files
+ cat >> /etc/devscripts.conf <<EOF
+
+##### bts option added in version 2.10.2
+# Download only new bugs when caching? If set to yes, don't check for
+# updates in bugs we already have.
+# BTS_ONLY_NEW=no
+
+##### bts options added in version 2.10.5
+#
+# Which SMTP host should be used? Note that if both an SMTP host and
+# sendmail command are specified in the configuration file(s), the SMTP
+# host will be used unless overridden by --sendmail on the command line
+# BTS_SMTP_HOST=bugs.debian.org
+#
+# Include resolved bugs when caching?
+# BTS_INCLUDE_RESOLVED=yes
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.7
+ then
+ # Added in devscripts 2.10.7
+ cat >> /etc/devscripts.conf <<EOF
+
+##### uscan option added in version 2.10.7
+#
+# What user agent string should we send with requests?
+# (Default is 'Debian uscan X.Y.Z')
+# USCAN_USER_AGENT=''
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.8
+ then
+ # Added in devscripts 2.10.8
+ cat >> /etc/devscripts.conf <<EOF
+
+##### debcommit option added in version 2.10.8
+#
+# Strip a leading "* " from commit messages taken from changelogs?
+# DEBCOMMIT_STRIP_MESSAGE=no
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.10
+ then
+ # Added in devscripts 2.10.10
+ cat >> /etc/devscripts.conf <<EOF
+
+##### debcommit option added in version 2.10.10
+#
+# Sign created tags using gnupg?
+# DEBCOMMIT_SIGN_TAGS=no
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.12
+ then
+ # Added in devscripts 2.10.12
+ cat >> /etc/devscripts.conf <<EOF
+##### debchange option added in version 2.10.12
+#
+# When appending entries to the changelog, should the trailer line
+# be maintained as-is?
+# DEBCHANGE_MAINTTRAILER=yes
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.14
+ then
+ # Actually added in devscrips 2.10.9
+ # but not added to the configuration file
+ cat >> /etc/devscripts.conf <<EOF
+
+##### uscan option added in version 2.10.9
+#
+# Where should downloaded files be placed?
+# USCAN_DESTDIR=..
+EOF
+ # Added in devscripts 2.10.14
+ cat >> /etc/devscripts.conf <<EOF
+
+##### bts option added in version 2.10.14
+#
+# Suppress BTS acknowledgment e-mails (ignored by the control bot)
+# BTS_SUPPRESS_ACKS=no
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.17
+ then
+ # Added in devscripts 2.10.17
+ cat >> /etc/devscripts.conf <<EOF
+
+##### dget options added in version 2.10.17
+#
+# Unpack downloaded source packages
+# DGET_UNPACK=yes
+# Verify source package signatures using dscverify
+# DGET_VERIFY=yes
+#
+##### bts options added in version 2.10.17
+#
+# Allow the generated message to be edited and, if necessary, abandoned
+# before sending it to the control bot?
+#
+# If set to yes, prompt for confirmation / edit / abandonment.
+# If set to force, spawn an editor and then proceed as if set to yes
+# BTS_INTERACTIVE=no
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.19
+ then
+ # Added in devscripts 2.10.19
+ cat >> /etc/devscripts.conf <<EOF
+##### debchange option added in version 2.10.19
+#
+# Allow a new version to be lower than the current package version
+# if the new version matches the specified regular expression
+# DEBCHANGE_LOWER_VERSION_PATTERN=bpo
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.20
+ then
+ # Added in devscripts 2.10.20
+ cat >> /etc/devscripts.conf <<EOF
+##### debcommit option added in version 2.10.20
+#
+# Take any uncommitted changes in the changelog in
+# to account when determining the commit message
+# for a release?
+# DEBCOMMIT_RELEASE_USE_CHANGELOG=no
+
+##### debuild options added in version 2.10.20
+#
+# Colon-separated list of options to be added to the beginning
+# of PATH once it has been sanitised
+# DEBUILD_PREPEND_PATH="/usr/lib/ccache"
+#
+# Credentials to pass to debrsign when signing dsc / changes files
+# Setting this option to a non-blank string implies using debrsign
+# DEBUILD_SIGNING_USERNAME="user@host"
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.21
+ then
+ # Added in devscripts 2.10.21
+ cat >> /etc/devscripts.conf <<EOF
+##### bts options added in version 2.10.21
+#
+# If the SMTP host specified above requires authentication, the following
+# options may be used to specify the username and password to use.
+# If only a username is provided then the password will be prompted for
+# before sending the e-mail
+# BTS_SMTP_AUTH_USERNAME=user
+# BTS_SMTP_AUTH_PASSWORD=pass
+
+##### debdiff option added in version 2.10.21
+# Include the output of diffstat?
+# DEBDIFF_SHOW_DIFFSTAT=no
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.22
+ then
+ # Added in devscripts 2.10.22
+ cat >> /etc/devscripts.conf <<EOF
+##### bts option added in version 2.10.22
+#
+# Specify a list of e-mail addresses to which a carbon copy of the
+# generated e-mail to the control bot should automatically be sent.
+# BTS_DEFAULT_CC=example@example.com
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.24
+ then
+ # Added in devscripts 2.10.24
+ cat >> /etc/devscripts.conf <<EOF
+##### debchange option added in version 2.10.24
+#
+# Attempt to automatically determine whether the current changelog
+# stanza represents an NMU?
+# DEBCHANGE_AUTO_NMU=yes
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.26
+ then
+ # Added in devscripts 2.10.26
+ cat >> /etc/devscripts.conf <<EOF
+##### rmadison option added in version 2.10.26
+#
+# Add a custom URL to the default list of shorthands so one
+# can use it with -u without having to specify the full URL
+#
+# RMADISON_URL_MAP_EXAMPLE=http://example.com/madison.cgi
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.30
+ then
+ # Added in devscripts 2.10.30
+ cat >> /etc/devscripts.conf <<EOF
+##### who-uploads option added in version 2.10.30
+#
+# Display the date of the upload?
+#
+# WHOUPLOADS_DATE=no
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.36
+ then
+ # Added in devscripts 2.10.36
+ cat >> /etc/devscripts.conf <<EOF
+##### debdiff option added in version 2.10.36
+#
+# Compare control files in source packages using widff?
+#
+# DEBDIFF_WDIFF_SOURCE_CONTROL=no
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.38
+ then
+ if [ -f "/etc/devscripts.con" ] &&
+ [ "10cabcba2772fc97064bf2f51b39bf25" = \
+ "$(md5sum /etc/devscripts.con | cut -d" " -f1)" ]
+ then
+ rm /etc/devscripts.con
+
+ # Added in devscripts 2.10.36 but to the wrong file
+ cat >> /etc/devscripts.conf <<EOF
+##### debdiff option added in version 2.10.36
+#
+# Compare control files in source packages using widff?
+#
+# DEBDIFF_WDIFF_SOURCE_CONTROL=no
+
+EOF
+ fi
+ cat >> /etc/devscripts.conf << EOF
+##### mk-build-deps options added in version 2.10.38
+#
+# Which tool to use for installing build depends?
+# MKBUILDDEPS_TOOL=/usr/bin/apt-get
+#
+# Remove package files after install?
+# MKBUILDDEPS_REMOVE_AFTER_INSTALL=yes
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.39
+ then
+ cat >> /etc/devscripts.conf << EOF
+##### bts option added in version 2.10.39
+#
+# Specify a HELO to use when connecting to the SMTP host. If not supplied
+# and the file /etc/mailname exists, its contents will be used as the HELO
+# BTS_SMTP_HELO=foo.example.com
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.40
+ then
+ cat >> /etc/devscripts.conf << EOF
+##### debcheckout option added in version 2.10.40
+#
+# List of space-separated pairs REGEXP/REPLACEMENT_TEXT to define
+# custom rules to enable authenticated mode.
+# See debcheckout(1) for a more precise description of syntax and
+# semantics of this setting.
+# DEBCHECKOUT_AUTH_URLS=''
+
+##### uscan option added in version 2.10.40
+#
+# Automatically repack bzipped tar or zip archives to gzipped tars?
+# USCAN_REPACK=no
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.44
+ then
+ cat >> /etc/devscripts.conf << EOF
+##### bts option added in 2.10.44
+#
+# Which debbugs server should be used?
+# BTS_SERVER=bugs.debian.org
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.45
+ then
+ cat >> /etc/devscripts.conf << EOF
+##### debsnap options added in 2.10.45
+#
+# Where to put the directory named <prefix>-<package>/
+# default: source-$package_name if unset
+# DEBSNAP_DESTDIR=
+#
+# Verbosely show messages (yes/no)
+# default: no
+# DEBSNAP_VERBOSE=no
+#
+# The base URL of the archive to download from
+# DEBSNAP_BASE_URL=http://snapshot-dev.debian.org
+
+##### debdiff option added in 2.10.45
+#
+# Always compare package in version order, rather than the order specified
+# on the command line?
+# DEBDIFF_AUTO_VER_SORT=no
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.47
+ then
+ cat >> /etc/devscripts.conf << EOF
+##### dcontrol option added in 2.10.47
+#
+# URL to query
+# DCONTROL_URL="https://qa.debian.org/cgi-bin/dcontrol"
+
+#### nmudiff option added in 2.10.47
+#
+# Number of days to indicate that an NMU upload has been delayed by
+# using the DELAYED upload queue. 0 indicates no delay.
+# Defaults to "XX" which adds a placeholder to the e-mail.
+# NMUDIFF_DELAY=3
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.49
+ then
+ cat >> /etc/devscripts.conf << EOF
+#### rmadison option added in 2.10.49
+#
+# Default URL to use if none is specified on the command line.
+# RMADISON_DEFAULT_URL=debian
+
+#### debchange option added in 2.10.49
+#
+# When --release was used and an editor presented, force the changelog
+# to be explicitly saved in the editor? If this is set to "no" then
+# the changes made by --release will be automatically saved.
+# DEBCHANGE_FORCE_SAVE_ON_RELEASE=yes
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.54
+ then
+ cat >> /etc/devscripts.conf << EOF
+#### debdiff option added in 2.10.54
+#
+# Unpack tarballs found in the top level source directory.
+# DEBDIFF_UNPACK_TARBALLS=yes
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.70
+ then
+ cat >> /etc/devscripts.conf << EOF
+#### debcheckout option added in 2.10.70
+#
+# For debian-dir-only repositories, also retrieve the source
+# package, unpack it, and move the missing files over.
+# (never auto download-only always)
+# DEBCHECKOUT_SOURCE=auto
+
+#### rmadison option added in 2.10.70
+#
+# Default architecture to use if none is specified on the command line.
+# use --architecture='*' to override RMADISON_ARCHITECTURE
+# RMADISON_ARCHITECTURE=source,i386,amd64,all
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.10.72
+ then
+ cat >> /etc/devscripts.conf << EOF
+#### mk-build-deps option added in 2.10.72
+#
+# Tool used to gain root privileges to install the deb
+# MKBUILDDEPS_ROOTCMD=''
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.11.0
+ then
+ cat >> /etc/devscripts.conf << EOF
+#### debsign option added in 2.11.0
+#
+# Always re-sign files even if they are already signed, without prompting.
+# DEBSIGN_ALWAYS_RESIGN=yes
+
+EOF
+ fi
+
+ if dpkg --compare-versions "$2" lt 2.14.2
+ then
+ cat >> /etc/devscripts.conf << EOF
+### debcommit option added in 2.14.2
+#
+# Sign commits using gnupg?
+# DEBCOMMIT_SIGN_COMMITS=no
+
+EOF
+ fi
+ fi
+fi
+
+#DEBHELPER#
--- /dev/null
+#! /bin/sh
+set -e
+
+if [ "$1" = purge ]
+then
+ rm -f /etc/devscripts.conf*
+fi
+
+#DEBHELPER#
--- /dev/null
+#!/usr/bin/make -f
+
+UBU_SUGGESTS=debian-keyring, equivs, liblwp-protocol-https-perl, libsoap-lite-perl
+
+%:
+ dh $@ --with python3
+
+override_dh_gencontrol:
+ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo ubuntu),ubuntu)
+ dh_gencontrol -- -V'vendor:Suggests=$(UBU_SUGGESTS)' -V'vendor:Recommends='
+else
+ dh_gencontrol -- -V'vendor:Suggests=' -V'vendor:Recommends=$(UBU_SUGGESTS)'
+endif
--- /dev/null
+3.0 (native)
--- /dev/null
+compression=xz
--- /dev/null
+Tests: shunit2
+Depends: devscripts, libdistro-info-perl, zip, shunit2
+Restrictions: allow-stderr needs-recommends
--- /dev/null
+#!/bin/sh
+set -e
+
+make test-installed
--- /dev/null
+.TH EDIT-PATCH "1" "Debian Utilities" "DEBIAN"
+.SH NAME
+\fBedit-patch\fR, \fBadd-patch\fR \- tool for preparing patches for Debian
+source packages
+
+.SH SYNOPSIS
+\fBedit-patch\fR \fIpath/to/patch\fR
+
+\fBadd-patch\fR \fIpath/to/patch\fR
+
+.SH DESCRIPTION
+\fBedit-patch\fR is a wrapper script around the Quilt, CDBS, and dpatch patch
+systems. It simplifies the process of preparing and editing patches to Debian
+source packages and allows the user to not have to be concerned with which patch
+system is in use.
+Run from inside the root directory of the source package, \fBedit-patch\fR can
+be used to edit existing patches located in \fIdebian/patches\fR.
+
+It can also be used to incorporate new patches.
+If pointed at a patch not already present, it will copy the patch to
+\fIdebian/patches\fR in the correct format for the patch system in use.
+Next, the patch is applied and a subshell is opened in order to edit the patch.
+Typing \fBexit\fR or pressing Ctrl-d will close the subshell and launch an editor
+to record the \fIdebian/changelog\fR entry.
+
+\fBedit-patch\fR is integrated with the Bazaar and Git version control systems.
+The patch will be automatically added to the tree, and the \fIdebian/changelog\fR
+entry will be used as the commit message.
+
+If no patch system is present, the patch is applied inline,
+and a copy is stored in \fIdebian/patches-applied\fR.
+
+\fBadd-patch\fR is the non-interactive version of \fBedit-patch\fR.
+The patch will be incorporated but no editor or subshell will be
+spawned.
+
+.SH AUTHORS
+\fBedit-patch\fR was written by Daniel Holbach <daniel.holbach@canonical.com>,
+Michael Vogt <michael.vogt@canonical.com>, and David Futcher <bobbo@ubuntu.com>.
+
+This manual page was written by Andrew Starr-Bochicchio <a.starr.b@gmail.com>.
+.PP
+Both are released under the terms of the GNU General Public License, version 3.
--- /dev/null
+.\" Copyright (c) 2010, Benjamin Drung <bdrung@debian.org>
+.\"
+.\" Permission to use, copy, modify, and/or distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.TH SUSPICIOUS\-SOURCE 1 "Debian Utilities" "DEBIAN"
+
+.SH NAME
+suspicious\-source \- search for files that are not the GPL's
+"preferred form of modification"
+
+.SH SYNOPSIS
+\fBsuspicious\-source\fP [\fIoptions\fR]
+
+.SH DESCRIPTION
+\fBsuspicious\-source\fP is a script that outputs a list of files which
+are not common source files.
+This should be run in the root of a source tree to find files which might
+not be the "preferred form of modification" that the GPL and other licenses
+require.
+.PP
+The files inside version control system directories (like
+\fI.bzr/\fR or \fICVS/\fR) are not considered.
+
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Show this help message and exit.
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+Print more information.
+.TP
+\fB\-d \fIdirectory\fR, \fB\-\-directory=\fIdirectory\fR
+Check the files in the specified \fIdirectory\fR instead of the current directory.
+.TP
+\fB\-m \fImimetype\fR, \fB\-\-mimetype=\fImimetype\fR
+Add \fImimetype\fR to list of white-listed MIME types.
+.TP
+\fB\-e \fIextension\fR, \fB\-\-extension=\fIextension\fR
+Add \fIextension\fR to list of white-listed extensions.
+
+.SH AUTHORS
+\fBsuspicious\-source\fP and this manpage have been written by
+Benjamin Drung <bdrung@debian.org>.
+.PP
+Both are released under the ISC license.
--- /dev/null
+.TH WHAT\-PATCH "1" "Debian Utilities" "DEBIAN"
+.SH NAME
+what\-patch \- detect which patch system a Debian package uses
+
+.SH SYNOPSIS
+.B what\-patch\fR [\fIoptions\fR]
+
+.SH DESCRIPTION
+\fBwhat\-patch\fR examines the \fIdebian/rules\fR file to determine which patch
+system the Debian package is using.
+.PP
+\fBwhat\-patch\fR should be run from the root directory of the Debian source
+package.
+
+.SH OPTIONS
+Listed below are the command line options for \fBwhat\-patch\fR:
+.TP
+.BR \-h ", " \-\-help
+Display a help message and exit.
+.TP
+.B \-v
+Enable verbose mode.
+This will include the listing of any files modified outside or the \fIdebian/\fR
+directory and report any additional details about the patch system if
+available.
+
+.SH AUTHORS
+\fBwhat\-patch\fR was written by Kees Cook <kees@ubuntu.com>,
+Siegfried-A. Gevatter <rainct@ubuntu.com>, and Daniel Hahler
+<ubuntu@thequod.de>, among others.
+This manual page was written by Jonathan Patrick Davies <jpds@ubuntu.com>.
+.PP
+Both are released under the GNU General Public License, version 3 or later.
+
+.SH SEE ALSO
+The Ubuntu MOTU team has some documentation about patch systems at the Ubuntu
+wiki: \fIhttps://wiki.ubuntu.com/PackagingGuide/PatchSystems\fR
+
+.PP
+.BR cdbs\-edit\-patch (1),
+.BR dbs\-edit\-patch (1),
+.BR dpatch\-edit\-patch (1)
--- /dev/null
+.\" Copyright (c) 2010, Benjamin Drung <bdrung@debian.org>
+.\"
+.\" Permission to use, copy, modify, and/or distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.TH WRAP\-AND\-SORT 1 "Debian Utilities" "DEBIAN"
+.SH NAME
+wrap-and-sort \- wrap long lines and sort items in Debian packaging files
+.SH SYNOPSIS
+.B wrap-and-sort
+[\fIoptions\fR]
+
+.SH DESCRIPTION
+\fBwrap\-and\-sort\fP wraps the package lists in Debian control files. By
+default the lists will only split into multiple lines if the entries are longer
+than the maximum line length limit of 79 characters. \fBwrap\-and\-sort\fP sorts
+the package lists in Debian control files and all \fI.install\fR files. Beside
+that \fBwrap\-and\-sort\fP removes trailing spaces in these files.
+.PP
+This script should be run in the root of a Debian package tree. It searches for
+\fIcontrol\fR, \fIcontrol*.in\fR, \fIcopyright\fR, \fIcopyright.in\fR,
+\fIinstall\fR, and \fI*.install\fR in the \fIdebian\fR directory.
+
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Show this help message and exit.
+.TP
+\fB\-a\fR, \fB\-\-wrap\-always\fR
+Wrap all package lists in the Debian \fIcontrol\fR file
+even if they do not exceed the line length limit and could fit in one line.
+.TP
+\fB\-s\fR, \fB\-\-short\-indent\fR
+Only indent wrapped lines by one space (default is in\-line with the
+field name).
+.TP
+\fB\-b\fR, \fB\-\-sort\-binary\-packages\fR
+Sort binary package paragraphs by name.
+.TP
+\fB\-k\fR, \fB\-\-keep\-first\fR
+When sorting binary package paragraphs, leave the first one at the top.
+Unqualified
+.BR debhelper (7)
+configuration files are applied to the first package.
+.TP
+\fB\-n\fR, \fB\-\-no\-cleanup\fR
+Do not remove trailing whitespaces.
+.TP
+\fB\-t\fR, \fB\-\-trailing-comma\fR
+Add a trailing comma at the end of the sorted fields. This minimizes
+future differences in the VCS commits when additional dependencies are
+appended or removed.
+.TP
+\fB\-d \fIpath\fR, \fB\-\-debian\-directory=\fIpath\fR
+Location of the \fIdebian\fR directory (default: \fI./debian\fR).
+.TP
+\fB\-f \fIfile\fR, \fB\-\-file=\fIfile\fR
+Wrap and sort only the specified \fIfile\fR.
+You can specify this parameter multiple times.
+All supported files will be processed if no files are specified.
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+Print all files that are touched.
+.TP
+\fB\-\-max\-line\-length=\fImax_line_length\fR
+Set the maximum allowed line length. Package lists in the Debian \fIcontrol\fR
+file that exceed this length limit will be wrapped. The default maximum line
+length is 79 characters.
+
+.SH AUTHORS
+\fBwrap\-and\-sort\fP and this manpage have been written by
+Benjamin Drung <bdrung@debian.org>.
+.PP
+Both are released under the ISC license.
--- /dev/null
+# This handles initial submissions ("Thank you for the problem
+# report...") and also followups ("Thank you for the additional
+# information...").
+:0
+* ^To: Justin Pryzby <justinpryzby@users\.sourceforge\.net>$
+* ^From: owner@bugs\.debian\.org \(Debian Bug Tracking System\)$
+* ^Subject: Bug#\/[0-9]*
+|echo |mail "$MATCH-subscribe@bugs.debian.org"
+
+# This handles bug reports on which I've had an effect via the control
+# bot. The 'To:' condition is necessary, otherwise I'd occasionally
+# be subscribed to a massive number of bugs when Don reassigns from
+# debbugs to bugs.d.o, or Eric from mozilla-firefox to firefox, and
+# I'm already subscribed to those packages anyway..
+:0
+* ^To: Justin Pryzby <justinpryzby@users\.sourceforge\.net>$
+* ^From: owner@bugs\.debian\.org \(Debian Bug Tracking System\)$
+* ^Subject: Processed:
+|grep -Eo '^Bug#[0-9]+:' |sed -e 's/^Bug#//' -e 's/:$/-subscribe@bugs.debian.org/ ' |tr '\n' ',' |sed -e 's/^/To: /' -e 's/,$/\n/' |sendmail -t
+
+:0
+* ^From: [0-9]+-subhelp@bugs\.debian\.org$
+* ^Subject: Please confirm subscription to [0-9]+@bugs.debian.org
+* ^Reply-To: \/.*@bugs\.debian\.org$
+|echo |mail "$MATCH"
+
+:0
+* ^From: [0-9]+-subhelp@bugs\.debian\.org$
+* ^Subject: Subscription to [0-9]+@bugs.debian.org successful$
+Mail/bug_subscription_success
+
+# vim:ft=procmail:ts
--- /dev/null
+# debian.procmail - Debian mailing list sorting procmail file.
+# Copyright (C) 1999 Edward Betts <edward@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+# On Debian GNU/Linux systems, the complete text of the GNU General
+# Public License can be found in `/usr/share/common-licenses/GPL'.
+
+# Instructions
+
+# To use this file either copy it to ~/.procmailrc or use INCLUDERC to load it.
+# Read the procmail, procmailrc, procmailex and procmailsc for more
+# information.
+
+# Configuration
+
+# This files assumes that you are using standard mailbox file format to save
+# your mail. You may change the directories that these variables point to, but
+# the directories exist for this rcfile to function correctly.
+
+#MAILDIR=~/Mail # Uncomment if in needed
+DEBIAN=debian # Directory for debian mailing lists
+DC_INSTALLER=$DEBIAN/installer # New Debian Packages directory
+DC_DIR=$DEBIAN/changes-other # Directory for debian-changes
+DDC_DIR=$DEBIAN/devel-changes-other # Directory for debian-devel-changes
+
+# These variables are used to control the sorting of the debian-changes and
+# debian-devel-changes list. It is likely that you will want to change them.
+
+ARCHS=alpha|arm|m68k|powerpc|sparc # Archs that do not interest me
+PACKAGES=colortail|esh|vh|x2vnc|sniffit # Packages on other archs of interest
+
+# The Debian changes and Debian development changes mailing lists are special
+# cases. Architectures that are not of any real interest, specified using the
+# $ARCHS variable are separated out into mailboxes named after the
+# architectures. They are stored in the directory specified by $DC_DIR for the
+# Debian changes mailing lists and $DDC_DIR for the Debian development changes
+# mailing lists.
+#
+# However the uploads and installs of some packages on all architectures may
+# be of interest. These pacakges can be specified using the $PACAKGES
+# variable. I use it for the packages I maintain so I can see when they have
+# been built on other architectures.
+#
+# Note: See the master.procmail script if you are short of bandwidth and do
+# not want these messages to even reach your machine. If master.procmail is in
+# use the recipes should never be true, unless the $PACKAGES and $ARCHS
+# variables are different on master than locally.
+
+:0
+* ^X-Mailing-List: <debian-changes@lists.debian.org>
+* $^Subject: Accepted .+ \(($ARCHS )*($ARCHS)\) to .+
+* !$^Subject: Accepted ($PACKAGES) .+
+* ^Subject: Accepted .+ \(\/[-a-zA-Z0-9]+
+$DC_DIR/$MATCH
+
+:0
+* ^X-Mailing-List: <debian-devel-changes@lists.debian.org>
+* $^Subject: Accepted .+ \(($ARCHS )*($ARCHS)\) to .+
+* !$^Subject: Accepted ($PACKAGES) .+
+* ^Subject: Accepted .+ \(\/[-a-zA-Z0-9]+
+$DDC_DIR/$MATCH
+
+# Sort debian mailing lists into mailboxes under $DEBIANDIR. This dynamic
+# style means when subscribing to new Debian mailing lists no changes need be
+# made to this file. Even as yet none existent mailing lists are catered for.
+
+:0:
+* ^X-Mailing-List: <debian-.+@lists.debian.org>
+* ^X-Mailing-List: <debian-\/[-a-zA-Z0-9]+
+$DEBIAN/$MATCH
+
+# There are a few Debian related mailing lists which do not appear on
+# lists.debian.org, those that I subscribe to are listed here. I suggest you
+# leave them, even if you do not currently subscibe to them.
+
+# Debian UK list
+:0:
+* ^Sender: debian-.+-admin@chiark.greenend.org.uk
+* ^Sender: debian-\/[a-zA-Z0-9]+
+$DEBIAN/$MATCH
+
+# Debian events-de list
+:0:
+* ^Sender: owner-debian-.+@Infodrom.North.DE
+* ^Sender: owner-debian-\/[-a-zA-Z0-9]+
+$DEBIAN/$MATCH
+
+# vim:ft=procmail:ts
--- /dev/null
+# Exim Filter <<== do not edit or remove this line!
+# Assortment of debian lists
+if $header_resent-sender: matches "debian-(.*)-request@"
+then
+ save $home/mail/debian-$1
+endif
--- /dev/null
+|/usr/bin/procmail
--- /dev/null
+# master.procmail - Debian mailing list sorting procmail file.
+# Copyright (C) 1999 Edward Betts <edward@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+# On Debian GNU/Linux systems, the complete text of the GNU General
+# Public License can be found in `/usr/share/common-licenses/GPL'.
+
+# Introduction
+
+# This rcfile is aimed at developers with a small amount of bandwidth (people
+# using modems to connect to the Internet). The mailing lists
+# debian-devel-changes and debian-changes carry the details of package uploads
+# for all of the different architectures, however, most developers are using
+# one or at most two of these architectures, and are not interested in uploads
+# for the others.
+#
+# The recipes below will erase announcements of package uploads to
+# architectures that are not of much interest, before forwarding other
+# messages to the forward address. Uploads that include source will be
+# displayed, because I think they are interesting.
+
+# Instructions
+
+# 1. Subscribe to debian-devel-changes and/or debian-changes using your Debian
+# e-mail address so that mail goes to your account on master.
+# 2. Change the environment variables below to specify the:
+# a) e-mail address that you want mail to be forwarded to
+# b) the architectures you are NOT interested in
+# c) the packages you are interested in
+# 3. Upload the file to master. Rename it to ~/.procmailrc, or refer to it
+# from ~/.procmailrc using INCLUDERC
+#
+# That should be it, configured, try sending a mail to your debian.org address
+# and see if it makes its way to the specified e-mail forwarding address.
+#
+# Read the procmail, procmailrc, procmailex and procmailsc for more
+# information.
+# Master mail filtering procmail file by Edward Betts <edward@debian.org>
+
+# Configuration
+
+# Forwarding address, the place to send all the mail that is not erased.
+# PLEASE CHANGE THIS! I DO NOT WANT YOUR MAIL! I could set up some stuff with
+# LOGNAME to check this, but it would reduce performance and I trust my fellow
+# developers.
+FORWARD=edward@hairnet.demon.co.uk
+
+# The architectures that do NOT interest you. If you are an i386 man like me,
+# then this setting should be fine, you will get i386 and hurd-i386 changes.
+# If a new architectures is introduced (MIPS? ia64?) you will see uploads
+# listed here until you add it to this line.
+ARCHS=alpha|arm|powerpc|sparc|m68k
+
+# Packages changes on other architectures of interest. This is basically a list
+# of the binary packages that I maintain. As far as I see it most developers
+# will just want to change this to a list of packages that they maintain.
+PACKAGES=colortail|esh|vh|x2vnc|sniffit # Packages on other archs of interest
+
+# Debian Development Changes mailing list is big. Archs that are not of
+# interest to me are deleted.
+#
+# The only exception is packages that I would like to see when they are
+# compiled on other Archs; I use this for my own binary packages.
+
+:0:
+* ^X-Mailing-List: <debian-devel-changes@lists.debian.org>
+* $^Subject: Accepted .+ \(($ARCHS )*($ARCHS)\) to .+
+* !$^Subject: Accepted ($PACKAGES) .+
+/dev/null
+
+# Every thing else goes to the forward address.
+
+:0
+* !^FROM_DAEMON
+* !^X-Loop: $FORWARD
+| formail -A"X-Loop: $FORWARD" | $SENDMAIL -oi $FORWARD
+
+# vim:ft=procmail
--- /dev/null
+include ../Makefile.common
+GEN_TR_MAN1S := $(patsubst %.1,fr/%.fr.1,$(GEN_MAN1S))
+GEN_TR_MAN1S += $(patsubst %.1,de/%.de.1,$(GEN_MAN1S))
+
+all: translate
+# GEN_TR_MAN1S needs translate finished, serialize the calls
+ @$(MAKE) -C . transform
+transform: $(GEN_TR_MAN1S)
+
+translate: ../scripts/devscripts.1
+ po4a --previous --no-backups --keep=0 devscripts-po4a.conf
+ touch translate
+
+clean: ../scripts/devscripts.1
+ po4a --previous --rm-translations --no-backups devscripts-po4a.conf
+ rm -f $(GEN_TR_MAN1S) translate
+ rm -rf de fr
+
+../scripts/devscripts.1:
+ # po4a translate and clean need ../scripts/devscripts.1, rebuild it
+ $(MAKE) -C ../scripts/ devscripts.1
+
+de/%.de.1: de/%.de.pl translate
+ podchecker $<
+ pod2man --utf8 --center=" " --release="Debian-Hilfswerkzeuge" $< > $@
+de/%.de.1: de/%.de.pod translate
+ podchecker $<
+ pod2man --utf8 --center=" " --release="Debian-Hilfswerkzeuge" $< > $@
+de/%.de.1: de/%.de.dbk translate
+ xsltproc --nonet -o $@ \
+ /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl $<
+# xsltproc writes out to foo.1 even if you tell it to do otherwise, so we have
+# to rename the file after it's generated
+ mv de/$*.1 $@
+
+fr/%.fr.1: fr/%.fr.pl translate
+ podchecker $<
+ pod2man --utf8 --center=" " --release="Utilitaires Debian" $< > $@
+fr/%.fr.1: fr/%.fr.pod translate
+ podchecker $<
+ pod2man --utf8 --center=" " --release="Utilitaires Debian" $< > $@
+fr/%.fr.1: fr/%.fr.dbk translate
+ xsltproc --nonet -o $@ \
+ /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl $<
+# xsltproc writes out to foo.1 even if you tell it to do otherwise, so we have
+# to rename the file after it's generated
+ mv fr/$*.1 $@
--- /dev/null
+PO4A-HEADER:mode=after;position=^\.SH BESCHREIBUNG;beginboundary=FakePo4aBoundary
+.SH ÜBERSETZUNG
+Diese Übersetzung wurde mit dem Werkzeug
+.B po4a
+<URL:https://po4a.alioth.debian.org/>
+durch Chris Leick
+.I c.leick@vollbio.de
+im Juli 2012 erstellt und vom deutschen Debian-Übersetzer-Team korrekturgelesen.
+Bitte melden Sie alle Fehler in der Übersetzung an
+.I debian-l10n-german@lists.debian.org
+oder als Fehlerbericht an das Paket
+.IR devscripts .
+Sie können mit dem folgenden Befehl das englische
+Original anzeigen
+.RB "»" "man -L C"
+.IR "Abschnitt deutsche_Handbuchseite" "«."
--- /dev/null
+PO4A-HEADER:mode=after;position=AUTEUR;endboundary=</refsect1>
+
+ <refsect1>
+ <title>TRADUCTION</title>
+
+ <para>
+ Cette page de manuel a été traduite par Cyril Brulebois,
+ Thomas Huriaux et David Prévot.
+ </para>
+
+ <para>
+ L'équipe de traduction a fait le maximum pour réaliser une adaptation
+ française de qualité.
+ </para>
+
+ <para>
+ La version anglaise la plus à jour de ce document est toujours
+ consultable en ajoutant l'option « -L C » à la
+ commande <command>man</command>.
+ </para>
+
+ <para>
+ N'hésitez pas à signaler à l'auteur ou à la liste de traduction
+ <email>debian-l10-french@lists.debian.org</email>
+ selon le cas, toute erreur dans cette page de manuel.
+ </para>
+ </refsect1>
--- /dev/null
+PO4A-HEADER:mode=after;position=^\.SH NOM;beginboundary=FakePo4aBoundary
+.SH TRADUCTION
+Ce document est une traduction, maintenue à l'aide de l'outil
+po4a <\fIhttps://po4a.alioth.debian.org/\fR> par l'équipe de
+traduction francophone du projet Debian.
+
+Nicolas François, Guillaume Delacour, Cyril Brulebois, Thomas Huriaux
+et David Prévot ont réalisé cette traduction.
+
+L'équipe de traduction a fait le maximum pour réaliser une adaptation
+française de qualité.
+Veuillez signaler toute erreur de traduction en écrivant à
+.nh
+<\fIdebian\-l10n\-french@lists.debian.org\fR>
+.hy
+ou par un rapport de bogue sur le paquet devscripts.
+
+La version anglaise la plus à jour de ce document est toujours consultable
+en ajoutant l'option «\ \fB\-L\ C\fR\ » à la commande \fBman\fR.
--- /dev/null
+PO4A-HEADER:mode=after;position=^=head1 NOM;beginboundary=FakePo4aBoundary
+=head1 TRADUCTION
+
+Cyril Brulebois <I<cyril.brulebois@enst-bretagne.fr>>, 2006
+
+Thomas Huriaux <I<thomas.huriaux@gmail.com>>, 2006
+
+David Prévot <I<david@tilapin.org>>, 2010-2013
--- /dev/null
+[po_directory] po/
+
+# List the documents to translate, their format, their translations
+# (as well as the addendums to apply to the translations)
+[type:man] ../scripts/annotate-output.1 \
+ $lang:$lang/annotate-output.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/archpath.1 \
+ $lang:$lang/archpath.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/bts.pl \
+ $lang:$lang/bts.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:pod] ../scripts/build-rdeps.pl \
+ $lang:$lang/build-rdeps.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:pod] ../scripts/chdist.pl \
+ $lang:$lang/chdist.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/checkbashisms.1 \
+ $lang:$lang/checkbashisms.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/cowpoke.1 \
+ $lang:$lang/cowpoke.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/cvs-debc.1 \
+ $lang:$lang/cvs-debc.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/cvs-debi.1 \
+ $lang:$lang/cvs-debi.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/cvs-debrelease.1 \
+ $lang:$lang/cvs-debrelease.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/cvs-debuild.1 \
+ $lang:$lang/cvs-debuild.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/dcmd.1 \
+ $lang:$lang/dcmd.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/dcontrol.pl \
+ $lang:$lang/dcontrol.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/dd-list.1 \
+ $lang:$lang/dd-list.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/debc.1 \
+ $lang:$lang/debc.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/debchange.1 \
+ $lang:$lang/debchange.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/debcheckout.pl \
+ $lang:$lang/debcheckout.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/debclean.1 \
+ $lang:$lang/debclean.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/debcommit.pl \
+ $lang:$lang/debcommit.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/debdiff.1 \
+ $lang:$lang/debdiff.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/debi.1 \
+ $lang:$lang/debi.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/debpkg.1 \
+ $lang:$lang/debpkg.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/debrelease.1 \
+ $lang:$lang/debrelease.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:docbook] ../scripts/deb-reversion.dbk \
+ $lang:$lang/deb-reversion.$lang.dbk add_$lang:?add_$lang/translator_dbk.add
+[type:man] ../scripts/debrsign.1 \
+ $lang:$lang/debrsign.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/debsign.1 \
+ $lang:$lang/debsign.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/debsnap.1 \
+ $lang:$lang/debsnap.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/debuild.1 \
+ $lang:$lang/debuild.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/desktop2menu.pl \
+ $lang:$lang/desktop2menu.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/dep3changelog.1 \
+ $lang:$lang/dep3changelog.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/devscripts.1 \
+ $lang:$lang/devscripts.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/dget.pl \
+ $lang:$lang/dget.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/diff2patches.1 \
+ $lang:$lang/diff2patches.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/dpkg-depcheck.1 \
+ $lang:$lang/dpkg-depcheck.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/dpkg-genbuilddeps.1 \
+ $lang:$lang/dpkg-genbuilddeps.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../doc/edit-patch.1 \
+ $lang:$lang/edit-patch.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/dscextract.1 \
+ $lang:$lang/dscextract.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/dscverify.1 \
+ $lang:$lang/dscverify.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/getbuildlog.1 \
+ $lang:$lang/getbuildlog.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/grep-excuses.1 \
+ $lang:$lang/grep-excuses.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/licensecheck.pl \
+ $lang:$lang/licensecheck.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/list-unreleased.1 \
+ $lang:$lang/list-unreleased.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/manpage-alert.1 \
+ $lang:$lang/manpage-alert.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/mass-bug.pl \
+ $lang:$lang/mass-bug.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/mergechanges.1 \
+ $lang:$lang/mergechanges.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/mk-build-deps.pl \
+ $lang:$lang/mk-build-deps.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:pod] ../scripts/mk-origtargz.pl \
+ $lang:$lang/mk-origtargz.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:pod] ../scripts/namecheck.pl \
+ $lang:$lang/namecheck.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/nmudiff.1 \
+ $lang:$lang/nmudiff.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/origtargz.pl \
+ $lang:$lang/origtargz.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/plotchangelog.1 \
+ $lang:$lang/plotchangelog.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/pts-subscribe.1 \
+ $lang:$lang/pts-subscribe.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/rc-alert.1 \
+ $lang:$lang/rc-alert.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/rmadison.pl \
+ $lang:$lang/rmadison.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:pod] ../scripts/sadt.pod \
+ $lang:$lang/sadt.$lang.pod add_$lang:?add_$lang/translator_pod.add
+[type:man] ../doc/suspicious-source.1 \
+ $lang:$lang/suspicious-source.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/svnpath.pl \
+ $lang:$lang/svnpath.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:pod] ../scripts/tagpending.pl \
+ $lang:$lang/tagpending.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:pod] ../scripts/transition-check.pl \
+ $lang:$lang/transition-check.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/uscan.1 \
+ $lang:$lang/uscan.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/uupdate.1 \
+ $lang:$lang/uupdate.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../doc/what-patch.1 \
+ $lang:$lang/what-patch.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/whodepends.1 \
+ $lang:$lang/whodepends.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/who-uploads.1 \
+ $lang:$lang/who-uploads.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:pod] ../scripts/who-permits-upload.pl \
+ $lang:$lang/who-permits-upload.$lang.pl add_$lang:?add_$lang/translator_pod.add
+[type:man] ../scripts/wnpp-alert.1 \
+ $lang:$lang/wnpp-alert.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/wnpp-check.1 \
+ $lang:$lang/wnpp-check.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../doc/wrap-and-sort.1 \
+ $lang:$lang/wrap-and-sort.$lang.1 add_$lang:?add_$lang/translator_man.add
+[type:man] ../scripts/devscripts.conf.5 \
+ $lang:$lang/devscripts.conf.$lang.5 add_$lang:?add_$lang/translator_man.add
--- /dev/null
+# Translation of the devscripts documentation to German.
+# This file is distributed under the same license as the devscripts package.
+# Copyright (C) Christoph Lameter, Julian Gilbey, Klee Dienes.
+# Copyright (C) of this file Chris Leick <c.leick@vollbio.de>, 2012-2014.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: devscripts 2.14.6\n"
+"Report-Msgid-Bugs-To: devscripts@packages.debian.org\n"
+"POT-Creation-Date: 2014-12-23 08:54-0400\n"
+"PO-Revision-Date: 2014-09-23 21:32+0200\n"
+"Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
+"Language-Team: de <debian-l10n-german@lists.debian.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: TH
+#: ../scripts/annotate-output.1:1
+#, no-wrap
+msgid "ANNOTATE-OUTPUT"
+msgstr "ANNOTATE-OUTPUT"
+
+#. type: TH
+#: ../scripts/annotate-output.1:1 ../scripts/archpath.1:1
+#: ../scripts/checkbashisms.1:1 ../scripts/cvs-debc.1:1
+#: ../scripts/cvs-debi.1:1 ../scripts/cvs-debrelease.1:1
+#: ../scripts/cvs-debuild.1:1 ../scripts/dcmd.1:1 ../scripts/debc.1:1
+#: ../scripts/debchange.1:1 ../scripts/debclean.1:1 ../scripts/debdiff.1:1
+#: ../scripts/debi.1:1 ../scripts/debpkg.1:1 ../scripts/debrelease.1:1
+#: ../scripts/debrsign.1:1 ../scripts/debsign.1:1 ../scripts/debuild.1:1
+#: ../scripts/dep3changelog.1:1 ../scripts/devscripts.1:1
+#: ../scripts/dpkg-genbuilddeps.1:1 ../doc/edit-patch.1:1
+#: ../scripts/dscextract.1:1 ../scripts/dscverify.1:1
+#: ../scripts/getbuildlog.1:1 ../scripts/grep-excuses.1:1
+#: ../scripts/list-unreleased.1:1 ../scripts/manpage-alert.1:1
+#: ../scripts/mergechanges.1:1 ../scripts/nmudiff.1:1
+#: ../scripts/plotchangelog.1:1 ../scripts/pts-subscribe.1:1
+#: ../scripts/rc-alert.1:1 ../doc/suspicious-source.1:15 ../scripts/uscan.1:1
+#: ../scripts/uupdate.1:1 ../doc/what-patch.1:1 ../scripts/whodepends.1:1
+#: ../scripts/who-uploads.1:1 ../scripts/wnpp-alert.1:1
+#: ../scripts/wnpp-check.1:1 ../doc/wrap-and-sort.1:15
+#: ../scripts/devscripts.conf.5:1
+#, no-wrap
+msgid "Debian Utilities"
+msgstr "Debian-Hilfswerkzeuge"
+
+#. type: TH
+#: ../scripts/annotate-output.1:1 ../scripts/archpath.1:1
+#: ../scripts/checkbashisms.1:1 ../scripts/cvs-debc.1:1
+#: ../scripts/cvs-debi.1:1 ../scripts/cvs-debrelease.1:1
+#: ../scripts/cvs-debuild.1:1 ../scripts/dcmd.1:1 ../scripts/debc.1:1
+#: ../scripts/debchange.1:1 ../scripts/debclean.1:1 ../scripts/debdiff.1:1
+#: ../scripts/debi.1:1 ../scripts/debpkg.1:1 ../scripts/debrelease.1:1
+#: ../scripts/debrsign.1:1 ../scripts/debsign.1:1 ../scripts/debuild.1:1
+#: ../scripts/dep3changelog.1:1 ../scripts/devscripts.1:1
+#: ../scripts/dpkg-depcheck.1:1 ../scripts/dpkg-genbuilddeps.1:1
+#: ../doc/edit-patch.1:1 ../scripts/dscextract.1:1 ../scripts/dscverify.1:1
+#: ../scripts/getbuildlog.1:1 ../scripts/grep-excuses.1:1
+#: ../scripts/list-unreleased.1:1 ../scripts/manpage-alert.1:1
+#: ../scripts/mergechanges.1:1 ../scripts/nmudiff.1:1
+#: ../scripts/plotchangelog.1:1 ../scripts/pts-subscribe.1:1
+#: ../scripts/rc-alert.1:1 ../doc/suspicious-source.1:15 ../scripts/uscan.1:1
+#: ../scripts/uupdate.1:1 ../doc/what-patch.1:1 ../scripts/whodepends.1:1
+#: ../scripts/who-uploads.1:1 ../scripts/wnpp-alert.1:1
+#: ../scripts/wnpp-check.1:1 ../doc/wrap-and-sort.1:15
+#: ../scripts/devscripts.conf.5:1
+#, no-wrap
+msgid "DEBIAN"
+msgstr "DEBIAN"
+
+#. type: SH
+#: ../scripts/annotate-output.1:2 ../scripts/archpath.1:2 ../scripts/bts.pl:39
+#: ../scripts/build-rdeps.pl:18 ../scripts/chdist.pl:18
+#: ../scripts/checkbashisms.1:2 ../scripts/cowpoke.1:18
+#: ../scripts/cvs-debc.1:2 ../scripts/cvs-debi.1:2
+#: ../scripts/cvs-debrelease.1:2 ../scripts/cvs-debuild.1:2
+#: ../scripts/dcmd.1:2 ../scripts/dcontrol.pl:196 ../scripts/dd-list.1:18
+#: ../scripts/debc.1:2 ../scripts/debchange.1:2 ../scripts/debcheckout.pl:24
+#: ../scripts/debclean.1:2 ../scripts/debcommit.pl:3 ../scripts/debdiff.1:2
+#: ../scripts/debi.1:2 ../scripts/debpkg.1:2 ../scripts/debrelease.1:2
+#: ../scripts/debrsign.1:2 ../scripts/debsign.1:2 ../scripts/debsnap.1:3
+#: ../scripts/debuild.1:2 ../scripts/desktop2menu.pl:24
+#: ../scripts/dep3changelog.1:2 ../scripts/devscripts.1:2
+#: ../scripts/dget.pl:508 ../scripts/diff2patches.1:2
+#: ../scripts/dpkg-depcheck.1:2 ../scripts/dpkg-genbuilddeps.1:2
+#: ../doc/edit-patch.1:2 ../scripts/dscextract.1:2 ../scripts/dscverify.1:2
+#: ../scripts/getbuildlog.1:2 ../scripts/grep-excuses.1:2
+#: ../scripts/licensecheck.pl:22 ../scripts/list-unreleased.1:2
+#: ../scripts/manpage-alert.1:2 ../scripts/mass-bug.pl:21
+#: ../scripts/mergechanges.1:2 ../scripts/mk-build-deps.pl:24
+#: ../scripts/mk-origtargz.pl:24 ../scripts/namecheck.pl:3
+#: ../scripts/nmudiff.1:2 ../scripts/origtargz.pl:20
+#: ../scripts/plotchangelog.1:2 ../scripts/pts-subscribe.1:2
+#: ../scripts/rc-alert.1:2 ../scripts/rmadison.pl:200 ../scripts/sadt.pod:17
+#: ../doc/suspicious-source.1:17 ../scripts/svnpath.pl:3
+#: ../scripts/tagpending.pl:79 ../scripts/transition-check.pl:23
+#: ../scripts/uscan.1:2 ../scripts/uupdate.1:2 ../doc/what-patch.1:2
+#: ../scripts/whodepends.1:2 ../scripts/who-uploads.1:2
+#: ../scripts/who-permits-upload.pl:42 ../scripts/wnpp-alert.1:2
+#: ../scripts/wnpp-check.1:2 ../doc/wrap-and-sort.1:16
+#: ../scripts/devscripts.conf.5:2
+#, no-wrap
+msgid "NAME"
+msgstr "BEZEICHNUNG"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:4
+msgid "annotate-output - annotate program output with time and stream"
+msgstr "annotate-output - versieht Programmausgaben mit Zeit und Datenstrom"
+
+#. type: SH
+#: ../scripts/annotate-output.1:4 ../scripts/archpath.1:4
+#: ../scripts/bts.pl:186 ../scripts/build-rdeps.pl:22 ../scripts/chdist.pl:22
+#: ../scripts/checkbashisms.1:4 ../scripts/cowpoke.1:20
+#: ../scripts/cvs-debc.1:4 ../scripts/cvs-debi.1:4
+#: ../scripts/cvs-debrelease.1:4 ../scripts/cvs-debuild.1:4
+#: ../scripts/dcmd.1:4 ../scripts/dcontrol.pl:200 ../scripts/dd-list.1:21
+#: ../scripts/debc.1:4 ../scripts/debchange.1:4 ../scripts/debcheckout.pl:28
+#: ../scripts/debclean.1:4 ../scripts/debcommit.pl:7 ../scripts/debdiff.1:4
+#: ../scripts/debi.1:4 ../scripts/debpkg.1:4 ../scripts/debrelease.1:4
+#: ../scripts/debrsign.1:4 ../scripts/debsign.1:4 ../scripts/debsnap.1:6
+#: ../scripts/debuild.1:4 ../scripts/desktop2menu.pl:28
+#: ../scripts/dep3changelog.1:4 ../scripts/dget.pl:512
+#: ../scripts/dpkg-depcheck.1:4 ../scripts/dpkg-genbuilddeps.1:4
+#: ../doc/edit-patch.1:6 ../scripts/dscextract.1:4 ../scripts/dscverify.1:4
+#: ../scripts/getbuildlog.1:4 ../scripts/grep-excuses.1:4
+#: ../scripts/licensecheck.pl:26 ../scripts/list-unreleased.1:4
+#: ../scripts/manpage-alert.1:4 ../scripts/mass-bug.pl:25
+#: ../scripts/mergechanges.1:4 ../scripts/mk-build-deps.pl:28
+#: ../scripts/mk-origtargz.pl:28 ../scripts/nmudiff.1:4
+#: ../scripts/origtargz.pl:24 ../scripts/plotchangelog.1:4
+#: ../scripts/pts-subscribe.1:4 ../scripts/rc-alert.1:4
+#: ../scripts/rmadison.pl:204 ../scripts/sadt.pod:21
+#: ../doc/suspicious-source.1:21 ../scripts/svnpath.pl:7
+#: ../scripts/tagpending.pl:83 ../scripts/transition-check.pl:27
+#: ../scripts/uscan.1:4 ../scripts/uupdate.1:4 ../doc/what-patch.1:5
+#: ../scripts/whodepends.1:4 ../scripts/who-uploads.1:4
+#: ../scripts/who-permits-upload.pl:46 ../scripts/wnpp-alert.1:4
+#: ../scripts/wnpp-check.1:4 ../doc/wrap-and-sort.1:18
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "ÜBERSICHT"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:6
+msgid "B<annotate-output> [I<options>] I<program> [I<args> ...]"
+msgstr "B<annotate-output> [I<Optionen>] I<Programm> [I<Argumente> …]"
+
+#. type: SH
+#: ../scripts/annotate-output.1:6 ../scripts/archpath.1:12
+#: ../scripts/bts.pl:190 ../scripts/build-rdeps.pl:26 ../scripts/chdist.pl:26
+#: ../scripts/checkbashisms.1:8 ../scripts/cowpoke.1:24
+#: ../scripts/cvs-debc.1:6 ../scripts/cvs-debi.1:6
+#: ../scripts/cvs-debrelease.1:7 ../scripts/cvs-debuild.1:7
+#: ../scripts/dcmd.1:6 ../scripts/dcontrol.pl:208 ../scripts/dd-list.1:26
+#: ../scripts/debc.1:6 ../scripts/debchange.1:8 ../scripts/debcheckout.pl:40
+#: ../scripts/debclean.1:6 ../scripts/debcommit.pl:11 ../scripts/debdiff.1:15
+#: ../scripts/debi.1:6 ../scripts/debpkg.1:6 ../scripts/debrelease.1:6
+#: ../scripts/deb-reversion.dbk:82 ../scripts/debrsign.1:7
+#: ../scripts/debsign.1:6 ../scripts/debsnap.1:14 ../scripts/debuild.1:10
+#: ../scripts/desktop2menu.pl:34 ../scripts/dep3changelog.1:6
+#: ../scripts/devscripts.1:4 ../scripts/dget.pl:522
+#: ../scripts/diff2patches.1:10 ../scripts/dpkg-depcheck.1:6
+#: ../scripts/dpkg-genbuilddeps.1:6 ../doc/edit-patch.1:11
+#: ../scripts/dscextract.1:6 ../scripts/dscverify.1:6
+#: ../scripts/getbuildlog.1:8 ../scripts/grep-excuses.1:6
+#: ../scripts/licensecheck.pl:35 ../scripts/list-unreleased.1:6
+#: ../scripts/manpage-alert.1:8 ../scripts/mass-bug.pl:29
+#: ../scripts/mergechanges.1:6 ../scripts/mk-build-deps.pl:34
+#: ../scripts/mk-origtargz.pl:38 ../scripts/nmudiff.1:6
+#: ../scripts/origtargz.pl:34 ../scripts/plotchangelog.1:7
+#: ../scripts/pts-subscribe.1:8 ../scripts/rc-alert.1:8
+#: ../scripts/rmadison.pl:212 ../scripts/sadt.pod:25
+#: ../doc/suspicious-source.1:24 ../scripts/svnpath.pl:17
+#: ../scripts/tagpending.pl:87 ../scripts/transition-check.pl:33
+#: ../scripts/uscan.1:6 ../scripts/uupdate.1:8 ../doc/what-patch.1:8
+#: ../scripts/whodepends.1:6 ../scripts/who-uploads.1:6
+#: ../scripts/who-permits-upload.pl:50 ../scripts/wnpp-alert.1:8
+#: ../scripts/wnpp-check.1:8 ../doc/wrap-and-sort.1:22
+#: ../scripts/devscripts.conf.5:4
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "BESCHREIBUNG"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:10
+msgid ""
+"B<annotate-output> will execute the specified program, while prepending "
+"every line with the current time and O for stdout and E for stderr."
+msgstr ""
+"B<annotate-output> wird das angegebene Programm ausführen, wobei jeder Zeile "
+"die aktuelle Zeit und O für die Standardausgabe (Stdout) sowie E für die "
+"Standardfehlerausgabe (Stderr) vorangestellt wird."
+
+#. type: SH
+#: ../scripts/annotate-output.1:11 ../scripts/bts.pl:242
+#: ../scripts/build-rdeps.pl:30 ../scripts/chdist.pl:33
+#: ../scripts/checkbashisms.1:23 ../scripts/cowpoke.1:29
+#: ../scripts/cvs-debc.1:24 ../scripts/cvs-debi.1:28
+#: ../scripts/cvs-debrelease.1:21 ../scripts/cvs-debuild.1:32
+#: ../scripts/dcmd.1:15 ../scripts/dcontrol.pl:242 ../scripts/dd-list.1:58
+#: ../scripts/debc.1:64 ../scripts/debchange.1:145
+#: ../scripts/debcheckout.pl:68 ../scripts/debclean.1:60
+#: ../scripts/debcommit.pl:19 ../scripts/debdiff.1:52 ../scripts/debi.1:65
+#: ../scripts/debrelease.1:56 ../scripts/deb-reversion.dbk:128
+#: ../scripts/debrsign.1:30 ../scripts/debsign.1:39 ../scripts/debsnap.1:26
+#: ../scripts/debuild.1:219 ../scripts/dep3changelog.1:15
+#: ../scripts/dget.pl:563 ../scripts/diff2patches.1:16
+#: ../scripts/dpkg-depcheck.1:15 ../scripts/dscextract.1:14
+#: ../scripts/dscverify.1:17 ../scripts/getbuildlog.1:24
+#: ../scripts/grep-excuses.1:13 ../scripts/licensecheck.pl:44
+#: ../scripts/list-unreleased.1:12 ../scripts/manpage-alert.1:14
+#: ../scripts/mass-bug.pl:59 ../scripts/mk-build-deps.pl:44
+#: ../scripts/mk-origtargz.pl:52 ../scripts/nmudiff.1:21
+#: ../scripts/origtargz.pl:95 ../scripts/plotchangelog.1:43
+#: ../scripts/pts-subscribe.1:18 ../scripts/rc-alert.1:17
+#: ../scripts/rmadison.pl:221 ../scripts/sadt.pod:42
+#: ../doc/suspicious-source.1:34 ../scripts/tagpending.pl:93
+#: ../scripts/transition-check.pl:42 ../scripts/uscan.1:363
+#: ../scripts/uupdate.1:52 ../doc/what-patch.1:15 ../scripts/whodepends.1:10
+#: ../scripts/who-uploads.1:15 ../scripts/who-permits-upload.pl:56
+#: ../scripts/wnpp-alert.1:17 ../scripts/wnpp-check.1:16
+#: ../doc/wrap-and-sort.1:33
+#, no-wrap
+msgid "OPTIONS"
+msgstr "OPTIONEN"
+
+#. type: TP
+#: ../scripts/annotate-output.1:12
+#, no-wrap
+msgid "B<+FORMAT>"
+msgstr "B<+FORMAT>"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:16
+msgid ""
+"Controls the timestamp format, as per B<date>(1). Defaults to \"%H:%M:%S\"."
+msgstr ""
+"steuert das Zeitstempelformat, wie bei B<date>(1). Vorgabe ist »%H:%M:%S«."
+
+#. type: TP
+#: ../scripts/annotate-output.1:16 ../scripts/chdist.pl:37
+#: ../scripts/dcontrol.pl:254 ../scripts/dd-list.1:59
+#: ../scripts/debcheckout.pl:93 ../scripts/debsnap.1:57 ../scripts/dget.pl:621
+#: ../scripts/dpkg-depcheck.1:96 ../scripts/getbuildlog.1:25
+#: ../scripts/mk-build-deps.pl:79 ../scripts/rmadison.pl:245
+#: ../scripts/sadt.pod:59 ../doc/suspicious-source.1:35 ../doc/what-patch.1:17
+#: ../doc/wrap-and-sort.1:34
+#, no-wrap
+msgid "B<-h>, B<--help>"
+msgstr "B<-h>, B<--help>"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:19 ../scripts/debchange.1:389
+#: ../scripts/debclean.1:87 ../scripts/debrelease.1:102
+#: ../scripts/debsign.1:103 ../scripts/dep3changelog.1:19
+#: ../scripts/dscverify.1:39 ../scripts/nmudiff.1:76
+#: ../scripts/pts-subscribe.1:31 ../scripts/uupdate.1:85
+#: ../scripts/who-uploads.1:47
+msgid "Display a help message and exit successfully."
+msgstr "zeigt eine Hilfenachricht an und endet erfolgreich"
+
+#. type: SH
+#: ../scripts/annotate-output.1:20 ../scripts/dscextract.1:30
+#: ../scripts/uscan.1:348
+#, no-wrap
+msgid "EXAMPLE"
+msgstr "BEISPIEL"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:30
+#, no-wrap
+msgid ""
+"$ annotate-output make\n"
+"21:41:21 I: Started make\n"
+"21:41:21 O: gcc -Wall program.c\n"
+"21:43:18 E: program.c: Couldn't compile, and took me ages to find out\n"
+"21:43:19 E: collect2: ld returned 1 exit status\n"
+"21:43:19 E: make: *** [all] Error 1\n"
+"21:43:19 I: Finished with exitcode 2\n"
+msgstr ""
+"$ annotate-output make\n"
+"21:41:21 I: Started make\n"
+"21:41:21 O: gcc -Wall program.c\n"
+"21:43:18 E: program.c: Couldn't compile, and took me ages to find out\n"
+"21:43:19 E: collect2: ld returned 1 exit status\n"
+"21:43:19 E: make: *** [all] Error 1\n"
+"21:43:19 I: Finished with exitcode 2\n"
+
+#. type: SH
+#: ../scripts/annotate-output.1:32 ../scripts/debsnap.1:136
+#: ../scripts/rc-alert.1:119 ../scripts/whodepends.1:17
+#, no-wrap
+msgid "BUGS"
+msgstr "FEHLER"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:36
+msgid ""
+"Since stdout and stderr are processed in parallel, it can happen that some "
+"lines received on stdout will show up before later-printed stderr lines (and "
+"vice-versa)."
+msgstr ""
+"Da die Standardausgabe (Stdout) und die Standardfehlerausgabe (Stderr) "
+"parallel verarbeitet werden, kann es vorkommen, dass einige Zeilen, die auf "
+"der Standardausgabe empfangen werden, vor später ausgegebenen Zeilen auf der "
+"Standardfehlerausgabe erscheinen (und umgekehrt)."
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:41
+msgid ""
+"This is unfortunately very hard to fix with the current annotation "
+"strategy. A fix would involve switching to PTRACE'ing the process. Giving "
+"nice a (much) higher priority over the executed program could however cause "
+"this behaviour to show up less frequently."
+msgstr ""
+"Dies ist leider sehr schwer mit der derzeitigen Kommentierungsstrategie zu "
+"beheben. Eine Fehlerbehebung würde ein PTRACE des Prozesses einbeziehen, "
+"»nice« eine (viel) höhere Priorität über das ausgeführte Programm zu geben, "
+"könnte jedoch dazu führen, dass sich dieses Verhalten seltener zeigt."
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:46
+msgid ""
+"The program does not work as well when the output is not linewise. In "
+"particular, when an interactive program asks for input, the question might "
+"not be shown until after you have answered it. This will give the "
+"impression that the annotated program has hung, while it has not."
+msgstr ""
+"Das Programm funktioniert auch dann nicht, wenn die Ausgabe nicht "
+"zeilenweise erfolgt. Insbesondere, wenn ein interaktives Programm auf eine "
+"Eingabe wartet, könnte es sein, dass die Frage erst angezeigt wird, nachdem "
+"Sie sie beantwortet haben. Dies wird den Eindruck vermitteln, dass das "
+"Programm sich aufgehängt hat, was aber nicht der Fall ist."
+
+#. type: SH
+#: ../scripts/annotate-output.1:47 ../scripts/bts.pl:4113
+#: ../scripts/checkbashisms.1:63 ../scripts/cowpoke.1:379
+#: ../scripts/cvs-debc.1:58 ../scripts/cvs-debi.1:62
+#: ../scripts/cvs-debrelease.1:64 ../scripts/cvs-debuild.1:53
+#: ../scripts/dcmd.1:107 ../scripts/dcontrol.pl:287 ../scripts/debc.1:115
+#: ../scripts/debchange.1:469 ../scripts/debcheckout.pl:228
+#: ../scripts/debclean.1:107 ../scripts/debcommit.pl:912
+#: ../scripts/debdiff.1:217 ../scripts/debi.1:132 ../scripts/debrelease.1:132
+#: ../scripts/deb-reversion.dbk:247 ../scripts/debrsign.1:66
+#: ../scripts/debsign.1:134 ../scripts/debsnap.1:118 ../scripts/debuild.1:410
+#: ../scripts/dep3changelog.1:28 ../scripts/dget.pl:683
+#: ../scripts/diff2patches.1:45 ../scripts/dpkg-depcheck.1:118
+#: ../scripts/dpkg-genbuilddeps.1:30 ../scripts/dscverify.1:75
+#: ../scripts/grep-excuses.1:38 ../scripts/list-unreleased.1:19
+#: ../scripts/mk-origtargz.pl:143 ../scripts/nmudiff.1:108
+#: ../scripts/origtargz.pl:157 ../scripts/plotchangelog.1:124
+#: ../scripts/pts-subscribe.1:51 ../scripts/rc-alert.1:121
+#: ../scripts/rmadison.pl:332 ../scripts/sadt.pod:69
+#: ../scripts/tagpending.pl:148 ../scripts/uscan.1:585
+#: ../scripts/uupdate.1:170 ../doc/what-patch.1:35
+#: ../scripts/who-permits-upload.pl:161 ../scripts/wnpp-alert.1:29
+#: ../scripts/wnpp-check.1:23 ../scripts/devscripts.conf.5:54
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "SIEHE AUCH"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:49
+msgid "B<date>(1)"
+msgstr "B<date>(1)"
+
+#. type: SH
+#: ../scripts/annotate-output.1:50
+#, no-wrap
+msgid "SUPPORT"
+msgstr "UNTERSTÜTZUNG"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:54
+msgid ""
+"This program is community-supported (meaning: you'll need to fix it "
+"yourself). Patches are however appreciated, as is any feedback (positive or "
+"negative)."
+msgstr ""
+"Dieses Programm wird von der Gemeinschaft unterstützt (heißt: Sie müssen "
+"selbst Fehler beheben). Patches werden jedoch gewürdigt, wie auch andere "
+"(positive oder negative) Rückmeldung."
+
+#. type: SH
+#: ../scripts/annotate-output.1:55 ../scripts/archpath.1:54
+#: ../scripts/build-rdeps.pl:344 ../scripts/checkbashisms.1:65
+#: ../scripts/cowpoke.1:385 ../scripts/cvs-debc.1:63 ../scripts/cvs-debi.1:67
+#: ../scripts/cvs-debrelease.1:68 ../scripts/cvs-debuild.1:58
+#: ../scripts/dcmd.1:110 ../scripts/dcontrol.pl:280 ../scripts/dd-list.1:100
+#: ../scripts/debc.1:119 ../scripts/debchange.1:475
+#: ../scripts/debcheckout.pl:233 ../scripts/debclean.1:110
+#: ../scripts/debcommit.pl:908 ../scripts/debdiff.1:224 ../scripts/debi.1:135
+#: ../scripts/debpkg.1:23 ../scripts/debrelease.1:136
+#: ../scripts/deb-reversion.dbk:292 ../scripts/debrsign.1:70
+#: ../scripts/debsign.1:145 ../scripts/debuild.1:422
+#: ../scripts/desktop2menu.pl:52 ../scripts/dep3changelog.1:26
+#: ../scripts/dget.pl:675 ../scripts/diff2patches.1:48
+#: ../scripts/dpkg-genbuilddeps.1:36 ../scripts/dscextract.1:32
+#: ../scripts/dscverify.1:79 ../scripts/getbuildlog.1:41
+#: ../scripts/grep-excuses.1:40 ../scripts/licensecheck.pl:129
+#: ../scripts/list-unreleased.1:21 ../scripts/manpage-alert.1:20
+#: ../scripts/mass-bug.pl:522 ../scripts/mergechanges.1:18
+#: ../scripts/mk-build-deps.pl:94 ../scripts/mk-origtargz.pl:147
+#: ../scripts/namecheck.pl:30 ../scripts/nmudiff.1:112
+#: ../scripts/origtargz.pl:161 ../scripts/plotchangelog.1:126
+#: ../scripts/pts-subscribe.1:56 ../scripts/rc-alert.1:125
+#: ../scripts/rmadison.pl:336 ../scripts/svnpath.pl:93
+#: ../scripts/transition-check.pl:81 ../scripts/uscan.1:591
+#: ../scripts/uupdate.1:177 ../scripts/whodepends.1:19
+#: ../scripts/who-uploads.1:71 ../scripts/who-permits-upload.pl:156
+#: ../scripts/wnpp-alert.1:31 ../scripts/wnpp-check.1:33
+#: ../scripts/devscripts.conf.5:58
+#, no-wrap
+msgid "AUTHOR"
+msgstr "AUTOR"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:59
+msgid ""
+"B<annotate-output> was written by Jeroen van Wolffelaar "
+"E<lt>jeroen@wolffelaar.nlE<gt>. This manpage comes under the same copyright "
+"as annotate-output itself, read /usr/bin/annotate-output (or wherever you "
+"install it) for the details."
+msgstr ""
+"B<annotate-output> wurde von Jeroen van Wolffelaar E<lt>jeroen@wolffelaar."
+"nlE<gt> geschrieben. Diese Handbuchseite erscheint mit dem gleichen "
+"Copyright wie Annotate-Output selbst. Lesen Sie /usr/bin/annotate-output "
+"(oder wo auch immer Sie es installiert haben), um weitere Einzelheiten zu "
+"erhalten."
+
+#. type: TH
+#: ../scripts/archpath.1:1
+#, no-wrap
+msgid "ARCHPATH"
+msgstr "ARCHPATH"
+
+#. type: Plain text
+#: ../scripts/archpath.1:4
+msgid ""
+"archpath - output arch (tla/Bazaar) archive names, with support for branches"
+msgstr ""
+"archpath - gibt Architekturarchivnamen (tla/Bazaar) mit Unterstützung für "
+"Zweige aus"
+
+#. type: Plain text
+#: ../scripts/archpath.1:6
+msgid "B<archpath>"
+msgstr "B<archpath>"
+
+#. type: Plain text
+#: ../scripts/archpath.1:9
+msgid "B<archpath> I<branch>"
+msgstr "B<archpath> I<Zweig>"
+
+#. type: Plain text
+#: ../scripts/archpath.1:12
+msgid "B<archpath> I<branch>B<-->I<version>"
+msgstr "B<archpath> I<Zweig>B<-->I<Version>"
+
+#. type: Plain text
+#: ../scripts/archpath.1:15
+msgid ""
+"B<archpath> is intended to be run in an arch (tla or Bazaar) working copy."
+msgstr ""
+"B<archpath> ist dazu gedacht, in einer Arbeitskopie einer Architektur (Tla "
+"oder Bazaar) ausgeführt zu werden."
+
+#. type: Plain text
+#: ../scripts/archpath.1:20
+msgid ""
+"In its simplest usage, B<archpath> with no parameters outputs the package "
+"name (archive/category--branch--version) associated with the working copy."
+msgstr ""
+"In seinem einfachsten Aufruf gibt B<archpath> ohne Parameter den Paketnamen "
+"(Archive/Kategorie--Zweig--Version) aus, der mit der Arbeitskopie verbunden "
+"ist."
+
+#. type: Plain text
+#: ../scripts/archpath.1:28
+msgid ""
+"If a parameter is given, it may either be a branch--version, in which case "
+"B<archpath> will output a corresponding package name in the current archive "
+"and category, or a plain branch name (without \\(oq--\"), in which case "
+"B<archpath> will output a corresponding package name in the current archive "
+"and category and with the same version as the current working copy."
+msgstr ""
+"Falls ein Parameter angegeben wurde, könnte es entweder eine Zweig--Version "
+"sein, in diesem Fall wird B<archpath> einen zugehörigen Paketnamen im "
+"aktuellen Archiv und in der aktuellen Kategorie ausgeben, oder ein einfacher "
+"Zweigname (ohne »--«). In diesem Fall wird B<archpath> einen zugehörigen "
+"Paketnamen im aktuellen Archiv in der aktuellen Kategorie und mit der selben "
+"Version wie die aktuelle Arbeitskopie ausgeben."
+
+#. type: Plain text
+#: ../scripts/archpath.1:32
+msgid ""
+"This is useful for branching. For example, if you're using Bazaar and you "
+"want to create a branch for a new feature, you might use a command like this:"
+msgstr ""
+"Dies ist nützlich beim Anlegen von Entwicklerzweigen. Falls Sie "
+"beispielsweise Bazaar benutzen und einen Zweig für eine neue Funktionalität "
+"erzeugen möchten, könnten Sie eine Befehlszeile wie die folgende verwenden:"
+
+#. type: Plain text
+#: ../scripts/archpath.1:37
+#, no-wrap
+msgid "CW<baz branch $(archpath) $(archpath new-feature)>\n"
+msgstr "CW<baz branch $(archpath) $(archpath neue_funktionalität)>\n"
+
+#. type: Plain text
+#: ../scripts/archpath.1:43
+msgid ""
+"Or if you want to tag your current code onto a \\(oqreleases\\(cq branch as "
+"version 1.0, you might use a command like this:"
+msgstr ""
+"Oder, falls Sie Ihren aktuellen Code auf einen »releases«-Zweig wie Version "
+"1.0 markieren wollen, können Sie einen Befehl wie diesen verwenden:"
+
+#. type: Plain text
+#: ../scripts/archpath.1:48
+#, no-wrap
+msgid "CW<baz branch $(archpath) $(archpath releases--1.0)>\n"
+msgstr "CW<baz branch $(archpath) $(archpath releases--1.0)>\n"
+
+#. type: Plain text
+#: ../scripts/archpath.1:54
+msgid ""
+"That's much easier than using \\(oqbaz tree-version\\(cq to look up the "
+"package name and manually modifying the result."
+msgstr ""
+"Das ist wesentlich einfacher, als »baz tree-version« zu benutzen, um den "
+"Paketnamen nachzuschlagen und das Ergebnis manuell zu verändern."
+
+#. type: Plain text
+#: ../scripts/archpath.1:57
+msgid "B<archpath> was written by"
+msgstr "B<archpath> wurde geschrieben von"
+
+#. type: Plain text
+#: ../scripts/archpath.1:59
+msgid "Colin Watson E<lt>cjwatson@debian.orgE<gt>."
+msgstr "Colin Watson E<lt>cjwatson@debian.orgE<gt>."
+
+#. type: Plain text
+#: ../scripts/archpath.1:63
+msgid ""
+"Like B<archpath>, this manual page is released under the GNU General Public "
+"License, version 2 or later."
+msgstr ""
+"Diese Handbuchseite wird wie B<archpath> unter der GNU General Public "
+"License, Version 2 oder später, veröffentlicht."
+
+#. type: textblock
+#: ../scripts/bts.pl:41
+msgid "bts - developers' command line interface to the BTS"
+msgstr "bts - Befehlszeilenschnittstelle der Entwickler zum BTS"
+
+#. type: textblock
+#: ../scripts/bts.pl:188
+msgid ""
+"B<bts> [I<options>] I<command> [I<args>] [B<#>I<comment>] [B<.>|B<,> "
+"I<command> [I<args>] [B<#>I<comment>]] ..."
+msgstr ""
+"B<bts> [I<Optionen>] I<Befehl> [I<Argumente>] [B<#>I<Kommentar>] [B<.>|B<,> "
+"I<Befehl> [I<Argumente>] [B<#>I<Kommentar>]] …"
+
+#. type: textblock
+#: ../scripts/bts.pl:192
+msgid ""
+"This is a command line interface to the Debian Bug Tracking System (BTS), "
+"intended mainly for use by developers. It lets the BTS be manipulated using "
+"simple commands that can be run at the prompt or in a script, does various "
+"sanity checks on the input, and constructs and sends a mail to the BTS "
+"control address for you. A local cache of web pages and e-mails from the BTS "
+"may also be created and updated."
+msgstr ""
+"Dies ist eine Befehlszeilenschnittstelle zur Debian-Fehlerdatenbank (BTS), "
+"die hauptsächlich für den Gebrauch durch Entwickler gedacht ist. Sie "
+"ermöglicht die Manipulation des BTS durch einfache Befehle, die an der "
+"Eingabeaufforderung oder in einem Skript ausgeführt werden können, führt "
+"verschiedene Plausibilitätsprüfungen der Eingabe durch und konstruiert und "
+"sendet E-Mails für Sie an die BTS-Steueradresse. Außerdem kann ein lokaler "
+"Zwischenspeicher von Webseiten und E-Mails vom BTS erzeugt und aktualisiert "
+"werden."
+
+#. type: textblock
+#: ../scripts/bts.pl:200
+msgid ""
+"In general, the command line interface is the same as what you would write "
+"in a mail to control@bugs.debian.org, just prefixed with \"bts\". For "
+"example:"
+msgstr ""
+"Im Allgemeinen ist die Befehlszeilenschnittstelle das, was Sie in einer Mail "
+"an control@bugs.debian.org schreiben würden, nur mit vorangestelltem »bts«. "
+"Zum Beispiel:"
+
+#. type: verbatim
+#: ../scripts/bts.pl:204
+#, no-wrap
+msgid ""
+" % bts severity 69042 normal\n"
+" % bts merge 69042 43233\n"
+" % bts retitle 69042 blah blah\n"
+"\n"
+msgstr ""
+" % bts severity 69042 normal\n"
+" % bts merge 69042 43233\n"
+" % bts retitle 69042 blah blah\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:208
+msgid ""
+"A few additional commands have been added for your convenience, and this "
+"program is less strict about what constitutes a valid bug number. For "
+"example, \"severity Bug#85942 normal\" is understood, as is \"severity "
+"#85942 normal\". (Of course, your shell may regard \"#\" as a comment "
+"character though, so you may need to quote it!)"
+msgstr ""
+"Für Ihren Komfort wurden ein paar zusätzliche Befehle hinzugefügt und dieses "
+"Programm ist ist weniger strikt in dem, was eine gültige Fehlernummer "
+"darstellt. Beispielsweise wird »severity Bug#85942 normal« wie auch "
+"»severity #85942 normal« verstanden. (Allerdings könnte Ihre Shell »#« als "
+"Kommentarzeichen ansehen, weswegen Sie es maskieren müssen!)"
+
+#. type: textblock
+#: ../scripts/bts.pl:214
+msgid ""
+"Also, for your convenience, this program allows you to abbreviate commands "
+"to the shortest unique substring (similar to how cvs lets you abbreviate "
+"commands). So it understands things like \"bts cl 85942\"."
+msgstr ""
+"Außerdem ermöglicht Ihnen dieses Programm zu Ihrer Annehmlichkeit Befehle "
+"auf die kleinste eindeutige Teilzeichenkette abzukürzen (ähnlich wie Sie CVS "
+"Befehle abkürzen lässt). So versteht es Dinge wie »bts cl 85942«."
+
+#. type: textblock
+#: ../scripts/bts.pl:218
+msgid ""
+"It is also possible to include a comment in the mail sent to the BTS. If "
+"your shell does not strip out the comment in a command like \"bts severity "
+"30321 normal #inflated severity\", then this program is smart enough to "
+"figure out where the comment is, and include it in the email. Note that "
+"most shells do strip out such comments before they get to the program, "
+"unless the comment is quoted. (Something like \"bts severity #85942 normal"
+"\" will not be treated as a comment!)"
+msgstr ""
+"Es ist ebenfalls möglich, der E-Mail an das BTS einen Kommentar beizufügen. "
+"Falls Ihre Shell nicht den Kommentar in einem Befehl wie »bts severity 30321 "
+"normal #inflated severity« streicht, dann ist dieses Programm schlau genug "
+"herauszufinden, wo der Kommentar ist und ihn in die E-Mail einzufügen. "
+"Beachten Sie, dass die meisten Shells solche Kommentare streichen, bevor sie "
+"beim Programm ankommen, es sei denn, der Kommentar ist maskiert. (Etwas wie "
+"»bts severity #85942 normal« wird nicht als Kommentar angesehen!)"
+
+#. type: textblock
+#: ../scripts/bts.pl:226
+msgid ""
+"You can specify multiple commands by separating them with a single dot, "
+"rather like B<update-rc.d>; a single comma may also be used; all the "
+"commands will then be sent in a single mail. It is important the dot/comma "
+"is surrounded by whitespace so it is not mistaken for part of a command. "
+"For example (quoting where necessary so that B<bts> sees the comment):"
+msgstr ""
+"Sie können mehrere Befehle angeben, indem Sie sie durch einen einzelnen "
+"Punkt trennen, ungefähr wie B<update-rc.d>; ein einzelnes Komma könnte auch "
+"benutzt werden; alle die Befehle werden in einer einzigen E-Mail gesandt. Es "
+"ist wichtig, dass der Punkt/das Komma von Leerzeichen umgeben ist, damit es "
+"nicht als Teil des Befehls missverstanden wird. Zum Beispiel (wo nötig "
+"maskieren, so dass B<bts> den Kommentar sieht):"
+
+#. type: verbatim
+#: ../scripts/bts.pl:232
+#, no-wrap
+msgid ""
+" % bts severity 95672 normal , merge 95672 95673 \\#they are the same!\n"
+"\n"
+msgstr ""
+" % bts severity 95672 normal , merge 95672 95673 \\#sie sind identisch!\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:234
+msgid ""
+"The abbreviation \"it\" may be used to refer to the last mentioned bug "
+"number, so you could write:"
+msgstr ""
+"Die Abkürzung »it« könnte benutzt werden, um auf die zuletzt erwähnte "
+"Fehlernummer Bezug zu nehmen, daher können Sie schreiben:"
+
+#. type: verbatim
+#: ../scripts/bts.pl:237
+#, no-wrap
+msgid ""
+" % bts severity 95672 wishlist , retitle it \"bts: please add a --foo option\"\n"
+"\n"
+msgstr ""
+" % bts severity 95672 wishlist , retitle it \"bts: please add a --foo option\"\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:239
+msgid ""
+"Please use this program responsibly, and do take our users into "
+"consideration."
+msgstr ""
+"Bitte benutzen Sie dieses Programm verantwortungsvoll und berücksichtigen "
+"Sie unsere Anwender."
+
+#. type: textblock
+#: ../scripts/bts.pl:244
+msgid ""
+"B<bts> examines the B<devscripts> configuration files as described below. "
+"Command line options override the configuration file settings, though."
+msgstr ""
+"B<bts> durchsucht die B<devscripts>-Konfigurationsdateien wie oben "
+"beschrieben. Befehlszeilenoptionen setzen jedoch die Einstellungen der "
+"Konfigurationsdatei außer Kr."
+
+#. type: =item
+#: ../scripts/bts.pl:250
+msgid "B<-o>, B<--offline>"
+msgstr "B<-o>, B<--offline>"
+
+#. type: textblock
+#: ../scripts/bts.pl:252
+msgid ""
+"Make B<bts> use cached bugs for the B<show> and B<bugs> commands, if a cache "
+"is available for the requested data. See the B<cache> command, below for "
+"information on setting up a cache."
+msgstr ""
+"sorgt dafür, dass B<bts> zwischengespeicherte Fehler für die Befehle B<show> "
+"und B<bugs> benutzt, falls für die angeforderten Daten ein Zwischenspeicher "
+"verfügbar ist. Im Nachstehenden finden Sie Informationen zum Befehl "
+"B<cache>, wie Sie einen Zwischenspeicher einrichten."
+
+#. type: =item
+#: ../scripts/bts.pl:256
+msgid "B<--online>, B<--no-offline>"
+msgstr "B<--online>, B<--no-offline>"
+
+#. type: textblock
+#: ../scripts/bts.pl:258
+msgid ""
+"Opposite of B<--offline>; overrides any configuration file directive to work "
+"offline."
+msgstr ""
+"Gegenteil von B<--offline>; setzt alle Konfigurationsdatei-Direktiven außer "
+"Kraft, um offline zu arbeiten"
+
+#. type: =item
+#: ../scripts/bts.pl:261
+msgid "B<-n>, B<--no-action>"
+msgstr "B<-n>, B<--no-action>"
+
+#. type: textblock
+#: ../scripts/bts.pl:263
+msgid "Do not send emails but print them to standard output."
+msgstr "sendet keine E-Mails, gibt sie aber auf der Standardausgabe aus."
+
+#. type: =item
+#: ../scripts/bts.pl:265
+msgid "B<--cache>, B<--no-cache>"
+msgstr "B<--cache>, B<--no-cache>"
+
+#. type: textblock
+#: ../scripts/bts.pl:267
+msgid ""
+"Should we attempt to cache new versions of BTS pages when performing B<show>/"
+"B<bugs> commands? Default is to cache."
+msgstr ""
+"Soll versucht werden, neue Versionen der BTS-Seiten bei der Ausführung der "
+"Befehle B<show>/B<bugs> zwischenzuspeichern? Vorgabe ist Zwischenspeicherung."
+
+#. type: =item
+#: ../scripts/bts.pl:270
+msgid "B<--cache-mode=>{B<min>|B<mbox>|B<full>}"
+msgstr "B<--cache-mode=>{B<min>|B<mbox>|B<full>}"
+
+#. type: textblock
+#: ../scripts/bts.pl:272
+msgid ""
+"When running a B<bts cache> command, should we only mirror the basic bug "
+"(B<min>), or should we also mirror the mbox version (B<mbox>), or should we "
+"mirror the whole thing, including the mbox and the boring attachments to the "
+"BTS bug pages and the acknowledgement emails (B<full>)? Default is B<min>."
+msgstr ""
+"Soll nur der reine Fehler (B<min>) oder auch die Mbox-Version (B<mbox>) "
+"wiedergegeben werden oder soll das ganze Ding, einschließlich der Mbox, den "
+"langweiligen Anhängen an die BTS-Fehlerseiten und die Bestätigungs-E-Mails "
+"(B<full>) wiedergegeben werden, wenn ein B<bts cache>-Befehl ausgeführt "
+"wird? Vorgabe ist B<min>."
+
+#. type: =item
+#: ../scripts/bts.pl:278
+msgid "B<--cache-delay=>I<seconds>"
+msgstr "B<--cache-delay=>I<Sekunden>"
+
+#. type: textblock
+#: ../scripts/bts.pl:280
+msgid ""
+"Time in seconds to delay between each download, to avoid hammering the BTS "
+"web server. Default is 5 seconds."
+msgstr ""
+"Zeit in Sekunden, die zwischen jedem Herunterladen gewartet wird, um zu "
+"verhindern, dass auf den BTS-Webserver eingehämmert wird. Vorgabe ist fünf "
+"Sekunden."
+
+#. type: =item
+#: ../scripts/bts.pl:283
+msgid "B<--mbox>"
+msgstr "B<--mbox>"
+
+#. type: textblock
+#: ../scripts/bts.pl:285
+msgid ""
+"Open a mail reader to read the mbox corresponding to a given bug number for "
+"B<show> and B<bugs> commands."
+msgstr ""
+"öffnet ein E-Mail-Programm, um die Mbox zu lesen, die zu einer gegebenen "
+"Fehlernummer für B<show>- und B<bugs>-Befehle gehört."
+
+#. type: =item
+#: ../scripts/bts.pl:288
+msgid "B<--mailreader=>I<READER>"
+msgstr "B<--mailreader=>I<E-MAIL-PROGRAMM>"
+
+#. type: textblock
+#: ../scripts/bts.pl:290
+msgid ""
+"Specify the command to read the mbox. Must contain a \"B<%s>\" string "
+"(unquoted!), which will be replaced by the name of the mbox file. The "
+"command will be split on white space and will not be passed to a shell. "
+"Default is 'B<mutt -f %s>'. (Also, B<%%> will be substituted by a single B<"
+"%> if this is needed.)"
+msgstr ""
+"gibt den Befehl zum Lesen der Mbox an; muss eine »B<%s>«-Zeichenkette (ohne "
+"Anführungszeichen) enthalten, die durch den Namen der Mbox-Datei ersetzt "
+"wird. Der Befehl wird bei Leerzeichen getrennt und nicht an eine Shell "
+"übergeben. Vorgabe ist »B<mutt -f %s>«. (Außerdem wird B<%%> durch ein "
+"einzelnes B<%> ersetzt, falls dies nötig ist.)"
+
+#. type: =item
+#: ../scripts/bts.pl:296
+msgid "B<--cc-addr=>I<CC_EMAIL_ADDRESS>"
+msgstr "B<--cc-addr=>I<CC_E-MAIL_ADRESSE>"
+
+#. type: textblock
+#: ../scripts/bts.pl:298
+msgid ""
+"Send carbon copies to a list of users. I<CC_EMAIL_ADDRESS> should be a comma-"
+"separated list of email addresses."
+msgstr ""
+"sendet Kopien an eine Liste von Anwendern. I<CC_E-MAIL_ADRESSE> sollte eine "
+"durch Kommas getrennte Liste von E-Mail-Adressen sein."
+
+#. type: =item
+#: ../scripts/bts.pl:301
+msgid "B<--use-default-cc>"
+msgstr "B<--use-default-cc>"
+
+#. type: textblock
+#: ../scripts/bts.pl:303
+msgid ""
+"Add the addresses specified in the configuration file option "
+"B<BTS_DEFAULT_CC> to the list specified using B<--cc-addr>. This is the "
+"default."
+msgstr ""
+"fügt die in der Konfigurationsdateioption B<BTS_DEFAULT_CC> angegebenen "
+"Adressen der Liste hinzu, die mittels B<--cc-addr> angegeben wurde. Dies ist "
+"die Vorgabe."
+
+#. type: =item
+#: ../scripts/bts.pl:307
+msgid "B<--no-use-default-cc>"
+msgstr "B<--no-use-default-cc>"
+
+#. type: textblock
+#: ../scripts/bts.pl:309
+msgid ""
+"Do not add addresses specified in B<BTS_DEFAULT_CC> to the carbon copy list."
+msgstr ""
+"fügt der Liste der Kopien keine in B<BTS_DEFAULT_CC> angegebenen Adressen "
+"hinzu."
+
+#. type: =item
+#: ../scripts/bts.pl:312 ../scripts/mass-bug.pl:103
+msgid "B<--sendmail=>I<SENDMAILCMD>"
+msgstr "B<--sendmail=>I<SENDMAIL-BEFEHL>"
+
+#. type: textblock
+#: ../scripts/bts.pl:314
+msgid ""
+"Specify the B<sendmail> command. The command will be split on white space "
+"and will not be passed to a shell. Default is F</usr/sbin/sendmail>. The "
+"B<-t> option will be automatically added if the command is F</usr/sbin/"
+"sendmail> or F</usr/sbin/exim*>. For other mailers, if they require a B<-t> "
+"option, this must be included in the I<SENDMAILCMD>, for example: B<--"
+"sendmail=\"/usr/sbin/mymailer -t\">."
+msgstr ""
+"gibt den B<sendmail>-Befehl an. Der Befehl wird bei Leerzeichen getrennt und "
+"nicht an eine Shell übergeben. Vorgabe ist F</usr/sbin/sendmail>. Die Option "
+"B<-t> wird automatisch hinzugefügt, falls der Befehl F</usr/sbin/sendmail> "
+"oder F</usr/sbin/exim*> lautet. Für andere E-Mail-Programme muss dies, falls "
+"sie eine B<-t>-Option benötigen, in den I<SENDMAIL-BEFEHL> eingefügt werden, "
+"zum Beispiel: B<--sendmail=\"/usr/sbin/mymailer -t\">."
+
+#. type: TP
+#: ../scripts/bts.pl:321 ../scripts/nmudiff.1:31
+#, no-wrap
+msgid "B<--mutt>"
+msgstr "B<--mutt>"
+
+#. type: textblock
+#: ../scripts/bts.pl:323
+msgid ""
+"Use B<mutt> for sending of mails. Default is not to use B<mutt>, except for "
+"some commands."
+msgstr ""
+"benutzt B<mutt> für den Versand von E-Mails. Standardmäßig wird B<mutt> "
+"nicht benutzt, außer für einige Befehle."
+
+#. type: textblock
+#: ../scripts/bts.pl:326
+msgid ""
+"Note that one of B<$DEBEMAIL> or B<$EMAIL> must be set in the environment in "
+"order to use B<mutt> to send emails."
+msgstr ""
+"Beachten Sie, dass B<$DEBEMAIL> oder B<$EMAIL> in der Umgebung gesetzt sein "
+"müssen, um B<mutt> zum Senden von E-Mails zu verwenden."
+
+#. type: TP
+#: ../scripts/bts.pl:329 ../scripts/nmudiff.1:36
+#, no-wrap
+msgid "B<--no-mutt>"
+msgstr "B<--no-mutt>"
+
+#. type: textblock
+#: ../scripts/bts.pl:331
+msgid "Don't use B<mutt> for sending of mails."
+msgstr "benutzt B<mutt> nicht für den Versand von E-Mails."
+
+#. type: =item
+#: ../scripts/bts.pl:333
+msgid "B<--smtp-host=>I<SMTPHOST>"
+msgstr "B<--smtp-host=>I<SMTPHOST>"
+
+#. type: textblock
+#: ../scripts/bts.pl:335
+msgid ""
+"Specify an SMTP host. If given, B<bts> will send mail by talking directly "
+"to this SMTP host rather than by invoking a B<sendmail> command."
+msgstr ""
+"gibt einen SMTP-Rechner an. Falls angegeben wird B<bts> E-Mails versenden, "
+"indem es direkt mit diesem Rechner kommuniziert, statt den B<sendmail>-"
+"Befehl aufzurufen."
+
+#. type: textblock
+#: ../scripts/bts.pl:338
+msgid ""
+"The host name may be followed by a colon (\":\") and a port number in order "
+"to use a port other than the default. It may also begin with \"ssmtp://\" "
+"or \"smtps://\" to indicate that SMTPS should be used."
+msgstr ""
+"Dem Rechnername könnte ein Doppelpunkt (»:«) und eine Port-Nummer folgen, um "
+"einen anderen Port als den vorgegebenen zu benutzen, Er könnte außerdem mit "
+"»ssmtp://« oder »ssmtps://« beginnen, um anzuzeigen, dass SMTPS benutzt "
+"werden soll."
+
+#. type: textblock
+#: ../scripts/bts.pl:342
+msgid ""
+"Note that one of B<$DEBEMAIL> or B<$EMAIL> must be set in the environment in "
+"order to use direct SMTP connections to send emails."
+msgstr ""
+"Beachten Sie, dass B<$DEBEMAIL> oder B<$EMAIL> in der Umgebung gesetzt sein "
+"müssen, um direkte SMTP-Verbindungen zum Senden von E-Mails zu verwenden."
+
+#. type: textblock
+#: ../scripts/bts.pl:345
+msgid ""
+"Note that when sending directly via an SMTP host, specifying addresses in "
+"B<--cc-addr> or B<BTS_DEFAULT_CC> that the SMTP host will not relay will "
+"cause the SMTP host to reject the entire mail."
+msgstr ""
+"Beachten Sie, wenn Sie direkt über einen SMTP-Rechner senden, dass die "
+"Angabe von Adressen in B<--cc-addr> oder B<BTS_DEFAULT_CC>, für die der SMTP-"
+"Rechner keine Weiterleitung durchführt, dazu führt, dass der SMTP-Rechner "
+"die ganze E-Mail abweist."
+
+#. type: textblock
+#: ../scripts/bts.pl:349
+msgid ""
+"Note also that the use of the B<reassign> command may, when either B<--"
+"interactive> or B<--force-interactive> mode is enabled, lead to the "
+"automatic addition of a Cc to I<$newpackage>@packages.debian.org. In these "
+"cases, the note above regarding relaying applies. The submission interface "
+"(port 587) on reportbug.debian.org does not support relaying and, as such, "
+"should not be used as an SMTP server for B<bts> under the circumstances "
+"described in this paragraph."
+msgstr ""
+"Beachten Sie außerdem, dass die Benutzung des Befehls B<reassign>, wenn "
+"entweder der Modus B<--interactive> oder B<--force-interactive> aktiviert "
+"ist, dazu führen kann, dass ein Cc an I<$newpackage>@packages.debian.org "
+"hinzugefügt wird. In diesen Fällen findet der Hinweis oben bezüglich "
+"Weiterleitung Anwendung. Die Übertragungsschnittstelle (Port 587) auf "
+"reportbug.debian.org unterstützt keine Weiterleitung und sollte als solche "
+"nicht als SMTP-Server für B<bts> unter den in diesem Absatz beschriebenen "
+"Umständen genutzt werden."
+
+#. type: =item
+#: ../scripts/bts.pl:356
+msgid "B<--smtp-username=>I<USERNAME>, B<--smtp-password=>I<PASSWORD>"
+msgstr "B<--smtp-username=>I<BENUTZERNAME>, B<--smtp-password=>I<PASSWORT>"
+
+#. type: textblock
+#: ../scripts/bts.pl:358
+msgid ""
+"Specify the credentials to use when connecting to the SMTP server specified "
+"by B<--smtp-host>. If the server does not require authentication then these "
+"options should not be used."
+msgstr ""
+"gibt die Anmeldedaten an, die benutzt werden, wenn eine Verbindung zu dem "
+"durch B<--smtp-host> angegebenen SMTP-Server hergestellt wird. Falls der "
+"Server keine Authentifizierung verlangt, dann sollten diese Optionen nicht "
+"verwendet werden."
+
+#. type: textblock
+#: ../scripts/bts.pl:362
+msgid ""
+"If a username is specified but not a password, B<bts> will prompt for the "
+"password before sending the mail."
+msgstr ""
+"Falls ein Benutzername aber kein Passwort angegeben wurde, wird B<bts> vor "
+"dem Senden der E-Mail nach dem Passwort fragen."
+
+#. type: =item
+#: ../scripts/bts.pl:365
+msgid "B<--smtp-helo=>I<HELO>"
+msgstr "B<--smtp-helo=>I<HELO>"
+
+#. type: textblock
+#: ../scripts/bts.pl:367
+msgid ""
+"Specify the name to use in the I<HELO> command when connecting to the SMTP "
+"server; defaults to the contents of the file F</etc/mailname>, if it exists."
+msgstr ""
+"gibt den Namen an, der im Befehl I<HELO> benutzt wird, wenn eine Verbindung "
+"zu dem SMTP-Server hergestellt wird; Vorgabe ist der Inhalt der Datei F</etc/"
+"mailname>, falls sie existiert."
+
+#. type: textblock
+#: ../scripts/bts.pl:371
+msgid ""
+"Note that some SMTP servers may reject the use of a I<HELO> which either "
+"does not resolve or does not appear to belong to the host using it."
+msgstr ""
+"Beachten Sie, dass einige STMP-Server die Benutzung eines I<HELO> "
+"möglicherweise abweisen, die sie entweder nicht auflösen oder die nicht zum "
+"benutzenden Rechner gehören."
+
+#. type: =item
+#: ../scripts/bts.pl:374
+msgid "B<--bts-server>"
+msgstr "B<--bts-server>"
+
+#. type: textblock
+#: ../scripts/bts.pl:376
+msgid "Use a debbugs server other than bugs.debian.org."
+msgstr "benutzt einen anderen Debbugs-Server als bugs.debian.org."
+
+#. type: =item
+#: ../scripts/bts.pl:378
+msgid "B<-f>, B<--force-refresh>"
+msgstr "B<-f>, B<--force-refresh>"
+
+#. type: textblock
+#: ../scripts/bts.pl:380
+msgid ""
+"Download a bug report again, even if it does not appear to have changed "
+"since the last B<cache> command. Useful if a B<--cache-mode=full> is "
+"requested for the first time (otherwise unchanged bug reports will not be "
+"downloaded again, even if the boring bits have not been downloaded)."
+msgstr ""
+"lädt einen Fehlerbericht erneut herunter, sogar dann, wenn er sich seit dem "
+"letzten B<cache>-Befehl nicht geändert zu haben scheint; nützlich, falls ein "
+"B<--cache-mode=full> zum ersten Mal angefragt wurde (andernfalls werden "
+"unveränderte Fehlerberichte nicht erneut heruntergeladen, nicht einmal, wenn "
+"die langweiligen Teile nicht heruntergeladen wurden."
+
+#. type: =item
+#: ../scripts/bts.pl:386
+msgid "B<--no-force-refresh>"
+msgstr "B<--no-force-refresh>"
+
+#. type: textblock
+#: ../scripts/bts.pl:388
+msgid "Suppress any configuration file B<--force-refresh> option."
+msgstr "unterdrückt jegliche B<--force-refresh>-Konfigurationsdateioptionen."
+
+#. type: =item
+#: ../scripts/bts.pl:390
+msgid "B<--only-new>"
+msgstr "B<--only-new>"
+
+#. type: textblock
+#: ../scripts/bts.pl:392
+msgid ""
+"Download only new bugs when caching. Do not check for updates in bugs we "
+"already have."
+msgstr ""
+"lädt nur neue Fehler beim Zwischenspeichern herunter; prüft nicht, ob es in "
+"bereits vorhandenen Fehlern Aktualisierungen gibt."
+
+#. type: =item
+#: ../scripts/bts.pl:395
+msgid "B<--include-resolved>"
+msgstr "B<--include-resolved>"
+
+#. type: textblock
+#: ../scripts/bts.pl:397
+msgid ""
+"When caching bug reports, include those that are marked as resolved. This "
+"is the default behaviour."
+msgstr ""
+"wenn Fehlerberichte zwischengespeichert werden, die einbeziehen, die als "
+"gelöst markiert sind. Dies ist das Standardverhalten."
+
+#. type: =item
+#: ../scripts/bts.pl:400
+msgid "B<--no-include-resolved>"
+msgstr "B<--no-include-resolved>"
+
+#. type: textblock
+#: ../scripts/bts.pl:402
+msgid ""
+"Reverse the behaviour of the previous option. That is, do not cache bugs "
+"that are marked as resolved."
+msgstr ""
+"kehrt das Verhalten der vorherigen Option um. Sprich, Fehler, die als gelöst "
+"markiert sind, werden nicht zwischengespeichert."
+
+#. type: =item
+#: ../scripts/bts.pl:405
+msgid "B<--no-ack>"
+msgstr "B<--no-ack>"
+
+#. type: textblock
+#: ../scripts/bts.pl:407
+msgid ""
+"Suppress acknowledgment mails from the BTS. Note that this will only affect "
+"the copies of messages CCed to bugs, not those sent to the control bot."
+msgstr ""
+"unterdrückt Bestätigungs-E-Mails vom BTS. Beachten Sie, dass dies nur die CC-"
+"Kopien der Nachrichten beeinflusst, die Kopien für Fehler sind, die nicht an "
+"das Steuerungsprogramm gesandt wurden."
+
+#. type: =item
+#: ../scripts/bts.pl:411
+msgid "B<--ack>"
+msgstr "B<--ack>"
+
+#. type: textblock
+#: ../scripts/bts.pl:413
+msgid "Do not suppress acknowledgement mails. This is the default behaviour."
+msgstr ""
+"unterdrückt keine Bestätigungs-E-Mails. Dies ist das Standardverhalten."
+
+#. type: =item
+#: ../scripts/bts.pl:415 ../scripts/tagpending.pl:135
+msgid "B<-i>, B<--interactive>"
+msgstr "B<-i>, B<--interactive>"
+
+#. type: textblock
+#: ../scripts/bts.pl:417
+msgid ""
+"Before sending an e-mail to the control bot, display the content and allow "
+"it to be edited, or the sending cancelled."
+msgstr ""
+"zeigt vor dem Senden einer E-Mail an das Steuerungsprogramm den Inhalt an "
+"und ermöglicht, ihn zu bearbeiten oder das Versenden abzubrechen."
+
+#. type: =item
+#: ../scripts/bts.pl:420
+msgid "B<--force-interactive>"
+msgstr "B<--force-interactive>"
+
+#. type: textblock
+#: ../scripts/bts.pl:422
+msgid ""
+"Similar to B<--interactive>, with the exception that an editor is spawned "
+"before prompting for confirmation of the message to be sent."
+msgstr ""
+"ähnlich wie B<--interactive>, mit der Ausnahme, dass sich ein Editor öffnet "
+"bevor nach der Bestätigung gefragt wird, ob die Nachricht versandt werden "
+"soll."
+
+#. type: =item
+#: ../scripts/bts.pl:425
+msgid "B<--no-interactive>"
+msgstr "B<--no-interactive>"
+
+#. type: textblock
+#: ../scripts/bts.pl:427
+msgid ""
+"Send control e-mails without confirmation. This is the default behaviour."
+msgstr ""
+"sendet Steuerungs-E-Mails ohne Bestätigung. Dies ist das Standardverhalten."
+
+#. type: =item
+#: ../scripts/bts.pl:429 ../scripts/dget.pl:576
+msgid "B<-q>, B<--quiet>"
+msgstr "B<-q>, B<--quiet>"
+
+#. type: textblock
+#: ../scripts/bts.pl:431
+msgid ""
+"When running B<bts cache>, only display information about newly cached "
+"pages, not messages saying already cached. If this option is specified "
+"twice, only output error messages (to stderr)."
+msgstr ""
+"zeigt, wenn B<bts cache> ausgeführt wird, nur Informationen über neu "
+"zwischengespeicherte Seiten an, keine Nachrichten, die aussagen, was bereits "
+"zwischengespeichert ist. Falls diese Option zweimal angegeben wurde, werden "
+"nur Fehlermeldungen (an die Standardfehlerausgabe) ausgegeben."
+
+#. type: TP
+#: ../scripts/bts.pl:435 ../scripts/cvs-debrelease.1:57
+#: ../scripts/cvs-debuild.1:38 ../scripts/debc.1:85 ../scripts/debchange.1:377
+#: ../scripts/debclean.1:77 ../scripts/debdiff.1:153 ../scripts/debi.1:102
+#: ../scripts/debrelease.1:95 ../scripts/debsign.1:96 ../scripts/debuild.1:221
+#: ../scripts/dpkg-depcheck.1:92 ../scripts/dscverify.1:24
+#: ../scripts/grep-excuses.1:14 ../scripts/licensecheck.pl:89
+#: ../scripts/mass-bug.pl:112 ../scripts/nmudiff.1:69
+#: ../scripts/rmadison.pl:284 ../scripts/uscan.1:483 ../scripts/uupdate.1:78
+#: ../scripts/who-uploads.1:40
+#, no-wrap
+msgid "B<--no-conf>, B<--noconf>"
+msgstr "B<--no-conf>, B<--noconf>"
+
+#. type: Plain text
+#: ../scripts/bts.pl:437 ../scripts/cvs-debrelease.1:61 ../scripts/debc.1:89
+#: ../scripts/debchange.1:381 ../scripts/debclean.1:81
+#: ../scripts/debdiff.1:157 ../scripts/debi.1:106 ../scripts/debrelease.1:99
+#: ../scripts/debsign.1:100 ../scripts/debuild.1:225
+#: ../scripts/dpkg-depcheck.1:96 ../scripts/dscverify.1:28
+#: ../scripts/grep-excuses.1:18 ../scripts/mass-bug.pl:114
+#: ../scripts/nmudiff.1:73 ../scripts/uscan.1:487 ../scripts/uupdate.1:82
+#: ../scripts/who-uploads.1:44
+msgid ""
+"Do not read any configuration files. This can only be used as the first "
+"option given on the command-line."
+msgstr ""
+"keine Konfigurationsdateien lesen, Dies kann nur als erste auf der "
+"Befehlszeile angegebene Option benutzt werden."
+
+#. type: =head1
+#: ../scripts/bts.pl:791 ../scripts/chdist.pl:55
+msgid "COMMANDS"
+msgstr "BEFEHLE"
+
+#. type: textblock
+#: ../scripts/bts.pl:793
+msgid ""
+"For full details about the commands, see the BTS documentation. L<https://"
+"www.debian.org/Bugs/server-control>"
+msgstr ""
+"Sämtliche Einzelheiten über die Befehle finden Sie in der BTS-Dokumentation. "
+"L<https://www.debian.org/Bugs/server-control>"
+
+#. type: =item
+#: ../scripts/bts.pl:798
+msgid ""
+"B<show> [I<options>] [I<bug number> | I<package> | I<maintainer> | B<:> ] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<show> [I<Optionen>] [I<Fehlernummer> | I<Paket> | I<Paketbetreuer> | B<:"
+"> ] [I<Opt>B<=>I<Wert> …]"
+
+#. type: =item
+#: ../scripts/bts.pl:800
+msgid ""
+"B<show> [I<options>] [B<src:>I<package> | B<from:>I<submitter>] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<show> [I<Optionen>] [B<src:>I<Paket> | B<from:>I<Absender>] "
+"[I<Opt>B<=>I<Wert> …]"
+
+#. type: =item
+#: ../scripts/bts.pl:802
+msgid ""
+"B<show> [I<options>] [B<tag:>I<tag> | B<usertag:>I<tag> ] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<show> [I<Optionen>] [B<tag:>I<Markierung> | B<usertag:>I<Markierung> ] "
+"[I<Opt>B<=>I<Wert> …]"
+
+#. type: =item
+#: ../scripts/bts.pl:804
+msgid "B<show> [B<release-critical> | B<release-critical/>... | B<RC>]"
+msgstr "B<show> [B<release-critical> | B<release-critical/> … | B<RC>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:806
+msgid "This is a synonym for B<bts bugs>."
+msgstr "Dies ist ein Synonym für B<bts bugs>."
+
+#. type: =item
+#: ../scripts/bts.pl:814
+msgid ""
+"B<bugs> [I<options>] [I<bug_number> | I<package> | I<maintainer> | B<:> ] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<bugs> [I<Optionen>] [I<Fehlernummer> | I<Paket> | I<Paketbetreuer> | B<:"
+"> ] [I<Opt>B<=>I<Wert> …]"
+
+#. type: =item
+#: ../scripts/bts.pl:816
+msgid ""
+"B<bugs> [I<options>] [B<src:>I<package> | B<from:>I<submitter>] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<bugs> [I<Optionen>] [B<src:>I<Paket> | B<from:>I<Absender>] "
+"[I<Opt>B<=>I<Wert> …]"
+
+#. type: =item
+#: ../scripts/bts.pl:818
+msgid ""
+"B<bugs> [I<options>] [B<tag:>I<tag> | B<usertag:>I<tag> ] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<bugs> [I<Optionen>] [B<tag:>I<Markierung> | B<usertag:>I<Markierung> ] "
+"[I<Opt>B<=>I<Wert> …]"
+
+#. type: =item
+#: ../scripts/bts.pl:820
+msgid "B<bugs> [B<release-critical> | B<release-critical/>... | B<RC>]"
+msgstr "B<bugs> [B<release-critical> | B<release-critical/> … | B<RC>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:822
+msgid ""
+"Display the page listing the requested bugs in a web browser using sensible-"
+"browser(1)."
+msgstr ""
+"zeigt die Seite, die die angefragten Fehler in einem Webbrowser auflistet, "
+"unter Benutzung von sensible-browser(1)."
+
+#. type: textblock
+#: ../scripts/bts.pl:825
+msgid ""
+"Options may be specified after the B<bugs> command in addition to or instead "
+"of options at the start of the command line: recognised options at this "
+"point are: B<-o>/B<--offline>/B<--online>, B<-m>/B<--mbox>, B<--mailreader> "
+"and B<-->[B<no->]B<cache>. These are described earlier in this manpage. If "
+"either the B<-o> or B<--offline> option is used, or there is already an up-"
+"to-date copy in the local cache, the cached version will be used."
+msgstr ""
+"Optionen könnten nach dem Befehl B<bugs> zusätzlich oder anstelle von "
+"Optionen am Anfang der Befehlszeile angegeben werden: An diesem Punkt "
+"erkannte Optionen sind: B<-o>/B<--offline>/B<--online>, B<-m>/B<--mbox>, B<--"
+"mailreader> und B<-->[B<no->]B<cache>. Diese wurden an früherer Stelle in "
+"dieser Handbuchseite beschrieben. Falls Sie entweder die Option B<-o> oder "
+"B<--offline> benutzt haben oder es bereits eine aktuelle Kopie des lokalen "
+"Zwischenspeichers gibt, wird die zwischengespeicherte Version benutzt."
+
+#. type: textblock
+#: ../scripts/bts.pl:832
+msgid "The meanings of the possible arguments are as follows:"
+msgstr "Die möglichen Argumente haben folgende Bedeutung:"
+
+#. type: =item
+#: ../scripts/bts.pl:836
+msgid "(none)"
+msgstr "(keins)"
+
+#. type: textblock
+#: ../scripts/bts.pl:838
+msgid ""
+"If nothing is specified, B<bts bugs> will display your bugs, assuming that "
+"either B<DEBEMAIL> or B<EMAIL> (examined in that order) is set to the "
+"appropriate email address."
+msgstr ""
+"Falls keins angegeben wurde, wird B<bts bugs> Ihre Fehler unter der Annahme "
+"anzeigen, dass entweder B<DEBEMAIL> oder B<EMAIL> (in dieser Reihenfolge "
+"geprüft) auf die geeignete E-Mail-Adresse gesetzt ist."
+
+#. type: =item
+#: ../scripts/bts.pl:842
+msgid "I<bug_number>"
+msgstr "I<Fehlernummer>"
+
+#. type: textblock
+#: ../scripts/bts.pl:844
+msgid "Display bug number I<bug_number>."
+msgstr "zeigt Fehler Nummer I<Fehlernummer>."
+
+#. type: =item
+#: ../scripts/bts.pl:846
+msgid "I<package>"
+msgstr "I<Paket>"
+
+#. type: textblock
+#: ../scripts/bts.pl:848
+msgid "Display the bugs for the package I<package>."
+msgstr "zeigt die Fehler des Pakets I<Paket>."
+
+#. type: =item
+#: ../scripts/bts.pl:850
+msgid "B<src:>I<package>"
+msgstr "B<src:>I<Paket>"
+
+#. type: textblock
+#: ../scripts/bts.pl:852
+msgid "Display the bugs for the source package I<package>."
+msgstr "zeigt die Fehler des Quellpakets I<Paket>."
+
+#. type: =item
+#: ../scripts/bts.pl:854
+msgid "I<maintainer>"
+msgstr "I<Paketbetreuer>"
+
+#. type: textblock
+#: ../scripts/bts.pl:856
+msgid "Display the bugs for the maintainer email address I<maintainer>."
+msgstr "zeigt die Fehler für die Paketbetreuer-E-Mail-Adresse I<Paketbetreuer>"
+
+#. type: =item
+#: ../scripts/bts.pl:858
+msgid "B<from:>I<submitter>"
+msgstr "B<from:>I<Absender>"
+
+#. type: textblock
+#: ../scripts/bts.pl:860
+msgid "Display the bugs for the submitter email address I<submitter>."
+msgstr "zeigt die Fehler für die Absender-E-Mail-Adresse I<Absender>"
+
+#. type: =item
+#: ../scripts/bts.pl:862
+msgid "B<tag:>I<tag>"
+msgstr "B<tag:>I<Markierung>"
+
+#. type: textblock
+#: ../scripts/bts.pl:864
+msgid "Display the bugs which are tagged with I<tag>."
+msgstr "zeigt die Fehler, die mit I<Markierung> gekennzeichnet sind."
+
+#. type: =item
+#: ../scripts/bts.pl:866
+msgid "B<usertag:>I<tag>"
+msgstr "B<usertag:>I<Markierung>"
+
+#. type: textblock
+#: ../scripts/bts.pl:868
+msgid ""
+"Display the bugs which are tagged with usertag I<tag>. See the BTS "
+"documentation for more information on usertags. This will require the use "
+"of a B<users=>I<email> option."
+msgstr ""
+"zeigt die Fehler, die mit der Benutzermarkierung I<Markierung> "
+"gekennzeichnet sind. Weitere Informationen über Benutzermarkierungen finden "
+"Sie in der BTS-Dokumentation. Dies wird die Verwendung der Option "
+"B<users=>I<E-Mail> erfordern."
+
+#. type: =item
+#: ../scripts/bts.pl:872
+msgid "B<:>"
+msgstr "B<:>"
+
+#. type: textblock
+#: ../scripts/bts.pl:874
+msgid ""
+"Details of the bug tracking system itself, along with a bug-request page "
+"with more options than this script, can be found on https://bugs.debian."
+"org/. This page itself will be opened if the command 'bts bugs :' is used."
+msgstr ""
+"Einzelheiten der Fehlerdatenbank selbst können, neben einer Fehlermeldeseite "
+"mit mehr Optionen als diesem Skript, unter https://bugs.debian.org/ gefunden "
+"werden. Diese Seite selbst wird geöffnet, falls der Befehl »bts bugs :« "
+"benutzt wird."
+
+#. type: =item
+#: ../scripts/bts.pl:879
+msgid "B<release-critical>, B<RC>"
+msgstr "B<release-critical>, B<RC>"
+
+#. type: textblock
+#: ../scripts/bts.pl:881
+msgid ""
+"Display the front page of the release-critical pages on the BTS. This is a "
+"synonym for https://bugs.debian.org/release-critical/index.html. It is also "
+"possible to say release-critical/debian/main.html and the like. RC is a "
+"synonym for release-critical/other/all.html."
+msgstr ""
+"zeigt die Einstiegssseite der release-kritischen Seiten des BTS. Dies ist "
+"ein Synonym für https://bugs.debian.org/release-critical/index.html. Es ist "
+"außerdem möglich, release-critical/debian/main.html und dergleichen zu "
+"sagen. RC ist ein Synonym für release-critical/other/all.html."
+
+#. type: textblock
+#: ../scripts/bts.pl:888
+msgid ""
+"After the argument specifying what to display, you can optionally specify "
+"options to use to format the page or change what it displayed. These are "
+"passed to the BTS in the URL downloaded. For example, pass dist=stable to "
+"see bugs affecting the stable version of a package, version=1.0 to see bugs "
+"affecting that version of a package, or reverse=yes to display newest "
+"messages first in a bug log."
+msgstr ""
+"Nach dem Argument, das spezifiziert, was angezeigt wird, können Sie "
+"wahlweise Optionen angeben, um die Seite zu formatieren oder um zu ändern, "
+"was angezeigt wird. Diese werden in der heruntergeladenen URL an das BTS "
+"übergeben. Übergeben Sie zum Beispiel »dist=stable«, um Fehler zu sehen, die "
+"die stabile Version des Pakets beeinflussen, »version=1.0«, um Fehler zu "
+"sehen, die diese Version des Pakets beeinflussen oder »reverse=yes«, um die "
+"neusten Nachrichten im Fehlerprotokoll zuerst zu sehen."
+
+#. type: textblock
+#: ../scripts/bts.pl:895
+msgid ""
+"If caching has been enabled (that is, B<--no-cache> has not been used, and "
+"B<BTS_CACHE> has not been set to B<no>), then any page requested by B<bts "
+"show> will automatically be cached, and be available offline thereafter. "
+"Pages which are automatically cached in this way will be deleted on "
+"subsequent \"B<bts show>|B<bugs>|B<cache>\" invocations if they have not "
+"been accessed in 30 days. Warning: on a filesystem mounted with the "
+"\"noatime\" option, running \"B<bts show>|B<bugs>\" does not update the "
+"cache files' access times; a cached bug will then be subject to auto-"
+"cleaning 30 days after its initial download, even if it has been accessed in "
+"the meantime."
+msgstr ""
+"Falls Zwischenspeicherung aktiviert wurde (sprich B<--no-cache> wurde nicht "
+"benutzt und B<BTS_CACHE> wurde nicht auf B<no> gesetzt), dann wird "
+"automatisch jede durch B<bts show> angeforderte Seite zwischengespeichert "
+"und danach offline verfügbar sein. Seiten, die automatisch auf diese Weise "
+"zwischengespeichert wurden, werden bei nachfolgenden Aufrufen von »B<bts "
+"show>|B<bugs>|B<cache>« gelöscht, falls nicht innerhalb von 30 Tagen darauf "
+"zugegriffen wurde. Warnung: Auf einem Dateisystem, das mit der Option "
+"»noatime« eingehängt wurde, aktualisiert die Ausführung von »B<bts show>|"
+"B<bugs>« nicht die Zugriffszeiten der Zwischenspeicherdateien; ein "
+"zwischengespeicherter Fehler wird dann Gegenstand der automatischen "
+"Bereinigung 30 Tage nach seinem anfänglichen Herunterladen, sogar dann, wenn "
+"auf ihn in der Zwischenzeit zugegriffen wurde."
+
+#. type: textblock
+#: ../scripts/bts.pl:906
+msgid ""
+"Any other B<bts> commands following this on the command line will be "
+"executed after the browser has been exited."
+msgstr ""
+"Alle anderen B<bts>-Befehle, die dieser Befehlszeile folgen, werden nach dem "
+"Beenden des Browsers ausgeführt."
+
+#. type: textblock
+#: ../scripts/bts.pl:909
+msgid ""
+"The desired browser can be specified and configured by setting the "
+"B<BROWSER> environment variable. The conventions follow those defined by "
+"Eric Raymond at http://www.catb.org/~esr/BROWSER/; we here reproduce the "
+"relevant part."
+msgstr ""
+"Der gewünschte Browser kann durch Setzen der Umgebungsvariable B<BROWSER> "
+"angegeben und konfiguriert werden. Die Konventionen folgen denen, die Eric "
+"Raymond auf http://www.catb.org/~esr/BROWSER/ definiert hat; hier wird der "
+"maßgebliche Teil wiedergegeben."
+
+#. type: textblock
+#: ../scripts/bts.pl:914
+msgid ""
+"The value of B<BROWSER> may consist of a colon-separated series of browser "
+"command parts. These should be tried in order until one succeeds. Each "
+"command part may optionally contain the string B<%s>; if it does, the URL to "
+"be viewed is substituted there. If a command part does not contain B<%s>, "
+"the browser is to be launched as if the URL had been supplied as its first "
+"argument. The string B<%%> must be substituted as a single %."
+msgstr ""
+"Der Wert von B<BROWSER> kann aus einer Reihe von durch Doppelpunkt "
+"getrennten Browser-Befehlsteilen bestehen. Diese sollten nacheinander "
+"durchprobiert werden, bis einer erfolgreich ist. Jeder Befehlsteil kann "
+"optional die Zeichenkette B<%s> enthalten; ist dies der Fall, wird die URL, "
+"die betrachtet werden soll, dort ersetzt. Falls der Befehlsteil kein B<%s> "
+"enthält, wird der Browser gestartet, als ob die URL als sein erstes Argument "
+"bereitgestellt worden wäre. Die Zeichenkette B<%%> muss durch ein einzelnes "
+"% ersetzt werden."
+
+#. type: textblock
+#: ../scripts/bts.pl:922
+msgid ""
+"Rationale: We need to be able to specify multiple browser commands so "
+"programs obeying this convention can do the right thing in either X or "
+"console environments, trying X first. Specifying multiple commands may also "
+"be useful for people who share files like F<.profile> across multiple "
+"systems. We need B<%s> because some popular browsers have remote-invocation "
+"syntax that requires it. Unless B<%%> reduces to %, it won't be possible to "
+"have a literal B<%s> in the string."
+msgstr ""
+"Begründung: Es muss möglich sein, mehrere Browser-Befehle anzugeben, damit "
+"Programme, die dieser Konvention folgen, in X- oder Konsolenumgebungen das "
+"Richtige tun können. Dabei wird X zuerst probiert. Die Angabe mehrerer "
+"Befehle kann außerdem für Leute nützlich sein, die Dateien wie F<.profile> "
+"über mehrere Systeme hinweg gemeinsam benutzen. B<%s> wird benötigt, da "
+"einige populäre Browser eine Aufrufsyntax aus der Ferne haben, die dies "
+"erfordern. Falls B<%%> nicht auf % verkürzt würde, wäre es unmöglich, ein "
+"Buchstabensymbol B<%s> in der Zeichenkette zu haben."
+
+#. type: textblock
+#: ../scripts/bts.pl:930
+msgid "For example, on most Linux systems a good thing to do would be:"
+msgstr ""
+"Auf den meisten Linux-Systemen wäre zum Beispiel Folgendes ein gute Sache:"
+
+#. type: textblock
+#: ../scripts/bts.pl:932
+msgid "BROWSER='mozilla -raise -remote \"openURL(%s,new-window)\":links'"
+msgstr "BROWSER='mozilla -raise -remote \"openURL(%s,new-window)\":links'"
+
+#. type: =item
+#: ../scripts/bts.pl:1007
+msgid "B<select> [I<key>B<:>I<value> ...]"
+msgstr "B<select> [I<Schlüssel>B<:>I<Wert> …]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1009
+msgid ""
+"Uses the SOAP interface to output a list of bugs which match the given "
+"selection requirements."
+msgstr ""
+"benutzt die SOAP-Schnittstelle, um eine Liste von Fehlern auszugeben, die zu "
+"den gegebenen Auswahlanforderungen passen."
+
+#. type: textblock
+#: ../scripts/bts.pl:1012
+msgid "The following keys are allowed, and may be given multiple times."
+msgstr ""
+"Die folgenden Schlüssel sind erlaubt und können mehrmals abgegeben werden."
+
+#. type: =item
+#: ../scripts/bts.pl:1016 ../scripts/bts.pl:1859
+#: ../scripts/who-permits-upload.pl:86
+msgid "B<package>"
+msgstr "B<package>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1018 ../scripts/bts.pl:1861
+msgid "Binary package name."
+msgstr "Name des Binärpakets"
+
+#. type: =item
+#: ../scripts/bts.pl:1020 ../scripts/bts.pl:1863
+msgid "B<source>"
+msgstr "B<source>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1022 ../scripts/bts.pl:1865
+msgid "Source package name."
+msgstr "Name des Quellpakets"
+
+#. type: =item
+#: ../scripts/bts.pl:1024
+msgid "B<maintainer>"
+msgstr "B<maintainer>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1026
+msgid "E-mail address of the maintainer."
+msgstr "E-Mail-Adresse des Paketbetreuers"
+
+#. type: =item
+#: ../scripts/bts.pl:1028 ../scripts/bts.pl:1843
+msgid "B<submitter>"
+msgstr "B<submitter>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1030 ../scripts/bts.pl:1845
+msgid "E-mail address of the submitter."
+msgstr "E-Mail-Adresse des Absenders"
+
+#. type: =item
+#: ../scripts/bts.pl:1032 ../scripts/bts.pl:1871
+msgid "B<severity>"
+msgstr "B<severity>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1034 ../scripts/bts.pl:1873
+msgid "Bug severity."
+msgstr "Schweregrad des Fehlers"
+
+#. type: =item
+#: ../scripts/bts.pl:1036
+msgid "B<status>"
+msgstr "B<status>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1038
+msgid "Status of the bug. One of B<open>, B<done>, or B<forwarded>."
+msgstr "Status des Fehlers; entweder B<open>, B<done> oder B<forwarded>"
+
+#. type: =item
+#: ../scripts/bts.pl:1040 ../scripts/bts.pl:1867
+msgid "B<tag>"
+msgstr "B<tag>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1042
+msgid ""
+"Tags applied to the bug. If B<users> is specified, may include usertags in "
+"addition to the standard tags."
+msgstr ""
+"auf den Fehler bezogene Markierungen. Falls B<users> angegeben ist, könnten "
+"zusätzlich zu den Standardmarkierungen Benutzermarkierungen enthalten sein."
+
+#. type: =item
+#: ../scripts/bts.pl:1045 ../scripts/bts.pl:1875
+msgid "B<owner>"
+msgstr "B<owner>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1047 ../scripts/bts.pl:1877
+msgid "Bug's owner."
+msgstr "Besitzer des Fehlers"
+
+#. type: =item
+#: ../scripts/bts.pl:1049
+msgid "B<correspondent>"
+msgstr "B<correspondent>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1051
+msgid "Address of someone who sent mail to the log."
+msgstr "Adresse von jemandem, der E-Mail an das Protokoll sandte"
+
+#. type: =item
+#: ../scripts/bts.pl:1053 ../scripts/bts.pl:1879
+msgid "B<affects>"
+msgstr "B<affects>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1055
+msgid "Bugs which affect this package."
+msgstr "Fehler, die dieses Paket beeinflussen"
+
+#. type: =item
+#: ../scripts/bts.pl:1057
+msgid "B<bugs>"
+msgstr "B<bugs>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1059
+msgid "List of bugs to search within."
+msgstr "Liste von Fehlern, in der gesucht wird"
+
+#. type: =item
+#: ../scripts/bts.pl:1061
+msgid "B<users>"
+msgstr "B<users>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1063
+msgid "Users to use when looking up usertags."
+msgstr ""
+"Namen von Anwendern, die beim Abfragen von Benutzermarkierungen benutzt "
+"werden"
+
+#. type: =item
+#: ../scripts/bts.pl:1065 ../scripts/bts.pl:1883
+msgid "B<archive>"
+msgstr "B<archive>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1067 ../scripts/bts.pl:1885
+msgid ""
+"Whether to search archived bugs or normal bugs; defaults to B<0> (i.e. only "
+"search normal bugs). As a special case, if archive is B<both>, both archived "
+"and unarchived bugs are returned."
+msgstr ""
+"gibt an, ob archivierte oder normale Fehler gesucht werden; Vorgabe ist B<0> "
+"(d.h. nur normale Fehler werden gesucht). Als Sonderfall werden, falls "
+"»archive« B<both> ist, archivierte und nicht archivierte Fehler "
+"zurückgegeben."
+
+#. type: textblock
+#: ../scripts/bts.pl:1073
+msgid ""
+"For example, to select the set of bugs submitted by jrandomdeveloper@example."
+"com and tagged B<wontfix>, one would use"
+msgstr ""
+"Um zum Beispiel die Sammlung von Fehlern auszuwählen, die von "
+"jrandomdeveloper@example.com versandt und mit B<wontfix> markiert würde, "
+"könnte Folgendes benutzt werden:"
+
+#. type: textblock
+#: ../scripts/bts.pl:1076
+msgid "bts select submitter:jrandomdeveloper@example.com tag:wontfix"
+msgstr "bts select submitter:jrandomdeveloper@example.com tag:wontfix"
+
+#. type: textblock
+#: ../scripts/bts.pl:1078 ../scripts/bts.pl:1897
+msgid ""
+"If a key is used multiple times then the set of bugs selected includes those "
+"matching any of the supplied values; for example"
+msgstr ""
+"Falls ein Schlüssel mehrfach benutzt wird, dann enthält die ausgewählte "
+"Fehlerzusammenstellung jene, die auf einen der bereitgestellten Werte "
+"passen, zum Beispiel gibt"
+
+#. type: textblock
+#: ../scripts/bts.pl:1081
+msgid "bts select package:foo severity:wishlist severity:minor"
+msgstr "bts select package:foo severity:wishlist severity:minor"
+
+#. type: textblock
+#: ../scripts/bts.pl:1083
+msgid "returns all bugs of package foo with either wishlist or minor severity."
+msgstr ""
+"alle Fehler des Pakets Foo zurück, die entweder den Schweregrad »wishlist« "
+"oder »minor« haben."
+
+#. type: =item
+#: ../scripts/bts.pl:1096
+msgid ""
+"B<status> [I<bug> | B<file:>I<file> | B<fields:>I<field>[B<,>I<field> ...] | "
+"B<verbose>] ..."
+msgstr ""
+"B<status> [I<Fehler> | B<file:>I<Datei> | B<fields:>I<Feld>[B<,>I<Feld> …] | "
+"B<verbose>] …"
+
+#. type: textblock
+#: ../scripts/bts.pl:1098
+msgid ""
+"Uses the SOAP interface to output status information for the given bugs (or "
+"as read from the listed files -- use B<-> to indicate STDIN)."
+msgstr ""
+"benutzt die SOAP-Schnittstelle, um Informationen über die angegebenen Fehler "
+"auszugeben (oder die, die aus den aufgelisteten Dateien gelesen wurden – "
+"verwenden Sie B<->, um die Standardeingabe auszuwählen)."
+
+#. type: textblock
+#: ../scripts/bts.pl:1101
+msgid "By default, all populated fields for a bug are displayed."
+msgstr ""
+"Standardmäßig werden alle ausgefüllten Felder für einen Fehler angezeigt."
+
+#. type: textblock
+#: ../scripts/bts.pl:1103
+msgid "If B<verbose> is given, empty fields will also be displayed."
+msgstr ""
+"Falls B<verbose> angegeben ist, werden außerdem leere Felder angezeigt."
+
+#. type: textblock
+#: ../scripts/bts.pl:1105
+msgid ""
+"If B<fields> is given, only those fields will be displayed. No validity "
+"checking is performed on any specified fields."
+msgstr ""
+"Falls B<fields> angegeben ist, werden nur diese Felder angezeigt. Es wird "
+"keine Gültigkeitsprüfung für irgendwelche angegebenen Felder durchgeführt."
+
+#. type: =item
+#: ../scripts/bts.pl:1182
+msgid "B<clone> I<bug> I<new_ID> [I<new_ID> ...]"
+msgstr "B<clone> I<Fehler> I<neue_Kennung> [I<neue_Kennung> …]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1184
+msgid ""
+"The B<clone> control command allows you to duplicate a I<bug> report. It is "
+"useful in the case where a single report actually indicates that multiple "
+"distinct bugs have occurred. \"New IDs\" are negative numbers, separated by "
+"spaces, which may be used in subsequent control commands to refer to the "
+"newly duplicated bugs. A new report is generated for each new ID."
+msgstr ""
+"Der Steuerbefehl B<clone> ermöglicht es Ihnen, einen I<Fehler>bericht zu "
+"kopieren. Das ist in dem Fall nützlich, in dem ein einziger Bericht "
+"tatsächlich anzeigt, dass mehrere eigenständige Fehler aufgetreten sind. "
+"»Neue Kennungen« sind durch Leerzeichen getrennte negative Zahlen, die in "
+"nachfolgenden Steuerbefehlen benutzt werden können, um auf die neu kopierten "
+"Fehler Bezug zu nehmen. Für jede neue Kennung wird ein neuer Fehler erzeugt."
+
+#. type: =item
+#: ../scripts/bts.pl:1234
+msgid "B<done> I<bug> [I<version>]"
+msgstr "B<done> I<Fehler> [I<Version>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1236
+msgid ""
+"Mark a I<bug> as Done. This forces interactive mode since done messages "
+"should include an explanation why the bug is being closed. You should "
+"specify which I<version> of the package closed the bug, if possible."
+msgstr ""
+"markiert einen Fehler als erledigt. Dies erzwingt einen interaktiven Modus, "
+"da erledigt-Nachrichten eine Erklärung enthalten sollten, weshalb der Fehler "
+"geschlossen wird. Sie sollten angeben, welche Version des Pakets den Fehler "
+"schließt, falls möglich."
+
+#. type: =item
+#: ../scripts/bts.pl:1254
+msgid "B<reopen> I<bug> [I<submitter>]"
+msgstr "B<reopen> I<Fehler> [I<Absender>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1256
+msgid "Reopen a I<bug>, with optional I<submitter>."
+msgstr "öffnet einen I<Fehler> mit optionalem I<Absender> erneut."
+
+#. type: =item
+#: ../scripts/bts.pl:1267
+msgid "B<archive> I<bug>"
+msgstr "B<archive> I<Fehler>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1269
+msgid ""
+"Archive a I<bug> that has previously been archived but is currently not. "
+"The I<bug> must fulfil all of the requirements for archiving with the "
+"exception of those that are time-based."
+msgstr ""
+"archiviert einen I<Fehler>, der vorher archiviert war, es gegenwärtig aber "
+"nicht ist. Der I<Fehler> muss alle Anforderungen für die Archivierung außer "
+"den zeitbasierten erfüllen."
+
+#. type: =item
+#: ../scripts/bts.pl:1281
+msgid "B<unarchive> I<bug>"
+msgstr "B<unarchive> I<Fehler>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1283
+msgid "Unarchive a I<bug> that is currently archived."
+msgstr "nimmt einen derzeit archivierten I<Fehler> aus dem Archiv heraus."
+
+#. type: =item
+#: ../scripts/bts.pl:1293
+msgid "B<retitle> I<bug> I<title>"
+msgstr "B<retitle> I<Fehler> I<Titel>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1295
+msgid "Change the I<title> of the I<bug>."
+msgstr "ändert den I<Titel> des I<Fehler>s."
+
+#. type: =item
+#: ../scripts/bts.pl:1308
+msgid "B<summary> I<bug> [I<messagenum>]"
+msgstr "B<summary> I<Fehler> [I<Nachrichtennummer>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1310
+msgid "Select a message number that should be used as the summary of a I<bug>."
+msgstr ""
+"wählt eine Nachrichtennummer, die als Zusammenfassung von I<Fehler> benutzt "
+"werden soll."
+
+#. type: textblock
+#: ../scripts/bts.pl:1313
+msgid "If no message number is given, the summary is cleared."
+msgstr ""
+"Falls keine Nachrichtennummer angegeben ist, wird die Zusammenfassung "
+"geleert."
+
+#. type: =item
+#: ../scripts/bts.pl:1323
+msgid "B<submitter> I<bug> [I<bug> ...] I<submitter-email>"
+msgstr "B<submitter> I<Fehler> [I<Fehler>] … I<Absender-E-Mail-Adresse>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1325
+msgid ""
+"Change the submitter address of a I<bug> or a number of bugs, with B<!> "
+"meaning `use the address on the current email as the new submitter address'."
+msgstr ""
+"ändert die Adresse des Einreichenden eines I<Fehler>s oder einer Reihe von "
+"Fehlern. B<!> bedeutet »die Adresse der aktuellen E-Mail als neue Adresse "
+"des Einreichenden verwenden«."
+
+#. type: =item
+#: ../scripts/bts.pl:1342
+msgid "B<reassign> I<bug> [I<bug> ...] I<package> [I<version>]"
+msgstr "B<reassign> I<Fehler> [I<Fehler> …] I<Paket> [I<Version>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1344
+msgid ""
+"Reassign a I<bug> or a number of bugs to a different I<package>. The "
+"I<version> field is optional; see the explanation at L<https://www.debian."
+"org/Bugs/server-control>."
+msgstr ""
+"weist einem I<Fehler> oder einer Reihe von Fehlern einem anderen I<Paket> "
+"zu. Das Feld I<Version> ist optional; lesen Sie die Erklärung auf L<https://"
+"www.debian.org/Bugs/server-control>."
+
+#. type: =item
+#: ../scripts/bts.pl:1375
+msgid "B<found> I<bug> [I<version>]"
+msgstr "B<found> I<Fehler> [I<Version>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1377
+msgid ""
+"Indicate that a I<bug> was found to exist in a particular package version. "
+"Without I<version>, the list of fixed versions is cleared and the bug is "
+"reopened."
+msgstr ""
+"zeigt an, dass ein I<Fehler> in einer bestimmten Paketversion gefunden "
+"wurde. Ohne I<Version> wird die Liste reparierter Versionen bereinigt und "
+"der Fehler wird erneut geöffnet."
+
+#. type: =item
+#: ../scripts/bts.pl:1394
+msgid "B<notfound> I<bug> I<version>"
+msgstr "B<notfound> I<Fehler> I<Version>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1396
+msgid ""
+"Remove the record that I<bug> was encountered in the given version of the "
+"package to which it is assigned."
+msgstr ""
+"entfernt den Datensatz, mit dem I<Fehler> in der gegebenen Version des "
+"Pakets, dem er zugewiesen ist, vorgefunden wurde."
+
+#. type: =item
+#: ../scripts/bts.pl:1408
+msgid "B<fixed> I<bug> I<version>"
+msgstr "B<fixed> I<Fehler> I<Version>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1410
+msgid ""
+"Indicate that a I<bug> was fixed in a particular package version, without "
+"affecting the I<bug>'s open/closed status."
+msgstr ""
+"zeigt an, dass ein I<Fehler> in einer bestimmten Paketversion behoben wurde "
+"ohne den Offen-/Geschlossenstatus des I<Fehler>s zu beeinflussen."
+
+#. type: =item
+#: ../scripts/bts.pl:1422
+msgid "B<notfixed> I<bug> I<version>"
+msgstr "B<notfixed> I<Fehler> I<Version>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1424
+msgid ""
+"Remove the record that a I<bug> was fixed in the given version of the "
+"package to which it is assigned."
+msgstr ""
+"entfernt den Datensatz mit dem ein I<Fehler> in der gegebenen Version des "
+"Pakets, dem er zugewiesen ist, behoben wurde."
+
+#. type: textblock
+#: ../scripts/bts.pl:1427
+msgid ""
+"This is equivalent to the sequence of commands \"B<found> I<bug> I<version>"
+"\", \"B<notfound> I<bug> I<version>\"."
+msgstr ""
+"Dies ist gleichbedeutend mit der Abfolge der Befehle »B<found> I<Fehler> "
+"I<Version>«, »B<notfound> I<Fehler> I<Version>«."
+
+#. type: =item
+#: ../scripts/bts.pl:1439
+msgid "B<block> I<bug> B<by>|B<with> I<bug> [I<bug> ...]"
+msgstr "B<block> I<Fehler> B<by>|B<with> I<Fehler> [I<Fehler> …]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1441
+msgid "Note that a I<bug> is blocked from being fixed by a set of other bugs."
+msgstr ""
+"weist darauf hin, dass ein I<Fehler> von der Behebung durch einen Satz "
+"anderer Fehler blockiert ist."
+
+#. type: =item
+#: ../scripts/bts.pl:1460
+msgid "B<unblock> I<bug> B<by>|B<with> I<bug> [I<bug> ...]"
+msgstr "B<unblock> I<Fehler> B<by>|B<with> I<Fehler> [I<Fehler> …]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1462
+msgid ""
+"Note that a I<bug> is no longer blocked from being fixed by a set of other "
+"bugs."
+msgstr ""
+"weist darauf hin, dass ein I<Fehler> nicht länger von der Behebung durch "
+"einen Satz anderer Fehler blockiert ist."
+
+#. type: =item
+#: ../scripts/bts.pl:1481
+msgid "B<merge> I<bug> I<bug> [I<bug> ...]"
+msgstr "B<merge> I<Fehler> I<Fehler> [I<Fehler> …]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1483
+msgid "Merge a set of bugs together."
+msgstr "fügt einen Satz Fehler zusammen."
+
+#. type: =item
+#: ../scripts/bts.pl:1498
+msgid "B<forcemerge> I<bug> I<bug> [I<bug> ...]"
+msgstr "B<forcemerge> I<Fehler> I<Fehler> [I<Fehler> …]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1500
+msgid ""
+"Forcibly merge a set of bugs together. The first I<bug> listed is the master "
+"bug, and its settings (those which must be equal in a normal B<merge>) are "
+"assigned to the bugs listed next."
+msgstr ""
+"fügt einen Satz Fehler mit Gewalt zusammen. Der erste aufgeführte I<Fehler> "
+"ist der Hauptfehler und seine Einstellungen (diejenigen, die denen in einem "
+"normalen B<merge> entsprechen müssen) werden den nachfolgend aufgeführten "
+"Fehlern zugewiesen."
+
+#. type: =item
+#: ../scripts/bts.pl:1518
+msgid "B<unmerge> I<bug>"
+msgstr "B<unmerge> I<Fehler>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1520
+msgid "Unmerge a I<bug>."
+msgstr "macht das Zusammenführen eines I<Fehler>s rückgängig."
+
+#. type: =item
+#: ../scripts/bts.pl:1530
+msgid "B<tag> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr "B<tag> I<Fehler> [B<+>|B<->|B<=>] I<Markierung> [I<Markierung> …]"
+
+#. type: =item
+#: ../scripts/bts.pl:1532
+msgid "B<tags> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr "B<tags> I<Fehler> [B<+>|B<->|B<=>] I<Markierung> [I<Markierung> …]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1534
+msgid ""
+"Set or unset a I<tag> on a I<bug>. The tag may either be the exact tag name "
+"or it may be abbreviated to any unique tag substring. (So using B<fixed> "
+"will set the tag B<fixed>, not B<fixed-upstream>, for example, but B<fix> "
+"would not be acceptable.) Multiple tags may be specified as well. The two "
+"commands (tag and tags) are identical. At least one tag must be specified, "
+"unless the B<=> flag is used, where the command"
+msgstr ""
+"setzt oder entfernt eine I<Markierung> für einen I<Fehler>. Die Markierung "
+"kann entweder der exakte Markierungsname sein oder er kann auf eine "
+"eindeutige Teilzeichenkette abgekürzt werden. (Daher wird B<fixed> "
+"beispielsweise die Markierung B<fixed>, nicht B<fixed-upstream> setzen, aber "
+"B<fix> wäre nicht zulässig.) Mehrere Markierungen können ebenfalls angegeben "
+"werden. Die beiden Befehle (»tag« und »tags«) sind identisch. Wenn der "
+"Schalter B<=> nicht benutzt wird, muss mindestens eine Markierung angegeben "
+"werden, wobei der Befehl"
+
+#. type: verbatim
+#: ../scripts/bts.pl:1541
+#, no-wrap
+msgid ""
+" bts tags <bug> =\n"
+"\n"
+msgstr ""
+" bts tags <Fehler> =\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:1543
+msgid "will remove all tags from the specified I<bug>."
+msgstr "alle Markierungen vom angegebenen I<Fehler> entfernen wird."
+
+#. type: textblock
+#: ../scripts/bts.pl:1545
+msgid ""
+"Adding/removing the B<security> tag will add \"team\\@security.debian.org\" "
+"to the Cc list of the control email."
+msgstr ""
+"Das Hinzufügen/Entfernen der B<security>-Markierung wird der Cc-Liste der "
+"Steuerungs-E-Mail »team\\@security.debian.org« hinzufügen."
+
+#. type: =item
+#: ../scripts/bts.pl:1623
+msgid "B<affects> I<bug> [B<+>|B<->|B<=>] I<package> [I<package> ...]"
+msgstr "B<affects> I<Fehler> [B<+>|B<->|B<=>] I<Paket> [I<Paket> …]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1625
+msgid ""
+"Indicates that a I<bug> affects a I<package> other than that against which "
+"it is filed, causing the I<bug> to be listed by default in the I<package> "
+"list of the other I<package>. This should generally be used where the "
+"I<bug> is severe enough to cause multiple reports from users to be assigned "
+"to the wrong package. At least one I<package> must be specified, unless the "
+"B<=> flag is used, where the command"
+msgstr ""
+"zeigt an, dass ein I<Fehler> ein anderes I<Paket> betrifft, als das, gegen "
+"das er eingereicht wurde, was dazu führt, dass der I<Fehler> standardmäßig "
+"in der I<Paket>liste des anderen Pakets aufgeführt wird. Dies sollte "
+"üblicherweise benutzt werden, wo der I<Fehler> ernst genug ist, um mehrere "
+"Berichte von Benutzern dem falschen Paket zuzuweisen. Es muss mindestens ein "
+"I<Paket> angegeben werden, sogar, wenn der Schalter B<=> benutzt wird, wobei "
+"der Befehl"
+
+#. type: verbatim
+#: ../scripts/bts.pl:1631
+#, no-wrap
+msgid ""
+" bts affects <bug> =\n"
+"\n"
+msgstr ""
+" bts affects <Fehler> =\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:1633
+msgid "will remove all indications that I<bug> affects other packages."
+msgstr "alle Hinweise entfernt, dass I<Fehler> andere Pakete beeinflusst."
+
+#. type: =item
+#: ../scripts/bts.pl:1666
+msgid "B<user> I<email>"
+msgstr "B<user> I<E-Mail-Adresse>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1668
+msgid "Specify a user I<email> address before using the B<usertags> command."
+msgstr ""
+"gibt eine Benutzer-I<E-Mail>-Adresse an, bevor der Befehl B<usertags> "
+"verwendet wird."
+
+#. type: =item
+#: ../scripts/bts.pl:1684
+msgid "B<usertag> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr "B<usertag> I<Fehler> [B<+>|B<->|B<=>] I<Markierung> [I<Markierung> …]"
+
+#. type: =item
+#: ../scripts/bts.pl:1686
+msgid "B<usertags> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr "B<usertags> I<Fehler> [B<+>|B<->|B<=>] I<Markierung> [I<Markierung> …]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1688
+msgid ""
+"Set or unset a user tag on a I<bug>. The I<tag> must be the exact tag name "
+"wanted; there are no defaults or checking of tag names. Multiple tags may "
+"be specified as well. The two commands (B<usertag> and B<usertags>) are "
+"identical. At least one I<tag> must be specified, unless the B<=> flag is "
+"used, where the command"
+msgstr ""
+"setzt oder entfernt eine Benutzermarkierung für einen I<Fehler>. Die "
+"I<Markierung> muss exakt den gewünschten Markierungsnamen haben; es gibt "
+"dort keine Vorgaben oder Prüfungen von Markierungsnamen. Mehrere "
+"Markierungen können ebenfalls angegeben werden. Die beiden Befehle "
+"(B<usertag> und B<usertags>) sind identisch. Wenn der Schalter B<=> nicht "
+"benutzt wird, muss mindestens eine Markierung angegeben werden, wobei der "
+"Befehl"
+
+#. type: verbatim
+#: ../scripts/bts.pl:1694
+#, no-wrap
+msgid ""
+" bts usertags <bug> =\n"
+"\n"
+msgstr ""
+" bts usertags <Fehler> =\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:1696
+msgid "will remove all user tags from the specified I<bug>."
+msgstr "alle Benutzermarkierungen vom angegebenen I<Fehler> entfernt."
+
+#. type: =item
+#: ../scripts/bts.pl:1726
+msgid "B<claim> I<bug> [I<claim>]"
+msgstr "B<claim> I<Fehler> [I<Anspruch>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1728
+msgid ""
+"Record that you have claimed a I<bug> (e.g. for a bug squashing party). "
+"I<claim> should be a unique token allowing the bugs you have claimed to be "
+"identified; an e-mail address is often used."
+msgstr ""
+"zeichnet auf, dass Sie Anspruch auf einen Fehler erheben (z.B. für ein "
+"Fehlerbearbeitungstreffen, eine »Bug Squashing Party«). I<Anspruch> sollte "
+"ein eindeutiges Kürzel sein, das es ermöglicht, die Fehler, auf die Sie "
+"Anspruch erheben, zu identifizieren; oft wird eine E-Mail-Adresse benutzt."
+
+#. type: textblock
+#: ../scripts/bts.pl:1732 ../scripts/bts.pl:1752
+msgid ""
+"If no I<claim> is specified, the environment variable B<DEBEMAIL> or "
+"B<EMAIL> (checked in that order) is used."
+msgstr ""
+"Falls kein I<Anspruch> angegeben wurde, wird die Umgebungsvariable "
+"B<DEBEMAIL> oder B<EMAIL> (in dieser Reihenfolge geprüft) benutzt."
+
+#. type: =item
+#: ../scripts/bts.pl:1748
+msgid "B<unclaim> I<bug> [I<claim>]"
+msgstr "B<unclaim> I<Fehler> [I<Anspruch>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1750
+msgid "Remove the record that you have claimed a bug."
+msgstr "entfernt den Datensatz, mit dem Sie Anspruch auf einen Fehler erheben."
+
+#. type: =item
+#: ../scripts/bts.pl:1768
+msgid "B<severity> I<bug> I<severity>"
+msgstr "B<severity> I<Fehler> I<Schweregrad>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1770
+msgid ""
+"Change the I<severity> of a I<bug>. Available severities are: B<wishlist>, "
+"B<minor>, B<normal>, B<important>, B<serious>, B<grave>, B<critical>. The "
+"severity may be abbreviated to any unique substring."
+msgstr ""
+"ändert den I<Schweregrad> eines I<Fehler>s. Verfügbare Schweregrade sind: "
+"B<wishlist>, B<minor>, B<normal>, B<important>, B<serious>, B<grave> und "
+"B<critical>. Der Schweregrad kann auf irgendeine eindeutige Teilzeichenkette "
+"abgekürzt werden."
+
+#. type: =item
+#: ../scripts/bts.pl:1787
+msgid "B<forwarded> I<bug> I<address>"
+msgstr "B<forwarded> I<Fehler> I<Adresse>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1789
+msgid ""
+"Mark the I<bug> as forwarded to the given I<address> (usually an email "
+"address or a URL for an upstream bug tracker)."
+msgstr ""
+"markiert den I<Fehler> als an die angegebene I<Adresse> weitergeleitet "
+"(üblicherweise eine E-Mail-Adresse oder eine URL für eine Fehlerdatenbank "
+"der Originalautoren)."
+
+#. type: =item
+#: ../scripts/bts.pl:1806
+msgid "B<notforwarded> I<bug>"
+msgstr "B<notforwarded> I<Fehler>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1808
+msgid "Mark a I<bug> as not forwarded."
+msgstr "markiert einen I<Fehler> als nicht weitergeleitet."
+
+#. type: =item
+#: ../scripts/bts.pl:1818
+msgid "B<package> [I<package> ...]"
+msgstr "B<package> [I<Paket> …]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1820
+msgid ""
+"The following commands will only apply to bugs against the listed "
+"I<package>s; this acts as a safety mechanism for the BTS. If no packages "
+"are listed, this check is turned off again."
+msgstr ""
+"Die folgenden Befehle werden nur auf Fehler gegen die aufgeführten I<Paket>e "
+"angewandt; dies dient als Sicherheitsmechanismus für die Fehlerdatenbank. "
+"Falls keine Pakete aufgeführt sind, wird die Prüfung wieder ausgeschaltet."
+
+#. type: =item
+#: ../scripts/bts.pl:1834
+msgid "B<limit> [I<key>[B<:>I<value>]] ..."
+msgstr "B<limit> [I<Schlüssel>[B<:>I<Wert>]] …"
+
+#. type: textblock
+#: ../scripts/bts.pl:1836
+msgid ""
+"The following commands will only apply to bugs which meet the specified "
+"criterion; this acts as a safety mechanism for the BTS. If no I<value>s are "
+"listed, the limits for that I<key> are turned off again. If no I<key>s are "
+"specified, all limits are reset."
+msgstr ""
+"Die folgenden Befehle werden nur auf Fehler angewandt, die dem angegebenen "
+"Kriterium entsprechen; dies dient als Sicherheitsmechanismus für die "
+"Fehlerdatenbank. Falls keine I<Wert>e aufgeführt sind, werden die "
+"Beschränkungen für diesen I<Schlüssel> wieder ausgeschaltet. Falls keine "
+"I<Schlüssel> angegeben wurden, werden alle Beschränkungen zurückgesetzt."
+
+#. type: =item
+#: ../scripts/bts.pl:1847
+msgid "B<date>"
+msgstr "B<date>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1849
+msgid "Date the bug was submitted."
+msgstr "Datum, an dem der Fehler versandt wurde"
+
+#. type: =item
+#: ../scripts/bts.pl:1851
+msgid "B<subject>"
+msgstr "B<subject>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1853
+msgid "Subject of the bug."
+msgstr "Betreff dieses Fehlers"
+
+#. type: =item
+#: ../scripts/bts.pl:1855
+msgid "B<msgid>"
+msgstr "B<msgid>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1857
+msgid "Message-id of the initial bug report."
+msgstr "Nachrichtenkennung des anfänglichen Fehlerberichts"
+
+#. type: textblock
+#: ../scripts/bts.pl:1869
+msgid "Tags applied to the bug."
+msgstr "auf den Fehler bezogene Markierungen"
+
+#. type: textblock
+#: ../scripts/bts.pl:1881
+msgid "Bugs affecting this package."
+msgstr "Fehler, die dieses Paket beeinflussen"
+
+#. type: textblock
+#: ../scripts/bts.pl:1891
+msgid ""
+"For example, to limit the set of bugs affected by the subsequent control "
+"commands to those submitted by jrandomdeveloper@example.com and tagged "
+"B<wontfix>, one would use"
+msgstr ""
+"Um zum Beispiel die Zusammenstellung von Fehlern, die von nachfolgenden "
+"Steuerbefehlen beeinflusst werden, auf diejenigen zu beschränken, die von "
+"jrandomdeveloper@example.com versandt und mit B<wontfix> markiert wurden, "
+"könnte Folgendes verwendet werden:"
+
+#. type: textblock
+#: ../scripts/bts.pl:1895
+msgid "bts limit submitter:jrandomdeveloper@example.com tag:wontfix"
+msgstr "bts limit submitter:jrandomdeveloper@example.com tag:wontfix"
+
+#. type: textblock
+#: ../scripts/bts.pl:1900
+msgid "bts limit package:foo severity:wishlist severity:minor"
+msgstr "bts limit package:foo severity:wishlist severity:minor"
+
+#. type: textblock
+#: ../scripts/bts.pl:1902
+msgid ""
+"only applies the subsequent control commands to bugs of package foo with "
+"either B<wishlist> or B<minor> severity."
+msgstr ""
+"wird nur auf nachfolgende Steuerbefehle für Fehler des Pakets Foo angewandt, "
+"die entweder den Schweregrad B<wishlist> oder B<minor> aufweisen."
+
+#. type: =item
+#: ../scripts/bts.pl:1977
+msgid "B<owner> I<bug> I<owner-email>"
+msgstr "B<owner> I<Fehler> I<Besitzer-E-Mail-Adresse>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1979
+msgid ""
+"Change the \"owner\" address of a I<bug>, with B<!> meaning `use the address "
+"on the current email as the new owner address'."
+msgstr ""
+"ändert die »Besitzer«-Adresse eines I<Fehler>s, wobei B<!> »benutze die "
+"Adresse der aktuellen E-Mail als neue Besitzeradresse« bedeutet."
+
+#. type: textblock
+#: ../scripts/bts.pl:1982
+msgid "The owner of a bug accepts responsibility for dealing with it."
+msgstr ""
+"Der Besitzer eines Fehlers akzeptiert die Verantwortung, ihn zu erledigen."
+
+#. type: =item
+#: ../scripts/bts.pl:1993
+msgid "B<noowner> I<bug>"
+msgstr "B<noowner> I<Fehler>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1995
+msgid "Mark a bug as having no \"owner\"."
+msgstr "markiert, dass ein Fehler keinen »Besitzer« hat."
+
+#. type: =item
+#: ../scripts/bts.pl:2005
+msgid "B<subscribe> I<bug> [I<email>]"
+msgstr "B<subscribe> I<Fehler> [I<E-Mail>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:2007
+msgid ""
+"Subscribe the given I<email> address to the specified I<bug> report. If no "
+"email address is specified, the environment variable B<DEBEMAIL> or B<EMAIL> "
+"(in that order) is used. If those are not set, or B<!> is given as email "
+"address, your default address will be used."
+msgstr ""
+"abonniert die gegebene I<E-Mail>-Adresse für den angegebenen I<Fehler>. "
+"Falls keine E-Mail-Adresse angegeben wurde, wird die Umgebungsvariable "
+"B<DEBEMAIL> oder B<EMAIL> (in dieser Reihenfolge) benutzt. Falls diese nicht "
+"gesetzt sind oder B<!> als E-Mail-Adresse angegeben ist, wird Ihre Standard-"
+"E-Mail-Adresse verwendet."
+
+#. type: textblock
+#: ../scripts/bts.pl:2012
+msgid ""
+"After executing this command, you will be sent a subscription confirmation "
+"to which you have to reply. When subscribed to a bug report, you receive "
+"all relevant emails and notifications. Use the unsubscribe command to "
+"unsubscribe."
+msgstr ""
+"Nach der Ausführung dieses Befehls wird ihnen eine Abonnement-Bestätigung "
+"gesandt, auf die Sie antworten müssen. Wenn Sie einen Fehlerbericht "
+"abonniert haben, erhalten Sie alle relevanten E-Mails und "
+"Benachrichtigungen, Benutzen Sie den Befehl unsubscribe, um das Abonnement "
+"zu beenden."
+
+#. type: =item
+#: ../scripts/bts.pl:2033
+msgid "B<unsubscribe> I<bug> [I<email>]"
+msgstr "B<unsubscribe> I<Fehler> [I<E-Mail>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:2035
+msgid ""
+"Unsubscribe the given email address from the specified bug report. As with "
+"subscribe above, if no email address is specified, the environment variables "
+"B<DEBEMAIL> or B<EMAIL> (in that order) is used. If those are not set, or "
+"B<!> is given as email address, your default address will be used."
+msgstr ""
+"beendet das Abonnement der angegebenen E-Mail-Adresse für den angegebenen "
+"Fehlerbericht. Wie beim vorhergehenden Abonnieren werden, falls keine E-Mail-"
+"Adresse angegeben wurde, die Umgebungsvariablen B<DEBEMAIL> oder B<EMAIL> "
+"(in dieser Reihenfolge) benutzt. Falls diese nicht gesetzt sind oder B<!> "
+"als E-Mail-Adresse angegeben ist, wird Ihre Standard-E-Mail-Adresse "
+"verwendet."
+
+#. type: textblock
+#: ../scripts/bts.pl:2040
+msgid ""
+"After executing this command, you will be sent an unsubscription "
+"confirmation to which you have to reply. Use the B<subscribe> command to, "
+"well, subscribe."
+msgstr ""
+"Nach der Ausführung dieses Befehls wird Ihnen eine Bestätigung für das "
+"Beenden des Abonnements gesandt, auf die Sie antworten müssen. Benutzen Sie "
+"zum Abonnieren den Befehl B<subscribe>."
+
+#. type: =item
+#: ../scripts/bts.pl:2060
+msgid "B<reportspam> I<bug> ..."
+msgstr "B<reportspam> I<Fehler> …"
+
+#. type: textblock
+#: ../scripts/bts.pl:2062
+msgid ""
+"The B<reportspam> command allows you to report a I<bug> report as containing "
+"spam. It saves one from having to go to the bug web page to do so."
+msgstr ""
+"Der Befehl B<reportspam> ermöglicht es Ihnen, zu melden, dass ein "
+"I<Fehler>bericht Spam enthält. Er bewahrt davor, auf die Fehler-Website "
+"gehen zu müssen, um dies zu tun."
+
+#. type: =item
+#: ../scripts/bts.pl:2098
+msgid "B<spamreport> I<bug> ..."
+msgstr "B<spamreport> I<Fehler> …"
+
+#. type: textblock
+#: ../scripts/bts.pl:2100
+msgid "B<spamreport> is a synonym for B<reportspam>."
+msgstr "B<spamreport> ist ein Synonym für B<reportspam>."
+
+#. type: =item
+#: ../scripts/bts.pl:2108
+msgid ""
+"B<cache> [I<options>] [I<maint_email> | I<pkg> | B<src:>I<pkg> | B<from:"
+">I<submitter>]"
+msgstr ""
+"B<cache> [I<Optionen>] [I<Betreuer-E-Mail-Adresse> | I<Paket> | B<src:"
+">I<Paket> | B<from:>I<Absender>]"
+
+#. type: =item
+#: ../scripts/bts.pl:2110
+msgid ""
+"B<cache> [I<options>] [B<release-critical> | B<release-critical/>... | B<RC>]"
+msgstr ""
+"B<cache> [I<Optionen>] [B<release-critical> | B<release-critical/> … | B<RC>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:2112
+msgid ""
+"Generate or update a cache of bug reports for the given email address or "
+"package. By default it downloads all bugs belonging to the email address in "
+"the B<DEBEMAIL> environment variable (or the B<EMAIL> environment variable "
+"if B<DEBEMAIL> is unset). This command may be repeated to cache bugs "
+"belonging to several people or packages. If multiple packages or addresses "
+"are supplied, bugs belonging to any of the arguments will be cached; those "
+"belonging to more than one of the arguments will only be downloaded once. "
+"The cached bugs are stored in F<~/.devscripts_cache/bts/>."
+msgstr ""
+"erzeugt oder aktualisiert einen Zwischenspeicher von Fehlerberichten für die "
+"gegebene E-Mail-Adresse oder das gegebene Paket. Standardmäßig lädt es alle "
+"Fehler herunter, die zu der E-Mail-Adresse in der Umgebungsvariable "
+"B<DEBEMAIL> gehören (oder der Umgebungsvariable B<EMAIL>, falls B<DEBEMAIL> "
+"nicht gesetzt ist). Dieser Befehl kann wiederholt werden, um Fehler "
+"zwischenzuspeichern, die zu mehreren Leuten oder Paketen gehören. Falls "
+"mehrere Pakete oder Adressen mitgegeben werden, werden Fehler "
+"zwischengespeichert, die zu allen Argumenten gehören; diejenigen, die zu "
+"mehr als einem Argument gehören, werden nur einmal heruntergeladen. Die "
+"zwischengespeicherten Fehler werden in F<~/.devscripts_cache/bts/> "
+"gespeichert."
+
+#. type: textblock
+#: ../scripts/bts.pl:2121
+msgid "You can use the cached bugs with the B<-o> switch. For example:"
+msgstr ""
+"Sie können die zwischengespeicherten Fehler mit dem Schalter B<-o> "
+"verwenden. Zum Beispiel:"
+
+#. type: verbatim
+#: ../scripts/bts.pl:2123
+#, no-wrap
+msgid ""
+" bts -o bugs\n"
+" bts -o show 12345\n"
+"\n"
+msgstr ""
+" bts -o bugs\n"
+" bts -o show 12345\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:2126
+msgid ""
+"Also, B<bts> will update the files in it in a piecemeal fashion as it "
+"downloads information from the BTS using the B<show> command. You might thus "
+"set up the cache, and update the whole thing once a week, while letting the "
+"automatic cache updates update the bugs you frequently refer to during the "
+"week."
+msgstr ""
+"Außerdem wird B<bts> die Dateien darin auf unsystematische Weise "
+"aktualisieren, da es Informationen von der Fehlerdatenbank unter Benutzung "
+"des Befehls B<show> herunterlädt. Sie könnten daher den Zwischenspeicher "
+"einrichten, indem Sie die automatischen Zwischenspeicheraktualisierungen die "
+"Fehler aktualisieren lassen, auf die Sie häufig während der Woche Bezug "
+"nehmen."
+
+#. type: textblock
+#: ../scripts/bts.pl:2132
+msgid ""
+"Some options affect the behaviour of the B<cache> command. The first is the "
+"setting of B<--cache-mode>, which controls how much B<bts> downloads of the "
+"referenced links from the bug page, including boring bits such as the "
+"acknowledgement emails, emails to the control bot, and the mbox version of "
+"the bug report. It can take three values: B<min> (the minimum), B<mbox> "
+"(download the minimum plus the mbox version of the bug report) or B<full> "
+"(the whole works). The second is B<--force-refresh> or B<-f>, which forces "
+"the download, even if the cached bug report is up-to-date. The B<--include-"
+"resolved> option indicates whether bug reports marked as resolved should be "
+"downloaded during caching."
+msgstr ""
+"Einige Optionen beeinflussen das Verhalten des Befehls B<cache>. Die erste "
+"ist die Einstellung von B<--cache-mode>, die steuert, wieviel B<bts> von den "
+"referenzierten Verweisen von der Fehlerseite herunterlädt, einschließlich "
+"langweiliger Teile, wie den Bestätigungs-E-Mails, E-Mails an den Steuer-Bot "
+"und der Mbox-Version des Fehlerberichts. Sie kann drei Werte annehmen: "
+"B<min> (das Minimum), B<mbox> (das Minimum plus der Mbox-Version des "
+"Fehlerberichts herunterladen) oder B<full> (alles). Die zweite ist B<--force-"
+"refresh> oder B<-f>. Sie erzwingt das Herunterladen sogar dann, wenn der "
+"zwischengespeicherte Fehler aktuell ist. Die Option B<--include-resolved> "
+"zeigt an, ob Fehlerberichte, die als behoben markiert sind, während des "
+"Zwischenspeicherns heruntergeladen werden sollen."
+
+#. type: textblock
+#: ../scripts/bts.pl:2143
+msgid ""
+"Each of these is configurable from the configuration file, as described "
+"below. They may also be specified after the B<cache> command as well as at "
+"the start of the command line."
+msgstr ""
+"Jedes davon ist, wie nachfolgend beschrieben, in der Konfigurationsdatei "
+"einstellbar. Dies könnte außerdem nach dem Befehl B<cache>, ebenso wie am "
+"Anfang der Befehlszeile angegeben werden."
+
+#. type: textblock
+#: ../scripts/bts.pl:2147
+msgid ""
+"Finally, B<-q> or B<--quiet> will suppress messages about caches being up-to-"
+"date, and giving the option twice will suppress all cache messages (except "
+"for error messages)."
+msgstr ""
+"Schlussendlich wird B<-q> oder B<--quiet> Nachrichten darüber, ob der "
+"Zwischenspeicher aktuell ist, unterdrücken. Wird diese Option zweimal "
+"angegeben, werden alle Zwischenspeichernachrichten (mit Ausnahme von "
+"Fehlermeldungen) unterdrückt."
+
+#. type: textblock
+#: ../scripts/bts.pl:2151
+msgid ""
+"Beware of caching RC, though: it will take a LONG time! (With 1000+ RC bugs "
+"and a delay of 5 seconds between bugs, you're looking at a minimum of 1.5 "
+"hours, and probably significantly more than that.)"
+msgstr ""
+"Vorsicht allerdings beim Zwischenspeichern von RC-Fehlern: Es wird LANGE "
+"dauern! (Mit über 1000 RC-Fehlern und einer Verzögerung von fünf Sekunden "
+"zwischen Fehlern, sehen Sie sich mindestens 1,5 Stunden und wahrscheinlich "
+"bedeutend mehr als dem gegenüber.)"
+
+#. type: =item
+#: ../scripts/bts.pl:2280
+msgid "B<cleancache> I<package> | B<src:>I<package> | I<maintainer>"
+msgstr "B<cleancache> I<Paket> | B<src:>I<Paket> | I<Paketbetreuer>"
+
+#. type: =item
+#: ../scripts/bts.pl:2282
+msgid ""
+"B<cleancache from:>I<submitter> | B<tag:>I<tag> | B<usertag:>I<tag> | "
+"I<number> | B<ALL>"
+msgstr ""
+"B<cleancache from:>I<Absender> | B<tag:>I<Markierung> | B<usertag:"
+">I<Markierung> | I<Zahl> | B<ALL>"
+
+#. type: textblock
+#: ../scripts/bts.pl:2284
+msgid ""
+"Clean the cache for the specified I<package>, I<maintainer>, etc., as "
+"described above for the B<bugs> command, or clean the entire cache if B<ALL> "
+"is specified. This is useful if you are going to have permanent network "
+"access or if the database has become corrupted for some reason. Note that "
+"for safety, this command does not default to the value of B<DEBEMAIL> or "
+"B<EMAIL>."
+msgstr ""
+"bereinigt den Zwischenspeicher für das angegebene I<Paket>, den "
+"I<Paketbetreuer>. etc., wie oben für den Befehl B<bugs> beschrieben oder "
+"bereinigt den kompletten Zwischenspeicher, falls B<ALL> angegeben wurde. "
+"Dies ist nützlich, falls Sie einen permanenten Netzwerkzugang haben oder "
+"falls Ihre Datenbank aus irgend einem Grund beschädigt wurde. Beachten Sie, "
+"dass dieser Befehl aus Sicherheitsgründen nicht standardmäßig den Wert "
+"B<DEBEMAIL> oder B<EMAIL> hat."
+
+#. type: =item
+#: ../scripts/bts.pl:2333
+msgid "B<version>"
+msgstr "B<version>"
+
+#. type: textblock
+#: ../scripts/bts.pl:2335
+msgid "Display version and copyright information."
+msgstr "zeigt Version und Copyright-Information an."
+
+#. type: =item
+#: ../scripts/bts.pl:2350
+msgid "B<help>"
+msgstr "B<help>"
+
+#. type: textblock
+#: ../scripts/bts.pl:2352
+msgid ""
+"Display a short summary of commands, suspiciously similar to parts of this "
+"man page."
+msgstr ""
+"zeigt eine kurze Zusammenfassung der Befehle, verdächtig ähnlich zu Teilen "
+"dieser Handbuchseite."
+
+#. type: SH
+#: ../scripts/bts.pl:3987 ../scripts/debuild.1:86 ../scripts/diff2patches.1:40
+#: ../scripts/pts-subscribe.1:34
+#, no-wrap
+msgid "ENVIRONMENT VARIABLES"
+msgstr "UMGEBUNGSVARIABLEN"
+
+#. type: =item
+#: ../scripts/bts.pl:3991
+msgid "B<DEBEMAIL>"
+msgstr "B<DEBEMAIL>"
+
+#. type: textblock
+#: ../scripts/bts.pl:3993
+msgid ""
+"If this is set, the From: line in the email will be set to use this email "
+"address instead of your normal email address (as would be determined by "
+"B<mail>)."
+msgstr ""
+"Falls diese gesetzt ist, wird die Von:-Zeile in der E-Mail gesetzt, um diese "
+"E-Mail-Adresse anstelle Ihrer normalen E-Mail-Adresse zu benutzen (als wäre "
+"sie durch B<mail> festgelegt)."
+
+#. type: =item
+#: ../scripts/bts.pl:3997
+msgid "B<DEBFULLNAME>"
+msgstr "B<DEBFULLNAME>"
+
+#. type: textblock
+#: ../scripts/bts.pl:3999
+msgid ""
+"If B<DEBEMAIL> is set, B<DEBFULLNAME> is examined to determine the full name "
+"to use; if this is not set, B<bts> attempts to determine a name from your "
+"F<passwd> entry."
+msgstr ""
+"Falls B<DEBEMAIL> gesetzt ist, wird B<DEBFULLNAME> geprüft, um den "
+"vollständigen Namen, der verwendet wird, zu bestimmen; falls dies nicht "
+"gesetzt ist, versucht B<bts> einen Namen von Ihrem F<passwd>-Eintrag zu "
+"bestimmen."
+
+#. type: =item
+#: ../scripts/bts.pl:4003
+msgid "B<BROWSER>"
+msgstr "B<BROWSER>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4005
+msgid ""
+"If set, it specifies the browser to use for the B<show> and B<bugs> "
+"options. See the description above."
+msgstr ""
+"Falls gesetzt, gibt es den Browser an, der für die Optionen B<show> und "
+"B<bugs> verwendet wird. Lesen Sie die vorhergehende Beschreibung."
+
+#. type: SH
+#: ../scripts/bts.pl:4010 ../scripts/dcontrol.pl:264 ../scripts/debc.1:92
+#: ../scripts/debchange.1:392 ../scripts/debcheckout.pl:177
+#: ../scripts/debclean.1:90 ../scripts/debcommit.pl:104
+#: ../scripts/debdiff.1:169 ../scripts/debi.1:109 ../scripts/debrelease.1:105
+#: ../scripts/debrsign.1:57 ../scripts/debsign.1:106 ../scripts/debuild.1:290
+#: ../scripts/dget.pl:631 ../scripts/dpkg-depcheck.1:102
+#: ../scripts/dscverify.1:42 ../scripts/grep-excuses.1:28
+#: ../scripts/licensecheck.pl:96 ../scripts/mass-bug.pl:132
+#: ../scripts/nmudiff.1:79 ../scripts/plotchangelog.1:106
+#: ../scripts/pts-subscribe.1:42 ../scripts/rmadison.pl:293
+#: ../scripts/uscan.1:493 ../scripts/uupdate.1:88 ../scripts/who-uploads.1:50
+#, no-wrap
+msgid "CONFIGURATION VARIABLES"
+msgstr "KONFIGURATIONSVARIABLEN"
+
+#. type: textblock
+#: ../scripts/bts.pl:4012 ../scripts/debcommit.pl:106
+#: ../scripts/licensecheck.pl:98 ../scripts/mass-bug.pl:134
+msgid ""
+"The two configuration files F</etc/devscripts.conf> and F<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file settings. "
+"Environment variable settings are ignored for this purpose. The currently "
+"recognised variables are:"
+msgstr ""
+"Die beiden Konfigurationsdateien F</etc/devscripts.conf> und F<~/."
+"devscripts> werden in dieser Reihenfolge durch eine Shell eingelesen, um "
+"Konfigurationsvariablen zu setzen. Befehlszeilenoptionen können benutzt "
+"werden, um Einstellungen aus Konfigurationsdateien außer Kraft zu setzen. "
+"Einstellungen aus Umgebungsvariablen werden zu diesem Zweck ignoriert. Die "
+"derzeit bekannten Variablen sind:"
+
+#. type: =item
+#: ../scripts/bts.pl:4020
+msgid "B<BTS_OFFLINE>"
+msgstr "B<BTS_OFFLINE>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4022
+msgid ""
+"If this is set to B<yes>, then it is the same as the B<--offline> command "
+"line parameter being used. Only has an effect on the B<show> and B<bugs> "
+"commands. The default is B<no>. See the description of the B<show> command "
+"above for more information."
+msgstr ""
+"Falls dies auf B<yes> gesetzt ist, dann ist es genauso, als wenn der "
+"Befehlszeilenparameter B<--offline> benutzt würde. Es hat nur Auswirkungen "
+"auf die Befehle B<show> und B<bugs>. Vorgabe ist B<no>. Weitere "
+"Informationen finden Sie in der vorhergehenden Beschreibung des Befehls "
+"B<show>."
+
+#. type: =item
+#: ../scripts/bts.pl:4027
+msgid "B<BTS_CACHE>"
+msgstr "B<BTS_CACHE>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4029
+msgid ""
+"If this is set to B<no>, then it is the same as the B<--no-cache> command "
+"line parameter being used. Only has an effect on the B<show> and B<bug> "
+"commands. The default is B<yes>. Again, see the B<show> command above for "
+"more information."
+msgstr ""
+"Falls dies auf B<no> gesetzt ist, dann ist es genauso, als wenn der "
+"Befehlszeilenparameter B<--no-cache> benutzt würde. Es hat nur Auswirkungen "
+"auf die Befehle B<show> und B<bug>. Vorgabe ist B<yes>. Weitere "
+"Informationen finden Sie wieder beim Befehl B<show> weiter oben."
+
+#. type: =item
+#: ../scripts/bts.pl:4034
+msgid "B<BTS_CACHE_MODE=>{B<min>,B<mbox>,B<full>}"
+msgstr "B<BTS_CACHE_MODE=>{B<min>,B<mbox>,B<full>}"
+
+#. type: textblock
+#: ../scripts/bts.pl:4036
+msgid ""
+"How much of the BTS should we mirror when we are asked to cache something? "
+"Just the minimum, or also the mbox or the whole thing? The default is "
+"B<min>, and it has the same meaning as the B<--cache-mode> command line "
+"parameter. Only has an effect on the cache. See the B<cache> command for "
+"more information."
+msgstr ""
+"Wieviel von der Fehlerdatenbank sollte gespiegelt werden, wenn danach "
+"gefragt wird, etwas zwischenzuspeichern? Nur das Minimum oder auch die Mbox "
+"oder das Ganze? Vorgabe ist B<min>, was die gleiche Bedeutung hat wie der "
+"Befehlszeilenparameter B<--cache-mode>. Dies hat nur Auswirkungen auf den "
+"Zwischenspeicher. Weitere Informationen finden Sie beim Befehl B<cache>."
+
+#. type: =item
+#: ../scripts/bts.pl:4042
+msgid "B<BTS_FORCE_REFRESH>"
+msgstr "B<BTS_FORCE_REFRESH>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4044
+msgid ""
+"If this is set to B<yes>, then it is the same as the B<--force-refresh> "
+"command line parameter being used. Only has an effect on the B<cache> "
+"command. The default is B<no>. See the B<cache> command for more "
+"information."
+msgstr ""
+"Falls dies auf B<yes> gesetzt ist, dann ist es genauso, als wenn der "
+"Befehlszeilenparameter B<--force-refresh> benutzt würde. Es hat nur "
+"Auswirkungen auf den Befehl B<cache>. Vorgabe ist B<no>. Weitere "
+"Informationen finden Sie beim Befehl B<cache>."
+
+#. type: =item
+#: ../scripts/bts.pl:4049
+msgid "B<BTS_MAIL_READER>"
+msgstr "B<BTS_MAIL_READER>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4051
+msgid ""
+"If this is set, specifies a mail reader to use instead of B<mutt>. Same as "
+"the B<--mailreader> command line option."
+msgstr ""
+"Falls dies gesetzt ist, gibt es ein E-Mail-Programm an, der anstelle von "
+"B<mutt> benutzt wird. Entspricht der Befehlszeilenoption B<--mailreader>."
+
+#. type: TP
+#: ../scripts/bts.pl:4054 ../scripts/mass-bug.pl:142 ../scripts/nmudiff.1:104
+#, no-wrap
+msgid "B<BTS_SENDMAIL_COMMAND>"
+msgstr "B<BTS_SENDMAIL_COMMAND>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4056 ../scripts/mass-bug.pl:144
+msgid ""
+"If this is set, specifies a B<sendmail> command to use instead of F</usr/"
+"sbin/sendmail>. Same as the B<--sendmail> command line option."
+msgstr ""
+"Falls dies gesetzt ist, gibt es einen B<sendmail>-Befehl an, der anstelle "
+"von F</usr/sbin/sendmail> verwendet wird. Entspricht der Befehlszeilenoption "
+"B<--sendmail>."
+
+#. type: =item
+#: ../scripts/bts.pl:4059
+msgid "B<BTS_ONLY_NEW>"
+msgstr "B<BTS_ONLY_NEW>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4061
+msgid ""
+"Download only new bugs when caching. Do not check for updates in bugs we "
+"already have. The default is B<no>. Same as the B<--only-new> command line "
+"option."
+msgstr ""
+"lädt beim Zwischenspeichern nur neue Fehler herunter; prüft nicht auf "
+"Aktualisierungen in Fehlern, die bereits vorliegen. Vorgabe ist B<no>. "
+"Entspricht der Befehlszeilenoption B<--only-new>."
+
+#. type: =item
+#: ../scripts/bts.pl:4065
+msgid "B<BTS_SMTP_HOST>"
+msgstr "B<BTS_SMTP_HOST>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4067
+msgid ""
+"If this is set, specifies an SMTP host to use for sending mail rather than "
+"using the B<sendmail> command. Same as the B<--smtp-host> command line "
+"option."
+msgstr ""
+"Falls dies gesetzt ist, gibt es einen SMTP-Host an, der für den Versand von "
+"E-Mail gegenüber dem Befehl B<sendmail> den Vorzug bekommt. Entspricht der "
+"Befehlszeilenoption B<--smtp-host>."
+
+#. type: textblock
+#: ../scripts/bts.pl:4071
+msgid ""
+"Note that this option takes priority over B<BTS_SENDMAIL_COMMAND> if both "
+"are set, unless the B<--sendmail> option is used."
+msgstr ""
+"Beachten Sie, dass diese Option eine höhere Priorität hat als "
+"B<BTS_SENDMAIL_COMMAND>, falls beide gesetzt sind, außer wenn die Option B<--"
+"sendmail> verwendet wird."
+
+#. type: =item
+#: ../scripts/bts.pl:4074
+msgid "B<BTS_SMTP_AUTH_USERNAME>, B<BTS_SMTP_AUTH_PASSWORD>"
+msgstr "B<BTS_SMTP_AUTH_USERNAME>, B<BTS_SMTP_AUTH_PASSWORD>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4076
+msgid ""
+"If these options are set, then it is the same as the B<--smtp-username> and "
+"B<--smtp-password> options being used."
+msgstr ""
+"Falls diese Optionen gesetzt sind, ist es, als ob die Optionen B<--smtp-"
+"username> und B<--smtp-password> benutzt würden."
+
+#. type: =item
+#: ../scripts/bts.pl:4079
+msgid "B<BTS_SMTP_HELO>"
+msgstr "B<BTS_SMTP_HELO>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4081
+msgid "Same as the B<--smtp-helo> command line option."
+msgstr "entspricht der Befehlszeilenoption B<--smtp-helo>."
+
+#. type: =item
+#: ../scripts/bts.pl:4083
+msgid "B<BTS_INCLUDE_RESOLVED>"
+msgstr "B<BTS_INCLUDE_RESOLVED>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4085
+msgid ""
+"If this is set to B<no>, then it is the same as the B<--no-include-resolved> "
+"command line parameter being used. Only has an effect on the B<cache> "
+"command. The default is B<yes>. See the B<cache> command for more "
+"information."
+msgstr ""
+"Falls dies auf B<no> gesetzt ist, ist es, als ob der Befehlszeilenparameter "
+"B<--no-include-resolved> benutzt würde. Es hat nur Auswirkungen auf den "
+"Befehl B<cache>. Vorgabe ist B<yes>. Weitere Informationen finden Sie beim "
+"Befehl B<cache>."
+
+#. type: =item
+#: ../scripts/bts.pl:4090
+msgid "B<BTS_SUPPRESS_ACKS>"
+msgstr "B<BTS_SUPPRESS_ACKS>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4092
+msgid ""
+"If this is set to B<yes>, then it is the same as the B<--no-ack> command "
+"line parameter being used. The default is B<no>."
+msgstr ""
+"Falls dies auf B<yes> gesetzt ist, dann ist es, als ob der "
+"Befehlszeilenparameter B<--no-ack> benutzt würde. Vorgabe ist B<no>."
+
+#. type: =item
+#: ../scripts/bts.pl:4095
+msgid "B<BTS_INTERACTIVE>"
+msgstr "B<BTS_INTERACTIVE>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4097
+msgid ""
+"If this is set to B<yes> or B<force>, then it is the same as the B<--"
+"interactive> or B<--force-interactive> command line parameter being used. "
+"The default is B<no>."
+msgstr ""
+"Falls dies auf B<yes> oder B<force> gesetzt ist, dann ist es, als ob die "
+"Befehlszeilenparameter B<--interactive> oder B<--force-interactive> benutzt "
+"würden. Vorgabe ist B<no>."
+
+#. type: =item
+#: ../scripts/bts.pl:4101
+msgid "B<BTS_DEFAULT_CC>"
+msgstr "B<BTS_DEFAULT_CC>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4103
+msgid ""
+"Specify a list of e-mail addresses to which a carbon copy of the generated e-"
+"mail to the control bot should automatically be sent."
+msgstr ""
+"gibt eine Liste von E-Mail-Adressen an, an die eine Kopie der erzeugten E-"
+"Mail an den Steuer-Bot automatisch gesandt werden sollte."
+
+#. type: =item
+#: ../scripts/bts.pl:4106
+msgid "B<BTS_SERVER>"
+msgstr "B<BTS_SERVER>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4108
+msgid ""
+"Specify the name of a debbugs server which should be used instead of bugs."
+"debian.org."
+msgstr ""
+"gibt den Namen des Debbugs-Servers an, der anstelle von bugs.debian.org "
+"benutzt werden soll."
+
+#. type: textblock
+#: ../scripts/bts.pl:4115
+msgid ""
+"Please see L<https://www.debian.org/Bugs/server-control> for more details on "
+"how to control the BTS using emails and L<https://www.debian.org/Bugs/> for "
+"more information about the BTS."
+msgstr ""
+"Bitte lesen Sie L<https://www.debian.org/Bugs/server-control>, um weitere "
+"Einzelheiten zu erhalten, wie die Fehlerdatenbank unter Benutzung von E-"
+"Mails gesteuert wird und L<https://www.debian.org/Bugs/>, um weitere "
+"Informationen über die Fehlerdatenbank zu erhalten."
+
+#. type: textblock
+#: ../scripts/bts.pl:4119
+msgid "querybts(1), reportbug(1)"
+msgstr "querybts(1), reportbug(1)"
+
+#. type: =head1
+#: ../scripts/bts.pl:4121 ../scripts/chdist.pl:119 ../scripts/debsnap.1:126
+#: ../scripts/mass-bug.pl:515 ../scripts/tagpending.pl:430
+#, no-wrap
+msgid "COPYRIGHT"
+msgstr "COPYRIGHT"
+
+#. type: textblock
+#: ../scripts/bts.pl:4123
+msgid ""
+"This program is Copyright (C) 2001-2003 by Joey Hess <joeyh@debian.org>. "
+"Many modifications have been made, Copyright (C) 2002-2005 Julian Gilbey "
+"<jdg@debian.org> and Copyright (C) 2007 Josh Triplett <josh@freedesktop.org>."
+msgstr ""
+"Dieses Programm unterliegt dem Copyright (C) 2001-2003 von Joey Hess "
+"<joeyh@debian.org>. Es wurden viele Änderungen vorgenommen unter dem "
+"Copyright (C) 2002-2005 von Julian Gilbey <jdg@debian.org> und dem Copyright "
+"(C) 2007 von Josh Triplett <josh@freedesktop.org>."
+
+#. type: textblock
+#: ../scripts/bts.pl:4128 ../scripts/chdist.pl:124 ../scripts/mass-bug.pl:519
+msgid ""
+"It is licensed under the terms of the GPL, either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+"Es ist lizensiert unter den Bedingungen der GPL, entweder Version 2 der "
+"Lizenz oder (nach Ihrer Wahl) irgendeiner späteren Version."
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:20
+msgid ""
+"build-rdeps - find packages that depend on a specific package to build "
+"(reverse build depends)"
+msgstr ""
+"build-rdeps - findet Pakete, die von einem speziellen Paket zum Bau abhängen "
+"(umgekehrte Bauabhängigkeit)"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:24
+msgid "B<build-rdeps> I<package>"
+msgstr "B<build-rdeps> I<Paket>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:28
+msgid ""
+"B<build-rdeps> searches for all packages that build-depend on the specified "
+"package."
+msgstr ""
+"B<build-rdeps> sucht nach allen Paketen, die eine Bauabhängigkeit zum "
+"angegebenen Paket haben."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:34
+msgid "B<-u>, B<--update>"
+msgstr "B<-u>, B<--update>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:36
+msgid "Run apt-get update before searching for build-depends."
+msgstr "führt vor der Suche nach Bauabhängigkeiten »apt-get update« aus."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:38
+msgid "B<-s>, B<--sudo>"
+msgstr "B<-s>, B<--sudo>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:40
+msgid "Use sudo when running apt-get update. Has no effect if -u is omitted."
+msgstr ""
+"benutzt Sudo, wenn »apt-get update« ausgeführt wird. Hat keine Auswirkungen, "
+"falls -u weggelassen wird."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:42
+msgid "B<--distribution>"
+msgstr "B<--distribution>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:44
+msgid "Select another distribution, which is searched for build-depends."
+msgstr ""
+"wählt eine andere Distribution, in der nach Bauabhängigkeiten gesucht wird."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:46
+msgid "B<--only-main>"
+msgstr "B<--only-main>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:48
+msgid "Ignore contrib and non-free"
+msgstr "ignoriert »contrib« und »non-free«"
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:50
+msgid "B<--exclude-component>"
+msgstr "B<--exclude-component>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:52
+msgid "Ignore the given component (e.g. main, contrib, non-free)."
+msgstr ""
+"ignoriert die angegebene Komponente (z.B. »main«, »contrib«, »non-free«)."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:54
+msgid "B<--origin>"
+msgstr "B<--origin>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:56
+msgid "Restrict the search to only the specified origin (such as \"Debian\")."
+msgstr "begrenzt die Suche einzig auf den angegebenen Ursprung (wie »Debian)."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:58
+msgid "B<-m>, B<--print-maintainer>"
+msgstr "B<-m>, B<--print-maintainer>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:60
+msgid "Print the value of the maintainer field for each package."
+msgstr "gibt den Wert des Feldes »maintainer« für jedes Paket aus."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:62 ../scripts/dcontrol.pl:250
+msgid "B<-d>, B<--debug>"
+msgstr "B<-d>, B<--debug>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:64
+msgid "Run the debug mode"
+msgstr "führt den Fehlersuchmodus aus."
+
+#. type: TP
+#: ../scripts/build-rdeps.pl:66 ../scripts/cowpoke.1:131
+#: ../scripts/debclean.1:84 ../scripts/diff2patches.1:22
+#: ../scripts/grep-excuses.1:22 ../scripts/mass-bug.pl:117
+#: ../scripts/nmudiff.1:73 ../scripts/plotchangelog.1:92
+#: ../scripts/uscan.1:487
+#, no-wrap
+msgid "B<--help>"
+msgstr "B<--help>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:68
+msgid "Show the usage information."
+msgstr "zeigt die Aufrufinformationen."
+
+#. type: TP
+#: ../scripts/build-rdeps.pl:70 ../scripts/chdist.pl:49
+#: ../scripts/cowpoke.1:135 ../scripts/debchange.1:389
+#: ../scripts/debclean.1:87 ../scripts/debrelease.1:102
+#: ../scripts/debsign.1:103 ../scripts/debsnap.1:61
+#: ../scripts/dep3changelog.1:19 ../scripts/diff2patches.1:25
+#: ../scripts/dscverify.1:39 ../scripts/grep-excuses.1:25
+#: ../scripts/mass-bug.pl:121 ../scripts/nmudiff.1:76
+#: ../scripts/plotchangelog.1:95 ../scripts/pts-subscribe.1:31
+#: ../scripts/rmadison.pl:280 ../scripts/uscan.1:490 ../scripts/uupdate.1:85
+#: ../scripts/who-uploads.1:47
+#, no-wrap
+msgid "B<--version>"
+msgstr "B<--version>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:72
+msgid "Show the version information."
+msgstr "zeigt die Versionsinformationen."
+
+#. type: SH
+#: ../scripts/build-rdeps.pl:76 ../scripts/debpkg.1:12
+#, no-wrap
+msgid "REQUIREMENTS"
+msgstr "ANFORDERUNGEN"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:78
+msgid ""
+"The tool requires apt Sources files to be around for the checked "
+"components. In the default case this means that in /var/lib/apt/lists files "
+"need to be around for main, contrib and non-free."
+msgstr ""
+"Das Werkzeug benötigt die »Sources«-Dateien von Apt, um für die geprüften "
+"Komponenten da zu sein. Im Standardfall bedeutet das, dass die Dateien in /"
+"var/lib/apt/lists für »main«, »contrib« und »non-free« vorhanden sein müssen."
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:82
+msgid ""
+"In practice this means one needs to add one deb-src line for each component, "
+"e.g."
+msgstr ""
+"In der Praxis bedeutet das, dass eine »deb-src«-Zeile für jede Komponente "
+"hinzugefügt wird, z.B."
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:85
+msgid "deb-src http://<mirror>/debian <dist> main contrib non-free"
+msgstr "deb-src http://<mirror>/debian <dist> main contrib non-free"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:87
+msgid ""
+"and run apt-get update afterwards or use the update option of this tool."
+msgstr ""
+"und hinterher »apt-get update« ausgeführt wird oder die Verwendung der "
+"Option »update« für dieses Werkzeug nötig ist."
+
+#. type: =head1
+#: ../scripts/build-rdeps.pl:336 ../scripts/debcommit.pl:901
+#: ../scripts/desktop2menu.pl:43 ../scripts/licensecheck.pl:120
+#: ../scripts/namecheck.pl:36 ../scripts/svnpath.pl:89
+#: ../scripts/transition-check.pl:72
+msgid "LICENSE"
+msgstr "LIZENZ"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:338
+msgid ""
+"This code is copyright by Patrick Schoenfeld <schoenfeld@debian.org>, all "
+"rights reserved. This program comes with ABSOLUTELEY NO WARRANTY. You are "
+"free to redistribute this code under the terms of the GNU General Public "
+"License, version 2 or later."
+msgstr ""
+"Dieser Code steht unter dem Copyright von Patrick Schoenfeld "
+"<schoenfeld@debian.org>, alle Rechte vorbehalten. Dieses Programm bringt "
+"ABSOLUT KEINE GEWÄHRLEISTUNG mit. Sie haben die Freiheit, diesen Code unter "
+"den Bedingungen der GNU General Public License, Version 2 oder später, "
+"weiterzugeben."
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:346
+msgid "Patrick Schoenfeld <schoenfeld@debian.org>"
+msgstr "Patrick Schoenfeld <schoenfeld@debian.org>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:20
+msgid "chdist - script to easily play with several distributions"
+msgstr "chdist - Skript, um einfach mit mehreren Distributionen zu spielen"
+
+#. type: textblock
+#: ../scripts/chdist.pl:24
+msgid "B<chdist> [I<options>] [I<command>] [I<command parameters>]"
+msgstr "B<chdist> [I<Optionen>] [I<Befehl>] [I<Befehl Parameter>]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:28
+msgid ""
+"B<chdist> is a rewrite of what used to be known as 'MultiDistroTools' (or "
+"mdt). Its use is to create 'APT trees' for several distributions, making it "
+"easy to query the status of packages in other distribution without using "
+"chroots, for instance."
+msgstr ""
+"B<chdist> ist eine Neufassung dessen, was früher als "
+"»MultiDistroTools« (oder mdt) bekannt war. Es wird benutzt, um »APT-"
+"Verzeichnisbäume« für verschiedene Distributionen zu erstellen, die es "
+"erleichtern, den Status von Paketen in anderen Distributionen abzufragen, "
+"ohne beispielsweise Chroots zu verwenden."
+
+#. type: textblock
+#: ../scripts/chdist.pl:39 ../scripts/mass-bug.pl:119
+msgid "Provide a usage message."
+msgstr "stellt einen Aufruftext bereit."
+
+#. type: =item
+#: ../scripts/chdist.pl:41
+msgid "B<-d>, B<--data-dir> I<DIR>"
+msgstr "B<-d>, B<--data-dir> I<VERZ>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:43
+msgid "Choose data directory (default: F<$HOME/.chdist/>)."
+msgstr "wählt das Datenverzeichnis aus (Vorgabe: F<$HOME/.chdist/>)."
+
+#. type: =item
+#: ../scripts/chdist.pl:45
+msgid "B<-a>, B<--arch> I<ARCH>"
+msgstr "B<-a>, B<--arch> I<ARCHITEKTUR>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:47
+msgid "Choose architecture (default: `B<dpkg --print-architecture>`)."
+msgstr "wählt die Architektur aus (Vorgabe: »B<dpkg --print-architecture>«)."
+
+#. type: Plain text
+#: ../scripts/chdist.pl:51 ../scripts/deb-reversion.dbk:239
+#: ../scripts/mass-bug.pl:123 ../scripts/uscan.1:493
+msgid "Display version information."
+msgstr "zeigt Versionsinformationen."
+
+#. type: =item
+#: ../scripts/chdist.pl:59
+msgid "B<create> I<DIST> [I<URL> I<RELEASE> I<SECTIONS>]"
+msgstr "B<create> I<DISTRIBUTION> [I<URL> I<RELEASE> I<ABSCHNITTE>]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:61
+msgid "Prepare a new tree named I<DIST>"
+msgstr "bereitet einen neuen Verzeichnisbaum mit Namen I<DISTRIBUTION> vor."
+
+#. type: =item
+#: ../scripts/chdist.pl:63
+msgid "B<apt-get> I<DIST> <B<update>|B<source>|...>"
+msgstr "B<apt-get> I<DISTRIBUTION> <B<update>|B<source>|…>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:65
+msgid "Run B<apt-get> inside I<DIST>"
+msgstr "führt B<apt-get> innerhalb I<DISTRIBUTION> aus."
+
+#. type: =item
+#: ../scripts/chdist.pl:67
+msgid "B<apt-cache> I<DIST> <B<show>|B<showsrc>|...>"
+msgstr "B<apt-cache> I<DISTRIBUTION> <B<show>|B<showsrc>|…>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:69
+msgid "Run B<apt-cache> inside I<DIST>"
+msgstr "führt B<apt-cache> innerhalb I<DISTRIBUTION> aus."
+
+#. type: =item
+#: ../scripts/chdist.pl:71
+msgid "B<apt-rdepends> I<DIST> [...]"
+msgstr "B<apt-rdepends> I<DISTRIBUTION> […]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:73
+msgid "Run B<apt-rdepends> inside I<DIST>"
+msgstr "führt B<apt-rdepends> innerhalb I<DISTRIBUTION> aus."
+
+#. type: =item
+#: ../scripts/chdist.pl:75
+msgid "B<src2bin> I<DIST SRCPKG>"
+msgstr "B<src2bin> I<DISTRIBUTION QUELLPAKET>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:77
+msgid "List binary packages for I<SRCPKG> in I<DIST>"
+msgstr "listet Binärpakete für I<QUELLPAKET> in I<DISTRIBUTION> auf."
+
+#. type: =item
+#: ../scripts/chdist.pl:79
+msgid "B<bin2src> I<DIST BINPKG>"
+msgstr "B<bin2src> I<DISTRIBUTION BINÄRPAKET>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:81
+msgid "List source package for I<BINPKG> in I<DIST>"
+msgstr "listet Quellpakete für I<BINÄRPAKET> in I<DISTRIBUTION> auf."
+
+#. type: =item
+#: ../scripts/chdist.pl:83
+msgid "B<compare-packages> I<DIST1 DIST2> [I<DIST3>, ...]"
+msgstr ""
+"B<compare-packages> I<DISTRIBUTION1 DISTRIBUTION2> [I<DISTRIBUTION3>, …]"
+
+#. type: =item
+#: ../scripts/chdist.pl:85
+msgid "B<compare-bin-packages> I<DIST1 DIST2> [I<DIST3>, ...]"
+msgstr ""
+"B<compare-bin-packages> I<DISTRIBUTION1 DISTRIBUTION2> [I<DISTRIBUTION3>, …]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:87
+msgid "List versions of packages in several I<DIST>ributions"
+msgstr "listet Versionen von Paketen in mehreren I<DISTRIBUTION>en auf."
+
+#. type: =item
+#: ../scripts/chdist.pl:89
+msgid "B<compare-versions> I<DIST1 DIST2>"
+msgstr "B<compare-versions> I<DISTRIBUTION1 DISTRIBUTION2>"
+
+#. type: =item
+#: ../scripts/chdist.pl:91
+msgid "B<compare-bin-versions> I<DIST1 DIST2>"
+msgstr "B<compare-bin-versions> I<DISTRIBUTION1 DISTRIBUTION2>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:93
+msgid ""
+"Same as B<compare-packages>/B<compare-bin-packages>, but also runs B<dpkg --"
+"compare-versions> and display where the package is newer."
+msgstr ""
+"dasselbe wie B<compare-packages>/B<compare-bin-packages>, führt aber "
+"zusätzlich B<dpkg --compare-versions> aus und zeigt an, wo das Paket neuer "
+"ist"
+
+#. type: =item
+#: ../scripts/chdist.pl:96
+msgid "B<compare-src-bin-packages> I<DIST>"
+msgstr "B<compare-src-bin-packages> I<DISTRIBUTION>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:98
+msgid "Compare sources and binaries for I<DIST>"
+msgstr "vergleicht die Quell- und Binärdateien für I<DISTRIBUTION>"
+
+#. type: =item
+#: ../scripts/chdist.pl:100
+msgid "B<compare-src-bin-versions> I<DIST>"
+msgstr "B<compare-src-bin-versions> I<DISTRIBUTION>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:102
+msgid ""
+"Same as B<compare-src-bin-packages>, but also run B<dpkg --compare-versions> "
+"and display where the package is newer"
+msgstr ""
+"dasselbe wie B<compare-src-bin-packages>, führt aber zusätzlich B<dpkg --"
+"compare-versions> aus und zeigt an, wo das Paket neuer ist"
+
+#. type: =item
+#: ../scripts/chdist.pl:105
+msgid "B<grep-dctrl-packages> I<DIST> [...]"
+msgstr "B<grep-dctrl-packages> I<DISTRIBUTION> […]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:107
+msgid "Run B<grep-dctrl> on F<*_Packages> inside I<DIST>"
+msgstr ""
+"führt B<grep-dctrl> für F<*_Packages> innerhalb von I<DISTRIBUTION> aus."
+
+#. type: =item
+#: ../scripts/chdist.pl:109
+msgid "B<grep-dctrl-sources> I<DIST> [...]"
+msgstr "B<grep-dctrl-sources> I<DISTRIBUTION> […]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:111
+msgid "Run B<grep-dctrl> on F<*_Sources> inside I<DIST>"
+msgstr ""
+"führt B<grep-dctrl> für F<*_Sources> innerhalb von I<DISTRIBUTION> aus."
+
+#. type: =item
+#: ../scripts/chdist.pl:113
+msgid "B<list>"
+msgstr "B<list>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:115
+msgid "List available I<DIST>s"
+msgstr "listet verfügbare I<DISTRIBUTION>en auf."
+
+#. type: textblock
+#: ../scripts/chdist.pl:121
+msgid ""
+"This program is copyright 2007 by Lucas Nussbaum and Luk Claes. This program "
+"comes with ABSOLUTELY NO WARRANTY."
+msgstr ""
+"Dieses Programm unterliegt dem Copyright 2007 von Lucas Nussbaum und Luk "
+"Claes. Für dieses Programm besteht KEINERLEI GARANTIE."
+
+#. type: TH
+#: ../scripts/checkbashisms.1:1
+#, no-wrap
+msgid "CHECKBASHISMS"
+msgstr "CHECKBASHISMS"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:4
+msgid "checkbashisms - check for bashisms in /bin/sh scripts"
+msgstr "checkbashisms - prüft auf Bash-spezifisches in /bin/sh-Skripten"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:6
+msgid "B<checkbashisms> I<script> ..."
+msgstr "B<checkbashisms> I<Skript> …"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:8
+msgid "B<checkbashisms --help>|B<--version>"
+msgstr "B<checkbashisms --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:14
+msgid ""
+"B<checkbashisms>, based on one of the checks from the B<lintian> system, "
+"performs basic checks on I</bin/sh> shell scripts for the possible presence "
+"of bashisms. It takes the names of the shell scripts on the command line, "
+"and outputs warnings if possible bashisms are detected."
+msgstr ""
+"B<checkbashisms>, basierend auf einer der Prüfungen des B<lintian>-Systems, "
+"führt grundlegende Prüfungen für I</bin/sh>-Shell-Skripte auf mögliches "
+"Vorhandensein von Bash-Besonderheiten aus. Es nimmt die Namen der Shell-"
+"Skripte auf der Befehlszeile entgegen und gibt Warnungen aus, wenn "
+"potenzielle Bash-Besonderheiten entdeckt werden."
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:19
+msgid ""
+"Note that the definition of a bashism in this context roughly equates to \"a "
+"shell feature that is not required to be supported by POSIX\"; this means "
+"that some issues flagged may be permitted under optional sections of POSIX, "
+"such as XSI or User Portability."
+msgstr ""
+"Beachten Sie, dass die Definition einer Bash-Besonderheit in diesem Kontext "
+"grob »einer Shell-Funktionalität, die nicht notwendigerweise durch POSIX "
+"unterstützt wird« entspricht; dies bedeutet, dass einige gekennzeichnete "
+"Probleme unter optionalen Abschnitten von POSIX erlaubt sein könnten, wie "
+"XSI oder Benutzerportierbarkeit."
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:23
+msgid ""
+"In cases where POSIX and Debian Policy disagree, B<checkbashisms> by default "
+"allows extensions permitted by Policy but may also provide options for "
+"stricter checking."
+msgstr ""
+"In Fällen, in denen sich die POSIX- und Debian-Richtlinien widersprechen, "
+"erlaubt B<checkbashisms> standardmäßig Erweiterungen, die durch die "
+"Richtlinien erlaubt sind, stellt aber außerdem Optionen für strengere "
+"Prüfungen bereit."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:24 ../scripts/debchange.1:386
+#: ../scripts/debdiff.1:157 ../scripts/debrelease.1:99
+#: ../scripts/debsign.1:100 ../scripts/dep3changelog.1:16
+#: ../scripts/dscverify.1:36 ../scripts/pts-subscribe.1:28
+#: ../scripts/rc-alert.1:21 ../scripts/uupdate.1:82 ../scripts/whodepends.1:11
+#: ../scripts/who-uploads.1:44 ../scripts/who-permits-upload.pl:65
+#: ../scripts/wnpp-alert.1:23 ../scripts/wnpp-check.1:17
+#, no-wrap
+msgid "B<--help>, B<-h>"
+msgstr "B<--help>, B<-h>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:27 ../scripts/debdiff.1:160
+#: ../scripts/mk-build-deps.pl:81 ../scripts/rc-alert.1:24
+#: ../scripts/wnpp-alert.1:26 ../scripts/wnpp-check.1:20
+msgid "Show a summary of options."
+msgstr "zeigt eine Zusammenfassung der Optionen."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:27
+#, no-wrap
+msgid "B<--newline>, B<-n>"
+msgstr "B<--newline>, B<-n>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:30
+msgid ""
+"Check for \"B<echo -n>\" usage (non POSIX but required by Debian Policy "
+"10.4.)"
+msgstr ""
+"prüft auf den Gebrauch von »B<echo -n>« (nicht POSIX, jedoch von den Debian-"
+"Richtlinien 10.4 gefordert)."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:30
+#, no-wrap
+msgid "B<--posix>, B<-p>"
+msgstr "B<--posix>, B<-p>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:34
+msgid ""
+"Check for issues which are non POSIX but required to be supported by Debian "
+"Policy 10.4 (implies B<-n>)."
+msgstr ""
+"prüft auf Probleme mit Konstrukten, die nicht von POSIX, aber von den Debian-"
+"Richtlinien 10.4 gefordert werden (impliziert B<-n>)."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:34
+#, no-wrap
+msgid "B<--force>, B<-f>"
+msgstr "B<--force>, B<-f>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:39
+msgid ""
+"Force each script to be checked, even if it would normally not be (for "
+"instance, it has a bash or non POSIX shell shebang or appears to be a shell "
+"wrapper)."
+msgstr ""
+"erzwingt die Prüfung jedes Skripts, sogar wenn es normalerweise nicht "
+"geprüft würde (da es beispielsweise einen Bash- oder nicht POSIX-Shell-"
+"Shebang hat oder ein Shell-Wrapper zu sein scheint)."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:39
+#, no-wrap
+msgid "B<--extra>, B<-x>"
+msgstr "B<--extra>, B<-x>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:46
+msgid ""
+"Highlight lines which, whilst they do not contain bashisms, may be useful in "
+"determining whether a particular issue is a false positive which may be "
+"ignored. For example, the use of \"B<$BASH_ENV>\" may be preceded by "
+"checking whether \"B<$BASH>\" is set."
+msgstr ""
+"Hebt Zeilen hervor, die, obwohl sie keine Bash-Besonderheiten enthalten, bei "
+"der Festlegung nützlich sein könnten, ob ein bestimmtes Problem falsch "
+"positiv ist und ignoriert werden kann. Zum Beispiel könnte der Verwendung "
+"von »B<$BASH_ENV>« die Prüfung vorangestellt werden, ob »B<$BASH>« gesetzt "
+"ist."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:46 ../scripts/debdiff.1:160
+#: ../scripts/manpage-alert.1:17 ../scripts/rc-alert.1:24
+#: ../scripts/whodepends.1:14 ../scripts/wnpp-alert.1:26
+#: ../scripts/wnpp-check.1:20
+#, no-wrap
+msgid "B<--version>, B<-v>"
+msgstr "B<--version>, B<-v>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:49 ../scripts/debdiff.1:163
+#: ../scripts/getbuildlog.1:31 ../scripts/grep-excuses.1:28
+#: ../scripts/manpage-alert.1:20 ../scripts/mk-build-deps.pl:85
+#: ../scripts/rc-alert.1:27 ../scripts/whodepends.1:17
+#: ../scripts/wnpp-alert.1:29 ../scripts/wnpp-check.1:23
+msgid "Show version and copyright information."
+msgstr "zeigt die Version und Copyright-Informationen."
+
+#. type: SH
+#: ../scripts/checkbashisms.1:49 ../scripts/debdiff.1:213
+#, no-wrap
+msgid "EXIT VALUES"
+msgstr "RÜCKGABEWERTE"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:53
+msgid ""
+"The exit value will be 0 if no possible bashisms or other problems were "
+"detected. Otherwise it will be the sum of the following error values:"
+msgstr ""
+"Der Rückgabewert wird 0 sein, falls keine möglichen Bash-Besonderheiten oder "
+"anderen Probleme entdeckt wurden. Andernfalls wird er die Summe der "
+"folgenden Fehlerwerte sein:"
+
+#. type: TP
+#: ../scripts/checkbashisms.1:53 ../scripts/dscextract.1:24
+#: ../scripts/uscan.1:556 ../scripts/wnpp-check.1:29
+#, no-wrap
+msgid "1"
+msgstr "1"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:56
+msgid "A possible bashism was detected."
+msgstr "Eine potenzielle Bash-Besonderheit wurde entdeckt."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:56 ../scripts/dscextract.1:27
+#, no-wrap
+msgid "2"
+msgstr "2"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:60
+msgid ""
+"A file was skipped for some reason, for example, because it was unreadable "
+"or not found. The warning message will give details."
+msgstr ""
+"Aus irgendeinem Grund wurde eine Datei übersprungen, sie war beispielsweise "
+"nicht lesbar oder wurde nicht gefunden. Die Warnmeldung wird Einzelheiten "
+"preisgeben."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:60
+#, no-wrap
+msgid "4"
+msgstr "4"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:63
+msgid "No bashisms were detected in a bash script."
+msgstr "Es wurden keine Bash-Besonderheiten in einem Bash-Script entdeckt."
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:65
+msgid "B<lintian>(1)"
+msgstr "B<lintian>(1)"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:68
+msgid ""
+"B<checkbashisms> was originally written as a shell script by Yann Dirson "
+"E<lt>I<dirson@debian.org>E<gt> and rewritten in Perl with many more features "
+"by Julian Gilbey E<lt>I<jdg@debian.org>E<gt>."
+msgstr ""
+"B<checkbashisms> wurde ursprünglich als Shell-Skript von Yann Dirson "
+"E<lt>I<dirson@debian.org>E<gt> geschrieben. Eine Neuauflage in Perl mit "
+"wesentlich mehr Funktionalitäten wurde von Julian Gilbey E<lt>I<jdg@debian."
+"org>E<gt> verfasst."
+
+#. type: TH
+#: ../scripts/cowpoke.1:5
+#, no-wrap
+msgid "COWPOKE"
+msgstr "COWPOKE"
+
+#. type: TH
+#: ../scripts/cowpoke.1:5
+#, no-wrap
+msgid "April 28, 2008"
+msgstr "28. April 2008"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:20
+msgid "cowpoke - Build a Debian source package in a remote cowbuilder instance"
+msgstr ""
+"cowpoke - baut ein Debian-Quellpaket in einer fernen Cowbuilder-Instanz"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:23
+msgid "B<cowpoke> [I<options>]I< packagename.dsc>"
+msgstr "B<cowpoke> [I<Optionen>] I<Paketname.dsc>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:27
+msgid ""
+"Uploads a Debian source package to a B<cowbuilder> host and builds it, "
+"optionally also signing and uploading the result to an incoming queue."
+msgstr ""
+"lädt ein Debian-Quellpaket auf einen B<cowbuilder>-Rechner hoch und baut es, "
+"wahlweise signiert es außerdem das Ergebnis und lädt es in eine »incoming«-"
+"Warteschlange hoch."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:31 ../scripts/debsnap.1:28
+msgid "The following options are available:"
+msgstr "Die folgenden Optionen sind verfügbar:"
+
+#. type: TP
+#: ../scripts/cowpoke.1:32
+#, no-wrap
+msgid "B<--arch=>I<architecture>"
+msgstr "B<--arch=>I<Architektur>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:38
+msgid ""
+"Specify the Debian architecture(s) to build for. A space separated list of "
+"architectures may be used to build for all of them in a single pass. Valid "
+"arch names are those returned by B<dpkg-architecture>(1) for "
+"B<DEB_BUILD_ARCH>."
+msgstr ""
+"gibt die Debian-Architektur(en) an, für die gebaut wird. Es kann eine durch "
+"Leerzeichen getrennte Liste von Architekturen benutzt werden, um für alle in "
+"einem einzigen Durchgang zu bauen. Gültige Architekturnamen sind jene, die "
+"durch B<dpkg-architecture>(1) für B<DEB_BUILD_ARCH> zurückgegeben werden."
+
+#. type: TP
+#: ../scripts/cowpoke.1:39
+#, no-wrap
+msgid "B<--dist=>I<distribution>"
+msgstr "B<--dist=>I<Distribution>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:47
+msgid ""
+"Specify the Debian distribution(s) to build for. A space separated list of "
+"distributions may be used to build for all of them in a single pass. Either "
+"codenames (such as B<sid>, or B<squeeze>) or distribution names (such as "
+"B<unstable>, or B<experimental>) may be used, but you should usually stick "
+"to using one or the other consistently as this name may be used in file "
+"paths and to locate old packages for comparison reporting."
+msgstr ""
+"gibt die Debian-Distribution(en) an, für die gebaut wird. Es kann eine durch "
+"Leerzeichen getrennte Liste von Distributionen benutzt werden, um für alle "
+"in einem einzigen Durchgang zu bauen. Es können entweder Codenamen (wie "
+"B<sid> oder B<squeeze>) oder Distributionsnamen (wie B<unstable> oder "
+"B<experimental>) verwendet werden, aber Sie sollten üblicherweise "
+"durchgehend dabei bleiben, den einen oder anderen zu benutzen, da dieser "
+"Name in Dateipfaden benutzt wird und um alte Pakete für Vergleichsberichte "
+"zu orten."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:55
+msgid ""
+"It is now also possible to use locally defined names with this option, when "
+"used in conjunction with the B<BASE_DIST> option in a configuration file. "
+"This permits the maintenance and use of specially configured build chroots, "
+"which can source package dependencies from the backports archives or a local "
+"repository, or have other unusual configuration options set, without "
+"polluting the chroots you use for clean package builds intended for upload "
+"to the main repositories. See the description of B<BASE_DIST> below."
+msgstr ""
+"Es ist nun auch möglich, mit dieser Option lokal definierte Namen zu "
+"benutzen, wenn sie zusammen mit der Option B<BASE_DIST> in einer "
+"Konfigurationsdatei verwendet werden. Dies erlaubt die Verwaltung und "
+"Benutzung eigens konfigurierter Bau-Chroots, die Paketabhängigkeiten aus den "
+"Backports-Archiven oder einem lokalen Depot beziehen können. Außerdem sind "
+"andere ungewöhnliche Optionszusammenstellungen möglich, ohne die Chroots zu "
+"verunreinigen, die zum sauberen Bauen und Hochladen in die Hauptdepots "
+"gedacht sind. Lesen Sie die die Beschreibung von B<BASE_DIST> weiter unten."
+
+#. type: TP
+#: ../scripts/cowpoke.1:56
+#, no-wrap
+msgid "B<--buildd=>I<host>"
+msgstr "B<--buildd=>I<Rechner>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:59
+msgid "Specify the remote host to build on."
+msgstr "gibt den fernen Rechner an, auf dem gebaut werden soll."
+
+#. type: TP
+#: ../scripts/cowpoke.1:60
+#, no-wrap
+msgid "B<--buildd-user=>I<name>"
+msgstr "B<--buildd-user=>I<Name>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:63
+msgid "Specify the remote user to build as."
+msgstr "gibt den fernen Benutzernamen an, unter dem gebaut wird."
+
+#. type: TP
+#: ../scripts/cowpoke.1:64 ../scripts/debchange.1:194
+#, no-wrap
+msgid "B<--create>"
+msgstr "B<--create>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:69
+msgid ""
+"Create the remote B<cowbuilder> root if it does not already exist. If this "
+"option is not passed it is an error for the specified B<--dist> or B<--arch> "
+"to not have an existing B<cowbuilder> root in the expected location."
+msgstr ""
+"erstellt das ferne B<cowbuilder>-Wurzelverzeichnis, falls es noch nicht "
+"existiert. Falls diese Option nicht übergeben wird, ist es für die "
+"angegebene B<--dist> oder B<--arch> ein Fehler, über kein existierendes "
+"B<cowbuilder>-Wurzelverzeichnis an der erwarteten Stelle zu verfügen."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:74
+msgid ""
+"The B<--buildd-user> must have permission to create the B<RESULT_DIR> on the "
+"build host, or an admin with the necessary permission must first create it "
+"and give that user (or some group they are in) write access to it, for this "
+"option to succeed."
+msgstr ""
+"Der B<--buildd-user> muss das Recht haben, auf dem Baurechner das "
+"B<RESULT_DIR> zu erstellen oder ein Administrator mit den nötigen Rechten "
+"muss es zuerst erstellen und diesem Benutzer (oder einer Gruppe, der er "
+"angehört) Schreibzugriff darauf geben, damit diese Option erfolgreich ist."
+
+#. type: TP
+#: ../scripts/cowpoke.1:75
+#, no-wrap
+msgid "B<--return=>[I<path>]"
+msgstr "B<--return=>[I<Pfad>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:79
+msgid ""
+"Copy results of the build to I<path>. If I<path> is not specified, then "
+"return them to the current directory. The given I<path> must exist, it will "
+"not be created."
+msgstr ""
+"kopiert Ergebnisse des Bauens nach I<Pfad>. Falls I<Pfad> nicht angegeben "
+"wurde, dann werden sie an das aktuelle Verzeichnis zurückgegeben. Der "
+"angegebene Pfad muss existieren, er wird nicht erstellt."
+
+#. type: TP
+#: ../scripts/cowpoke.1:80
+#, no-wrap
+msgid "B<--no-return>"
+msgstr "B<--no-return>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:84
+msgid ""
+"Do not copy results of the build to B<RETURN_DIR> (overriding a path set for "
+"it in the configuration files)."
+msgstr ""
+"kopiert Ergebnisse des Bauens nicht nach B<RETURN_DIR> (setzt eine "
+"Pfadeinstellung hierfür in den Konfigurationsdateien außer Kraft)."
+
+#. type: TP
+#: ../scripts/cowpoke.1:85
+#, no-wrap
+msgid "B<--dpkg-opts=>I<'opt1 opt2 ...'>"
+msgstr "B<--dpkg-opts=>I<'Option1 Option2 …'>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:90
+msgid ""
+"Specify additional options to be passed to B<dpkg-buildpackage>(1). "
+"Multiple options are delimited with spaces. This will override any options "
+"specified in B<DEBBUILDOPTS> in the build host's I<pbuilderrc>."
+msgstr ""
+"gibt zusätzliche Optionen an, die an B<dpkg-buildpackage>(1) übergeben "
+"werden. Mehrere Optionen werden durch Leerzeichen getrennt. Dies wird alle "
+"in B<DEBBUILDOPTS> angegebenen Optionen in der I<pbuilderrc> des Baurechners "
+"außer Kraft setzen."
+
+#. type: TP
+#: ../scripts/cowpoke.1:91
+#, no-wrap
+msgid "B<--create-opts=>I<'cowbuilder option'>"
+msgstr "B<--create-opts=>I<'Cowbuilder-Option'>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:97
+msgid ""
+"Specify additional arguments to be passed verbatim to B<cowbuilder> when a "
+"chroot is first created (using the B<--create> option above). If multiple "
+"arguments need to be passed, this option should be specified separately for "
+"each of them."
+msgstr ""
+"gibt zusätzliche Argumente an, die unverändert an B<Cowbuilder> "
+"weitergereicht werden, wenn eine Chroot zum ersten Mal (mittels der obigen "
+"Option B<--create>) erstellt wird. Falls mehrere Optionen weitergereicht "
+"werden müssen, sollte diese Option separat für jede einzelne angegeben "
+"werden."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:99
+msgid ""
+"E.g., B<--create-opts \"--othermirror\" --create-opts \"deb http:// ...\">"
+msgstr "Z.B. B<--create-opts \"--othermirror\" --create-opts \"deb http://…\">"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:102
+msgid ""
+"This option will override any B<CREATE_OPTS> specified for a chroot in the "
+"cowpoke configuration files."
+msgstr ""
+"Diese Option wird jede für eine Chroot in den Cowpoke-Konfigurationsdateien "
+"angegebene B<CREATE_OPTS> außer Kraft setzen."
+
+#. type: TP
+#: ../scripts/cowpoke.1:103
+#, no-wrap
+msgid "B<--update-opts=>I<'cowbuilder option'>"
+msgstr "B<--update-opts=>I<'Cowbuilder-Option'>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:108
+msgid ""
+"Specify additional arguments to be passed verbatim to B<cowbuilder> if the "
+"base of the chroot is updated. If multiple arguments need to be passed, "
+"this option should be specified separately for each of them."
+msgstr ""
+"gibt zusätzliche Argumente an, die unverändert an B<Cowbuilder> "
+"weitergereicht werden, wenn die Chroot aktualisiert wird. Falls mehrere "
+"Optionen weitergereicht werden müssen, sollte diese Option separat für jede "
+"einzelne angegeben werden."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:111
+msgid ""
+"This option will override any B<UPDATE_OPTS> specified for a chroot in the "
+"cowpoke configuration files."
+msgstr ""
+"Diese Option wird jede für eine Chroot in den Cowpoke-Konfigurationsdateien "
+"angegebene B<UPDATE_OPTS> außer Kraft setzen."
+
+#. type: TP
+#: ../scripts/cowpoke.1:112
+#, no-wrap
+msgid "B<--build-opts=>I<'cowbuilder option'>"
+msgstr "B<--build-opts=>I<'Cowbuilder-Option'>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:117
+msgid ""
+"Specify additional arguments to be passed verbatim to B<cowbuilder> when a "
+"package build is performed. If multiple arguments need to be passed, this "
+"option should be specified separately for each of them."
+msgstr ""
+"gibt zusätzliche Argumente an, die unverändert an B<Cowbuilder> "
+"weitergereicht werden, wenn ein Paket gebaut wird. Falls mehrere Optionen "
+"weitergereicht werden müssen, sollte diese Option separat für jede einzelne "
+"angegeben werden."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:120
+msgid ""
+"This option will override any B<BUILD_OPTS> specified for a chroot in the "
+"cowpoke configuration files."
+msgstr ""
+"Diese Option wird jede für eine Chroot in den Cowpoke-Konfigurationsdateien "
+"angegebene B<BUILD_OPTS> außer Kraft setzen."
+
+#. type: TP
+#: ../scripts/cowpoke.1:121
+#, no-wrap
+msgid "B<--sign=>I<keyid>"
+msgstr "B<--sign=>I<Schlüsselkennung>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:125
+#, fuzzy
+#| msgid ""
+#| "This option will override any B<BUILD_OPTS> specified for a chroot in the "
+#| "cowpoke configuration files."
+msgid ""
+"Specify the key to sign packages with. This will override any B<SIGN_KEYID> "
+"specified for a chroot in the cowpoke configuration files."
+msgstr ""
+"Diese Option wird jede für eine Chroot in den Cowpoke-Konfigurationsdateien "
+"angegebene B<BUILD_OPTS> außer Kraft setzen."
+
+#. type: TP
+#: ../scripts/cowpoke.1:126
+#, fuzzy, no-wrap
+#| msgid "B<--dupload>, B<--dput>"
+msgid "B<--upload=>I<queue>"
+msgstr "B<--dupload>, B<--dput>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:130
+#, fuzzy
+#| msgid ""
+#| "This option will override any B<BUILD_OPTS> specified for a chroot in the "
+#| "cowpoke configuration files."
+msgid ""
+"Specify the dput queue to upload signed packages to. This will override any "
+"B<UPLOAD_QUEUE> specified for a chroot in the cowpoke configuration files."
+msgstr ""
+"Diese Option wird jede für eine Chroot in den Cowpoke-Konfigurationsdateien "
+"angegebene B<BUILD_OPTS> außer Kraft setzen."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:134
+msgid ""
+"Display a brief summary of the available options and current configuration."
+msgstr ""
+"zeigt eine kurze Zusammenfassung der verfügbaren Optionen und der aktuellen "
+"Konfiguration."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:138
+msgid "Display the current version information."
+msgstr "zeigt die aktuelle Versionsinformation."
+
+#. type: SH
+#: ../scripts/cowpoke.1:140 ../scripts/debsnap.1:66
+#, no-wrap
+msgid "CONFIGURATION OPTIONS"
+msgstr "KONFIGURATIONSOPTIONEN"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:146
+msgid ""
+"When B<cowpoke> is run the following configuration options are read from "
+"global, per-user, and per-project configuration files if present. File "
+"paths may be absolute or relative, the latter being relative to the "
+"B<BUILDD_USER>'s home directory. Since the paths are typically quoted when "
+"used, tilde expansion will B<not> be performed on them."
+msgstr ""
+"Wenn B<cowpoke> ausgeführt wird, werden die folgenden Optionen von globalen, "
+"benutzer- und objektbezogenen Konfigurationsdateien gelesen, falls "
+"vorhanden. Dateipfade können absolut oder relativ sein, letztere sind zum "
+"B<BUILDD_USER>-Home-Verzeichnis relativ. Da die Pfade bei der Benutzung "
+"typischerweise in Anführungszeichen stehen, wird darauf keine Tilde-"
+"Expandierung durchgeführt."
+
+#. type: SS
+#: ../scripts/cowpoke.1:147
+#, no-wrap
+msgid "Global defaults"
+msgstr "Globale Vorgaben"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:149
+msgid ""
+"These apply to every I<arch> and I<dist> in a single cowpoke invocation."
+msgstr ""
+"Dies gilt für jede I<Architektur> und I<Distribution> in einem einzelnen "
+"Cowpoke-Aufruf."
+
+#. type: TP
+#: ../scripts/cowpoke.1:150
+#, no-wrap
+msgid "B<BUILDD_HOST>"
+msgstr "B<BUILDD_HOST>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:154
+msgid ""
+"The network address or fqdn of the build machine where B<cowbuilder> is "
+"configured. This may be overridden by the B<--buildd> command line option."
+msgstr ""
+"die Netzwerkadresse oder FQDN der Baumaschine auf der B<cowbuilder> "
+"konfiguriert ist. Dies könnte durch die Befehlszeilenoption B<--buildd> "
+"außer Kraft gesetzt werden."
+
+#. type: TP
+#: ../scripts/cowpoke.1:154
+#, no-wrap
+msgid "B<BUILDD_USER>"
+msgstr "B<BUILDD_USER>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:160
+msgid ""
+"The unprivileged user name for operations on the build machine. This "
+"defaults to the local name of the user executing B<cowpoke> (or to a "
+"username that is specified in your SSH configuration for B<BUILDD_HOST>), "
+"and may be overridden by the B<--buildd-user> command line option."
+msgstr ""
+"der nicht privilegierte Benutzername für Operationen auf der Baumaschine. "
+"Dies ist standardmäßig der lokale Name des Benutzers, der B<cowpoke> "
+"ausführt (oder ein Benutzername, der in der SSH-Konfiguration für "
+"B<BUILDD_HOST> angegeben wurd), und kann durch die Befehlszeilenoption B<--"
+"buildd-user> außer Kraft gesetzt werden."
+
+#. type: TP
+#: ../scripts/cowpoke.1:160
+#, no-wrap
+msgid "B<BUILDD_ARCH>"
+msgstr "B<BUILDD_ARCH>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:167
+msgid ""
+"The Debian architecture(s) to build for. This must match the "
+"B<DEB_BUILD_ARCH> of the build chroot being used. It defaults to the local "
+"machine architecture where B<cowpoke> is executed, and may be overridden by "
+"the B<--arch> command line option. A (quoted) space separated list of "
+"architectures may be used here to build for all of them in a single pass."
+msgstr ""
+"die Debian-Architektur(en), für die gebaut wird. Dies muss zu "
+"B<DEB_BUILD_ARCH> der benutzten Bau-Chroot passen. Standardmäßig ist es die "
+"Architektur des lokalen Rechners, auf der B<cowpoke> ausgeführt wird. Sie "
+"könnte durch die Befehlszeilenoption B<--arch> außer Kraft gesetzt werden. "
+"Hier könnte eine durch Kommas getrennte Liste (in Anführungszeichen) "
+"verwendet werden, um um für alle hieraus in einem einzigen Durchgang zu "
+"bauen."
+
+#. type: TP
+#: ../scripts/cowpoke.1:167
+#, no-wrap
+msgid "B<BUILDD_DIST>"
+msgstr "B<BUILDD_DIST>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:172
+msgid ""
+"The Debian distribution(s) to build for. A (quoted) space separated list of "
+"distributions may be used to build for all of them in a single pass. This "
+"may be overridden by the B<--dist> command line option."
+msgstr ""
+"die Debian-Distribution(en), für die gebaut wird. Eine durch Leerzeichen "
+"getrennte Liste von Distributionen (in Anführungszeichen) kann benutzt "
+"werden, um alle in einem einzigen Durchgang zu bauen. Dies könnte durch die "
+"Befehlszeilenoption B<--dist> außer Kraft gesetzt werden."
+
+#. type: TP
+#: ../scripts/cowpoke.1:173
+#, no-wrap
+msgid "B<INCOMING_DIR>"
+msgstr "B<INCOMING_DIR>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:177
+msgid ""
+"The directory path on the build machine where the source package will "
+"initially be placed. This must be writable by the B<BUILDD_USER>."
+msgstr ""
+"der Installationspfad auf der Baumaschine, in der das Quellpaket anfangs "
+"platziert wird. Dies muss durch den B<BUILDD_USER> schreibbar sein."
+
+#. type: TP
+#: ../scripts/cowpoke.1:177
+#, no-wrap
+msgid "B<PBUILDER_BASE>"
+msgstr "B<PBUILDER_BASE>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:182
+msgid ""
+"The filesystem root for all pbuilder CoW and result files. I<Arch> and "
+"I<dist> specific subdirectories will normally be created under this. The "
+"apt cache and temporary build directory will also be located under this path."
+msgstr ""
+"die Wurzel des Dateisystems für alle Pbuilder-COW- und Ergebnisdateien. "
+"I<Architektur>- und I<distribution>sspezifische Unterverzeichnisse werden "
+"normalerweise darunter erstellt. Der APT-Zwischenspeicher und die temporären "
+"Bauverzeichnisse werden ebenso unterhalb dieses Pfads liegen."
+
+#. type: TP
+#: ../scripts/cowpoke.1:183
+#, no-wrap
+msgid "B<SIGN_KEYID>"
+msgstr "B<SIGN_KEYID>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:194
+#, fuzzy
+#| msgid ""
+#| "If this option is set, it is expected to contain the gpg key ID to pass "
+#| "to B<debsign>(1) if the packages are to be remotely signed. You will be "
+#| "prompted to confirm whether you wish to sign the packages after all "
+#| "builds are complete. If this option is unset or an empty string, no "
+#| "attempt to sign packages will be made. It may be overridden on an "
+#| "I<arch> and I<dist> specific basis using the "
+#| "I<arch>B<_>I<dist>B<_SIGN_KEYID> option described below."
+msgid ""
+"If this option is set, it is expected to contain the gpg key ID to pass to "
+"B<debsign>(1) if the packages are to be remotely signed. You will be "
+"prompted to confirm whether you wish to sign the packages after all builds "
+"are complete. If this option is unset or an empty string, no attempt to "
+"sign packages will be made. It may be overridden on an I<arch> and I<dist> "
+"specific basis using the I<arch>B<_>I<dist>B<_SIGN_KEYID> option described "
+"below, or per-invocation with the B<--sign> command line option."
+msgstr ""
+"Falls diese Option gesetzt ist, wird erwartet, dass sie die GPG-"
+"Schlüsselkennung zur Übergabe an B<debsign>(1) enthält, falls die Pakete aus "
+"der Ferne signiert werden sollen. Sie werden um Bestätigung gebeten, ob Sie "
+"die Pakete signieren möchten, nachdem das Bauen aller Pakete abgeschlossen "
+"ist. Falls diese Option nicht gesetzt oder eine leere Zeichenkette ist, wird "
+"kein Versuch unternommen, Pakete zu signieren. Sie kann auf einer "
+"I<architektur>- oder I<distribution>sspezifischen Basis mittels der weiter "
+"unten beschriebenen Option I<Architektur>B<_>I<Distribution>B<_SIGN_KEYID> "
+"außer Kraft gesetzt werden."
+
+#. type: TP
+#: ../scripts/cowpoke.1:195
+#, no-wrap
+msgid "B<UPLOAD_QUEUE>"
+msgstr "B<UPLOAD_QUEUE>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:206
+#, fuzzy
+#| msgid ""
+#| "If this option is set, it is expected to contain a 'host' specification "
+#| "for B<dput>(1) which will be used to upload them after they are signed. "
+#| "You will be prompted to confirm whether you wish to upload the packages "
+#| "after they are signed. If this option is unset or an empty string, no "
+#| "attempt to upload packages will be made. If B<SIGN_KEYID> is not set, "
+#| "this option will be ignored entirely. It may be overridden on an I<arch> "
+#| "and I<dist> specific basis using the I<arch>B<_>I<dist>B<_UPLOAD_QUEUE> "
+#| "option described below."
+msgid ""
+"If this option is set, it is expected to contain a 'host' specification for "
+"B<dput>(1) which will be used to upload them after they are signed. You "
+"will be prompted to confirm whether you wish to upload the packages after "
+"they are signed. If this option is unset or an empty string, no attempt to "
+"upload packages will be made. If B<SIGN_KEYID> is not set, this option will "
+"be ignored entirely. It may be overridden on an I<arch> and I<dist> "
+"specific basis using the I<arch>B<_>I<dist>B<_UPLOAD_QUEUE> option described "
+"below, or per-invocation with the B<--upload> command line option."
+msgstr ""
+"Falls diese Option gesetzt ist, wird erwartet, dass sie eine »host«-Angabe "
+"für B<dput>(1) enthält, die verwendet wird, um sie nach dem Signieren "
+"hochzuladen. Sie werden um Bestätigung gebeten, ob Sie die Pakete nach dem "
+"Signieren hochladen möchten. Falls diese Option nicht gesetzt oder eine "
+"leere Zeichenkette ist, wird kein Versuch unternommen, diese Pakete "
+"hochzuladen. Falls B<SIGN_KEYID> nicht gesetzt ist, wird diese Option ganz "
+"ignoriert. Sie kann auf einer I<architektur>- oder "
+"I<distribution>sspezifischen Basis mittels der weiter unten beschriebenen "
+"Option I<Architektur>B<_>I<Distribution>B<_UPLOAD_QUEUE> außer Kraft gesetzt "
+"werden."
+
+#. type: TP
+#: ../scripts/cowpoke.1:208
+#, no-wrap
+msgid "B<BUILDD_ROOTCMD>"
+msgstr "B<BUILDD_ROOTCMD>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:216
+msgid ""
+"The command to use to gain root privileges on the remote build machine. If "
+"unset the default is B<sudo>(8). This is only required to invoke "
+"B<cowbuilder> and allow it to enter its chroot, so you may restrict this "
+"user to only being able to run that command with escalated privileges. "
+"Something like this in sudoers will enable invoking B<cowbuilder> without an "
+"additional password entry required:"
+msgstr ""
+"der Befehl, der zum Erlangen von Root-Rechten auf der fernen Baumaschine "
+"benutzt wird. Falls nicht gesetzt, ist die Vorgabe B<sudo>(8). Dies ist nur "
+"nötig, um B<cowbuilder> aufzurufen und ihm zu erlauben, in seine Chroot zu "
+"gelangen, daher könnten Sie diesen Nutzer darauf beschränken, diesen Befehl "
+"mit ausgeweiteten Rechten auszuführen. Ein Eintrag wie der folgende in "
+"»sudoers« wird es ermöglichen, B<cowbuilder> ohne einen zusätzlich nötigen "
+"Passworteintrag aufzurufen:"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:220
+msgid "youruser ALL = NOPASSWD: /usr/sbin/cowbuilder"
+msgstr "Ihrbenutzer ALL = NOPASSWD: /usr/sbin/cowbuilder"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:227
+msgid ""
+"Alternatively you could use SSH with a forwarded key, or whatever other "
+"mechanism suits your local access policy. Using B<su -c> isn't really "
+"suitable here due to its quoting requirements being somewhat different to "
+"the rest."
+msgstr ""
+"Alternativ könnten Sie SSH mit einem weitergeleiteten Schlüssel oder "
+"irgendeinem anderen Mechanismus, der Ihrer lokalen Zugriffsrichtlinie "
+"entspricht, verwenden. Die Benutzung von B<su -c> ist hier nicht wirklich "
+"passend, da seine Maskierungsanforderungen sich etwas vom Rest unterscheiden."
+
+#. type: TP
+#: ../scripts/cowpoke.1:228
+#, no-wrap
+msgid "B<DEBOOTSTRAP>"
+msgstr "B<DEBOOTSTRAP>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:232
+msgid ""
+"The utility to use when creating a new build root. Alternatives are "
+"B<debootstrap> or B<cdebootstrap>."
+msgstr ""
+"das Hilfswerkzeug, das beim Erstellen einer neuen Chroot benutzt wird. "
+"Alternativen sind B<debootstrap> oder B<cdebootstrap>."
+
+#. type: TP
+#: ../scripts/cowpoke.1:233
+#, no-wrap
+msgid "B<RETURN_DIR>"
+msgstr "B<RETURN_DIR>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:239
+msgid ""
+"If set, package files resulting from the build will be copied to the path "
+"(local or remote) that this is set to, after the build completes. The path "
+"must exist, it will not be created. This option is unset by default and can "
+"be overridden with B<--return> or B<--no-return>."
+msgstr ""
+"Falls gesetzt, werden Paketdateien, die Ergebnis des Bauens sind, in den "
+"Pfad (lokal oder in der Ferne) kopiert, auf den dies gesetzt ist. Der Pfad "
+"muss existieren, er wird nicht angelegt. Diese Option ist standardmäßig "
+"nicht gesetzt und kann mit B<--return> oder B<--no-return> überschrieben "
+"werden."
+
+#. type: SS
+#: ../scripts/cowpoke.1:241
+#, no-wrap
+msgid "Arch and dist specific options"
+msgstr "Architekur- und distributionsspezifische Optionen"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:244
+msgid ""
+"These are variables of the form: $arch_$distB<_VAR> which apply only for a "
+"particular target arch/dist build."
+msgstr ""
+"Dies sind Variablen der Form $arch_$distB<_VAR>, die nur für ein bestimmtes "
+"Architektur-/Distributions-Bauziel gelten."
+
+#. type: TP
+#: ../scripts/cowpoke.1:245
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_RESULT_DIR>"
+msgstr "I<Architektur>B<_>I<Distribution>B<_RESULT_DIR>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:256
+msgid ""
+"The directory path on the build machine where the resulting packages (source "
+"and binary) will be found, and where older versions of the package that were "
+"built previously may be found. If any such older packages exist, B<debdiff> "
+"will be used to compare the new package with the previous version after the "
+"build is complete, and the result will be included in the build log. Files "
+"in it must be readable by the B<BUILDD_USER> for sanity checking with "
+"B<lintian>(1) and B<debdiff>(1), and for upload with B<dput>(1). If this "
+"option is not specified for some arch and dist combination then it will "
+"default to I<$PBUILDER_BASE/$arch/$dist/result>"
+msgstr ""
+"Der Verzeichnispfad auf der Baumaschine, in dem die resultierenden (Quell- "
+"und Binär-)Pakete abgelegt werden und wo ältere Versionen der Pakete, die "
+"vorher gebaut wurden, gefunden werden können. Falls irgendwelche derartigen "
+"älteren Pakete existieren, wird B<debdiff> benutzt, um das neue Paket mit "
+"der vorhergehenden Version zu vergleichen, nachdem das Bauen abgeschlossen "
+"ist. Das Ergebnis wird in das Bauprotokoll eingefügt. Dateien darin müssen "
+"für den B<BUILDD_USER> für Plausibilitätsprüfungen mit B<lintian>(1) und "
+"B<debdiff>(1) und das Hochladen mit B<dput>(1) lesbar sein. Falls diese "
+"Option für irgendwelche Architektur- und Distributionskombinationen nicht "
+"angegeben ist, dann wird I<$PBUILDER_BASE/$arch/$dist/result> vorgegeben."
+
+#. type: TP
+#: ../scripts/cowpoke.1:257
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_BASE_PATH>"
+msgstr "I<Architektur>B<_>I<Distribution>B<_BASE_PATH>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:263
+msgid ""
+"The directory where the CoW master files are to be found (or created if the "
+"B<--create> command line option was passed). If this option is not "
+"specified for some arch or dist then it will default to I<$PBUILDER_BASE/"
+"$arch/$dist/base.cow>"
+msgstr ""
+"das Verzeichnis, in dem die CoW-Master-Dateien vorliegen werden (oder "
+"erzeugt werden, falls die Befehlszeilenoption B<--create> übergeben wurde). "
+"Falls diese Option für irgendwelche Architekturen und Distributionen nicht "
+"angegeben wurde, dann wird I<$PBUILDER_BASE/$arch/$dist/base.cow> vorgegeben."
+
+#. type: TP
+#: ../scripts/cowpoke.1:264
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_BASE_DIST>"
+msgstr "I<Architektur>B<_>I<Distribution>B<_BASE_DIST>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:274
+msgid ""
+"The code name to pass as the B<--distribution> option for cowbuilder instead "
+"of I<dist>. This is necessary when I<dist> is a locally significant name "
+"assigned to some specially configured build chroot, such as "
+"'wheezy_backports', and not the formal suite name of a distro release known "
+"to debootstrap. This option cannot be overridden on the command line, since "
+"it would rarely, if ever, make any sense to change it for individual "
+"invocations of B<cowpoke>. If this option is not specified for an arch and "
+"dist combination then it will default to I<dist>."
+msgstr ""
+"der Codename, der anstelle von I<Distribution> als Option B<--distribution> "
+"an Cowbuilder übergeben wird. Dies ist nötig, wenn I<Distribution> ein lokal "
+"bedeutsamer Name ist, der irgendeiner speziell konfigurierten Bau-Chroot wie "
+"»wheezy_backports« zugewiesen wurde und nicht der Debootstrap bekannte "
+"offizielle Suite-Name einer Distributionsveröffentlichung ist. Diese Option "
+"kann nicht auf der Befehlszeile außer Kraft gesetzt werden, da dies selten, "
+"wenn nicht sogar nie, für einzelne Aufrufe von B<Cowpoke> sinnvoll wäre. "
+"Falls diese Option nicht für eine Architektur- und Distributionskombination "
+"angegeben wurde, wird als Voreinstellung I<Distribution> genommen."
+
+#. type: TP
+#: ../scripts/cowpoke.1:275
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_CREATE_OPTS>"
+msgstr "I<Architektur>B<_>I<Distribution>B<_CREATE_OPTS>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:283
+msgid ""
+"A bash array containing additional options to pass verbatim to B<cowbuilder> "
+"when this chroot is created for the first time (using the B<--create> "
+"option). This is useful when options like B<--othermirror> are wanted to "
+"create specialised chroot configurations such as 'wheezy_backports'. By "
+"default this is unset. All values set in it will be overridden if the B<--"
+"create-opts> option is passed on the command line."
+msgstr ""
+"ein Bash-Feld, das zusätzliche Optionen enthält, die unverändert an "
+"B<Cowbuilder> weitergegeben werden, wenn diese Chroot zum ersten Mal "
+"(mittels der Option B<--create>) erstellt wird. Dies ist nützlich, wenn "
+"Optionen wie B<--othermirror> zum Erstellen spezialisierter Chroots wie "
+"»wheezy_backports« erwünscht werden. Standardmäßig ist dies nicht gesetzt. "
+"Alle darin gesetzten Werte werden außer Kraft gesetzt, falls auf der "
+"Befehlszeile die Option B<--create-opts> übergeben wird."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:288
+msgid ""
+"Each element in this array corresponds to a single argument (in the ARGV "
+"sense) that will be passed to cowbuilder. This ensures that arguments "
+"which may contain whitespace or have strange quoting requirements or other "
+"special characters will not be mangled before they get to cowbuilder."
+msgstr ""
+"Jedes Element dieses Feldes entspricht einem einzelnen Argument (im Sinne "
+"von ARGV), das an Cowbuilder übergeben wird. Dadurch wird sichergestellt, "
+"dass Argumente, die Leerräume enthalten oder merkwürdige "
+"Maskierungsanforderungen oder andere Sonderzeichen haben, nicht verwürfelt "
+"werden, ehe Cowbuilder sie bekommt."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:290
+msgid "Bash arrays are initialised using the following form:"
+msgstr "Die Initialisierung von Bash-Feldern geschieht in folgender Form:"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:292
+#, no-wrap
+msgid " OPTS=( \"arg1\" \"arg 2\" \"--option\" \"value\" \"--opt=val\" \"etc. etc.\" )\n"
+msgstr " OPTS=( \"Arg1\" \"Arg 2\" \"--option\" \"Wert\" \"--opt=Wert\" \"etc. etc.\" )\n"
+
+#. type: TP
+#: ../scripts/cowpoke.1:293
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_UPDATE_OPTS>"
+msgstr "I<Architektur>B<_>I<Distribution>B<_UPDATE_OPTS>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:298
+msgid ""
+"A bash array containing additional options to pass verbatim to B<cowbuilder> "
+"each time the base of this chroot is updated. It behaves similarly to the "
+"B<CREATE_OPTS> option above, except for acting when the chroot is updated."
+msgstr ""
+"ein Bash-Feld, das zusätzliche Optionen enthält, die jedesmal, wenn die "
+"Basis dieser Chroot aktualisiert wird, unverändert an B<Cowbuilder> "
+"weitergereicht werden. Es verhält sich ähnlich der oben beschriebenen "
+"B<CREATE_OPTS>-Optionen, außer dass es beim Aktualisieren der Chroot tätig "
+"wird."
+
+#. type: TP
+#: ../scripts/cowpoke.1:299
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_BUILD_OPTS>"
+msgstr "I<Architektur>B<_>I<Distribution>B<_BUILD_OPTS>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:306
+msgid ""
+"A bash array containing additional options to pass verbatim to B<cowbuilder> "
+"each time a package build is performed in this chroot. This is useful when "
+"you want to use some option like B<--twice> which cowpoke does not directly "
+"need to care about. It otherwise behaves similarly to B<UPDATE_OPTS> above "
+"except that it acts during the build phase of B<cowbuilder>."
+msgstr ""
+"ein Bash-Feld, das zusätzliche Optionen enthält, die jedesmal, wenn in "
+"dieser Chroot ein Paket gebaut wird, unverändert an B<Cowbuilder> "
+"weitergereicht werden. Dies ist nützlich, wenn Sie Optionen wie B<--twice> "
+"verwenden, um die sich Cowpoke nicht direkt kümmern muss. In anderen Fällen "
+"verhält es sich ähnlich der oben beschriebenen B<CREATE_OPTS>, außer dass es "
+"während der Bauphase von B<Cowbuilder> tätig wird."
+
+#. type: TP
+#: ../scripts/cowpoke.1:307
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_SIGN_KEYID>"
+msgstr "I<Architektur>B<_>I<Distribution>B<_SIGN_KEYID>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:311
+msgid ""
+"An optional arch and dist specific override for the global B<SIGN_KEYID> "
+"option."
+msgstr ""
+"ein optionales Architektur- und ein distributionsspezifisches Außer-Kraft-"
+"Setzen für die globale Option B<SIGN_KEYID>."
+
+#. type: TP
+#: ../scripts/cowpoke.1:312
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_UPLOAD_QUEUE>"
+msgstr "I<Architektur>B<_>I<Distribution>B<_UPLOAD_QUEUE>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:316
+msgid ""
+"An optional arch and dist specific override for the global B<UPLOAD_QUEUE> "
+"option."
+msgstr ""
+"ein optionales Architektur- und ein distributionsspezifisches Außer-Kraft-"
+"Setzen für die globale Option B<UPLOAD_QUEUE>"
+
+#. type: SH
+#: ../scripts/cowpoke.1:318
+#, no-wrap
+msgid "CONFIGURATION FILES"
+msgstr "KONFIGURATIONSDATEIEN"
+
+#. type: TP
+#: ../scripts/cowpoke.1:319
+#, no-wrap
+msgid "I</etc/cowpoke.conf>"
+msgstr "I</etc/cowpoke.conf>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:322
+msgid "Global configuration options. Will override hardcoded defaults."
+msgstr ""
+"globale Konfigurationsoptionen; setzen die fest kodierten Vorgaben außer "
+"Kraft"
+
+#. type: TP
+#: ../scripts/cowpoke.1:322
+#, no-wrap
+msgid "I<~/.cowpoke>"
+msgstr "I<~/.cowpoke>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:325 ../scripts/debsnap.1:117
+msgid ""
+"Per-user configuration options. Will override any global configuration."
+msgstr ""
+"Konfigurationsoptionen pro Benutzer; werden jede globale Konfiguration "
+"ignorieren"
+
+#. type: TP
+#: ../scripts/cowpoke.1:325
+#, no-wrap
+msgid "I<.cowpoke>"
+msgstr "I<.cowpoke>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:329
+msgid ""
+"Per-project configuration options. Will override any per-user or global "
+"configuration if B<cowpoke> is called from the directory where they exist."
+msgstr ""
+"Konfigurationsoptionen pro Projekt; werden jede Konfiguration pro Benutzer "
+"oder globale Konfiguration überstimmen, falls B<cowpoke> aus dem Verzeichnis "
+"aufgerufen wird, in dem sie existieren."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:333
+msgid ""
+"If the environment variable B<COWPOKE_CONF> is set, it specifies an "
+"additional configuration file which will override all of those above. "
+"Options specified explicitly on the command line override all configuration "
+"files."
+msgstr ""
+"Falls die Umgebungsvariable B<COWPOKE_CONF> gesetzt ist, gibt sie eine "
+"zusätzliche Konfigurationsdatei an, die alles vorhergehende außer Kraft "
+"setzt. Optionen, die explizit auf der Befehlszeile angegeben werden, "
+"ignorieren alle Konfigurationsdateien."
+
+#. type: SH
+#: ../scripts/cowpoke.1:335
+#, no-wrap
+msgid "COWBUILDER CONFIGURATION"
+msgstr "COWBUILDER-KONFIGURATION"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:344
+msgid ""
+"There is nothing particularly special required to configure a B<cowbuilder> "
+"instance for use with B<cowpoke>. Simply create them in the flavour you "
+"require with `B<cowbuilder --create>` according to the B<cowbuilder> "
+"documentation, then configure B<cowpoke> with the user, arch, and path "
+"information required to access it, on the machines you wish to invoke it "
+"from (or alternatively configure B<cowpoke> with the path, arch and "
+"distribution information and pass the B<--create> option to it on the first "
+"invocation). The build host running B<cowbuilder> does not require "
+"B<cowpoke> installed locally."
+msgstr ""
+"Um eine B<cowbuilder>-Instanz zu konfigurieren. die mit B<cowpoke> benutzt "
+"wird, wird nichts sonderlich Spezielles benötigt. Erstellen Sie sie einfach "
+"in der Variante, die Sie mit »B<cowbuilder --create>« gemäß der "
+"B<cowbuilder>-Dokumentation benötigen. Dann konfigurieren Sie B<cowpoke> mit "
+"dem Benutzer, der Architektur und den zum Zugriff benötigten "
+"Pfadinformationen auf den Rechnern, von denen Sie es aufrufen wollen (oder "
+"konfigurieren Sie B<cowpoke> alternativ mit dem Pfad, der Architektur und "
+"der Distributionsinformation und übergeben Sie ihm beim ersten Aufruf die "
+"Option B<--create>). Der Baurechner, der B<cowbuilder> ausführt, benötigt "
+"kein lokal installiertes B<cowpoke>."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:354
+msgid ""
+"The build machine should have the B<lintian> and B<devscripts> packages "
+"installed for post-build sanity checking. Upon completion, the build log "
+"and the results of automated checks will be recorded in the "
+"B<INCOMING_DIR>. If you wish to upload signed packages the build machine "
+"will also need B<dput>(1) installed and configured to use the 'I<host>' "
+"alias specified by B<UPLOAD_QUEUE>. If B<rsync>(1) is available on both the "
+"local and build machine, then it will be used to transfer the source package "
+"(this may save on some transfers of the I<orig.tar.*> when building "
+"subsequent Debian revisions)."
+msgstr ""
+"Auf der Baumaschine sollten die Pakete B<lintian> und B<devscripts> für "
+"Plausibilitätsprüfungen nach dem Bauen installiert sein. Nach Beendigung "
+"werden das Bauprotokoll und die Ergebnisse der automatischen Prüfungen in "
+"B<INCOMING_DIR> aufgezeichnet. Falls Sie signierte Pakete hochladen möchten, "
+"wird die Baumaschine außerdem erforden, dass B<dput>(1) installiert und für "
+"die Benutzung des durch die B<UPLOAD_QUEUE> angegebenen Alias »I<Rechner>« "
+"konfiguriert ist. Falls B<rsync>(1) sowohl auf der lokalen als auch auf der "
+"Baumaschine verfügbar ist, wird es für die Übertragung des Quellpakets "
+"benutzt (dies könnte bei einigen Übertragungen der I<orig.tar.*> Bandbreite "
+"sparen, wenn aufeinander folgende Debian-Revisionen gebaut werden)."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:360
+msgid ""
+"The user executing B<cowpoke> must have SSH access to the build machine as "
+"the B<BUILDD_USER>. That user must be able to invoke B<cowbuilder> as root "
+"by using the B<BUILDD_ROOTCMD>. Signing keys are not required to be "
+"installed on the build machine (and will be ignored there if they are). If "
+"the package is signed, keys will be expected on the machine that executes "
+"B<cowpoke>."
+msgstr ""
+"Der Anwender, der B<cowpoke> ausführt, muss SSH-Zugriff auf die Baumschine "
+"als B<BUILDD_USER> haben. Dieser Anwender muss in der Lage sein, "
+"B<cowbuilder> als Root durch Benutzen von B<BUILDD_ROOTCMD> aufzurufen. Zur "
+"Installation auf der Baumaschine werden keine Schlüssel zum Signieren "
+"benötigt (und werden ignoriert, wenn sie dort sind). Falls das Paket "
+"signiert ist, werden die Schlüssel auf dem Rechner, die B<cowpoke> ausführt, "
+"erwartet."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:367
+msgid ""
+"When B<cowpoke> is invoked, it will first attempt to update the "
+"B<cowbuilder> image if that has not already been done on the same day. This "
+"is checked by the presence or absence of a I<cowbuilder-$arch-$dist-update-"
+"log-$date> file in the B<INCOMING_DIR>. You may move, remove, or touch this "
+"file if you wish the image to be updated more or less often than that. Its "
+"contents log the output of B<cowbuilder> during the update (or creation) of "
+"the build root."
+msgstr ""
+"Wenn B<cowpoke> aufgerufen wird, wird es zuerst versuchen, das B<cowbuilder>-"
+"Image zu aktualisieren, falls dies nicht bereits an selben Tag getan wurde. "
+"Dies wird durch das Vorhandensein oder Fehlen einer I<cowbuilder-$arch-$dist-"
+"update-log-$date>-Datei im Verzeichnis B<INCOMING_DIR> geprüft. Sie können "
+"die Datei verschieben, entfernen oder mit touch aktualisieren, falls Sie "
+"wünschen, dass das Image außerhalb des üblichen Zyklus aktualisiert wird. "
+"Ihr Inhalt protokolliert die Ausgabe von B<cowbuilder> während des "
+"Aktualisierens (oder Erstellens) des Bauwurzelverzeichnisses."
+
+#. type: =head1
+#: ../scripts/cowpoke.1:369 ../scripts/origtargz.pl:80
+#: ../scripts/rmadison.pl:324
+#, no-wrap
+msgid "NOTES"
+msgstr "ANMERKUNGEN"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:378
+msgid ""
+"Since B<cowbuilder> creates a chroot, and to do that you need root, "
+"B<cowpoke> also requires some degree of root access. So all the horrible "
+"things that can go wrong with that may well one day rain down upon you. "
+"B<cowbuilder> has been known to accidentally wipe out bind-mounted "
+"filesystems outside the chroot, and worse than that can easily happen. So "
+"be careful, keep good backups of things you don't want to lose on your build "
+"machine, and use B<cowpoke> to keep all that on a machine that isn't your "
+"bleeding edge dev box with your last few hours of uncommitted work."
+msgstr ""
+"Da B<cowbuilder> eine Chroot erstellt und Sie, um dies zu tun, Root-Rechte "
+"benötigen, erfordert B<cowpoke> außerdem zu einem bestimmten Grad Root-"
+"Zugriff. Daher ist es denkbar, dass all die schrecklichen Dinge, die dabei "
+"schiefgehen können, auch bei Ihnen schiefgehen. B<cowbuilder> war bekannt "
+"dafür, versehentlich Dateisysteme, die mit der Option »bind« außerhalb der "
+"Chroot eingehängt sind, zu vernichten und es ist leicht möglich, dass noch "
+"Schlimmeres passiert. Seien Sie daher vorsichtig, bewahren Sie gute "
+"Sicherheitskopien der Dinge auf, die Sie nicht auf Ihrer Baumaschine "
+"verlieren möchten und verwenden Sie B<cowpoke>, um alles auf einem Rechner "
+"zu verwahren, die nicht Ihre modernste Entwicklerkiste mit Ihren letzten "
+"paar Stunden nicht übergebener Arbeit ist."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:384
+msgid "B<cowbuilder>(1), B<pbuilder>(1), B<ssh-agent>(1), B<sudoers>(5)"
+msgstr "B<cowbuilder>(1), B<pbuilder>(1), B<ssh-agent>(1), B<sudoers>(5)"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:388
+msgid "B<cowpoke> was written by Ron E<lt>I<ron@debian.org>E<gt>."
+msgstr "B<cowpoke> wurde von Ron E<lt>I<ron@debian.org>E<gt> geschrieben."
+
+#. type: TH
+#: ../scripts/cvs-debc.1:1 ../scripts/cvs-debrelease.1:1
+#, no-wrap
+msgid "CVS-DEBC"
+msgstr "CVS-DEBC"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:4
+msgid ""
+"cvs-debc - view contents of a cvs-buildpackage/cvs-debuild generated package"
+msgstr ""
+"cvs-debc - Inhalte eines mit Cvs-buildpackage/Cvs-debuild erzeugten Pakets "
+"ansehen"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:6
+msgid "B<cvs-debc> [I<options>] [I<package> ...]"
+msgstr "B<cvs-debc> [I<Optionen>] [I<Paket> …]"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:17
+msgid ""
+"B<cvs-debc> is run from the CVS working directory after B<cvs-buildpackage> "
+"or B<cvs-debuild>. It uses the B<cvs-buildpackage> system to locate the I<."
+"changes> file generated in that run. It then displays information about the "
+"I<.deb> files which were generated in that run, by running B<dpkg-deb -I> "
+"and B<dpkg-deb -c> on every I<.deb> archive listed in the I<.changes> file, "
+"assuming that all of the I<.deb> archives live in the same directory as the "
+"I<.changes> file. It is useful for ensuring that the expected files have "
+"ended up in the Debian package."
+msgstr ""
+"B<cvs-debc> wird aus dem CVS-Arbeitsverzeichnis nach B<cvs-buildpackage> "
+"oder B<cvs-debuild> ausgeführt. Es verwendet das B<cvs-buildpackage>-System, "
+"um die in diesem Durchgang erzeugte I<.changes>-Datei ausfindig zu machen. "
+"Dann zeigt es Informationen über die I<.deb>-Dateien an, die in diesem "
+"Durchgang erzeugt wurden, indem B<dpkg-deb -I> und B<dpkg-deb -c> auf jedes "
+"in der I<.changes>-Datei aufgelistete I<.deb>-Archiv ausgeführt werden. Dies "
+"geschieht in der Annahme, dass alle I<.deb> im gleichen Verzeichnis wie die "
+"I<.changes>-Datei liegen. Das ist nützlich, um sicherzustellen, dass die "
+"erwarteten Dateien im Debian-Paket gelandet sind."
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:20
+msgid ""
+"If a list of packages is given on the command line, then only those debs "
+"with names in this list of packages will be processed."
+msgstr ""
+"Falls auf der Befehlszeile eine Liste von Paketen angegeben wurde, dann "
+"werden nur jene Debs verarbeitet, deren Namen in der Paketliste stehen."
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:24 ../scripts/cvs-debi.1:23
+#: ../scripts/cvs-debrelease.1:21
+msgid ""
+"Note that unlike B<cvs-buildpackage>, the only way to specify the source "
+"package name is with the B<-P> option; you cannot simply have it as the last "
+"command-line parameter."
+msgstr ""
+"Beachten Sie, dass im Gegensatz zu B<cvs-buildpackage>, die Option B<-P> die "
+"einzige Möglichkeit ist, den Namen des Quellpakets anzugeben; Sie können ihn "
+"nicht einfach als letzten Befehlszeilenparameter angeben."
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:28 ../scripts/cvs-debi.1:32
+msgid ""
+"All current B<cvs-buildpackage> options are silently accepted; however, only "
+"the ones listed below have any effect. For more details on all of them, see "
+"the B<cvs-buildpackage>(1) manpage."
+msgstr ""
+"Alle aktuellen Optionen von B<cvs-buildpackage> werden stillschweigend "
+"akzeptiert; allerdings haben nur die nachfolgend aufgeführten Auswirkungen. "
+"Weitere Einzelheiten über all das finden Sie in der Handbuchseite von B<cvs-"
+"buildpackage>(1)."
+
+#. type: TP
+#: ../scripts/cvs-debc.1:28 ../scripts/cvs-debi.1:32
+#: ../scripts/cvs-debrelease.1:30 ../scripts/debc.1:65 ../scripts/debi.1:66
+#: ../scripts/debrelease.1:67 ../scripts/debrsign.1:35 ../scripts/debsign.1:72
+#, no-wrap
+msgid "B<-a>I<debian-architecture>, B<-t>I<GNU-system-type>"
+msgstr "B<-a>I<Debian-Architektur>, B<-t>I<GNU-Systemtyp>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:34 ../scripts/cvs-debi.1:38
+#: ../scripts/cvs-debrelease.1:36 ../scripts/debc.1:71 ../scripts/debi.1:72
+#: ../scripts/debrsign.1:41 ../scripts/debsign.1:78
+msgid ""
+"See B<dpkg-architecture>(1) for a description of these options. They affect "
+"the search for the I<.changes> file. They are provided to mimic the "
+"behaviour of B<dpkg-buildpackage> when determining the name of the I<."
+"changes> file."
+msgstr ""
+"Eine Beschreibung dieser Optionen finden Sie unter B<dpkg-architecture>(1). "
+"Sie beeinflussen die Suche nach der I<.changes>-Datei. Sie werden "
+"bereitgestellt, um das Verhalten von B<dpkg-buildpackage> nachzumachen, wenn "
+"der Name der I<.changes>-Datei festgestellt wird."
+
+#. type: TP
+#: ../scripts/cvs-debc.1:34 ../scripts/cvs-debi.1:38
+#: ../scripts/cvs-debrelease.1:36
+#, no-wrap
+msgid "B<-M>I<module>"
+msgstr "B<-M>I<Modul>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:37 ../scripts/cvs-debi.1:41
+#: ../scripts/cvs-debrelease.1:39
+msgid "The name of the CVS module."
+msgstr "der Name des CVS-Moduls"
+
+#. type: TP
+#: ../scripts/cvs-debc.1:37 ../scripts/cvs-debi.1:41
+#: ../scripts/cvs-debrelease.1:39
+#, no-wrap
+msgid "B<-P>I<package>"
+msgstr "B<-P>I<Paket>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:40 ../scripts/cvs-debi.1:44
+#: ../scripts/cvs-debrelease.1:42
+msgid "The name of the package."
+msgstr "der Name des Pakets"
+
+#. type: TP
+#: ../scripts/cvs-debc.1:40 ../scripts/cvs-debi.1:44
+#: ../scripts/cvs-debrelease.1:42
+#, no-wrap
+msgid "B<-V>I<version>"
+msgstr "B<-V>I<Version>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:43 ../scripts/cvs-debi.1:47
+#: ../scripts/cvs-debrelease.1:45
+msgid "The version number of the package."
+msgstr "die Versionsnummer des Pakets"
+
+#. type: TP
+#: ../scripts/cvs-debc.1:43 ../scripts/cvs-debi.1:47
+#: ../scripts/cvs-debrelease.1:45
+#, no-wrap
+msgid "B<-T>I<tag>"
+msgstr "B<-T>I<Markierung>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:46 ../scripts/cvs-debi.1:50
+#: ../scripts/cvs-debrelease.1:48
+msgid "The CVS tag to use for exporting sources."
+msgstr "die CVS-Markierung, die für den Export von Quellen benutzt wird"
+
+#. type: TP
+#: ../scripts/cvs-debc.1:46 ../scripts/cvs-debi.1:50
+#: ../scripts/cvs-debrelease.1:48
+#, no-wrap
+msgid "B<-R>I<root\\ directory>"
+msgstr "B<-R>I<Wurzelverzeichnis>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:49 ../scripts/cvs-debi.1:53
+#: ../scripts/cvs-debrelease.1:51
+msgid "Root of the original sources archive."
+msgstr "Wurzel des Originalquellarchivs"
+
+#. type: TP
+#: ../scripts/cvs-debc.1:49 ../scripts/cvs-debi.1:53
+#: ../scripts/cvs-debrelease.1:51
+#, no-wrap
+msgid "B<-W>I<work directory>"
+msgstr "B<-W>I<Arbeitsverzeichnis>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:52 ../scripts/cvs-debi.1:56
+#: ../scripts/cvs-debrelease.1:54
+msgid "The full path name for the cvs-buildpackage working directory."
+msgstr "der vollständige Pfadname für das Cvs-buildpackage-Arbeitsverzeichnis"
+
+#. type: TP
+#: ../scripts/cvs-debc.1:52 ../scripts/cvs-debi.1:56
+#: ../scripts/cvs-debrelease.1:54
+#, no-wrap
+msgid "B<-x>I<prefix>"
+msgstr "B<-x>I<Präfix>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:55 ../scripts/cvs-debi.1:59
+#: ../scripts/cvs-debrelease.1:57
+msgid "This option provides the CVS default module prefix."
+msgstr "Diese Option stellt das Standard-CVS-Modulpräfix bereit."
+
+#. type: TP
+#: ../scripts/cvs-debc.1:55 ../scripts/cvs-debi.1:59
+#: ../scripts/cvs-debrelease.1:61 ../scripts/debc.1:89 ../scripts/debi.1:106
+#: ../scripts/debrsign.1:50
+#, no-wrap
+msgid "B<--help>, B<--version>"
+msgstr "B<--help>, B<--version>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:58 ../scripts/cvs-debi.1:62
+#: ../scripts/cvs-debrelease.1:64 ../scripts/debc.1:92 ../scripts/debi.1:109
+#: ../scripts/debrsign.1:53
+msgid "Show help message and version information respectively."
+msgstr "zeigt Hilfenachricht beziehungsweise Versionsinformationen."
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:63
+msgid "B<cvs-buildpackage>(1), B<cvs-debi>(1), B<cvs-debuild>(1), B<debc>(1)"
+msgstr ""
+"B<cvs-buildpackage>(1), B<cvs-debi>(1), B<cvs-debuild>(1) und B<debc>(1)"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:67 ../scripts/cvs-debi.1:71
+msgid ""
+"B<cvs-buildpackage> was written by Manoj Srivastava, and the current version "
+"of B<debi> was written by Julian Gilbey E<lt>jdg@debian.orgE<gt>. They have "
+"been combined into this program by Julian Gilbey."
+msgstr ""
+"B<cvs-buildpackage> wurde von Manoj Srivastava geschrieben und die aktuelle "
+"Version von B<debi> wurde von Julian Gilbey E<lt>jdg@debian.orgE<gt> "
+"verfasst. Sie wurden von Julian Gilbe in diesem Programm kombiniert."
+
+#. type: TH
+#: ../scripts/cvs-debi.1:1
+#, no-wrap
+msgid "CVS-DEBI"
+msgstr "CVS-DEBI"
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:4
+msgid "cvs-debi - install cvs-buildpackage/cvs-debuild generated package"
+msgstr ""
+"cvs-debi - installiert mit Cvs-buildpackage/Cvs-debuild erzeugtes Paket"
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:6
+msgid "B<cvs-debi> [I<options>] [I<package> ...]"
+msgstr "B<cvs-debi> [I<Optionen>] [I<Paket> …]"
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:16
+msgid ""
+"B<cvs-debi> is run from the CVS working directory after B<cvs-buildpackage> "
+"or B<cvs-debuild>. It uses the B<cvs-buildpackage> system to locate the I<."
+"changes> file generated in that run. It then runs B<debpkg -i> on every I<."
+"deb> archive listed in the I<.changes> file to install them, assuming that "
+"all of the I<.deb> archives live in the same directory as the I<.changes> "
+"file. Note that you probably don't want to run this program on a I<."
+"changes> file relating to a different architecture after cross-compiling the "
+"package!"
+msgstr ""
+"B<cvs-debi> wird aus dem CVS-Arbeitsverzeichnis nach B<cvs-buildpackage> "
+"oder B<cvs-debuild> ausgeführt. Es verwendet das B<cvs-buildpackage>-System, "
+"um die in diesen Durchgang erzeugte I<.changes>-Datei ausfindig zu machen. "
+"Dann führt es B<debpkg -i> für jedes in der I<.changes>-Datei aufgelistete "
+"I<.deb>-Archiv aus. Dies geschieht in der Annahme, dass alle I<.deb> im "
+"gleichen Verzeichnis wie die I<.changes>-Datei liegen. Beachten Sie, dass "
+"Sie dieses Programm vermutlich nicht für eine I<.changes>-Datei ausführen "
+"möchten, die sich auf eine andere Architektur nach dem Cross-Kompilieren des "
+"Pakets bezieht."
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:19 ../scripts/debi.1:24
+msgid ""
+"If a list of packages is given on the command line, then only those debs "
+"with names in this list of packages will be installed."
+msgstr ""
+"Falls auf der Befehlszeile eine Liste von Paketen angegeben wurde, dann "
+"werden nur diese Debs installiert, deren Namen in der Paketliste stehen."
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:28 ../scripts/debi.1:29
+msgid ""
+"Since installing a package requires root privileges, B<debi> calls B<debpkg> "
+"rather than B<dpkg> directly. Thus B<debi> will only be useful if it is "
+"either being run as root or B<debpkg> can be run as root. See B<debpkg>(1) "
+"for more details."
+msgstr ""
+"Da das Installieren eines Pakets Root-Rechte erfordert, ruft B<debi> direkt "
+"B<debpkg> anstelle von B<dpkg> auf. Daher wird B<debi> nur von Nutzen sein, "
+"falls es entweder als Root ausgeführt wird oder B<debpkg> als Root "
+"ausgeführt werden kann. Siehe B<debpkg>(1) für weitere Einzelheiten."
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:67
+msgid "B<cvs-buildpackage>(1), B<cvs-debc>(1), B<cvs-debuild>(1), B<debi>(1)"
+msgstr ""
+"B<cvs-buildpackage>(1), B<cvs-debc>(1), B<cvs-debuild>(1) und B<debi>(1)"
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:4
+msgid ""
+"cvs-debrelease - upload a cvs-buildpackage/cvs-debuild generated package"
+msgstr ""
+"cvs-debrelease - lädt ein mit Cvs-buildpackage/Cvs-debuild erzeugtes Paket "
+"hoch"
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:7
+msgid ""
+"B<cvs-debrelease> [I<cvs-debrelease options>] [B<--dopts> [I<dupload/dput "
+"options>]]"
+msgstr ""
+"B<cvs-debrelease> [I<Cvs-debrelease-Optionen>] [B<--dopts> [I<dupload-/dput-"
+"Optionen>]]"
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:17
+msgid ""
+"B<cvs-debrelease> is run from the CVS working directory after B<cvs-"
+"buildpackage> or B<cvs-debuild>. It uses the B<cvs-buildpackage> system to "
+"locate the I<.changes> file generated in that run. It then uploads the "
+"package using B<debrelease>(1), which in turn calls either B<dupload> or "
+"B<dput>. Note that the B<--dopts> option must be specified to distinguish "
+"the B<cvs-debrelease> options from the B<dupload> or B<dput> options. Also, "
+"the B<devscripts> configuration files will be read, as described in the "
+"B<debrelease>(1) manpage."
+msgstr ""
+"B<cvs-debrelease> wird aus dem CVS-Arbeitsverzeichnis nach B<cvs-"
+"buildpackage> oder B<cvs-debuild> ausgeführt. Es verwendet das B<cvs-"
+"buildpackage>-System, um die in diesem Durchgang erzeugte I<.changes>-Datei "
+"ausfindig zu machen. Dann lädt es das Paket mittels B<debrelease>(1) hoch, "
+"welches wiederum B<dupload> oder B<dput> aufruft. Beachten Sie, dass die "
+"Option B<--dopts> angegeben werden muss, um die Optionen von B<cvs-"
+"debrelease> von den Optionen von B<dupload> oder B<dput> zu unterscheiden. "
+"Außerdem werden die B<devscripts>-Konfigurationsdateien, wie in der "
+"Handbuchseite B<debrelease>(1) beschrieben, gelesen."
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:26
+msgid ""
+"All current B<cvs-buildpackage> options are silently accepted; however, only "
+"the ones listed below have any effect. For more details on all of them, see "
+"the B<cvs-buildpackage>(1) manpage. All B<debrelease> options (as listed "
+"below) are also accepted."
+msgstr ""
+"Alle aktuellen Optionen von B<cvs-buildpackage> werden stillschweigend "
+"akzeptiert; allerdings haben nur die nachfolgend aufgeführten Auswirkungen. "
+"Weitere Einzelheiten über alle davon finden Sie in der Handbuchseite von "
+"B<cvs-buildpackage>(1). Zudem werden alle Optionen von B<debrelease> (wie "
+"nachfolgend aufgeführt) akzeptiert."
+
+#. type: TP
+#: ../scripts/cvs-debrelease.1:26 ../scripts/debrelease.1:57
+#, no-wrap
+msgid "B<--dupload>, B<--dput>"
+msgstr "B<--dupload>, B<--dput>"
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:30 ../scripts/debrelease.1:61
+msgid ""
+"This specifies which uploader program to use; the default is B<dupload>."
+msgstr ""
+"Dies gibt an, welches Programm zum Hochladen benutzt wird. Die Vorgabe ist "
+"B<dupload>."
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:68
+msgid "B<cvs-buildpackage>(1), B<cvs-debuild>(1), B<debrelease>(1)"
+msgstr "B<cvs-buildpackage>(1), B<cvs-debuild>(1), B<debrelease>(1)"
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:72
+msgid ""
+"B<cvs-buildpackage> was written by Manoj Srivastava, and the current version "
+"of B<debrelease> was written by Julian Gilbey E<lt>jdg@debian.orgE<gt>. "
+"They have been combined into this program by Julian Gilbey."
+msgstr ""
+"B<cvs-buildpackage> wurde von Manoj Srivastava geschrieben und die aktuelle "
+"Version von B<debrelease> wurde von Julian Gilbey E<lt>jdg@debian.orgE<gt> "
+"verfasst. Sie wurden von Julian Gilbe in diesem Programm kombiniert."
+
+#. type: TH
+#: ../scripts/cvs-debuild.1:1
+#, no-wrap
+msgid "CVS-DEBUILD"
+msgstr "CVS-DEBUILD"
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:4
+msgid "cvs-debuild - build a Debian package using cvs-buildpackage and debuild"
+msgstr ""
+"cvs-debuild - baut ein Debian-Paket mittels Cvs-buildpackage und Debuild"
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:7
+msgid ""
+"B<cvs-debuild> [I<debuild options>] [I<cvs-buildpackage options>] [B<--"
+"lintian-opts> I<lintian options>]"
+msgstr ""
+"B<cvs-debuild> [I<Debuild-Optionen>] [I<Cvs-buildpackage-Optionen>] [B<--"
+"lintian-opts> I<Lintian-Optionen>]"
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:13
+msgid ""
+"B<cvs-debuild> is a wrapper around B<cvs-buildpackage> to run it with "
+"B<debuild> as the package-building program. (This cannot simply be "
+"accomplished using the B<-C> option of B<cvs-buildpackage>, as it does not "
+"know how to handle all of the special B<debuild> options.)"
+msgstr ""
+"B<cvs-debuild> ist ein Wrapper um B<cvs-buildpackage>, um es mit B<debuild> "
+"als Paketbauprogramm auszuführen. (Dies kann nicht einfach durch Verwendung "
+"der Option B<-C> von B<cvs-buildpackage> bewerkstelligt werden, da es nicht "
+"weiß, wie all die speziellen B<debuild>-Optionen gehandhabt werden.)"
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:22
+msgid ""
+"The program simply stashes the B<debuild> and B<lintian> options, and passes "
+"them to B<debuild> when it is called by B<cvs-buildpackage>. All of the "
+"standard B<debuild> options may be used (as listed below), but note that the "
+"root command specified by any B<--rootcmd> or B<-r> command-line option will "
+"be passed as an option to B<cvs-buildpackage>. The first non-B<debuild> "
+"option detected will signal the start of the B<cvs-buildpackage> options."
+msgstr ""
+"Das Programm versteckt einfach die Optionen von B<debuild> und B<lintian> "
+"und übergibt sie an B<debuild>, wenn es durch B<cvs-buildpackage> aufgerufen "
+"wird. Alle Standard-B<debuild>-Optionen könnten (wie im Folgenden "
+"aufgelistet) benutzt werden, beachten Sie aber, dass der Root-Befehl, der "
+"durch irgendwelche B<--rootcmd>- oder B<-r>-Befehlszeilenoptionen angegeben "
+"wurde, als eine Option an B<cvs-buildpackage> übergeben wird. Die erste "
+"entdeckte nicht-B<debuild>-Option wird den Anfang der B<cvs-buildpackage>-"
+"Optionen kennzeichnen."
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:29
+msgid ""
+"The selection of the root command is slightly subtle: if there are any "
+"command-line options, these will be used. If not, then if B<cvs-"
+"buildpackage> is set up to use a default root command, that will be used. "
+"Finally, if neither of these are the case, then B<debuild> will use its "
+"procedures to determine an appropriate command, as described in its "
+"documentation."
+msgstr ""
+"Die Auswahl des Root-Befehls ist etwas heikel; falls es dort irgendwelche "
+"Befehlszeilenoptionen gibt, werden diese benutzt. Falls nicht, wird B<cvs-"
+"buildpackage> verwendet, falls es so eingerichtet wurde, dass es einen "
+"Standard-Root-Befehl verwendet. Schlussendlich, falls keiner dieser Fälle "
+"vorliegt, wird B<debuild> seine Prozeduren benutzen, um einen geeigneten "
+"Befehl zu bestimmen, wie es in seiner Dokumentation beschrieben wird."
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:32
+msgid ""
+"See the manpages for B<debuild>(1) and B<cvs-buildpackage> for more "
+"information about the behaviour of each."
+msgstr ""
+"Weitere Informationen über das Verhalten von B<debuild>(1) und B<cvs-"
+"buildpackage> finden Sie in der jeweiligen Handbuchseite."
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:38
+msgid ""
+"The following are the B<debuild> options recognised by B<cvs-debuild>. All "
+"B<cvs-buildpackage> and B<lintian> options are simply passed to the "
+"appropriate program. For explanations of the meanings of these variables, "
+"see B<debuild>(1)."
+msgstr ""
+"Das Folgende sind die von B<cvs-debuild> erkannten B<debuild>-Optionen. Alle "
+"Optionen von B<cvs-buildpackage> und B<lintian> werden einfach an das "
+"passende Programm weitergegeben. Erklärungen und Bedeutungen dieser "
+"Variablen finden Sie unter B<debuild>(1)."
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:40 ../scripts/debuild.1:225
+#, no-wrap
+msgid "B<--rootcmd=>I<gain-root-command>, B<-r>I<gain-root-command>"
+msgstr "B<--rootcmd=>I<Befehl-zum-Erlangen-von-Root-Rechten>, B<-r>I<Befehl-zum-Erlangen-von-Root-Rechten>"
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:42 ../scripts/debuild.1:228
+#, no-wrap
+msgid "B<--preserve-env>"
+msgstr "B<--preserve-env>"
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:44 ../scripts/debuild.1:231
+#, no-wrap
+msgid "B<--preserve-envvar=>I<var>, B<-e>I<var>"
+msgstr "B<--preserve-envvar=>I<Variable>, B<-e>I<Variable>"
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:46 ../scripts/debuild.1:238
+#, no-wrap
+msgid "B<--set-envvar=>I<var>B<=>I<value>, B<-e>I<var>B<=>I<value>"
+msgstr "B<--set-envvar=>I<Variable>B<=>I<Wert>, B<-e>I<Variable>B<=>I<Wert>"
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:48
+#, no-wrap
+msgid "B<--lintian>, B<--no-lintian>"
+msgstr "B<--lintian>, B<--no-lintian>"
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:50
+#, no-wrap
+msgid "B<--ignore-dirname>, B<--check-dirname>"
+msgstr "B<--ignore-dirname>, B<--check-dirname>"
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:53
+msgid "These should not be needed, but it is provided nevertheless."
+msgstr "Dies sollte nicht nötig sein, wird aber trotzdem bereitgestellt."
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:58
+msgid ""
+"B<cvs-buildpackage>(1), B<debuild>(1), B<dpkg-buildpackage>(1), B<lintian>(1)"
+msgstr ""
+"B<cvs-buildpackage>(1), B<debuild>(1), B<dpkg-buildpackage>(1) und "
+"B<lintian>(1)"
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:59
+msgid "This program was written by Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Dieses Programm wurde von Julian Gilbey E<lt>jdg@debian.orgE<gt> geschrieben."
+
+#. type: TH
+#: ../scripts/dcmd.1:1
+#, no-wrap
+msgid "DCMD"
+msgstr "DCMD"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:4
+msgid "dcmd - expand file lists of .dsc/.changes files in the command line"
+msgstr ""
+"dcmd - expandiert Dateilisten von .dsc-/.changes-Dateien auf der Befehlszeile"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:6
+msgid "B<dcmd> [I<options>] [I<command>] [I<changes-file>|I<dsc-file>] ..."
+msgstr "B<dcmd> [I<Optionen>] [I<Befehl>] [I<changes-Datei>|I<dsc-Datei>] ..."
+
+#. type: Plain text
+#: ../scripts/dcmd.1:11
+msgid ""
+"B<dcmd> replaces any reference to a I<.dsc> or I<.changes> file in the "
+"command line with the list of files in its 'Files' section, plus the file "
+"itself. It allows easy manipulation of all the files involved in an upload "
+"(for I<.changes> files) or a source package (for I<.dsc> files)."
+msgstr ""
+"B<dcmd> ersetzt auf der Befehlszeile alle Bezüge zu I<.dsc>- oder I<."
+"changes>-Dateien mit der Liste der Dateien im Abschnitt »Files« sowie die "
+"Datei selbst. Es ermöglicht einfache Manipulation aller an einem Hochladen "
+"beteiligten Dateien (für I<.changes>-Dateien) oder in einem Quellpaket (für "
+"I<.dsc>-Dateien)."
+
+#. type: Plain text
+#: ../scripts/dcmd.1:15
+msgid ""
+"If I<command> is omitted (that is the first argument is an existing I<.dsc> "
+"or I<.changes> file), the expanded list of files is printed to stdout, one "
+"file by line. Useful for usage in backticks."
+msgstr ""
+"Falls I<Befehl> weggelassen wird (sprich das erste Argument ist eine "
+"existierende I<.dsc>- oder I<.changes>-Datei), wird die expandierte "
+"Dateiliste auf der Standardausgabe (Stdout) ausgegeben, eine Datei pro "
+"Zeile. Nützlich für die Benutzung in rückwärtsgerichteten Hochkommas."
+
+#. type: Plain text
+#: ../scripts/dcmd.1:19
+msgid ""
+"There are a number of options which may be used in order to select only a "
+"subset of the files listed in the I<.dsc> or I<.changes> file. If a "
+"requested file is not found, an error message will be printed."
+msgstr ""
+"Es gibt zahlreiche Optionen, die verwendet werden könnten, um nur eine "
+"Untermenge der aufgelisteten Dateien in der I<.dsc>- oder I<.changes>-Datei "
+"auszuwählen. Falls eine angeforderte Datei nicht gefunden wurde, wird eine "
+"Fehlermeldung ausgegeben."
+
+#. type: TP
+#: ../scripts/dcmd.1:19
+#, no-wrap
+msgid "B<--dsc>"
+msgstr "B<--dsc>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:22
+msgid "Select the I<.dsc> file."
+msgstr "I<.dsc>-Datei auswählen"
+
+#. type: TP
+#: ../scripts/dcmd.1:22
+#, no-wrap
+msgid "B<--schanges>"
+msgstr "B<--schanges>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:25
+msgid "Select I<.changes> files for the 'source' architecture."
+msgstr "wählt I<.changes>-Dateien für die »Quell«architektur."
+
+#. type: TP
+#: ../scripts/dcmd.1:25
+#, no-wrap
+msgid "B<--bchanges>"
+msgstr "B<--bchanges>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:28
+msgid "Select I<.changes> files for binary architectures."
+msgstr "wählt I<.changes>-Dateien für Binärarchitekturen."
+
+#. type: TP
+#: ../scripts/dcmd.1:28
+#, no-wrap
+msgid "B<--changes>"
+msgstr "B<--changes>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:31
+msgid "Select I<.changes> files. Implies B<--schanges> and B<--bchanges>."
+msgstr ""
+"wählt I<.changes>-Dateien aus; impliziert B<--schanges> und B<--bchanges>."
+
+#. type: TP
+#: ../scripts/dcmd.1:31
+#, no-wrap
+msgid "B<--archdeb>"
+msgstr "B<--archdeb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:34
+msgid "Select architecture-dependent binary packages (I<.deb> files)."
+msgstr "wählt architekturabhängige Binärpakete (I<.deb>-Dateien) aus."
+
+#. type: TP
+#: ../scripts/dcmd.1:34
+#, no-wrap
+msgid "B<--indepdeb>"
+msgstr "B<--indepdeb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:37
+msgid "Select architecture-independent binary packages (I<.deb> files)."
+msgstr "wählt architekturunabhängige Binärpakete (I<.deb>-Dateien) aus."
+
+#. type: TP
+#: ../scripts/dcmd.1:37
+#, no-wrap
+msgid "B<--deb>"
+msgstr "B<--deb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:40
+msgid ""
+"Select binary packages (I<.deb> files). Implies B<--archdeb> and B<--"
+"indepdeb>."
+msgstr ""
+"wählt Binärpakete (I<.deb>-Dateien) aus; impliziert B<--archdeb> und B<--"
+"indepdeb>."
+
+#. type: TP
+#: ../scripts/dcmd.1:40
+#, no-wrap
+msgid "B<--archudeb>"
+msgstr "B<--archudeb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:43
+msgid "Select architecture-dependent I<.udeb> binary packages."
+msgstr "wählt architekturabhängige I<.udeb>-Binärpakete aus."
+
+#. type: TP
+#: ../scripts/dcmd.1:43
+#, no-wrap
+msgid "B<--indepudeb>"
+msgstr "B<--indepudeb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:46
+msgid "Select architecture-independent I<.udeb> binary packages."
+msgstr "wählt architekturunabhängige I<.udeb>-Binärpakete aus."
+
+#. type: TP
+#: ../scripts/dcmd.1:46
+#, no-wrap
+msgid "B<--udeb>"
+msgstr "B<--udeb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:49
+msgid ""
+"Select I<.udeb> binary packages. Implies B<--archudeb> and B<--indepudeb>."
+msgstr ""
+"wählt I<.udeb>-Binärpakete aus; impliziert B<--archudeb> und B<--indepudeb>."
+
+#. type: TP
+#: ../scripts/dcmd.1:49
+#, no-wrap
+msgid "B<--tar>,\\ B<--orig>"
+msgstr "B<--tar>, B<--orig>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:52
+msgid "Select the upstream I<.tar> file."
+msgstr "wählt die I<.tar>-Datei der Originalautoren aus."
+
+#. type: TP
+#: ../scripts/dcmd.1:52
+#, no-wrap
+msgid "B<--diff>,\\ B<--debtar>"
+msgstr "B<--diff>, B<--debtar>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:55
+msgid "Select the Debian I<.debian.tar> or I<.diff> file."
+msgstr "wählt die Debian-I<.debian.tar> oder Debian-I<.diff>-Datei aus."
+
+#. type: Plain text
+#: ../scripts/dcmd.1:58
+msgid ""
+"Each option may be prefixed by B<--no> to indicate that all files I<not> "
+"matching the specification should be selected."
+msgstr ""
+"Jeder Option kann B<--no> vorangestellt werden, um anzuzeigen, dass alle "
+"Dateien, die I<nicht> auf die Spezifikation passen, ausgewählt werden sollen."
+
+#. type: Plain text
+#: ../scripts/dcmd.1:62
+msgid ""
+"It is not possible to combine positive filtering options (e.g. B<--dsc>) "
+"and negative filtering options (e.g. B<--no-changes>) in the same B<dcmd> "
+"invocation."
+msgstr ""
+"Es ist nicht möglich, positive Filteroptionen (z.B. B<--dsc>) und negative "
+"Filteroptionen (z.B. B<--no-changes>) im gleichen B<dcmd>-Aufruf zu "
+"kombinieren."
+
+#. type: TP
+#: ../scripts/dcmd.1:62
+#, no-wrap
+msgid "B<--no-fail-on-missing>, B<-r>"
+msgstr "B<--no-fail-on-missing>, B<-r>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:65
+msgid "If any of the requested files were not found, do not output an error."
+msgstr ""
+"gibt keinen Fehler aus, falls irgendwelche angeforderten Dateien nicht "
+"gefunden werden."
+
+#. type: TP
+#: ../scripts/dcmd.1:65
+#, no-wrap
+msgid "B<--package>, B<-p>"
+msgstr "B<--package>, B<-p>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:68
+msgid "Output package name part only."
+msgstr "gibt nur den Paketnamensteil aus."
+
+#. type: TP
+#: ../scripts/dcmd.1:68
+#, no-wrap
+msgid "B<--sort>, B<-s>"
+msgstr "B<--sort>, B<-s>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:71
+msgid "Sort output alphabetically."
+msgstr "sortiert die Ausgabe alphabetisch."
+
+#. type: TP
+#: ../scripts/dcmd.1:71
+#, no-wrap
+msgid "B<--tac>, B<-t>"
+msgstr "B<--tac>, B<-t>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:74
+msgid "Reverse output order."
+msgstr "kehrt die Reihenfolge der Ausgabe um."
+
+#. type: =head1
+#: ../scripts/dcmd.1:75 ../scripts/debsnap.1:93 ../scripts/debuild.1:367
+#: ../scripts/dget.pl:660 ../scripts/getbuildlog.1:31 ../scripts/rc-alert.1:96
+#: ../scripts/who-permits-upload.pl:133
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "BEISPIELE"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:77
+msgid "Copy the result of a build to another machine:"
+msgstr "das Ergebnis des Bauens auf einen anderen Rechner kopieren:"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:85
+#, no-wrap
+msgid ""
+"$ dcmd scp rcs_5.7-23_amd64.changes elegiac:/tmp\n"
+"rcs_5.7-23.dsc 100% 490 0.5KB/s 00:00\n"
+"rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.changes 100% 1095 1.1KB/s 00:00\n"
+"$\n"
+msgstr ""
+"$ dcmd scp rcs_5.7-23_amd64.changes elegiac:/tmp\n"
+"rcs_5.7-23.dsc 100% 490 0.5KB/s 00:00\n"
+"rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.changes 100% 1095 1.1KB/s 00:00\n"
+"$\n"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:90
+#, no-wrap
+msgid ""
+"$ dcmd --diff --deb scp rcs_5.7-23_amd64.changes elegiac:/tmp\n"
+"rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00\n"
+"$\n"
+msgstr ""
+"$ dcmd --diff --deb scp rcs_5.7-23_amd64.changes elegiac:/tmp\n"
+"rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00\n"
+"$\n"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:93
+msgid "Check the contents of a source package:"
+msgstr "den Inhalt eines Quellpakets prüfen:"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:100
+#, no-wrap
+msgid ""
+"$ dcmd md5sum rcs_5.7-23.dsc\n"
+"8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz\n"
+"f0ceeae96603e823eacba6721a30b5c7 rcs_5.7-23.diff.gz\n"
+"5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc\n"
+"$\n"
+msgstr ""
+"$ dcmd md5sum rcs_5.7-23.dsc\n"
+"8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz\n"
+"f0ceeae96603e823eacba6721a30b5c7 rcs_5.7-23.diff.gz\n"
+"5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc\n"
+"$\n"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:105
+#, no-wrap
+msgid ""
+"$ dcmd --no-diff md5sum rcs_5.7-23.dsc\n"
+"8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz\n"
+"5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc\n"
+"$\n"
+msgstr ""
+"$ dcmd --no-diff md5sum rcs_5.7-23.dsc\n"
+"8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz\n"
+"5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc\n"
+"$\n"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:110
+msgid "B<dpkg-genchanges>(1), B<dpkg-source>(1)"
+msgstr "B<dpkg-genchanges>(1), B<dpkg-source>(1)"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:112
+msgid ""
+"This program was written by Romain Francoise E<lt>rfrancoise@debian.orgE<gt> "
+"and is released under the GPL, version 2 or later."
+msgstr ""
+"Dieses Programm wurde von Romain Francoise E<lt>rfrancoise@debian.orgE<gt> "
+"geschrieben und wird unter der GPL, Version 2 oder später, veröffentlicht."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:198
+msgid ""
+"dcontrol -- Query package and source control files for all Debian "
+"distributions"
+msgstr ""
+"dcontrol -- fragt Pakete und Steuerungsdateien für alle Debian-"
+"Distributionen ab"
+
+#. type: =item
+#: ../scripts/dcontrol.pl:204
+msgid "B<dcontrol> [I<options>] I<package>[I<modifiers>] ..."
+msgstr "B<dcontrol> [I<Optionen>] I<Paket>[I<Modifikatoren>] ..."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:210
+msgid ""
+"B<dcontrol> queries a remote database of Debian binary and source package "
+"control files. It can be thought of as an B<apt-cache> webservice that also "
+"operates for distributions and architectures different from the local "
+"machine."
+msgstr ""
+"B<dcontrol> fragt eine ferne Datenbank der Debian-Binär- und -Quell-Paket-"
+"Steuerdateien ab. Es kann als ein B<apt-cache>-Web-Dienst angesehen werden, "
+"der ebenso bei Distributionen und Architekturen funktioniert, die sich vom "
+"lokalen Rechner unterscheiden."
+
+#. type: =head1
+#: ../scripts/dcontrol.pl:214
+msgid "MODIFIERS"
+msgstr "MODIFIKATOREN"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:216
+msgid "Like B<apt-cache>, packages can be suffixed by modifiers:"
+msgstr "Wie bei B<apt-cache> können Paketen Modifikatoren angehängt werden:"
+
+#. type: =item
+#: ../scripts/dcontrol.pl:220
+msgid "B<=>I<version>"
+msgstr "B<=>I<Version>"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:222
+msgid "Exact version match"
+msgstr "exakt passende Version"
+
+#. type: =item
+#: ../scripts/dcontrol.pl:224
+msgid "B<@>I<architecture>"
+msgstr "B<@>I<Architektur>"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:226
+msgid ""
+"Query this only architecture. Use B<@source> for source packages, B<@binary> "
+"excludes source packages."
+msgstr ""
+"fragt nur diese Architektur ab. Benutzen Sie B<@source> für Quellpakete, "
+"B<@binary> schließt Quellpakete aus."
+
+#. type: =item
+#: ../scripts/dcontrol.pl:229
+msgid "B</>[I<archive>B<:>][I<suite>][B</>I<component>]"
+msgstr "B</>[I<Archiv>B<:>][I<Suite>][B</>I<Komponente>]"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:231
+msgid ""
+"Restrict to I<archive> (debian, debian-backports, debian-security, debian-"
+"volatile), I<suite> (always codenames, with the exception of experimental), "
+"and/or I<component> (main, updates/main, ...). Use two slashes (B<//>) to "
+"separate suite and component if the suite name contains slashes. (Component "
+"can be left empty.)"
+msgstr ""
+"beschränkt auf I<Archiv> (»debian«, »debian-backports«, »debian-security«, "
+"»debian-volatile«), I<Suite> (immer Codenamen mit Ausnahme von "
+"»experimental«), und/oder I<Komponente> (»main«, »updates/main«, …). "
+"Benutzen Sie zwei Schrägstriche (B<//>), um Suite und Komponente zu trennen, "
+"falls der Suite-Name Schrägstriche enthält. (Komponente kann leer bleiben.)"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:239
+msgid ""
+"By default, all versions, suites, and architectures are queried. Refer to "
+"B<https://qa.debian.org/cgi-bin/dcontrol> for currently supported values."
+msgstr ""
+"Standardmäßig werden alle Versionen, Suites und Architekturen abgefragt. "
+"Wenden Sie sich an B<https://qa.debian.org/cgi-bin/dcontrol>, um derzeit "
+"unterstützte Werte in Erfahrung zu bringen."
+
+#. type: =item
+#: ../scripts/dcontrol.pl:246
+msgid "B<-s>, B<--show-suites>"
+msgstr "B<-s>, B<--show-suites>"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:248
+msgid "Add headers showing which distribution the control file is from."
+msgstr ""
+"fügt Kopfzeilen hinzu, die anzeigen, von welcher Distribution die "
+"Steuerdatei stammt"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:252
+msgid "Print URL queried."
+msgstr "gibt die abgefragte URL aus."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:256 ../scripts/dget.pl:623
+msgid "Show a help message."
+msgstr "zeigt eine Hilfenachricht an."
+
+#. type: TP
+#: ../scripts/dcontrol.pl:258 ../scripts/dd-list.1:96 ../scripts/dget.pl:625
+#: ../scripts/getbuildlog.1:28
+#, no-wrap
+msgid "B<-V>, B<--version>"
+msgstr "B<-V>, B<--version>"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:260 ../scripts/dget.pl:627
+msgid "Show version information."
+msgstr "zeigt Versionsinformationen an."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:266 ../scripts/dget.pl:633
+msgid ""
+"The two configuration files F</etc/devscripts.conf> and F<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file settings. "
+"Environment variable settings are ignored for this purpose. The currently "
+"recognised variable is:"
+msgstr ""
+"Die beiden Konfigurationsdateien F</etc/devscripts.conf> und F<~/."
+"devscripts> werden durch eine Shell in dieser Reihenfolge eingelesen, um "
+"Konfigurationsvariablen zu setzen. Befehlszeilenoptionen können benutzt "
+"werden, um Einstellungen in Konfigurationsdateien außer Kraft zu setzen. "
+"Einstellungen in Umgebungsvariablen werden zu diesem Zweck ignoriert. Die "
+"derzeit bekannte Variable ist:"
+
+#. type: =item
+#: ../scripts/dcontrol.pl:274
+msgid "DCONTROL_URL"
+msgstr "DCONTROL_URL"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:276
+msgid "URL to query. Default is B<https://qa.debian.org/cgi-bin/dcontrol>."
+msgstr ""
+"URL, die abgefragt werden soll. Vorgabe ist B<https://qa.debian.org/cgi-bin/"
+"dcontrol>."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:282
+msgid "This program is Copyright (C) 2009 by Christoph Berg <myon@debian.org>."
+msgstr ""
+"Dieses Programm unterliegt dem Copyright (C) 2009 von Christoph Berg "
+"<myon@debian.org>."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:284 ../scripts/dget.pl:680
+#: ../scripts/tagpending.pl:439
+msgid ""
+"This program is licensed under the terms of the GPL, either version 2 of the "
+"License, or (at your option) any later version."
+msgstr ""
+"Dieses Programm wurde unter den Bedingungen der GPL lizensiert, entweder "
+"Version 2 der Lizenz oder (nach Ihrer Wahl) irgendeiner späteren Version."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:289
+msgid "B<apt-cache>(1)"
+msgstr "B<apt-cache>(1)"
+
+#. type: TH
+#: ../scripts/dd-list.1:16
+#, no-wrap
+msgid "DD-LIST"
+msgstr "DD-LIST"
+
+#. type: TH
+#: ../scripts/dd-list.1:16
+#, no-wrap
+msgid "2011-10-27"
+msgstr "27. Oktober 2011"
+
+#. type: TH
+#: ../scripts/dd-list.1:16
+#, no-wrap
+msgid "Debian"
+msgstr "Debian"
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:21
+msgid "dd-list - nicely list .deb packages and their maintainers"
+msgstr "dd-list - nette Liste der .deb-Pakete und ihrer Betreuer"
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:26
+msgid ""
+"B<dd-list> [B<-hiusV>] [B<--help>] [B<--stdin>] [B<--sources "
+">I<Sources_file>] [B<--dctrl>] [B<--version>] [B<--uploaders>] "
+"[I<package> ...]"
+msgstr ""
+"B<dd-list> [B<-hiusV>] [B<--help>] [B<--stdin>] [B<--sources >I<Quelldatei>] "
+"[B<--dctrl>] [B<--version>] [B<--uploaders>] [I<Paket> …]"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:30
+msgid ""
+"B<dd-list> produces nicely formatted lists of Debian (.deb) packages and "
+"their maintainers."
+msgstr ""
+"B<dd-list> erzeugt nett formatierte Listen von Debian-Paketen (.deb) und "
+"ihren Betreuern."
+
+#. type: Plain text
+#: ../scripts/dd-list.1:37
+msgid ""
+"Input is a list of source or binary package names on the command line (or "
+"the standard input if B<--stdin> is given). Output is a list of the "
+"following format, where package names are source packages by default:"
+msgstr ""
+"Eingabe ist eine Liste der Quell- oder Binärpaketnamen auf der Befehlszeile "
+"(oder der Standardeingabe, falls B<--stdin> angegeben wurde). Ausgabe ist "
+"eine Liste im folgenden Format, wobei Paketnamen standardmäßig Quellpakete "
+"sind:"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:41
+#, no-wrap
+msgid "J. Random Developer E<lt>jrandom@debian.orgE<gt>\n"
+msgstr "J. Zufälliger Entwickler E<lt>jzufall@debian.orgE<gt>\n"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:44
+#, no-wrap
+msgid ""
+"j-random-package\n"
+"j-random-other\n"
+msgstr ""
+"j-zufall-paket\n"
+"j-zufall-anderes\n"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:47
+#, no-wrap
+msgid "Diana Hacker E<lt>diana@example.orgE<gt>\n"
+msgstr "Diana Hacker E<lt>diana@example.orgE<gt>\n"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:50
+#, no-wrap
+msgid ""
+"fun-package\n"
+"more-fun-package\n"
+msgstr ""
+"spaß-paket\n"
+"mehr-spaß-paket\n"
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:58
+msgid ""
+"This is useful when you want, for example, to produce a list of packages "
+"that need to attention from their maintainers, e.g., to be rebuilt when a "
+"library version transition happens."
+msgstr ""
+"Dies ist nützlich, wenn Sie zum Beispiel eine Liste von Paketen erstellen "
+"wollen, die der Aufmerksamkeit ihrer Betreuer bedürfen, z.B. um neu gebaut "
+"zu werden, wenn ein Versionssprung einer Bibliothek vorkommt."
+
+#. type: Plain text
+#: ../scripts/dd-list.1:62
+msgid "Print brief help message."
+msgstr "Ausgabe einer kurzen Hilfenachricht"
+
+#. type: TP
+#: ../scripts/dd-list.1:62
+#, no-wrap
+msgid "B<-i>, B<--stdin>"
+msgstr "B<-i>, B<--stdin>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:66
+msgid ""
+"Read package names from the standard input, instead of taking them from the "
+"command line. Package names are whitespace delimited."
+msgstr ""
+"liest Paketnamen von der Standardeingabe, statt sie von der Befehlszeile zu "
+"nehmen. Paketnamen werden durch Leerräume getrennt."
+
+#. type: TP
+#: ../scripts/dd-list.1:66
+#, no-wrap
+msgid "B<-d>, B<--dctrl>"
+msgstr "B<-d>, B<--dctrl>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:73
+msgid ""
+"Read package list from standard input in the format of a Debian package "
+"control file. This includes the status file, or output of apt-cache. This is "
+"the fastest way to use dd-list, as it uses the maintainer information from "
+"the input instead of looking up the maintainer of each listed package."
+msgstr ""
+"liest die Paketliste von der Standardeingabe im Format der Debian-"
+"Paketsteuerdatei. Dies beinhaltet die Statusdatei oder die Ausgabe von apt-"
+"cache. Dies ist der schnellste Weg, dd-list zu benutzen, da es die "
+"Betreuerinformation von der Eingabe verwendet, statt den Betreuer von jedem "
+"aufgeführten Paket nachzuschlagen."
+
+#. type: Plain text
+#: ../scripts/dd-list.1:76
+msgid ""
+"If no I<Source:> line is given, the I<Package:> name is used for output, "
+"which might be a binary package name."
+msgstr ""
+"Falls keine I<Source:>-Zeile angegeben wurde, wird der I<Package:>-Name als "
+"Ausgabe benutzt. Diese könnte ein Name eines Binärpakets sein."
+
+#. type: TP
+#: ../scripts/dd-list.1:76
+#, no-wrap
+msgid "B<-s>, B<--sources> I<Sources_file>"
+msgstr "B<-s>, B<--sources> I<Quelldatei>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:80
+msgid ""
+"Read package information from the specified I<Sources_file>s. This can be "
+"given multiple times."
+msgstr ""
+"liest Paketinformationen aus der angegebenen I<Quelldatei>. Dies kann "
+"mehrfach angegeben werden."
+
+#. type: Plain text
+#: ../scripts/dd-list.1:83
+msgid ""
+"If no I<Sources_file>s are specified, any files matching I</var/lib/apt/"
+"lists/*_source_Sources> will be used."
+msgstr ""
+"Falls keine I<Quelldatei>en angegeben wurden, werden alle Dateien verwendet, "
+"auf die I</var/lib/apt/lists/*_source_Sources> passen."
+
+#. type: TP
+#: ../scripts/dd-list.1:83
+#, no-wrap
+msgid "B<-u>, B<--uploaders>"
+msgstr "B<-u>, B<--uploaders>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:88
+msgid ""
+"Also list developers who are named as uploaders of packages, not only the "
+"maintainers; this is the default behaviour, use --nouploaders to prevent it. "
+"Uploaders are indicated with \"(U)\" appended to the package name."
+msgstr ""
+"listet außerdem Entwickler auf, die als Uploader von Paketen genannt werden, "
+"nicht nur Betreuer; dies ist das Standardverhalten, benutzen Sie --"
+"nouploaders, um das zu verhindern. Uploader werden mit einem an den "
+"Paketnamen angehängten »(U)« angezeigt."
+
+#. type: TP
+#: ../scripts/dd-list.1:88
+#, no-wrap
+msgid "B<-nou>, B<--nouploaders>"
+msgstr "B<-nou>, B<--nouploaders>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:91
+msgid "Only list package Maintainers, do not list Uploaders."
+msgstr "führt nur Paketbetreuer auf, keine Uploader."
+
+#. type: TP
+#: ../scripts/dd-list.1:91
+#, no-wrap
+msgid "B<-b>, B<--print-binary>"
+msgstr "B<-b>, B<--print-binary>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:96
+msgid ""
+"Use binary package names in the output instead of source package names (has "
+"no effect with B<--dctrl> if the I<Package:> line contains source package "
+"names)."
+msgstr ""
+"verwendet Binärpaketnamen statt Quellpaketnamen in der Ausgabe (hat keine "
+"Auswirkungen mit B<--dctrl>, falls die I<Package:>-Zeile Quellpaketnamen "
+"enthält)."
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:100
+msgid "Print the version."
+msgstr "gibt die Version aus."
+
+#. type: Plain text
+#: ../scripts/dd-list.1:102
+msgid "Lars Wirzenius E<lt>liw@iki.fiE<gt>"
+msgstr "Lars Wirzenius E<lt>liw@iki.fiE<gt>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:103
+msgid "Joey Hess E<lt>joeyh@debian.orgE<gt>"
+msgstr "Joey Hess E<lt>joeyh@debian.orgE<gt>"
+
+#. type: TH
+#: ../scripts/debc.1:1
+#, no-wrap
+msgid "DEBC"
+msgstr "DEBC"
+
+#. type: Plain text
+#: ../scripts/debc.1:4
+msgid "debc - view contents of a generated Debian package"
+msgstr "debc - Inhalt eines generierten Debian-Pakets betrachten"
+
+#. type: Plain text
+#: ../scripts/debc.1:6
+msgid "B<debc> [I<options>] [I<changes file>] [I<package> ...]"
+msgstr "B<debc> [I<Optionen>] [I<Changes-Datei>] [I<Paket> …]"
+
+#. type: Plain text
+#: ../scripts/debc.1:25
+msgid ""
+"B<debc> figures out the current version of a package and displays "
+"information about the I<.deb> and I<.udeb> files which have been generated "
+"in the current build process. If a I<.changes> file is specified on the "
+"command line, the filename must end with I<.changes>, as this is how the "
+"program distinguishes it from package names. If not, then B<debc> has to be "
+"called from within the source code directory tree. In this case, it will "
+"look for the I<.changes> file corresponding to the current package version "
+"(by determining the name and version number from the changelog, and the "
+"architecture in the same way as B<dpkg-buildpackage>(1) does). It then runs "
+"B<dpkg-deb -I> and B<dpkg-deb -c> on every I<.deb> and I<.udeb> archive "
+"listed in the I<.changes> file to display information about the contents of "
+"the I<.deb> / I<.udeb> files. It precedes every I<.deb> or I<.udeb> file "
+"with the name of the file. It assumes that all of the I<.deb> / I<.udeb> "
+"archives live in the same directory as the I<.changes> file. It is useful "
+"for ensuring that the expected files have ended up in the Debian package."
+msgstr ""
+"B<debc> findet die aktuelle Version eines Pakets heraus und zeigt "
+"Informationen über die I<.deb>- und I<.udeb>-Dateien an, die im aktuellen "
+"Bauprozess generiert wurden. Falls auf der Befehlszeile eine I<.changes>-"
+"Datei angegeben wurde, muss der Dateiname auf I<.changes> enden, da das "
+"Programm sie auf diese Art von Paketnamen unterscheidet. Falls nicht, muss "
+"B<debc> aus dem Quellcodeverzeichnisbaum aufgerufen werden. In diesem Fall "
+"wird es nach der I<.changes>-Datei Ausschau halten, die der aktuellen "
+"Paketversion entspricht (durch Bestimmen des Namens und der Versionsnummer "
+"aus dem Changelog und der Architektur auf der gleichen Art, die B<dpkg-"
+"buildpackage>(1) verwendet). Dann führt es B<dpkg-deb -I> und B<dpkg-deb -c> "
+"auf jedem I<.deb>- und I<.udeb>-Archiv aus, das in der I<.changes>-Datei "
+"aufgeführt ist, um Informationen über die I<.deb>- und I<.udeb>-Archive "
+"anzuzeigen. Es stellt jeder I<.deb>- und I<.udeb>-Datei den Dateinamen "
+"voran. Es geht davon aus, dass all die I<.deb>-/I<.udeb>-Archive im gleichen "
+"Verzeichnis wie die I<.changes>-Datei liegen. Es ist nützlich, um "
+"sicherzustellen, dass die erwarteten Dateien im Debian-Paket gelandet sind."
+
+#. type: Plain text
+#: ../scripts/debc.1:28
+msgid ""
+"If a list of packages is given on the command line, then only those debs or "
+"udebs with names in this list of packages will be processed."
+msgstr ""
+"Falls ein Liste von Paketen auf der Befehlszeile angegeben wurde, werden nur "
+"jene Debs oder Udebs verarbeitet, deren Namen in dieser Paketliste stehen."
+
+#. type: SH
+#: ../scripts/debc.1:28 ../scripts/debchange.1:105 ../scripts/debclean.1:24
+#: ../scripts/debi.1:29 ../scripts/debrelease.1:20 ../scripts/debuild.1:49
+#: ../scripts/uscan.1:306
+#, no-wrap
+msgid "Directory name checking"
+msgstr "Prüfung von Verzeichnisnamen"
+
+#. type: Plain text
+#: ../scripts/debc.1:39
+msgid ""
+"In common with several other scripts in the B<devscripts> package, B<debc> "
+"will climb the directory tree until it finds a I<debian/changelog> file. As "
+"a safeguard against stray files causing potential problems, it will examine "
+"the name of the parent directory once it finds the I<debian/changelog> file, "
+"and check that the directory name corresponds to the package name. "
+"Precisely how it does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and B<--"
+"check-dirname-regex>."
+msgstr ""
+"Ebenso wie mehrere andere Skripte im Paket B<devscripts> wird B<debc> das "
+"Verzeichnis emporsteigen, bis es eine I<debian/changelog>-Datei findet. Als "
+"eine Schutzmaßnahme gegen verstreute Dateien, die möglicherweise Probleme "
+"verursachen, wird es den Namen des übergeordneten Verzeichnisses "
+"untersuchen, sobald es die I<debian/changelog>-Datei findet und prüfen, ob "
+"dieser Verzeichnisname dem Paketnamen entspricht. Wie dies genau geschieht "
+"wird über zwei Konfigurationsdateivariablen geregelt, "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> und B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> "
+"sowie ihre entsprechenden Befehlszeilenoptionen B<--check-dirname-level> und "
+"B<--check-dirname-regex>."
+
+#. type: Plain text
+#: ../scripts/debc.1:41 ../scripts/debchange.1:118 ../scripts/debclean.1:37
+#: ../scripts/debi.1:42 ../scripts/debrelease.1:33 ../scripts/debuild.1:63
+#: ../scripts/uscan.1:323
+msgid "B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> can take the following values:"
+msgstr "B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> kann die folgenden Werte annehmen:"
+
+#. type: TP
+#: ../scripts/debc.1:41 ../scripts/debchange.1:118 ../scripts/debclean.1:37
+#: ../scripts/debi.1:42 ../scripts/debrelease.1:33 ../scripts/debuild.1:63
+#: ../scripts/uscan.1:323
+#, no-wrap
+msgid "B<0>"
+msgstr "B<0>"
+
+#. type: Plain text
+#: ../scripts/debc.1:44 ../scripts/debchange.1:121 ../scripts/debclean.1:40
+#: ../scripts/debi.1:45 ../scripts/debrelease.1:36 ../scripts/debuild.1:66
+#: ../scripts/uscan.1:326
+msgid "Never check the directory name."
+msgstr "prüft den Verzeichnisnamen nie."
+
+#. type: TP
+#: ../scripts/debc.1:44 ../scripts/debchange.1:121 ../scripts/debclean.1:40
+#: ../scripts/debi.1:45 ../scripts/debrelease.1:36 ../scripts/debuild.1:66
+#: ../scripts/uscan.1:326
+#, no-wrap
+msgid "B<1>"
+msgstr "B<1>"
+
+#. type: Plain text
+#: ../scripts/debc.1:48 ../scripts/debchange.1:125 ../scripts/debclean.1:44
+#: ../scripts/debi.1:49 ../scripts/debrelease.1:40 ../scripts/debuild.1:70
+msgid ""
+"Only check the directory name if we have had to change directory in our "
+"search for I<debian/changelog>. This is the default behaviour."
+msgstr ""
+"prüft den Verzeichnisnamen nur, falls in der Suche nach I<debian/changelog> "
+"das Verzeichnis gewechselt werden muss. Dies ist das Standardverhalten."
+
+#. type: TP
+#: ../scripts/debc.1:48 ../scripts/debchange.1:125 ../scripts/debclean.1:44
+#: ../scripts/debi.1:49 ../scripts/debrelease.1:40 ../scripts/debuild.1:70
+#: ../scripts/uscan.1:332
+#, no-wrap
+msgid "B<2>"
+msgstr "B<2>"
+
+#. type: Plain text
+#: ../scripts/debc.1:51 ../scripts/debchange.1:128 ../scripts/debclean.1:47
+#: ../scripts/debi.1:52 ../scripts/debrelease.1:43 ../scripts/debuild.1:73
+#: ../scripts/uscan.1:335
+msgid "Always check the directory name."
+msgstr "prüft den Verzeichnisnamen immer."
+
+#. type: Plain text
+#: ../scripts/debc.1:64 ../scripts/debclean.1:60 ../scripts/debi.1:65
+#: ../scripts/debrelease.1:56
+msgid ""
+"The directory name is checked by testing whether the current directory name "
+"(as determined by B<pwd>(1)) matches the regex given by the configuration "
+"file option B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> or by the command line option "
+"B<--check-dirname-regex> I<regex>. Here I<regex> is a Perl regex (see "
+"B<perlre>(3perl)), which will be anchored at the beginning and the end. If "
+"I<regex> contains a '/', then it must match the full directory path. If "
+"not, then it must match the full directory name. If I<regex> contains the "
+"string \\'PACKAGE', this will be replaced by the source package name, as "
+"determined from the changelog. The default value for the regex is: "
+"\\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and PACKAGE-"
+"version."
+msgstr ""
+"Der Verzeichnisname wird geprüft, indem getestet wird, ob der aktuelle "
+"Verzeichnisname (wie er durch B<pwd>(1) bestimmt wurde) zum regulären "
+"Ausdruck passt, der durch die Konfigurationsdateioption "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> oder die Befehlszeilenoption B<--check-"
+"dirname-regex> I<regulärer Ausdruck> angegeben wurde. Hierbei ist "
+"I<regulärer Ausdruck> ein regulärer Perl-Ausdruck (siehe B<perlre>(3perl)), "
+"der an den Anfang und das Ende verankert wird. Falls I<regulärer Ausdruck> "
+"ein »/« enthält, muss er auf den vollständigen Verzeichnispfad passen. Wenn "
+"nicht, dann muss er auf den vollständigen Verzeichnisnamen passen. Falls "
+"I<regulärer Ausdruck> die Zeichenkette »PACKAGE« beinhaltet, wird diese "
+"durch den Namen des Quellpakets ersetzt, wie er aus dem Changelog bestimmt "
+"wird. Der vorgegebene Wert für den regulären Ausdruck ist: »PACKAGE(-.+)?«, "
+"daher entspricht er Verzeichnisnamen wie PACKAGE und PACKAGE-Version."
+
+#. type: TP
+#: ../scripts/debc.1:71 ../scripts/debi.1:72 ../scripts/debrelease.1:81
+#, no-wrap
+msgid "B<--debs-dir> I<directory>"
+msgstr "B<--debs-dir> I<Verzeichnis>"
+
+#. type: Plain text
+#: ../scripts/debc.1:77
+msgid ""
+"Look for the I<.changes>, I<.deb> and I<.udeb> files in I<directory> instead "
+"of the parent of the source directory. This should either be an absolute "
+"path or relative to the top of the source directory."
+msgstr ""
+"sucht nach I<.changes>-, I<.deb>- und I<.udeb>-Dateien in I<Verzeichnis> "
+"statt im übergeordneten Verzeichnis des Quellverzeichnisses. Dies sollte "
+"entweder ein absoluter Pfad oder relativ zur Wurzel des Quellverzeichnisses "
+"sein."
+
+#. type: TP
+#: ../scripts/debc.1:77 ../scripts/debchange.1:369 ../scripts/debclean.1:69
+#: ../scripts/debi.1:87 ../scripts/debrelease.1:87 ../scripts/debuild.1:276
+#: ../scripts/uscan.1:472
+#, no-wrap
+msgid "B<--check-dirname-level> I<N>"
+msgstr "B<--check-dirname-level> I<N>"
+
+#. type: Plain text
+#: ../scripts/debc.1:81 ../scripts/debc.1:85 ../scripts/debclean.1:73
+#: ../scripts/debclean.1:77 ../scripts/debi.1:91 ../scripts/debi.1:95
+#: ../scripts/debrelease.1:91 ../scripts/debrelease.1:95
+#: ../scripts/debuild.1:280 ../scripts/debuild.1:284 ../scripts/uscan.1:476
+#: ../scripts/uscan.1:480
+msgid ""
+"See the above section B<Directory name checking> for an explanation of this "
+"option."
+msgstr ""
+"Die Erklärung dieser Option finden Sie im vorhergehenden Abschnitt B<Prüfung "
+"von Verzeichnisnamen>."
+
+#. type: TP
+#: ../scripts/debc.1:81 ../scripts/debchange.1:373 ../scripts/debclean.1:73
+#: ../scripts/debi.1:91 ../scripts/debrelease.1:91 ../scripts/debuild.1:280
+#: ../scripts/uscan.1:476
+#, no-wrap
+msgid "B<--check-dirname-regex> I<regex>"
+msgstr "B<--check-dirname-regex> I<regulärer Ausdruck>"
+
+#. type: Plain text
+#: ../scripts/debc.1:98 ../scripts/debchange.1:398 ../scripts/debclean.1:96
+#: ../scripts/debi.1:115 ../scripts/debrelease.1:111 ../scripts/debrsign.1:63
+#: ../scripts/debsign.1:112 ../scripts/nmudiff.1:85
+#: ../scripts/pts-subscribe.1:48 ../scripts/uupdate.1:94
+#: ../scripts/who-uploads.1:56
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced in that order to set configuration variables. Command line options "
+"can be used to override configuration file settings. Environment variable "
+"settings are ignored for this purpose. The currently recognised variables "
+"are:"
+msgstr ""
+"Die beiden Konfigurationsdateien I</etc/devscripts.conf> und I<~/."
+"devscripts> werden in dieser Reihenfolge eingelesen, um "
+"Konfigurationsvariablen zu setzen. Befehlszeilenoptionen können benutzt "
+"werden, um Einstellungen in Konfigurationsdateien zu setzen. Einstellungen "
+"in Umgebungsvariablen werden zu diesem Zweck ignoriert. Die derzeit "
+"bekannten Variablen sind:"
+
+#. type: TP
+#: ../scripts/debc.1:98 ../scripts/debi.1:115 ../scripts/debrelease.1:116
+#: ../scripts/debsign.1:124
+#, no-wrap
+msgid "B<DEBRELEASE_DEBS_DIR>"
+msgstr "B<DEBRELEASE_DEBS_DIR>"
+
+#. type: Plain text
+#: ../scripts/debc.1:108
+msgid ""
+"This specifies the directory in which to look for the I<.changes>, I<.deb> "
+"and I<.udeb> files, and is either an absolute path or relative to the top of "
+"the source tree. This corresponds to the B<--debs-dir> command line "
+"option. This directive could be used, for example, if you always use "
+"B<pbuilder> or B<svn-buildpackage> to build your packages. Note that it "
+"also affects B<debrelease>(1) in the same way, hence the strange name of the "
+"option."
+msgstr ""
+"Dies gibt das Verzeichnis an, in dem nach den I<.changes>-, I<.deb>- und I<."
+"udeb>-Dateien gesucht werden soll und ist entweder ein absoluter Pfad oder "
+"relativ zur Wurzel des Quellverzeichnisses. Dies entspricht der "
+"Befehlszeilenoption B<--debs-dir>. Diese Direktive könnte zum Beispiel "
+"benutzt werden, falls Sie immer B<pbuilder> oder B<svn-buildpackage> "
+"verwenden, um Ihre Pakete zu bauen. Beachten Sie, dass es außerdem "
+"B<debrelease>(1) beeinflusst, daher kommt der außergewöhnliche Name der "
+"Option."
+
+#. type: TP
+#: ../scripts/debc.1:108 ../scripts/debchange.1:406 ../scripts/debclean.1:100
+#: ../scripts/debi.1:125 ../scripts/debrelease.1:125 ../scripts/debuild.1:360
+#: ../scripts/devscripts.conf.5:42
+#, no-wrap
+msgid "B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL>, B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>"
+msgstr "B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL>, B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>"
+
+#. type: Plain text
+#: ../scripts/debc.1:115 ../scripts/debclean.1:107 ../scripts/debi.1:132
+#: ../scripts/debrelease.1:132 ../scripts/debuild.1:367
+msgid ""
+"See the above section B<Directory name checking> for an explanation of these "
+"variables. Note that these are package-wide configuration variables, and "
+"will therefore affect all B<devscripts> scripts which check their value, as "
+"described in their respective manpages and in B<devscripts.conf>(5)."
+msgstr ""
+"Die Erklärung dieser Variablen finden Sie im vorhergehenden Abschnitt "
+"B<Prüfung von Verzeichnisnamen>. Beachten Sie, dass dies paketweite "
+"Konfigurationsvariablen sind und daher alle B<devscripts>-Skripte "
+"beeinflussen, die ihren Wert prüfen. Dies wird in ihren jeweiligen "
+"Handbuchseiten und in B<devscripts.conf>(5) beschrieben."
+
+#. type: Plain text
+#: ../scripts/debc.1:119
+msgid "B<debdiff>(1), B<dpkg-deb>(1), B<devscripts.conf>(5)"
+msgstr "B<debdiff>(1), B<dpkg-deb>(1), B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/debc.1:121
+msgid ""
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>, based on an original script by "
+"Christoph Lameter E<lt>clameter@debian.orgE<gt>."
+msgstr ""
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>, basierend auf einem Originalskript "
+"von Christoph Lameter E<lt>clameter@debian.orgE<gt>."
+
+#. type: TH
+#: ../scripts/debchange.1:1
+#, no-wrap
+msgid "DEBCHANGE"
+msgstr "DEBCHANGE"
+
+#. type: Plain text
+#: ../scripts/debchange.1:4
+msgid ""
+"debchange - Tool for maintenance of the debian/changelog file in a source "
+"package"
+msgstr ""
+"debchange - Werkzeug zum Verwalten der Datei »debian/changelog« in einem "
+"Quellpaket"
+
+#. type: Plain text
+#: ../scripts/debchange.1:6
+msgid "B<debchange> [I<options>] [I<text> ...]"
+msgstr "B<debchange> [I<Optionen>] [I<Text> …]"
+
+#. type: Plain text
+#: ../scripts/debchange.1:8
+msgid "B<dch> [I<options>] [I<text> ...]"
+msgstr "B<dch> [I<Optionen>] [I<Text> …]"
+
+#. type: Plain text
+#: ../scripts/debchange.1:29
+msgid ""
+"B<debchange> or its alias B<dch> will add a new comment line to the Debian "
+"changelog in the current source tree. This command must be run from within "
+"that tree. If the text of the change is given on the command line, "
+"B<debchange> will run in batch mode and simply add the text, with line "
+"breaks as necessary, at the appropriate place in I<debian/changelog> (or the "
+"changelog specified by options, as described below). If no text is "
+"specified then B<debchange> will run the editor as determined by B<sensible-"
+"editor> for you to edit the file. (The environment variables B<VISUAL> and "
+"B<EDITOR> are used in this order to determine which editor to use.) Editors "
+"which understand the I<+n> option for starting the editing on a specified "
+"line will use this to move to the correct line of the file for editing. If "
+"the editor is quit without modifying the temporary file, B<debchange> will "
+"exit without touching the existing changelog. B<Note that the changelog is "
+"assumed to be encoded with the UTF-8 encoding. If it is not, problems may "
+"occur.> Please see the B<iconv>(1) manpage to find out how to convert "
+"changelogs from legacy encodings. Finally, a I<changelog> or I<NEWS> file "
+"can be created from scratch using the B<--create> option described below."
+msgstr ""
+"B<debchange> oder dessen Alias B<dch> wird eine neue Kommentarzeile zum "
+"Debian-Changelog im aktuellen Quellpfad hinzufügen. Dieser Befehl muss "
+"innerhalb dieses Pfads ausgeführt werden. Falls der Text der Änderung auf "
+"der Befehlszeile angegeben wurde, wird B<debchange> im "
+"Stapelverarbeitungsmodus laufen und nur den Text hinzufügen sowie, falls "
+"nötig, Zeilenumbrüche an der geeigneten Stelle in I<debian/changelog> (oder "
+"dem durch Optionen angegeben Changelog, wie oben beschrieben) hinzufügen. "
+"Falls kein Text angegeben wurde, wird B<debchange> den durch B<sensible-"
+"editor> festgelegten Editor für Sie öffnen, um die Datei zu bearbeiten. (Die "
+"Umgebungsvariablen B<VISUAL> und B<EDITOR> werden in dieser Reihenfolge "
+"verwendet, um festzustellen, welcher Editor benutzt werden soll). Editoren, "
+"die die Option I<+n> zum Starten der Bearbeitung auf einer bestimmten Zeile "
+"verstehen, werden dies benutzen, um zum Bearbeiten auf die korrekte Zeile "
+"der Datei zu positionieren. Falls der Editor beendet wird, ohne die "
+"temporäre Datei zu entfernen, wird B<debchange> beendet, ohne das "
+"existierende Changelog anzurühren. B<Beachten Sie, dass davon ausgegangen "
+"wird, dass das Changelog in UTF-8 kodiert ist - falls nicht, könnten "
+"Probleme auftreten.> Bitte lesen Sie die Handbuchseite B<iconv>(1), um "
+"herauszufinden, wie Changelogs mit älteren Kodierungen konvertiert werden "
+"könnnen. Eine B<changelog>-Datei oder eine I<NEWS>-Datei kann unter "
+"Benutzung der weiter unten beschriebenen Option B<--create> von Grunde auf "
+"erzeugt werden."
+
+#. type: Plain text
+#: ../scripts/debchange.1:42
+msgid ""
+"B<debchange> also supports automatically producing bug-closing changelog "
+"entries, using the B<--closes> option. This will usually query the BTS, the "
+"Debian Bug Tracking System (see https://bugs.debian.org/) to determine the "
+"title of the bug and the package in which it occurs. This behaviour can be "
+"stopped by giving a B<--noquery> option or by setting the configuration "
+"variable B<DEBCHANGE_QUERY_BTS> to I<no>, as described below. In either "
+"case, the editor (as described above) will always be invoked to give an "
+"opportunity to modify the entries, and the changelog will be accepted "
+"whether or not modifications are made. An extra changelog entry can be "
+"given on the command line in addition to the closes entries."
+msgstr ""
+"B<debchange> unterstützt außerdem mittels der Option B<--closes> "
+"automatisches Erzeugen von Changelog-Einträgen, die Fehlerberichte "
+"schließen. Dies wird üblicherweise die Fehlerdatenbank abfragen, das Debian "
+"Bug Tracking System (BTS, siehe https://bugs.debian.org/), um den Titel des "
+"Fehlers und das Paket, in dem er vorkommt, zu bestimmen. Dieses Verhalten "
+"kann durch Angabe der Option B<--noquery> oder dem Setzen der "
+"Konfigurationsvariablen B<DEBCHANGE_QUERY_BTS> auf I<no> beendet werden, wie "
+"nachfolgend beschrieben beendet werden. In beiden Fällen wird der Editor "
+"(wie oben beschrieben) immer aufgerufen, um Gelegenheit zu geben, die "
+"Einträge zu ändern, und das Changelog wird akzeptiert, egal, ob Änderungen "
+"gemacht wurden oder nicht. Ein zusätzlicher Changelog-Eintrag kann auf der "
+"Befehlszeile zu den Einträgen zum Schließen angegeben werden."
+
+#. type: Plain text
+#: ../scripts/debchange.1:49
+msgid ""
+"At most one of B<--append>, B<--increment>, B<--edit>, B<--release>, and B<--"
+"newversion> may be specified as listed below. If no options are specified, "
+"B<debchange> will use heuristics to guess whether or not the package has "
+"been successfully released, and behave as if B<--increment> had been "
+"specified if the package has been released, or otherwise as if B<--append> "
+"has been specified."
+msgstr ""
+"Von B<--append>, B<--increment>, B<--edit>, B<--release> und B<--newversion> "
+"kann höchstens eins, wie unten aufgeführt, benutzt werden. Falls keine "
+"Optionen angegeben wurden, wird B<debchange> Entscheidungsregeln benutzen, "
+"um abzuschätzen, ob ein Paket veröffentlicht wurde oder nicht, und sich so "
+"verhalten, als sei bei der Veröffentlichung des Pakets B<--increment> "
+"angegeben gewesen oder andernfalls, als ob B<--append> angegeben wurde."
+
+#. type: Plain text
+#: ../scripts/debchange.1:64
+msgid ""
+"Two different sets of heuristics can be used, as controlled by the B<--"
+"release-heuristic> option or the B<DEBCHANGE_RELEASE_HEURISTIC> "
+"configuration variable. The default I<changelog> heuristic assumes the "
+"package has been released unless its changelog contains B<UNRELEASED> in the "
+"distribution field. If this heuristic is enabled then the distribution will "
+"default to B<UNRELEASED> in new changelog entries, and the B<--mainttrailer> "
+"option described below will be automatically enabled. This can be useful if "
+"a package can be released by different maintainers, or if you do not keep "
+"the upload logs. The alternate I<log> heuristic determines if a package has "
+"been released by looking for an appropriate B<dupload>(1) or B<dput>(1) log "
+"file in the parent directory. A warning will be issued if the log file is "
+"found but a successful upload is not recorded. This may be because the "
+"previous upload was performed with a version of B<dupload> prior to 2.1 or "
+"because the upload failed."
+msgstr ""
+"Es können zwei verschiedene Zusammenstellungen von Entscheidungsregeln "
+"benutzt werden, was durch die Option B<--release-heuristic> oder die "
+"Konfigurationsdateivariable B<DEBCHANGE_RELEASE_HEURISTIC> geregelt wird. "
+"Die Standard-I<Changelog>-Entscheidungsregel geht davon aus, dass das Paket "
+"veröffentlicht wurde, wenn sein Changelog im Feld »distribution« nicht "
+"B<UNRELEASED> enthält. Falls diese Entscheidungsregel aktiviert ist, wird "
+"die Distribution B<UNRELEASED> in neuen Changelog-Einträgen vorgeben und die "
+"nachfolgend beschriebene Option B<--mainttrailer> wird automatisch "
+"aktiviert. Dies kann nützlich sein, falls ein Paket durch verschiedene "
+"Paketbetreuer veröffentlicht werden kann oder falls Sie die Üpload-"
+"Protokolle nicht aufbewahren. Die alternative I<Protokoll>-"
+"Entscheidungsregel bestimmt, ob ein Paket veröffentlicht wurde, indem es im "
+"übergeordneten Verzeichnis eine geeignete B<dupload>(1)- oder B<dput>(1)-"
+"Protokolldatei sucht. Falls die Protokolldatei gefunden aber kein "
+"erfolgreiches Hochladen aufgezeichnet wurde, wird eine Warnung ausgegeben. "
+"Dies kann daher rühren, dass das vorhergehende Hochladen von einer Version "
+"von B<dupload> vor 2.1 durchgeführt wurde oder das Hochladen fehlschlug."
+
+#. type: Plain text
+#: ../scripts/debchange.1:82
+msgid ""
+"If either B<--increment> or B<--newversion> is used, the name and email for "
+"the new version will be determined as follows. If the environment variable "
+"B<DEBFULLNAME> is set, this will be used for the maintainer full name; if "
+"not, then B<NAME> will be checked. If the environment variable B<DEBEMAIL> "
+"is set, this will be used for the email address. If this variable has the "
+"form \"name E<lt>emailE<gt>\", then the maintainer name will also be taken "
+"from here if neither B<DEBFULLNAME> nor B<NAME> is set. If this variable is "
+"not set, the same test is performed on the environment variable B<EMAIL>. "
+"Next, if the full name has still not been determined, then use "
+"B<getpwuid>(3) to determine the name from the password file. If this fails, "
+"use the previous changelog entry. For the email address, if it has not been "
+"set from B<DEBEMAIL> or B<EMAIL>, then look in I</etc/mailname>, then "
+"attempt to build it from the username and FQDN, otherwise use the email "
+"address in the previous changelog entry. In other words, it's a good idea "
+"to set B<DEBEMAIL> and B<DEBFULLNAME> when using this script."
+msgstr ""
+"Falls entweder B<--increment> oder B<--newversion> benutzt wird, wird der "
+"Name und die E-Mail der neuen Version wie folgt bestimmt. Falls die "
+"Umgebungsvariable B<DEBFULLNAME> gesetzt ist, wird diese für den "
+"vollständigen Namen des Betreuers verwendet; falls nicht, wird B<NAME> "
+"geprüft. Falls die Umgebungsvariable B<DEBEMAIL> gesetzt ist, wird diese für "
+"die E-Mail-Adresse benutzt. Falls diese Variable die Form »Name E<lt>E-"
+"MailE<gt>« hat, dann wird der Betreuername außerdem von hier genommen, wenn "
+"weder B<DEBFULLNAME> noch B<NAME> gesetzt sind. Falls diese Variable nicht "
+"gesetzt ist, wird der gleiche Test für die Umgebungsvariable B<EMAIL> "
+"durchgeführt. Als nächste wird, falls der vollständige Name immer noch nicht "
+"bestimmt wurde, B<getpwuid>(3) verwendet, um den Namen aus der Passwortdatei "
+"zu bestimmen. Falls dies fehlschlägt, wird der vorherige Changelog-Eintrag "
+"benutzt. Für die E-Mail-Adresse wird dann, falls sie nicht von B<DEBEMAIL> "
+"oder B<EMAIL> gesetzt wurde, in I</etc/mailname> nachgesehen, dann wird "
+"versucht, sie aus dem Benutzernamen und dem FQDN zu bilden, andernfalls wird "
+"die E-Mail-Adresse aus dem vorherigen Changelog-Eintrag verwendet. In "
+"anderen Worten: Es ist ein guter Rat, B<DEBEMAIL> und B<DEBFULLNAME> zu "
+"setzen, wenn dieses Skript benutzt wird."
+
+#. type: Plain text
+#: ../scripts/debchange.1:95
+msgid ""
+"Support is included for changelogs that record changes by multiple co-"
+"maintainers of a package. If an entry is appended to the current version's "
+"entries, and the maintainer is different from the maintainer who is listed "
+"as having done the previous entries, then lines will be added to the "
+"changelog to tell which maintainers made which changes. Currently only one "
+"of the several such styles of recording this information is supported, in "
+"which the name of the maintainer who made a set of changes appears on a line "
+"before the changes, inside square brackets. This can be switched on and off "
+"using the B<-->[B<no>]B<multimaint> option or the B<DEBCHANGE_MULTIMAINT> "
+"configuration file option; the default is to enable it. Note that if an "
+"entry has already been marked in this way, then this option will be silently "
+"ignored."
+msgstr ""
+"Für Changelogs, die Änderungen durch mehrere Mitbetreuer eines Pakets "
+"aufzeichnen, ist Unterstützung inbegriffen. Falls ein Eintrag an die "
+"aktuellen Versionseinträge angehängt wird und sich der Betreuer vom Betreuer "
+"unterscheidet, der als derjenige aufgelistet ist, der die letzten Einträge "
+"vorgenommen hat, dann werden dem Changelog Zeilen hinzugefügt, die aussagen, "
+"welcher Betreuer welche Änderungen vorgenommen hat. Derzeit wird nur einer "
+"von mehreren dieser Aufzeichnungsstile für diese Information unterstützt, in "
+"der der Name des Betreuers, der eine Gruppe von Änderungen vorgenommen hat, "
+"in einer Zeile vor den Änderungen in eckigen Klammen erscheint. Dies kann "
+"mittels der Option B<-->[B<no>]B<multimaint> oder der "
+"Konfigurationsdateioption B<DEBCHANGE_MULTIMAINT> ein- und ausgeschaltet "
+"werden; standardmäßig wird es eingeschaltet. Beachten Sie, dass diese "
+"Optionstillschweigend ignoriert wird, falls ein Eintrag bereits auf diese "
+"Art markiert wurde."
+
+#. type: Plain text
+#: ../scripts/debchange.1:101
+msgid ""
+"If the directory name of the source tree has the form I<package>-I<version>, "
+"then B<debchange> will also attempt to rename it if the (upstream) version "
+"number changes. This can be prevented by using the B<--preserve> command "
+"line or configuration file option as described below."
+msgstr ""
+"Falls der Verzeichnisname des Quellverzeichnisbaums die Form I<Paket>-"
+"I<Version> hat, wird B<debchange> außerdem versuchen, ihn umzubenennen, "
+"falls sich die Versionsnummer (der Originalautoren) ändert. Dies kann durch "
+"Verwendung der Befehlszeilen- oder Konfigurationsdateioption B<--preserve> "
+"vermieden werden, wie nachfolgend beschrieben."
+
+#. type: Plain text
+#: ../scripts/debchange.1:105
+msgid ""
+"If B<--force-bad-version> or B<--allow-lower-version> is used, B<debchange> "
+"will not stop if the new version is less than the current one. This is "
+"especially useful while doing backports."
+msgstr ""
+"Falls B<--force-bad-version> oder B<--allow-lower-version> benutzt wird, "
+"wird B<debchange> nicht stoppen, falls die neue Version kleiner als die "
+"aktuelle ist. Dies ist insbesondere beim Zurückportieren nützlich."
+
+#. type: Plain text
+#: ../scripts/debchange.1:116
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debchange> will climb the directory tree until it finds a I<debian/"
+"changelog> file. As a safeguard against stray files causing potential "
+"problems, it will examine the name of the parent directory once it finds the "
+"I<debian/changelog> file, and check that the directory name corresponds to "
+"the package name. Precisely how it does this is controlled by two "
+"configuration file variables B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and their corresponding command-line "
+"options B<--check-dirname-level> and B<--check-dirname-regex>."
+msgstr ""
+"Ebenso wie mehrere andere Skripte im Paket B<devscripts> wird B<debchange> "
+"das Verzeichnis emporsteigen, bis es eine I<debian/changelog>-Datei findet. "
+"Als eine Schutzmaßnahme gegen verirrte Dateien, die potenziell Probleme "
+"bereiten, wird es den Namen des übergeordneten Verzeichnisses untersuchen, "
+"sobald es die I<debian/changelog>-Datei findet, und prüfen, ob dieser "
+"Verzeichnisname dem Paketnamen entspricht. Wie dies genau geschieht, wird "
+"über zwei Konfigurationsdateivariablen geregelt, "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> und B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, "
+"sowie ihre entsprechenden Befehlszeilenoptionen B<--check-dirname-level> und "
+"B<--check-dirname-regex>."
+
+#. type: Plain text
+#: ../scripts/debchange.1:141
+msgid ""
+"The directory name is checked by testing whether the current directory name "
+"(as determined by B<pwd>(1)) matches the regex given by the configuration "
+"file option B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> or by the command line option "
+"B<--check-dirname-regex> I<regex>. Here I<regex> is a Perl regex (see "
+"B<perlre>(3perl)), which will be anchored at the beginning and the end. If "
+"I<regex> contains a 'B</>', then it must match the full directory path. If "
+"not, then it must match the full directory name. If I<regex> contains the "
+"string \\'B<PACKAGE>', this will be replaced by the source package name, as "
+"determined from the changelog. The default value for the regex is: "
+"\\'B<PACKAGE(-.+)?>', thus matching directory names such as B<PACKAGE> and "
+"B<PACKAGE->I<version>."
+msgstr ""
+"Der Verzeichnisname wird geprüft, indem getestet wird, ob der aktuelle "
+"Verzeichnisname (wie er durch B<pwd>(1) bestimmt wurde) zum regulären "
+"Ausdruck passt, der durch die Konfigurationsdateioption "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> oder die Befehlszeilenoption B<--check-"
+"dirname-regex> I<regulärer Ausdruck> angegeben wurde. Hierbei ist "
+"I<regulärer Ausdruck> ein regulärer Perl-Ausdruck (siehe B<perlre>(3perl)), "
+"der an den Anfang und das Ende verankert wird. Falls I<regulärer Ausdruck> "
+"ein »/« enthält, muss er auf den vollständigen Verzeichnispfad passen. Falls "
+"nicht, dann muss er auf den vollständigen Verzeichnisnamen passen. Falls "
+"I<regulärer Ausdruck> die Zeichenkette »B<PACKAGE>« beinhaltet, wird diese "
+"durch den Namen des Quellpakets ersetzt, wie er aus dem Changelog bestimmt "
+"wird. Der vorgegebene Wert für den regulären Ausdruck ist: »B<PACKAGE(-.+)?"
+">«, daher entspricht er Verzeichnisnamen wie B<PACKAGE> und B<PACKAGE-"
+"Version>."
+
+#. type: Plain text
+#: ../scripts/debchange.1:145
+msgid ""
+"The default changelog to be edited is I<debian/changelog>; however, this can "
+"be changed using the B<--changelog> or B<--news> options or the B<CHANGELOG> "
+"environment variable, as described below."
+msgstr ""
+"Das Standard-Changelog, das bearbeitet werden soll, ist I<debian/changelog>; "
+"dies kann jedoch mittels der Optionen B<--changelog>, B<--news> oder der "
+"Umgebungsvariable B<CHANGELOG>, wie nachfolgend beschrieben geändert werden."
+
+#. type: TP
+#: ../scripts/debchange.1:146
+#, no-wrap
+msgid "B<--append>, B<-a>"
+msgstr "B<--append>, B<-a>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:149
+msgid "Add a new changelog entry at the end of the current version's entries."
+msgstr ""
+"fügt einen neuen Changelog-Eintrag an das Ende der Einträge der aktuellen "
+"Version hinzu."
+
+#. type: TP
+#: ../scripts/debchange.1:149
+#, no-wrap
+msgid "B<--increment>, B<-i>"
+msgstr "B<--increment>, B<-i>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:162
+msgid ""
+"Increment either the final component of the Debian release number or, if "
+"this is a native Debian package, the version number. On Ubuntu or Tanglu, "
+"this will also change the suffix from buildX to ubuntu1/tanglu1. Use B<-R>, "
+"B<--rebuild> for a no change rebuild increment. This creates a new section "
+"at the beginning of the changelog with appropriate headers and footers. "
+"Also, if this is a new version of a native Debian package, the directory "
+"name is changed to reflect this. If B<DEBCHANGE_RELEASE_HEURISTIC> is "
+"I<changelog> (default) and the current release is I<UNRELEASED>, this will "
+"only change the version of the current changelog stanza. Otherwise, this "
+"will create a new changelog stanza with the new version."
+msgstr ""
+"Erhöht entweder den letzten Bestandteil der Debian-Veröffentlichungsnummer "
+"oder, falls dies ein natives Debian-Paket ist, die Versionsnummer. Für "
+"Ubuntu oder Tanglu wird dies außerdem die Endung von »buildX« in »ubuntu1« "
+"beziehungsweise »tanglu1« ändern. Benutzen Sie B<-R> oder B<--rebuild> für "
+"ein Erhöhen ohne Änderung beim Neubauen. Dies erstellt am Anfang des "
+"Changelogs einen neuen Abschnitt mit geeigneten Kopf- und Fußzeilen. Falls "
+"dies eine neue Version eines nativen Debian-Pakets ist, wird außerdem der "
+"Verzeichnisname geändert, um dies widerzuspiegeln. Falls "
+"B<DEBCHANGE_RELEASE_HEURISTIC> I<changelog> (Vorgabe) und die aktuelle "
+"Veröffentlichung I<UNRELEASED> ist, wird dies nur die Version des aktuellen "
+"Changelog-Eintrags ändern. Andernfalls wird dies einen neuen Changelog-"
+"Eintrag mit der neuen Version erstellen."
+
+#. type: TP
+#: ../scripts/debchange.1:162
+#, no-wrap
+msgid "B<--newversion >I<version>, B<-v >I<version>"
+msgstr "B<--newversion >I<Version>, B<-v >I<Version>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:172
+msgid ""
+"This specifies the version number (including the Debian release part) "
+"explicitly and behaves as the B<--increment> option in other respects. It "
+"will also change the directory name if the upstream version number has "
+"changed. If B<DEBCHANGE_RELEASE_HEURISTIC> is I<changelog> (default) and "
+"the current release is I<UNRELEASED>, this will only change the version of "
+"the current changelog stanza. Otherwise, this will create a new changelog "
+"stanza with the new version."
+msgstr ""
+"Dies gibt die Versionsnummer (einschließlich des Debian-"
+"Veröffentlichungsteils) explizit an und verhält sich ansonsten wie die "
+"Option B<--increment>. Es wird außerdem den Verzeichnisnamen ändern, falls "
+"sich die Versionsnummer des Originalpakets geändert hat. Falls "
+"B<DEBCHANGE_RELEASE_HEURISTIC> I<changelog> (Vorgabe) und die aktuelle "
+"Veröffentlichung I<UNRELEASED> ist, wird dies nur die Version des aktuellen "
+"Changelog-Eintrags ändern. Andernfalls wird dies einen neuen Changelog-"
+"Eintrag mit der neuen Version erstellen."
+
+#. type: TP
+#: ../scripts/debchange.1:172
+#, no-wrap
+msgid "B<--edit>, B<-e>"
+msgstr "B<--edit>, B<-e>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:175
+msgid "Edit the changelog in an editor."
+msgstr "bearbeitet das Changelog in einem Editor."
+
+#. type: TP
+#: ../scripts/debchange.1:175
+#, no-wrap
+msgid "B<--release>, B<-r>"
+msgstr "B<--release>, B<-r>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:183
+msgid ""
+"Finalize the changelog for a release. Update the changelog timestamp. If "
+"the distribution is set to B<UNRELEASED>, change it to the distribution from "
+"the previous changelog entry (or another distribution as specified by B<--"
+"distribution>). If there are no previous changelog entries and an explicit "
+"distribution has not been specified, B<unstable> will be used."
+msgstr ""
+"vollendet das Changelog für eine Veröffentlichung; aktualisiert den "
+"Zeitstempel des Changelogs. Falls die Distribution auf B<UNRELEASED> gesetzt "
+"ist, wird sie auf die Distribution des letzten Changelog-Eintrags geändert "
+"(oder eine andere Distribution, die mit B<--distribution> angegeben wurde). "
+"Falls es keine vorhergehenden Changelog-Einträge gibt und keine Distribution "
+"explizit angegeben wurde, wird B<unstable> verwendet."
+
+#. type: TP
+#: ../scripts/debchange.1:183
+#, no-wrap
+msgid "B<--force-save-on-release>"
+msgstr "B<--force-save-on-release>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:188
+msgid ""
+"When B<--release> is used, an editor is opened to allow inspection of the "
+"changelog. The user is required to save the file to accept the modified "
+"changelog, otherwise the original will be kept (default)."
+msgstr ""
+"Wenn B<--release> benutzt wird, wird ein Editor geöffnet, um die Prüfung des "
+"Changelogs zu ermöglichen. Der Benutzer wird aufgefordert, die Datei zu "
+"sichern, um das geänderte Changelog zu akzeptieren, andernfalls wird das "
+"Original beibehalten (Vorgabe)."
+
+#. type: TP
+#: ../scripts/debchange.1:188
+#, no-wrap
+msgid "B<--no-force-save-on-release>"
+msgstr "B<--no-force-save-on-release>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:194
+msgid ""
+"Do not do so. Note that a dummy changelog entry may be supplied in order to "
+"achieve the same effect - e.g. B<debchange --release \"\">. The entry will "
+"not be added to the changelog but its presence will suppress the editor."
+msgstr ""
+"Tun Sie das nicht. Beachten Sie, dass dieser ein Schein-Changelog-Eintrag "
+"mitgeliefert werden kann, um den gleichen Effekt zu erzielen – z.B. "
+"B<debchange --release \"\">. Der Eintrag wird dem Changelog nicht "
+"hinzugefügt, aber seine Anwesenheit wird den Editor unterdrücken."
+
+#. type: Plain text
+#: ../scripts/debchange.1:206
+msgid ""
+"This will create a new I<debian/changelog> file (or I<NEWS> if the B<--news> "
+"option is used). You must be in the top-level directory to use this; no "
+"directory name checking will be performed. The package name and version can "
+"either be specified using the B<--package> and B<--newversion> options, "
+"determined from the directory name using the B<--fromdirname> option or "
+"entered manually into the generated I<changelog> file. The maintainer name "
+"is determined from the environment if this is possible, and the distribution "
+"is specified either using the B<--distribution> option or in the generated "
+"I<changelog> file."
+msgstr ""
+"Dies wird eine neue I<debian/changelog>-Datei erstellen (oder I<NEWS>, falls "
+"die Option B<--news> benutzt wird). Sie müssen sich auf der obersten "
+"Verzeichnisebene befinden, um dies zu tun; es wird keine Prüfung des "
+"Verzeichnisnamens durchgeführt. Der Paketname und die Version können "
+"entweder unter Benutzung der Optionen B<--package> und B<--newversion> "
+"angegeben, aus dem Verzeichnisnamen mittels der Option B<--fromdirname> "
+"bestimmt werden oder manuell in die erzeugte I<changelog>-Datei eingegeben "
+"werden. Der Betreuername wird, falls dies möglich ist, aus der Umgebung "
+"bestimmt und die Distribution wird entweder mittels der Option B<--"
+"distribution> oder in der erzeugten I<changelog>-Datei angegeben."
+
+#. type: TP
+#: ../scripts/debchange.1:206
+#, no-wrap
+msgid "B<--empty>"
+msgstr "B<--empty>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:213
+msgid ""
+"When used in combination with B<--create>, suppress the automatic addition "
+"of an \"B<initial release>\" changelog entry (so that the next invocation of "
+"B<debchange> adds the first entry). Note that this will cause a B<dpkg-"
+"parsechangelog> warning on the next invocation due to the lack of changes."
+msgstr ""
+"Wenn dies in Kombination mit B<--create> benutzt wird, unterdrückt es den "
+"automatischen Zusatz eines »B<initial release>«-Changelog-Eintrags (so dass "
+"der nächste Eintrag von B<debchange> den ersten Eintrag hinzufügt). Beachten "
+"Sie, dass dies mangels Änderungen eine B<dpkg-parsechangelog>-Warnung beim "
+"nächsten Aufruf verursacht."
+
+#. type: TP
+#: ../scripts/debchange.1:213 ../scripts/mk-origtargz.pl:60
+#: ../scripts/uscan.1:431
+#, no-wrap
+msgid "B<--package> I<package>"
+msgstr "B<--package> I<Paket>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:218
+msgid ""
+"This specifies the package name to be used in the new changelog; this may "
+"only be used in conjunction with the B<--create>, B<--increment> and B<--"
+"newversion> options."
+msgstr ""
+"Dies gibt den Paketnamen an, der im neuen Changelog benutzt werden soll; "
+"dies könnte in Verbindung mit den Optionen B<--create>, B<--increment> und "
+"B<--newversion> verwendet werden."
+
+#. type: TP
+#: ../scripts/debchange.1:218
+#, no-wrap
+msgid "B<--nmu>, B<-n>"
+msgstr "B<--nmu>, B<-n>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:227
+msgid ""
+"Increment the Debian release number for a non-maintainer upload by either "
+"appending a \"B<.1>\" to a non-NMU version number (unless the package is "
+"Debian native, in which case \"B<+nmu1>\" is appended) or by incrementing an "
+"NMU version number, and add an NMU changelog comment. This happens "
+"automatically if the packager is neither in the B<Maintainer> nor the "
+"B<Uploaders> field in I<debian/control>, unless B<DEBCHANGE_AUTO_NMU> is set "
+"to I<no> or the B<--no-auto-nmu> option is used."
+msgstr ""
+"erhöht die Debian-Veröffentlichungsnummer für ein Hochladen durch jemanden, "
+"der nicht Betreuer des Pakets ist (NMU) entweder durch Anhängen von »B<.1>« "
+"an eine nicht NMU-Versionsnummer (sofern es kein natives Debian-Paket ist, "
+"in diesem Fall wird »B<+nmu1>« angehängt) oder durch Erhöhen einer NMU-"
+"Versionsnummer und dem Hinzufügen eines NMU-Changelog-Eintrags. Dies "
+"geschieht automatisch, falls der Paketierer in I<debian/control> weder im "
+"Feld B<Maintainer> noch im Feld B<Uploaders> steht, außer wenn "
+"B<DEBCHANGE_AUTO_NMU> auf I<no> gesetzt ist oder die Option B<--no-auto-nmu> "
+"benutzt wird."
+
+#. type: TP
+#: ../scripts/debchange.1:227
+#, no-wrap
+msgid "B<--bin-nmu>"
+msgstr "B<--bin-nmu>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:232
+msgid ""
+"Increment the Debian release number for a binary non-maintainer upload by "
+"either appending a \"B<+b1>\" to a non-binNMU version number or by "
+"incrementing a binNMU version number, and add a binNMU changelog comment."
+msgstr ""
+"erhöht die Debian-Veröffentlichungsnummer für ein binäres Hochladen durch "
+"jemanden, der nicht Betreuer des Pakets ist (NMU) entweder durch Anhängen "
+"von »B<+b1>« an eine nicht binär-NMU-Versionsnummer oder durch Erhöhen einer "
+"binär-NMU-Versionsnummer und Hinzufügen eines binär-NMU-Changelog-Kommentars."
+
+#. type: TP
+#: ../scripts/debchange.1:232
+#, no-wrap
+msgid "B<--qa>, B<-q>"
+msgstr "B<--qa>, B<-q>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:236
+msgid ""
+"Increment the Debian release number for a Debian QA Team upload, and add a "
+"B<QA upload> changelog comment."
+msgstr ""
+"erhöht die Debian-Veröffentlichungsnummer für ein Hochladen durch das Debian-"
+"QA-Team und fügt einen Changelog-Kommentar B<QA upload> hinzu."
+
+#. type: TP
+#: ../scripts/debchange.1:236
+#, no-wrap
+msgid "B<--rebuild>, B<-R>"
+msgstr "B<--rebuild>, B<-R>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:240
+msgid ""
+"Increment the Debian release number for a no-change rebuild by appending a "
+"\"build1\" or by incrementing a rebuild version number."
+msgstr ""
+"erhöht die Debian-Veröffentlichungsnummer für ein Neubauen ohne Änderungen, "
+"indem ein »build1« angehängt oder die Versionsnummer eines neu gebauten "
+"Pakets erhöht wird."
+
+#. type: TP
+#: ../scripts/debchange.1:240
+#, no-wrap
+msgid "B<--security>, B<-s>"
+msgstr "B<--security>, B<-s>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:244
+msgid ""
+"Increment the Debian release number for a Debian Security Team non-"
+"maintainer upload, and add a B<Security Team upload> changelog comment."
+msgstr ""
+"erhöht die Debian-Veröffentlichungsnummer für ein Hochladen durch das Debian-"
+"Sicherheits-Team als NMU und fügt einen Changelog-Kommentar B<Security Team "
+"upload> hinzu."
+
+#. type: TP
+#: ../scripts/debchange.1:244
+#, no-wrap
+msgid "B<--team>"
+msgstr "B<--team>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:248
+msgid ""
+"Increment the Debian release number for a team upload, and add a B<Team "
+"upload> changelog comment."
+msgstr ""
+"erhöht die Debian-Veröffentlichungsnummer für ein Hochladen durch ein Team "
+"und fügt einen Changelog-Kommentar B<Team upload> hinzu."
+
+#. type: TP
+#: ../scripts/debchange.1:248
+#, no-wrap
+msgid "B<--upstream>, B<-U>"
+msgstr "B<--upstream>, B<-U>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:252
+msgid ""
+"Don't append B<distro-name1> to the version on a derived distribution. "
+"Increment the Debian version."
+msgstr ""
+"hängt nicht B<distro-name1> an die Version einer abgeleiteten Distribution "
+"an, erhöht die Debian-Version."
+
+#. type: TP
+#: ../scripts/debchange.1:252
+#, no-wrap
+msgid "B<--bpo>"
+msgstr "B<--bpo>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:256
+msgid ""
+"Increment the Debian release number for an upload to wheezy-backports, and "
+"add a backport upload changelog comment."
+msgstr ""
+"erhöht die Debian-Veröffentlichungsnummer für ein Hochladen nach wheezy-"
+"backports und fügt einen Changelog-Kommentar »backport upload« hinzu."
+
+#. type: TP
+#: ../scripts/debchange.1:256
+#, no-wrap
+msgid "B<--local>, B<-l>I<suffix>"
+msgstr "B<--local>, B<-l>I<Endung>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:259
+#, no-wrap
+msgid " Add a suffix to the Debian version number for a local build.\n"
+msgstr ""
+"fügt eine Endung an eine Debian-Versionsnummer für ein lokal gebautes Paket\n"
+"hinzu.\n"
+
+#. type: TP
+#: ../scripts/debchange.1:259
+#, no-wrap
+msgid "B<--force-bad-version>, B<-b>"
+msgstr "B<--force-bad-version>, B<-b>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:263
+msgid ""
+"Force a version number to be less than the current one (e.g., when "
+"backporting)."
+msgstr ""
+"erzwingt, dass eine Versionsnummer niedriger als die aktuelle ist (z.B. wenn "
+"rückportiert wird)."
+
+#. type: TP
+#: ../scripts/debchange.1:263
+#, no-wrap
+msgid "B<--allow-lower-version >I<pattern>"
+msgstr "B<--allow-lower-version >I<Muster>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:267
+msgid ""
+"Allow a version number to be less than the current one if the new version "
+"matches the specified pattern."
+msgstr ""
+"erlaubt, dass eine Versionsnummer niedriger als die aktuelle ist, falls die "
+"neue Versionsnummer zum angegebenen Muster passt."
+
+#. type: TP
+#: ../scripts/debchange.1:267
+#, no-wrap
+msgid "B<--force-distribution>"
+msgstr "B<--force-distribution>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:271
+msgid ""
+"Force the provided distribution to be used, even if it doesn't match the "
+"list of known distributions (e.g. for unofficial distributions)."
+msgstr ""
+"erzwingt, dass die bereitgestellte Distribution benutzt wird, sogar dann, "
+"wenn sie nicht zur Liste der bekannten Distributionen passt (z.B. für "
+"inoffizielle Distributionen)."
+
+#. type: TP
+#: ../scripts/debchange.1:271
+#, no-wrap
+msgid "B<--auto-nmu>"
+msgstr "B<--auto-nmu>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:275
+msgid ""
+"Attempt to automatically determine whether a change to the changelog "
+"represents a Non Maintainer Upload. This is the default."
+msgstr ""
+"versucht automatisch zu bestimmen, ob eine Änderung im Changelog für ein "
+"Hochladen durch jemanden, der kein Paketbetreuer ist (NMU), steht. Dies ist "
+"die Voreinstellung."
+
+#. type: TP
+#: ../scripts/debchange.1:275
+#, no-wrap
+msgid "B<--no-auto-nmu>"
+msgstr "B<--no-auto-nmu>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:279
+msgid ""
+"Disable automatic NMU detection. Equivalent to setting "
+"B<DEBCHANGE_AUTO_NMU> to I<no>."
+msgstr ""
+"deaktiviert automatische NMU-Erkennung; entspricht dem Setzen von "
+"B<DEBCHANGE_AUTO_NMU> auf I<no>."
+
+#. type: TP
+#: ../scripts/debchange.1:279
+#, no-wrap
+msgid "B<--fromdirname>, B<-d>"
+msgstr "B<--fromdirname>, B<-d>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:289
+msgid ""
+"This will take the upstream version number from the directory name, which "
+"should be of the form I<package>B<->I<version>. If the upstream version "
+"number has increased from the most recent changelog entry, then a new entry "
+"will be made with version number I<version>B<-1> (or I<version> if the "
+"package is Debian native), with the same epoch as the previous package "
+"version. If the upstream version number is the same, this option will "
+"behave in the same way as B<-i>."
+msgstr ""
+"Dies wird die Versionsnummer der Originalautoren vom Verzeichnisnamen "
+"nehmen, der in der Form I<Paket>B<->I<Version> vorliegen sollte. Falls die "
+"Versionsnummer der Originalautoren gegenüber dem neusten Changelog-Eintrag "
+"erhöht wurde, wird ein neuer Eintrag mit der Versionsnummer I<Version>B<-1> "
+"(oder I<Version>, falls es ein natives Debian-Paket ist) erstellt, mit der "
+"gleichen Epoche wie die vorhergehende Paketversion. Falls die Versionsnummer "
+"der Originalautoren dieselbe ist, wird sich diese Option genauso verhalten "
+"wie B<-i>."
+
+#. type: TP
+#: ../scripts/debchange.1:289
+#, no-wrap
+msgid "B<--closes>I< nnnnn>[B<,>I<nnnnn >...]"
+msgstr "B<--closes>I< nnnnn>[B<,>I<nnnnn >…]"
+
+#. type: Plain text
+#: ../scripts/debchange.1:295
+msgid ""
+"Add changelog entries to close the specified bug numbers. Also invoke the "
+"editor after adding these entries. Will generate warnings if the BTS cannot "
+"be contacted (and B<--noquery> has not been specified), or if there are "
+"problems with the bug report located."
+msgstr ""
+"fügt Changelog-Einträge zum Schließen der angegebenen Fehlernummern hinzu. "
+"Außerdem ruft es den Editor nach dem Hinzufügen dieser Einträge auf. Dies "
+"wird Warnungen erzeugen, falls die Fehlerdatenbank nicht kontaktiert werden "
+"kann (und B<--noquery> nicht angegeben wurde) oder falls es Probleme mit dem "
+"gefundenen Fehlerbericht gibt."
+
+#. type: TP
+#: ../scripts/debchange.1:295
+#, no-wrap
+msgid "B<-->[B<no>]B<query>"
+msgstr "B<-->[B<no>]B<query>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:298
+msgid "Should we attempt to query the BTS when generating closes entries?"
+msgstr ""
+"Soll versucht werden, die Fehlerdatenbank beim Generieren der Einträge zum "
+"Schließen abzufragen?"
+
+#. type: TP
+#: ../scripts/debchange.1:298
+#, no-wrap
+msgid "B<--preserve>, B<-p>"
+msgstr "B<--preserve>, B<-p>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:303
+msgid ""
+"Preserve the source tree directory name if the upstream version number (or "
+"the version number of a Debian native package) changes. See also the "
+"configuration variables section below."
+msgstr ""
+"erhält den Namen des Quellverzeichnisbaums, falls sich die Versionsnummer "
+"der Originalautoren (oder die Versionsnummer eines nativen Debian-Pakets) "
+"ändert. Siehe auch den Konfigurationsdateivariablenabschnitt weiter unten."
+
+#. type: TP
+#: ../scripts/debchange.1:303
+#, no-wrap
+msgid " B<--no-preserve>, B<--nopreserve>"
+msgstr " B<--no-preserve>, B<--nopreserve>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:306
+msgid "Do not preserve the source tree directory name (default)."
+msgstr "erhält den Namen des Quellverzeichnisbaums nicht (Vorgabe)."
+
+#. type: TP
+#: ../scripts/debchange.1:306
+#, no-wrap
+msgid "B<--vendor >I<vendor>"
+msgstr "B<--vendor >I<vendor>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:311
+msgid ""
+"Override the distributor ID over the default returned by dpkg-vendor. This "
+"name is used for heuristics applied to new package versions and for sanity "
+"checking of the target distribution."
+msgstr ""
+"überschreibt die durch Dpkg-vendor zurückgegebene Vorgabekennung mit der des "
+"Distributors. Dieser Name wird für Entscheidungsregeln benutzt, die auf neue "
+"Paketversionen und Plausibilitätsprüfungen der Zieldistribution angewendet "
+"werden."
+
+#. type: TP
+#: ../scripts/debchange.1:311
+#, no-wrap
+msgid "B<--distribution >I<dist>, B<-D >I<dist>"
+msgstr "B<--distribution >I<Distribution>, B<-D >I<Distribution>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:316
+msgid ""
+"Use the specified distribution in the changelog entry being edited, instead "
+"of using the previous changelog entry's distribution for new entries or the "
+"existing value for existing entries."
+msgstr ""
+"benutzt die angegebene Distribution in dem Changelog-Eintrag, der bearbeitet "
+"wird, anstatt die Distribution des vorherigen Changelog-Eintrags für neue "
+"Einträge oder den existierenden Wert für existierende Einträge zu verwenden."
+
+#. type: TP
+#: ../scripts/debchange.1:316
+#, no-wrap
+msgid "B<--urgency >I<urgency>, B<-u >I<urgency>"
+msgstr "B<--urgency >I<Dringlichkeit>, B<-u >I<Dringlichkeit>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:321
+msgid ""
+"Use the specified urgency in the changelog entry being edited, instead of "
+"using the default \"B<medium>\" for new entries or the existing value for "
+"existing entries."
+msgstr ""
+"benutzt die angegebene Dringlichkeit in dem Changelog-Eintrag, der "
+"bearbeitet wird, anstatt die Standarddringlichkeit »B<medium>« für neue "
+"Einträge oder den existierenden Wert für existierende Einträge zu verwenden."
+
+#. type: TP
+#: ../scripts/debchange.1:321
+#, no-wrap
+msgid "B<--changelog >I<file>, B<-c >I<file>"
+msgstr "B<--changelog >I<Datei>, B<-c >I<Datei>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:327
+msgid ""
+"This will edit the changelog I<file> instead of the standard I<debian/"
+"changelog>. This option overrides any B<CHANGELOG> environment variable "
+"setting. Also, no directory traversing or checking will be performed when "
+"this option is used."
+msgstr ""
+"Dies wird das Changelog I<Datei> anstelle des vorgegebenen I<debian/"
+"changelog> bearbeiten. Diese Option setzt jede Einstellung der "
+"Umgebungsvariable B<CHANGELOG> außer Kraft. Außerdem wird kein Durchlaufen "
+"von Verzeichnissen durchgeführt, wenn diese Option benutzt wird."
+
+#. type: TP
+#: ../scripts/debchange.1:327
+#, no-wrap
+msgid "B<--news> [I<newsfile>]"
+msgstr "B<--news> [I<News-Datei>]"
+
+#. type: Plain text
+#: ../scripts/debchange.1:333
+msgid ""
+"This will edit I<newsfile> (by default, I<debian/NEWS>) instead of the "
+"regular changelog. Directory searching will be performed. The changelog "
+"will be examined in order to determine the current package version."
+msgstr ""
+"Dies wird die I<News-Datei> (standardmäßig I<debian/NEWS>) statt des "
+"normalen Changelogs bearbeiten. Es wird eine Verzeichnissuche durchgeführt. "
+"Das Changelog wird untersucht, um die aktuelle Paketversion zu bestimmen."
+
+#. type: TP
+#: ../scripts/debchange.1:333
+#, no-wrap
+msgid "B<-->[B<no>]B<multimaint>"
+msgstr "B<-->[B<no>]B<multimaint>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:338
+msgid ""
+"Should we indicate that parts of a changelog entry have been made by "
+"different maintainers? Default is yes; see the discussion above and also the "
+"B<DEBCHANGE_MULTIMAINT> configuration file option below."
+msgstr ""
+"Soll angezeigt werden, ob Teile des Changelogs durch unterschiedliche "
+"Paketbetreuer erstellt wurden? Vorgabe ist »yes«; siehe die Erörterung "
+"weiter oben und außerdem die Konfigurationsdateioption "
+"B<DEBCHANGE_MULTIMAINT> weiter unten."
+
+#. type: TP
+#: ../scripts/debchange.1:338
+#, no-wrap
+msgid "B<-->[B<no>]B<multimaint-merge>"
+msgstr "B<-->[B<no>]B<multimaint-merge>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:343
+msgid ""
+"Should all changes made by the same author be merged into the same changelog "
+"section? Default is no; see the discussion above and also the "
+"B<DEBCHANGE_MULTIMAINT_MERGE> configuration file option below."
+msgstr ""
+"Sollen alle vom gleichen Autor vorgenommenen Änderungen im selben Abschnitt "
+"des Changelogs zusammengeführt werden? Vorgabe ist »no«; siehe die "
+"Erörterung weiter oben und außerdem die Konfigurationsdateioption "
+"B<DEBCHANGE_MULTIMAINT> weiter unten."
+
+#. type: TP
+#: ../scripts/debchange.1:343
+#, no-wrap
+msgid "B<--maintmaint>, B<-m>"
+msgstr "B<--maintmaint>, B<-m>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:351
+msgid ""
+"Do not modify the maintainer details previously listed in the changelog. "
+"This is useful particularly for sponsors wanting to automatically add a "
+"sponsorship message without disrupting the other changelog details. Note "
+"that there may be some interesting interactions if multi-maintainer mode is "
+"in use; you will probably wish to check the changelog manually before "
+"uploading it in such cases."
+msgstr ""
+"ändert nicht die Paketbetreuereinzelheiten, die vorher im Changelog "
+"aufgeführt wurden. Dies ist insbesondere für Sponsoren nützlich, die "
+"automatisch eine Nachricht bezüglich der Sponsorschaft hinzufügen möchten, "
+"ohne die anderen Changelog-Einzelheiten zu stören. Beachten Sie, dass es "
+"einige interessante Wechselwirkungen geben könnte, falls der Modus für "
+"mehrere Betreuer verwendet wird; Sie möchten in solchen Fällen "
+"wahrscheinlich das Changelog manuell prüfen, ehe Sie das Paket hochladen."
+
+#. type: TP
+#: ../scripts/debchange.1:351
+#, no-wrap
+msgid "B<--controlmaint>, B<-M>"
+msgstr "B<--controlmaint>, B<-M>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:359
+msgid ""
+"Use maintainer details from the I<debian/control> B<Maintainer> field rather "
+"than relevant environment variables (B<DEBFULLNAME>, B<DEBEMAIL>, etc.). "
+"This option might be useful to restore details of the main maintainer in the "
+"changelog trailer after a bogus edit (e.g. when B<-m> was intended but "
+"forgot) or when releasing a package in the name of the main maintainer (e.g. "
+"the team)."
+msgstr ""
+"benutzt Paketbetreuereinzelheiten aus dem I<debian/control>-Feld "
+"B<Maintainer> anstatt aus passenden Umgebungsvariablen (B<DEBFULLNAME>, "
+"B<DEBEMAIL>, etc.). Diese Option könnte nützlich sein, um Einzelheiten des "
+"Hauptpaketbetreuers im Vorspann des Changelogs nach einem falschen "
+"Bearbeiten wiederherzustellen (z.B. wenn B<-m> beabsichtigt war, aber "
+"vergessen wurde) oder wenn ein Paket im Namen des Hauptpaketbetreuers (z.B. "
+"dem Team) veröffentlicht wird."
+
+#. type: TP
+#: ../scripts/debchange.1:359
+#, no-wrap
+msgid "B<-->[B<no>]B<mainttrailer>, B<-t>"
+msgstr "B<-->[B<no>]B<mainttrailer>, B<-t>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:369
+msgid ""
+"If B<mainttrailer> is set, it will avoid modifying the existing changelog "
+"trailer line (i.e. the maintainer and date-stamp details), unless used with "
+"options that require the trailer to be modified (e.g. B<--create>, B<--"
+"release>, B<-i>, B<--qa>, etc.) This option differs from B<--maintmaint> in "
+"that it will use multi-maintainer mode if appropriate, with the exception of "
+"editing the trailer. See also the B<DEBCHANGE_MAINTTRAILER> configuration "
+"file option below."
+msgstr ""
+"Falls B<mainttrailer> gesetzt wurde, werden Änderungen an der existierenden "
+"Changelog-Nachspannzeile vermieden (d.h. die Betreuer- und "
+"Datumsstempeleinzelheiten), es sei denn, es wird mit Optionen verwendet, die "
+"ein Ändern des Nachspanns erfordern (z.B. B<--create>, B<--release>, B<-i>, "
+"B<--qa>, etc.) Diese Option unterscheidet sich von B<--maintmaint>, in dem "
+"es, falls zweckmäßig, den Mehrbetreuermodus mit Ausnahme der Bearbeitung des "
+"Nachspanns benutzt. Siehe auch die Konfigurationsdateioption "
+"B<DEBCHANGE_MULTIMAINT> weiter unten."
+
+#. type: Plain text
+#: ../scripts/debchange.1:373 ../scripts/debchange.1:377
+msgid ""
+"See the above section \"B<Directory name checking>\" for an explanation of "
+"this option."
+msgstr ""
+"Die Erklärung dieser Variablen finden Sie im vorhergehenden Abschnitt "
+"B<Prüfung von Verzeichnisnamen>."
+
+#. type: TP
+#: ../scripts/debchange.1:381
+#, no-wrap
+msgid "B<--release-heuristic> I<log>|I<changelog>"
+msgstr "B<--release-heuristic> I<Protokoll>|I<Changelog>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:386
+msgid ""
+"Controls how B<debchange> determines if a package has been released, when "
+"deciding whether to create a new changelog entry or append to an existing "
+"changelog entry."
+msgstr ""
+"steuert, wie B<debchange> bestimmt, ob ein Paket veröffentlicht wurde, wenn "
+"entschieden wird, ob ein neuer Changelog-Eintrag erstellt oder an einen "
+"existierenden Changelog-Eintrag angehängt wird."
+
+#. type: Plain text
+#: ../scripts/debchange.1:392 ../scripts/debclean.1:90
+#: ../scripts/debrelease.1:105 ../scripts/debsign.1:106
+#: ../scripts/dep3changelog.1:22 ../scripts/dscverify.1:42
+#: ../scripts/nmudiff.1:79 ../scripts/pts-subscribe.1:34
+#: ../scripts/uupdate.1:88 ../scripts/who-uploads.1:50
+msgid "Display version and copyright information and exit successfully."
+msgstr "zeigt Versions- und Copyright-Informationen an und endet erfolgreich."
+
+#. type: TP
+#: ../scripts/debchange.1:398
+#, no-wrap
+msgid "B<DEBCHANGE_PRESERVE>"
+msgstr "B<DEBCHANGE_PRESERVE>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:402
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--preserve> command "
+"line parameter being used."
+msgstr ""
+"Falls dieser Parameter auf I<yes> gesetzt ist, ist das dasselbe, als wenn "
+"der Befehlszeilenparameter B<--preserve> benutzt würde."
+
+#. type: TP
+#: ../scripts/debchange.1:402
+#, no-wrap
+msgid "B<DEBCHANGE_QUERY_BTS>"
+msgstr "B<DEBCHANGE_QUERY_BTS>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:406
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--noquery> command "
+"line parameter being used."
+msgstr ""
+"Falls dieser Parameter auf I<no> gesetzt ist, ist das dasselbe, als wenn der "
+"Befehlszeilenparameter B<--noquery> benutzt würde."
+
+#. type: Plain text
+#: ../scripts/debchange.1:413
+msgid ""
+"See the above section \"B<Directory name checking>\" for an explanation of "
+"these variables. Note that these are package-wide configuration variables, "
+"and will therefore affect all B<devscripts> scripts which check their value, "
+"as described in their respective manpages and in B<devscripts.conf>(5)."
+msgstr ""
+"Die Erklärung dieser Variablen finden Sie im vorhergehenden Abschnitt "
+"»B<Prüfung von Verzeichnisnamen>«. Beachten Sie, dass dies paketweite "
+"Konfigurationsvariablen sind und daher alle B<devscripts>-Skripte "
+"beeinflussen, die ihren Wert prüfen. Dies wird in ihren jeweiligen "
+"Handbuchseiten und in B<devscripts.conf>(5) beschrieben."
+
+#. type: TP
+#: ../scripts/debchange.1:413
+#, no-wrap
+msgid "B<DEBCHANGE_RELEASE_HEURISTIC>"
+msgstr "B<DEBCHANGE_RELEASE_HEURISTIC>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:418
+msgid ""
+"Controls how B<debchange> determines if a package has been released, when "
+"deciding whether to create a new changelog entry or append to an existing "
+"changelog entry. Can be either I<log> or I<changelog>."
+msgstr ""
+"steuert, wie B<debchange> bestimmt, ob ein Paket veröffentlicht wurde, wenn "
+"entschieden wird, ob ein neuer Changelog-Eintrag erstellt oder an einen "
+"existierenden Changelog-Eintrag angehängt wird. Dies kann entweder I<log> "
+"oder I<changelog> sein."
+
+#. type: TP
+#: ../scripts/debchange.1:418
+#, no-wrap
+msgid "B<DEBCHANGE_MULTIMAINT>"
+msgstr "B<DEBCHANGE_MULTIMAINT>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:423
+msgid ""
+"If set to I<no>, B<debchange> will not introduce multiple-maintainer "
+"distinctions when a different maintainer appends an entry to an existing "
+"changelog. See the discussion above. Default is I<yes>."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, wird B<debchange> keine Mehrbetreuer-"
+"Unterschscheidungen einbauen, wenn ein anderer Betreuer einen Eintrag an ein "
+"existierendes Changelog anhängt. Siehe die vorhergehende Erörterung. Vorgabe "
+"ist I<yes>."
+
+#. type: TP
+#: ../scripts/debchange.1:423
+#, no-wrap
+msgid "B<DEBCHANGE_MULTIMAINT_MERGE>"
+msgstr "B<DEBCHANGE_MULTIMAINT_MERGE>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:429
+msgid ""
+"If set to I<yes>, when adding changes in multiple-maintainer mode "
+"B<debchange> will check whether previous changes by the current maintainer "
+"exist and add the new changes to the existing block rather than creating a "
+"new block. Default is I<no>."
+msgstr ""
+"Falls diese Variable den Wert I<yes> hat, wird B<debchange> im "
+"Mehrbetreuermodus prüfen, ob es bereits Änderungen durch den aktuellen "
+"Paketbetreuer gibt. Es fügt die neuen Änderungen dem existierenden Block "
+"hinzu, anstatt einen neuen Block zu erstellen. Voreinstellung ist I<no>."
+
+#. type: TP
+#: ../scripts/debchange.1:429
+#, no-wrap
+msgid "B<DEBCHANGE_MAINTTRAILER>"
+msgstr "B<DEBCHANGE_MAINTTRAILER>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:433
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--nomainttrailer> "
+"command line parameter being used."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, dann entspricht das der Verwendung des "
+"Befehlszeilenparameters B<--nomainttrailer>."
+
+#. type: TP
+#: ../scripts/debchange.1:433
+#, no-wrap
+msgid "B<DEBCHANGE_TZ>"
+msgstr "B<DEBCHANGE_TZ>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:437
+msgid ""
+"Use this timezone for changelog entries. Default is the user/system "
+"timezone as shown by `B<date -R>` and affected by the environment variable "
+"B<TZ>."
+msgstr ""
+"benutzt diese Zeitzone für Changelog-Einträge. Vorgabe ist die Zeitzone von "
+"user/system, wie sie von »B<date -R>« angezeigt und durch die "
+"Umgebungsvariable B<TZ> beeinflusst wird."
+
+#. type: TP
+#: ../scripts/debchange.1:437
+#, no-wrap
+msgid "B<DEBCHANGE_LOWER_VERSION_PATTERN>"
+msgstr "B<DEBCHANGE_LOWER_VERSION_PATTERN>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:441
+msgid ""
+"If this is set, then it is the same as the B<--allow-lower-version> command "
+"line parameter being used."
+msgstr ""
+"Falls dies gesetzt ist, dann entspricht das der Verwendung des "
+"Befehlszeilenparameters B<--allow-lower-version>."
+
+#. type: TP
+#: ../scripts/debchange.1:441
+#, no-wrap
+msgid "B<DEBCHANGE_AUTO_NMU>"
+msgstr "B<DEBCHANGE_AUTO_NMU>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:447
+msgid ""
+"If this is set to I<no> then B<debchange> will not attempt to automatically "
+"determine whether the current changelog stanza represents an NMU. The "
+"default is I<yes>. See the discussion of the B<--nmu> option above."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, wird B<debchange> nicht versuchen, "
+"automatisch zu bestimmen, ob der aktuelle Changelog-Abschnitt einen NMU "
+"darstellt. Die Vorgabe ist I<yes>. Siehe die vorhergehende Erörterung der "
+"Option B<--nmu>."
+
+#. type: TP
+#: ../scripts/debchange.1:447
+#, no-wrap
+msgid "B<DEBCHANGE_FORCE_SAVE_ON_RELEASE>"
+msgstr "B<DEBCHANGE_FORCE_SAVE_ON_RELEASE>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:451
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-force-save-on-"
+"release> command line parameter being used."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, dann entspricht das der Verwendung des "
+"Befehlszeilenparameters B<--no-force-save-on-release>."
+
+#. type: TP
+#: ../scripts/debchange.1:451
+#, no-wrap
+msgid "B<DEBCHANGE_VENDOR>"
+msgstr "B<DEBCHANGE_VENDOR>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:455
+msgid ""
+"Use this vendor instead of the default (dpkg-vendor output). See B<--"
+"vendor> for details."
+msgstr ""
+"benutzt diesen Anbieter statt der Vorgabe (Ausgabe von Dpkg-vendor). "
+"Einzelheiten finden Sie unter B<--vendor>."
+
+#. type: =head1
+#: ../scripts/debchange.1:455 ../scripts/dep3changelog.1:22
+#: ../scripts/devscripts.1:16 ../scripts/devscripts.1:20
+#: ../scripts/mass-bug.pl:127
+#, no-wrap
+msgid "ENVIRONMENT"
+msgstr "UMGEBUNGSVARIABLEN"
+
+#. type: TP
+#: ../scripts/debchange.1:456 ../scripts/dep3changelog.1:23
+#, no-wrap
+msgid "B<DEBEMAIL>, B<EMAIL>, B<DEBFULLNAME>, B<NAME>"
+msgstr "B<DEBEMAIL>, B<EMAIL>, B<DEBFULLNAME>, B<NAME>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:459 ../scripts/dep3changelog.1:26
+msgid "See the above description of the use of these environment variables."
+msgstr ""
+"Siehe die vorhergehende Beschreibung über die Benutzung dieser "
+"Umgebungsvariablen."
+
+#. type: TP
+#: ../scripts/debchange.1:459
+#, no-wrap
+msgid "B<CHANGELOG>"
+msgstr "B<CHANGELOG>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:465
+msgid ""
+"This variable specifies the changelog to edit in place of I<debian/"
+"changelog>. No directory traversal or checking is performed when this "
+"variable is set. This variable is overridden by the B<--changelog> command-"
+"line setting."
+msgstr ""
+"Diese Variable gibt an, welches Changelog anstelle von I<debian/changelog> "
+"bearbeitet wird. Es wird kein Verzeichnisdurchlauf und keine "
+"Verzeichnisüberprüfung durchgeführt, wenn diese Variable gesetzt ist. Diese "
+"Variable wird durch die Befehlszeileneinstellung B<--changelog> außer Kraft "
+"gesetzt."
+
+#. type: TP
+#: ../scripts/debchange.1:465
+#, no-wrap
+msgid "B<VISUAL>, B<EDITOR>"
+msgstr "B<VISUAL>, B<EDITOR>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:469
+msgid ""
+"These environment variables (in this order) determine the editor used by "
+"B<sensible-editor>."
+msgstr ""
+"Diese Umgebungsvariablen legen (in dieser Reihenfolge) fest, welcher Editor "
+"durch B<sensible-editor> benutzt wird."
+
+#. type: Plain text
+#: ../scripts/debchange.1:475
+msgid ""
+"B<debc>(1), B<debclean>(1), B<dput>(1), B<dupload>(1), B<devscripts.conf>(5)"
+msgstr ""
+"B<debc>(1), B<debclean>(1), B<dput>(1), B<dupload>(1), B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/debchange.1:478
+msgid ""
+"The original author was Christoph Lameter E<lt>clameter@debian.orgE<gt>. "
+"Many substantial changes and improvements were made by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Der ursprüngliche Autor war Christoph Lameter E<lt>clameter@debian.orgE<gt>. "
+"Viele bedeutende Änderungen und Verbesserungen wurden von Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> beigetragen."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:26
+msgid "debcheckout - checkout the development repository of a Debian package"
+msgstr "debcheckout - checkt das Entwicklerdepot eines Debian-Pakets aus"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:32
+msgid "B<debcheckout> [I<OPTIONS>] I<PACKAGE> [I<DESTDIR>]"
+msgstr "B<debcheckout> [I<OPTIONEN>] I<PAKET> [I<ZIELVERZEICHNIS>]"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:34
+msgid "B<debcheckout> [I<OPTIONS>] I<REPOSITORY_URL> [I<DESTDIR>]"
+msgstr "B<debcheckout> [I<OPTIONEN>] I<DEPOT_URL> [I<ZIELVERZEICHNIS>]"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:36
+msgid "B<debcheckout> B<--help>"
+msgstr "B<debcheckout> B<--help>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:42
+msgid ""
+"B<debcheckout> retrieves the information about the Version Control System "
+"used to maintain a given Debian package (the I<PACKAGE> argument), and then "
+"checks out the latest (potentially unreleased) version of the package from "
+"its repository. By default the repository is checked out to the I<PACKAGE> "
+"directory; this can be overridden by providing the I<DESTDIR> argument."
+msgstr ""
+"B<debcheckout> fragt die Informationen über das Versionskontrollsystem ab, "
+"das zur Verwaltung eines angegebenen Debian-Pakets verwendet wird (das "
+"Argument I<PAKET>), und checkt dann die neuste (möglicherweise "
+"unveröffentlichte) Version des Pakets aus dem Depot aus. Standardmäßig wird "
+"das Depot in das I<PAKET>verzeichnis ausgecheckt; dies kann durch Angabe des "
+"Arguments I<ZIELVERZEICHNIS> außer Kraft gesetzt werden."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:48
+msgid ""
+"The information about where the repository is available is expected to be "
+"found in B<Vcs-*> fields available in the source package record. For "
+"example, the B<vim> package exposes such information with a field like "
+"S<B<Vcs-Hg: http://hg.debian.org/hg/pkg-vim/vim>>, you can see it by "
+"grepping through B<apt-cache showsrc vim>."
+msgstr ""
+"Es wird erwartet, dass die Informationen, wo das Depot verfügbar ist, in den "
+"B<Vcs-*>-Feldern im Quellpaketdatensatz stehen. Das Paket B<vim> stellt zum "
+"Beispiel solche Informationen mit einem Feld wie S<B<Vcs-Hg: http://hg."
+"debian.org/hg/pkg-vim/vim>> dar. Sie können es mit Grep in der Ausgabe von "
+"B<apt-cache showsrc vim> sehen."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:54
+msgid ""
+"If more than one source package record containing B<Vcs-*> fields is "
+"available, B<debcheckout> will select the record with the highest version "
+"number. Alternatively, a particular version may be selected from those "
+"available by specifying the package name as I<PACKAGE>=I<VERSION>."
+msgstr ""
+"Falls mehr als ein Quellpaketdatensatz verfügbar ist, der B<Vcs-*>-Felder "
+"enthält, wird B<debcheckout> den Datensatz mit der höchsten Versionsnummer "
+"auswählen. Alternativ kann eine bestimmte Version aus den verfügbaren "
+"Versionen ausgewählt werden, indem der Paketname als I<PAKET>=I<VERSION> "
+"angegeben wird."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:59
+msgid ""
+"If you already know the URL of a given repository you can invoke "
+"B<debcheckout> directly on it, but you will probably need to pass the "
+"appropriate B<-t> flag. That is, some heuristics are in use to guess the "
+"repository type from the URL; if they fail, you might want to override the "
+"guessed type using B<-t>."
+msgstr ""
+"Falls Sie bereits die URL eines angegebenen Depots kennen, können Sie "
+"B<debcheckout> direkt damit aufrufen, aber Sie werden wahrscheinlich den "
+"passenden B<-t>-Schalter übergeben müssen. Das heißt, es werden einige "
+"Entscheidungsregeln verwendet, um den Depottyp aus der URL zu ermitteln; "
+"falls sie fehlschlagen, möchten Sie möglicherweise den geratenen Typ mittels "
+"B<-t> außer Kraft setzen."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:65
+msgid ""
+"The currently supported version control systems are: Arch (arch), Bazaar "
+"(bzr), CVS (cvs), Darcs (darcs), Git (git), Mercurial (hg) and Subversion "
+"(svn)."
+msgstr ""
+"Die derzeit unterstützten Versionskontrollsysteme sind: Arch (arch), Bazaar "
+"(bzr), CVS (cvs), Darcs (darcs), Git (git), Mercurial (hg) und Subversion "
+"(svn)."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:70
+msgid "B<GENERAL OPTIONS>"
+msgstr "B<ALLGEMEINE OPTIONEN>"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:74
+msgid "B<-a>, B<--auth>"
+msgstr "B<-a>, B<--auth>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:76
+msgid ""
+"Work in authenticated mode; this means that for known repositories (mainly "
+"those hosted on S<I<https://alioth.debian.org>>) URL rewriting is attempted "
+"before checking out, to ensure that the repository can be committed to. For "
+"example, for Subversion repositories hosted on alioth this means that S<I<svn"
+"+ssh://svn.debian.org/...>> will be used instead of S<I<svn://svn.debian."
+"org/...>>."
+msgstr ""
+"arbeitet im authentifizierten Modus; dies bedeutet, dass für bekannte URLS "
+"(hauptsächlich die auf S<I<https://alioth.debian.org>> bereitgestellten) vor "
+"dem Auschecken versucht wird, die URL umzuschreiben, um sicherzustellen, "
+"dass in das Depot geschrieben werden kann. Für Subversion-Depots, die auf "
+"Alioth bereitgestellt sind, bedeutet das beispielsweise, dass S<I<svn+ssh://"
+"svn.debian.org/…>> anstelle von S<I<svn://svn.debian.org/…>> benutzt wird."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:83
+msgid "B<-d>, B<--details>"
+msgstr "B<-d>, B<--details>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:85
+msgid ""
+"Only print a list of detailed information about the package repository, "
+"without checking it out; the output format is a list of fields, each field "
+"being a pair of TAB-separated field name and field value. The actual fields "
+"depend on the repository type. This action might require a network "
+"connection to the remote repository."
+msgstr ""
+"gibt nur eine detaillierte Information über das Paketdepot aus, ohne sie "
+"auszuchecken; das Ausgabeformat ist eine Liste von Feldern, von denen jedes "
+"Feld ein Paar von durch Tabulator getrenntem Feldnamen und Feldwert ist. Die "
+"tatsächlichen Felder hängen vom Depottyp ab. Diese Aktion könnte eine "
+"Netzwerkverbindung zu einem fernen Depot erfordern."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:91
+msgid "Also see B<-p>. This option and B<-p> are mutually exclusive."
+msgstr "Siehe auch B<-p>. Diese Option und B<-p> sind wechselseitig exklusiv."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:95
+msgid "Print a detailed help message and exit."
+msgstr "gibt eine detaillierte Hilfenachricht aus und wird beendet."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:97
+msgid "B<-p>, B<--print>"
+msgstr "B<-p>, B<--print>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:99
+msgid ""
+"Only print a summary about package repository information, without checking "
+"it out; the output format is TAB-separated with two fields: repository type, "
+"repository URL. This action works offline, it only uses \"static\" "
+"information as known by APT's cache."
+msgstr ""
+"gibt nur eine Zusammenfassung über die Paketdepotinformation aus, ohne sie "
+"auszuchecken; das Ausgabeformat sind zwei durch Tabulator getrennte Felder: "
+"Depottyp und Depot-URL. Diese Aktion funktioniert offline, sie benutzt "
+"»statische« Informationen, wie sie durch APTs Zwischenspeicher bekannt sind."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:104
+msgid "Also see B<-d>. This option and B<-d> are mutually exclusive."
+msgstr "Siehe auch B<-d>. Diese Option und B<-d> sind wechselseitig exklusiv."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:106
+msgid "B<-P> I<package>, B<--package> I<package>"
+msgstr "B<-P> I<Paket>, B<--package> I<Paket>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:108
+msgid ""
+"When checking out a repository URL, instead of trying to guess the package "
+"name from the URL, use this package name."
+msgstr ""
+"Wenn ein Depot von einer URL heruntergeladen wird, anstatt zu versuchen, den "
+"Paketnamen anhand des Namens der URL zu erraten, wird dieser Paketname "
+"benutzt."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:111
+msgid "B<-t> I<TYPE>, B<--type> I<TYPE>"
+msgstr "B<-t> I<TYP>, B<--type> I<TYP>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:113
+msgid ""
+"Override the repository type (which defaults to some heuristics based on the "
+"URL or, in case of heuristic failure, the fallback \"svn\"); should be one "
+"of the currently supported repository types."
+msgstr ""
+"setzt den Depottyp außer Kraft (der einige Entscheidungsregeln, basierend "
+"auf der URL oder im Fall dass diese Entscheidungsregeln nicht zutreffen, des "
+"Rückfallwerts »svn«, als Standard übernimmt); sollte einer der derzeit "
+"unterstützten Depottypen sein"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:117
+msgid "B<-u> I<USERNAME>, B<--user> I<USERNAME>"
+msgstr "B<-u> I<BENUTZERNAME>, B<--user> I<BENUTZERNAME>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:119
+msgid ""
+"Specify the login name to be used in authenticated mode (see B<-a>). This "
+"option implies B<-a>: you don't need to specify both."
+msgstr ""
+"gibt den Anmeldenamen an, der im authentifizierten Modus (siehe B<-a>) "
+"benutzt werden soll. Diese Option impliziert B<-a>: Sie müssen nicht beides "
+"angeben."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:122
+msgid "B<-f>, B<--file>"
+msgstr "B<-f>, B<--file>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:124
+msgid ""
+"Specify that the named file should be extracted from the repository and "
+"placed in the destination directory. May be used more than once to extract "
+"multiple files."
+msgstr ""
+"gibt an, dass die genannte Datei aus dem Depot extrahiert und im "
+"Zielverzeichnis abgelegt werden soll; kann mehrfach benutzt werden, um "
+"mehrere Dateien zu extrahieren."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:128
+msgid "B<--source=never>|B<auto>|B<download-only>|B<always>"
+msgstr "B<--source=never>|B<auto>|B<download-only>|B<always>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:130
+msgid ""
+"Some packages only place the F<debian> directory in version control. "
+"B<debcheckout> can retrieve the remaining parts of the source using B<apt-"
+"get source> and move the files into the checkout."
+msgstr ""
+"Einige Pakete legen nur das Verzeichnis F<debian> in die Versionskontrolle "
+"ab. B<debcheckout> kann die verbleibenden Teile der Quelle mittels B<apt-get "
+"source> abrufen und die Dateien in die ausgcheckte Version verschieben."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:136
+msgid "B<never>"
+msgstr "B<never>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:138
+msgid "Only use the repository."
+msgstr "verwendet nur das Depot."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:140
+msgid "B<auto> (default)"
+msgstr "B<auto> (Vorgabe)"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:142
+msgid ""
+"If the repository only contains the F<debian> directory, retrieve the source "
+"package, unpack it, and also place the F<.orig.tar.gz> file into the current "
+"directory. Else, do nothing."
+msgstr ""
+"ruft, falls das Depot nur das Verzeichnis F<debian> enthält, das Quellpaket "
+"ab, entpackt es und platziert außerdem die F<.orig.tar.gz>-Datei in das "
+"aktuelle Verzeichnis. Tut ansonsten nichts."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:146
+msgid "B<download-only>"
+msgstr "B<download-only>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:148
+msgid "Always retrieve the I<.orig.tar.gz> file, but do not unpack it."
+msgstr "ruft immer die F<.orig.tar.gz>-Datei ab, entpackt sie aber nicht."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:150
+msgid "B<always>"
+msgstr "B<always>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:152
+msgid ""
+"Always retrieve the I<.orig.tar.gz> file, and if the repository only "
+"contains the F<debian> directory, unpack it."
+msgstr ""
+"ruft immer die F<.orig.tar.gz>-Datei ab und entpackt sie, falls das Depot "
+"nur das Verzeichnis F<debian> enthält."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:159
+msgid "B<VCS-SPECIFIC OPTIONS>"
+msgstr "B<VCS-SPEZIFISCHE OPTIONEN>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:161
+msgid "I<GIT-SPECIFIC OPTIONS>"
+msgstr "I<GIT-SPEZIFISCHE OPTIONEN>"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:165
+msgid "B<--git-track> I<BRANCHES>"
+msgstr "B<--git-track> I<ZWEIGE>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:167
+msgid ""
+"Specify a list of remote branches which will be set up for tracking (as in "
+"S<B<git branch --track>>, see B<git-branch>(1)) after the remote Git "
+"repository has been cloned. The list should be given as a space-separated "
+"list of branch names."
+msgstr ""
+"gibt eine Liste von fernen Zweigen an, die für die Verfolgung (wie in "
+"S<B<git branch --track>>, siehe B<git-branch>(1)) eingerichtet werden, "
+"nachdem das ferne Git-Depot geklont wurde. Die Liste sollte als "
+"leerzeichengetrennte Liste der Zweignamen angegeben werden."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:172
+msgid ""
+"As a shorthand, the string \"B<*>\" can be given to require tracking of all "
+"remote branches."
+msgstr ""
+"Als Abkürzung kann die Zeichenkette »B<*>« angegeben werden, damit die "
+"Verfolgung aller fernen Zweige verlangt wird."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:179 ../scripts/rmadison.pl:295
+msgid ""
+"The two configuration files F</etc/devscripts.conf> and F<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file settings. "
+"Environment variable settings are ignored for this purpose. The currently "
+"recognised variables are:"
+msgstr ""
+"Die beiden Konfigurationsdateien F</etc/devscripts.conf> und F<~/."
+"devscripts> werden in dieser Reihenfolge von einer Shell eingelesen, um "
+"Konfigurationsvariablen zu setzen. Befehlszeilenoptionen können benutzt "
+"werden, um Einstellungen in Konfigurationsdateien außer Kraft zu setzen. "
+"Umgebungsvariablen werden zu diesem Zweck ignoriert. Die derzeit bekannten "
+"Variablen sind:"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:187
+msgid "B<DEBCHECKOUT_AUTH_URLS>"
+msgstr "B<DEBCHECKOUT_AUTH_URLS>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:189
+msgid ""
+"This variable should be a space separated list of Perl regular expressions "
+"and replacement texts, which must come in pairs: I<REGEXP> I<TEXT> I<REGEXP> "
+"I<TEXT> ... and so on. Each pair denotes a substitution which is applied to "
+"repository URLs if other built-in means of building URLs for authenticated "
+"mode (see B<-a>) have failed."
+msgstr ""
+"Diese Variable sollte eine leerzeichengetrennte Liste regulärer Perl-"
+"Ausdrücke und Ersetzungstexte sein, die paarweise vorkommen müssen: "
+"I<REGEXP> I<TEXT> I<REGEXP> I<TEXT> … und so fort. Jedes Paar bezeichnet "
+"eine Ersetzung, die auf Depot-URLs angewandt wird, falls andere integrierte "
+"Mittel von Bau-URLs für den authentifizierten Modus (siehe B<-a>) "
+"fehlgeschlagen sind."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:195
+msgid ""
+"References to matching substrings in the replacement texts are allowed as "
+"usual in Perl by the means of B<$1>, B<$2>, ... and so on."
+msgstr ""
+"Bezüge auf passende Teilzeichenketten in Ersetzungstexten sind, wie in Perl "
+"üblich, durch die Mittel von B<$1>, B<$2>, … und so weiter erlaubt."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:198
+msgid ""
+"This setting can be used to enable authenticated mode for most repositories "
+"out there. Note that the Debian repositories on S<alioth.debian.org> (S<"
+"$vcs.debian.org>) are implicitly defined."
+msgstr ""
+"Diese Einstellung kann benutzt werden, um den authentifizierten Modus für "
+"die meisten Depots dort draußen einzuschalten. Beachten Sie, dass Debian-"
+"Depots auf S<alioth.debian.org> (S<$vcs.debian.org>) implizit definiert "
+"werden."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:202
+msgid "Here is a sample snippet suitable for the configuration files:"
+msgstr ""
+"Hier ist ein für Konfigurationsdateien geeigneter Beispielcodeschnipsel:"
+
+#. type: verbatim
+#: ../scripts/debcheckout.pl:204
+#, no-wrap
+msgid ""
+" DEBCHECKOUT_AUTH_URLS='\n"
+" ^\\w+://(svn\\.example\\.com)/(.*) svn+ssh://$1/srv/svn/$2\n"
+" ^\\w+://(git\\.example\\.com)/(.*) git+ssh://$1/home/git/$2\n"
+" '\n"
+"\n"
+msgstr ""
+" DEBCHECKOUT_AUTH_URLS='\n"
+" ^\\w+://(svn\\.example\\.com)/(.*) svn+ssh://$1/srv/svn/$2\n"
+" ^\\w+://(git\\.example\\.com)/(.*) git+ssh://$1/home/git/$2\n"
+" '\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:209
+msgid ""
+"Note that whitespace is not allowed in either regexps or replacement texts. "
+"Also, given that configuration files are sourced by a shell, you probably "
+"want to use single quotes around the value of this variable."
+msgstr ""
+"Beachten Sie, dass weder in Regexps noch in Ersetzungstext Leerräume erlaubt "
+"sind. Da Konfigurationsdateien von einer Shell eingelesen werden, ist es "
+"wahrscheinlich wünschenswert, einzelne Anführungszeichen um den Wert dieser "
+"Variable zu verwenden."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:214
+msgid "B<DEBCHECKOUT_SOURCE>"
+msgstr "B<DEBCHECKOUT_SOURCE>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:216
+msgid ""
+"This variable determines under what scenarios the associated orig.tar.gz for "
+"a package will be downloaded. See the B<--source> option for a description "
+"of the values."
+msgstr ""
+"Diese Variable bestimmt, in welchen Szenarien die zugehörige orig.tar.gz für "
+"ein Paket heruntergeladen wird. Eine Beschreibung der Werte finden Sie unter "
+"der Option B<--source>."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:220
+msgid "B<DEBCHECKOUT_USER>"
+msgstr "B<DEBCHECKOUT_USER>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:222
+msgid ""
+"This variable sets the username for authenticated mode. It can be overridden "
+"with the B<--user> option. Setting this variable does not imply the use of "
+"authenticated mode, it still has to be activated with B<--auth>."
+msgstr ""
+"Diese Variable setzt den Benutzernamen für den authentifizierten Modus. Sie "
+"kann mit der Option B<--user> außer Kraft gesetzt werden. Das Setzen dieser "
+"Variable bedeutet nicht, dass der authentifizierte Modus verwendet wird, er "
+"muss nach wie vor mit B<--auth> aktiviert werden."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:230
+msgid ""
+"B<apt-cache>(8), Section 6.2.5 of the Debian Developer's Reference (for more "
+"information about B<Vcs-*> fields): S<I<https://www.debian.org/doc/"
+"developers-reference/best-pkging-practices.html#bpp-vcs>>."
+msgstr ""
+"B<apt-cache>(8), Abschnitt 6.2.5 der Debian Entwickler-Referenz (weitere "
+"Informationen über B<Vcs-*>-Felder finden Sie unter S<I<https://www.debian."
+"org/doc/manuals/developers-reference/best-pkging-practices.de.html#bpp-vcs>>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:235
+msgid ""
+"B<debcheckout> and this manpage have been written by Stefano Zacchiroli "
+"<I<zack@debian.org>>."
+msgstr ""
+"B<debcheckout> und diese Handbuchseite wurden von Stefano Zacchiroli "
+"<I<zack@debian.org>> geschrieben."
+
+#. type: TH
+#: ../scripts/debclean.1:1
+#, no-wrap
+msgid "DEBCLEAN"
+msgstr "DEBCLEAN"
+
+#. type: Plain text
+#: ../scripts/debclean.1:4
+msgid "debclean - clean up a sourcecode tree"
+msgstr "debclean - bereinigt einen Quellcodeverzeichnisbaum"
+
+#. type: Plain text
+#: ../scripts/debclean.1:6
+msgid "B<debclean> [I<options>]"
+msgstr "B<debclean> [I<Optionen>]"
+
+#. type: Plain text
+#: ../scripts/debclean.1:13
+msgid ""
+"B<debclean> walks through the directory tree starting at the directory tree "
+"in which it was invoked, and executes I<debian/rules clean> for each Debian "
+"source directory encountered. These directories are recognised by "
+"containing a debian/changelog file for a package whose name matches that of "
+"the directory. Name matching is described below."
+msgstr ""
+"B<debclean> durchläuft den Verzeichnisbaum, beginnend mit dem "
+"Verzeichnisbaum, aus dem es aufgerufen wurde und führt I<debian/rules clean> "
+"für jedes gefundene Debian-Quellverzeichnis aus. Diese Verzeichnisse werden "
+"daran erkannt, dass sie eine debian/changelog-Datei für ein Paket enthalten, "
+"dessen Name zu dem des Verzeichnisses passt. Wann Namen passen, wird im "
+"Folgenden beschrieben."
+
+#. type: Plain text
+#: ../scripts/debclean.1:22
+msgid ""
+"Also, if the B<--cleandebs> option is given, then in every directory "
+"containing a Debian source tree, all files named *.deb, *.changes and *."
+"build are removed. The .dsc, .diff.gz and the (.orig).tar.gz files are not "
+"touched so that the release can be reconstructed if necessary, and the ."
+"upload files are left so that B<debchange> functions correctly. The B<--"
+"nocleandebs> option prevents this extra cleaning behaviour and the B<--"
+"cleandebs> option forces it. The default is not to clean these files."
+msgstr ""
+"Falls die Option B<--cleandebs> angegeben ist, werden außerdem alle Dateien "
+"mit Namen *.deb, *.changes und *.build in jedem Verzeichnis, das einen "
+"Debian-Quellverzeichnisbaum enthält, entfernt. Die .dsc-, .diff.gz- und die "
+"(.orig).tar.gz-Dateien werden nicht angefasst, so dass die Veröffentlichung, "
+"falls nötig, rekonstruiert werden kann und die .upload-Dateien behalten "
+"werden, so dass die B<debchange>-Funktionen korrekt funktionieren. Die "
+"Option B<--nocleandebs> verhindert dieses zusätzliche Bereinigungsverhalten "
+"und die Option B<--cleandebs> erzwingt sie. Standardmäßig werden diese "
+"Dateien nicht bereinigt."
+
+#. type: Plain text
+#: ../scripts/debclean.1:24
+msgid "B<debclean> uses B<debuild>(1) to clean the source tree."
+msgstr ""
+"B<debclean> verwendet B<debuild>(1), um den Quellverzeichnisbaum zu "
+"bereinigen."
+
+#. type: Plain text
+#: ../scripts/debclean.1:35
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debclean> will walk through the directory tree searching for I<debian/"
+"changelog> files. As a safeguard against stray files causing potential "
+"problems, it will examine the name of the parent directory once it finds a "
+"I<debian/changelog> file, and check that the directory name corresponds to "
+"the package name. Precisely how it does this is controlled by two "
+"configuration file variables B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and their corresponding command-line "
+"options B<--check-dirname-level> and B<--check-dirname-regex>."
+msgstr ""
+"Ebenso wie mehrere andere Skripte im Paket B<devscripts> wird B<debclean> "
+"den Verzeichnisbaum durchlaufen, um I<debian/changelog>-Dateien zu suchen. "
+"Als eine Schutzmaßnahme gegen verirrte Dateien, die potenziell Probleme "
+"bereiten, wird es den Namen des übergeordneten Verzeichnisses untersuchen, "
+"sobald es eine I<debian/changelog>-Datei findet und prüfen, ob der "
+"Verzeichnisname dem Paketnamen entspricht. Wie dies genau geschieht, wird "
+"durch die beiden Konfigurationsdateivariablen "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> und B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> "
+"sowie ihren entsprechenden Befehlszeilenoptionen B<--check-dirname-level> "
+"und B<--check-dirname-regex> geregelt."
+
+#. type: TP
+#: ../scripts/debclean.1:61
+#, no-wrap
+msgid "B<--cleandebs>"
+msgstr "B<--cleandebs>"
+
+#. type: Plain text
+#: ../scripts/debclean.1:65
+msgid ""
+"Also remove all .deb, .changes and .build files from the parent directory."
+msgstr ""
+"entfernt außerdem alle .deb-, .changes- und .build-Dateien aus dem "
+"übergeordneten Verzeichnis."
+
+#. type: TP
+#: ../scripts/debclean.1:65
+#, no-wrap
+msgid "B<--nocleandebs>"
+msgstr "B<--nocleandebs>"
+
+#. type: Plain text
+#: ../scripts/debclean.1:69
+msgid ""
+"Do not remove the .deb, .changes and .build files from the parent directory; "
+"this is the default behaviour."
+msgstr ""
+"entfernt die .deb-, .changes- und .build-Dateien aus dem übergeordneten "
+"Verzeichnis nicht; dies ist das Standardverhalten."
+
+#. type: TP
+#: ../scripts/debclean.1:81 ../scripts/debuild.1:284
+#, no-wrap
+msgid "B<-d>"
+msgstr "B<-d>"
+
+#. type: Plain text
+#: ../scripts/debclean.1:84
+msgid "Do not run dpkg-checkbuilddeps to check build dependencies."
+msgstr ""
+"führt dpkg-checkbuilddeps nicht aus, um die Bauabhängigkeiten zu prüfen."
+
+#. type: TP
+#: ../scripts/debclean.1:96
+#, no-wrap
+msgid "B<DEBCLEAN_CLEANDEBS>"
+msgstr "B<DEBCLEAN_CLEANDEBS>"
+
+#. type: Plain text
+#: ../scripts/debclean.1:100
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--cleandebs> command "
+"line parameter being used."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--cleandebs> benutzt würde."
+
+#. type: Plain text
+#: ../scripts/debclean.1:110
+msgid "B<debuild>(1), B<devscripts.conf>(5)"
+msgstr "B<debuild>(1) und B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/debclean.1:112
+msgid ""
+"Christoph Lameter E<lt>clameter@debian.orgE<gt>; modifications by Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Christoph Lameter E<lt>clameter@debian.orgE<gt>; Änderungen durch Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:5
+msgid "debcommit - commit changes to a package"
+msgstr "debcommit - übergibt Änderungen an einem Paket"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:9
+msgid "B<debcommit> [I<options>] [B<--all> | I<files to commit>]"
+msgstr "B<debcommit> [I<Optionen>] [B<--all> | I<zu übergebende Dateien>]"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:13
+msgid ""
+"B<debcommit> generates a commit message based on new text in B<debian/"
+"changelog>, and commits the change to a package's repository. It must be run "
+"in a working copy for the package. Supported version control systems are: "
+"B<cvs>, B<git>, B<hg> (mercurial), B<svk>, B<svn> (Subversion), B<baz>, "
+"B<bzr>, B<tla> (arch), B<darcs>."
+msgstr ""
+"B<debcommit> erzeugt, basierend auf neuem Text in B<debian/changelog>, eine "
+"Commit-Nachricht und übergibt die Änderungen an das Depot eines Pakets. Es "
+"muss in einer Arbeitskopie für das Paket ausgeführt werden. Folgende "
+"Versionskontrollsysteme werden unterstützt: B<cvs>, B<git>, B<hg> "
+"(Mercurial), B<svk>, B<svn> (Subversion), B<baz>, B<bzr>, B<tla> (Arch), "
+"B<darcs>."
+
+#. type: =item
+#: ../scripts/debcommit.pl:23
+msgid "B<-c>, B<--changelog> I<path>"
+msgstr "B<-c>, B<--changelog> I<Pfad>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:25
+msgid ""
+"Specify an alternate location for the changelog. By default debian/changelog "
+"is used."
+msgstr ""
+"gibt einen alternativen Speicherplatz für das Changelog an. Standardmäßig "
+"wird debian/changelog benutzt."
+
+#. type: =item
+#: ../scripts/debcommit.pl:28
+msgid "B<-r>, B<--release>"
+msgstr "B<-r>, B<--release>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:30
+msgid ""
+"Commit a release of the package. The version number is determined from "
+"debian/changelog, and is used to tag the package in the repository."
+msgstr ""
+"übergibt eine Veröffentlichung des Pakets. Die Versionsnummer wird anhand "
+"von debian/changelog bestimmt und benutzt, um das Paket im Depot zu "
+"kennzeichnen."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:33
+msgid ""
+"Note that svn/svk tagging conventions vary, so debcommit uses svnpath(1) to "
+"determine where the tag should be placed in the repository."
+msgstr ""
+"Beachten Sie, das svn-/svk-Markierungskonventionen variieren, weswegen "
+"Debcommit svnpath(1) verwendet, um zu bestimmen, wo die Markierung im Depot "
+"platziert werden soll."
+
+#. type: =item
+#: ../scripts/debcommit.pl:37
+msgid "B<-R>, B<--release-use-changelog>"
+msgstr "B<-R>, B<--release-use-changelog>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:39
+msgid ""
+"When used in conjunction with B<--release>, if there are uncommited changes "
+"to the changelog then derive the commit message from those changes rather "
+"than using the default message."
+msgstr ""
+"Wenn dies in Verbindung mit B<--release> benutzt wird, dann wird die Commit-"
+"Nachricht, falls es nicht übertragene Änderungen am Changelog gibt, aus "
+"diesen Änderungen abgeleitet, statt die Standardnachricht zu verwenden."
+
+#. type: =item
+#: ../scripts/debcommit.pl:43
+msgid "B<-m> I<text>, B<--message> I<text>"
+msgstr "B<-m> I<Text>, B<--message> I<Text>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:45
+msgid ""
+"Specify a commit message to use. Useful if the program cannot determine a "
+"commit message on its own based on debian/changelog, or if you want to "
+"override the default message."
+msgstr ""
+"gibt die Commit-Nachricht an, die verwendet werden soll; nützlich, falls das "
+"Programm von allein keine auf debian/changelog basierende Commit-Nachricht "
+"festlegen kann oder falls Sie die Standardnachricht außer Kraft setzen "
+"möchten."
+
+#. type: =item
+#: ../scripts/debcommit.pl:49 ../scripts/tagpending.pl:97
+msgid "B<-n>, B<--noact>"
+msgstr "B<-n>, B<--noact>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:51
+msgid ""
+"Do not actually do anything, but do print the commands that would be run."
+msgstr ""
+"tut tatsächlich nichts, gibt aber die Befehle aus, die ausgeführt würden."
+
+#. type: =item
+#: ../scripts/debcommit.pl:53
+msgid "B<-d>, B<--diff>"
+msgstr "B<-d>, B<--diff>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:55
+msgid ""
+"Instead of committing, do print the diff of what would have been committed "
+"if this option were not given. A typical usage scenario of this option is "
+"the generation of patches against the current working copy (e.g. when you "
+"don't have commit access right)."
+msgstr ""
+"druckt statt ein Commit durchzuführen das Diff, das übergeben worden wäre, "
+"falls diese Option nicht angegeben gewesen wäre. Eine typisches "
+"Verwendungsszenario dieser Option ist das Erzeugen von Patches für die "
+"aktuelle Arbeitskopie (z.B. wenn Sie keine Commit-Rechte haben)."
+
+#. type: =item
+#: ../scripts/debcommit.pl:60
+msgid "B<-C>, B<--confirm>"
+msgstr "B<-C>, B<--confirm>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:62
+msgid ""
+"Display the generated commit message and ask for confirmation before "
+"committing it. It is also possible to edit the message at this stage; in "
+"this case, the confirmation prompt will be re-displayed after the editing "
+"has been performed."
+msgstr ""
+"zeigt die erzeugte Commit-Nachricht an und erbittet vor dem Commit eine "
+"Bestätigung. Es ist auch möglich, die Nachricht an dieser Stelle zu "
+"bearbeiten; in diesem Fall wird die Bestätigungsanfrage erneut angezeigt, "
+"nachdem die Bearbeitung durchgeführt wurde."
+
+#. type: =item
+#: ../scripts/debcommit.pl:66
+msgid "B<-e>, B<--edit>"
+msgstr "B<-e>, B<--edit>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:68
+msgid ""
+"Edit the generated commit message in your favorite editor before committing "
+"it."
+msgstr ""
+"bearbeitet die erzeugte Commit-Nachricht in Ihrem Lieblingseditor, bevor ein "
+"Commit davon durchgeführt wird."
+
+#. type: TP
+#: ../scripts/debcommit.pl:71 ../scripts/dget.pl:567
+#: ../scripts/dpkg-depcheck.1:16
+#, no-wrap
+msgid "B<-a>, B<--all>"
+msgstr "B<-a>, B<--all>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:73
+msgid ""
+"Commit all files. This is the default operation when using a VCS other than "
+"git."
+msgstr ""
+"führt ein Commit aller Dateien durch. Dies ist die Standardtransaktion, wenn "
+"ein anderes Versionskontrollsystem als Git verwendet wird."
+
+#. type: =item
+#: ../scripts/debcommit.pl:76
+msgid "B<-s>, B<--strip-message>, B<--no-strip-message>"
+msgstr "B<-s>, B<--strip-message>, B<--no-strip-message>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:78
+msgid ""
+"If this option is set and the commit message has been derived from the "
+"changelog, the characters \"* \" will be stripped from the beginning of the "
+"message."
+msgstr ""
+"Falls diese Option gesetzt ist und die Commit-Nachricht aus dem Changelog "
+"abgeleitet wurde, werden die »*«-Zeichen vom Anfang der Nachricht entfernt."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:82
+msgid ""
+"This option is set by default and ignored if more than one line of the "
+"message begins with \"[*+-] \"."
+msgstr ""
+"Diese Option ist standardmäßig gesetzt und wird ignoriert, falls mehr als "
+"eine Zeile der Nachricht mit »[*+-] « beginnt."
+
+#. type: =item
+#: ../scripts/debcommit.pl:85
+msgid "B<--sign-commit>, B<--no-sign-commit>"
+msgstr "B<--sign-commit>, B<--no-sign-commit>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:87
+msgid ""
+"If this option is set, then the commits that debcommit creates will be "
+"signed using gnupg. Currently this is only supported by git, hg, and bzr."
+msgstr ""
+"Falls diese Option gesetzt ist, dann werden Commits, die Debcommit erstellt, "
+"mittels GnuPG signiert. Derzeit wird dies nur von Git, Hg und Bzr "
+"unterstützt."
+
+#. type: =item
+#: ../scripts/debcommit.pl:90
+msgid "B<--sign-tags>, B<--no-sign-tags>"
+msgstr "B<--sign-tags>, B<--no-sign-tags>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:92
+msgid ""
+"If this option is set, then tags that debcommit creates will be signed using "
+"gnupg. Currently this is only supported by git."
+msgstr ""
+"Falls diese Option gesetzt ist, dann werden Markierungen, die Debcommit "
+"erstellt, mittels GnuPG signiert. Derzeit wird dies nur von Git unterstützt."
+
+#. type: =item
+#: ../scripts/debcommit.pl:95
+msgid "B<--changelog-info>"
+msgstr "B<--changelog-info>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:97
+msgid ""
+"If this option is set, the commit author and date will be determined from "
+"the Maintainer and Date field of the first paragraph in F<debian/"
+"changelog>. This is mainly useful when using B<debchange>(1) with the B<--"
+"no-mainttrailer> option."
+msgstr ""
+"Falls diese Option gesetzt ist, werden der Autor und das Datum, die "
+"übertragen werden, anhand der Felder »Maintainer« und »Date« des ersten "
+"Absatzes in F<debian/changelog> bestimmt. Dies ist hauptsächlich dann "
+"nützlich, wenn B<debchange>(1) mit der Option B<--no-mainttrailer> verwendet "
+"wird."
+
+#. type: =item
+#: ../scripts/debcommit.pl:114
+msgid "B<DEBCOMMIT_STRIP_MESSAGE>"
+msgstr "B<DEBCOMMIT_STRIP_MESSAGE>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:116
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-strip-message> "
+"command line parameter being used. The default is I<yes>."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, dann entspricht das der Verwendung des "
+"Befehlszeilenparameters B<--no-strip-message>. Die Vorgabe ist I<yes>."
+
+#. type: =item
+#: ../scripts/debcommit.pl:119
+msgid "B<DEBCOMMIT_SIGN_TAGS>"
+msgstr "B<DEBCOMMIT_SIGN_TAGS>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:121
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--sign-tags> command "
+"line parameter being used. The default is I<no>."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--sign-tags> benutzt würde. Die Vorgabe ist I<no>."
+
+#. type: =item
+#: ../scripts/debcommit.pl:124
+msgid "B<DEBCOMMIT_SIGN_COMMITS>"
+msgstr "B<DEBCOMMIT_SIGN_COMMITS>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:126
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--sign-commit> "
+"command line parameter being used. The default is I<no>."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--sign-commit> benutzt würde. Die Vorgabe ist I<no>."
+
+#. type: =item
+#: ../scripts/debcommit.pl:129
+msgid "B<DEBCOMMIT_RELEASE_USE_CHANGELOG>"
+msgstr "B<DEBCOMMIT_RELEASE_USE_CHANGELOG>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:131
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--release-use-"
+"changelog> command line parameter being used. The default is I<no>."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--release-use-changelog> benutzt würde. Die Vorgabe "
+"ist I<no>."
+
+#. type: TP
+#: ../scripts/debcommit.pl:134 ../scripts/debsign.1:118
+#, no-wrap
+msgid "B<DEBSIGN_KEYID>"
+msgstr "B<DEBSIGN_KEYID>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:136
+msgid ""
+"This is the key id used for signing tags. If not set, a default will be "
+"chosen by the revision control system."
+msgstr ""
+"Dies ist die Schlüsselkennung, die zum Signieren von Markierungen benutzt "
+"wird. Falls nicht gesetzt, wird eine Vorgabe durch das "
+"Versionskontrollsystem ausgewählt."
+
+#. type: =head1
+#: ../scripts/debcommit.pl:141
+msgid "VCS SPECIFIC FEATURES"
+msgstr "VERSIONSKONTROLLSYSTEMSPEZIFISCHE FUNKTIONALITÄTEN"
+
+#. type: =item
+#: ../scripts/debcommit.pl:145
+msgid "B<tla> / B<baz>"
+msgstr "B<tla> / B<baz>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:147
+msgid ""
+"If the commit message contains more than 72 characters, a summary will be "
+"created containing as many full words from the message as will fit within 72 "
+"characters, followed by an ellipsis."
+msgstr ""
+"Falls die Commit-Nachricht mehr als 72 Zeichen enthält, wird eine "
+"Zusammenfassung erstellt, die so viele vollständige Worte aus der Nachricht "
+"enthält, wie in 72 Zeichen hineinpassen, gefolgt von Auslassungspunkten."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:153
+msgid ""
+"Each of the features described below is applicable only if the commit "
+"message has been automatically determined from the changelog."
+msgstr ""
+"Jede der unten beschriebenen Funktionalitäten ist nur anwendbar, falls die "
+"Commit-Nachricht automatisch aus dem Changelog bestimmt wurde."
+
+#. type: =item
+#: ../scripts/debcommit.pl:158
+msgid "B<git>"
+msgstr "B<git>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:160
+msgid ""
+"If only a single change is detected in the changelog, B<debcommit> will "
+"unfold it to a single line and behave as if B<--strip-message> was used."
+msgstr ""
+"Falls nur eine einzelne Änderung im Changelog entdeckt wird, wird "
+"B<debcommit> sie in eine einzelne Zeile entfalten und sich so verhalten, als "
+"ob B<--strip-message> benutzt worden wäre."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:163
+msgid ""
+"Otherwise, the first change will be unfolded and stripped to form a summary "
+"line and a commit message formed using the summary line followed by a blank "
+"line and the changes as extracted from the changelog. B<debcommit> will then "
+"spawn an editor so that the message may be fine-tuned before committing."
+msgstr ""
+"Andernfalls wird die erste Änderung entfaltet und bereinigt, um eine "
+"Zusammenfassungszeile und damit eine Commit-Nachricht, gefolgt von einer "
+"leeren Zeile und den Änderungen, wie sie aus dem Changelog extrahiert "
+"wurden, zu bilden. B<debcommit> wird dann einen Editor öffnen, so dass die "
+"Nachricht vor dem Commit abgestimmt werden kann."
+
+#. type: =item
+#: ../scripts/debcommit.pl:168
+msgid "B<hg> / B<darcs>"
+msgstr "B<hg> / B<darcs>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:170
+msgid ""
+"The first change detected in the changelog will be unfolded to form a single "
+"line summary. If multiple changes were detected then an editor will be "
+"spawned to allow the message to be fine-tuned."
+msgstr ""
+"Die erste im Changelog entdeckte Änderung wird entfaltet, um eine einzelne "
+"Zusammenfassungszeile zu bilden, Falls mehrere Änderungen entdeckt wurden, "
+"wird ein Editor geöffnet, der eine Feinabstimmung der Nachricht ermöglicht."
+
+#. type: =item
+#: ../scripts/debcommit.pl:174
+msgid "B<bzr>"
+msgstr "B<bzr>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:176
+msgid ""
+"If the changelog entry used for the commit message closes any bugs then B<--"
+"fixes> options to \"bzr commit\" will be generated to associate the revision "
+"and the bugs."
+msgstr ""
+"Falls der für die Commit-Nachricht benutzte Changelog-Eintrag irgendwelche "
+"Fehler schließt, werden B<--fixes>-Optionen für »bzr commit« generiert, um "
+"die Revision und die Fehler zu verknüpfen."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:903
+msgid ""
+"This code is copyright by Joey Hess <joeyh@debian.org>, all rights "
+"reserved. This program comes with ABSOLUTELY NO WARRANTY. You are free to "
+"redistribute this code under the terms of the GNU General Public License, "
+"version 2 or later."
+msgstr ""
+"Dieser Code unterliegt dem Copyright von Joey Hess <joeyh@debian.org>, alle "
+"Rechte vorbehalten. Für dieses Programm besteht KEINERLEI GARANTIE. Es ist "
+"Ihnen erlaubt, diesen Code unter den Bedingungen der GNU General Public "
+"License, Version 2 oder später, weiterzugeben."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:910 ../scripts/mass-bug.pl:524
+msgid "Joey Hess <joeyh@debian.org>"
+msgstr "Joey Hess <joeyh@debian.org>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:914
+msgid "B<debchange>(1), B<svnpath>(1)"
+msgstr "B<debchange>(1), B<svnpath>(1)"
+
+#. type: TH
+#: ../scripts/debdiff.1:1
+#, no-wrap
+msgid "DEBDIFF"
+msgstr "DEBDIFF"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:4
+msgid "debdiff - compare file lists in two Debian packages"
+msgstr "debdiff - vergleicht Dateilisten in zwei Debian-Paketen"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:6
+msgid "B<debdiff> [I<options>]"
+msgstr "B<debdiff> [I<Optionen>]"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:8
+msgid "B<debdiff> [I<options>] ... I<deb1 deb2>"
+msgstr "B<debdiff> [I<Optionen>] … I<deb1 deb2>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:10
+msgid "B<debdiff> [I<options>] ... I<changes1 changes2>"
+msgstr "B<debdiff> [I<Optionen>] … I<Änderungen1 Änderungen2>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:13
+msgid ""
+"B<debdiff> [I<options>] ... B<--from >I<deb1a deb1b ... >B<--to >I<deb2a "
+"deb2b ...>"
+msgstr ""
+"B<debdiff> [I<Optionen>] … B<--from >I<deb1a deb1b … >B<--to >I<deb2a deb2b …"
+">"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:15
+msgid "B<debdiff> [I<options>] ... I<dsc1 dsc2>"
+msgstr "B<debdiff> [I<Optionen>] … I<dsc1 dsc2>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:26
+#, fuzzy
+#| msgid ""
+#| "B<debdiff> takes the names of two Debian package files (I<.deb>s or I<."
+#| "udeb>s) on the command line and compares their contents (considering only "
+#| "the files in the main package, not the maintenance scripts). It shows "
+#| "which files have been introduced and which removed between the two "
+#| "package files, and is therefore useful for spotting files which may have "
+#| "been inadvertently lost between revisions of the package. It also checks "
+#| "the file owners and permissions, and compares the control files of the "
+#| "two packages using the B<wdiff> program."
+msgid ""
+"B<debdiff> takes the names of two Debian package files (I<.deb>s or I<."
+"udeb>s) on the command line and compares their contents (considering only "
+"the files in the main package, not the maintenance scripts). It shows which "
+"files have been introduced and which removed between the two package files, "
+"and is therefore useful for spotting files which may have been inadvertently "
+"lost between revisions of the package. It also checks the file owners and "
+"permissions, and compares the control files of the two packages using the "
+"B<wdiff> program. If you want a deeper comparison of two Debian package "
+"files you can use the B<debbindiff> tool."
+msgstr ""
+"B<debdiff> nimmt die Namen zweier Debian-Pakete (I<.deb>s oder I<.udeb>s) "
+"auf der Befehlszeile entgegen und vergleicht ihren Inhalt (dabei werden nur "
+"die Dateien im Hauptpaket berücksichtigt, nicht die Betreuerskripte). Es "
+"zeigt, welche Dateien eingeführt und welche zwischen den beiden Dateien "
+"entfernt wurden. Es ist daher nützlich, um Dateien ausfindig zu machen, die "
+"möglicherweise versehentlich zwischen zwei Revisionen des Pakets verloren "
+"gingen. Es prüft außerdem die Dateibesitzer und Zugriffsrechte und "
+"vergleicht die Steuerdateien der beiden Pakete mittels des Programms "
+"B<wdiff>."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:29
+msgid ""
+"If no arguments are given, B<debdiff> tries to compare the content of the "
+"current source directory with the last version of the package."
+msgstr ""
+"Falls kein Argument angegeben wurde, versucht B<debdiff>, den Inhalt des "
+"aktuellen Quellverzeichnisses mit der neusten Version des Pakets zu "
+"vergleichen."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:40
+msgid ""
+"B<debdiff> can also handle changes between groups of I<.deb> files in two "
+"ways. The first is to specify two I<.changes> files. In this case, the I<."
+"deb> files listed in the I<.changes> file will be compared, by taking the "
+"contents of all of the listed I<.deb> files together. (The I<.deb> files "
+"listed are assumed to be in the same directory as the I<.changes> file.) "
+"The second way is to list the I<.deb> files of interest specifically using "
+"the B<--from> ... B<--to> syntax. These both help if a package is broken up "
+"into smaller packages and one wishes to ensure that nothing is lost in the "
+"interim."
+msgstr ""
+"B<debdiff> kann außerdem Änderungen zwischen Gruppen von I<.deb>-Dateien auf "
+"zwei Arten handhaben. Die erste ist, zwei I<.changes>-Dateien anzugeben. In "
+"diesem Fall werden die in der I<.changes>-Datei aufgeführten I<.deb>-Dateien "
+"verglichen, indem der Inhalt aller aufgelisteten I<.deb>-Dateien "
+"zusammengenommenen wird. (Es wird davon ausgegangen, dass die I<.deb>-"
+"Dateien im gleichen Verzeichnis wie die I<.changes>-Datei liegen.) Die "
+"zweite Art besteht darin, die I<.deb>-Dateien von Interesse insbesondere mit "
+"der Syntax B<--from> … B<--to> aufzulisten. Diese beiden helfen, falls ein "
+"Paket in mehrere kleinere Pakete zerteilt wurde und sichergestellt werden "
+"soll, dass zwischenzeitlich nichts verloren ging."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:44
+msgid ""
+"B<debdiff> examines the B<devscripts> configuration files as described "
+"below. Command line options override the configuration file settings, "
+"though."
+msgstr ""
+"B<debdiff> untersucht die B<devscripts>-Konfigurationsdateien wie "
+"nachfolgend beschrieben. Befehlszeilenoptionen setzten jedoch die "
+"Konfigurationsdateieinstellungen außer Kraft."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:52
+msgid ""
+"If B<debdiff> is passed two source packages (I<.dsc> files) it will compare "
+"the contents of the source packages. If the source packages differ only in "
+"Debian revision number (that is, the I<.orig.tar.gz> files are the same in "
+"the two I<.dsc> files), then B<interdiff>(1) will be used to compare the two "
+"patch files if this program is available on the system, otherwise a B<diff> "
+"will be performed between the two source trees."
+msgstr ""
+"Falls B<debdiff> zwei Quellpakete (I<.dsc>-Dateien) übergeben wurden, wird "
+"es den Inhalt der Quellpakete vergleichen. Falls sich die Quellpakete nur in "
+"der Debian-Revisionsnummer unterscheiden (sprich, die I<.orig.tar.gz>-"
+"Dateien sind in beiden I<.dsc>-Dateien gleich), dann wird B<interdiff>(1) "
+"benutzt, um die beiden Patch-Dateien zu vergleichen, falls das Programm auf "
+"dem System verfügbar ist. Andernfalls wird ein B<diff> zwischen beiden "
+"Quellverzeichnisbäumen durchgeführt."
+
+#. type: TP
+#: ../scripts/debdiff.1:53
+#, no-wrap
+msgid "B<--dirs>, B<-d>"
+msgstr "B<--dirs>, B<-d>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:58
+msgid ""
+"The default mode of operation is to ignore directory names which appear in "
+"the file list, but they, too, will be considered if this option is given."
+msgstr ""
+"Im Standardbetriebsmodus werden Verzeichnisnamen, die in der Dateiliste "
+"auftauchen, ignoriert, sie werden aber, wenn diese Option angegeben wurde, "
+"berücksichtigt."
+
+#. type: TP
+#: ../scripts/debdiff.1:58
+#, no-wrap
+msgid "B<--nodirs>"
+msgstr "B<--nodirs>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:62
+msgid ""
+"Ignore directory names which appear in the file list. This is the default "
+"and it can be used to override a configuration file setting."
+msgstr ""
+"ignoriert Verzeichnisnamen, die in der Dateiliste erscheinen. Dies ist die "
+"Vorgabe und kann benutzt werden, um die Einstellungen der "
+"Konfigurationsdatei außer Kraft zu setzen."
+
+#. type: TP
+#: ../scripts/debdiff.1:62
+#, no-wrap
+msgid "B<--move>I< FROM TO>,B< -m>I< FROM TO>"
+msgstr "B<--move>I< VON BIS>,B< -m>I< VON BIS>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:72
+msgid ""
+"It sometimes occurs that various files or directories are moved around "
+"between revisions. This can be handled using this option. There are two "
+"arguments, the first giving the location of the directory or file in the "
+"first package, and the second in the second. Any files in the first listing "
+"whose names begin with the first argument are treated as having that "
+"substituted for the second argument when the file lists are compared. Any "
+"number of B<--move> arguments may be given; they are processed in the order "
+"in which they appear."
+msgstr ""
+"Manchmal kommt es vor, dass unterschiedliche Dateien oder Verzeichnisse "
+"zwischen Revisionen hin- und hergeschoben werden. Dies kann mithilfe dieser "
+"Option gehandhabt werden. Es gibt zwei Argumente, das erste gibt den "
+"Speicherort des Verzeichnisses oder der Datei im ersten Paket und das Zweite "
+"den im Zweiten an. Alle Dateien in der ersten Auflistung, deren Namen mit "
+"dem ersten Argument beginnen, werden beim Vergleich der Dateilisten so "
+"angesehen, als ob dies durch das zweite Argument ersetzt worden wäre. Es "
+"kann eine beliebige Anzahl von B<--move>-Argumenten angegeben werden; sie "
+"werden in der Reihenfolge verarbeitet, in der sie erscheinen."
+
+#. type: TP
+#: ../scripts/debdiff.1:72
+#, no-wrap
+msgid "B<--move-regex>I< FROM TO>"
+msgstr "B<--move-regex>I< VON BIS>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:78
+msgid ""
+"This is the same as B<--move>, except that I<FROM> is treated as a regular "
+"expression and the B<perl> substitution command I<s/^FROM/TO/> is applied to "
+"the files. In particular, TO can make use of backreferences such as $1."
+msgstr ""
+"Dies ist identisch mit B<--move>, außer dass I<VON> als ein regulärer "
+"Ausdruck angesehen wird und der B<perl>-Ersetzungsbefehl I<s/^VON/BIS/> auf "
+"die Dateien angewandt wird. Insbesondere kann BIS Gebrauch von Rückverweisen "
+"wie $1 machen."
+
+#. type: TP
+#: ../scripts/debdiff.1:78
+#, no-wrap
+msgid "B<--nocontrol>"
+msgstr "B<--nocontrol>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:83
+msgid ""
+"B<debdiff> will usually compare the respective control files of the packages "
+"using B<wdiff>(1). This option suppresses this part of the processing."
+msgstr ""
+"B<debdiff> wird normalerweise die jeweiligen Steuerdateien der Pakete "
+"mittels B<wdiff>(1) vergleichen. Diese Option unterdrückt diesen Teil der "
+"Verarbeitung."
+
+#. type: TP
+#: ../scripts/debdiff.1:83
+#, no-wrap
+msgid "B<--control>"
+msgstr "B<--control>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:87
+msgid ""
+"Compare the respective control files; this is the default, and it can be "
+"used to override a configuration file setting."
+msgstr ""
+"vergleicht die jeweiligen Steuerdateien. Dies ist die Vorgabe und es kann "
+"verwendet werden, um eine Einstellung der Konfigurationsdatei außer Kraft zu "
+"setzen."
+
+#. type: TP
+#: ../scripts/debdiff.1:87
+#, no-wrap
+msgid "B<--controlfiles>I< FILE>[B<,>I<FILE> ...]"
+msgstr "B<--controlfiles>I< DATEI>[B<,>I<DATEI> …]"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:95
+msgid ""
+"Specify which control files to compare; by default this is just I<control>, "
+"but could include I<postinst>, I<config> and so on. Files will only be "
+"compared if they are present in both I<.debs> being compared. The special "
+"value I<ALL> compares all control files present in both packages, except for "
+"md5sums. This option can be used to override a configuration file setting."
+msgstr ""
+"gibt an, welche Steuerdateien verglichen werden sollen; standardmäßig ist "
+"dies nur I<control>, könnte aber auch I<postinst>, I<config> und so weiter "
+"umfassen. Dateien werden nur verglichen, falls sie in beiden verglichenen I<."
+"debs> enthalten sind. Der Spezialwert I<ALL> vergleicht alle Steuerdateien, "
+"die es in beiden Paketen gibt, außer md5sums. Diese Option kann benutzt "
+"werden, um eine Konfigurationsdateieinstellung außer Kraft zu setzen."
+
+#. type: TP
+#: ../scripts/debdiff.1:95
+#, no-wrap
+msgid "B<--wdiff-source-control>"
+msgstr "B<--wdiff-source-control>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:99
+msgid ""
+"When processing source packages, compare control files using B<wdiff>. "
+"Equivalent to the B<--control> option for binary packages."
+msgstr ""
+"vergleicht Steuerdateien, wenn Quellpakete verarbeitet werden, mittels "
+"B<wdiff>. Entspricht der Option B<--control> für Binärpakete."
+
+#. type: TP
+#: ../scripts/debdiff.1:99
+#, no-wrap
+msgid "B<--no-wdiff-source-control>"
+msgstr "B<--no-wdiff-source-control>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:103
+msgid ""
+"Do not compare control files in source packages using B<wdfiff>. This is "
+"the default."
+msgstr ""
+"vergleicht keine Steuerdateien in Quellpaketen mittels B<wdfiff>. Dies ist "
+"die Vorgabe."
+
+#. type: TP
+#: ../scripts/debdiff.1:103
+#, no-wrap
+msgid "B<--wp>, B<--wl>, B<--wt>"
+msgstr "B<--wp>, B<--wl>, B<--wt>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:108
+msgid ""
+"Pass a B<-p>, B<-l> or B<-t> option to B<wdiff> respectively. (This yields "
+"the whole B<wdiff> output rather than just the lines with any changes.)"
+msgstr ""
+"übergibt eine B<-p>-, B<-l>- beziehungsweise B<-t>-Option an B<wdiff>. (Dies "
+"liefert die ganze B<wdiff>-Ausgabe statt nur den Zeilen mit irgendwelchen "
+"Änderungen)."
+
+#. type: TP
+#: ../scripts/debdiff.1:108
+#, no-wrap
+msgid "B<--show-moved>"
+msgstr "B<--show-moved>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:115
+msgid ""
+"If multiple I<.deb> files are specified on the command line, either using I<."
+"changes> files or the B<--from>/B<--to> syntax, then this option will also "
+"show which files (if any) have moved between packages. (The package names "
+"are simply determined from the names of the I<.deb> files.)"
+msgstr ""
+"Falls mehrere I<.deb>-Dateien auf der Befehlszeile angegeben wurden, "
+"entweder mit den I<.changes>-Dateien oder mit der B<--from>-/B<--to>-Syntax, "
+"wird diese Option außerdem (falls vorhanden) Dateien anzeigen, die zwischen "
+"Paketen verschoben wurden. (Die Paketnamen werden einfach aus den Namen der "
+"I<.deb>-Dateien bestimmt.)"
+
+#. type: TP
+#: ../scripts/debdiff.1:115
+#, no-wrap
+msgid "B<--noshow-moved>"
+msgstr "B<--noshow-moved>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:119 ../scripts/debdiff.1:136
+msgid ""
+"The default behaviour; can be used to override a configuration file setting."
+msgstr ""
+"das Standardverhalten; kann benutzt werden, um "
+"Konfigurationsdateieinstellungen außer Kraft zu setzen."
+
+#. type: TP
+#: ../scripts/debdiff.1:119
+#, no-wrap
+msgid "B<--renamed>I< FROM TO>"
+msgstr "B<--renamed>I< VON BIS>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:125
+msgid ""
+"If B<--show-moved> is being used and a package has been renamed in the "
+"process, this command instructs B<debdiff> to treat the package in the first "
+"list called I<FROM> as if it were called I<TO>. Multiple uses of this "
+"option are permitted."
+msgstr ""
+"Falls B<--show-moved> verwendet wird und ein Paket in dem Prozess umbenannt "
+"wurde, weist dieser Befehl B<debdiff> an, das Paket in der ersten, I<VON> "
+"genannten Liste, so zu betrachten, als ob es I<BIS> genannt würde. Es ist "
+"erlaubt, diese Option mehrfach zu benutzen."
+
+#. type: TP
+#: ../scripts/debdiff.1:125
+#, no-wrap
+msgid "B<--exclude>I< PATTERN>"
+msgstr "B<--exclude>I< MUSTER>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:129
+msgid ""
+"Exclude files that match I<PATTERN>. Multiple uses of this option are "
+"permitted."
+msgstr ""
+"schließt Dateien aus, auf die I<MUSTER> passt. Es ist erlaubt, diese Option "
+"mehrfach zu benutzen."
+
+#. type: TP
+#: ../scripts/debdiff.1:129
+#, no-wrap
+msgid "B<--diffstat>"
+msgstr "B<--diffstat>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:132
+msgid "Include the result of B<diffstat> before the generated diff."
+msgstr "beinhaltet das Ergebnis von B<diffstat> vor dem erzeugten Diff"
+
+#. type: TP
+#: ../scripts/debdiff.1:132
+#, no-wrap
+msgid "B<--no-diffstat>"
+msgstr "B<--no-diffstat>"
+
+#. type: TP
+#: ../scripts/debdiff.1:136
+#, no-wrap
+msgid "B<--auto-ver-sort>"
+msgstr "B<--auto-ver-sort>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:139
+msgid "When comparing source packages, do so in version order."
+msgstr ""
+"Wenn Quellpakete verglichen werden, soll dies in der Reihenfolge ihrer "
+"Versionen getan werden."
+
+#. type: TP
+#: ../scripts/debdiff.1:139
+#, no-wrap
+msgid "B<--no-auto-ver-sort>"
+msgstr "B<--no-auto-ver-sort>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:145
+msgid ""
+"Compare source packages in the order they were passed on the command-line, "
+"even if that means comparing a package with a higher version against one "
+"with a lower version. This is the default behaviour."
+msgstr ""
+"vergleicht zwei Quellpakete in der Reihenfolge, in der sie auf der "
+"Befehlszeile übergeben wurden, sogar, wenn dies bedeutet, dass ein Paket mit "
+"einer höheren Versionsnummer mit einem mit einer niedrigeren Version "
+"verglichen wird. Dies ist das Standardverhalten."
+
+#. type: TP
+#: ../scripts/debdiff.1:145
+#, no-wrap
+msgid "B<--unpack-tarballs>"
+msgstr "B<--unpack-tarballs>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:150
+msgid ""
+"When comparing source packages, also unpack tarballs found in the top level "
+"source directory to compare their contents along with the other files. This "
+"is the default behaviour."
+msgstr ""
+"Wenn Quellpakete verglichen werden, werden außerdem Tarballs entpackt, die "
+"auf der obersten Stufe des Quellverzeichnisbaums liegen, um ihren Inhalt "
+"zusammen mit den anderen Dateien zu vergleichen. Dies ist das "
+"Standardverhalten."
+
+#. type: TP
+#: ../scripts/debdiff.1:150
+#, no-wrap
+msgid "B<--no-unpack-tarballs>"
+msgstr "B<--no-unpack-tarballs>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:153
+msgid "Do not unpack tarballs inside source packages."
+msgstr "entpackt keine Tarballs innerhalb von Quellpaketen."
+
+#. type: TP
+#: ../scripts/debdiff.1:163
+#, no-wrap
+msgid "B<--quiet>, B<-q>"
+msgstr "B<--quiet>, B<-q>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:166
+msgid "Be quiet if no differences were found."
+msgstr "ist still, wenn keine Unterschiede gefunden wurden."
+
+#. type: TP
+#: ../scripts/debdiff.1:166
+#, no-wrap
+msgid "B<--ignore-space>, B<-w>"
+msgstr "B<--ignore-space>, B<-w>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:169
+msgid "Ignore whitespace in diffs."
+msgstr "ignoriert Leerräume in Diffs."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:175
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file settings. "
+"Environment variable settings are ignored for this purpose. The currently "
+"recognised variables are:"
+msgstr ""
+"Die beiden Konfigurationsdateien I</etc/devscripts.conf> und I<~/."
+"devscripts> werden durch eine Shell eingelesen, um Konfigurationsvariablen "
+"zu setzen. Befehlszeilenoptionen können benutzt werden, um "
+"Konfigurationsdateieinstellungen außer Kraft zu setzen. Einstellungen aus "
+"Umgebungsvariablen werden zu diesem Zweck ignoriert. Die derzeit bekannten "
+"Variablen sind:"
+
+#. type: TP
+#: ../scripts/debdiff.1:175
+#, no-wrap
+msgid "B<DEBDIFF_DIRS>"
+msgstr "B<DEBDIFF_DIRS>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:179
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--dirs> command line "
+"parameter being used."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--dirs> benutzt würde."
+
+#. type: TP
+#: ../scripts/debdiff.1:179
+#, no-wrap
+msgid "B<DEBDIFF_CONTROL>"
+msgstr "B<DEBDIFF_CONTROL>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:184
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--nocontrol> command "
+"line parameter being used. The default is I<yes>."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--nocontrol> benutzt würde. Die Vorgabe ist I<yes>."
+
+#. type: TP
+#: ../scripts/debdiff.1:184
+#, no-wrap
+msgid "B<DEBDIFF_CONTROLFILES>"
+msgstr "B<DEBDIFF_CONTROLFILES>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:189
+msgid ""
+"Which control files to compare, corresponding to the B<--controlfiles> "
+"command line option. The default is I<control>."
+msgstr ""
+"welche Steuerdateien zu vergleichen sind, entspricht der Befehlszeilenoption "
+"B<--controlfiles>. Die Vorgabe ist I<control>."
+
+#. type: TP
+#: ../scripts/debdiff.1:189
+#, no-wrap
+msgid "B<DEBDIFF_SHOW_MOVED>"
+msgstr "B<DEBDIFF_SHOW_MOVED>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:193
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--show-moved> command "
+"line parameter being used."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--show-moved> benutzt würde."
+
+#. type: TP
+#: ../scripts/debdiff.1:193
+#, no-wrap
+msgid "B<DEBDIFF_WDIFF_OPT>"
+msgstr "B<DEBDIFF_WDIFF_OPT>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:197
+msgid ""
+"This option will be passed to B<wdiff>; it should be one of B<-p>, B<-l> or "
+"B<-t>."
+msgstr ""
+"Dieses Option wird an B<wdiff> übergeben; sie sollte entweder B<-p>, B<-l> "
+"oder B<-t> sein."
+
+#. type: TP
+#: ../scripts/debdiff.1:197
+#, no-wrap
+msgid "B<DEBDIFF_SHOW_DIFFSTAT>"
+msgstr "B<DEBDIFF_SHOW_DIFFSTAT>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:201
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--diffstat> command "
+"line parameter being used."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--diffstat> benutzt würde."
+
+#. type: TP
+#: ../scripts/debdiff.1:201
+#, no-wrap
+msgid "B<DEBDIFF_WDIFF_SOURCE_CONTROL>"
+msgstr "B<DEBDIFF_WDIFF_SOURCE_CONTROL>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:205
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--wdiff-source-"
+"control> command line parameter being used."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--wdiff-source-control> benutzt würde."
+
+#. type: TP
+#: ../scripts/debdiff.1:205
+#, no-wrap
+msgid "B<DEBDIFF_AUTO_VER_SORT>"
+msgstr "B<DEBDIFF_AUTO_VER_SORT>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:209
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--auto-ver-sort> "
+"command line parameter being used."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--auto-ver-sort> benutzt würde."
+
+#. type: TP
+#: ../scripts/debdiff.1:209
+#, no-wrap
+msgid "B<DEBDIFF_UNPACK_TARBALLS>"
+msgstr "B<DEBDIFF_UNPACK_TARBALLS>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:213
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-unpack-tarballs> "
+"command line parameter being used."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--no-unpack-tarballs> benutzt würde."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:217
+msgid ""
+"Normally the exit value will be 0 if no differences are reported and 1 if "
+"any are reported. If there is some fatal error, the exit code will be 255."
+msgstr ""
+"Normalerweise wird der Rückgabewert 0 sein, wenn keine Unterschiede gemeldet "
+"werden und 1, falls doch. Falls es irgendeinen schwerwiegenden Fehler gibt, "
+"wird der Rückgabewert 255 sein."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:224
+msgid ""
+"B<diffstat>(1), B<dpkg-deb>(1), B<interdiff>(1), B<wdiff>(1), B<devscripts."
+"conf>(5), B<debbindiff>(1)"
+msgstr ""
+"B<diffstat>(1), B<dpkg-deb>(1), B<interdiff>(1), B<wdiff>(1), B<devscripts."
+"conf>(5), B<debbindiff>(1)"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:229
+msgid ""
+"B<debdiff> was originally written as a shell script by Yann Dirson "
+"E<lt>dirson@debian.orgE<gt> and rewritten in Perl with many more features by "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>. The software may be freely "
+"redistributed under the terms and conditions of the GNU General Public "
+"License, version 2."
+msgstr ""
+"B<debdiff> wurde ursprünglich als ein Shell-Skript von Yann Dirson "
+"E<lt>dirson@debian.orgE<gt> verfasst und neu in Perl mit viel mehr "
+"Funktionalitäten durch Julian Gilbey E<lt>jdg@debian.orgE<gt> geschrieben. "
+"Die Software kann frei unter den Bestimmungen und Bedingungen der GNU "
+"General Public License, Version 2 weitergegeben werden."
+
+#. type: TH
+#: ../scripts/debi.1:1
+#, no-wrap
+msgid "DEBI"
+msgstr "DEBI"
+
+#. type: Plain text
+#: ../scripts/debi.1:4
+msgid "debi - install current version of generated Debian package"
+msgstr "debi - installiert die aktuelle Version eines erzeugten Debian-Pakets"
+
+#. type: Plain text
+#: ../scripts/debi.1:6
+msgid "B<debi> [I<options>] [I<changes file>] [I<package> ...]"
+msgstr "B<debi> [I<Optionen>] [I<Changes-Datei>] [I<Paket> …]"
+
+#. type: Plain text
+#: ../scripts/debi.1:21
+msgid ""
+"B<debi> figures out the current version of a package and installs it. If a "
+"I<.changes> file is specified on the command line, the filename must end "
+"with I<.changes>, as this is how the program distinguishes it from package "
+"names. If not, then B<debi> has to be called from within the source code "
+"directory tree. In this case, it will look for the I<.changes> file "
+"corresponding to the current package version (by determining the name and "
+"version number from the changelog, and the architecture in the same way as "
+"B<dpkg-buildpackage>(1) does). It then runs B<debpkg -i> on every I<.deb> "
+"archive listed in the I<.changes> file to install them, assuming that all of "
+"the I<.deb> archives live in the same directory as the I<.changes> file. "
+"Note that you probably don't want to run this program on a I<.changes> file "
+"relating to a different architecture after cross-compiling the package!"
+msgstr ""
+"B<debi> findet die aktuelle Version eines Pakets heraus und installiert sie. "
+"Falls eine I<.changes>-Datei auf der Befehlszeile angegeben wurde, muss der "
+"Dateiname auf I<.changes> enden, da das Programm sie auf diese Weise von "
+"Paketnamen unterscheidet. Falls nicht, muss B<debi> aus dem "
+"Quellcodeverzeichnisbaum heraus aufgerufen werden. In diesem Fall wird es "
+"nach der I<.changes>-Datei suchen, die zur aktuellen Paketversion passt "
+"(durch Bestimmen des Namens und der Versionsnummer aus dem Changelog und der "
+"Architektur auf die gleiche Art, die B<dpkg-buildpackage>(1) verwendet). "
+"Dann führt es B<debpkg -i>zur Installation für jedes I<.deb>-Archiv aus, das "
+"in der I<.changes>-Datei aufgeführt ist. Dabei wird davon ausgegangen, dass "
+"alle I<.deb>-Archive im selben Verzeichnis wie die I<.changes>-Datei liegen. "
+"Beachten Sie, dass Sie dieses Programm vermutlich nicht für eine I<.changes>-"
+"Datei ausführen möchten, die sich auf eine andere Architektur nach dem Cross-"
+"Kompilieren des Pakets bezieht."
+
+#. type: Plain text
+#: ../scripts/debi.1:40
+msgid ""
+"In common with several other scripts in the B<devscripts> package, B<debi> "
+"will climb the directory tree until it finds a I<debian/changelog> file. As "
+"a safeguard against stray files causing potential problems, it will examine "
+"the name of the parent directory once it finds the I<debian/changelog> file, "
+"and check that the directory name corresponds to the package name. "
+"Precisely how it does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and B<--"
+"check-dirname-regex>."
+msgstr ""
+"Ebenso wie mehrere andere Skripte im Paket B<devscripts> wird B<debi> den "
+"Verzeichnisbaum heruntersteigen, bis es eine I<debian/changelog>-Datei "
+"findet. Als eine Schutzmaßnahme gegen verirrte Dateien, die möglicherweise "
+"Probleme bereiten, wird es den Namen des übergeordneten Verzeichnisses "
+"untersuchen, sobald es eine I<debian/changelog>-Datei findet und prüfen, ob "
+"der Verzeichnisname dem Paketnamen entspricht. Wie dies genau geschieht, "
+"wird durch die beiden Konfigurationsdateivariablen "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> und B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> "
+"sowie ihre entsprechenden Befehlszeilenoptionen B<--check-dirname-level> und "
+"B<--check-dirname-regex> geregelt."
+
+#. type: Plain text
+#: ../scripts/debi.1:78 ../scripts/debrelease.1:87
+msgid ""
+"Look for the I<.changes> and I<.deb> files in I<directory> instead of the "
+"parent of the source directory. This should either be an absolute path or "
+"relative to the top of the source directory."
+msgstr ""
+"sucht nach I<.changes>- und I<.deb>-Dateien in I<Verzeichnis> statt im "
+"übergeordneten Verzeichnis des Quellverzeichnisses. Dies sollte entweder ein "
+"absoluter Pfad oder relativ zur Wurzel des Quellverzeichnisses sein."
+
+#. type: TP
+#: ../scripts/debi.1:78
+#, no-wrap
+msgid "B<-m>, B<--multi>"
+msgstr "B<-m>, B<--multi>"
+
+#. type: Plain text
+#: ../scripts/debi.1:81
+msgid "Search for a multiarch I<.changes> file, as created by B<dpkg-cross>."
+msgstr ""
+"sucht nach einer Multiarch-I<.changes>-Datei, wie sie von B<dpkg-cross> "
+"erstellt wird."
+
+#. type: TP
+#: ../scripts/debi.1:81
+#, no-wrap
+msgid "B<-u>, B<--upgrade>"
+msgstr "B<-u>, B<--upgrade>"
+
+#. type: Plain text
+#: ../scripts/debi.1:87
+msgid ""
+"Only upgrade packages already installed on the system, rather than "
+"installing all packages listed in the I<.changes> file. Useful for multi-"
+"binary packages when you don't want to have all the binaries installed at "
+"once."
+msgstr ""
+"führt nur ein Upgrade von Paketen durch, die bereits auf dem System "
+"installiert sind, anstatt alle in der I<.changes>-Datei aufgeführten Pakete "
+"zu installieren. Nützlich für Pakete mit mehreren Binärpaketen, wenn Sie "
+"nicht möchten, dass alle Binärpakete auf einmal installiert werden."
+
+#. type: TP
+#: ../scripts/debi.1:95
+#, no-wrap
+msgid "B<--with-depends>"
+msgstr "B<--with-depends>"
+
+#. type: Plain text
+#: ../scripts/debi.1:98
+msgid "Attempt to satisfy the I<Depends> of a package when installing it."
+msgstr ""
+"versucht, die I<Depends> (Abhängigkeiten) eines Pakets bei der Installation "
+"aufzulösen."
+
+#. type: TP
+#: ../scripts/debi.1:98
+#, no-wrap
+msgid "B<--tool> I<tool>"
+msgstr "B<--tool> I<Werkzeug>"
+
+#. type: Plain text
+#: ../scripts/debi.1:102
+msgid ""
+"Use the specified I<tool> for installing the dependencies of the package(s) "
+"to be installed. By default, B<apt-get> is used."
+msgstr ""
+"benutzt das angegebene I<Werkzeug>, um die Abhängigkeiten der zu "
+"installierenden Pakete zu installieren. Standardmäßig wird B<apt-get> "
+"benutzt."
+
+#. type: Plain text
+#: ../scripts/debi.1:125
+msgid ""
+"This specifies the directory in which to look for the I<.changes> and I<."
+"deb> files, and is either an absolute path or relative to the top of the "
+"source tree. This corresponds to the B<--debs-dir> command line option. "
+"This directive could be used, for example, if you always use B<pbuilder> or "
+"B<svn-buildpackage> to build your packages. Note that it also affects "
+"B<debrelease>(1) in the same way, hence the strange name of the option."
+msgstr ""
+"Dies gibt das Verzeichnis an, in dem nach den I<.changes>- und I<.deb>-"
+"Dateien gesucht wird. Es ist entweder ein absoluter Pfad oder relativ zur "
+"obersten Ebene des Quellverzeichnisbaums. Dies entspricht der "
+"Befehlszeilenoption B<--debs-dir>. Diese Direktive kann zum Beispiel benutzt "
+"werden, falls Sie immer B<pbuilder> oder B<svn-buildpackage> verwenden, um "
+"Ihre Pakete zu bauen. Beachten Sie, dass es außerdem B<debrelease>(1) auf "
+"die gleiche Weise beeinflusst, daher der merkwürdige Name der Option."
+
+#. type: Plain text
+#: ../scripts/debi.1:135
+msgid "B<debpkg>(1), B<devscripts.conf>(5)"
+msgstr "B<debpkg>(1) und B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/debi.1:140
+msgid ""
+"B<debi> was originally written by Christoph Lameter E<lt>clameter@debian."
+"orgE<gt>. The now-defunct script B<debit> was originally written by James "
+"R. Van Zandt E<lt>jrv@vanzandt.mv.comE<gt>. They have been moulded into one "
+"script together with B<debc>(1) and parts extensively modified by Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"B<debi> wurde ursprünglich von Christoph Lameter E<lt>clameter@debian."
+"orgE<gt> geschrieben. Das heute nicht mehr funktionierende Skript B<debit> "
+"wurde ursprünglich von James R. Van Zandt E<lt>jrv@vanzandt.mv.comE<gt> "
+"geschrieben. Sie wurden zusammen mit B<debc>(1) zu einem Skript geformt und "
+"Teile davon ausgiebig durch Julian Gilbey E<lt>jdg@debian.orgE<gt> verändert."
+
+#. type: TH
+#: ../scripts/debpkg.1:1
+#, no-wrap
+msgid "DEBPKG"
+msgstr "DEBPKG"
+
+#. type: Plain text
+#: ../scripts/debpkg.1:4
+msgid "debpkg - wrapper for dpkg"
+msgstr "debpkg - Wrapper für Dpkg"
+
+#. type: Plain text
+#: ../scripts/debpkg.1:6
+msgid "B<debpkg> I<dpkg-options>"
+msgstr "B<debpkg> I<Dpkg-Optionen>"
+
+#. type: Plain text
+#: ../scripts/debpkg.1:12
+msgid ""
+"B<debpkg> simply invokes B<dpkg>(1) but first becomes superuser so that "
+"B<dpkg> is able to install and remove packages. It also cleans the "
+"environment and resets PATH to a sane default: \"/usr/sbin:/usr/bin:/sbin:/"
+"bin:/usr/bin/X11\" so that local versions of programs are not run by "
+"accident."
+msgstr ""
+"B<debpkg> ruft einfach B<dpkg>(1) auf, wird aber zuerst Superuser, so dass "
+"B<dpkg> in der Lage ist, Programme zu installieren und zu entfernen. "
+"Außerdem bereinigt es die Umgebung und setzt PATH auf eine vernünftige "
+"Vorgabe: »/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11«, so dass lokale "
+"Versionen von Programmen nicht aus Versehen ausgeführt werden."
+
+#. type: Plain text
+#: ../scripts/debpkg.1:17
+msgid ""
+"B<debpkg> must be given superuser privileges in some way to function "
+"properly. B<Access to debpkg with those privileges is the same as having "
+"superuser access to your machine.> B<debpkg> will abort if it finds that it "
+"neither being run by root nor setuid root."
+msgstr ""
+"B<debpkg> muss irgendwie Superuser-Rechte bekommen, damit es richtig "
+"funktioniert. B<Zugriff auf Debpkg mit diesen Rechten ist dasselbe, als wenn "
+"Sie Superuser-Zugriff auf Ihren Rechner hätten.> B<debpkg> wird abgebrochen, "
+"wenn es herausfindet, dass es weder durch Root noch per Setuid-Root "
+"ausgeführt wird."
+
+#. type: Plain text
+#: ../scripts/debpkg.1:23
+msgid ""
+"The B<devscripts> package has been designed to allow B<debpkg> to be made "
+"setuid root. This works by using a compiled wrapper script, which means "
+"that B<suidperl> is not required. See B<dpkg-statoverride>(8) if you wish "
+"to make this program setuid root. B<sudo> or B<super> could also "
+"conceivably be used."
+msgstr ""
+"Das Paket B<devscripts> wurde entworfen, um B<debpkg> zu ermöglichen, Setuid-"
+"Root zu sein. Dies funktioniert mittels eines kompilierten Wrapper-Skripts, "
+"was bedeutet, dass B<suidperl> nicht benötigt wird. Lesen Sie B<dpkg-"
+"statoverride>(8), falls Sie diesem Programm das Setuid-Root-Recht geben "
+"möchten. Es ist auch denkbar, dass B<sudo> oder B<super> verwendet werden."
+
+#. type: Plain text
+#: ../scripts/debpkg.1:25
+msgid ""
+"Christoph Lameter E<lt>clameter@debian.orgE<gt>; minor modifications made by "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Christoph Lameter E<lt>clameter@debian.orgE<gt>; kleinere Änderungen wurden "
+"von Julian Gilbey E<lt>jdg@debian.orgE<gt> vorgenommen."
+
+#. type: TH
+#: ../scripts/debrelease.1:1
+#, no-wrap
+msgid "DEBRELEASE"
+msgstr "DEBRELEASE"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:4
+msgid "debrelease - a wrapper around dupload or dput"
+msgstr "debrelease - ein Wrapper um Dupload oder Dput"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:6
+msgid "B<debrelease> [I<debrelease options>] [I<dupload/dput options>]"
+msgstr "B<debrelease> [I<Debrelease-Optionen>] [I<Dupload-/Dput-Optionen>]"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:15
+msgid ""
+"B<debrelease> is a simple wrapper around B<dupload> or B<dput>. It is "
+"called from within the source code tree of a package, and figures out the "
+"current version of a package. It then looks for the corresponding I<."
+"changes> file (which lists the files needed to upload in order to release "
+"the package) in the parent directory of the source code tree and calls "
+"B<dupload> or B<dput> with the I<.changes> file as parameter in order to "
+"perform the actual uploading."
+msgstr ""
+"B<debrelease> ist ein einfacher Wrapper um B<dupload> oder B<dput>. Es wird "
+"aus dem Quellcodeverzeichnisbaum eines Pakets heraus aufgerufen und findet "
+"die aktuelle Version eines Pakets heraus. Dann sucht es im übergeordneten "
+"Verzeichnis des Quellcodeverzeichnisbaums nach der entsprechenden I<."
+"changes>-Datei (die die Dateien auflistet, die zum Hochladen nötig sind) und "
+"ruft B<dupload> oder B<dput> mit der I<.changes>-Datei als Parameter auf, um "
+"das tatsächliche Hochladen durchzuführen."
+
+#. type: Plain text
+#: ../scripts/debrelease.1:20
+msgid ""
+"Options may be given to B<debrelease>; except for the ones listed below, "
+"they are passed on unchanged to B<dupload> or B<dput>. The B<devscripts> "
+"configuration files are also read by B<debrelease> as described below."
+msgstr ""
+"An B<debrelease> können Optionen übergeben werden; mit Ausnahme der unten "
+"aufgeführten werden sie unverändert an B<dupload> oder B<dput> "
+"weitergereicht. Die B<devscripts>-Konfigurationsdateien werden außerdem wie "
+"im Folgenden beschrieben durch B<debrelease> gelesen."
+
+#. type: Plain text
+#: ../scripts/debrelease.1:31
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debrelease> will climb the directory tree until it finds a I<debian/"
+"changelog> file. As a safeguard against stray files causing potential "
+"problems, it will examine the name of the parent directory once it finds the "
+"I<debian/changelog> file, and check that the directory name corresponds to "
+"the package name. Precisely how it does this is controlled by two "
+"configuration file variables B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and their corresponding command-line "
+"options B<--check-dirname-level> and B<--check-dirname-regex>."
+msgstr ""
+"Ebenso wie mehrere andere Skripte im Paket B<devscripts> wird B<debrelease> "
+"den Verzeichnisbaum emporsteigen, bis es eine I<debian/changelog>-Datei "
+"findet. Als eine Schutzmaßnahme gegen verirrte Dateien, die potenziell "
+"Probleme bereiten, wird es den Namen des übergeordneten Verzeichnisses "
+"untersuchen, sobald es eine I<debian/changelog>-Datei findet und prüfen, ob "
+"der Verzeichnisname dem Paketnamen entspricht. Wie dies genau geschieht, "
+"wird durch die beiden Konfigurationsdateivariablen "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> und B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> "
+"sowie ihre entsprechenden Befehlszeilenoptionen B<--check-dirname-level> und "
+"B<--check-dirname-regex> geregelt."
+
+#. type: TP
+#: ../scripts/debrelease.1:61 ../scripts/debrsign.1:31 ../scripts/debsign.1:68
+#, no-wrap
+msgid "B<-S>"
+msgstr "B<-S>"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:67
+msgid ""
+"If this option is used, or the default I<.changes> file is not found but a "
+"source-only I<.changes> file is present, then this source-only I<.changes> "
+"file will be uploaded instead of an arch-specific one."
+msgstr ""
+"Falls diese Option benutzt wird oder die Standard-I<.changes>-Datei nicht "
+"gefunden wurde, jedoch eine reine Quell-I<.changes>-Datei vorliegt, dann "
+"wird diese reine Quell-I<.changes>-Datei anstelle der "
+"architekturspezifischen hochgeladen."
+
+#. type: Plain text
+#: ../scripts/debrelease.1:75
+msgid ""
+"See B<dpkg-architecture>(1) for a description of these options. They affect "
+"the search for the I<.changes> file. They are provided to mimic the "
+"behaviour of B<dpkg-buildpackage> when determining the name of the I<."
+"changes> file. If a plain B<-t> is given, it is taken to be the B<dupload> "
+"host-specifying option, and therefore signifies the end of the B<debrelease>-"
+"specific options."
+msgstr ""
+"Eine Beschreibung dieser Optionen finden Sie unter B<dpkg-architecture>(1). "
+"Sie beeinflussen die Suche nach der I<.changes>-Datei, Sie werden "
+"bereitgestellt, um das Verhalten von B<dpkg-buildpackage> nachzuahmen, wenn "
+"der Name der I<.changes>-Datei bestimmt wird. Falls ein einfaches B<-t> "
+"angegeben wurde, wird sie von der rechnerangebenden B<dupload>-Option "
+"genommen und bedeutet daher das Ende der B<debrelease>-spezifischen Optionen."
+
+#. type: TP
+#: ../scripts/debrelease.1:75 ../scripts/debrsign.1:41 ../scripts/debsign.1:78
+#, no-wrap
+msgid "B<--multi>"
+msgstr "B<--multi>"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:81
+msgid ""
+"Multiarch I<.changes> mode: This signifies that B<debrelease> should use the "
+"most recent file with the name pattern I<package_version_*+*.changes> as the "
+"I<.changes> file, allowing for the I<.changes> files produced by B<dpkg-"
+"cross>."
+msgstr ""
+"Multiarch-Änderungsmodus: Dies bedeutet, dass B<debrelease> die aktuellste "
+"Datei mit dem Namensmuster I<Paketversion_*+*.changes> als I<.changes>-Datei "
+"benutzen soll, was durch B<dpkg-cross> erstellte I<.changes>-Dateien "
+"ermöglicht."
+
+#. type: TP
+#: ../scripts/debrelease.1:111
+#, no-wrap
+msgid "B<DEBRELEASE_UPLOADER>"
+msgstr "B<DEBRELEASE_UPLOADER>"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:116
+msgid ""
+"The currently recognised values are I<dupload> and I<dput>, and it specifies "
+"which uploader program should be used. It corresponds to the B<--dupload> "
+"and B<--dput> command line options."
+msgstr ""
+"Die derzeit erkannten Werte sind I<dupload> sowie I<dput> und es gibt an, "
+"welches Programm zum Hochladen verwendet werden soll. Es entspricht den "
+"Befehlszeilenoptionen B<--dupload> und B<--dput>."
+
+#. type: Plain text
+#: ../scripts/debrelease.1:125
+msgid ""
+"This specifies the directory in which to look for the I<.changes> and I<."
+"deb> files, and is either an absolute path or relative to the top of the "
+"source tree. This corresponds to the B<--debs-dir> command line option. "
+"This directive could be used, for example, if you always use B<pbuilder> or "
+"B<svn-buildpackage> to build your packages. Note that it also affects "
+"B<debc>(1) and B<debi>(1)."
+msgstr ""
+"Dies gibt das Verzeichnis an, in dem nach den I<.changes>- und I<.deb>-"
+"Dateien gesucht wird. Es ist entweder ein absoluter Pfad oder relativ zur "
+"obersten Ebene des Quellverzeichnisbaums. Dies entspricht der "
+"Befehlszeilenoption B<--debs-dir>. Diese Direktive kann zum Beispiel benutzt "
+"werden, falls Sie immer B<pbuilder> oder B<svn-buildpackage> verwenden, um "
+"Ihre Pakete zu bauen. Beachten Sie, dass es außerdem B<debc>(1) und "
+"B<debi>(1) auf die gleiche Weise beeinflusst."
+
+#. type: Plain text
+#: ../scripts/debrelease.1:136
+msgid "B<dput>(1), B<dupload>(1), B<devscripts.conf>(5)"
+msgstr "B<dput>(1), B<dupload>(1), B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:138
+msgid ""
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>, based on the original B<release> "
+"script by Christoph Lameter E<lt>clameter@debian.orgE<gt>."
+msgstr ""
+"Julian Gilbey E<lt>jdg@debian.orgE<gt> auf Basis des Original-B<release>-"
+"Skripts von Christoph Lameter E<lt>clameter@debian.orgE<gt>."
+
+#. type: Content of the dhfirstname entity
+#: ../scripts/deb-reversion.dbk:30
+msgid "<firstname>martin f.</firstname>"
+msgstr "<firstname>martin f.</firstname>"
+
+#. type: Content of the dhsurname entity
+#: ../scripts/deb-reversion.dbk:31
+msgid "<surname>krafft</surname>"
+msgstr "<surname>krafft</surname>"
+
+#. type: Content of the dhmaintfirstname entity
+#: ../scripts/deb-reversion.dbk:32
+msgid "<firstname>Julian</firstname>"
+msgstr "<firstname>Julian</firstname>"
+
+#. type: Content of the dhmaintsurname entity
+#: ../scripts/deb-reversion.dbk:33
+msgid "<surname>Gilbey</surname>"
+msgstr "<surname>Gilbey</surname>"
+
+#. type: Content of the dhdate entity
+#: ../scripts/deb-reversion.dbk:35
+msgid "<date>Feb 13, 2006</date>"
+msgstr "<date>13. Feb. 2006</date>"
+
+#. type: Content of the dhsection entity
+#: ../scripts/deb-reversion.dbk:38
+msgid "<manvolnum>1</manvolnum>"
+msgstr "<manvolnum>1</manvolnum>"
+
+#. type: Content of the dhemail entity
+#: ../scripts/deb-reversion.dbk:39
+msgid "<email>madduck@debian.org</email>"
+msgstr "<email>madduck@debian.org</email>"
+
+#. type: Content of the dhmaintemail entity
+#: ../scripts/deb-reversion.dbk:40
+msgid "<email>jdg@debian.org</email>"
+msgstr "<email>jdg@debian.org</email>"
+
+#. type: Content of the dhusername entity
+#: ../scripts/deb-reversion.dbk:41
+msgid "martin f. krafft"
+msgstr "martin f. krafft"
+
+#. type: Content of the dhmaintusername entity
+#: ../scripts/deb-reversion.dbk:42
+msgid "Julian Gilbey"
+msgstr "Julian Gilbey"
+
+#. type: Content of the dhucpackage entity
+#: ../scripts/deb-reversion.dbk:43
+msgid "<refentrytitle>deb-reversion</refentrytitle>"
+msgstr "<refentrytitle>deb-reversion</refentrytitle>"
+
+#. type: Content of the dhcommand entity
+#: ../scripts/deb-reversion.dbk:44 ../scripts/deb-reversion.dbk:45
+msgid "deb-reversion"
+msgstr "deb-reversion"
+
+#. type: Content of the debian entity
+#: ../scripts/deb-reversion.dbk:47
+msgid "<productname>Debian</productname>"
+msgstr "<productname>Debian</productname>"
+
+#. type: Content of the gnu entity
+#: ../scripts/deb-reversion.dbk:48
+msgid "<acronym>GNU</acronym>"
+msgstr "<acronym>GNU</acronym>"
+
+#. type: Content of the gpl entity
+#: ../scripts/deb-reversion.dbk:49
+msgid "&gnu; <acronym>GPL</acronym>"
+msgstr "&gnu; <acronym>GPL</acronym>"
+
+#. type: Content of: <refentry><refentryinfo><address>
+#: ../scripts/deb-reversion.dbk:55
+#, no-wrap
+msgid ""
+" &dhemail;\n"
+" "
+msgstr ""
+" &dhemail;\n"
+" "
+
+#. type: Content of: <refentry><refentryinfo>
+#: ../scripts/deb-reversion.dbk:54
+msgid "<placeholder type=\"address\" id=\"0\"/> &dhdate;"
+msgstr "<placeholder type=\"address\" id=\"0\"/> &dhdate;"
+
+#. type: Content of: <refentry><refnamediv><refname>
+#: ../scripts/deb-reversion.dbk:65
+msgid "&dhcommand;"
+msgstr "&dhcommand;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: ../scripts/deb-reversion.dbk:67
+msgid "simple script to change the version of a .deb file"
+msgstr "einfaches Skript, um die Version einer .deb-Datei zu ändern"
+
+#. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
+#: ../scripts/deb-reversion.dbk:72
+msgid ""
+"<command>&dhcommand;</command> <arg choice=\"opt\"> <replaceable>options</"
+"replaceable> </arg> <replaceable> .deb-file</replaceable> <arg choice=\"opt"
+"\" rep=\"repeat\"><replaceable>log message</replaceable></arg>"
+msgstr ""
+"<command>&dhcommand;</command> <arg choice=\"opt\"> <replaceable>Optionen</"
+"replaceable> </arg> <replaceable> .deb-Datei</replaceable> <arg choice=\"opt"
+"\" rep=\"repeat\"><replaceable>log message</replaceable></arg>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:85
+msgid ""
+"<command>&dhcommand;</command> unpacks the specified <filename>.deb</"
+"filename> file, changes the version number in the relevant locations, "
+"appends a Debian <filename>changelog</filename> entry with the specified "
+"contents, and creates a new <filename>.deb</filename> file with the updated "
+"version."
+msgstr ""
+"<command>&dhcommand;</command> entpackt die angegebene <filename>.deb</"
+"filename>-Datei, ändert die Versionsnummer an den relevanten Stellen, hängt "
+"einen Debian-<filename>changelog</filename>-Eintrag mit dem angegebenen "
+"Inhalt an und erstellt eine neue <filename>.deb</filename>-Datei mit der "
+"aktualisierten Version."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:92
+msgid ""
+"By default, the tool creates a new version number suitable for local "
+"changes, such that the new package will be greater than the current one, but "
+"lesser than any future, official Debian packages. With <option>-v "
+"<replaceable class=\"parameter\">version</replaceable></option>, the version "
+"number can be specified directly. On the other hand, the <option>-c</"
+"option> simply calculates the new version number but does not generate a new "
+"package."
+msgstr ""
+"Standardmäßig erstellt das Werkzeug eine für lokale Änderungen angemessene "
+"neue Versionsnummer, so dass die des neuen Pakets größer sein wird, als die "
+"des aktuellen, aber kleiner als die irgendwelcher zukünftiger offizieller "
+"Debian-Pakete. Mit <option>-v <replaceable class=\"parameter\">Version</"
+"replaceable></option> kann die Versionsnummer direkt angegeben werden. "
+"Andererseits berechnet <option>-c</option> einfach die neue Versionsnummer, "
+"erzeugt aber kein neues Paket."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:103
+msgid ""
+"When building a <filename>.deb</filename> file, root privileges are required "
+"in order to have the correct permissions and ownerships in the resulting "
+"<filename>.deb</filename> file. This can be achieved either by running "
+"<command>&dhcommand;</command> as root or running under "
+"<citerefentry><refentrytitle>fakeroot</refentrytitle> <manvolnum>1</"
+"manvolnum></citerefentry>, as 'fakeroot &dhcommand; foo.deb'."
+msgstr ""
+"Wenn eine <filename>.deb</filename>-Datei gebaut wird, sind Root-Rechte "
+"nötig, um die korrekten Zugriffs- und Besitzrechte in der resultierenden "
+"<filename>.deb</filename>-Datei zu bekommen. Dies kann entweder durch "
+"Ausführen von <command>&dhcommand;</command> als Root oder durch Ausführen "
+"unter <citerefentry><refentrytitle>fakeroot</refentrytitle> <manvolnum>1</"
+"manvolnum></citerefentry> als »fakeroot &dhcommand; foo.deb« erreicht werden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:113
+msgid ""
+"With <option>-k <replaceable class=\"parameter\">hook</replaceable></"
+"option>, a hook script may be specified, which is run on the unpacked binary "
+"packages just before it is repacked. If you want to write changelog entries "
+"from within the hook, use '<command>dch -a -- <replaceable class=\"parameter"
+"\">your message</replaceable></command>'. (Alternatively, do not give a "
+"changelog entry on the <command>&dhcommand;</command> command line and "
+"<command>dch</command> will be called automatically.) The hook command must "
+"be placed in quotes if it has more than one word; it is called via "
+"<command>sh -c</command>."
+msgstr ""
+"Mit <option>-k <replaceable class=\"parameter\">Hook</replaceable></option> "
+"kann ein Hook-Skript angegeben werden, das auf den entpackten Binärpaketen "
+"ausgeführt wird, unmittelbar bevor sie erneut gepackt werden. Falls Sie "
+"Changelog-Einträge aus dem Hook heraus schreiben möchten, verwenden Sie "
+"»<command>dch -a -- <replaceable class=\"parameter\">Ihre Nachricht</"
+"replaceable></command>«. (Geben Sie alternativ auf der <command>&dhcommand;</"
+"command>-Befehlszeile keinen Changelog-Eintrag an, dann wird <command>dch</"
+"command> automatisch aufgerufen.) Der Hook-Befehl muss in Anführungszeichen "
+"gesetzt werden, falls er aus mehr als einem Wort besteht; er wird per "
+"<command>sh -c</command> aufgerufen."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:131
+msgid ""
+"<option>-v</option> <replaceable class=\"parameter\">new-version</"
+"replaceable>"
+msgstr ""
+"<option>-v</option> <replaceable class=\"parameter\">neue_Version</"
+"replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:132
+msgid ""
+"<option>--new-version</option> <replaceable class=\"parameter\">new-version</"
+"replaceable>"
+msgstr ""
+"<option>--new-version</option> <replaceable class=\"parameter"
+"\">neue_Version</replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:135
+msgid ""
+"Specifies the version number to be used for the new version. Passed to "
+"<citerefentry> <refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry>."
+msgstr ""
+"gibt die Versionsnummer an, die für die neue Version benutzt wird. Wird an "
+"<citerefentry> <refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry> übergeben."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:145
+msgid ""
+"<option>-o</option> <replaceable class=\"parameter\">old-version</"
+"replaceable>"
+msgstr ""
+"<option>-o</option> <replaceable class=\"parameter\">alte_Version</"
+"replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:146
+msgid ""
+"<option>--old-version</option> <replaceable class=\"parameter\">old-version</"
+"replaceable>"
+msgstr ""
+"<option>--old-version</option> <replaceable class=\"parameter"
+"\">alte_Version</replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:149
+msgid ""
+"Specifies the version number to be used as the old version instead of the "
+"version stored in the <filename>.deb</filename>'s <filename>control</"
+"filename> file."
+msgstr ""
+"gibt die Versionsnummer an, die als alte Version anstelle der in der Datei "
+"<filename>control</filename> des <filename>.deb</filename>s gespeicherten "
+"Version verwendet werden soll."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:157
+msgid "<option>-c</option>"
+msgstr "<option>-c</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:158
+msgid "<option>--calculate-only</option>"
+msgstr "<option>--calculate-only</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:161
+msgid ""
+"Only calculate and display the new version number which would be used; do "
+"not build a new <filename>.deb</filename> file. Cannot be used in "
+"conjunction with <option>-v</option>."
+msgstr ""
+"berechnet nur die neue Versionsnummer, die benutzt würde, und zeigt sie an; "
+"baut keine neue <filename>.deb</filename>-Datei; kann nicht zusammen mit "
+"<option>-v</option> benutzt werden."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:169
+msgid ""
+"<option>-s</option> <replaceable class=\"parameter\">string</replaceable>"
+msgstr ""
+"<option>-s</option> <replaceable class=\"parameter\">Zeichenkette</"
+"replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:170
+msgid ""
+"<option>--string</option> <replaceable class=\"parameter\">string</"
+"replaceable>"
+msgstr ""
+"<option>--string</option> <replaceable class=\"parameter\">Zeichenkette</"
+"replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:173
+msgid ""
+"Instead of using 'LOCAL.' as the version string to append to the old version "
+"number, use <replaceable class=\"parameter\">string</replaceable> instead."
+msgstr ""
+"benutzt als Versionszeichenkette zum Anhängen an die alte Versionsnummer "
+"<replaceable class=\"parameter\">Zeichenkette</replaceable> anstelle von "
+"»LOCAL.«."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:181
+msgid ""
+"<option>-k</option> <replaceable class=\"parameter\">hook-command</"
+"replaceable>"
+msgstr ""
+"<option>-k</option> <replaceable class=\"parameter\">Hook-Befehl</"
+"replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:182
+msgid ""
+"<option>--hook</option> <replaceable class=\"parameter\">hook-command</"
+"replaceable>"
+msgstr ""
+"<option>--hook</option> <replaceable class=\"parameter\">Hook-Befehl</"
+"replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:185
+msgid ""
+"A hook command to run after unpacking the old <filename>.deb</filename> file "
+"and modifying the <filename>changelog</filename>, and before packing up the "
+"new <filename>.deb</filename> file. Must be in quotes if it is more than "
+"one (shell) word. Only one hook command may be specified; if you want to "
+"perform more than this, you could specify 'bash' as the hook command, and "
+"you will then be given a shell to work in."
+msgstr ""
+"ein Hook-Befehl, der nach dem Entpacken der alten <filename>.deb</filename>-"
+"Datei und dem Ändern des <filename>changelog</filename> ausgeführt wird und "
+"bevor die neue <filename>.deb</filename>-Datei entpackt wird. Muss in "
+"Anführungszeichen stehen, falls er aus mehr als einem (Shell-)Wort besteht. "
+"Es kann nur ein Hook-Befehl angegeben werden; falls Sie mehr als diesen "
+"einen ausführen möchten, könnten Sie »bash« als Hook-Befehl angeben, dann "
+"erhalten Sie eine Shell, in der Sie arbeiten können."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:197
+msgid "<option>-D</option>"
+msgstr "<option>-D</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:198
+msgid "<option>--debug</option>"
+msgstr "<option>--debug</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:201
+msgid ""
+"Pass <option>--debug</option> to <citerefentry> <refentrytitle>dpkg-deb</"
+"refentrytitle> <manvolnum>1</manvolnum> </citerefentry>."
+msgstr ""
+"übergibt <option>--debug</option> an <citerefentry> <refentrytitle>dpkg-deb</"
+"refentrytitle> <manvolnum>1</manvolnum> </citerefentry>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:211
+msgid "<option>-b</option>"
+msgstr "<option>-b</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:212
+msgid "<option>--force-bad-version</option>"
+msgstr "<option>--force-bad-version</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:215
+msgid ""
+"Pass <option>--force-bad-version</option> to <citerefentry> "
+"<refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </citerefentry>"
+msgstr ""
+"übergibt <option>--force-bad-version</option> an <citerefentry> "
+"<refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </citerefentry>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:225
+msgid "<option>-h</option>"
+msgstr "<option>-h</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:226
+msgid "<option>--help</option>"
+msgstr "<option>--help</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:229
+msgid "Display usage information."
+msgstr "zeigt Aufrufinformationen"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:235
+msgid "<option>-V</option>"
+msgstr "<option>-V</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:236
+msgid "<option>--version</option>"
+msgstr "<option>--version</option>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:249
+msgid ""
+"<citerefentry> <refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry>, <citerefentry> <refentrytitle>dpkg-deb</refentrytitle> "
+"<manvolnum>1</manvolnum> </citerefentry>, <citerefentry> "
+"<refentrytitle>fakeroot</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry>"
+msgstr ""
+"<citerefentry> <refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry>, <citerefentry> <refentrytitle>dpkg-deb</refentrytitle> "
+"<manvolnum>1</manvolnum> </citerefentry>, <citerefentry> "
+"<refentrytitle>fakeroot</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry>"
+
+#. type: Content of: <refentry><refsect1><title>
+#: ../scripts/deb-reversion.dbk:265
+msgid "DISCLAIMER"
+msgstr "HAFTUNGSAUSSCHLUSS"
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:267
+msgid ""
+"&dhpackage; is a tool intended to help porters with modifying packages for "
+"other architectures, and to augment deb-repack, which creates modified "
+"packages with identical version numbers as the official packages. Chaos will "
+"ensue! With &dhpackage;, a proper version number can be selected, which does "
+"not obstruct the next official release but can be specifically pinned with "
+"APT or held with dpkg."
+msgstr ""
+"&dhpackage; ist ein Werkzeug, das Portierern helfen soll, Pakete für andere "
+"Architekturen zu ändern und deb-repack zu ergänzen, das veränderte Pakete "
+"mit identischen Versionsnummern als offizielle Pakete erstellt. Chaos wird "
+"folgen! Mit &dhpackage; kann eine ordnungsgemäße Versionsnummer ausgewählt "
+"werden, die die nächste offizielle Veröffentlichung nicht behindert, aber "
+"eigens mit APT-Pinning behandelt oder mit Dpkg gehalten werden kann."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:276
+msgid ""
+"Please take note that &dhpackage; does not come without problems. While it "
+"works fine in most cases, it may just not in yours. Especially, please "
+"consider that it changes binary packages (only!) and hence can break strict "
+"versioned dependencies between binary packages generated from the same "
+"source."
+msgstr ""
+"Bitte nehmen Sie zur Kenntnis, dass &dhpackage; nicht ohne Probleme "
+"daherkommt. Obwohl es in den meisten Fällen gut funktioniert, könnte das "
+"gerade bei Ihnen anders sein. Beachten Sie insbesondere, das es (nur!) "
+"Binärpakete ändert und daher Abhängigkeiten mit strenger Berücksichtigung "
+"der Versionen zwischen Binärpaketen, die aus der selben Quelle erzeugt "
+"wurden, zerstört."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:283
+msgid ""
+"You are using this tool at your own risk and I shall not shed a tear if your "
+"gerbil goes up in flames, your microwave attacks the stereo, or the angry "
+"slamming of your fist spills your coffee into the keyboard, which sets off a "
+"chain reaction resulting in a vast amount of money transferred from your "
+"account to mine."
+msgstr ""
+"Sie benutzen dieses Werkzeug auf eigene Gefahr und sollten keine Träne "
+"vergießen, falls Ihre Rennmaus in Flammen aufgeht, Ihre Mikrowelle Ihre "
+"Stereoanlage angreift oder der wütende Aufschlag Ihrer Faust Kaffee in Ihre "
+"Tastatur schüttet, was eine Kettenreaktion auslöst, die dazu führt, dass "
+"eine gewaltige Geldsumme von Ihrem Konto auf meins überwiesen wird."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:295
+msgid ""
+"&dhpackage; is Copyright 2004-5 by &dhusername; &dhemail; and modifications "
+"are Copyright 2006 by &dhmaintusername; &dhmaintemail;."
+msgstr ""
+"Das Copyright 2004/2005 liegt bei &dhusername; &dhemail; und Änderungen "
+"unterliegen dem Copyright 2006 von &dhmaintusername; &dhmaintemail;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:300
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the Artistic License: <ulink>http://www.opensource.org/licenses/"
+"artistic-license.php</ulink>. On Debian systems, the complete text of the "
+"Artistic License can be found in <filename>/usr/share/common-licenses/"
+"Artistic</filename>."
+msgstr ""
+"Die Rechte für das Kopieren, Weitergeben und/oder Ändern dieses Dokuments "
+"werden unter den Bedingungen der Artistic License gewährt: <ulink>http://www."
+"opensource.org/licenses/artistic-license.php</ulink>. Auf Debian-Systemen "
+"kann der komplette Text der Artistic License unter <filename>/usr/share/"
+"common-licenses/Artistic</filename> gefunden werden."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:309
+msgid ""
+"This manual page was written by &dhusername; &dhemail; and modified by "
+"&dhmaintusername; &dhmaintemail;."
+msgstr ""
+"Diese Handbuchseite wurde von &dhusername; &dhemail; geschrieben und durch "
+"&dhmaintusername; &dhmaintemail; geändert."
+
+#. type: TH
+#: ../scripts/debrsign.1:1
+#, no-wrap
+msgid "DEBRSIGN"
+msgstr "DEBRSIGN"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:4
+msgid "debrsign - remotely sign a Debian .changes and .dsc file pair using SSH"
+msgstr ""
+"debrsign - signiert mittels SSH ein Debian-.changes- und .dsc-Dateipaar aus "
+"der Ferne"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:7
+msgid ""
+"B<debrsign> [I<options>] [I<user>B<@>]I<remotehost> [I<changes-file>|I<dsc-"
+"file>]"
+msgstr ""
+"B<debrsign> [I<Optionen>] [I<Benutzer>B<@>]I<ferner_Rechner> [I<Changes-"
+"Datei>|I<Dsc-Datei>]"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:15
+msgid ""
+"B<debrsign> takes either an unsigned I<.dsc> file or an unsigned I<.changes> "
+"file and the associated unsigned I<.dsc> file (found by replacing the "
+"architecture name and I<.changes> by I<.dsc>) if it appears in the I<."
+"changes> file and signs them by copying them to the remote machine using "
+"B<ssh>(1) and remotely running B<debsign>(1) on that machine. All options "
+"not listed below are passed to the B<debsign> program on the remote machine."
+msgstr ""
+"B<debrsign> nimmt entweder eine nicht signierte I<.dsc>-Datei oder eine "
+"nicht signierte I<.changes>-Datei und die zugehörige I<.dsc>-Datei entgegen "
+"(gefunden durch Ersetzen des Architekturnamens und I<.changes> durch I<."
+"dsc>), falls sie in der I<.changes>-Datei auftaucht, und signiert sie, indem "
+"sie mittels B<ssh>(1) auf den fernen Rechner kopiert werden und "
+"B<debsign>(1) aus der Ferne auf diesem Rechner ausgeführt wird. Alle "
+"Optionen, die nicht nachfolgend aufgeführt sind, werden an das Programm "
+"B<debsign> auf dem fernen Rechner weitergegeben."
+
+#. type: Plain text
+#: ../scripts/debrsign.1:19
+msgid ""
+"If a I<.changes> or I<.dsc> file is specified, it is signed, otherwise, "
+"I<debian/changelog> is parsed to determine the name of the I<.changes> file "
+"to look for in the parent directory."
+msgstr ""
+"Falls eine I<.changes>- oder I<.dsc>-Datei angegeben wurde, wird sie "
+"signiert, andernfalls wird I<debian/changelog> ausgewertet, um den Namen der "
+"I<.changes>-Datei zu bestimmen, nach der im übergeordneten Verzeichnis "
+"gesucht werden soll."
+
+#. type: Plain text
+#: ../scripts/debrsign.1:25
+msgid ""
+"This utility is useful if a developer must build a package on one machine "
+"where it is unsafe to sign it; they need then only transfer the small I<."
+"dsc> and I<.changes> files to a safe machine and then use the B<debsign> "
+"program to sign them before transferring them back. This program automates "
+"this process."
+msgstr ""
+"Dieses Hilfswerkzeug ist nützlich, falls ein Entwickler ein Paket auf einem "
+"Rechner bauen muss, der zum Signieren zu unsicher ist; er muss dann nur die "
+"kleinen I<.dsc>- und I<.changes>-Dateien auf den sicheren Rechner übertragen "
+"und dann das Programm B<debsign> verwenden, um sie vor der Rückübertragung "
+"zu signieren. Dieses Programm automatisiert diesen Prozess."
+
+#. type: Plain text
+#: ../scripts/debrsign.1:30
+msgid ""
+"To do it the other way round, that is to connect to an unsafe machine to "
+"download the I<.dsc> and I<.changes> files, to sign them locally and then to "
+"transfer them back, see the B<debsign>(1) program, which can do this task."
+msgstr ""
+"Um es andersherum durchzuführen,d.h. sich mit einem unsicheren Rechner zu "
+"verbinden, um die I<.dsc>- und I<.changes>-Dateien herunterzuladen, sie "
+"lokal zu signieren und dann zurückzuübertragen, siehe das Programm "
+"B<debsign>(1), das diese Aufgabe erledigen kann."
+
+#. type: Plain text
+#: ../scripts/debrsign.1:35 ../scripts/debsign.1:72
+msgid ""
+"Look for a source-only I<.changes> file instead of a binary-build I<."
+"changes> file."
+msgstr ""
+"sucht nach einer reinen Quell-I<.changes>-Datei anstatt einer I<.changes>-"
+"Datei eines Binärbaus."
+
+#. type: Plain text
+#: ../scripts/debrsign.1:47
+msgid ""
+"Multiarch I<.changes> mode: This signifies that B<debrsign> should use the "
+"most recent file with the name pattern I<package_version_*+*.changes> as the "
+"I<.changes> file, allowing for the I<.changes> files produced by B<dpkg-"
+"cross>."
+msgstr ""
+"Multiarch-Änderungsmodus: Dies bedeutet, dass B<debrsign> die aktuellste "
+"Datei mit dem Namensmuster I<Paket_Version_*+*.changes> als I<.changes>-"
+"Datei verwenden soll, was durch B<dpkg-cross> erstellte I<.changes>-Dateien "
+"ermöglicht."
+
+#. type: TP
+#: ../scripts/debrsign.1:47
+#, no-wrap
+msgid "B<--path >I<remote-path>"
+msgstr "B<--path >I<ferner_Pfad>"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:50
+msgid "Specify a path to the GPG binary on the remote host."
+msgstr "gibt einen Pfad zum GPG-Programm auf dem fernen Rechner an."
+
+#. type: TP
+#: ../scripts/debrsign.1:53
+#, no-wrap
+msgid "B<Other options>"
+msgstr "B<andere Optionen>"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:57
+msgid "All other options are passed on to B<debsign> on the remote machine."
+msgstr ""
+"Alle anderen Optionen werden B<debsign> auf dem fernen Rechner übergeben."
+
+#. type: TP
+#: ../scripts/debrsign.1:63
+#, no-wrap
+msgid "B<DEBRSIGN_PGP_PATH>"
+msgstr "B<DEBRSIGN_PGP_PATH>"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:66
+msgid "Equivalent to passing B<--path> on the command line (see above.)"
+msgstr ""
+"entspricht der Übergabe von B<--path> auf der Befehlszeile (siehe oben)."
+
+#. type: Plain text
+#: ../scripts/debrsign.1:70
+msgid "B<debsign>(1), B<dpkg-architecture>(1), B<ssh>(1)"
+msgstr "B<debsign>(1), B<dpkg-architecture>(1) und B<ssh>(1)"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:72 ../scripts/debsign.1:147
+msgid ""
+"This program was written by Julian Gilbey E<lt>jdg@debian.orgE<gt> and is "
+"copyright under the GPL, version 2 or later."
+msgstr ""
+"Dieses Programm wurde von Julian Gilbey E<lt>jdg@debian.orgE<gt> geschrieben "
+"und unterliegt dem Copyright gemäß der GPL, Version 2 oder später."
+
+#. type: TH
+#: ../scripts/debsign.1:1
+#, no-wrap
+msgid "DEBSIGN"
+msgstr "DEBSIGN"
+
+#. type: Plain text
+#: ../scripts/debsign.1:4
+msgid "debsign - sign a Debian .changes and .dsc file pair using GPG"
+msgstr ""
+"debsign - signiert ein Debian-.changes- und -.dsc-Dateipaar mittels GPG"
+
+#. type: Plain text
+#: ../scripts/debsign.1:6
+msgid ""
+"B<debsign> [I<options>] [I<changes-file>|I<dsc-file>|I<commands-file> ...]"
+msgstr ""
+"B<debsign> [I<Optionen>] [I<Changes-Datei>|I<Dsc-Datei>|I<Befehlsdatei> …]"
+
+#. type: Plain text
+#: ../scripts/debsign.1:16
+msgid ""
+"B<debsign> mimics the signing aspects (and bugs) of B<dpkg-"
+"buildpackage>(1). It takes either an unsigned I<.dsc> file or an unsigned "
+"I<.changes> file (along with the associated unsigned I<.dsc> file found by "
+"replacing the architecture name and I<.changes> by I<.dsc> if it appears in "
+"the I<.changes> file), and signs them using the GNU Privacy Guard. It is "
+"careful to calculate the size and checksums of the newly signed I<.dsc> file "
+"and replace the original values in the I<.changes> file."
+msgstr ""
+"B<debsign> ahmt die Signierungsgesichtspunkte (und Fehler) von B<dpkg-"
+"buildpackage>(1) nach. Es nimmt entweder eine nicht signierte I<.dsc>-Datei "
+"oder eine nicht signierte I<.changes>-Datei entgegen (neben der zugehörigen "
+"nicht signierten I<.dsc>-Datei, die durch Ersetzen des Architekturnamens und "
+"I<.changes> durch I<.dsc>, falls sie in der I<.changes>-Datei auftaucht) und "
+"signiert sie mittels des GNU Privacy Guards. Es ist achtsam, die Größe der "
+"Prüfsummen der neu signierten I<.dsc>-Datei zu berechnen und die "
+"Originalwerte in der I<.changes>-Datei zu ersetzen."
+
+#. type: Plain text
+#: ../scripts/debsign.1:21
+msgid ""
+"If a I<.changes>, I<.dsc> or I<.commands> file is specified, it is signed, "
+"otherwise, I<debian/changelog> is parsed to determine the name of the I<."
+"changes> file to look for in the parent directory."
+msgstr ""
+"Falls eine I<.changes>-, I<.dsc>- oder I<.commands>-Datei angegeben wurde, "
+"wird sie signiert, andernfalls wird I<debian/changelog> ausgewertet, um den "
+"Namen der I<.changes>-Datei zu bestimmen, nach der im übergeordneten "
+"Verzeichnis gesucht werden soll."
+
+#. type: Plain text
+#: ../scripts/debsign.1:25
+msgid ""
+"If a I<.commands> file is specified it is first validated (see the details "
+"at I<ftp://ftp.upload.debian.org/pub/UploadQueue/README>), and the name "
+"specified in the Uploader field is used for signing."
+msgstr ""
+"Falls eine I<.commands>-Datei angegeben wurde, wird sie zuerst validiert "
+"(Einzelheiten finden Sie unter I<ftp://ftp.upload.debian.org/pub/UploadQueue/"
+"README>). Der im Feld »Uploader« angegebene Name wird für das Signieren "
+"verwendet."
+
+#. type: Plain text
+#: ../scripts/debsign.1:36
+msgid ""
+"This utility is useful if a developer must build a package on one machine "
+"where it is unsafe to sign it; they need then only transfer the small I<."
+"dsc> and I<.changes> files to a safe machine and then use the B<debsign> "
+"program to sign them before transferring them back. This process can be "
+"automated in two ways. If the files to be signed live on the B<remote> "
+"machine, the B<-r> option may be used to copy them to the local machine and "
+"back again after signing. If the files live on the B<local> machine, then "
+"they may be transferred to the remote machine for signing using "
+"B<debrsign>(1)."
+msgstr ""
+"Dieses Hilfswerkzeug ist nützlich, falls ein Entwickler ein Paket auf einem "
+"Rechner bauen muss, der nicht sicher genug ist, um es zu signieren; er muss "
+"dann nur die kleinen I<.dsc>- und I<.changes>-Dateien an einen sicheren "
+"Rechner übertragen und dann das Programm B<debsign> verwenden, um sie vor "
+"der Rückübertragung zu signieren. Dieser Prozess kann auf zwei Arten "
+"automatisiert werden. Falls die Dateien zum Signieren auf dem B<fernen> "
+"Rechner liegen, kann die Option B<-r> benutzt werden, um sie auf den lokalen "
+"Rechner und nach dem Signieren zurück zu kopieren. Falls die Dateien auf dem "
+"B<lokalen> Rechner liegen, können sie auf den fernen Rechner übertragen "
+"werden, um sie mittels B<debrsign>(1) zu signieren."
+
+#. type: Plain text
+#: ../scripts/debsign.1:39
+msgid ""
+"This program can take default settings from the B<devscripts> configuration "
+"files, as described below."
+msgstr ""
+"Dieses Programm kann Standardeinstellungen der B<devscripts>-"
+"Konfigurationsdateien übernehmen, wie nachfolgend beschrieben."
+
+#. type: TP
+#: ../scripts/debsign.1:40
+#, no-wrap
+msgid "B<-r >[I<username>B<@>]I<remotehost>"
+msgstr "B<-r >[I<Benutzername>B<@>]I<ferner_Rechner>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:48
+msgid ""
+"The I<.changes> and I<.dsc> files live on the specified remote host. In "
+"this case, a I<.changes> file must be explicitly named, with an absolute "
+"directory or one relative to the remote home directory. B<scp> will be used "
+"for the copying. The [I<username>B<@>]I<remotehost>B<:>I<changes> syntax is "
+"permitted as an alternative. Wildcards (B<*> etc.) are allowed."
+msgstr ""
+"Die I<.changes>- und I<.dsc>-Dateien liegen auf dem angegebenen Rechner. In "
+"diesem Fall muss explizit eine I<.changes>-Datei mit einem absoluten Pfad "
+"oder relativ zur obersten Ebene des fernen Home-Verzeichnisbaums benannt "
+"werden. Zum Kopieren wird B<scp> verwendet. Als eine Alternative ist die "
+"Syntax [I<Benutzername>B<@>]I<ferner_Rechner>B<:>I<changes> zulässig. "
+"Platzhalter (B<*> etc.) sind erlaubt."
+
+#. type: TP
+#: ../scripts/debsign.1:48
+#, no-wrap
+msgid "B<-p>I<progname>"
+msgstr "B<-p>I<Programmname>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:52
+msgid ""
+"When B<debsign> needs to execute GPG to sign it will run I<progname> "
+"(searching the B<PATH> if necessary), instead of B<gpg>."
+msgstr ""
+"Wenn B<debsign> zum Signieren GPG ausführen muss, wird es I<Programmname> "
+"(dabei durchsucht es B<PATH>, falls nötig) anstelle von B<gpg> ausführen."
+
+#. type: TP
+#: ../scripts/debsign.1:52
+#, no-wrap
+msgid "B<-m>I<maintainer>"
+msgstr "B<-m>I<Paketbetreuer>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:61
+msgid ""
+"Specify the maintainer name to be used for signing. (See B<dpkg-"
+"buildpackage>(1) for more information about the differences between B<-m>, "
+"B<-e> and B<-k> when building packages; B<debsign> makes no use of these "
+"distinctions except with respect to the precedence of the various options. "
+"These multiple options are provided so that the program will behave as "
+"expected when called by B<debuild>(1).)"
+msgstr ""
+"gibt den Namen des Paketbetreuers an, der zum Signieren verwendet werden "
+"soll. (Weitere Informationen über die Unterschiede zwischen B<-m>, B<-e> und "
+"B<-k> beim Paketbau finden Sie unter B<dpkg-buildpackage>(1); B<debsign> "
+"macht keinen Gebrauch von diesen Unterschieden, außer dass es "
+"berücksichtigt, dass die verschiedenen Optionen Vorrang haben. Diese "
+"Mehrfachoptionen werden bereitgestellt, so dass sich das Programm wie "
+"erwartet verhält, wenn es durch B<debuild>(1) aufgerufen wird.)"
+
+#. type: TP
+#: ../scripts/debsign.1:61
+#, no-wrap
+msgid "B<-e>I<maintainer>"
+msgstr "B<-e>I<Paketbetreuer>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:64
+msgid "Same as B<-m> but takes precedence over it."
+msgstr "entspricht B<-m>, hat demgegenüber aber Vorrang"
+
+#. type: TP
+#: ../scripts/debsign.1:64
+#, no-wrap
+msgid "B<-k>I<keyid>"
+msgstr "B<-k>I<Schlüsselkennung>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:68
+msgid ""
+"Specify the key ID to be used for signing; overrides any B<-m> and B<-e> "
+"options."
+msgstr ""
+"gibt die Schlüsselkennung an, die zum Signieren benutzt wird; setzt alle B<-"
+"m>- und B<-e>-Optionen außer Kraft"
+
+#. type: Plain text
+#: ../scripts/debsign.1:84
+msgid ""
+"Multiarch I<.changes> mode: This signifies that B<debsign> should use the "
+"most recent file with the name pattern I<package_version_*+*.changes> as the "
+"I<.changes> file, allowing for the I<.changes> files produced by B<dpkg-"
+"cross>."
+msgstr ""
+"Multiarch-Änderungsmodus: Dies bedeutet, dass B<debsign> die aktuellste "
+"Datei mit dem Namensmuster I<Paket_Version_*+*.changes> als I<.changes>-"
+"Datei verwenden soll, was durch B<dpkg-cross> erstellte I<.changes>-Dateien "
+"ermöglicht."
+
+#. type: TP
+#: ../scripts/debsign.1:84
+#, no-wrap
+msgid "B<--re-sign>, B<--no-re-sign>"
+msgstr "B<--re-sign>, B<--no-re-sign>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:90
+msgid ""
+"Recreate signature, respectively use the existing signature, if the file has "
+"been signed already. If neither option is given and an already signed file "
+"is found the user is asked if he or she likes to use the current signature."
+msgstr ""
+"erstellt die Signatur neu, beziehungsweise benutzt die existierende "
+"Signatur, falls die Datei bereits signiert ist. Falls keine der beiden "
+"Optionen angegeben wurde, und eine bereits signierte Datei gefunden wird, "
+"wird der Benutzer gefragt, ob er oder sie die aktuelle Signatur verwenden "
+"möchte."
+
+#. type: TP
+#: ../scripts/debsign.1:90
+#, no-wrap
+msgid "B<--debs-dir> I<DIR>"
+msgstr "B<--debs-dir> I<VERZ>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:96
+msgid ""
+"Look for the I<.changes> and I<.dsc> files in directory I<DIR> instead of "
+"the parent of the source directory. This should either be an absolute path "
+"or relative to the top of the source directory."
+msgstr ""
+"sucht im Verzeichnis I<VERZ> nach den I<.changes>- und I<.dsc>-Dateien "
+"anstatt im übergeordneten Verzeichnis des Quellverzeichnisses. Dies sollte "
+"entweder ein absoluter Pfad oder relativ zur Wurzel des Quellverzeichnisses "
+"sein."
+
+#. type: TP
+#: ../scripts/debsign.1:112
+#, no-wrap
+msgid "B<DEBSIGN_PROGRAM>"
+msgstr "B<DEBSIGN_PROGRAM>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:115
+msgid "Setting this is equivalent to giving a B<-p> option."
+msgstr "Diese Einstellung entspricht der Angabe der Option B<-p>."
+
+#. type: TP
+#: ../scripts/debsign.1:115
+#, no-wrap
+msgid "B<DEBSIGN_MAINT>"
+msgstr "B<DEBSIGN_MAINT>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:118
+msgid "This is the B<-m> option."
+msgstr "Dies ist die Option B<-m>."
+
+#. type: Plain text
+#: ../scripts/debsign.1:121
+msgid "And this is the B<-k> option."
+msgstr "Und dies ist die Option B<-k>."
+
+#. type: TP
+#: ../scripts/debsign.1:121
+#, no-wrap
+msgid "B<DEBSIGN_ALWAYS_RESIGN>"
+msgstr "B<DEBSIGN_ALWAYS_RESIGN>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:124
+msgid ""
+"Always re-sign files even if they are already signed, without prompting."
+msgstr ""
+"signiert ohne Nachfrage Dateien immer neu, sogar, wenn sie bereits signiert "
+"sind."
+
+#. type: Plain text
+#: ../scripts/debsign.1:134
+msgid ""
+"This specifies the directory in which to look for the I<.changes> and I<."
+"dsc> files, and is either an absolute path or relative to the top of the "
+"source tree. This corresponds to the B<--debs-dir> command line option. "
+"This directive could be used, for example, if you always use B<pbuilder> or "
+"B<svn-buildpackage> to build your packages. Note that it also affects "
+"B<debrelease>(1) in the same way, hence the strange name of the option."
+msgstr ""
+"Dies gibt das Verzeichnis an, in dem nach den I<.changes>- und I<.dsc>-"
+"Dateien gesucht werden soll. Es ist entweder ein absoluter Pfad oder relativ "
+"zur obersten Ebene des Quellverzeichnisbaums. Dies entspricht der "
+"Befehlszeilenoption B<--debs-dir>. Diese Direktive kann zum Beispiel benutzt "
+"werden, falls Sie immer B<pbuilder> oder B<svn-buildpackage> verwenden, um "
+"Ihre Pakete zu bauen. Beachten Sie, dass es außerdem B<debrelease>(1) auf "
+"die gleiche Weise beeinflusst, daher der merkwürdige Name der Option."
+
+#. type: Plain text
+#: ../scripts/debsign.1:145
+msgid ""
+"B<debrsign>(1), B<debuild>(1), B<dpkg-architecture>(1), B<dpkg-"
+"buildpackage>(1), B<gpg>(1), B<md5sum>(1), B<sha1sum>(1), B<sha256sum>(1), "
+"B<scp>(1), B<devscripts.conf>(5)"
+msgstr ""
+"B<debrsign>(1), B<debuild>(1), B<dpkg-architecture>(1), B<dpkg-"
+"buildpackage>(1), B<gpg>(1), B<md5sum>(1), B<sha1sum>(1), B<sha256sum>(1), "
+"B<scp>(1), B<devscripts.conf>(5)"
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "DEBSNAP"
+msgstr "DEBSNAP"
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "July 3, 2010"
+msgstr "3. Juli 2010"
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "Debian devscripts"
+msgstr "Debian-Entwicklerskripte"
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "DebSnap User Manual"
+msgstr "DebSnap-Anwenderhandbuch"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:5
+msgid "debsnap - retrieve old snapshots of Debian packages"
+msgstr "debsnap - ruft alte Momentaufnahmen von Debian-Paketen ab"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:9
+msgid "B<debsnap> [I<options>]I< package >[I<version>]"
+msgstr "B<debsnap> [I<Optionen>]I< Paket >[I<Version>]"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:12
+msgid "B<debsnap> [B<-h> | B<--help>]B< >[B<--version>]"
+msgstr "B<debsnap> [B<-h> | B<--help>]B< >[B<--version>]"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:17
+msgid ""
+"B<debsnap> is a tool to help with retrieving snapshots of old packages from "
+"a daily archive repository."
+msgstr ""
+"B<debsnap> ist ein Werkzeug, das hilft, Momentaufnahmen von alten Debian-"
+"Paketen aus einen täglichen Archivedepot abzurufen."
+
+#. type: Plain text
+#: ../scripts/debsnap.1:20
+msgid ""
+"The only publicly available snapshot archive is currently located at "
+"I<http://snapshot.debian.org>"
+msgstr ""
+"Das einzige öffentlich verfügbare Momentaufnahmenarchiv liegt derzeit auf "
+"I<http://snapshot.debian.org>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:24
+msgid ""
+"By default, debsnap will download all the available versions for I<package> "
+"that are found in the snapshot archive. If a I<version> is specified, only "
+"that particular version will be downloaded, if available."
+msgstr ""
+"Standardmäßig wird Debsnap alle verfügbaren Versionen herunterladen, die für "
+"I<Paket> im Momentaufnahmenarchiv gefunden werden. Falls eine I<Version> "
+"angegeben wurde, wird nur diese bestimmte Version heruntergeladen, falls "
+"verfügbar."
+
+#. type: TP
+#: ../scripts/debsnap.1:29
+#, no-wrap
+msgid "B<-d>I< destination>,I< >B<--destdir>I< destination>"
+msgstr "B<-d>I< Bestimmungsort>,I< >B<--destdir>I< Bestimmungsort>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:32
+msgid "Directory to place retrieved packages."
+msgstr "Verzeichnis, in das abgefragte Pakete platziert werden sollen"
+
+#. type: =item
+#: ../scripts/debsnap.1:33 ../scripts/tagpending.pl:109
+#, no-wrap
+msgid "B<-f>, B<--force>"
+msgstr "B<-f>, B<--force>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:41
+msgid ""
+"Force writing into an existing I<destination>. By default B<debsnap> will "
+"insist the destination directory does not exist yet unless it is explicitly "
+"specified to be 'B<.>' (the current working directory). This is to avoid "
+"files being accidentally overwritten by what is fetched from the archive and "
+"to provide a guarantee for other scripts that only the files fetched will be "
+"present there upon completion."
+msgstr ""
+"erzwingt das Schreiben an einen existierenden I<Bestimmungsort>. "
+"Standardmäßig wird B<debsnap> darauf beharren, dass das Zielverzeichnis noch "
+"nicht existiert, es sei denn, es wird explizit als »B<.>« (das "
+"Arbeitsverzeichnis) angegeben. Dies dient der Vermeidung von versehentlichem "
+"Überschreiben von Dateien durch das, was vom Archiv abgeholt wird, und um "
+"allen anderen Skripten zu garantieren, dass nur die abgeholten Dateien nach "
+"Beendigung vorhanden sein werden."
+
+#. type: TP
+#: ../scripts/debsnap.1:42 ../scripts/sadt.pod:46
+#: ../doc/suspicious-source.1:38 ../scripts/tagpending.pl:105
+#: ../doc/wrap-and-sort.1:70
+#, no-wrap
+msgid "B<-v>, B<--verbose>"
+msgstr "B<-v>, B<--verbose>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:46
+msgid ""
+"Report on the B<debsnap> configuration being used and progress during the "
+"download operation. Please always use this option when reporting bugs."
+msgstr ""
+"berichtet über die benutzte B<debsnap>-Konfiguration und den Fortschritt "
+"während des Herunterladens. Benutzen Sie diese Option bitte immer, wenn Sie "
+"Fehler melden."
+
+#. type: TP
+#: ../scripts/debsnap.1:47
+#, no-wrap
+msgid "B<--binary>"
+msgstr "B<--binary>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:50
+msgid "Download binary packages instead of source packages."
+msgstr "lädt anstelle von Quellpaketen Binärpakete herunter."
+
+#. type: TP
+#: ../scripts/debsnap.1:51
+#, no-wrap
+msgid "B<-a>, B<--architecture>"
+msgstr "B<-a>, B<--architecture>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:56
+msgid ""
+"Specify architecture of downloaded binary packages. Implies B<--binary>. "
+"This can be given multiple times in order to download binary packages for "
+"multiple architectures."
+msgstr ""
+"gibt die Architektur der heruntergeladenen Binärpakete an. Impliziert B<--"
+"binary>. Dies kann mehrfach angegeben werden, um Binärpakete für mehrere "
+"Architekturen herunterzuladen."
+
+#. type: Plain text
+#: ../scripts/debsnap.1:60
+msgid "Show a summary of these options."
+msgstr "zeigt eine Zusammenfassung dieser Optionen."
+
+#. type: Plain text
+#: ../scripts/debsnap.1:64
+msgid "Show the version of B<debsnap>."
+msgstr "zeigt die Version von B<debsnap>."
+
+#. type: Plain text
+#: ../scripts/debsnap.1:69
+msgid ""
+"B<debsnap> may also be configured through the use of the following options "
+"in the devscripts configuration files:"
+msgstr ""
+"B<debsnap> kann auch mittels der folgenden Optionen in den "
+"Konfigurationsdateien der Devscripts konfiguriert werden."
+
+#. type: TP
+#: ../scripts/debsnap.1:70
+#, no-wrap
+msgid "B<DEBSNAP_VERBOSE>"
+msgstr "B<DEBSNAP_VERBOSE>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:73
+msgid "Same as the command line option B<--verbose>. Set to I<yes> to enable."
+msgstr ""
+"entspricht der Befehlszeilenoption B<--verbose>. Setzen Sie sie auf I<yes>, "
+"um es zu aktivieren."
+
+#. type: TP
+#: ../scripts/debsnap.1:74
+#, no-wrap
+msgid "B<DEBSNAP_DESTDIR>"
+msgstr "B<DEBSNAP_DESTDIR>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:79
+msgid ""
+"Set a default path for the destination directory. If unset I<./source-"
+"E<lt>package_nameE<gt>> will be used. The command line option B<--destdir> "
+"will override this."
+msgstr ""
+"setzt einen Standardpfad für das Zielverzeichnis. Falls sie nicht gesetzt "
+"wird, wird I<./source-E<lt>PaketnameE<gt>> verwendet. Die "
+"Befehlszeilenoption B<--destdir> wird dies außer Kraft setzen."
+
+#. type: TP
+#: ../scripts/debsnap.1:80
+#, no-wrap
+msgid "B<DEBSNAP_BASE_URL>"
+msgstr "B<DEBSNAP_BASE_URL>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:83
+msgid "The base url for the snapshots archive."
+msgstr "die Basis-URL für das Momentaufnahmenarchiv"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:85
+msgid "If unset this defaults to I<http://snapshot.debian.org>"
+msgstr "falls nicht gesetzt, ist die Vorgabe I<http://snapshot.debian.org>"
+
+#. type: SH
+#: ../scripts/debsnap.1:86 ../scripts/dscextract.1:20
+#: ../scripts/transition-check.pl:54 ../scripts/uscan.1:548
+#: ../scripts/wnpp-check.1:25
+#, no-wrap
+msgid "EXIT STATUS"
+msgstr "EXIT-STATUS"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:92
+msgid ""
+"B<debsnap> will return an exit status of 0 if all operations succeeded, 1 if "
+"a fatal error occurred, and 2 if some packages failed to be downloaded but "
+"operations otherwise succeeded as expected. In some cases packages may fail "
+"to be downloaded because they are no longer available on the snapshot "
+"mirror, so any caller should expect this may occur in normal use."
+msgstr ""
+"B<debsnap> wird einen Exit-Status von 0 zurückgeben, falls alle "
+"Transaktionen erfolgreich verliefen, 1, falls ein schwerwiegender Fehler "
+"auftrat und 2, falls das Herunterladen einiger Pakete fehlschlug, "
+"Transaktionen aber ansonsten wie erwartet erfolgreich verliefen. In einigen "
+"Fällen kann das Herunterladen einiger Pakete fehlschlagen, weil sie nicht "
+"mehr auf dem Momentaufnahmenspiegel verfügbar sind, daher sollte jeder "
+"Aufrufende erwarten, dass dies bei normaler Verwendung auftritt."
+
+#. type: TP
+#: ../scripts/debsnap.1:94
+#, no-wrap
+msgid "B<debsnap -a amd64 xterm 256-1>"
+msgstr "B<debsnap -a amd64 xterm 256-1>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:97
+msgid ""
+"Download the binary package of a specific xterm version for amd64 "
+"architecture."
+msgstr ""
+"lädt das Binärpaket einer bestimmten Xterm-Version für die Architektur Amd64 "
+"herunter."
+
+#. type: TP
+#: ../scripts/debsnap.1:97
+#, no-wrap
+msgid "B<debsnap -a armel xterm>"
+msgstr "B<debsnap -a armel xterm>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:100
+msgid ""
+"Download binary packages for all versions of xterm for armel architecture."
+msgstr ""
+"lädt Binärpakete aller Xterm-Versionen für die Architektur Armel herunter."
+
+#. type: TP
+#: ../scripts/debsnap.1:100
+#, no-wrap
+msgid "B<debsnap --binary xterm 256-1>"
+msgstr "B<debsnap --binary xterm 256-1>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:103
+msgid ""
+"Download binary packages for a specific xterm version but for all "
+"architectures."
+msgstr ""
+"lädt Binärpakete einer bestimmten Xterm-Version für alle Architekturen "
+"herunter."
+
+#. type: TP
+#: ../scripts/debsnap.1:103
+#, no-wrap
+msgid "B<debsnap --binary xterm>"
+msgstr "B<debsnap --binary xterm>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:106
+msgid ""
+"Download binary packages for all versions of xterm for all architectures."
+msgstr ""
+"lädt Binärpakete aller Xterm-Versionen für alle Architekturen herunter."
+
+#. type: TP
+#: ../scripts/debsnap.1:106
+#, no-wrap
+msgid "B<aptitude search '~i' -F '%p %V' | while read pkg ver; do debsnap -a $(dpkg-architecture -qDEB_HOST_ARCH) -a all $pkg $ver; done>"
+msgstr "B<aptitude search '~i' -F '%p %V' | while read pkg ver; do debsnap -a $(dpkg-architecture -qDEB_HOST_ARCH) -a all $pkg $ver; done>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:109
+msgid ""
+"Download binary packages of all packages that are installed on the system."
+msgstr "lädt Binärpakete aller auf dem System installierten Pakete herunter."
+
+#. type: SH
+#: ../scripts/debsnap.1:110 ../scripts/diff2patches.1:28
+#, no-wrap
+msgid "FILES"
+msgstr "DATEIEN"
+
+#. type: TP
+#: ../scripts/debsnap.1:111
+#, no-wrap
+msgid "I</etc/devscripts.conf>"
+msgstr "I</etc/devscripts.conf>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:114
+msgid ""
+"Global devscripts configuration options. Will override hardcoded defaults."
+msgstr ""
+"globale Konfigurationsoptionen der Entwicklerskripte; werden hart kodierte "
+"Vorgaben außer Kraft setzen"
+
+#. type: TP
+#: ../scripts/debsnap.1:114
+#, no-wrap
+msgid "I<~/.devscripts>"
+msgstr "I<~/.devscripts>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:122
+msgid "B<devscripts>(1), B<devscripts.conf>(5), B<git-debimport>(1)"
+msgstr "B<devscripts>(1), B<devscripts.conf>(5), B<git-debimport>(1)"
+
+#. type: SH
+#: ../scripts/debsnap.1:123 ../doc/edit-patch.1:37
+#: ../doc/suspicious-source.1:51 ../doc/what-patch.1:27
+#: ../doc/wrap-and-sort.1:79
+#, no-wrap
+msgid "AUTHORS"
+msgstr "AUTOREN"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:125
+msgid "David Paleino E<lt>dapal@debian.orgE<gt>"
+msgstr "David Paleino E<lt>dapal@debian.orgE<gt>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:128
+msgid "Copyright \\(co 2010 David Paleino"
+msgstr "Copyright \\(co 2010 David Paleino"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:132
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the GNU General Public License, Version 3 or (at your option) "
+"any later version published by the Free Software Foundation."
+msgstr ""
+"Das Recht, dieses Dokument zu kopieren, zu verteilen und/oder zu ändern, "
+"wird unter den Bedingungen der GNU General Public License, Version 3 oder "
+"(nach Ihrer Option) jeder späteren durch die Free Software Foundation "
+"veröffentlichten Version, gewährt."
+
+#. type: Plain text
+#: ../scripts/debsnap.1:135
+msgid ""
+"On Debian systems, the complete text of the GNU General Public License can "
+"be found in I</usr/share/common-licenses/GPL>."
+msgstr ""
+"Auf Debian-Systemen kann der vollständige Text der GNU General Public "
+"License in I</usr/share/common-licenses/GPL> gefunden werden."
+
+#. type: SS
+#: ../scripts/debsnap.1:137
+#, no-wrap
+msgid "Reporting bugs"
+msgstr "Fehler melden"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:140
+msgid ""
+"The program is part of the devscripts package. Please report bugs using "
+"`B<reportbug devscripts>`"
+msgstr ""
+"Dieses Programm ist Teil des Pakets »devscripts«. Bitte melden Sie Fehler "
+"mittels »B<reportbug devscripts>«."
+
+#. type: TH
+#: ../scripts/debuild.1:1
+#, no-wrap
+msgid "DEBUILD"
+msgstr "DEBUILD"
+
+#. type: Plain text
+#: ../scripts/debuild.1:4
+msgid "debuild - build a Debian package"
+msgstr "debuild - baut ein Debian-Paket"
+
+#. type: Plain text
+#: ../scripts/debuild.1:7
+msgid ""
+"B<debuild> [I<debuild options>] [I<dpkg-buildpackage options>] [B<--lintian-"
+"opts> I<lintian options>]"
+msgstr ""
+"B<debuild> [I<Debuild-Optionen>] [I<Dpkg-Buildpackage-Optionen>] [B<--"
+"lintian-opts> I<Lintian-Optionen>]"
+
+#. type: Plain text
+#: ../scripts/debuild.1:10
+msgid ""
+"B<debuild> [I<debuild options>] B<binary>|B<binary-arch>|B<binary-indep>|"
+"B<clean> ..."
+msgstr ""
+"B<debuild> [I<Debuild-Optionen>] B<binary>|B<binary-arch>|B<binary-indep>|"
+"B<clean> …"
+
+#. type: Plain text
+#: ../scripts/debuild.1:29
+msgid ""
+"B<debuild> creates all the files necessary for uploading a Debian package. "
+"It first runs B<dpkg-buildpackage>, then runs B<lintian> on the I<.changes> "
+"file created (assuming that B<lintian> is installed), and finally signs the "
+"I<.changes> and/or I<.dsc> files as appropriate (using B<debsign>(1) to do "
+"this instead of B<dpkg-buildpackage>(1) itself; all relevant key-signing "
+"options are passed on). Parameters can be passed to B<dpkg-buildpackage> "
+"and B<lintian>, where the parameters to the latter are indicated with the "
+"B<--lintian-opts> option. The allowable options in this case are B<--"
+"lintian> and B<--no-lintian> to force or skip the B<lintian> step, "
+"respectively. The default is to run B<lintian>. There are also various "
+"options available for setting and preserving environment variables, as "
+"described below in the Environment Variables section. In this method of "
+"running B<debuild>, we also save a build log to the file I<../"
+"E<lt>packageE<gt>_E<lt>versionE<gt>_E<lt>archE<gt>.build>."
+msgstr ""
+"B<debuild> erstellt alle Dateien, die zum Hochladen eines Debian-Pakets "
+"nötig sind. Zuerst führt es B<dpkg-buildpackage> aus, dann B<lintian> für "
+"die erstellte I<.changes>-Datei (unter der Annahme, dass B<lintian> "
+"installiert ist) und signiert schließlich die I<.changes>- und/oder "
+"gegebenenfalls die I<.dsc>-Dateien (mittels B<debsign>(1) anstelle von "
+"B<dpkg-buildpackage>(1) selbst; alle passenden Schlüsselsignierungsoptionen "
+"werden übergeben). An B<dpkg-buildpackage> und B<lintian> können Parameter "
+"übergeben werden, wobei letztere mit der Option B<--lintian-opts> angegeben "
+"werden. Die in diesem Fall erlaubten Optionen sind B<--lintian> und B<--no-"
+"lintian>, um den Lintian-Schritt zu erzwingen beziehungsweise zu "
+"überspringen. Standardmäßig wird B<lintian> ausgeführt. Außerdem sind "
+"verschiedene Optionen für das Setzen und Erhalten von Umgebungsvariablen "
+"verfügbar, wie nachfolgend im Abschnitt »Umgebungsvariablen« beschrieben. "
+"Bei dieser Methode B<debuild> auszuführen wird außerdem das Bauprotokoll "
+"I<../E<lt>PaketE<gt>_E<lt>VersionE<gt>_E<lt>ArchitekturE<gt>.build> "
+"gesichert."
+
+#. type: Plain text
+#: ../scripts/debuild.1:46
+msgid ""
+"An alternative way of using B<debuild> is to use one or more of the "
+"parameters B<binary>, B<binary-arch>, B<binary-indep> and B<clean>, in which "
+"case B<debuild> will attempt to gain root privileges and then run I<debian/"
+"rules> with the given parameters. A B<--rootcmd=>I<gain-root-command> or B<-"
+"r>I<gain-root-command> option may be used to specify a method of gaining "
+"root privileges. The I<gain-root-command> is likely to be one of "
+"I<fakeroot>, I<sudo> or I<super>. See below for further discussion of this "
+"point. Again, the environment preservation options may be used. In this "
+"case, B<debuild> will also attempt to run B<dpkg-checkbuilddeps> first; this "
+"can be explicitly requested or switched off using the options B<-D> and B<-"
+"d> respectively. Note also that if either of these or a B<-r> option is "
+"specified in the configuration file option "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS>, then it will be recognised even in this "
+"method of invocation of B<debuild>."
+msgstr ""
+"Eine alternative Möglichkeit, B<debuild> zu benutzen, besteht darin, einen "
+"oder mehrere der Parameter B<binary>, B<binary-arch>, B<binary-indep> und "
+"B<clean> zu verwenden. In diesem Fall wird B<debuild> versuchen, Root-Rechte "
+"zu bekommen und dann I<debian/rules> mit den angegebenen Parametern "
+"auszuführen. Um Root-Rechte zu bekommen, kann eine der Optionen B<--"
+"rootcmd=>I<Befehl_um_Root_zu_werden> oder B<-r>I<Befehl_um_Root_zu_werden> "
+"benutzt werden. I<Befehl_um_Root_zu_werden> ist wahrscheinlich entweder "
+"I<fakeroot>, I<sudo> oder I<super>. Eine weitere Erörterung dieses Punkts "
+"finden Sie nachfolgend. Wieder können die Optionen zum Erhalten der Umgebung "
+"verwendet werden. In diesem Fall wird B<debuild> außerdem versuchen, zuerst "
+"B<dpkg-checkbuilddeps> auszuführen; dies kann explizit mittels der Optionen "
+"B<-D> beziehungsweise B<-d> angefordert oder abgeschaltet werden. Beachten "
+"Sie außerdem, dass wenn entweder eine dieser beiden oder eine B<-r>-Option "
+"in der Konfigurationsdateioption B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> angegeben "
+"wurde, dies dann sogar in dieser Aufrufmethode von B<debuild> erkannt wird."
+
+#. type: Plain text
+#: ../scripts/debuild.1:49
+msgid ""
+"B<debuild> also reads the B<devscripts> configuration files as described "
+"below. This allows default options to be given."
+msgstr ""
+"B<debuild> liest außerdem, wie nachfolgend beschrieben, die B<devscripts>-"
+"Konfigurationsdateien. Dies ermöglicht die Angabe von Standardoptionen."
+
+#. type: Plain text
+#: ../scripts/debuild.1:61
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debuild> will climb the directory tree until it finds a I<debian/"
+"changelog> file before attempting to build the package. As a safeguard "
+"against stray files causing potential problems, it will examine the name of "
+"the parent directory once it finds the I<debian/changelog> file, and check "
+"that the directory name corresponds to the package name. Precisely how it "
+"does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and B<--"
+"check-dirname-regex>."
+msgstr ""
+"Ebenso wie mehrere andere Skripte im Paket B<devscripts> wird B<debuild> den "
+"Verzeichnisbaum emporsteigen, bis es eine I<debian/changelog>-Datei findet. "
+"Als eine Schutzmaßnahme gegen verirrte Dateien, die potenziell Probleme "
+"bereiten, wird es den Namen des übergeordneten Verzeichnisses untersuchen, "
+"sobald es eine I<debian/changelog>-Datei findet und prüfen, ob der "
+"Verzeichnisname dem Paketnamen entspricht. Wie dies genau geschieht, wird "
+"durch die beiden Konfigurationsdateivariablen "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> und B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> "
+"sowie ihre entsprechenden Befehlszeilenoptionen B<--check-dirname-level> und "
+"B<--check-dirname-regex> geregelt."
+
+#. type: Plain text
+#: ../scripts/debuild.1:86 ../scripts/uscan.1:348
+msgid ""
+"The directory name is checked by testing whether the current directory name "
+"(as determined by B<pwd>(1)) matches the regex given by the configuration "
+"file option B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> or by the command line option "
+"B<--check-dirname-regex> I<regex>. Here I<regex> is a Perl regex (see "
+"B<perlre>(3perl)), which will be anchored at the beginning and the end. If "
+"I<regex> contains a '/', then it must match the full directory path. If "
+"not, then it must match the full directory name. If I<regex> contains the "
+"string \\'PACKAGE', this will be replaced by the source package name, as "
+"determined from the I<changelog>. The default value for the regex is: "
+"\\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and PACKAGE-"
+"version."
+msgstr ""
+"Der Verzeichnisname wird geprüft, indem getestet wird, ob der aktuelle "
+"Verzeichnisname (wie er durch B<pwd>(1) bestimmt wurde) zum regulären "
+"Ausdruck passt, der durch die Konfigurationsdateioption "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> oder die Befehlszeilenoption B<--check-"
+"dirname-regex> I<regulärer Ausdruck> angegeben wurde. Hierbei ist "
+"I<regulärer Ausdruck> ein regulärer Perl-Ausdruck (siehe B<perlre>(3perl)), "
+"der an den Anfang und das Ende verankert wird. Falls I<regulärer Ausdruck> "
+"ein »/« enthält, muss er auf den vollständigen Verzeichnispfad passen. Wenn "
+"nicht, dann muss er auf den vollständigen Verzeichnisnamen passen. Falls "
+"I<regulärer Ausdruck> die Zeichenkette »PACKAGE« beinhaltet, wird diese "
+"durch den Namen des Quellpakets ersetzt, wie er aus dem I<Changelog> "
+"bestimmt wird. Der vorgegebene Wert für den regulären Ausdruck ist: "
+"»PACKAGE(-.+)?«, daher entspricht er Verzeichnisnamen wie PACKAGE und "
+"PACKAGE-Version."
+
+#. type: Plain text
+#: ../scripts/debuild.1:94
+msgid ""
+"As environment variables can affect the building of a package, often "
+"unintentionally, B<debuild> sanitises the environment by removing all "
+"environment variables except for B<TERM>, B<HOME>, B<LOGNAME>, B<GNUPGHOME>, "
+"B<PGPPATH>, B<GPG_AGENT_INFO>, B<FAKEROOTKEY>, B<DEB_>I<*>, the (B<C>, "
+"B<CPP>, B<CXX>, B<LD> and B<F>)B<FLAGS> variables and their B<_APPEND> "
+"counterparts and the locale variables B<LANG> and B<LC_>I<*>. B<TERM> is "
+"set to `dumb' if it is unset, and B<PATH> is set to \"/usr/sbin:/usr/bin:/"
+"sbin:/bin:/usr/bin/X11\"."
+msgstr ""
+"Da Umgebungsvariablen den Bau eines Pakets beeinflussen, oft ungewollt, "
+"reduziert B<debuild> die Umgebung, indem es alle Umgebungsvariablen außer "
+"B<TERM>, B<HOME>, B<LOGNAME>, B<GNUPGHOME>, B<PGPPATH>, B<GPG_AGENT_INFO>, "
+"B<FAKEROOTKEY>, B<DEB_>I<*>, den B<FLAGS>-Variablen (B<C>, B<CPP>, B<CXX>, "
+"B<LD> und B<F>) und ihren B<_APPEND>-Gegenstücken sowie den Locale-Variablen "
+"B<LANG> und B<LC_>I<*> entfernt. B<TERM> ist, falls es nicht gesetzt wurde, "
+"auf »dumb« gesetzt und B<PATH> ist auf »/usr/sbin:/usr/bin:/sbin:/bin:/usr/"
+"bin/X11« gesetzt."
+
+#. type: Plain text
+#: ../scripts/debuild.1:105
+msgid ""
+"If a particular environment variable is required to be passed through "
+"untouched to the build process, this may be specified by using a B<--"
+"preserve-envvar> I<envvar> (which can also be written as B<-e> I<envvar> "
+"option). The environment may be left untouched by using the B<--preserve-"
+"env> option. However, even in this case, the B<PATH> will be set to the "
+"sane value described above. The B<only> way to prevent B<PATH> from being "
+"reset is to specify a B<--preserve-envvar PATH> option. But you are warned "
+"that using programs from non-standard locations can easily result in the "
+"package being broken, as it will not be able to be built on standard systems."
+msgstr ""
+"Falls erforderlich ist, dass eine bestimmte Umgebungsvariable unverändert an "
+"den Bauprozess durchgeleitet wird, kann dies mittels einer B<--preserve-"
+"envvar>-I<Umgebungsvariable>n angegeben werden (dies kann auch als Option B<-"
+"e> I<Umgebungsvariable> geschrieben werden). Die Umgebung kann mittels der "
+"Option B<--preserve-env> unverändert belassen werden. B<PATH> wird jedoch "
+"sogar in diesem Fall auf den oben beschriebenen vernünftigen Wert gesetzt. "
+"Die B<einzige> Möglichkeit, B<PATH> vor dem Zurücksetzen zu bewahren, "
+"besteht darin, eine B<--preserve-envvar PATH>-Option anzugeben. Seien Sie "
+"aber gewarnt, dass die Benutzung von Programmen, die an Nichtstandardorten "
+"liegen, leicht dazu führen kann, dass das Paket beschädigt ist, da es nicht "
+"auf Standardsystemen gebaut werden kann."
+
+#. type: Plain text
+#: ../scripts/debuild.1:109
+msgid ""
+"Note that one may add directories to the beginning of the sanitised B<PATH>, "
+"using the B<--prepend-path> option. This is useful when one wishes to use "
+"tools such as B<ccache> or B<distcc> for building."
+msgstr ""
+"Beachten Sie, dass Verzeichnisse mittels der Option B<--prepend-path> an den "
+"Anfang des zurückgesetzten B<PATH> hinzugefügt werden können. Dies ist "
+"nützlich, wenn zum Bauen die Verwendung von Werkzeugen wie B<ccache> oder "
+"B<distcc> gewünscht wird."
+
+#. type: Plain text
+#: ../scripts/debuild.1:114
+msgid ""
+"It is also possible to avoid having to type something like I<FOO>B<=>I<bar "
+">B<debuild -e >I<FOO> by writing B<debuild -e >I<FOO>B<=>I<bar> or the long "
+"form B<debuild --set-envvar >I<FOO>B<=>I<bar>."
+msgstr ""
+"Es ist außerdem möglich, zu verhindern, dass etwas wie I<FOO>B<=>I<bar "
+">B<debuild -e >I<FOO> durch Schreiben von B<debuild -e >I<FOO>B<=>I<bar> "
+"oder der Langform B<debuild --set-envvar >I<FOO>B<=>I<bar> getippt werden "
+"muss."
+
+#. type: SH
+#: ../scripts/debuild.1:114
+#, no-wrap
+msgid "SUPERUSER REQUIREMENTS"
+msgstr "SUPERUSER-ANFORDERUNGEN"
+
+#. type: Plain text
+#: ../scripts/debuild.1:124
+msgid ""
+"B<debuild> needs to be run as superuser to function properly. There are "
+"three fundamentally different ways to do this. The first, and preferable, "
+"method is to use some root-gaining command. The best one to use is probably "
+"B<fakeroot>(1), since it does not involve granting any genuine privileges. "
+"B<super>(1) and B<sudo>(1) are also possibilities. If no B<-r> (or B<--"
+"rootcmd>) option is given (and recall that B<dpkg-buildpackage> also accepts "
+"a B<-r> option) and neither of the following methods is used, then B<-"
+"rfakeroot> will silently be assumed."
+msgstr ""
+"B<debuild> muss als Superuser ausgeführt werden, um ordnungsgemäß zu "
+"funktionieren. Es gibt grundlegend verschiedene Arten, dies zu erreichen. "
+"Die erste und bevorzugte Methode besteht in der Benutzung eines Befehls, um "
+"Root-Rechte zu erlangen. Es ist wahrscheinlich am besten, B<fakeroot>(1) zu "
+"verwenden, da es nicht das Gewähren echter Rechte beinhaltet. B<super>(1) "
+"und B<sudo>(1) sind weitere Möglichkeiten. Falls keine B<-r>-Option (oder "
+"B<--rootcmd>) angegeben wurde (und erinnern Sie sich daran, dass B<dpkg-"
+"buildpackage> eine B<-r>-Option ebenfalls akzeptiert) und keine der "
+"folgenden Methoden benutzt wird, dann wird stillschweigend von B<-rfakeroot> "
+"ausgegangen."
+
+#. type: Plain text
+#: ../scripts/debuild.1:130
+msgid ""
+"The second method is to use some command such as B<su>(1) to become root, "
+"and then to do everything as root. Note, though, that B<lintian> will abort "
+"if it is run as root or setuid root; this can be overcome using the B<--"
+"allow-root> option of B<lintian> if you know what you are doing."
+msgstr ""
+"Die zweite Methode besteht darin, etwas wie B<su>(1) zu verwenden, um Root "
+"zu werden, und dann alles als Root zu tun. Beachten Sie jedoch, dass "
+"B<lintian> abbrechen wird, falls es als Root oder Setuid-Root ausgeführt "
+"wird; dies kann mittels der Option B<--allow-root> von B<lintian> verhindert "
+"werden, falls Sie wissen, was Sie tun."
+
+#. type: Plain text
+#: ../scripts/debuild.1:146
+msgid ""
+"The third possible method is to have B<debuild> installed as setuid root. "
+"This is not the default method, and will have to be installed as such by the "
+"system administrator. It must also be realised that anyone who can run "
+"B<debuild> as root or setuid root has B<full access to the whole machine>. "
+"This method is therefore not recommended, but will work. B<debuild> could "
+"be installed with mode 4754, so that only members of the owning group could "
+"run it. A disadvantage of this method would be that other users would then "
+"not be able to use the program. There are many other variants of this "
+"option involving multiple copies of B<debuild>, or the use of programs such "
+"as B<sudo> or B<super> to grant root privileges to users selectively. If "
+"the sysadmin wishes to do this, she should use the B<dpkg-statoverride> "
+"program to change the permissions of I</usr/bin/debuild>. This will ensure "
+"that these permissions are preserved across upgrades."
+msgstr ""
+"Die dritte mögliche Methode ist, dass B<debuild> als Setuid-Root installiert "
+"wurde. Dies ist nicht die Standardmethode und wird dergestalt vom "
+"Systemadministrator installiert werden müssen. Es muss außerdem erkannt "
+"werden, dass jedermann, der B<debuild> als Root oder Setuid-Root ausführt, "
+"B<vollen Zugriff auf den ganzen Rechner> hat. Diese Methode wird daher nicht "
+"empfohlen, wird aber funktionieren. B<debuild> könnte mit den Rechten 4754 "
+"installiert werden, so dass es nur Mitglieder der besitzenden Gruppe "
+"ausführen können. Ein Nachteil dieser Methode wäre, dass andere Benutzer "
+"nicht in der Lage wären, dieses Programm zu verwenden. Es gibt viele andere "
+"Varianten dieser Option unter Einbeziehung mehrerer Kopien von B<debuild> "
+"oder der Verwendung von Programmen wie B<sudo> oder B<super>, um "
+"ausgewählten Anwendern Root-Rechte zu gewähren. Falls der "
+"Systemadministrator dies tun möchte, sollte er das Programm B<dpkg-"
+"statoverride> benutzen, um die Rechte von I</usr/bin/debuild> zu ändern. "
+"Dies wird sicherstellen, dass diese Rechte über Upgrades hinweg erhalten "
+"werden."
+
+#. type: SH
+#: ../scripts/debuild.1:146
+#, no-wrap
+msgid "HOOKS"
+msgstr "HOOKS"
+
+#. type: Plain text
+#: ../scripts/debuild.1:153
+msgid ""
+"B<debuild> supports a number of hooks when running B<dpkg-buildpackage>. "
+"Note that if any of the hooks from B<clean-hook> to B<final-clean> "
+"(inclusive) are used, B<debuild> will emulate some sections of the B<dpkg-"
+"buildpackage> process rather than running them directly, as B<dpkg-"
+"buildpackage> does not support hooks. The available hooks are as follows:"
+msgstr ""
+"B<debuild> unterstützt eine Reihe von Hooks, wenn B<dpkg-buildpackage> "
+"ausgeführt wird. Beachten Sie, dass B<debuild>, falls einige der Hooks von "
+"B<clean-hook> bis B<final-clean> benutzt werden, einige Abschnitte des "
+"B<dpkg-buildpackage>-Prozesses emulieren wird, statt sie direkt auszuführen, "
+"da B<dpkg-buildpackage> keine Hooks unterstützt. Folgende Hooks sind "
+"verfügbar:"
+
+#. type: TP
+#: ../scripts/debuild.1:153
+#, no-wrap
+msgid "B<dpkg-buildpackage-hook>"
+msgstr "B<dpkg-buildpackage-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:156
+msgid ""
+"Run before B<dpkg-buildpackage> begins by calling B<dpkg-checkbuilddeps>."
+msgstr ""
+"wird ausgeführt bevor B<dpkg-buildpackage> beginnt, indem B<dpkg-"
+"checkbuilddeps> aufgerufen wird."
+
+#. type: TP
+#: ../scripts/debuild.1:156
+#, no-wrap
+msgid "B<clean-hook>"
+msgstr "B<clean-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:161
+msgid ""
+"Run before B<dpkg-buildpackage> runs B<debian/rules clean> to clean the "
+"source tree. (Run even if the tree is not being cleaned because B<-nc> is "
+"used.)"
+msgstr ""
+"wird ausgeführt, bevor B<dpkg-buildpackage> B<debian/rules clean> ausführt, "
+"um den Quellverzeichnisbaum zu bereinigen (wird sogar ausgeführt, falls der "
+"Verzeichnisbaum nicht bereinigt wird, da B<-nc> verwendet wird)."
+
+#. type: TP
+#: ../scripts/debuild.1:161
+#, no-wrap
+msgid "B<dpkg-source-hook>"
+msgstr "B<dpkg-source-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:165
+msgid ""
+"Run after cleaning the tree and before running B<dpkg-source>. (Run even if "
+"B<dpkg-source> is not being called because B<-b>, B<-B>, or B<-A> is used.)"
+msgstr ""
+"wird nach dem Bereinigen des Verzeichnisbaums und vor dem Ausführen von "
+"B<dpkg-source> ausgeführt (wird sogar ausgeführt, falls B<dpkg-source> nicht "
+"aufgerufen wird, da B<-b>, B<-B> oder B<-A> benutzt wird)."
+
+#. type: TP
+#: ../scripts/debuild.1:165
+#, no-wrap
+msgid "B<dpkg-build-hook>"
+msgstr "B<dpkg-build-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:170
+msgid ""
+"Run after B<dpkg-source> and before calling B<debian/rules build>. (Run "
+"even if this is a source-only build, so B<debian/rules build> is not being "
+"called.)"
+msgstr ""
+"wird nach B<dpkg-source> und vor dem Aufruf von B<debian/rules build> "
+"ausgeführt (wird sogar ausgeführt, falls es sich um das Bauen eines reinen "
+"Quellpakets handelt, wodurch B<debian/rules build> nicht aufgerufen wird)."
+
+#. type: TP
+#: ../scripts/debuild.1:170
+#, no-wrap
+msgid "B<dpkg-binary-hook>"
+msgstr "B<dpkg-binary-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:174
+msgid ""
+"Run between B<debian/rules build> and B<debian/rules binary>(B<-arch>). Run "
+"B<only> if a binary package is being built."
+msgstr ""
+"wird zwischen B<debian/rules build> und B<debian/rules binary>(B<-arch>) "
+"ausgeführt. Läuft B<nur>, falls ein Binärpaket gebaut wird."
+
+#. type: TP
+#: ../scripts/debuild.1:174
+#, no-wrap
+msgid "B<dpkg-genchanges-hook>"
+msgstr "B<dpkg-genchanges-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:178
+msgid ""
+"Run after the binary package is built and before calling B<dpkg-genchanges>."
+msgstr ""
+"wird nach dem Bau eines Binärpakets und vor dem Aufruf von B<dpkg-"
+"genchanges> ausgeführt."
+
+#. type: TP
+#: ../scripts/debuild.1:178
+#, no-wrap
+msgid "B<final-clean-hook>"
+msgstr "B<final-clean-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:183
+msgid ""
+"Run after B<dpkg-genchanges> and before the final B<debian/rules clean>. "
+"(Run even if we are not cleaning the tree post-build, which is the default.)"
+msgstr ""
+"wird nach B<dpkg-genchanges> und vor dem abschließenden B<debian/rules "
+"clean> ausgeführt (wird sogar ausgeführt, falls der Verzeichnisbaum nach dem "
+"Baunicht bereinigt wird, was Standard ist)."
+
+#. type: TP
+#: ../scripts/debuild.1:183
+#, no-wrap
+msgid "B<lintian-hook>"
+msgstr "B<lintian-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:187
+msgid ""
+"Run (once) before calling B<lintian>. (Run even if we are not calling "
+"B<lintian>.)"
+msgstr ""
+"wird (einmal) vor dem Aufruf von B<lintian> ausgeführt (wird sogar dann "
+"ausgeführt, wenn B<lintian> nicht aufgerufen wird)."
+
+#. type: TP
+#: ../scripts/debuild.1:187
+#, no-wrap
+msgid "B<signing-hook>"
+msgstr "B<signing-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:191
+msgid ""
+"Run after calling B<lintian> before any signing takes place. (Run even if "
+"we are not signing anything.)"
+msgstr ""
+"wird nach dem Aufruf von B<lintian>, bevor irgendwelche Signierung erfolgt, "
+"ausgeführt (wird sogar dann ausgeführt, wenn nichts signiert wird)."
+
+#. type: TP
+#: ../scripts/debuild.1:191
+#, no-wrap
+msgid "B<post-dpkg-buildpackage-hook>"
+msgstr "B<post-dpkg-buildpackage-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:194
+msgid "Run after everything has finished."
+msgstr "wird ausgeführt, nachdem alles beendet ist."
+
+#. type: Plain text
+#: ../scripts/debuild.1:209
+msgid ""
+"A hook command can be specified either in the configuration file as, for "
+"example, DEBUILD_SIGNING_HOOK='foo' (note the hyphens change into "
+"underscores!) or as a command line option B<--signing-hook-foo>. The "
+"command will have certain percent substitutions made on it: B<%%> will be "
+"replaced by a single B<%> sign, B<%p> will be replaced by the package name, "
+"B<%v> by the package version number, B<%s> by the source version number, B<"
+"%u> by the upstream version number. Neither B<%s> nor B<%u> will contain an "
+"epoch. B<%a> will be B<1> if the immediately following action is to be "
+"performed and B<0> if not (for example, in the B<dpkg-source> hook, B<%a> "
+"will become B<1> if B<dpkg-source> is to be run and B<0> if not). Then it "
+"will be handed to the shell to deal with, so it can include redirections and "
+"stuff. For example, to only run the B<dpkg-source> hook if B<dpkg-source> "
+"is to be run, the hook could be something like: \"if [ %a -eq 1 ]; then ...; "
+"fi\"."
+msgstr ""
+"Ein Hook-Befehl kann entweder in der Konfigurationsdatei angegeben werden, "
+"zum Beispiel DEBUILD_SIGNING_HOOK='foo' (beachten Sie, dass Bindestriche in "
+"Unterstriche geändert werden!) oder als eine B<--signing-hook-foo>-"
+"Befehlszeilenoption. Der Befehl führt bestimmte Prozentzeichenersetzungen "
+"durch: B<%%> wird durch ein einzelnes B<%>-Zeichen ersetzt, B<%p> wird durch "
+"den Paketnamen ersetzt, B<%v> durch die Versionsnummer des Pakets, B<%s> "
+"durch die Versionsnummer der Quelle und B<%u> durch die Versionsnummer der "
+"Originalautoren. Weder B<%s> noch B<%u> werden eine Epoche enthalten. B<%a> "
+"wird B<1> sein, falls die unmittelbar folgende Aktion ausgeführt wird und "
+"B<0> falls nicht (zum Beispiel wird B<%a> im B<dpkg-source>-Hook B<1> "
+"werden, falls B<dpkg-source> ausgeführt werden soll und B<0> falls nicht). "
+"Dann wird es zum Erledigen an die Shell gereicht, daher kann es "
+"Weiterleitungen und Ähnliches enthalten. Um zum Beispiel nur den B<dpkg-"
+"source>-Hook auszuführen, falls B<dpkg-source> ausgeführt wird, könnte der "
+"Hook etwas wie »if [ %a -eq 1 ]; then …; fi« sein."
+
+#. type: Plain text
+#: ../scripts/debuild.1:213
+msgid ""
+"B<Please take care with hooks>, as misuse of them can lead to packages which "
+"FTBFS (fail to build from source). They can be useful for taking snapshots "
+"of things or the like."
+msgstr ""
+"B<Bitte seien Sie mit Hooks vorsichtig>, da ihre falsche Verwendung zu "
+"Paketen führen kann, die nicht aus der Quelle gebaut werden können (FTBFS/"
+"fail to build from source). Sie können nützlich sein, um Momentaufnahmen von "
+"Dingen aufzuzeichnen oder dergleichen."
+
+#. type: Plain text
+#: ../scripts/debuild.1:219
+msgid ""
+"Finally, only B<dpkg-buildpackage-hook> and the hooks from B<lintian-hook> "
+"onwards can be used if B<dpkg-cross> is installed. (This is because "
+"internally, B<debuild> reimplements B<dpkg-buildpackage>, but it does not "
+"attempt to reimplement the B<dpkg-cross> replacement of this script.)"
+msgstr ""
+"Schlussendlich können nur B<dpkg-buildpackage-hook> und die Hooks ab "
+"B<lintian-hook> benutzt werden, falls B<dpkg-cross> installiert ist. (Dies "
+"ist deshalb, weil B<debuild> intern B<dpkg-buildpackage> neu implementiert, "
+"aber nicht versucht den B<dpkg-cross>-Ersatz dieses Skripts neu zu "
+"implementieren.)"
+
+#. type: Plain text
+#: ../scripts/debuild.1:221
+msgid "For details, see above."
+msgstr "Einzelheiten finden Sie oben."
+
+#. type: Plain text
+#: ../scripts/debuild.1:228
+msgid "Command to gain root (or fake root) privileges."
+msgstr "Befehl zum Erlangen von Root- (oder Fake-Root-)Rechten"
+
+#. type: Plain text
+#: ../scripts/debuild.1:231
+msgid "Do not clean the environment, except for PATH."
+msgstr "bereinigt die Umgebung nicht, ausgenommen PATH."
+
+#. type: Plain text
+#: ../scripts/debuild.1:234
+msgid "Do not clean the I<var> variable from the environment."
+msgstr "entfernt die Variable I<Variable> nicht aus der Umgebung."
+
+#. type: Plain text
+#: ../scripts/debuild.1:238
+msgid ""
+"If I<var> ends in an asterisk (\"*\") then all variables with names that "
+"match the portion of I<var> before the asterisk will be preserved."
+msgstr ""
+"Falls I<Variable> mit einem Stern (»*«) endet, dann werden alle Variablen, "
+"deren Namen zum Teil von I<Variable> vor dem Stern passen, erhalten."
+
+#. type: Plain text
+#: ../scripts/debuild.1:242
+msgid ""
+"Set the environment variable I<var> to I<value> and do not remove it from "
+"the environment."
+msgstr ""
+"setzt die Umgebungsvariable I<Variable> auf I<Wert> und entfernt sie nicht "
+"aus der Umgebung."
+
+#. type: TP
+#: ../scripts/debuild.1:242
+#, no-wrap
+msgid "B<--prepend-path=>I<value >"
+msgstr "B<--prepend-path=>I<Wert >"
+
+#. type: Plain text
+#: ../scripts/debuild.1:246
+msgid "Once the normalized PATH has been set, prepend I<value> to it."
+msgstr ""
+"Sobald der normalisierte PATH gesetzt ist, wird ihm I<Wert> vorangestellt."
+
+#. type: TP
+#: ../scripts/debuild.1:246
+#, no-wrap
+msgid "B<--lintian>"
+msgstr "B<--lintian>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:251
+msgid ""
+"Run B<lintian> after B<dpkg-buildpackage>. This is the default behaviour, "
+"and it overrides any configuration file directive to the contrary."
+msgstr ""
+"führt B<lintian> nach B<dpkg-buildpackage> aus. Dies ist das "
+"Standardverhalten und verkehrt alle Konfigurationsdateidirektiven ins "
+"Gegenteil."
+
+#. type: TP
+#: ../scripts/debuild.1:251
+#, no-wrap
+msgid "B<--no-lintian>"
+msgstr "B<--no-lintian>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:254
+msgid "Do not run B<lintian> after B<dpkg-buildpackage>."
+msgstr "führt B<lintian> nicht nach B<dpkg-buildpackage> aus."
+
+#. type: TP
+#: ../scripts/debuild.1:254
+#, no-wrap
+msgid "B<--no-tgz-check>"
+msgstr "B<--no-tgz-check>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:259
+msgid ""
+"Even if we're running B<dpkg-buildpackage> and the version number has a "
+"Debian revision, do not check that the I<.orig.tar.gz> file or I<.orig> "
+"directory exists before starting the build."
+msgstr ""
+"prüft nicht einmal, falls B<dpkg-buildpackage> ausgeführt wird und die "
+"Versionsnummer eine Debian-Revision hat, ob die I<.orig.tar.gz>-Datei oder "
+"das I<.orig>-Verzeichnis existiert, bevor das Bauen gestartet wird."
+
+#. type: TP
+#: ../scripts/debuild.1:259
+#, no-wrap
+msgid "B<--tgz-check>"
+msgstr "B<--tgz-check>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:264
+msgid ""
+"If we're running B<dpkg-buildpackage> and the version number has a Debian "
+"revision, check that the I<.orig.tar.gz> file or I<.orig> directory exists "
+"before starting the build. This is the default behaviour."
+msgstr ""
+"prüft, falls B<dpkg-buildpackage> ausgeführt wird und die Versionsnummer "
+"eine Debian-Revision hat, ob die I<.orig.tar.gz>-Datei oder das I<.orig>-"
+"Verzeichnis existiert, bevor das Bauen gestartet wird. Dies ist das "
+"Standardverhalten."
+
+#. type: TP
+#: ../scripts/debuild.1:264
+#, no-wrap
+msgid "B<--username> I<username>"
+msgstr "B<--username> I<Benutzername>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:268
+msgid ""
+"When signing, use B<debrsign> instead of B<debsign>. I<username> specifies "
+"the credentials to be used."
+msgstr ""
+"verwendet beim Signieren B<debrsign> anstelle von B<debsign>. "
+"I<Benutzername> gibt die Legitimation an, die verwendet werden soll."
+
+#. type: TP
+#: ../scripts/debuild.1:268
+#, no-wrap
+msgid "B<-->I<foo>B<-hook>=I<hook>"
+msgstr "B<-->I<foo>B<-hook>=I<Hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:272
+msgid ""
+"Set a hook as described above. If I<hook> is blank, this unsets the hook."
+msgstr ""
+"setzt einen Hook, wie oben beschrieben. Falls I<Hook> leer ist, entfernt "
+"dies den Hook."
+
+#. type: TP
+#: ../scripts/debuild.1:272
+#, no-wrap
+msgid "B<--clear-hooks>"
+msgstr "B<--clear-hooks>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:276
+msgid ""
+"Clears all hooks. They may be reinstated by later command line options."
+msgstr ""
+"bereinigt alle Hooks. Sie können später durch Befehlszeilenoptionen wieder "
+"eingesetzt werden."
+
+#. type: Plain text
+#: ../scripts/debuild.1:287
+msgid "Do not run B<dpkg-checkbuilddeps> to check build dependencies."
+msgstr ""
+"führt nicht B<dpkg-checkbuilddeps> aus, um Bauabhängigkeiten zu prüfen."
+
+#. type: TP
+#: ../scripts/debuild.1:287
+#, no-wrap
+msgid "B<-D>"
+msgstr "B<-D>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:290
+msgid "Run B<dpkg-checkbuilddeps> to check build dependencies."
+msgstr "führt B<dpkg-checkbuilddeps> aus, um Bauabhängigkeiten zu prüfen."
+
+#. type: Plain text
+#: ../scripts/debuild.1:298
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override some of these configuration file "
+"settings, otherwise the B<--no-conf> option can be used to prevent reading "
+"these files. Environment variable settings are ignored when these "
+"configuration files are read. The currently recognised variables are:"
+msgstr ""
+"Die beiden Konfigurationsdateien I</etc/devscripts.conf> und I<~/."
+"devscripts> werden durch eine Shell in dieser Reihenfolge eingelesen, um "
+"Konfigurationsvariablen zu setzen. Befehlszeilenoptionen können benutzt "
+"werden, um einige der Konfigurationsdateieinstellungen außer Kraft zu "
+"setzen, andernfalls kann die Option B<--no-conf> benutzt werden, um das "
+"Lesen dieser Dateien zu vermeiden. Einstellungen aus Umgebungsvariablen "
+"werden ignoriert, wenn diese Konfigurationsdateien gelesen werden. Die "
+"derzeit erkannten Variablen sind:"
+
+#. type: TP
+#: ../scripts/debuild.1:298
+#, no-wrap
+msgid "B<DEBUILD_PRESERVE_ENV>"
+msgstr "B<DEBUILD_PRESERVE_ENV>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:302
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--preserve-env> "
+"command line parameter being used."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--preserve-env> benutzt würde."
+
+#. type: TP
+#: ../scripts/debuild.1:302
+#, no-wrap
+msgid "B<DEBUILD_PRESERVE_ENVVARS>"
+msgstr "B<DEBUILD_PRESERVE_ENVVARS>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:307
+msgid ""
+"Which environment variables to preserve. This should be a comma-separated "
+"list of variables. This corresponds to using possibly multiple B<--preserve-"
+"envvar> or B<-e> options."
+msgstr ""
+"die Umgebungsvariablen, die erhalten werden sollen. Dies sollte eine durch "
+"Kommas getrennte Variablenliste sein. Dies entspricht der Verwendung "
+"mehrerer B<--preserve-envvar>- oder B<-e>-Optionen."
+
+#. type: TP
+#: ../scripts/debuild.1:307
+#, no-wrap
+msgid "B<DEBUILD_SET_ENVVAR_>I<var>B<=>I<value>"
+msgstr "B<DEBUILD_SET_ENVVAR_>I<Variable>B<=>I<Wert>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:310
+msgid "This corresponds to B<--set-envvar=>I<var>B<=>I<value>."
+msgstr "Dies entspricht B<--set-envvar=>I<Variable>B<=>I<Wert>."
+
+#. type: TP
+#: ../scripts/debuild.1:310
+#, no-wrap
+msgid "B<DEBUILD_PREPEND_PATH>"
+msgstr "B<DEBUILD_PREPEND_PATH>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:313
+msgid "This corresponds to B<--prepend-path>."
+msgstr "Dies entspricht B<--prepend-path>."
+
+#. type: TP
+#: ../scripts/debuild.1:313
+#, no-wrap
+msgid "B<DEBUILD_ROOTCMD>"
+msgstr "B<DEBUILD_ROOTCMD>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:317
+msgid "Setting this variable to I<prog> is the equivalent of B<-r>I<prog>."
+msgstr ""
+"Diese Variable auf I<Programm> zu setzen ist die Entsprechung von B<-"
+"r>I<Programm>."
+
+#. type: TP
+#: ../scripts/debuild.1:317
+#, no-wrap
+msgid "B<DEBUILD_TGZ_CHECK>"
+msgstr "B<DEBUILD_TGZ_CHECK>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:321
+msgid ""
+"Setting this variable to I<no> is the same as the B<--no-tgz-check> command "
+"line option."
+msgstr ""
+"Diese Variable auf I<no> zu setzen ist dasselbe wie die Befehlszeilenoption "
+"B<--no-tgz-check>."
+
+#. type: TP
+#: ../scripts/debuild.1:321
+#, no-wrap
+msgid "B<DEBUILD_SIGNING_USERNAME>"
+msgstr "B<DEBUILD_SIGNING_USERNAME>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:325
+msgid ""
+"Setting this variable is the same as using the B<--username> command line "
+"option."
+msgstr ""
+"Das Setzen dieser Variable entspricht der Benutzung der Befehlszeilenoption "
+"B<--username>."
+
+#. type: TP
+#: ../scripts/debuild.1:325
+#, no-wrap
+msgid "B<DEBUILD_DPKG_BUILDPACKAGE_OPTS>"
+msgstr "B<DEBUILD_DPKG_BUILDPACKAGE_OPTS>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:333
+msgid ""
+"These are options which should be passed to the invocation of B<dpkg-"
+"buildpackage>. They are given before any command-line options. Due to "
+"issues of shell quoting, if a word containing spaces is required as a single "
+"option, extra quotes will be required. For example, to ensure that your own "
+"GPG key is always used, even for sponsored uploads, the configuration file "
+"might contain the line:"
+msgstr ""
+"Diese Optionen werden an den Aufruf von B<dpkg-buildpackage> weitergegeben "
+"werden. Sie werden vor allen anderen Befehlszeilenoptionen übergeben. Falls "
+"eine Option ein Leerzeichen enthalten soll, muss durch Verwendung "
+"zusätzlicher Anführungszeichen verhindert werden, dass die Shell die Option "
+"in mehrere trennt. Um zum Beispiel sicherzustellen, dass immer (auch beim "
+"Sponsern) Ihr eigener GPG-Schlüssel verwendet wird, kann die "
+"Konfigurationsdatei folgende Zeile enthalten:"
+
+#. type: Plain text
+#: ../scripts/debuild.1:336
+#, no-wrap
+msgid "DEBUILD_DPKG_BUILDPACKAGE_OPTS=\"-k'Julian Gilbey E<lt>jdg@debian.orgE<gt>' -sa\"\n"
+msgstr "DEBUILD_DPKG_BUILDPACKAGE_OPTS=\"-k'Julian Gilbey E<lt>jdg@debian.orgE<gt>' -sa\"\n"
+
+#. type: Plain text
+#: ../scripts/debuild.1:341
+msgid ""
+"which gives precisely two options. Without the extra single quotes, B<dpkg-"
+"buildpackage> would reasonably complain that I<Gilbey> is an unrecognised "
+"option (it doesn't start with a B<-> sign)."
+msgstr ""
+"die genau zwei Optionen angibt. Ohne die zusätzlichen einfachen "
+"Anführungszeichen würde B<dpkg-buildpackage> berechtigterweise beklagen, "
+"dass I<Gilbey> eine unbekannte Option ist (es beginnt nicht mit einem B<->-"
+"Zeichen)."
+
+#. type: Plain text
+#: ../scripts/debuild.1:346
+msgid ""
+"Also, if this option contains any B<-r>, B<-d> or B<-D> options, these will "
+"always be taken account of by B<debuild>. Note that a B<-r> option in this "
+"variable will override the setting in B<DEBUILD_ROOTCMD>."
+msgstr ""
+"Falls diese Option eine B<-r>-, B<-d>- oder B<-D>-Option enthält, wird diese "
+"immer durch B<debuild> mitberücksichtigt. Beachten Sie, dass eine B<-r>-"
+"Option in dieser Variable die Einstellung B<DEBUILD_ROOTCMD> außer Kraft "
+"setzt."
+
+#. type: TP
+#: ../scripts/debuild.1:346
+#, no-wrap
+msgid "B<DEBUILD_>I<FOO>B<_HOOK>"
+msgstr "B<DEBUILD_>I<FOO>B<_HOOK>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:350
+msgid ""
+"The hook variable for the I<foo> hook. See the section on hooks above for "
+"more details. By default, this is empty."
+msgstr ""
+"die Hook-Variable für den Hook I<foo>. Weitere Einzelheiten finden Sie im "
+"vorhergehenden Abschnitt über Hooks. Standardmäßig ist sie leer."
+
+#. type: TP
+#: ../scripts/debuild.1:350
+#, no-wrap
+msgid "B<DEBUILD_LINTIAN>"
+msgstr "B<DEBUILD_LINTIAN>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:354
+msgid ""
+"Should we run B<lintian>? If this is set to I<no>, then B<lintian> will not "
+"be run."
+msgstr ""
+"Soll B<lintian> ausgeführt werden? Falls dies auf I<no> gesetzt ist, dann "
+"wird B<lintian> nicht ausgeführt."
+
+#. type: TP
+#: ../scripts/debuild.1:354
+#, no-wrap
+msgid "B<DEBUILD_LINTIAN_OPTS>"
+msgstr "B<DEBUILD_LINTIAN_OPTS>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:360
+msgid ""
+"These are options which should be passed to the invocation of B<lintian>. "
+"They are given before any command-line options, and the usage of this "
+"variable is as described for the B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> variable."
+msgstr ""
+"Dies sind Optionen, die an den Aufruf von B<lintian> übergeben werden "
+"sollen. Sie werden vor jeder anderen Befehlszeilenoption angegeben. Diese "
+"Variable wird verwendet, wie bei der Variablen "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> beschrieben."
+
+#. type: Plain text
+#: ../scripts/debuild.1:371
+msgid ""
+"To build your own package, simply run B<debuild> from inside the source "
+"tree. B<dpkg-buildpackage>(1) options may be given on the command line."
+msgstr ""
+"Um Ihr eigenes Paket zu bauen, führen Sie einfach B<debuild> aus dem Quellen-"
+"Verzeichnis aus. B<dpkg-buildpackage>(1)-Optionen können auf der "
+"Befehlszeile übergeben werden."
+
+#. type: Plain text
+#: ../scripts/debuild.1:374
+msgid ""
+"The typical command line options to build only the binary package(s) "
+"without signing the .changes file (or the non-existent .dsc file):"
+msgstr ""
+"Die typischen Befehlszeilenoptionen, um nur die binären Pakete zu bauen, "
+"ohne die .changes-Datei (oder die nicht existierende .dsc-Datei) zu "
+"signieren:"
+
+#. type: Plain text
+#: ../scripts/debuild.1:377
+#, no-wrap
+msgid "debuild -i -us -uc -b\n"
+msgstr "debuild -i -us -uc -b\n"
+
+#. type: Plain text
+#: ../scripts/debuild.1:380
+msgid "Change the B<-b> to B<-S> to build only a source package."
+msgstr "Ändern Sie das B<-b> in B<-S>, um nur ein Quellpaket zu bauen."
+
+#. type: Plain text
+#: ../scripts/debuild.1:383
+msgid ""
+"An example using B<lintian> to check the resulting packages and passing "
+"options to it:"
+msgstr ""
+"Ein Beispiel, das B<lintian> verwendet, um die erzeugten Pakete zu testen, "
+"und diesem eine Option mitgibt:"
+
+#. type: Plain text
+#: ../scripts/debuild.1:386
+#, no-wrap
+msgid "debuild --lintian-opts -i\n"
+msgstr "debuild --lintian-opts -i\n"
+
+#. type: Plain text
+#: ../scripts/debuild.1:394
+msgid ""
+"Note the order of options here: the B<debuild> options come first, then the "
+"B<dpkg-buildpackage> ones, then finally the checker options. (And "
+"B<lintian> is called by default.) If you find yourself using the same "
+"B<dpkg-buildpackage> options repeatedly, consider using the "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> configuration file option as described "
+"above."
+msgstr ""
+"Beachten Sie hier die Reihenfolge der Optionen: Zuerst kommen die B<debuild>-"
+"Optionen, dann die von B<dpkg-buildpackage>, dann am Ende die "
+"Prüferoptionen. (Und standardmäßig wird B<lintian> aufgerufen.) Falls Sie "
+"feststellen, dass Sie wiederholt die selben B<dpkg-buildpackage>-Optionen "
+"benutzen, sollten Sie in Betracht ziehen, die Konfigurationsdateioption "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> zu benutzen, wie oben beschrieben."
+
+#. type: Plain text
+#: ../scripts/debuild.1:398
+msgid ""
+"To build a package for a sponsored upload, given I<foobar_1.0-1.dsc> and the "
+"respective source files, run something like the following commands:"
+msgstr ""
+"Um ein Paket für ein sponserndes Hochladen zu bauen, wobei I<foobar_1.0-1."
+"dsc> und die jeweilige Quelldatei gegeben sind, führen Sie Befehle wie die "
+"folgenden aus:"
+
+#. type: Plain text
+#: ../scripts/debuild.1:403
+#, no-wrap
+msgid ""
+"dpkg-source -x foobar_1.0-1.dsc\n"
+"cd foobar-1.0\n"
+"debuild -k0x12345678\n"
+msgstr ""
+"dpkg-source -x foobar_1.0-1.dsc\n"
+"cd foobar-1.0\n"
+"debuild -k0x12345678\n"
+
+#. type: Plain text
+#: ../scripts/debuild.1:410
+msgid ""
+"where 0x12345678 is replaced by your GPG key ID or other key identifier such "
+"as your email address. Again, you could also use the "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> configuration file option as described "
+"above to avoid having to type the B<-k> option each time you do a sponsored "
+"upload."
+msgstr ""
+"wobei 0x12345678 durch Ihre GPG-Schlüsselkennung oder andere "
+"Schlüsselbezeichner wie Ihre E-Mail-Adresse ersetzt wird. Außerdem können "
+"Sie wieder die Konfigurationsdateioption B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> "
+"wie oben beschrieben verwenden, um zu vermeiden, dass Sie die Option B<-k> "
+"jedes Mal tippen müssen, wenn Sie ein gesonsortes Hochladen durchführen."
+
+#. type: Plain text
+#: ../scripts/debuild.1:422
+msgid ""
+"B<chmod>(1), B<debsign>(1), B<dpkg-buildpackage>(1), B<dpkg-"
+"checkbuilddeps>(1), B<fakeroot>(1), B<lintian>(1), B<su>(1), B<sudo>(1), "
+"B<super>(1), B<devscripts.conf>(5), B<dpkg-statoverride>(8)"
+msgstr ""
+"B<chmod>(1), B<debsign>(1), B<dpkg-buildpackage>(1), B<dpkg-"
+"checkbuilddeps>(1), B<fakeroot>(1), B<lintian>(1), B<su>(1), B<sudo>(1), "
+"B<super>(1), B<devscripts.conf>(5), B<dpkg-statoverride>(8)"
+
+#. type: Plain text
+#: ../scripts/debuild.1:425
+msgid ""
+"The original B<debuild> program was written by Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. The current version has been written by "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Das ursprüngliche B<debuild>-Programm wurde von Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt> geschrieben. Die aktuelle Version wurde von "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt> verfasst."
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:26
+msgid "desktop2menu - create a menu file skeleton from a desktop file"
+msgstr "desktop2menu - erstellt ein Menüdateigerüst aus einer Desktop-Datei"
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:30
+msgid "B<desktop2menu> B<--help>|B<--version>"
+msgstr "B<desktop2menu> B<--help>|B<--version>"
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:32
+msgid "B<desktop2menu> I<desktop file> [I<package name>]"
+msgstr "B<desktop2menu> I<Desktop-Datei> [I<Paketname>]"
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:36
+msgid ""
+"B<desktop2menu> generates a skeleton menu file from the supplied freedesktop."
+"org desktop file."
+msgstr ""
+"B<desktop2menu> erstellt eine Gerüstmenüdatei aus der übergegebenen "
+"freedesktop.org-Desktopdatei."
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:39
+msgid ""
+"The package name to be used in the menu file may be passed as an additional "
+"argument. If it is not supplied then B<desktop2menu> will attempt to derive "
+"the package name from the data in the desktop file."
+msgstr ""
+"Der Paketname, der in der Menüdatei benutzt wird, kann als zusätzliches "
+"Argument übergeben werden. Falls er nicht mitgegeben wurde, wird "
+"B<desktop2menu> versuchen, den Paketnamen aus den Daten der Desktopdatei "
+"abzuleiten."
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:45
+msgid ""
+"This program is Copyright (C) 2007 by Sune Vuorela <debian@pusling.com>. It "
+"was modified by Adam D. Barratt <adam@adam-barratt.org.uk> for the "
+"devscripts package. This program comes with ABSOLUTELY NO WARRANTY. You "
+"are free to redistribute this code under the terms of the GNU General Public "
+"License, version 2 or later."
+msgstr ""
+"Dieses Programm unterliegt dem Copyright (C) 2007 von Sune Vuorela "
+"<debian@pusling.com>. Es wurde von Adam D. Barratt <adam@adam-barratt.org."
+"uk> für das Paket Devscripts verändert. Für dieses Programm besteht "
+"KEINERLEI GARANTIE. Es ist Ihnen erlaubt, diesen Code unter den Bedingungen "
+"der GNU General Public License, Version 2 oder später, weitergeben."
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:54
+msgid ""
+"Sune Vuorela <debian@pusling.com> with modifications by Adam D. Barratt "
+"<adam@adam-barratt.org.uk>"
+msgstr ""
+"Sune Vuorela <debian@pusling.com> mit Änderungen durch Adam D. Barratt "
+"<adam@adam-barratt.org.uk>"
+
+#. type: TH
+#: ../scripts/dep3changelog.1:1
+#, no-wrap
+msgid "DEP3CHANGELOG"
+msgstr "DEP3CHANGELOG"
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:4
+msgid ""
+"dep3changelog - generate a changelog entry from a DEP3-style patch header"
+msgstr ""
+"dep3changelog - erzeugt einen Changelog-Eintrag aus Patch-Kopfzeilen im DEP3-"
+"Stil"
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:6
+msgid ""
+"B<dep3changelog> I<patch> [I<patch> ...] [I<options>] [-- [I<dch_options>]]"
+msgstr ""
+"B<dep3changelog> I<Patch> [I<Patch> …] [I<Optionen>] [-- [I<Dch_Optionen>]]"
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:15
+msgid ""
+"B<dep3changelog> extracts the DEP3 patch headers from the given I<patch> "
+"files and builds a changelog entry for each patch. If the patch author "
+"differs from the one detected from the B<DEBEMAIL>, B<NAME>, B<DEBEMAIL>, or "
+"B<EMAIL> environment variables, ``Thanks to I<author> E<lt>I<email>E<gt>'' "
+"is added to the changelog entry for that patch. Any B<bug-debian> or B<bug-"
+"ubuntu> fields are added as ``Closes'' to the changelog entry. The "
+"generated changelog entries are passed to B<debchange> as an argument along "
+"with the given I<dch_options>."
+msgstr ""
+"B<dep3changelog> extrahiert die DEP3-Patch-Kopfzeilen aus den angegebenen "
+"I<Patch>-Dateien und erzeugt einen Changelog-Eintrag für jeden Patch. Falls "
+"sich der Patch-Autor von dem in den Umgebungsvariablen B<DEBEMAIL>, B<NAME>, "
+"B<DEBEMAIL> oder B<EMAIL> angegebenen unterscheidet, wird »Thanks to "
+"I<Autor> E<lt>I<E-Mail>E<gt>« zum Changelog-Eintrag für den Patch "
+"hinzugefügt. Alle B<bug-debian>- oder B<bug-ubuntu>-Felder werden dem "
+"Changelog-Eintrag als »Closes« hinzugefügt. Die erzeugten Einträge werden an "
+"B<debchange> als Argument neben den angegebenen I<Dch_Optionen> übergeben."
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:28
+msgid "Steve Langasek E<lt>vorlon@debian.orgE<gt>"
+msgstr "Steve Langasek E<lt>vorlon@debian.orgE<gt>"
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:29 ../scripts/list-unreleased.1:21
+msgid "B<debchange>(1)"
+msgstr "B<debchange>(1)"
+
+#. type: TH
+#: ../scripts/devscripts.1:1
+#, no-wrap
+msgid "DEVSCRIPTS"
+msgstr "DEVSCRIPTS"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:4
+msgid "devscripts - scripts to ease the lives of Debian developers"
+msgstr "devscripts - Skripte, die das Leben von Debian-Entwicklern erleichtern"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:12
+msgid ""
+"The B<devscripts> package provides a collection of scripts which may be of "
+"use to Debian developers and others wishing to build Debian packages. For a "
+"summary of the available scripts, please see the file I</usr/share/doc/"
+"devscripts/README.gz>, and for full details, please see the individual "
+"manpages. They are contributed by multiple developers; for details of the "
+"authors, please see the code or manpages."
+msgstr ""
+"Das Paket B<devscripts> ist eine Sammlung von Skripten für Debian-Entwickler "
+"und andere, die Debian-Pakete bauen wollen. Eine Zusammenfassung der "
+"verfügbaren Skripte finden Sie in der Datei I</usr/share/doc/devscripts/"
+"README.gz> nach. Vollständige Einzelheiten finden Sie in den jeweiligen "
+"Handbuchseiten. Sie werden durch mehrere Entwickler beigetragen; "
+"Einzelheiten über die Autoren finden Sie im Code oder den Handbuchseiten."
+
+#. type: Plain text
+#: ../scripts/devscripts.1:16
+msgid ""
+"Also, the directory I</usr/share/doc/devscripts/examples> contains examples "
+"of B<procmail> and B<exim> scripts for sorting mail arriving to Debian "
+"mailing lists."
+msgstr ""
+"Außerdem enthält das Verzeichnis I</usr/share/doc/devscripts/examples> "
+"Beispiele von B<procmail>- und B<exim>-Skripten zum Sortieren ankommender E-"
+"Mails zu Debian-Mailinglisten."
+
+#. type: Plain text
+#: ../scripts/devscripts.1:20
+msgid ""
+"Several scripts of the devscripts suite use the following environment "
+"variables. Check the man pages of individual scripts for more details on how "
+"the variables are used."
+msgstr ""
+"Mehrere Skripte der Devscripts-Suite verwenden die folgenden "
+"Umgebungsvariablen. Lesen Sie die Einzelheiten zur Benutzung der Variablen "
+"in den Handbuchseiten der jeweiligen Skripte nach."
+
+# FIXME appears not in the manpage --> remove from translation
+#. type: IX
+#: ../scripts/devscripts.1:20
+#, no-wrap
+msgid "Header"
+msgstr "Header"
+
+#. type: IP
+#: ../scripts/devscripts.1:21
+#, no-wrap
+msgid "\\s-1DEBEMAIL\\s0"
+msgstr "\\s-1DEBEMAIL\\s0"
+
+# FIXME appears not in the manpage --> remove from translation
+#. type: IX
+#: ../scripts/devscripts.1:22 ../scripts/devscripts.1:25
+#, no-wrap
+msgid "Item"
+msgstr "Item"
+
+#. type: IX
+#: ../scripts/devscripts.1:22
+#, no-wrap
+msgid "DEBEMAIL"
+msgstr "DEBEMAIL"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:24
+msgid "Email of the person acting on a given Debian package via devscripts."
+msgstr ""
+"E-Mail-Adresse der Person, die an einem angegebenen Debian-Paket mittels "
+"Devscripts tätig ist."
+
+#. type: IP
+#: ../scripts/devscripts.1:24
+#, no-wrap
+msgid "\\s-1DEBFULLNAME\\s0"
+msgstr "\\s-1DEBFULLNAME\\s0"
+
+#. type: IX
+#: ../scripts/devscripts.1:25
+#, no-wrap
+msgid "DEBFULLNAME"
+msgstr "DEBFULLNAME"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:28
+msgid ""
+"Full name (first + family) of the person acting on a given Debian package "
+"via devscripts."
+msgstr ""
+"Vollständiger Name (Vor- und Zuname) der Person, die an einem angegebenen "
+"Debian-Paket mittels Devscripts tätig ist."
+
+#. type: SH
+#: ../scripts/devscripts.1:28
+#, no-wrap
+msgid "SCRIPTS"
+msgstr "SKRIPTE"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:31
+msgid ""
+"Here is the complete list of available devscripts. See their man pages for "
+"additional documentation."
+msgstr ""
+"Es folgt eine komplette Liste verfügbarer Devscripts. Zusätzliche "
+"Dokumentation finden Sie in deren Handbuchseiten."
+
+#. type: IP
+#: ../scripts/devscripts.1:31
+#, no-wrap
+msgid "I<annotate-output>(1)"
+msgstr "I<annotate-output>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:33
+msgid ""
+"run a command and prepend time and stream (O for stdout, E for stderr) for "
+"every line of output"
+msgstr ""
+"führt einen Befehl aus und stellt jeder Zeile der Ausgabe die Zeit und den "
+"Datenstrom (O für die Standardausgabe Stdout, E für die "
+"StandardfehlerausgabeStderr) voran."
+
+#. type: IP
+#: ../scripts/devscripts.1:33
+#, no-wrap
+msgid "I<archpath>(1)"
+msgstr "I<archpath>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:35
+msgid "print tla/Bazaar package names [tla | bazaar]"
+msgstr "gibt die tla-/Bazaar-Paketnamen aus. [tla | bazaar]"
+
+#. type: IP
+#: ../scripts/devscripts.1:35
+#, no-wrap
+msgid "I<bts>(1)"
+msgstr "I<bts>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:37
+msgid ""
+"a command-line tool for manipulating the BTS [www-browser, libauthen-sasl-"
+"perl, libnet-smtp-ssl-perl, libsoap-lite-perl, libwww-perl, bsd-mailx | "
+"mailx]"
+msgstr ""
+"ein Befehlszeilenwerkzeug zum Manipulieren der Fehlerdatenbank. [www-"
+"browser, libauthen-sasl-perl, libnet-smtp-ssl-perl, libsoap-lite-perl, "
+"libwww-perl, bsd-mailx | mailx]"
+
+#. type: IP
+#: ../scripts/devscripts.1:37
+#, no-wrap
+msgid "I<build-rdeps>(1)"
+msgstr "I<build-rdeps>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:39
+msgid ""
+"search for all packages that build-depend on a given package [dctrl-tools]"
+msgstr ""
+"sucht nach allen Paketen, die eine Bauabhängigkeit von einem angegebenen "
+"Paket haben. [dctrl-tools]"
+
+#. type: IP
+#: ../scripts/devscripts.1:39
+#, no-wrap
+msgid "I<chdist>(1)"
+msgstr "I<chdist>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:41
+msgid "tool to easily play with several distributions [dctrl-tools]"
+msgstr ""
+"Werkzeug zum einfachen Umgang mit mehreren Distributionen. [dctrl-tools]"
+
+#. type: IP
+#: ../scripts/devscripts.1:41
+#, no-wrap
+msgid "I<checkbashisms>(1)"
+msgstr "I<checkbashisms>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:43
+msgid ""
+"check whether a /bin/sh script contains any common bash-specific contructs"
+msgstr ""
+"prüft, ob ein /bin/sh-Skript irgendwelche üblichen Bash-spezifischen "
+"Konstrukte enthält."
+
+#. type: IP
+#: ../scripts/devscripts.1:43
+#, no-wrap
+msgid "I<cowpoke>(1)"
+msgstr "I<cowpoke>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:45
+msgid ""
+"upload a Debian source package to a cowbuilder host and build it, optionally "
+"also signing and uploading the result to an incoming queue [ssh-client]"
+msgstr ""
+"lädt ein Debian-Quellpaket auf einen Cowbuilder-Rechner und baut es, "
+"signiert es wahlweise und lädt das Ergebnis in eine Incoming-Warteschlange."
+"ssh. [ssh-client]"
+
+#. type: IP
+#: ../scripts/devscripts.1:45
+#, no-wrap
+msgid "I<cvs-debi, cvs-debc>(1)"
+msgstr "I<cvs-debi, cvs-debc>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:47
+msgid ""
+"wrappers around debi and debc respectively (see below) which allow them to "
+"be called from the CVS working directory [cvs-buildpackage]"
+msgstr ""
+"Wrapper um Debi beziehungsweise Debc (siehe unten), die ermöglichen, sie aus "
+"dem CVS-Arbeitsverzeichnis aufzurufen. [cvs-buildpackage]"
+
+#. type: IP
+#: ../scripts/devscripts.1:47
+#, no-wrap
+msgid "I<cvs-debrelease>(1)"
+msgstr "I<cvs-debrelease>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:49
+msgid ""
+"wrapper around debrelease which allows it to be called from the CVS working "
+"directory [cvs-buildpackage, dupload | dput, ssh-client]"
+msgstr ""
+"Wrapper um Debrelease, der es ermöglicht, es aus dem CVS-Arbeitsverzeichnis "
+"aufzurufen. [cvs-buildpackage, dupload | dput, ssh-client]"
+
+#. type: IP
+#: ../scripts/devscripts.1:49
+#, no-wrap
+msgid "I<cvs-debuild>(1)"
+msgstr "I<cvs-debuild>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:51
+msgid ""
+"wrapper for cvs-buildpackage to use debuild as its package building program "
+"[cvs-buildpackage, fakeroot, lintian, gnupg]"
+msgstr ""
+"Wrapper für CVS-Buildpackage, um Debuild als Paketbauprogramm zu benutzen. "
+"[cvs-buildpackage, fakeroot, lintian, gnupg]"
+
+#. type: IP
+#: ../scripts/devscripts.1:51
+#, no-wrap
+msgid "I<dcmd>(1)"
+msgstr "I<dcmd>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:53
+msgid ""
+"run a given command replacing the name of a .changes or .dsc file with each "
+"of the files referenced therein"
+msgstr ""
+"führt einen angegebenen Befehl aus, der den Namen einer .changes- oder .dsc-"
+"Datei durch jede darin referenzierte Datei ersetzt."
+
+#. type: IP
+#: ../scripts/devscripts.1:53
+#, no-wrap
+msgid "I<dcontrol>(1)"
+msgstr "I<dcontrol>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:55
+msgid ""
+"remotely query package and source control files for all Debian distributions "
+"[liburl-perl, libwww-perl]"
+msgstr ""
+"fragt aus der Ferne Paket- und Quellsteuerdateien für alle Debian-"
+"Distributionen ab. [liburl-perl, libwww-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:55
+#, no-wrap
+msgid "I<dd-list>(1)"
+msgstr "I<dd-list>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:57
+msgid "given a list of packages, pretty-print it ordered by maintainer"
+msgstr ""
+"gibt eine angegebene Liste von Paketen hübsch nach Paketbetreuer sortiert "
+"aus."
+
+#. type: IP
+#: ../scripts/devscripts.1:57
+#, no-wrap
+msgid "I<debc>(1)"
+msgstr "I<debc>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:59
+msgid "display the contents of just-built .debs"
+msgstr "zeigt den Inhalt von frisch gebauten .debs."
+
+#. type: IP
+#: ../scripts/devscripts.1:59
+#, no-wrap
+msgid "I<debchange/dch>(1)"
+msgstr "I<debchange/dch>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:61
+msgid ""
+"automagically add entries to debian/changelog files [libdistro-info-perl, "
+"libparse-debcontrol-perl, libsoap-lite-perl]"
+msgstr ""
+"fügt debian-/changelog-Dateien automagisch Einträge hinzu. [libdistro-info-"
+"perl, libparse-debcontrol-perl, libsoap-lite-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:61
+#, no-wrap
+msgid "I<debcheckout>(1)"
+msgstr "I<debcheckout>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:63
+msgid "checkout the development repository of a Debian package"
+msgstr "checkt das Entwicklungsdepot eines Debian-Pakets aus."
+
+#. type: IP
+#: ../scripts/devscripts.1:63
+#, no-wrap
+msgid "I<debclean>(1)"
+msgstr "I<debclean>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:65
+msgid "clean a Debian source tree [fakeroot]"
+msgstr "säubert einen Debian-Quellverzeichnisbaum. [fakeroot]"
+
+#. type: IP
+#: ../scripts/devscripts.1:65
+#, no-wrap
+msgid "I<debcommit>(1)"
+msgstr "I<debcommit>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:67
+msgid ""
+"commit changes to cvs, darcs, svn, svk, tla, bzr, git, or hg, basing commit "
+"message on changelog [cvs | darcs | subversion | svk | tla | bzr | git-core "
+"| mercurial, libtimedate-perl]"
+msgstr ""
+"übergibt Änderungen an cvs, darcs, svn, svk, tla, bzr, git oder hg, "
+"basierend auf Commit-Nachrichten des Changelogs. [cvs | darcs | subversion | "
+"svk | tla | bzr | git-core | mercurial, libtimedate-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:67
+#, no-wrap
+msgid "I<debdiff>(1)"
+msgstr "I<debdiff>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:69
+#, fuzzy
+#| msgid ""
+#| "compare two versions of a Debian package to check for added and removed "
+#| "files [wdiff, patchutils]"
+msgid ""
+"compare two versions of a Debian package to check for added and removed "
+"files. Use the debbindiff package for deep comparisons. [wdiff, patchutils]"
+msgstr ""
+"vergleicht zwei Versionen eines Debian-Pakets, um es auf hinzugefügte oder "
+"entfernte Dateien hin zu untersuchen. [wdiff, patchutils]"
+
+#. type: IP
+#: ../scripts/devscripts.1:69
+#, no-wrap
+msgid "I<debi>(1)"
+msgstr "I<debi>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:71
+msgid "install a just-built package"
+msgstr "installiert ein frisch gebautes Paket."
+
+#. type: IP
+#: ../scripts/devscripts.1:71
+#, no-wrap
+msgid "I<debpkg>(1)"
+msgstr "I<debpkg>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:73
+msgid "dpkg wrapper to be able to manage/test packages without su"
+msgstr "Dpkg-Wrapper, der befähigt, Pakete ohne Su zu verwalten/testen."
+
+#. type: IP
+#: ../scripts/devscripts.1:73
+#, no-wrap
+msgid "I<debrelease>(1)"
+msgstr "I<debrelease>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:75
+msgid "wrapper around dupload or dput [dupload | dput, ssh-client]"
+msgstr "Wrapper um Dupload oder Dput. [dupload | dput, ssh-client]"
+
+#. type: IP
+#: ../scripts/devscripts.1:75
+#, no-wrap
+msgid "I<debsign, debrsign>(1)"
+msgstr "I<debsign, debrsign>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:77
+msgid ""
+"sign a .changes/.dsc pair without needing any of the rest of the package to "
+"be present; can sign the pair remotely or fetch the pair from a remote "
+"machine for signing [gnupg, debian-keyring, ssh-client]"
+msgstr ""
+"signiert ein .changes-/.dsc-Paar, ohne dass der Rest des Pakets vorhanden "
+"sein muss; kann die Paare aus der Ferne signieren oder das Paar von einem "
+"fernen Rechner zum Signieren abrufen. [gnupg, debian-keyring, ssh-client]"
+
+#. type: IP
+#: ../scripts/devscripts.1:77
+#, no-wrap
+msgid "I<debsnap>(1)"
+msgstr "I<debsnap>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:79
+msgid ""
+"grab packages from http://snapshot.debian.org [libwww-perl, libjson-perl]"
+msgstr ""
+"greift auf Pakete von http://snapshot.debian.org zu. [libwww-perl, libjson-"
+"perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:79
+#, no-wrap
+msgid "I<debuild>(1)"
+msgstr "I<debuild>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:81
+msgid ""
+"wrapper to build a package without having to su or worry about how to invoke "
+"dpkg to build using fakeroot. Also deals with common environment problems, "
+"umask etc. [fakeroot, lintian, gnupg]"
+msgstr ""
+"Wrapper, um ein Paket zu bauen, ohne Su einsetzen zu müssen oder sich "
+"Gedanken darüber zu machen, wie Dpkg zum Bauen mittels Fakeroot aufgerufen "
+"wird. Bewältigt außerdem die häufigen Umgebungsprobleme, Umask etc. "
+"[fakeroot, lintian, gnupg]"
+
+#. type: IP
+#: ../scripts/devscripts.1:81
+#, no-wrap
+msgid "I<deb-reversion>(1)"
+msgstr "I<deb-reversion>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:83
+msgid ""
+"increase a binary package version number and repacks the package, useful for "
+"porters and the like"
+msgstr ""
+"erhöht die Versionsnummer eines Binärpakets und packt das Paket neu. Dies "
+"ist nützlich für Portierer und dergleichen."
+
+#. type: IP
+#: ../scripts/devscripts.1:83
+#, no-wrap
+msgid "I<dep3changelog>(1)"
+msgstr "I<dep3changelog>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:85
+msgid "generate a changelog entry from a DEP3-style patch header"
+msgstr "erzeugt einen Changelog-Eintrag aus Patch-Kopfzeilen im DEP3-Stil."
+
+#. type: IP
+#: ../scripts/devscripts.1:85
+#, no-wrap
+msgid "I<desktop2menu>(1)"
+msgstr "I<desktop2menu>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:87
+msgid ""
+"given a freedesktop.org desktop file, generate a skeleton for a menu file "
+"[libfile-desktopentry-perl]"
+msgstr ""
+"erzeugt eine Gerüstmenüdatei aus einer gegebenen freedesktop.org-"
+"Desktopdatei. [libfile-desktopentry-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:87
+#, no-wrap
+msgid "I<dget>(1)"
+msgstr "I<dget>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:89
+msgid "download Debian source and binary packages [wget | curl]"
+msgstr "lädt Debian-Quell- und -Binärpakete herunter. [wget | curl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:89
+#, no-wrap
+msgid "I<diff2patches>(1)"
+msgstr "I<diff2patches>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:91
+msgid ""
+"extract patches from a .diff.gz file placing them under debian/ or, if "
+"present, debian/patches [patchutils]"
+msgstr ""
+"extrahiert Patches aus einer .diff.gz-Datei und legt sie unter debian/ oder, "
+"falls verfügbar, debian/patches ab. [patchutils]"
+
+#. type: IP
+#: ../scripts/devscripts.1:91
+#, no-wrap
+msgid "I<dpkg-depcheck, dpkg-genbuilddeps>(1)"
+msgstr "I<dpkg-depcheck, dpkg-genbuilddeps>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:93
+msgid ""
+"determine the packages used during the build of a Debian package; useful for "
+"determining the Build-Depends control field needed [build-essential, strace]"
+msgstr ""
+"bestimmt die Pakete, die während des Baus eines Debian-Pakets benutzt "
+"werden; nützlich, um die benötigten Steuerfelder der Bauabhängigkeiten zu "
+"bestimmen. [build-essential, strace]"
+
+#. type: IP
+#: ../scripts/devscripts.1:93
+#, no-wrap
+msgid "I<dscextract>(1)"
+msgstr "I<dscextract>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:95
+msgid "extract a single file from a Debian source package [patchutils]"
+msgstr ""
+"extrahiert eine einzelne Datei aus einem Debian-Quellpaket. [patchutils]"
+
+#. type: IP
+#: ../scripts/devscripts.1:95
+#, no-wrap
+msgid "I<dscverify>(1)"
+msgstr "I<dscverify>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:97
+msgid ""
+"verify the integrity of a Debian package from the .changes or .dsc files "
+"[gnupg, debian-keyring, libdigest-md5-perl]"
+msgstr ""
+"überprüft die Integrität eines Debian-Pakets aus den .changes- oder .dsc-"
+"Dateien. [gnupg, debian-keyring, libdigest-md5-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:97
+#, no-wrap
+msgid "I<edit-patch>(1)"
+msgstr "I<edit-patch>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:99
+msgid ""
+"add/edit a patch for a source package and commit the changes [quilt | dpatch "
+"| cdbs]"
+msgstr ""
+"fügt einen Patch für ein Quellpaket hinzu oder bearbeitet ihn und führt "
+"einen Commit der Änderungen durch. [quilt | dpatch | cdbs]"
+
+#. type: IP
+#: ../scripts/devscripts.1:99
+#, no-wrap
+msgid "I<getbuildlog>(1)"
+msgstr "I<getbuildlog>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:101
+msgid "download package build logs from Debian auto-builders [wget]"
+msgstr ""
+"lädt die Paketbauprotokolle von den automatischen Debian-Baumaschinen "
+"herunter. [wget]"
+
+#. type: IP
+#: ../scripts/devscripts.1:101
+#, no-wrap
+msgid "I<grep-excuses>(1)"
+msgstr "I<grep-excuses>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:103
+msgid ""
+"grep the update_excuses.html file for your packages [libterm-size-perl, "
+"wget, w3m]"
+msgstr ""
+"durchsucht mit Grep die Datei update_excuses.html nach Ihren Paketen. "
+"[libterm-size-perl, wget, w3m]"
+
+#. type: IP
+#: ../scripts/devscripts.1:103
+#, no-wrap
+msgid "I<licensecheck>(1)"
+msgstr "I<licensecheck>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:105
+msgid "attempt to determine the license of source files"
+msgstr "versucht die Lizenz der Quelldateien zu bestimmen."
+
+#. type: IP
+#: ../scripts/devscripts.1:105
+#, no-wrap
+msgid "I<list-unreleased>(1)"
+msgstr "I<list-unreleased>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:107
+msgid "search for unreleased packages"
+msgstr "sucht nach unveröffentlichten Paketen."
+
+#. type: IP
+#: ../scripts/devscripts.1:107
+#, no-wrap
+msgid "I<manpage-alert>(1)"
+msgstr "I<manpage-alert>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:109
+msgid "locate binaries without corresponding manpages [man-db]"
+msgstr "ortet Programme ohne zugehörige Handbuchseiten. [man-db]"
+
+#. type: IP
+#: ../scripts/devscripts.1:109
+#, no-wrap
+msgid "I<mass-bug>(1)"
+msgstr "I<mass-bug>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:111
+msgid "mass-file bug reports [bsd-mailx | mailx]"
+msgstr "reicht größere Anzahl von Fehlerberichten ein. [bsd-mailx | mailx]"
+
+#. type: IP
+#: ../scripts/devscripts.1:111
+#, no-wrap
+msgid "I<mergechanges>(1)"
+msgstr "I<mergechanges>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:113
+msgid ""
+"merge .changes files from the same release but built on different "
+"architectures"
+msgstr ""
+"führt .changes-Dateien der gleichen Veröffentlichung zusammen, die aber auf "
+"unterschiedlichen Architekturen gebaut wurden."
+
+#. type: IP
+#: ../scripts/devscripts.1:113
+#, no-wrap
+msgid "I<mk-build-deps>(1)"
+msgstr "I<mk-build-deps>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:115
+msgid ""
+"given a package name and/or control file, generate a binary package which "
+"may be installed to satisfy the build-dependencies of the given package "
+"[equivs]"
+msgstr ""
+"erzeugt bei gegebenem Paketnamen und/oder Steuerungsdatei ein Binärpaket, "
+"das installiert werden kann, um Bauabhängigkeiten der angegebenen Pakete zu "
+"erfüllen. [equivs]"
+
+#. type: IP
+#: ../scripts/devscripts.1:115
+#, no-wrap
+msgid "I<mk-origtargz>(1)"
+msgstr "I<mk-origtargz>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:117
+msgid ""
+"rename upstream tarball, optionally changing the compression and removing "
+"unwanted files [unzip, xz-utils, file]"
+msgstr ""
+"benennt den Tarball der Originalautoren um, ändert wahlweise die "
+"Komprimierung und entfernt unerwünschte Dateien. [unzip, xz-utils, file]"
+
+#. type: IP
+#: ../scripts/devscripts.1:117
+#, no-wrap
+msgid "I<namecheck>(1)"
+msgstr "I<namecheck>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:119
+msgid "check project names are not already taken"
+msgstr "prüft, ob Projektnamen bereits vergeben sind."
+
+#. type: IP
+#: ../scripts/devscripts.1:119
+#, no-wrap
+msgid "I<nmudiff>(1)"
+msgstr "I<nmudiff>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:121
+msgid ""
+"mail a diff of the current package against the previous version to the BTS "
+"to assist in tracking NMUs [patchutils, mutt]"
+msgstr ""
+"mailt ein Diff des aktuellen Pakets gegen die vorherige Version an die "
+"Fehlerdatenbank, um beim Nachverfolgen von NMUs zu helfen. [patchutils, mutt]"
+
+#. type: IP
+#: ../scripts/devscripts.1:121
+#, no-wrap
+msgid "I<origtargz>(1)"
+msgstr "I<origtargz>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:123
+msgid ""
+"fetch the orig tarball of a Debian package from various sources, and unpack "
+"it"
+msgstr ""
+"ruft den Original-Tarball eines Debian-Pakets aus verschiedenen Quellen ab "
+"und entpackt ihn."
+
+#. type: IP
+#: ../scripts/devscripts.1:123
+#, no-wrap
+msgid "I<plotchangelog>(1)"
+msgstr "I<plotchangelog>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:125
+msgid ""
+"view a nice plot of the data in a changelog file [libtimedate-perl, gnuplot]"
+msgstr ""
+"zeigt ein nettes Diagramm der Daten in einer Changelog-Datei. [libtimedate-"
+"perl, gnuplot]"
+
+#. type: IP
+#: ../scripts/devscripts.1:125
+#, no-wrap
+msgid "I<pts-subscribe>(1)"
+msgstr "I<pts-subscribe>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:127
+msgid ""
+"subscribe to the PTS for a limited period of time [bsd-mailx | mailx, at]"
+msgstr "abonniert das PTS für eine begrenzte Zeit. [bsd-mailx | mailx, at]"
+
+#. type: IP
+#: ../scripts/devscripts.1:127
+#, no-wrap
+msgid "I<rc-alert>(1)"
+msgstr "I<rc-alert>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:129
+msgid "list installed packages which have release-critical bugs [wget | curl]"
+msgstr ""
+"führt alle installierten Pakete auf, die release-kritische Fehler enthalten. "
+"[wget | curl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:129
+#, no-wrap
+msgid "I<rmadison>(1)"
+msgstr "I<rmadison>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:131
+msgid ""
+"remotely query the Debian archive database about packages [liburi-perl, wget "
+"| curl]"
+msgstr ""
+"fragt aus der Ferne die Debian-Archivdatenbank über Pakete ab. [liburi-perl, "
+"wget | curl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:131
+#, no-wrap
+msgid "I<sadt>(1)"
+msgstr "I<sadt>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:133
+msgid "run DEP-8 tests [python3-debian]"
+msgstr "führt DEP-8-Tests durch. [python3-debian]"
+
+#. type: IP
+#: ../scripts/devscripts.1:133
+#, no-wrap
+msgid "I<suspicious-source>(1)"
+msgstr "I<suspicious-source>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:135
+msgid ""
+"output a list of files which are not common source files [python3-magic]"
+msgstr ""
+"gibt eine Liste der Dateien aus, die keine üblichen Quelldateien sind. "
+"[python3-magic]"
+
+#. type: IP
+#: ../scripts/devscripts.1:135
+#, no-wrap
+msgid "I<svnpath>(1)"
+msgstr "I<svnpath>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:137
+msgid "print Subversion repository paths [subversion]"
+msgstr "gibt Subversion-Depotpfade aus. [subversion]"
+
+#. type: IP
+#: ../scripts/devscripts.1:137
+#, no-wrap
+msgid "I<tagpending>(1)"
+msgstr "I<tagpending>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:139
+msgid ""
+"run from a Debian source tree and tag bugs that are to be closed in the "
+"latest changelog as pending [libsoap-lite-perl]"
+msgstr ""
+"wird aus einem Debian-Quellverzeichnisbaum ausgeführt und markiert Fehler, "
+"die im neusten Changelog geschlossen werden sollen, als anstehend. [libsoap-"
+"lite-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:139
+#, no-wrap
+msgid "I<transition-check>(1)"
+msgstr "I<transition-check>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:141
+msgid ""
+"check a list of source packages for involvement in transitions for which "
+"uploads to unstable are currently blocked [libwww-perl, libyaml-syck-perl]"
+msgstr ""
+"prüft eine Liste von Quellpaketen, ob sie an Übergängen beteiligt sind, "
+"weswegen Uploads nach Unstable derzeit blockiert sind. [libwww-perl, libyaml-"
+"syck-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:141
+#, no-wrap
+msgid "I<uscan>(1)"
+msgstr "I<uscan>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:143
+msgid ""
+"scan upstream sites for new releases of packages [gpgv, gnupg, liblwp-"
+"protocol-https-perl, libwww-perl, unzip, xz-utils, file]"
+msgstr ""
+"durchucht Seiten der Originalautoren auf neue Veröffentlichungen von "
+"Paketen. [gpgv, gnupg, liblwp-protocol-https-perl, libwww-perl, unzip, xz-"
+"utils, file]"
+
+#. type: IP
+#: ../scripts/devscripts.1:143
+#, no-wrap
+msgid "I<uupdate>(1)"
+msgstr "I<uupdate>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:145
+msgid "integrate upstream changes into a source package [patch]"
+msgstr "integriert Änderungen der Originalautoren in ein Quellpaket. [patch]"
+
+#. type: IP
+#: ../scripts/devscripts.1:145
+#, no-wrap
+msgid "I<what-patch>(1)"
+msgstr "I<what-patch>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:147
+msgid ""
+"determine what patch system, if any, a source package is using [patchutils]"
+msgstr ""
+"bestimmt, welches Patch-System ein Quellpaket verwendet, falls es dies tut. "
+"[patchutils]"
+
+#. type: IP
+#: ../scripts/devscripts.1:147
+#, no-wrap
+msgid "I<whodepends>(1)"
+msgstr "I<whodepends>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:149
+msgid "check which maintainers' packages depend on a package"
+msgstr "prüft die Pakete welches Betreuers von einem Paket abhängen."
+
+#. type: IP
+#: ../scripts/devscripts.1:149
+#, no-wrap
+msgid "I<who-uploads>(1)"
+msgstr "I<who-uploads>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:151
+msgid ""
+"determine the most recent uploaders of a package to the Debian archive "
+"[gnupg, debian-keyring, debian-maintainers, wget]"
+msgstr ""
+"bestimmt diejenigen, die ein Paket kürzlich in das Debian-Archiv hochgeladen "
+"haben. [gnupg, debian-keyring, debian-maintainers, wget]"
+
+#. type: IP
+#: ../scripts/devscripts.1:151
+#, no-wrap
+msgid "I<wnpp-alert>(1)"
+msgstr "I<wnpp-alert>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:153
+msgid ""
+"list installed packages which are orphaned or up for adoption [wget | curl]"
+msgstr ""
+"führt installierte Pakete auf, die verwaist oder zur Adoption freigegeben "
+"sind. [wget | curl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:153
+#, no-wrap
+msgid "I<wnpp-check>(1)"
+msgstr "I<wnpp-check>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:155
+msgid ""
+"check whether there is an open request for packaging or intention to package "
+"bug for a package [wget | curl]"
+msgstr ""
+"prüft, ob es eine offene Anfrage zum Paketieren oder einen Fehlerbericht "
+"über die Absicht zum Packen für ein Paket gibt. [wget | curl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:155
+#, no-wrap
+msgid "I<who-permits-upload>(1)"
+msgstr "I<who-permits-upload>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:157
+msgid ""
+"Retrieve information about Debian Maintainer access control lists [gnupg, "
+"libencode-locale-perl, libparse-debcontrol-perl, libwww-perl, debian-keyring]"
+msgstr ""
+"ruft Informationen über ACLs (Zugriffssteuerungslisten) ab [gnupg, libencode-"
+"locale-perl, libparse-debcontrol-perl, libwww-perl, debian-keyring]"
+
+#. type: IP
+#: ../scripts/devscripts.1:157
+#, no-wrap
+msgid "I<wrap-and-sort>(1)"
+msgstr "I<wrap-and-sort>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:158
+msgid "wrap long lines and sort items in packaging files [python3-debian]"
+msgstr ""
+"bricht lange Zeilen um und sortiert Elemente in Paketierungsdateien. "
+"[python3-debian]"
+
+#. type: textblock
+#: ../scripts/dget.pl:510
+msgid "dget -- Download Debian source and binary packages"
+msgstr "dget -- lädt Debian-Quell- und -Binärpakete herunter"
+
+#. type: =item
+#: ../scripts/dget.pl:516
+msgid "B<dget> [I<options>] I<URL> ..."
+msgstr "B<dget> [I<Optionen>] I<URL> …"
+
+#. type: =item
+#: ../scripts/dget.pl:518
+msgid "B<dget> [I<options>] [B<--all>] I<package>[B<=>I<version>] ..."
+msgstr "B<dget> [I<Optionen>] [B<--all>] I<Paket>[B<=>I<Version>] …"
+
+#. type: textblock
+#: ../scripts/dget.pl:524
+msgid ""
+"B<dget> downloads Debian packages. In the first form, B<dget> fetches the "
+"requested URLs. If this is a .dsc or .changes file, then B<dget> acts as a "
+"source-package aware form of B<wget>: it also fetches any files referenced "
+"in the .dsc/.changes file. The downloaded source is then checked with "
+"B<dscverify> and, if successful, unpacked by B<dpkg-source>."
+msgstr ""
+"B<dget> lädt Debian-Pakete herunter. In der ersten Form ruft B<dget> die "
+"angeforderten URLs ab. Falls dies eine .dsc- oder .changes-Datei ist, agiert "
+"B<dget> als eine Form von B<wget>, die das Quellpaket kennt: Es ruft "
+"außerdem alle Dateien ab, die in der .dsc-/.changes-Datei referenziert "
+"werden. Die heruntergeladene Quelle wird dann mit B<dscverify> geprüft und, "
+"falls diese Prüfung erfolgreich verläuft, durch B<dpkg-source> entpackt."
+
+#. type: textblock
+#: ../scripts/dget.pl:531
+msgid ""
+"In the second form, B<dget> downloads a I<binary> package (i.e., a I<.deb> "
+"file) from the Debian mirror configured in /etc/apt/sources.list(.d). "
+"Unlike B<apt-get install -d>, it does not require root privileges, writes to "
+"the current directory, and does not download dependencies. If a version "
+"number is specified, this version of the package is requested. With B<--"
+"all>, the list of all binaries for the source package I<package> is "
+"extracted from the output of C<apt-cache showsrc package>."
+msgstr ""
+"In der zweiten Form lädt B<dget> ein I<Binär>paket (d.h. eine I<.deb>-Datei) "
+"von einem Debian-Spiegel herunter, der in /etc/apt/sources.list(.d) "
+"konfiguriert wurde. Anders als B<apt-get install -d> benötigt es keine Root-"
+"Rechte, schreibt ins aktuelle Verzeichnis und lädt keine Abhängigkeiten "
+"herunter. Falls eine Versionsnummer angegeben wurde, wird diese Version des "
+"Pakets abgerufen. Mit B<--all> wird die Liste aller Binärpakete für das "
+"Quellpaket I<Paket> aus der Ausgabe von C<apt-cache showsrc Paket> "
+"extrahiert."
+
+#. type: textblock
+#: ../scripts/dget.pl:540
+msgid ""
+"In both cases dget is capable of getting several packages and/or URLs at "
+"once."
+msgstr ""
+"In beiden Fällen ist Dget in der Lage, mehrere Pakete und/oder URLs auf "
+"einmal zu holen."
+
+#. type: textblock
+#: ../scripts/dget.pl:543
+msgid ""
+"(Note that I<.udeb> packages used by debian-installer are located in "
+"separate packages files from I<.deb> packages. In order to use I<.udebs> "
+"with B<dget>, you will need to have configured B<apt> to use a packages file "
+"for I<component>/I<debian-installer>)."
+msgstr ""
+"(Beachten Sie, dass I<.udeb>-Pakete, die vom Debian-Installer verwendet "
+"werden, in separaten Paketdateien von I<.deb>-Paketen liegen. Um I<.udebs> "
+"mit B<dget> zu benutzen, müssen Sie B<apt> konfiguriert haben, um eine "
+"Paketdatei für I<Komponente>/I<Debian-Installer> zu verwenden)."
+
+#. type: textblock
+#: ../scripts/dget.pl:548
+msgid ""
+"Before downloading files listed in .dsc and .changes files, and before "
+"downloading binary packages, B<dget> checks to see whether any of these "
+"files already exist. If they do, then their md5sums are compared to avoid "
+"downloading them again unnecessarily. B<dget> also looks for matching files "
+"in I</var/cache/apt/archives> and directories given by the B<--path> option "
+"or specified in the configuration files (see below). Finally, if "
+"downloading (.orig).tar.gz or .diff.gz files fails, dget consults B<apt-get "
+"source --print-uris>. Download backends used are B<curl> and B<wget>, "
+"looked for in that order."
+msgstr ""
+"Bevor Dateien heruntergeladen werden, die in .dsc- und .changes-Dateien "
+"aufgeführt sind, prüft B<dget>, ob all diese Dateien existieren. Ist dies "
+"der Fall, werden ihre MD5-Summen verglichen, um zu verhindern, dass sie "
+"unnötigerweise erneut heruntergeladen werden. B<dget> sucht außerdem nach "
+"passenden Dateien in I</var/cache/apt/archives> und Verzeichnissen, die "
+"durch die Option B<--path> oder in den Konfigurationsdateien (siehe unten) "
+"angegeben wurden. Schlussendlich, falls das Herunterladen von (.orig).tar."
+"gz- oder .diff.gz-Dateien fehlschlägt, zieht Dget B<apt-get source --print-"
+"uris> zu Rate. Die benutzten Herunterlade-Backends sind B<curl> und B<wget> "
+"in dieser Reihenfolge."
+
+#. type: textblock
+#: ../scripts/dget.pl:558
+msgid ""
+"B<dget> was written to make it easier to retrieve source packages from the "
+"web for sponsor uploads. For checking the package with B<debdiff>, the last "
+"binary version is available via B<dget> I<package>, the last source version "
+"via B<apt-get source> I<package>."
+msgstr ""
+"B<dget> wurde geschrieben, um die Abfrage von Quellpaketen aus dem Web für "
+"gesponsortes Hochladen zu erleichtern. Um das Paket mit B<debdiff> zu "
+"prüfen, ist die letzte binäre Version über B<dget> I<Paket> und die letzte "
+"Quellpaketversion über B<apt-get source> I<Paket> verfügbar."
+
+#. type: textblock
+#: ../scripts/dget.pl:569
+msgid ""
+"Interpret I<package> as a source package name, and download all binaries as "
+"found in the output of \"apt-cache showsrc I<package>\"."
+msgstr ""
+"Deutet I<Paket> als einen Quellpaketnamen und lädt alle Binärdateien, die in "
+"der Ausgabe von »apt-cache showsrc I<Paket>« gefunden werden."
+
+#. type: =item
+#: ../scripts/dget.pl:572
+msgid "B<-b>, B<--backup>"
+msgstr "B<-b>, B<--backup>"
+
+#. type: textblock
+#: ../scripts/dget.pl:574
+msgid "Move files that would be overwritten to I<./backup>."
+msgstr "verschiebt Dateien, die überschrieben würden, nach I<./backup>."
+
+#. type: textblock
+#: ../scripts/dget.pl:578
+msgid "Suppress B<wget>/B<curl> non-error output."
+msgstr "unterdrückt Ausgaben von B<wget>/B<curl>, die keine Fehler betreffen."
+
+#. type: =item
+#: ../scripts/dget.pl:580 ../scripts/origtargz.pl:129
+msgid "B<-d>, B<--download-only>"
+msgstr "B<-d>, B<--download-only>"
+
+#. type: textblock
+#: ../scripts/dget.pl:582
+msgid ""
+"Do not run B<dpkg-source -x> on the downloaded source package. This can "
+"only be used with the first method of calling B<dget>."
+msgstr ""
+"führt für das heruntergeladene Quellpaket nicht B<dpkg-source -x> aus. Dies "
+"kann nur mit der ersten Aufrufmethode von B<dget> verwendet werden."
+
+#. type: =item
+#: ../scripts/dget.pl:585
+msgid "B<-x>, B<--extract>"
+msgstr "B<-x>, B<--extract>"
+
+#. type: textblock
+#: ../scripts/dget.pl:587
+msgid ""
+"Run B<dpkg-source -x> on the downloaded source package to unpack it. This "
+"option is the default and can only be used with the first method of calling "
+"B<dget>."
+msgstr ""
+"führt B<dpkg-source -x> für das heruntergeladene Quellpaket aus, um es zu "
+"entpacken. Diese Option ist die Vorgabe und kann nur mit der ersten "
+"Aufrufmethode von B<dget> verwendet werden."
+
+#. type: =item
+#: ../scripts/dget.pl:591
+msgid "B<-u>, B<--allow-unauthenticated>"
+msgstr "B<-u>, B<--allow-unauthenticated>"
+
+#. type: textblock
+#: ../scripts/dget.pl:593
+msgid ""
+"Do not attempt to verify the integrity of downloaded source packages using "
+"B<dscverify>."
+msgstr ""
+"versucht nicht, die Vollständigkeit der heruntergeladenen Quellpakete "
+"mittels B<dscverify> zu überprüfen."
+
+#. type: =item
+#: ../scripts/dget.pl:596
+msgid "B<--build>"
+msgstr "B<--build>"
+
+#. type: textblock
+#: ../scripts/dget.pl:598
+msgid "Run B<dpkg-buildpackage -b -uc> on the downloaded source package."
+msgstr ""
+"führt B<dpkg-buildpackage -b -uc> für das heruntergeladene Quellpaket aus."
+
+#. type: =item
+#: ../scripts/dget.pl:600
+msgid "B<--path> I<DIR>[B<:>I<DIR> ...]"
+msgstr "B<--path> I<VERZ>[B<:>I<VERZ> …]"
+
+#. type: textblock
+#: ../scripts/dget.pl:602
+msgid ""
+"In addition to I</var/cache/apt/archives>, B<dget> uses the colon-separated "
+"list given as argument to B<--path> to find files with a matching md5sum. "
+"For example: \"--path /srv/pbuilder/result:/home/cb/UploadQueue\". If DIR "
+"is empty (i.e., \"--path ''\" is specified), then any previously listed "
+"directories or directories specified in the configuration files will be "
+"ignored. This option may be specified multiple times, and all of the "
+"directories listed will be searched; hence, the above example could have "
+"been written as: \"--path /srv/pbuilder/result --path /home/cb/UploadQueue\"."
+msgstr ""
+"Zusätzlich zu I</var/cache/apt/archives> verwendet B<dget> die durch Kommas "
+"getrennte Liste, die als Argument an B<--path> übergeben wurde, um Dateien "
+"mit passender MD5-Summe zu finden, zum Beispiel »--path /srv/pbuilder/"
+"result:/home/cb/UploadQueue«. Falls VERZ leer ist (d.h. es wurde »--path ''« "
+"angegeben), werden alle Verzeichnisse ignoriert, die vorher aufgeführt oder "
+"in den Konfigurationsdateien angegeben wurden. Diese Option kann mehrfach "
+"angegeben werden, dann werden alle aufgelisteten Verzeichnisse durchsucht; "
+"daher könnte das vorhergehende Beispiel als »--path /srv/pbuilder/result --"
+"path /home/cb/UploadQueue« geschrieben werden."
+
+#. type: =item
+#: ../scripts/dget.pl:613
+msgid "B<--insecure>"
+msgstr "B<--insecure>"
+
+#. type: textblock
+#: ../scripts/dget.pl:615
+msgid "Allow SSL connections to untrusted hosts."
+msgstr "erlaubt SSL-Verbindungen zu nicht vetrauenswürdigen Rechnern."
+
+#. type: =item
+#: ../scripts/dget.pl:617
+msgid "B<--no-cache>"
+msgstr "B<--no-cache>"
+
+#. type: textblock
+#: ../scripts/dget.pl:619
+msgid "Bypass server-side HTTP caches by sending a B<Pragma: no-cache> header."
+msgstr ""
+"umgeht Server-seitige HTTP-Zwischenspeicher durch Senden einer B<Pragma: no-"
+"cache>-Kopzeile."
+
+#. type: =item
+#: ../scripts/dget.pl:641
+msgid "B<DGET_PATH>"
+msgstr "B<DGET_PATH>"
+
+#. type: textblock
+#: ../scripts/dget.pl:643
+msgid ""
+"This can be set to a colon-separated list of directories in which to search "
+"for files in addition to the default I</var/cache/apt/archives>. It has the "
+"same effect as the B<--path> command line option. It is not set by default."
+msgstr ""
+"Dies kann auf eine durch Kommas getrennte Liste von Verzeichnissen gesetzt "
+"werden, in denen zusätzlich zu dem vorgegebenen I</var/cache/apt/archives> "
+"nach Dateien gesucht wird. Es hat die gleichen Auswirkungen wie die "
+"Befehlszeilenoption B<--path>. Standardmäßig ist es nicht gesetzt."
+
+#. type: =item
+#: ../scripts/dget.pl:648
+msgid "B<DGET_UNPACK>"
+msgstr "B<DGET_UNPACK>"
+
+#. type: textblock
+#: ../scripts/dget.pl:650
+msgid ""
+"Set to 'no' to disable extracting downloaded source packages. Default is "
+"'yes'."
+msgstr ""
+"auf »no« gesetzt deaktiviert das Extrahieren heruntergeladener Quellpakete. "
+"Vorgabe ist »yes«."
+
+#. type: =item
+#: ../scripts/dget.pl:653
+msgid "B<DGET_VERIFY>"
+msgstr "B<DGET_VERIFY>"
+
+#. type: textblock
+#: ../scripts/dget.pl:655
+msgid ""
+"Set to 'no' to disable checking signatures of downloaded source packages. "
+"Default is 'yes'."
+msgstr ""
+"auf »no« gesetzt deaktiviert die Überprüfung der Signaturen "
+"heruntergeladener Quellpakete. Vorgabe ist »yes«."
+
+#. type: textblock
+#: ../scripts/dget.pl:662
+msgid ""
+"Download all I<.deb> files for the previous version of a package and run "
+"B<debdiff> on them:"
+msgstr ""
+"lädt alle I<.deb>-Dateien für die verhergehende Version eines Pakets "
+"herunter und für B<debdiff> für sie aus:"
+
+#. type: verbatim
+#: ../scripts/dget.pl:665
+#, no-wrap
+msgid ""
+" dget --all mypackage=1.2-1\n"
+" debdiff --from *_1.2-1_*.deb --to *_1.2-2_*.deb\n"
+"\n"
+msgstr ""
+" dget --all meinpaket=1.2-1\n"
+" debdiff --from *_1.2-1_*.deb --to *_1.2-2_*.deb\n"
+"\n"
+
+#. type: =head1
+#: ../scripts/dget.pl:668
+msgid "BUGS AND COMPATIBILITY"
+msgstr "FEHLER UND KOMPATIBILITÄT"
+
+#. type: textblock
+#: ../scripts/dget.pl:670
+msgid "B<dget> I<package> should be implemented in B<apt-get install -d>."
+msgstr "B<dget> I<Paket> sollte in B<apt-get install -d> implementiert sein."
+
+#. type: textblock
+#: ../scripts/dget.pl:672
+msgid ""
+"Before devscripts version 2.10.17, the default was not to extract the "
+"downloaded source. Set DGET_UNPACK=no to revert to the old behaviour."
+msgstr ""
+"Vor Devscripts-Version 2.10.17 wurde die heruntergeladene Quelle "
+"standardmäßig nicht extrahiert. Setzen Sie DGET_UNPACK=no, um wieder zum "
+"alten Verhalten zurückzukehren."
+
+#. type: textblock
+#: ../scripts/dget.pl:677
+msgid ""
+"This program is Copyright (C) 2005-2013 by Christoph Berg <myon@debian."
+"org>. Modifications are Copyright (C) 2005-06 by Julian Gilbey <jdg@debian."
+"org>."
+msgstr ""
+"Dieses Programm unterliegt dem Copyright (C) 2005-13 von Christoph Berg "
+"<myon@debian.org>. Änderungen unterliegen dem Copyright (C) 2005-06 von "
+"Julian Gilbey <jdg@debian.org>."
+
+#. type: textblock
+#: ../scripts/dget.pl:685
+msgid ""
+"B<apt-get>(1), B<curl>(1), B<debcheckout>(1), B<debdiff>(1), B<dpkg-"
+"source>(1), B<wget>(1)"
+msgstr ""
+"B<apt-get>(1), B<curl>(1), B<debcheckout>(1), B<debdiff>(1), B<dpkg-"
+"source>(1), B<wget>(1)"
+
+#. type: TH
+#: ../scripts/diff2patches.1:1
+#, no-wrap
+msgid "diff2patches"
+msgstr "diff2patches"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:1 ../scripts/diff2patches.1:50
+#, no-wrap
+msgid "Raphael Geissert E<lt>atomo64@gmail.comE<gt>"
+msgstr "Raphael Geissert E<lt>atomo64@gmail.comE<gt>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:5
+msgid "diff2patches - Extract non-debian/ patches from .diff.gz files"
+msgstr "diff2patches - extrahiert non-debian/-Patches aus .diff.gz-Dateien."
+
+#. type: SH
+#: ../scripts/diff2patches.1:5
+#, no-wrap
+msgid "SYNTAX"
+msgstr "SYNTAX"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:8
+msgid "B<diff2patches >I<filename>"
+msgstr "B<diff2patches >I<Dateiname>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:10
+msgid "B<diff2patches --help>|B<--version>"
+msgstr "B<diff2patches --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:16
+msgid ""
+"Extracts patches from .diff.gz which apply to files outside the ``debian/'' "
+"directory scope. A patch is created for each modified file. Each patch is "
+"named according to the path of the modified file, with ``/'' replaced by "
+"``___'', and an extension of ``.patch''."
+msgstr ""
+"extrahiert Patches aus .diff.gz, die auf Dateien außerhalb des Bereichs des "
+"»debian/«-Verzeichnisses angewandt werden. Ein Patch wird für jede geänderte "
+"Datei erstellt. Jeder Patch ist entsprechend des Pfads der geänderten Datei "
+"benannt, wobei »/« durch »___« ersetzt und eine ».patch«-Erweiterung "
+"angehängt wird."
+
+#. type: TP
+#: ../scripts/diff2patches.1:18
+#, no-wrap
+msgid "I<filename>"
+msgstr "I<Dateiname>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:22
+msgid ""
+"Extract patches from I<filename> which apply outside the ``debian/'' "
+"directory."
+msgstr ""
+"extrahiert Patches aus I<Dateiname>, die außerhalb des Bereichs des "
+"»debian/«-Verzeichnisses Anwendung finden."
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:25
+msgid "Output help information and exit."
+msgstr "gibt Hilfsinformationen aus und beendet sich."
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:28
+msgid "Output version information and exit."
+msgstr "gibt Versionsinformationen aus und beendet sich."
+
+#. type: TP
+#: ../scripts/diff2patches.1:29
+#, no-wrap
+msgid "I<debian/control>"
+msgstr "I<debian/control>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:32
+msgid "Existence of this file is tested before any patch is extracted."
+msgstr ""
+"Die Existenz dieser Datei wird überprüft, bevor der Patch extrahiert wird."
+
+#. type: TP
+#: ../scripts/diff2patches.1:32
+#, no-wrap
+msgid "I<debian/>"
+msgstr "I<debian/>"
+
+#. type: TQ
+#: ../scripts/diff2patches.1:34
+#, no-wrap
+msgid "I<debian/patches/>"
+msgstr "I<debian/patches/>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:40
+msgid ""
+"Patches are extracted to one of these directories. ``debian/patches/'' is "
+"preferred, if it exists. If I<DEB_PATCHES> is present in the environment, "
+"it will override this behavior (see ``ENVIRONMENT VARIABLES'' section below)."
+msgstr ""
+"Patches werden in eines dieser Verzeichnisse extrahiert, vorzugsweise nach "
+"»debian/patches/«, falls es existiert. Falls I<DEB_PATCHES> in der Umgebung "
+"vorliegt, wird es dieses Verhalten außer Kraft setzen (siehe den Abschnitt "
+"»UMGEBUNGSVARIABLEN« weiter unten)."
+
+#. type: TP
+#: ../scripts/diff2patches.1:41
+#, no-wrap
+msgid "B<DEB_PATCHES>"
+msgstr "B<DEB_PATCHES>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:45
+msgid ""
+"When defined and points to an existing directory, patches are extracted in "
+"that directory and not under ``debian/'' nor ``debian/patches/''."
+msgstr ""
+"Wenn dies definiert ist und auf ein existierendes Verzeichnis zeigt, werden "
+"Patches in dieses Verzeichnis und weder unter »debian/« noch unter »debian/"
+"patches/« extrahiert."
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:48
+msgid "B<combinediff>(1)"
+msgstr "B<combinediff>(1)"
+
+#. type: TH
+#: ../scripts/dpkg-depcheck.1:1
+#, no-wrap
+msgid "DPKG-DEPCHECK"
+msgstr "DPKG-DEPCHECK"
+
+#. type: TH
+#: ../scripts/dpkg-depcheck.1:1
+#, no-wrap
+msgid "March 2002"
+msgstr "März 2002"
+
+#. type: TH
+#: ../scripts/dpkg-depcheck.1:1
+#, no-wrap
+msgid "dpkg-depcheck"
+msgstr "dpkg-depcheck"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:4
+msgid "dpkg-depcheck - determine packages used to execute a command"
+msgstr ""
+"dpkg-depcheck - bestimmt Pakete, die benutzt werden, um einen Befehl "
+"auszuführen."
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:6
+msgid "B<dpkg-depcheck> [I<options>] I<command>"
+msgstr "B<dpkg-depcheck> [I<Optionen>] I<Befehl>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:15
+msgid ""
+"This program runs the specified command under B<strace> and then determines "
+"and outputs the packages used in the process. The list can be trimmed in "
+"various ways as described in the options below. A good example of this "
+"program would be the command B<dpkg-depcheck -b debian/rules build>, which "
+"would give a good first approximation to the Build-Depends line needed by a "
+"Debian package. Note, however, that this does I<not> give any direct "
+"information on versions required or architecture-specific packages."
+msgstr ""
+"Dieses Programm führt den angegebenen Befehl unter B<strace> aus, bestimmt "
+"dann die in diesem Prozess verwendeten Pakete und gibt sie aus. Die Liste "
+"kann auf verschiedene Arten, wie in den nachfolgenden Optionen beschrieben, "
+"gekürzt werden. Ein gutes Beispiel dieses Programms wäre der Befehl B<dpkg-"
+"depcheck -b debian/rules build>, der eine gute erste Annäherung an die von "
+"einem Debian-Paket benötigte Build-Depends-Zeile geben würde. Beachten Sie "
+"jedoch, dass dies I<keine> direkte Information über benötigte Versionen oder "
+"architekturspezifische Pakete liefert."
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:22
+msgid ""
+"Report all packages used to run I<command>. This is the default behaviour. "
+"If used in conjunction with B<-b>, B<-d> or B<-m>, gives additional "
+"information on those packages skipped by these options."
+msgstr ""
+"meldet alle Pakete, die benutzt werden, um I<Befehl> auszuführen. Dies ist "
+"das Standardverhalten. Falls es zusammen mit B<-b>, B<-d> oder B<-m> "
+"verwendet wird, gibt es zusätzliche Informationen über jene Pakete, die von "
+"diesen Optionen übersprungen wurden."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:22
+#, no-wrap
+msgid "B<-b>, B<--build-depends>"
+msgstr "B<-b>, B<--build-depends>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:26
+msgid ""
+"Do not report any build-essential or essential packages used, or any of "
+"their (direct or indirect) dependencies."
+msgstr ""
+"meldet keine für den Bau wesentlichen (»build-essential«) oder wesentlichen "
+"(»essential«) benutzten Pakete oder irgendwelche ihrer (direkten oder "
+"indirekten) Abhängigkeiten."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:26
+#, no-wrap
+msgid "B<-d>, B<--ignore-dev-deps>"
+msgstr "B<-d>, B<--ignore-dev-deps>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:30
+msgid ""
+"Do not show packages used which are direct dependencies of I<-dev> packages "
+"used. This implies B<-b>."
+msgstr ""
+"zeigt keine benutzten Pakete, die direkte Abhängigkeiten verwendeter I<-dev>-"
+"Pakete sind. Dies impliziert B<-b>."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:30
+#, no-wrap
+msgid "B<-m>, B<--min-deps>"
+msgstr "B<-m>, B<--min-deps>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:34
+msgid ""
+"Output a minimal set of packages needed, taking into account direct "
+"dependencies. Using B<-m> implies B<-d> and also B<-b>."
+msgstr ""
+"gibt einen minimalen Satz benötigter Pakete aus und berücksichtigt direkte "
+"Abhängigkeiten. Die Verwendung von B<-m> impliziert B<-d> ebenso wie B<-b>."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:34
+#, no-wrap
+msgid "B<-C>, B<--C-locale>"
+msgstr "B<-C>, B<--C-locale>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:37
+msgid "Run I<command> with the C locale."
+msgstr "führt I<Befehl> mit der Locale C aus."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:37
+#, no-wrap
+msgid "B<--no-C-locale>"
+msgstr "B<--no-C-locale>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:40
+msgid "Don't change locale when running I<command>."
+msgstr "ändert nicht die Locale, wenn I<Befehl> ausgeführt wird."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:40
+#, no-wrap
+msgid "B<-l>, B<--list-files>"
+msgstr "B<-l>, B<--list-files>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:43
+msgid "Also report the list of files used in each package."
+msgstr ""
+"meldet außerdem die Liste der Dateien, die von jedem Paket benutzt werden."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:43
+#, no-wrap
+msgid "B<--no-list-files>"
+msgstr "B<--no-list-files>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:47
+msgid "Do not report the files used in each package. Cancels a B<-l> option."
+msgstr ""
+"meldet nicht die Dateien, die von jedem Paket verwendet werden, hebt eine B<-"
+"l>-Option auf."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:47
+#, no-wrap
+msgid "B<-o>, B<--output=>I<FILE>"
+msgstr "B<-o>, B<--output=>I<DATEI>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:50
+msgid "Output the package diagnostics to I<FILE> instead of stdout."
+msgstr ""
+"gibt die Paketdiagnose in I<DATEI> statt auf der Standardausgabe (Stdout) "
+"aus."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:50
+#, no-wrap
+msgid "B<-O>, B<--strace-output=>I<FILE>"
+msgstr "B<-O>, B<--strace-output=>I<DATEI>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:54
+msgid ""
+"Write the B<strace> output to I<FILE> when tracing I<command> instead of "
+"using a temporary file."
+msgstr ""
+"schreibt die Ausgabe von B<strace> nach I<DATEI>, wenn I<Befehl> "
+"nachverfolgt wird, anstatt eine temporäre Datei zu benutzen."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:54
+#, no-wrap
+msgid "B<-I>, B<--strace-input=>I<FILE>"
+msgstr "B<-I>, B<--strace-input=>I<DATEI>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:59
+msgid ""
+"Get B<strace> output from I<FILE> instead of tracing I<command>; B<strace> "
+"must have be run with the B<-f -q> options for this to work."
+msgstr ""
+"erhält die B<strace>-Ausgabe von I<DATEI> anstatt vom Verfolgen von "
+"I<Befehl>; B<strace> muss für diese Arbeit mit den Optionen B<-f -q> "
+"ausgeführt worden sein, damit das funktioniert."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:59
+#, no-wrap
+msgid "B<-f>, B<--features=>I<LIST>"
+msgstr "B<-f>, B<--features=>I<LISTE>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:65
+msgid ""
+"Enable or disabled features given in the comma-separated I<LIST> as "
+"follows. A feature is enabled with I<+feature> or just I<feature> and "
+"disabled with I<-feature>. The currently recognised features are:"
+msgstr ""
+"aktiviert oder deaktiviert Funktionalitäten, die in einer durch Kommas "
+"getrennten I<LISTE> wie folgt angegeben sind. Eine Funktionalität mit I<"
+"+Funktionalität> oder nur I<Funktionalität> ist aktiviert und eine mit I<-"
+"Funktionalität> ist deaktiviert. Die derzeit bekannten Funktionalitäten sind:"
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:67
+#, no-wrap
+msgid "B<warn-local>"
+msgstr "B<warn-local>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:71
+msgid ""
+"Warn if files in I</usr/local> or I</var/local> are used. Enabled by "
+"default."
+msgstr ""
+"warnt, falls Dateien in I</usr/local> oder I</var/local> verwendet werden, "
+"ist standardmäßig aktiviert."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:71
+#, no-wrap
+msgid "B<discard-check-version>"
+msgstr "B<discard-check-version>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:76
+msgid ""
+"Discards I<execve> when only a I<--version> argument is given to the "
+"program; this works around some configure scripts that check for binaries "
+"they don't actually use. Enabled by default."
+msgstr ""
+"verwirft I<execve>, wenn dem Programm nur ein I<--version>-Argument gegeben "
+"wurde; dies ist ein Behelf für einige Konfigurationsskripte, die auf "
+"Binärdateien hin prüfen, die sie nicht wirklich verwenden. Standardmäßig "
+"aktiviert."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:76
+#, no-wrap
+msgid "B<trace-local>"
+msgstr "B<trace-local>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:81
+msgid ""
+"Also try to identify files which are accessed in I</usr/local> and I</var/"
+"local>. Not usually very useful, as Debian does not place files in these "
+"directories. Disabled by default."
+msgstr ""
+"versucht außerdem Dateien zu identifizieren, auf die in I</usr/local> und I</"
+"var/local> zugegriffen wird. Üblicherweise nicht besonders nützlich, da "
+"Debian keine Dateien in diesen Verzeichnissen ablegt. Standardmäßig "
+"deaktiviert."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:81
+#, no-wrap
+msgid "B<catch-alternatives>"
+msgstr "B<catch-alternatives>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:85
+msgid ""
+"Warn about access to files controlled by the Debian I<alternatives> "
+"mechanism. Enabled by default."
+msgstr ""
+"warnt beim Zugriff auf Dateien, die unter der Kontrolle des Debian-"
+"I<alternatives>-Mechanismus stehen. Standardmäßig aktiviert."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:85
+#, no-wrap
+msgid "B<discard-sgml-catalogs>"
+msgstr "B<discard-sgml-catalogs>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:90
+msgid ""
+"Discards access to SGML catalogs; some SGML tools read all the registered "
+"catalogs at startup. Files matching the regexp /usr/share/sgml/.*\\e.cat "
+"are recognised as catalogs. Enabled by default."
+msgstr ""
+"verwirft den Zugriff auf SGML-Kataloge; einige SGML-Werkzeuge lesen beim "
+"Start alle registrierten Kataloge. Dateien, die auf den regulären Ausdruck /"
+"usr/share/sgml/.*\\e.cat passen, werden als Kataloge erkannt. Standardmäßig "
+"aktiviert."
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:99
+msgid "Display usage information and exit."
+msgstr "zeigt Aufrufinformationen und wird beendet."
+
+#. type: =item
+#: ../scripts/dpkg-depcheck.1:99 ../scripts/mk-build-deps.pl:83
+#, no-wrap
+msgid "B<-v>, B<--version>"
+msgstr "B<-v>, B<--version>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:102
+msgid "Display version and copyright information and exit."
+msgstr "zeigt Versions- und Copyright-Informationen und wird beendet."
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:108 ../scripts/grep-excuses.1:34
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced in that order to set configuration variables. Command line options "
+"can be used to override configuration file settings. Environment variable "
+"settings are ignored for this purpose. The currently recognised variable is:"
+msgstr ""
+"Die beiden Konfigurationsdateien I</etc/devscripts.conf> und I<~/."
+"devscripts> werden in dieser Reihenfolge eingelesen, um "
+"Konfigurationsvariablen zu setzen. Um Konfigurationsdateieinstellungen außer "
+"Kraft zu setzen, können Befehlszeilenoptionen verwendet werden. "
+"Umgebungsvariablen werden zu diesem Zweck ignoriert. Die derzeit bekannte "
+"Variable ist:"
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:108
+#, no-wrap
+msgid "B<DPKG_DEPCHECK_OPTIONS>"
+msgstr "B<DPKG_DEPCHECK_OPTIONS>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:112
+msgid ""
+"These are options which are parsed before the command-line options. For "
+"example,"
+msgstr ""
+"Dies sind Optionen, die vor den Befehlszeilenoptionen ausgewertet werden, "
+"zum Beispiel"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:114
+msgid "DPKG_DEPCHECK_OPTIONS=\"-b -f-catch-alternatives\""
+msgstr "DPKG_DEPCHECK_OPTIONS=\"-b -f-catch-alternatives\""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:118
+msgid ""
+"which passes these options to B<dpkg-depcheck> before any command-line "
+"options are processed. You are advised not to try tricky quoting, because "
+"of the vagaries of shell quoting!"
+msgstr ""
+"was diese Optionen an B<dpkg-depcheck> weiterreicht, bevor irgendwelche "
+"Befehlszeilenoptionen verarbeitet werden. Sie sind gut beraten, wegen den "
+"Launen der Shell-Klammersetzung, keine knifflige Klammersetzung zu verwenden!"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:123
+msgid ""
+"B<dpkg>(1), B<strace>(1), B<devscripts.conf>(5), B<update-alternatives>(8)"
+msgstr ""
+"B<dpkg>(1), B<strace>(1), B<devscripts.conf>(5), B<update-alternatives>(8)"
+
+#. type: SH
+#: ../scripts/dpkg-depcheck.1:123
+#, no-wrap
+msgid "COPYING"
+msgstr "KOPIEREN"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:130
+msgid ""
+"Copyright 2001 Bill Allombert E<lt>ballombe@debian.orgE<gt>. Modifications "
+"copyright 2002,2003 Julian Gilbey E<lt>jdg@debian.orgE<gt>. B<dpkg-"
+"depcheck> is free software, covered by the GNU General Public License, "
+"version 2 or (at your option) any later version, and you are welcome to "
+"change it and/or distribute copies of it under certain conditions. There is "
+"absolutely no warranty for B<dpkg-depcheck>."
+msgstr ""
+"Copyright 2001 Bill Allombert E<lt>ballombe@debian.orgE<gt>. Änderungen "
+"Copyright 2002, 2003 Julian Gilbey E<lt>jdg@debian.orgE<gt>. B<dpkg-"
+"depcheck> ist freie Software, sie unterliegt der GNU General Public License, "
+"entweder Version 2 der Lizenz oder (nach Ihrer Wahl) irgendeiner späteren "
+"Version. Sie sind eingeladen, es zu ändern und/oder Kopien davon unter "
+"bestimmten Bedingungen weiterzugeben. Es besteht absolut keine "
+"Gewährleistung für B<dpkg-depcheck>."
+
+#. type: TH
+#: ../scripts/dpkg-genbuilddeps.1:1
+#, no-wrap
+msgid "DPKG-GENBUILDDEPS"
+msgstr "DPKG-GENBUILDDEPS"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:4
+msgid ""
+"dpkg-genbuilddeps - generate a list of packages used to build this package"
+msgstr ""
+"dpkg-genbuilddeps - erzeugt eine Liste von Paketen, die benutzt werden, um "
+"dieses Paket zu bauen"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:6
+msgid "B<dpkg-genbuilddeps> [I<arg> ...]"
+msgstr "B<dpkg-genbuilddeps> [I<Arg> …]"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:19
+msgid ""
+"This program is a wrapper around B<dpkg-depcheck>(1). It should be run from "
+"the top of a Debian build tree. It calls B<dpkg-buildpackage> with any "
+"arguments given on the command line, and by tracing the execution of this, "
+"it determines which non-essential packages were used during the package "
+"building. This can be useful in determining what the I<Build-Depends> "
+"control fields should contain. It does not determine which packages were "
+"used for the arch independent parts of the build and which for the arch "
+"dependent parts, not does it attempt to determine which versions of packages "
+"are required. It should be able to run under B<fakeroot> rather than being "
+"run as root, as B<fakeroot dpkg-genbuilddeps>, or B<dpkg-genbuilddeps -"
+"rfakeroot>."
+msgstr ""
+"Dieses Programm ist ein Wrapper um B<dpkg-depcheck>(1). Es sollte von der "
+"obersten Ebene des Debian-Bauverzeichnisbaums ausgeführt werden. Es ruft "
+"B<dpkg-buildpackage> mit allen auf der Befehlszeile angegebenen Argumenten "
+"auf und bestimmt beim Verfolgen von dessen Ausführung, welche nicht "
+"essentiellen Pakete beim Bau des Pakets verwendet werden. Dies kann bei der "
+"Bestimmung, welche I<Build-Depends>-Steuerfelder enthalten sein sollen, "
+"nützlich sein. Es bestimmt weder welche Pakete für die "
+"architekturunabhängigen Teile des Bauens verwendet werden und welche für die "
+"architekturabhängigen Teile, noch versucht es, zu bestimmen, welche "
+"Versionen von Paketen benötigt werden. Es sollte in der Lage sein, unter "
+"B<fakeroot> ausgeführt zu werden, als B<fakeroot dpkg-genbuilddeps> oder "
+"B<dpkg-genbuilddeps -rfakeroot> anstatt als Root."
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:23
+msgid ""
+"This program requires the build-essential package to be installed. If it is "
+"not, please use B<dpkg-depcheck> directly, with a command such as"
+msgstr ""
+"Dieses Programm verlangt, dass das Paket »build-essential« installiert ist. "
+"Falls dies nicht der Fall ist, verwenden Sie direkt B<dpkg-depcheck> mit "
+"einem Befehl wie"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:25
+#, no-wrap
+msgid " dpkg-depcheck --all dpkg-buildpackage -us -uc -b -rfakeroot ...\n"
+msgstr " dpkg-depcheck --all dpkg-buildpackage -us -uc -b -rfakeroot …\n"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:27
+msgid "All this program itself does is essentially to run the command:"
+msgstr "Im Wesentlichen führt das Programm folgenden Befehl aus:"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:29
+#, no-wrap
+msgid " dpkg-depcheck -b dpkg-buildpackage -us -uc -b -rfakeroot [arg ...]\n"
+msgstr " dpkg-depcheck -b dpkg-buildpackage -us -uc -b -rfakeroot [Arg …]\n"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:33
+msgid "B<dpkg-depcheck>(1), B<fakeroot>(1)"
+msgstr "B<dpkg-depcheck>(1), B<fakeroot>(1)"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:36
+msgid "B<The Debian Policy Manual,> sections on Build-Depends etc."
+msgstr "B<The Debian Policy Manual>, Abschnitte über Bauabhängigkeiten etc."
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:40
+msgid ""
+"The original B<dpkg-genbuilddeps> was written by Ben Collins "
+"E<lt>bcollins@debian.orgE<gt>. The current version is a simple wrapper "
+"around B<dpkg-depcheck> written by Bill Allombert E<lt>ballombe@debian."
+"orgE<gt>. This manual page was written by Julian Gilbey E<lt>jdg@debian."
+"orgE<gt>."
+msgstr ""
+"Das ursprüngliche B<dpkg-genbuilddeps> wurde von Ben Collins "
+"E<lt>bcollins@debian.orgE<gt> geschrieben. Die aktuelle Version ist ein "
+"einfacher Wrapper um B<dpkg-depcheck>, geschrieben von Bill Allombert "
+"E<lt>ballombe@debian.orgE<gt>. Diese Handbuchseite wurde von Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> geschrieben."
+
+#. type: TH
+#: ../doc/edit-patch.1:1
+#, no-wrap
+msgid "EDIT-PATCH"
+msgstr "EDIT-PATCH"
+
+#. type: Plain text
+#: ../doc/edit-patch.1:5
+msgid ""
+"B<edit-patch>, B<add-patch> - tool for preparing patches for Debian source "
+"packages"
+msgstr ""
+"B<edit-patch>, B<add-patch> - Werkzeug, das Patches für Debian-Quellpakete "
+"vorbereitet"
+
+#. type: Plain text
+#: ../doc/edit-patch.1:8
+msgid "B<edit-patch> I<path/to/patch>"
+msgstr "B<edit-patch> I<Pfad/zum/Patch>"
+
+#. type: Plain text
+#: ../doc/edit-patch.1:10
+msgid "B<add-patch> I<path/to/patch>"
+msgstr "B<add-patch> I<Pfad/zum/Patch>"
+
+#. type: Plain text
+#: ../doc/edit-patch.1:18
+msgid ""
+"B<edit-patch> is a wrapper script around the Quilt, CDBS, and dpatch patch "
+"systems. It simplifies the process of preparing and editing patches to "
+"Debian source packages and allows the user to not have to be concerned with "
+"which patch system is in use. Run from inside the root directory of the "
+"source package, B<edit-patch> can be used to edit existing patches located "
+"in I<debian/patches>."
+msgstr ""
+"B<edit-patch> ist ein Wrapper-Skript um die Quilt-, CDBS- und Dpatch-Patch-"
+"Systeme. Es vereinfacht den Prozess der Vorbereitung und Bearbeitung von "
+"Patches für Debian-Quellpakete und sorgt dafür, dass sich der Anwender nicht "
+"darum kümmern muss, welches Patch-System benutzt wird. Aus dem "
+"Wurzelverzeichnis des Quellpakets ausgeführt, kann B<edit-patch> verwendet "
+"werden, um existierende Patches, die in I<debian/patches> liegen, zu "
+"bearbeiten."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:25
+msgid ""
+"It can also be used to incorporate new patches. If pointed at a patch not "
+"already present, it will copy the patch to I<debian/patches> in the correct "
+"format for the patch system in use. Next, the patch is applied and a "
+"subshell is opened in order to edit the patch. Typing B<exit> or pressing "
+"Ctrl-d will close the subshell and launch an editor to record the I<debian/"
+"changelog> entry."
+msgstr ""
+"Es kann außerdem benutzt werden, um neue Patches zu integrieren. Falls es "
+"auf einen Patch zeigt, der noch nicht vorhanden ist, wird es den Patch im "
+"für das benutzte Patch-System korrekten Format, nach I<debian/patches> "
+"kopieren. Als nächstes wird der Patch angewandt und es wird eine Unter-Shell "
+"geöffnet, um den Patch zu bearbeiten. Die Eingabe von B<exit> oder das "
+"Drücken von Strg-D wird die Unter-Shell schließen und einen Editor öffnen, "
+"um den I<debian/changelog>-Eintrag aufzuschreiben."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:29
+msgid ""
+"B<edit-patch> is integrated with the Bazaar and Git version control "
+"systems. The patch will be automatically added to the tree, and the "
+"I<debian/changelog> entry will be used as the commit message."
+msgstr ""
+"B<edit-patch> ist in die Versionskontrollsysteme Bazaar und Git integriert. "
+"Der Patch wird dem Baum automatisch hinzugefügt und der I<debian/changelog>-"
+"Eintrag wird als Commit-Nachricht verwendet."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:32
+msgid ""
+"If no patch system is present, the patch is applied inline, and a copy is "
+"stored in I<debian/patches-applied>."
+msgstr ""
+"Falls kein Patch-System vorhanden ist, wird der Patch inline angewandt und "
+"es wird eine Kopie in I<debian/patches-applied> gespeichert."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:36
+msgid ""
+"B<add-patch> is the non-interactive version of B<edit-patch>. The patch "
+"will be incorporated but no editor or subshell will be spawned."
+msgstr ""
+"B<add-patch> ist eine nicht interaktive Version von B<edit-patch>. Der Patch "
+"wird integriert, es wird aber weder ein Editor noch eine Unter-Shell "
+"ausgeführt."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:40
+msgid ""
+"B<edit-patch> was written by Daniel Holbach E<lt>daniel.holbach@canonical."
+"comE<gt>, Michael Vogt E<lt>michael.vogt@canonical.comE<gt>, and David "
+"Futcher E<lt>bobbo@ubuntu.comE<gt>."
+msgstr ""
+"B<edit-patch> wurde von Daniel Holbach E<lt>daniel.holbach@canonical."
+"comE<gt>, Michael Vogt E<lt>michael.vogt@canonical.comE<gt> und David "
+"Futcher E<lt>bobbo@ubuntu.comE<gt> geschrieben."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:42
+msgid ""
+"This manual page was written by Andrew Starr-Bochicchio E<lt>a.starr.b@gmail."
+"comE<gt>."
+msgstr ""
+"Diese Handbuchseite wurde von Andrew Starr-Bochicchio E<lt>a.starr.b@gmail."
+"comE<gt> verfasst."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:43
+msgid ""
+"Both are released under the terms of the GNU General Public License, version "
+"3."
+msgstr ""
+"Beide wurden unter den Bedingungen der GNU General Public License, Version "
+"3, veröffentlicht."
+
+#. type: TH
+#: ../scripts/dscextract.1:1
+#, no-wrap
+msgid "DSCEXTRACT"
+msgstr "DSCEXTRACT"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:4
+msgid "dscextract - extract a single file from a Debian source package"
+msgstr ""
+"dscextract - extrahiert eine einzelne Datei aus einem Debian-Quellpaket"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:6
+msgid "B<dscextract> [I<options>] I<dscfile> I<file>"
+msgstr "B<dscextract> [I<Optionen>] I<dsc-Datei> I<Datei>"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:11
+msgid ""
+"B<dscextract> reads a single file from a Debian source package. The idea is "
+"to only look into I<.diff.gz> files (source format 1.0) or I<.debian.tar.gz/"
+"bz2> files (source format 3.0) where possible, hence avoiding to unpack "
+"large tarballs. It is most useful for files in the I<debian/> subdirectory."
+msgstr ""
+"B<dscextract> liest eine einzelne Datei aus einem Debian-Quellpaket. Die "
+"Idee besteht darin, nur in I<.diff.gz>-Dateien (Quellformat 1.0) oder I<."
+"debian.tar.gz/bz2>-Dateien (Quellformat 3.0) zu schauen, wo dies möglich "
+"ist, infolgedessen wird das Entpacken großer Tarballs vermieden. Es ist am "
+"nützlichsten für die Dateien im Unterverzeichnis I<debian/>."
+
+#. type: Plain text
+#: ../scripts/dscextract.1:14
+msgid ""
+"I<file> is relative to the first level directory contained in the package, i."
+"e. with the first component stripped."
+msgstr ""
+"I<Datei> ist relativ zur ersten Ebene des im Paket enthaltenen "
+"Verzeichnisses, d.h. nach der Entfernung der ersten Komponente."
+
+#. type: TP
+#: ../scripts/dscextract.1:15
+#, no-wrap
+msgid "B<-f>"
+msgstr "B<-f>"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:20
+msgid ""
+"\"Fast\" mode. For source format 1.0, avoid to fall back scanning the I<."
+"orig.tar.gz> file if I<file> was not found in the I<.diff.gz>. (For 3.0 "
+"packages, it is assumed that I<debian/*> are exactly the contents of "
+"I<debian.tar.gz/bz2>.)"
+msgstr ""
+"»schneller« Modus. Vermeidet für das Quellformat 1.0 den Rückfall zum "
+"Scannen der I<.orig.tar.gz>-Datei, falls I<Datei> nicht im I<.diff.gz> "
+"gefunden wurde. (Für 3.0-Pakete wird davon ausgegangen, dass I<debian/*> "
+"exakt der Inhalt von I<debian.tar.gz/bz2> ist.)"
+
+#. type: TP
+#: ../scripts/dscextract.1:21 ../scripts/uscan.1:552
+#: ../scripts/wnpp-check.1:26
+#, no-wrap
+msgid "0"
+msgstr "0"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:24
+msgid "I<file> was extracted."
+msgstr "I<Datei> wurde extrahiert."
+
+#. type: Plain text
+#: ../scripts/dscextract.1:27
+msgid "I<file> was not found in the source package."
+msgstr "I<Datei> wurde nicht im Quellpaket gefunden."
+
+#. type: Plain text
+#: ../scripts/dscextract.1:30
+msgid "An error occurred, like I<dscfile> was not found."
+msgstr "Es ist ein Fehler, wie I<Dsc-Datei> wurde nicht gefunden, aufgetreten."
+
+#. type: Plain text
+#: ../scripts/dscextract.1:32
+msgid "dscextract dds_2.1.1+ddd105-2.dsc debian/watch || test $? = 1"
+msgstr "dscextract dds_2.1.1+ddd105-2.dsc debian/watch || test $? = 1"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:33
+msgid "B<dscextract> was written by Christoph Berg E<lt>myon@debian.orgE<gt>."
+msgstr ""
+"B<dscextract> wurde von Christoph Berg E<lt>myon@debian.orgE<gt> geschrieben."
+
+#. type: TH
+#: ../scripts/dscverify.1:1
+#, no-wrap
+msgid "DSCVERIFY"
+msgstr "DSCVERIFY"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:4
+msgid "dscverify - verify the validity of a Debian package"
+msgstr "dscverify - überprüft die Gültigkeit eines Debian-Pakets"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:6
+msgid ""
+"B<dscverify> [B<--keyring >I<keyring>] ... I<changes_or_dsc_filename> ..."
+msgstr ""
+"B<dscverify> [B<--keyring >I<Schlüsselbund>] … I<changes-_oder_dsc-"
+"Dateiname> …"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:17
+msgid ""
+"B<dscverify> checks that the GPG signatures on the given I<.changes> or I<."
+"dsc> files are good signatures made by keys in the current Debian keyrings, "
+"found in the I<debian-keyring> and I<debian-maintainers> packages. "
+"(Additional keyrings can be specified using the B<--keyring> option any "
+"number of times.) It then checks that the other files listed in the I<."
+"changes> or I<.dsc> files have the correct sizes and checksums (MD5 plus "
+"SHA1 and SHA256 if the latter are present). The exit status is 0 if there "
+"are no problems and non-zero otherwise."
+msgstr ""
+"B<dscverify> prüft, ob die GPG-Signaturen der angegebenen I<.changes>- oder "
+"I<.dsc>-Dateien gute Signaturen sind, die durch Schlüssel aus aktuellen "
+"Debian-Schlüsselbünden erstellt wurden, die aus den Paketen I<debian-"
+"keyring> und I<debian-maintainers> stammen. (Zusätzliche Schlüsselbünde "
+"können beliebig oft mittels der Option B<--keyring> angegeben werden.) Dann "
+"prüft es, ob die anderen in den I<.changes>- oder I<.dsc>-Dateien "
+"aufgeführten Dateien die korrekten Größen und Prüfsummen aufweisen (MD5 plus "
+"SHA1 und SHA256, falls letzteres vorhanden ist). Der Exit-Status ist 0, "
+"falls es keine Probleme gibt, andernfalls ungleich 0,"
+
+#. type: TP
+#: ../scripts/dscverify.1:18
+#, no-wrap
+msgid "B<--keyring>I< >I<keyring>"
+msgstr "B<--keyring>I< >I<Schlüsselbund>"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:21
+msgid "Add I<keyring> to the list of keyrings to be used."
+msgstr ""
+"fügt der Liste der zu benutzenden Schlüsselbünde I<Schlüsselbund> hinzu."
+
+#. type: TP
+#: ../scripts/dscverify.1:21 ../scripts/who-uploads.1:25
+#, no-wrap
+msgid "B<--no-default-keyrings>"
+msgstr "B<--no-default-keyrings>"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:24
+msgid "Do not use the default set of keyrings."
+msgstr "verwendet nicht den vorgegebenen Satz von Schlüsselbünden."
+
+#. type: TP
+#: ../scripts/dscverify.1:28
+#, no-wrap
+msgid "B<--nosigcheck>, B<--no-sig-check>, B<-u>"
+msgstr "B<--nosigcheck>, B<--no-sig-check>, B<-u>"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:32
+msgid ""
+"Skip the signature verification step. That is, only verify the sizes and "
+"checksums of the files listed in the I<.changes> or I<.dsc> files."
+msgstr ""
+"überspringt den Signaturprüfschritt. Sprich, es prüft nur die Größen und "
+"Prüfsummen der in den I<.changes>- oder I<.dsc>-Dateien aufgeführten Dateien."
+
+#. type: TP
+#: ../scripts/dscverify.1:32 ../scripts/plotchangelog.1:78
+#: ../scripts/uscan.1:459
+#, no-wrap
+msgid "B<--verbose>"
+msgstr "B<--verbose>"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:35
+msgid "Do not suppress GPG output."
+msgstr "unterdrückt nicht die Ausgabe von GPG."
+
+#. type: Plain text
+#: ../scripts/dscverify.1:49
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. "
+"Environment variable settings are ignored for this purpose. If the first "
+"command line option given is B<--noconf> or B<--no-conf>, then these files "
+"will not be read. The currently recognised variable is:"
+msgstr ""
+"Die beiden Konfigurationsdateien I</etc/devscripts.conf> und I<~/."
+"devscripts> werden durch eine Shell in dieser Reihenfolge eingelesen, um "
+"Konfigurationsvariablen zu setzen. Umgebungsvariablen werden zu diesem Zweck "
+"ignoriert. Falls die erste Befehlszeilenoption B<--noconf> oder B<--no-conf> "
+"ist, werden diese Dateien nicht gelesen. Die derzeit bekannte Variable ist:"
+
+#. type: TP
+#: ../scripts/dscverify.1:49
+#, no-wrap
+msgid "B<DSCVERIFY_KEYRINGS>"
+msgstr "B<DSCVERIFY_KEYRINGS>"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:53
+msgid ""
+"This is a colon-separated list of extra keyrings to use in addition to any "
+"specified on the command line."
+msgstr ""
+"Dies ist eine durch Doppelpunkte getrennte Liste zusätzlicher "
+"Schlüsselbünde, die zusätzlich zu denen benutzt werden, die auf der "
+"Befehlszeile angegeben wurden."
+
+#. type: SH
+#: ../scripts/dscverify.1:53
+#, no-wrap
+msgid "KEYRING"
+msgstr "SCHLÜSSELBUND"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:60
+msgid ""
+"Please note that the keyring provided by the debian-keyring package can be "
+"slightly out of date. The latest version can be obtained with rsync, as "
+"documented in the README that comes with debian-keyring. If you sync the "
+"keyring to a non-standard location (see below), you can use the "
+"possibilities to specify extra keyrings, by either using the above mentioned "
+"configuration option or the --keyring option."
+msgstr ""
+"Bitte beachten Sie, dass der vom Paket »debian-keyring« bereitgestellte "
+"Schlüsselbund etwas veraltet sein kann. Die letzte Version können Sie mit "
+"Rsync abrufen, wie es in der »debian-keyring« mitgegebenen Datei README "
+"dokumentiert ist. Falls Sie den Schlüsselbund an einen unüblichen Ort "
+"synchronisieren (siehe unten), können Sie die Möglichkeiten nutzen, "
+"zusätzliche Schlüsselbünde anzugeben, indem Sie entweder die oben erwähnte "
+"Konfigurationsoption oder die Option --keyring verwenden."
+
+#. type: Plain text
+#: ../scripts/dscverify.1:62
+msgid "Below is an example for an alias:"
+msgstr "Nachfolgend ein Beispiel für einen Alias:"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:64
+msgid "alias dscverify='dscverify --keyring ~/.gnupg/pubring.gpg'"
+msgstr "alias dscverify='dscverify --keyring ~/.gnupg/pubring.gpg'"
+
+#. type: SH
+#: ../scripts/dscverify.1:64
+#, no-wrap
+msgid "STANDARD KEYRING LOCATIONS"
+msgstr "SPEICHERORTE DES STANDARDSCHLÜSSELBUNDS"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:67
+msgid ""
+"By default dscverify searches for the debian-keyring in the following "
+"locations:"
+msgstr ""
+"Standardmäßig sucht Dscverify den Debian-Schlüsselbund an den folgenden "
+"Speicherorten:"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:69
+msgid "- ~/.gnupg/trustedkeys.gpg"
+msgstr "- ~/.gnupg/trustedkeys.gpg"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:71
+msgid "- /org/keyring.debian.org/keyrings/debian-keyring.gpg"
+msgstr "- /org/keyring.debian.org/keyrings/debian-keyring.gpg"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:73
+msgid "- /usr/share/keyrings/debian-keyring.gpg"
+msgstr "- /usr/share/keyrings/debian-keyring.gpg"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:75
+msgid "- /usr/share/keyrings/debian-maintainers.gpg"
+msgstr "- /usr/share/keyrings/debian-maintainers.gpg"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:78
+msgid "B<gpg>(1), B<devscripts.conf>(5)"
+msgstr "B<gpg>(1) und B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:82
+msgid ""
+"B<dscverify> was written by Roderick Schertler E<lt>roderick@argon.orgE<gt> "
+"and posted on the debian-devel@lists.debian.org mailing list, with several "
+"modifications by Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"B<dscverify> wurde von Roderick Schertler E<lt>roderick@argon.orgE<gt> "
+"geschrieben und mit vielen Änderungen von Julian Gilbey E<lt>jdg@debian."
+"orgE<gt> an die Mailingliste debian-devel@lists.debian.org geschickt."
+
+#. type: TH
+#: ../scripts/getbuildlog.1:1
+#, no-wrap
+msgid "GETBUILDLOG"
+msgstr "GETBUILDLOG"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:4
+msgid "getbuildlog - download build logs from Debian auto-builders"
+msgstr ""
+"getbuildlog - lädt Bauprotokolle von den automatischen Debian-"
+"Paketbaumaschinen herunter"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:8
+msgid ""
+"B<getbuildlog> I<package> [I<version-pattern>] [I<architecture-pattern>]"
+msgstr "B<getbuildlog> I<package> [I<Versionsmuster>] [I<Architekturmuster>]"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:17
+msgid ""
+"B<getbuildlog> downloads build logs of I<package> from Debian auto-builders. "
+"It downloads build logs of all versions and for all architectures if "
+"I<version-pattern> and I<architecture-pattern> are not specified or empty, "
+"otherwise only build logs whose versions match I<version-pattern> and build "
+"logs whose architectures match I<architecture-pattern> will be downloaded. "
+"The version and architecture patterns are interpreted as extended regular "
+"expressions as described in B<grep>(1)."
+msgstr ""
+"B<getbuildlog> lädt Bauprotokolle des I<Paket>s von den automatischen Debian-"
+"Paketbaumaschinen herunter. Es lädt Bauprotokolle aller Versionen und für "
+"alle Architekturen, falls I<Versionsmuster> und I<Architekturmuster> nicht "
+"angegeben wurden oder leer sind. Andernfalls werden nur Bauprotokolle "
+"heruntergeladen, deren Versionen zu I<Versionsmuster> passen und "
+"Bauprotokolle, deren Architekturen zu I<Architekturmuster> passen. Die "
+"Versions- und Architekturmuster werden als erweiterte reguläre Ausdrücke, "
+"wie in B<grep>(1) beschrieben, interpretiert."
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:21
+msgid ""
+"If I<version-pattern> is \"last\" then only the logs for the most recent "
+"version of I<package> found on buildd.debian.org will be downloaded."
+msgstr ""
+"Falls I<Versionsmuster> »last« ist, dann werden nur die Protokolle der "
+"aktuellsten auf buildd.debian.org gefundenen Version von I<Paket> "
+"heruntergeladen."
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:24
+msgid ""
+"If I<version-pattern> is \"last-all\" then the logs for the most recent "
+"version found on each build log index will be downloaded."
+msgstr ""
+"Falls I<Versionsmuster> »last-all« ist, dann werden die Protokolle der "
+"aktuellsten auf jedem Bauprotokollindex gefundenen Version heruntergeladen."
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:28
+msgid "Show usage information and examples."
+msgstr "zeigt Aufrufinformationen und Beispiele."
+
+#. type: TP
+#: ../scripts/getbuildlog.1:32
+#, no-wrap
+msgid "getbuildlog hello 2\\e.2-1 amd64"
+msgstr "getbuildlog hello 2\\e.2-1 amd64"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:35
+msgid "Download amd64 build log for hello version 2.2-1."
+msgstr "lädt das AMD64-Bauprotokoll für Hello Version 2.2-1 herunter."
+
+#. type: TP
+#: ../scripts/getbuildlog.1:35
+#, no-wrap
+msgid "getbuildlog glibc \"\" mips.*"
+msgstr "getbuildlog glibc \"\" mips.*"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:38
+msgid "Download mips(el) build logs of all glibc versions."
+msgstr "lädt MIPS(el)-Bauprotokolle aller Glibc-Versionen herunter."
+
+#. type: TP
+#: ../scripts/getbuildlog.1:38
+#, no-wrap
+msgid "getbuildlog wesnoth .*bpo.*"
+msgstr "getbuildlog wesnoth .*bpo.*"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:41
+msgid "Download all build logs of backported wesnoth versions."
+msgstr "lädt alle Bauprotokolle zurückportierter Wesnoth-Versionen herunter."
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:42
+msgid "Written by Frank S. Thomas E<lt>fst@debian.orgE<gt>."
+msgstr "geschrieben von Frank S. Thomas E<lt>fst@debian.orgE<gt>"
+
+#. type: TH
+#: ../scripts/grep-excuses.1:1
+#, no-wrap
+msgid "GREP-EXCUSES"
+msgstr "GREP-EXCUSES"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:4
+msgid ""
+"grep-excuses - search the testing excuses files for a specific maintainer"
+msgstr ""
+"grep-excuses - durchsucht die Testing-Excuses-Dateien nach einem bestimmten "
+"Betreuer"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:6
+msgid "B<grep-excuses> [I<options>] [I<maintainer>|I<package>]"
+msgstr "B<grep-excuses> [I<Optionen>] [I<Betreuer>|I<Paket>]"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:13
+msgid ""
+"B<grep-excuses> downloads the update_excuses.html file and greps it for the "
+"specified maintainer name. The B<libwww-perl> package is required for this "
+"script. If no name is given on the command line, first the environment "
+"variable B<DEBFULLNAME> is used if it is defined, and failing that, the "
+"configuration variable described below is used."
+msgstr ""
+"B<grep-excuses> lädt die Datei update_excuses.html herunter und durchsucht "
+"sie mit Grep nach dem angegebenen Betreuernamen. Für dieses Skript wird das "
+"Paket B<libwww-perl> benötigt. Falls auf der Befehlszeile kein Name "
+"angegeben wurde, wird zuerst die Umgebungsvariable B<DEBFULLNAME> benutzt, "
+"falls sie definiert ist. Schlägt dies fehl, wird die Konfigurationsvariable "
+"benutzt wie nachfolgend beschrieben."
+
+#. type: TP
+#: ../scripts/grep-excuses.1:18
+#, no-wrap
+msgid "B<--wipnity>, B<-w>"
+msgstr "B<--wipnity>, B<-w>"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:22
+msgid ""
+"Get information from E<lt>https://release.debian.org/migration/E<gt>. A "
+"package name must be given when using this option."
+msgstr ""
+"bezieht Informationen von E<lt>https://release.debian.org/migration/E<gt>. "
+"Wenn diese Option benutzt wird, muss ein Paketname angegeben werden."
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:25 ../scripts/whodepends.1:14
+msgid "Show a brief usage message."
+msgstr "zeigt eine kurze Aufrufnachricht."
+
+#. type: TP
+#: ../scripts/grep-excuses.1:34
+#, no-wrap
+msgid "B<GREP_EXCUSES_MAINTAINER>"
+msgstr "B<GREP_EXCUSES_MAINTAINER>"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:38
+msgid ""
+"The default maintainer, email or package to grep for if none is specified on "
+"the command line."
+msgstr ""
+"der Standardbetreuer, die E-Mail oder das Paket, nach dem gesucht werden "
+"soll, falls keines auf der Befehlszeile angegeben wurde"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:40 ../scripts/plotchangelog.1:126
+msgid "B<devscripts.conf>(5)"
+msgstr "B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:42
+msgid ""
+"Joey Hess E<lt>joeyh@debian.orgE<gt>; modifications by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Joey Hess E<lt>joeyh@debian.orgE<gt>; Änderungen durch Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:24
+msgid "licensecheck - simple license checker for source files"
+msgstr "licensecheck - einfache Lizenzprüfung für Quelldateien"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:28
+msgid "B<licensecheck> B<--help>|B<--version>"
+msgstr "B<licensecheck> B<--help>|B<--version>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:30
+msgid ""
+"B<licensecheck> [B<--no-conf>] [B<--verbose>] [B<--copyright>] [B<-l>|B<--"
+"lines=>I<N>] [B<-i>|B<--ignore=>I<regex>] [B<-c>|B<--check=>I<regex>] [B<-m>|"
+"B<--machine>] [B<-r>|B<--recursive>] I<list of files and directories to "
+"check>"
+msgstr ""
+"B<licensecheck> [B<--no-conf>] [B<--verbose>] [B<--copyright>] [B<-l>|B<--"
+"lines=>I<N>] [B<-i>|B<--ignore=>I<regulärer Ausdruck>] [B<-c>|B<--"
+"check=>I<regulärer Ausdruck>] [B<-m>|B<--machine>] [B<-r>|B<--recursive>] "
+"I<Liste zu prüfender Dateien und Verzeichnisse>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:37
+msgid ""
+"B<licensecheck> attempts to determine the license that applies to each file "
+"passed to it, by searching the start of the file for text belonging to "
+"various licenses."
+msgstr ""
+"B<licensecheck> versucht die Lizenz zu bestimmen, die für jede ihm "
+"übergebene Datei gilt, indem es am Anfang der Datei nach Text sucht, der zu "
+"verschiedenen Lizenzen gehört."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:41
+msgid ""
+"If any of the arguments passed are directories, B<licensecheck> will add the "
+"files contained within to the list of files to process."
+msgstr ""
+"Falls es sich bei irgendwelchen übergebenen Argumenten um Verzeichnisse "
+"handelt, wird B<licensecheck> die darin enthaltenen Dateien der zu "
+"verarbeitenden Dateiliste hinzufügen."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:48
+msgid "B<--verbose>, B<--no-verbose>"
+msgstr "B<--verbose>, B<--no-verbose>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:50
+msgid ""
+"Specify whether to output the text being processed from each file before the "
+"corresponding license information."
+msgstr ""
+"gibt an, ob der verarbeitete Text von jeder Datei vor der entsprechenden "
+"Lizenzinformation ausgegeben wird."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:53
+msgid "Default is to be quiet."
+msgstr "Standardmäßig wird nichts ausgegeben."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:55
+msgid "B<-l=>I<N>, B<--lines=>I<N>"
+msgstr "B<-l=>I<N>, B<--lines=>I<N>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:57
+msgid ""
+"Specify the number of lines of each file's header which should be parsed for "
+"license information. (Default is 60)."
+msgstr ""
+"gibt an, wie viele Kopfzeilen von jeder Datei für die Lizenzinformation "
+"ausgewertet werden sollen. (Vorgabe ist 60.)"
+
+#. type: =item
+#: ../scripts/licensecheck.pl:60
+msgid "B<-i=>I<regex>, B<--ignore=>I<regex>"
+msgstr "B<-i=>I<regulärer Ausdruck>, B<--ignore=>I<regulärer Ausdruck>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:62
+msgid ""
+"When processing the list of files and directories, the regular expression "
+"specified by this option will be used to indicate those which should not be "
+"considered (e.g. backup files, VCS metadata)."
+msgstr ""
+"Wenn die Liste der Dateien und Verzeichnisse verarbeitet wird, wird der "
+"durch diese Option angegebene reguläre Ausdruck verwendet, um diejenigen "
+"anzugeben, die nicht berücksichtigt werden sollen (z.B. Sicherungsdateien, "
+"VCS-Metadaten)."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:66
+msgid "B<-r>, B<--recursive>"
+msgstr "B<-r>, B<--recursive>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:68
+msgid "Specify that the contents of directories should be added recursively."
+msgstr ""
+"gibt an, dass der Inhalt von Verzeichnissen rekursiv hinzugefügt werden soll."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:71
+msgid "B<-c=>I<regex>, B<--check=>I<regex>"
+msgstr "B<-c=>I<regulärer Ausdruck>, B<--check=>I<regulärer Ausdruck>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:73
+msgid ""
+"Specify a pattern against which filenames will be matched in order to decide "
+"which files to check the license of."
+msgstr ""
+"gibt ein Muster an, mit dem Dateinamen verglichen werden, um zu entscheiden, "
+"von welchen Dateien die Lizenz geprüft werden soll."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:76
+msgid "The default includes common source files."
+msgstr "Die Vorgabe enthält übliche Quelldateien."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:78
+msgid "B<--copyright>"
+msgstr "B<--copyright>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:80
+msgid "Also display copyright text found within the file"
+msgstr "zeigt außerdem den in der Datei gefundenen Copyright-Text an."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:82
+msgid "B<-m>, B<--machine>"
+msgstr "B<-m>, B<--machine>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:84
+msgid ""
+"Display the information in a machine readable way, i.e. in the form "
+"<file><tab><license>[<tab><copyright>] so that it can be easily sorted and/"
+"or filtered, e.g. with the B<awk> and B<sort> commands. Note that using the "
+"B<--verbose> option will kill the readability."
+msgstr ""
+"zeigt die Informationen auf eine maschinenlesbare Art, d.h. in der Form "
+"<Datei><Tabulator><Lizenz>[<Tabulator><Copyright>], so dass sie einfach "
+"sortiert und/oder gefiltert werden können, z.B. mit den Befehlen B<awk> und "
+"B<sort>. Beachten Sie, dass die Verwendung der Option B<--verbose> die "
+"Lesbarkeit zunichte macht."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:91
+msgid ""
+"Do not read any configuration files. This can only be used as the first "
+"option given on the command line."
+msgstr ""
+"liest keine Konfigurationsdateien. Dies kann nur als erste Option auf der "
+"Befehlszeile benutzt werden."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:106
+msgid "B<LICENSECHECK_VERBOSE>"
+msgstr "B<LICENSECHECK_VERBOSE>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:108
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--verbose> command "
+"line parameter being used. The default is I<no>."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--verbose> benutzt würde. Die Vorgabe ist I<no>."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:111
+msgid "B<LICENSECHECK_PARSELINES>"
+msgstr "B<LICENSECHECK_PARSELINES>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:113
+msgid ""
+"If this is set to a positive number then the specified number of lines at "
+"the start of each file will be read whilst attempting to determine the "
+"license(s) in use. This is equivalent to the B<--lines> command line option."
+msgstr ""
+"Falls dies auf eine positive Zahl gesetzt ist, wird die angegebene Anzahl "
+"von Zeilen am Anfang jeder Datei gelesen, während versucht wird, die "
+"benutzte(n) Lizenz(en) zu bestimmen. Dies entspricht der Befehlszeilenoption "
+"B<--lines>."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:122
+msgid ""
+"This code is copyright by Adam D. Barratt <I<adam@adam-barratt.org.uk>>, all "
+"rights reserved; based on a script of the same name from the KDE SDK, which "
+"is copyright by <I<dfaure@kde.org>>. This program comes with ABSOLUTELY NO "
+"WARRANTY. You are free to redistribute this code under the terms of the GNU "
+"General Public License, version 2 or later."
+msgstr ""
+"Dieser Code unterliegt dem Copyright von Adam D. Barratt <I<adam@adam-"
+"barratt.org.uk>>, alle Rechte vorbehalten, basierend auf dem gleichnamigen "
+"Skript des KDE-SDK, das unter dem Copyright von <I<dfaure@kde.org>> steht. "
+"Für dieses Programm besteht KEINERLEI GARANTIE. Es ist Ihnen erlaubt, diesen "
+"Code unter den Bedingungen der GNU General Public License, Version 2 oder "
+"später, weiterzugeben."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:131
+msgid "Adam D. Barratt <adam@adam-barratt.org.uk>"
+msgstr "Adam D. Barratt <adam@adam-barratt.org.uk>"
+
+#. type: TH
+#: ../scripts/list-unreleased.1:1
+#, no-wrap
+msgid "LIST-UNRELEASED"
+msgstr "LIST-UNRELEASED"
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:4
+msgid "list-unreleased - display UNRELEASED packages"
+msgstr "list-unreleased - zeigt Pakete, die UNRELEASED sind"
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:6
+msgid "B<list-unreleased> [I<arg> ...] [I<path> ...]"
+msgstr "B<list-unreleased> [I<Arg> …] [I<Pfad> …]"
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:9
+msgid ""
+"Searches for packages whose changelogs indicate there are pending changes "
+"(UNRELEASED) and either lists them or displays the relevant changelog entry."
+msgstr ""
+"sucht nach Paketen, deren Changelogs angeben, dass Änderungen anstehen "
+"(UNRELEASED) und listet sie entweder auf oder zeigt den maßgeblichen "
+"Changelog-Eintrag."
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:12
+msgid ""
+"By default it searches for packages under the current directory. If a path "
+"is specified it will look for packages under that directory instead."
+msgstr ""
+"Standardmäßig sucht es nach Paketen unterhalb des aktuellen Verzeichnisses. "
+"Falls ein Pfad angegeben wurde, wird es stattdessen nach Paketen unterhalb "
+"dieses Verzeichnisses suchen."
+
+#. type: TP
+#: ../scripts/list-unreleased.1:13
+#, no-wrap
+msgid "B<-c>"
+msgstr "B<-c>"
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:16
+msgid "Display pending changes."
+msgstr "zeigt ausstehende Änderungen."
+
+#. type: TP
+#: ../scripts/list-unreleased.1:16
+#, no-wrap
+msgid "B<-R>"
+msgstr "B<-R>"
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:19
+msgid "Don't recurse into subdirectories looking for packages."
+msgstr "sucht nicht rekursiv in Unterverzeichnissen nach Paketen."
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:23
+msgid ""
+"B<list-unreleased> was written by Frans Pop E<lt>elendil@planet.nlE<gt>. "
+"This manual page was written by Joey Hess E<lt>joeyh@debian.orgE<gt>."
+msgstr ""
+"B<list-unreleased> wurde von Frans Pop E<lt>elendil@planet.nlE<gt> "
+"geschrieben. Diese Handbuchseite wurde von Joey Hess E<lt>joeyh@debian."
+"orgE<gt> verfasst."
+
+#. type: TH
+#: ../scripts/manpage-alert.1:1
+#, no-wrap
+msgid "MANPAGE-ALERT"
+msgstr "MANPAGE-ALERT"
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:4
+msgid "manpage-alert - check for binaries without corresponding manpages"
+msgstr "manpage-alert - sucht nach Programmen ohne zugehörige Handbuchseiten"
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:6
+msgid "B<manpage-alert> [I<path list>]"
+msgstr "B<manpage-alert> [I<Pfadliste>]"
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:8
+msgid "B<manpage-alert --help>|B<--version>"
+msgstr "B<manpage-alert --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:11
+msgid ""
+"B<manpage-alert> searches the given list of paths for binaries without "
+"corresponding manpages."
+msgstr ""
+"B<manpage-alert> durchsucht die angegebene Pfadliste nach Programmen ohne "
+"zugehörige Handbuchseiten."
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:14
+msgid ""
+"If no paths are specified on the command line, the path list I</bin /sbin /"
+"usr/bin /usr/sbin /usr/games> will be assumed."
+msgstr ""
+"Falls keine Pfade auf der Befehlszeile angegeben wurden, wird die Pfadliste "
+"I</bin /sbin /usr/bin /usr/sbin /usr/games> verwendet."
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:17
+msgid "B<--help>, B<-h> Show a summary of options."
+msgstr "B<--help>, B<-h> zeigt eine Zusammenfassung der Optionen."
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:25
+msgid ""
+"B<manpage-alert> was written by Branden Robinson and modified by Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt> and Adam D. Barratt E<lt>debian-bts@adam-"
+"barratt.org.ukE<gt> (who also wrote this manpage) for the devscripts package."
+msgstr ""
+"B<manpage-alert> wurde von Branden Robinson geschrieben und durch Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt> sowie Adam D. Barratt E<lt>debian-bts@adam-"
+"barratt.org.ukE<gt> (der auch diese Handbuchseite verfasste) für das Paket "
+"Devscripts angepasst."
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:28
+msgid ""
+"This manpage and the associated program are licensed under the terms of the "
+"GPL, version 2 or later."
+msgstr ""
+"Diese Handbuchseite und das zugehörige Programm sind unter den Bedingungen "
+"der GPL, Version 2 oder später, lizensiert."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:23
+msgid "mass-bug - mass-file a bug report against a list of packages"
+msgstr ""
+"mass-bug - reicht einen Massenfehlerbericht gegen eine Liste von Paketen ein"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:27
+msgid ""
+"B<mass-bug> [I<options>] B<--subject=\">I<bug subject>B<\"> I<template "
+"package-list>"
+msgstr ""
+"B<mass-bug> [I<Optionen>] B<--subject=\">I<Betreff des Fehlerberichts>B<\"> "
+"I<Schablonenpaketliste>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:31
+msgid ""
+"mass-bug assists in filing a mass bug report in the Debian BTS on a set of "
+"packages. For each package in the package-list file (which should list one "
+"package per line together with an optional version number separated from the "
+"package name by an underscore), it fills out the template, adds BTS pseudo-"
+"headers, and either displays or sends the bug report."
+msgstr ""
+"Mass-bug hilft bei der Masseneinreichung von Fehlerberichten in der Debian-"
+"Fehlerdatenbank gegen eine Gruppe von Paketen. Für jedes Paket in der "
+"Paketliste (die ein Paket pro Zeile mit einer optionalen Versionsnummer, die "
+"per Unterstrich vom Paketnamen getrennt ist, aufführen sollte), füllt es die "
+"Schablone aus, fügt Pseudokopfzeilen der Fehlerdatenbank hinzu und zeigt "
+"entweder den Fehlerbericht an oder versendet ihn."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:37
+msgid ""
+"Warning: Some care has been taken to avoid unpleasant and common mistakes, "
+"but this is still a power tool that can generate massive amounts of bug "
+"report mails. Use it with care, and read the documentation in the "
+"Developer's Reference about mass filing of bug reports first."
+msgstr ""
+"Warnung: Es wurde darauf geachtet, unangenehme und häufige Fehler zu "
+"vermeiden, aber dies ist immer noch ein Werkzeug für Fortgeschrittene, das "
+"massenhaft E-Mails mit Fehlerberichten erzeugen kann. Benutzen Sie es mit "
+"Vorsicht und lesen Sie zuerst die Dokumentation in der Debian-Entwickler-"
+"Referenz über die Masseneinreichung von Fehlern."
+
+#. type: =head1
+#: ../scripts/mass-bug.pl:42
+msgid "TEMPLATE"
+msgstr "SCHABLONE"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:44
+msgid ""
+"The template file is the body of the message that will be sent for each bug "
+"report, excluding the BTS pseudo-headers. In the template, #PACKAGE# is "
+"replaced with the name of the package. If a version was specified for the "
+"package, #VERSION# will be replaced by that version."
+msgstr ""
+"Die Schablonendatei ist der Rumpf der Nachricht, die an jeden Fehlerbericht "
+"gesandt wird, ausgenommen der Pseudokopfzeilen der Fehlerdatenbank. In der "
+"Schablone wird #PACKAGE# durch den Namen des Pakets ersetzt. Falls eine "
+"Version für das Paket angegeben wurde, wird #VERSION# durch diese Version "
+"ersetzt."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:49
+msgid ""
+"The components of the version number may be specified using #EPOCH#, "
+"#UPSTREAM_VERSION# and #REVISION#. #EPOCH# includes the trailing colon and "
+"#REVISION# the leading dash so that #EPOCH#UPSTREAM_VERSION##REVISION# is "
+"always the same as #VERSION#."
+msgstr ""
+"Die Bestandteile der Versionsnummer können mittels #EPOCH#, "
+"#UPSTREAM_VERSION# und #REVISION# angegeben werden. #EPOCH# beinhaltet den "
+"Doppelpunkt am Ende und #REVISION# den führenden Bindestrich, so dass "
+"#EPOCH#UPSTREAM_VERSION##REVISION# immer dasselbe wie #VERSION# ist."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:54
+msgid ""
+"Note that text in the template will be automatically word-wrapped to 70 "
+"columns, up to the start of a signature (indicated by S<'-- '> at the start "
+"of a line on its own). This is another reason to avoid including BTS pseudo-"
+"headers in your template."
+msgstr ""
+"Beachten Sie, dass Text in der Schablone bei 70 Zeichen umgebrochen wird bis "
+"zum Anfang einer Signatur (also bis zu einer Zeile, die genau S<'-- '> "
+"alleine am Anfang der Zeile enthält). Dies ist ein weiterer Grund, das "
+"Einschließen von Pseudokopfzeilen der Fehlerdatenbank in Ihre Schablone zu "
+"vermeiden."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:61
+msgid ""
+"B<mass-bug> examines the B<devscripts> configuration files as described "
+"below. Command line options override the configuration file settings, "
+"though."
+msgstr ""
+"B<mass-bug> untersucht die B<devscripts>-Konfigurationsdateien wie "
+"nachfolgend beschrieben. Befehlszeilenoptionen setzen jedoch die "
+"Einstellungen von Konfigurationsdateien außer Kraft."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:67
+msgid ""
+"B<--severity=>(B<wishlist>|B<minor>|B<normal>|B<important>|B<serious>|"
+"B<grave>|B<critical>)"
+msgstr ""
+"B<--severity=>(B<wishlist>|B<minor>|B<normal>|B<important>|B<serious>|"
+"B<grave>|B<critical>)"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:69
+msgid ""
+"Specify the severity with which bugs should be filed. Default is B<normal>."
+msgstr ""
+"gibt den Schweregrad an, mit dem Fehler eingereicht werden sollen. Vorgabe "
+"ist B<normal>."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:72
+msgid "B<--display>"
+msgstr "B<--display>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:74
+msgid ""
+"Fill out the templates for each package and display them all for "
+"verification. This is the default behavior."
+msgstr ""
+"füllt die Schablonen für jedes Paket aus und zeigt sie zur Überprüfung an. "
+"Dies ist das Standardverhalten."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:77
+msgid "B<--send>"
+msgstr "B<--send>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:79
+msgid "Actually send the bug reports."
+msgstr "sendet die Fehlerberichte tatsächlich."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:81
+msgid "B<--subject=\">I<bug subject>B<\">"
+msgstr "B<--subject=\">I<Betreff des Fehlerberichts>B<\">"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:83
+msgid ""
+"Specify the subject of the bug report. The subject will be automatically "
+"prefixed with the name of the package that the bug is filed against."
+msgstr ""
+"gibt den Betreff des Fehlerberichts an. Dem Betreff wird automatisch der "
+"Name des Pakets vorangestellt, gegen das der Fehlerbericht eingereicht wird."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:86
+msgid "B<--tags>"
+msgstr "B<--tags>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:88
+msgid "Set the BTS pseudo-header for tags."
+msgstr ""
+"erzeugt die Pseudokopfzeile »Tags« der Fehlerdatenbank, um Markierungen zu "
+"setzen."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:90
+msgid "B<--user>"
+msgstr "B<--user>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:92
+msgid "Set the BTS pseudo-header for a usertags' user."
+msgstr ""
+"erzeugt die Pseudokopfzeile »User« der Fehlerdatenbank (Benutzer der "
+"Benutzermarkierungen)."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:94
+msgid "B<--usertags>"
+msgstr "B<--usertags>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:96
+msgid "Set the BTS pseudo-header for usertags."
+msgstr ""
+"erzeugt die Pseudokopfzeile »Usertags« der Fehlerdatenbank (um eine "
+"Benutzermarkierung zu setzen)."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:98
+msgid "B<--source>"
+msgstr "B<--source>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:100
+msgid ""
+"Specify that package names refer to source packages rather than binary "
+"packages."
+msgstr "gibt an, dass Paketnamen sich auf Quell- statt Binärpakete beziehen."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:105
+msgid ""
+"Specify the B<sendmail> command. The command will be split on white space "
+"and will not be passed to a shell. Default is F</usr/sbin/sendmail>."
+msgstr ""
+"gibt den B<sendmail>-Befehl an. Der Befehl wird bei Leerräumen unterteilt "
+"und nicht an eine Shell übergeben. Vorgabe ist F</usr/sbin/sendmail>."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:108
+msgid "B<--no-wrap>"
+msgstr "B<--no-wrap>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:110
+msgid "Do not wrap the template to lines of 70 characters."
+msgstr "bricht die Schablone nicht bei 70 Zeichen um."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:129
+msgid ""
+"B<DEBEMAIL> and B<EMAIL> can be set in the environment to control the email "
+"address that the bugs are sent from."
+msgstr ""
+"B<DEBEMAIL> und B<EMAIL> können in der Umgebung gesetzt werden, um die E-"
+"Mail-Adresse festzulegen, von der Fehlerberichte versandt werden."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:517
+msgid "This program is Copyright (C) 2006 by Joey Hess <joeyh@debian.org>."
+msgstr ""
+"Dieses Programm unterliegt dem Copyright (C) 2006 von Joey Hess "
+"<joeyh@debian.org>."
+
+#. type: TH
+#: ../scripts/mergechanges.1:1
+#, no-wrap
+msgid "MERGECHANGES"
+msgstr "MERGECHANGES"
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:4
+msgid "mergechanges - merge multiple changes files"
+msgstr "mergechanges - fügt mehrere Changes-Dateien zusammen"
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:6
+msgid "B<mergechanges> [B<-f>] I<file1 file2> [I<file>...]"
+msgstr "B<mergechanges> [B<-f>] I<Datei1 Datei2> I<Datei> …]"
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:13
+msgid ""
+"B<mergechanges> merges two or more I<.changes> files, merging the "
+"Architecture, Description and Files (and Checksums-*, if present) fields of "
+"the two. There are checks made to ensure that the changes files are from "
+"the same source package and version and use the same changes file Format. "
+"The first changes file is used as the basis and the information from the "
+"later ones is merged into it."
+msgstr ""
+"B<mergechanges> fügt zwei oder mehr I<.changes>-Dateien zusammen und fügt "
+"dabei die Felder »Architecture«, »Description« und »Files« (und »Checksums-"
+"*«, falls vorhanden) der beiden zusammen. Es werden Prüfungen durchgeführt, "
+"um sicherzustellen, dass die Changes-Dateien vom gleichen Quellpaket und der "
+"gleichen Version sind und dasselbe Changes-Dateiformat besitzen. Die erste "
+"Changes-Datei wird als Basis verwendet und die Information der letzteren "
+"wird in dieser zusammengefügt."
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:18
+msgid ""
+"The output is normally written to I<stdout>. If the B<-f> option is given, "
+"the output is written to I<package>_I<version>_multi.changes instead, in the "
+"same directory as the first changes file listed."
+msgstr ""
+"Die Ausgabe wird normalerweise auf die Standardausgabe (I<stdout>) "
+"geschrieben. Falls die Option B<-f> angegeben wurde, wird die Ausgabe "
+"stattdessen in I<Paket>_I<Version>_multi.changes im selben Verzeichnis wie "
+"die zuerst aufgeführte Changes-Datei geschrieben."
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:21
+msgid ""
+"Gergely Nagy E<lt>algernon@debian.orgE<gt>, modifications by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> and Adam D. Barratt E<lt>adam@adam-barratt.org."
+"ukE<gt>."
+msgstr ""
+"Gergely Nagy E<lt>algernon@debian.orgE<gt>, Änderungen durch Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> und Adam D. Barratt E<lt>adam@adam-barratt.org."
+"ukE<gt>."
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:26
+msgid ""
+"mk-build-deps - build a package satisfying a package's build-dependencies"
+msgstr ""
+"mk-build-deps - baut ein Paket, das die Bauabhängigkeiten eines Pakets "
+"erfüllt"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:30
+msgid "B<mk-build-deps> B<--help>|B<--version>"
+msgstr "B<mk-build-deps> B<--help>|B<--version>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:32
+msgid "B<mk-build-deps> [I<options>] I<control file> | I<package name> ..."
+msgstr "B<mk-build-deps> [I<Optionen>] I<Steuerungsdatei> | I<Paketname> …"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:36
+msgid ""
+"Given a I<package name> and/or I<control file>, B<mk-build-deps> will use "
+"B<equivs> to generate a binary package which may be installed to satisfy all "
+"the build dependencies of the given package."
+msgstr ""
+"Bei einem angegebenen I<Paketname>n und/oder einer I<Steuerungsdatei> wird "
+"B<mk-build-deps> B<equivs> verwenden, um ein Binärpaket zu erstellen, das "
+"installiert werden kann, um die gesamten Bauabhängigkeiten des angegebenen "
+"Pakets zu erfüllen."
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:40
+msgid ""
+"If B<--build-dep> and/or B<--build-indep> are given, then the resulting "
+"binary package(s) will depend solely on the Build-Depends/Build-Depends-"
+"Indep dependencies, respectively."
+msgstr ""
+"Falls B<--build-dep> und/oder B<--build-indep> angegeben wurden, wird das "
+"resultierende Biärpaket ausschließlich von den Build-Depends- "
+"beziehungsweise Build-Depends-Indep-Abhängigkeiten abhängen."
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:48
+msgid "B<-i>, B<--install>"
+msgstr "B<-i>, B<--install>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:50
+msgid "Install the generated packages and its build-dependencies."
+msgstr "installiert die erstellten Pakete und ihre Bauabhängigkeiten."
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:52
+msgid "B<-t>, B<--tool>"
+msgstr "B<-t>, B<--tool>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:54
+msgid ""
+"When installing the generated package use the specified tool. (default: "
+"B<apt-get --no-install-recommends>)"
+msgstr ""
+"benutzt, wenn das erstellte Paket installiert wird, das angegebene Werkzeug. "
+"(Vorgabe: B<apt-get --no-install-recommends>)"
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:57
+msgid "B<-r>, B<--remove>"
+msgstr "B<-r>, B<--remove>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:59
+msgid ""
+"Remove the package file after installing it. Ignored if used without the B<--"
+"install> switch."
+msgstr ""
+"entfernt die Paketdatei nachdem sie installiert wurde. Es wird ignoriert, "
+"falls es ohne den Schalter B<--install> benutzt wird."
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:62
+msgid "B<-a> I<foo>, B<--arch> I<foo>"
+msgstr "B<-a> I<foo>, B<--arch> I<foo>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:64
+msgid ""
+"If the source package has architecture-specific build dependencies, produce "
+"a package for architecture I<foo>, not for the system architecture. (If the "
+"source package does not have architecture-specific build dependencies, the "
+"package produced is always for the pseudo-architecture B<all>.)"
+msgstr ""
+"erstellt ein Paket für die Architektur I<foo>, nicht für die "
+"Systemarchitektur, falls das Quellpaket architekturspezifische "
+"Bauabhängigkeiten hat. (Falls das Quellpaket keine architekturspezifischen "
+"Bauabhängigkeiten hat, wird das Paket immer für die Pseudoarchitektur B<all> "
+"erstellt.)"
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:69
+msgid "B<-B>, B<--build-dep>"
+msgstr "B<-B>, B<--build-dep>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:71
+msgid ""
+"Generate a package which only depends on the source package's Build-Depends "
+"dependencies."
+msgstr ""
+"erstellt ein Paket, das nur von den Build-Depends-Abhängigkeiten des "
+"Quellpakets abhängt."
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:74
+msgid "B<-A>, B<--build-indep>"
+msgstr "B<-A>, B<--build-indep>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:76
+msgid ""
+"Generate a package which only depends on the source package's Build-Depends-"
+"Indep dependencies."
+msgstr ""
+"erstellt ein Paket, das nur von den Build-Depends-Indep-Abhängigkeiten des "
+"Quellpakets abhängt."
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:87
+msgid "B<-s>, B<--root-cmd>"
+msgstr "B<-s>, B<--root-cmd>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:89
+msgid ""
+"Use the specified tool to gain root privileges before installing. Ignored "
+"if used without the B<--install> switch."
+msgstr ""
+"verwendet das angegebene Werkzeug, um für die Installation Root-Rechte zu "
+"erlangen. Dies wird ignoriert, falls es ohne den Schalter B<--install> "
+"benutzt wird."
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:96
+msgid ""
+"B<mk-build-deps> is copyright by Vincent Fourmond and was modified for the "
+"devscripts package by Adam D. Barratt <adam@adam-barratt.org.uk>."
+msgstr ""
+"B<mk-build-deps> unterliegt dem Copyright von Vincent Fourmond und wurde für "
+"das Devscripts-Paket durch Adam D. Barratt <adam@adam-barratt.org.uk> "
+"verändert."
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:99 ../scripts/transition-check.pl:77
+msgid ""
+"This program comes with ABSOLUTELY NO WARRANTY. You are free to "
+"redistribute this code under the terms of the GNU General Public License, "
+"version 2 or later."
+msgstr ""
+"Für dieses Programm besteht KEINERLEI GARANTIE. Es ist Ihnen erlaubt, diesen "
+"Code unter den Bedingungen der GNU General Public License, Version 2 oder "
+"später, weitergeben."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:26
+msgid ""
+"mk-origtargz - rename upstream tarball, optionally changing the compression "
+"and removing unwanted files"
+msgstr ""
+"mk-origtargz - benennt den Tarball der Originalautoren um, ändert wahlweise "
+"die Komprimierung und entfernt unerwünschte Dateien."
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:32
+msgid "B<mk-origtargz> [I<options>] F<foo-1.0.tar.gz>"
+msgstr "B<mk-origtargz> [I<Optionen>] F<foo-1.0.tar.gz>"
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:34
+msgid "B<mk-origtargz> B<--help>"
+msgstr "B<mk-origtargz> B<--help>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:40
+msgid ""
+"B<mk-origtargz> renames the given file to match what is expected by B<dpkg-"
+"buildpackage>, based on the source package name and version in F<debian/"
+"changelog>. It can convert B<zip> to B<tar>, optionally change the "
+"compression scheme and remove files according to B<Files-Excluded> in "
+"F<debian/copyright>. The resulting file is placed in F<debian/../..>."
+msgstr ""
+"B<mk-origtargz> benennt die angegebene Datei auf Basis des Quellpaketnamens "
+"und der Version in F<debian/changelog> so um, dass sie den Anforderungen von "
+"B<dpkg-buildpackage> entspricht. Es kann B<zip> in B<tar> umwandeln, "
+"wahlweise das Komprimierungsverfahren ändern und Dateien entsprechend "
+"B<Files-Excluded> in F<debian/copyright> entfernen. Die daraus resultierende "
+"Datei wird in F<debian/../..> abgelegt."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:46
+msgid ""
+"If the package name is given via the B<--package> option, no information is "
+"read from F<debian/>, and the result file is placed in the current directory."
+msgstr ""
+"Falls der Paketname über die Option B<--package> angegeben wurde, werden "
+"keine Informationen aus F<debian/> gelesen und die resultierende Datei wird "
+"im aktuellen Verzeichnis abgelegt."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:49
+msgid ""
+"B<mk-origtargz> is commonly called via B<uscan>, which first obtains the "
+"upstream tarball."
+msgstr ""
+"B<mk-origtargz> wird üblicherweise über B<uscan> aufgerufen. Es erhält "
+"zuerst den Tarball der Originalautoren."
+
+#. type: =head2
+#: ../scripts/mk-origtargz.pl:54
+msgid "Metadata options"
+msgstr "Metadatenoptionen"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:56
+msgid ""
+"The following options extend or replace information taken from F<debian/>."
+msgstr ""
+"Die folgenden Optionen erweitern oder ersetzen die aus F<debian/> "
+"entnommenen Informationen."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:62
+msgid ""
+"Use I<package> as the name of the Debian source package, and do not require "
+"or use a F<debian/> directory. This option can only be used together with "
+"B<--version>."
+msgstr ""
+"benutzt I<Paket> als Namen des Debian-Quellpakets und erfordert oder "
+"verwendet daher nicht ein F<debian/>-Verzeichnis. Diese Option kann nur "
+"zusammen mit B<--version> benutzt werden."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:66
+msgid ""
+"The default is to use the package name of the first entry in F<debian/"
+"changelog>."
+msgstr ""
+"Standardmäßig wird der Paketname des ersten Eintrags in F<debian/changelog> "
+"verwendet."
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:68
+msgid "B<-v>, B<--version> I<version>"
+msgstr "B<-v>, B<--version> I<Version>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:70
+msgid ""
+"Use I<version> as the version of the package. This needs to be the upstream "
+"version portion of a full Debian version, i.e. no Debian revision, no epoch."
+msgstr ""
+"benutzt I<Version> als Version des Pakets. Dies muss der Teil einer "
+"vollständigen Debian-Version sein, der von den Originalautoren stammt, d.h. "
+"keine Debian-Revision, keine Epoche."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:72
+msgid ""
+"The default is to use the upstream portion of the version of the first entry "
+"in F<debian/changelog>."
+msgstr ""
+"Standardmäßig wird der Teil der Version von den Originalautoren des ersten "
+"Eintrags in F<debian/changelog> benutzt."
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:74
+msgid "B<--exclude-file> I<glob>"
+msgstr "B<--exclude-file> I<Glob>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:76
+msgid ""
+"Remove files matching the given I<glob> from the tarball, as if it was "
+"listed in B<Files-Excluded>."
+msgstr ""
+"entfernt Dateien, die zum angegebenen I<Glob> des Tarballs passen, als ob er "
+"in B<Files-Excluded> aufgeführt wäre."
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:79
+msgid "B<--copyright-file> I<filename>"
+msgstr "B<--copyright-file> I<Dateiname>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:81
+msgid ""
+"Remove files matching the patterns found in I<filename>, which should have "
+"the format of a Debian F<copyright> file (B<Format: https://www.debian.org/"
+"doc/packaging-manuals/copyright-format/1.0/> to be precise). Errors parsing "
+"that file are silently ignored, exactly as it is the case with F<debian/"
+"copyright>."
+msgstr ""
+"entfernt Dateien, die den in I<Dateiname> gefunden Mustern entsprechen. "
+"Diese sollten im Format einer Debian-F<Copyright>-Datei (genaugenommen "
+"B<Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/"
+">) vorliegen. Fehler beim Auswerten dieser Datei werden stillschweigend "
+"ignoriert, genau wie dies bei F<debian/copyright> der Fall ist."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:83
+msgid ""
+"Both the B<--exclude-file> and B<--copyright-file> options amend the list of "
+"patterns found in F<debian/copyright>. If you do not want to read that file, "
+"you will have to use B<--package>."
+msgstr ""
+"Sowohl die B<--exclude-file>- als auch B<--copyright-file>-Optionen ergänzen "
+"die Liste der in F<debian/copyright> gefundenen Muster. Falls Sie diese "
+"Datei nicht auslesen wollen, müssen Sie B<--package> verwenden."
+
+#. type: =head2
+#: ../scripts/mk-origtargz.pl:89
+msgid "Action options"
+msgstr "Aktionsoptionen"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:91
+msgid ""
+"These options specify what exactly B<mk-origtargz> should do. The options "
+"B<--copy>, B<--rename> and B<--symlink> are mutually exclusive."
+msgstr ""
+"Diese Optionen geben an, was genau B<mk-origtargz> tun soll. Die Optionen "
+"B<--copy>, B<--rename> und B<--symlink> schließen sich gegenseitig aus."
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:96 ../scripts/uscan.1:397
+#, no-wrap
+msgid "B<--symlink>"
+msgstr "B<--symlink>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:98
+msgid ""
+"Make the resulting file a symlink to the given original file. (This is the "
+"default behaviour.)"
+msgstr ""
+"liefert als Ergebnis einen symbolischen Verweis auf die Originaldatei. (Dies "
+"ist das Standardverhalten.)"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:101
+msgid ""
+"If the file has to be modified (because it is a B<zip> file, because of B<--"
+"repack> or B<Files-Excluded>), this option behaves like B<--copy>."
+msgstr ""
+"Falls die Datei verändert werden muss (da es aufgrund von B<--repack> oder "
+"B<Files-Excluded> eine B<Zip>-Datei ist), verhält sich diese Option wie B<--"
+"copy>."
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:104 ../scripts/uscan.1:402
+#, no-wrap
+msgid "B<--copy>"
+msgstr "B<--copy>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:106
+msgid ""
+"Make the resulting file a copy of the original file (unless it has to be "
+"modified, of course)."
+msgstr ""
+"liefert als Ergebnis eine Kopie der Originaldatei (natürlich nur, wenn sie "
+"nicht verändert werden muss)."
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:108 ../scripts/uscan.1:405
+#, no-wrap
+msgid "B<--rename>"
+msgstr "B<--rename>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:110
+msgid "Rename the original file."
+msgstr "benennt die Originaldatei um."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:112
+msgid ""
+"If the file has to be modified (because it is a B<zip> file, because of B<--"
+"repack> or B<Files-Excluded>), this implies that the original file is "
+"deleted afterwards."
+msgstr ""
+"Falls die Datei verändert werden muss (da es aufgrund von B<--repack> oder "
+"B<Files-Excluded> eine B<Zip>-Datei ist), impliziert dies, dass die "
+"Originaldatei hinterher gelöscht wird."
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:114 ../scripts/uscan.1:408
+#, no-wrap
+msgid "B<--repack>"
+msgstr "B<--repack>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:116
+msgid ""
+"If the given file is not compressed using the desired format (see B<--"
+"compression>), recompress it."
+msgstr ""
+"Falls die angegebene Datei nicht im gewünschten Format komprimiert vorliegt, "
+"(siehe B<--compression>) wird sie erneut komprimiert."
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:119
+msgid "B<-S>, B<--repack-suffix> I<suffix>"
+msgstr "B<-S>, B<--repack-suffix> I<Endung>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:121
+msgid ""
+"If the file has to be modified, because of B<Files-Excluded>, append "
+"I<suffix> to the upstream version."
+msgstr ""
+"Falls die Datei aufgrund von B<Files-Excluded> verändert werden muss, wird "
+"I<Endung> an die Version der Originalautoren angehängt."
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:123 ../scripts/uscan.1:414
+#, no-wrap
+msgid "B<--compression> [ B<gzip> | B<bzip2> | B<lzma> | B<xz> ]"
+msgstr "B<--compression> [ B<gzip> | B<bzip2> | B<lzma> | B<xz> ]"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:125
+msgid ""
+"If B<--repack> is used, or if the given file is a B<zip> file, ensure that "
+"the resulting file is compressed using the given scheme. The default is "
+"B<gzip>."
+msgstr ""
+"Falls B<--repack> benutzt wird oder die angegebene Datei eine B<Zip>-Datei "
+"ist, dann wird sichergestellt, dass die Datei im angegebenen Schema "
+"kompriert wird. Voreinstellung ist B<gzip>."
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:127
+msgid "B<-C>, B<--directory> I<directory>"
+msgstr "B<-C>, B<--directory> I<Verzeichnis>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:129
+msgid "Put the resulting file in the given directory."
+msgstr "legt die resultierende Datei im angegebenen Verzeichnis ab."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:145
+msgid "B<uscan>(1), B<uupdate>(1)"
+msgstr "B<uscan>(1), B<uupdate>(1)"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:149
+msgid ""
+"B<mk-origtargz> and this manpage have been written by Joachim Breitner "
+"<I<nomeata@debian.org>>."
+msgstr ""
+"B<mk-origtargz> und diese Handbuchseite wurden von Joachim Breitner "
+"<I<nomeata@debian.org>> geschrieben."
+
+#. type: textblock
+#: ../scripts/namecheck.pl:5
+msgid "namecheck - Check project names are not already taken."
+msgstr "namecheck - prüft, ob Projektnamen bereits vergeben sind"
+
+#. type: =head1
+#: ../scripts/namecheck.pl:7
+msgid "ABOUT"
+msgstr "ÜBER"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:9
+msgid ""
+"This is a simple tool to automate the testing of project names at the most "
+"common Open Source / Free Software hosting environments."
+msgstr ""
+"Dies ist ein einfaches Werkzeug, um die Prüfung von Projektnamen auf den "
+"gängigsten Open-Source-/Freie-Software-Hosting-Umgebungen zu automatisieren."
+
+#. type: textblock
+#: ../scripts/namecheck.pl:12
+msgid ""
+"Each new project requires a name, and those names are ideally unique. To "
+"come up with names is hard, and testing to ensure they're not already in use "
+"is time-consuming - unless you have a tool such as this one."
+msgstr ""
+"Jedes neue Projekt benötigt einen Namen und diese Namen sind idealerweise "
+"eindeutig. Es ist schwierig, sich Namen auszudenken und sie zu prüfen, um "
+"sicherzustellen, dass sie nicht bereits verwendet werden, kostet Zeit – es "
+"sei denn, Sie haben ein Werkzeug wie dieses."
+
+#. type: =head1
+#: ../scripts/namecheck.pl:16
+msgid "CUSTOMIZATION"
+msgstr "ANPASSUNG"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:18
+msgid ""
+"The script, as is, contains a list of sites, and patterns, to test against."
+msgstr ""
+"Das Skript enthält, wie es ist, eine Liste von Seiten und Mustern, gegen die "
+"getestet wird."
+
+#. type: textblock
+#: ../scripts/namecheck.pl:20
+msgid ""
+"If those patterns aren't sufficient then you may create your own additions "
+"and add them to the script. If you wish to have your own version of the "
+"patterns you may save them into the file ~/.namecheckrc"
+msgstr ""
+"Falls diese Muster nicht ausreichen, können Sie Ihre eigenen Zusätze "
+"erstellen und sie dann dem Skript hinzufügen. Falls Sie Ihre eigene Version "
+"der Muster wünschen, können Sie sie in der Datei ~/.namecheckrc speichern."
+
+#. type: =head1
+#: ../scripts/namecheck.pl:24
+msgid "HOMEPAGE"
+msgstr "HOMEPAGE"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:26
+msgid "The most recent version of this script may be found here:"
+msgstr "Die aktuellste Version dieses Skripts kann hier gefunden werden:"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:28
+msgid "http://mybin.repository.steve.org.uk/?raw-file/tip/namecheck"
+msgstr "http://mybin.repository.steve.org.uk/?raw-file/tip/namecheck"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:32
+msgid "Steve -- http://www.steve.org.uk/"
+msgstr "Steve -- http://www.steve.org.uk/"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:38
+msgid "Copyright (c) 2008 by Steve Kemp. All rights reserved."
+msgstr "Copyright (c) 2008 von Steve Kemp. Alle Rechte vorbehalten."
+
+#. type: textblock
+#: ../scripts/namecheck.pl:40
+msgid ""
+"This module is free software; you can redistribute it and/or modify it under "
+"the same terms as Perl itself."
+msgstr ""
+"Dieses Modul ist freie Software; Sie können es unter den gleichen "
+"Bedingungen wie Perl selbst weiterverteilen und/oder ändern."
+
+#. type: TH
+#: ../scripts/nmudiff.1:1
+#, no-wrap
+msgid "NMUDIFF"
+msgstr "NMUDIFF"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:4
+msgid "nmudiff - email an NMU diff to the Debian BTS"
+msgstr ""
+"nmudiff - versendet ein NMU-Diff per E-Mail an die Debian-Fehlerdatenbank"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:6
+msgid "B<nmudiff> [I<options>]"
+msgstr "B<nmudiff> [I<Optionen>]"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:16
+msgid ""
+"B<nmudiff> should be run in the source tree of the package being NMUed, "
+"after the NMU is built. It assumes that the source packages (specifically, "
+"the I<.dsc> and any corresponding I<tar> and I<diff> files) for both the "
+"previous version of the package and the newly built NMU version are in the "
+"parent directory. It then uses B<debdiff> to generate a diff between the "
+"previous version and the current NMU, and either runs mutt or an editor "
+"(using B<sensible-editor>) so that the mail message (including the diff) can "
+"be examined and modified; once you exit the editor the diff will be mailed "
+"to the Debian BTS."
+msgstr ""
+"B<nmudiff> sollte im Quellverzeichnisbaum des Pakets ausgeführt werden, von "
+"dem ein NMU durchgeführt wird, nachdem es gebaut wurde. Es geht davon aus, "
+"dass das Quellpaket (speziell die I<.dsc>-Datei und alle zugehörigen I<tar>- "
+"und I<diff>-Dateien) sowohl für die vorherige Version des Pakets als auch "
+"für die neu gebaute Version im übergeordneten Verzeichnis liegt. Dann "
+"benutzt es B<debdiff>, um ein Diff zwischen der vorherigen Version und dem "
+"aktuellen NMU zu erstellen und führt entweder Mutt oder einen Editor aus (es "
+"wird B<sensible-editor> verwendet), so dass die E-Mail (einschließlich des "
+"Diffs) untersucht und geändert werden kann. Sobald Sie den Editor schließen, "
+"wird das Diff per E-Mail an die Debian-Fehlerdatenbank gesandt."
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:21
+msgid ""
+"The default behaviour is that if exactly one bug is closed by this NMU, then "
+"that bug will be mailed, otherwise a new bug will be submitted. This "
+"behaviour may be changed by command line options and configuration file "
+"options."
+msgstr ""
+"Das Standardverhalten ist, falls genau ein Fehler durch diesen NMU "
+"geschlossen wird, dass eine E-Mails an den Fehler versandt wird, andernfalls "
+"wird ein neuer Fehlerbericht eingereicht. Dieses Verhalten kann durch "
+"Befehlszeilen- und Konfigurationsdateioptionen geändert werden."
+
+#. type: TP
+#: ../scripts/nmudiff.1:22
+#, no-wrap
+msgid "B<--new>"
+msgstr "B<--new>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:26
+msgid ""
+"Instead of mailing the bug reports which are to be closed by this NMU, a new "
+"bug report is submitted directly to the BTS."
+msgstr ""
+"Anstatt E-Mails an die Fehlerberichte zu versenden, die durch diesen NMU "
+"geschlossen wurden, wird ein neuer Fehlerbericht direkt an die "
+"Fehlerdatenbank eingereicht."
+
+#. type: TP
+#: ../scripts/nmudiff.1:26
+#, no-wrap
+msgid "B<--old>"
+msgstr "B<--old>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:31
+msgid ""
+"Send the bug report to all of the bugs which are being closed by this NMU, "
+"rather than opening a new bug report. This option has no effect if no bugs "
+"are being closed by this NMU."
+msgstr ""
+"sendet den Fehlerbericht an alle Fehler, die durch diesen NMU geschlossen "
+"werden, anstatt einen neuen Fehlerbericht zu öffnen. Diese Option hat keine "
+"Auswirkungen, falls durch diesen NMU keine Fehlerberichte geschlossen werden."
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:36
+msgid ""
+"Use B<mutt>(1) for editing and sending the message to the BTS (default "
+"behaviour). This can be controlled using a configuration file option (see "
+"below)."
+msgstr ""
+"verwendet B<mutt>(1) zum Bearbeiten und Versenden der Nachricht an die "
+"Fehlerdatenbank (Standardverhalten). Dies kann mittels einer "
+"Konfigurationsdateioption geregelt werden (siehe unten)."
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:41
+msgid ""
+"Use B<sensible-editor>(1) to edit the message and then mail it directly "
+"using I</usr/bin/sendmail>. This can be controlled using a configuration "
+"file option (see below)."
+msgstr ""
+"benutzt B<sensible-editor>(1), um die Nachricht zu bearbeiten und versendet "
+"sie per E-Mail mittels I</usr/bin/sendmail>. Dies kann über eine "
+"Konfigurationsdateioption geregelt werden (siehe unten)."
+
+#. type: TP
+#: ../scripts/nmudiff.1:41
+#, no-wrap
+msgid "B<--sendmail> I<SENDMAILCMD>"
+msgstr "B<--sendmail> I<SENDMAIL-BEFEHL>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:51
+msgid ""
+"Specify the B<sendmail> command. The command will be split on white space "
+"and will be interpreted by the shell. Default is I</usr/sbin/sendmail>. "
+"The B<-t> option will be automatically added if the command is I</usr/sbin/"
+"sendmail> or I</usr/sbin/exim*>. For other mailers, if they require a B<-t> "
+"option, this must be included in the I<SENDMAILCMD>, for example: B<--"
+"sendmail=\"/usr/sbin/mymailer -t\">. This can also be set using the "
+"devscripts configuration files; see below."
+msgstr ""
+"gibt den B<sendmail>-Befehl an. Der Befehl wird bei Leerräumen getrennt und "
+"durch die Shell interpretiert. Vorgabe ist I</usr/sbin/sendmail>. Falls der "
+"Befehl I</usr/sbin/sendmail> oder I</usr/sbin/exim*> ist, wird die Option B<-"
+"t> automatisch hinzugefügt. Für andere Mailprogramme muss dies in den "
+"I<SENDMAIL-BEFEHL> eingefügt werden, wenn Sie eine B<-t>-Option benötigen, "
+"zum Beispiel: B<--sendmail=\"/usr/sbin/mymailer -t\">. Dies kann auch "
+"mittels der Devscripts-Konfigurationsdateien gesetzt werden; siehe unten."
+
+#. type: TP
+#: ../scripts/nmudiff.1:51
+#, no-wrap
+msgid "B<--from> I<EMAIL>"
+msgstr "B<--from> I<E-MAIL>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:59
+msgid ""
+"If using the B<sendmail> (B<--no-mutt>) option, then the email to the BTS "
+"will be sent using the name and address in the environment variables "
+"B<DEBEMAIL> and B<DEBFULLNAME>. If these are not set, then the variables "
+"B<EMAIL> and B<NAME> will be used instead. These can be overridden using "
+"the B<--from> option. The program will not work in this case if an email "
+"address cannot be determined."
+msgstr ""
+"Falls die B<sendmail>-Option (B<--no-mutt>) benutzt wird, dann werden für "
+"die E-Mail an die Fehlerdatenbank die Umgebungsvariablen B<DEBEMAIL> und "
+"B<DEBFULLNAME> verwendet. Falls diese nicht gesetzt sind, werden stattdessen "
+"die Variablen B<EMAIL> und B<NAME> benutzt. Diese können mittels der Option "
+"B<--from> außer Kraft gesetzt werden. Das Programm wird in diesem Fall nicht "
+"funktionieren, falls eine E-Mail-Adresse nicht bestimmt werden kann."
+
+#. type: TP
+#: ../scripts/nmudiff.1:59
+#, no-wrap
+msgid "B<--delay> I<DELAY>"
+msgstr "B<--delay> I<VERZÖGERUNG>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:66
+msgid ""
+"Indicate in the generated mail that the NMU has been uploaded to the DELAYED "
+"queue, with a delay of I<DELAY> days. The default value is I<XX> which adds "
+"a placeholder to the e-mail. A value of B<0> indicates that the upload has "
+"not been sent to a delayed queue. This can also be set using the devscripts "
+"configuration files; see below."
+msgstr ""
+"gibt in der erzeugten E-Mail an, dass der NMU in die DELAYED-Warteschlange "
+"mit einer Verzögerung von I<VERZÖGERUNG> Tagen hochgeladen wurde. Der "
+"Vorgabewert ist I<XX>, wodurch der E-Mail ein Platzhalter hinzugefügt wird. "
+"Ein Wert von B<0> gibt an, dass nichts an eine Warteschlange hochgeladen "
+"wurde. Dies kann auch mittels der Devscripts-Konfigurationsdateien gesetzt "
+"werden; siehe unten."
+
+#. type: TP
+#: ../scripts/nmudiff.1:66
+#, no-wrap
+msgid "B<--no-delay>, B<--nodelay>"
+msgstr "B<--no-delay>, B<--nodelay>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:69
+msgid "Equivalent to B<--delay 0>."
+msgstr "entspricht B<--delay 0>."
+
+#. type: TP
+#: ../scripts/nmudiff.1:85
+#, no-wrap
+msgid "B<NMUDIFF_DELAY>"
+msgstr "B<NMUDIFF_DELAY>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:91
+msgid ""
+"If this is set to a number, e-mails generated by B<nmudiff> will by default "
+"mention an upload to the DELAYED queue, delayed for the specified number of "
+"days. The value B<0> indicates that the DELAYED queue has not been used."
+msgstr ""
+"Falls dies auf eine Zahl gesetzt ist, werden E-Mails, die durch B<nmudiff> "
+"erzeugt wurden, standardmäßig ein Hochladen in die DELAYED-Warteschlange "
+"vermerken, die für die angegebene Zahl von Tagen verzögert. Der Wert B<0> "
+"gibt an, dass die DELAYED-Warteschlange nicht benutzt wurde."
+
+#. type: TP
+#: ../scripts/nmudiff.1:91
+#, no-wrap
+msgid "B<NMUDIFF_MUTT>"
+msgstr "B<NMUDIFF_MUTT>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:96
+msgid ""
+"Can be I<yes> (default) or I<no>, and specifies whether to use B<mutt> to "
+"compose and send the message or not, as described above."
+msgstr ""
+"kann I<yes> (Vorgabe) oder I<no> sein und gibt wie oben beschrieben an, ob "
+"B<mutt> zum Verfassen und Senden der Nachricht verwendet wird oder nicht."
+
+#. type: TP
+#: ../scripts/nmudiff.1:96
+#, no-wrap
+msgid "B<NMUDIFF_NEWREPORT>"
+msgstr "B<NMUDIFF_NEWREPORT>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:104
+msgid ""
+"This option controls whether a new bug report is made, or whether the diff "
+"is sent to the bugs closed by this NMU. Can be I<maybe> (default), which "
+"sends to the existing bug reports if exactly one bug is being closed; "
+"I<yes>, which always creates a new report, or I<no>, which always sends to "
+"the reports of the bugs being closed (unless no bugs are being closed, in "
+"which case a new report is always made)."
+msgstr ""
+"Diese Option steuert, ob ein neuer Fehlerbericht erstellt wird oder ob das "
+"Diff an die durch diesen NMU geschlossenen Fehler geschickt wird. Dies kann "
+"I<maybe> sein (Vorgabe), wodurch an die existierenden Fehlerberichte gesandt "
+"wird, falls nur ein Fehler geschlossen wird, I<yes>, wodurch immer ein neuer "
+"Fehlerbericht erstellt wird oder I<no> wodurch immer an die Berichte der "
+"Fehler gesandt wird, die geschlossen werden (außer wenn keine Fehler "
+"geschlossen werden, in diesem Fall wird immer ein neuer Fehlerbericht "
+"erstellt)."
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:108
+msgid ""
+"If this is set, specifies a B<sendmail> command to use instead of I</usr/"
+"sbin/sendmail>. Same as the B<--sendmail> command line option."
+msgstr ""
+"Falls dies gesetzt ist, gibt es einen B<sendmail>-Befehl an, anstatt I</usr/"
+"sbin/sendmail> zu benutzen. Entspricht der Befehlszeilenoption B<--sendmail>."
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:112
+msgid "B<debdiff>(1), B<sensible-editor>(1), B<devscripts.conf>(5)"
+msgstr "B<debdiff>(1), B<sensible-editor>(1) und B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:116
+msgid ""
+"B<nmudiff> was written and is copyright 2006 by Steinar H. Gunderson and "
+"modified by Julian Gilbey E<lt>jdg@debian.orgE<gt>. The software may be "
+"freely redistributed under the terms and conditions of the GNU General "
+"Public License, version 2."
+msgstr ""
+"B<nmudiff> wurde geschrieben und unterliegt dem Copyright 2006 von Steinar "
+"H. Gunderson und wurde von Julian Gilbey E<lt>jdg@debian.orgE<gt> angepasst. "
+"Die Software kann frei unter den Bedingungen und Bestimmungen der GNU "
+"General Public License, Version 2, weitergegeben werden."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:22
+msgid ""
+"origtargz - fetch the orig tarball of a Debian package from various sources, "
+"and unpack it"
+msgstr ""
+"origtargz - ruft den Original-Tarball eines Debian-Pakets aus verschiedenen "
+"Quellen ab und entpackt ihn."
+
+#. type: =item
+#: ../scripts/origtargz.pl:28
+msgid "B<origtargz> [I<OPTIONS>] [B<--unpack>[=B<no>|B<once>|B<yes>]]"
+msgstr "B<origtargz> [I<OPTIONEN>] [B<--unpack>[=B<no>|B<once>|B<yes>]]"
+
+#. type: =item
+#: ../scripts/origtargz.pl:30
+msgid "B<origtargz> B<--help>"
+msgstr "B<origtargz> B<--help>"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:36
+msgid ""
+"B<origtargz> downloads the orig tarball of a Debian package, and optionally "
+"unpacks it into the current directory. The version number to be used is "
+"determined from F<debian/changelog>. The main use for B<origtargz> is with "
+"debian-dir-only repository checkouts. It should be invoked from the top "
+"level directory of an unpacked Debian source package."
+msgstr ""
+"B<origtargz> lädt den Original-Tarball eines Debian-Pakets herunter und "
+"entpackt ihn optional in das aktuelle Verzeichnis. Die Versionsnummer, die "
+"benutzt werden soll, wird von F<debian/changelog> bestimmt. B<origtargz> "
+"wird hauptsächlich beim Auschecken von reinen Debian-Verzeichnissen benutzt. "
+"Es sollte von der obersten Verzeichnisebene eines entpackten Debian-"
+"Quellpakets aufgerufen werden."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:42
+msgid "Various download locations are tried:"
+msgstr "Es werden verschiedene Speicherorte zum Herunterladen ausprobiert:"
+
+#. type: =item
+#: ../scripts/origtargz.pl:46 ../scripts/origtargz.pl:50
+#: ../scripts/origtargz.pl:54 ../scripts/origtargz.pl:58
+#: ../scripts/origtargz.pl:62
+msgid "*"
+msgstr "*"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:48
+msgid "First, an existing file is looked for."
+msgstr "Zuerst wird nach einer existierenden Datei gesucht."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:52
+msgid "Directories given with B<--path> are searched."
+msgstr "Es werden mit B<--path> angegebene Verzeichnisse durchsucht."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:56
+msgid "B<pristine-tar> is tried."
+msgstr "B<pristine-tar> wird probiert."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:60
+msgid ""
+"B<apt-get source> is tried when B<apt-cache showsrc> reports a matching "
+"version."
+msgstr ""
+"Wenn B<apt-cache showsrc> eine passende Version meldet, wird B<apt-get "
+"source> probiert."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:64
+msgid "Finally, B<uscan --download-current-version> is tried."
+msgstr "Am Ende wird B<--download-current-version> versucht."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:68
+msgid ""
+"When asked to unpack the orig tarball, B<origtargz> will remove all files "
+"and directories from the current directory, except the debian directory, and "
+"the VCS repository directories. Some files outside F<debian/> which are "
+"often stored in VCS even for debian-dir-only repositories are also preserved "
+"(F<.bzr-builddeb>, F<.gitignore>, F<.hgignore>). I<Note that this will drop "
+"all non-committed changes> for the patch system in use (e.g. source format "
+"\"3.0 (quilt)\"), and will even remove all patches from the package when no "
+"patch system is in use (the original \"1.0\" source format)."
+msgstr ""
+"Wenn B<origtargz> den Original-Tarball entpacken soll, wird es alle Dateien "
+"und Verzeichnisse außer dem Debian-Verzeichnis und den VCS-"
+"Depotverzeichnissen aus dem aktuellen Verzeichnis entfernen. Einige Dateien "
+"außerhalb von F<debian/>, die oft im VCS gespeichert werden, auch für Depots "
+"aus reinen Debian-Verzeichnissen, werden ebenso aufbewahrt (F<.bzr-"
+"builddeb>, F<.gitignore>, F<.hgignore>). I<Beachten Sie, dass dadurch alle "
+"nicht übergebenen Änderungen> für das benutzte Patch-System (z.B. "
+"Quellformat »3.0 (quilt)«) I<verworfen werden>. Wenn kein Patch-System "
+"benutzt wird (das Originalquellformat »1.0«), werden sogar alle Patches des "
+"Pakets entfernt ."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:77
+msgid ""
+"The default behavior is to unpack the orig tarball on the first invocation "
+"of B<origtargz> in a debian-dir-only checkout."
+msgstr ""
+"Standardverhalten ist es, den Original-Tarball beim ersten Aufruf von "
+"B<origtargz> beim Auschecken eines reinen Debian-Verzeichnisses zu entpacken."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:82
+msgid ""
+"Despite B<origtargz> being called \"targz\", it will work with any "
+"compression scheme used for the tarball."
+msgstr ""
+"Obwohl B<origtargz> »targz« heißt, funktioniert es mit jedem für den Tarball "
+"benutzten Komprimierungsverfahren."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:85
+msgid ""
+"A similar tool to unpack orig tarballs is B<uupdate>(1). B<uupdate> creates "
+"a new working directory, unpacks the tarball, and applies the Debian F<.diff."
+"gz> changes. In contrast, B<origtargz> uses the current directory, keeping "
+"VCS metadata."
+msgstr ""
+"Ein ähnliches Werkzeug zum Entpacken von Tarballs ist B<uupdate>(1). "
+"B<uupdate> erstellt ein neues Arbeitsverzeichnis, entpackt den Tarball und "
+"wendet die Debian-F<.diff.gz>-Änderungen an. Demgegenüber benutzt "
+"B<origtargz> das aktuelle Verzeichnis und behält die VCS-Metadaten bei."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:90
+msgid ""
+"For Debian package repositories that keep the full upstream source, other "
+"tools should be used to upgrade the repository from the new tarball. See "
+"B<git-import-orig>(1) and B<svn-upgrade>(1) for examples. B<origtargz> is "
+"still useful for downloading the current tarball."
+msgstr ""
+"Für Debian-Paketdepots, die die ganze Ursprungsquelle beibehalten, sollten "
+"andere Werkzeuge benutzt werden, um ein Upgrade des Depots von dem neuen "
+"Tarball durchzuführen. Siehe zum Beispiel B<git-import-orig>(1) und B<svn-"
+"upgrade>(1). B<origtargz> ist immer noch zum Herunterladen des aktuellen "
+"Tarballs nützlich."
+
+#. type: =item
+#: ../scripts/origtargz.pl:99
+msgid "B<-p>, B<--path> I<directory>"
+msgstr "B<-p>, B<--path> I<Verzeichnis>"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:101
+msgid ""
+"Add I<directory> to the list of locations to search for an existing "
+"tarball. When found, a hardlink is created if possible, otherwise a symlink."
+msgstr ""
+"fügt I<Verzeichnis> der Liste von Orten hinzu, an denen nach einem "
+"existierenden Tarball gesucht wird. Wenn er gefunden wird, wird nach "
+"Möglichkeit ein harter, andernfalls ein symbolischer Verweis erzeugt."
+
+#. type: =item
+#: ../scripts/origtargz.pl:104
+msgid "B<-u>, B<--unpack>[=B<no>|B<once>|B<yes>]"
+msgstr "B<-u>, B<--unpack>[=B<no>|B<once>|B<yes>]"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:106
+msgid ""
+"Unpack the downloaded orig tarball to the current directory, replacing "
+"everything except the debian directory. Existing files are removed, except "
+"for F<debian/> and VCS files. Preserved are: F<.bzr>, F<.bzrignore>, F<.bzr-"
+"builddeb>, F<.git>, F<.gitignore>, F<.hg>, F<.hgignore>, F<_darcs> and F<."
+"svn>."
+msgstr ""
+"entpackt den heruntergeladenen Original-Tarball in das aktuelle Verzeichnis "
+"und ersetzt alles außer dem Debian-Verzeichnis. Existierende Dateien werden "
+"entfernt, mit Ausnahme der F<debian/> und VCS-Dateien. Aufbewahrt werden: F<."
+"bzr>, F<.bzrignore>, F<.bzr-builddeb>, F<.git>, F<.gitignore>, F<.hg>, F<."
+"hgignore>, F<_darcs> und F<.svn>."
+
+#. type: =item
+#: ../scripts/origtargz.pl:114
+msgid "B<no>"
+msgstr "B<no>"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:116
+msgid "Do not unpack the orig tarball."
+msgstr "entpackt nicht den Original-Tarball."
+
+#. type: =item
+#: ../scripts/origtargz.pl:118
+msgid "B<once> (default when B<--unpack> is not used)"
+msgstr "B<once> (Vorgabe, wenn nicht B<--unpack> benutzt wird)"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:120
+msgid ""
+"If the current directory contains only a F<debian> directory (and possibly "
+"some dotfiles), unpack the orig tarball. This is the default behavior."
+msgstr ""
+"Falls das aktuelle Verzeichnis nur ein F<debian>-Verzeichnis (und "
+"möglicherweise ein paar Dateien, deren Name mit Punkt beginnt) enthält, wird "
+"der Original-Tarball entpackt. Dies ist das Standardverhalten."
+
+#. type: =item
+#: ../scripts/origtargz.pl:123
+msgid "B<yes> (default for B<--unpack> without argument)"
+msgstr "B<yes> (Vorgabe für B<--unpack> ohne Argument)"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:125
+msgid "Always unpack the orig tarball."
+msgstr "entpackt immer den Original-Tarball."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:131
+msgid "Alias for B<--unpack=no>."
+msgstr "Alias für B<--unpack=no>"
+
+#. type: =item
+#: ../scripts/origtargz.pl:133
+msgid "B<-t>, B<--tar-only>"
+msgstr "B<-t>, B<--tar-only>"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:135
+msgid ""
+"When using B<apt-get source>, pass B<--tar-only> to it. The default is to "
+"download the full source package including F<.dsc> and F<.diff.gz> or F<."
+"debian.tar.gz> components so B<debdiff> can be used to diff the last upload "
+"to the next one. With B<--tar-only>, only download the F<.orig.tar.*> file."
+msgstr ""
+"Wenn B<apt-get source> benutzt wird, wird B<--tar-only> daran übergeben. "
+"Standardmäßig wird die vollständige Quelle einschließlich der F<.dsc>- und "
+"F<.diff.gz>- oder F<.debian.tar.gz>-Bestandteile heruntergeladen. Daher kann "
+"B<debdiff> verwendet werden, um den Unterschied zwischen dem letzten Upload "
+"und dem nächsten zu ermitteln. Mit B<--tar-only> wird nur die F<.orig.tar.*>-"
+"Datei heruntergeladen."
+
+#. type: =item
+#: ../scripts/origtargz.pl:140
+msgid "B<--clean>"
+msgstr "B<--clean>"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:142
+msgid ""
+"Remove existing files as with B<--unpack>. Note that like B<--unpack>, this "
+"will remove upstream files even if they are stored in VCS."
+msgstr ""
+"entfernt existierende Dateien wie bei B<--unpack>. Beachten Sie, dass dies "
+"wie B<--unpack> die Ursprungsdateien auch dann entfernt, wenn sie im VCS "
+"gespeichert sind."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:159
+msgid ""
+"B<debcheckout>(1), B<git-import-orig>(1), B<pristine-tar>(1), B<svn-"
+"upgrade>(1), B<uupdate>(1)"
+msgstr ""
+"B<debcheckout>(1), B<git-import-orig>(1), B<pristine-tar>(1), B<svn-"
+"upgrade>(1), B<uupdate>(1)"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:163
+msgid ""
+"B<origtargz> and this manpage have been written by Christoph Berg "
+"<I<myon@debian.org>>."
+msgstr ""
+"B<origtargz> und diese Handbuchseite wurden von Christoph Berg "
+"<I<myon@debian.org>> geschrieben."
+
+#. type: TH
+#: ../scripts/plotchangelog.1:1
+#, no-wrap
+msgid "PLOTCHANGELOG"
+msgstr "PLOTCHANGELOG"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:4
+msgid "plotchangelog - graph Debian changelogs"
+msgstr "plotchangelog - zeichnet Debian-Changelogs"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:7
+msgid "B<plotchangelog> [I<options>]I< changelog >..."
+msgstr "B<plotchangelog> [I<Optionen>]I< Changelog > …"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:17
+msgid ""
+"B<plotchangelog> is a tool to aid in visualizing a Debian I<changelog>. The "
+"changelogs are graphed with B<gnuplot>(1) , with the X axis of the graph "
+"denoting time of release and the Y axis denoting the Debian version number "
+"of the package. Each individual release of the package is represented by a "
+"point, and the points are color coded to indicate who released that version "
+"of the package. The upstream version number of the package can also be "
+"labeled on the graph."
+msgstr ""
+"B<plotchangelog> ist ein Werkzeug, das hilft, ein Debian-I<Changelog> zu "
+"veranschaulichen. Die Changelogs werden durch B<gnuplot>(1) gezeichnet, "
+"wobei die X-Achse des Graphs die Zeit der Veröffentlichung des Pakets und "
+"die Y-Achse die Debian-Versionsnummer des Pakets anzeigt. Jede einzelne "
+"Veröffentlichung des Pakets wird durch einen Punkt dargestellt und die "
+"Punkte werden farbig kodiert, um anzuzeigen, wer diese Version des Pakets "
+"veröffentlichte. Der Graph kann ebenfalls mit der Versionsnummer der "
+"Originalautoren des Pakets beschriftet werden."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:21
+msgid ""
+"Alternatively, the Y axis can be configured to display the size of the "
+"changelog entry for each new version. Or it can be configured to display "
+"approximately how many bugs were fixed for each new version."
+msgstr ""
+"Alternativ kann die Y-Achse konfiguriert werden, um die Größe der Changelog-"
+"Einträge für jede neue Version anzuzeigen. Oder sie kann konfiguriert "
+"werden, um anzuzeigen, wieviele Fehler schätzungsweise für jede neue Version "
+"behoben wurden."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:24
+msgid ""
+"Note that if the package is a Debian-specific package, the entire package "
+"version will be used for the Y axis. This does not always work perfectly."
+msgstr ""
+"Beachten Sie, falls das Paket Debian-spezifisch ist, dass die ganze "
+"Paketversion für die Y-Achse verwendet wird. Dies funktioniert nicht immer "
+"perfekt."
+
+#. type: SH
+#: ../scripts/plotchangelog.1:25
+#, no-wrap
+msgid "READING THE GRAPH"
+msgstr "DEN GRAPH LESEN"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:33
+msgid ""
+"The general outline of a package's graph is typically a series of peaks, "
+"starting at 1, going up to n, and then returning abruptly to 1. The higher "
+"the peaks, the more releases the maintainer made between new upstream "
+"versions of the package. If a package is Debian-only, it's graph will just "
+"grow upwards without ever falling (although a bug in this program may cause "
+"it to fall sometimes, if the version number goes from say, 0.9 to say, 0.10 "
+"- this is interpreted wrong...)"
+msgstr ""
+"Die allgemeine Kontur eines Paket-Graphen ist typischerweise eine Serie von "
+"Spitzen, beginnend bei 1, steigend bis n und dann abrupt zu 1 zurückkehrend. "
+"Je höher die Höchstwerte, um so mehr Veröffentlichungen brachte der "
+"Paketbetreuer zwischen den neuen Paketversionen der Ursprungsautoren heraus. "
+"Falls es sich um ein reines Debian-Paket handelt, wird sein Graph nur nach "
+"oben wachsen ohne irgendwann abzufallen (allerdings kann ihn ein Fehler in "
+"diesem Programm manchmal zum Fallen veranlassen, falls sich die "
+"Versionsnummer von zum Beispiel 0.9 auf zum Beispiel 0.10 ändert – dies wird "
+"falsch interpretiert …)"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:40
+msgid ""
+"If the graph dips below 1, someone made a NMU of the package and upgraded it "
+"to a new upstream version, thus setting the Debian version to 0. NMU's in "
+"general appear as fractional points like 1.1, 2.1, etc. A NMU can also be "
+"easily detected by looking at the points that represent which maintainer "
+"uploaded the package -- a solitary point of a different type than the points "
+"before and after it is typically a NMU."
+msgstr ""
+"Falls der Graph unter 1 sinkt, hat jemand ein NMU des Pakets und ein Upgrade "
+"auf eine neue Version der Ursprungsautoren durchgeführt, dadurch wird die "
+"Debian-Version auf 0 gesetzt. NMUs erscheinen im Allgemeinen als Unterpunkte "
+"wie 1.1, 2.1, etc. Ein NMU kann außerdem einfach festgestellt werden, indem "
+"die Punkte betrachtet werden, die für den Paketbetreuer stehen, der das "
+"Paket hochgeladen hat – ein einzelner Punkt eines anderen Typs, als der der "
+"Punkte davor und dahinter ist normalerweise ein NMU."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:43
+msgid ""
+"It's also easy to tell by looking at the points when a package changes "
+"maintainers."
+msgstr ""
+"Es ist außerdem einfach, durch Ansehen der Punkte zu sagen, wann sich "
+"Betreuer eines Pakets ändern."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:44
+#, no-wrap
+msgid "B<-l>, B<--linecount>"
+msgstr "B<-l>, B<--linecount>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:50
+msgid ""
+"Instead of using the Debian version number as the Y axis, use the number of "
+"lines in the changelog entry for each version. Cannot be used together with "
+"B<--bugcount>."
+msgstr ""
+"nimmt statt der Debian-Versionsnummer als Y-Achse die Anzahl der Zeilen im "
+"Changelog-Eintrag für jede Version. Dies kann nicht zusammen mit B<--"
+"bugcount> verwendet werden."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:50
+#, no-wrap
+msgid "B<-b>, B<--bugcount>"
+msgstr "B<-b>, B<--bugcount>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:57
+msgid ""
+"Instead of using the Debian version number as the Y axis, use the number of "
+"bugs that were closed by each changelog entry. Note that this number is "
+"obtained by searching for \"#dddd\" in the changelog, and so it may be "
+"inaccurate. Cannot be used together with B<--linecount>."
+msgstr ""
+"nimmt statt der Debian-Versionsnummer als Y-Achse die Anzahl der Fehler, die "
+"durch jeden Changelog-Eintrag geschlossen wurden. Beachten Sie, dass diese "
+"Zahl durch eine Suche nach »#dddd« im Changelog abgefragt wurde und daher "
+"ungenau sein kann. Dies kann nicht zusammen mit B<--linecount> verwendet "
+"werden."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:57
+#, no-wrap
+msgid "B<-c>, B<--cumulative>"
+msgstr "B<-c>, B<--cumulative>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:65
+msgid ""
+"When used together with either B<--bugcount> or B<--linecount>, graphs the "
+"cumulative count rather than the count in each individual changelog entry."
+msgstr ""
+"zeichnet, wenn es zusammen mit B<--bugcount> oder B<--linecount> benutzt "
+"wird, die Gesamtzahl statt der Anzahl in jedem einzelnen Changelog-Eintrag."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:65
+#, no-wrap
+msgid "B<-v>, B<--no-version>"
+msgstr "B<-v>, B<--no-version>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:68
+msgid ""
+"Do not show upstream version labels. Useful if the graph gets too crowded."
+msgstr ""
+"zeigt nicht die Versionsbezeichnungen der Ursprungsautoren. Dies ist "
+"nützlich, falls der Graph zu voll wird."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:68
+#, no-wrap
+msgid "B<-m, --no-maint>"
+msgstr "B<-m, --no-maint>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:71
+msgid "Do not differentiate between different maintainers of the package."
+msgstr "unterscheidet nicht zwischen verschiedenen Betreuern des Pakets."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:71
+#, no-wrap
+msgid "B<-s file>, B<--save=>I<file>"
+msgstr "B<-s Datei>, B<--save=>I<Datei>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:75
+msgid ""
+"Save the graph to I<file> in PostScript format instead of immediately "
+"displaying it."
+msgstr ""
+"speichert den Graph im PostScript-Format in I<Datei>, statt sie direkt "
+"anzuzeigen."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:75
+#, no-wrap
+msgid "B<-u>, B<--urgency>"
+msgstr "B<-u>, B<--urgency>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:78
+msgid "Use larger points when displaying higher-urgency package uploads."
+msgstr ""
+"benutzt größere Punkte, wenn Pakete mit höherer Dringlichkeit beim Hochladen "
+"angezeigt werden."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:81
+msgid ""
+"Output the gnuplot script that is fed into gnuplot (for debugging purposes)."
+msgstr ""
+"gibt (zu Fehlersuchzwecken) das Gnuplot-Skript aus, das in Gnuplot "
+"eingespeist wird."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:81
+#, no-wrap
+msgid "B<-g>I<commands>, B<--gnuplot=>I<commands>"
+msgstr "B<-g>I<Befehle>, B<--gnuplot=>I<Befehle>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:92
+msgid ""
+"This allows you to insert B<gnuplot>(1) commands into the gnuplot script "
+"that is used to generate the graph. The commands are placed after all "
+"initialization but before the final B<plot> command. This can be used to "
+"override the default look provided by this program in arbitrary ways. You "
+"can also use things like \"set terminal png color\" to change the output "
+"file type, which is useful in conjunction with the -s option."
+msgstr ""
+"Dies ermöglicht Ihnen, B<gnuplot>(1)-Befehle in das Gnuplot-Skript "
+"einzufügen, das benutzt wird, um den Graph zu erzeugen. Die Befehle werden "
+"nach allen Initialisierungen aber bevor dem abschließenden Befehl B<plot> "
+"platziert. Dies kann verwendet werden, um das durch dieses Programm "
+"vorgegebenes Aussehen auf beliebige Weise außer Kraft zu setzen. Sie können "
+"auch Dinge wie »set terminal png color« verwenden, um den Ausgabedateityp zu "
+"ändern, was in Verbindung mit der Option -s nützlich ist."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:95
+msgid "Show a usage summary."
+msgstr "zeigt eine Zusammenfassung, wie es benutzt wird."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:98
+msgid "Display version, author and copyright information."
+msgstr "zeigt Version, Autor und Copyright-Informationen."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:98
+#, no-wrap
+msgid "B<--noconf>, B<--no-conf>"
+msgstr "B<--noconf>, B<--no-conf>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:101
+msgid "Do not read any configuration files (see below)."
+msgstr "liest keine Konfigurationsdateien (siehe unten)."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:101
+#, no-wrap
+msgid "I<changelog >..."
+msgstr "I<Changelog > …"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:106
+msgid ""
+"The I<changelog> files to graph. If multiple files are specified they will "
+"all be displayed on the same graph. The files may be compressed with gzip. "
+"Any text in them that is not in Debian changelog format will be ignored."
+msgstr ""
+"die Changelog-Dateien, die gezeichnet werden. Falls mehrere Dateien "
+"angegeben wurden, werden sie alle auf dem gleichen Graph angezeigt. Die "
+"Dateien können mit Gzip komprimiert sein. Jeglicher darin enthaltener Text, "
+"der nicht im Debian-Changelog-Format vorliegt, wird ignoriert."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:113
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. The B<--no-"
+"conf> option can be used to prevent reading these files. Environment "
+"variable settings are ignored when these configuration files are read. The "
+"currently recognised variables are:"
+msgstr ""
+"Die beiden Konfigurationsdateien I</etc/devscripts.conf> und I<~/."
+"devscripts> werden durch eine Shell in dieser Reihenfolge eingelesen, um "
+"Konfigurationsvariablen zu setzen. Die Option B<--no-conf> kann benutzt "
+"werden, um ein Lesen dieser Dateien zu verhindern. Wenn diese "
+"Konfigurationsdateien gelesen werden, werden Umgebungsvariablen ignoriert. "
+"Die derzeit bekannten Variablen sind:"
+
+#. type: TP
+#: ../scripts/plotchangelog.1:113
+#, no-wrap
+msgid "B<PLOTCHANGELOG_OPTIONS>"
+msgstr "B<PLOTCHANGELOG_OPTIONS>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:118
+msgid ""
+"This is a space-separated list of options to always use, for example B<-l -"
+"b>. Do not include B<-g> or B<--gnuplot> among this list as it may be "
+"ignored; see the next variable instead."
+msgstr ""
+"Dies ist eine durch Kommas getrennte Liste von Optionen, die immer benutzt "
+"werden, zum Beispiel B<-l -b>. Fügen Sie in diese Liste nicht B<-g> oder B<--"
+"gnuplot> ein, da dies ignoriert werden könnte; siehe stattdessen die nächste "
+"Variable."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:118
+#, no-wrap
+msgid "B<PLOTCHANGELOG_GNUPLOT>"
+msgstr "B<PLOTCHANGELOG_GNUPLOT>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:124
+msgid ""
+"These are B<gnuplot> commands which will be prepended to any such commands "
+"given on the command line."
+msgstr ""
+"Dies sind B<gnuplot>-Befehle, die allen derartigen auf der Befehlszeile "
+"angegebenen Befehlen vorangestellt werden."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:127
+msgid "Joey Hess E<lt>joey@kitenet.netE<gt>"
+msgstr "Joey Hess E<lt>joey@kitenet.netE<gt>"
+
+#. type: TH
+#: ../scripts/pts-subscribe.1:1
+#, no-wrap
+msgid "PTS-SUBSCRIBE"
+msgstr "PTS-SUBSCRIBE"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:4
+msgid "pts-subscribe - time-limited subscription to the PTS"
+msgstr "pts-subscribe - zeitlich begrenztes Abonnement des PTS"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:6
+msgid "B<pts-subscribe> [I<options>] I<package>"
+msgstr "B<pts-subscribe> [I<Optionen>] I<Paket>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:8
+msgid "B<pts-unsubscribe> [I<options>] I<package>"
+msgstr "B<pts-unsubscribe> [I<Optionen>] I<Paket>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:12
+msgid ""
+"B<pts-subscribe> sends a subscription request for I<package> to the Package "
+"Tracking System at pts@qa.debian.org, and cancels the subscription 30 days "
+"later."
+msgstr ""
+"B<pts-subscribe> sendet eine Abonnement-Anfrage für I<Paket> an das "
+"Paketverfolgungssystem (PTS) unter »pts@qa.debian.org« und annuliert das "
+"Abonnement 30 Tage später."
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:15
+msgid ""
+"If called as B<pts-unsubscribe>, send an unsubscription request for "
+"I<package> to the Package Tracking System."
+msgstr ""
+"Falls es als B<pts-unsubscribe> aufgerufen wird, sendet es eine Anfrage für "
+"das Annulieren des Abonnements an das Paketverfolgungssystem."
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:18
+msgid ""
+"This utility is useful if a developer has made an NMU and wants to track the "
+"package for a limited period of time."
+msgstr ""
+"Dieses Hilfswerkzeug ist nützlich, falls ein Entwickler ein NMU durchgeführt "
+"hat und das Paket für eine begrenzte Zeit verfolgen möchte."
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:19
+#, no-wrap
+msgid "B<--until >I<time>, B<-u> I<time>"
+msgstr "B<--until >I<Zeit>, B<-u> I<Zeit>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:24
+msgid ""
+"When B<at>(1) should cancel the subscription. I<time> must be specified "
+"using B<at>'s syntax. Default is 'now + 30 days'. This option will "
+"probably require quoting!"
+msgstr ""
+"wenn B<at>(1) das Abonnements annulieren soll. I<Zeit> muss mittels der "
+"Syntax von B<at> angegeben werden. Vorgabe ist »now + 30 days«. Diese Option "
+"muss wahrscheinlich vor der Interpretation durch die Shell geschützt werden!"
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:24
+#, no-wrap
+msgid "B<--forever>"
+msgstr "B<--forever>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:28
+msgid ""
+"Don't cancel the subscription automatically. This can also be specified as "
+"B<--until forever>."
+msgstr ""
+"annuliert das Abonnement nicht automatisch. Dies kann auch als B<--until "
+"forever> angegeben werden."
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:35
+#, no-wrap
+msgid "B<DEBEMAIL>, B<EMAIL>"
+msgstr "B<DEBEMAIL>, B<EMAIL>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:42
+msgid ""
+"If one of these is set (with preference give to B<DEBEMAIL>), then this will "
+"be used for the subscription address. If neither is set, then the email "
+"will be sent without a specified subscription address, and the email's From: "
+"line will be used to determine the sender's address. This will be "
+"determined by B<mail>(1)."
+msgstr ""
+"Falls eine davon gesetzt ist (vorrangig B<DEBEMAIL>), wird sie als "
+"Abonnement-Adresse verwendet. Falls keine davon gesetzt ist, wird die E-Mail "
+"ohne Angabe einer Abonnement-Adresse gesandt und die E-Mail aus der Zeile "
+"»Von:« zum Bestimmen der Absenderadresse benutzt. Dies wird durch B<mail>(1) "
+"festgelegt."
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:48
+#, no-wrap
+msgid "B<PTS_UNTIL>"
+msgstr "B<PTS_UNTIL>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:51
+msgid "Setting this is equivalent to giving a B<--until> option."
+msgstr "diese Einstellung entspricht der Option B<--until>."
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:56
+msgid ""
+"B<at>(1), information about the Package Tracking System in the Developer's "
+"Reference at https://www.debian.org/doc/developers-reference/resources."
+"html#pkg-tracking-system"
+msgstr ""
+"B<at>(1), Informationen über das Paketverfolgungssystem (PTS) finden sich in "
+"der Debian Entwickler-Referenz unter https://www.debian.org/doc/developers-"
+"reference/resources.html#pkg-tracking-system."
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:59
+msgid ""
+"This program was written by Julian Gilbey E<lt>jdg@debian.orgE<gt> based on "
+"a public domain prototype by Raphael Hertzog E<lt>hertzog@debian.orgE<gt> "
+"and is copyright under the GPL, version 2 or later."
+msgstr ""
+"Dieses Programm wurde von Julian Gilbey E<lt>jdg@debian.orgE<gt> basierend "
+"auf einem Public-Domain-Prototyp von Raphael Hertzog E<lt>hertzog@debian."
+"orgE<gt> geschrieben und unterliegt dem Copyright der GPL, Version 2 oder "
+"später."
+
+#. type: TH
+#: ../scripts/rc-alert.1:1
+#, no-wrap
+msgid "RC-ALERT"
+msgstr "RC-ALERT"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:4
+msgid "rc-alert - check for installed packages with release-critical bugs"
+msgstr ""
+"rc-alert - sucht nach installieren Paketen mit release-kritischen Fehlern"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:6
+msgid ""
+"B<rc-alert> [I<inclusion options>] [B<--debtags> [I<tag>[B<,>I<tag> ...]]] "
+"[B<--popcon>] [I<package> ...]"
+msgstr ""
+"B<rc-alert> [I<Aufnahmeoptionen>] [B<--debtags> [I<Markierung>[B<,"
+">I<Markierung> …]]] [B<--popcon>] [I<Paket> …]"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:8
+msgid "B<rc-alert --help>|B<--version>"
+msgstr "B<rc-alert --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:12
+msgid ""
+"B<rc-alert> downloads the list of release-critical bugs from the Debian BTS "
+"webpages, and then outputs a list of packages installed on the system, or "
+"given on the command-line, which are in that list."
+msgstr ""
+"B<rc-alert> lädt die Liste der release-kritischen Fehler von den Websites "
+"der Debian-Fehlerdatenbank herunter und gibt dann eine Liste der auf dem "
+"System installierten Pakete oder der auf der Befehlszeile angegebenen Pakete "
+"aus, die auf dieser Liste stehen."
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:17
+msgid ""
+"If the directory I<~/.devscripts_cache> exists or the B<--cache> option is "
+"given, then the (sizable) downloaded list will be cached, and will only be "
+"downloaded again on a second invocation if it has changed."
+msgstr ""
+"Falls das Verzeichnis I<~/.devscripts_cache> existiert oder die Option B<--"
+"cache> angegeben wurde, wird die (ziemlich große) heruntergeladene Liste "
+"zwischengespeichert und bei einem zweiten Aufruf nur erneut geladen, falls "
+"sie sich geändert hat."
+
+#. type: TP
+#: ../scripts/rc-alert.1:18
+#, no-wrap
+msgid "B<--cache>"
+msgstr "B<--cache>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:21
+msgid "Force the creation of the I<~/.devscripts_cache> cache directory."
+msgstr ""
+"erzwingt das Erstellen des Zwischenspeicherverzeichnisses I<~/."
+"devscripts_cache>."
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:31
+msgid ""
+"It is also possible to filter the list of bugs reported based on the tags "
+"and distributions associated with the package. The filtering options are:"
+msgstr ""
+"Es ist außerdem möglich, die gemeldete Fehlerliste anhand der mit dem Paket "
+"verbundenen Markierungen und Distributionen zu filtern. Die Filteroptionen "
+"sind:"
+
+#. type: TP
+#: ../scripts/rc-alert.1:31
+#, no-wrap
+msgid "B<--include-tags>, B<-f>"
+msgstr "B<--include-tags>, B<-f>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:35
+msgid ""
+"A list of tags which the bug must have, in the format used for output. For "
+"example, to include bugs tagged security or help wanted, use \"SH\"."
+msgstr ""
+"eine Liste der Markierungen, die der Fehlerbericht haben muss, in dem für "
+"die Ausgabe benutzten Format. Um zum Beispiel Fehler einzuschließen, die mit "
+"»security« oder »help wanted« markiert sind, verwenden Sie »SH«."
+
+#. type: TP
+#: ../scripts/rc-alert.1:35
+#, no-wrap
+msgid "B<--include-tag-op>, B<-t>"
+msgstr "B<--include-tag-op>, B<-t>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:39
+msgid ""
+"If set to I<and>, a bug must have all of the tags specified by B<--include-"
+"tags>."
+msgstr ""
+"Falls dies auf I<and> gesetzt ist, muss ein Fehlerbericht alle durch B<--"
+"include-tags> angegebenen Markierungen haben."
+
+#. type: TP
+#: ../scripts/rc-alert.1:39
+#, no-wrap
+msgid "B<--exclude-tags>"
+msgstr "B<--exclude-tags>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:43
+msgid ""
+"A list of tags which the bug must not have, in the same format as B<--"
+"include-tags>."
+msgstr ""
+"eine Liste der Markierungen, die der Fehlerbericht nicht haben darf, im "
+"selben Format wie für B<--include-tags>."
+
+#. type: TP
+#: ../scripts/rc-alert.1:43
+#, no-wrap
+msgid "B<--exclude-tag-op>"
+msgstr "B<--exclude-tag-op>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:48
+msgid ""
+"If set to I<and>, a bug must have none of the tags specified by B<--exclude-"
+"tags>. By default, the bug will be excluded if any tag matches."
+msgstr ""
+"Falls dies auf I<and> gesetzt ist, darf ein Fehlerbericht keine durch B<--"
+"exclude-tags> angegebenen Markierungen haben. Standardmäßig wird der "
+"Fehlerbericht ausgenommen, falls irgendeine Markierung passt."
+
+#. type: TP
+#: ../scripts/rc-alert.1:48
+#, no-wrap
+msgid "B<--include-dists>, B<-d>"
+msgstr "B<--include-dists>, B<-d>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:52
+msgid ""
+"A list of distributions which the bug must apply to, in the format used for "
+"output. For example, to include bugs affecting testing or unstable, use \"TU"
+"\"."
+msgstr ""
+"eine Liste der Distributionen, für die der Fehlerbericht gelten muss, in dem "
+"für die Ausgabe benutzten Format. Um zum Beispiel Fehler einzuschließen, die "
+"Testing oder Unstable betreffen, verwenden Sie »TU«."
+
+#. type: TP
+#: ../scripts/rc-alert.1:52
+#, no-wrap
+msgid "B<--include-dist-op>, B<-o>"
+msgstr "B<--include-dist-op>, B<-o>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:56
+msgid ""
+"If set to I<and>, a bug must apply to all of the specified distributions in "
+"order to be included."
+msgstr ""
+"Falls dies auf I<and> gesetzt ist, muss ein Fehlerbericht für alle "
+"angegebenen Distributionen gelten, um enthalten zu sein."
+
+#. type: TP
+#: ../scripts/rc-alert.1:56
+#, no-wrap
+msgid "B<--exclude-dists>"
+msgstr "B<--exclude-dists>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:60
+msgid ""
+"A list of distributions to which the bug must not apply, in the same format "
+"as B<--include-dists>."
+msgstr ""
+"eine Liste der Distributionen, für die der Fehlerbericht nicht gelten darf, "
+"im selben Format wie für B<--include-dists>."
+
+#. type: TP
+#: ../scripts/rc-alert.1:60
+#, no-wrap
+msgid "B<--exclude-dist-op>"
+msgstr "B<--exclude-dist-op>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:65
+msgid ""
+"If set to I<and>, a bug must apply to all of the specified distributions in "
+"order to be excluded. By default the bug will be excluded if it applies to "
+"any of the listed distributions."
+msgstr ""
+"Falls dies auf I<and> gesetzt ist, muss ein Fehlerbericht für alle "
+"angegebenen Distributionen gelten, um ausgenommen zu werden. Standardmäßig "
+"wird der Fehler ausgeschlossen, wenn er für irgendeine der aufgeführten "
+"Distributionen gilt."
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:70
+msgid ""
+"It is also possible to only list bugs which have specific debtags set. Note "
+"that you need to have debtags installed and also that it's not mandatory for "
+"maintainers to set proper debtags. The produced list will thus probably be "
+"incomplete."
+msgstr ""
+"Es ist außerdem möglich, nur die Fehler aufzuführen, bei denen eine "
+"spezielle Gruppe von Debtags gesetzt ist. Beachten Sie, dass Debtags "
+"installiert sein muss und Paketbetreuer außerdem nicht verpflichtet sind, "
+"ordnungsgemäße Debian-Markierungen zu setzen. Die erzeugte Liste wird daher "
+"wahrscheinlich unvollständig sein."
+
+#. type: TP
+#: ../scripts/rc-alert.1:70
+#, no-wrap
+msgid "B<--debtags>"
+msgstr "B<--debtags>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:75
+msgid ""
+"Match packages based on the listed tags. Each package is matched only if it "
+"has all the listed tags; in the case of multiple tags within the same facet, "
+"a package is matched if it has any of the listed tags within the facet."
+msgstr ""
+"entspricht Paketen basierend auf aufgeführten Markierungen. Jedes Paket "
+"passt nur, falls es alle aufgeführten Markierungen hat; im Fall mehrerer "
+"Markierungen innerhalb des gleichen Aspekts passt ein Paket, falls es "
+"irgendeine der innerhalb des Aspekts aufgeführten Markierungen hat."
+
+#. type: TP
+#: ../scripts/rc-alert.1:75
+#, no-wrap
+msgid "B<--debtags-database>"
+msgstr "B<--debtags-database>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:79
+msgid ""
+"Use a non-standard debtags database. The default is I</var/lib/debtags/"
+"packages-tags>."
+msgstr ""
+"benutzt eine Debtags-Datenbank, die nicht Standard ist. Vorgabe ist I</var/"
+"lib/debtags/packages-tags>."
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:83
+msgid ""
+"Popularity-contest collects data about installation and usage of Debian "
+"packages. You can additionally sort the bugs by the popcon rank of the "
+"related packages."
+msgstr ""
+"Der Beliebtheitswettbewerb (Popcon) sammelt Daten über die Installation und "
+"die Benutzung von Debian-Paketen. Sie können Fehler zusätzlich zum Popcon-"
+"Rang des zugehörigen Pakets sortieren."
+
+#. type: TP
+#: ../scripts/rc-alert.1:83
+#, no-wrap
+msgid "B<--popcon>"
+msgstr "B<--popcon>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:86
+msgid "Sort bugs by the popcon rank of the package the bug belongs to."
+msgstr ""
+"sortiert Fehler nach dem Popcon-Rang des Pakets, zu dem der Fehler gehört."
+
+#. type: TP
+#: ../scripts/rc-alert.1:86
+#, no-wrap
+msgid "B<--pc-vote>"
+msgstr "B<--pc-vote>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:92
+msgid ""
+"By default, packages are sorted according to the number of people who have "
+"the package installed. This option enables sorting by the number of people "
+"regularly using the package instead. This option has no effect in "
+"combination with --pc-local."
+msgstr ""
+"Standardmäßig werden Pakete nach der Anzahl der Leute sortiert, die das "
+"Paket installiert haben. Diese Option aktiviert stattdessen die Sortierung "
+"nach der Anzahl der Leute, die das Paket regelmäßig nutzen. Diese Option hat "
+"in Kombination mit --pc-local keine Auswirkungen."
+
+#. type: TP
+#: ../scripts/rc-alert.1:92
+#, no-wrap
+msgid "B<--pc-local>"
+msgstr "B<--pc-local>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:96
+msgid ""
+"Instead of requesting remote data the information from the last popcon run "
+"is used (I</var/log/popularity-contest>)."
+msgstr ""
+"Anstatt Daten aus der Ferne abzufragen, wird die Information aus dem letzten "
+"Popcon-Durchlauf benutzt (I</var/log/popularity-contest>)."
+
+#. type: TP
+#: ../scripts/rc-alert.1:97
+#, no-wrap
+msgid "B<--include-dists> OS"
+msgstr "B<--include-dists> OS"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:100
+msgid "The bug must apply to at least one of oldstable or stable"
+msgstr "Der Fehler muss mindestens für Oldstable oder Stable gelten."
+
+#. type: TP
+#: ../scripts/rc-alert.1:100
+#, no-wrap
+msgid "B<--include-dists> TUB< --include-dist-op> and"
+msgstr "B<--include-dists> TUB< --include-dist-op> and"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:103
+msgid "The bug must apply to both testing and unstable"
+msgstr "Der Fehler muss sowohl für Testing als auch für Unstable gelten."
+
+#. type: TP
+#: ../scripts/rc-alert.1:103
+#, no-wrap
+msgid "B<--include-dists> OB< --include-tags> SB< --exclude-tags> +"
+msgstr "B<--include-dists> OB< --include-tags> SB< --exclude-tags> +"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:106
+msgid "The bug must apply to oldstable and be tagged security but not patch"
+msgstr ""
+"Der Fehler muss für Oldstable gelten und mit »security« aber nicht mit "
+"»patch« markiert sein."
+
+#. type: TP
+#: ../scripts/rc-alert.1:106
+#, no-wrap
+msgid "B<--exclude-dists> SOTB< --include-tags> R"
+msgstr "B<--exclude-dists> SOTB< --include-tags> R"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:110
+msgid ""
+"The bug must apply to only unstable or experimental (or both) and be tagged "
+"unreproducible"
+msgstr ""
+"der Fehler darf nur für Unstable oder Experimental (oder beide) gelten und "
+"muss als »unreproducible« markiert sein."
+
+#. type: TP
+#: ../scripts/rc-alert.1:110
+#, no-wrap
+msgid "B<--debtags> implemented-in::perl,role::plugin,implemented-in::python"
+msgstr "B<--debtags> implemented-in::perl,role::plugin,implemented-in::python"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:115
+msgid ""
+"The bug must apply to packages matching the specified debtags, i.e. the "
+"match will only include packages that have the 'role::plugin' tag and that "
+"have either of the tags 'implemented-in::perl' or 'implemented-in::python'."
+msgstr ""
+"Der Fehler muss für Pakete gelten, die zu den angegebenen Debtags passen, d."
+"h. der Treffer wird nur Pakete enthalten, die die Markierung »role::plugin« "
+"und entweder die Markierung »implemented-in::perl« oder »implemented-in::"
+"python« haben."
+
+#. type: TP
+#: ../scripts/rc-alert.1:115
+#, no-wrap
+msgid "B<--popcon> B<--pc-local>"
+msgstr "B<--popcon> B<--pc-local>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:119
+msgid ""
+"Read I</var/log/popularity-contest> and sort bugs by your personal popcon "
+"ranking (which is basically the atime of your packages' binaries)."
+msgstr ""
+"liest I</var/log/popularity-contest> und sortiert Fehler nach Ihrer "
+"persönlichen Popcon-Rangordnung (die im Grunde die Atime der Programme Ihrer "
+"Pakete ist)."
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:121
+msgid "It is not possible to say \"does not apply only to unstable\""
+msgstr "Es ist nicht möglich zu sagen, »gilt nicht nur für Unstable«."
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:125
+msgid "B<debtags(1)> B<popbugs(1)> B<popularity-contest(8)>"
+msgstr "B<debtags(1)>, B<popbugs(1)>, B<popularity-contest(8)>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:129
+msgid ""
+"B<rc-alert> was written by Anthony DeRobertis and modified by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> and Adam D. Barratt E<lt>adam@adam-barratt.org."
+"ukE<gt> for the devscripts package. Debtags and popcon functionality was "
+"added by Jan Hauke Rahm E<lt>info@jhr-online.deE<gt>."
+msgstr ""
+"B<rc-alert> wurde von Anthony DeRobertis geschrieben und von Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> und Adam D. Barratt E<lt>adam@adam-barratt.org."
+"ukE<gt> für das Paket Devscripts angepasst. Die Debtags- und Popcon-"
+"Funktionalität wurde von Jan Hauke Rahm E<lt>info@jhr-online.deE<gt> "
+"hinzugefügt."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:202
+msgid "rmadison -- Remotely query the Debian archive database about packages"
+msgstr ""
+"rmadison - fragt Pakete aus der Debian-Archivdatenbank aus der Ferne ab"
+
+#. type: =item
+#: ../scripts/rmadison.pl:208
+msgid "B<rmadison> [I<OPTIONS>] I<PACKAGE> ..."
+msgstr "B<rmadison> [I<OPTIONEN>] I<PAKET> …"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:214
+msgid ""
+"B<dak ls> queries the Debian archive database (\"projectb\") and displays "
+"which package version is registered per architecture/component/suite. The "
+"CGI at B<https://qa.debian.org/madison.php> provides that service without "
+"requiring SSH access to ftp-master.debian.org or the mirror on mirror.ftp-"
+"master.debian.org. This script, B<rmadison>, is a command line frontend to "
+"this CGI."
+msgstr ""
+"B<dak ls> fragt die Debian-Archivdatenbank (»projectb«) ab und zeigt, welche "
+"Paketversion je Architektur/Komponente/Suite registriert ist. Das CGI unter "
+"B<https://qa.debian.org/madison.php> stellt diesen Dienst zur Verfügung ohne "
+"SSH-Zugriff auf ftp-master.debian.org oder den Spiegel auf mirror.ftp-master."
+"debian.org zu benötigen. Dieses Skript, B<rmadison>, ist eine "
+"Befehlszeilenoberfläche für dieses CGI."
+
+#. type: =item
+#: ../scripts/rmadison.pl:225
+msgid "B<-a>, B<--architecture=>I<ARCH>"
+msgstr "B<-a>, B<--architecture=>I<ARCHITEKTUR>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:227
+msgid "only show info for ARCH(s)"
+msgstr "zeigt nur Informationen für ARCHITEKTUR(en)."
+
+#. type: =item
+#: ../scripts/rmadison.pl:229
+msgid "B<-b>, B<--binary-type=>I<TYPE>"
+msgstr "B<-b>, B<--binary-type=>I<TYP>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:231
+msgid "only show info for binary TYPE"
+msgstr "zeigt nur Informationen für binären TYP."
+
+#. type: =item
+#: ../scripts/rmadison.pl:233
+msgid "B<-c>, B<--component=>I<COMPONENT>"
+msgstr "B<-c>, B<--component=>I<KOMPONENTE>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:235
+msgid "only show info for COMPONENT(s)"
+msgstr "zeigt nur Informationen für KOMPONENTE(n)."
+
+#. type: =item
+#: ../scripts/rmadison.pl:237
+msgid "B<-g>, B<--greaterorequal>"
+msgstr "B<-g>, B<--greaterorequal>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:239
+msgid "show buildd 'dep-wait pkg >= {highest version}' info"
+msgstr "zeigt die Buildd-Information »dep-wait Paket >= {höchste Version}«."
+
+#. type: =item
+#: ../scripts/rmadison.pl:241
+msgid "B<-G>, B<--greaterthan>"
+msgstr "B<-G>, B<--greaterthan>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:243
+msgid "show buildd 'dep-wait pkg >> {highest version}' info"
+msgstr "zeigt die Buildd-Information »dep-wait Paket >> {höchste Version}«."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:247
+msgid "show this help and exit"
+msgstr "zeigt diese Hilfe und wird beendet."
+
+#. type: =item
+#: ../scripts/rmadison.pl:249
+msgid "B<-s>, B<--suite=>I<SUITE>"
+msgstr "B<-s>, B<--suite=>I<SUITE>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:251
+msgid "only show info for this suite"
+msgstr "zeigt nur Informationen für diese Suite."
+
+#. type: =item
+#: ../scripts/rmadison.pl:253
+msgid "B<-s>, B<--regex>"
+msgstr "B<-s>, B<--regex>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:255
+msgid "treat PACKAGE as a regex"
+msgstr "betrachtet PAKET als regulären Ausdruck."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:257
+msgid ""
+"B<Note:> Since B<-r> can easily DoS the database (\"-r .\"), this option is "
+"not supported by the CGI on qa.debian.org and most other installations."
+msgstr ""
+"B<Hinweis:> Da B<-r> leicht für einen Diensteverweigerungsangriff auf die "
+"Datenbank benutzt werden kann (»-r .«), wird diese Option nicht durch das "
+"CGI auf qa.debian.org und die meisten anderen Installationen unterstützt."
+
+#. type: =item
+#: ../scripts/rmadison.pl:260
+msgid "B<-S>, B<--source-and-binary>"
+msgstr "B<-S>, B<--source-and-binary>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:262
+msgid "show info for the binary children of source pkgs"
+msgstr "zeigt Informationen über die binären Kindpakete von Quellpaketen."
+
+#. type: =item
+#: ../scripts/rmadison.pl:264
+msgid "B<-t>, B<--time>"
+msgstr "B<-t>, B<--time>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:266
+msgid "show projectb snapshot and reload time (not supported by all archives)"
+msgstr ""
+"zeigt eine Projectb-Momentaufnahme und die Zeit zum Neuladen (nicht von "
+"allen Archiven unterstützt)."
+
+#. type: =item
+#: ../scripts/rmadison.pl:268
+msgid "B<-u>, B<--url=>I<URL>[B<,>I<URL> ...]"
+msgstr "B<-u>, B<--url=>I<URL>[B<,>I<URL> …]"
+
+#. type: verbatim
+#: ../scripts/rmadison.pl:270
+#, no-wrap
+msgid ""
+"use I<URL> for the query. Supported shorthands are\n"
+" B<debian> or B<qa> https://qa.debian.org/madison.php\n"
+" B<debug> http://debug.debian.net/cgi-bin/madison.cgi\n"
+" B<ubuntu> http://people.canonical.com/~ubuntu-archive/madison.cgi\n"
+" B<udd> https://qa.debian.org/cgi-bin/madison.cgi\n"
+" B<new> https://qa.debian.org/cgi-bin/madison.cgi?table=new\n"
+"\n"
+msgstr ""
+"verwendet für die Abfrage I<URL>. Folgende Abkürzungen werden unterstützt:\n"
+" B<debian> oder B<qa> https://qa.debian.org/madison.php\n"
+" B<debug> http://debug.debian.net/cgi-bin/madison.cgi\n"
+" B<ubuntu> http://people.canonical.com/~ubuntu-archive/madison.cgi\n"
+" B<udd> https://qa.debian.org/cgi-bin/madison.cgi\n"
+" B<new> https://qa.debian.org/cgi-bin/madison.cgi?table=new\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:277
+msgid ""
+"See the B<RMADISON_URL_MAP_> variable below for a method to add new "
+"shorthands."
+msgstr ""
+"Eine Methode, neue Abkürzungen hinzuzufügen, finden Sie nachfolgend bei der "
+"Variable B<RMADISON_URL_MAP_>."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:282
+msgid "show version and exit"
+msgstr "zeigt die Version und wird beendet."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:286
+msgid "don't read the devscripts configuration files"
+msgstr "liest die Devscripts-Konfigurationsdateien nicht."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:290
+msgid ""
+"ARCH, COMPONENT and SUITE can be comma (or space) separated lists, e.g. --"
+"architecture=m68k,i386"
+msgstr ""
+"ARCHITEKTUR, KOMPONENTE und SUITE können durch Kommas (oder Leerzeichen) "
+"getrennte Listen sein, z.B. --architecture=m68k,i386."
+
+#. type: =item
+#: ../scripts/rmadison.pl:303
+msgid "B<RMADISON_URL_MAP_>I<SHORTHAND>=I<URL>"
+msgstr "B<RMADISON_URL_MAP_>I<ABKÜRZUNG>=I<URL>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:305
+msgid ""
+"Add an entry to the set of shorthand URLs listed above. I<SHORTHAND> should "
+"be replaced with the shorthand form to be used to refer to I<URL>."
+msgstr ""
+"fügt der oben aufgeführten Zusammenstellung von Abkürzungs-URLs einen "
+"Eintrag hinzu. I<ABKÜRZUNG> sollte durch die Abkürzungsform ersetzt werden, "
+"die als Bezug zu I<URL> benutzt wird."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:308
+msgid ""
+"Multiple shorthand entries may be specified by using multiple "
+"B<RMADISON_URL_MAP_*> variables."
+msgstr ""
+"Mehrere Abkürzungseinträge können mittels mehrerer B<RMADISON_URL_MAP_*>-"
+"Variablen angegeben werden."
+
+#. type: =item
+#: ../scripts/rmadison.pl:311
+msgid "B<RMADISON_DEFAULT_URL>=I<URL>"
+msgstr "B<RMADISON_DEFAULT_URL>=I<URL>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:313
+msgid ""
+"Set the default URL to use unless overridden by a command line option. For "
+"Debian this defaults to debian,new. For Ubuntu this defaults to ubuntu."
+msgstr ""
+"setzt die Standard-URL, die benutzt werden soll, solange sie nicht durch "
+"eine Befehlszeilenoption außer Kraft gesetzt wird. Für Debian ist die "
+"Voreinstellung »debian,new«, für Ubuntu ist es »ubuntu«."
+
+#. type: =item
+#: ../scripts/rmadison.pl:316
+msgid "B<RMADISON_ARCHITECTURE>=I<ARCH>"
+msgstr "B<RMADISON_ARCHITECTURE>=I<ARCHITEKTUR>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:318
+msgid ""
+"Set the default architecture to use unless overridden by a command line "
+"option. To run an unrestricted query when B<RMADISON_ARCHITECTURE> is set, "
+"use B<--architecture='*'>."
+msgstr ""
+"setzt die Standardarchitektur, die benutzt werden soll, solange sie nicht "
+"durch eine Befehlszeilenoption außer Kraft gesetzt wird. Um eine "
+"uneingeschränkte Abfrage auszuführen, wenn B<RMADISON_ARCHITECTURE> gesetzt "
+"wurde, verwenden Sie B<--architecture='*'>."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:326
+msgid "B<dak ls> was formerly called B<madison>."
+msgstr "B<dak ls> wurde früher B<madison> genannt."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:328
+msgid ""
+"The protocol used by rmadison is fairly simple, the CGI accepts query the "
+"parameters a, b, c, g, G, r, s, S, t, and package. The parameter text is "
+"passed to enable plain-text output."
+msgstr ""
+"Das von Rmadison benutzte Protokoll ist recht einfach, das CGI akzeptiert "
+"die Parameter »a«, »b«, »c«, »g«, »G«, »r«, »s«, »S«, »t« und »package«. Der "
+"Parameter »text« wird übergeben, um Klartextausgabe zu aktivieren."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:334
+msgid "B<dak>(1), B<madison-lite>(1)"
+msgstr "B<dak>(1), B<madison-lite>(1)"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:338
+msgid ""
+"rmadison and https://qa.debian.org/madison.php were written by Christoph "
+"Berg <myon@debian.org>. dak was written by James Troup <james@nocrew.org>, "
+"Anthony Towns <ajt@debian.org>, and others."
+msgstr ""
+"Rmadison und https://qa.debian.org/madison.php wurden von Christoph Berg "
+"<myon@debian.org> geschrieben. Dak wurde von James Troup <james@nocrew.org>, "
+"Anthony Towns <ajt@debian.org> und anderen verfasst."
+
+#. type: textblock
+#: ../scripts/sadt.pod:19
+msgid "sadt - simple DEP-8 test runner"
+msgstr "sadt - einfaches DEP-8-Test-Ausführungsprogramm"
+
+#. type: textblock
+#: ../scripts/sadt.pod:23
+msgid "B<sadt> [I<options>] [I<test-name>...]"
+msgstr "B<sadt> [I<Optionen>] [I<Testname> …]"
+
+#. type: textblock
+#: ../scripts/sadt.pod:27
+msgid ""
+"B<sadt> is a simple implementation of DEP-8 (“automatic as-installed package "
+"testing”) test runner."
+msgstr ""
+"B<sadt> ist eine einfache Implementierung eines DEP-8-Test-"
+"Ausführungsprogramms (»automatische, installationsartige Paketprüfung«)."
+
+#. type: textblock
+#: ../scripts/sadt.pod:30
+msgid ""
+"It is your responsibility to satisfy tests' dependencies. B<sadt> won't "
+"attempt to install any missing packages. If a test's dependencies cannot be "
+"satisfied by packages that are currently installed, the test will be skipped."
+msgstr ""
+"Sie sind verantwortlich dafür, dass die Abhängigkeiten der Tests erfüllt "
+"sind. B<sadt> wird nicht versuchen, die fehlenden Pakete zu installieren. "
+"Falls Abhängigkeiten eines Tests nicht durch derzeit installierte Pakete "
+"erfüllt werden können, wird der Test übersprungen."
+
+#. type: textblock
+#: ../scripts/sadt.pod:34
+msgid ""
+"B<sadt> won't build the package even if a test declares the B<build-needed> "
+"restriction. Instead, such a test will be skipped. However, you can build "
+"the package manually, and then tell B<sadt> to assume that the package is "
+"already built using the B<-b>/B<--built-source-tree>."
+msgstr ""
+"B<sadt> wird das Paket nicht einmal dann bauen, wenn ein Test die "
+"Restriktion B<build-needed> deklariert. Stattdessen wird ein derartiger Test "
+"übersprungen. Sie können jedoch das Paket manuell bauen und B<sadt> dann "
+"mitteilen, dass es davon ausgehen kann, dass das Paket bereits mittels B<-b>/"
+"B<--built-source-tree> gebaut wurde."
+
+#. type: textblock
+#: ../scripts/sadt.pod:39
+msgid ""
+"B<sadt> doesn't implement any virtualisation arrangements, therefore it "
+"skips tests that declare the B<breaks-testbed> restriction."
+msgstr ""
+"B<sadt> implementiert keine Virtualisierungsmaßnahmen, daher überspringt es "
+"Tests, die die Restriktion B<breaks-testbed> deklarieren."
+
+#. type: textblock
+#: ../scripts/sadt.pod:48
+msgid "Make the output more verbose."
+msgstr "erzeugt eine detailliertere Ausgabe."
+
+#. type: =item
+#: ../scripts/sadt.pod:50
+msgid "B<-b>, B<--built-source-tree>"
+msgstr "B<-b>, B<--build-source-tree>"
+
+#. type: textblock
+#: ../scripts/sadt.pod:52
+msgid ""
+"Assume that the source tree is already built. This is equivalent to B<--"
+"ignore-restriction=build-needed>."
+msgstr ""
+"Es wird angenommen, dass der Quellverzeichnisbaum bereits gebaut wurde. Dies "
+"entspricht B<--ignore-restriction=build-needed>."
+
+#. type: =item
+#: ../scripts/sadt.pod:55
+msgid "B<--ignore-restriction>=I<restriction>"
+msgstr "B<--ignore-restriction>=I<Restriktion>"
+
+#. type: textblock
+#: ../scripts/sadt.pod:57
+msgid "Don't skip tests that declare the I<restriction>."
+msgstr "überspringt keine Tests, die die I<Restriktion> deklarieren."
+
+#. type: textblock
+#: ../scripts/sadt.pod:61
+msgid "Show a help message and exit."
+msgstr "zeigt eine Hilfenachricht und wird beendet."
+
+#. type: =head1
+#: ../scripts/sadt.pod:65
+msgid "CONFORMING TO"
+msgstr "KONFORM ZU"
+
+#. type: textblock
+#: ../scripts/sadt.pod:67
+msgid "README.package-tests shipped by autopkgtest 2.7.2"
+msgstr "README.package-tests, bei Autopkgtest 2.7.2 mitgeliefert"
+
+#. type: textblock
+#: ../scripts/sadt.pod:71
+msgid "B<adt-run>(1)"
+msgstr "B<adt-run>(1)"
+
+#. type: TH
+#: ../doc/suspicious-source.1:15
+#, no-wrap
+msgid "SUSPICIOUS-SOURCE"
+msgstr "SUSPICIOUS-SOURCE"
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:20
+msgid ""
+"suspicious-source - search for files that are not the GPL's \"preferred form "
+"of modification\""
+msgstr ""
+"suspicious-source - sucht nach Dateien, die nicht die von der GPL "
+"»bevorzugte Form von Änderungen« sind."
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:23
+msgid "B<suspicious-source> [I<options>]"
+msgstr "B<suspicious-source> [I<Optionen>]"
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:30
+msgid ""
+"B<suspicious-source> is a script that outputs a list of files which are not "
+"common source files. This should be run in the root of a source tree to "
+"find files which might not be the \"preferred form of modification\" that "
+"the GPL and other licenses require."
+msgstr ""
+"B<suspicious-source> ist ein Skript, das eine Liste von Dateien ausgibt, bei "
+"denen es sich um keine üblichen Quelldateien handelt. Dies sollte auf der "
+"obersten Ebene des Quellverzeichnisbaums ausgeführt werden, um die Dateien "
+"zu finden, die möglicherweise nicht die »bevorzugte Form von Änderungen« "
+"sind, die die GPL oder andere Lizenzen verlangen."
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:33
+msgid ""
+"The files inside version control system directories (like I<.bzr/> or I<CVS/"
+">) are not considered."
+msgstr ""
+"Die Dateien innerhalb von Verzeichnissen von Versionskontrollsystemen (wie "
+"I<.bzr/> oder I<CVS/>) werden nicht berücksichtigt."
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:38 ../doc/wrap-and-sort.1:37
+msgid "Show this help message and exit."
+msgstr "zeigt diese Hilfenachricht und wird beendet."
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:41
+msgid "Print more information."
+msgstr "gibt weitere Informationen aus."
+
+#. type: TP
+#: ../doc/suspicious-source.1:41
+#, no-wrap
+msgid "B<-d >I<directory>, B<--directory=>I<directory>"
+msgstr "B<-d >I<Verzeichnis>, B<--directory=>I<Verzeichnis>"
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:44
+msgid ""
+"Check the files in the specified I<directory> instead of the current "
+"directory."
+msgstr "prüft die Dateien im angegebenen I<Verzeichnis> statt im aktuellen."
+
+#. type: TP
+#: ../doc/suspicious-source.1:44
+#, no-wrap
+msgid "B<-m >I<mimetype>, B<--mimetype=>I<mimetype>"
+msgstr "B<-m >I<MIME-Typ>, B<--mimetype=>I<MIME-Typ>"
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:47
+msgid "Add I<mimetype> to list of white-listed MIME types."
+msgstr ""
+"fügt I<MIME-Typ> der Liste der als erlaubt aufgeführten MIME-Typen hinzu."
+
+#. type: TP
+#: ../doc/suspicious-source.1:47
+#, no-wrap
+msgid "B<-e >I<extension>, B<--extension=>I<extension>"
+msgstr "B<-e >I<Erweiterung>, B<--extension=>I<Erweiterung>"
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:50
+msgid "Add I<extension> to list of white-listed extensions."
+msgstr ""
+"fügt I<Erweiterung> der Liste der als erlaubt aufgeführten Erweiterungen "
+"hinzu."
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:54
+msgid ""
+"B<suspicious-source> and this manpage have been written by Benjamin Drung "
+"E<lt>bdrung@debian.orgE<gt>."
+msgstr ""
+"B<suspicious-source> und diese Handbuchseite wurden von Benjamin Drung "
+"E<lt>bdrung@debian.orgE<gt> geschrieben."
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:55 ../doc/wrap-and-sort.1:83
+msgid "Both are released under the ISC license."
+msgstr "Beide wurden unter der ISC-Lizenz veröffentlicht."
+
+#. type: textblock
+#: ../scripts/svnpath.pl:5
+msgid "svnpath - output svn url with support for tags and branches"
+msgstr ""
+"svnpath - gibt die SVN-URL mit Unterstützung für Markierungen und Zweige aus."
+
+#. type: textblock
+#: ../scripts/svnpath.pl:9
+msgid "B<svnpath>"
+msgstr "B<svnpath>"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:11
+msgid "B<svnpath tags>"
+msgstr "B<svnpath tags>"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:13
+msgid "B<svnpath branches>"
+msgstr "B<svnpath branches>"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:15
+msgid "B<svnpath trunk>"
+msgstr "B<svnpath trunk>"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:19
+msgid "B<svnpath> is intended to be run in a Subversion working copy."
+msgstr ""
+"B<svnpath> ist dafür gedacht, in einer Arbeitskopie von Subversion "
+"ausgeführt zu werden."
+
+#. type: textblock
+#: ../scripts/svnpath.pl:21
+msgid ""
+"In its simplest usage, B<svnpath> with no parameters outputs the svn url for "
+"the repository associated with the working copy."
+msgstr ""
+"In der einfachsten Aufrufform gibt B<svnpath> ohne Parameter die SVN-URL für "
+"das zu dieser Arbeitskopie gehörende Depot aus."
+
+#. type: textblock
+#: ../scripts/svnpath.pl:24
+msgid ""
+"If a parameter is given, B<svnpath> attempts to instead output the url that "
+"would be used for the tags, branches, or trunk. This will only work if it's "
+"run in the top-level directory that is subject to tagging or branching."
+msgstr ""
+"Falls ein Parameter angegeben wurde, versucht B<svnpath> stattdessen die URL "
+"auszugeben, die für Markierungen, Zweige oder den Hauptzweig benutzt würde. "
+"Dies wird nur funktionieren, falls es auf der obersten Verzeichnisebene "
+"ausgeführt wird, welche Gegenstand des Markierens oder Verzweigens ist."
+
+#. type: textblock
+#: ../scripts/svnpath.pl:28
+msgid ""
+"For example, if you want to tag what's checked into Subversion as version "
+"1.0, you could use a command like this:"
+msgstr ""
+"Falls Sie zum Beispiel markieren möchten, was in Subversion als Version 1.0 "
+"eingecheckt wurde, könnten Sie einen Befehl wie diesen verwenden:"
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:31
+#, no-wrap
+msgid ""
+" svn cp $(svnpath) $(svnpath tags)/1.0\n"
+"\n"
+msgstr ""
+" svn cp $(svnpath) $(svnpath tags)/1.0\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:33
+msgid ""
+"That's much easier than using svn info to look up the repository url and "
+"manually modifying it to derive the url to use for the tag, and typing in "
+"something like this:"
+msgstr ""
+"Dies ist viel einfacher, als »svn info« zu benutzen, um die Depot-URL "
+"nachzuschlagen und sie manuell zu ändern, um die URL abzuleiten, die für die "
+"Markierung verwendet wird und etwas wie das folgende zu tippen:"
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:37
+#, no-wrap
+msgid ""
+" svn cp svn+ssh://my.server.example/svn/project/trunk svn+ssh://my.server.example/svn/project/tags/1.0\n"
+"\n"
+msgstr ""
+" svn cp svn+ssh://my.server.example/svn/project/trunk svn+ssh://my.server.example/svn/project/tags/1.0\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:39
+msgid ""
+"svnpath uses a simple heuristic to convert between the trunk, tags, and "
+"branches paths. It replaces the first occurrence of B<trunk>, B<tags>, or "
+"B<branches> with the name of what you're looking for. This will work ok for "
+"most typical Subversion repository layouts."
+msgstr ""
+"svnpath benutzt eine einfache Entscheidungsregel für Konvertierungen "
+"zwischen den Hauptzweig-, Markierungs- und Nebenzweigpfaden. Es ersetzt das "
+"erste Auftreten von B<trunk>, B<tags> oder B<branches> durch den Namen, nach "
+"dem Sie suchen. Dies wird für die Layouts der typischsten Subversion-Depots "
+"gut funktionieren."
+
+#. type: textblock
+#: ../scripts/svnpath.pl:44
+msgid ""
+"If you have an atypical layout and it does not work, you can add a F<~/."
+"svnpath> file. This file is perl code, which can modify the path in $url. "
+"For example, the author uses this file:"
+msgstr ""
+"Falls Sie ein untypisches Layout verwenden und es nicht funktioniert, können "
+"Sie eine F<~/.svnpath>-Datei hinzufügen. Diese Datei ist Perl-Code, der den "
+"Pfad in $url ändern kann. Für diese Datei benutzte der Autor beispielsweise"
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:48
+#, no-wrap
+msgid ""
+" #!/usr/bin/perl\n"
+" # svnpath personal override file\n"
+"\n"
+msgstr ""
+" #!/usr/bin/perl\n"
+" # Svnpath persönliche Datei zum Überschreiben\n"
+"\n"
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:51
+#, no-wrap
+msgid ""
+" # For d-i I sometimes work from a full d-i tree branch. Remove that from\n"
+" # the path to get regular tags or branches directories.\n"
+" $url=~s!d-i/(rc|beta)[0-9]+/!!;\n"
+" $url=~s!d-i/sarge/!!;\n"
+" 1\n"
+"\n"
+msgstr ""
+" # Für d-i arbeite ich manchmal an einem vollständigen d-i-Baumzweig.\n"
+" # Entfernen Sie dies vom Pfad, um reguläre Markierungen und\n"
+" # Zweigverzeichnisse zu erhalten.\n"
+" $url=~s!d-i/(rc|beta)[0-9]+/!!;\n"
+" $url=~s!d-i/sarge/!!;\n"
+" 1\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:91
+msgid "GPL version 2 or later"
+msgstr "GPL Version 2 oder später"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:95
+msgid "Joey Hess <joey@kitenet.net>"
+msgstr "Joey Hess <joey@kitenet.net>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:81
+msgid ""
+"tagpending - tags bugs that are to be closed in the latest changelog as "
+"pending"
+msgstr ""
+"tagpending - markiert Fehler, die im neusten Changelog geschlossen werden "
+"sollen, als anstehend."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:85
+msgid "B<tagpending> [I<options>]"
+msgstr "B<tagpending> [I<Optionen>]"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:89
+msgid ""
+"B<tagpending> parses debian/changelog to determine which bugs would be "
+"closed if the package were uploaded. Each bug is then marked as pending, "
+"using B<bts>(1) if it is not already so."
+msgstr ""
+"B<tagpending> wertet debian/changelog aus, um zu bestimmen, welche Fehler "
+"geschlossen würden, falls das Paket hochgeladen wird. Jeder Fehler wird dann "
+"mittels B<bts>(1) als anstehend (pending) markiert, falls er es nicht "
+"bereits ist."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:99
+msgid "Check whether any bugs require tagging, but do not actually do so."
+msgstr ""
+"prüft, ob irgendwelche Fehler ein Markieren erfordern, markiert dann jedoch "
+"nicht."
+
+#. type: =item
+#: ../scripts/tagpending.pl:101
+msgid "B<-s>, B<--silent>"
+msgstr "B<-s>, B<--silent>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:103
+msgid "Do not output any messages."
+msgstr "gibt keine Nachrichten aus."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:107
+msgid "List each bug checked and tagged in turn."
+msgstr "führt der Reihe nach jeden geprüften und markierten Fehler auf."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:111
+msgid "Do not query the BTS, but (re)tag all bugs closed in the changelog."
+msgstr ""
+"fragt nicht die Fehlerdatenbank ab, markiert aber (erneut) alle im Changelog "
+"geschlossenen Fehler."
+
+#. type: =item
+#: ../scripts/tagpending.pl:113
+msgid "B<--comments>"
+msgstr "B<--comments>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:115
+msgid ""
+"Include the changelog header line and the entries relating to the tagged "
+"bugs as comments in the generated mail. This is the default."
+msgstr ""
+"fügt der erzeugten E-Mail die Changelog-Kopfzeile und die Einträge, die sich "
+"auf die markierten Fehler beziehen, als Kommentare hinzu. Dies ist die "
+"Voreinstellung."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:118
+msgid ""
+"Note that when used in combination with B<--to>, the header line output will "
+"always be that of the most recent version."
+msgstr ""
+"Beachten Sie, dass die Kopfzeilenausgabe, wenn sie in Kombination mit B<--"
+"to> benutzt wird, immer die der aktuellsten Version sein wird."
+
+#. type: =item
+#: ../scripts/tagpending.pl:121
+msgid "B<--no-comments>"
+msgstr "B<--no-comments>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:123
+msgid "Do not include changelog entries in the generated mail."
+msgstr "Die erzeugte E-Mail beinhaltet keine Changelog-Einträge."
+
+#. type: =item
+#: ../scripts/tagpending.pl:125
+msgid "B<-c>, B<--confirm>"
+msgstr "B<-c>, B<--confirm>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:127
+msgid "Tag bugs as both confirmed and pending."
+msgstr ""
+"markiert Fehler sowohl als bestätigt (confirmed) als auch als anstehend "
+"(pending)."
+
+#. type: =item
+#: ../scripts/tagpending.pl:129
+msgid "B<-t>, B<--to> I<version>"
+msgstr "B<-t>, B<--to> I<Version>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:131
+msgid "Parse changelogs for all versions strictly greater than I<version>."
+msgstr ""
+"wertet Changelogs für alle Versionen aus, die echt größer als I<Version> "
+"sind."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:133
+msgid "Equivalent to B<dpkg-parsechangelog>'s B<-v> option."
+msgstr "entspricht der Option B<-v> von B<dpkg-parsechangelog>."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:137
+msgid ""
+"Display the message which would be sent to the BTS and, except when B<--"
+"noact> was used, prompt for confirmation before sending it."
+msgstr ""
+"zeigt die Nachricht, die an die Fehlerdatenbank gesandt würde, und fragt, "
+"wenn nicht B<--noact> verwendet wurde, nach einer Bestätigung, bevor sie "
+"versandt wird."
+
+#. type: =item
+#: ../scripts/tagpending.pl:140
+msgid "B<-w>, B<--wnpp>"
+msgstr "B<-w>, B<--wnpp>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:142
+msgid ""
+"For each bug that does not appear to belong to the current package, check "
+"whether it is filed against wnpp. If so, tag it. This allows e.g. ITAs and "
+"ITPs closed in an upload to be tagged."
+msgstr ""
+"prüft für jeden Fehler, der nicht zum aktuellen Paket zu gehören scheint, ob "
+"er gegen WNPP eingereicht wurde. Falls dies so ist, wird er markiert. Dies "
+"ermöglicht z.B., dass ITAs und ITPs markiert werden, die durch ein Hochladen "
+"geschlossen werden."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:150
+msgid "B<bts>(1) and B<dpkg-parsechangelog>(1)"
+msgstr "B<bts>(1) und B<dpkg-parsechangelog>(1)"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:432
+msgid ""
+"This program is Copyright 2008 by Adam D. Barratt <adam@adam-barratt.org.uk>."
+msgstr ""
+"Dieses Programm unterliegt dem Copyright 2008 von Adam D. Barratt <adam@adam-"
+"barratt.org.uk>."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:435
+msgid ""
+"The shell script tagpending, on which this program is based, is Copyright "
+"2004 by Joshua Kwan <joshk@triplehelix.org> with changes copyright 2004-7 by "
+"their respective authors."
+msgstr ""
+"Das Shell-Skript Tagpending, auf dem dieses Programm basiert, unterliegt dem "
+"Copyright 2004 von Joshua Kwan <joshk@triplehelix.org> mit Änderungen, die "
+"dem Copyright 2004-2007 ihrer jeweiligen Autoren unterliegen."
+
+#. type: textblock
+#: ../scripts/transition-check.pl:25
+msgid "transition-check - check a package list for involvement in transitions"
+msgstr ""
+"transition-check - prüft, ob eine Paketliste an Übergängen beteiligt ist"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:29
+msgid "B<transition-check> B<--help>|B<--version>"
+msgstr "B<transition-check> B<--help>|B<--version>"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:31
+msgid ""
+"B<transition-check> [B<-f>|B<--filename=>I<FILENAME>] [I<source package "
+"list>]"
+msgstr ""
+"B<transition-check> [B<-f>|B<--filename=>I<DATEINAME>] [I<Quellpaketliste>]"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:35
+msgid ""
+"B<transition-check> checks whether any of the listed source packages are "
+"involved in a transition for which uploads to unstable are currently blocked."
+msgstr ""
+"B<transition-check> prüft, ob irgendeins der aufgeführten Pakete an einem "
+"Übergang beteiligt ist, aufgrund dessen das Hochladen nach Unstable derzeit "
+"gesperrt ist."
+
+#. type: textblock
+#: ../scripts/transition-check.pl:39
+msgid ""
+"If neither a filename nor a list of packages is supplied, B<transition-"
+"check> will use the source package name from I<debian/control>."
+msgstr ""
+"Falls weder ein Dateiname noch eine Paketliste mitgegeben wurde, wird "
+"B<transition-check> den Quellpaketnamen aus I<debian/control> verwenden."
+
+#. type: =item
+#: ../scripts/transition-check.pl:46
+msgid "B<-f>, B<--filename=>I<filename>"
+msgstr "B<-f>, B<--filename=>I<Dateiname>"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:48
+msgid ""
+"Read a source package name from I<filename>, which should be a Debian "
+"package control file or I<.changes> file, and add that package to the list "
+"of packages to check."
+msgstr ""
+"liest den Quellpaketnamen aus I<Dateiname>, die eine Debian-Paketsteuerdatei "
+"oder eine I<.changes>-Datei sein sollte und fügt dieses Paket der Paketliste "
+"hinzu, die geprüft werden soll."
+
+#. type: textblock
+#: ../scripts/transition-check.pl:56
+msgid ""
+"The exit status indicates whether any of the packages examined were found to "
+"be involved in a transition."
+msgstr ""
+"Der Exit-Status gibt an, ob bei irgendeinem der untersuchten Pakete "
+"herausgefunden wurde, dass es an einem Übergang beteiligt ist."
+
+#. type: =item
+#: ../scripts/transition-check.pl:61 ../scripts/who-permits-upload.pl:119
+msgid "0Z<>"
+msgstr "0Z<>"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:63
+msgid ""
+"Either B<--help> or B<--version> was used, or none of the packages examined "
+"was involved in a transition."
+msgstr ""
+"Entweder wurde B<--help> oder B<--version> verwendet oder keines der "
+"untersuchten Pakete war an einem Übergang beteiligt."
+
+#. type: =item
+#: ../scripts/transition-check.pl:66 ../scripts/who-permits-upload.pl:123
+msgid "1Z<>"
+msgstr "1Z<>"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:68
+msgid "At least one package examined is involved in a current transition."
+msgstr ""
+"Mindestens eines der untersuchten Pakete ist an einem aktuellen Übergang "
+"beteiligt."
+
+#. type: textblock
+#: ../scripts/transition-check.pl:74
+msgid ""
+"This code is copyright by Adam D. Barratt <I<adam@adam-barratt.org.uk>>, all "
+"rights reserved."
+msgstr ""
+"Dieser Code unterliegt dem Copyright von Adam D. Barratt <I<adam@adam-"
+"barratt.org.uk>>, alle Rechte vorbehalten."
+
+#. type: textblock
+#: ../scripts/transition-check.pl:83
+msgid "Adam D. Barratt <I<adam@adam-barratt.org.uk>>"
+msgstr "Adam D. Barratt <I<adam@adam-barratt.org.uk>>"
+
+#. type: TH
+#: ../scripts/uscan.1:1
+#, no-wrap
+msgid "USCAN"
+msgstr "USCAN"
+
+#. type: Plain text
+#: ../scripts/uscan.1:4
+msgid "uscan - scan/watch upstream sources for new releases of software"
+msgstr ""
+"uscan - durchsucht/beobachtet Quellen der Ursprungsautoren nach neuen "
+"Veröffentlichungen der Software"
+
+#. type: Plain text
+#: ../scripts/uscan.1:6
+msgid "B<uscan> [I<options>] [I<path-to-debian-source-packages> ...]"
+msgstr "B<uscan> [I<Optionen>] [I<Pfad-zu-Debian-Quellpaketen> …]"
+
+#. type: Plain text
+#: ../scripts/uscan.1:16
+msgid ""
+"B<uscan> scans the given directories (or the current directory if none are "
+"specified) and all of their subdirectories for packages containing a control "
+"file I<debian/watch>. Parameters are then read from those control files and "
+"upstream ftp or http sites are inspected for newly available updates (as "
+"compared with the upstream version number retrieved from the I<debian/"
+"changelog> file in the same directory). The newest updates are retrieved "
+"(as determined by their version numbers) and if specified in the I<watch> "
+"file, a program may then be executed on the newly downloaded source."
+msgstr ""
+"B<uscan> durchsucht die angegebenen Verzeichnisse (oder das aktuelle "
+"Verzeichnis, falls keine angegeben wurden) und sämtliche Unterverzeichnisse "
+"nach Paketen, die eine Steuerdatei I<debian/watch> enthalten. Parameter "
+"werden dann aus diesen Steuerdateien gelesen und FTP- oder HTTP-Sites der "
+"Ursprungsautoren werden auf neue verfügbare Aktualisierungen geprüft (indem "
+"sie mit der Versionsnummer der Ursprungsautoren verglichen werden, die "
+"wiederum aus der Datei I<debian/changelog> im gleichen Verzeichnis geholt "
+"wird). Die neusten Aktualisierungen werden heruntergeladen (wie durch ihre "
+"Versionsnummer bestimmt) und falls in der I<watch>-Datei angegeben, könnte "
+"ein Programm mit dem neu heruntergeladenen Quellcode ausgeführt werden."
+
+#. type: Plain text
+#: ../scripts/uscan.1:21
+msgid ""
+"The traditional I<debian/watch> files can still be used, but the current "
+"format offers both simpler and more flexible services. We do not describe "
+"the old format here; for their documentation, see the source code for uscan."
+msgstr ""
+"Die herkömmlichen I<debian/watch>-Dateien können immer noch benutzt werden, "
+"aber das aktuelle Format ist sowohl einfacher als auch flexibler. Hier wird "
+"das alte Format nicht beschrieben; dessen Dokumentation finden Sie im "
+"Quellcode von Uscan."
+
+#. type: SH
+#: ../scripts/uscan.1:22
+#, no-wrap
+msgid "FORMAT of debian/watch files"
+msgstr "FORMAT der debian/watch-Dateien"
+
+#. type: Plain text
+#: ../scripts/uscan.1:28
+msgid ""
+"The following demonstrates the type of entries which can appear in a "
+"I<debian/watch> file. Obviously, not all of these would appear in one such "
+"file; usually, one would have one line for the current package."
+msgstr ""
+"Im Folgenden wird vorgeführt, welche Typen von Einträgen in einer I<debian/"
+"watch>-Datei erscheinen können. Offensichtlich würden nicht alle davon in "
+"einer solchen Datei auftauchen; üblicherweise würde sie eine Zeile für das "
+"aktuelle Paket enthalten."
+
+#. type: Plain text
+#: ../scripts/uscan.1:33
+#, no-wrap
+msgid ""
+"# format version number, currently 3; this line is compulsory!\n"
+"version=3\n"
+msgstr ""
+"# Format der Versionsnummer, derzeit 3; diese Zeile ist vorgeschrieben!\n"
+"version=3\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:35
+#, no-wrap
+msgid "# Line continuations are performed with B<\\e>\n"
+msgstr "# Zeilen werden mit B<\\e> fortgesetzt\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:40
+#, no-wrap
+msgid ""
+"# This is the format for an FTP site:\n"
+"# Full-site-with-pattern [Version [Action]]\n"
+"ftp://ftp.tex.ac.uk/tex-archive/web/c_cpp/cweb/cweb-(.+)\\e.tar\\e.gz \\e\n"
+" debian uupdate\n"
+msgstr ""
+"# Dies ist das Format für eine FTP-Site:\n"
+"# Vollständige-Site-mit-Mustern [Version [Aktion]]\n"
+"ftp://ftp.tex.ac.uk/tex-archive/web/c_cpp/cweb/cweb-(.+)\\e.tar\\e.gz \\e\n"
+" debian uupdate\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:44
+#, no-wrap
+msgid ""
+"# This is the format for an FTP site with regex special characters in\n"
+"# the filename part\n"
+"ftp://ftp.worldforge.org/pub/worldforge/libs/Atlas-C++/transitional/Atlas-C\\e+\\e+-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+"# Dies ist das Format einer FTP-Site mit Metazeichen regulärer Ausdrücke im\n"
+"# Dateinamensteil.\n"
+"ftp://ftp.worldforge.org/pub/worldforge/libs/Atlas-C++/transitional/Atlas-C\\e+\\e+-(.+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:47
+#, no-wrap
+msgid ""
+"# This is the format for an FTP site with directory pattern matching\n"
+"ftp://ftp.nessus.org/pub/nessus/nessus-([\\ed\\e.]+)/src/nessus-core-([\\ed\\e.]+)\\e.tar\\e.gz\n"
+msgstr ""
+"# Dies ist das Format für eine FTP-Site mit Verzeichnismusterabgleich\n"
+"ftp://ftp.nessus.org/pub/nessus/nessus-([\\ed\\e.]+)/src/nessus-core-([\\ed\\e.]+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:51
+#, no-wrap
+msgid ""
+"# This can be used if you want to override the PASV setting\n"
+"# for a specific site\n"
+"# opts=pasv ftp://.../...\n"
+msgstr ""
+"# Dies kann benutzt werden, falls Sie die PASV-Einstellung für eine\n"
+"# spezielle Site außer Kraft setzen möchten.\n"
+"# opts=pasv ftp://…/…\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:57
+#, no-wrap
+msgid ""
+"# This is one format for an HTTP site, which is the same\n"
+"# as the FTP format. B<uscan> starts by downloading the homepage,\n"
+"# obtained by removing the last component of the URL; in this case,\n"
+"# I<http://www.cpan.org/modules/by-module/Text/>\n"
+"http://www.cpan.org/modules/by-module/Text/Text-CSV_XS-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+"# Dies ist ein Format für eine HTTP-Site, das dem Format einer FTP-Site\n"
+"# entspricht. B<uscan> startet mit dem Herunterladen der Homepage, die es\n"
+"# durch Entfernen des letzten URL-Bestandteils erhält, in diesem Fall\n"
+"# I<http://www.cpan.org/modules/by-module/Text/>\n"
+"http://www.cpan.org/modules/by-module/Text/Text-CSV_XS-(.+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:63
+#, no-wrap
+msgid ""
+"# This is a variant HTTP format which allows direct specification of\n"
+"# the homepage:\n"
+"# Homepage Pattern [Version [Action]]\n"
+"http://www.dataway.ch/~lukasl/amph/amph.html \\e\n"
+" files/amphetamine-([\\ed\\e.]*).tar.bz2\n"
+msgstr ""
+"# Dies ist ein abweichendes HTTP-Format, das die direkte Angabe der Homepage\n"
+"# gestattet:\n"
+"# Homepage Muster [Version [Aktion]]\n"
+"http://www.dataway.ch/~lukasl/amph/amph.html \\e\n"
+" files/amphetamine-([\\ed\\e.]*).tar.bz2\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:70
+#, no-wrap
+msgid ""
+"# This one shows that recursive directory scanning works, in either of\n"
+"# two forms, as long as the website can handle requests of the form\n"
+"# I<http://site/inter/mediate/dir/>\n"
+"http://tmrc.mit.edu/mirror/twisted/Twisted/(\\ed\\e.\\ed)/ \\e\n"
+" Twisted-([\\ed\\e.]*)\\e.tar\\e.bz2\n"
+"http://tmrc.mit.edu/mirror/twisted/Twisted/(\\ed\\e.\\ed)/Twisted-([\\ed\\e.]*)\\e.tar\\e.bz2\n"
+msgstr ""
+"# Dies zeigt, dass rekursives Durchsuchen von Verzeichnissen in beiden\n"
+"# Formen funktioniert, solange die Website Anfragen der Form\n"
+"# I<http://site/inter/mediate/dir/> handhaben kann\n"
+"http://tmrc.mit.edu/mirror/twisted/Twisted/(\\ed\\e.\\ed)/ \\e\n"
+" Twisted-([\\ed\\e.]*)\\e.tar\\e.bz2\n"
+"http://tmrc.mit.edu/mirror/twisted/Twisted/(\\ed\\e.\\ed)/Twisted-([\\ed\\e.]*)\\e.tar\\e.bz2\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:73
+#, no-wrap
+msgid ""
+"# For maximum flexibility with upstream tarball formats, use this:\n"
+"http://example.com/example-(\\ed[\\ed.]*)\\e.(?:zip|tgz|tbz2|txz|tar\\e.(?:gz|bz2|xz))\n"
+msgstr ""
+"# Um bei Tarballs der Ursprungsautoren maximale Flexibilität zu erreichen,\n"
+"# nutzen Sie dies:\n"
+"http://example.com/example-(\\ed[\\ed.]*)\\e.(?:zip|tgz|tbz2|txz|tar\\e.(?:gz|bz2|xz))\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:78
+#, no-wrap
+msgid ""
+"# qa.debian.org runs a redirector which allows a simpler form of URL\n"
+"# for SourceForge based projects. The format below will automatically\n"
+"# be rewritten to use the redirector.\n"
+"http://sf.net/audacity/audacity-src-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+"# qa.debian.org führt eine Weiterleitung aus, die eine einfachere Form für\n"
+"# eine URL Sourceforge-basierter Projekte bietet. Das nachfolgende Format\n"
+"# wird automatisch umgeschrieben, um den Weiterleitungsdienst zu verwenden.\n"
+"http://sf.net/audacity/audacity-src-(.+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:84
+#, no-wrap
+msgid ""
+"# For GitHub projects you can use the tags or releases page. Since the archive\n"
+"# URLs use only the version as the name, it is recommended to use a\n"
+"# filenamemangle to adjust the name of the downloaded file:\n"
+"opts=\"filenamemangle=s/(?:.*\\/)?v?(\\ed[\\ed\\e.]*)\\e.tar\\e.gz/E<lt>projectE<gt>-$1.tar.gz/\" \\e\n"
+" https://github.com/E<lt>userE<gt>/E<lt>projectE<gt>/tags (?:.*/)?v?(\\ed[\\ed\\e.]*)\\e.tar\\e.gz\n"
+msgstr ""
+"# Für GitHub-Projekte können Sie die Markierungs- oder Veröffentlichungsseite\n"
+"# verwenden. Da die Archiv-URLs nur die Version als Name benutzen, wird\n"
+"# empfohlen, ein Filenamemangle zum Anpassen des Namens der heruntergeladenen\n"
+"# Datei zu verwenden:\n"
+"opts=\"filenamemangle=s/(?:.*\\/)?v?(\\ed[\\ed\\e.]*)\\e.tar\\e.gz/E<lt>projectE<gt>-$1.tar.gz/\" \\e\n"
+" https://github.com/E<lt>userE<gt>/E<lt>projectE<gt>/tags (?:.*/)?v?(\\ed[\\ed\\e.]*)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:88
+#, no-wrap
+msgid ""
+"# For Google Code projects you should use the downloads page like this:\n"
+"https://code.google.com/p/E<lt>projectE<gt>/downloads/list?can=1 \\e\n"
+" .*/E<lt>projectE<gt>-(\\ed[\\ed.]*)\\e.tar\\e.gz\n"
+msgstr ""
+"# Für Google-Code-Projekte sollten Sie die Downloads-Seite wie folgt benutzen:\n"
+"https://code.google.com/p/E<lt>projectE<gt>/downloads/list?can=1 \\e\n"
+" .*/E<lt>projectE<gt>-(\\ed[\\ed.]*)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:93
+#, no-wrap
+msgid ""
+"# This is the format for a site which has funny version numbers;\n"
+"# the parenthesised groups will be joined with dots to make a\n"
+"# sanitised version number\n"
+"http://www.site.com/pub/foobar/foobar_v(\\ed+)_(\\ed+)\\e.tar\\e.gz\n"
+msgstr ""
+"# Dies ist das Format für eine Site, die komische Versionsnummern hat;\n"
+"# die Klammergruppen werden mit Punkten verbunden, um eine bereinigte\n"
+"# Versionsnummer zu erzeugen\n"
+"http://www.site.com/pub/foobar/foobar_v(\\ed+)_(\\ed+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:101
+#, no-wrap
+msgid ""
+"# This is another way of handling site with funny version numbers,\n"
+"# this time using mangling. (Note that multiple groups will be\n"
+"# concatenated before mangling is performed, and that mangling will\n"
+"# only be performed on the basename version number, not any path\n"
+"# version numbers.)\n"
+"opts=\"uversionmangle=s/^/0.0./\" \\e\n"
+" ftp://ftp.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+"# Dies ist eine weitere Art, eine Site mit komischen Versionsnummern zu\n"
+"# handhaben, diesmal mittels Mangling (Anpassen von Paketnamen). (Beachten\n"
+"# Sie, dass mehrere Gruppen vor dem Mangling zusammengefügt werden und dass\n"
+"# dieses Mangling nur für die Versionsnummer des Basispfads und nicht für\n"
+"# die Versionsnummern aller Pfade durchgeführt wird.)\n"
+"opts=\"uversionmangle=s/^/0.0./\" \\e\n"
+" ftp://ftp.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-(.+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:106
+#, no-wrap
+msgid ""
+"# Similarly, the upstream part of the Debian version number can be\n"
+"# mangled:\n"
+"opts=dversionmangle=s/\\e+dfsg\\ed*$// \\e\n"
+" http://some.site.org/some/path/foobar-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+"# Genauso kann ein Mangling des Teils der Debian-Versionsnummer der\n"
+"# Ursprungsautoren durchgeführt werden:\n"
+"opts=dversionmangle=s/\\e+dfsg\\ed*$// \\e\n"
+" http://some.site.org/some/path/foobar-(.+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:119
+#, no-wrap
+msgid ""
+"# The filename is found by taking the last component of the URL and\n"
+"# removing everything after any 'B<?>'. If this would not make a usable\n"
+"# filename, use filenamemangle. For example,\n"
+"# E<lt>A href=\"http://foo.bar.org/download/?path=&download=foo-0.1.1.tar.gz\"E<gt>\n"
+"# could be handled as:\n"
+"# opts=filenamemangle=s/.*=(.*)/$1/ \\e\n"
+"# http://foo.bar.org/download/\\e?path=&download=foo-(.+)\\e.tar\\e.gz\n"
+"#\n"
+"# E<lt>A href=\"http://foo.bar.org/download/?path=&download_version=0.1.1\"E<gt>\n"
+"# could be handled as:\n"
+"# opts=filenamemangle=s/.*=(.*)/foo-$1\\e.tar\\e.gz/ \\e\n"
+"# http://foo.bar.org/download/\\e?path=&download_version=(.+)\n"
+msgstr ""
+"# Der Dateiname wird ermittelt, indem der letzte Bestandteil der URL\n"
+"# genommen und alles nach einem »B<?>« entfernt wird. Falls dies nicht zu\n"
+"# einem brauchbaren Dateinamen führt, soll Filenamemangle verwendet werden.\n"
+"# Zum Beispiel könnte\n"
+"# E<lt>A href=\"http://foo.bar.org/download/?path=&download=foo-0.1.1.tar.gz\"E<gt>\n"
+"# gehandhabt werden wie\n"
+"# opts=filenamemangle=s/.*=(.*)/$1/ \\e\n"
+"# http://foo.bar.org/download/\\e?path=&download=foo-(.+)\\e.tar\\e.gz.\n"
+"#\n"
+"# E<lt>A href=\"http://foo.bar.org/download/?path=&download_version=0.1.1\"E<gt>\n"
+"# könnte wie\n"
+"# opts=filenamemangle=s/.*=(.*)/foo-$1\\e.tar\\e.gz/ \\e\n"
+"# http://foo.bar.org/download/\\e?path=&download_version=(.+)\n"
+"# gehandhabt werden.\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:127
+#, no-wrap
+msgid ""
+"# The option downloadurlmangle can be used to mangle the URL of the file\n"
+"# to download. This can only be used with http:// URLs. This may be\n"
+"# necessary if the link given on the web page needs to be transformed in\n"
+"# some way into one which will work automatically, for example:\n"
+"# opts=downloadurlmangle=s/prdownload/download/ \\e\n"
+"# http://developer.berlios.de/project/showfiles.php?group_id=2051 \\e\n"
+"# http://prdownload.berlios.de/softdevice/vdr-softdevice-(.+).tgz\n"
+msgstr ""
+"# Die Option »downloadurlmangle« kann benutzt werden, um ein Mangling der\n"
+"# URL der Datei durchzuführen, die heruntergeladen werden soll. Dies kann\n"
+"# nur mit http://-URLs benutzt werden. Dies kann nötig sein, falls der auf\n"
+"# der Webseite angegebene Verweis automatisch auf irgendeine Weise in einen\n"
+"# umgewandelt werden muss, der funktioniert, zum Beispiel:\n"
+"# opts=downloadurlmangle=s/prdownload/download/ \\e\n"
+"# http://developer.berlios.de/project/showfiles.php?group_id=2051 \\e\n"
+"# http://prdownload.berlios.de/softdevice/vdr-softdevice-(.+).tgz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:133
+msgid ""
+"Comment lines may be introduced with a `B<#>' character. Continuation lines "
+"may be indicated by terminating a line with a backslash character."
+msgstr ""
+"Kommentarzeilen können mit einem »B<#>«-Zeichen eingeleitet werden. Zeilen "
+"können mit einem abschließenden Rückwärtsschrägstrich fortgesetzt werden."
+
+#. type: Plain text
+#: ../scripts/uscan.1:137
+msgid ""
+"The first (non-comment) line of the file must begin `version=3'. This "
+"allows for future extensions without having to change the name of the file."
+msgstr ""
+"Die erste (Nicht-Kommentar-)Zeile der Datei muss mit »version=3« beginnen. "
+"Dies ermöglicht zukünftige Erweiterungen, ohne dass der Name der Datei "
+"geändert werden muss."
+
+#. type: Plain text
+#: ../scripts/uscan.1:142
+msgid ""
+"There are two possibilities for the syntax of an HTTP I<watch> file line, "
+"and only one for an FTP line. We begin with the common (and simpler) "
+"format. We describe the optional opts=... first field below, and ignore it "
+"in what follows."
+msgstr ""
+"Es gibt zwei Möglichkeiten für die Syntax einer HTTP-I<watch>-Dateizeile und "
+"nur eine für eine FTP-Zeile. Wir beginnen mit dem üblichen (und einfacheren) "
+"Format. Nachfolgend wird das optionale erste Feld »opts=…« beschrieben und "
+"im Folgenden ignoriert."
+
+#. type: Plain text
+#: ../scripts/uscan.1:159
+msgid ""
+"The first field gives the full pattern of URLs being searched for. In the "
+"case of an FTP site, the directory listing for the requested directory will "
+"be requested and this will be scanned for files matching the basename "
+"(everything after the trailing `B</>'). In the case of an HTTP site, the "
+"URL obtained by stripping everything after the trailing slash will be "
+"downloaded and searched for hrefs (links of the form E<lt>a href=...E<gt>) "
+"to either the full URL pattern given, or to the absolute part (everything "
+"without the http://host.name/ part), or to the basename (just the part after "
+"the final `B</>'). Everything up to the final slash is taken as a verbatim "
+"URL, as long as there are no parentheses (`B<(>' and 'B<)>') in this part of "
+"the URL: if it does, the directory name will be matched in the same way as "
+"the final component of the URL as described below. (Note that regex "
+"metacharacters such as `B<+>' are regarded literally unless they are in a "
+"path component containing parentheses; see the Atlas-C++ example above. "
+"Also, the parentheses must match within each path component.)"
+msgstr ""
+"Das erste Feld gibt das vollständige Muster der URLs an, nach denen gesucht "
+"wird. Im Fall einer FTP-Site wird der Inhalt des abgefragten Verzeichnisses "
+"angefordert und dieser wird nach Dateien mit passendem Basisnamen durchsucht "
+"(alles nach dem letzten »B</>«). Im Falle einer HTTP-Site wird alles nach "
+"dem letzten Schrägstrich weggelassen und die so erhaltene URL "
+"heruntergeladen und nach Hrefs durchsucht (Verweise der Form E<lt>a href=…"
+"E<gt>), entweder nach dem vollständigen angegebenen URL-Muster oder nach dem "
+"absoluten Teil (alles ohne den http://Rechner.Name/-Teil) oder dem "
+"Basisnamen (nur dem Teil nach dem B</> am Ende). Alles bis zum Schrägstrich "
+"am Ende wird als wortgetreue URL genommen, solange in diesem Teil der URL "
+"keine Klammern (»B<(>« und »B<)>«) vorkommen: falls doch, wird der "
+"Verzeichnisname auf die selbe Weise abgeglichen, wie es nachfolgend für den "
+"letzten Bestandteil der URL beschrieben wird. (Beachten Sie, dass Zeichen "
+"mit Sonderbedeutung für reguläre Ausdrücke wie »B<+>« buchstäblich "
+"betrachtet werden, außer wenn sie in einem Pfadbestandteil vorkommen, der "
+"Klammern enthält; siehe das vorhergehende Atlas-C++-Beispiel. Außerdem "
+"müssen die Klammern in jedem Pfadbestandteil paarweise vorkommen.)"
+
+#. type: Plain text
+#: ../scripts/uscan.1:168
+msgid ""
+"The pattern (after the final slash) is a Perl regexp (see B<perlre>(1) for "
+"details of these). You need to make the pattern so tight that it matches "
+"only the upstream software you are interested in and nothing else. Also, "
+"the pattern will be anchored at the beginning and at the end, so it must "
+"match the full filename. (Note that for HTTP URLs, the href may include the "
+"absolute path or full site and path and still be accepted.) The pattern "
+"must contain at least one Perl group as explained in the next paragraph."
+msgstr ""
+"Das Muster (nach dem Schrägstrich am Ende) ist ein regulärer Perl-Ausdruck "
+"(Einzelheiten darüber sind unter B<perlre>(1) zu finden). Sie müssen das "
+"Muster so streng gestalten, dass es nur auf die Software der "
+"Ursprungsautoren passt, an der Sie interessiert sind und auf nichts anderes. "
+"Außerdem wird das Muster an den Anfang und das Ende verankert, so dass es "
+"zum vollständigen Namen passen muss. (Beachten sie, dass die Href für HTTP-"
+"URLs den absoluten Pfad oder die vollständige Site und den Pfad enthalten "
+"kann und immer noch akzeptiert wird.) Das Muster muss mindestens eine Perl-"
+"Gruppe enthalten, wie im nächsten Absatz erläutert."
+
+#. type: Plain text
+#: ../scripts/uscan.1:179
+msgid ""
+"Having got a list of `files' matching the pattern, their version numbers are "
+"extracted by treating the part matching the Perl regexp groups, demarcated "
+"by `B<(...)>', joining them with `B<.>' as a separator, and using the result "
+"as the version number of the file. The version number will then be mangled "
+"if required by the uversionmangle option described below. Finally, the file "
+"versions are then compared to find the one with the greatest version number, "
+"as determined by B<dpkg --compare-versions>. Note that if you need Perl "
+"groups which are not to be used in the version number, either use "
+"`B<(?:...)>' or use the uversionmangle option to clean up the mess!"
+msgstr ""
+"Ist eine Liste von »Dateien« mit passendem Muster vorhanden, werden ihre "
+"Versionsnummern extrahiert, indem der Teil, der zu den Gruppen regulärer "
+"Perl-Ausdrücke passt, gekennzeichnet durch »B<(...)>«, durch Punkte »B<.>« "
+"zusammengesetzt wird. Das Ergebnis wird als Versionsnummer der Datei "
+"verwendet. Dann wird ein Verwürfeln der Versionsnummer durchgeführt, falls "
+"dies von der nachfolgend beschriebenen Option »uversionmangle« benötigt "
+"wird. Am Ende werden die Dateiversionen verglichen, um diejenige mit der "
+"größten Versionsnummer zu finden, wie durch B<dpkg --compare-versions> "
+"festgelegt. Beachten Sie, falls Sie Perl-Gruppen benötigen, die nicht in der "
+"Versionsnummer verwendet werden, dass Sie entweder »B<(?:...)>« oder die "
+"Option »uversionmangle« verwenden, um die Unordnung zu beseitigen."
+
+#. type: Plain text
+#: ../scripts/uscan.1:196
+msgid ""
+"The current (upstream) version can be specified as the second parameter in "
+"the I<watch> file line. If this is I<debian> or absent, then the current "
+"Debian version (as determined by I<debian/changelog>) is used to determine "
+"the current upstream version. The current upstream version may also be "
+"specified by the command-line option B<--upstream-version>, which specifies "
+"the upstream version number of the currently installed package (i.e., the "
+"Debian version number without epoch and Debian revision). The upstream "
+"version number will then be mangled using the dversionmangle option if one "
+"is specified, as described below. If the newest version available is newer "
+"than the current version, then it is downloaded into the parent directory, "
+"unless the B<--report> or B<--report-status> option has been used. Once the "
+"file has been downloaded, then a symlink to the file is made from "
+"I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.{gz|bz2|lzma|xz}> as "
+"described by the help for the B<--symlink> option."
+msgstr ""
+"Die aktuelle Version (der Ursprungsautoren) kann als zweiter Parameter in "
+"der I<watch>-Dateizeile angegeben werden. Falls dies I<debian> ist oder "
+"fehlt, wird die aktuelle Debian-Version (wie durch I<debian/changelog> "
+"bestimmt) benutzt, um die aktuelle Version der Ursprungsautoren zu "
+"bestimmen. Die aktuelle Version der Ursprungsautoren kann außerdem als "
+"Befehlszeilenoption B<--upstream-version> angegeben werden, die die "
+"Versionsnummer der Ursprungsautoren des aktuell installierten Pakets angibt "
+"(d.h. die Debian-Versionsnummer ohne Epoche und Debian-Revision). Für die "
+"Versionsnummer der Ursprungsautoren wird dann mittels der Option "
+"»dversionmangle«, falls angegeben, ein Mangling durchgeführt, wie "
+"nachfolgend beschrieben. Falls die neuste verfügbare Version neuer ist als "
+"die aktuelle Version, wird sie in das übergeordnete Verzeichnis "
+"heruntergeladen, es sei denn, die Optionen B<--report> oder B<--report-"
+"status> werden verwendet. Sobald die Datei heruntergeladen wurde, wird ein "
+"symbolischer Verweis zur Datei von I<E<lt>PaketE<gt>_E<lt>VersionE<gt>.orig."
+"tar.{gz|bz2|lzma|xz}> erstellt, wie in der Hilfe für die Option B<--symlink> "
+"beschrieben."
+
+#. type: Plain text
+#: ../scripts/uscan.1:199
+msgid ""
+"Finally, if a third parameter (an action) is given in the I<watch> file "
+"line, this is taken as the name of a command, and the command"
+msgstr ""
+"Falls schlussendlich ein dritter Parameter (eine Aktion) in der I<watch>-"
+"Dateizeile angegeben wurde, wird dieser als Name des Befehls genommen und "
+"der Befehl"
+
+#. type: Plain text
+#: ../scripts/uscan.1:201
+#, no-wrap
+msgid " I<command >B<--upstream-version>I< version filename>\n"
+msgstr " I<Befehl >B<--upstream-version>I< Version Dateiname>\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:210
+msgid ""
+"is executed, using either the original file or the symlink name. A common "
+"such command would be B<uupdate>(1). (Note that the calling syntax was "
+"slightly different when using I<watch> file without a `B<version=>...' line; "
+"there the command executed was `I<command filename version>'.) If the "
+"command is B<uupdate>, then the B<--no-symlink> option is given to "
+"B<uupdate> as a first option, since any requested symlinking will already be "
+"done by B<uscan>."
+msgstr ""
+"wird ausgeführt, entweder mit der Originaldatei oder des Namens des "
+"symbolischen Verweises. Ein üblicher derartiger Befehl wäre B<uupdate>(1). "
+"(Beachten Sie, dass sich die Aufrufsyntax geringfügig unterscheidet, wenn "
+"die I<watch>-Datei ohne eine »B<version=>…«-Zeile benutzt wird; der dort "
+"ausgeführte Befehl war »I<Befehl Dateiname Version>«.) Falls der Befehl "
+"B<uupdate> ist, wird die Option B<--no-symlink> als erste Option an "
+"B<uupdate> übergeben, da das angefragte Erstellen eines symbolischen "
+"Verweises bereits durch B<uscan> erledigt wurde."
+
+#. type: Plain text
+#: ../scripts/uscan.1:226
+msgid ""
+"The alternative version of the I<watch> file syntax for HTTP URLs is as "
+"follows. The first field is a homepage which should be downloaded and then "
+"searched for hrefs matching the pattern given in the second field. (Again, "
+"this pattern will be anchored at the beginning and the end, so it must match "
+"the whole href. If you want to match just the basename of the href, you can "
+"use a pattern like \".*/name-(.+)\\e.tar\\e.gz\" if you know that there is a "
+"full URL, or better still: \"(?:.*/)?name-(.+)\\e.tar\\e.gz\" if there may "
+"or may not be. Note the use of (?:...) to avoid making a backreference.) "
+"If any of the hrefs in the homepage which match the (anchored) pattern are "
+"relative URLs, they will be taken as being relative to the base URL of the "
+"homepage (i.e., with everything after the trailing slash removed), or "
+"relative to the base URL specified in the homepage itself with a E<lt>base "
+"href=\"...\"E<gt> tag. The third and fourth fields are the version number "
+"and action fields as before."
+msgstr ""
+"Die alternative Variante der I<watch>-Dateisyntax für HTTP-URLs ist wie "
+"folgt: Das erste Feld ist die Homepage, die heruntergeladen und dann nach "
+"Hrefs durchsucht werden soll, die dem im zweiten Feld übergebenen Muster "
+"entsprechen. (Dieses Muster wird wieder an den Anfang und das Ende "
+"verankert, so dass es der ganzen Href entsprechen muss. Falls Sie nur den "
+"Basisnamen der Href vergleichen möchten, können Sie ein Muster wie ».*/Name-"
+"(.+)\\e.tar\\e.gz« verwenden, falls Sie wissen, dass dort eine vollständige "
+"URL vorliegt oder besser immer noch: »(?:.*/)?Name-(.+)\\e.tar\\e.gz«, falls "
+"dies der Fall ist oder nicht. Beachten Sie, (?:...) zu benutzen, um einen "
+"Rückwärtsbezug zu vermeiden.) Falls irgendwelche der Hrefs auf der Homepage, "
+"die zum (verankerten) Muster passen, relative URLs sind, werden sie als "
+"relativ zur Basis-URL der Homepage betrachtet (d.h. mit allem nach dem "
+"abschließenden Schrägstrich entfernt) oder relativ zur auf der Homepage "
+"selbst mit einer als E<lt>base href=\"…\"E<gt>-Markierung angegebenen Basis-"
+"URL. Das dritte und vierte Feld sind die Felder Versionsnummer und Aktion "
+"wie vorher."
+
+#. type: SH
+#: ../scripts/uscan.1:226
+#, no-wrap
+msgid "PER-SITE OPTIONS"
+msgstr "OPTIONEN JE SITE"
+
+#. type: Plain text
+#: ../scripts/uscan.1:232
+msgid ""
+"A I<watch> file line may be prefixed with `B<opts=>I<options>', where "
+"I<options> is a comma-separated list of options. The whole I<options> "
+"string may be enclosed in double quotes, which is necessary if I<options> "
+"contains any spaces. The recognised options are as follows:"
+msgstr ""
+"Einer I<watch>-Dateizeile kann »B<opts=>I<Optionen>« vorangestellt werden, "
+"wobei I<Optionen> eine durch Kommas getrennte Liste von Optionen ist. Die "
+"ganze I<Optionen>-Zeichenkette kann in doppelte Anführungszeichen "
+"eingeschlossen werden, was nötig ist, wenn I<Optionen> irgendwelche "
+"Leerzeichen enthalten. Folgende Optionen werden erkannt:"
+
+#. type: TP
+#: ../scripts/uscan.1:232
+#, no-wrap
+msgid "B<active> and B<passive> (or B<pasv>)"
+msgstr "B<active> und B<passive> (oder B<pasv>)"
+
+#. type: Plain text
+#: ../scripts/uscan.1:237
+msgid ""
+"If used on an FTP line, these override the choice of whether to use PASV "
+"mode or not, and force the use of the specified mode for this site."
+msgstr ""
+"Falls dies auf einer FTP-Zeile verwendet wird, setzt es die Wahl außer "
+"Kraft, ob der PASV-Modus verwendet wird oder nicht, und erzwingt die "
+"Benutzung des angegebenen Modus für diese Site."
+
+#. type: TP
+#: ../scripts/uscan.1:237
+#, no-wrap
+msgid "B<uversionmangle=>I<rules>"
+msgstr "B<uversionmangle=>I<Regeln>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:244
+msgid ""
+"This is used to mangle the upstream version number as matched by the "
+"ftp://... or http:// rules as follows. First, the I<rules> string is split "
+"into multiple rules at every `B<;>'. Then the upstream version number is "
+"mangled by applying I<rule> to the version, in a similar way to executing "
+"the Perl command:"
+msgstr ""
+"Dies wird für das Mangling der Versionsnummer der Ursprungsautoren "
+"verwendet, wie sie durch die ftp://…- oder http://-Regeln wie folgt "
+"abgeglichen wird. Zuerst wird die I<Regel>-Zeichenkette bei jedem »B<;>« in "
+"mehrere Regeln unterteilt. Dann wird ein Mangling der Versionsnummer der "
+"Ursprungsautoren durchgeführt, indem I<Regel> auf die Version in ähnlicher "
+"Weise wie für das Ausführen des Perl-Befehls"
+
+#. type: Plain text
+#: ../scripts/uscan.1:246
+#, no-wrap
+msgid " $version =~ I<rule>;\n"
+msgstr " $version =~ I<Regel>;\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:251
+msgid ""
+"for each rule. Thus, suitable rules might be `B<s/^/0./>' to prepend `B<0."
+">' to the version number and `B<s/_/./g>' to change underscores into "
+"periods. Note that the I<rule> string may not contain commas; this should "
+"not be a problem."
+msgstr ""
+"auf jede Regel angewandt wird. Daher könnten geeignete Regeln »B<s/^/0./>« "
+"sein, um B<0.> an die Versionsnummer anzuhängen und »B<s/_/./g>«, um "
+"Unterstriche in Punkte zu ändern. Beachten Sie, dass die I<Regel>-"
+"Zeichenkette keine Kommas enthalten darf; dies sollte kein Problem sein."
+
+#. type: Plain text
+#: ../scripts/uscan.1:256
+msgid ""
+"I<rule> may only use the 'B<s>', 'B<tr>' and 'B<y>' operations. When the "
+"'B<s>' operation is used, only the 'B<g>', 'B<i>' and 'B<x>' flags are "
+"available and I<rule> may not contain any expressions which have the "
+"potential to execute code (i.e. the (?{}) and (??{}) constructs are not "
+"supported)."
+msgstr ""
+"I<Regel> kann nur die Operationen »B<s>«, »B<tr>« und »B<y>« verwenden. Wenn "
+"die Operation »B<s>« benutzt wird, sind nur die Schalter »B<g>«, »B<i>« und "
+"»B<x>« verfügbar und I<Regel> kann keine Ausdrücke enthalten, die die "
+"Möglichkeit haben, Code auszuführen (d.h. die Gebilde (?{}) und (??{}) "
+"werden nicht unterstützt."
+
+#. type: Plain text
+#: ../scripts/uscan.1:261
+msgid ""
+"If the 'B<s>' operation is used, the replacement can contain backreferences "
+"to expressions within parenthesis in the matching regexp, like `B<s/-"
+"alpha(\\ed*)/.a$1/>'. These backreferences must use the `B<$1>' syntax, as "
+"the `B<\\e1>' syntax is not supported."
+msgstr ""
+"Falls die Operation »B<s>« benutzt wird, kann die Ersetzung Rückwärtsbezüge "
+"auf Ausdrücke innerhalb von Klammern im passenden regulären Ausdruck wie "
+"»B<s/-alpha(\\ed*)/.a$1/>« enthalten. Diese Rückwärtsbezüge müssen die »B<"
+"$1>«-Syntax verwenden, da die »B<\\e1>«-Syntax nicht unterstützt wird."
+
+#. type: TP
+#: ../scripts/uscan.1:261
+#, no-wrap
+msgid "B<dversionmangle=>I<rules>"
+msgstr "B<dversionmangle=>I<Regeln>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:269
+msgid ""
+"This is used to mangle the Debian version number of the currently installed "
+"package in the same way as the B<uversionmangle> option. Thus, a suitable "
+"rule might be `B<s/\\+dfsg\\ed*$//>' to remove a `B<+dfsg1>' suffix from the "
+"Debian version number, or to handle `B<.pre6>' type version numbers. Again, "
+"the I<rules> string may not contain commas; this should not be a problem."
+msgstr ""
+"Dies wird für das Mangling der Debian-Versionsnummer des aktuell "
+"installierten Pakets auf die gleiche Art wie bei der Option "
+"B<uversionmangle> benutzt. Daher könnte eine geeignete Regel »B<s/\\e+dfsg"
+"\\ed*$//>« lauten, um eine »B<+dfsg1>«-Endung von der Debian-Versionsnummer "
+"zu entfernen oder Versionsnummern des Typs »B<.pre6>« zu handhaben. Die "
+"I<Regeln>-Zeichenkette darf wieder Kommas enthalten; dies sollte kein "
+"Problem sein."
+
+#. type: TP
+#: ../scripts/uscan.1:269
+#, no-wrap
+msgid "B<versionmangle=>I<rules>"
+msgstr "B<versionmangle=>I<Regeln>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:274
+msgid ""
+"This is a syntactic shorthand for B<uversionmangle=>I<rules>B<,"
+"dversionmangle=>I<rules>, applying the same rules to both the upstream and "
+"Debian version numbers."
+msgstr ""
+"Dies ist eine syntaktisches Abkürzung für B<uversionmangle=>I<Regeln>B<,"
+"dversionmangle=>I<Regeln>, es wendet die selben Regeln sowohl auf die "
+"Versionsnummern der Ursprungsautoren als auch auf die von Debian an."
+
+#. type: TP
+#: ../scripts/uscan.1:274
+#, no-wrap
+msgid "B<filenamemangle=>I<rules>"
+msgstr "B<filenamemangle=>I<Regeln>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:280
+msgid ""
+"This is used to mangle the filename with which the downloaded file will be "
+"saved, and is parsed in the same way as the B<uversionmangle> option. "
+"Examples of its use are given in the examples section above."
+msgstr ""
+"Dies wird für das Mangling des Dateinamens benutzt, unter dem die "
+"heruntergeladene Datei gespeichert wird und auf die selbe Weise ausgewertet "
+"wie die Option B<uversionmangle>. Beispiele für die Verwendung finden sich "
+"im vorhergehenden Beispielabschnitt."
+
+#. type: TP
+#: ../scripts/uscan.1:280
+#, no-wrap
+msgid "B<downloadurlmangle=>I<rules>"
+msgstr "B<downloadurlmangle=>I<Regeln>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:288
+msgid ""
+"This is used to mangle the URL to be used for the download. The URL is "
+"first computed based on the homepage downloaded and the pattern matched, "
+"then the version number is determined from this URL. Finally, any rules "
+"given by this option are applied before the actual download attempt is made. "
+"An example of its use is given in the examples section above."
+msgstr ""
+"Dies wird für das Mangling der URL verwendet, die zum Herunterladen benutzt "
+"wird. Die URL wird zuerst basierend auf der heruntergeladenen Homepage und "
+"des passenden Musters berechnet, dann wird die Versionsnummer aus dieser URL "
+"bestimmt. Am Ende werden alle durch diese Option angegebenen Regeln "
+"angewandt, bevor tatsächlich versucht wird, sie herunterzuladen. Ein "
+"Beispiel für die Verwendung findet sich im vorhergehenden Beispielabschnitt."
+
+#. type: TP
+#: ../scripts/uscan.1:288
+#, no-wrap
+msgid "B<pgpsigurlmangle=>I<rules>"
+msgstr "B<pgpsigurlmangle=>I<Regeln>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:299
+msgid ""
+"If present, the supplied rules will be applied to the downloaded URL (after "
+"any downloadurlmangle rules, if present) to craft a new URL that will be "
+"used to fetch the detached OpenPGP signature file for the upstream tarball. "
+"Some common rules might be `B<s/$/.asc/>' or `B<s/$/.pgp/>' or `B<s/$/.gpg/"
+">'. This signature must be made by a key found in the keyring B<debian/"
+"upstream/signing-key.pgp> or the armored keyring B<debian/upstream/signing-"
+"key.asc>. If it is not valid, or not made by one of the listed keys, uscan "
+"will report an error."
+msgstr ""
+"Falls vorhanden, werden die mitgelieferten Regeln auf die heruntergeladene "
+"URL angewandt (nach irgendwelchen Downloadurlmangle-Regeln), um eine neue "
+"URL zu erstellen, die zum Abholen der separaten OpenPGP-Signaturdatei für "
+"den Tarball der Ursprungsautoren benutzt wird. Einige gebräuchliche Regeln "
+"könnten »B<s/$/.asc/>«, »B<s/$/.pgp/>« oder »B<s/$/.gpg/>« lauten. Diese "
+"Signatur muss durch einen Schlüssel erstellt worden sein, der im "
+"Schlüsselbund B<debian/upstream-signing-key.pgp> oder im gehärteten "
+"Schlüsselbund B<debian/upstream/signing-key.asc> zu finden ist. Falls sie "
+"ungültig ist oder nicht durch einen der aufgeführten Schlüssel erstellt "
+"wurde, wird Uscan einen Fehler melden."
+
+#. type: TP
+#: ../scripts/uscan.1:299
+#, no-wrap
+msgid "B<repacksuffix=>I<suffix>"
+msgstr "B<repacksuffix=>I<Endung>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:306
+msgid ""
+"If the upstream sources are modified because I<debian/copyright> contains "
+"the B<Files-Excluded> field, I<suffix> will be appended to the upstream "
+"version of the repacked tar archive. Common suffixes might be B<+dfsg1> to "
+"indicate the removal of non-DFSG code or B<+ds1> to indicate the removal of "
+"embedded (DFSG) code copies."
+msgstr ""
+"Falls die Quellen der Originalautoren verändert wurden, weil I<debian/"
+"copyright> das Feld B<Files-Excluded> enthält, wird I<Endung> an die Version "
+"der Originalautoren des neu gepackten Tar-Archivs gehängt. Gebräuchliche "
+"Endungen könnten B<+dfsg1> zum Anzeigen von Nicht-DFSG-Code oder B<+ds1> "
+"sein, das anzeigt, dass eingebettete (DFSG-)Kopien des Codes entfernt wurden."
+
+#. type: Plain text
+#: ../scripts/uscan.1:321
+msgid ""
+"Similarly to several other scripts in the B<devscripts> package, B<uscan> "
+"explores the requested directory trees looking for I<debian/changelog> and "
+"I<debian/watch> files. As a safeguard against stray files causing potential "
+"problems, and in order to promote efficiency, it will examine the name of "
+"the parent directory once it finds the I<debian/changelog> file, and check "
+"that the directory name corresponds to the package name. It will only "
+"attempt to download newer versions of the package and then perform any "
+"requested action if the directory name matches the package name. Precisely "
+"how it does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and B<--"
+"check-dirname-regex>."
+msgstr ""
+"Ähnlich wie viele andere Skripte im Paket B<devscripts>, erkundet B<uscan> "
+"die abgefragten Verzeichnisbäume nach I<debian/changelog>- und I<debian/"
+"watch>-Dateien. Als eine Schutzmaßnahme gegen verirrte Dateien, die "
+"potenziell Probleme bereiten und um die Leistung zu steigern, wird es den "
+"Namen des übergeordneten Verzeichnisses untersuchen, sobald es eine I<debian/"
+"changelog>-Datei findet, und prüfen, ob der Verzeichnisname dem Paketnamen "
+"entspricht. Es wird nur versuchen, neuere Versionen des Pakets "
+"herunterzuladen und dann jede angefragte Aktion durchführen, falls der "
+"Verzeichnisname zum Paketnamen passt. Wie dies genau geschieht, wird durch "
+"die beiden Konfigurationsdateivariablen B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> "
+"und B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> sowie ihre entsprechenden "
+"Befehlszeilenoptionen B<--check-dirname-level> und B<--check-dirname-regex> "
+"geregelt."
+
+#. type: Plain text
+#: ../scripts/uscan.1:332
+msgid ""
+"Only check the directory name if we have had to change directory in our "
+"search for I<debian/changelog>, that is, the directory containing I<debian/"
+"changelog> is not the directory from which B<uscan> was invoked. This is "
+"the default behaviour."
+msgstr ""
+"prüft nur den Verzeichnisnamen, falls bei der Suche nach I<debian/changelog> "
+"das Verzeichnis geändert werden muss, das heißt, das Verzeichnis, das "
+"I<debian/changelog> enthält, nicht das Verzeichnis ist, aus dem B<uscan> "
+"aufgerufen wurde. Dies ist das Standardverhalten."
+
+#. type: Plain text
+#: ../scripts/uscan.1:350
+msgid "This script will perform a fully automatic upstream update."
+msgstr ""
+"Dieses Skript wird eine vollautomatische Aktualisierung aus den "
+"Ursprungsquellen durchführen."
+
+#. type: Plain text
+#: ../scripts/uscan.1:358
+#, no-wrap
+msgid ""
+"#!/bin/sh -e\n"
+"# called with '--upstream-version' E<lt>versionE<gt> E<lt>fileE<gt>\n"
+"uupdate \"$@\"\n"
+"package=`dpkg-parsechangelog | sed -n 's/^Source: //p'`\n"
+"cd ../$package-$2\n"
+"debuild\n"
+msgstr ""
+"#!/bin/sh -e\n"
+"# wird aufgerufen mit »--upstream-version« E<lt>VersionE<gt> E<lt>DateiE<gt>\n"
+"uupdate \"$@\"\n"
+"package=`dpkg-parsechangelog | sed -n 's/^Source: //p'`\n"
+"cd ../$package-$2\n"
+"debuild\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:363
+msgid ""
+"Note that we don't call B<dupload> or B<dput> automatically, as the "
+"maintainer should perform sanity checks on the software before uploading it "
+"to Debian."
+msgstr ""
+"Beachten Sie, dass B<dupload> oder B<dput> nicht automatisch aufgerufen "
+"werden, da der Betreuer Plausibilitätsprüfungen für die Software durchführen "
+"sollte, bevor sie nach Debian hochgeladen wird."
+
+#. type: TP
+#: ../scripts/uscan.1:364
+#, no-wrap
+msgid "B<--report>, B<--no-download>"
+msgstr "B<--report>, B<--no-download>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:367
+msgid ""
+"Only report about available newer versions but do not download anything."
+msgstr ""
+"berichtet nur über neue verfügbare Versionen, lädt aber nichts herunter."
+
+#. type: TP
+#: ../scripts/uscan.1:367
+#, no-wrap
+msgid "B<--report-status>"
+msgstr "B<--report-status>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:371
+msgid ""
+"Report on the status of all packages, even those which are up-to-date, but "
+"do not download anything."
+msgstr ""
+"berichtet über den Zustand aller Pakete, sogar von denen, die aktuell sind, "
+"lädt aber nichts herunter."
+
+#. type: TP
+#: ../scripts/uscan.1:371
+#, no-wrap
+msgid "B<--download>"
+msgstr "B<--download>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:374
+msgid "Report and download. (This is the default behaviour.)"
+msgstr "berichtet und lädt herunter. (Dies ist das Standardverhalten.)"
+
+#. type: TP
+#: ../scripts/uscan.1:374
+#, no-wrap
+msgid "B<--destdir>"
+msgstr "B<--destdir>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:379
+msgid ""
+"Path of directory to which to download. If the specified path is not "
+"absolute, it will be relative to one of the current directory or, if "
+"directory scanning is enabled, the package's source directory."
+msgstr ""
+"Pfad des Verzeichnisses in das heruntergeladen werden soll. Falls der "
+"angegebene Pfad nicht absolut ist, wird er entweder relativ zum aktuellen "
+"Verzeichnis oder, falls Verzeichnisauswertung aktiviert ist, zum "
+"Quellverzeichnis des Pakets sein."
+
+#. type: TP
+#: ../scripts/uscan.1:379
+#, no-wrap
+msgid "B<--force-download>"
+msgstr "B<--force-download>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:382
+msgid ""
+"Download upstream even if up to date (will not overwrite local files, "
+"however)"
+msgstr ""
+"lädt von der Ursprungsquelle sogar dann herunter, wenn es aktuell ist (wird "
+"jedoch keine lokalen Dateien überschreiben)."
+
+#. type: TP
+#: ../scripts/uscan.1:382
+#, no-wrap
+msgid "B<--pasv>"
+msgstr "B<--pasv>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:385
+msgid "Force PASV mode for FTP connections."
+msgstr "erzwingt bei FTP-Verbindungen den PASV-Modus."
+
+#. type: TP
+#: ../scripts/uscan.1:385
+#, no-wrap
+msgid "B<--no-pasv>"
+msgstr "B<--no-pasv>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:388
+msgid "Do not use PASV mode for FTP connections."
+msgstr "verwendet bei FTP-Verbindungen nicht den PASV-Modus."
+
+#. type: TP
+#: ../scripts/uscan.1:388
+#, no-wrap
+msgid "B<--timeout> I<N>"
+msgstr "B<--timeout> I<N>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:391
+msgid "Set timeout to N seconds (default 20 seconds)."
+msgstr "setzt die Zeitüberschreitung auf N Sekunden (Vorgabe 20 Sekunden)."
+
+#. type: TP
+#: ../scripts/uscan.1:391 ../scripts/uupdate.1:74
+#, no-wrap
+msgid "B<--no-symlink>"
+msgstr "B<--no-symlink>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:394
+msgid "Do not call B<mk-origtargz>."
+msgstr "ruft nicht B<mk-origtargz> auf."
+
+#. type: Plain text
+#: ../scripts/uscan.1:396
+msgid "The following options are passed to B<mk-origtargz>:"
+msgstr "Die folgenden Optionen werden an B<mk-origtargz> übergeben:"
+
+#. type: Plain text
+#: ../scripts/uscan.1:402
+msgid ""
+"Make I<orig.tar.gz> (with the appropriate extension) symlinks to the "
+"downloaded files. (This is the default behaviour.)"
+msgstr ""
+"erstellt symbolische I<orig.tar.gz>-Verweise (mit passender Endung) auf die "
+"heruntergeladenen Dateien. (Dies ist das Standardverhalten.)"
+
+#. type: Plain text
+#: ../scripts/uscan.1:405
+msgid "Instead of symlinking as described above, copy the downloaded files."
+msgstr ""
+"kopiert die heruntergeladenen Dateien, statt, wie oben beschrieben, "
+"symbolische Verweise darauf zu erstellen."
+
+#. type: Plain text
+#: ../scripts/uscan.1:408
+msgid "Instead of symlinking as described above, rename the downloaded files."
+msgstr ""
+"benennt die heruntergeladenen Dateien um, statt, wie oben beschrieben, "
+"symbolische Verweise darauf zu erstellen."
+
+#. type: Plain text
+#: ../scripts/uscan.1:414
+msgid ""
+"After having downloaded an lzma tar, xz tar, bzip tar or zip archive, repack "
+"it to a gzip tar archive, if required. The B<unzip> package must be "
+"installed in order to repack .zip archives, the B<xz-utils> package must be "
+"installed to repack lzma or xz tar archives."
+msgstr ""
+"Nachdem ein LZMA-Tar-, Xz-Tar, Bzip-Tar oder Zip-Archiv heruntergeladen "
+"wurde, wird es neu als Gzip-Tar-Archiv gepackt, fall nötig. Um die .zip-"
+"Archive neu zu packen, muss das Paket B<unzip> installiert sein, um LZMA- "
+"oder XZ-Archive neu zu packen, muss das Paket B<xz-utils> installiert sein."
+
+#. type: Plain text
+#: ../scripts/uscan.1:420
+msgid ""
+"In the case where the upstream sources are repacked (either because B<--"
+"repack> option is given or I<debian/copyright> contains the field B<Files-"
+"Excluded>), it is possible to control the compression method via the "
+"parameter (defaults to B<gzip>)."
+msgstr ""
+"Falls die Quellen der Originalautoren neu gepackt wurden (entweder weil die "
+"Option B<--repack> angegeben wurde oder I<debian/copyright> das Feld B<Files-"
+"Excluded> enthält), ist es möglich, die Komprimierungsmethode über diesen "
+"Parameter zu steuern (Voreinstellung ist B<gzip>)."
+
+#. type: TP
+#: ../scripts/uscan.1:420
+#, no-wrap
+msgid "B<--copyright-file >I<copyright-file>"
+msgstr "B<--copyright-file> I<Copyright-Datei>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:424
+msgid ""
+"Exclude files mentioned in B<Files-Excluded> in the given copyright file. "
+"This is useful when running uscan not within a source package directory."
+msgstr ""
+"schließt Dateien aus, die in B<Files-Excluded> in der angegebenen Copyright-"
+"Datei erwähnt werden. Dies ist nützlich, wenn Uscan nicht innerhalb eines "
+"Quellpaketverzeichnisses ausgeführt wird."
+
+#. type: TP
+#: ../scripts/uscan.1:425
+#, no-wrap
+msgid "B<--dehs>"
+msgstr "B<--dehs>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:428
+msgid "Use an XML format for output, as required by the DEHS system."
+msgstr ""
+"benutzt für die Ausgabe ein XML-Format, wie es vom DEHS-System benötigt wird."
+
+#. type: TP
+#: ../scripts/uscan.1:428
+#, no-wrap
+msgid "B<--no-dehs>"
+msgstr "B<--no-dehs>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:431
+msgid ""
+"Use the traditional uscan output format. (This is the default behaviour.)"
+msgstr ""
+"verwendet das traditionelle Uscan-Ausgabeformat. (Dies ist das "
+"Standardverhalten.)"
+
+#. type: Plain text
+#: ../scripts/uscan.1:440
+msgid ""
+"Specify the name of the package to check for rather than examining I<debian/"
+"changelog>; this requires the B<--upstream-version> (unless a version is "
+"specified in the I<watch> file) and B<--watchfile> options as well. "
+"Furthermore, no directory scanning will be done and nothing will be "
+"downloaded. This option is probably most useful in conjunction with the "
+"DEHS system (and B<--dehs>)."
+msgstr ""
+"gibt den Namen des zu prüfenden Pakets an, anstatt I<debian/changelog> zu "
+"untersuchen; dies erfordert die Optionen B<--upstream-version> (es sei denn, "
+"in der Datei I<watch> wurde eine Version angegeben) sowie B<--watchfile>. "
+"Zudem wird kein Verzeichnis durchsucht und es wird nichts heruntergeladen. "
+"Diese Option ist wahrscheinlich in Verbindung mit dem DEHS-System (und B<--"
+"dehs>) an nützlichsten."
+
+#. type: TP
+#: ../scripts/uscan.1:440
+#, no-wrap
+msgid "B<--upstream-version> I<upstream-version>"
+msgstr "B<--upstream-version> I<Version_der_Ursprungsautoren>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:445
+msgid ""
+"Specify the current upstream version rather than examine the I<watch> file "
+"or I<changelog> to determine it. This is ignored if a directory scan is "
+"being performed and more than one I<watch> file is found."
+msgstr ""
+"gibt die aktuelle Version der Ursprungsautoren an, statt die I<watch>- oder "
+"I<changelog>-Datei zu untersuchen, um sie zu bestimmen. Dies wird ignoriert, "
+"falls ein Verzeichnis-Scan durchgeführt und mehr als eine I<watch>-Datei "
+"gefunden wird."
+
+#. type: TP
+#: ../scripts/uscan.1:445
+#, no-wrap
+msgid "B<--watchfile> I<watchfile>"
+msgstr "B<--watchfile> I<watch-Datei>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:452
+msgid ""
+"Specify the I<watchfile> rather than perform a directory scan to determine "
+"it. If this option is used without B<--package>, then B<uscan> must be "
+"called from within the Debian package source tree (so that I<debian/"
+"changelog> can be found simply by stepping up through the tree)."
+msgstr ""
+"gibt die I<watch-Datei> an, statt einen Verzeichnis-Scan durchzuführen, um "
+"sie zu bestimmen. Falls diese Option ohne B<--package> benutzt wird, muss "
+"B<uscan> aus dem Debian-Paketquellenverzeichnisbaum aufgerufen werden (so "
+"dass I<debian/changelog> einfach beim Hochlaufen des Verzeichnisbaums "
+"gefunden werden kann)."
+
+#. type: TP
+#: ../scripts/uscan.1:452
+#, no-wrap
+msgid "B<--download-version> I<version>"
+msgstr "B<--download-version> I<Version>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:456
+msgid ""
+"Specify the version which the upstream release must match in order to be "
+"considered, rather than using the release with the highest version."
+msgstr ""
+"gibt die Version an, zu der die Veröffentlichung der Ursprungsautoren passen "
+"muss, um anstelle der Veröffentlichung mit der höchsten Versionsnummer "
+"berücksichtigt zu werden."
+
+#. type: TP
+#: ../scripts/uscan.1:456
+#, no-wrap
+msgid "B<--download-current-version>"
+msgstr "B<--download-current-version>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:459
+msgid "Download the currently packaged version"
+msgstr "lädt die aktuelle paketierte Version herunter."
+
+#. type: Plain text
+#: ../scripts/uscan.1:462
+msgid "Give verbose output."
+msgstr "erzeugt eine detaillierte Ausgabe."
+
+#. type: TP
+#: ../scripts/uscan.1:462
+#, no-wrap
+msgid "B<--no-verbose>"
+msgstr "B<--no-verbose>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:465
+msgid "Don't give verbose output. (This is the default behaviour.)"
+msgstr "erzeugt keine detaillierte Ausgabe. (Dies ist das Standardverhalten.)"
+
+#. type: TP
+#: ../scripts/uscan.1:465
+#, no-wrap
+msgid "B<--no-exclusion>"
+msgstr "B<--no-exclusion>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:469
+msgid ""
+"Do not automatically exclude files mentioned in I<debian/copyright> field "
+"B<Files-Excluded>"
+msgstr ""
+"schließt Dateien, die in I<debian/copyright> im Feld B<Files-Excluded> "
+"erwähnt wurden, nicht automatisch aus."
+
+#. type: TP
+#: ../scripts/uscan.1:469
+#, no-wrap
+msgid "B<--debug>"
+msgstr "B<--debug>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:472
+msgid "Dump the downloaded web pages to stdout for debugging your watch file."
+msgstr ""
+"gibt die heruntergeladenen Webseiten auf der Standardausgabe (Stdout) für "
+"die Fehlersuche in Ihrer Watch-Datei aus."
+
+#. type: TP
+#: ../scripts/uscan.1:480
+#, no-wrap
+msgid "B<--user-agent>, B<--useragent>"
+msgstr "B<--user-agent>, B<--useragent>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:483
+msgid "Override the default user agent header."
+msgstr "setzt die vorgegebene User-Agent-Kopfzeile außer Kraft. "
+
+#. type: Plain text
+#: ../scripts/uscan.1:490
+msgid "Give brief usage information."
+msgstr "gibt eine kurze Gebrauchsinformation."
+
+#. type: Plain text
+#: ../scripts/uscan.1:500
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. These may "
+"be overridden by command line options. Environment variable settings are "
+"ignored for this purpose. If the first command line option given is B<--"
+"noconf>, then these files will not be read. The currently recognised "
+"variables are:"
+msgstr ""
+"Die beiden Konfigurationsdateien I</etc/devscripts.conf> und I<~/."
+"devscripts> werden durch eine Shell in dieser Reihenfolge eingelesen, um "
+"Konfigurationsvariablen zu setzen. Diese können durch Befehlszeilenoptionen "
+"außer Kraft gesetzt werden. Zu diesem Zweck werden Umgebungsvariablen "
+"ignoriert. Falls die erste angegebene Befehlszeilenoption B<--noconf> ist, "
+"werden diese Dateien nicht gelesen. Die derzeit bekannten Variablen sind:"
+
+#. type: TP
+#: ../scripts/uscan.1:500
+#, no-wrap
+msgid "B<USCAN_DOWNLOAD>"
+msgstr "B<USCAN_DOWNLOAD>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:505
+msgid ""
+"If this is set to I<no>, then newer upstream files will not be downloaded; "
+"this is equivalent to the B<--report> or B<--no-download> options."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, werden neuere Dateien der Ursprungsautoren "
+"nicht heruntergeladen; dies entspricht den Optionen B<--report> oder B<--no-"
+"download>."
+
+#. type: TP
+#: ../scripts/uscan.1:505
+#, no-wrap
+msgid "B<USCAN_PASV>"
+msgstr "B<USCAN_PASV>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:511
+msgid ""
+"If this is set to I<yes> or I<no>, this will force FTP connections to use "
+"PASV mode or not to, respectively. If this is set to I<default>, then "
+"B<Net::FTP>(3) makes the choice (primarily based on the B<FTP_PASSIVE> "
+"environment variable)."
+msgstr ""
+"Falls dies auf I<yes> oder I<no> gesetzt ist, wird dies erzwingen, dass FTP-"
+"Verbindungen den PASV-Modus verwenden beziehungsweise nicht verwenden. Falls "
+"dies auf I<default> gesetzt ist, wird B<Net::FTP>(3) eine Auswahl treffen "
+"(basiert hauptsächlich auf der Umgebungsvariable B<FTP_PASSIVE>)."
+
+#. type: TP
+#: ../scripts/uscan.1:511
+#, no-wrap
+msgid "B<USCAN_TIMEOUT>"
+msgstr "B<USCAN_TIMEOUT>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:515
+msgid ""
+"If set to a number I<N>, then set the timeout to I<N> seconds. This is "
+"equivalent to the B<--timeout> option."
+msgstr ""
+"Falls dies auf eine Zahl I<N> gesetzt ist, wird eine Zeitüberschreitung nach "
+"I<N> Sekunden eingestellt. Dies entspricht der Option B<--timeout>."
+
+#. type: TP
+#: ../scripts/uscan.1:515
+#, no-wrap
+msgid "B<USCAN_SYMLINK>"
+msgstr "B<USCAN_SYMLINK>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:522
+msgid ""
+"If this is set to I<no>, then a pkg_version.orig.tar.{gz|bz2|lzma|xz} "
+"symlink will not be made (equivalent to the B<--no-symlink> option). If it "
+"is set to I<yes> or I<symlink>, then the symlinks will be made. If it is "
+"set to I<rename>, then the files are renamed (equivalent to the B<--rename> "
+"option)."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, wird kein symbolischer Verweis für "
+"Paket_Version.orig.tar.{gz|bz2|lzma|xz} erstellt (entspricht der Option B<--"
+"no-symlink>). Falls es auf I<yes> oder I<symlink> gesetzt ist, dann werden "
+"symbolische Verweise erstellt. Falls es auf I<rename> gesetzt ist, werden "
+"die Dateien umbenannt (entspricht der Option B<--rename>)."
+
+#. type: TP
+#: ../scripts/uscan.1:522
+#, no-wrap
+msgid "B<USCAN_DEHS_OUTPUT>"
+msgstr "B<USCAN_DEHS_OUTPUT>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:526
+msgid ""
+"If this is set to I<yes>, then DEHS-style output will be used. This is "
+"equivalent to the B<--dehs> option."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, wird eine Ausgabe im DEHS-Stil verwendet. "
+"Dies entspricht der Option B<--dehs>."
+
+#. type: TP
+#: ../scripts/uscan.1:526
+#, no-wrap
+msgid "B<USCAN_VERBOSE>"
+msgstr "B<USCAN_VERBOSE>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:530
+msgid ""
+"If this is set to I<yes>, then verbose output will be given. This is "
+"equivalent to the B<--verbose> option."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, wird eine detaillierte Ausgabe erzeugt. "
+"Dies entspricht der Option B<--verbose>."
+
+#. type: TP
+#: ../scripts/uscan.1:530
+#, no-wrap
+msgid "B<USCAN_USER_AGENT>"
+msgstr "B<USCAN_USER_AGENT>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:534
+msgid ""
+"If set, the specified user agent string will be used in place of the "
+"default. This is equivalent to the B<--user-agent> option."
+msgstr ""
+"Falls gesetzt, wird die angegebene User-Agent-Zeichenkette anstelle der "
+"vorgegebenen benutzt. Dies entspricht der Option B<--user-agent>."
+
+#. type: TP
+#: ../scripts/uscan.1:534
+#, no-wrap
+msgid "B<USCAN_DESTDIR>"
+msgstr "B<USCAN_DESTDIR>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:538
+msgid ""
+"If set, the downloaded files will be placed in this directory. This is "
+"equivalent to the B<--destdir> option."
+msgstr ""
+"Falls gesetzt, werden heruntergeladene Dateien in diesem Verzeichnis "
+"abgelegt. Dies entspricht der Option B<--destdir>."
+
+#. type: TP
+#: ../scripts/uscan.1:538
+#, no-wrap
+msgid "B<USCAN_REPACK>"
+msgstr "B<USCAN_REPACK>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:543
+msgid ""
+"If this is set to I<yes>, then after having downloaded a bzip tar, lzma tar, "
+"xz tar, or zip archive, B<uscan> will repack it to a gzip tar. This is "
+"equivalent to the B<--repack> option."
+msgstr ""
+"Falls dies auf I<yes> gesetzt ist, dann wird B<uscan> nach dem Herunterladen "
+"ein Bzip-Tar-, LZMA-Tar, Xz-Tar- oder Zip-Archiv neu zu einem Gzip-Tar "
+"packen. Dies entspricht der Option B<--repack>."
+
+#. type: TP
+#: ../scripts/uscan.1:543
+#, no-wrap
+msgid "B<USCAN_EXCLUSION>"
+msgstr "B<USCAN_EXCLUSION>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:548
+msgid ""
+"If this is set to I<no>, files mentioned in the field B<Files-Excluded> of "
+"I<debian/copyright> will be ignored and no exclusion of files will be "
+"tried. This is equivalent to the B<--no-exclusion> option."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, werden im Feld B<Files-Excluded> von "
+"I<debian/copyright> erwähnte Dateien ignoriert und es wird nicht versucht, "
+"Dateien auszuschließen. Dies entspricht der Option B<--no-exclusion>."
+
+#. type: Plain text
+#: ../scripts/uscan.1:552
+msgid ""
+"The exit status gives some indication of whether a newer version was found "
+"or not; one is advised to read the output to determine exactly what happened "
+"and whether there were any warnings to be noted."
+msgstr ""
+"Der Exit-Status gibt einige Hinweise, ob eine neuere Version gefunden wurde "
+"oder nicht; es wird geraten, die Ausgabe zu lesen, um genau zu bestimmen, "
+"was geschehen ist und ob irgendwelche Warnungen zu beachten sind."
+
+#. type: Plain text
+#: ../scripts/uscan.1:556
+msgid ""
+"Either B<--help> or B<--version> was used, or for some I<watch> file which "
+"was examined, a newer upstream version was located."
+msgstr ""
+"Es wurde entweder B<--help> oder B<--version> benutzt oder es wurde für eine "
+"untersuchte I<watch>-Datei eine neuere Version der Ursprungsautoren gefunden."
+
+#. type: Plain text
+#: ../scripts/uscan.1:560
+msgid ""
+"No newer upstream versions were located for any of the I<watch> files "
+"examined."
+msgstr ""
+"Es wurde für keine der untersuchten I<watch>-Dateien eine neuere Version der "
+"Ursprungsautoren gefunden."
+
+#. type: SH
+#: ../scripts/uscan.1:560
+#, no-wrap
+msgid "HISTORY AND UPGRADING"
+msgstr "CHRONIK UND UPGRADES DURCHFÜHREN"
+
+#. type: Plain text
+#: ../scripts/uscan.1:564
+msgid ""
+"This section briefly describes the backwards-incompatible I<watch> file "
+"features which have been added in each I<watch> file version, and the first "
+"version of the B<devscripts> package which understood them."
+msgstr ""
+"Dieser Abschnitt beschreibt kurz die rückwärtsinkompatiblen I<watch>-"
+"Dateifunktionalitäten, die in jeder I<watch>-Dateiversion hinzugefügt "
+"wurden, und die erste Version des Devscripts-Pakets, das sie verstand."
+
+#. type: TP
+#: ../scripts/uscan.1:564
+#, no-wrap
+msgid "I<Pre-version 2>"
+msgstr "I<Vorversion 2>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:569
+msgid ""
+"The I<watch> file syntax was significantly different in those days. Don't "
+"use it. If you are upgrading from a pre-version 2 I<watch> file, you are "
+"advised to read this manpage and to start from scratch."
+msgstr ""
+"zu jener Zeit war die I<watch>-Dateisyntax signifikant anders. Verwenden Sie "
+"sie nicht. Falls Sie ein Upgrade von einer I<watch>-Datei vor Version 2 "
+"durchführen, wird Ihnen empfohlen, diese Handbuchseite zu lesen und von "
+"Grund auf neu zu beginnen."
+
+#. type: TP
+#: ../scripts/uscan.1:569
+#, no-wrap
+msgid "I<Version 2>"
+msgstr "I<Version 2>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:573
+msgid ""
+"devscripts version 2.6.90: The first incarnation of the current style of "
+"I<watch> files."
+msgstr ""
+"Devscripts-Version 2.6.90: die erste Verkörperung des aktuellen I<watch>-"
+"Dateistils"
+
+#. type: TP
+#: ../scripts/uscan.1:573
+#, no-wrap
+msgid "I<Version 3>"
+msgstr "I<Version 3>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:579
+msgid ""
+"devscripts version 2.8.12: Introduced the following: correct handling of "
+"regex special characters in the path part, directory/path pattern matching, "
+"version number in several parts, version number mangling. Later versions "
+"have also introduced URL mangling."
+msgstr ""
+"Devscripts-Version 2.8.12 führte das Folgende ein: korrekte Handhabung von "
+"Sonderzeichen regulärer Ausdrücke im Pfadteil, Verzeichnis-/Pfadabgleich, "
+"Versionsnummern in mehreren Teilen, Versionsnummer-Mangling. Neuere "
+"Versionen haben außerden URL-Mangling eingeführt."
+
+#. type: Plain text
+#: ../scripts/uscan.1:585
+msgid ""
+"If you are upgrading from version 2, the key incompatibility is if you have "
+"multiple groups in the pattern part; whereas only the first one would be "
+"used in version 2, they will all be used in version 3. To avoid this "
+"behaviour, change the non-version-number groups to be (?:...) instead of a "
+"plain (...) group."
+msgstr ""
+"Falls Sie ein Upgrade von Version 2 durchführen, besteht die "
+"Hauptinkomatibilität, wenn Sie mehrere Gruppen im Musterteil haben; während "
+"die erste in Version 2 benutzt würde, werden sie alle in Version 3 "
+"verwendet. Um dieses Verhalten zu vermeiden, ändern Sie die "
+"Nichtversionsnummergruppen so, dass sie (?:...)- anstelle von einfachen "
+"(...)-Gruppen sind."
+
+#. type: Plain text
+#: ../scripts/uscan.1:591
+msgid ""
+"B<dpkg>(1), B<mk-origtargz>(1), B<perlre>(1), B<uupdate>(1), B<devscripts."
+"conf>(5)"
+msgstr ""
+"B<dpkg>(1), B<mk-origtargz>(1), B<perlre>(1), B<uupdate>(1), B<devscripts."
+"conf>(5)"
+
+#. type: Plain text
+#: ../scripts/uscan.1:596
+msgid ""
+"The original version of B<uscan> was written by Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. Significant improvements, changes and "
+"bugfixes were made by Julian Gilbey E<lt>jdg@debian.orgE<gt>. HTTP support "
+"was added by Piotr Roszatycki E<lt>dexter@debian.orgE<gt>. The program was "
+"rewritten in Perl by Julian Gilbey."
+msgstr ""
+"Die Originalversion wurde von Christoph Lameter E<lt>clameter@debian."
+"orgE<gt> geschrieben. Bedeutende Verbesserungen, Änderungen und "
+"Fehlerbehebungen wurden von Julian Gilbey E<lt>jdg@debian.orgE<gt> "
+"vorgenommen. Piotr Roszatycki E<lt>dexter@debian.orgE<gt> fügte HTTP-"
+"Unterstützung hinzu. Das Programm wurde neu in Perl von Julian Gilbey "
+"geschrieben."
+
+#. type: TH
+#: ../scripts/uupdate.1:1
+#, no-wrap
+msgid "UUPDATE"
+msgstr "UUPDATE"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:4
+msgid "uupdate - upgrade a source code package from an upstream revision"
+msgstr ""
+"uupdate - führt ein Upgrade eines Quellcodepakets von einer Revision der "
+"Ursprungsautoren durch"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:6
+msgid "B<uupdate> [I<options>] I<new_upstream_archive> [I<version>]"
+msgstr ""
+"B<uupdate> [I<Optionen>] I<neues_Archiv_der_Ursprungsautoren> [I<Version>]"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:8
+msgid "B<uupdate> [I<options>] B<--patch>|B<-p> I<patch_file>"
+msgstr "B<uupdate> [I<Optionen>] B<--patch>|B<-p> I<Patch-Datei>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:20
+msgid ""
+"B<uupdate> modifies an existing Debian source code archive to reflect an "
+"upstream update supplied as a patch or from a wholly new source code "
+"archive. The utility needs to be invoked from the top directory of the old "
+"source code directory, and if a relative name is given for the new archive "
+"or patch file, it will be looked for first relative to the execution "
+"directory and then relative to the parent of the source tree. (For example, "
+"if the changelog file is I</usr/local/src/foo/foo-1.1/debian/changelog>, "
+"then the archive or patch file will be looked for relative to I</usr/local/"
+"src/foo>.) Note that the patch file or archive cannot be within the source "
+"tree itself. The full details of what the code does are given below."
+msgstr ""
+"B<uupdate> verändert ein existierendes Debian-Quellcodearchiv, um eine "
+"Aktualisierung der Ursprungsautoren widerzuspiegeln, die als Patch eines "
+"vollständigen Quellcodearchivs bereitgestellt wurde, Das Hilfswerkzeug muss "
+"von der obersten Ebene des alten Quellcodeverzeichnisses aufgerufen werden. "
+"Falls ein relativer Name für das neue Archiv angegeben wurde, wird zuerst "
+"relativ zum Ausführungsverzeichnis und dann relativ zum übergeordneten "
+"Verzeichnis des Quellcodeverzeichnisbaums gesucht. (Falls die Changelog-"
+"Datei zum Beispiel I</usr/local/src/foo/foo-1.1/debian/changelog> ist, dann "
+"wird nach der Archiv- oder Patch-Datei relativ zu I</usr/local/src/foo> "
+"gesucht.) Beachten Sie, dass die Patch-Datei oder das Archiv nicht innerhalb "
+"des Quellcodeverzeichnisbaums selbst sein kann. Die vollständigen "
+"Einzelheiten, was der Code tut, werden nachfolgend erläutert."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:30
+msgid ""
+"Currently supported source code file types are I<.tar.gz>, I<.tar.bz2>, I<."
+"tar.Z>, I<.tgz>, I<.tar>, I<.tar.lzma>, I<.tar.xz>, I<.7z> and I<.zip> "
+"archives. Also supported are already unpacked source code archives; simply "
+"give the path of the source code directory. Supported patch file types are "
+"B<gzip>-compressed, B<bzip2>-compressed, B<lzma>-compressed, B<xz>-"
+"compressed and uncompressed patch files. The file types are identified by "
+"the file names, so they must use the standard suffixes."
+msgstr ""
+"Derzeit unterstützte Quellcodedateitypen sind I<.tar.gz>-, I<.tar.bz2>-, I<."
+"tar.Z>-, I<.tgz>-, I<.tar>-, I<.tar.lzma>-, I<.tar.xz>-, I<.7z> und I<.zip>-"
+"Archive. Außerdem werden bereits entpackte Quellcodearchive unterstützt; "
+"geben Sie einfach den Pfad des Quellcodeverzeichnisses an. Unterstützte "
+"Typen von Patch-Dateien sind komprimiert mit B<gzip>, B<bzip2>, B<lzma>, "
+"B<xz> sowie unkomprimierte Patch-Dateien. Die Dateitypen werden durch die "
+"Dateinamen identifiziert, daher müssen sie die Standardendungen verwenden."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:40
+msgid ""
+"Usually B<uupdate> will be able to deduce the version number from the source "
+"archive name (as long as it only contains digits and periods). If that "
+"fails, you need to specify the version number explicitly (without the Debian "
+"release number which will always be initially ``1'', or ``0ubuntu1'' on "
+"Ubuntu-detected systems). This can be done with an initial B<--upstream-"
+"version> or B<-v> option, or in the case of an archive, with a version "
+"number after the filename. (The reason for the latter is so that B<uupdate> "
+"can be called directly from B<uscan>.)"
+msgstr ""
+"Üblicherweise wird B<uupdate> in der Lage sein, die Versionsnummer vom Namen "
+"des Quellarchivs herzuleiten (solange sie nur Zahlen und Punkte enthält). "
+"Falls dies fehlschlägt, müssen Sie die Versionsnummer explizit angeben (ohne "
+"die Debian-Veröffentlichungsnummer, die anfangs immer »1« oder auf "
+"entdeckten Ubuntu-Systemen »0ubuntu1« sein wird). Dies kann durch eine "
+"einleitende B<--upstream-version>- oder B<-v>-Option erledigt werden oder im "
+"Fall eines Archivs, durch eine Versionsnummer nach dem Dateinamen. (Der "
+"Grund für letzteres ist, dass B<uupdate> auch direkt von B<uscan> aufgerufen "
+"werden kann.)"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:45
+msgid ""
+"Since B<uupdate> uses B<debuild> to clean the current archive before trying "
+"to apply a patch file, it accepts a B<--rootcmd> or B<-r> option allowing "
+"the user to specify a gain-root command to be used. The default is to use "
+"B<fakeroot>."
+msgstr ""
+"Da B<uupdate> zum Bereinigen des aktuellen Archivs B<debuild> verwendet, "
+"bevor es die Patch-Datei anwendet, akzeptiert es eine B<--rootcmd>- oder B<-"
+"r>-Option, die es dem Anwender gestattet, einen Befehl zum Erlangen von Root-"
+"Rechten anzugeben. Standardmäßig wird B<fakeroot> benutzt."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:52
+msgid ""
+"If an archive is being built, the pristine upstream source should be used to "
+"create the I<.orig.tar.gz> file wherever possible. This means that MD5 sums "
+"or other similar methods can be used to easily compare the upstream source "
+"to Debian's copy of the upstream version. This is the default behaviour, "
+"and can be switched off using the B<--no-pristine> option below."
+msgstr ""
+"Falls ein Archiv erstellt wird, sollte die unberührte Quelldatei der "
+"Ursprungsautoren zum Erstellen der I<.orig.tar.gz>-Datei verwendet werden, "
+"wann immer dies möglich ist. Dies bedeutet, dass MD5-Summen oder ähnliche "
+"Methoden einfach zum Vergleichen der Quelldatei der Ursprungsautoren mit der "
+"Debian-Kopie der Version der Ursprungsautoren benutzt werden kann. Dies ist "
+"das Standardverhalten und kann mittels der nachfolgenden Option B<--no-"
+"pristine> ausgeschaltet werden."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:54
+msgid "This is a summary of what was explained above."
+msgstr "Dies ist eine Zusammenfassung dessen, was oben erklärt wurde."
+
+#. type: TP
+#: ../scripts/uupdate.1:54
+#, no-wrap
+msgid "B<--upstream-version >I<version>, B<-v >I<version>"
+msgstr "B<--upstream-version >I<Version>, B<-v >I<Version>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:57
+msgid "Specify the version number of the upstream package explicitly."
+msgstr "gibt die Versionsnummer des Pakets der Ursprungsautoren explizit an."
+
+#. type: TP
+#: ../scripts/uupdate.1:57
+#, no-wrap
+msgid "B<--rootcmd >I<gain-root-command>, B<-r >I<gain-root-command>"
+msgstr "B<--rootcmd >I<Befehl_um_Root_zu_werden>, B<-r >I<Befehl_um_Root_zu_werden>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:61
+msgid ""
+"Specify the command to be used to become root to build the package and is "
+"passed onto B<debuild>(1) if it is specified."
+msgstr ""
+"gibt den Befehl an, der zum Erlangen von Root-Rechten benutzt wird, um das "
+"Paket zu bauen. Er wird an B<debuild>(1) übergeben, falls er angegeben wurde."
+
+#. type: TP
+#: ../scripts/uupdate.1:61
+#, no-wrap
+msgid "B<--pristine>, B<-u>"
+msgstr "B<--pristine>, B<-u>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:66
+msgid ""
+"Treat the source as pristine upstream source and symlink to it from "
+"I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz> whenever possible. This "
+"option has no meaning for patches. This is the default behaviour."
+msgstr ""
+"betrachtet das Paket als unberührte Quelle der Ursprungsautoren und erstellt "
+"einen symbolischen Verweis von I<E<lt>PaketE<gt>_E<lt>VersionE<gt>.orig.tar."
+"gz> darauf, wann immer dies möglich ist. Diese Option hat für Patches keine "
+"Bedeutung. Dies ist das Standardverhalten."
+
+#. type: TP
+#: ../scripts/uupdate.1:66
+#, no-wrap
+msgid "B<--no-pristine>"
+msgstr "B<--no-pristine>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:69
+msgid ""
+"Do not attempt to make a I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz> "
+"symlink."
+msgstr ""
+"versucht nicht, einen symbolischen I<E<lt>PaketE<gt>_E<lt>VersionE<gt>.orig."
+"tar.gz>-Verweis zu erstellen."
+
+#. type: TP
+#: ../scripts/uupdate.1:69
+#, no-wrap
+msgid "B<--symlink>, B<-s>"
+msgstr "B<--symlink>, B<-s>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:74
+msgid ""
+"Simply create a symlink when moving a new upstream I<.tar.gz> archive to the "
+"new I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz> location. This is "
+"the default behaviour."
+msgstr ""
+"erstellt einfach einen symbolischen Verweis, wenn ein neues I<.tar.gz>-"
+"Archiv der Ursprungsautoren zu einem neuen "
+"I<E<lt>PaketE<gt>_E<lt>VersionE<gt>.orig.tar.gz>-Speicherort verschoben "
+"wird. Dies ist das Standardverhalten."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:78
+msgid ""
+"Copy the upstream I<.tar.gz> to the new location instead of making a symlink."
+msgstr ""
+"kopiert das I<.tar.gz> der Ursprungsautoren an den neuen Speicherort, statt "
+"einen symbolischen Verweis zu erstellen."
+
+#. type: TP
+#: ../scripts/uupdate.1:94
+#, no-wrap
+msgid "B<UUPDATE_PRISTINE>"
+msgstr "B<UUPDATE_PRISTINE>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:98
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-pristine> command "
+"line parameter being used."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--no-pristine> benutzt würde."
+
+#. type: TP
+#: ../scripts/uupdate.1:98
+#, no-wrap
+msgid "B<UUPDATE_SYMLINK_ORIG>"
+msgstr "B<UUPDATE_SYMLINK_ORIG>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:102
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-symlink> command "
+"line parameter being used."
+msgstr ""
+"Falls dies auf I<no> gesetzt ist, ist es so, als ob der "
+"Befehlszeilenparameter B<--no-symlink> benutzt würde."
+
+#. type: TP
+#: ../scripts/uupdate.1:102
+#, no-wrap
+msgid "B<UUPDATE_ROOTCMD>"
+msgstr "B<UUPDATE_ROOTCMD>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:105
+msgid "This is equivalent to the B<--rootcmd> option."
+msgstr "Dies entspricht der Option B<--rootcmd>."
+
+#. type: SH
+#: ../scripts/uupdate.1:105
+#, no-wrap
+msgid "ACTIONS TAKEN ON AN ARCHIVE"
+msgstr "MAßNAHMEN, DIE FÜR EIN ARCHIV ERGRIFFEN WERDEN"
+
+#. type: TP
+#: ../scripts/uupdate.1:106 ../scripts/uupdate.1:139
+#, no-wrap
+msgid "B<Figure out new version number>"
+msgstr "B<neue Versionsnummer herausfinden>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:112
+msgid ""
+"Unless an explicit version number is provided, the archive name is analyzed "
+"for a sequence of digits separated by dots. If something like that is "
+"found, it is taken to be the new upstream version number. If not, "
+"processing is aborted."
+msgstr ""
+"Falls keine Versionsnummer explizit angegeben wurde, wird der Archivname "
+"nach einer Abfolge von Ziffern durchsucht, die durch Punkte getrennt sind. "
+"Falls diese gefunden wird, wird sie als neue Versionsnummer der "
+"Ursprungsautoren genommen. Falls nicht, wird die Verarbeitung abgebrochen."
+
+#. type: TP
+#: ../scripts/uupdate.1:112
+#, no-wrap
+msgid "B<Create the .orig.tar.gz archive>"
+msgstr "B<neues .orig.tar.gz-Archiv erstellen>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:117
+msgid ""
+"If the B<--pristine> or B<-u> option is specified and the upstream archive "
+"is a I<.tar.gz> or I<.tgz> archive, then this will be copied directly to "
+"I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz>."
+msgstr ""
+"Falls die Option B<--pristine> oder B<-u> angegeben wurde und das Archiv der "
+"Ursprungsautoren ein I<.tar.gz>- oder I<.tgz>-Archiv ist, wird dies direkt "
+"nach I<E<lt>PaketE<gt>_E<lt>VersionE<gt>.orig.tar.gz> kopiert."
+
+#. type: TP
+#: ../scripts/uupdate.1:117
+#, no-wrap
+msgid "B<Unpacking>"
+msgstr "B<Entpacken>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:122
+msgid ""
+"The archive is unpacked and placed in a directory with the correct name "
+"according to Debian policy: package-upstream_version.orig. Processing is "
+"aborted if this directory already exists."
+msgstr ""
+"Das Archiv wird in ein Verzeichnis, dessen Namen den Anforderungen der "
+"Debian-Richtlinien genügt, entpackt: Paket-Version_der_Ursprungsautoren."
+"orig. Falls das Verzeichnis bereits existiert, wird die Verarbeitung "
+"abgebrochen."
+
+#. type: TP
+#: ../scripts/uupdate.1:122 ../scripts/uupdate.1:150
+#, no-wrap
+msgid "B<Patching>"
+msgstr "B<Patches anwenden>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:130
+msgid ""
+"The I<.diffs.gz> from the current version are applied to the unpackaged "
+"archive. A non-zero exit status and warning message will occur if the "
+"patches did not apply cleanly or if no patch file was found. Also, the list "
+"of rejected patches will be shown. The file I<debian/rules> is made "
+"executable and all of the I<.orig> files created by B<patch> are deleted."
+msgstr ""
+"Die I<.diffs.gz>s der aktuellen Version werden auf das entpackte Archiv "
+"angewandt. Falls der Patch nicht richtig angewandt wurde oder keine Patch-"
+"Datei gefunden wurde, ist der Exit-Status ungleich null und es erscheinen "
+"Warnungen. Außerdem wird die Liste abgewiesener Patches angezeigt. Die Datei "
+"I<debian/rules> wird ausführbar gemacht und alle von B<patch> erstellten I<."
+"orig>-Dateien werden gelöscht."
+
+#. type: TP
+#: ../scripts/uupdate.1:130 ../scripts/uupdate.1:162
+#, no-wrap
+msgid "B<Changelog update>"
+msgstr "B<Changelog-Aktualisierung>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:134 ../scripts/uupdate.1:166
+msgid ""
+"A changelog entry with the new version number is generated with the text "
+"``New upstream release''."
+msgstr ""
+"Es wird ein neuer Changelog-Eintrag mit dem Text »New upstream release« "
+"erzeugt."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:138 ../scripts/uupdate.1:170
+msgid ""
+"When used on Ubuntu systems, B<dpkg-vendor> detection is used to set the "
+"Debian revision to ``0ubuntu1''. You may change I<debian/changelog> "
+"manually afterwards."
+msgstr ""
+"Auf Ubuntu-Systemen wird die B<dpkg-vendor>-Erkennung verwendet, um die "
+"Debian-Revision auf »0ubuntu1« zu setzen. Sie können I<debian/changelog> "
+"hinterher manuell ändern."
+
+#. type: SH
+#: ../scripts/uupdate.1:138
+#, no-wrap
+msgid "ACTIONS TAKEN ON A PATCH FILE"
+msgstr "MAßNAHMEN, DIE FÜR EINE PATCH-DATEI ERGRIFFEN WERDEN"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:145
+msgid ""
+"Unless an explicit version number is provided, the patch file name is "
+"analyzed for a sequence of digits separated by dots. If something like that "
+"is found, it is taken to be the new upstream version number. If not, "
+"processing is aborted."
+msgstr ""
+"Sofern keine explizite Versionsnummer bereitgestellt wurde, wird die Patch-"
+"Datei nach einer Abfolge von Ziffern durchsucht, die durch Punkte getrennt "
+"sind. Falls diese gefunden wird, wird sie als neue Versionsnummer der "
+"Ursprungsautoren genommen. Falls nicht, wird die Verarbeitung abgebrochen."
+
+#. type: TP
+#: ../scripts/uupdate.1:145
+#, no-wrap
+msgid "B<Clean the current source tree>"
+msgstr "B<den aktuellen Quellverzeichnisbaum bereinigen>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:150
+msgid ""
+"The command B<debuild clean> is executed within the current Debian source "
+"archive to clean it. If a B<-r> option is given to B<uupdate>, it is passed "
+"on to B<debuild>."
+msgstr ""
+"Der Befehl B<debuild clean> wird innerhalb des aktuellen Debian-Quellarchivs "
+"ausgeführt, um es zu bereinigen. Falls eine B<-r>-Option für B<uupdate> "
+"angegeben wurde, wird sie an B<debuild> weitergereicht."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:162
+msgid ""
+"The current source archive (I<.orig.tar.gz>) is unpacked and the patch "
+"applied to the original sources. If this is successful, then the I<.orig> "
+"directory is renamed to reflect the new version number and the current "
+"Debian source directory is copied to a directory with the new version "
+"number, otherwise processing is aborted. The patch is then applied to the "
+"new copy of the Debian source directory. The file I<debian/rules> is made "
+"executable and all of the I<.orig> files created by B<patch> are deleted. "
+"If there was a problem with the patching, a warning is issued and the "
+"program will eventually exit with non-zero exit status."
+msgstr ""
+"Das aktuelle Quellarchiv (I<.orig.tar.gz>) wird entpackt und der Patch auf "
+"die Originalquellen angewandt. Falls dies erfolgreicht ist, wird das I<."
+"orig>-Verzeichnis umbenannt, um die neue Versionsnummer widerzuspiegeln und "
+"das aktuelle Debian-Quellverzeichnis wird in ein Verzeichnis mit der neuen "
+"Versionsnummer kopiert, andernfalls wird die Verarbeitung abgebrochen. Die "
+"Datei I<debian/rules> wird ausführbar gemacht und alle durch den Patch "
+"erstellten I<.orig>-Dateien werden gelöscht. Falls es ein Problem beim "
+"Anwenden der Patches gab, wird eine Warnung ausgegeben und das Programm wird "
+"schließlich mit einem Exit-Status ungleich null beendet."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:175
+msgid "B<debuild>(1), B<fakeroot>(1), B<patch>(1), B<devscripts.conf>(5)"
+msgstr "B<debuild>(1), B<fakeroot>(1), B<patch>(1) und B<devscripts.conf>(5)"
+
+# ist noch nicht übersetzt
+#. type: Plain text
+#: ../scripts/uupdate.1:177
+msgid "B<The Debian Policy Manual>"
+msgstr "B<The Debian Policy Manual>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:180
+msgid ""
+"The original version of B<uupdate> was written by Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. Several changes and improvements have been "
+"made by Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Die Originalversion von B<uupdate> wurde von Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt> geschrieben. Mehrere Änderungen und "
+"Verbesserungen stammen von Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#. type: TH
+#: ../doc/what-patch.1:1
+#, no-wrap
+msgid "WHAT-PATCH"
+msgstr "WHAT-PATCH"
+
+#. type: Plain text
+#: ../doc/what-patch.1:4
+msgid "what-patch - detect which patch system a Debian package uses"
+msgstr "what-patch - ermittelt, welches Patch-System ein Debian-Paket nutzt"
+
+#. type: Plain text
+#: ../doc/what-patch.1:7
+msgid "B<what-patch> [I<options>]"
+msgstr "B<what-patch> [I<Optionen>]"
+
+#. type: Plain text
+#: ../doc/what-patch.1:11
+msgid ""
+"B<what-patch> examines the I<debian/rules> file to determine which patch "
+"system the Debian package is using."
+msgstr ""
+"B<what-patch> untersucht die Datei I<debian/rules>, um zu bestimmen, welches "
+"Patch-System ein Debian-Paket verwendet."
+
+#. type: Plain text
+#: ../doc/what-patch.1:14
+msgid ""
+"B<what-patch> should be run from the root directory of the Debian source "
+"package."
+msgstr ""
+"B<what-patch> sollte aus dem Wurzelverzeichnis des Debian-Quellpakets "
+"ausgeführt werden."
+
+#. type: Plain text
+#: ../doc/what-patch.1:17
+msgid "Listed below are the command line options for B<what-patch>:"
+msgstr ""
+"Nachfolgend sind die Befehlszeilenoptionen für B<what-patch> aufgeführt:"
+
+#. type: Plain text
+#: ../doc/what-patch.1:20
+msgid "Display a help message and exit."
+msgstr "zeigt eine Hilfenachricht und beendet sich."
+
+#. type: TP
+#: ../doc/what-patch.1:20
+#, no-wrap
+msgid "B<-v>"
+msgstr "B<-v>"
+
+#. type: Plain text
+#: ../doc/what-patch.1:26
+msgid ""
+"Enable verbose mode. This will include the listing of any files modified "
+"outside or the I<debian/> directory and report any additional details about "
+"the patch system if available."
+msgstr ""
+"aktiviert den Modus mit detailreicher Ausgabe. Dies wird die Auflistung "
+"aller außerhalb des I<debian/>-Verzeichnisses geänderter Dateien umfassen "
+"und alle zusätzlichen Einzelheiten über das Patch-System melden, falls "
+"verfügbar."
+
+#. type: Plain text
+#: ../doc/what-patch.1:32
+msgid ""
+"B<what-patch> was written by Kees Cook E<lt>kees@ubuntu.comE<gt>, Siegfried-"
+"A. Gevatter E<lt>rainct@ubuntu.comE<gt>, and Daniel Hahler "
+"E<lt>ubuntu@thequod.deE<gt>, among others. This manual page was written by "
+"Jonathan Patrick Davies E<lt>jpds@ubuntu.comE<gt>."
+msgstr ""
+"B<what-patch> wurde unter anderem von Kees Cook E<lt>kees@ubuntu.comE<gt>, "
+"Siegfried-A. Gevatter E<lt>rainct@ubuntu.comE<gt> und Daniel Hahler "
+"E<lt>ubuntu@thequod.deE<gt> geschrieben. Diese Handbuchseite wurde von "
+"Jonathan Patrick Davies E<lt>jpds@ubuntu.comE<gt> verfasst."
+
+#. type: Plain text
+#: ../doc/what-patch.1:34
+msgid ""
+"Both are released under the GNU General Public License, version 3 or later."
+msgstr ""
+"Beide wurden unter der GNU General Public License, Version 3 oder später, "
+"veröffentlicht."
+
+#. type: Plain text
+#: ../doc/what-patch.1:38
+msgid ""
+"The Ubuntu MOTU team has some documentation about patch systems at the "
+"Ubuntu wiki: I<https://wiki.ubuntu.com/PackagingGuide/PatchSystems>"
+msgstr ""
+"Das Ubuntu-MOTU-Team hat einige Dokumentation über Patch-System im Ubuntu-"
+"Wiki: I<https://wiki.ubuntu.com/PackagingGuide/PatchSystems>"
+
+#. type: Plain text
+#: ../doc/what-patch.1:42
+msgid "B<cdbs-edit-patch>(1), B<dbs-edit-patch>(1), B<dpatch-edit-patch>(1)"
+msgstr "B<cdbs-edit-patch>(1), B<dbs-edit-patch>(1), B<dpatch-edit-patch>(1)"
+
+#. type: TH
+#: ../scripts/whodepends.1:1
+#, no-wrap
+msgid "WHODEPENDS"
+msgstr "WHODEPENDS"
+
+#. type: Plain text
+#: ../scripts/whodepends.1:4
+msgid "whodepends - check which maintainers' packages depend on a package"
+msgstr "whodepends - prüft, wessen Betreuers Pakete von einem Paket abhängen"
+
+#. type: Plain text
+#: ../scripts/whodepends.1:6
+msgid "B<whodepends> [I<package>] [I<options>]"
+msgstr "B<whodepends> [I<Paket>] [I<Optionen>]"
+
+#. type: Plain text
+#: ../scripts/whodepends.1:10
+msgid ""
+"B<whodepends> gives the names, e-mail addresses and the packages they "
+"maintain of all maintainers who have packages depending on the given package."
+msgstr ""
+"B<whodepends> gibt die Namen, E-Mail-Adressen und Pakete, die sie betreuen "
+"von allen Betreuern aus, die Pakete haben, die vom angegebenen Paket "
+"abhängen."
+
+#. type: Plain text
+#: ../scripts/whodepends.1:19
+msgid "B<whodepends> is not very efficient."
+msgstr "B<whodepends> ist nicht sehr effizient."
+
+#. type: Plain text
+#: ../scripts/whodepends.1:20
+msgid ""
+"B<whodepends> has been written by Moshe Zadka E<lt>moshez@debian.orgE<gt>."
+msgstr ""
+"B<whodepends> wurde von Moshe Zadka E<lt>moshez@debian.orgE<gt> geschrieben."
+
+#. type: TH
+#: ../scripts/who-uploads.1:1
+#, no-wrap
+msgid "WHO-UPLOADS"
+msgstr "WHO-UPLOADS"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:4
+msgid "who-uploads - identify the uploaders of Debian source packages"
+msgstr ""
+"who-uploads - identifiziert die, die das Debian-Quellpaket hochgeladen haben"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:6
+msgid "B<who-uploads> [I<options>] I<source_package> ..."
+msgstr "B<who-uploads> [I<Optionen>] I<Quellpaket> …"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:12
+msgid ""
+"B<who-uploads> uses the Package Tracking System (PTS) to identify the "
+"uploaders of the three most recent versions of the given source packages. "
+"Note that the uploaders are identified using their B<gpg>(1) keys; "
+"installing a recent version of the I<debian-keyring> package should provide "
+"most of the required keys."
+msgstr ""
+"B<who-uploads> verwendet das Paketverfolgungssystem (PTS), um diejenigen zu "
+"identifizieren, die die drei jüngsten Versionen des angegebenen Quellpakets "
+"hochgeladen haben. Beachten Sie, dass die, die das Debian-Quellpaket "
+"hochgeladen haben, mittles ihrer B<gpg>(1)-Schlüssel identifiziert werden; "
+"Installieren einer aktuellen Version des Pakets I<debian-keyring> sollte die "
+"meisten der benötigten Schlüssel bereitstellen."
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:15
+msgid ""
+"Note that because the PTS uses source packages, you must give the source "
+"package names, not the binary package names."
+msgstr ""
+"Beachten Sie, dass Sie, da das PTS Quellpakete benutzt, die Quellpaketnamen "
+"und nicht die Binärpaketnamen angeben müssen."
+
+#. type: TP
+#: ../scripts/who-uploads.1:16
+#, no-wrap
+msgid "B<-M>, B<--max-uploads=>I<N>"
+msgstr "B<-M>, B<--max-uploads=>I<N>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:21
+msgid ""
+"Specify the maximum number of uploads to display for each package; the "
+"default is 3. Note that you may not see this many uploads if there are not "
+"this many recorded in the PTS."
+msgstr ""
+"gibt die maximale Anzahl der Uploads an, die für jedes Paket angezeigt "
+"werden; Vorgabe ist 3. Beachten Sie, dass Sie vielleicht nicht so viele "
+"Uploads zu Gesicht bekommen, da nicht so viele Uploads im PTS aufgezeichnet "
+"sind."
+
+#. type: TP
+#: ../scripts/who-uploads.1:21
+#, no-wrap
+msgid "B<--keyring >I<keyring>"
+msgstr "B<--keyring >I<Schlüsselbund>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:25
+msgid ""
+"Add I<keyring> to the list of keyrings to be searched for the uploader's GPG "
+"key."
+msgstr ""
+"fügt I<Schlüsselbund> der Liste der Schlüsselbünde hinzu, die nach dem GPG-"
+"Schlüssel des Hochladenden durchsucht werden."
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:33
+msgid ""
+"By default, B<who-uploads> uses the two Debian keyrings I</usr/share/"
+"keyrings/debian-keyring.gpg> and I</usr/share/keyrings/debian-maintainers."
+"gpg> (although this default can be changed in the configuration file, see "
+"below). Specifying this option means that the default keyrings will not be "
+"examined. The B<--keyring> option overrides this one."
+msgstr ""
+"Standardmäßig verwendet B<who-uploads> die beiden Debian-Schlüsselbünde I</"
+"usr/share/keyrings/debian-keyring.gpg> und I</usr/share/keyrings/debian-"
+"maintainers.gpg> (diese Vorgabe kann jedoch in der Konfigurationsdatei "
+"geändert werden, siehe unten). Die Angabe dieser Option bedeutet, dass die "
+"Standardschlüsselbünde nicht untersucht werden. Die Option B<--keyring> "
+"setzt dies außer Kraft."
+
+#. type: TP
+#: ../scripts/who-uploads.1:33
+#, no-wrap
+msgid "B<--date>"
+msgstr "B<--date>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:36
+msgid "Show the date of the upload alongside the uploader's details"
+msgstr ""
+"zeigt das Datum des Hochladens neben den Einzelheiten des Hochladenden."
+
+#. type: TP
+#: ../scripts/who-uploads.1:36
+#, no-wrap
+msgid "B<--nodate>, B<--no-date>"
+msgstr "B<--nodate>, B<--no-date>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:40
+msgid ""
+"Do not show the date of the upload alongside the uploader's details. This "
+"is the default behaviour."
+msgstr ""
+"zeigt nicht das Datum des Hochladens neben den Einzelheiten des "
+"Hochladenden. Dies ist das Standardverhalten."
+
+#. type: TP
+#: ../scripts/who-uploads.1:56
+#, no-wrap
+msgid "B<WHOUPLOADS_DATE>"
+msgstr "B<WHOUPLOADS_DATE>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:60
+msgid ""
+"Show the date of the upload alongside the uploader's details. By default, "
+"this is \"no\"."
+msgstr ""
+"zeigt das Datum des Hochladens neben den Einzelheiten des Hochladenden. "
+"Standardmäßig ist dies auf »no« gesetzt."
+
+#. type: TP
+#: ../scripts/who-uploads.1:60
+#, no-wrap
+msgid "B<WHOUPLOADS_MAXUPLOADS>"
+msgstr "B<WHOUPLOADS_MAXUPLOADS>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:64
+msgid ""
+"The maximum number of uploads to display for each package. By default, this "
+"is 3."
+msgstr ""
+"die maximale Anzahl von Uploads, die für jedes Paket angezeigt wird. "
+"Standardmäßig ist dies 3."
+
+#. type: TP
+#: ../scripts/who-uploads.1:64
+#, no-wrap
+msgid "B<WHOUPLOADS_KEYRINGS>"
+msgstr "B<WHOUPLOADS_KEYRINGS>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:71
+msgid ""
+"This is a colon-separated list of the default keyrings to be used. By "
+"default, it is the two Debian keyrings I</usr/share/keyrings/debian-keyring."
+"gpg> and I</usr/share/keyrings/debian-maintainers.gpg>."
+msgstr ""
+"Dies ist eine durch Doppelpunkte getrennte Liste der Standardschlüsselbünde, "
+"die benutzt werden sollen. Standardmäßig sind das die beiden Debian-"
+"Schlüsselbünde I</usr/share/keyrings/debian-keyring.gpg> und I</usr/share/"
+"keyrings/debian-maintainers.gpg>."
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:74
+msgid ""
+"The original version of B<who-uploads> was written by Adeodato Sim\\['o] "
+"E<lt>dato@net.com.org.esE<gt>. The current version is by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Die Originalversion von B<who-uploads> wurde von Adeodato Sim\\['o] "
+"E<lt>dato@net.com.org.esE<gt> geschrieben. Die aktuelle Version stammt von "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:44
+msgid "who-permits-upload - look-up Debian Maintainer access control lists"
+msgstr ""
+"who-permits-upload - schlägt Debian-Paketbetreuer-ACLs "
+"(Zugriffssteuerungslisten) nach"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:48
+msgid ""
+"B<who-permits-upload> [B<-h>] [B<-s> I<keyring>] [B<-d> I<dm_url>] [B<-s> "
+"I<search_type>] I<query> [I<query> ...]"
+msgstr ""
+"B<who-permits-upload> [B<-h>] [B<-s> I<Schlüsselbund>] [B<-d> I<DM_URL>] [B<-"
+"s> I<Suchtyp>] I<Abfrage> [I<Abfrage> …]"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:52
+msgid ""
+"B<who-permits-upload> looks up the given Debian Maintainer (DM) upload "
+"permissions from ftp-master.debian.org and parses them in a human readable "
+"way. The tool can search by DM name, sponsor (the person who granted the "
+"permission) and by package."
+msgstr ""
+"B<who-permits-upload> schlägt die Rechte zum Hochladen des angegebenen "
+"Debian-Paketbetreuers von Debians Ftp-master nach und wertet sie in einer "
+"für Menschen lesbaren Art aus. Das Werkzeug kann anhand von "
+"Paketbetreuername, Sponsor (die Person, die das Recht gewährt) oder Paket "
+"suchen."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:60
+msgid "B<--dmfile=>I<dm_url>, B<-d> I<dm_url>"
+msgstr "B<--dmfile=>I<DM_URL>, B<-d> I<DM_URL>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:62
+msgid ""
+"Retrieve the DM permission file from the supplied URL. When this option is "
+"not present, the default value I<https://ftp-master.debian.org/dm.txt> is "
+"used."
+msgstr ""
+"ruft die Rechtedatei des Debian-Paketbetreuers von der mitgegebenen URL ab. "
+"Wenn diese Option nicht vorhanden ist, wird der Vorgabewert I<https://ftp-"
+"master.debian.org/dm.txt> benutzt."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:67
+msgid "Display an usage summary and exit."
+msgstr "zeigt eine Aufrufinformationen und wird beendet."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:69
+msgid "B<--keyring=>I<keyring>, B<-s> I<keyring>"
+msgstr "B<--keyring=>I<Schlüsselbund>, B<-s> I<Schlüsselbund>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:71
+msgid ""
+"Use the supplied GnuPG keyrings to look-up GPG fingerprints from the DM "
+"permission file. When not present, the default Debian Developer and "
+"Maintainer keyrings are used (I</usr/share/keyrings/debian-keyring.gpg> and "
+"I</usr/share/keyrings/debian-maintainers.gpg>, installed by the I<debian-"
+"keyring> package)."
+msgstr ""
+"verwendet die mitgegebenen GnuPG-Schlüsselbünde, um GPG-Fingerabdrücke in "
+"der Rechtedatei des Debian-Paketbetreuers nachzuschlagen. Wenn sie nicht "
+"vorhanden sind, werden die Standardschlüsselbünde der Debian-Entwickler und -"
+"Paketbetreuer benutzt (I</usr/share/keyrings/debian-keyring.gpg> und I</usr/"
+"share/keyrings/debian-maintainers.gpg>, die durch das Paket I<debian-"
+"keyring> installiert wurden."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:77
+msgid "Separate keyrings with a colon \":\"."
+msgstr "trennt Schlüsselbünde durch einen Doppelpunkt »:«."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:79
+msgid "B<--search=>I<search_type>, B<-s> I<search_type>"
+msgstr "B<--search=>I<Suchtyp>, B<-s> I<Suchtyp>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:81
+msgid ""
+"Modify the look-up behavior. This influences the interpretation of the "
+"I<query> argument. Supported search types are:"
+msgstr ""
+"ändert das Nachschlagverhalten. Dies beeinflusst die Interpretation des "
+"Arguments I<Abfrage>. Folgende Suchtypen werden unterstützt:"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:88
+msgid ""
+"Search for a source package name. This is also the default when B<--search> "
+"is omitted. Since package names are unique, this will return given ACLs - "
+"if any - for a single package."
+msgstr ""
+"sucht nach einem Quellpaketnamen. Dies ist auch die Voreinstellung, wenn B<--"
+"search> weggelassen wird. Da Paketnamen eindeutig sind, wird dies, falls "
+"vorhanden, die gegebenen ACLs eines einzigen Pakets zurückgeben."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:92
+msgid "B<uid>"
+msgstr "B<uid>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:94
+msgid ""
+"Search for a Debian Maintainer. This should be (a fraction of) a name. It "
+"will return all ACLs assigned to matching maintainers."
+msgstr ""
+"sucht nach einem Debian-Paketbetreuer. Dies sollte ein Name (oder ein Teil "
+"davon) sein. Es wird alle zugewiesenen ACLs des zugehörigen Paketbetreuers "
+"zurückgeben."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:97
+msgid "B<sponsor>"
+msgstr "B<sponsor>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:99
+msgid ""
+"Search for a sponsor (i.e. a Debian Developer) who granted DM permissions. "
+"This will return all ACLs given by the supplied developer."
+msgstr ""
+"sucht nach einem Sponsor (d.h. einem Debian-Entwickler) der Debian-"
+"Paketbetreuerrechte gewährt. Dies wird alle angegebene ACLs des "
+"mitgelieferten Paketbetreuers zurückgeben."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:102
+msgid "Note that this is an expensive operation which may take some time."
+msgstr ""
+"Beachten Sie, dass dies eine aufwendige Transaktion ist, die lange dauern "
+"kann."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:106
+msgid "I<query>"
+msgstr "I<Abfrage>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:108
+msgid ""
+"A case sensitive argument to be looked up in the ACL permission file. The "
+"exact interpretation of this argument is dependent by the B<--search> "
+"argument."
+msgstr ""
+"ein Argument zum Nachschlagen der ACL-Rechtedatei, bei dem die Groß- und "
+"Kleinschreibung beachtet wird. Die exakte Interpretation dieses Arguments "
+"ist vom Argument B<--search> abhängig."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:111
+msgid "This argument can be repeated."
+msgstr "Dieses Argument kann wiederholt werden."
+
+#. type: =head1
+#: ../scripts/who-permits-upload.pl:115
+msgid "EXIT VALUE"
+msgstr "RÜCKGABEWERT"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:121
+msgid "Success"
+msgstr "Erfolgreich"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:125
+msgid "An error occurred"
+msgstr "Ein Fehler ist aufgetreten."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:127
+msgid "2Z<>"
+msgstr "2Z<>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:129
+msgid "The command line was not understood"
+msgstr "Die Befehlszeile wurde nicht verstanden."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:137
+msgid "who-permits-upload --search=sponsor arno@debian.org"
+msgstr "who-permits-upload --search=sponsor arno@debian.org"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:139
+msgid ""
+"Search for all DM upload permissions given by the UID \"arno@debian.org\". "
+"Note, that only primary UIDs will match."
+msgstr ""
+"sucht nach allen Rechten von Debian-Paketbetreuern zum Hochladen, die durch "
+"die UID »arno@debian.org« gegeben sind. Beachten Sie, dass nur die erste UID "
+"passen wird."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:142
+msgid "who-permits-upload -s=sponsor \"Arno Töll\""
+msgstr "who-permits-upload -s=sponsor \"Arno Töll\""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:144
+msgid "Same as above, but use a full name instead."
+msgstr ""
+"dasselbe wie oben, nur dass stattdessen ein vollständiger Name benutzt wird"
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:146
+msgid "who-permits-upload apache2"
+msgstr "who-permits-upload apache2"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:148
+msgid "Look up who gave upload permissions for the apache2 source package."
+msgstr ""
+"schlägt nach, wer Rechte zum Hochladen für das Quellpaket »apache2« vergab."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:150
+msgid "who-permits-upload --search=uid \"Paul Tagliamonte\""
+msgstr "who-permits-upload --search=uid \"Paul Tagliamonte\""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:152
+msgid "Look up all DM upload permissions given to \"Paul Tagliamonte\"."
+msgstr ""
+"schlägt alle Debian-Paketbetreuerrechte zum Hochladen nach, die »Paul "
+"Tagliamonte« gegeben wurden."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:158
+msgid ""
+"B<who-permits-upload> was written by Arno Töll <arno@debian.org> and is "
+"licensed under the terms of the General Public License (GPL) version 2 or "
+"later."
+msgstr ""
+"B<who-permits-upload> wurde von Arno Töll <arno@debian.org> geschrieben und "
+"ist unter den Bedingungnen der General Public License (GPL), Version 2 oder "
+"später, lizensiert."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:163
+msgid "B<gpg>(1), B<who-uploads>(1)"
+msgstr "B<gpg>(1), B<who-uploads>(1)"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:165
+msgid ""
+"S<I<https://lists.debian.org/debian-devel-announce/2012/09/msg00008.html>>"
+msgstr ""
+"S<I<https://lists.debian.org/debian-devel-announce/2012/09/msg00008.html>>"
+
+#. type: TH
+#: ../scripts/wnpp-alert.1:1
+#, no-wrap
+msgid "WNPP-ALERT"
+msgstr "WNPP-ALERT"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:4
+msgid "wnpp-alert - check for installed packages up for adoption or orphaned"
+msgstr ""
+"wnpp-alert - prüft, ob installierte Pakete zur Adoption stehen oder verwaist "
+"sind"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:6
+msgid "B<wnpp-alert >[B<--diff>] [I<package> ...]"
+msgstr "B<wnpp-alert >[B<--diff>] [I<Paket> …]"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:8
+msgid "B<wnpp-alert --help>|B<--version>"
+msgstr "B<wnpp-alert --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:14
+msgid ""
+"B<wnpp-alert> downloads the lists of packages which have been orphaned (O), "
+"are up for adoption (RFA), or the maintainer has asked for help (RFH) from "
+"the WNPP webpages, and then outputs a list of packages installed on the "
+"system, or matching the listed packages, which are in those lists."
+msgstr ""
+"B<wnpp-alert> lädt die Liste der Pakete von den WNPP-Webseiten herunter, die "
+"verwaist wurden (O), zur Adoption bereitstehen (RFA) oder deren Betreuer um "
+"Hilfe bittet (RFH) und gibt dann eine Liste der Pakete aus, die auf dem "
+"System installiert sind oder zu den aufgelisteten Paketen passen, die auf "
+"diesen Listen stehen."
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:17
+msgid ""
+"Note that WNPP, and therefore B<wnpp-alert>'s output, is source package "
+"based."
+msgstr ""
+"Beachten Sie, dass WNPP und deshalb auch die Ausgabe von B<wnpp-alert> "
+"quellpaketbasiert ist."
+
+#. type: TP
+#: ../scripts/wnpp-alert.1:18
+#, no-wrap
+msgid "B<--diff>, B<-d>"
+msgstr "B<--diff>, B<-d>"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:23
+msgid ""
+"If the I<~/.devscripts_cache> directory exists, compare the output of B<wnpp-"
+"alert> to the previous output (cached in the file I<wnpp-diff>) and output "
+"the differences."
+msgstr ""
+"vergleicht die Ausgabe von B<wnpp-alert>, falls das Verzeichnis I<~/."
+"devscripts_cache> existiert, mit der vorherigen Ausgabe (in der Datei I<wnpp-"
+"diff> zwischengespeichert) und gibt die Unterschiede aus."
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:31 ../scripts/wnpp-check.1:25
+msgid "https://www.debian.org/devel/wnpp"
+msgstr "https://www.debian.org/devel/wnpp"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:34
+msgid ""
+"B<wnpp-alert> was written by Arthur Korn E<lt>arthur@korn.chE<gt> and "
+"modified by Julian Gilbey E<lt>jdg@debian.orgE<gt> for the devscripts "
+"package. It is in the public domain."
+msgstr ""
+"B<wnpp-alert> wurde von Arthur Korn E<lt>arthur@korn.chE<gt> geschrieben und "
+"von Julian Gilbey E<lt>jdg@debian.orgE<gt> für das Paket Devscripts "
+"angepasst. Es ist Public Domain."
+
+#. type: TH
+#: ../scripts/wnpp-check.1:1
+#, no-wrap
+msgid "WNPP-CHECK"
+msgstr "WNPP-CHECK"
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:4
+msgid ""
+"wnpp-check - check if a package is being packaged or if this has been "
+"requested"
+msgstr ""
+"wnpp-check - prüft, ob ein Paket paketiert oder dies angefordert wurde."
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:6
+msgid "B<wnpp-check >I<package >..."
+msgstr "B<wnpp-check >I<Paket >…"
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:8
+msgid "B<wnpp-check --help>|B<--version>"
+msgstr "B<wnpp-check --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:13
+msgid ""
+"B<wnpp-check> downloads the lists of packages which are listed as being "
+"packaged (ITPed) or for which a package has been requested (RFPed) from the "
+"WNPP website and lists any packages supplied on the command line which "
+"appear in those lists."
+msgstr ""
+"B<wnpp-check> lädt von der WNPP-Website die Liste der Pakete herunter, die "
+"als zu paketieren (ITP) aufgeführt sind oder für die ein Paket angefordert "
+"wurde (RFP) und listet alle auf der Befehlszeile mitgegebenen Pakete auf, "
+"die auf diesen Listen erscheinen."
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:16
+msgid ""
+"Note that WNPP, and therefore B<wnpp-check>'s output, is source package "
+"based."
+msgstr ""
+"Beachten Sie, dass WNPP und deshalb auch die Ausgabe von B<wnpp-check> "
+"quellpaketbasiert ist."
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:29
+msgid "None of the packages supplied has an open ITP or RFP"
+msgstr "Keines der angegebenen Pakete hat ein offenes ITP oder RFP."
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:33
+msgid ""
+"Either an error occurred or at least one package supplied has an open ITP or "
+"RFP"
+msgstr ""
+"Entweder ist ein Fehler aufgetreten oder mindestens eines der angegebenen "
+"Pakete hat ein offenes ITP oder RFP."
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:39
+msgid ""
+"B<wnpp-check> was written by David Paleino E<lt>d.paleino@gmail.comE<gt>; "
+"this man page was written by Adam D. Barratt E<lt>adam@adam-barratt.org."
+"ukE<gt> for the devscripts package. B<wnpp-check> was originally based on "
+"B<wnpp-alert>, which was written by Arthur Korn E<lt>arthur@korn.chE<gt> and "
+"modified by Julian Gilbey E<lt>jdg@debian.orgE<gt> for the devscripts "
+"package. Both scripts are in the public domain."
+msgstr ""
+"B<wnpp-check> wurde von David Paleino E<lt>d.paleino@gmail.comE<gt> "
+"geschrieben; diese Handbuchseite wurde von Adam D. Barratt E<lt>adam@adam-"
+"barratt.org.ukE<gt> für das Paket Devscripts verfasst. B<wnpp-check> basiert "
+"ursprünglich auf B<wnpp-alert>, das von Arthur Korn E<lt>arthur@korn.chE<gt> "
+"geschrieben und von Julian Gilbey für das Paket Devscripts angepasst wurde. "
+"Beide Skripte sind Public Domain."
+
+#. type: TH
+#: ../doc/wrap-and-sort.1:15
+#, no-wrap
+msgid "WRAP-AND-SORT"
+msgstr "WRAP-AND-SORT"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:18
+msgid ""
+"wrap-and-sort - wrap long lines and sort items in Debian packaging files"
+msgstr ""
+"wrap-and-sort - bricht lange Zeilen um und sortiert Elemente in Debian-"
+"Paketierungsdateien"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:21
+msgid "B<wrap-and-sort> [I<options>]"
+msgstr "B<wrap-and-sort> [I<Optionen>]"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:28
+msgid ""
+"B<wrap-and-sort> wraps the package lists in Debian control files. By default "
+"the lists will only split into multiple lines if the entries are longer than "
+"the maximum line length limit of 79 characters. B<wrap-and-sort> sorts the "
+"package lists in Debian control files and all I<.install> files. Beside that "
+"B<wrap-and-sort> removes trailing spaces in these files."
+msgstr ""
+"B<wrap-and-sort> bricht die Paketlisten in Debian-Steuerdateien um. "
+"Standardmäßig werden die Listen nur in mehrere Zeilen aufgeteilt, falls die "
+"Einträge länger als die maximale Längenbeschränkung von 79 Zeichen sind. "
+"B<wrap-and-sort> sortiert die Paketlisten in Debian-Steuerdateien und allen "
+"I<.install>-Dateien. Daneben entfernt B<wrap-and-sort> abschließende "
+"Leerzeichen in diesen Dateien."
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:32
+msgid ""
+"This script should be run in the root of a Debian package tree. It searches "
+"for I<control>, I<control*.in>, I<copyright>, I<copyright.in>, I<install>, "
+"and I<*.install> in the I<debian> directory."
+msgstr ""
+"Dieses Skript sollte im Wurzelverzeichnis eines Debian-Paketverzeichnisbaums "
+"ausgeführt werden. Es sucht im I<debian>-Verzeichnis nach I<control>, "
+"I<control*.in>, I<copyright>, I<copyright.in>, I<install> und I<*.install>."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:37
+#, no-wrap
+msgid "B<-a>, B<--wrap-always>"
+msgstr "B<-a>, B<--wrap-always>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:41
+msgid ""
+"Wrap all package lists in the Debian I<control> file even if they do not "
+"exceed the line length limit and could fit in one line."
+msgstr ""
+"bricht alle Paketlisten in der Debian-Datei I<control> um, sogar dann, wenn "
+"sie die Zeilenlängenbeschränkung nicht überschreiten und in eine Zeile "
+"passen würden."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:41
+#, no-wrap
+msgid "B<-s>, B<--short-indent>"
+msgstr "B<-s>, B<--short-indent>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:45
+msgid ""
+"Only indent wrapped lines by one space (default is in-line with the field "
+"name)."
+msgstr ""
+"rückt umgebrochene Zeilen nur um ein Leerzeichen ein (standardmäßig wird um "
+"die Breite des Feldnamens eingerückt)."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:45
+#, no-wrap
+msgid "B<-b>, B<--sort-binary-packages>"
+msgstr "B<-b>, B<--sort-binary-packages>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:48
+msgid "Sort binary package paragraphs by name."
+msgstr "sortiert Binärpaketabsätze nach Namen."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:48
+#, no-wrap
+msgid "B<-k>, B<--keep-first>"
+msgstr "B<-k>, B<--keep-first>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:54
+msgid ""
+"When sorting binary package paragraphs, leave the first one at the top. "
+"Unqualified B<debhelper>(7) configuration files are applied to the first "
+"package."
+msgstr ""
+"Belässt, wenn Binärpaketabsätze sortiert werden, den ersten oben. Nicht "
+"spezifizierte B<debhelper>(7)-Konfigurationsdateien werden auf das erste "
+"Paket angewandt."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:54
+#, no-wrap
+msgid "B<-n>, B<--no-cleanup>"
+msgstr "B<-n>, B<--no-cleanup>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:57
+msgid "Do not remove trailing whitespaces."
+msgstr "entfernt nicht die abschließenden Leerräume."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:57
+#, no-wrap
+msgid "B<-t>, B<--trailing-comma>"
+msgstr "B<-t>, B<--trailing-comma>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:62
+msgid ""
+"Add a trailing comma at the end of the sorted fields. This minimizes future "
+"differences in the VCS commits when additional dependencies are appended or "
+"removed."
+msgstr ""
+"fügt am Ende der sortierten Felder ein abschließendes Komma hinzu. Dies "
+"minimiert zukünftige Unterschiede in den VCS-Commits, wenn zusätzliche "
+"Abhängigkeiten angehängt oder entfernt werden."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:62
+#, no-wrap
+msgid "B<-d >I<path>, B<--debian-directory=>I<path>"
+msgstr "B<-d >I<Pfad>, B<--debian-directory=>I<Pfad>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:65
+msgid "Location of the I<debian> directory (default: I<./debian>)."
+msgstr "Speicherort des I<debian>-Verzeichnisses (Vorgabe: I<./debian>)."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:65
+#, no-wrap
+msgid "B<-f >I<file>, B<--file=>I<file>"
+msgstr "B<-f >I<Datei>, B<--file=>I<Datei>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:70
+msgid ""
+"Wrap and sort only the specified I<file>. You can specify this parameter "
+"multiple times. All supported files will be processed if no files are "
+"specified."
+msgstr ""
+"bricht nur die angegebene I<Datei> um und sortiert sie. Sie können diesen "
+"Parameter mehrfach angeben. Falls keine Dateien angegeben wurden, werden "
+"alle unterstützten Dateien verarbeitet."
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:73
+msgid "Print all files that are touched."
+msgstr "gibt alle Dateien aus, die angefasst wurden."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:73
+#, no-wrap
+msgid "B<--max-line-length=>I<max_line_length>"
+msgstr "B<--max-line-length=>I<maximale_Zeilenlänge>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:78
+msgid ""
+"Set the maximum allowed line length. Package lists in the Debian I<control> "
+"file that exceed this length limit will be wrapped. The default maximum line "
+"length is 79 characters."
+msgstr ""
+"setzt die maximal erlaubte Zeilenlänge. Paketlisten in der Debian-I<control>-"
+"Datei, die diese Längenbeschränkung überschreiten, werden umgebrochen. Die "
+"voreingestellte maximale Zeilenlänge beträgt 79 Zeichen."
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:82
+msgid ""
+"B<wrap-and-sort> and this manpage have been written by Benjamin Drung "
+"E<lt>bdrung@debian.orgE<gt>."
+msgstr ""
+"B<wrap-and-sort> und diese Handbuchseite wurden von Benjamin Drung "
+"E<lt>bdrung@debian.orgE<gt> geschrieben."
+
+#. type: TH
+#: ../scripts/devscripts.conf.5:1
+#, no-wrap
+msgid "DEVSCRIPTS.CONF"
+msgstr "DEVSCRIPTS.CONF"
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:4
+msgid "devscripts.conf - configuration file for the devscripts package"
+msgstr "devscripts.conf - Konfigurationsdatei für das Paket Devscripts"
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:9
+msgid ""
+"The B<devscripts> package provides a collection of scripts which may be of "
+"use to Debian developers and others wishing to build Debian packages. Many "
+"of these have options which can be configured on a system-wide and per-user "
+"basis."
+msgstr ""
+"Das Paket B<devscripts> stellt eine Sammlung von Skripten bereit, die für "
+"Debian-Entwickler und andere nützlich sein können, die Debian-Pakete bauen "
+"möchten. Viele davon haben Optionen, die systemweit und auf Anwenderebene "
+"konfiguriert werden können."
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:15
+msgid ""
+"Every script in the B<devscripts> package which makes use of values from "
+"these configuration files describes the specific settings recognised in its "
+"own manpage. (For a list of the scripts, either see I</usr/share/doc/"
+"devscripts/README.gz> or look at the output of I<dpkg -L devscripts | grep /"
+"usr/bin>.)"
+msgstr ""
+"Jedes Skript im B<devscripts>-Paket, das von Werten dieser "
+"Konfigurationsdateien Gebrauch macht, beschreibt die speziellen "
+"Einstellungen, die es kennt, in seiner eigenen Handbuchseite. (Eine Liste "
+"der Skripte finden Sie entweder in I</usr/share/doc/devscripts/README.gz> "
+"oder sehen Sie in die Ausgabe von I<dpkg -L devscripts | grep /usr/bin>.)"
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:24
+msgid ""
+"The two configuration files are I</etc/devscripts.conf> for system-wide "
+"defaults and I<~/.devscripts> for per-user settings. They are written with "
+"B<bash>(1) syntax, but should only have comments and simple variable "
+"assignments in them; they are both sourced (if present) by many of the "
+"B<devscripts> scripts. Variables corresponding to simple switches should "
+"have one of the values I<yes> and I<no>; any other setting is regarded as "
+"equivalent to the default setting."
+msgstr ""
+"Die beiden Konfigurationsdateien sind I</etc/devscripts.conf> für "
+"systemweite Vorgaben und I<~/.devscripts> für Einstellungen auf "
+"Anwenderebene. Sie sind in B<bash>(1)-Syntax geschrieben, sollten aber nur "
+"Kommentare und einfache Zuweisungen zu Variablen beinhalten; sie werden "
+"(falls vorhanden) durch viele der B<devscripts>-Skripte eingelesen. "
+"Variablen, die zu einfachen Schaltern gehören, sollten einen der Werte "
+"I<yes> oder I<no> enthalten; alle anderen Einstellungen werden als "
+"Entsprechung zur Standardeinstellung betrachtet."
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:28
+msgid ""
+"All variable names are written in uppercase, and begin with the script "
+"name. Package-wide variables begin with \"DEVSCRIPTS\", and are listed "
+"below, as well as in the relevant manpages."
+msgstr ""
+"Alle Variablennamen werden groß geschrieben und beginnen mit dem "
+"Skriptnamen. Paketweite Variablen beginnen mit »DEVSCRIPTS« und werden "
+"nachfolgend ebenso wie in den einschlägigen Handbuchseiten aufgeführt."
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:36
+msgid ""
+"For a list of all of the available options variables, along with their "
+"default settings, see the example configuration file I</usr/share/doc/"
+"devscripts/devscripts.conf.ex>. This is copied to I</etc/devscripts.conf> "
+"when the B<devscripts> package is first installed. Information about "
+"configuration options introduced in newer versions of the package will be "
+"appended to I</etc/devscripts.conf> when the package is upgraded."
+msgstr ""
+"Ein Liste aller verfügbarer Optionsvariablen finden Sie zusammen mit ihren "
+"Standardeinstellungen in der Beispielkonfigurationsdatei I</usr/share/doc/"
+"devscripts/devscripts.conf.ex>. Diese wird bei der ersten Installation des "
+"Pakets nach I</etc/devscripts.conf> kopiert. Informationen über "
+"Konfigurationsoptionen, die in neueren Versionen des Pakets eingeführt "
+"wurden, werden beim Upgrade des Pakets an I</etc/devscripts.conf> angehängt."
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:40
+msgid ""
+"Every script which reads the configuration files can be forced to ignore "
+"them by using B<--no-conf> as the I<first> command-line option."
+msgstr ""
+"Jedes Skript, das die Konfigurationsdateien liest, kann mittels B<--no-conf> "
+"als I<erste> Befehlszeilenoption gezwungen werden, sie zu ignorieren."
+
+#. type: SH
+#: ../scripts/devscripts.conf.5:40
+#, no-wrap
+msgid "PACKAGE-WIDE VARIABLES"
+msgstr "PAKETWEITE VARIABLEN"
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:42
+msgid "The currently recognised package-wide variables are:"
+msgstr "Die derzeit erkannten paketweiten Variablen sind:"
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:54
+msgid ""
+"These variables control scripts which change directory to find a I<debian/"
+"changelog> file or suchlike, and some other miscellaneous cases. In order "
+"to prevent unwanted, even possibly dangerous, behaviour, these variables "
+"control when actions will be performed. The scripts which currently make "
+"use of these variables are: B<debc>, B<debchange>/B<dch>, B<debclean>, "
+"B<debi>, B<debrelease>, B<debuild> and B<uscan>, but this list may change "
+"with time (and I may not remember to update this manpage). Please see the "
+"manpages of individual scripts for details of the specific behaviour for "
+"each script."
+msgstr ""
+"Diese Variablen steuern Skripte, die das Verzeichnis ändern, um eine "
+"I<debian/changelog>-Datei oder dergleichen zu finden und in verschiedenen "
+"anderen Fällen. Um unerwünschtes und möglicherweise sogar gefährliches "
+"Verhalten zu verhindern, steuern diese Variablen, wann Aktionen durchgeführt "
+"werden. Derzeit werden diese Variablen von folgenden Skripten verwendet: "
+"B<debc>, B<debchange>/B<dch>, B<debclean>, B<debi>, B<debrelease>, "
+"B<debuild> und B<uscan>, aber diese Liste kann sich im Lauf der Zeit ändern "
+"(und die Aktualisierung dieser Handbuchseite könnte vergessen werden). Bitte "
+"lesen Sie die Handbuchseiten der jeweiligen Skripte, um Einzelheiten über "
+"das spezielle Verhalten für jedes Skript zu erfahren."
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:58
+msgid "B<devscripts>(1) and I</usr/share/doc/devscripts/README.gz.>"
+msgstr "B<devscripts>(1) und I</usr/share/doc/devscripts/README.gz>"
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:60
+msgid ""
+"This manpage was written for the B<devscripts> package by the package "
+"maintainer Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Diese Handbuchseite wurde für das Paket B<devscripts> durch den "
+"Paketbetreuer Julian Gilbey E<lt>jdg@debian.orgE<gt> geschrieben."
+
+#~ msgid ""
+#~ "As a special case, the unofficial B<gift> tag name is supported in "
+#~ "addition to official tag names. B<gift> is used as a shorthand for the "
+#~ "B<gift> usertag; see L<https://wiki.debian.org/qa.debian.org/GiftTag>. "
+#~ "Adding/removing the B<gift> tag will add/remove the B<gift> usertag, "
+#~ "belonging to the \"debian-qa@lists.debian.org\" user."
+#~ msgstr ""
+#~ "Als Sonderfall wird die inoffizielle Markierung B<gift> zusätzlich zu den "
+#~ "offiziellen Markierungsnamen unterstützt. B<gift> wird als Kurzschrift "
+#~ "für die Benutzermarkierung B<gift> verwendet; siehe L<https://wiki.debian."
+#~ "org/qa.debian.org/GiftTag>. Entfernen/Hinzufügen der Markierung B<gift> "
+#~ "wird die Benutzermarkierung B<gift> entfernen/hinzufügen, die zum "
+#~ "Benutzer »debian-qa@lists.debian.org« gehört."
+
+#~ msgid "B<--diff>"
+#~ msgstr "B<--diff>"
+
+#~ msgid ""
+#~ "Make orig.tar.gz symlinks to any downloaded files if their extensions are "
+#~ "I<.tar.gz> or I<.tgz>. This is also handled for orig.tar.bz2 (for "
+#~ "upstream I<.tar.bz2>, I<.tbz>, and I<.tbz2>), orig.tar.lzma (for upstream "
+#~ "I<.tar.lzma>, I<.tlz>, I<.tlzm>, and I<.tlzma>), and orig.tar.xz (for "
+#~ "upstream I<.tar.xz> and I<.txz>). (This is the default behaviour.)"
+#~ msgstr ""
+#~ "erstellt symbolische orig.tar.gz-Verweise zu allen heruntergeladenen "
+#~ "Dateien, falls ihre Erweiterungen I<.tar.gz> oder I<.tgz> sind. Dies wird "
+#~ "außerdem für orig.tar.bz2 (für I<.tar.bz2>, I<.tbz> und I<.tbz2> der "
+#~ "Ursprungsautoren), orig.tar.lzma (für I<.tar.lzma>, I<.tlz>, I<.tlzm> und "
+#~ "I<.tlzma> der Ursprungsautoren) und orig.tar.xz (für I<.tar.xz> und I<."
+#~ "txz> der Ursprungsautoren) so gehandhabt. (Dies ist das "
+#~ "Standardverhalten.)"
+
+#~ msgid ""
+#~ "Instead of symlinking, rename the downloaded files to their Debian I<orig."
+#~ "tar.gz>, I<orig.tar.bz2>, I<orig.tar.lzma>, or I<orig.tar.xz> names as "
+#~ "described above."
+#~ msgstr ""
+#~ "benennt, wie oben beschrieben, die heruntergeladenen Dateien in ihre "
+#~ "Debian-I<orig.tar.gz>-, -I<orig.tar.bz2>-, -I<orig.tar.lzma>- oder -"
+#~ "I<orig.tar.xz>-Namen um, anstatt symbolische Verweise darauf zu erstellen."
+
+#~ msgid "Don't make these symlinks and don't rename the files."
+#~ msgstr ""
+#~ "erstellt nicht diese symbolischen Verweise und benennt die Dateien nicht "
+#~ "um."
--- /dev/null
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2014-12-23 08:54-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: TH
+#: ../scripts/annotate-output.1:1
+#, no-wrap
+msgid "ANNOTATE-OUTPUT"
+msgstr ""
+
+#. type: TH
+#: ../scripts/annotate-output.1:1 ../scripts/archpath.1:1 ../scripts/checkbashisms.1:1 ../scripts/cvs-debc.1:1 ../scripts/cvs-debi.1:1 ../scripts/cvs-debrelease.1:1 ../scripts/cvs-debuild.1:1 ../scripts/dcmd.1:1 ../scripts/debc.1:1 ../scripts/debchange.1:1 ../scripts/debclean.1:1 ../scripts/debdiff.1:1 ../scripts/debi.1:1 ../scripts/debpkg.1:1 ../scripts/debrelease.1:1 ../scripts/debrsign.1:1 ../scripts/debsign.1:1 ../scripts/debuild.1:1 ../scripts/dep3changelog.1:1 ../scripts/devscripts.1:1 ../scripts/dpkg-genbuilddeps.1:1 ../doc/edit-patch.1:1 ../scripts/dscextract.1:1 ../scripts/dscverify.1:1 ../scripts/getbuildlog.1:1 ../scripts/grep-excuses.1:1 ../scripts/list-unreleased.1:1 ../scripts/manpage-alert.1:1 ../scripts/mergechanges.1:1 ../scripts/nmudiff.1:1 ../scripts/plotchangelog.1:1 ../scripts/pts-subscribe.1:1 ../scripts/rc-alert.1:1 ../doc/suspicious-source.1:15 ../scripts/uscan.1:1 ../scripts/uupdate.1:1 ../doc/what-patch.1:1 ../scripts/whodepends.1:1 ../scripts/who-uploads.1:1 ../scripts/wnpp-alert.1:1 ../scripts/wnpp-check.1:1 ../doc/wrap-and-sort.1:15 ../scripts/devscripts.conf.5:1
+#, no-wrap
+msgid "Debian Utilities"
+msgstr ""
+
+#. type: TH
+#: ../scripts/annotate-output.1:1 ../scripts/archpath.1:1 ../scripts/checkbashisms.1:1 ../scripts/cvs-debc.1:1 ../scripts/cvs-debi.1:1 ../scripts/cvs-debrelease.1:1 ../scripts/cvs-debuild.1:1 ../scripts/dcmd.1:1 ../scripts/debc.1:1 ../scripts/debchange.1:1 ../scripts/debclean.1:1 ../scripts/debdiff.1:1 ../scripts/debi.1:1 ../scripts/debpkg.1:1 ../scripts/debrelease.1:1 ../scripts/debrsign.1:1 ../scripts/debsign.1:1 ../scripts/debuild.1:1 ../scripts/dep3changelog.1:1 ../scripts/devscripts.1:1 ../scripts/dpkg-depcheck.1:1 ../scripts/dpkg-genbuilddeps.1:1 ../doc/edit-patch.1:1 ../scripts/dscextract.1:1 ../scripts/dscverify.1:1 ../scripts/getbuildlog.1:1 ../scripts/grep-excuses.1:1 ../scripts/list-unreleased.1:1 ../scripts/manpage-alert.1:1 ../scripts/mergechanges.1:1 ../scripts/nmudiff.1:1 ../scripts/plotchangelog.1:1 ../scripts/pts-subscribe.1:1 ../scripts/rc-alert.1:1 ../doc/suspicious-source.1:15 ../scripts/uscan.1:1 ../scripts/uupdate.1:1 ../doc/what-patch.1:1 ../scripts/whodepends.1:1 ../scripts/who-uploads.1:1 ../scripts/wnpp-alert.1:1 ../scripts/wnpp-check.1:1 ../doc/wrap-and-sort.1:15 ../scripts/devscripts.conf.5:1
+#, no-wrap
+msgid "DEBIAN"
+msgstr ""
+
+#. type: SH
+#: ../scripts/annotate-output.1:2 ../scripts/archpath.1:2 ../scripts/bts.pl:39 ../scripts/build-rdeps.pl:18 ../scripts/chdist.pl:18 ../scripts/checkbashisms.1:2 ../scripts/cowpoke.1:18 ../scripts/cvs-debc.1:2 ../scripts/cvs-debi.1:2 ../scripts/cvs-debrelease.1:2 ../scripts/cvs-debuild.1:2 ../scripts/dcmd.1:2 ../scripts/dcontrol.pl:196 ../scripts/dd-list.1:18 ../scripts/debc.1:2 ../scripts/debchange.1:2 ../scripts/debcheckout.pl:24 ../scripts/debclean.1:2 ../scripts/debcommit.pl:3 ../scripts/debdiff.1:2 ../scripts/debi.1:2 ../scripts/debpkg.1:2 ../scripts/debrelease.1:2 ../scripts/debrsign.1:2 ../scripts/debsign.1:2 ../scripts/debsnap.1:3 ../scripts/debuild.1:2 ../scripts/desktop2menu.pl:24 ../scripts/dep3changelog.1:2 ../scripts/devscripts.1:2 ../scripts/dget.pl:508 ../scripts/diff2patches.1:2 ../scripts/dpkg-depcheck.1:2 ../scripts/dpkg-genbuilddeps.1:2 ../doc/edit-patch.1:2 ../scripts/dscextract.1:2 ../scripts/dscverify.1:2 ../scripts/getbuildlog.1:2 ../scripts/grep-excuses.1:2 ../scripts/licensecheck.pl:22 ../scripts/list-unreleased.1:2 ../scripts/manpage-alert.1:2 ../scripts/mass-bug.pl:21 ../scripts/mergechanges.1:2 ../scripts/mk-build-deps.pl:24 ../scripts/mk-origtargz.pl:24 ../scripts/namecheck.pl:3 ../scripts/nmudiff.1:2 ../scripts/origtargz.pl:20 ../scripts/plotchangelog.1:2 ../scripts/pts-subscribe.1:2 ../scripts/rc-alert.1:2 ../scripts/rmadison.pl:200 ../scripts/sadt.pod:17 ../doc/suspicious-source.1:17 ../scripts/svnpath.pl:3 ../scripts/tagpending.pl:79 ../scripts/transition-check.pl:23 ../scripts/uscan.1:2 ../scripts/uupdate.1:2 ../doc/what-patch.1:2 ../scripts/whodepends.1:2 ../scripts/who-uploads.1:2 ../scripts/who-permits-upload.pl:42 ../scripts/wnpp-alert.1:2 ../scripts/wnpp-check.1:2 ../doc/wrap-and-sort.1:16 ../scripts/devscripts.conf.5:2
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:4
+msgid "annotate-output - annotate program output with time and stream"
+msgstr ""
+
+#. type: SH
+#: ../scripts/annotate-output.1:4 ../scripts/archpath.1:4 ../scripts/bts.pl:186 ../scripts/build-rdeps.pl:22 ../scripts/chdist.pl:22 ../scripts/checkbashisms.1:4 ../scripts/cowpoke.1:20 ../scripts/cvs-debc.1:4 ../scripts/cvs-debi.1:4 ../scripts/cvs-debrelease.1:4 ../scripts/cvs-debuild.1:4 ../scripts/dcmd.1:4 ../scripts/dcontrol.pl:200 ../scripts/dd-list.1:21 ../scripts/debc.1:4 ../scripts/debchange.1:4 ../scripts/debcheckout.pl:28 ../scripts/debclean.1:4 ../scripts/debcommit.pl:7 ../scripts/debdiff.1:4 ../scripts/debi.1:4 ../scripts/debpkg.1:4 ../scripts/debrelease.1:4 ../scripts/debrsign.1:4 ../scripts/debsign.1:4 ../scripts/debsnap.1:6 ../scripts/debuild.1:4 ../scripts/desktop2menu.pl:28 ../scripts/dep3changelog.1:4 ../scripts/dget.pl:512 ../scripts/dpkg-depcheck.1:4 ../scripts/dpkg-genbuilddeps.1:4 ../doc/edit-patch.1:6 ../scripts/dscextract.1:4 ../scripts/dscverify.1:4 ../scripts/getbuildlog.1:4 ../scripts/grep-excuses.1:4 ../scripts/licensecheck.pl:26 ../scripts/list-unreleased.1:4 ../scripts/manpage-alert.1:4 ../scripts/mass-bug.pl:25 ../scripts/mergechanges.1:4 ../scripts/mk-build-deps.pl:28 ../scripts/mk-origtargz.pl:28 ../scripts/nmudiff.1:4 ../scripts/origtargz.pl:24 ../scripts/plotchangelog.1:4 ../scripts/pts-subscribe.1:4 ../scripts/rc-alert.1:4 ../scripts/rmadison.pl:204 ../scripts/sadt.pod:21 ../doc/suspicious-source.1:21 ../scripts/svnpath.pl:7 ../scripts/tagpending.pl:83 ../scripts/transition-check.pl:27 ../scripts/uscan.1:4 ../scripts/uupdate.1:4 ../doc/what-patch.1:5 ../scripts/whodepends.1:4 ../scripts/who-uploads.1:4 ../scripts/who-permits-upload.pl:46 ../scripts/wnpp-alert.1:4 ../scripts/wnpp-check.1:4 ../doc/wrap-and-sort.1:18
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:6
+msgid "B<annotate-output> [I<options>] I<program> [I<args> ...]"
+msgstr ""
+
+#. type: SH
+#: ../scripts/annotate-output.1:6 ../scripts/archpath.1:12 ../scripts/bts.pl:190 ../scripts/build-rdeps.pl:26 ../scripts/chdist.pl:26 ../scripts/checkbashisms.1:8 ../scripts/cowpoke.1:24 ../scripts/cvs-debc.1:6 ../scripts/cvs-debi.1:6 ../scripts/cvs-debrelease.1:7 ../scripts/cvs-debuild.1:7 ../scripts/dcmd.1:6 ../scripts/dcontrol.pl:208 ../scripts/dd-list.1:26 ../scripts/debc.1:6 ../scripts/debchange.1:8 ../scripts/debcheckout.pl:40 ../scripts/debclean.1:6 ../scripts/debcommit.pl:11 ../scripts/debdiff.1:15 ../scripts/debi.1:6 ../scripts/debpkg.1:6 ../scripts/debrelease.1:6 ../scripts/deb-reversion.dbk:82 ../scripts/debrsign.1:7 ../scripts/debsign.1:6 ../scripts/debsnap.1:14 ../scripts/debuild.1:10 ../scripts/desktop2menu.pl:34 ../scripts/dep3changelog.1:6 ../scripts/devscripts.1:4 ../scripts/dget.pl:522 ../scripts/diff2patches.1:10 ../scripts/dpkg-depcheck.1:6 ../scripts/dpkg-genbuilddeps.1:6 ../doc/edit-patch.1:11 ../scripts/dscextract.1:6 ../scripts/dscverify.1:6 ../scripts/getbuildlog.1:8 ../scripts/grep-excuses.1:6 ../scripts/licensecheck.pl:35 ../scripts/list-unreleased.1:6 ../scripts/manpage-alert.1:8 ../scripts/mass-bug.pl:29 ../scripts/mergechanges.1:6 ../scripts/mk-build-deps.pl:34 ../scripts/mk-origtargz.pl:38 ../scripts/nmudiff.1:6 ../scripts/origtargz.pl:34 ../scripts/plotchangelog.1:7 ../scripts/pts-subscribe.1:8 ../scripts/rc-alert.1:8 ../scripts/rmadison.pl:212 ../scripts/sadt.pod:25 ../doc/suspicious-source.1:24 ../scripts/svnpath.pl:17 ../scripts/tagpending.pl:87 ../scripts/transition-check.pl:33 ../scripts/uscan.1:6 ../scripts/uupdate.1:8 ../doc/what-patch.1:8 ../scripts/whodepends.1:6 ../scripts/who-uploads.1:6 ../scripts/who-permits-upload.pl:50 ../scripts/wnpp-alert.1:8 ../scripts/wnpp-check.1:8 ../doc/wrap-and-sort.1:22 ../scripts/devscripts.conf.5:4
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:10
+msgid ""
+"B<annotate-output> will execute the specified program, while prepending "
+"every line with the current time and O for stdout and E for stderr."
+msgstr ""
+
+#. type: SH
+#: ../scripts/annotate-output.1:11 ../scripts/bts.pl:242 ../scripts/build-rdeps.pl:30 ../scripts/chdist.pl:33 ../scripts/checkbashisms.1:23 ../scripts/cowpoke.1:29 ../scripts/cvs-debc.1:24 ../scripts/cvs-debi.1:28 ../scripts/cvs-debrelease.1:21 ../scripts/cvs-debuild.1:32 ../scripts/dcmd.1:15 ../scripts/dcontrol.pl:242 ../scripts/dd-list.1:58 ../scripts/debc.1:64 ../scripts/debchange.1:145 ../scripts/debcheckout.pl:68 ../scripts/debclean.1:60 ../scripts/debcommit.pl:19 ../scripts/debdiff.1:52 ../scripts/debi.1:65 ../scripts/debrelease.1:56 ../scripts/deb-reversion.dbk:128 ../scripts/debrsign.1:30 ../scripts/debsign.1:39 ../scripts/debsnap.1:26 ../scripts/debuild.1:219 ../scripts/dep3changelog.1:15 ../scripts/dget.pl:563 ../scripts/diff2patches.1:16 ../scripts/dpkg-depcheck.1:15 ../scripts/dscextract.1:14 ../scripts/dscverify.1:17 ../scripts/getbuildlog.1:24 ../scripts/grep-excuses.1:13 ../scripts/licensecheck.pl:44 ../scripts/list-unreleased.1:12 ../scripts/manpage-alert.1:14 ../scripts/mass-bug.pl:59 ../scripts/mk-build-deps.pl:44 ../scripts/mk-origtargz.pl:52 ../scripts/nmudiff.1:21 ../scripts/origtargz.pl:95 ../scripts/plotchangelog.1:43 ../scripts/pts-subscribe.1:18 ../scripts/rc-alert.1:17 ../scripts/rmadison.pl:221 ../scripts/sadt.pod:42 ../doc/suspicious-source.1:34 ../scripts/tagpending.pl:93 ../scripts/transition-check.pl:42 ../scripts/uscan.1:363 ../scripts/uupdate.1:52 ../doc/what-patch.1:15 ../scripts/whodepends.1:10 ../scripts/who-uploads.1:15 ../scripts/who-permits-upload.pl:56 ../scripts/wnpp-alert.1:17 ../scripts/wnpp-check.1:16 ../doc/wrap-and-sort.1:33
+#, no-wrap
+msgid "OPTIONS"
+msgstr ""
+
+#. type: TP
+#: ../scripts/annotate-output.1:12
+#, no-wrap
+msgid "B<+FORMAT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:16
+msgid "Controls the timestamp format, as per B<date>(1). Defaults to \"%H:%M:%S\"."
+msgstr ""
+
+#. type: TP
+#: ../scripts/annotate-output.1:16 ../scripts/chdist.pl:37 ../scripts/dcontrol.pl:254 ../scripts/dd-list.1:59 ../scripts/debcheckout.pl:93 ../scripts/debsnap.1:57 ../scripts/dget.pl:621 ../scripts/dpkg-depcheck.1:96 ../scripts/getbuildlog.1:25 ../scripts/mk-build-deps.pl:79 ../scripts/rmadison.pl:245 ../scripts/sadt.pod:59 ../doc/suspicious-source.1:35 ../doc/what-patch.1:17 ../doc/wrap-and-sort.1:34
+#, no-wrap
+msgid "B<-h>, B<--help>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:19 ../scripts/debchange.1:389 ../scripts/debclean.1:87 ../scripts/debrelease.1:102 ../scripts/debsign.1:103 ../scripts/dep3changelog.1:19 ../scripts/dscverify.1:39 ../scripts/nmudiff.1:76 ../scripts/pts-subscribe.1:31 ../scripts/uupdate.1:85 ../scripts/who-uploads.1:47
+msgid "Display a help message and exit successfully."
+msgstr ""
+
+#. type: SH
+#: ../scripts/annotate-output.1:20 ../scripts/dscextract.1:30 ../scripts/uscan.1:348
+#, no-wrap
+msgid "EXAMPLE"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:30
+#, no-wrap
+msgid ""
+"$ annotate-output make\n"
+"21:41:21 I: Started make\n"
+"21:41:21 O: gcc -Wall program.c\n"
+"21:43:18 E: program.c: Couldn't compile, and took me ages to find out\n"
+"21:43:19 E: collect2: ld returned 1 exit status\n"
+"21:43:19 E: make: *** [all] Error 1\n"
+"21:43:19 I: Finished with exitcode 2\n"
+msgstr ""
+
+#. type: SH
+#: ../scripts/annotate-output.1:32 ../scripts/debsnap.1:136 ../scripts/rc-alert.1:119 ../scripts/whodepends.1:17
+#, no-wrap
+msgid "BUGS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:36
+msgid ""
+"Since stdout and stderr are processed in parallel, it can happen that some "
+"lines received on stdout will show up before later-printed stderr lines (and "
+"vice-versa)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:41
+msgid ""
+"This is unfortunately very hard to fix with the current annotation "
+"strategy. A fix would involve switching to PTRACE'ing the process. Giving "
+"nice a (much) higher priority over the executed program could however cause "
+"this behaviour to show up less frequently."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:46
+msgid ""
+"The program does not work as well when the output is not linewise. In "
+"particular, when an interactive program asks for input, the question might "
+"not be shown until after you have answered it. This will give the "
+"impression that the annotated program has hung, while it has not."
+msgstr ""
+
+#. type: SH
+#: ../scripts/annotate-output.1:47 ../scripts/bts.pl:4113 ../scripts/checkbashisms.1:63 ../scripts/cowpoke.1:379 ../scripts/cvs-debc.1:58 ../scripts/cvs-debi.1:62 ../scripts/cvs-debrelease.1:64 ../scripts/cvs-debuild.1:53 ../scripts/dcmd.1:107 ../scripts/dcontrol.pl:287 ../scripts/debc.1:115 ../scripts/debchange.1:469 ../scripts/debcheckout.pl:228 ../scripts/debclean.1:107 ../scripts/debcommit.pl:912 ../scripts/debdiff.1:217 ../scripts/debi.1:132 ../scripts/debrelease.1:132 ../scripts/deb-reversion.dbk:247 ../scripts/debrsign.1:66 ../scripts/debsign.1:134 ../scripts/debsnap.1:118 ../scripts/debuild.1:410 ../scripts/dep3changelog.1:28 ../scripts/dget.pl:683 ../scripts/diff2patches.1:45 ../scripts/dpkg-depcheck.1:118 ../scripts/dpkg-genbuilddeps.1:30 ../scripts/dscverify.1:75 ../scripts/grep-excuses.1:38 ../scripts/list-unreleased.1:19 ../scripts/mk-origtargz.pl:143 ../scripts/nmudiff.1:108 ../scripts/origtargz.pl:157 ../scripts/plotchangelog.1:124 ../scripts/pts-subscribe.1:51 ../scripts/rc-alert.1:121 ../scripts/rmadison.pl:332 ../scripts/sadt.pod:69 ../scripts/tagpending.pl:148 ../scripts/uscan.1:585 ../scripts/uupdate.1:170 ../doc/what-patch.1:35 ../scripts/who-permits-upload.pl:161 ../scripts/wnpp-alert.1:29 ../scripts/wnpp-check.1:23 ../scripts/devscripts.conf.5:54
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:49
+msgid "B<date>(1)"
+msgstr ""
+
+#. type: SH
+#: ../scripts/annotate-output.1:50
+#, no-wrap
+msgid "SUPPORT"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:54
+msgid ""
+"This program is community-supported (meaning: you'll need to fix it "
+"yourself). Patches are however appreciated, as is any feedback (positive or "
+"negative)."
+msgstr ""
+
+#. type: SH
+#: ../scripts/annotate-output.1:55 ../scripts/archpath.1:54 ../scripts/build-rdeps.pl:344 ../scripts/checkbashisms.1:65 ../scripts/cowpoke.1:385 ../scripts/cvs-debc.1:63 ../scripts/cvs-debi.1:67 ../scripts/cvs-debrelease.1:68 ../scripts/cvs-debuild.1:58 ../scripts/dcmd.1:110 ../scripts/dcontrol.pl:280 ../scripts/dd-list.1:100 ../scripts/debc.1:119 ../scripts/debchange.1:475 ../scripts/debcheckout.pl:233 ../scripts/debclean.1:110 ../scripts/debcommit.pl:908 ../scripts/debdiff.1:224 ../scripts/debi.1:135 ../scripts/debpkg.1:23 ../scripts/debrelease.1:136 ../scripts/deb-reversion.dbk:292 ../scripts/debrsign.1:70 ../scripts/debsign.1:145 ../scripts/debuild.1:422 ../scripts/desktop2menu.pl:52 ../scripts/dep3changelog.1:26 ../scripts/dget.pl:675 ../scripts/diff2patches.1:48 ../scripts/dpkg-genbuilddeps.1:36 ../scripts/dscextract.1:32 ../scripts/dscverify.1:79 ../scripts/getbuildlog.1:41 ../scripts/grep-excuses.1:40 ../scripts/licensecheck.pl:129 ../scripts/list-unreleased.1:21 ../scripts/manpage-alert.1:20 ../scripts/mass-bug.pl:522 ../scripts/mergechanges.1:18 ../scripts/mk-build-deps.pl:94 ../scripts/mk-origtargz.pl:147 ../scripts/namecheck.pl:30 ../scripts/nmudiff.1:112 ../scripts/origtargz.pl:161 ../scripts/plotchangelog.1:126 ../scripts/pts-subscribe.1:56 ../scripts/rc-alert.1:125 ../scripts/rmadison.pl:336 ../scripts/svnpath.pl:93 ../scripts/transition-check.pl:81 ../scripts/uscan.1:591 ../scripts/uupdate.1:177 ../scripts/whodepends.1:19 ../scripts/who-uploads.1:71 ../scripts/who-permits-upload.pl:156 ../scripts/wnpp-alert.1:31 ../scripts/wnpp-check.1:33 ../scripts/devscripts.conf.5:58
+#, no-wrap
+msgid "AUTHOR"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:59
+msgid ""
+"B<annotate-output> was written by Jeroen van Wolffelaar "
+"E<lt>jeroen@wolffelaar.nlE<gt>. This manpage comes under the same copyright "
+"as annotate-output itself, read /usr/bin/annotate-output (or wherever you "
+"install it) for the details."
+msgstr ""
+
+#. type: TH
+#: ../scripts/archpath.1:1
+#, no-wrap
+msgid "ARCHPATH"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:4
+msgid "archpath - output arch (tla/Bazaar) archive names, with support for branches"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:6
+msgid "B<archpath>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:9
+msgid "B<archpath> I<branch>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:12
+msgid "B<archpath> I<branch>B<-->I<version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:15
+msgid "B<archpath> is intended to be run in an arch (tla or Bazaar) working copy."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:20
+msgid ""
+"In its simplest usage, B<archpath> with no parameters outputs the package "
+"name (archive/category--branch--version) associated with the working copy."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:28
+msgid ""
+"If a parameter is given, it may either be a branch--version, in which case "
+"B<archpath> will output a corresponding package name in the current archive "
+"and category, or a plain branch name (without \\(oq--\"), in which case "
+"B<archpath> will output a corresponding package name in the current archive "
+"and category and with the same version as the current working copy."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:32
+msgid ""
+"This is useful for branching. For example, if you're using Bazaar and you "
+"want to create a branch for a new feature, you might use a command like "
+"this:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:37
+#, no-wrap
+msgid "CW<baz branch $(archpath) $(archpath new-feature)>\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:43
+msgid ""
+"Or if you want to tag your current code onto a \\(oqreleases\\(cq branch as "
+"version 1.0, you might use a command like this:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:48
+#, no-wrap
+msgid "CW<baz branch $(archpath) $(archpath releases--1.0)>\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:54
+msgid ""
+"That's much easier than using \\(oqbaz tree-version\\(cq to look up the "
+"package name and manually modifying the result."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:57
+msgid "B<archpath> was written by"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:59
+msgid "Colin Watson E<lt>cjwatson@debian.orgE<gt>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/archpath.1:63
+msgid ""
+"Like B<archpath>, this manual page is released under the GNU General Public "
+"License, version 2 or later."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:41
+msgid "bts - developers' command line interface to the BTS"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:188
+msgid ""
+"B<bts> [I<options>] I<command> [I<args>] [B<#>I<comment>] [B<.>|B<,> "
+"I<command> [I<args>] [B<#>I<comment>]] ..."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:192
+msgid ""
+"This is a command line interface to the Debian Bug Tracking System (BTS), "
+"intended mainly for use by developers. It lets the BTS be manipulated using "
+"simple commands that can be run at the prompt or in a script, does various "
+"sanity checks on the input, and constructs and sends a mail to the BTS "
+"control address for you. A local cache of web pages and e-mails from the BTS "
+"may also be created and updated."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:200
+msgid ""
+"In general, the command line interface is the same as what you would write "
+"in a mail to control@bugs.debian.org, just prefixed with \"bts\". For "
+"example:"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/bts.pl:204
+#, no-wrap
+msgid ""
+" % bts severity 69042 normal\n"
+" % bts merge 69042 43233\n"
+" % bts retitle 69042 blah blah\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:208
+msgid ""
+"A few additional commands have been added for your convenience, and this "
+"program is less strict about what constitutes a valid bug number. For "
+"example, \"severity Bug#85942 normal\" is understood, as is \"severity "
+"#85942 normal\". (Of course, your shell may regard \"#\" as a comment "
+"character though, so you may need to quote it!)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:214
+msgid ""
+"Also, for your convenience, this program allows you to abbreviate commands "
+"to the shortest unique substring (similar to how cvs lets you abbreviate "
+"commands). So it understands things like \"bts cl 85942\"."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:218
+msgid ""
+"It is also possible to include a comment in the mail sent to the BTS. If "
+"your shell does not strip out the comment in a command like \"bts severity "
+"30321 normal #inflated severity\", then this program is smart enough to "
+"figure out where the comment is, and include it in the email. Note that "
+"most shells do strip out such comments before they get to the program, "
+"unless the comment is quoted. (Something like \"bts severity #85942 "
+"normal\" will not be treated as a comment!)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:226
+msgid ""
+"You can specify multiple commands by separating them with a single dot, "
+"rather like B<update-rc.d>; a single comma may also be used; all the "
+"commands will then be sent in a single mail. It is important the dot/comma "
+"is surrounded by whitespace so it is not mistaken for part of a command. "
+"For example (quoting where necessary so that B<bts> sees the comment):"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/bts.pl:232
+#, no-wrap
+msgid ""
+" % bts severity 95672 normal , merge 95672 95673 \\#they are the same!\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:234
+msgid ""
+"The abbreviation \"it\" may be used to refer to the last mentioned bug "
+"number, so you could write:"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/bts.pl:237
+#, no-wrap
+msgid ""
+" % bts severity 95672 wishlist , retitle it \"bts: please add a --foo "
+"option\"\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:239
+msgid ""
+"Please use this program responsibly, and do take our users into "
+"consideration."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:244
+msgid ""
+"B<bts> examines the B<devscripts> configuration files as described below. "
+"Command line options override the configuration file settings, though."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:250
+msgid "B<-o>, B<--offline>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:252
+msgid ""
+"Make B<bts> use cached bugs for the B<show> and B<bugs> commands, if a cache "
+"is available for the requested data. See the B<cache> command, below for "
+"information on setting up a cache."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:256
+msgid "B<--online>, B<--no-offline>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:258
+msgid ""
+"Opposite of B<--offline>; overrides any configuration file directive to work "
+"offline."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:261
+msgid "B<-n>, B<--no-action>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:263
+msgid "Do not send emails but print them to standard output."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:265
+msgid "B<--cache>, B<--no-cache>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:267
+msgid ""
+"Should we attempt to cache new versions of BTS pages when performing "
+"B<show>/B<bugs> commands? Default is to cache."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:270
+msgid "B<--cache-mode=>{B<min>|B<mbox>|B<full>}"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:272
+msgid ""
+"When running a B<bts cache> command, should we only mirror the basic bug "
+"(B<min>), or should we also mirror the mbox version (B<mbox>), or should we "
+"mirror the whole thing, including the mbox and the boring attachments to the "
+"BTS bug pages and the acknowledgement emails (B<full>)? Default is B<min>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:278
+msgid "B<--cache-delay=>I<seconds>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:280
+msgid ""
+"Time in seconds to delay between each download, to avoid hammering the BTS "
+"web server. Default is 5 seconds."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:283
+msgid "B<--mbox>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:285
+msgid ""
+"Open a mail reader to read the mbox corresponding to a given bug number for "
+"B<show> and B<bugs> commands."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:288
+msgid "B<--mailreader=>I<READER>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:290
+msgid ""
+"Specify the command to read the mbox. Must contain a \"B<%s>\" string "
+"(unquoted!), which will be replaced by the name of the mbox file. The "
+"command will be split on white space and will not be passed to a shell. "
+"Default is 'B<mutt -f %s>'. (Also, B<%%> will be substituted by a single "
+"B<%> if this is needed.)"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:296
+msgid "B<--cc-addr=>I<CC_EMAIL_ADDRESS>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:298
+msgid ""
+"Send carbon copies to a list of users. I<CC_EMAIL_ADDRESS> should be a "
+"comma-separated list of email addresses."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:301
+msgid "B<--use-default-cc>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:303
+msgid ""
+"Add the addresses specified in the configuration file option "
+"B<BTS_DEFAULT_CC> to the list specified using B<--cc-addr>. This is the "
+"default."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:307
+msgid "B<--no-use-default-cc>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:309
+msgid "Do not add addresses specified in B<BTS_DEFAULT_CC> to the carbon copy list."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:312 ../scripts/mass-bug.pl:103
+msgid "B<--sendmail=>I<SENDMAILCMD>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:314
+msgid ""
+"Specify the B<sendmail> command. The command will be split on white space "
+"and will not be passed to a shell. Default is F</usr/sbin/sendmail>. The "
+"B<-t> option will be automatically added if the command is "
+"F</usr/sbin/sendmail> or F</usr/sbin/exim*>. For other mailers, if they "
+"require a B<-t> option, this must be included in the I<SENDMAILCMD>, for "
+"example: B<--sendmail=\"/usr/sbin/mymailer -t\">."
+msgstr ""
+
+#. type: TP
+#: ../scripts/bts.pl:321 ../scripts/nmudiff.1:31
+#, no-wrap
+msgid "B<--mutt>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:323
+msgid ""
+"Use B<mutt> for sending of mails. Default is not to use B<mutt>, except for "
+"some commands."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:326
+msgid ""
+"Note that one of B<$DEBEMAIL> or B<$EMAIL> must be set in the environment in "
+"order to use B<mutt> to send emails."
+msgstr ""
+
+#. type: TP
+#: ../scripts/bts.pl:329 ../scripts/nmudiff.1:36
+#, no-wrap
+msgid "B<--no-mutt>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:331
+msgid "Don't use B<mutt> for sending of mails."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:333
+msgid "B<--smtp-host=>I<SMTPHOST>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:335
+msgid ""
+"Specify an SMTP host. If given, B<bts> will send mail by talking directly "
+"to this SMTP host rather than by invoking a B<sendmail> command."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:338
+msgid ""
+"The host name may be followed by a colon (\":\") and a port number in order "
+"to use a port other than the default. It may also begin with \"ssmtp://\" "
+"or \"smtps://\" to indicate that SMTPS should be used."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:342
+msgid ""
+"Note that one of B<$DEBEMAIL> or B<$EMAIL> must be set in the environment in "
+"order to use direct SMTP connections to send emails."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:345
+msgid ""
+"Note that when sending directly via an SMTP host, specifying addresses in "
+"B<--cc-addr> or B<BTS_DEFAULT_CC> that the SMTP host will not relay will "
+"cause the SMTP host to reject the entire mail."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:349
+msgid ""
+"Note also that the use of the B<reassign> command may, when either "
+"B<--interactive> or B<--force-interactive> mode is enabled, lead to the "
+"automatic addition of a Cc to I<$newpackage>@packages.debian.org. In these "
+"cases, the note above regarding relaying applies. The submission interface "
+"(port 587) on reportbug.debian.org does not support relaying and, as such, "
+"should not be used as an SMTP server for B<bts> under the circumstances "
+"described in this paragraph."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:356
+msgid "B<--smtp-username=>I<USERNAME>, B<--smtp-password=>I<PASSWORD>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:358
+msgid ""
+"Specify the credentials to use when connecting to the SMTP server specified "
+"by B<--smtp-host>. If the server does not require authentication then these "
+"options should not be used."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:362
+msgid ""
+"If a username is specified but not a password, B<bts> will prompt for the "
+"password before sending the mail."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:365
+msgid "B<--smtp-helo=>I<HELO>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:367
+msgid ""
+"Specify the name to use in the I<HELO> command when connecting to the SMTP "
+"server; defaults to the contents of the file F</etc/mailname>, if it exists."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:371
+msgid ""
+"Note that some SMTP servers may reject the use of a I<HELO> which either "
+"does not resolve or does not appear to belong to the host using it."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:374
+msgid "B<--bts-server>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:376
+msgid "Use a debbugs server other than bugs.debian.org."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:378
+msgid "B<-f>, B<--force-refresh>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:380
+msgid ""
+"Download a bug report again, even if it does not appear to have changed "
+"since the last B<cache> command. Useful if a B<--cache-mode=full> is "
+"requested for the first time (otherwise unchanged bug reports will not be "
+"downloaded again, even if the boring bits have not been downloaded)."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:386
+msgid "B<--no-force-refresh>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:388
+msgid "Suppress any configuration file B<--force-refresh> option."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:390
+msgid "B<--only-new>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:392
+msgid ""
+"Download only new bugs when caching. Do not check for updates in bugs we "
+"already have."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:395
+msgid "B<--include-resolved>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:397
+msgid ""
+"When caching bug reports, include those that are marked as resolved. This "
+"is the default behaviour."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:400
+msgid "B<--no-include-resolved>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:402
+msgid ""
+"Reverse the behaviour of the previous option. That is, do not cache bugs "
+"that are marked as resolved."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:405
+msgid "B<--no-ack>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:407
+msgid ""
+"Suppress acknowledgment mails from the BTS. Note that this will only affect "
+"the copies of messages CCed to bugs, not those sent to the control bot."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:411
+msgid "B<--ack>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:413
+msgid "Do not suppress acknowledgement mails. This is the default behaviour."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:415 ../scripts/tagpending.pl:135
+msgid "B<-i>, B<--interactive>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:417
+msgid ""
+"Before sending an e-mail to the control bot, display the content and allow "
+"it to be edited, or the sending cancelled."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:420
+msgid "B<--force-interactive>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:422
+msgid ""
+"Similar to B<--interactive>, with the exception that an editor is spawned "
+"before prompting for confirmation of the message to be sent."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:425
+msgid "B<--no-interactive>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:427
+msgid "Send control e-mails without confirmation. This is the default behaviour."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:429 ../scripts/dget.pl:576
+msgid "B<-q>, B<--quiet>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:431
+msgid ""
+"When running B<bts cache>, only display information about newly cached "
+"pages, not messages saying already cached. If this option is specified "
+"twice, only output error messages (to stderr)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/bts.pl:435 ../scripts/cvs-debrelease.1:57 ../scripts/cvs-debuild.1:38 ../scripts/debc.1:85 ../scripts/debchange.1:377 ../scripts/debclean.1:77 ../scripts/debdiff.1:153 ../scripts/debi.1:102 ../scripts/debrelease.1:95 ../scripts/debsign.1:96 ../scripts/debuild.1:221 ../scripts/dpkg-depcheck.1:92 ../scripts/dscverify.1:24 ../scripts/grep-excuses.1:14 ../scripts/licensecheck.pl:89 ../scripts/mass-bug.pl:112 ../scripts/nmudiff.1:69 ../scripts/rmadison.pl:284 ../scripts/uscan.1:483 ../scripts/uupdate.1:78 ../scripts/who-uploads.1:40
+#, no-wrap
+msgid "B<--no-conf>, B<--noconf>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/bts.pl:437 ../scripts/cvs-debrelease.1:61 ../scripts/debc.1:89 ../scripts/debchange.1:381 ../scripts/debclean.1:81 ../scripts/debdiff.1:157 ../scripts/debi.1:106 ../scripts/debrelease.1:99 ../scripts/debsign.1:100 ../scripts/debuild.1:225 ../scripts/dpkg-depcheck.1:96 ../scripts/dscverify.1:28 ../scripts/grep-excuses.1:18 ../scripts/mass-bug.pl:114 ../scripts/nmudiff.1:73 ../scripts/uscan.1:487 ../scripts/uupdate.1:82 ../scripts/who-uploads.1:44
+msgid ""
+"Do not read any configuration files. This can only be used as the first "
+"option given on the command-line."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/bts.pl:791 ../scripts/chdist.pl:55
+msgid "COMMANDS"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:793
+msgid ""
+"For full details about the commands, see the BTS documentation. "
+"L<https://www.debian.org/Bugs/server-control>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:798
+msgid ""
+"B<show> [I<options>] [I<bug number> | I<package> | I<maintainer> | B<:> ] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:800
+msgid ""
+"B<show> [I<options>] [B<src:>I<package> | B<from:>I<submitter>] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:802
+msgid ""
+"B<show> [I<options>] [B<tag:>I<tag> | B<usertag:>I<tag> ] [I<opt>B<=>I<val> "
+"...]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:804
+msgid "B<show> [B<release-critical> | B<release-critical/>... | B<RC>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:806
+msgid "This is a synonym for B<bts bugs>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:814
+msgid ""
+"B<bugs> [I<options>] [I<bug_number> | I<package> | I<maintainer> | B<:> ] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:816
+msgid ""
+"B<bugs> [I<options>] [B<src:>I<package> | B<from:>I<submitter>] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:818
+msgid ""
+"B<bugs> [I<options>] [B<tag:>I<tag> | B<usertag:>I<tag> ] [I<opt>B<=>I<val> "
+"...]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:820
+msgid "B<bugs> [B<release-critical> | B<release-critical/>... | B<RC>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:822
+msgid ""
+"Display the page listing the requested bugs in a web browser using "
+"sensible-browser(1)."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:825
+msgid ""
+"Options may be specified after the B<bugs> command in addition to or instead "
+"of options at the start of the command line: recognised options at this "
+"point are: B<-o>/B<--offline>/B<--online>, B<-m>/B<--mbox>, B<--mailreader> "
+"and B<-->[B<no->]B<cache>. These are described earlier in this manpage. If "
+"either the B<-o> or B<--offline> option is used, or there is already an "
+"up-to-date copy in the local cache, the cached version will be used."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:832
+msgid "The meanings of the possible arguments are as follows:"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:836
+msgid "(none)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:838
+msgid ""
+"If nothing is specified, B<bts bugs> will display your bugs, assuming that "
+"either B<DEBEMAIL> or B<EMAIL> (examined in that order) is set to the "
+"appropriate email address."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:842
+msgid "I<bug_number>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:844
+msgid "Display bug number I<bug_number>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:846
+msgid "I<package>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:848
+msgid "Display the bugs for the package I<package>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:850
+msgid "B<src:>I<package>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:852
+msgid "Display the bugs for the source package I<package>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:854
+msgid "I<maintainer>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:856
+msgid "Display the bugs for the maintainer email address I<maintainer>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:858
+msgid "B<from:>I<submitter>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:860
+msgid "Display the bugs for the submitter email address I<submitter>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:862
+msgid "B<tag:>I<tag>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:864
+msgid "Display the bugs which are tagged with I<tag>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:866
+msgid "B<usertag:>I<tag>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:868
+msgid ""
+"Display the bugs which are tagged with usertag I<tag>. See the BTS "
+"documentation for more information on usertags. This will require the use "
+"of a B<users=>I<email> option."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:872
+msgid "B<:>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:874
+msgid ""
+"Details of the bug tracking system itself, along with a bug-request page "
+"with more options than this script, can be found on "
+"https://bugs.debian.org/. This page itself will be opened if the command "
+"'bts bugs :' is used."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:879
+msgid "B<release-critical>, B<RC>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:881
+msgid ""
+"Display the front page of the release-critical pages on the BTS. This is a "
+"synonym for https://bugs.debian.org/release-critical/index.html. It is also "
+"possible to say release-critical/debian/main.html and the like. RC is a "
+"synonym for release-critical/other/all.html."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:888
+msgid ""
+"After the argument specifying what to display, you can optionally specify "
+"options to use to format the page or change what it displayed. These are "
+"passed to the BTS in the URL downloaded. For example, pass dist=stable to "
+"see bugs affecting the stable version of a package, version=1.0 to see bugs "
+"affecting that version of a package, or reverse=yes to display newest "
+"messages first in a bug log."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:895
+msgid ""
+"If caching has been enabled (that is, B<--no-cache> has not been used, and "
+"B<BTS_CACHE> has not been set to B<no>), then any page requested by B<bts "
+"show> will automatically be cached, and be available offline thereafter. "
+"Pages which are automatically cached in this way will be deleted on "
+"subsequent \"B<bts show>|B<bugs>|B<cache>\" invocations if they have not "
+"been accessed in 30 days. Warning: on a filesystem mounted with the "
+"\"noatime\" option, running \"B<bts show>|B<bugs>\" does not update the "
+"cache files' access times; a cached bug will then be subject to "
+"auto-cleaning 30 days after its initial download, even if it has been "
+"accessed in the meantime."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:906
+msgid ""
+"Any other B<bts> commands following this on the command line will be "
+"executed after the browser has been exited."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:909
+msgid ""
+"The desired browser can be specified and configured by setting the "
+"B<BROWSER> environment variable. The conventions follow those defined by "
+"Eric Raymond at http://www.catb.org/~esr/BROWSER/; we here reproduce the "
+"relevant part."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:914
+msgid ""
+"The value of B<BROWSER> may consist of a colon-separated series of browser "
+"command parts. These should be tried in order until one succeeds. Each "
+"command part may optionally contain the string B<%s>; if it does, the URL to "
+"be viewed is substituted there. If a command part does not contain B<%s>, "
+"the browser is to be launched as if the URL had been supplied as its first "
+"argument. The string B<%%> must be substituted as a single %."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:922
+msgid ""
+"Rationale: We need to be able to specify multiple browser commands so "
+"programs obeying this convention can do the right thing in either X or "
+"console environments, trying X first. Specifying multiple commands may also "
+"be useful for people who share files like F<.profile> across multiple "
+"systems. We need B<%s> because some popular browsers have remote-invocation "
+"syntax that requires it. Unless B<%%> reduces to %, it won't be possible to "
+"have a literal B<%s> in the string."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:930
+msgid "For example, on most Linux systems a good thing to do would be:"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:932
+msgid "BROWSER='mozilla -raise -remote \"openURL(%s,new-window)\":links'"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1007
+msgid "B<select> [I<key>B<:>I<value> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1009
+msgid ""
+"Uses the SOAP interface to output a list of bugs which match the given "
+"selection requirements."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1012
+msgid "The following keys are allowed, and may be given multiple times."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1016 ../scripts/bts.pl:1859 ../scripts/who-permits-upload.pl:86
+msgid "B<package>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1018 ../scripts/bts.pl:1861
+msgid "Binary package name."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1020 ../scripts/bts.pl:1863
+msgid "B<source>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1022 ../scripts/bts.pl:1865
+msgid "Source package name."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1024
+msgid "B<maintainer>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1026
+msgid "E-mail address of the maintainer."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1028 ../scripts/bts.pl:1843
+msgid "B<submitter>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1030 ../scripts/bts.pl:1845
+msgid "E-mail address of the submitter."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1032 ../scripts/bts.pl:1871
+msgid "B<severity>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1034 ../scripts/bts.pl:1873
+msgid "Bug severity."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1036
+msgid "B<status>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1038
+msgid "Status of the bug. One of B<open>, B<done>, or B<forwarded>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1040 ../scripts/bts.pl:1867
+msgid "B<tag>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1042
+msgid ""
+"Tags applied to the bug. If B<users> is specified, may include usertags in "
+"addition to the standard tags."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1045 ../scripts/bts.pl:1875
+msgid "B<owner>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1047 ../scripts/bts.pl:1877
+msgid "Bug's owner."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1049
+msgid "B<correspondent>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1051
+msgid "Address of someone who sent mail to the log."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1053 ../scripts/bts.pl:1879
+msgid "B<affects>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1055
+msgid "Bugs which affect this package."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1057
+msgid "B<bugs>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1059
+msgid "List of bugs to search within."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1061
+msgid "B<users>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1063
+msgid "Users to use when looking up usertags."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1065 ../scripts/bts.pl:1883
+msgid "B<archive>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1067 ../scripts/bts.pl:1885
+msgid ""
+"Whether to search archived bugs or normal bugs; defaults to B<0> (i.e. only "
+"search normal bugs). As a special case, if archive is B<both>, both archived "
+"and unarchived bugs are returned."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1073
+msgid ""
+"For example, to select the set of bugs submitted by "
+"jrandomdeveloper@example.com and tagged B<wontfix>, one would use"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1076
+msgid "bts select submitter:jrandomdeveloper@example.com tag:wontfix"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1078 ../scripts/bts.pl:1897
+msgid ""
+"If a key is used multiple times then the set of bugs selected includes those "
+"matching any of the supplied values; for example"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1081
+msgid "bts select package:foo severity:wishlist severity:minor"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1083
+msgid "returns all bugs of package foo with either wishlist or minor severity."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1096
+msgid ""
+"B<status> [I<bug> | B<file:>I<file> | B<fields:>I<field>[B<,>I<field> ...] | "
+"B<verbose>] ..."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1098
+msgid ""
+"Uses the SOAP interface to output status information for the given bugs (or "
+"as read from the listed files -- use B<-> to indicate STDIN)."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1101
+msgid "By default, all populated fields for a bug are displayed."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1103
+msgid "If B<verbose> is given, empty fields will also be displayed."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1105
+msgid ""
+"If B<fields> is given, only those fields will be displayed. No validity "
+"checking is performed on any specified fields."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1182
+msgid "B<clone> I<bug> I<new_ID> [I<new_ID> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1184
+msgid ""
+"The B<clone> control command allows you to duplicate a I<bug> report. It is "
+"useful in the case where a single report actually indicates that multiple "
+"distinct bugs have occurred. \"New IDs\" are negative numbers, separated by "
+"spaces, which may be used in subsequent control commands to refer to the "
+"newly duplicated bugs. A new report is generated for each new ID."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1234
+msgid "B<done> I<bug> [I<version>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1236
+msgid ""
+"Mark a I<bug> as Done. This forces interactive mode since done messages "
+"should include an explanation why the bug is being closed. You should "
+"specify which I<version> of the package closed the bug, if possible."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1254
+msgid "B<reopen> I<bug> [I<submitter>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1256
+msgid "Reopen a I<bug>, with optional I<submitter>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1267
+msgid "B<archive> I<bug>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1269
+msgid ""
+"Archive a I<bug> that has previously been archived but is currently not. "
+"The I<bug> must fulfil all of the requirements for archiving with the "
+"exception of those that are time-based."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1281
+msgid "B<unarchive> I<bug>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1283
+msgid "Unarchive a I<bug> that is currently archived."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1293
+msgid "B<retitle> I<bug> I<title>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1295
+msgid "Change the I<title> of the I<bug>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1308
+msgid "B<summary> I<bug> [I<messagenum>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1310
+msgid "Select a message number that should be used as the summary of a I<bug>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1313
+msgid "If no message number is given, the summary is cleared."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1323
+msgid "B<submitter> I<bug> [I<bug> ...] I<submitter-email>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1325
+msgid ""
+"Change the submitter address of a I<bug> or a number of bugs, with B<!> "
+"meaning `use the address on the current email as the new submitter address'."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1342
+msgid "B<reassign> I<bug> [I<bug> ...] I<package> [I<version>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1344
+msgid ""
+"Reassign a I<bug> or a number of bugs to a different I<package>. The "
+"I<version> field is optional; see the explanation at "
+"L<https://www.debian.org/Bugs/server-control>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1375
+msgid "B<found> I<bug> [I<version>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1377
+msgid ""
+"Indicate that a I<bug> was found to exist in a particular package version. "
+"Without I<version>, the list of fixed versions is cleared and the bug is "
+"reopened."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1394
+msgid "B<notfound> I<bug> I<version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1396
+msgid ""
+"Remove the record that I<bug> was encountered in the given version of the "
+"package to which it is assigned."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1408
+msgid "B<fixed> I<bug> I<version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1410
+msgid ""
+"Indicate that a I<bug> was fixed in a particular package version, without "
+"affecting the I<bug>'s open/closed status."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1422
+msgid "B<notfixed> I<bug> I<version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1424
+msgid ""
+"Remove the record that a I<bug> was fixed in the given version of the "
+"package to which it is assigned."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1427
+msgid ""
+"This is equivalent to the sequence of commands \"B<found> I<bug> "
+"I<version>\", \"B<notfound> I<bug> I<version>\"."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1439
+msgid "B<block> I<bug> B<by>|B<with> I<bug> [I<bug> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1441
+msgid "Note that a I<bug> is blocked from being fixed by a set of other bugs."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1460
+msgid "B<unblock> I<bug> B<by>|B<with> I<bug> [I<bug> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1462
+msgid ""
+"Note that a I<bug> is no longer blocked from being fixed by a set of other "
+"bugs."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1481
+msgid "B<merge> I<bug> I<bug> [I<bug> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1483
+msgid "Merge a set of bugs together."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1498
+msgid "B<forcemerge> I<bug> I<bug> [I<bug> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1500
+msgid ""
+"Forcibly merge a set of bugs together. The first I<bug> listed is the master "
+"bug, and its settings (those which must be equal in a normal B<merge>) are "
+"assigned to the bugs listed next."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1518
+msgid "B<unmerge> I<bug>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1520
+msgid "Unmerge a I<bug>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1530
+msgid "B<tag> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1532
+msgid "B<tags> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1534
+msgid ""
+"Set or unset a I<tag> on a I<bug>. The tag may either be the exact tag name "
+"or it may be abbreviated to any unique tag substring. (So using B<fixed> "
+"will set the tag B<fixed>, not B<fixed-upstream>, for example, but B<fix> "
+"would not be acceptable.) Multiple tags may be specified as well. The two "
+"commands (tag and tags) are identical. At least one tag must be specified, "
+"unless the B<=> flag is used, where the command"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/bts.pl:1541
+#, no-wrap
+msgid ""
+" bts tags <bug> =\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1543
+msgid "will remove all tags from the specified I<bug>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1545
+msgid ""
+"Adding/removing the B<security> tag will add \"team\\@security.debian.org\" "
+"to the Cc list of the control email."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1623
+msgid "B<affects> I<bug> [B<+>|B<->|B<=>] I<package> [I<package> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1625
+msgid ""
+"Indicates that a I<bug> affects a I<package> other than that against which "
+"it is filed, causing the I<bug> to be listed by default in the I<package> "
+"list of the other I<package>. This should generally be used where the "
+"I<bug> is severe enough to cause multiple reports from users to be assigned "
+"to the wrong package. At least one I<package> must be specified, unless the "
+"B<=> flag is used, where the command"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/bts.pl:1631
+#, no-wrap
+msgid ""
+" bts affects <bug> =\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1633
+msgid "will remove all indications that I<bug> affects other packages."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1666
+msgid "B<user> I<email>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1668
+msgid "Specify a user I<email> address before using the B<usertags> command."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1684
+msgid "B<usertag> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1686
+msgid "B<usertags> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1688
+msgid ""
+"Set or unset a user tag on a I<bug>. The I<tag> must be the exact tag name "
+"wanted; there are no defaults or checking of tag names. Multiple tags may "
+"be specified as well. The two commands (B<usertag> and B<usertags>) are "
+"identical. At least one I<tag> must be specified, unless the B<=> flag is "
+"used, where the command"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/bts.pl:1694
+#, no-wrap
+msgid ""
+" bts usertags <bug> =\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1696
+msgid "will remove all user tags from the specified I<bug>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1726
+msgid "B<claim> I<bug> [I<claim>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1728
+msgid ""
+"Record that you have claimed a I<bug> (e.g. for a bug squashing party). "
+"I<claim> should be a unique token allowing the bugs you have claimed to be "
+"identified; an e-mail address is often used."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1732 ../scripts/bts.pl:1752
+msgid ""
+"If no I<claim> is specified, the environment variable B<DEBEMAIL> or "
+"B<EMAIL> (checked in that order) is used."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1748
+msgid "B<unclaim> I<bug> [I<claim>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1750
+msgid "Remove the record that you have claimed a bug."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1768
+msgid "B<severity> I<bug> I<severity>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1770
+msgid ""
+"Change the I<severity> of a I<bug>. Available severities are: B<wishlist>, "
+"B<minor>, B<normal>, B<important>, B<serious>, B<grave>, B<critical>. The "
+"severity may be abbreviated to any unique substring."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1787
+msgid "B<forwarded> I<bug> I<address>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1789
+msgid ""
+"Mark the I<bug> as forwarded to the given I<address> (usually an email "
+"address or a URL for an upstream bug tracker)."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1806
+msgid "B<notforwarded> I<bug>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1808
+msgid "Mark a I<bug> as not forwarded."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1818
+msgid "B<package> [I<package> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1820
+msgid ""
+"The following commands will only apply to bugs against the listed "
+"I<package>s; this acts as a safety mechanism for the BTS. If no packages "
+"are listed, this check is turned off again."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1834
+msgid "B<limit> [I<key>[B<:>I<value>]] ..."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1836
+msgid ""
+"The following commands will only apply to bugs which meet the specified "
+"criterion; this acts as a safety mechanism for the BTS. If no I<value>s are "
+"listed, the limits for that I<key> are turned off again. If no I<key>s are "
+"specified, all limits are reset."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1847
+msgid "B<date>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1849
+msgid "Date the bug was submitted."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1851
+msgid "B<subject>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1853
+msgid "Subject of the bug."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1855
+msgid "B<msgid>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1857
+msgid "Message-id of the initial bug report."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1869
+msgid "Tags applied to the bug."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1881
+msgid "Bugs affecting this package."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1891
+msgid ""
+"For example, to limit the set of bugs affected by the subsequent control "
+"commands to those submitted by jrandomdeveloper@example.com and tagged "
+"B<wontfix>, one would use"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1895
+msgid "bts limit submitter:jrandomdeveloper@example.com tag:wontfix"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1900
+msgid "bts limit package:foo severity:wishlist severity:minor"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1902
+msgid ""
+"only applies the subsequent control commands to bugs of package foo with "
+"either B<wishlist> or B<minor> severity."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1977
+msgid "B<owner> I<bug> I<owner-email>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1979
+msgid ""
+"Change the \"owner\" address of a I<bug>, with B<!> meaning `use the address "
+"on the current email as the new owner address'."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1982
+msgid "The owner of a bug accepts responsibility for dealing with it."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:1993
+msgid "B<noowner> I<bug>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:1995
+msgid "Mark a bug as having no \"owner\"."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:2005
+msgid "B<subscribe> I<bug> [I<email>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2007
+msgid ""
+"Subscribe the given I<email> address to the specified I<bug> report. If no "
+"email address is specified, the environment variable B<DEBEMAIL> or B<EMAIL> "
+"(in that order) is used. If those are not set, or B<!> is given as email "
+"address, your default address will be used."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2012
+msgid ""
+"After executing this command, you will be sent a subscription confirmation "
+"to which you have to reply. When subscribed to a bug report, you receive "
+"all relevant emails and notifications. Use the unsubscribe command to "
+"unsubscribe."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:2033
+msgid "B<unsubscribe> I<bug> [I<email>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2035
+msgid ""
+"Unsubscribe the given email address from the specified bug report. As with "
+"subscribe above, if no email address is specified, the environment variables "
+"B<DEBEMAIL> or B<EMAIL> (in that order) is used. If those are not set, or "
+"B<!> is given as email address, your default address will be used."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2040
+msgid ""
+"After executing this command, you will be sent an unsubscription "
+"confirmation to which you have to reply. Use the B<subscribe> command to, "
+"well, subscribe."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:2060
+msgid "B<reportspam> I<bug> ..."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2062
+msgid ""
+"The B<reportspam> command allows you to report a I<bug> report as containing "
+"spam. It saves one from having to go to the bug web page to do so."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:2098
+msgid "B<spamreport> I<bug> ..."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2100
+msgid "B<spamreport> is a synonym for B<reportspam>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:2108
+msgid ""
+"B<cache> [I<options>] [I<maint_email> | I<pkg> | B<src:>I<pkg> | "
+"B<from:>I<submitter>]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:2110
+msgid ""
+"B<cache> [I<options>] [B<release-critical> | B<release-critical/>... | "
+"B<RC>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2112
+msgid ""
+"Generate or update a cache of bug reports for the given email address or "
+"package. By default it downloads all bugs belonging to the email address in "
+"the B<DEBEMAIL> environment variable (or the B<EMAIL> environment variable "
+"if B<DEBEMAIL> is unset). This command may be repeated to cache bugs "
+"belonging to several people or packages. If multiple packages or addresses "
+"are supplied, bugs belonging to any of the arguments will be cached; those "
+"belonging to more than one of the arguments will only be downloaded "
+"once. The cached bugs are stored in F<~/.devscripts_cache/bts/>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2121
+msgid "You can use the cached bugs with the B<-o> switch. For example:"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/bts.pl:2123
+#, no-wrap
+msgid ""
+" bts -o bugs\n"
+" bts -o show 12345\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2126
+msgid ""
+"Also, B<bts> will update the files in it in a piecemeal fashion as it "
+"downloads information from the BTS using the B<show> command. You might thus "
+"set up the cache, and update the whole thing once a week, while letting the "
+"automatic cache updates update the bugs you frequently refer to during the "
+"week."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2132
+msgid ""
+"Some options affect the behaviour of the B<cache> command. The first is the "
+"setting of B<--cache-mode>, which controls how much B<bts> downloads of the "
+"referenced links from the bug page, including boring bits such as the "
+"acknowledgement emails, emails to the control bot, and the mbox version of "
+"the bug report. It can take three values: B<min> (the minimum), B<mbox> "
+"(download the minimum plus the mbox version of the bug report) or B<full> "
+"(the whole works). The second is B<--force-refresh> or B<-f>, which forces "
+"the download, even if the cached bug report is up-to-date. The "
+"B<--include-resolved> option indicates whether bug reports marked as "
+"resolved should be downloaded during caching."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2143
+msgid ""
+"Each of these is configurable from the configuration file, as described "
+"below. They may also be specified after the B<cache> command as well as at "
+"the start of the command line."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2147
+msgid ""
+"Finally, B<-q> or B<--quiet> will suppress messages about caches being "
+"up-to-date, and giving the option twice will suppress all cache messages "
+"(except for error messages)."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2151
+msgid ""
+"Beware of caching RC, though: it will take a LONG time! (With 1000+ RC bugs "
+"and a delay of 5 seconds between bugs, you're looking at a minimum of 1.5 "
+"hours, and probably significantly more than that.)"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:2280
+msgid "B<cleancache> I<package> | B<src:>I<package> | I<maintainer>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:2282
+msgid ""
+"B<cleancache from:>I<submitter> | B<tag:>I<tag> | B<usertag:>I<tag> | "
+"I<number> | B<ALL>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2284
+msgid ""
+"Clean the cache for the specified I<package>, I<maintainer>, etc., as "
+"described above for the B<bugs> command, or clean the entire cache if B<ALL> "
+"is specified. This is useful if you are going to have permanent network "
+"access or if the database has become corrupted for some reason. Note that "
+"for safety, this command does not default to the value of B<DEBEMAIL> or "
+"B<EMAIL>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:2333
+msgid "B<version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2335
+msgid "Display version and copyright information."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:2350
+msgid "B<help>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:2352
+msgid ""
+"Display a short summary of commands, suspiciously similar to parts of this "
+"man page."
+msgstr ""
+
+#. type: SH
+#: ../scripts/bts.pl:3987 ../scripts/debuild.1:86 ../scripts/diff2patches.1:40 ../scripts/pts-subscribe.1:34
+#, no-wrap
+msgid "ENVIRONMENT VARIABLES"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:3991
+msgid "B<DEBEMAIL>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:3993
+msgid ""
+"If this is set, the From: line in the email will be set to use this email "
+"address instead of your normal email address (as would be determined by "
+"B<mail>)."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:3997
+msgid "B<DEBFULLNAME>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:3999
+msgid ""
+"If B<DEBEMAIL> is set, B<DEBFULLNAME> is examined to determine the full name "
+"to use; if this is not set, B<bts> attempts to determine a name from your "
+"F<passwd> entry."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4003
+msgid "B<BROWSER>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4005
+msgid ""
+"If set, it specifies the browser to use for the B<show> and B<bugs> "
+"options. See the description above."
+msgstr ""
+
+#. type: SH
+#: ../scripts/bts.pl:4010 ../scripts/dcontrol.pl:264 ../scripts/debc.1:92 ../scripts/debchange.1:392 ../scripts/debcheckout.pl:177 ../scripts/debclean.1:90 ../scripts/debcommit.pl:104 ../scripts/debdiff.1:169 ../scripts/debi.1:109 ../scripts/debrelease.1:105 ../scripts/debrsign.1:57 ../scripts/debsign.1:106 ../scripts/debuild.1:290 ../scripts/dget.pl:631 ../scripts/dpkg-depcheck.1:102 ../scripts/dscverify.1:42 ../scripts/grep-excuses.1:28 ../scripts/licensecheck.pl:96 ../scripts/mass-bug.pl:132 ../scripts/nmudiff.1:79 ../scripts/plotchangelog.1:106 ../scripts/pts-subscribe.1:42 ../scripts/rmadison.pl:293 ../scripts/uscan.1:493 ../scripts/uupdate.1:88 ../scripts/who-uploads.1:50
+#, no-wrap
+msgid "CONFIGURATION VARIABLES"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4012 ../scripts/debcommit.pl:106 ../scripts/licensecheck.pl:98 ../scripts/mass-bug.pl:134
+msgid ""
+"The two configuration files F</etc/devscripts.conf> and F<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file settings. "
+"Environment variable settings are ignored for this purpose. The currently "
+"recognised variables are:"
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4020
+msgid "B<BTS_OFFLINE>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4022
+msgid ""
+"If this is set to B<yes>, then it is the same as the B<--offline> command "
+"line parameter being used. Only has an effect on the B<show> and B<bugs> "
+"commands. The default is B<no>. See the description of the B<show> command "
+"above for more information."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4027
+msgid "B<BTS_CACHE>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4029
+msgid ""
+"If this is set to B<no>, then it is the same as the B<--no-cache> command "
+"line parameter being used. Only has an effect on the B<show> and B<bug> "
+"commands. The default is B<yes>. Again, see the B<show> command above for "
+"more information."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4034
+msgid "B<BTS_CACHE_MODE=>{B<min>,B<mbox>,B<full>}"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4036
+msgid ""
+"How much of the BTS should we mirror when we are asked to cache something? "
+"Just the minimum, or also the mbox or the whole thing? The default is "
+"B<min>, and it has the same meaning as the B<--cache-mode> command line "
+"parameter. Only has an effect on the cache. See the B<cache> command for "
+"more information."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4042
+msgid "B<BTS_FORCE_REFRESH>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4044
+msgid ""
+"If this is set to B<yes>, then it is the same as the B<--force-refresh> "
+"command line parameter being used. Only has an effect on the B<cache> "
+"command. The default is B<no>. See the B<cache> command for more "
+"information."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4049
+msgid "B<BTS_MAIL_READER>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4051
+msgid ""
+"If this is set, specifies a mail reader to use instead of B<mutt>. Same as "
+"the B<--mailreader> command line option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/bts.pl:4054 ../scripts/mass-bug.pl:142 ../scripts/nmudiff.1:104
+#, no-wrap
+msgid "B<BTS_SENDMAIL_COMMAND>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4056 ../scripts/mass-bug.pl:144
+msgid ""
+"If this is set, specifies a B<sendmail> command to use instead of "
+"F</usr/sbin/sendmail>. Same as the B<--sendmail> command line option."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4059
+msgid "B<BTS_ONLY_NEW>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4061
+msgid ""
+"Download only new bugs when caching. Do not check for updates in bugs we "
+"already have. The default is B<no>. Same as the B<--only-new> command line "
+"option."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4065
+msgid "B<BTS_SMTP_HOST>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4067
+msgid ""
+"If this is set, specifies an SMTP host to use for sending mail rather than "
+"using the B<sendmail> command. Same as the B<--smtp-host> command line "
+"option."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4071
+msgid ""
+"Note that this option takes priority over B<BTS_SENDMAIL_COMMAND> if both "
+"are set, unless the B<--sendmail> option is used."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4074
+msgid "B<BTS_SMTP_AUTH_USERNAME>, B<BTS_SMTP_AUTH_PASSWORD>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4076
+msgid ""
+"If these options are set, then it is the same as the B<--smtp-username> and "
+"B<--smtp-password> options being used."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4079
+msgid "B<BTS_SMTP_HELO>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4081
+msgid "Same as the B<--smtp-helo> command line option."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4083
+msgid "B<BTS_INCLUDE_RESOLVED>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4085
+msgid ""
+"If this is set to B<no>, then it is the same as the B<--no-include-resolved> "
+"command line parameter being used. Only has an effect on the B<cache> "
+"command. The default is B<yes>. See the B<cache> command for more "
+"information."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4090
+msgid "B<BTS_SUPPRESS_ACKS>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4092
+msgid ""
+"If this is set to B<yes>, then it is the same as the B<--no-ack> command "
+"line parameter being used. The default is B<no>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4095
+msgid "B<BTS_INTERACTIVE>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4097
+msgid ""
+"If this is set to B<yes> or B<force>, then it is the same as the "
+"B<--interactive> or B<--force-interactive> command line parameter being "
+"used. The default is B<no>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4101
+msgid "B<BTS_DEFAULT_CC>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4103
+msgid ""
+"Specify a list of e-mail addresses to which a carbon copy of the generated "
+"e-mail to the control bot should automatically be sent."
+msgstr ""
+
+#. type: =item
+#: ../scripts/bts.pl:4106
+msgid "B<BTS_SERVER>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4108
+msgid ""
+"Specify the name of a debbugs server which should be used instead of "
+"bugs.debian.org."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4115
+msgid ""
+"Please see L<https://www.debian.org/Bugs/server-control> for more details on "
+"how to control the BTS using emails and L<https://www.debian.org/Bugs/> for "
+"more information about the BTS."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4119
+msgid "querybts(1), reportbug(1)"
+msgstr ""
+
+#. type: =head1
+#: ../scripts/bts.pl:4121 ../scripts/chdist.pl:119 ../scripts/debsnap.1:126 ../scripts/mass-bug.pl:515 ../scripts/tagpending.pl:430
+#, no-wrap
+msgid "COPYRIGHT"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4123
+msgid ""
+"This program is Copyright (C) 2001-2003 by Joey Hess <joeyh@debian.org>. "
+"Many modifications have been made, Copyright (C) 2002-2005 Julian Gilbey "
+"<jdg@debian.org> and Copyright (C) 2007 Josh Triplett "
+"<josh@freedesktop.org>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/bts.pl:4128 ../scripts/chdist.pl:124 ../scripts/mass-bug.pl:519
+msgid ""
+"It is licensed under the terms of the GPL, either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:20
+msgid ""
+"build-rdeps - find packages that depend on a specific package to build "
+"(reverse build depends)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:24
+msgid "B<build-rdeps> I<package>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:28
+msgid ""
+"B<build-rdeps> searches for all packages that build-depend on the specified "
+"package."
+msgstr ""
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:34
+msgid "B<-u>, B<--update>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:36
+msgid "Run apt-get update before searching for build-depends."
+msgstr ""
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:38
+msgid "B<-s>, B<--sudo>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:40
+msgid "Use sudo when running apt-get update. Has no effect if -u is omitted."
+msgstr ""
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:42
+msgid "B<--distribution>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:44
+msgid "Select another distribution, which is searched for build-depends."
+msgstr ""
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:46
+msgid "B<--only-main>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:48
+msgid "Ignore contrib and non-free"
+msgstr ""
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:50
+msgid "B<--exclude-component>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:52
+msgid "Ignore the given component (e.g. main, contrib, non-free)."
+msgstr ""
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:54
+msgid "B<--origin>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:56
+msgid "Restrict the search to only the specified origin (such as \"Debian\")."
+msgstr ""
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:58
+msgid "B<-m>, B<--print-maintainer>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:60
+msgid "Print the value of the maintainer field for each package."
+msgstr ""
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:62 ../scripts/dcontrol.pl:250
+msgid "B<-d>, B<--debug>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:64
+msgid "Run the debug mode"
+msgstr ""
+
+#. type: TP
+#: ../scripts/build-rdeps.pl:66 ../scripts/cowpoke.1:131 ../scripts/debclean.1:84 ../scripts/diff2patches.1:22 ../scripts/grep-excuses.1:22 ../scripts/mass-bug.pl:117 ../scripts/nmudiff.1:73 ../scripts/plotchangelog.1:92 ../scripts/uscan.1:487
+#, no-wrap
+msgid "B<--help>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:68
+msgid "Show the usage information."
+msgstr ""
+
+#. type: TP
+#: ../scripts/build-rdeps.pl:70 ../scripts/chdist.pl:49 ../scripts/cowpoke.1:135 ../scripts/debchange.1:389 ../scripts/debclean.1:87 ../scripts/debrelease.1:102 ../scripts/debsign.1:103 ../scripts/debsnap.1:61 ../scripts/dep3changelog.1:19 ../scripts/diff2patches.1:25 ../scripts/dscverify.1:39 ../scripts/grep-excuses.1:25 ../scripts/mass-bug.pl:121 ../scripts/nmudiff.1:76 ../scripts/plotchangelog.1:95 ../scripts/pts-subscribe.1:31 ../scripts/rmadison.pl:280 ../scripts/uscan.1:490 ../scripts/uupdate.1:85 ../scripts/who-uploads.1:47
+#, no-wrap
+msgid "B<--version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:72
+msgid "Show the version information."
+msgstr ""
+
+#. type: SH
+#: ../scripts/build-rdeps.pl:76 ../scripts/debpkg.1:12
+#, no-wrap
+msgid "REQUIREMENTS"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:78
+msgid ""
+"The tool requires apt Sources files to be around for the checked "
+"components. In the default case this means that in /var/lib/apt/lists files "
+"need to be around for main, contrib and non-free."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:82
+msgid ""
+"In practice this means one needs to add one deb-src line for each component, "
+"e.g."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:85
+msgid "deb-src http://<mirror>/debian <dist> main contrib non-free"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:87
+msgid "and run apt-get update afterwards or use the update option of this tool."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/build-rdeps.pl:336 ../scripts/debcommit.pl:901 ../scripts/desktop2menu.pl:43 ../scripts/licensecheck.pl:120 ../scripts/namecheck.pl:36 ../scripts/svnpath.pl:89 ../scripts/transition-check.pl:72
+msgid "LICENSE"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:338
+msgid ""
+"This code is copyright by Patrick Schoenfeld <schoenfeld@debian.org>, all "
+"rights reserved. This program comes with ABSOLUTELEY NO WARRANTY. You are "
+"free to redistribute this code under the terms of the GNU General Public "
+"License, version 2 or later."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:346
+msgid "Patrick Schoenfeld <schoenfeld@debian.org>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:20
+msgid "chdist - script to easily play with several distributions"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:24
+msgid "B<chdist> [I<options>] [I<command>] [I<command parameters>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:28
+msgid ""
+"B<chdist> is a rewrite of what used to be known as 'MultiDistroTools' (or "
+"mdt). Its use is to create 'APT trees' for several distributions, making it "
+"easy to query the status of packages in other distribution without using "
+"chroots, for instance."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:39 ../scripts/mass-bug.pl:119
+msgid "Provide a usage message."
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:41
+msgid "B<-d>, B<--data-dir> I<DIR>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:43
+msgid "Choose data directory (default: F<$HOME/.chdist/>)."
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:45
+msgid "B<-a>, B<--arch> I<ARCH>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:47
+msgid "Choose architecture (default: `B<dpkg --print-architecture>`)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/chdist.pl:51 ../scripts/deb-reversion.dbk:239 ../scripts/mass-bug.pl:123 ../scripts/uscan.1:493
+msgid "Display version information."
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:59
+msgid "B<create> I<DIST> [I<URL> I<RELEASE> I<SECTIONS>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:61
+msgid "Prepare a new tree named I<DIST>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:63
+msgid "B<apt-get> I<DIST> <B<update>|B<source>|...>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:65
+msgid "Run B<apt-get> inside I<DIST>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:67
+msgid "B<apt-cache> I<DIST> <B<show>|B<showsrc>|...>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:69
+msgid "Run B<apt-cache> inside I<DIST>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:71
+msgid "B<apt-rdepends> I<DIST> [...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:73
+msgid "Run B<apt-rdepends> inside I<DIST>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:75
+msgid "B<src2bin> I<DIST SRCPKG>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:77
+msgid "List binary packages for I<SRCPKG> in I<DIST>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:79
+msgid "B<bin2src> I<DIST BINPKG>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:81
+msgid "List source package for I<BINPKG> in I<DIST>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:83
+msgid "B<compare-packages> I<DIST1 DIST2> [I<DIST3>, ...]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:85
+msgid "B<compare-bin-packages> I<DIST1 DIST2> [I<DIST3>, ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:87
+msgid "List versions of packages in several I<DIST>ributions"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:89
+msgid "B<compare-versions> I<DIST1 DIST2>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:91
+msgid "B<compare-bin-versions> I<DIST1 DIST2>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:93
+msgid ""
+"Same as B<compare-packages>/B<compare-bin-packages>, but also runs B<dpkg "
+"--compare-versions> and display where the package is newer."
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:96
+msgid "B<compare-src-bin-packages> I<DIST>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:98
+msgid "Compare sources and binaries for I<DIST>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:100
+msgid "B<compare-src-bin-versions> I<DIST>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:102
+msgid ""
+"Same as B<compare-src-bin-packages>, but also run B<dpkg --compare-versions> "
+"and display where the package is newer"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:105
+msgid "B<grep-dctrl-packages> I<DIST> [...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:107
+msgid "Run B<grep-dctrl> on F<*_Packages> inside I<DIST>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:109
+msgid "B<grep-dctrl-sources> I<DIST> [...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:111
+msgid "Run B<grep-dctrl> on F<*_Sources> inside I<DIST>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/chdist.pl:113
+msgid "B<list>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:115
+msgid "List available I<DIST>s"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/chdist.pl:121
+msgid ""
+"This program is copyright 2007 by Lucas Nussbaum and Luk Claes. This program "
+"comes with ABSOLUTELY NO WARRANTY."
+msgstr ""
+
+#. type: TH
+#: ../scripts/checkbashisms.1:1
+#, no-wrap
+msgid "CHECKBASHISMS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:4
+msgid "checkbashisms - check for bashisms in /bin/sh scripts"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:6
+msgid "B<checkbashisms> I<script> ..."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:8
+msgid "B<checkbashisms --help>|B<--version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:14
+msgid ""
+"B<checkbashisms>, based on one of the checks from the B<lintian> system, "
+"performs basic checks on I</bin/sh> shell scripts for the possible presence "
+"of bashisms. It takes the names of the shell scripts on the command line, "
+"and outputs warnings if possible bashisms are detected."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:19
+msgid ""
+"Note that the definition of a bashism in this context roughly equates to \"a "
+"shell feature that is not required to be supported by POSIX\"; this means "
+"that some issues flagged may be permitted under optional sections of POSIX, "
+"such as XSI or User Portability."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:23
+msgid ""
+"In cases where POSIX and Debian Policy disagree, B<checkbashisms> by default "
+"allows extensions permitted by Policy but may also provide options for "
+"stricter checking."
+msgstr ""
+
+#. type: TP
+#: ../scripts/checkbashisms.1:24 ../scripts/debchange.1:386 ../scripts/debdiff.1:157 ../scripts/debrelease.1:99 ../scripts/debsign.1:100 ../scripts/dep3changelog.1:16 ../scripts/dscverify.1:36 ../scripts/pts-subscribe.1:28 ../scripts/rc-alert.1:21 ../scripts/uupdate.1:82 ../scripts/whodepends.1:11 ../scripts/who-uploads.1:44 ../scripts/who-permits-upload.pl:65 ../scripts/wnpp-alert.1:23 ../scripts/wnpp-check.1:17
+#, no-wrap
+msgid "B<--help>, B<-h>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:27 ../scripts/debdiff.1:160 ../scripts/mk-build-deps.pl:81 ../scripts/rc-alert.1:24 ../scripts/wnpp-alert.1:26 ../scripts/wnpp-check.1:20
+msgid "Show a summary of options."
+msgstr ""
+
+#. type: TP
+#: ../scripts/checkbashisms.1:27
+#, no-wrap
+msgid "B<--newline>, B<-n>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:30
+msgid ""
+"Check for \"B<echo -n>\" usage (non POSIX but required by Debian Policy "
+"10.4.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/checkbashisms.1:30
+#, no-wrap
+msgid "B<--posix>, B<-p>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:34
+msgid ""
+"Check for issues which are non POSIX but required to be supported by Debian "
+"Policy 10.4 (implies B<-n>)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/checkbashisms.1:34
+#, no-wrap
+msgid "B<--force>, B<-f>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:39
+msgid ""
+"Force each script to be checked, even if it would normally not be (for "
+"instance, it has a bash or non POSIX shell shebang or appears to be a shell "
+"wrapper)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/checkbashisms.1:39
+#, no-wrap
+msgid "B<--extra>, B<-x>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:46
+msgid ""
+"Highlight lines which, whilst they do not contain bashisms, may be useful in "
+"determining whether a particular issue is a false positive which may be "
+"ignored. For example, the use of \"B<$BASH_ENV>\" may be preceded by "
+"checking whether \"B<$BASH>\" is set."
+msgstr ""
+
+#. type: TP
+#: ../scripts/checkbashisms.1:46 ../scripts/debdiff.1:160 ../scripts/manpage-alert.1:17 ../scripts/rc-alert.1:24 ../scripts/whodepends.1:14 ../scripts/wnpp-alert.1:26 ../scripts/wnpp-check.1:20
+#, no-wrap
+msgid "B<--version>, B<-v>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:49 ../scripts/debdiff.1:163 ../scripts/getbuildlog.1:31 ../scripts/grep-excuses.1:28 ../scripts/manpage-alert.1:20 ../scripts/mk-build-deps.pl:85 ../scripts/rc-alert.1:27 ../scripts/whodepends.1:17 ../scripts/wnpp-alert.1:29 ../scripts/wnpp-check.1:23
+msgid "Show version and copyright information."
+msgstr ""
+
+#. type: SH
+#: ../scripts/checkbashisms.1:49 ../scripts/debdiff.1:213
+#, no-wrap
+msgid "EXIT VALUES"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:53
+msgid ""
+"The exit value will be 0 if no possible bashisms or other problems were "
+"detected. Otherwise it will be the sum of the following error values:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/checkbashisms.1:53 ../scripts/dscextract.1:24 ../scripts/uscan.1:556 ../scripts/wnpp-check.1:29
+#, no-wrap
+msgid "1"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:56
+msgid "A possible bashism was detected."
+msgstr ""
+
+#. type: TP
+#: ../scripts/checkbashisms.1:56 ../scripts/dscextract.1:27
+#, no-wrap
+msgid "2"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:60
+msgid ""
+"A file was skipped for some reason, for example, because it was unreadable "
+"or not found. The warning message will give details."
+msgstr ""
+
+#. type: TP
+#: ../scripts/checkbashisms.1:60
+#, no-wrap
+msgid "4"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:63
+msgid "No bashisms were detected in a bash script."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:65
+msgid "B<lintian>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:68
+msgid ""
+"B<checkbashisms> was originally written as a shell script by Yann Dirson "
+"E<lt>I<dirson@debian.org>E<gt> and rewritten in Perl with many more features "
+"by Julian Gilbey E<lt>I<jdg@debian.org>E<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/cowpoke.1:5
+#, no-wrap
+msgid "COWPOKE"
+msgstr ""
+
+#. type: TH
+#: ../scripts/cowpoke.1:5
+#, no-wrap
+msgid "April 28, 2008"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:20
+msgid "cowpoke - Build a Debian source package in a remote cowbuilder instance"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:23
+msgid "B<cowpoke> [I<options>]I< packagename.dsc>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:27
+msgid ""
+"Uploads a Debian source package to a B<cowbuilder> host and builds it, "
+"optionally also signing and uploading the result to an incoming queue."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:31 ../scripts/debsnap.1:28
+msgid "The following options are available:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:32
+#, no-wrap
+msgid "B<--arch=>I<architecture>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:38
+msgid ""
+"Specify the Debian architecture(s) to build for. A space separated list of "
+"architectures may be used to build for all of them in a single pass. Valid "
+"arch names are those returned by B<dpkg-architecture>(1) for "
+"B<DEB_BUILD_ARCH>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:39
+#, no-wrap
+msgid "B<--dist=>I<distribution>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:47
+msgid ""
+"Specify the Debian distribution(s) to build for. A space separated list of "
+"distributions may be used to build for all of them in a single pass. Either "
+"codenames (such as B<sid>, or B<squeeze>) or distribution names (such as "
+"B<unstable>, or B<experimental>) may be used, but you should usually stick "
+"to using one or the other consistently as this name may be used in file "
+"paths and to locate old packages for comparison reporting."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:55
+msgid ""
+"It is now also possible to use locally defined names with this option, when "
+"used in conjunction with the B<BASE_DIST> option in a configuration file. "
+"This permits the maintenance and use of specially configured build chroots, "
+"which can source package dependencies from the backports archives or a local "
+"repository, or have other unusual configuration options set, without "
+"polluting the chroots you use for clean package builds intended for upload "
+"to the main repositories. See the description of B<BASE_DIST> below."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:56
+#, no-wrap
+msgid "B<--buildd=>I<host>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:59
+msgid "Specify the remote host to build on."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:60
+#, no-wrap
+msgid "B<--buildd-user=>I<name>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:63
+msgid "Specify the remote user to build as."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:64 ../scripts/debchange.1:194
+#, no-wrap
+msgid "B<--create>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:69
+msgid ""
+"Create the remote B<cowbuilder> root if it does not already exist. If this "
+"option is not passed it is an error for the specified B<--dist> or B<--arch> "
+"to not have an existing B<cowbuilder> root in the expected location."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:74
+msgid ""
+"The B<--buildd-user> must have permission to create the B<RESULT_DIR> on the "
+"build host, or an admin with the necessary permission must first create it "
+"and give that user (or some group they are in) write access to it, for this "
+"option to succeed."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:75
+#, no-wrap
+msgid "B<--return=>[I<path>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:79
+msgid ""
+"Copy results of the build to I<path>. If I<path> is not specified, then "
+"return them to the current directory. The given I<path> must exist, it will "
+"not be created."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:80
+#, no-wrap
+msgid "B<--no-return>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:84
+msgid ""
+"Do not copy results of the build to B<RETURN_DIR> (overriding a path set for "
+"it in the configuration files)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:85
+#, no-wrap
+msgid "B<--dpkg-opts=>I<'opt1 opt2 ...'>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:90
+msgid ""
+"Specify additional options to be passed to B<dpkg-buildpackage>(1). "
+"Multiple options are delimited with spaces. This will override any options "
+"specified in B<DEBBUILDOPTS> in the build host's I<pbuilderrc>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:91
+#, no-wrap
+msgid "B<--create-opts=>I<'cowbuilder option'>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:97
+msgid ""
+"Specify additional arguments to be passed verbatim to B<cowbuilder> when a "
+"chroot is first created (using the B<--create> option above). If multiple "
+"arguments need to be passed, this option should be specified separately for "
+"each of them."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:99
+msgid "E.g., B<--create-opts \"--othermirror\" --create-opts \"deb http:// ...\">"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:102
+msgid ""
+"This option will override any B<CREATE_OPTS> specified for a chroot in the "
+"cowpoke configuration files."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:103
+#, no-wrap
+msgid "B<--update-opts=>I<'cowbuilder option'>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:108
+msgid ""
+"Specify additional arguments to be passed verbatim to B<cowbuilder> if the "
+"base of the chroot is updated. If multiple arguments need to be passed, "
+"this option should be specified separately for each of them."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:111
+msgid ""
+"This option will override any B<UPDATE_OPTS> specified for a chroot in the "
+"cowpoke configuration files."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:112
+#, no-wrap
+msgid "B<--build-opts=>I<'cowbuilder option'>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:117
+msgid ""
+"Specify additional arguments to be passed verbatim to B<cowbuilder> when a "
+"package build is performed. If multiple arguments need to be passed, this "
+"option should be specified separately for each of them."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:120
+msgid ""
+"This option will override any B<BUILD_OPTS> specified for a chroot in the "
+"cowpoke configuration files."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:121
+#, no-wrap
+msgid "B<--sign=>I<keyid>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:125
+msgid ""
+"Specify the key to sign packages with. This will override any B<SIGN_KEYID> "
+"specified for a chroot in the cowpoke configuration files."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:126
+#, no-wrap
+msgid "B<--upload=>I<queue>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:130
+msgid ""
+"Specify the dput queue to upload signed packages to. This will override any "
+"B<UPLOAD_QUEUE> specified for a chroot in the cowpoke configuration files."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:134
+msgid "Display a brief summary of the available options and current configuration."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:138
+msgid "Display the current version information."
+msgstr ""
+
+#. type: SH
+#: ../scripts/cowpoke.1:140 ../scripts/debsnap.1:66
+#, no-wrap
+msgid "CONFIGURATION OPTIONS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:146
+msgid ""
+"When B<cowpoke> is run the following configuration options are read from "
+"global, per-user, and per-project configuration files if present. File "
+"paths may be absolute or relative, the latter being relative to the "
+"B<BUILDD_USER>'s home directory. Since the paths are typically quoted when "
+"used, tilde expansion will B<not> be performed on them."
+msgstr ""
+
+#. type: SS
+#: ../scripts/cowpoke.1:147
+#, no-wrap
+msgid "Global defaults"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:149
+msgid "These apply to every I<arch> and I<dist> in a single cowpoke invocation."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:150
+#, no-wrap
+msgid "B<BUILDD_HOST>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:154
+msgid ""
+"The network address or fqdn of the build machine where B<cowbuilder> is "
+"configured. This may be overridden by the B<--buildd> command line option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:154
+#, no-wrap
+msgid "B<BUILDD_USER>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:160
+msgid ""
+"The unprivileged user name for operations on the build machine. This "
+"defaults to the local name of the user executing B<cowpoke> (or to a "
+"username that is specified in your SSH configuration for B<BUILDD_HOST>), "
+"and may be overridden by the B<--buildd-user> command line option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:160
+#, no-wrap
+msgid "B<BUILDD_ARCH>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:167
+msgid ""
+"The Debian architecture(s) to build for. This must match the "
+"B<DEB_BUILD_ARCH> of the build chroot being used. It defaults to the local "
+"machine architecture where B<cowpoke> is executed, and may be overridden by "
+"the B<--arch> command line option. A (quoted) space separated list of "
+"architectures may be used here to build for all of them in a single pass."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:167
+#, no-wrap
+msgid "B<BUILDD_DIST>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:172
+msgid ""
+"The Debian distribution(s) to build for. A (quoted) space separated list of "
+"distributions may be used to build for all of them in a single pass. This "
+"may be overridden by the B<--dist> command line option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:173
+#, no-wrap
+msgid "B<INCOMING_DIR>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:177
+msgid ""
+"The directory path on the build machine where the source package will "
+"initially be placed. This must be writable by the B<BUILDD_USER>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:177
+#, no-wrap
+msgid "B<PBUILDER_BASE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:182
+msgid ""
+"The filesystem root for all pbuilder CoW and result files. I<Arch> and "
+"I<dist> specific subdirectories will normally be created under this. The "
+"apt cache and temporary build directory will also be located under this "
+"path."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:183
+#, no-wrap
+msgid "B<SIGN_KEYID>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:194
+msgid ""
+"If this option is set, it is expected to contain the gpg key ID to pass to "
+"B<debsign>(1) if the packages are to be remotely signed. You will be "
+"prompted to confirm whether you wish to sign the packages after all builds "
+"are complete. If this option is unset or an empty string, no attempt to "
+"sign packages will be made. It may be overridden on an I<arch> and I<dist> "
+"specific basis using the I<arch>B<_>I<dist>B<_SIGN_KEYID> option described "
+"below, or per-invocation with the B<--sign> command line option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:195
+#, no-wrap
+msgid "B<UPLOAD_QUEUE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:206
+msgid ""
+"If this option is set, it is expected to contain a 'host' specification for "
+"B<dput>(1) which will be used to upload them after they are signed. You "
+"will be prompted to confirm whether you wish to upload the packages after "
+"they are signed. If this option is unset or an empty string, no attempt to "
+"upload packages will be made. If B<SIGN_KEYID> is not set, this option will "
+"be ignored entirely. It may be overridden on an I<arch> and I<dist> "
+"specific basis using the I<arch>B<_>I<dist>B<_UPLOAD_QUEUE> option described "
+"below, or per-invocation with the B<--upload> command line option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:208
+#, no-wrap
+msgid "B<BUILDD_ROOTCMD>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:216
+msgid ""
+"The command to use to gain root privileges on the remote build machine. If "
+"unset the default is B<sudo>(8). This is only required to invoke "
+"B<cowbuilder> and allow it to enter its chroot, so you may restrict this "
+"user to only being able to run that command with escalated privileges. "
+"Something like this in sudoers will enable invoking B<cowbuilder> without an "
+"additional password entry required:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:220
+msgid "youruser ALL = NOPASSWD: /usr/sbin/cowbuilder"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:227
+msgid ""
+"Alternatively you could use SSH with a forwarded key, or whatever other "
+"mechanism suits your local access policy. Using B<su -c> isn't really "
+"suitable here due to its quoting requirements being somewhat different to "
+"the rest."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:228
+#, no-wrap
+msgid "B<DEBOOTSTRAP>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:232
+msgid ""
+"The utility to use when creating a new build root. Alternatives are "
+"B<debootstrap> or B<cdebootstrap>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:233
+#, no-wrap
+msgid "B<RETURN_DIR>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:239
+msgid ""
+"If set, package files resulting from the build will be copied to the path "
+"(local or remote) that this is set to, after the build completes. The path "
+"must exist, it will not be created. This option is unset by default and can "
+"be overridden with B<--return> or B<--no-return>."
+msgstr ""
+
+#. type: SS
+#: ../scripts/cowpoke.1:241
+#, no-wrap
+msgid "Arch and dist specific options"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:244
+msgid ""
+"These are variables of the form: $arch_$distB<_VAR> which apply only for a "
+"particular target arch/dist build."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:245
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_RESULT_DIR>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:256
+msgid ""
+"The directory path on the build machine where the resulting packages (source "
+"and binary) will be found, and where older versions of the package that were "
+"built previously may be found. If any such older packages exist, B<debdiff> "
+"will be used to compare the new package with the previous version after the "
+"build is complete, and the result will be included in the build log. Files "
+"in it must be readable by the B<BUILDD_USER> for sanity checking with "
+"B<lintian>(1) and B<debdiff>(1), and for upload with B<dput>(1). If this "
+"option is not specified for some arch and dist combination then it will "
+"default to I<$PBUILDER_BASE/$arch/$dist/result>"
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:257
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_BASE_PATH>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:263
+msgid ""
+"The directory where the CoW master files are to be found (or created if the "
+"B<--create> command line option was passed). If this option is not "
+"specified for some arch or dist then it will default to "
+"I<$PBUILDER_BASE/$arch/$dist/base.cow>"
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:264
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_BASE_DIST>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:274
+msgid ""
+"The code name to pass as the B<--distribution> option for cowbuilder instead "
+"of I<dist>. This is necessary when I<dist> is a locally significant name "
+"assigned to some specially configured build chroot, such as "
+"'wheezy_backports', and not the formal suite name of a distro release known "
+"to debootstrap. This option cannot be overridden on the command line, since "
+"it would rarely, if ever, make any sense to change it for individual "
+"invocations of B<cowpoke>. If this option is not specified for an arch and "
+"dist combination then it will default to I<dist>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:275
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_CREATE_OPTS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:283
+msgid ""
+"A bash array containing additional options to pass verbatim to B<cowbuilder> "
+"when this chroot is created for the first time (using the B<--create> "
+"option). This is useful when options like B<--othermirror> are wanted to "
+"create specialised chroot configurations such as 'wheezy_backports'. By "
+"default this is unset. All values set in it will be overridden if the "
+"B<--create-opts> option is passed on the command line."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:288
+msgid ""
+"Each element in this array corresponds to a single argument (in the ARGV "
+"sense) that will be passed to cowbuilder. This ensures that arguments "
+"which may contain whitespace or have strange quoting requirements or other "
+"special characters will not be mangled before they get to cowbuilder."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:290
+msgid "Bash arrays are initialised using the following form:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:292
+#, no-wrap
+msgid ""
+" OPTS=( \"arg1\" \"arg 2\" \"--option\" \"value\" \"--opt=val\" "
+"\"etc. etc.\" )\n"
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:293
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_UPDATE_OPTS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:298
+msgid ""
+"A bash array containing additional options to pass verbatim to B<cowbuilder> "
+"each time the base of this chroot is updated. It behaves similarly to the "
+"B<CREATE_OPTS> option above, except for acting when the chroot is updated."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:299
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_BUILD_OPTS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:306
+msgid ""
+"A bash array containing additional options to pass verbatim to B<cowbuilder> "
+"each time a package build is performed in this chroot. This is useful when "
+"you want to use some option like B<--twice> which cowpoke does not directly "
+"need to care about. It otherwise behaves similarly to B<UPDATE_OPTS> above "
+"except that it acts during the build phase of B<cowbuilder>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:307
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_SIGN_KEYID>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:311
+msgid ""
+"An optional arch and dist specific override for the global B<SIGN_KEYID> "
+"option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:312
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_UPLOAD_QUEUE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:316
+msgid ""
+"An optional arch and dist specific override for the global B<UPLOAD_QUEUE> "
+"option."
+msgstr ""
+
+#. type: SH
+#: ../scripts/cowpoke.1:318
+#, no-wrap
+msgid "CONFIGURATION FILES"
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:319
+#, no-wrap
+msgid "I</etc/cowpoke.conf>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:322
+msgid "Global configuration options. Will override hardcoded defaults."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:322
+#, no-wrap
+msgid "I<~/.cowpoke>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:325 ../scripts/debsnap.1:117
+msgid "Per-user configuration options. Will override any global configuration."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cowpoke.1:325
+#, no-wrap
+msgid "I<.cowpoke>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:329
+msgid ""
+"Per-project configuration options. Will override any per-user or global "
+"configuration if B<cowpoke> is called from the directory where they exist."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:333
+msgid ""
+"If the environment variable B<COWPOKE_CONF> is set, it specifies an "
+"additional configuration file which will override all of those above. "
+"Options specified explicitly on the command line override all configuration "
+"files."
+msgstr ""
+
+#. type: SH
+#: ../scripts/cowpoke.1:335
+#, no-wrap
+msgid "COWBUILDER CONFIGURATION"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:344
+msgid ""
+"There is nothing particularly special required to configure a B<cowbuilder> "
+"instance for use with B<cowpoke>. Simply create them in the flavour you "
+"require with `B<cowbuilder --create>` according to the B<cowbuilder> "
+"documentation, then configure B<cowpoke> with the user, arch, and path "
+"information required to access it, on the machines you wish to invoke it "
+"from (or alternatively configure B<cowpoke> with the path, arch and "
+"distribution information and pass the B<--create> option to it on the first "
+"invocation). The build host running B<cowbuilder> does not require "
+"B<cowpoke> installed locally."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:354
+msgid ""
+"The build machine should have the B<lintian> and B<devscripts> packages "
+"installed for post-build sanity checking. Upon completion, the build log "
+"and the results of automated checks will be recorded in the "
+"B<INCOMING_DIR>. If you wish to upload signed packages the build machine "
+"will also need B<dput>(1) installed and configured to use the 'I<host>' "
+"alias specified by B<UPLOAD_QUEUE>. If B<rsync>(1) is available on both the "
+"local and build machine, then it will be used to transfer the source package "
+"(this may save on some transfers of the I<orig.tar.*> when building "
+"subsequent Debian revisions)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:360
+msgid ""
+"The user executing B<cowpoke> must have SSH access to the build machine as "
+"the B<BUILDD_USER>. That user must be able to invoke B<cowbuilder> as root "
+"by using the B<BUILDD_ROOTCMD>. Signing keys are not required to be "
+"installed on the build machine (and will be ignored there if they are). If "
+"the package is signed, keys will be expected on the machine that executes "
+"B<cowpoke>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:367
+msgid ""
+"When B<cowpoke> is invoked, it will first attempt to update the "
+"B<cowbuilder> image if that has not already been done on the same day. This "
+"is checked by the presence or absence of a "
+"I<cowbuilder-$arch-$dist-update-log-$date> file in the B<INCOMING_DIR>. You "
+"may move, remove, or touch this file if you wish the image to be updated "
+"more or less often than that. Its contents log the output of B<cowbuilder> "
+"during the update (or creation) of the build root."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/cowpoke.1:369 ../scripts/origtargz.pl:80 ../scripts/rmadison.pl:324
+#, no-wrap
+msgid "NOTES"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:378
+msgid ""
+"Since B<cowbuilder> creates a chroot, and to do that you need root, "
+"B<cowpoke> also requires some degree of root access. So all the horrible "
+"things that can go wrong with that may well one day rain down upon you. "
+"B<cowbuilder> has been known to accidentally wipe out bind-mounted "
+"filesystems outside the chroot, and worse than that can easily happen. So "
+"be careful, keep good backups of things you don't want to lose on your build "
+"machine, and use B<cowpoke> to keep all that on a machine that isn't your "
+"bleeding edge dev box with your last few hours of uncommitted work."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:384
+msgid "B<cowbuilder>(1), B<pbuilder>(1), B<ssh-agent>(1), B<sudoers>(5)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:388
+msgid "B<cowpoke> was written by Ron E<lt>I<ron@debian.org>E<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/cvs-debc.1:1 ../scripts/cvs-debrelease.1:1
+#, no-wrap
+msgid "CVS-DEBC"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:4
+msgid "cvs-debc - view contents of a cvs-buildpackage/cvs-debuild generated package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:6
+msgid "B<cvs-debc> [I<options>] [I<package> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:17
+msgid ""
+"B<cvs-debc> is run from the CVS working directory after B<cvs-buildpackage> "
+"or B<cvs-debuild>. It uses the B<cvs-buildpackage> system to locate the "
+"I<.changes> file generated in that run. It then displays information about "
+"the I<.deb> files which were generated in that run, by running B<dpkg-deb "
+"-I> and B<dpkg-deb -c> on every I<.deb> archive listed in the I<.changes> "
+"file, assuming that all of the I<.deb> archives live in the same directory "
+"as the I<.changes> file. It is useful for ensuring that the expected files "
+"have ended up in the Debian package."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:20
+msgid ""
+"If a list of packages is given on the command line, then only those debs "
+"with names in this list of packages will be processed."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:24 ../scripts/cvs-debi.1:23 ../scripts/cvs-debrelease.1:21
+msgid ""
+"Note that unlike B<cvs-buildpackage>, the only way to specify the source "
+"package name is with the B<-P> option; you cannot simply have it as the last "
+"command-line parameter."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:28 ../scripts/cvs-debi.1:32
+msgid ""
+"All current B<cvs-buildpackage> options are silently accepted; however, only "
+"the ones listed below have any effect. For more details on all of them, see "
+"the B<cvs-buildpackage>(1) manpage."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debc.1:28 ../scripts/cvs-debi.1:32 ../scripts/cvs-debrelease.1:30 ../scripts/debc.1:65 ../scripts/debi.1:66 ../scripts/debrelease.1:67 ../scripts/debrsign.1:35 ../scripts/debsign.1:72
+#, no-wrap
+msgid "B<-a>I<debian-architecture>, B<-t>I<GNU-system-type>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:34 ../scripts/cvs-debi.1:38 ../scripts/cvs-debrelease.1:36 ../scripts/debc.1:71 ../scripts/debi.1:72 ../scripts/debrsign.1:41 ../scripts/debsign.1:78
+msgid ""
+"See B<dpkg-architecture>(1) for a description of these options. They affect "
+"the search for the I<.changes> file. They are provided to mimic the "
+"behaviour of B<dpkg-buildpackage> when determining the name of the "
+"I<.changes> file."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debc.1:34 ../scripts/cvs-debi.1:38 ../scripts/cvs-debrelease.1:36
+#, no-wrap
+msgid "B<-M>I<module>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:37 ../scripts/cvs-debi.1:41 ../scripts/cvs-debrelease.1:39
+msgid "The name of the CVS module."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debc.1:37 ../scripts/cvs-debi.1:41 ../scripts/cvs-debrelease.1:39
+#, no-wrap
+msgid "B<-P>I<package>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:40 ../scripts/cvs-debi.1:44 ../scripts/cvs-debrelease.1:42
+msgid "The name of the package."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debc.1:40 ../scripts/cvs-debi.1:44 ../scripts/cvs-debrelease.1:42
+#, no-wrap
+msgid "B<-V>I<version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:43 ../scripts/cvs-debi.1:47 ../scripts/cvs-debrelease.1:45
+msgid "The version number of the package."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debc.1:43 ../scripts/cvs-debi.1:47 ../scripts/cvs-debrelease.1:45
+#, no-wrap
+msgid "B<-T>I<tag>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:46 ../scripts/cvs-debi.1:50 ../scripts/cvs-debrelease.1:48
+msgid "The CVS tag to use for exporting sources."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debc.1:46 ../scripts/cvs-debi.1:50 ../scripts/cvs-debrelease.1:48
+#, no-wrap
+msgid "B<-R>I<root\\ directory>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:49 ../scripts/cvs-debi.1:53 ../scripts/cvs-debrelease.1:51
+msgid "Root of the original sources archive."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debc.1:49 ../scripts/cvs-debi.1:53 ../scripts/cvs-debrelease.1:51
+#, no-wrap
+msgid "B<-W>I<work directory>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:52 ../scripts/cvs-debi.1:56 ../scripts/cvs-debrelease.1:54
+msgid "The full path name for the cvs-buildpackage working directory."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debc.1:52 ../scripts/cvs-debi.1:56 ../scripts/cvs-debrelease.1:54
+#, no-wrap
+msgid "B<-x>I<prefix>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:55 ../scripts/cvs-debi.1:59 ../scripts/cvs-debrelease.1:57
+msgid "This option provides the CVS default module prefix."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debc.1:55 ../scripts/cvs-debi.1:59 ../scripts/cvs-debrelease.1:61 ../scripts/debc.1:89 ../scripts/debi.1:106 ../scripts/debrsign.1:50
+#, no-wrap
+msgid "B<--help>, B<--version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:58 ../scripts/cvs-debi.1:62 ../scripts/cvs-debrelease.1:64 ../scripts/debc.1:92 ../scripts/debi.1:109 ../scripts/debrsign.1:53
+msgid "Show help message and version information respectively."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:63
+msgid "B<cvs-buildpackage>(1), B<cvs-debi>(1), B<cvs-debuild>(1), B<debc>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:67 ../scripts/cvs-debi.1:71
+msgid ""
+"B<cvs-buildpackage> was written by Manoj Srivastava, and the current version "
+"of B<debi> was written by Julian Gilbey E<lt>jdg@debian.orgE<gt>. They have "
+"been combined into this program by Julian Gilbey."
+msgstr ""
+
+#. type: TH
+#: ../scripts/cvs-debi.1:1
+#, no-wrap
+msgid "CVS-DEBI"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:4
+msgid "cvs-debi - install cvs-buildpackage/cvs-debuild generated package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:6
+msgid "B<cvs-debi> [I<options>] [I<package> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:16
+msgid ""
+"B<cvs-debi> is run from the CVS working directory after B<cvs-buildpackage> "
+"or B<cvs-debuild>. It uses the B<cvs-buildpackage> system to locate the "
+"I<.changes> file generated in that run. It then runs B<debpkg -i> on every "
+"I<.deb> archive listed in the I<.changes> file to install them, assuming "
+"that all of the I<.deb> archives live in the same directory as the "
+"I<.changes> file. Note that you probably don't want to run this program on "
+"a I<.changes> file relating to a different architecture after "
+"cross-compiling the package!"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:19 ../scripts/debi.1:24
+msgid ""
+"If a list of packages is given on the command line, then only those debs "
+"with names in this list of packages will be installed."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:28 ../scripts/debi.1:29
+msgid ""
+"Since installing a package requires root privileges, B<debi> calls B<debpkg> "
+"rather than B<dpkg> directly. Thus B<debi> will only be useful if it is "
+"either being run as root or B<debpkg> can be run as root. See B<debpkg>(1) "
+"for more details."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:67
+msgid "B<cvs-buildpackage>(1), B<cvs-debc>(1), B<cvs-debuild>(1), B<debi>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:4
+msgid "cvs-debrelease - upload a cvs-buildpackage/cvs-debuild generated package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:7
+msgid ""
+"B<cvs-debrelease> [I<cvs-debrelease options>] [B<--dopts> [I<dupload/dput "
+"options>]]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:17
+msgid ""
+"B<cvs-debrelease> is run from the CVS working directory after "
+"B<cvs-buildpackage> or B<cvs-debuild>. It uses the B<cvs-buildpackage> "
+"system to locate the I<.changes> file generated in that run. It then "
+"uploads the package using B<debrelease>(1), which in turn calls either "
+"B<dupload> or B<dput>. Note that the B<--dopts> option must be specified to "
+"distinguish the B<cvs-debrelease> options from the B<dupload> or B<dput> "
+"options. Also, the B<devscripts> configuration files will be read, as "
+"described in the B<debrelease>(1) manpage."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:26
+msgid ""
+"All current B<cvs-buildpackage> options are silently accepted; however, only "
+"the ones listed below have any effect. For more details on all of them, see "
+"the B<cvs-buildpackage>(1) manpage. All B<debrelease> options (as listed "
+"below) are also accepted."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debrelease.1:26 ../scripts/debrelease.1:57
+#, no-wrap
+msgid "B<--dupload>, B<--dput>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:30 ../scripts/debrelease.1:61
+msgid "This specifies which uploader program to use; the default is B<dupload>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:68
+msgid "B<cvs-buildpackage>(1), B<cvs-debuild>(1), B<debrelease>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:72
+msgid ""
+"B<cvs-buildpackage> was written by Manoj Srivastava, and the current version "
+"of B<debrelease> was written by Julian Gilbey E<lt>jdg@debian.orgE<gt>. "
+"They have been combined into this program by Julian Gilbey."
+msgstr ""
+
+#. type: TH
+#: ../scripts/cvs-debuild.1:1
+#, no-wrap
+msgid "CVS-DEBUILD"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:4
+msgid "cvs-debuild - build a Debian package using cvs-buildpackage and debuild"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:7
+msgid ""
+"B<cvs-debuild> [I<debuild options>] [I<cvs-buildpackage options>] "
+"[B<--lintian-opts> I<lintian options>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:13
+msgid ""
+"B<cvs-debuild> is a wrapper around B<cvs-buildpackage> to run it with "
+"B<debuild> as the package-building program. (This cannot simply be "
+"accomplished using the B<-C> option of B<cvs-buildpackage>, as it does not "
+"know how to handle all of the special B<debuild> options.)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:22
+msgid ""
+"The program simply stashes the B<debuild> and B<lintian> options, and passes "
+"them to B<debuild> when it is called by B<cvs-buildpackage>. All of the "
+"standard B<debuild> options may be used (as listed below), but note that the "
+"root command specified by any B<--rootcmd> or B<-r> command-line option will "
+"be passed as an option to B<cvs-buildpackage>. The first non-B<debuild> "
+"option detected will signal the start of the B<cvs-buildpackage> options."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:29
+msgid ""
+"The selection of the root command is slightly subtle: if there are any "
+"command-line options, these will be used. If not, then if "
+"B<cvs-buildpackage> is set up to use a default root command, that will be "
+"used. Finally, if neither of these are the case, then B<debuild> will use "
+"its procedures to determine an appropriate command, as described in its "
+"documentation."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:32
+msgid ""
+"See the manpages for B<debuild>(1) and B<cvs-buildpackage> for more "
+"information about the behaviour of each."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:38
+msgid ""
+"The following are the B<debuild> options recognised by B<cvs-debuild>. All "
+"B<cvs-buildpackage> and B<lintian> options are simply passed to the "
+"appropriate program. For explanations of the meanings of these variables, "
+"see B<debuild>(1)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:40 ../scripts/debuild.1:225
+#, no-wrap
+msgid "B<--rootcmd=>I<gain-root-command>, B<-r>I<gain-root-command>"
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:42 ../scripts/debuild.1:228
+#, no-wrap
+msgid "B<--preserve-env>"
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:44 ../scripts/debuild.1:231
+#, no-wrap
+msgid "B<--preserve-envvar=>I<var>, B<-e>I<var>"
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:46 ../scripts/debuild.1:238
+#, no-wrap
+msgid "B<--set-envvar=>I<var>B<=>I<value>, B<-e>I<var>B<=>I<value>"
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:48
+#, no-wrap
+msgid "B<--lintian>, B<--no-lintian>"
+msgstr ""
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:50
+#, no-wrap
+msgid "B<--ignore-dirname>, B<--check-dirname>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:53
+msgid "These should not be needed, but it is provided nevertheless."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:58
+msgid ""
+"B<cvs-buildpackage>(1), B<debuild>(1), B<dpkg-buildpackage>(1), "
+"B<lintian>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:59
+msgid "This program was written by Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/dcmd.1:1
+#, no-wrap
+msgid "DCMD"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:4
+msgid "dcmd - expand file lists of .dsc/.changes files in the command line"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:6
+msgid "B<dcmd> [I<options>] [I<command>] [I<changes-file>|I<dsc-file>] ..."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:11
+msgid ""
+"B<dcmd> replaces any reference to a I<.dsc> or I<.changes> file in the "
+"command line with the list of files in its 'Files' section, plus the file "
+"itself. It allows easy manipulation of all the files involved in an upload "
+"(for I<.changes> files) or a source package (for I<.dsc> files)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:15
+msgid ""
+"If I<command> is omitted (that is the first argument is an existing I<.dsc> "
+"or I<.changes> file), the expanded list of files is printed to stdout, one "
+"file by line. Useful for usage in backticks."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:19
+msgid ""
+"There are a number of options which may be used in order to select only a "
+"subset of the files listed in the I<.dsc> or I<.changes> file. If a "
+"requested file is not found, an error message will be printed."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:19
+#, no-wrap
+msgid "B<--dsc>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:22
+msgid "Select the I<.dsc> file."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:22
+#, no-wrap
+msgid "B<--schanges>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:25
+msgid "Select I<.changes> files for the 'source' architecture."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:25
+#, no-wrap
+msgid "B<--bchanges>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:28
+msgid "Select I<.changes> files for binary architectures."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:28
+#, no-wrap
+msgid "B<--changes>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:31
+msgid "Select I<.changes> files. Implies B<--schanges> and B<--bchanges>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:31
+#, no-wrap
+msgid "B<--archdeb>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:34
+msgid "Select architecture-dependent binary packages (I<.deb> files)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:34
+#, no-wrap
+msgid "B<--indepdeb>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:37
+msgid "Select architecture-independent binary packages (I<.deb> files)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:37
+#, no-wrap
+msgid "B<--deb>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:40
+msgid ""
+"Select binary packages (I<.deb> files). Implies B<--archdeb> and "
+"B<--indepdeb>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:40
+#, no-wrap
+msgid "B<--archudeb>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:43
+msgid "Select architecture-dependent I<.udeb> binary packages."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:43
+#, no-wrap
+msgid "B<--indepudeb>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:46
+msgid "Select architecture-independent I<.udeb> binary packages."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:46
+#, no-wrap
+msgid "B<--udeb>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:49
+msgid "Select I<.udeb> binary packages. Implies B<--archudeb> and B<--indepudeb>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:49
+#, no-wrap
+msgid "B<--tar>,\\ B<--orig>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:52
+msgid "Select the upstream I<.tar> file."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:52
+#, no-wrap
+msgid "B<--diff>,\\ B<--debtar>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:55
+msgid "Select the Debian I<.debian.tar> or I<.diff> file."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:58
+msgid ""
+"Each option may be prefixed by B<--no> to indicate that all files I<not> "
+"matching the specification should be selected."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:62
+msgid ""
+"It is not possible to combine positive filtering options (e.g. B<--dsc>) "
+"and negative filtering options (e.g. B<--no-changes>) in the same B<dcmd> "
+"invocation."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:62
+#, no-wrap
+msgid "B<--no-fail-on-missing>, B<-r>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:65
+msgid "If any of the requested files were not found, do not output an error."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:65
+#, no-wrap
+msgid "B<--package>, B<-p>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:68
+msgid "Output package name part only."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:68
+#, no-wrap
+msgid "B<--sort>, B<-s>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:71
+msgid "Sort output alphabetically."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcmd.1:71
+#, no-wrap
+msgid "B<--tac>, B<-t>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:74
+msgid "Reverse output order."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/dcmd.1:75 ../scripts/debsnap.1:93 ../scripts/debuild.1:367 ../scripts/dget.pl:660 ../scripts/getbuildlog.1:31 ../scripts/rc-alert.1:96 ../scripts/who-permits-upload.pl:133
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:77
+msgid "Copy the result of a build to another machine:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:85
+#, no-wrap
+msgid ""
+"$ dcmd scp rcs_5.7-23_amd64.changes elegiac:/tmp\n"
+"rcs_5.7-23.dsc 100% 490 0.5KB/s 00:00\n"
+"rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.changes 100% 1095 1.1KB/s 00:00\n"
+"$\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:90
+#, no-wrap
+msgid ""
+"$ dcmd --diff --deb scp rcs_5.7-23_amd64.changes elegiac:/tmp\n"
+"rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00\n"
+"$\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:93
+msgid "Check the contents of a source package:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:100
+#, no-wrap
+msgid ""
+"$ dcmd md5sum rcs_5.7-23.dsc\n"
+"8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz\n"
+"f0ceeae96603e823eacba6721a30b5c7 rcs_5.7-23.diff.gz\n"
+"5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc\n"
+"$\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:105
+#, no-wrap
+msgid ""
+"$ dcmd --no-diff md5sum rcs_5.7-23.dsc\n"
+"8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz\n"
+"5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc\n"
+"$\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:110
+msgid "B<dpkg-genchanges>(1), B<dpkg-source>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dcmd.1:112
+msgid ""
+"This program was written by Romain Francoise E<lt>rfrancoise@debian.orgE<gt> "
+"and is released under the GPL, version 2 or later."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:198
+msgid ""
+"dcontrol -- Query package and source control files for all Debian "
+"distributions"
+msgstr ""
+
+#. type: =item
+#: ../scripts/dcontrol.pl:204
+msgid "B<dcontrol> [I<options>] I<package>[I<modifiers>] ..."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:210
+msgid ""
+"B<dcontrol> queries a remote database of Debian binary and source package "
+"control files. It can be thought of as an B<apt-cache> webservice that also "
+"operates for distributions and architectures different from the local "
+"machine."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/dcontrol.pl:214
+msgid "MODIFIERS"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:216
+msgid "Like B<apt-cache>, packages can be suffixed by modifiers:"
+msgstr ""
+
+#. type: =item
+#: ../scripts/dcontrol.pl:220
+msgid "B<=>I<version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:222
+msgid "Exact version match"
+msgstr ""
+
+#. type: =item
+#: ../scripts/dcontrol.pl:224
+msgid "B<@>I<architecture>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:226
+msgid ""
+"Query this only architecture. Use B<@source> for source packages, B<@binary> "
+"excludes source packages."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dcontrol.pl:229
+msgid "B</>[I<archive>B<:>][I<suite>][B</>I<component>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:231
+msgid ""
+"Restrict to I<archive> (debian, debian-backports, debian-security, "
+"debian-volatile), I<suite> (always codenames, with the exception of "
+"experimental), and/or I<component> (main, updates/main, ...). Use two "
+"slashes (B<//>) to separate suite and component if the suite name contains "
+"slashes. (Component can be left empty.)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:239
+msgid ""
+"By default, all versions, suites, and architectures are queried. Refer to "
+"B<https://qa.debian.org/cgi-bin/dcontrol> for currently supported values."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dcontrol.pl:246
+msgid "B<-s>, B<--show-suites>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:248
+msgid "Add headers showing which distribution the control file is from."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:252
+msgid "Print URL queried."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:256 ../scripts/dget.pl:623
+msgid "Show a help message."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dcontrol.pl:258 ../scripts/dd-list.1:96 ../scripts/dget.pl:625 ../scripts/getbuildlog.1:28
+#, no-wrap
+msgid "B<-V>, B<--version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:260 ../scripts/dget.pl:627
+msgid "Show version information."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:266 ../scripts/dget.pl:633
+msgid ""
+"The two configuration files F</etc/devscripts.conf> and F<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file settings. "
+"Environment variable settings are ignored for this purpose. The currently "
+"recognised variable is:"
+msgstr ""
+
+#. type: =item
+#: ../scripts/dcontrol.pl:274
+msgid "DCONTROL_URL"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:276
+msgid "URL to query. Default is B<https://qa.debian.org/cgi-bin/dcontrol>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:282
+msgid "This program is Copyright (C) 2009 by Christoph Berg <myon@debian.org>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:284 ../scripts/dget.pl:680 ../scripts/tagpending.pl:439
+msgid ""
+"This program is licensed under the terms of the GPL, either version 2 of the "
+"License, or (at your option) any later version."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:289
+msgid "B<apt-cache>(1)"
+msgstr ""
+
+#. type: TH
+#: ../scripts/dd-list.1:16
+#, no-wrap
+msgid "DD-LIST"
+msgstr ""
+
+#. type: TH
+#: ../scripts/dd-list.1:16
+#, no-wrap
+msgid "2011-10-27"
+msgstr ""
+
+#. type: TH
+#: ../scripts/dd-list.1:16
+#, no-wrap
+msgid "Debian"
+msgstr ""
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:21
+msgid "dd-list - nicely list .deb packages and their maintainers"
+msgstr ""
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:26
+msgid ""
+"B<dd-list> [B<-hiusV>] [B<--help>] [B<--stdin>] [B<--sources "
+">I<Sources_file>] [B<--dctrl>] [B<--version>] [B<--uploaders>] [I<package> "
+"...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:30
+msgid ""
+"B<dd-list> produces nicely formatted lists of Debian (.deb) packages and "
+"their maintainers."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:37
+msgid ""
+"Input is a list of source or binary package names on the command line (or "
+"the standard input if B<--stdin> is given). Output is a list of the "
+"following format, where package names are source packages by default:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:41
+#, no-wrap
+msgid "J. Random Developer E<lt>jrandom@debian.orgE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:44
+#, no-wrap
+msgid ""
+"j-random-package\n"
+"j-random-other\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:47
+#, no-wrap
+msgid "Diana Hacker E<lt>diana@example.orgE<gt>\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:50
+#, no-wrap
+msgid ""
+"fun-package\n"
+"more-fun-package\n"
+msgstr ""
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:58
+msgid ""
+"This is useful when you want, for example, to produce a list of packages "
+"that need to attention from their maintainers, e.g., to be rebuilt when a "
+"library version transition happens."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:62
+msgid "Print brief help message."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dd-list.1:62
+#, no-wrap
+msgid "B<-i>, B<--stdin>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:66
+msgid ""
+"Read package names from the standard input, instead of taking them from the "
+"command line. Package names are whitespace delimited."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dd-list.1:66
+#, no-wrap
+msgid "B<-d>, B<--dctrl>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:73
+msgid ""
+"Read package list from standard input in the format of a Debian package "
+"control file. This includes the status file, or output of apt-cache. This is "
+"the fastest way to use dd-list, as it uses the maintainer information from "
+"the input instead of looking up the maintainer of each listed package."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:76
+msgid ""
+"If no I<Source:> line is given, the I<Package:> name is used for output, "
+"which might be a binary package name."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dd-list.1:76
+#, no-wrap
+msgid "B<-s>, B<--sources> I<Sources_file>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:80
+msgid ""
+"Read package information from the specified I<Sources_file>s. This can be "
+"given multiple times."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:83
+msgid ""
+"If no I<Sources_file>s are specified, any files matching "
+"I</var/lib/apt/lists/*_source_Sources> will be used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dd-list.1:83
+#, no-wrap
+msgid "B<-u>, B<--uploaders>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:88
+msgid ""
+"Also list developers who are named as uploaders of packages, not only the "
+"maintainers; this is the default behaviour, use --nouploaders to prevent "
+"it. Uploaders are indicated with \"(U)\" appended to the package name."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dd-list.1:88
+#, no-wrap
+msgid "B<-nou>, B<--nouploaders>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:91
+msgid "Only list package Maintainers, do not list Uploaders."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dd-list.1:91
+#, no-wrap
+msgid "B<-b>, B<--print-binary>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:96
+msgid ""
+"Use binary package names in the output instead of source package names (has "
+"no effect with B<--dctrl> if the I<Package:> line contains source package "
+"names)."
+msgstr ""
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:100
+msgid "Print the version."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:102
+msgid "Lars Wirzenius E<lt>liw@iki.fiE<gt>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dd-list.1:103
+msgid "Joey Hess E<lt>joeyh@debian.orgE<gt>"
+msgstr ""
+
+#. type: TH
+#: ../scripts/debc.1:1
+#, no-wrap
+msgid "DEBC"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:4
+msgid "debc - view contents of a generated Debian package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:6
+msgid "B<debc> [I<options>] [I<changes file>] [I<package> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:25
+msgid ""
+"B<debc> figures out the current version of a package and displays "
+"information about the I<.deb> and I<.udeb> files which have been generated "
+"in the current build process. If a I<.changes> file is specified on the "
+"command line, the filename must end with I<.changes>, as this is how the "
+"program distinguishes it from package names. If not, then B<debc> has to be "
+"called from within the source code directory tree. In this case, it will "
+"look for the I<.changes> file corresponding to the current package version "
+"(by determining the name and version number from the changelog, and the "
+"architecture in the same way as B<dpkg-buildpackage>(1) does). It then runs "
+"B<dpkg-deb -I> and B<dpkg-deb -c> on every I<.deb> and I<.udeb> archive "
+"listed in the I<.changes> file to display information about the contents of "
+"the I<.deb> / I<.udeb> files. It precedes every I<.deb> or I<.udeb> file "
+"with the name of the file. It assumes that all of the I<.deb> / I<.udeb> "
+"archives live in the same directory as the I<.changes> file. It is useful "
+"for ensuring that the expected files have ended up in the Debian package."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:28
+msgid ""
+"If a list of packages is given on the command line, then only those debs or "
+"udebs with names in this list of packages will be processed."
+msgstr ""
+
+#. type: SH
+#: ../scripts/debc.1:28 ../scripts/debchange.1:105 ../scripts/debclean.1:24 ../scripts/debi.1:29 ../scripts/debrelease.1:20 ../scripts/debuild.1:49 ../scripts/uscan.1:306
+#, no-wrap
+msgid "Directory name checking"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:39
+msgid ""
+"In common with several other scripts in the B<devscripts> package, B<debc> "
+"will climb the directory tree until it finds a I<debian/changelog> file. As "
+"a safeguard against stray files causing potential problems, it will examine "
+"the name of the parent directory once it finds the I<debian/changelog> file, "
+"and check that the directory name corresponds to the package name. "
+"Precisely how it does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and "
+"B<--check-dirname-regex>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:41 ../scripts/debchange.1:118 ../scripts/debclean.1:37 ../scripts/debi.1:42 ../scripts/debrelease.1:33 ../scripts/debuild.1:63 ../scripts/uscan.1:323
+msgid "B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> can take the following values:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debc.1:41 ../scripts/debchange.1:118 ../scripts/debclean.1:37 ../scripts/debi.1:42 ../scripts/debrelease.1:33 ../scripts/debuild.1:63 ../scripts/uscan.1:323
+#, no-wrap
+msgid "B<0>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:44 ../scripts/debchange.1:121 ../scripts/debclean.1:40 ../scripts/debi.1:45 ../scripts/debrelease.1:36 ../scripts/debuild.1:66 ../scripts/uscan.1:326
+msgid "Never check the directory name."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debc.1:44 ../scripts/debchange.1:121 ../scripts/debclean.1:40 ../scripts/debi.1:45 ../scripts/debrelease.1:36 ../scripts/debuild.1:66 ../scripts/uscan.1:326
+#, no-wrap
+msgid "B<1>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:48 ../scripts/debchange.1:125 ../scripts/debclean.1:44 ../scripts/debi.1:49 ../scripts/debrelease.1:40 ../scripts/debuild.1:70
+msgid ""
+"Only check the directory name if we have had to change directory in our "
+"search for I<debian/changelog>. This is the default behaviour."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debc.1:48 ../scripts/debchange.1:125 ../scripts/debclean.1:44 ../scripts/debi.1:49 ../scripts/debrelease.1:40 ../scripts/debuild.1:70 ../scripts/uscan.1:332
+#, no-wrap
+msgid "B<2>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:51 ../scripts/debchange.1:128 ../scripts/debclean.1:47 ../scripts/debi.1:52 ../scripts/debrelease.1:43 ../scripts/debuild.1:73 ../scripts/uscan.1:335
+msgid "Always check the directory name."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:64 ../scripts/debclean.1:60 ../scripts/debi.1:65 ../scripts/debrelease.1:56
+msgid ""
+"The directory name is checked by testing whether the current directory name "
+"(as determined by B<pwd>(1)) matches the regex given by the configuration "
+"file option B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> or by the command line option "
+"B<--check-dirname-regex> I<regex>. Here I<regex> is a Perl regex (see "
+"B<perlre>(3perl)), which will be anchored at the beginning and the end. If "
+"I<regex> contains a '/', then it must match the full directory path. If "
+"not, then it must match the full directory name. If I<regex> contains the "
+"string \\'PACKAGE', this will be replaced by the source package name, as "
+"determined from the changelog. The default value for the regex is: "
+"\\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and "
+"PACKAGE-version."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debc.1:71 ../scripts/debi.1:72 ../scripts/debrelease.1:81
+#, no-wrap
+msgid "B<--debs-dir> I<directory>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:77
+msgid ""
+"Look for the I<.changes>, I<.deb> and I<.udeb> files in I<directory> instead "
+"of the parent of the source directory. This should either be an absolute "
+"path or relative to the top of the source directory."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debc.1:77 ../scripts/debchange.1:369 ../scripts/debclean.1:69 ../scripts/debi.1:87 ../scripts/debrelease.1:87 ../scripts/debuild.1:276 ../scripts/uscan.1:472
+#, no-wrap
+msgid "B<--check-dirname-level> I<N>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:81 ../scripts/debc.1:85 ../scripts/debclean.1:73 ../scripts/debclean.1:77 ../scripts/debi.1:91 ../scripts/debi.1:95 ../scripts/debrelease.1:91 ../scripts/debrelease.1:95 ../scripts/debuild.1:280 ../scripts/debuild.1:284 ../scripts/uscan.1:476 ../scripts/uscan.1:480
+msgid ""
+"See the above section B<Directory name checking> for an explanation of this "
+"option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debc.1:81 ../scripts/debchange.1:373 ../scripts/debclean.1:73 ../scripts/debi.1:91 ../scripts/debrelease.1:91 ../scripts/debuild.1:280 ../scripts/uscan.1:476
+#, no-wrap
+msgid "B<--check-dirname-regex> I<regex>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:98 ../scripts/debchange.1:398 ../scripts/debclean.1:96 ../scripts/debi.1:115 ../scripts/debrelease.1:111 ../scripts/debrsign.1:63 ../scripts/debsign.1:112 ../scripts/nmudiff.1:85 ../scripts/pts-subscribe.1:48 ../scripts/uupdate.1:94 ../scripts/who-uploads.1:56
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced in that order to set configuration variables. Command line options "
+"can be used to override configuration file settings. Environment variable "
+"settings are ignored for this purpose. The currently recognised variables "
+"are:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debc.1:98 ../scripts/debi.1:115 ../scripts/debrelease.1:116 ../scripts/debsign.1:124
+#, no-wrap
+msgid "B<DEBRELEASE_DEBS_DIR>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:108
+msgid ""
+"This specifies the directory in which to look for the I<.changes>, I<.deb> "
+"and I<.udeb> files, and is either an absolute path or relative to the top of "
+"the source tree. This corresponds to the B<--debs-dir> command line "
+"option. This directive could be used, for example, if you always use "
+"B<pbuilder> or B<svn-buildpackage> to build your packages. Note that it "
+"also affects B<debrelease>(1) in the same way, hence the strange name of the "
+"option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debc.1:108 ../scripts/debchange.1:406 ../scripts/debclean.1:100 ../scripts/debi.1:125 ../scripts/debrelease.1:125 ../scripts/debuild.1:360 ../scripts/devscripts.conf.5:42
+#, no-wrap
+msgid "B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL>, B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:115 ../scripts/debclean.1:107 ../scripts/debi.1:132 ../scripts/debrelease.1:132 ../scripts/debuild.1:367
+msgid ""
+"See the above section B<Directory name checking> for an explanation of these "
+"variables. Note that these are package-wide configuration variables, and "
+"will therefore affect all B<devscripts> scripts which check their value, as "
+"described in their respective manpages and in B<devscripts.conf>(5)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:119
+msgid "B<debdiff>(1), B<dpkg-deb>(1), B<devscripts.conf>(5)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debc.1:121
+msgid ""
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>, based on an original script by "
+"Christoph Lameter E<lt>clameter@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/debchange.1:1
+#, no-wrap
+msgid "DEBCHANGE"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:4
+msgid ""
+"debchange - Tool for maintenance of the debian/changelog file in a source "
+"package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:6
+msgid "B<debchange> [I<options>] [I<text> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:8
+msgid "B<dch> [I<options>] [I<text> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:29
+msgid ""
+"B<debchange> or its alias B<dch> will add a new comment line to the Debian "
+"changelog in the current source tree. This command must be run from within "
+"that tree. If the text of the change is given on the command line, "
+"B<debchange> will run in batch mode and simply add the text, with line "
+"breaks as necessary, at the appropriate place in I<debian/changelog> (or the "
+"changelog specified by options, as described below). If no text is "
+"specified then B<debchange> will run the editor as determined by "
+"B<sensible-editor> for you to edit the file. (The environment variables "
+"B<VISUAL> and B<EDITOR> are used in this order to determine which editor to "
+"use.) Editors which understand the I<+n> option for starting the editing on "
+"a specified line will use this to move to the correct line of the file for "
+"editing. If the editor is quit without modifying the temporary file, "
+"B<debchange> will exit without touching the existing changelog. B<Note that "
+"the changelog is assumed to be encoded with the UTF-8 encoding. If it is "
+"not, problems may occur.> Please see the B<iconv>(1) manpage to find out how "
+"to convert changelogs from legacy encodings. Finally, a I<changelog> or "
+"I<NEWS> file can be created from scratch using the B<--create> option "
+"described below."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:42
+msgid ""
+"B<debchange> also supports automatically producing bug-closing changelog "
+"entries, using the B<--closes> option. This will usually query the BTS, the "
+"Debian Bug Tracking System (see https://bugs.debian.org/) to determine the "
+"title of the bug and the package in which it occurs. This behaviour can be "
+"stopped by giving a B<--noquery> option or by setting the configuration "
+"variable B<DEBCHANGE_QUERY_BTS> to I<no>, as described below. In either "
+"case, the editor (as described above) will always be invoked to give an "
+"opportunity to modify the entries, and the changelog will be accepted "
+"whether or not modifications are made. An extra changelog entry can be "
+"given on the command line in addition to the closes entries."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:49
+msgid ""
+"At most one of B<--append>, B<--increment>, B<--edit>, B<--release>, and "
+"B<--newversion> may be specified as listed below. If no options are "
+"specified, B<debchange> will use heuristics to guess whether or not the "
+"package has been successfully released, and behave as if B<--increment> had "
+"been specified if the package has been released, or otherwise as if "
+"B<--append> has been specified."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:64
+msgid ""
+"Two different sets of heuristics can be used, as controlled by the "
+"B<--release-heuristic> option or the B<DEBCHANGE_RELEASE_HEURISTIC> "
+"configuration variable. The default I<changelog> heuristic assumes the "
+"package has been released unless its changelog contains B<UNRELEASED> in the "
+"distribution field. If this heuristic is enabled then the distribution will "
+"default to B<UNRELEASED> in new changelog entries, and the B<--mainttrailer> "
+"option described below will be automatically enabled. This can be useful if "
+"a package can be released by different maintainers, or if you do not keep "
+"the upload logs. The alternate I<log> heuristic determines if a package has "
+"been released by looking for an appropriate B<dupload>(1) or B<dput>(1) log "
+"file in the parent directory. A warning will be issued if the log file is "
+"found but a successful upload is not recorded. This may be because the "
+"previous upload was performed with a version of B<dupload> prior to 2.1 or "
+"because the upload failed."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:82
+msgid ""
+"If either B<--increment> or B<--newversion> is used, the name and email for "
+"the new version will be determined as follows. If the environment variable "
+"B<DEBFULLNAME> is set, this will be used for the maintainer full name; if "
+"not, then B<NAME> will be checked. If the environment variable B<DEBEMAIL> "
+"is set, this will be used for the email address. If this variable has the "
+"form \"name E<lt>emailE<gt>\", then the maintainer name will also be taken "
+"from here if neither B<DEBFULLNAME> nor B<NAME> is set. If this variable is "
+"not set, the same test is performed on the environment variable B<EMAIL>. "
+"Next, if the full name has still not been determined, then use "
+"B<getpwuid>(3) to determine the name from the password file. If this fails, "
+"use the previous changelog entry. For the email address, if it has not been "
+"set from B<DEBEMAIL> or B<EMAIL>, then look in I</etc/mailname>, then "
+"attempt to build it from the username and FQDN, otherwise use the email "
+"address in the previous changelog entry. In other words, it's a good idea "
+"to set B<DEBEMAIL> and B<DEBFULLNAME> when using this script."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:95
+msgid ""
+"Support is included for changelogs that record changes by multiple "
+"co-maintainers of a package. If an entry is appended to the current "
+"version's entries, and the maintainer is different from the maintainer who "
+"is listed as having done the previous entries, then lines will be added to "
+"the changelog to tell which maintainers made which changes. Currently only "
+"one of the several such styles of recording this information is supported, "
+"in which the name of the maintainer who made a set of changes appears on a "
+"line before the changes, inside square brackets. This can be switched on and "
+"off using the B<-->[B<no>]B<multimaint> option or the "
+"B<DEBCHANGE_MULTIMAINT> configuration file option; the default is to enable "
+"it. Note that if an entry has already been marked in this way, then this "
+"option will be silently ignored."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:101
+msgid ""
+"If the directory name of the source tree has the form I<package>-I<version>, "
+"then B<debchange> will also attempt to rename it if the (upstream) version "
+"number changes. This can be prevented by using the B<--preserve> command "
+"line or configuration file option as described below."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:105
+msgid ""
+"If B<--force-bad-version> or B<--allow-lower-version> is used, B<debchange> "
+"will not stop if the new version is less than the current one. This is "
+"especially useful while doing backports."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:116
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debchange> will climb the directory tree until it finds a "
+"I<debian/changelog> file. As a safeguard against stray files causing "
+"potential problems, it will examine the name of the parent directory once it "
+"finds the I<debian/changelog> file, and check that the directory name "
+"corresponds to the package name. Precisely how it does this is controlled "
+"by two configuration file variables B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and their corresponding command-line "
+"options B<--check-dirname-level> and B<--check-dirname-regex>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:141
+msgid ""
+"The directory name is checked by testing whether the current directory name "
+"(as determined by B<pwd>(1)) matches the regex given by the configuration "
+"file option B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> or by the command line option "
+"B<--check-dirname-regex> I<regex>. Here I<regex> is a Perl regex (see "
+"B<perlre>(3perl)), which will be anchored at the beginning and the end. If "
+"I<regex> contains a 'B</>', then it must match the full directory path. If "
+"not, then it must match the full directory name. If I<regex> contains the "
+"string \\'B<PACKAGE>', this will be replaced by the source package name, as "
+"determined from the changelog. The default value for the regex is: "
+"\\'B<PACKAGE(-.+)?>', thus matching directory names such as B<PACKAGE> and "
+"B<PACKAGE->I<version>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:145
+msgid ""
+"The default changelog to be edited is I<debian/changelog>; however, this can "
+"be changed using the B<--changelog> or B<--news> options or the B<CHANGELOG> "
+"environment variable, as described below."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:146
+#, no-wrap
+msgid "B<--append>, B<-a>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:149
+msgid "Add a new changelog entry at the end of the current version's entries."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:149
+#, no-wrap
+msgid "B<--increment>, B<-i>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:162
+msgid ""
+"Increment either the final component of the Debian release number or, if "
+"this is a native Debian package, the version number. On Ubuntu or Tanglu, "
+"this will also change the suffix from buildX to ubuntu1/tanglu1. Use B<-R>, "
+"B<--rebuild> for a no change rebuild increment. This creates a new section "
+"at the beginning of the changelog with appropriate headers and footers. "
+"Also, if this is a new version of a native Debian package, the directory "
+"name is changed to reflect this. If B<DEBCHANGE_RELEASE_HEURISTIC> is "
+"I<changelog> (default) and the current release is I<UNRELEASED>, this will "
+"only change the version of the current changelog stanza. Otherwise, this "
+"will create a new changelog stanza with the new version."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:162
+#, no-wrap
+msgid "B<--newversion >I<version>, B<-v >I<version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:172
+msgid ""
+"This specifies the version number (including the Debian release part) "
+"explicitly and behaves as the B<--increment> option in other respects. It "
+"will also change the directory name if the upstream version number has "
+"changed. If B<DEBCHANGE_RELEASE_HEURISTIC> is I<changelog> (default) and "
+"the current release is I<UNRELEASED>, this will only change the version of "
+"the current changelog stanza. Otherwise, this will create a new changelog "
+"stanza with the new version."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:172
+#, no-wrap
+msgid "B<--edit>, B<-e>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:175
+msgid "Edit the changelog in an editor."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:175
+#, no-wrap
+msgid "B<--release>, B<-r>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:183
+msgid ""
+"Finalize the changelog for a release. Update the changelog timestamp. If "
+"the distribution is set to B<UNRELEASED>, change it to the distribution from "
+"the previous changelog entry (or another distribution as specified by "
+"B<--distribution>). If there are no previous changelog entries and an "
+"explicit distribution has not been specified, B<unstable> will be used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:183
+#, no-wrap
+msgid "B<--force-save-on-release>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:188
+msgid ""
+"When B<--release> is used, an editor is opened to allow inspection of the "
+"changelog. The user is required to save the file to accept the modified "
+"changelog, otherwise the original will be kept (default)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:188
+#, no-wrap
+msgid "B<--no-force-save-on-release>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:194
+msgid ""
+"Do not do so. Note that a dummy changelog entry may be supplied in order to "
+"achieve the same effect - e.g. B<debchange --release \"\">. The entry will "
+"not be added to the changelog but its presence will suppress the editor."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:206
+msgid ""
+"This will create a new I<debian/changelog> file (or I<NEWS> if the B<--news> "
+"option is used). You must be in the top-level directory to use this; no "
+"directory name checking will be performed. The package name and version can "
+"either be specified using the B<--package> and B<--newversion> options, "
+"determined from the directory name using the B<--fromdirname> option or "
+"entered manually into the generated I<changelog> file. The maintainer name "
+"is determined from the environment if this is possible, and the distribution "
+"is specified either using the B<--distribution> option or in the generated "
+"I<changelog> file."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:206
+#, no-wrap
+msgid "B<--empty>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:213
+msgid ""
+"When used in combination with B<--create>, suppress the automatic addition "
+"of an \"B<initial release>\" changelog entry (so that the next invocation of "
+"B<debchange> adds the first entry). Note that this will cause a "
+"B<dpkg-parsechangelog> warning on the next invocation due to the lack of "
+"changes."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:213 ../scripts/mk-origtargz.pl:60 ../scripts/uscan.1:431
+#, no-wrap
+msgid "B<--package> I<package>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:218
+msgid ""
+"This specifies the package name to be used in the new changelog; this may "
+"only be used in conjunction with the B<--create>, B<--increment> and "
+"B<--newversion> options."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:218
+#, no-wrap
+msgid "B<--nmu>, B<-n>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:227
+msgid ""
+"Increment the Debian release number for a non-maintainer upload by either "
+"appending a \"B<.1>\" to a non-NMU version number (unless the package is "
+"Debian native, in which case \"B<+nmu1>\" is appended) or by incrementing an "
+"NMU version number, and add an NMU changelog comment. This happens "
+"automatically if the packager is neither in the B<Maintainer> nor the "
+"B<Uploaders> field in I<debian/control>, unless B<DEBCHANGE_AUTO_NMU> is set "
+"to I<no> or the B<--no-auto-nmu> option is used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:227
+#, no-wrap
+msgid "B<--bin-nmu>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:232
+msgid ""
+"Increment the Debian release number for a binary non-maintainer upload by "
+"either appending a \"B<+b1>\" to a non-binNMU version number or by "
+"incrementing a binNMU version number, and add a binNMU changelog comment."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:232
+#, no-wrap
+msgid "B<--qa>, B<-q>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:236
+msgid ""
+"Increment the Debian release number for a Debian QA Team upload, and add a "
+"B<QA upload> changelog comment."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:236
+#, no-wrap
+msgid "B<--rebuild>, B<-R>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:240
+msgid ""
+"Increment the Debian release number for a no-change rebuild by appending a "
+"\"build1\" or by incrementing a rebuild version number."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:240
+#, no-wrap
+msgid "B<--security>, B<-s>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:244
+msgid ""
+"Increment the Debian release number for a Debian Security Team "
+"non-maintainer upload, and add a B<Security Team upload> changelog comment."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:244
+#, no-wrap
+msgid "B<--team>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:248
+msgid ""
+"Increment the Debian release number for a team upload, and add a B<Team "
+"upload> changelog comment."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:248
+#, no-wrap
+msgid "B<--upstream>, B<-U>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:252
+msgid ""
+"Don't append B<distro-name1> to the version on a derived "
+"distribution. Increment the Debian version."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:252
+#, no-wrap
+msgid "B<--bpo>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:256
+msgid ""
+"Increment the Debian release number for an upload to wheezy-backports, and "
+"add a backport upload changelog comment."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:256
+#, no-wrap
+msgid "B<--local>, B<-l>I<suffix>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:259
+#, no-wrap
+msgid " Add a suffix to the Debian version number for a local build.\n"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:259
+#, no-wrap
+msgid "B<--force-bad-version>, B<-b>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:263
+msgid ""
+"Force a version number to be less than the current one (e.g., when "
+"backporting)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:263
+#, no-wrap
+msgid "B<--allow-lower-version >I<pattern>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:267
+msgid ""
+"Allow a version number to be less than the current one if the new version "
+"matches the specified pattern."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:267
+#, no-wrap
+msgid "B<--force-distribution>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:271
+msgid ""
+"Force the provided distribution to be used, even if it doesn't match the "
+"list of known distributions (e.g. for unofficial distributions)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:271
+#, no-wrap
+msgid "B<--auto-nmu>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:275
+msgid ""
+"Attempt to automatically determine whether a change to the changelog "
+"represents a Non Maintainer Upload. This is the default."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:275
+#, no-wrap
+msgid "B<--no-auto-nmu>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:279
+msgid ""
+"Disable automatic NMU detection. Equivalent to setting "
+"B<DEBCHANGE_AUTO_NMU> to I<no>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:279
+#, no-wrap
+msgid "B<--fromdirname>, B<-d>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:289
+msgid ""
+"This will take the upstream version number from the directory name, which "
+"should be of the form I<package>B<->I<version>. If the upstream version "
+"number has increased from the most recent changelog entry, then a new entry "
+"will be made with version number I<version>B<-1> (or I<version> if the "
+"package is Debian native), with the same epoch as the previous package "
+"version. If the upstream version number is the same, this option will "
+"behave in the same way as B<-i>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:289
+#, no-wrap
+msgid "B<--closes>I< nnnnn>[B<,>I<nnnnn >...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:295
+msgid ""
+"Add changelog entries to close the specified bug numbers. Also invoke the "
+"editor after adding these entries. Will generate warnings if the BTS cannot "
+"be contacted (and B<--noquery> has not been specified), or if there are "
+"problems with the bug report located."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:295
+#, no-wrap
+msgid "B<-->[B<no>]B<query>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:298
+msgid "Should we attempt to query the BTS when generating closes entries?"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:298
+#, no-wrap
+msgid "B<--preserve>, B<-p>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:303
+msgid ""
+"Preserve the source tree directory name if the upstream version number (or "
+"the version number of a Debian native package) changes. See also the "
+"configuration variables section below."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:303
+#, no-wrap
+msgid " B<--no-preserve>, B<--nopreserve>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:306
+msgid "Do not preserve the source tree directory name (default)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:306
+#, no-wrap
+msgid "B<--vendor >I<vendor>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:311
+msgid ""
+"Override the distributor ID over the default returned by dpkg-vendor. This "
+"name is used for heuristics applied to new package versions and for sanity "
+"checking of the target distribution."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:311
+#, no-wrap
+msgid "B<--distribution >I<dist>, B<-D >I<dist>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:316
+msgid ""
+"Use the specified distribution in the changelog entry being edited, instead "
+"of using the previous changelog entry's distribution for new entries or the "
+"existing value for existing entries."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:316
+#, no-wrap
+msgid "B<--urgency >I<urgency>, B<-u >I<urgency>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:321
+msgid ""
+"Use the specified urgency in the changelog entry being edited, instead of "
+"using the default \"B<medium>\" for new entries or the existing value for "
+"existing entries."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:321
+#, no-wrap
+msgid "B<--changelog >I<file>, B<-c >I<file>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:327
+msgid ""
+"This will edit the changelog I<file> instead of the standard "
+"I<debian/changelog>. This option overrides any B<CHANGELOG> environment "
+"variable setting. Also, no directory traversing or checking will be "
+"performed when this option is used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:327
+#, no-wrap
+msgid "B<--news> [I<newsfile>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:333
+msgid ""
+"This will edit I<newsfile> (by default, I<debian/NEWS>) instead of the "
+"regular changelog. Directory searching will be performed. The changelog "
+"will be examined in order to determine the current package version."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:333
+#, no-wrap
+msgid "B<-->[B<no>]B<multimaint>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:338
+msgid ""
+"Should we indicate that parts of a changelog entry have been made by "
+"different maintainers? Default is yes; see the discussion above and also the "
+"B<DEBCHANGE_MULTIMAINT> configuration file option below."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:338
+#, no-wrap
+msgid "B<-->[B<no>]B<multimaint-merge>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:343
+msgid ""
+"Should all changes made by the same author be merged into the same changelog "
+"section? Default is no; see the discussion above and also the "
+"B<DEBCHANGE_MULTIMAINT_MERGE> configuration file option below."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:343
+#, no-wrap
+msgid "B<--maintmaint>, B<-m>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:351
+msgid ""
+"Do not modify the maintainer details previously listed in the changelog. "
+"This is useful particularly for sponsors wanting to automatically add a "
+"sponsorship message without disrupting the other changelog details. Note "
+"that there may be some interesting interactions if multi-maintainer mode is "
+"in use; you will probably wish to check the changelog manually before "
+"uploading it in such cases."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:351
+#, no-wrap
+msgid "B<--controlmaint>, B<-M>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:359
+msgid ""
+"Use maintainer details from the I<debian/control> B<Maintainer> field rather "
+"than relevant environment variables (B<DEBFULLNAME>, B<DEBEMAIL>, etc.). "
+"This option might be useful to restore details of the main maintainer in the "
+"changelog trailer after a bogus edit (e.g. when B<-m> was intended but "
+"forgot) or when releasing a package in the name of the main maintainer "
+"(e.g. the team)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:359
+#, no-wrap
+msgid "B<-->[B<no>]B<mainttrailer>, B<-t>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:369
+msgid ""
+"If B<mainttrailer> is set, it will avoid modifying the existing changelog "
+"trailer line (i.e. the maintainer and date-stamp details), unless used with "
+"options that require the trailer to be modified (e.g. B<--create>, "
+"B<--release>, B<-i>, B<--qa>, etc.) This option differs from "
+"B<--maintmaint> in that it will use multi-maintainer mode if appropriate, "
+"with the exception of editing the trailer. See also the "
+"B<DEBCHANGE_MAINTTRAILER> configuration file option below."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:373 ../scripts/debchange.1:377
+msgid ""
+"See the above section \"B<Directory name checking>\" for an explanation of "
+"this option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:381
+#, no-wrap
+msgid "B<--release-heuristic> I<log>|I<changelog>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:386
+msgid ""
+"Controls how B<debchange> determines if a package has been released, when "
+"deciding whether to create a new changelog entry or append to an existing "
+"changelog entry."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:392 ../scripts/debclean.1:90 ../scripts/debrelease.1:105 ../scripts/debsign.1:106 ../scripts/dep3changelog.1:22 ../scripts/dscverify.1:42 ../scripts/nmudiff.1:79 ../scripts/pts-subscribe.1:34 ../scripts/uupdate.1:88 ../scripts/who-uploads.1:50
+msgid "Display version and copyright information and exit successfully."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:398
+#, no-wrap
+msgid "B<DEBCHANGE_PRESERVE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:402
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--preserve> command "
+"line parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:402
+#, no-wrap
+msgid "B<DEBCHANGE_QUERY_BTS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:406
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--noquery> command "
+"line parameter being used."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:413
+msgid ""
+"See the above section \"B<Directory name checking>\" for an explanation of "
+"these variables. Note that these are package-wide configuration variables, "
+"and will therefore affect all B<devscripts> scripts which check their value, "
+"as described in their respective manpages and in B<devscripts.conf>(5)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:413
+#, no-wrap
+msgid "B<DEBCHANGE_RELEASE_HEURISTIC>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:418
+msgid ""
+"Controls how B<debchange> determines if a package has been released, when "
+"deciding whether to create a new changelog entry or append to an existing "
+"changelog entry. Can be either I<log> or I<changelog>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:418
+#, no-wrap
+msgid "B<DEBCHANGE_MULTIMAINT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:423
+msgid ""
+"If set to I<no>, B<debchange> will not introduce multiple-maintainer "
+"distinctions when a different maintainer appends an entry to an existing "
+"changelog. See the discussion above. Default is I<yes>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:423
+#, no-wrap
+msgid "B<DEBCHANGE_MULTIMAINT_MERGE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:429
+msgid ""
+"If set to I<yes>, when adding changes in multiple-maintainer mode "
+"B<debchange> will check whether previous changes by the current maintainer "
+"exist and add the new changes to the existing block rather than creating a "
+"new block. Default is I<no>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:429
+#, no-wrap
+msgid "B<DEBCHANGE_MAINTTRAILER>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:433
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--nomainttrailer> "
+"command line parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:433
+#, no-wrap
+msgid "B<DEBCHANGE_TZ>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:437
+msgid ""
+"Use this timezone for changelog entries. Default is the user/system "
+"timezone as shown by `B<date -R>` and affected by the environment variable "
+"B<TZ>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:437
+#, no-wrap
+msgid "B<DEBCHANGE_LOWER_VERSION_PATTERN>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:441
+msgid ""
+"If this is set, then it is the same as the B<--allow-lower-version> command "
+"line parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:441
+#, no-wrap
+msgid "B<DEBCHANGE_AUTO_NMU>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:447
+msgid ""
+"If this is set to I<no> then B<debchange> will not attempt to automatically "
+"determine whether the current changelog stanza represents an NMU. The "
+"default is I<yes>. See the discussion of the B<--nmu> option above."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:447
+#, no-wrap
+msgid "B<DEBCHANGE_FORCE_SAVE_ON_RELEASE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:451
+msgid ""
+"If this is set to I<no>, then it is the same as the "
+"B<--no-force-save-on-release> command line parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:451
+#, no-wrap
+msgid "B<DEBCHANGE_VENDOR>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:455
+msgid ""
+"Use this vendor instead of the default (dpkg-vendor output). See "
+"B<--vendor> for details."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/debchange.1:455 ../scripts/dep3changelog.1:22 ../scripts/devscripts.1:16 ../scripts/devscripts.1:20 ../scripts/mass-bug.pl:127
+#, no-wrap
+msgid "ENVIRONMENT"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:456 ../scripts/dep3changelog.1:23
+#, no-wrap
+msgid "B<DEBEMAIL>, B<EMAIL>, B<DEBFULLNAME>, B<NAME>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:459 ../scripts/dep3changelog.1:26
+msgid "See the above description of the use of these environment variables."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:459
+#, no-wrap
+msgid "B<CHANGELOG>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:465
+msgid ""
+"This variable specifies the changelog to edit in place of "
+"I<debian/changelog>. No directory traversal or checking is performed when "
+"this variable is set. This variable is overridden by the B<--changelog> "
+"command-line setting."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debchange.1:465
+#, no-wrap
+msgid "B<VISUAL>, B<EDITOR>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:469
+msgid ""
+"These environment variables (in this order) determine the editor used by "
+"B<sensible-editor>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:475
+msgid "B<debc>(1), B<debclean>(1), B<dput>(1), B<dupload>(1), B<devscripts.conf>(5)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debchange.1:478
+msgid ""
+"The original author was Christoph Lameter E<lt>clameter@debian.orgE<gt>. "
+"Many substantial changes and improvements were made by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:26
+msgid "debcheckout - checkout the development repository of a Debian package"
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:32
+msgid "B<debcheckout> [I<OPTIONS>] I<PACKAGE> [I<DESTDIR>]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:34
+msgid "B<debcheckout> [I<OPTIONS>] I<REPOSITORY_URL> [I<DESTDIR>]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:36
+msgid "B<debcheckout> B<--help>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:42
+msgid ""
+"B<debcheckout> retrieves the information about the Version Control System "
+"used to maintain a given Debian package (the I<PACKAGE> argument), and then "
+"checks out the latest (potentially unreleased) version of the package from "
+"its repository. By default the repository is checked out to the I<PACKAGE> "
+"directory; this can be overridden by providing the I<DESTDIR> argument."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:48
+msgid ""
+"The information about where the repository is available is expected to be "
+"found in B<Vcs-*> fields available in the source package record. For "
+"example, the B<vim> package exposes such information with a field like "
+"S<B<Vcs-Hg: http://hg.debian.org/hg/pkg-vim/vim>>, you can see it by "
+"grepping through B<apt-cache showsrc vim>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:54
+msgid ""
+"If more than one source package record containing B<Vcs-*> fields is "
+"available, B<debcheckout> will select the record with the highest version "
+"number. Alternatively, a particular version may be selected from those "
+"available by specifying the package name as I<PACKAGE>=I<VERSION>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:59
+msgid ""
+"If you already know the URL of a given repository you can invoke "
+"B<debcheckout> directly on it, but you will probably need to pass the "
+"appropriate B<-t> flag. That is, some heuristics are in use to guess the "
+"repository type from the URL; if they fail, you might want to override the "
+"guessed type using B<-t>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:65
+msgid ""
+"The currently supported version control systems are: Arch (arch), Bazaar "
+"(bzr), CVS (cvs), Darcs (darcs), Git (git), Mercurial (hg) and Subversion "
+"(svn)."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:70
+msgid "B<GENERAL OPTIONS>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:74
+msgid "B<-a>, B<--auth>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:76
+msgid ""
+"Work in authenticated mode; this means that for known repositories (mainly "
+"those hosted on S<I<https://alioth.debian.org>>) URL rewriting is attempted "
+"before checking out, to ensure that the repository can be committed to. For "
+"example, for Subversion repositories hosted on alioth this means that "
+"S<I<svn+ssh://svn.debian.org/...>> will be used instead of "
+"S<I<svn://svn.debian.org/...>>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:83
+msgid "B<-d>, B<--details>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:85
+msgid ""
+"Only print a list of detailed information about the package repository, "
+"without checking it out; the output format is a list of fields, each field "
+"being a pair of TAB-separated field name and field value. The actual fields "
+"depend on the repository type. This action might require a network "
+"connection to the remote repository."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:91
+msgid "Also see B<-p>. This option and B<-p> are mutually exclusive."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:95
+msgid "Print a detailed help message and exit."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:97
+msgid "B<-p>, B<--print>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:99
+msgid ""
+"Only print a summary about package repository information, without checking "
+"it out; the output format is TAB-separated with two fields: repository type, "
+"repository URL. This action works offline, it only uses \"static\" "
+"information as known by APT's cache."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:104
+msgid "Also see B<-d>. This option and B<-d> are mutually exclusive."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:106
+msgid "B<-P> I<package>, B<--package> I<package>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:108
+msgid ""
+"When checking out a repository URL, instead of trying to guess the package "
+"name from the URL, use this package name."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:111
+msgid "B<-t> I<TYPE>, B<--type> I<TYPE>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:113
+msgid ""
+"Override the repository type (which defaults to some heuristics based on the "
+"URL or, in case of heuristic failure, the fallback \"svn\"); should be one "
+"of the currently supported repository types."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:117
+msgid "B<-u> I<USERNAME>, B<--user> I<USERNAME>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:119
+msgid ""
+"Specify the login name to be used in authenticated mode (see B<-a>). This "
+"option implies B<-a>: you don't need to specify both."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:122
+msgid "B<-f>, B<--file>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:124
+msgid ""
+"Specify that the named file should be extracted from the repository and "
+"placed in the destination directory. May be used more than once to extract "
+"multiple files."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:128
+msgid "B<--source=never>|B<auto>|B<download-only>|B<always>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:130
+msgid ""
+"Some packages only place the F<debian> directory in version control. "
+"B<debcheckout> can retrieve the remaining parts of the source using "
+"B<apt-get source> and move the files into the checkout."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:136
+msgid "B<never>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:138
+msgid "Only use the repository."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:140
+msgid "B<auto> (default)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:142
+msgid ""
+"If the repository only contains the F<debian> directory, retrieve the source "
+"package, unpack it, and also place the F<.orig.tar.gz> file into the current "
+"directory. Else, do nothing."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:146
+msgid "B<download-only>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:148
+msgid "Always retrieve the I<.orig.tar.gz> file, but do not unpack it."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:150
+msgid "B<always>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:152
+msgid ""
+"Always retrieve the I<.orig.tar.gz> file, and if the repository only "
+"contains the F<debian> directory, unpack it."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:159
+msgid "B<VCS-SPECIFIC OPTIONS>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:161
+msgid "I<GIT-SPECIFIC OPTIONS>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:165
+msgid "B<--git-track> I<BRANCHES>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:167
+msgid ""
+"Specify a list of remote branches which will be set up for tracking (as in "
+"S<B<git branch --track>>, see B<git-branch>(1)) after the remote Git "
+"repository has been cloned. The list should be given as a space-separated "
+"list of branch names."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:172
+msgid ""
+"As a shorthand, the string \"B<*>\" can be given to require tracking of all "
+"remote branches."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:179 ../scripts/rmadison.pl:295
+msgid ""
+"The two configuration files F</etc/devscripts.conf> and F<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file "
+"settings. Environment variable settings are ignored for this purpose. The "
+"currently recognised variables are:"
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:187
+msgid "B<DEBCHECKOUT_AUTH_URLS>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:189
+msgid ""
+"This variable should be a space separated list of Perl regular expressions "
+"and replacement texts, which must come in pairs: I<REGEXP> I<TEXT> I<REGEXP> "
+"I<TEXT> ... and so on. Each pair denotes a substitution which is applied to "
+"repository URLs if other built-in means of building URLs for authenticated "
+"mode (see B<-a>) have failed."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:195
+msgid ""
+"References to matching substrings in the replacement texts are allowed as "
+"usual in Perl by the means of B<$1>, B<$2>, ... and so on."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:198
+msgid ""
+"This setting can be used to enable authenticated mode for most repositories "
+"out there. Note that the Debian repositories on S<alioth.debian.org> "
+"(S<$vcs.debian.org>) are implicitly defined."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:202
+msgid "Here is a sample snippet suitable for the configuration files:"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/debcheckout.pl:204
+#, no-wrap
+msgid ""
+" DEBCHECKOUT_AUTH_URLS='\n"
+" ^\\w+://(svn\\.example\\.com)/(.*) svn+ssh://$1/srv/svn/$2\n"
+" ^\\w+://(git\\.example\\.com)/(.*) git+ssh://$1/home/git/$2\n"
+" '\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:209
+msgid ""
+"Note that whitespace is not allowed in either regexps or replacement "
+"texts. Also, given that configuration files are sourced by a shell, you "
+"probably want to use single quotes around the value of this variable."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:214
+msgid "B<DEBCHECKOUT_SOURCE>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:216
+msgid ""
+"This variable determines under what scenarios the associated orig.tar.gz for "
+"a package will be downloaded. See the B<--source> option for a description "
+"of the values."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcheckout.pl:220
+msgid "B<DEBCHECKOUT_USER>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:222
+msgid ""
+"This variable sets the username for authenticated mode. It can be overridden "
+"with the B<--user> option. Setting this variable does not imply the use of "
+"authenticated mode, it still has to be activated with B<--auth>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:230
+msgid ""
+"B<apt-cache>(8), Section 6.2.5 of the Debian Developer's Reference (for more "
+"information about B<Vcs-*> fields): "
+"S<I<https://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-vcs>>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:235
+msgid ""
+"B<debcheckout> and this manpage have been written by Stefano Zacchiroli "
+"<I<zack@debian.org>>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/debclean.1:1
+#, no-wrap
+msgid "DEBCLEAN"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:4
+msgid "debclean - clean up a sourcecode tree"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:6
+msgid "B<debclean> [I<options>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:13
+msgid ""
+"B<debclean> walks through the directory tree starting at the directory tree "
+"in which it was invoked, and executes I<debian/rules clean> for each Debian "
+"source directory encountered. These directories are recognised by "
+"containing a debian/changelog file for a package whose name matches that of "
+"the directory. Name matching is described below."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:22
+msgid ""
+"Also, if the B<--cleandebs> option is given, then in every directory "
+"containing a Debian source tree, all files named *.deb, *.changes and "
+"*.build are removed. The .dsc, .diff.gz and the (.orig).tar.gz files are "
+"not touched so that the release can be reconstructed if necessary, and the "
+".upload files are left so that B<debchange> functions correctly. The "
+"B<--nocleandebs> option prevents this extra cleaning behaviour and the "
+"B<--cleandebs> option forces it. The default is not to clean these files."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:24
+msgid "B<debclean> uses B<debuild>(1) to clean the source tree."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:35
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debclean> will walk through the directory tree searching for "
+"I<debian/changelog> files. As a safeguard against stray files causing "
+"potential problems, it will examine the name of the parent directory once it "
+"finds a I<debian/changelog> file, and check that the directory name "
+"corresponds to the package name. Precisely how it does this is controlled "
+"by two configuration file variables B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and their corresponding command-line "
+"options B<--check-dirname-level> and B<--check-dirname-regex>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debclean.1:61
+#, no-wrap
+msgid "B<--cleandebs>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:65
+msgid "Also remove all .deb, .changes and .build files from the parent directory."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debclean.1:65
+#, no-wrap
+msgid "B<--nocleandebs>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:69
+msgid ""
+"Do not remove the .deb, .changes and .build files from the parent directory; "
+"this is the default behaviour."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debclean.1:81 ../scripts/debuild.1:284
+#, no-wrap
+msgid "B<-d>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:84
+msgid "Do not run dpkg-checkbuilddeps to check build dependencies."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debclean.1:96
+#, no-wrap
+msgid "B<DEBCLEAN_CLEANDEBS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:100
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--cleandebs> command "
+"line parameter being used."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:110
+msgid "B<debuild>(1), B<devscripts.conf>(5)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debclean.1:112
+msgid ""
+"Christoph Lameter E<lt>clameter@debian.orgE<gt>; modifications by Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:5
+msgid "debcommit - commit changes to a package"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:9
+msgid "B<debcommit> [I<options>] [B<--all> | I<files to commit>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:13
+msgid ""
+"B<debcommit> generates a commit message based on new text in "
+"B<debian/changelog>, and commits the change to a package's repository. It "
+"must be run in a working copy for the package. Supported version control "
+"systems are: B<cvs>, B<git>, B<hg> (mercurial), B<svk>, B<svn> (Subversion), "
+"B<baz>, B<bzr>, B<tla> (arch), B<darcs>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:23
+msgid "B<-c>, B<--changelog> I<path>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:25
+msgid ""
+"Specify an alternate location for the changelog. By default debian/changelog "
+"is used."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:28
+msgid "B<-r>, B<--release>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:30
+msgid ""
+"Commit a release of the package. The version number is determined from "
+"debian/changelog, and is used to tag the package in the repository."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:33
+msgid ""
+"Note that svn/svk tagging conventions vary, so debcommit uses svnpath(1) to "
+"determine where the tag should be placed in the repository."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:37
+msgid "B<-R>, B<--release-use-changelog>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:39
+msgid ""
+"When used in conjunction with B<--release>, if there are uncommited changes "
+"to the changelog then derive the commit message from those changes rather "
+"than using the default message."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:43
+msgid "B<-m> I<text>, B<--message> I<text>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:45
+msgid ""
+"Specify a commit message to use. Useful if the program cannot determine a "
+"commit message on its own based on debian/changelog, or if you want to "
+"override the default message."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:49 ../scripts/tagpending.pl:97
+msgid "B<-n>, B<--noact>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:51
+msgid "Do not actually do anything, but do print the commands that would be run."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:53
+msgid "B<-d>, B<--diff>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:55
+msgid ""
+"Instead of committing, do print the diff of what would have been committed "
+"if this option were not given. A typical usage scenario of this option is "
+"the generation of patches against the current working copy (e.g. when you "
+"don't have commit access right)."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:60
+msgid "B<-C>, B<--confirm>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:62
+msgid ""
+"Display the generated commit message and ask for confirmation before "
+"committing it. It is also possible to edit the message at this stage; in "
+"this case, the confirmation prompt will be re-displayed after the editing "
+"has been performed."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:66
+msgid "B<-e>, B<--edit>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:68
+msgid ""
+"Edit the generated commit message in your favorite editor before committing "
+"it."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debcommit.pl:71 ../scripts/dget.pl:567 ../scripts/dpkg-depcheck.1:16
+#, no-wrap
+msgid "B<-a>, B<--all>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:73
+msgid ""
+"Commit all files. This is the default operation when using a VCS other than "
+"git."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:76
+msgid "B<-s>, B<--strip-message>, B<--no-strip-message>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:78
+msgid ""
+"If this option is set and the commit message has been derived from the "
+"changelog, the characters \"* \" will be stripped from the beginning of the "
+"message."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:82
+msgid ""
+"This option is set by default and ignored if more than one line of the "
+"message begins with \"[*+-] \"."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:85
+msgid "B<--sign-commit>, B<--no-sign-commit>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:87
+msgid ""
+"If this option is set, then the commits that debcommit creates will be "
+"signed using gnupg. Currently this is only supported by git, hg, and bzr."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:90
+msgid "B<--sign-tags>, B<--no-sign-tags>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:92
+msgid ""
+"If this option is set, then tags that debcommit creates will be signed using "
+"gnupg. Currently this is only supported by git."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:95
+msgid "B<--changelog-info>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:97
+msgid ""
+"If this option is set, the commit author and date will be determined from "
+"the Maintainer and Date field of the first paragraph in "
+"F<debian/changelog>. This is mainly useful when using B<debchange>(1) with "
+"the B<--no-mainttrailer> option."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:114
+msgid "B<DEBCOMMIT_STRIP_MESSAGE>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:116
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-strip-message> "
+"command line parameter being used. The default is I<yes>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:119
+msgid "B<DEBCOMMIT_SIGN_TAGS>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:121
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--sign-tags> command "
+"line parameter being used. The default is I<no>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:124
+msgid "B<DEBCOMMIT_SIGN_COMMITS>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:126
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--sign-commit> "
+"command line parameter being used. The default is I<no>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:129
+msgid "B<DEBCOMMIT_RELEASE_USE_CHANGELOG>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:131
+msgid ""
+"If this is set to I<yes>, then it is the same as the "
+"B<--release-use-changelog> command line parameter being used. The default is "
+"I<no>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debcommit.pl:134 ../scripts/debsign.1:118
+#, no-wrap
+msgid "B<DEBSIGN_KEYID>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:136
+msgid ""
+"This is the key id used for signing tags. If not set, a default will be "
+"chosen by the revision control system."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/debcommit.pl:141
+msgid "VCS SPECIFIC FEATURES"
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:145
+msgid "B<tla> / B<baz>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:147
+msgid ""
+"If the commit message contains more than 72 characters, a summary will be "
+"created containing as many full words from the message as will fit within 72 "
+"characters, followed by an ellipsis."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:153
+msgid ""
+"Each of the features described below is applicable only if the commit "
+"message has been automatically determined from the changelog."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:158
+msgid "B<git>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:160
+msgid ""
+"If only a single change is detected in the changelog, B<debcommit> will "
+"unfold it to a single line and behave as if B<--strip-message> was used."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:163
+msgid ""
+"Otherwise, the first change will be unfolded and stripped to form a summary "
+"line and a commit message formed using the summary line followed by a blank "
+"line and the changes as extracted from the changelog. B<debcommit> will then "
+"spawn an editor so that the message may be fine-tuned before committing."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:168
+msgid "B<hg> / B<darcs>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:170
+msgid ""
+"The first change detected in the changelog will be unfolded to form a single "
+"line summary. If multiple changes were detected then an editor will be "
+"spawned to allow the message to be fine-tuned."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debcommit.pl:174
+msgid "B<bzr>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:176
+msgid ""
+"If the changelog entry used for the commit message closes any bugs then "
+"B<--fixes> options to \"bzr commit\" will be generated to associate the "
+"revision and the bugs."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:903
+msgid ""
+"This code is copyright by Joey Hess <joeyh@debian.org>, all rights "
+"reserved. This program comes with ABSOLUTELY NO WARRANTY. You are free to "
+"redistribute this code under the terms of the GNU General Public License, "
+"version 2 or later."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:910 ../scripts/mass-bug.pl:524
+msgid "Joey Hess <joeyh@debian.org>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/debcommit.pl:914
+msgid "B<debchange>(1), B<svnpath>(1)"
+msgstr ""
+
+#. type: TH
+#: ../scripts/debdiff.1:1
+#, no-wrap
+msgid "DEBDIFF"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:4
+msgid "debdiff - compare file lists in two Debian packages"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:6
+msgid "B<debdiff> [I<options>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:8
+msgid "B<debdiff> [I<options>] ... I<deb1 deb2>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:10
+msgid "B<debdiff> [I<options>] ... I<changes1 changes2>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:13
+msgid ""
+"B<debdiff> [I<options>] ... B<--from >I<deb1a deb1b ... >B<--to >I<deb2a "
+"deb2b ...>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:15
+msgid "B<debdiff> [I<options>] ... I<dsc1 dsc2>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:26
+msgid ""
+"B<debdiff> takes the names of two Debian package files (I<.deb>s or "
+"I<.udeb>s) on the command line and compares their contents (considering only "
+"the files in the main package, not the maintenance scripts). It shows which "
+"files have been introduced and which removed between the two package files, "
+"and is therefore useful for spotting files which may have been inadvertently "
+"lost between revisions of the package. It also checks the file owners and "
+"permissions, and compares the control files of the two packages using the "
+"B<wdiff> program. If you want a deeper comparison of two Debian package "
+"files you can use the B<debbindiff> tool."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:29
+msgid ""
+"If no arguments are given, B<debdiff> tries to compare the content of the "
+"current source directory with the last version of the package."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:40
+msgid ""
+"B<debdiff> can also handle changes between groups of I<.deb> files in two "
+"ways. The first is to specify two I<.changes> files. In this case, the "
+"I<.deb> files listed in the I<.changes> file will be compared, by taking the "
+"contents of all of the listed I<.deb> files together. (The I<.deb> files "
+"listed are assumed to be in the same directory as the I<.changes> file.) "
+"The second way is to list the I<.deb> files of interest specifically using "
+"the B<--from> ... B<--to> syntax. These both help if a package is broken up "
+"into smaller packages and one wishes to ensure that nothing is lost in the "
+"interim."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:44
+msgid ""
+"B<debdiff> examines the B<devscripts> configuration files as described "
+"below. Command line options override the configuration file settings, "
+"though."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:52
+msgid ""
+"If B<debdiff> is passed two source packages (I<.dsc> files) it will compare "
+"the contents of the source packages. If the source packages differ only in "
+"Debian revision number (that is, the I<.orig.tar.gz> files are the same in "
+"the two I<.dsc> files), then B<interdiff>(1) will be used to compare the two "
+"patch files if this program is available on the system, otherwise a B<diff> "
+"will be performed between the two source trees."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:53
+#, no-wrap
+msgid "B<--dirs>, B<-d>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:58
+msgid ""
+"The default mode of operation is to ignore directory names which appear in "
+"the file list, but they, too, will be considered if this option is given."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:58
+#, no-wrap
+msgid "B<--nodirs>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:62
+msgid ""
+"Ignore directory names which appear in the file list. This is the default "
+"and it can be used to override a configuration file setting."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:62
+#, no-wrap
+msgid "B<--move>I< FROM TO>,B< -m>I< FROM TO>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:72
+msgid ""
+"It sometimes occurs that various files or directories are moved around "
+"between revisions. This can be handled using this option. There are two "
+"arguments, the first giving the location of the directory or file in the "
+"first package, and the second in the second. Any files in the first listing "
+"whose names begin with the first argument are treated as having that "
+"substituted for the second argument when the file lists are compared. Any "
+"number of B<--move> arguments may be given; they are processed in the order "
+"in which they appear."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:72
+#, no-wrap
+msgid "B<--move-regex>I< FROM TO>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:78
+msgid ""
+"This is the same as B<--move>, except that I<FROM> is treated as a regular "
+"expression and the B<perl> substitution command I<s/^FROM/TO/> is applied to "
+"the files. In particular, TO can make use of backreferences such as $1."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:78
+#, no-wrap
+msgid "B<--nocontrol>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:83
+msgid ""
+"B<debdiff> will usually compare the respective control files of the packages "
+"using B<wdiff>(1). This option suppresses this part of the processing."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:83
+#, no-wrap
+msgid "B<--control>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:87
+msgid ""
+"Compare the respective control files; this is the default, and it can be "
+"used to override a configuration file setting."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:87
+#, no-wrap
+msgid "B<--controlfiles>I< FILE>[B<,>I<FILE> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:95
+msgid ""
+"Specify which control files to compare; by default this is just I<control>, "
+"but could include I<postinst>, I<config> and so on. Files will only be "
+"compared if they are present in both I<.debs> being compared. The special "
+"value I<ALL> compares all control files present in both packages, except for "
+"md5sums. This option can be used to override a configuration file setting."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:95
+#, no-wrap
+msgid "B<--wdiff-source-control>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:99
+msgid ""
+"When processing source packages, compare control files using B<wdiff>. "
+"Equivalent to the B<--control> option for binary packages."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:99
+#, no-wrap
+msgid "B<--no-wdiff-source-control>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:103
+msgid ""
+"Do not compare control files in source packages using B<wdfiff>. This is "
+"the default."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:103
+#, no-wrap
+msgid "B<--wp>, B<--wl>, B<--wt>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:108
+msgid ""
+"Pass a B<-p>, B<-l> or B<-t> option to B<wdiff> respectively. (This yields "
+"the whole B<wdiff> output rather than just the lines with any changes.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:108
+#, no-wrap
+msgid "B<--show-moved>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:115
+msgid ""
+"If multiple I<.deb> files are specified on the command line, either using "
+"I<.changes> files or the B<--from>/B<--to> syntax, then this option will "
+"also show which files (if any) have moved between packages. (The package "
+"names are simply determined from the names of the I<.deb> files.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:115
+#, no-wrap
+msgid "B<--noshow-moved>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:119 ../scripts/debdiff.1:136
+msgid "The default behaviour; can be used to override a configuration file setting."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:119
+#, no-wrap
+msgid "B<--renamed>I< FROM TO>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:125
+msgid ""
+"If B<--show-moved> is being used and a package has been renamed in the "
+"process, this command instructs B<debdiff> to treat the package in the first "
+"list called I<FROM> as if it were called I<TO>. Multiple uses of this "
+"option are permitted."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:125
+#, no-wrap
+msgid "B<--exclude>I< PATTERN>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:129
+msgid ""
+"Exclude files that match I<PATTERN>. Multiple uses of this option are "
+"permitted."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:129
+#, no-wrap
+msgid "B<--diffstat>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:132
+msgid "Include the result of B<diffstat> before the generated diff."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:132
+#, no-wrap
+msgid "B<--no-diffstat>"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:136
+#, no-wrap
+msgid "B<--auto-ver-sort>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:139
+msgid "When comparing source packages, do so in version order."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:139
+#, no-wrap
+msgid "B<--no-auto-ver-sort>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:145
+msgid ""
+"Compare source packages in the order they were passed on the command-line, "
+"even if that means comparing a package with a higher version against one "
+"with a lower version. This is the default behaviour."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:145
+#, no-wrap
+msgid "B<--unpack-tarballs>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:150
+msgid ""
+"When comparing source packages, also unpack tarballs found in the top level "
+"source directory to compare their contents along with the other files. This "
+"is the default behaviour."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:150
+#, no-wrap
+msgid "B<--no-unpack-tarballs>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:153
+msgid "Do not unpack tarballs inside source packages."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:163
+#, no-wrap
+msgid "B<--quiet>, B<-q>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:166
+msgid "Be quiet if no differences were found."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:166
+#, no-wrap
+msgid "B<--ignore-space>, B<-w>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:169
+msgid "Ignore whitespace in diffs."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:175
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file settings. "
+"Environment variable settings are ignored for this purpose. The currently "
+"recognised variables are:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:175
+#, no-wrap
+msgid "B<DEBDIFF_DIRS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:179
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--dirs> command line "
+"parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:179
+#, no-wrap
+msgid "B<DEBDIFF_CONTROL>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:184
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--nocontrol> command "
+"line parameter being used. The default is I<yes>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:184
+#, no-wrap
+msgid "B<DEBDIFF_CONTROLFILES>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:189
+msgid ""
+"Which control files to compare, corresponding to the B<--controlfiles> "
+"command line option. The default is I<control>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:189
+#, no-wrap
+msgid "B<DEBDIFF_SHOW_MOVED>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:193
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--show-moved> command "
+"line parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:193
+#, no-wrap
+msgid "B<DEBDIFF_WDIFF_OPT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:197
+msgid ""
+"This option will be passed to B<wdiff>; it should be one of B<-p>, B<-l> or "
+"B<-t>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:197
+#, no-wrap
+msgid "B<DEBDIFF_SHOW_DIFFSTAT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:201
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--diffstat> command "
+"line parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:201
+#, no-wrap
+msgid "B<DEBDIFF_WDIFF_SOURCE_CONTROL>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:205
+msgid ""
+"If this is set to I<yes>, then it is the same as the "
+"B<--wdiff-source-control> command line parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:205
+#, no-wrap
+msgid "B<DEBDIFF_AUTO_VER_SORT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:209
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--auto-ver-sort> "
+"command line parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debdiff.1:209
+#, no-wrap
+msgid "B<DEBDIFF_UNPACK_TARBALLS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:213
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-unpack-tarballs> "
+"command line parameter being used."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:217
+msgid ""
+"Normally the exit value will be 0 if no differences are reported and 1 if "
+"any are reported. If there is some fatal error, the exit code will be 255."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:224
+msgid ""
+"B<diffstat>(1), B<dpkg-deb>(1), B<interdiff>(1), B<wdiff>(1), "
+"B<devscripts.conf>(5), B<debbindiff>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debdiff.1:229
+msgid ""
+"B<debdiff> was originally written as a shell script by Yann Dirson "
+"E<lt>dirson@debian.orgE<gt> and rewritten in Perl with many more features by "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>. The software may be freely "
+"redistributed under the terms and conditions of the GNU General Public "
+"License, version 2."
+msgstr ""
+
+#. type: TH
+#: ../scripts/debi.1:1
+#, no-wrap
+msgid "DEBI"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:4
+msgid "debi - install current version of generated Debian package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:6
+msgid "B<debi> [I<options>] [I<changes file>] [I<package> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:21
+msgid ""
+"B<debi> figures out the current version of a package and installs it. If a "
+"I<.changes> file is specified on the command line, the filename must end "
+"with I<.changes>, as this is how the program distinguishes it from package "
+"names. If not, then B<debi> has to be called from within the source code "
+"directory tree. In this case, it will look for the I<.changes> file "
+"corresponding to the current package version (by determining the name and "
+"version number from the changelog, and the architecture in the same way as "
+"B<dpkg-buildpackage>(1) does). It then runs B<debpkg -i> on every I<.deb> "
+"archive listed in the I<.changes> file to install them, assuming that all of "
+"the I<.deb> archives live in the same directory as the I<.changes> file. "
+"Note that you probably don't want to run this program on a I<.changes> file "
+"relating to a different architecture after cross-compiling the package!"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:40
+msgid ""
+"In common with several other scripts in the B<devscripts> package, B<debi> "
+"will climb the directory tree until it finds a I<debian/changelog> file. As "
+"a safeguard against stray files causing potential problems, it will examine "
+"the name of the parent directory once it finds the I<debian/changelog> file, "
+"and check that the directory name corresponds to the package name. "
+"Precisely how it does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and "
+"B<--check-dirname-regex>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:78 ../scripts/debrelease.1:87
+msgid ""
+"Look for the I<.changes> and I<.deb> files in I<directory> instead of the "
+"parent of the source directory. This should either be an absolute path or "
+"relative to the top of the source directory."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debi.1:78
+#, no-wrap
+msgid "B<-m>, B<--multi>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:81
+msgid "Search for a multiarch I<.changes> file, as created by B<dpkg-cross>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debi.1:81
+#, no-wrap
+msgid "B<-u>, B<--upgrade>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:87
+msgid ""
+"Only upgrade packages already installed on the system, rather than "
+"installing all packages listed in the I<.changes> file. Useful for "
+"multi-binary packages when you don't want to have all the binaries installed "
+"at once."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debi.1:95
+#, no-wrap
+msgid "B<--with-depends>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:98
+msgid "Attempt to satisfy the I<Depends> of a package when installing it."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debi.1:98
+#, no-wrap
+msgid "B<--tool> I<tool>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:102
+msgid ""
+"Use the specified I<tool> for installing the dependencies of the package(s) "
+"to be installed. By default, B<apt-get> is used."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:125
+msgid ""
+"This specifies the directory in which to look for the I<.changes> and "
+"I<.deb> files, and is either an absolute path or relative to the top of the "
+"source tree. This corresponds to the B<--debs-dir> command line option. "
+"This directive could be used, for example, if you always use B<pbuilder> or "
+"B<svn-buildpackage> to build your packages. Note that it also affects "
+"B<debrelease>(1) in the same way, hence the strange name of the option."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:135
+msgid "B<debpkg>(1), B<devscripts.conf>(5)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debi.1:140
+msgid ""
+"B<debi> was originally written by Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. The now-defunct script B<debit> was "
+"originally written by James R. Van Zandt E<lt>jrv@vanzandt.mv.comE<gt>. "
+"They have been moulded into one script together with B<debc>(1) and parts "
+"extensively modified by Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/debpkg.1:1
+#, no-wrap
+msgid "DEBPKG"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debpkg.1:4
+msgid "debpkg - wrapper for dpkg"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debpkg.1:6
+msgid "B<debpkg> I<dpkg-options>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debpkg.1:12
+msgid ""
+"B<debpkg> simply invokes B<dpkg>(1) but first becomes superuser so that "
+"B<dpkg> is able to install and remove packages. It also cleans the "
+"environment and resets PATH to a sane default: "
+"\"/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11\" so that local versions of "
+"programs are not run by accident."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debpkg.1:17
+msgid ""
+"B<debpkg> must be given superuser privileges in some way to function "
+"properly. B<Access to debpkg with those privileges is the same as having "
+"superuser access to your machine.> B<debpkg> will abort if it finds that it "
+"neither being run by root nor setuid root."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debpkg.1:23
+msgid ""
+"The B<devscripts> package has been designed to allow B<debpkg> to be made "
+"setuid root. This works by using a compiled wrapper script, which means "
+"that B<suidperl> is not required. See B<dpkg-statoverride>(8) if you wish "
+"to make this program setuid root. B<sudo> or B<super> could also "
+"conceivably be used."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debpkg.1:25
+msgid ""
+"Christoph Lameter E<lt>clameter@debian.orgE<gt>; minor modifications made by "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/debrelease.1:1
+#, no-wrap
+msgid "DEBRELEASE"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:4
+msgid "debrelease - a wrapper around dupload or dput"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:6
+msgid "B<debrelease> [I<debrelease options>] [I<dupload/dput options>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:15
+msgid ""
+"B<debrelease> is a simple wrapper around B<dupload> or B<dput>. It is "
+"called from within the source code tree of a package, and figures out the "
+"current version of a package. It then looks for the corresponding "
+"I<.changes> file (which lists the files needed to upload in order to release "
+"the package) in the parent directory of the source code tree and calls "
+"B<dupload> or B<dput> with the I<.changes> file as parameter in order to "
+"perform the actual uploading."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:20
+msgid ""
+"Options may be given to B<debrelease>; except for the ones listed below, "
+"they are passed on unchanged to B<dupload> or B<dput>. The B<devscripts> "
+"configuration files are also read by B<debrelease> as described below."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:31
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debrelease> will climb the directory tree until it finds a "
+"I<debian/changelog> file. As a safeguard against stray files causing "
+"potential problems, it will examine the name of the parent directory once it "
+"finds the I<debian/changelog> file, and check that the directory name "
+"corresponds to the package name. Precisely how it does this is controlled "
+"by two configuration file variables B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and their corresponding command-line "
+"options B<--check-dirname-level> and B<--check-dirname-regex>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debrelease.1:61 ../scripts/debrsign.1:31 ../scripts/debsign.1:68
+#, no-wrap
+msgid "B<-S>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:67
+msgid ""
+"If this option is used, or the default I<.changes> file is not found but a "
+"source-only I<.changes> file is present, then this source-only I<.changes> "
+"file will be uploaded instead of an arch-specific one."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:75
+msgid ""
+"See B<dpkg-architecture>(1) for a description of these options. They affect "
+"the search for the I<.changes> file. They are provided to mimic the "
+"behaviour of B<dpkg-buildpackage> when determining the name of the "
+"I<.changes> file. If a plain B<-t> is given, it is taken to be the "
+"B<dupload> host-specifying option, and therefore signifies the end of the "
+"B<debrelease>-specific options."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debrelease.1:75 ../scripts/debrsign.1:41 ../scripts/debsign.1:78
+#, no-wrap
+msgid "B<--multi>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:81
+msgid ""
+"Multiarch I<.changes> mode: This signifies that B<debrelease> should use the "
+"most recent file with the name pattern I<package_version_*+*.changes> as the "
+"I<.changes> file, allowing for the I<.changes> files produced by "
+"B<dpkg-cross>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debrelease.1:111
+#, no-wrap
+msgid "B<DEBRELEASE_UPLOADER>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:116
+msgid ""
+"The currently recognised values are I<dupload> and I<dput>, and it specifies "
+"which uploader program should be used. It corresponds to the B<--dupload> "
+"and B<--dput> command line options."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:125
+msgid ""
+"This specifies the directory in which to look for the I<.changes> and "
+"I<.deb> files, and is either an absolute path or relative to the top of the "
+"source tree. This corresponds to the B<--debs-dir> command line option. "
+"This directive could be used, for example, if you always use B<pbuilder> or "
+"B<svn-buildpackage> to build your packages. Note that it also affects "
+"B<debc>(1) and B<debi>(1)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:136
+msgid "B<dput>(1), B<dupload>(1), B<devscripts.conf>(5)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrelease.1:138
+msgid ""
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>, based on the original B<release> "
+"script by Christoph Lameter E<lt>clameter@debian.orgE<gt>."
+msgstr ""
+
+#. type: Content of the dhfirstname entity
+#: ../scripts/deb-reversion.dbk:30
+msgid "<firstname>martin f.</firstname>"
+msgstr ""
+
+#. type: Content of the dhsurname entity
+#: ../scripts/deb-reversion.dbk:31
+msgid "<surname>krafft</surname>"
+msgstr ""
+
+#. type: Content of the dhmaintfirstname entity
+#: ../scripts/deb-reversion.dbk:32
+msgid "<firstname>Julian</firstname>"
+msgstr ""
+
+#. type: Content of the dhmaintsurname entity
+#: ../scripts/deb-reversion.dbk:33
+msgid "<surname>Gilbey</surname>"
+msgstr ""
+
+#. type: Content of the dhdate entity
+#: ../scripts/deb-reversion.dbk:35
+msgid "<date>Feb 13, 2006</date>"
+msgstr ""
+
+#. type: Content of the dhsection entity
+#: ../scripts/deb-reversion.dbk:38
+msgid "<manvolnum>1</manvolnum>"
+msgstr ""
+
+#. type: Content of the dhemail entity
+#: ../scripts/deb-reversion.dbk:39
+msgid "<email>madduck@debian.org</email>"
+msgstr ""
+
+#. type: Content of the dhmaintemail entity
+#: ../scripts/deb-reversion.dbk:40
+msgid "<email>jdg@debian.org</email>"
+msgstr ""
+
+#. type: Content of the dhusername entity
+#: ../scripts/deb-reversion.dbk:41
+msgid "martin f. krafft"
+msgstr ""
+
+#. type: Content of the dhmaintusername entity
+#: ../scripts/deb-reversion.dbk:42
+msgid "Julian Gilbey"
+msgstr ""
+
+#. type: Content of the dhucpackage entity
+#: ../scripts/deb-reversion.dbk:43
+msgid "<refentrytitle>deb-reversion</refentrytitle>"
+msgstr ""
+
+#. type: Content of the dhcommand entity
+#: ../scripts/deb-reversion.dbk:44 ../scripts/deb-reversion.dbk:45
+msgid "deb-reversion"
+msgstr ""
+
+#. type: Content of the debian entity
+#: ../scripts/deb-reversion.dbk:47
+msgid "<productname>Debian</productname>"
+msgstr ""
+
+#. type: Content of the gnu entity
+#: ../scripts/deb-reversion.dbk:48
+msgid "<acronym>GNU</acronym>"
+msgstr ""
+
+#. type: Content of the gpl entity
+#: ../scripts/deb-reversion.dbk:49
+msgid "&gnu; <acronym>GPL</acronym>"
+msgstr ""
+
+#. type: Content of: <refentry><refentryinfo><address>
+#: ../scripts/deb-reversion.dbk:55
+#, no-wrap
+msgid ""
+" &dhemail;\n"
+" "
+msgstr ""
+
+#. type: Content of: <refentry><refentryinfo>
+#: ../scripts/deb-reversion.dbk:54
+msgid "<placeholder type=\"address\" id=\"0\"/> &dhdate;"
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refname>
+#: ../scripts/deb-reversion.dbk:65
+msgid "&dhcommand;"
+msgstr ""
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: ../scripts/deb-reversion.dbk:67
+msgid "simple script to change the version of a .deb file"
+msgstr ""
+
+#. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
+#: ../scripts/deb-reversion.dbk:72
+msgid ""
+"<command>&dhcommand;</command> <arg choice=\"opt\"> "
+"<replaceable>options</replaceable> </arg> <replaceable> "
+".deb-file</replaceable> <arg choice=\"opt\" rep=\"repeat\"><replaceable>log "
+"message</replaceable></arg>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:85
+msgid ""
+"<command>&dhcommand;</command> unpacks the specified "
+"<filename>.deb</filename> file, changes the version number in the relevant "
+"locations, appends a Debian <filename>changelog</filename> entry with the "
+"specified contents, and creates a new <filename>.deb</filename> file with "
+"the updated version."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:92
+msgid ""
+"By default, the tool creates a new version number suitable for local "
+"changes, such that the new package will be greater than the current one, but "
+"lesser than any future, official Debian packages. With <option>-v "
+"<replaceable class=\"parameter\">version</replaceable></option>, the version "
+"number can be specified directly. On the other hand, the "
+"<option>-c</option> simply calculates the new version number but does not "
+"generate a new package."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:103
+msgid ""
+"When building a <filename>.deb</filename> file, root privileges are required "
+"in order to have the correct permissions and ownerships in the resulting "
+"<filename>.deb</filename> file. This can be achieved either by running "
+"<command>&dhcommand;</command> as root or running under "
+"<citerefentry><refentrytitle>fakeroot</refentrytitle> "
+"<manvolnum>1</manvolnum></citerefentry>, as 'fakeroot &dhcommand; foo.deb'."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:113
+msgid ""
+"With <option>-k <replaceable "
+"class=\"parameter\">hook</replaceable></option>, a hook script may be "
+"specified, which is run on the unpacked binary packages just before it is "
+"repacked. If you want to write changelog entries from within the hook, use "
+"'<command>dch -a -- <replaceable class=\"parameter\">your "
+"message</replaceable></command>'. (Alternatively, do not give a changelog "
+"entry on the <command>&dhcommand;</command> command line and "
+"<command>dch</command> will be called automatically.) The hook command must "
+"be placed in quotes if it has more than one word; it is called via "
+"<command>sh -c</command>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:131
+msgid ""
+"<option>-v</option> <replaceable "
+"class=\"parameter\">new-version</replaceable>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:132
+msgid ""
+"<option>--new-version</option> <replaceable "
+"class=\"parameter\">new-version</replaceable>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:135
+msgid ""
+"Specifies the version number to be used for the new version. Passed to "
+"<citerefentry> <refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> "
+"</citerefentry>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:145
+msgid ""
+"<option>-o</option> <replaceable "
+"class=\"parameter\">old-version</replaceable>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:146
+msgid ""
+"<option>--old-version</option> <replaceable "
+"class=\"parameter\">old-version</replaceable>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:149
+msgid ""
+"Specifies the version number to be used as the old version instead of the "
+"version stored in the <filename>.deb</filename>'s "
+"<filename>control</filename> file."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:157
+msgid "<option>-c</option>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:158
+msgid "<option>--calculate-only</option>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:161
+msgid ""
+"Only calculate and display the new version number which would be used; do "
+"not build a new <filename>.deb</filename> file. Cannot be used in "
+"conjunction with <option>-v</option>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:169
+msgid "<option>-s</option> <replaceable class=\"parameter\">string</replaceable>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:170
+msgid ""
+"<option>--string</option> <replaceable "
+"class=\"parameter\">string</replaceable>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:173
+msgid ""
+"Instead of using 'LOCAL.' as the version string to append to the old version "
+"number, use <replaceable class=\"parameter\">string</replaceable> instead."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:181
+msgid ""
+"<option>-k</option> <replaceable "
+"class=\"parameter\">hook-command</replaceable>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:182
+msgid ""
+"<option>--hook</option> <replaceable "
+"class=\"parameter\">hook-command</replaceable>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:185
+msgid ""
+"A hook command to run after unpacking the old <filename>.deb</filename> file "
+"and modifying the <filename>changelog</filename>, and before packing up the "
+"new <filename>.deb</filename> file. Must be in quotes if it is more than "
+"one (shell) word. Only one hook command may be specified; if you want to "
+"perform more than this, you could specify 'bash' as the hook command, and "
+"you will then be given a shell to work in."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:197
+msgid "<option>-D</option>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:198
+msgid "<option>--debug</option>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:201
+msgid ""
+"Pass <option>--debug</option> to <citerefentry> "
+"<refentrytitle>dpkg-deb</refentrytitle> <manvolnum>1</manvolnum> "
+"</citerefentry>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:211
+msgid "<option>-b</option>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:212
+msgid "<option>--force-bad-version</option>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:215
+msgid ""
+"Pass <option>--force-bad-version</option> to <citerefentry> "
+"<refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </citerefentry>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:225
+msgid "<option>-h</option>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:226
+msgid "<option>--help</option>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:229
+msgid "Display usage information."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:235
+msgid "<option>-V</option>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:236
+msgid "<option>--version</option>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:249
+msgid ""
+"<citerefentry> <refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> "
+"</citerefentry>, <citerefentry> <refentrytitle>dpkg-deb</refentrytitle> "
+"<manvolnum>1</manvolnum> </citerefentry>, <citerefentry> "
+"<refentrytitle>fakeroot</refentrytitle> <manvolnum>1</manvolnum> "
+"</citerefentry>"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><title>
+#: ../scripts/deb-reversion.dbk:265
+msgid "DISCLAIMER"
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:267
+msgid ""
+"&dhpackage; is a tool intended to help porters with modifying packages for "
+"other architectures, and to augment deb-repack, which creates modified "
+"packages with identical version numbers as the official packages. Chaos will "
+"ensue! With &dhpackage;, a proper version number can be selected, which does "
+"not obstruct the next official release but can be specifically pinned with "
+"APT or held with dpkg."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:276
+msgid ""
+"Please take note that &dhpackage; does not come without problems. While it "
+"works fine in most cases, it may just not in yours. Especially, please "
+"consider that it changes binary packages (only!) and hence can break strict "
+"versioned dependencies between binary packages generated from the same "
+"source."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:283
+msgid ""
+"You are using this tool at your own risk and I shall not shed a tear if your "
+"gerbil goes up in flames, your microwave attacks the stereo, or the angry "
+"slamming of your fist spills your coffee into the keyboard, which sets off a "
+"chain reaction resulting in a vast amount of money transferred from your "
+"account to mine."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:295
+msgid ""
+"&dhpackage; is Copyright 2004-5 by &dhusername; &dhemail; and modifications "
+"are Copyright 2006 by &dhmaintusername; &dhmaintemail;."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:300
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the Artistic License: "
+"<ulink>http://www.opensource.org/licenses/artistic-license.php</ulink>. On "
+"Debian systems, the complete text of the Artistic License can be found in "
+"<filename>/usr/share/common-licenses/Artistic</filename>."
+msgstr ""
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:309
+msgid ""
+"This manual page was written by &dhusername; &dhemail; and modified by "
+"&dhmaintusername; &dhmaintemail;."
+msgstr ""
+
+#. type: TH
+#: ../scripts/debrsign.1:1
+#, no-wrap
+msgid "DEBRSIGN"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:4
+msgid "debrsign - remotely sign a Debian .changes and .dsc file pair using SSH"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:7
+msgid ""
+"B<debrsign> [I<options>] [I<user>B<@>]I<remotehost> "
+"[I<changes-file>|I<dsc-file>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:15
+msgid ""
+"B<debrsign> takes either an unsigned I<.dsc> file or an unsigned I<.changes> "
+"file and the associated unsigned I<.dsc> file (found by replacing the "
+"architecture name and I<.changes> by I<.dsc>) if it appears in the "
+"I<.changes> file and signs them by copying them to the remote machine using "
+"B<ssh>(1) and remotely running B<debsign>(1) on that machine. All options "
+"not listed below are passed to the B<debsign> program on the remote machine."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:19
+msgid ""
+"If a I<.changes> or I<.dsc> file is specified, it is signed, otherwise, "
+"I<debian/changelog> is parsed to determine the name of the I<.changes> file "
+"to look for in the parent directory."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:25
+msgid ""
+"This utility is useful if a developer must build a package on one machine "
+"where it is unsafe to sign it; they need then only transfer the small "
+"I<.dsc> and I<.changes> files to a safe machine and then use the B<debsign> "
+"program to sign them before transferring them back. This program automates "
+"this process."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:30
+msgid ""
+"To do it the other way round, that is to connect to an unsafe machine to "
+"download the I<.dsc> and I<.changes> files, to sign them locally and then to "
+"transfer them back, see the B<debsign>(1) program, which can do this task."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:35 ../scripts/debsign.1:72
+msgid ""
+"Look for a source-only I<.changes> file instead of a binary-build "
+"I<.changes> file."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:47
+msgid ""
+"Multiarch I<.changes> mode: This signifies that B<debrsign> should use the "
+"most recent file with the name pattern I<package_version_*+*.changes> as the "
+"I<.changes> file, allowing for the I<.changes> files produced by "
+"B<dpkg-cross>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debrsign.1:47
+#, no-wrap
+msgid "B<--path >I<remote-path>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:50
+msgid "Specify a path to the GPG binary on the remote host."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debrsign.1:53
+#, no-wrap
+msgid "B<Other options>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:57
+msgid "All other options are passed on to B<debsign> on the remote machine."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debrsign.1:63
+#, no-wrap
+msgid "B<DEBRSIGN_PGP_PATH>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:66
+msgid "Equivalent to passing B<--path> on the command line (see above.)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:70
+msgid "B<debsign>(1), B<dpkg-architecture>(1), B<ssh>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debrsign.1:72 ../scripts/debsign.1:147
+msgid ""
+"This program was written by Julian Gilbey E<lt>jdg@debian.orgE<gt> and is "
+"copyright under the GPL, version 2 or later."
+msgstr ""
+
+#. type: TH
+#: ../scripts/debsign.1:1
+#, no-wrap
+msgid "DEBSIGN"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:4
+msgid "debsign - sign a Debian .changes and .dsc file pair using GPG"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:6
+msgid "B<debsign> [I<options>] [I<changes-file>|I<dsc-file>|I<commands-file> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:16
+msgid ""
+"B<debsign> mimics the signing aspects (and bugs) of "
+"B<dpkg-buildpackage>(1). It takes either an unsigned I<.dsc> file or an "
+"unsigned I<.changes> file (along with the associated unsigned I<.dsc> file "
+"found by replacing the architecture name and I<.changes> by I<.dsc> if it "
+"appears in the I<.changes> file), and signs them using the GNU Privacy "
+"Guard. It is careful to calculate the size and checksums of the newly "
+"signed I<.dsc> file and replace the original values in the I<.changes> file."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:21
+msgid ""
+"If a I<.changes>, I<.dsc> or I<.commands> file is specified, it is signed, "
+"otherwise, I<debian/changelog> is parsed to determine the name of the "
+"I<.changes> file to look for in the parent directory."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:25
+msgid ""
+"If a I<.commands> file is specified it is first validated (see the details "
+"at I<ftp://ftp.upload.debian.org/pub/UploadQueue/README>), and the name "
+"specified in the Uploader field is used for signing."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:36
+msgid ""
+"This utility is useful if a developer must build a package on one machine "
+"where it is unsafe to sign it; they need then only transfer the small "
+"I<.dsc> and I<.changes> files to a safe machine and then use the B<debsign> "
+"program to sign them before transferring them back. This process can be "
+"automated in two ways. If the files to be signed live on the B<remote> "
+"machine, the B<-r> option may be used to copy them to the local machine and "
+"back again after signing. If the files live on the B<local> machine, then "
+"they may be transferred to the remote machine for signing using "
+"B<debrsign>(1)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:39
+msgid ""
+"This program can take default settings from the B<devscripts> configuration "
+"files, as described below."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsign.1:40
+#, no-wrap
+msgid "B<-r >[I<username>B<@>]I<remotehost>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:48
+msgid ""
+"The I<.changes> and I<.dsc> files live on the specified remote host. In "
+"this case, a I<.changes> file must be explicitly named, with an absolute "
+"directory or one relative to the remote home directory. B<scp> will be used "
+"for the copying. The [I<username>B<@>]I<remotehost>B<:>I<changes> syntax is "
+"permitted as an alternative. Wildcards (B<*> etc.) are allowed."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsign.1:48
+#, no-wrap
+msgid "B<-p>I<progname>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:52
+msgid ""
+"When B<debsign> needs to execute GPG to sign it will run I<progname> "
+"(searching the B<PATH> if necessary), instead of B<gpg>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsign.1:52
+#, no-wrap
+msgid "B<-m>I<maintainer>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:61
+msgid ""
+"Specify the maintainer name to be used for signing. (See "
+"B<dpkg-buildpackage>(1) for more information about the differences between "
+"B<-m>, B<-e> and B<-k> when building packages; B<debsign> makes no use of "
+"these distinctions except with respect to the precedence of the various "
+"options. These multiple options are provided so that the program will "
+"behave as expected when called by B<debuild>(1).)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsign.1:61
+#, no-wrap
+msgid "B<-e>I<maintainer>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:64
+msgid "Same as B<-m> but takes precedence over it."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsign.1:64
+#, no-wrap
+msgid "B<-k>I<keyid>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:68
+msgid ""
+"Specify the key ID to be used for signing; overrides any B<-m> and B<-e> "
+"options."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:84
+msgid ""
+"Multiarch I<.changes> mode: This signifies that B<debsign> should use the "
+"most recent file with the name pattern I<package_version_*+*.changes> as the "
+"I<.changes> file, allowing for the I<.changes> files produced by "
+"B<dpkg-cross>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsign.1:84
+#, no-wrap
+msgid "B<--re-sign>, B<--no-re-sign>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:90
+msgid ""
+"Recreate signature, respectively use the existing signature, if the file has "
+"been signed already. If neither option is given and an already signed file "
+"is found the user is asked if he or she likes to use the current signature."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsign.1:90
+#, no-wrap
+msgid "B<--debs-dir> I<DIR>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:96
+msgid ""
+"Look for the I<.changes> and I<.dsc> files in directory I<DIR> instead of "
+"the parent of the source directory. This should either be an absolute path "
+"or relative to the top of the source directory."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsign.1:112
+#, no-wrap
+msgid "B<DEBSIGN_PROGRAM>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:115
+msgid "Setting this is equivalent to giving a B<-p> option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsign.1:115
+#, no-wrap
+msgid "B<DEBSIGN_MAINT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:118
+msgid "This is the B<-m> option."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:121
+msgid "And this is the B<-k> option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsign.1:121
+#, no-wrap
+msgid "B<DEBSIGN_ALWAYS_RESIGN>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:124
+msgid "Always re-sign files even if they are already signed, without prompting."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:134
+msgid ""
+"This specifies the directory in which to look for the I<.changes> and "
+"I<.dsc> files, and is either an absolute path or relative to the top of the "
+"source tree. This corresponds to the B<--debs-dir> command line option. "
+"This directive could be used, for example, if you always use B<pbuilder> or "
+"B<svn-buildpackage> to build your packages. Note that it also affects "
+"B<debrelease>(1) in the same way, hence the strange name of the option."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsign.1:145
+msgid ""
+"B<debrsign>(1), B<debuild>(1), B<dpkg-architecture>(1), "
+"B<dpkg-buildpackage>(1), B<gpg>(1), B<md5sum>(1), B<sha1sum>(1), "
+"B<sha256sum>(1), B<scp>(1), B<devscripts.conf>(5)"
+msgstr ""
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "DEBSNAP"
+msgstr ""
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "July 3, 2010"
+msgstr ""
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "Debian devscripts"
+msgstr ""
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "DebSnap User Manual"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:5
+msgid "debsnap - retrieve old snapshots of Debian packages"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:9
+msgid "B<debsnap> [I<options>]I< package >[I<version>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:12
+msgid "B<debsnap> [B<-h> | B<--help>]B< >[B<--version>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:17
+msgid ""
+"B<debsnap> is a tool to help with retrieving snapshots of old packages from "
+"a daily archive repository."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:20
+msgid ""
+"The only publicly available snapshot archive is currently located at "
+"I<http://snapshot.debian.org>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:24
+msgid ""
+"By default, debsnap will download all the available versions for I<package> "
+"that are found in the snapshot archive. If a I<version> is specified, only "
+"that particular version will be downloaded, if available."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:29
+#, no-wrap
+msgid "B<-d>I< destination>,I< >B<--destdir>I< destination>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:32
+msgid "Directory to place retrieved packages."
+msgstr ""
+
+#. type: =item
+#: ../scripts/debsnap.1:33 ../scripts/tagpending.pl:109
+#, no-wrap
+msgid "B<-f>, B<--force>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:41
+msgid ""
+"Force writing into an existing I<destination>. By default B<debsnap> will "
+"insist the destination directory does not exist yet unless it is explicitly "
+"specified to be 'B<.>' (the current working directory). This is to avoid "
+"files being accidentally overwritten by what is fetched from the archive and "
+"to provide a guarantee for other scripts that only the files fetched will be "
+"present there upon completion."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:42 ../scripts/sadt.pod:46 ../doc/suspicious-source.1:38 ../scripts/tagpending.pl:105 ../doc/wrap-and-sort.1:70
+#, no-wrap
+msgid "B<-v>, B<--verbose>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:46
+msgid ""
+"Report on the B<debsnap> configuration being used and progress during the "
+"download operation. Please always use this option when reporting bugs."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:47
+#, no-wrap
+msgid "B<--binary>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:50
+msgid "Download binary packages instead of source packages."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:51
+#, no-wrap
+msgid "B<-a>, B<--architecture>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:56
+msgid ""
+"Specify architecture of downloaded binary packages. Implies B<--binary>. "
+"This can be given multiple times in order to download binary packages for "
+"multiple architectures."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:60
+msgid "Show a summary of these options."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:64
+msgid "Show the version of B<debsnap>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:69
+msgid ""
+"B<debsnap> may also be configured through the use of the following options "
+"in the devscripts configuration files:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:70
+#, no-wrap
+msgid "B<DEBSNAP_VERBOSE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:73
+msgid "Same as the command line option B<--verbose>. Set to I<yes> to enable."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:74
+#, no-wrap
+msgid "B<DEBSNAP_DESTDIR>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:79
+msgid ""
+"Set a default path for the destination directory. If unset "
+"I<./source-E<lt>package_nameE<gt>> will be used. The command line option "
+"B<--destdir> will override this."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:80
+#, no-wrap
+msgid "B<DEBSNAP_BASE_URL>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:83
+msgid "The base url for the snapshots archive."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:85
+msgid "If unset this defaults to I<http://snapshot.debian.org>"
+msgstr ""
+
+#. type: SH
+#: ../scripts/debsnap.1:86 ../scripts/dscextract.1:20 ../scripts/transition-check.pl:54 ../scripts/uscan.1:548 ../scripts/wnpp-check.1:25
+#, no-wrap
+msgid "EXIT STATUS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:92
+msgid ""
+"B<debsnap> will return an exit status of 0 if all operations succeeded, 1 if "
+"a fatal error occurred, and 2 if some packages failed to be downloaded but "
+"operations otherwise succeeded as expected. In some cases packages may fail "
+"to be downloaded because they are no longer available on the snapshot "
+"mirror, so any caller should expect this may occur in normal use."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:94
+#, no-wrap
+msgid "B<debsnap -a amd64 xterm 256-1>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:97
+msgid ""
+"Download the binary package of a specific xterm version for amd64 "
+"architecture."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:97
+#, no-wrap
+msgid "B<debsnap -a armel xterm>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:100
+msgid "Download binary packages for all versions of xterm for armel architecture."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:100
+#, no-wrap
+msgid "B<debsnap --binary xterm 256-1>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:103
+msgid ""
+"Download binary packages for a specific xterm version but for all "
+"architectures."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:103
+#, no-wrap
+msgid "B<debsnap --binary xterm>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:106
+msgid "Download binary packages for all versions of xterm for all architectures."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:106
+#, no-wrap
+msgid ""
+"B<aptitude search '~i' -F '%p %V' | while read pkg ver; do debsnap -a "
+"$(dpkg-architecture -qDEB_HOST_ARCH) -a all $pkg $ver; done>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:109
+msgid "Download binary packages of all packages that are installed on the system."
+msgstr ""
+
+#. type: SH
+#: ../scripts/debsnap.1:110 ../scripts/diff2patches.1:28
+#, no-wrap
+msgid "FILES"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:111
+#, no-wrap
+msgid "I</etc/devscripts.conf>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:114
+msgid "Global devscripts configuration options. Will override hardcoded defaults."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debsnap.1:114
+#, no-wrap
+msgid "I<~/.devscripts>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:122
+msgid "B<devscripts>(1), B<devscripts.conf>(5), B<git-debimport>(1)"
+msgstr ""
+
+#. type: SH
+#: ../scripts/debsnap.1:123 ../doc/edit-patch.1:37 ../doc/suspicious-source.1:51 ../doc/what-patch.1:27 ../doc/wrap-and-sort.1:79
+#, no-wrap
+msgid "AUTHORS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:125
+msgid "David Paleino E<lt>dapal@debian.orgE<gt>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:128
+msgid "Copyright \\(co 2010 David Paleino"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:132
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the GNU General Public License, Version 3 or (at your option) "
+"any later version published by the Free Software Foundation."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:135
+msgid ""
+"On Debian systems, the complete text of the GNU General Public License can "
+"be found in I</usr/share/common-licenses/GPL>."
+msgstr ""
+
+#. type: SS
+#: ../scripts/debsnap.1:137
+#, no-wrap
+msgid "Reporting bugs"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debsnap.1:140
+msgid ""
+"The program is part of the devscripts package. Please report bugs using "
+"`B<reportbug devscripts>`"
+msgstr ""
+
+#. type: TH
+#: ../scripts/debuild.1:1
+#, no-wrap
+msgid "DEBUILD"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:4
+msgid "debuild - build a Debian package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:7
+msgid ""
+"B<debuild> [I<debuild options>] [I<dpkg-buildpackage options>] "
+"[B<--lintian-opts> I<lintian options>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:10
+msgid ""
+"B<debuild> [I<debuild options>] "
+"B<binary>|B<binary-arch>|B<binary-indep>|B<clean> ..."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:29
+msgid ""
+"B<debuild> creates all the files necessary for uploading a Debian package. "
+"It first runs B<dpkg-buildpackage>, then runs B<lintian> on the I<.changes> "
+"file created (assuming that B<lintian> is installed), and finally signs the "
+"I<.changes> and/or I<.dsc> files as appropriate (using B<debsign>(1) to do "
+"this instead of B<dpkg-buildpackage>(1) itself; all relevant key-signing "
+"options are passed on). Parameters can be passed to B<dpkg-buildpackage> "
+"and B<lintian>, where the parameters to the latter are indicated with the "
+"B<--lintian-opts> option. The allowable options in this case are "
+"B<--lintian> and B<--no-lintian> to force or skip the B<lintian> step, "
+"respectively. The default is to run B<lintian>. There are also various "
+"options available for setting and preserving environment variables, as "
+"described below in the Environment Variables section. In this method of "
+"running B<debuild>, we also save a build log to the file "
+"I<../E<lt>packageE<gt>_E<lt>versionE<gt>_E<lt>archE<gt>.build>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:46
+msgid ""
+"An alternative way of using B<debuild> is to use one or more of the "
+"parameters B<binary>, B<binary-arch>, B<binary-indep> and B<clean>, in which "
+"case B<debuild> will attempt to gain root privileges and then run "
+"I<debian/rules> with the given parameters. A "
+"B<--rootcmd=>I<gain-root-command> or B<-r>I<gain-root-command> option may be "
+"used to specify a method of gaining root privileges. The "
+"I<gain-root-command> is likely to be one of I<fakeroot>, I<sudo> or "
+"I<super>. See below for further discussion of this point. Again, the "
+"environment preservation options may be used. In this case, B<debuild> will "
+"also attempt to run B<dpkg-checkbuilddeps> first; this can be explicitly "
+"requested or switched off using the options B<-D> and B<-d> respectively. "
+"Note also that if either of these or a B<-r> option is specified in the "
+"configuration file option B<DEBUILD_DPKG_BUILDPACKAGE_OPTS>, then it will be "
+"recognised even in this method of invocation of B<debuild>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:49
+msgid ""
+"B<debuild> also reads the B<devscripts> configuration files as described "
+"below. This allows default options to be given."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:61
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debuild> will climb the directory tree until it finds a "
+"I<debian/changelog> file before attempting to build the package. As a "
+"safeguard against stray files causing potential problems, it will examine "
+"the name of the parent directory once it finds the I<debian/changelog> file, "
+"and check that the directory name corresponds to the package name. "
+"Precisely how it does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and "
+"B<--check-dirname-regex>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:86 ../scripts/uscan.1:348
+msgid ""
+"The directory name is checked by testing whether the current directory name "
+"(as determined by B<pwd>(1)) matches the regex given by the configuration "
+"file option B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> or by the command line option "
+"B<--check-dirname-regex> I<regex>. Here I<regex> is a Perl regex (see "
+"B<perlre>(3perl)), which will be anchored at the beginning and the end. If "
+"I<regex> contains a '/', then it must match the full directory path. If "
+"not, then it must match the full directory name. If I<regex> contains the "
+"string \\'PACKAGE', this will be replaced by the source package name, as "
+"determined from the I<changelog>. The default value for the regex is: "
+"\\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and "
+"PACKAGE-version."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:94
+msgid ""
+"As environment variables can affect the building of a package, often "
+"unintentionally, B<debuild> sanitises the environment by removing all "
+"environment variables except for B<TERM>, B<HOME>, B<LOGNAME>, B<GNUPGHOME>, "
+"B<PGPPATH>, B<GPG_AGENT_INFO>, B<FAKEROOTKEY>, B<DEB_>I<*>, the (B<C>, "
+"B<CPP>, B<CXX>, B<LD> and B<F>)B<FLAGS> variables and their B<_APPEND> "
+"counterparts and the locale variables B<LANG> and B<LC_>I<*>. B<TERM> is "
+"set to `dumb' if it is unset, and B<PATH> is set to "
+"\"/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11\"."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:105
+msgid ""
+"If a particular environment variable is required to be passed through "
+"untouched to the build process, this may be specified by using a "
+"B<--preserve-envvar> I<envvar> (which can also be written as B<-e> I<envvar> "
+"option). The environment may be left untouched by using the "
+"B<--preserve-env> option. However, even in this case, the B<PATH> will be "
+"set to the sane value described above. The B<only> way to prevent B<PATH> "
+"from being reset is to specify a B<--preserve-envvar PATH> option. But you "
+"are warned that using programs from non-standard locations can easily result "
+"in the package being broken, as it will not be able to be built on standard "
+"systems."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:109
+msgid ""
+"Note that one may add directories to the beginning of the sanitised B<PATH>, "
+"using the B<--prepend-path> option. This is useful when one wishes to use "
+"tools such as B<ccache> or B<distcc> for building."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:114
+msgid ""
+"It is also possible to avoid having to type something like I<FOO>B<=>I<bar "
+">B<debuild -e >I<FOO> by writing B<debuild -e >I<FOO>B<=>I<bar> or the long "
+"form B<debuild --set-envvar >I<FOO>B<=>I<bar>."
+msgstr ""
+
+#. type: SH
+#: ../scripts/debuild.1:114
+#, no-wrap
+msgid "SUPERUSER REQUIREMENTS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:124
+msgid ""
+"B<debuild> needs to be run as superuser to function properly. There are "
+"three fundamentally different ways to do this. The first, and preferable, "
+"method is to use some root-gaining command. The best one to use is probably "
+"B<fakeroot>(1), since it does not involve granting any genuine privileges. "
+"B<super>(1) and B<sudo>(1) are also possibilities. If no B<-r> (or "
+"B<--rootcmd>) option is given (and recall that B<dpkg-buildpackage> also "
+"accepts a B<-r> option) and neither of the following methods is used, then "
+"B<-rfakeroot> will silently be assumed."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:130
+msgid ""
+"The second method is to use some command such as B<su>(1) to become root, "
+"and then to do everything as root. Note, though, that B<lintian> will abort "
+"if it is run as root or setuid root; this can be overcome using the "
+"B<--allow-root> option of B<lintian> if you know what you are doing."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:146
+msgid ""
+"The third possible method is to have B<debuild> installed as setuid root. "
+"This is not the default method, and will have to be installed as such by the "
+"system administrator. It must also be realised that anyone who can run "
+"B<debuild> as root or setuid root has B<full access to the whole machine>. "
+"This method is therefore not recommended, but will work. B<debuild> could "
+"be installed with mode 4754, so that only members of the owning group could "
+"run it. A disadvantage of this method would be that other users would then "
+"not be able to use the program. There are many other variants of this "
+"option involving multiple copies of B<debuild>, or the use of programs such "
+"as B<sudo> or B<super> to grant root privileges to users selectively. If "
+"the sysadmin wishes to do this, she should use the B<dpkg-statoverride> "
+"program to change the permissions of I</usr/bin/debuild>. This will ensure "
+"that these permissions are preserved across upgrades."
+msgstr ""
+
+#. type: SH
+#: ../scripts/debuild.1:146
+#, no-wrap
+msgid "HOOKS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:153
+msgid ""
+"B<debuild> supports a number of hooks when running B<dpkg-buildpackage>. "
+"Note that if any of the hooks from B<clean-hook> to B<final-clean> "
+"(inclusive) are used, B<debuild> will emulate some sections of the "
+"B<dpkg-buildpackage> process rather than running them directly, as "
+"B<dpkg-buildpackage> does not support hooks. The available hooks are as "
+"follows:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:153
+#, no-wrap
+msgid "B<dpkg-buildpackage-hook>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:156
+msgid "Run before B<dpkg-buildpackage> begins by calling B<dpkg-checkbuilddeps>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:156
+#, no-wrap
+msgid "B<clean-hook>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:161
+msgid ""
+"Run before B<dpkg-buildpackage> runs B<debian/rules clean> to clean the "
+"source tree. (Run even if the tree is not being cleaned because B<-nc> is "
+"used.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:161
+#, no-wrap
+msgid "B<dpkg-source-hook>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:165
+msgid ""
+"Run after cleaning the tree and before running B<dpkg-source>. (Run even if "
+"B<dpkg-source> is not being called because B<-b>, B<-B>, or B<-A> is used.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:165
+#, no-wrap
+msgid "B<dpkg-build-hook>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:170
+msgid ""
+"Run after B<dpkg-source> and before calling B<debian/rules build>. (Run "
+"even if this is a source-only build, so B<debian/rules build> is not being "
+"called.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:170
+#, no-wrap
+msgid "B<dpkg-binary-hook>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:174
+msgid ""
+"Run between B<debian/rules build> and B<debian/rules binary>(B<-arch>). Run "
+"B<only> if a binary package is being built."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:174
+#, no-wrap
+msgid "B<dpkg-genchanges-hook>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:178
+msgid "Run after the binary package is built and before calling B<dpkg-genchanges>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:178
+#, no-wrap
+msgid "B<final-clean-hook>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:183
+msgid ""
+"Run after B<dpkg-genchanges> and before the final B<debian/rules clean>. "
+"(Run even if we are not cleaning the tree post-build, which is the default.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:183
+#, no-wrap
+msgid "B<lintian-hook>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:187
+msgid ""
+"Run (once) before calling B<lintian>. (Run even if we are not calling "
+"B<lintian>.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:187
+#, no-wrap
+msgid "B<signing-hook>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:191
+msgid ""
+"Run after calling B<lintian> before any signing takes place. (Run even if "
+"we are not signing anything.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:191
+#, no-wrap
+msgid "B<post-dpkg-buildpackage-hook>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:194
+msgid "Run after everything has finished."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:209
+msgid ""
+"A hook command can be specified either in the configuration file as, for "
+"example, DEBUILD_SIGNING_HOOK='foo' (note the hyphens change into "
+"underscores!) or as a command line option B<--signing-hook-foo>. The "
+"command will have certain percent substitutions made on it: B<%%> will be "
+"replaced by a single B<%> sign, B<%p> will be replaced by the package name, "
+"B<%v> by the package version number, B<%s> by the source version number, "
+"B<%u> by the upstream version number. Neither B<%s> nor B<%u> will contain "
+"an epoch. B<%a> will be B<1> if the immediately following action is to be "
+"performed and B<0> if not (for example, in the B<dpkg-source> hook, B<%a> "
+"will become B<1> if B<dpkg-source> is to be run and B<0> if not). Then it "
+"will be handed to the shell to deal with, so it can include redirections and "
+"stuff. For example, to only run the B<dpkg-source> hook if B<dpkg-source> "
+"is to be run, the hook could be something like: \"if [ %a -eq 1 ]; then ...; "
+"fi\"."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:213
+msgid ""
+"B<Please take care with hooks>, as misuse of them can lead to packages which "
+"FTBFS (fail to build from source). They can be useful for taking snapshots "
+"of things or the like."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:219
+msgid ""
+"Finally, only B<dpkg-buildpackage-hook> and the hooks from B<lintian-hook> "
+"onwards can be used if B<dpkg-cross> is installed. (This is because "
+"internally, B<debuild> reimplements B<dpkg-buildpackage>, but it does not "
+"attempt to reimplement the B<dpkg-cross> replacement of this script.)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:221
+msgid "For details, see above."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:228
+msgid "Command to gain root (or fake root) privileges."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:231
+msgid "Do not clean the environment, except for PATH."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:234
+msgid "Do not clean the I<var> variable from the environment."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:238
+msgid ""
+"If I<var> ends in an asterisk (\"*\") then all variables with names that "
+"match the portion of I<var> before the asterisk will be preserved."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:242
+msgid ""
+"Set the environment variable I<var> to I<value> and do not remove it from "
+"the environment."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:242
+#, no-wrap
+msgid "B<--prepend-path=>I<value >"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:246
+msgid "Once the normalized PATH has been set, prepend I<value> to it."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:246
+#, no-wrap
+msgid "B<--lintian>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:251
+msgid ""
+"Run B<lintian> after B<dpkg-buildpackage>. This is the default behaviour, "
+"and it overrides any configuration file directive to the contrary."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:251
+#, no-wrap
+msgid "B<--no-lintian>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:254
+msgid "Do not run B<lintian> after B<dpkg-buildpackage>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:254
+#, no-wrap
+msgid "B<--no-tgz-check>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:259
+msgid ""
+"Even if we're running B<dpkg-buildpackage> and the version number has a "
+"Debian revision, do not check that the I<.orig.tar.gz> file or I<.orig> "
+"directory exists before starting the build."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:259
+#, no-wrap
+msgid "B<--tgz-check>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:264
+msgid ""
+"If we're running B<dpkg-buildpackage> and the version number has a Debian "
+"revision, check that the I<.orig.tar.gz> file or I<.orig> directory exists "
+"before starting the build. This is the default behaviour."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:264
+#, no-wrap
+msgid "B<--username> I<username>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:268
+msgid ""
+"When signing, use B<debrsign> instead of B<debsign>. I<username> specifies "
+"the credentials to be used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:268
+#, no-wrap
+msgid "B<-->I<foo>B<-hook>=I<hook>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:272
+msgid "Set a hook as described above. If I<hook> is blank, this unsets the hook."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:272
+#, no-wrap
+msgid "B<--clear-hooks>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:276
+msgid "Clears all hooks. They may be reinstated by later command line options."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:287
+msgid "Do not run B<dpkg-checkbuilddeps> to check build dependencies."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:287
+#, no-wrap
+msgid "B<-D>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:290
+msgid "Run B<dpkg-checkbuilddeps> to check build dependencies."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:298
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override some of these configuration file "
+"settings, otherwise the B<--no-conf> option can be used to prevent reading "
+"these files. Environment variable settings are ignored when these "
+"configuration files are read. The currently recognised variables are:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:298
+#, no-wrap
+msgid "B<DEBUILD_PRESERVE_ENV>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:302
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--preserve-env> "
+"command line parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:302
+#, no-wrap
+msgid "B<DEBUILD_PRESERVE_ENVVARS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:307
+msgid ""
+"Which environment variables to preserve. This should be a comma-separated "
+"list of variables. This corresponds to using possibly multiple "
+"B<--preserve-envvar> or B<-e> options."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:307
+#, no-wrap
+msgid "B<DEBUILD_SET_ENVVAR_>I<var>B<=>I<value>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:310
+msgid "This corresponds to B<--set-envvar=>I<var>B<=>I<value>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:310
+#, no-wrap
+msgid "B<DEBUILD_PREPEND_PATH>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:313
+msgid "This corresponds to B<--prepend-path>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:313
+#, no-wrap
+msgid "B<DEBUILD_ROOTCMD>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:317
+msgid "Setting this variable to I<prog> is the equivalent of B<-r>I<prog>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:317
+#, no-wrap
+msgid "B<DEBUILD_TGZ_CHECK>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:321
+msgid ""
+"Setting this variable to I<no> is the same as the B<--no-tgz-check> command "
+"line option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:321
+#, no-wrap
+msgid "B<DEBUILD_SIGNING_USERNAME>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:325
+msgid ""
+"Setting this variable is the same as using the B<--username> command line "
+"option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:325
+#, no-wrap
+msgid "B<DEBUILD_DPKG_BUILDPACKAGE_OPTS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:333
+msgid ""
+"These are options which should be passed to the invocation of "
+"B<dpkg-buildpackage>. They are given before any command-line options. Due "
+"to issues of shell quoting, if a word containing spaces is required as a "
+"single option, extra quotes will be required. For example, to ensure that "
+"your own GPG key is always used, even for sponsored uploads, the "
+"configuration file might contain the line:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:336
+#, no-wrap
+msgid ""
+"DEBUILD_DPKG_BUILDPACKAGE_OPTS=\"-k'Julian Gilbey E<lt>jdg@debian.orgE<gt>' "
+"-sa\"\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:341
+msgid ""
+"which gives precisely two options. Without the extra single quotes, "
+"B<dpkg-buildpackage> would reasonably complain that I<Gilbey> is an "
+"unrecognised option (it doesn't start with a B<-> sign)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:346
+msgid ""
+"Also, if this option contains any B<-r>, B<-d> or B<-D> options, these will "
+"always be taken account of by B<debuild>. Note that a B<-r> option in this "
+"variable will override the setting in B<DEBUILD_ROOTCMD>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:346
+#, no-wrap
+msgid "B<DEBUILD_>I<FOO>B<_HOOK>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:350
+msgid ""
+"The hook variable for the I<foo> hook. See the section on hooks above for "
+"more details. By default, this is empty."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:350
+#, no-wrap
+msgid "B<DEBUILD_LINTIAN>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:354
+msgid ""
+"Should we run B<lintian>? If this is set to I<no>, then B<lintian> will not "
+"be run."
+msgstr ""
+
+#. type: TP
+#: ../scripts/debuild.1:354
+#, no-wrap
+msgid "B<DEBUILD_LINTIAN_OPTS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:360
+msgid ""
+"These are options which should be passed to the invocation of B<lintian>. "
+"They are given before any command-line options, and the usage of this "
+"variable is as described for the B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> variable."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:371
+msgid ""
+"To build your own package, simply run B<debuild> from inside the source "
+"tree. B<dpkg-buildpackage>(1) options may be given on the command line."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:374
+msgid ""
+"The typical command line options to build only the binary package(s) "
+"without signing the .changes file (or the non-existent .dsc file):"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:377
+#, no-wrap
+msgid "debuild -i -us -uc -b\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:380
+msgid "Change the B<-b> to B<-S> to build only a source package."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:383
+msgid ""
+"An example using B<lintian> to check the resulting packages and passing "
+"options to it:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:386
+#, no-wrap
+msgid "debuild --lintian-opts -i\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:394
+msgid ""
+"Note the order of options here: the B<debuild> options come first, then the "
+"B<dpkg-buildpackage> ones, then finally the checker options. (And "
+"B<lintian> is called by default.) If you find yourself using the same "
+"B<dpkg-buildpackage> options repeatedly, consider using the "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> configuration file option as described "
+"above."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:398
+msgid ""
+"To build a package for a sponsored upload, given I<foobar_1.0-1.dsc> and the "
+"respective source files, run something like the following commands:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:403
+#, no-wrap
+msgid ""
+"dpkg-source -x foobar_1.0-1.dsc\n"
+"cd foobar-1.0\n"
+"debuild -k0x12345678\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:410
+msgid ""
+"where 0x12345678 is replaced by your GPG key ID or other key identifier such "
+"as your email address. Again, you could also use the "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> configuration file option as described "
+"above to avoid having to type the B<-k> option each time you do a sponsored "
+"upload."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:422
+msgid ""
+"B<chmod>(1), B<debsign>(1), B<dpkg-buildpackage>(1), "
+"B<dpkg-checkbuilddeps>(1), B<fakeroot>(1), B<lintian>(1), B<su>(1), "
+"B<sudo>(1), B<super>(1), B<devscripts.conf>(5), B<dpkg-statoverride>(8)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/debuild.1:425
+msgid ""
+"The original B<debuild> program was written by Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. The current version has been written by "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:26
+msgid "desktop2menu - create a menu file skeleton from a desktop file"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:30
+msgid "B<desktop2menu> B<--help>|B<--version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:32
+msgid "B<desktop2menu> I<desktop file> [I<package name>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:36
+msgid ""
+"B<desktop2menu> generates a skeleton menu file from the supplied "
+"freedesktop.org desktop file."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:39
+msgid ""
+"The package name to be used in the menu file may be passed as an additional "
+"argument. If it is not supplied then B<desktop2menu> will attempt to derive "
+"the package name from the data in the desktop file."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:45
+msgid ""
+"This program is Copyright (C) 2007 by Sune Vuorela <debian@pusling.com>. It "
+"was modified by Adam D. Barratt <adam@adam-barratt.org.uk> for the "
+"devscripts package. This program comes with ABSOLUTELY NO WARRANTY. You "
+"are free to redistribute this code under the terms of the GNU General Public "
+"License, version 2 or later."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:54
+msgid ""
+"Sune Vuorela <debian@pusling.com> with modifications by Adam D. Barratt "
+"<adam@adam-barratt.org.uk>"
+msgstr ""
+
+#. type: TH
+#: ../scripts/dep3changelog.1:1
+#, no-wrap
+msgid "DEP3CHANGELOG"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:4
+msgid "dep3changelog - generate a changelog entry from a DEP3-style patch header"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:6
+msgid "B<dep3changelog> I<patch> [I<patch> ...] [I<options>] [-- [I<dch_options>]]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:15
+msgid ""
+"B<dep3changelog> extracts the DEP3 patch headers from the given I<patch> "
+"files and builds a changelog entry for each patch. If the patch author "
+"differs from the one detected from the B<DEBEMAIL>, B<NAME>, B<DEBEMAIL>, or "
+"B<EMAIL> environment variables, ``Thanks to I<author> E<lt>I<email>E<gt>'' "
+"is added to the changelog entry for that patch. Any B<bug-debian> or "
+"B<bug-ubuntu> fields are added as ``Closes'' to the changelog entry. The "
+"generated changelog entries are passed to B<debchange> as an argument along "
+"with the given I<dch_options>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:28
+msgid "Steve Langasek E<lt>vorlon@debian.orgE<gt>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:29 ../scripts/list-unreleased.1:21
+msgid "B<debchange>(1)"
+msgstr ""
+
+#. type: TH
+#: ../scripts/devscripts.1:1
+#, no-wrap
+msgid "DEVSCRIPTS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:4
+msgid "devscripts - scripts to ease the lives of Debian developers"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:12
+msgid ""
+"The B<devscripts> package provides a collection of scripts which may be of "
+"use to Debian developers and others wishing to build Debian packages. For a "
+"summary of the available scripts, please see the file "
+"I</usr/share/doc/devscripts/README.gz>, and for full details, please see the "
+"individual manpages. They are contributed by multiple developers; for "
+"details of the authors, please see the code or manpages."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:16
+msgid ""
+"Also, the directory I</usr/share/doc/devscripts/examples> contains examples "
+"of B<procmail> and B<exim> scripts for sorting mail arriving to Debian "
+"mailing lists."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:20
+msgid ""
+"Several scripts of the devscripts suite use the following environment "
+"variables. Check the man pages of individual scripts for more details on how "
+"the variables are used."
+msgstr ""
+
+#. type: IX
+#: ../scripts/devscripts.1:20
+#, no-wrap
+msgid "Header"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:21
+#, no-wrap
+msgid "\\s-1DEBEMAIL\\s0"
+msgstr ""
+
+#. type: IX
+#: ../scripts/devscripts.1:22 ../scripts/devscripts.1:25
+#, no-wrap
+msgid "Item"
+msgstr ""
+
+#. type: IX
+#: ../scripts/devscripts.1:22
+#, no-wrap
+msgid "DEBEMAIL"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:24
+msgid "Email of the person acting on a given Debian package via devscripts."
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:24
+#, no-wrap
+msgid "\\s-1DEBFULLNAME\\s0"
+msgstr ""
+
+#. type: IX
+#: ../scripts/devscripts.1:25
+#, no-wrap
+msgid "DEBFULLNAME"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:28
+msgid ""
+"Full name (first + family) of the person acting on a given Debian package "
+"via devscripts."
+msgstr ""
+
+#. type: SH
+#: ../scripts/devscripts.1:28
+#, no-wrap
+msgid "SCRIPTS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:31
+msgid ""
+"Here is the complete list of available devscripts. See their man pages for "
+"additional documentation."
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:31
+#, no-wrap
+msgid "I<annotate-output>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:33
+msgid ""
+"run a command and prepend time and stream (O for stdout, E for stderr) for "
+"every line of output"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:33
+#, no-wrap
+msgid "I<archpath>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:35
+msgid "print tla/Bazaar package names [tla | bazaar]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:35
+#, no-wrap
+msgid "I<bts>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:37
+msgid ""
+"a command-line tool for manipulating the BTS [www-browser, "
+"libauthen-sasl-perl, libnet-smtp-ssl-perl, libsoap-lite-perl, libwww-perl, "
+"bsd-mailx | mailx]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:37
+#, no-wrap
+msgid "I<build-rdeps>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:39
+msgid "search for all packages that build-depend on a given package [dctrl-tools]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:39
+#, no-wrap
+msgid "I<chdist>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:41
+msgid "tool to easily play with several distributions [dctrl-tools]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:41
+#, no-wrap
+msgid "I<checkbashisms>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:43
+msgid "check whether a /bin/sh script contains any common bash-specific contructs"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:43
+#, no-wrap
+msgid "I<cowpoke>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:45
+msgid ""
+"upload a Debian source package to a cowbuilder host and build it, optionally "
+"also signing and uploading the result to an incoming queue [ssh-client]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:45
+#, no-wrap
+msgid "I<cvs-debi, cvs-debc>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:47
+msgid ""
+"wrappers around debi and debc respectively (see below) which allow them to "
+"be called from the CVS working directory [cvs-buildpackage]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:47
+#, no-wrap
+msgid "I<cvs-debrelease>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:49
+msgid ""
+"wrapper around debrelease which allows it to be called from the CVS working "
+"directory [cvs-buildpackage, dupload | dput, ssh-client]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:49
+#, no-wrap
+msgid "I<cvs-debuild>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:51
+msgid ""
+"wrapper for cvs-buildpackage to use debuild as its package building program "
+"[cvs-buildpackage, fakeroot, lintian, gnupg]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:51
+#, no-wrap
+msgid "I<dcmd>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:53
+msgid ""
+"run a given command replacing the name of a .changes or .dsc file with each "
+"of the files referenced therein"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:53
+#, no-wrap
+msgid "I<dcontrol>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:55
+msgid ""
+"remotely query package and source control files for all Debian distributions "
+"[liburl-perl, libwww-perl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:55
+#, no-wrap
+msgid "I<dd-list>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:57
+msgid "given a list of packages, pretty-print it ordered by maintainer"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:57
+#, no-wrap
+msgid "I<debc>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:59
+msgid "display the contents of just-built .debs"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:59
+#, no-wrap
+msgid "I<debchange/dch>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:61
+msgid ""
+"automagically add entries to debian/changelog files [libdistro-info-perl, "
+"libparse-debcontrol-perl, libsoap-lite-perl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:61
+#, no-wrap
+msgid "I<debcheckout>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:63
+msgid "checkout the development repository of a Debian package"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:63
+#, no-wrap
+msgid "I<debclean>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:65
+msgid "clean a Debian source tree [fakeroot]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:65
+#, no-wrap
+msgid "I<debcommit>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:67
+msgid ""
+"commit changes to cvs, darcs, svn, svk, tla, bzr, git, or hg, basing commit "
+"message on changelog [cvs | darcs | subversion | svk | tla | bzr | git-core "
+"| mercurial, libtimedate-perl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:67
+#, no-wrap
+msgid "I<debdiff>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:69
+msgid ""
+"compare two versions of a Debian package to check for added and removed "
+"files. Use the debbindiff package for deep comparisons. [wdiff, patchutils]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:69
+#, no-wrap
+msgid "I<debi>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:71
+msgid "install a just-built package"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:71
+#, no-wrap
+msgid "I<debpkg>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:73
+msgid "dpkg wrapper to be able to manage/test packages without su"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:73
+#, no-wrap
+msgid "I<debrelease>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:75
+msgid "wrapper around dupload or dput [dupload | dput, ssh-client]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:75
+#, no-wrap
+msgid "I<debsign, debrsign>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:77
+msgid ""
+"sign a .changes/.dsc pair without needing any of the rest of the package to "
+"be present; can sign the pair remotely or fetch the pair from a remote "
+"machine for signing [gnupg, debian-keyring, ssh-client]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:77
+#, no-wrap
+msgid "I<debsnap>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:79
+msgid "grab packages from http://snapshot.debian.org [libwww-perl, libjson-perl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:79
+#, no-wrap
+msgid "I<debuild>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:81
+msgid ""
+"wrapper to build a package without having to su or worry about how to invoke "
+"dpkg to build using fakeroot. Also deals with common environment problems, "
+"umask etc. [fakeroot, lintian, gnupg]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:81
+#, no-wrap
+msgid "I<deb-reversion>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:83
+msgid ""
+"increase a binary package version number and repacks the package, useful for "
+"porters and the like"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:83
+#, no-wrap
+msgid "I<dep3changelog>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:85
+msgid "generate a changelog entry from a DEP3-style patch header"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:85
+#, no-wrap
+msgid "I<desktop2menu>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:87
+msgid ""
+"given a freedesktop.org desktop file, generate a skeleton for a menu file "
+"[libfile-desktopentry-perl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:87
+#, no-wrap
+msgid "I<dget>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:89
+msgid "download Debian source and binary packages [wget | curl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:89
+#, no-wrap
+msgid "I<diff2patches>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:91
+msgid ""
+"extract patches from a .diff.gz file placing them under debian/ or, if "
+"present, debian/patches [patchutils]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:91
+#, no-wrap
+msgid "I<dpkg-depcheck, dpkg-genbuilddeps>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:93
+msgid ""
+"determine the packages used during the build of a Debian package; useful for "
+"determining the Build-Depends control field needed [build-essential, strace]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:93
+#, no-wrap
+msgid "I<dscextract>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:95
+msgid "extract a single file from a Debian source package [patchutils]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:95
+#, no-wrap
+msgid "I<dscverify>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:97
+msgid ""
+"verify the integrity of a Debian package from the .changes or .dsc files "
+"[gnupg, debian-keyring, libdigest-md5-perl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:97
+#, no-wrap
+msgid "I<edit-patch>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:99
+msgid ""
+"add/edit a patch for a source package and commit the changes [quilt | dpatch "
+"| cdbs]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:99
+#, no-wrap
+msgid "I<getbuildlog>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:101
+msgid "download package build logs from Debian auto-builders [wget]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:101
+#, no-wrap
+msgid "I<grep-excuses>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:103
+msgid ""
+"grep the update_excuses.html file for your packages [libterm-size-perl, "
+"wget, w3m]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:103
+#, no-wrap
+msgid "I<licensecheck>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:105
+msgid "attempt to determine the license of source files"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:105
+#, no-wrap
+msgid "I<list-unreleased>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:107
+msgid "search for unreleased packages"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:107
+#, no-wrap
+msgid "I<manpage-alert>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:109
+msgid "locate binaries without corresponding manpages [man-db]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:109
+#, no-wrap
+msgid "I<mass-bug>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:111
+msgid "mass-file bug reports [bsd-mailx | mailx]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:111
+#, no-wrap
+msgid "I<mergechanges>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:113
+msgid ""
+"merge .changes files from the same release but built on different "
+"architectures"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:113
+#, no-wrap
+msgid "I<mk-build-deps>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:115
+msgid ""
+"given a package name and/or control file, generate a binary package which "
+"may be installed to satisfy the build-dependencies of the given package "
+"[equivs]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:115
+#, no-wrap
+msgid "I<mk-origtargz>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:117
+msgid ""
+"rename upstream tarball, optionally changing the compression and removing "
+"unwanted files [unzip, xz-utils, file]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:117
+#, no-wrap
+msgid "I<namecheck>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:119
+msgid "check project names are not already taken"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:119
+#, no-wrap
+msgid "I<nmudiff>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:121
+msgid ""
+"mail a diff of the current package against the previous version to the BTS "
+"to assist in tracking NMUs [patchutils, mutt]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:121
+#, no-wrap
+msgid "I<origtargz>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:123
+msgid ""
+"fetch the orig tarball of a Debian package from various sources, and unpack "
+"it"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:123
+#, no-wrap
+msgid "I<plotchangelog>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:125
+msgid "view a nice plot of the data in a changelog file [libtimedate-perl, gnuplot]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:125
+#, no-wrap
+msgid "I<pts-subscribe>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:127
+msgid "subscribe to the PTS for a limited period of time [bsd-mailx | mailx, at]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:127
+#, no-wrap
+msgid "I<rc-alert>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:129
+msgid "list installed packages which have release-critical bugs [wget | curl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:129
+#, no-wrap
+msgid "I<rmadison>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:131
+msgid ""
+"remotely query the Debian archive database about packages [liburi-perl, wget "
+"| curl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:131
+#, no-wrap
+msgid "I<sadt>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:133
+msgid "run DEP-8 tests [python3-debian]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:133
+#, no-wrap
+msgid "I<suspicious-source>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:135
+msgid "output a list of files which are not common source files [python3-magic]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:135
+#, no-wrap
+msgid "I<svnpath>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:137
+msgid "print Subversion repository paths [subversion]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:137
+#, no-wrap
+msgid "I<tagpending>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:139
+msgid ""
+"run from a Debian source tree and tag bugs that are to be closed in the "
+"latest changelog as pending [libsoap-lite-perl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:139
+#, no-wrap
+msgid "I<transition-check>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:141
+msgid ""
+"check a list of source packages for involvement in transitions for which "
+"uploads to unstable are currently blocked [libwww-perl, libyaml-syck-perl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:141
+#, no-wrap
+msgid "I<uscan>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:143
+msgid ""
+"scan upstream sites for new releases of packages [gpgv, gnupg, "
+"liblwp-protocol-https-perl, libwww-perl, unzip, xz-utils, file]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:143
+#, no-wrap
+msgid "I<uupdate>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:145
+msgid "integrate upstream changes into a source package [patch]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:145
+#, no-wrap
+msgid "I<what-patch>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:147
+msgid "determine what patch system, if any, a source package is using [patchutils]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:147
+#, no-wrap
+msgid "I<whodepends>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:149
+msgid "check which maintainers' packages depend on a package"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:149
+#, no-wrap
+msgid "I<who-uploads>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:151
+msgid ""
+"determine the most recent uploaders of a package to the Debian archive "
+"[gnupg, debian-keyring, debian-maintainers, wget]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:151
+#, no-wrap
+msgid "I<wnpp-alert>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:153
+msgid "list installed packages which are orphaned or up for adoption [wget | curl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:153
+#, no-wrap
+msgid "I<wnpp-check>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:155
+msgid ""
+"check whether there is an open request for packaging or intention to package "
+"bug for a package [wget | curl]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:155
+#, no-wrap
+msgid "I<who-permits-upload>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:157
+msgid ""
+"Retrieve information about Debian Maintainer access control lists [gnupg, "
+"libencode-locale-perl, libparse-debcontrol-perl, libwww-perl, "
+"debian-keyring]"
+msgstr ""
+
+#. type: IP
+#: ../scripts/devscripts.1:157
+#, no-wrap
+msgid "I<wrap-and-sort>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.1:158
+msgid "wrap long lines and sort items in packaging files [python3-debian]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:510
+msgid "dget -- Download Debian source and binary packages"
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:516
+msgid "B<dget> [I<options>] I<URL> ..."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:518
+msgid "B<dget> [I<options>] [B<--all>] I<package>[B<=>I<version>] ..."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:524
+msgid ""
+"B<dget> downloads Debian packages. In the first form, B<dget> fetches the "
+"requested URLs. If this is a .dsc or .changes file, then B<dget> acts as a "
+"source-package aware form of B<wget>: it also fetches any files referenced "
+"in the .dsc/.changes file. The downloaded source is then checked with "
+"B<dscverify> and, if successful, unpacked by B<dpkg-source>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:531
+msgid ""
+"In the second form, B<dget> downloads a I<binary> package (i.e., a I<.deb> "
+"file) from the Debian mirror configured in /etc/apt/sources.list(.d). "
+"Unlike B<apt-get install -d>, it does not require root privileges, writes to "
+"the current directory, and does not download dependencies. If a version "
+"number is specified, this version of the package is requested. With "
+"B<--all>, the list of all binaries for the source package I<package> is "
+"extracted from the output of C<apt-cache showsrc package>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:540
+msgid ""
+"In both cases dget is capable of getting several packages and/or URLs at "
+"once."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:543
+msgid ""
+"(Note that I<.udeb> packages used by debian-installer are located in "
+"separate packages files from I<.deb> packages. In order to use I<.udebs> "
+"with B<dget>, you will need to have configured B<apt> to use a packages file "
+"for I<component>/I<debian-installer>)."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:548
+msgid ""
+"Before downloading files listed in .dsc and .changes files, and before "
+"downloading binary packages, B<dget> checks to see whether any of these "
+"files already exist. If they do, then their md5sums are compared to avoid "
+"downloading them again unnecessarily. B<dget> also looks for matching files "
+"in I</var/cache/apt/archives> and directories given by the B<--path> option "
+"or specified in the configuration files (see below). Finally, if "
+"downloading (.orig).tar.gz or .diff.gz files fails, dget consults B<apt-get "
+"source --print-uris>. Download backends used are B<curl> and B<wget>, "
+"looked for in that order."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:558
+msgid ""
+"B<dget> was written to make it easier to retrieve source packages from the "
+"web for sponsor uploads. For checking the package with B<debdiff>, the last "
+"binary version is available via B<dget> I<package>, the last source version "
+"via B<apt-get source> I<package>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:569
+msgid ""
+"Interpret I<package> as a source package name, and download all binaries as "
+"found in the output of \"apt-cache showsrc I<package>\"."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:572
+msgid "B<-b>, B<--backup>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:574
+msgid "Move files that would be overwritten to I<./backup>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:578
+msgid "Suppress B<wget>/B<curl> non-error output."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:580 ../scripts/origtargz.pl:129
+msgid "B<-d>, B<--download-only>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:582
+msgid ""
+"Do not run B<dpkg-source -x> on the downloaded source package. This can "
+"only be used with the first method of calling B<dget>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:585
+msgid "B<-x>, B<--extract>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:587
+msgid ""
+"Run B<dpkg-source -x> on the downloaded source package to unpack it. This "
+"option is the default and can only be used with the first method of calling "
+"B<dget>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:591
+msgid "B<-u>, B<--allow-unauthenticated>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:593
+msgid ""
+"Do not attempt to verify the integrity of downloaded source packages using "
+"B<dscverify>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:596
+msgid "B<--build>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:598
+msgid "Run B<dpkg-buildpackage -b -uc> on the downloaded source package."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:600
+msgid "B<--path> I<DIR>[B<:>I<DIR> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:602
+msgid ""
+"In addition to I</var/cache/apt/archives>, B<dget> uses the colon-separated "
+"list given as argument to B<--path> to find files with a matching md5sum. "
+"For example: \"--path /srv/pbuilder/result:/home/cb/UploadQueue\". If DIR "
+"is empty (i.e., \"--path ''\" is specified), then any previously listed "
+"directories or directories specified in the configuration files will be "
+"ignored. This option may be specified multiple times, and all of the "
+"directories listed will be searched; hence, the above example could have "
+"been written as: \"--path /srv/pbuilder/result --path "
+"/home/cb/UploadQueue\"."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:613
+msgid "B<--insecure>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:615
+msgid "Allow SSL connections to untrusted hosts."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:617
+msgid "B<--no-cache>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:619
+msgid "Bypass server-side HTTP caches by sending a B<Pragma: no-cache> header."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:641
+msgid "B<DGET_PATH>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:643
+msgid ""
+"This can be set to a colon-separated list of directories in which to search "
+"for files in addition to the default I</var/cache/apt/archives>. It has the "
+"same effect as the B<--path> command line option. It is not set by default."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:648
+msgid "B<DGET_UNPACK>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:650
+msgid ""
+"Set to 'no' to disable extracting downloaded source packages. Default is "
+"'yes'."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dget.pl:653
+msgid "B<DGET_VERIFY>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:655
+msgid ""
+"Set to 'no' to disable checking signatures of downloaded source packages. "
+"Default is 'yes'."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:662
+msgid ""
+"Download all I<.deb> files for the previous version of a package and run "
+"B<debdiff> on them:"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/dget.pl:665
+#, no-wrap
+msgid ""
+" dget --all mypackage=1.2-1\n"
+" debdiff --from *_1.2-1_*.deb --to *_1.2-2_*.deb\n"
+"\n"
+msgstr ""
+
+#. type: =head1
+#: ../scripts/dget.pl:668
+msgid "BUGS AND COMPATIBILITY"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:670
+msgid "B<dget> I<package> should be implemented in B<apt-get install -d>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:672
+msgid ""
+"Before devscripts version 2.10.17, the default was not to extract the "
+"downloaded source. Set DGET_UNPACK=no to revert to the old behaviour."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:677
+msgid ""
+"This program is Copyright (C) 2005-2013 by Christoph Berg "
+"<myon@debian.org>. Modifications are Copyright (C) 2005-06 by Julian Gilbey "
+"<jdg@debian.org>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/dget.pl:685
+msgid ""
+"B<apt-get>(1), B<curl>(1), B<debcheckout>(1), B<debdiff>(1), "
+"B<dpkg-source>(1), B<wget>(1)"
+msgstr ""
+
+#. type: TH
+#: ../scripts/diff2patches.1:1
+#, no-wrap
+msgid "diff2patches"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:1 ../scripts/diff2patches.1:50
+#, no-wrap
+msgid "Raphael Geissert E<lt>atomo64@gmail.comE<gt>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:5
+msgid "diff2patches - Extract non-debian/ patches from .diff.gz files"
+msgstr ""
+
+#. type: SH
+#: ../scripts/diff2patches.1:5
+#, no-wrap
+msgid "SYNTAX"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:8
+msgid "B<diff2patches >I<filename>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:10
+msgid "B<diff2patches --help>|B<--version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:16
+msgid ""
+"Extracts patches from .diff.gz which apply to files outside the ``debian/'' "
+"directory scope. A patch is created for each modified file. Each patch is "
+"named according to the path of the modified file, with ``/'' replaced by "
+"``___'', and an extension of ``.patch''."
+msgstr ""
+
+#. type: TP
+#: ../scripts/diff2patches.1:18
+#, no-wrap
+msgid "I<filename>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:22
+msgid ""
+"Extract patches from I<filename> which apply outside the ``debian/'' "
+"directory."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:25
+msgid "Output help information and exit."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:28
+msgid "Output version information and exit."
+msgstr ""
+
+#. type: TP
+#: ../scripts/diff2patches.1:29
+#, no-wrap
+msgid "I<debian/control>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:32
+msgid "Existence of this file is tested before any patch is extracted."
+msgstr ""
+
+#. type: TP
+#: ../scripts/diff2patches.1:32
+#, no-wrap
+msgid "I<debian/>"
+msgstr ""
+
+#. type: TQ
+#: ../scripts/diff2patches.1:34
+#, no-wrap
+msgid "I<debian/patches/>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:40
+msgid ""
+"Patches are extracted to one of these directories. ``debian/patches/'' is "
+"preferred, if it exists. If I<DEB_PATCHES> is present in the environment, "
+"it will override this behavior (see ``ENVIRONMENT VARIABLES'' section "
+"below)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/diff2patches.1:41
+#, no-wrap
+msgid "B<DEB_PATCHES>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:45
+msgid ""
+"When defined and points to an existing directory, patches are extracted in "
+"that directory and not under ``debian/'' nor ``debian/patches/''."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:48
+msgid "B<combinediff>(1)"
+msgstr ""
+
+#. type: TH
+#: ../scripts/dpkg-depcheck.1:1
+#, no-wrap
+msgid "DPKG-DEPCHECK"
+msgstr ""
+
+#. type: TH
+#: ../scripts/dpkg-depcheck.1:1
+#, no-wrap
+msgid "March 2002"
+msgstr ""
+
+#. type: TH
+#: ../scripts/dpkg-depcheck.1:1
+#, no-wrap
+msgid "dpkg-depcheck"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:4
+msgid "dpkg-depcheck - determine packages used to execute a command"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:6
+msgid "B<dpkg-depcheck> [I<options>] I<command>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:15
+msgid ""
+"This program runs the specified command under B<strace> and then determines "
+"and outputs the packages used in the process. The list can be trimmed in "
+"various ways as described in the options below. A good example of this "
+"program would be the command B<dpkg-depcheck -b debian/rules build>, which "
+"would give a good first approximation to the Build-Depends line needed by a "
+"Debian package. Note, however, that this does I<not> give any direct "
+"information on versions required or architecture-specific packages."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:22
+msgid ""
+"Report all packages used to run I<command>. This is the default behaviour. "
+"If used in conjunction with B<-b>, B<-d> or B<-m>, gives additional "
+"information on those packages skipped by these options."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:22
+#, no-wrap
+msgid "B<-b>, B<--build-depends>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:26
+msgid ""
+"Do not report any build-essential or essential packages used, or any of "
+"their (direct or indirect) dependencies."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:26
+#, no-wrap
+msgid "B<-d>, B<--ignore-dev-deps>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:30
+msgid ""
+"Do not show packages used which are direct dependencies of I<-dev> packages "
+"used. This implies B<-b>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:30
+#, no-wrap
+msgid "B<-m>, B<--min-deps>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:34
+msgid ""
+"Output a minimal set of packages needed, taking into account direct "
+"dependencies. Using B<-m> implies B<-d> and also B<-b>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:34
+#, no-wrap
+msgid "B<-C>, B<--C-locale>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:37
+msgid "Run I<command> with the C locale."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:37
+#, no-wrap
+msgid "B<--no-C-locale>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:40
+msgid "Don't change locale when running I<command>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:40
+#, no-wrap
+msgid "B<-l>, B<--list-files>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:43
+msgid "Also report the list of files used in each package."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:43
+#, no-wrap
+msgid "B<--no-list-files>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:47
+msgid "Do not report the files used in each package. Cancels a B<-l> option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:47
+#, no-wrap
+msgid "B<-o>, B<--output=>I<FILE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:50
+msgid "Output the package diagnostics to I<FILE> instead of stdout."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:50
+#, no-wrap
+msgid "B<-O>, B<--strace-output=>I<FILE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:54
+msgid ""
+"Write the B<strace> output to I<FILE> when tracing I<command> instead of "
+"using a temporary file."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:54
+#, no-wrap
+msgid "B<-I>, B<--strace-input=>I<FILE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:59
+msgid ""
+"Get B<strace> output from I<FILE> instead of tracing I<command>; B<strace> "
+"must have be run with the B<-f -q> options for this to work."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:59
+#, no-wrap
+msgid "B<-f>, B<--features=>I<LIST>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:65
+msgid ""
+"Enable or disabled features given in the comma-separated I<LIST> as "
+"follows. A feature is enabled with I<+feature> or just I<feature> and "
+"disabled with I<-feature>. The currently recognised features are:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:67
+#, no-wrap
+msgid "B<warn-local>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:71
+msgid ""
+"Warn if files in I</usr/local> or I</var/local> are used. Enabled by "
+"default."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:71
+#, no-wrap
+msgid "B<discard-check-version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:76
+msgid ""
+"Discards I<execve> when only a I<--version> argument is given to the "
+"program; this works around some configure scripts that check for binaries "
+"they don't actually use. Enabled by default."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:76
+#, no-wrap
+msgid "B<trace-local>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:81
+msgid ""
+"Also try to identify files which are accessed in I</usr/local> and "
+"I</var/local>. Not usually very useful, as Debian does not place files in "
+"these directories. Disabled by default."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:81
+#, no-wrap
+msgid "B<catch-alternatives>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:85
+msgid ""
+"Warn about access to files controlled by the Debian I<alternatives> "
+"mechanism. Enabled by default."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:85
+#, no-wrap
+msgid "B<discard-sgml-catalogs>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:90
+msgid ""
+"Discards access to SGML catalogs; some SGML tools read all the registered "
+"catalogs at startup. Files matching the regexp /usr/share/sgml/.*\\e.cat "
+"are recognised as catalogs. Enabled by default."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:99
+msgid "Display usage information and exit."
+msgstr ""
+
+#. type: =item
+#: ../scripts/dpkg-depcheck.1:99 ../scripts/mk-build-deps.pl:83
+#, no-wrap
+msgid "B<-v>, B<--version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:102
+msgid "Display version and copyright information and exit."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:108 ../scripts/grep-excuses.1:34
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced in that order to set configuration variables. Command line options "
+"can be used to override configuration file settings. Environment variable "
+"settings are ignored for this purpose. The currently recognised variable "
+"is:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:108
+#, no-wrap
+msgid "B<DPKG_DEPCHECK_OPTIONS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:112
+msgid ""
+"These are options which are parsed before the command-line options. For "
+"example,"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:114
+msgid "DPKG_DEPCHECK_OPTIONS=\"-b -f-catch-alternatives\""
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:118
+msgid ""
+"which passes these options to B<dpkg-depcheck> before any command-line "
+"options are processed. You are advised not to try tricky quoting, because "
+"of the vagaries of shell quoting!"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:123
+msgid "B<dpkg>(1), B<strace>(1), B<devscripts.conf>(5), B<update-alternatives>(8)"
+msgstr ""
+
+#. type: SH
+#: ../scripts/dpkg-depcheck.1:123
+#, no-wrap
+msgid "COPYING"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:130
+msgid ""
+"Copyright 2001 Bill Allombert E<lt>ballombe@debian.orgE<gt>. Modifications "
+"copyright 2002,2003 Julian Gilbey E<lt>jdg@debian.orgE<gt>. "
+"B<dpkg-depcheck> is free software, covered by the GNU General Public "
+"License, version 2 or (at your option) any later version, and you are "
+"welcome to change it and/or distribute copies of it under certain "
+"conditions. There is absolutely no warranty for B<dpkg-depcheck>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/dpkg-genbuilddeps.1:1
+#, no-wrap
+msgid "DPKG-GENBUILDDEPS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:4
+msgid "dpkg-genbuilddeps - generate a list of packages used to build this package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:6
+msgid "B<dpkg-genbuilddeps> [I<arg> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:19
+msgid ""
+"This program is a wrapper around B<dpkg-depcheck>(1). It should be run from "
+"the top of a Debian build tree. It calls B<dpkg-buildpackage> with any "
+"arguments given on the command line, and by tracing the execution of this, "
+"it determines which non-essential packages were used during the package "
+"building. This can be useful in determining what the I<Build-Depends> "
+"control fields should contain. It does not determine which packages were "
+"used for the arch independent parts of the build and which for the arch "
+"dependent parts, not does it attempt to determine which versions of packages "
+"are required. It should be able to run under B<fakeroot> rather than being "
+"run as root, as B<fakeroot dpkg-genbuilddeps>, or B<dpkg-genbuilddeps "
+"-rfakeroot>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:23
+msgid ""
+"This program requires the build-essential package to be installed. If it is "
+"not, please use B<dpkg-depcheck> directly, with a command such as"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:25
+#, no-wrap
+msgid " dpkg-depcheck --all dpkg-buildpackage -us -uc -b -rfakeroot ...\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:27
+msgid "All this program itself does is essentially to run the command:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:29
+#, no-wrap
+msgid " dpkg-depcheck -b dpkg-buildpackage -us -uc -b -rfakeroot [arg ...]\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:33
+msgid "B<dpkg-depcheck>(1), B<fakeroot>(1)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:36
+msgid "B<The Debian Policy Manual,> sections on Build-Depends etc."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:40
+msgid ""
+"The original B<dpkg-genbuilddeps> was written by Ben Collins "
+"E<lt>bcollins@debian.orgE<gt>. The current version is a simple wrapper "
+"around B<dpkg-depcheck> written by Bill Allombert "
+"E<lt>ballombe@debian.orgE<gt>. This manual page was written by Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../doc/edit-patch.1:1
+#, no-wrap
+msgid "EDIT-PATCH"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/edit-patch.1:5
+msgid ""
+"B<edit-patch>, B<add-patch> - tool for preparing patches for Debian source "
+"packages"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/edit-patch.1:8
+msgid "B<edit-patch> I<path/to/patch>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/edit-patch.1:10
+msgid "B<add-patch> I<path/to/patch>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/edit-patch.1:18
+msgid ""
+"B<edit-patch> is a wrapper script around the Quilt, CDBS, and dpatch patch "
+"systems. It simplifies the process of preparing and editing patches to "
+"Debian source packages and allows the user to not have to be concerned with "
+"which patch system is in use. Run from inside the root directory of the "
+"source package, B<edit-patch> can be used to edit existing patches located "
+"in I<debian/patches>."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/edit-patch.1:25
+msgid ""
+"It can also be used to incorporate new patches. If pointed at a patch not "
+"already present, it will copy the patch to I<debian/patches> in the correct "
+"format for the patch system in use. Next, the patch is applied and a "
+"subshell is opened in order to edit the patch. Typing B<exit> or pressing "
+"Ctrl-d will close the subshell and launch an editor to record the "
+"I<debian/changelog> entry."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/edit-patch.1:29
+msgid ""
+"B<edit-patch> is integrated with the Bazaar and Git version control "
+"systems. The patch will be automatically added to the tree, and the "
+"I<debian/changelog> entry will be used as the commit message."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/edit-patch.1:32
+msgid ""
+"If no patch system is present, the patch is applied inline, and a copy is "
+"stored in I<debian/patches-applied>."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/edit-patch.1:36
+msgid ""
+"B<add-patch> is the non-interactive version of B<edit-patch>. The patch "
+"will be incorporated but no editor or subshell will be spawned."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/edit-patch.1:40
+msgid ""
+"B<edit-patch> was written by Daniel Holbach "
+"E<lt>daniel.holbach@canonical.comE<gt>, Michael Vogt "
+"E<lt>michael.vogt@canonical.comE<gt>, and David Futcher "
+"E<lt>bobbo@ubuntu.comE<gt>."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/edit-patch.1:42
+msgid ""
+"This manual page was written by Andrew Starr-Bochicchio "
+"E<lt>a.starr.b@gmail.comE<gt>."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/edit-patch.1:43
+msgid ""
+"Both are released under the terms of the GNU General Public License, version "
+"3."
+msgstr ""
+
+#. type: TH
+#: ../scripts/dscextract.1:1
+#, no-wrap
+msgid "DSCEXTRACT"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscextract.1:4
+msgid "dscextract - extract a single file from a Debian source package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscextract.1:6
+msgid "B<dscextract> [I<options>] I<dscfile> I<file>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscextract.1:11
+msgid ""
+"B<dscextract> reads a single file from a Debian source package. The idea is "
+"to only look into I<.diff.gz> files (source format 1.0) or "
+"I<.debian.tar.gz/bz2> files (source format 3.0) where possible, hence "
+"avoiding to unpack large tarballs. It is most useful for files in the "
+"I<debian/> subdirectory."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscextract.1:14
+msgid ""
+"I<file> is relative to the first level directory contained in the package, "
+"i.e. with the first component stripped."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dscextract.1:15
+#, no-wrap
+msgid "B<-f>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscextract.1:20
+msgid ""
+"\"Fast\" mode. For source format 1.0, avoid to fall back scanning the "
+"I<.orig.tar.gz> file if I<file> was not found in the I<.diff.gz>. (For 3.0 "
+"packages, it is assumed that I<debian/*> are exactly the contents of "
+"I<debian.tar.gz/bz2>.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/dscextract.1:21 ../scripts/uscan.1:552 ../scripts/wnpp-check.1:26
+#, no-wrap
+msgid "0"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscextract.1:24
+msgid "I<file> was extracted."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscextract.1:27
+msgid "I<file> was not found in the source package."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscextract.1:30
+msgid "An error occurred, like I<dscfile> was not found."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscextract.1:32
+msgid "dscextract dds_2.1.1+ddd105-2.dsc debian/watch || test $? = 1"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscextract.1:33
+msgid "B<dscextract> was written by Christoph Berg E<lt>myon@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/dscverify.1:1
+#, no-wrap
+msgid "DSCVERIFY"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:4
+msgid "dscverify - verify the validity of a Debian package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:6
+msgid "B<dscverify> [B<--keyring >I<keyring>] ... I<changes_or_dsc_filename> ..."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:17
+msgid ""
+"B<dscverify> checks that the GPG signatures on the given I<.changes> or "
+"I<.dsc> files are good signatures made by keys in the current Debian "
+"keyrings, found in the I<debian-keyring> and I<debian-maintainers> "
+"packages. (Additional keyrings can be specified using the B<--keyring> "
+"option any number of times.) It then checks that the other files listed in "
+"the I<.changes> or I<.dsc> files have the correct sizes and checksums (MD5 "
+"plus SHA1 and SHA256 if the latter are present). The exit status is 0 if "
+"there are no problems and non-zero otherwise."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dscverify.1:18
+#, no-wrap
+msgid "B<--keyring>I< >I<keyring>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:21
+msgid "Add I<keyring> to the list of keyrings to be used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dscverify.1:21 ../scripts/who-uploads.1:25
+#, no-wrap
+msgid "B<--no-default-keyrings>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:24
+msgid "Do not use the default set of keyrings."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dscverify.1:28
+#, no-wrap
+msgid "B<--nosigcheck>, B<--no-sig-check>, B<-u>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:32
+msgid ""
+"Skip the signature verification step. That is, only verify the sizes and "
+"checksums of the files listed in the I<.changes> or I<.dsc> files."
+msgstr ""
+
+#. type: TP
+#: ../scripts/dscverify.1:32 ../scripts/plotchangelog.1:78 ../scripts/uscan.1:459
+#, no-wrap
+msgid "B<--verbose>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:35
+msgid "Do not suppress GPG output."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:49
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. "
+"Environment variable settings are ignored for this purpose. If the first "
+"command line option given is B<--noconf> or B<--no-conf>, then these files "
+"will not be read. The currently recognised variable is:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/dscverify.1:49
+#, no-wrap
+msgid "B<DSCVERIFY_KEYRINGS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:53
+msgid ""
+"This is a colon-separated list of extra keyrings to use in addition to any "
+"specified on the command line."
+msgstr ""
+
+#. type: SH
+#: ../scripts/dscverify.1:53
+#, no-wrap
+msgid "KEYRING"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:60
+msgid ""
+"Please note that the keyring provided by the debian-keyring package can be "
+"slightly out of date. The latest version can be obtained with rsync, as "
+"documented in the README that comes with debian-keyring. If you sync the "
+"keyring to a non-standard location (see below), you can use the "
+"possibilities to specify extra keyrings, by either using the above mentioned "
+"configuration option or the --keyring option."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:62
+msgid "Below is an example for an alias:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:64
+msgid "alias dscverify='dscverify --keyring ~/.gnupg/pubring.gpg'"
+msgstr ""
+
+#. type: SH
+#: ../scripts/dscverify.1:64
+#, no-wrap
+msgid "STANDARD KEYRING LOCATIONS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:67
+msgid ""
+"By default dscverify searches for the debian-keyring in the following "
+"locations:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:69
+msgid "- ~/.gnupg/trustedkeys.gpg"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:71
+msgid "- /org/keyring.debian.org/keyrings/debian-keyring.gpg"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:73
+msgid "- /usr/share/keyrings/debian-keyring.gpg"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:75
+msgid "- /usr/share/keyrings/debian-maintainers.gpg"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:78
+msgid "B<gpg>(1), B<devscripts.conf>(5)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/dscverify.1:82
+msgid ""
+"B<dscverify> was written by Roderick Schertler E<lt>roderick@argon.orgE<gt> "
+"and posted on the debian-devel@lists.debian.org mailing list, with several "
+"modifications by Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/getbuildlog.1:1
+#, no-wrap
+msgid "GETBUILDLOG"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:4
+msgid "getbuildlog - download build logs from Debian auto-builders"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:8
+msgid "B<getbuildlog> I<package> [I<version-pattern>] [I<architecture-pattern>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:17
+msgid ""
+"B<getbuildlog> downloads build logs of I<package> from Debian "
+"auto-builders. It downloads build logs of all versions and for all "
+"architectures if I<version-pattern> and I<architecture-pattern> are not "
+"specified or empty, otherwise only build logs whose versions match "
+"I<version-pattern> and build logs whose architectures match "
+"I<architecture-pattern> will be downloaded. The version and architecture "
+"patterns are interpreted as extended regular expressions as described in "
+"B<grep>(1)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:21
+msgid ""
+"If I<version-pattern> is \"last\" then only the logs for the most recent "
+"version of I<package> found on buildd.debian.org will be downloaded."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:24
+msgid ""
+"If I<version-pattern> is \"last-all\" then the logs for the most recent "
+"version found on each build log index will be downloaded."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:28
+msgid "Show usage information and examples."
+msgstr ""
+
+#. type: TP
+#: ../scripts/getbuildlog.1:32
+#, no-wrap
+msgid "getbuildlog hello 2\\e.2-1 amd64"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:35
+msgid "Download amd64 build log for hello version 2.2-1."
+msgstr ""
+
+#. type: TP
+#: ../scripts/getbuildlog.1:35
+#, no-wrap
+msgid "getbuildlog glibc \"\" mips.*"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:38
+msgid "Download mips(el) build logs of all glibc versions."
+msgstr ""
+
+#. type: TP
+#: ../scripts/getbuildlog.1:38
+#, no-wrap
+msgid "getbuildlog wesnoth .*bpo.*"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:41
+msgid "Download all build logs of backported wesnoth versions."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:42
+msgid "Written by Frank S. Thomas E<lt>fst@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/grep-excuses.1:1
+#, no-wrap
+msgid "GREP-EXCUSES"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:4
+msgid "grep-excuses - search the testing excuses files for a specific maintainer"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:6
+msgid "B<grep-excuses> [I<options>] [I<maintainer>|I<package>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:13
+msgid ""
+"B<grep-excuses> downloads the update_excuses.html file and greps it for the "
+"specified maintainer name. The B<libwww-perl> package is required for this "
+"script. If no name is given on the command line, first the environment "
+"variable B<DEBFULLNAME> is used if it is defined, and failing that, the "
+"configuration variable described below is used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/grep-excuses.1:18
+#, no-wrap
+msgid "B<--wipnity>, B<-w>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:22
+msgid ""
+"Get information from E<lt>https://release.debian.org/migration/E<gt>. A "
+"package name must be given when using this option."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:25 ../scripts/whodepends.1:14
+msgid "Show a brief usage message."
+msgstr ""
+
+#. type: TP
+#: ../scripts/grep-excuses.1:34
+#, no-wrap
+msgid "B<GREP_EXCUSES_MAINTAINER>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:38
+msgid ""
+"The default maintainer, email or package to grep for if none is specified on "
+"the command line."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:40 ../scripts/plotchangelog.1:126
+msgid "B<devscripts.conf>(5)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:42
+msgid ""
+"Joey Hess E<lt>joeyh@debian.orgE<gt>; modifications by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:24
+msgid "licensecheck - simple license checker for source files"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:28
+msgid "B<licensecheck> B<--help>|B<--version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:30
+msgid ""
+"B<licensecheck> [B<--no-conf>] [B<--verbose>] [B<--copyright>] "
+"[B<-l>|B<--lines=>I<N>] [B<-i>|B<--ignore=>I<regex>] "
+"[B<-c>|B<--check=>I<regex>] [B<-m>|B<--machine>] [B<-r>|B<--recursive>] "
+"I<list of files and directories to check>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:37
+msgid ""
+"B<licensecheck> attempts to determine the license that applies to each file "
+"passed to it, by searching the start of the file for text belonging to "
+"various licenses."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:41
+msgid ""
+"If any of the arguments passed are directories, B<licensecheck> will add the "
+"files contained within to the list of files to process."
+msgstr ""
+
+#. type: =item
+#: ../scripts/licensecheck.pl:48
+msgid "B<--verbose>, B<--no-verbose>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:50
+msgid ""
+"Specify whether to output the text being processed from each file before the "
+"corresponding license information."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:53
+msgid "Default is to be quiet."
+msgstr ""
+
+#. type: =item
+#: ../scripts/licensecheck.pl:55
+msgid "B<-l=>I<N>, B<--lines=>I<N>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:57
+msgid ""
+"Specify the number of lines of each file's header which should be parsed for "
+"license information. (Default is 60)."
+msgstr ""
+
+#. type: =item
+#: ../scripts/licensecheck.pl:60
+msgid "B<-i=>I<regex>, B<--ignore=>I<regex>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:62
+msgid ""
+"When processing the list of files and directories, the regular expression "
+"specified by this option will be used to indicate those which should not be "
+"considered (e.g. backup files, VCS metadata)."
+msgstr ""
+
+#. type: =item
+#: ../scripts/licensecheck.pl:66
+msgid "B<-r>, B<--recursive>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:68
+msgid "Specify that the contents of directories should be added recursively."
+msgstr ""
+
+#. type: =item
+#: ../scripts/licensecheck.pl:71
+msgid "B<-c=>I<regex>, B<--check=>I<regex>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:73
+msgid ""
+"Specify a pattern against which filenames will be matched in order to decide "
+"which files to check the license of."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:76
+msgid "The default includes common source files."
+msgstr ""
+
+#. type: =item
+#: ../scripts/licensecheck.pl:78
+msgid "B<--copyright>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:80
+msgid "Also display copyright text found within the file"
+msgstr ""
+
+#. type: =item
+#: ../scripts/licensecheck.pl:82
+msgid "B<-m>, B<--machine>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:84
+msgid ""
+"Display the information in a machine readable way, i.e. in the form "
+"<file><tab><license>[<tab><copyright>] so that it can be easily sorted "
+"and/or filtered, e.g. with the B<awk> and B<sort> commands. Note that using "
+"the B<--verbose> option will kill the readability."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:91
+msgid ""
+"Do not read any configuration files. This can only be used as the first "
+"option given on the command line."
+msgstr ""
+
+#. type: =item
+#: ../scripts/licensecheck.pl:106
+msgid "B<LICENSECHECK_VERBOSE>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:108
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--verbose> command "
+"line parameter being used. The default is I<no>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/licensecheck.pl:111
+msgid "B<LICENSECHECK_PARSELINES>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:113
+msgid ""
+"If this is set to a positive number then the specified number of lines at "
+"the start of each file will be read whilst attempting to determine the "
+"license(s) in use. This is equivalent to the B<--lines> command line "
+"option."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:122
+msgid ""
+"This code is copyright by Adam D. Barratt <I<adam@adam-barratt.org.uk>>, all "
+"rights reserved; based on a script of the same name from the KDE SDK, which "
+"is copyright by <I<dfaure@kde.org>>. This program comes with ABSOLUTELY NO "
+"WARRANTY. You are free to redistribute this code under the terms of the GNU "
+"General Public License, version 2 or later."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:131
+msgid "Adam D. Barratt <adam@adam-barratt.org.uk>"
+msgstr ""
+
+#. type: TH
+#: ../scripts/list-unreleased.1:1
+#, no-wrap
+msgid "LIST-UNRELEASED"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:4
+msgid "list-unreleased - display UNRELEASED packages"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:6
+msgid "B<list-unreleased> [I<arg> ...] [I<path> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:9
+msgid ""
+"Searches for packages whose changelogs indicate there are pending changes "
+"(UNRELEASED) and either lists them or displays the relevant changelog entry."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:12
+msgid ""
+"By default it searches for packages under the current directory. If a path "
+"is specified it will look for packages under that directory instead."
+msgstr ""
+
+#. type: TP
+#: ../scripts/list-unreleased.1:13
+#, no-wrap
+msgid "B<-c>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:16
+msgid "Display pending changes."
+msgstr ""
+
+#. type: TP
+#: ../scripts/list-unreleased.1:16
+#, no-wrap
+msgid "B<-R>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:19
+msgid "Don't recurse into subdirectories looking for packages."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:23
+msgid ""
+"B<list-unreleased> was written by Frans Pop E<lt>elendil@planet.nlE<gt>. "
+"This manual page was written by Joey Hess E<lt>joeyh@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/manpage-alert.1:1
+#, no-wrap
+msgid "MANPAGE-ALERT"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:4
+msgid "manpage-alert - check for binaries without corresponding manpages"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:6
+msgid "B<manpage-alert> [I<path list>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:8
+msgid "B<manpage-alert --help>|B<--version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:11
+msgid ""
+"B<manpage-alert> searches the given list of paths for binaries without "
+"corresponding manpages."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:14
+msgid ""
+"If no paths are specified on the command line, the path list I</bin /sbin "
+"/usr/bin /usr/sbin /usr/games> will be assumed."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:17
+msgid "B<--help>, B<-h> Show a summary of options."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:25
+msgid ""
+"B<manpage-alert> was written by Branden Robinson and modified by Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt> and Adam D. Barratt "
+"E<lt>debian-bts@adam-barratt.org.ukE<gt> (who also wrote this manpage) for "
+"the devscripts package."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:28
+msgid ""
+"This manpage and the associated program are licensed under the terms of the "
+"GPL, version 2 or later."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:23
+msgid "mass-bug - mass-file a bug report against a list of packages"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:27
+msgid ""
+"B<mass-bug> [I<options>] B<--subject=\">I<bug subject>B<\"> I<template "
+"package-list>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:31
+msgid ""
+"mass-bug assists in filing a mass bug report in the Debian BTS on a set of "
+"packages. For each package in the package-list file (which should list one "
+"package per line together with an optional version number separated from the "
+"package name by an underscore), it fills out the template, adds BTS "
+"pseudo-headers, and either displays or sends the bug report."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:37
+msgid ""
+"Warning: Some care has been taken to avoid unpleasant and common mistakes, "
+"but this is still a power tool that can generate massive amounts of bug "
+"report mails. Use it with care, and read the documentation in the "
+"Developer's Reference about mass filing of bug reports first."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/mass-bug.pl:42
+msgid "TEMPLATE"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:44
+msgid ""
+"The template file is the body of the message that will be sent for each bug "
+"report, excluding the BTS pseudo-headers. In the template, #PACKAGE# is "
+"replaced with the name of the package. If a version was specified for the "
+"package, #VERSION# will be replaced by that version."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:49
+msgid ""
+"The components of the version number may be specified using #EPOCH#, "
+"#UPSTREAM_VERSION# and #REVISION#. #EPOCH# includes the trailing colon and "
+"#REVISION# the leading dash so that #EPOCH#UPSTREAM_VERSION##REVISION# is "
+"always the same as #VERSION#."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:54
+msgid ""
+"Note that text in the template will be automatically word-wrapped to 70 "
+"columns, up to the start of a signature (indicated by S<'-- '> at the start "
+"of a line on its own). This is another reason to avoid including BTS "
+"pseudo-headers in your template."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:61
+msgid ""
+"B<mass-bug> examines the B<devscripts> configuration files as described "
+"below. Command line options override the configuration file settings, "
+"though."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mass-bug.pl:67
+msgid "B<--severity=>(B<wishlist>|B<minor>|B<normal>|B<important>|B<serious>|B<grave>|B<critical>)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:69
+msgid "Specify the severity with which bugs should be filed. Default is B<normal>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mass-bug.pl:72
+msgid "B<--display>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:74
+msgid ""
+"Fill out the templates for each package and display them all for "
+"verification. This is the default behavior."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mass-bug.pl:77
+msgid "B<--send>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:79
+msgid "Actually send the bug reports."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mass-bug.pl:81
+msgid "B<--subject=\">I<bug subject>B<\">"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:83
+msgid ""
+"Specify the subject of the bug report. The subject will be automatically "
+"prefixed with the name of the package that the bug is filed against."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mass-bug.pl:86
+msgid "B<--tags>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:88
+msgid "Set the BTS pseudo-header for tags."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mass-bug.pl:90
+msgid "B<--user>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:92
+msgid "Set the BTS pseudo-header for a usertags' user."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mass-bug.pl:94
+msgid "B<--usertags>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:96
+msgid "Set the BTS pseudo-header for usertags."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mass-bug.pl:98
+msgid "B<--source>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:100
+msgid ""
+"Specify that package names refer to source packages rather than binary "
+"packages."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:105
+msgid ""
+"Specify the B<sendmail> command. The command will be split on white space "
+"and will not be passed to a shell. Default is F</usr/sbin/sendmail>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mass-bug.pl:108
+msgid "B<--no-wrap>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:110
+msgid "Do not wrap the template to lines of 70 characters."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:129
+msgid ""
+"B<DEBEMAIL> and B<EMAIL> can be set in the environment to control the email "
+"address that the bugs are sent from."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:517
+msgid "This program is Copyright (C) 2006 by Joey Hess <joeyh@debian.org>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/mergechanges.1:1
+#, no-wrap
+msgid "MERGECHANGES"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:4
+msgid "mergechanges - merge multiple changes files"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:6
+msgid "B<mergechanges> [B<-f>] I<file1 file2> [I<file>...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:13
+msgid ""
+"B<mergechanges> merges two or more I<.changes> files, merging the "
+"Architecture, Description and Files (and Checksums-*, if present) fields of "
+"the two. There are checks made to ensure that the changes files are from "
+"the same source package and version and use the same changes file Format. "
+"The first changes file is used as the basis and the information from the "
+"later ones is merged into it."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:18
+msgid ""
+"The output is normally written to I<stdout>. If the B<-f> option is given, "
+"the output is written to I<package>_I<version>_multi.changes instead, in the "
+"same directory as the first changes file listed."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:21
+msgid ""
+"Gergely Nagy E<lt>algernon@debian.orgE<gt>, modifications by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> and Adam D. Barratt "
+"E<lt>adam@adam-barratt.org.ukE<gt>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:26
+msgid "mk-build-deps - build a package satisfying a package's build-dependencies"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:30
+msgid "B<mk-build-deps> B<--help>|B<--version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:32
+msgid "B<mk-build-deps> [I<options>] I<control file> | I<package name> ..."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:36
+msgid ""
+"Given a I<package name> and/or I<control file>, B<mk-build-deps> will use "
+"B<equivs> to generate a binary package which may be installed to satisfy all "
+"the build dependencies of the given package."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:40
+msgid ""
+"If B<--build-dep> and/or B<--build-indep> are given, then the resulting "
+"binary package(s) will depend solely on the "
+"Build-Depends/Build-Depends-Indep dependencies, respectively."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:48
+msgid "B<-i>, B<--install>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:50
+msgid "Install the generated packages and its build-dependencies."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:52
+msgid "B<-t>, B<--tool>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:54
+msgid ""
+"When installing the generated package use the specified tool. (default: "
+"B<apt-get --no-install-recommends>)"
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:57
+msgid "B<-r>, B<--remove>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:59
+msgid ""
+"Remove the package file after installing it. Ignored if used without the "
+"B<--install> switch."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:62
+msgid "B<-a> I<foo>, B<--arch> I<foo>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:64
+msgid ""
+"If the source package has architecture-specific build dependencies, produce "
+"a package for architecture I<foo>, not for the system architecture. (If the "
+"source package does not have architecture-specific build dependencies, the "
+"package produced is always for the pseudo-architecture B<all>.)"
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:69
+msgid "B<-B>, B<--build-dep>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:71
+msgid ""
+"Generate a package which only depends on the source package's Build-Depends "
+"dependencies."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:74
+msgid "B<-A>, B<--build-indep>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:76
+msgid ""
+"Generate a package which only depends on the source package's "
+"Build-Depends-Indep dependencies."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:87
+msgid "B<-s>, B<--root-cmd>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:89
+msgid ""
+"Use the specified tool to gain root privileges before installing. Ignored "
+"if used without the B<--install> switch."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:96
+msgid ""
+"B<mk-build-deps> is copyright by Vincent Fourmond and was modified for the "
+"devscripts package by Adam D. Barratt <adam@adam-barratt.org.uk>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:99 ../scripts/transition-check.pl:77
+msgid ""
+"This program comes with ABSOLUTELY NO WARRANTY. You are free to "
+"redistribute this code under the terms of the GNU General Public License, "
+"version 2 or later."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:26
+msgid ""
+"mk-origtargz - rename upstream tarball, optionally changing the compression "
+"and removing unwanted files"
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:32
+msgid "B<mk-origtargz> [I<options>] F<foo-1.0.tar.gz>"
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:34
+msgid "B<mk-origtargz> B<--help>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:40
+msgid ""
+"B<mk-origtargz> renames the given file to match what is expected by "
+"B<dpkg-buildpackage>, based on the source package name and version in "
+"F<debian/changelog>. It can convert B<zip> to B<tar>, optionally change the "
+"compression scheme and remove files according to B<Files-Excluded> in "
+"F<debian/copyright>. The resulting file is placed in F<debian/../..>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:46
+msgid ""
+"If the package name is given via the B<--package> option, no information is "
+"read from F<debian/>, and the result file is placed in the current "
+"directory."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:49
+msgid ""
+"B<mk-origtargz> is commonly called via B<uscan>, which first obtains the "
+"upstream tarball."
+msgstr ""
+
+#. type: =head2
+#: ../scripts/mk-origtargz.pl:54
+msgid "Metadata options"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:56
+msgid "The following options extend or replace information taken from F<debian/>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:62
+msgid ""
+"Use I<package> as the name of the Debian source package, and do not require "
+"or use a F<debian/> directory. This option can only be used together with "
+"B<--version>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:66
+msgid ""
+"The default is to use the package name of the first entry in "
+"F<debian/changelog>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:68
+msgid "B<-v>, B<--version> I<version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:70
+msgid ""
+"Use I<version> as the version of the package. This needs to be the upstream "
+"version portion of a full Debian version, i.e. no Debian revision, no epoch."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:72
+msgid ""
+"The default is to use the upstream portion of the version of the first entry "
+"in F<debian/changelog>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:74
+msgid "B<--exclude-file> I<glob>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:76
+msgid ""
+"Remove files matching the given I<glob> from the tarball, as if it was "
+"listed in B<Files-Excluded>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:79
+msgid "B<--copyright-file> I<filename>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:81
+msgid ""
+"Remove files matching the patterns found in I<filename>, which should have "
+"the format of a Debian F<copyright> file (B<Format: "
+"https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/> to be "
+"precise). Errors parsing that file are silently ignored, exactly as it is "
+"the case with F<debian/copyright>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:83
+msgid ""
+"Both the B<--exclude-file> and B<--copyright-file> options amend the list of "
+"patterns found in F<debian/copyright>. If you do not want to read that file, "
+"you will have to use B<--package>."
+msgstr ""
+
+#. type: =head2
+#: ../scripts/mk-origtargz.pl:89
+msgid "Action options"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:91
+msgid ""
+"These options specify what exactly B<mk-origtargz> should do. The options "
+"B<--copy>, B<--rename> and B<--symlink> are mutually exclusive."
+msgstr ""
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:96 ../scripts/uscan.1:397
+#, no-wrap
+msgid "B<--symlink>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:98
+msgid ""
+"Make the resulting file a symlink to the given original file. (This is the "
+"default behaviour.)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:101
+msgid ""
+"If the file has to be modified (because it is a B<zip> file, because of "
+"B<--repack> or B<Files-Excluded>), this option behaves like B<--copy>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:104 ../scripts/uscan.1:402
+#, no-wrap
+msgid "B<--copy>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:106
+msgid ""
+"Make the resulting file a copy of the original file (unless it has to be "
+"modified, of course)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:108 ../scripts/uscan.1:405
+#, no-wrap
+msgid "B<--rename>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:110
+msgid "Rename the original file."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:112
+msgid ""
+"If the file has to be modified (because it is a B<zip> file, because of "
+"B<--repack> or B<Files-Excluded>), this implies that the original file is "
+"deleted afterwards."
+msgstr ""
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:114 ../scripts/uscan.1:408
+#, no-wrap
+msgid "B<--repack>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:116
+msgid ""
+"If the given file is not compressed using the desired format (see "
+"B<--compression>), recompress it."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:119
+msgid "B<-S>, B<--repack-suffix> I<suffix>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:121
+msgid ""
+"If the file has to be modified, because of B<Files-Excluded>, append "
+"I<suffix> to the upstream version."
+msgstr ""
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:123 ../scripts/uscan.1:414
+#, no-wrap
+msgid "B<--compression> [ B<gzip> | B<bzip2> | B<lzma> | B<xz> ]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:125
+msgid ""
+"If B<--repack> is used, or if the given file is a B<zip> file, ensure that "
+"the resulting file is compressed using the given scheme. The default is "
+"B<gzip>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:127
+msgid "B<-C>, B<--directory> I<directory>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:129
+msgid "Put the resulting file in the given directory."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:145
+msgid "B<uscan>(1), B<uupdate>(1)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:149
+msgid ""
+"B<mk-origtargz> and this manpage have been written by Joachim Breitner "
+"<I<nomeata@debian.org>>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/namecheck.pl:5
+msgid "namecheck - Check project names are not already taken."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/namecheck.pl:7
+msgid "ABOUT"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/namecheck.pl:9
+msgid ""
+"This is a simple tool to automate the testing of project names at the most "
+"common Open Source / Free Software hosting environments."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/namecheck.pl:12
+msgid ""
+"Each new project requires a name, and those names are ideally unique. To "
+"come up with names is hard, and testing to ensure they're not already in use "
+"is time-consuming - unless you have a tool such as this one."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/namecheck.pl:16
+msgid "CUSTOMIZATION"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/namecheck.pl:18
+msgid "The script, as is, contains a list of sites, and patterns, to test against."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/namecheck.pl:20
+msgid ""
+"If those patterns aren't sufficient then you may create your own additions "
+"and add them to the script. If you wish to have your own version of the "
+"patterns you may save them into the file ~/.namecheckrc"
+msgstr ""
+
+#. type: =head1
+#: ../scripts/namecheck.pl:24
+msgid "HOMEPAGE"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/namecheck.pl:26
+msgid "The most recent version of this script may be found here:"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/namecheck.pl:28
+msgid "http://mybin.repository.steve.org.uk/?raw-file/tip/namecheck"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/namecheck.pl:32
+msgid "Steve -- http://www.steve.org.uk/"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/namecheck.pl:38
+msgid "Copyright (c) 2008 by Steve Kemp. All rights reserved."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/namecheck.pl:40
+msgid ""
+"This module is free software; you can redistribute it and/or modify it under "
+"the same terms as Perl itself."
+msgstr ""
+
+#. type: TH
+#: ../scripts/nmudiff.1:1
+#, no-wrap
+msgid "NMUDIFF"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:4
+msgid "nmudiff - email an NMU diff to the Debian BTS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:6
+msgid "B<nmudiff> [I<options>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:16
+msgid ""
+"B<nmudiff> should be run in the source tree of the package being NMUed, "
+"after the NMU is built. It assumes that the source packages (specifically, "
+"the I<.dsc> and any corresponding I<tar> and I<diff> files) for both the "
+"previous version of the package and the newly built NMU version are in the "
+"parent directory. It then uses B<debdiff> to generate a diff between the "
+"previous version and the current NMU, and either runs mutt or an editor "
+"(using B<sensible-editor>) so that the mail message (including the diff) can "
+"be examined and modified; once you exit the editor the diff will be mailed "
+"to the Debian BTS."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:21
+msgid ""
+"The default behaviour is that if exactly one bug is closed by this NMU, then "
+"that bug will be mailed, otherwise a new bug will be submitted. This "
+"behaviour may be changed by command line options and configuration file "
+"options."
+msgstr ""
+
+#. type: TP
+#: ../scripts/nmudiff.1:22
+#, no-wrap
+msgid "B<--new>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:26
+msgid ""
+"Instead of mailing the bug reports which are to be closed by this NMU, a new "
+"bug report is submitted directly to the BTS."
+msgstr ""
+
+#. type: TP
+#: ../scripts/nmudiff.1:26
+#, no-wrap
+msgid "B<--old>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:31
+msgid ""
+"Send the bug report to all of the bugs which are being closed by this NMU, "
+"rather than opening a new bug report. This option has no effect if no bugs "
+"are being closed by this NMU."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:36
+msgid ""
+"Use B<mutt>(1) for editing and sending the message to the BTS (default "
+"behaviour). This can be controlled using a configuration file option (see "
+"below)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:41
+msgid ""
+"Use B<sensible-editor>(1) to edit the message and then mail it directly "
+"using I</usr/bin/sendmail>. This can be controlled using a configuration "
+"file option (see below)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/nmudiff.1:41
+#, no-wrap
+msgid "B<--sendmail> I<SENDMAILCMD>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:51
+msgid ""
+"Specify the B<sendmail> command. The command will be split on white space "
+"and will be interpreted by the shell. Default is I</usr/sbin/sendmail>. "
+"The B<-t> option will be automatically added if the command is "
+"I</usr/sbin/sendmail> or I</usr/sbin/exim*>. For other mailers, if they "
+"require a B<-t> option, this must be included in the I<SENDMAILCMD>, for "
+"example: B<--sendmail=\"/usr/sbin/mymailer -t\">. This can also be set "
+"using the devscripts configuration files; see below."
+msgstr ""
+
+#. type: TP
+#: ../scripts/nmudiff.1:51
+#, no-wrap
+msgid "B<--from> I<EMAIL>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:59
+msgid ""
+"If using the B<sendmail> (B<--no-mutt>) option, then the email to the BTS "
+"will be sent using the name and address in the environment variables "
+"B<DEBEMAIL> and B<DEBFULLNAME>. If these are not set, then the variables "
+"B<EMAIL> and B<NAME> will be used instead. These can be overridden using "
+"the B<--from> option. The program will not work in this case if an email "
+"address cannot be determined."
+msgstr ""
+
+#. type: TP
+#: ../scripts/nmudiff.1:59
+#, no-wrap
+msgid "B<--delay> I<DELAY>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:66
+msgid ""
+"Indicate in the generated mail that the NMU has been uploaded to the DELAYED "
+"queue, with a delay of I<DELAY> days. The default value is I<XX> which adds "
+"a placeholder to the e-mail. A value of B<0> indicates that the upload has "
+"not been sent to a delayed queue. This can also be set using the devscripts "
+"configuration files; see below."
+msgstr ""
+
+#. type: TP
+#: ../scripts/nmudiff.1:66
+#, no-wrap
+msgid "B<--no-delay>, B<--nodelay>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:69
+msgid "Equivalent to B<--delay 0>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/nmudiff.1:85
+#, no-wrap
+msgid "B<NMUDIFF_DELAY>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:91
+msgid ""
+"If this is set to a number, e-mails generated by B<nmudiff> will by default "
+"mention an upload to the DELAYED queue, delayed for the specified number of "
+"days. The value B<0> indicates that the DELAYED queue has not been used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/nmudiff.1:91
+#, no-wrap
+msgid "B<NMUDIFF_MUTT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:96
+msgid ""
+"Can be I<yes> (default) or I<no>, and specifies whether to use B<mutt> to "
+"compose and send the message or not, as described above."
+msgstr ""
+
+#. type: TP
+#: ../scripts/nmudiff.1:96
+#, no-wrap
+msgid "B<NMUDIFF_NEWREPORT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:104
+msgid ""
+"This option controls whether a new bug report is made, or whether the diff "
+"is sent to the bugs closed by this NMU. Can be I<maybe> (default), which "
+"sends to the existing bug reports if exactly one bug is being closed; "
+"I<yes>, which always creates a new report, or I<no>, which always sends to "
+"the reports of the bugs being closed (unless no bugs are being closed, in "
+"which case a new report is always made)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:108
+msgid ""
+"If this is set, specifies a B<sendmail> command to use instead of "
+"I</usr/sbin/sendmail>. Same as the B<--sendmail> command line option."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:112
+msgid "B<debdiff>(1), B<sensible-editor>(1), B<devscripts.conf>(5)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:116
+msgid ""
+"B<nmudiff> was written and is copyright 2006 by Steinar H. Gunderson and "
+"modified by Julian Gilbey E<lt>jdg@debian.orgE<gt>. The software may be "
+"freely redistributed under the terms and conditions of the GNU General "
+"Public License, version 2."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:22
+msgid ""
+"origtargz - fetch the orig tarball of a Debian package from various sources, "
+"and unpack it"
+msgstr ""
+
+#. type: =item
+#: ../scripts/origtargz.pl:28
+msgid "B<origtargz> [I<OPTIONS>] [B<--unpack>[=B<no>|B<once>|B<yes>]]"
+msgstr ""
+
+#. type: =item
+#: ../scripts/origtargz.pl:30
+msgid "B<origtargz> B<--help>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:36
+msgid ""
+"B<origtargz> downloads the orig tarball of a Debian package, and optionally "
+"unpacks it into the current directory. The version number to be used is "
+"determined from F<debian/changelog>. The main use for B<origtargz> is with "
+"debian-dir-only repository checkouts. It should be invoked from the top "
+"level directory of an unpacked Debian source package."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:42
+msgid "Various download locations are tried:"
+msgstr ""
+
+#. type: =item
+#: ../scripts/origtargz.pl:46 ../scripts/origtargz.pl:50 ../scripts/origtargz.pl:54 ../scripts/origtargz.pl:58 ../scripts/origtargz.pl:62
+msgid "*"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:48
+msgid "First, an existing file is looked for."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:52
+msgid "Directories given with B<--path> are searched."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:56
+msgid "B<pristine-tar> is tried."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:60
+msgid ""
+"B<apt-get source> is tried when B<apt-cache showsrc> reports a matching "
+"version."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:64
+msgid "Finally, B<uscan --download-current-version> is tried."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:68
+msgid ""
+"When asked to unpack the orig tarball, B<origtargz> will remove all files "
+"and directories from the current directory, except the debian directory, and "
+"the VCS repository directories. Some files outside F<debian/> which are "
+"often stored in VCS even for debian-dir-only repositories are also preserved "
+"(F<.bzr-builddeb>, F<.gitignore>, F<.hgignore>). I<Note that this will drop "
+"all non-committed changes> for the patch system in use (e.g. source format "
+"\"3.0 (quilt)\"), and will even remove all patches from the package when no "
+"patch system is in use (the original \"1.0\" source format)."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:77
+msgid ""
+"The default behavior is to unpack the orig tarball on the first invocation "
+"of B<origtargz> in a debian-dir-only checkout."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:82
+msgid ""
+"Despite B<origtargz> being called \"targz\", it will work with any "
+"compression scheme used for the tarball."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:85
+msgid ""
+"A similar tool to unpack orig tarballs is B<uupdate>(1). B<uupdate> creates "
+"a new working directory, unpacks the tarball, and applies the Debian "
+"F<.diff.gz> changes. In contrast, B<origtargz> uses the current directory, "
+"keeping VCS metadata."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:90
+msgid ""
+"For Debian package repositories that keep the full upstream source, other "
+"tools should be used to upgrade the repository from the new tarball. See "
+"B<git-import-orig>(1) and B<svn-upgrade>(1) for examples. B<origtargz> is "
+"still useful for downloading the current tarball."
+msgstr ""
+
+#. type: =item
+#: ../scripts/origtargz.pl:99
+msgid "B<-p>, B<--path> I<directory>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:101
+msgid ""
+"Add I<directory> to the list of locations to search for an existing "
+"tarball. When found, a hardlink is created if possible, otherwise a "
+"symlink."
+msgstr ""
+
+#. type: =item
+#: ../scripts/origtargz.pl:104
+msgid "B<-u>, B<--unpack>[=B<no>|B<once>|B<yes>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:106
+msgid ""
+"Unpack the downloaded orig tarball to the current directory, replacing "
+"everything except the debian directory. Existing files are removed, except "
+"for F<debian/> and VCS files. Preserved are: F<.bzr>, F<.bzrignore>, "
+"F<.bzr-builddeb>, F<.git>, F<.gitignore>, F<.hg>, F<.hgignore>, F<_darcs> "
+"and F<.svn>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/origtargz.pl:114
+msgid "B<no>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:116
+msgid "Do not unpack the orig tarball."
+msgstr ""
+
+#. type: =item
+#: ../scripts/origtargz.pl:118
+msgid "B<once> (default when B<--unpack> is not used)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:120
+msgid ""
+"If the current directory contains only a F<debian> directory (and possibly "
+"some dotfiles), unpack the orig tarball. This is the default behavior."
+msgstr ""
+
+#. type: =item
+#: ../scripts/origtargz.pl:123
+msgid "B<yes> (default for B<--unpack> without argument)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:125
+msgid "Always unpack the orig tarball."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:131
+msgid "Alias for B<--unpack=no>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/origtargz.pl:133
+msgid "B<-t>, B<--tar-only>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:135
+msgid ""
+"When using B<apt-get source>, pass B<--tar-only> to it. The default is to "
+"download the full source package including F<.dsc> and F<.diff.gz> or "
+"F<.debian.tar.gz> components so B<debdiff> can be used to diff the last "
+"upload to the next one. With B<--tar-only>, only download the F<.orig.tar.*> "
+"file."
+msgstr ""
+
+#. type: =item
+#: ../scripts/origtargz.pl:140
+msgid "B<--clean>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:142
+msgid ""
+"Remove existing files as with B<--unpack>. Note that like B<--unpack>, this "
+"will remove upstream files even if they are stored in VCS."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:159
+msgid ""
+"B<debcheckout>(1), B<git-import-orig>(1), B<pristine-tar>(1), "
+"B<svn-upgrade>(1), B<uupdate>(1)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/origtargz.pl:163
+msgid ""
+"B<origtargz> and this manpage have been written by Christoph Berg "
+"<I<myon@debian.org>>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/plotchangelog.1:1
+#, no-wrap
+msgid "PLOTCHANGELOG"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:4
+msgid "plotchangelog - graph Debian changelogs"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:7
+msgid "B<plotchangelog> [I<options>]I< changelog >..."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:17
+msgid ""
+"B<plotchangelog> is a tool to aid in visualizing a Debian I<changelog>. The "
+"changelogs are graphed with B<gnuplot>(1) , with the X axis of the graph "
+"denoting time of release and the Y axis denoting the Debian version number "
+"of the package. Each individual release of the package is represented by a "
+"point, and the points are color coded to indicate who released that version "
+"of the package. The upstream version number of the package can also be "
+"labeled on the graph."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:21
+msgid ""
+"Alternatively, the Y axis can be configured to display the size of the "
+"changelog entry for each new version. Or it can be configured to display "
+"approximately how many bugs were fixed for each new version."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:24
+msgid ""
+"Note that if the package is a Debian-specific package, the entire package "
+"version will be used for the Y axis. This does not always work perfectly."
+msgstr ""
+
+#. type: SH
+#: ../scripts/plotchangelog.1:25
+#, no-wrap
+msgid "READING THE GRAPH"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:33
+msgid ""
+"The general outline of a package's graph is typically a series of peaks, "
+"starting at 1, going up to n, and then returning abruptly to 1. The higher "
+"the peaks, the more releases the maintainer made between new upstream "
+"versions of the package. If a package is Debian-only, it's graph will just "
+"grow upwards without ever falling (although a bug in this program may cause "
+"it to fall sometimes, if the version number goes from say, 0.9 to say, 0.10 "
+"- this is interpreted wrong...)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:40
+msgid ""
+"If the graph dips below 1, someone made a NMU of the package and upgraded it "
+"to a new upstream version, thus setting the Debian version to 0. NMU's in "
+"general appear as fractional points like 1.1, 2.1, etc. A NMU can also be "
+"easily detected by looking at the points that represent which maintainer "
+"uploaded the package -- a solitary point of a different type than the points "
+"before and after it is typically a NMU."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:43
+msgid ""
+"It's also easy to tell by looking at the points when a package changes "
+"maintainers."
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:44
+#, no-wrap
+msgid "B<-l>, B<--linecount>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:50
+msgid ""
+"Instead of using the Debian version number as the Y axis, use the number of "
+"lines in the changelog entry for each version. Cannot be used together with "
+"B<--bugcount>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:50
+#, no-wrap
+msgid "B<-b>, B<--bugcount>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:57
+msgid ""
+"Instead of using the Debian version number as the Y axis, use the number of "
+"bugs that were closed by each changelog entry. Note that this number is "
+"obtained by searching for \"#dddd\" in the changelog, and so it may be "
+"inaccurate. Cannot be used together with B<--linecount>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:57
+#, no-wrap
+msgid "B<-c>, B<--cumulative>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:65
+msgid ""
+"When used together with either B<--bugcount> or B<--linecount>, graphs the "
+"cumulative count rather than the count in each individual changelog entry."
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:65
+#, no-wrap
+msgid "B<-v>, B<--no-version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:68
+msgid "Do not show upstream version labels. Useful if the graph gets too crowded."
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:68
+#, no-wrap
+msgid "B<-m, --no-maint>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:71
+msgid "Do not differentiate between different maintainers of the package."
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:71
+#, no-wrap
+msgid "B<-s file>, B<--save=>I<file>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:75
+msgid ""
+"Save the graph to I<file> in PostScript format instead of immediately "
+"displaying it."
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:75
+#, no-wrap
+msgid "B<-u>, B<--urgency>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:78
+msgid "Use larger points when displaying higher-urgency package uploads."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:81
+msgid "Output the gnuplot script that is fed into gnuplot (for debugging purposes)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:81
+#, no-wrap
+msgid "B<-g>I<commands>, B<--gnuplot=>I<commands>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:92
+msgid ""
+"This allows you to insert B<gnuplot>(1) commands into the gnuplot script "
+"that is used to generate the graph. The commands are placed after all "
+"initialization but before the final B<plot> command. This can be used to "
+"override the default look provided by this program in arbitrary ways. You "
+"can also use things like \"set terminal png color\" to change the output "
+"file type, which is useful in conjunction with the -s option."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:95
+msgid "Show a usage summary."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:98
+msgid "Display version, author and copyright information."
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:98
+#, no-wrap
+msgid "B<--noconf>, B<--no-conf>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:101
+msgid "Do not read any configuration files (see below)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:101
+#, no-wrap
+msgid "I<changelog >..."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:106
+msgid ""
+"The I<changelog> files to graph. If multiple files are specified they will "
+"all be displayed on the same graph. The files may be compressed with "
+"gzip. Any text in them that is not in Debian changelog format will be "
+"ignored."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:113
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. The "
+"B<--no-conf> option can be used to prevent reading these files. Environment "
+"variable settings are ignored when these configuration files are read. The "
+"currently recognised variables are:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:113
+#, no-wrap
+msgid "B<PLOTCHANGELOG_OPTIONS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:118
+msgid ""
+"This is a space-separated list of options to always use, for example B<-l "
+"-b>. Do not include B<-g> or B<--gnuplot> among this list as it may be "
+"ignored; see the next variable instead."
+msgstr ""
+
+#. type: TP
+#: ../scripts/plotchangelog.1:118
+#, no-wrap
+msgid "B<PLOTCHANGELOG_GNUPLOT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:124
+msgid ""
+"These are B<gnuplot> commands which will be prepended to any such commands "
+"given on the command line."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:127
+msgid "Joey Hess E<lt>joey@kitenet.netE<gt>"
+msgstr ""
+
+#. type: TH
+#: ../scripts/pts-subscribe.1:1
+#, no-wrap
+msgid "PTS-SUBSCRIBE"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:4
+msgid "pts-subscribe - time-limited subscription to the PTS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:6
+msgid "B<pts-subscribe> [I<options>] I<package>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:8
+msgid "B<pts-unsubscribe> [I<options>] I<package>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:12
+msgid ""
+"B<pts-subscribe> sends a subscription request for I<package> to the Package "
+"Tracking System at pts@qa.debian.org, and cancels the subscription 30 days "
+"later."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:15
+msgid ""
+"If called as B<pts-unsubscribe>, send an unsubscription request for "
+"I<package> to the Package Tracking System."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:18
+msgid ""
+"This utility is useful if a developer has made an NMU and wants to track the "
+"package for a limited period of time."
+msgstr ""
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:19
+#, no-wrap
+msgid "B<--until >I<time>, B<-u> I<time>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:24
+msgid ""
+"When B<at>(1) should cancel the subscription. I<time> must be specified "
+"using B<at>'s syntax. Default is 'now + 30 days'. This option will "
+"probably require quoting!"
+msgstr ""
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:24
+#, no-wrap
+msgid "B<--forever>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:28
+msgid ""
+"Don't cancel the subscription automatically. This can also be specified as "
+"B<--until forever>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:35
+#, no-wrap
+msgid "B<DEBEMAIL>, B<EMAIL>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:42
+msgid ""
+"If one of these is set (with preference give to B<DEBEMAIL>), then this will "
+"be used for the subscription address. If neither is set, then the email "
+"will be sent without a specified subscription address, and the email's From: "
+"line will be used to determine the sender's address. This will be "
+"determined by B<mail>(1)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:48
+#, no-wrap
+msgid "B<PTS_UNTIL>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:51
+msgid "Setting this is equivalent to giving a B<--until> option."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:56
+msgid ""
+"B<at>(1), information about the Package Tracking System in the Developer's "
+"Reference at "
+"https://www.debian.org/doc/developers-reference/resources.html#pkg-tracking-system"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:59
+msgid ""
+"This program was written by Julian Gilbey E<lt>jdg@debian.orgE<gt> based on "
+"a public domain prototype by Raphael Hertzog E<lt>hertzog@debian.orgE<gt> "
+"and is copyright under the GPL, version 2 or later."
+msgstr ""
+
+#. type: TH
+#: ../scripts/rc-alert.1:1
+#, no-wrap
+msgid "RC-ALERT"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:4
+msgid "rc-alert - check for installed packages with release-critical bugs"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:6
+msgid ""
+"B<rc-alert> [I<inclusion options>] [B<--debtags> [I<tag>[B<,>I<tag> ...]]] "
+"[B<--popcon>] [I<package> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:8
+msgid "B<rc-alert --help>|B<--version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:12
+msgid ""
+"B<rc-alert> downloads the list of release-critical bugs from the Debian BTS "
+"webpages, and then outputs a list of packages installed on the system, or "
+"given on the command-line, which are in that list."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:17
+msgid ""
+"If the directory I<~/.devscripts_cache> exists or the B<--cache> option is "
+"given, then the (sizable) downloaded list will be cached, and will only be "
+"downloaded again on a second invocation if it has changed."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:18
+#, no-wrap
+msgid "B<--cache>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:21
+msgid "Force the creation of the I<~/.devscripts_cache> cache directory."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:31
+msgid ""
+"It is also possible to filter the list of bugs reported based on the tags "
+"and distributions associated with the package. The filtering options are:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:31
+#, no-wrap
+msgid "B<--include-tags>, B<-f>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:35
+msgid ""
+"A list of tags which the bug must have, in the format used for output. For "
+"example, to include bugs tagged security or help wanted, use \"SH\"."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:35
+#, no-wrap
+msgid "B<--include-tag-op>, B<-t>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:39
+msgid ""
+"If set to I<and>, a bug must have all of the tags specified by "
+"B<--include-tags>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:39
+#, no-wrap
+msgid "B<--exclude-tags>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:43
+msgid ""
+"A list of tags which the bug must not have, in the same format as "
+"B<--include-tags>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:43
+#, no-wrap
+msgid "B<--exclude-tag-op>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:48
+msgid ""
+"If set to I<and>, a bug must have none of the tags specified by "
+"B<--exclude-tags>. By default, the bug will be excluded if any tag matches."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:48
+#, no-wrap
+msgid "B<--include-dists>, B<-d>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:52
+msgid ""
+"A list of distributions which the bug must apply to, in the format used for "
+"output. For example, to include bugs affecting testing or unstable, use "
+"\"TU\"."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:52
+#, no-wrap
+msgid "B<--include-dist-op>, B<-o>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:56
+msgid ""
+"If set to I<and>, a bug must apply to all of the specified distributions in "
+"order to be included."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:56
+#, no-wrap
+msgid "B<--exclude-dists>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:60
+msgid ""
+"A list of distributions to which the bug must not apply, in the same format "
+"as B<--include-dists>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:60
+#, no-wrap
+msgid "B<--exclude-dist-op>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:65
+msgid ""
+"If set to I<and>, a bug must apply to all of the specified distributions in "
+"order to be excluded. By default the bug will be excluded if it applies to "
+"any of the listed distributions."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:70
+msgid ""
+"It is also possible to only list bugs which have specific debtags set. Note "
+"that you need to have debtags installed and also that it's not mandatory for "
+"maintainers to set proper debtags. The produced list will thus probably be "
+"incomplete."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:70
+#, no-wrap
+msgid "B<--debtags>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:75
+msgid ""
+"Match packages based on the listed tags. Each package is matched only if it "
+"has all the listed tags; in the case of multiple tags within the same facet, "
+"a package is matched if it has any of the listed tags within the facet."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:75
+#, no-wrap
+msgid "B<--debtags-database>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:79
+msgid ""
+"Use a non-standard debtags database. The default is "
+"I</var/lib/debtags/packages-tags>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:83
+msgid ""
+"Popularity-contest collects data about installation and usage of Debian "
+"packages. You can additionally sort the bugs by the popcon rank of the "
+"related packages."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:83
+#, no-wrap
+msgid "B<--popcon>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:86
+msgid "Sort bugs by the popcon rank of the package the bug belongs to."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:86
+#, no-wrap
+msgid "B<--pc-vote>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:92
+msgid ""
+"By default, packages are sorted according to the number of people who have "
+"the package installed. This option enables sorting by the number of people "
+"regularly using the package instead. This option has no effect in "
+"combination with --pc-local."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:92
+#, no-wrap
+msgid "B<--pc-local>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:96
+msgid ""
+"Instead of requesting remote data the information from the last popcon run "
+"is used (I</var/log/popularity-contest>)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:97
+#, no-wrap
+msgid "B<--include-dists> OS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:100
+msgid "The bug must apply to at least one of oldstable or stable"
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:100
+#, no-wrap
+msgid "B<--include-dists> TUB< --include-dist-op> and"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:103
+msgid "The bug must apply to both testing and unstable"
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:103
+#, no-wrap
+msgid "B<--include-dists> OB< --include-tags> SB< --exclude-tags> +"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:106
+msgid "The bug must apply to oldstable and be tagged security but not patch"
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:106
+#, no-wrap
+msgid "B<--exclude-dists> SOTB< --include-tags> R"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:110
+msgid ""
+"The bug must apply to only unstable or experimental (or both) and be tagged "
+"unreproducible"
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:110
+#, no-wrap
+msgid "B<--debtags> implemented-in::perl,role::plugin,implemented-in::python"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:115
+msgid ""
+"The bug must apply to packages matching the specified debtags, i.e. the "
+"match will only include packages that have the 'role::plugin' tag and that "
+"have either of the tags 'implemented-in::perl' or 'implemented-in::python'."
+msgstr ""
+
+#. type: TP
+#: ../scripts/rc-alert.1:115
+#, no-wrap
+msgid "B<--popcon> B<--pc-local>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:119
+msgid ""
+"Read I</var/log/popularity-contest> and sort bugs by your personal popcon "
+"ranking (which is basically the atime of your packages' binaries)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:121
+msgid "It is not possible to say \"does not apply only to unstable\""
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:125
+msgid "B<debtags(1)> B<popbugs(1)> B<popularity-contest(8)>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:129
+msgid ""
+"B<rc-alert> was written by Anthony DeRobertis and modified by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> and Adam D. Barratt "
+"E<lt>adam@adam-barratt.org.ukE<gt> for the devscripts package. Debtags and "
+"popcon functionality was added by Jan Hauke Rahm "
+"E<lt>info@jhr-online.deE<gt>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:202
+msgid "rmadison -- Remotely query the Debian archive database about packages"
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:208
+msgid "B<rmadison> [I<OPTIONS>] I<PACKAGE> ..."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:214
+msgid ""
+"B<dak ls> queries the Debian archive database (\"projectb\") and displays "
+"which package version is registered per architecture/component/suite. The "
+"CGI at B<https://qa.debian.org/madison.php> provides that service without "
+"requiring SSH access to ftp-master.debian.org or the mirror on "
+"mirror.ftp-master.debian.org. This script, B<rmadison>, is a command line "
+"frontend to this CGI."
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:225
+msgid "B<-a>, B<--architecture=>I<ARCH>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:227
+msgid "only show info for ARCH(s)"
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:229
+msgid "B<-b>, B<--binary-type=>I<TYPE>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:231
+msgid "only show info for binary TYPE"
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:233
+msgid "B<-c>, B<--component=>I<COMPONENT>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:235
+msgid "only show info for COMPONENT(s)"
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:237
+msgid "B<-g>, B<--greaterorequal>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:239
+msgid "show buildd 'dep-wait pkg >= {highest version}' info"
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:241
+msgid "B<-G>, B<--greaterthan>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:243
+msgid "show buildd 'dep-wait pkg >> {highest version}' info"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:247
+msgid "show this help and exit"
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:249
+msgid "B<-s>, B<--suite=>I<SUITE>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:251
+msgid "only show info for this suite"
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:253
+msgid "B<-s>, B<--regex>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:255
+msgid "treat PACKAGE as a regex"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:257
+msgid ""
+"B<Note:> Since B<-r> can easily DoS the database (\"-r .\"), this option is "
+"not supported by the CGI on qa.debian.org and most other installations."
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:260
+msgid "B<-S>, B<--source-and-binary>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:262
+msgid "show info for the binary children of source pkgs"
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:264
+msgid "B<-t>, B<--time>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:266
+msgid "show projectb snapshot and reload time (not supported by all archives)"
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:268
+msgid "B<-u>, B<--url=>I<URL>[B<,>I<URL> ...]"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/rmadison.pl:270
+#, no-wrap
+msgid ""
+"use I<URL> for the query. Supported shorthands are\n"
+" B<debian> or B<qa> https://qa.debian.org/madison.php\n"
+" B<debug> http://debug.debian.net/cgi-bin/madison.cgi\n"
+" B<ubuntu> http://people.canonical.com/~ubuntu-archive/madison.cgi\n"
+" B<udd> https://qa.debian.org/cgi-bin/madison.cgi\n"
+" B<new> https://qa.debian.org/cgi-bin/madison.cgi?table=new\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:277
+msgid ""
+"See the B<RMADISON_URL_MAP_> variable below for a method to add new "
+"shorthands."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:282
+msgid "show version and exit"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:286
+msgid "don't read the devscripts configuration files"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:290
+msgid ""
+"ARCH, COMPONENT and SUITE can be comma (or space) separated lists, e.g. "
+"--architecture=m68k,i386"
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:303
+msgid "B<RMADISON_URL_MAP_>I<SHORTHAND>=I<URL>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:305
+msgid ""
+"Add an entry to the set of shorthand URLs listed above. I<SHORTHAND> should "
+"be replaced with the shorthand form to be used to refer to I<URL>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:308
+msgid ""
+"Multiple shorthand entries may be specified by using multiple "
+"B<RMADISON_URL_MAP_*> variables."
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:311
+msgid "B<RMADISON_DEFAULT_URL>=I<URL>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:313
+msgid ""
+"Set the default URL to use unless overridden by a command line option. For "
+"Debian this defaults to debian,new. For Ubuntu this defaults to ubuntu."
+msgstr ""
+
+#. type: =item
+#: ../scripts/rmadison.pl:316
+msgid "B<RMADISON_ARCHITECTURE>=I<ARCH>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:318
+msgid ""
+"Set the default architecture to use unless overridden by a command line "
+"option. To run an unrestricted query when B<RMADISON_ARCHITECTURE> is set, "
+"use B<--architecture='*'>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:326
+msgid "B<dak ls> was formerly called B<madison>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:328
+msgid ""
+"The protocol used by rmadison is fairly simple, the CGI accepts query the "
+"parameters a, b, c, g, G, r, s, S, t, and package. The parameter text is "
+"passed to enable plain-text output."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:334
+msgid "B<dak>(1), B<madison-lite>(1)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/rmadison.pl:338
+msgid ""
+"rmadison and https://qa.debian.org/madison.php were written by Christoph "
+"Berg <myon@debian.org>. dak was written by James Troup <james@nocrew.org>, "
+"Anthony Towns <ajt@debian.org>, and others."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:19
+msgid "sadt - simple DEP-8 test runner"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:23
+msgid "B<sadt> [I<options>] [I<test-name>...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:27
+msgid ""
+"B<sadt> is a simple implementation of DEP-8 (“automatic as-installed package "
+"testing”) test runner."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:30
+msgid ""
+"It is your responsibility to satisfy tests' dependencies. B<sadt> won't "
+"attempt to install any missing packages. If a test's dependencies cannot be "
+"satisfied by packages that are currently installed, the test will be "
+"skipped."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:34
+msgid ""
+"B<sadt> won't build the package even if a test declares the B<build-needed> "
+"restriction. Instead, such a test will be skipped. However, you can build "
+"the package manually, and then tell B<sadt> to assume that the package is "
+"already built using the B<-b>/B<--built-source-tree>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:39
+msgid ""
+"B<sadt> doesn't implement any virtualisation arrangements, therefore it "
+"skips tests that declare the B<breaks-testbed> restriction."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:48
+msgid "Make the output more verbose."
+msgstr ""
+
+#. type: =item
+#: ../scripts/sadt.pod:50
+msgid "B<-b>, B<--built-source-tree>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:52
+msgid ""
+"Assume that the source tree is already built. This is equivalent to "
+"B<--ignore-restriction=build-needed>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/sadt.pod:55
+msgid "B<--ignore-restriction>=I<restriction>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:57
+msgid "Don't skip tests that declare the I<restriction>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:61
+msgid "Show a help message and exit."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/sadt.pod:65
+msgid "CONFORMING TO"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:67
+msgid "README.package-tests shipped by autopkgtest 2.7.2"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/sadt.pod:71
+msgid "B<adt-run>(1)"
+msgstr ""
+
+#. type: TH
+#: ../doc/suspicious-source.1:15
+#, no-wrap
+msgid "SUSPICIOUS-SOURCE"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:20
+msgid ""
+"suspicious-source - search for files that are not the GPL's \"preferred form "
+"of modification\""
+msgstr ""
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:23
+msgid "B<suspicious-source> [I<options>]"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:30
+msgid ""
+"B<suspicious-source> is a script that outputs a list of files which are not "
+"common source files. This should be run in the root of a source tree to "
+"find files which might not be the \"preferred form of modification\" that "
+"the GPL and other licenses require."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:33
+msgid ""
+"The files inside version control system directories (like I<.bzr/> or "
+"I<CVS/>) are not considered."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:38 ../doc/wrap-and-sort.1:37
+msgid "Show this help message and exit."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:41
+msgid "Print more information."
+msgstr ""
+
+#. type: TP
+#: ../doc/suspicious-source.1:41
+#, no-wrap
+msgid "B<-d >I<directory>, B<--directory=>I<directory>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:44
+msgid ""
+"Check the files in the specified I<directory> instead of the current "
+"directory."
+msgstr ""
+
+#. type: TP
+#: ../doc/suspicious-source.1:44
+#, no-wrap
+msgid "B<-m >I<mimetype>, B<--mimetype=>I<mimetype>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:47
+msgid "Add I<mimetype> to list of white-listed MIME types."
+msgstr ""
+
+#. type: TP
+#: ../doc/suspicious-source.1:47
+#, no-wrap
+msgid "B<-e >I<extension>, B<--extension=>I<extension>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:50
+msgid "Add I<extension> to list of white-listed extensions."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:54
+msgid ""
+"B<suspicious-source> and this manpage have been written by Benjamin Drung "
+"E<lt>bdrung@debian.orgE<gt>."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:55 ../doc/wrap-and-sort.1:83
+msgid "Both are released under the ISC license."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:5
+msgid "svnpath - output svn url with support for tags and branches"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:9
+msgid "B<svnpath>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:11
+msgid "B<svnpath tags>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:13
+msgid "B<svnpath branches>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:15
+msgid "B<svnpath trunk>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:19
+msgid "B<svnpath> is intended to be run in a Subversion working copy."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:21
+msgid ""
+"In its simplest usage, B<svnpath> with no parameters outputs the svn url for "
+"the repository associated with the working copy."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:24
+msgid ""
+"If a parameter is given, B<svnpath> attempts to instead output the url that "
+"would be used for the tags, branches, or trunk. This will only work if it's "
+"run in the top-level directory that is subject to tagging or branching."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:28
+msgid ""
+"For example, if you want to tag what's checked into Subversion as version "
+"1.0, you could use a command like this:"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:31
+#, no-wrap
+msgid ""
+" svn cp $(svnpath) $(svnpath tags)/1.0\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:33
+msgid ""
+"That's much easier than using svn info to look up the repository url and "
+"manually modifying it to derive the url to use for the tag, and typing in "
+"something like this:"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:37
+#, no-wrap
+msgid ""
+" svn cp svn+ssh://my.server.example/svn/project/trunk "
+"svn+ssh://my.server.example/svn/project/tags/1.0\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:39
+msgid ""
+"svnpath uses a simple heuristic to convert between the trunk, tags, and "
+"branches paths. It replaces the first occurrence of B<trunk>, B<tags>, or "
+"B<branches> with the name of what you're looking for. This will work ok for "
+"most typical Subversion repository layouts."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:44
+msgid ""
+"If you have an atypical layout and it does not work, you can add a "
+"F<~/.svnpath> file. This file is perl code, which can modify the path in "
+"$url. For example, the author uses this file:"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:48
+#, no-wrap
+msgid ""
+" #!/usr/bin/perl\n"
+" # svnpath personal override file\n"
+"\n"
+msgstr ""
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:51
+#, no-wrap
+msgid ""
+" # For d-i I sometimes work from a full d-i tree branch. Remove that from\n"
+" # the path to get regular tags or branches directories.\n"
+" $url=~s!d-i/(rc|beta)[0-9]+/!!;\n"
+" $url=~s!d-i/sarge/!!;\n"
+" 1\n"
+"\n"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:91
+msgid "GPL version 2 or later"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/svnpath.pl:95
+msgid "Joey Hess <joey@kitenet.net>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:81
+msgid ""
+"tagpending - tags bugs that are to be closed in the latest changelog as "
+"pending"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:85
+msgid "B<tagpending> [I<options>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:89
+msgid ""
+"B<tagpending> parses debian/changelog to determine which bugs would be "
+"closed if the package were uploaded. Each bug is then marked as pending, "
+"using B<bts>(1) if it is not already so."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:99
+msgid "Check whether any bugs require tagging, but do not actually do so."
+msgstr ""
+
+#. type: =item
+#: ../scripts/tagpending.pl:101
+msgid "B<-s>, B<--silent>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:103
+msgid "Do not output any messages."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:107
+msgid "List each bug checked and tagged in turn."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:111
+msgid "Do not query the BTS, but (re)tag all bugs closed in the changelog."
+msgstr ""
+
+#. type: =item
+#: ../scripts/tagpending.pl:113
+msgid "B<--comments>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:115
+msgid ""
+"Include the changelog header line and the entries relating to the tagged "
+"bugs as comments in the generated mail. This is the default."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:118
+msgid ""
+"Note that when used in combination with B<--to>, the header line output will "
+"always be that of the most recent version."
+msgstr ""
+
+#. type: =item
+#: ../scripts/tagpending.pl:121
+msgid "B<--no-comments>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:123
+msgid "Do not include changelog entries in the generated mail."
+msgstr ""
+
+#. type: =item
+#: ../scripts/tagpending.pl:125
+msgid "B<-c>, B<--confirm>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:127
+msgid "Tag bugs as both confirmed and pending."
+msgstr ""
+
+#. type: =item
+#: ../scripts/tagpending.pl:129
+msgid "B<-t>, B<--to> I<version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:131
+msgid "Parse changelogs for all versions strictly greater than I<version>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:133
+msgid "Equivalent to B<dpkg-parsechangelog>'s B<-v> option."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:137
+msgid ""
+"Display the message which would be sent to the BTS and, except when "
+"B<--noact> was used, prompt for confirmation before sending it."
+msgstr ""
+
+#. type: =item
+#: ../scripts/tagpending.pl:140
+msgid "B<-w>, B<--wnpp>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:142
+msgid ""
+"For each bug that does not appear to belong to the current package, check "
+"whether it is filed against wnpp. If so, tag it. This allows e.g. ITAs and "
+"ITPs closed in an upload to be tagged."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:150
+msgid "B<bts>(1) and B<dpkg-parsechangelog>(1)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:432
+msgid ""
+"This program is Copyright 2008 by Adam D. Barratt "
+"<adam@adam-barratt.org.uk>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/tagpending.pl:435
+msgid ""
+"The shell script tagpending, on which this program is based, is Copyright "
+"2004 by Joshua Kwan <joshk@triplehelix.org> with changes copyright 2004-7 by "
+"their respective authors."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/transition-check.pl:25
+msgid "transition-check - check a package list for involvement in transitions"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/transition-check.pl:29
+msgid "B<transition-check> B<--help>|B<--version>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/transition-check.pl:31
+msgid ""
+"B<transition-check> [B<-f>|B<--filename=>I<FILENAME>] [I<source package "
+"list>]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/transition-check.pl:35
+msgid ""
+"B<transition-check> checks whether any of the listed source packages are "
+"involved in a transition for which uploads to unstable are currently "
+"blocked."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/transition-check.pl:39
+msgid ""
+"If neither a filename nor a list of packages is supplied, "
+"B<transition-check> will use the source package name from I<debian/control>."
+msgstr ""
+
+#. type: =item
+#: ../scripts/transition-check.pl:46
+msgid "B<-f>, B<--filename=>I<filename>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/transition-check.pl:48
+msgid ""
+"Read a source package name from I<filename>, which should be a Debian "
+"package control file or I<.changes> file, and add that package to the list "
+"of packages to check."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/transition-check.pl:56
+msgid ""
+"The exit status indicates whether any of the packages examined were found to "
+"be involved in a transition."
+msgstr ""
+
+#. type: =item
+#: ../scripts/transition-check.pl:61 ../scripts/who-permits-upload.pl:119
+msgid "0Z<>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/transition-check.pl:63
+msgid ""
+"Either B<--help> or B<--version> was used, or none of the packages examined "
+"was involved in a transition."
+msgstr ""
+
+#. type: =item
+#: ../scripts/transition-check.pl:66 ../scripts/who-permits-upload.pl:123
+msgid "1Z<>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/transition-check.pl:68
+msgid "At least one package examined is involved in a current transition."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/transition-check.pl:74
+msgid ""
+"This code is copyright by Adam D. Barratt <I<adam@adam-barratt.org.uk>>, all "
+"rights reserved."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/transition-check.pl:83
+msgid "Adam D. Barratt <I<adam@adam-barratt.org.uk>>"
+msgstr ""
+
+#. type: TH
+#: ../scripts/uscan.1:1
+#, no-wrap
+msgid "USCAN"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:4
+msgid "uscan - scan/watch upstream sources for new releases of software"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:6
+msgid "B<uscan> [I<options>] [I<path-to-debian-source-packages> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:16
+msgid ""
+"B<uscan> scans the given directories (or the current directory if none are "
+"specified) and all of their subdirectories for packages containing a control "
+"file I<debian/watch>. Parameters are then read from those control files and "
+"upstream ftp or http sites are inspected for newly available updates (as "
+"compared with the upstream version number retrieved from the "
+"I<debian/changelog> file in the same directory). The newest updates are "
+"retrieved (as determined by their version numbers) and if specified in the "
+"I<watch> file, a program may then be executed on the newly downloaded "
+"source."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:21
+msgid ""
+"The traditional I<debian/watch> files can still be used, but the current "
+"format offers both simpler and more flexible services. We do not describe "
+"the old format here; for their documentation, see the source code for uscan."
+msgstr ""
+
+#. type: SH
+#: ../scripts/uscan.1:22
+#, no-wrap
+msgid "FORMAT of debian/watch files"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:28
+msgid ""
+"The following demonstrates the type of entries which can appear in a "
+"I<debian/watch> file. Obviously, not all of these would appear in one such "
+"file; usually, one would have one line for the current package."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:33
+#, no-wrap
+msgid ""
+"# format version number, currently 3; this line is compulsory!\n"
+"version=3\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:35
+#, no-wrap
+msgid "# Line continuations are performed with B<\\e>\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:40
+#, no-wrap
+msgid ""
+"# This is the format for an FTP site:\n"
+"# Full-site-with-pattern [Version [Action]]\n"
+"ftp://ftp.tex.ac.uk/tex-archive/web/c_cpp/cweb/cweb-(.+)\\e.tar\\e.gz \\e\n"
+" debian uupdate\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:44
+#, no-wrap
+msgid ""
+"# This is the format for an FTP site with regex special characters in\n"
+"# the filename part\n"
+"ftp://ftp.worldforge.org/pub/worldforge/libs/Atlas-C++/transitional/Atlas-C\\e+\\e+-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:47
+#, no-wrap
+msgid ""
+"# This is the format for an FTP site with directory pattern matching\n"
+"ftp://ftp.nessus.org/pub/nessus/nessus-([\\ed\\e.]+)/src/nessus-core-([\\ed\\e.]+)\\e.tar\\e.gz\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:51
+#, no-wrap
+msgid ""
+"# This can be used if you want to override the PASV setting\n"
+"# for a specific site\n"
+"# opts=pasv ftp://.../...\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:57
+#, no-wrap
+msgid ""
+"# This is one format for an HTTP site, which is the same\n"
+"# as the FTP format. B<uscan> starts by downloading the homepage,\n"
+"# obtained by removing the last component of the URL; in this case,\n"
+"# I<http://www.cpan.org/modules/by-module/Text/>\n"
+"http://www.cpan.org/modules/by-module/Text/Text-CSV_XS-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:63
+#, no-wrap
+msgid ""
+"# This is a variant HTTP format which allows direct specification of\n"
+"# the homepage:\n"
+"# Homepage Pattern [Version [Action]]\n"
+"http://www.dataway.ch/~lukasl/amph/amph.html \\e\n"
+" files/amphetamine-([\\ed\\e.]*).tar.bz2\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:70
+#, no-wrap
+msgid ""
+"# This one shows that recursive directory scanning works, in either of\n"
+"# two forms, as long as the website can handle requests of the form\n"
+"# I<http://site/inter/mediate/dir/>\n"
+"http://tmrc.mit.edu/mirror/twisted/Twisted/(\\ed\\e.\\ed)/ \\e\n"
+" Twisted-([\\ed\\e.]*)\\e.tar\\e.bz2\n"
+"http://tmrc.mit.edu/mirror/twisted/Twisted/(\\ed\\e.\\ed)/Twisted-([\\ed\\e.]*)\\e.tar\\e.bz2\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:73
+#, no-wrap
+msgid ""
+"# For maximum flexibility with upstream tarball formats, use this:\n"
+"http://example.com/example-(\\ed[\\ed.]*)\\e.(?:zip|tgz|tbz2|txz|tar\\e.(?:gz|bz2|xz))\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:78
+#, no-wrap
+msgid ""
+"# qa.debian.org runs a redirector which allows a simpler form of URL\n"
+"# for SourceForge based projects. The format below will automatically\n"
+"# be rewritten to use the redirector.\n"
+"http://sf.net/audacity/audacity-src-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:84
+#, no-wrap
+msgid ""
+"# For GitHub projects you can use the tags or releases page. Since the "
+"archive\n"
+"# URLs use only the version as the name, it is recommended to use a\n"
+"# filenamemangle to adjust the name of the downloaded file:\n"
+"opts=\"filenamemangle=s/(?:.*\\/)?v?(\\ed[\\ed\\e.]*)\\e.tar\\e.gz/E<lt>projectE<gt>-$1.tar.gz/\" "
+"\\e\n"
+" https://github.com/E<lt>userE<gt>/E<lt>projectE<gt>/tags "
+"(?:.*/)?v?(\\ed[\\ed\\e.]*)\\e.tar\\e.gz\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:88
+#, no-wrap
+msgid ""
+"# For Google Code projects you should use the downloads page like this:\n"
+"https://code.google.com/p/E<lt>projectE<gt>/downloads/list?can=1 \\e\n"
+" .*/E<lt>projectE<gt>-(\\ed[\\ed.]*)\\e.tar\\e.gz\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:93
+#, no-wrap
+msgid ""
+"# This is the format for a site which has funny version numbers;\n"
+"# the parenthesised groups will be joined with dots to make a\n"
+"# sanitised version number\n"
+"http://www.site.com/pub/foobar/foobar_v(\\ed+)_(\\ed+)\\e.tar\\e.gz\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:101
+#, no-wrap
+msgid ""
+"# This is another way of handling site with funny version numbers,\n"
+"# this time using mangling. (Note that multiple groups will be\n"
+"# concatenated before mangling is performed, and that mangling will\n"
+"# only be performed on the basename version number, not any path\n"
+"# version numbers.)\n"
+"opts=\"uversionmangle=s/^/0.0./\" \\e\n"
+" "
+"ftp://ftp.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:106
+#, no-wrap
+msgid ""
+"# Similarly, the upstream part of the Debian version number can be\n"
+"# mangled:\n"
+"opts=dversionmangle=s/\\e+dfsg\\ed*$// \\e\n"
+" http://some.site.org/some/path/foobar-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:119
+#, no-wrap
+msgid ""
+"# The filename is found by taking the last component of the URL and\n"
+"# removing everything after any 'B<?>'. If this would not make a usable\n"
+"# filename, use filenamemangle. For example,\n"
+"# E<lt>A "
+"href=\"http://foo.bar.org/download/?path=&download=foo-0.1.1.tar.gz\"E<gt>\n"
+"# could be handled as:\n"
+"# opts=filenamemangle=s/.*=(.*)/$1/ \\e\n"
+"# http://foo.bar.org/download/\\e?path=&download=foo-(.+)\\e.tar\\e.gz\n"
+"#\n"
+"# E<lt>A "
+"href=\"http://foo.bar.org/download/?path=&download_version=0.1.1\"E<gt>\n"
+"# could be handled as:\n"
+"# opts=filenamemangle=s/.*=(.*)/foo-$1\\e.tar\\e.gz/ \\e\n"
+"# http://foo.bar.org/download/\\e?path=&download_version=(.+)\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:127
+#, no-wrap
+msgid ""
+"# The option downloadurlmangle can be used to mangle the URL of the file\n"
+"# to download. This can only be used with http:// URLs. This may be\n"
+"# necessary if the link given on the web page needs to be transformed in\n"
+"# some way into one which will work automatically, for example:\n"
+"# opts=downloadurlmangle=s/prdownload/download/ \\e\n"
+"# http://developer.berlios.de/project/showfiles.php?group_id=2051 \\e\n"
+"# http://prdownload.berlios.de/softdevice/vdr-softdevice-(.+).tgz\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:133
+msgid ""
+"Comment lines may be introduced with a `B<#>' character. Continuation lines "
+"may be indicated by terminating a line with a backslash character."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:137
+msgid ""
+"The first (non-comment) line of the file must begin `version=3'. This "
+"allows for future extensions without having to change the name of the file."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:142
+msgid ""
+"There are two possibilities for the syntax of an HTTP I<watch> file line, "
+"and only one for an FTP line. We begin with the common (and simpler) "
+"format. We describe the optional opts=... first field below, and ignore it "
+"in what follows."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:159
+msgid ""
+"The first field gives the full pattern of URLs being searched for. In the "
+"case of an FTP site, the directory listing for the requested directory will "
+"be requested and this will be scanned for files matching the basename "
+"(everything after the trailing `B</>'). In the case of an HTTP site, the "
+"URL obtained by stripping everything after the trailing slash will be "
+"downloaded and searched for hrefs (links of the form E<lt>a href=...E<gt>) "
+"to either the full URL pattern given, or to the absolute part (everything "
+"without the http://host.name/ part), or to the basename (just the part after "
+"the final `B</>'). Everything up to the final slash is taken as a verbatim "
+"URL, as long as there are no parentheses (`B<(>' and 'B<)>') in this part of "
+"the URL: if it does, the directory name will be matched in the same way as "
+"the final component of the URL as described below. (Note that regex "
+"metacharacters such as `B<+>' are regarded literally unless they are in a "
+"path component containing parentheses; see the Atlas-C++ example above. "
+"Also, the parentheses must match within each path component.)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:168
+msgid ""
+"The pattern (after the final slash) is a Perl regexp (see B<perlre>(1) for "
+"details of these). You need to make the pattern so tight that it matches "
+"only the upstream software you are interested in and nothing else. Also, "
+"the pattern will be anchored at the beginning and at the end, so it must "
+"match the full filename. (Note that for HTTP URLs, the href may include the "
+"absolute path or full site and path and still be accepted.) The pattern "
+"must contain at least one Perl group as explained in the next paragraph."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:179
+msgid ""
+"Having got a list of `files' matching the pattern, their version numbers are "
+"extracted by treating the part matching the Perl regexp groups, demarcated "
+"by `B<(...)>', joining them with `B<.>' as a separator, and using the result "
+"as the version number of the file. The version number will then be mangled "
+"if required by the uversionmangle option described below. Finally, the file "
+"versions are then compared to find the one with the greatest version number, "
+"as determined by B<dpkg --compare-versions>. Note that if you need Perl "
+"groups which are not to be used in the version number, either use "
+"`B<(?:...)>' or use the uversionmangle option to clean up the mess!"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:196
+msgid ""
+"The current (upstream) version can be specified as the second parameter in "
+"the I<watch> file line. If this is I<debian> or absent, then the current "
+"Debian version (as determined by I<debian/changelog>) is used to determine "
+"the current upstream version. The current upstream version may also be "
+"specified by the command-line option B<--upstream-version>, which specifies "
+"the upstream version number of the currently installed package (i.e., the "
+"Debian version number without epoch and Debian revision). The upstream "
+"version number will then be mangled using the dversionmangle option if one "
+"is specified, as described below. If the newest version available is newer "
+"than the current version, then it is downloaded into the parent directory, "
+"unless the B<--report> or B<--report-status> option has been used. Once the "
+"file has been downloaded, then a symlink to the file is made from "
+"I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.{gz|bz2|lzma|xz}> as "
+"described by the help for the B<--symlink> option."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:199
+msgid ""
+"Finally, if a third parameter (an action) is given in the I<watch> file "
+"line, this is taken as the name of a command, and the command"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:201
+#, no-wrap
+msgid " I<command >B<--upstream-version>I< version filename>\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:210
+msgid ""
+"is executed, using either the original file or the symlink name. A common "
+"such command would be B<uupdate>(1). (Note that the calling syntax was "
+"slightly different when using I<watch> file without a `B<version=>...' line; "
+"there the command executed was `I<command filename version>'.) If the "
+"command is B<uupdate>, then the B<--no-symlink> option is given to "
+"B<uupdate> as a first option, since any requested symlinking will already be "
+"done by B<uscan>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:226
+msgid ""
+"The alternative version of the I<watch> file syntax for HTTP URLs is as "
+"follows. The first field is a homepage which should be downloaded and then "
+"searched for hrefs matching the pattern given in the second field. (Again, "
+"this pattern will be anchored at the beginning and the end, so it must match "
+"the whole href. If you want to match just the basename of the href, you can "
+"use a pattern like \".*/name-(.+)\\e.tar\\e.gz\" if you know that there is a "
+"full URL, or better still: \"(?:.*/)?name-(.+)\\e.tar\\e.gz\" if there may "
+"or may not be. Note the use of (?:...) to avoid making a backreference.) "
+"If any of the hrefs in the homepage which match the (anchored) pattern are "
+"relative URLs, they will be taken as being relative to the base URL of the "
+"homepage (i.e., with everything after the trailing slash removed), or "
+"relative to the base URL specified in the homepage itself with a E<lt>base "
+"href=\"...\"E<gt> tag. The third and fourth fields are the version number "
+"and action fields as before."
+msgstr ""
+
+#. type: SH
+#: ../scripts/uscan.1:226
+#, no-wrap
+msgid "PER-SITE OPTIONS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:232
+msgid ""
+"A I<watch> file line may be prefixed with `B<opts=>I<options>', where "
+"I<options> is a comma-separated list of options. The whole I<options> "
+"string may be enclosed in double quotes, which is necessary if I<options> "
+"contains any spaces. The recognised options are as follows:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:232
+#, no-wrap
+msgid "B<active> and B<passive> (or B<pasv>)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:237
+msgid ""
+"If used on an FTP line, these override the choice of whether to use PASV "
+"mode or not, and force the use of the specified mode for this site."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:237
+#, no-wrap
+msgid "B<uversionmangle=>I<rules>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:244
+msgid ""
+"This is used to mangle the upstream version number as matched by the "
+"ftp://... or http:// rules as follows. First, the I<rules> string is split "
+"into multiple rules at every `B<;>'. Then the upstream version number is "
+"mangled by applying I<rule> to the version, in a similar way to executing "
+"the Perl command:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:246
+#, no-wrap
+msgid " $version =~ I<rule>;\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:251
+msgid ""
+"for each rule. Thus, suitable rules might be `B<s/^/0./>' to prepend "
+"`B<0.>' to the version number and `B<s/_/./g>' to change underscores into "
+"periods. Note that the I<rule> string may not contain commas; this should "
+"not be a problem."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:256
+msgid ""
+"I<rule> may only use the 'B<s>', 'B<tr>' and 'B<y>' operations. When the "
+"'B<s>' operation is used, only the 'B<g>', 'B<i>' and 'B<x>' flags are "
+"available and I<rule> may not contain any expressions which have the "
+"potential to execute code (i.e. the (?{}) and (??{}) constructs are not "
+"supported)."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:261
+msgid ""
+"If the 'B<s>' operation is used, the replacement can contain backreferences "
+"to expressions within parenthesis in the matching regexp, like "
+"`B<s/-alpha(\\ed*)/.a$1/>'. These backreferences must use the `B<$1>' "
+"syntax, as the `B<\\e1>' syntax is not supported."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:261
+#, no-wrap
+msgid "B<dversionmangle=>I<rules>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:269
+msgid ""
+"This is used to mangle the Debian version number of the currently installed "
+"package in the same way as the B<uversionmangle> option. Thus, a suitable "
+"rule might be `B<s/\\+dfsg\\ed*$//>' to remove a `B<+dfsg1>' suffix from the "
+"Debian version number, or to handle `B<.pre6>' type version numbers. Again, "
+"the I<rules> string may not contain commas; this should not be a problem."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:269
+#, no-wrap
+msgid "B<versionmangle=>I<rules>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:274
+msgid ""
+"This is a syntactic shorthand for "
+"B<uversionmangle=>I<rules>B<,dversionmangle=>I<rules>, applying the same "
+"rules to both the upstream and Debian version numbers."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:274
+#, no-wrap
+msgid "B<filenamemangle=>I<rules>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:280
+msgid ""
+"This is used to mangle the filename with which the downloaded file will be "
+"saved, and is parsed in the same way as the B<uversionmangle> option. "
+"Examples of its use are given in the examples section above."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:280
+#, no-wrap
+msgid "B<downloadurlmangle=>I<rules>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:288
+msgid ""
+"This is used to mangle the URL to be used for the download. The URL is "
+"first computed based on the homepage downloaded and the pattern matched, "
+"then the version number is determined from this URL. Finally, any rules "
+"given by this option are applied before the actual download attempt is "
+"made. An example of its use is given in the examples section above."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:288
+#, no-wrap
+msgid "B<pgpsigurlmangle=>I<rules>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:299
+msgid ""
+"If present, the supplied rules will be applied to the downloaded URL (after "
+"any downloadurlmangle rules, if present) to craft a new URL that will be "
+"used to fetch the detached OpenPGP signature file for the upstream tarball. "
+"Some common rules might be `B<s/$/.asc/>' or `B<s/$/.pgp/>' or "
+"`B<s/$/.gpg/>'. This signature must be made by a key found in the keyring "
+"B<debian/upstream/signing-key.pgp> or the armored keyring "
+"B<debian/upstream/signing-key.asc>. If it is not valid, or not made by one "
+"of the listed keys, uscan will report an error."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:299
+#, no-wrap
+msgid "B<repacksuffix=>I<suffix>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:306
+msgid ""
+"If the upstream sources are modified because I<debian/copyright> contains "
+"the B<Files-Excluded> field, I<suffix> will be appended to the upstream "
+"version of the repacked tar archive. Common suffixes might be B<+dfsg1> to "
+"indicate the removal of non-DFSG code or B<+ds1> to indicate the removal of "
+"embedded (DFSG) code copies."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:321
+msgid ""
+"Similarly to several other scripts in the B<devscripts> package, B<uscan> "
+"explores the requested directory trees looking for I<debian/changelog> and "
+"I<debian/watch> files. As a safeguard against stray files causing potential "
+"problems, and in order to promote efficiency, it will examine the name of "
+"the parent directory once it finds the I<debian/changelog> file, and check "
+"that the directory name corresponds to the package name. It will only "
+"attempt to download newer versions of the package and then perform any "
+"requested action if the directory name matches the package name. Precisely "
+"how it does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and "
+"B<--check-dirname-regex>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:332
+msgid ""
+"Only check the directory name if we have had to change directory in our "
+"search for I<debian/changelog>, that is, the directory containing "
+"I<debian/changelog> is not the directory from which B<uscan> was invoked. "
+"This is the default behaviour."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:350
+msgid "This script will perform a fully automatic upstream update."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:358
+#, no-wrap
+msgid ""
+"#!/bin/sh -e\n"
+"# called with '--upstream-version' E<lt>versionE<gt> E<lt>fileE<gt>\n"
+"uupdate \"$@\"\n"
+"package=`dpkg-parsechangelog | sed -n 's/^Source: //p'`\n"
+"cd ../$package-$2\n"
+"debuild\n"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:363
+msgid ""
+"Note that we don't call B<dupload> or B<dput> automatically, as the "
+"maintainer should perform sanity checks on the software before uploading it "
+"to Debian."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:364
+#, no-wrap
+msgid "B<--report>, B<--no-download>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:367
+msgid "Only report about available newer versions but do not download anything."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:367
+#, no-wrap
+msgid "B<--report-status>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:371
+msgid ""
+"Report on the status of all packages, even those which are up-to-date, but "
+"do not download anything."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:371
+#, no-wrap
+msgid "B<--download>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:374
+msgid "Report and download. (This is the default behaviour.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:374
+#, no-wrap
+msgid "B<--destdir>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:379
+msgid ""
+"Path of directory to which to download. If the specified path is not "
+"absolute, it will be relative to one of the current directory or, if "
+"directory scanning is enabled, the package's source directory."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:379
+#, no-wrap
+msgid "B<--force-download>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:382
+msgid ""
+"Download upstream even if up to date (will not overwrite local files, "
+"however)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:382
+#, no-wrap
+msgid "B<--pasv>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:385
+msgid "Force PASV mode for FTP connections."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:385
+#, no-wrap
+msgid "B<--no-pasv>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:388
+msgid "Do not use PASV mode for FTP connections."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:388
+#, no-wrap
+msgid "B<--timeout> I<N>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:391
+msgid "Set timeout to N seconds (default 20 seconds)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:391 ../scripts/uupdate.1:74
+#, no-wrap
+msgid "B<--no-symlink>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:394
+msgid "Do not call B<mk-origtargz>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:396
+msgid "The following options are passed to B<mk-origtargz>:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:402
+msgid ""
+"Make I<orig.tar.gz> (with the appropriate extension) symlinks to the "
+"downloaded files. (This is the default behaviour.)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:405
+msgid "Instead of symlinking as described above, copy the downloaded files."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:408
+msgid "Instead of symlinking as described above, rename the downloaded files."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:414
+msgid ""
+"After having downloaded an lzma tar, xz tar, bzip tar or zip archive, repack "
+"it to a gzip tar archive, if required. The B<unzip> package must be "
+"installed in order to repack .zip archives, the B<xz-utils> package must be "
+"installed to repack lzma or xz tar archives."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:420
+msgid ""
+"In the case where the upstream sources are repacked (either because "
+"B<--repack> option is given or I<debian/copyright> contains the field "
+"B<Files-Excluded>), it is possible to control the compression method via the "
+"parameter (defaults to B<gzip>)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:420
+#, no-wrap
+msgid "B<--copyright-file >I<copyright-file>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:424
+msgid ""
+"Exclude files mentioned in B<Files-Excluded> in the given copyright file. "
+"This is useful when running uscan not within a source package directory."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:425
+#, no-wrap
+msgid "B<--dehs>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:428
+msgid "Use an XML format for output, as required by the DEHS system."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:428
+#, no-wrap
+msgid "B<--no-dehs>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:431
+msgid "Use the traditional uscan output format. (This is the default behaviour.)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:440
+msgid ""
+"Specify the name of the package to check for rather than examining "
+"I<debian/changelog>; this requires the B<--upstream-version> (unless a "
+"version is specified in the I<watch> file) and B<--watchfile> options as "
+"well. Furthermore, no directory scanning will be done and nothing will be "
+"downloaded. This option is probably most useful in conjunction with the "
+"DEHS system (and B<--dehs>)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:440
+#, no-wrap
+msgid "B<--upstream-version> I<upstream-version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:445
+msgid ""
+"Specify the current upstream version rather than examine the I<watch> file "
+"or I<changelog> to determine it. This is ignored if a directory scan is "
+"being performed and more than one I<watch> file is found."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:445
+#, no-wrap
+msgid "B<--watchfile> I<watchfile>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:452
+msgid ""
+"Specify the I<watchfile> rather than perform a directory scan to determine "
+"it. If this option is used without B<--package>, then B<uscan> must be "
+"called from within the Debian package source tree (so that "
+"I<debian/changelog> can be found simply by stepping up through the tree)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:452
+#, no-wrap
+msgid "B<--download-version> I<version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:456
+msgid ""
+"Specify the version which the upstream release must match in order to be "
+"considered, rather than using the release with the highest version."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:456
+#, no-wrap
+msgid "B<--download-current-version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:459
+msgid "Download the currently packaged version"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:462
+msgid "Give verbose output."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:462
+#, no-wrap
+msgid "B<--no-verbose>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:465
+msgid "Don't give verbose output. (This is the default behaviour.)"
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:465
+#, no-wrap
+msgid "B<--no-exclusion>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:469
+msgid ""
+"Do not automatically exclude files mentioned in I<debian/copyright> field "
+"B<Files-Excluded>"
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:469
+#, no-wrap
+msgid "B<--debug>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:472
+msgid "Dump the downloaded web pages to stdout for debugging your watch file."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:480
+#, no-wrap
+msgid "B<--user-agent>, B<--useragent>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:483
+msgid "Override the default user agent header."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:490
+msgid "Give brief usage information."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:500
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. These may "
+"be overridden by command line options. Environment variable settings are "
+"ignored for this purpose. If the first command line option given is "
+"B<--noconf>, then these files will not be read. The currently recognised "
+"variables are:"
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:500
+#, no-wrap
+msgid "B<USCAN_DOWNLOAD>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:505
+msgid ""
+"If this is set to I<no>, then newer upstream files will not be downloaded; "
+"this is equivalent to the B<--report> or B<--no-download> options."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:505
+#, no-wrap
+msgid "B<USCAN_PASV>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:511
+msgid ""
+"If this is set to I<yes> or I<no>, this will force FTP connections to use "
+"PASV mode or not to, respectively. If this is set to I<default>, then "
+"B<Net::FTP>(3) makes the choice (primarily based on the B<FTP_PASSIVE> "
+"environment variable)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:511
+#, no-wrap
+msgid "B<USCAN_TIMEOUT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:515
+msgid ""
+"If set to a number I<N>, then set the timeout to I<N> seconds. This is "
+"equivalent to the B<--timeout> option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:515
+#, no-wrap
+msgid "B<USCAN_SYMLINK>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:522
+msgid ""
+"If this is set to I<no>, then a pkg_version.orig.tar.{gz|bz2|lzma|xz} "
+"symlink will not be made (equivalent to the B<--no-symlink> option). If it "
+"is set to I<yes> or I<symlink>, then the symlinks will be made. If it is "
+"set to I<rename>, then the files are renamed (equivalent to the B<--rename> "
+"option)."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:522
+#, no-wrap
+msgid "B<USCAN_DEHS_OUTPUT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:526
+msgid ""
+"If this is set to I<yes>, then DEHS-style output will be used. This is "
+"equivalent to the B<--dehs> option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:526
+#, no-wrap
+msgid "B<USCAN_VERBOSE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:530
+msgid ""
+"If this is set to I<yes>, then verbose output will be given. This is "
+"equivalent to the B<--verbose> option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:530
+#, no-wrap
+msgid "B<USCAN_USER_AGENT>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:534
+msgid ""
+"If set, the specified user agent string will be used in place of the "
+"default. This is equivalent to the B<--user-agent> option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:534
+#, no-wrap
+msgid "B<USCAN_DESTDIR>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:538
+msgid ""
+"If set, the downloaded files will be placed in this directory. This is "
+"equivalent to the B<--destdir> option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:538
+#, no-wrap
+msgid "B<USCAN_REPACK>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:543
+msgid ""
+"If this is set to I<yes>, then after having downloaded a bzip tar, lzma tar, "
+"xz tar, or zip archive, B<uscan> will repack it to a gzip tar. This is "
+"equivalent to the B<--repack> option."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:543
+#, no-wrap
+msgid "B<USCAN_EXCLUSION>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:548
+msgid ""
+"If this is set to I<no>, files mentioned in the field B<Files-Excluded> of "
+"I<debian/copyright> will be ignored and no exclusion of files will be "
+"tried. This is equivalent to the B<--no-exclusion> option."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:552
+msgid ""
+"The exit status gives some indication of whether a newer version was found "
+"or not; one is advised to read the output to determine exactly what happened "
+"and whether there were any warnings to be noted."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:556
+msgid ""
+"Either B<--help> or B<--version> was used, or for some I<watch> file which "
+"was examined, a newer upstream version was located."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:560
+msgid ""
+"No newer upstream versions were located for any of the I<watch> files "
+"examined."
+msgstr ""
+
+#. type: SH
+#: ../scripts/uscan.1:560
+#, no-wrap
+msgid "HISTORY AND UPGRADING"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:564
+msgid ""
+"This section briefly describes the backwards-incompatible I<watch> file "
+"features which have been added in each I<watch> file version, and the first "
+"version of the B<devscripts> package which understood them."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:564
+#, no-wrap
+msgid "I<Pre-version 2>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:569
+msgid ""
+"The I<watch> file syntax was significantly different in those days. Don't "
+"use it. If you are upgrading from a pre-version 2 I<watch> file, you are "
+"advised to read this manpage and to start from scratch."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:569
+#, no-wrap
+msgid "I<Version 2>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:573
+msgid ""
+"devscripts version 2.6.90: The first incarnation of the current style of "
+"I<watch> files."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uscan.1:573
+#, no-wrap
+msgid "I<Version 3>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:579
+msgid ""
+"devscripts version 2.8.12: Introduced the following: correct handling of "
+"regex special characters in the path part, directory/path pattern matching, "
+"version number in several parts, version number mangling. Later versions "
+"have also introduced URL mangling."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:585
+msgid ""
+"If you are upgrading from version 2, the key incompatibility is if you have "
+"multiple groups in the pattern part; whereas only the first one would be "
+"used in version 2, they will all be used in version 3. To avoid this "
+"behaviour, change the non-version-number groups to be (?:...) instead of a "
+"plain (...) group."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:591
+msgid ""
+"B<dpkg>(1), B<mk-origtargz>(1), B<perlre>(1), B<uupdate>(1), "
+"B<devscripts.conf>(5)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uscan.1:596
+msgid ""
+"The original version of B<uscan> was written by Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. Significant improvements, changes and "
+"bugfixes were made by Julian Gilbey E<lt>jdg@debian.orgE<gt>. HTTP support "
+"was added by Piotr Roszatycki E<lt>dexter@debian.orgE<gt>. The program was "
+"rewritten in Perl by Julian Gilbey."
+msgstr ""
+
+#. type: TH
+#: ../scripts/uupdate.1:1
+#, no-wrap
+msgid "UUPDATE"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:4
+msgid "uupdate - upgrade a source code package from an upstream revision"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:6
+msgid "B<uupdate> [I<options>] I<new_upstream_archive> [I<version>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:8
+msgid "B<uupdate> [I<options>] B<--patch>|B<-p> I<patch_file>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:20
+msgid ""
+"B<uupdate> modifies an existing Debian source code archive to reflect an "
+"upstream update supplied as a patch or from a wholly new source code "
+"archive. The utility needs to be invoked from the top directory of the old "
+"source code directory, and if a relative name is given for the new archive "
+"or patch file, it will be looked for first relative to the execution "
+"directory and then relative to the parent of the source tree. (For example, "
+"if the changelog file is I</usr/local/src/foo/foo-1.1/debian/changelog>, "
+"then the archive or patch file will be looked for relative to "
+"I</usr/local/src/foo>.) Note that the patch file or archive cannot be "
+"within the source tree itself. The full details of what the code does are "
+"given below."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:30
+msgid ""
+"Currently supported source code file types are I<.tar.gz>, I<.tar.bz2>, "
+"I<.tar.Z>, I<.tgz>, I<.tar>, I<.tar.lzma>, I<.tar.xz>, I<.7z> and I<.zip> "
+"archives. Also supported are already unpacked source code archives; simply "
+"give the path of the source code directory. Supported patch file types are "
+"B<gzip>-compressed, B<bzip2>-compressed, B<lzma>-compressed, "
+"B<xz>-compressed and uncompressed patch files. The file types are "
+"identified by the file names, so they must use the standard suffixes."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:40
+msgid ""
+"Usually B<uupdate> will be able to deduce the version number from the source "
+"archive name (as long as it only contains digits and periods). If that "
+"fails, you need to specify the version number explicitly (without the Debian "
+"release number which will always be initially ``1'', or ``0ubuntu1'' on "
+"Ubuntu-detected systems). This can be done with an initial "
+"B<--upstream-version> or B<-v> option, or in the case of an archive, with a "
+"version number after the filename. (The reason for the latter is so that "
+"B<uupdate> can be called directly from B<uscan>.)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:45
+msgid ""
+"Since B<uupdate> uses B<debuild> to clean the current archive before trying "
+"to apply a patch file, it accepts a B<--rootcmd> or B<-r> option allowing "
+"the user to specify a gain-root command to be used. The default is to use "
+"B<fakeroot>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:52
+msgid ""
+"If an archive is being built, the pristine upstream source should be used to "
+"create the I<.orig.tar.gz> file wherever possible. This means that MD5 sums "
+"or other similar methods can be used to easily compare the upstream source "
+"to Debian's copy of the upstream version. This is the default behaviour, "
+"and can be switched off using the B<--no-pristine> option below."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:54
+msgid "This is a summary of what was explained above."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:54
+#, no-wrap
+msgid "B<--upstream-version >I<version>, B<-v >I<version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:57
+msgid "Specify the version number of the upstream package explicitly."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:57
+#, no-wrap
+msgid "B<--rootcmd >I<gain-root-command>, B<-r >I<gain-root-command>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:61
+msgid ""
+"Specify the command to be used to become root to build the package and is "
+"passed onto B<debuild>(1) if it is specified."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:61
+#, no-wrap
+msgid "B<--pristine>, B<-u>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:66
+msgid ""
+"Treat the source as pristine upstream source and symlink to it from "
+"I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz> whenever possible. This "
+"option has no meaning for patches. This is the default behaviour."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:66
+#, no-wrap
+msgid "B<--no-pristine>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:69
+msgid ""
+"Do not attempt to make a I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz> "
+"symlink."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:69
+#, no-wrap
+msgid "B<--symlink>, B<-s>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:74
+msgid ""
+"Simply create a symlink when moving a new upstream I<.tar.gz> archive to the "
+"new I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz> location. This is "
+"the default behaviour."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:78
+msgid ""
+"Copy the upstream I<.tar.gz> to the new location instead of making a "
+"symlink."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:94
+#, no-wrap
+msgid "B<UUPDATE_PRISTINE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:98
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-pristine> command "
+"line parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:98
+#, no-wrap
+msgid "B<UUPDATE_SYMLINK_ORIG>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:102
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-symlink> command "
+"line parameter being used."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:102
+#, no-wrap
+msgid "B<UUPDATE_ROOTCMD>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:105
+msgid "This is equivalent to the B<--rootcmd> option."
+msgstr ""
+
+#. type: SH
+#: ../scripts/uupdate.1:105
+#, no-wrap
+msgid "ACTIONS TAKEN ON AN ARCHIVE"
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:106 ../scripts/uupdate.1:139
+#, no-wrap
+msgid "B<Figure out new version number>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:112
+msgid ""
+"Unless an explicit version number is provided, the archive name is analyzed "
+"for a sequence of digits separated by dots. If something like that is "
+"found, it is taken to be the new upstream version number. If not, "
+"processing is aborted."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:112
+#, no-wrap
+msgid "B<Create the .orig.tar.gz archive>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:117
+msgid ""
+"If the B<--pristine> or B<-u> option is specified and the upstream archive "
+"is a I<.tar.gz> or I<.tgz> archive, then this will be copied directly to "
+"I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz>."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:117
+#, no-wrap
+msgid "B<Unpacking>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:122
+msgid ""
+"The archive is unpacked and placed in a directory with the correct name "
+"according to Debian policy: package-upstream_version.orig. Processing is "
+"aborted if this directory already exists."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:122 ../scripts/uupdate.1:150
+#, no-wrap
+msgid "B<Patching>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:130
+msgid ""
+"The I<.diffs.gz> from the current version are applied to the unpackaged "
+"archive. A non-zero exit status and warning message will occur if the "
+"patches did not apply cleanly or if no patch file was found. Also, the list "
+"of rejected patches will be shown. The file I<debian/rules> is made "
+"executable and all of the I<.orig> files created by B<patch> are deleted."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:130 ../scripts/uupdate.1:162
+#, no-wrap
+msgid "B<Changelog update>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:134 ../scripts/uupdate.1:166
+msgid ""
+"A changelog entry with the new version number is generated with the text "
+"``New upstream release''."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:138 ../scripts/uupdate.1:170
+msgid ""
+"When used on Ubuntu systems, B<dpkg-vendor> detection is used to set the "
+"Debian revision to ``0ubuntu1''. You may change I<debian/changelog> "
+"manually afterwards."
+msgstr ""
+
+#. type: SH
+#: ../scripts/uupdate.1:138
+#, no-wrap
+msgid "ACTIONS TAKEN ON A PATCH FILE"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:145
+msgid ""
+"Unless an explicit version number is provided, the patch file name is "
+"analyzed for a sequence of digits separated by dots. If something like that "
+"is found, it is taken to be the new upstream version number. If not, "
+"processing is aborted."
+msgstr ""
+
+#. type: TP
+#: ../scripts/uupdate.1:145
+#, no-wrap
+msgid "B<Clean the current source tree>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:150
+msgid ""
+"The command B<debuild clean> is executed within the current Debian source "
+"archive to clean it. If a B<-r> option is given to B<uupdate>, it is passed "
+"on to B<debuild>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:162
+msgid ""
+"The current source archive (I<.orig.tar.gz>) is unpacked and the patch "
+"applied to the original sources. If this is successful, then the I<.orig> "
+"directory is renamed to reflect the new version number and the current "
+"Debian source directory is copied to a directory with the new version "
+"number, otherwise processing is aborted. The patch is then applied to the "
+"new copy of the Debian source directory. The file I<debian/rules> is made "
+"executable and all of the I<.orig> files created by B<patch> are deleted. "
+"If there was a problem with the patching, a warning is issued and the "
+"program will eventually exit with non-zero exit status."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:175
+msgid "B<debuild>(1), B<fakeroot>(1), B<patch>(1), B<devscripts.conf>(5)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:177
+msgid "B<The Debian Policy Manual>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/uupdate.1:180
+msgid ""
+"The original version of B<uupdate> was written by Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. Several changes and improvements have been "
+"made by Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../doc/what-patch.1:1
+#, no-wrap
+msgid "WHAT-PATCH"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/what-patch.1:4
+msgid "what-patch - detect which patch system a Debian package uses"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/what-patch.1:7
+msgid "B<what-patch> [I<options>]"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/what-patch.1:11
+msgid ""
+"B<what-patch> examines the I<debian/rules> file to determine which patch "
+"system the Debian package is using."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/what-patch.1:14
+msgid ""
+"B<what-patch> should be run from the root directory of the Debian source "
+"package."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/what-patch.1:17
+msgid "Listed below are the command line options for B<what-patch>:"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/what-patch.1:20
+msgid "Display a help message and exit."
+msgstr ""
+
+#. type: TP
+#: ../doc/what-patch.1:20
+#, no-wrap
+msgid "B<-v>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/what-patch.1:26
+msgid ""
+"Enable verbose mode. This will include the listing of any files modified "
+"outside or the I<debian/> directory and report any additional details about "
+"the patch system if available."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/what-patch.1:32
+msgid ""
+"B<what-patch> was written by Kees Cook E<lt>kees@ubuntu.comE<gt>, "
+"Siegfried-A. Gevatter E<lt>rainct@ubuntu.comE<gt>, and Daniel Hahler "
+"E<lt>ubuntu@thequod.deE<gt>, among others. This manual page was written by "
+"Jonathan Patrick Davies E<lt>jpds@ubuntu.comE<gt>."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/what-patch.1:34
+msgid "Both are released under the GNU General Public License, version 3 or later."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/what-patch.1:38
+msgid ""
+"The Ubuntu MOTU team has some documentation about patch systems at the "
+"Ubuntu wiki: I<https://wiki.ubuntu.com/PackagingGuide/PatchSystems>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/what-patch.1:42
+msgid "B<cdbs-edit-patch>(1), B<dbs-edit-patch>(1), B<dpatch-edit-patch>(1)"
+msgstr ""
+
+#. type: TH
+#: ../scripts/whodepends.1:1
+#, no-wrap
+msgid "WHODEPENDS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/whodepends.1:4
+msgid "whodepends - check which maintainers' packages depend on a package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/whodepends.1:6
+msgid "B<whodepends> [I<package>] [I<options>]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/whodepends.1:10
+msgid ""
+"B<whodepends> gives the names, e-mail addresses and the packages they "
+"maintain of all maintainers who have packages depending on the given "
+"package."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/whodepends.1:19
+msgid "B<whodepends> is not very efficient."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/whodepends.1:20
+msgid "B<whodepends> has been written by Moshe Zadka E<lt>moshez@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/who-uploads.1:1
+#, no-wrap
+msgid "WHO-UPLOADS"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:4
+msgid "who-uploads - identify the uploaders of Debian source packages"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:6
+msgid "B<who-uploads> [I<options>] I<source_package> ..."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:12
+msgid ""
+"B<who-uploads> uses the Package Tracking System (PTS) to identify the "
+"uploaders of the three most recent versions of the given source packages. "
+"Note that the uploaders are identified using their B<gpg>(1) keys; "
+"installing a recent version of the I<debian-keyring> package should provide "
+"most of the required keys."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:15
+msgid ""
+"Note that because the PTS uses source packages, you must give the source "
+"package names, not the binary package names."
+msgstr ""
+
+#. type: TP
+#: ../scripts/who-uploads.1:16
+#, no-wrap
+msgid "B<-M>, B<--max-uploads=>I<N>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:21
+msgid ""
+"Specify the maximum number of uploads to display for each package; the "
+"default is 3. Note that you may not see this many uploads if there are not "
+"this many recorded in the PTS."
+msgstr ""
+
+#. type: TP
+#: ../scripts/who-uploads.1:21
+#, no-wrap
+msgid "B<--keyring >I<keyring>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:25
+msgid ""
+"Add I<keyring> to the list of keyrings to be searched for the uploader's GPG "
+"key."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:33
+msgid ""
+"By default, B<who-uploads> uses the two Debian keyrings "
+"I</usr/share/keyrings/debian-keyring.gpg> and "
+"I</usr/share/keyrings/debian-maintainers.gpg> (although this default can be "
+"changed in the configuration file, see below). Specifying this option means "
+"that the default keyrings will not be examined. The B<--keyring> option "
+"overrides this one."
+msgstr ""
+
+#. type: TP
+#: ../scripts/who-uploads.1:33
+#, no-wrap
+msgid "B<--date>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:36
+msgid "Show the date of the upload alongside the uploader's details"
+msgstr ""
+
+#. type: TP
+#: ../scripts/who-uploads.1:36
+#, no-wrap
+msgid "B<--nodate>, B<--no-date>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:40
+msgid ""
+"Do not show the date of the upload alongside the uploader's details. This "
+"is the default behaviour."
+msgstr ""
+
+#. type: TP
+#: ../scripts/who-uploads.1:56
+#, no-wrap
+msgid "B<WHOUPLOADS_DATE>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:60
+msgid ""
+"Show the date of the upload alongside the uploader's details. By default, "
+"this is \"no\"."
+msgstr ""
+
+#. type: TP
+#: ../scripts/who-uploads.1:60
+#, no-wrap
+msgid "B<WHOUPLOADS_MAXUPLOADS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:64
+msgid ""
+"The maximum number of uploads to display for each package. By default, this "
+"is 3."
+msgstr ""
+
+#. type: TP
+#: ../scripts/who-uploads.1:64
+#, no-wrap
+msgid "B<WHOUPLOADS_KEYRINGS>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:71
+msgid ""
+"This is a colon-separated list of the default keyrings to be used. By "
+"default, it is the two Debian keyrings "
+"I</usr/share/keyrings/debian-keyring.gpg> and "
+"I</usr/share/keyrings/debian-maintainers.gpg>."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:74
+msgid ""
+"The original version of B<who-uploads> was written by Adeodato Sim\\['o] "
+"E<lt>dato@net.com.org.esE<gt>. The current version is by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:44
+msgid "who-permits-upload - look-up Debian Maintainer access control lists"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:48
+msgid ""
+"B<who-permits-upload> [B<-h>] [B<-s> I<keyring>] [B<-d> I<dm_url>] [B<-s> "
+"I<search_type>] I<query> [I<query> ...]"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:52
+msgid ""
+"B<who-permits-upload> looks up the given Debian Maintainer (DM) upload "
+"permissions from ftp-master.debian.org and parses them in a human readable "
+"way. The tool can search by DM name, sponsor (the person who granted the "
+"permission) and by package."
+msgstr ""
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:60
+msgid "B<--dmfile=>I<dm_url>, B<-d> I<dm_url>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:62
+msgid ""
+"Retrieve the DM permission file from the supplied URL. When this option is "
+"not present, the default value I<https://ftp-master.debian.org/dm.txt> is "
+"used."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:67
+msgid "Display an usage summary and exit."
+msgstr ""
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:69
+msgid "B<--keyring=>I<keyring>, B<-s> I<keyring>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:71
+msgid ""
+"Use the supplied GnuPG keyrings to look-up GPG fingerprints from the DM "
+"permission file. When not present, the default Debian Developer and "
+"Maintainer keyrings are used (I</usr/share/keyrings/debian-keyring.gpg> and "
+"I</usr/share/keyrings/debian-maintainers.gpg>, installed by the "
+"I<debian-keyring> package)."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:77
+msgid "Separate keyrings with a colon \":\"."
+msgstr ""
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:79
+msgid "B<--search=>I<search_type>, B<-s> I<search_type>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:81
+msgid ""
+"Modify the look-up behavior. This influences the interpretation of the "
+"I<query> argument. Supported search types are:"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:88
+msgid ""
+"Search for a source package name. This is also the default when B<--search> "
+"is omitted. Since package names are unique, this will return given ACLs - "
+"if any - for a single package."
+msgstr ""
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:92
+msgid "B<uid>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:94
+msgid ""
+"Search for a Debian Maintainer. This should be (a fraction of) a name. It "
+"will return all ACLs assigned to matching maintainers."
+msgstr ""
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:97
+msgid "B<sponsor>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:99
+msgid ""
+"Search for a sponsor (i.e. a Debian Developer) who granted DM "
+"permissions. This will return all ACLs given by the supplied developer."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:102
+msgid "Note that this is an expensive operation which may take some time."
+msgstr ""
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:106
+msgid "I<query>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:108
+msgid ""
+"A case sensitive argument to be looked up in the ACL permission file. The "
+"exact interpretation of this argument is dependent by the B<--search> "
+"argument."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:111
+msgid "This argument can be repeated."
+msgstr ""
+
+#. type: =head1
+#: ../scripts/who-permits-upload.pl:115
+msgid "EXIT VALUE"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:121
+msgid "Success"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:125
+msgid "An error occurred"
+msgstr ""
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:127
+msgid "2Z<>"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:129
+msgid "The command line was not understood"
+msgstr ""
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:137
+msgid "who-permits-upload --search=sponsor arno@debian.org"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:139
+msgid ""
+"Search for all DM upload permissions given by the UID "
+"\"arno@debian.org\". Note, that only primary UIDs will match."
+msgstr ""
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:142
+msgid "who-permits-upload -s=sponsor \"Arno Töll\""
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:144
+msgid "Same as above, but use a full name instead."
+msgstr ""
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:146
+msgid "who-permits-upload apache2"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:148
+msgid "Look up who gave upload permissions for the apache2 source package."
+msgstr ""
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:150
+msgid "who-permits-upload --search=uid \"Paul Tagliamonte\""
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:152
+msgid "Look up all DM upload permissions given to \"Paul Tagliamonte\"."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:158
+msgid ""
+"B<who-permits-upload> was written by Arno Töll <arno@debian.org> and is "
+"licensed under the terms of the General Public License (GPL) version 2 or "
+"later."
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:163
+msgid "B<gpg>(1), B<who-uploads>(1)"
+msgstr ""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:165
+msgid "S<I<https://lists.debian.org/debian-devel-announce/2012/09/msg00008.html>>"
+msgstr ""
+
+#. type: TH
+#: ../scripts/wnpp-alert.1:1
+#, no-wrap
+msgid "WNPP-ALERT"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:4
+msgid "wnpp-alert - check for installed packages up for adoption or orphaned"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:6
+msgid "B<wnpp-alert >[B<--diff>] [I<package> ...]"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:8
+msgid "B<wnpp-alert --help>|B<--version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:14
+msgid ""
+"B<wnpp-alert> downloads the lists of packages which have been orphaned (O), "
+"are up for adoption (RFA), or the maintainer has asked for help (RFH) from "
+"the WNPP webpages, and then outputs a list of packages installed on the "
+"system, or matching the listed packages, which are in those lists."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:17
+msgid ""
+"Note that WNPP, and therefore B<wnpp-alert>'s output, is source package "
+"based."
+msgstr ""
+
+#. type: TP
+#: ../scripts/wnpp-alert.1:18
+#, no-wrap
+msgid "B<--diff>, B<-d>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:23
+msgid ""
+"If the I<~/.devscripts_cache> directory exists, compare the output of "
+"B<wnpp-alert> to the previous output (cached in the file I<wnpp-diff>) and "
+"output the differences."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:31 ../scripts/wnpp-check.1:25
+msgid "https://www.debian.org/devel/wnpp"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:34
+msgid ""
+"B<wnpp-alert> was written by Arthur Korn E<lt>arthur@korn.chE<gt> and "
+"modified by Julian Gilbey E<lt>jdg@debian.orgE<gt> for the devscripts "
+"package. It is in the public domain."
+msgstr ""
+
+#. type: TH
+#: ../scripts/wnpp-check.1:1
+#, no-wrap
+msgid "WNPP-CHECK"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:4
+msgid ""
+"wnpp-check - check if a package is being packaged or if this has been "
+"requested"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:6
+msgid "B<wnpp-check >I<package >..."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:8
+msgid "B<wnpp-check --help>|B<--version>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:13
+msgid ""
+"B<wnpp-check> downloads the lists of packages which are listed as being "
+"packaged (ITPed) or for which a package has been requested (RFPed) from the "
+"WNPP website and lists any packages supplied on the command line which "
+"appear in those lists."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:16
+msgid ""
+"Note that WNPP, and therefore B<wnpp-check>'s output, is source package "
+"based."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:29
+msgid "None of the packages supplied has an open ITP or RFP"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:33
+msgid ""
+"Either an error occurred or at least one package supplied has an open ITP or "
+"RFP"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:39
+msgid ""
+"B<wnpp-check> was written by David Paleino E<lt>d.paleino@gmail.comE<gt>; "
+"this man page was written by Adam D. Barratt "
+"E<lt>adam@adam-barratt.org.ukE<gt> for the devscripts package. "
+"B<wnpp-check> was originally based on B<wnpp-alert>, which was written by "
+"Arthur Korn E<lt>arthur@korn.chE<gt> and modified by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> for the devscripts package. Both scripts are in "
+"the public domain."
+msgstr ""
+
+#. type: TH
+#: ../doc/wrap-and-sort.1:15
+#, no-wrap
+msgid "WRAP-AND-SORT"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:18
+msgid "wrap-and-sort - wrap long lines and sort items in Debian packaging files"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:21
+msgid "B<wrap-and-sort> [I<options>]"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:28
+msgid ""
+"B<wrap-and-sort> wraps the package lists in Debian control files. By default "
+"the lists will only split into multiple lines if the entries are longer than "
+"the maximum line length limit of 79 characters. B<wrap-and-sort> sorts the "
+"package lists in Debian control files and all I<.install> files. Beside that "
+"B<wrap-and-sort> removes trailing spaces in these files."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:32
+msgid ""
+"This script should be run in the root of a Debian package tree. It searches "
+"for I<control>, I<control*.in>, I<copyright>, I<copyright.in>, I<install>, "
+"and I<*.install> in the I<debian> directory."
+msgstr ""
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:37
+#, no-wrap
+msgid "B<-a>, B<--wrap-always>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:41
+msgid ""
+"Wrap all package lists in the Debian I<control> file even if they do not "
+"exceed the line length limit and could fit in one line."
+msgstr ""
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:41
+#, no-wrap
+msgid "B<-s>, B<--short-indent>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:45
+msgid ""
+"Only indent wrapped lines by one space (default is in-line with the field "
+"name)."
+msgstr ""
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:45
+#, no-wrap
+msgid "B<-b>, B<--sort-binary-packages>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:48
+msgid "Sort binary package paragraphs by name."
+msgstr ""
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:48
+#, no-wrap
+msgid "B<-k>, B<--keep-first>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:54
+msgid ""
+"When sorting binary package paragraphs, leave the first one at the top. "
+"Unqualified B<debhelper>(7) configuration files are applied to the first "
+"package."
+msgstr ""
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:54
+#, no-wrap
+msgid "B<-n>, B<--no-cleanup>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:57
+msgid "Do not remove trailing whitespaces."
+msgstr ""
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:57
+#, no-wrap
+msgid "B<-t>, B<--trailing-comma>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:62
+msgid ""
+"Add a trailing comma at the end of the sorted fields. This minimizes future "
+"differences in the VCS commits when additional dependencies are appended or "
+"removed."
+msgstr ""
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:62
+#, no-wrap
+msgid "B<-d >I<path>, B<--debian-directory=>I<path>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:65
+msgid "Location of the I<debian> directory (default: I<./debian>)."
+msgstr ""
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:65
+#, no-wrap
+msgid "B<-f >I<file>, B<--file=>I<file>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:70
+msgid ""
+"Wrap and sort only the specified I<file>. You can specify this parameter "
+"multiple times. All supported files will be processed if no files are "
+"specified."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:73
+msgid "Print all files that are touched."
+msgstr ""
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:73
+#, no-wrap
+msgid "B<--max-line-length=>I<max_line_length>"
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:78
+msgid ""
+"Set the maximum allowed line length. Package lists in the Debian I<control> "
+"file that exceed this length limit will be wrapped. The default maximum line "
+"length is 79 characters."
+msgstr ""
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:82
+msgid ""
+"B<wrap-and-sort> and this manpage have been written by Benjamin Drung "
+"E<lt>bdrung@debian.orgE<gt>."
+msgstr ""
+
+#. type: TH
+#: ../scripts/devscripts.conf.5:1
+#, no-wrap
+msgid "DEVSCRIPTS.CONF"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:4
+msgid "devscripts.conf - configuration file for the devscripts package"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:9
+msgid ""
+"The B<devscripts> package provides a collection of scripts which may be of "
+"use to Debian developers and others wishing to build Debian packages. Many "
+"of these have options which can be configured on a system-wide and per-user "
+"basis."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:15
+msgid ""
+"Every script in the B<devscripts> package which makes use of values from "
+"these configuration files describes the specific settings recognised in its "
+"own manpage. (For a list of the scripts, either see "
+"I</usr/share/doc/devscripts/README.gz> or look at the output of I<dpkg -L "
+"devscripts | grep /usr/bin>.)"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:24
+msgid ""
+"The two configuration files are I</etc/devscripts.conf> for system-wide "
+"defaults and I<~/.devscripts> for per-user settings. They are written with "
+"B<bash>(1) syntax, but should only have comments and simple variable "
+"assignments in them; they are both sourced (if present) by many of the "
+"B<devscripts> scripts. Variables corresponding to simple switches should "
+"have one of the values I<yes> and I<no>; any other setting is regarded as "
+"equivalent to the default setting."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:28
+msgid ""
+"All variable names are written in uppercase, and begin with the script "
+"name. Package-wide variables begin with \"DEVSCRIPTS\", and are listed "
+"below, as well as in the relevant manpages."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:36
+msgid ""
+"For a list of all of the available options variables, along with their "
+"default settings, see the example configuration file "
+"I</usr/share/doc/devscripts/devscripts.conf.ex>. This is copied to "
+"I</etc/devscripts.conf> when the B<devscripts> package is first installed. "
+"Information about configuration options introduced in newer versions of the "
+"package will be appended to I</etc/devscripts.conf> when the package is "
+"upgraded."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:40
+msgid ""
+"Every script which reads the configuration files can be forced to ignore "
+"them by using B<--no-conf> as the I<first> command-line option."
+msgstr ""
+
+#. type: SH
+#: ../scripts/devscripts.conf.5:40
+#, no-wrap
+msgid "PACKAGE-WIDE VARIABLES"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:42
+msgid "The currently recognised package-wide variables are:"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:54
+msgid ""
+"These variables control scripts which change directory to find a "
+"I<debian/changelog> file or suchlike, and some other miscellaneous cases. "
+"In order to prevent unwanted, even possibly dangerous, behaviour, these "
+"variables control when actions will be performed. The scripts which "
+"currently make use of these variables are: B<debc>, B<debchange>/B<dch>, "
+"B<debclean>, B<debi>, B<debrelease>, B<debuild> and B<uscan>, but this list "
+"may change with time (and I may not remember to update this manpage). "
+"Please see the manpages of individual scripts for details of the specific "
+"behaviour for each script."
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:58
+msgid "B<devscripts>(1) and I</usr/share/doc/devscripts/README.gz.>"
+msgstr ""
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:60
+msgid ""
+"This manpage was written for the B<devscripts> package by the package "
+"maintainer Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
--- /dev/null
+# French translation of devscripts manual pages.
+# Copyright (C) 2004-2014 Debian French l10n team <debian-l10n-french@lists.debian.org>.
+# This file is distributed under the same license as the devscripts package.
+#
+# Nicolas François <nicolas.francois@centraliens.net>, 2004-2009.
+# DELACOUR Guillaume <guillaume.delacour@gmail.com>, 2005.
+# Cyril Brulebois <cyril.brulebois@enst-bretagne.fr>, 2006.
+# Thomas Huriaux <thomas.huriaux@gmail.com>, 2006.
+# Julien Cristau <jcristau@debian.org>, 2006-2007.
+# PHAN Thi Thanh <pthanh2003@hotmail.com>, 2009.
+# David Prévot <david@tilapin.org>, 2010-2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: devscripts\n"
+"POT-Creation-Date: 2014-12-23 08:54-0400\n"
+"PO-Revision-Date: 2014-12-23 08:45-0400\n"
+"Last-Translator: David Prévot <david@tilapin.org>\n"
+"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 1.5\n"
+
+#. type: TH
+#: ../scripts/annotate-output.1:1
+#, no-wrap
+msgid "ANNOTATE-OUTPUT"
+msgstr "ANNOTATE-OUTPUT"
+
+#. type: TH
+#: ../scripts/annotate-output.1:1 ../scripts/archpath.1:1
+#: ../scripts/checkbashisms.1:1 ../scripts/cvs-debc.1:1
+#: ../scripts/cvs-debi.1:1 ../scripts/cvs-debrelease.1:1
+#: ../scripts/cvs-debuild.1:1 ../scripts/dcmd.1:1 ../scripts/debc.1:1
+#: ../scripts/debchange.1:1 ../scripts/debclean.1:1 ../scripts/debdiff.1:1
+#: ../scripts/debi.1:1 ../scripts/debpkg.1:1 ../scripts/debrelease.1:1
+#: ../scripts/debrsign.1:1 ../scripts/debsign.1:1 ../scripts/debuild.1:1
+#: ../scripts/dep3changelog.1:1 ../scripts/devscripts.1:1
+#: ../scripts/dpkg-genbuilddeps.1:1 ../doc/edit-patch.1:1
+#: ../scripts/dscextract.1:1 ../scripts/dscverify.1:1
+#: ../scripts/getbuildlog.1:1 ../scripts/grep-excuses.1:1
+#: ../scripts/list-unreleased.1:1 ../scripts/manpage-alert.1:1
+#: ../scripts/mergechanges.1:1 ../scripts/nmudiff.1:1
+#: ../scripts/plotchangelog.1:1 ../scripts/pts-subscribe.1:1
+#: ../scripts/rc-alert.1:1 ../doc/suspicious-source.1:15 ../scripts/uscan.1:1
+#: ../scripts/uupdate.1:1 ../doc/what-patch.1:1 ../scripts/whodepends.1:1
+#: ../scripts/who-uploads.1:1 ../scripts/wnpp-alert.1:1
+#: ../scripts/wnpp-check.1:1 ../doc/wrap-and-sort.1:15
+#: ../scripts/devscripts.conf.5:1
+#, no-wrap
+msgid "Debian Utilities"
+msgstr "Utilitaires Debian"
+
+#. type: TH
+#: ../scripts/annotate-output.1:1 ../scripts/archpath.1:1
+#: ../scripts/checkbashisms.1:1 ../scripts/cvs-debc.1:1
+#: ../scripts/cvs-debi.1:1 ../scripts/cvs-debrelease.1:1
+#: ../scripts/cvs-debuild.1:1 ../scripts/dcmd.1:1 ../scripts/debc.1:1
+#: ../scripts/debchange.1:1 ../scripts/debclean.1:1 ../scripts/debdiff.1:1
+#: ../scripts/debi.1:1 ../scripts/debpkg.1:1 ../scripts/debrelease.1:1
+#: ../scripts/debrsign.1:1 ../scripts/debsign.1:1 ../scripts/debuild.1:1
+#: ../scripts/dep3changelog.1:1 ../scripts/devscripts.1:1
+#: ../scripts/dpkg-depcheck.1:1 ../scripts/dpkg-genbuilddeps.1:1
+#: ../doc/edit-patch.1:1 ../scripts/dscextract.1:1 ../scripts/dscverify.1:1
+#: ../scripts/getbuildlog.1:1 ../scripts/grep-excuses.1:1
+#: ../scripts/list-unreleased.1:1 ../scripts/manpage-alert.1:1
+#: ../scripts/mergechanges.1:1 ../scripts/nmudiff.1:1
+#: ../scripts/plotchangelog.1:1 ../scripts/pts-subscribe.1:1
+#: ../scripts/rc-alert.1:1 ../doc/suspicious-source.1:15 ../scripts/uscan.1:1
+#: ../scripts/uupdate.1:1 ../doc/what-patch.1:1 ../scripts/whodepends.1:1
+#: ../scripts/who-uploads.1:1 ../scripts/wnpp-alert.1:1
+#: ../scripts/wnpp-check.1:1 ../doc/wrap-and-sort.1:15
+#: ../scripts/devscripts.conf.5:1
+#, no-wrap
+msgid "DEBIAN"
+msgstr "DEBIAN"
+
+#. type: SH
+#: ../scripts/annotate-output.1:2 ../scripts/archpath.1:2 ../scripts/bts.pl:39
+#: ../scripts/build-rdeps.pl:18 ../scripts/chdist.pl:18
+#: ../scripts/checkbashisms.1:2 ../scripts/cowpoke.1:18
+#: ../scripts/cvs-debc.1:2 ../scripts/cvs-debi.1:2
+#: ../scripts/cvs-debrelease.1:2 ../scripts/cvs-debuild.1:2
+#: ../scripts/dcmd.1:2 ../scripts/dcontrol.pl:196 ../scripts/dd-list.1:18
+#: ../scripts/debc.1:2 ../scripts/debchange.1:2 ../scripts/debcheckout.pl:24
+#: ../scripts/debclean.1:2 ../scripts/debcommit.pl:3 ../scripts/debdiff.1:2
+#: ../scripts/debi.1:2 ../scripts/debpkg.1:2 ../scripts/debrelease.1:2
+#: ../scripts/debrsign.1:2 ../scripts/debsign.1:2 ../scripts/debsnap.1:3
+#: ../scripts/debuild.1:2 ../scripts/desktop2menu.pl:24
+#: ../scripts/dep3changelog.1:2 ../scripts/devscripts.1:2
+#: ../scripts/dget.pl:508 ../scripts/diff2patches.1:2
+#: ../scripts/dpkg-depcheck.1:2 ../scripts/dpkg-genbuilddeps.1:2
+#: ../doc/edit-patch.1:2 ../scripts/dscextract.1:2 ../scripts/dscverify.1:2
+#: ../scripts/getbuildlog.1:2 ../scripts/grep-excuses.1:2
+#: ../scripts/licensecheck.pl:22 ../scripts/list-unreleased.1:2
+#: ../scripts/manpage-alert.1:2 ../scripts/mass-bug.pl:21
+#: ../scripts/mergechanges.1:2 ../scripts/mk-build-deps.pl:24
+#: ../scripts/mk-origtargz.pl:24 ../scripts/namecheck.pl:3
+#: ../scripts/nmudiff.1:2 ../scripts/origtargz.pl:20
+#: ../scripts/plotchangelog.1:2 ../scripts/pts-subscribe.1:2
+#: ../scripts/rc-alert.1:2 ../scripts/rmadison.pl:200 ../scripts/sadt.pod:17
+#: ../doc/suspicious-source.1:17 ../scripts/svnpath.pl:3
+#: ../scripts/tagpending.pl:79 ../scripts/transition-check.pl:23
+#: ../scripts/uscan.1:2 ../scripts/uupdate.1:2 ../doc/what-patch.1:2
+#: ../scripts/whodepends.1:2 ../scripts/who-uploads.1:2
+#: ../scripts/who-permits-upload.pl:42 ../scripts/wnpp-alert.1:2
+#: ../scripts/wnpp-check.1:2 ../doc/wrap-and-sort.1:16
+#: ../scripts/devscripts.conf.5:2
+#, no-wrap
+msgid "NAME"
+msgstr "NOM"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:4
+msgid "annotate-output - annotate program output with time and stream"
+msgstr ""
+"annotate-output - Annoter la sortie d'un programme avec la date et les flux"
+
+#. type: SH
+#: ../scripts/annotate-output.1:4 ../scripts/archpath.1:4
+#: ../scripts/bts.pl:186 ../scripts/build-rdeps.pl:22 ../scripts/chdist.pl:22
+#: ../scripts/checkbashisms.1:4 ../scripts/cowpoke.1:20
+#: ../scripts/cvs-debc.1:4 ../scripts/cvs-debi.1:4
+#: ../scripts/cvs-debrelease.1:4 ../scripts/cvs-debuild.1:4
+#: ../scripts/dcmd.1:4 ../scripts/dcontrol.pl:200 ../scripts/dd-list.1:21
+#: ../scripts/debc.1:4 ../scripts/debchange.1:4 ../scripts/debcheckout.pl:28
+#: ../scripts/debclean.1:4 ../scripts/debcommit.pl:7 ../scripts/debdiff.1:4
+#: ../scripts/debi.1:4 ../scripts/debpkg.1:4 ../scripts/debrelease.1:4
+#: ../scripts/debrsign.1:4 ../scripts/debsign.1:4 ../scripts/debsnap.1:6
+#: ../scripts/debuild.1:4 ../scripts/desktop2menu.pl:28
+#: ../scripts/dep3changelog.1:4 ../scripts/dget.pl:512
+#: ../scripts/dpkg-depcheck.1:4 ../scripts/dpkg-genbuilddeps.1:4
+#: ../doc/edit-patch.1:6 ../scripts/dscextract.1:4 ../scripts/dscverify.1:4
+#: ../scripts/getbuildlog.1:4 ../scripts/grep-excuses.1:4
+#: ../scripts/licensecheck.pl:26 ../scripts/list-unreleased.1:4
+#: ../scripts/manpage-alert.1:4 ../scripts/mass-bug.pl:25
+#: ../scripts/mergechanges.1:4 ../scripts/mk-build-deps.pl:28
+#: ../scripts/mk-origtargz.pl:28 ../scripts/nmudiff.1:4
+#: ../scripts/origtargz.pl:24 ../scripts/plotchangelog.1:4
+#: ../scripts/pts-subscribe.1:4 ../scripts/rc-alert.1:4
+#: ../scripts/rmadison.pl:204 ../scripts/sadt.pod:21
+#: ../doc/suspicious-source.1:21 ../scripts/svnpath.pl:7
+#: ../scripts/tagpending.pl:83 ../scripts/transition-check.pl:27
+#: ../scripts/uscan.1:4 ../scripts/uupdate.1:4 ../doc/what-patch.1:5
+#: ../scripts/whodepends.1:4 ../scripts/who-uploads.1:4
+#: ../scripts/who-permits-upload.pl:46 ../scripts/wnpp-alert.1:4
+#: ../scripts/wnpp-check.1:4 ../doc/wrap-and-sort.1:18
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "SYNOPSIS"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:6
+msgid "B<annotate-output> [I<options>] I<program> [I<args> ...]"
+msgstr "B<annotate-output> [I<options>] I<programme> [I<paramètres> ...]"
+
+#. type: SH
+#: ../scripts/annotate-output.1:6 ../scripts/archpath.1:12
+#: ../scripts/bts.pl:190 ../scripts/build-rdeps.pl:26 ../scripts/chdist.pl:26
+#: ../scripts/checkbashisms.1:8 ../scripts/cowpoke.1:24
+#: ../scripts/cvs-debc.1:6 ../scripts/cvs-debi.1:6
+#: ../scripts/cvs-debrelease.1:7 ../scripts/cvs-debuild.1:7
+#: ../scripts/dcmd.1:6 ../scripts/dcontrol.pl:208 ../scripts/dd-list.1:26
+#: ../scripts/debc.1:6 ../scripts/debchange.1:8 ../scripts/debcheckout.pl:40
+#: ../scripts/debclean.1:6 ../scripts/debcommit.pl:11 ../scripts/debdiff.1:15
+#: ../scripts/debi.1:6 ../scripts/debpkg.1:6 ../scripts/debrelease.1:6
+#: ../scripts/deb-reversion.dbk:82 ../scripts/debrsign.1:7
+#: ../scripts/debsign.1:6 ../scripts/debsnap.1:14 ../scripts/debuild.1:10
+#: ../scripts/desktop2menu.pl:34 ../scripts/dep3changelog.1:6
+#: ../scripts/devscripts.1:4 ../scripts/dget.pl:522
+#: ../scripts/diff2patches.1:10 ../scripts/dpkg-depcheck.1:6
+#: ../scripts/dpkg-genbuilddeps.1:6 ../doc/edit-patch.1:11
+#: ../scripts/dscextract.1:6 ../scripts/dscverify.1:6
+#: ../scripts/getbuildlog.1:8 ../scripts/grep-excuses.1:6
+#: ../scripts/licensecheck.pl:35 ../scripts/list-unreleased.1:6
+#: ../scripts/manpage-alert.1:8 ../scripts/mass-bug.pl:29
+#: ../scripts/mergechanges.1:6 ../scripts/mk-build-deps.pl:34
+#: ../scripts/mk-origtargz.pl:38 ../scripts/nmudiff.1:6
+#: ../scripts/origtargz.pl:34 ../scripts/plotchangelog.1:7
+#: ../scripts/pts-subscribe.1:8 ../scripts/rc-alert.1:8
+#: ../scripts/rmadison.pl:212 ../scripts/sadt.pod:25
+#: ../doc/suspicious-source.1:24 ../scripts/svnpath.pl:17
+#: ../scripts/tagpending.pl:87 ../scripts/transition-check.pl:33
+#: ../scripts/uscan.1:6 ../scripts/uupdate.1:8 ../doc/what-patch.1:8
+#: ../scripts/whodepends.1:6 ../scripts/who-uploads.1:6
+#: ../scripts/who-permits-upload.pl:50 ../scripts/wnpp-alert.1:8
+#: ../scripts/wnpp-check.1:8 ../doc/wrap-and-sort.1:22
+#: ../scripts/devscripts.conf.5:4
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "DESCRIPTION"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:10
+msgid ""
+"B<annotate-output> will execute the specified program, while prepending "
+"every line with the current time and O for stdout and E for stderr."
+msgstr ""
+"B<annotate-output> va lancer le programme indiqué en ajoutant au début de "
+"chaque ligne l'heure actuelle ainsi qu'un O pour la sortie standard "
+"(« stdout ») et un E pour la sortie d'erreur (« stderr »)."
+
+#. type: SH
+#: ../scripts/annotate-output.1:11 ../scripts/bts.pl:242
+#: ../scripts/build-rdeps.pl:30 ../scripts/chdist.pl:33
+#: ../scripts/checkbashisms.1:23 ../scripts/cowpoke.1:29
+#: ../scripts/cvs-debc.1:24 ../scripts/cvs-debi.1:28
+#: ../scripts/cvs-debrelease.1:21 ../scripts/cvs-debuild.1:32
+#: ../scripts/dcmd.1:15 ../scripts/dcontrol.pl:242 ../scripts/dd-list.1:58
+#: ../scripts/debc.1:64 ../scripts/debchange.1:145
+#: ../scripts/debcheckout.pl:68 ../scripts/debclean.1:60
+#: ../scripts/debcommit.pl:19 ../scripts/debdiff.1:52 ../scripts/debi.1:65
+#: ../scripts/debrelease.1:56 ../scripts/deb-reversion.dbk:128
+#: ../scripts/debrsign.1:30 ../scripts/debsign.1:39 ../scripts/debsnap.1:26
+#: ../scripts/debuild.1:219 ../scripts/dep3changelog.1:15
+#: ../scripts/dget.pl:563 ../scripts/diff2patches.1:16
+#: ../scripts/dpkg-depcheck.1:15 ../scripts/dscextract.1:14
+#: ../scripts/dscverify.1:17 ../scripts/getbuildlog.1:24
+#: ../scripts/grep-excuses.1:13 ../scripts/licensecheck.pl:44
+#: ../scripts/list-unreleased.1:12 ../scripts/manpage-alert.1:14
+#: ../scripts/mass-bug.pl:59 ../scripts/mk-build-deps.pl:44
+#: ../scripts/mk-origtargz.pl:52 ../scripts/nmudiff.1:21
+#: ../scripts/origtargz.pl:95 ../scripts/plotchangelog.1:43
+#: ../scripts/pts-subscribe.1:18 ../scripts/rc-alert.1:17
+#: ../scripts/rmadison.pl:221 ../scripts/sadt.pod:42
+#: ../doc/suspicious-source.1:34 ../scripts/tagpending.pl:93
+#: ../scripts/transition-check.pl:42 ../scripts/uscan.1:363
+#: ../scripts/uupdate.1:52 ../doc/what-patch.1:15 ../scripts/whodepends.1:10
+#: ../scripts/who-uploads.1:15 ../scripts/who-permits-upload.pl:56
+#: ../scripts/wnpp-alert.1:17 ../scripts/wnpp-check.1:16
+#: ../doc/wrap-and-sort.1:33
+#, no-wrap
+msgid "OPTIONS"
+msgstr "OPTIONS"
+
+#. type: TP
+#: ../scripts/annotate-output.1:12
+#, no-wrap
+msgid "B<+FORMAT>"
+msgstr "B<+FORMAT>"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:16
+msgid ""
+"Controls the timestamp format, as per B<date>(1). Defaults to \"%H:%M:%S\"."
+msgstr ""
+"Contrôler le format d'horodatage, comme pour B<date>(1). « %H:%M:%S » par "
+"défaut."
+
+#. type: TP
+#: ../scripts/annotate-output.1:16 ../scripts/chdist.pl:37
+#: ../scripts/dcontrol.pl:254 ../scripts/dd-list.1:59
+#: ../scripts/debcheckout.pl:93 ../scripts/debsnap.1:57 ../scripts/dget.pl:621
+#: ../scripts/dpkg-depcheck.1:96 ../scripts/getbuildlog.1:25
+#: ../scripts/mk-build-deps.pl:79 ../scripts/rmadison.pl:245
+#: ../scripts/sadt.pod:59 ../doc/suspicious-source.1:35 ../doc/what-patch.1:17
+#: ../doc/wrap-and-sort.1:34
+#, no-wrap
+msgid "B<-h>, B<--help>"
+msgstr "B<-h>, B<--help>"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:19 ../scripts/debchange.1:389
+#: ../scripts/debclean.1:87 ../scripts/debrelease.1:102
+#: ../scripts/debsign.1:103 ../scripts/dep3changelog.1:19
+#: ../scripts/dscverify.1:39 ../scripts/nmudiff.1:76
+#: ../scripts/pts-subscribe.1:31 ../scripts/uupdate.1:85
+#: ../scripts/who-uploads.1:47
+msgid "Display a help message and exit successfully."
+msgstr "Afficher un message d'aide et quitter avec succès."
+
+#. type: SH
+#: ../scripts/annotate-output.1:20 ../scripts/dscextract.1:30
+#: ../scripts/uscan.1:348
+#, no-wrap
+msgid "EXAMPLE"
+msgstr "EXEMPLE"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:30
+#, no-wrap
+msgid ""
+"$ annotate-output make\n"
+"21:41:21 I: Started make\n"
+"21:41:21 O: gcc -Wall program.c\n"
+"21:43:18 E: program.c: Couldn't compile, and took me ages to find out\n"
+"21:43:19 E: collect2: ld returned 1 exit status\n"
+"21:43:19 E: make: *** [all] Error 1\n"
+"21:43:19 I: Finished with exitcode 2\n"
+msgstr ""
+"$ annotate-output make\n"
+"21:41:21 I: make démarré\n"
+"21:41:21 O: gcc -Wall programme.c\n"
+"21:43:18 E: programme.c: n'a pas compilé et durée de diagnostic dépassée\n"
+"21:43:19 E: collect2: ld a retourné un code de sortie 1\n"
+"21:43:19 E: make: *** [all] Erreur 1\n"
+"21:43:19 I: terminé avec un code de sortie 2\n"
+
+#. type: SH
+#: ../scripts/annotate-output.1:32 ../scripts/debsnap.1:136
+#: ../scripts/rc-alert.1:119 ../scripts/whodepends.1:17
+#, no-wrap
+msgid "BUGS"
+msgstr "BOGUES"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:36
+msgid ""
+"Since stdout and stderr are processed in parallel, it can happen that some "
+"lines received on stdout will show up before later-printed stderr lines (and "
+"vice-versa)."
+msgstr ""
+"Puisque stdout et stderr sont traitées en parallèle, il peut arriver que "
+"quelques lignes reçues sur stdout soient affichées avant des lignes de "
+"stderr (et inversement)."
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:41
+msgid ""
+"This is unfortunately very hard to fix with the current annotation "
+"strategy. A fix would involve switching to PTRACE'ing the process. Giving "
+"nice a (much) higher priority over the executed program could however cause "
+"this behaviour to show up less frequently."
+msgstr ""
+"C'est malheureusement très difficile à corriger avec la stratégie "
+"d'annotation choisie. Une solution serait de passer à un suivi par PTRACE. "
+"Donner à nice une (bien) plus grande priorité par rapport au programme "
+"exécuté pourrait cependant éviter que ce comportement n'arrive trop "
+"fréquemment."
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:46
+msgid ""
+"The program does not work as well when the output is not linewise. In "
+"particular, when an interactive program asks for input, the question might "
+"not be shown until after you have answered it. This will give the "
+"impression that the annotated program has hung, while it has not."
+msgstr ""
+"Ce programme ne fonctionne pas non plus très bien si la sortie n'est pas "
+"faite ligne par ligne. En particulier, quand un programme interactif attend "
+"une entrée, la question peut ne pas être affichée tant que vous n'y avez pas "
+"répondu. Cela peut donner l'impression que le programme ainsi lancé a gelé, "
+"alors que ce n'est pas le cas."
+
+#. type: SH
+#: ../scripts/annotate-output.1:47 ../scripts/bts.pl:4113
+#: ../scripts/checkbashisms.1:63 ../scripts/cowpoke.1:379
+#: ../scripts/cvs-debc.1:58 ../scripts/cvs-debi.1:62
+#: ../scripts/cvs-debrelease.1:64 ../scripts/cvs-debuild.1:53
+#: ../scripts/dcmd.1:107 ../scripts/dcontrol.pl:287 ../scripts/debc.1:115
+#: ../scripts/debchange.1:469 ../scripts/debcheckout.pl:228
+#: ../scripts/debclean.1:107 ../scripts/debcommit.pl:912
+#: ../scripts/debdiff.1:217 ../scripts/debi.1:132 ../scripts/debrelease.1:132
+#: ../scripts/deb-reversion.dbk:247 ../scripts/debrsign.1:66
+#: ../scripts/debsign.1:134 ../scripts/debsnap.1:118 ../scripts/debuild.1:410
+#: ../scripts/dep3changelog.1:28 ../scripts/dget.pl:683
+#: ../scripts/diff2patches.1:45 ../scripts/dpkg-depcheck.1:118
+#: ../scripts/dpkg-genbuilddeps.1:30 ../scripts/dscverify.1:75
+#: ../scripts/grep-excuses.1:38 ../scripts/list-unreleased.1:19
+#: ../scripts/mk-origtargz.pl:143 ../scripts/nmudiff.1:108
+#: ../scripts/origtargz.pl:157 ../scripts/plotchangelog.1:124
+#: ../scripts/pts-subscribe.1:51 ../scripts/rc-alert.1:121
+#: ../scripts/rmadison.pl:332 ../scripts/sadt.pod:69
+#: ../scripts/tagpending.pl:148 ../scripts/uscan.1:585
+#: ../scripts/uupdate.1:170 ../doc/what-patch.1:35
+#: ../scripts/who-permits-upload.pl:161 ../scripts/wnpp-alert.1:29
+#: ../scripts/wnpp-check.1:23 ../scripts/devscripts.conf.5:54
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "VOIR AUSSI"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:49
+msgid "B<date>(1)"
+msgstr "B<date>(1)"
+
+#. type: SH
+#: ../scripts/annotate-output.1:50
+#, no-wrap
+msgid "SUPPORT"
+msgstr "AIDE"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:54
+msgid ""
+"This program is community-supported (meaning: you'll need to fix it "
+"yourself). Patches are however appreciated, as is any feedback (positive or "
+"negative)."
+msgstr ""
+"Ce programme est maintenu par la communauté (comprendre : vous allez devoir "
+"le corriger vous-même). Les rustines sont toutefois appréciées, ainsi que "
+"toute sorte de retour (positif ou non)."
+
+#. type: SH
+#: ../scripts/annotate-output.1:55 ../scripts/archpath.1:54
+#: ../scripts/build-rdeps.pl:344 ../scripts/checkbashisms.1:65
+#: ../scripts/cowpoke.1:385 ../scripts/cvs-debc.1:63 ../scripts/cvs-debi.1:67
+#: ../scripts/cvs-debrelease.1:68 ../scripts/cvs-debuild.1:58
+#: ../scripts/dcmd.1:110 ../scripts/dcontrol.pl:280 ../scripts/dd-list.1:100
+#: ../scripts/debc.1:119 ../scripts/debchange.1:475
+#: ../scripts/debcheckout.pl:233 ../scripts/debclean.1:110
+#: ../scripts/debcommit.pl:908 ../scripts/debdiff.1:224 ../scripts/debi.1:135
+#: ../scripts/debpkg.1:23 ../scripts/debrelease.1:136
+#: ../scripts/deb-reversion.dbk:292 ../scripts/debrsign.1:70
+#: ../scripts/debsign.1:145 ../scripts/debuild.1:422
+#: ../scripts/desktop2menu.pl:52 ../scripts/dep3changelog.1:26
+#: ../scripts/dget.pl:675 ../scripts/diff2patches.1:48
+#: ../scripts/dpkg-genbuilddeps.1:36 ../scripts/dscextract.1:32
+#: ../scripts/dscverify.1:79 ../scripts/getbuildlog.1:41
+#: ../scripts/grep-excuses.1:40 ../scripts/licensecheck.pl:129
+#: ../scripts/list-unreleased.1:21 ../scripts/manpage-alert.1:20
+#: ../scripts/mass-bug.pl:522 ../scripts/mergechanges.1:18
+#: ../scripts/mk-build-deps.pl:94 ../scripts/mk-origtargz.pl:147
+#: ../scripts/namecheck.pl:30 ../scripts/nmudiff.1:112
+#: ../scripts/origtargz.pl:161 ../scripts/plotchangelog.1:126
+#: ../scripts/pts-subscribe.1:56 ../scripts/rc-alert.1:125
+#: ../scripts/rmadison.pl:336 ../scripts/svnpath.pl:93
+#: ../scripts/transition-check.pl:81 ../scripts/uscan.1:591
+#: ../scripts/uupdate.1:177 ../scripts/whodepends.1:19
+#: ../scripts/who-uploads.1:71 ../scripts/who-permits-upload.pl:156
+#: ../scripts/wnpp-alert.1:31 ../scripts/wnpp-check.1:33
+#: ../scripts/devscripts.conf.5:58
+#, no-wrap
+msgid "AUTHOR"
+msgstr "AUTEUR"
+
+#. type: Plain text
+#: ../scripts/annotate-output.1:59
+msgid ""
+"B<annotate-output> was written by Jeroen van Wolffelaar "
+"E<lt>jeroen@wolffelaar.nlE<gt>. This manpage comes under the same copyright "
+"as annotate-output itself, read /usr/bin/annotate-output (or wherever you "
+"install it) for the details."
+msgstr ""
+"B<annotate-output> a été écrit par Jeroen van Wolffelaar "
+"E<lt>jeroen@wolffelaar.nlE<gt>. Cette page de manuel est distribuée sous la "
+"même licence que annotate-output lui-même, veuillez lire /usr/bin/annotate-"
+"output (ou à tout autre endroit où il est installé) pour les détails."
+
+#. type: TH
+#: ../scripts/archpath.1:1
+#, no-wrap
+msgid "ARCHPATH"
+msgstr "ARCHPATH"
+
+#. type: Plain text
+#: ../scripts/archpath.1:4
+msgid ""
+"archpath - output arch (tla/Bazaar) archive names, with support for branches"
+msgstr ""
+"archpath - Afficher les noms des archives arch (tla ou Bazaar), avec la "
+"gestion des branches"
+
+#. type: Plain text
+#: ../scripts/archpath.1:6
+msgid "B<archpath>"
+msgstr "B<archpath>"
+
+#. type: Plain text
+#: ../scripts/archpath.1:9
+msgid "B<archpath> I<branch>"
+msgstr "B<archpath> I<branch>"
+
+#. type: Plain text
+#: ../scripts/archpath.1:12
+msgid "B<archpath> I<branch>B<-->I<version>"
+msgstr "B<archpath> I<branch>B<-->I<version>"
+
+#. type: Plain text
+#: ../scripts/archpath.1:15
+msgid ""
+"B<archpath> is intended to be run in an arch (tla or Bazaar) working copy."
+msgstr ""
+"B<archpath> est censé tourner dans une copie de travail arch (tla ou Bazaar)."
+
+#. type: Plain text
+#: ../scripts/archpath.1:20
+msgid ""
+"In its simplest usage, B<archpath> with no parameters outputs the package "
+"name (archive/category--branch--version) associated with the working copy."
+msgstr ""
+"Le cas d'utilisation le plus simple est le suivant : lancer B<archpath> sans "
+"paramètre entraîne l'affichage du nom du paquet (archive/categorie--branche--"
+"version) associé à la copie de travail."
+
+#. type: Plain text
+#: ../scripts/archpath.1:28
+msgid ""
+"If a parameter is given, it may either be a branch--version, in which case "
+"B<archpath> will output a corresponding package name in the current archive "
+"and category, or a plain branch name (without \\(oq--\"), in which case "
+"B<archpath> will output a corresponding package name in the current archive "
+"and category and with the same version as the current working copy."
+msgstr ""
+"Si un paramètre est passé, il peut être soit branche--version, auquel cas "
+"B<archpath> affiche le nom du paquet correspondant à l'archive actuelle et "
+"la catégorie, soit un nom de branche complet (sans « -- »), auquel cas "
+"B<archpath> affiche le nom du paquet correspondant dans la même archive, la "
+"même catégorie, et à la même version que la copie de travail actuelle."
+
+#. type: Plain text
+#: ../scripts/archpath.1:32
+msgid ""
+"This is useful for branching. For example, if you're using Bazaar and you "
+"want to create a branch for a new feature, you might use a command like this:"
+msgstr ""
+"C'est utile pour la gestion des branches. Par exemple, si vous utilisez "
+"Bazaar et que vous voulez créer une branche pour une nouvelle "
+"fonctionnalité, vous pouvez utiliser une commande telle que :"
+
+#. type: Plain text
+#: ../scripts/archpath.1:37
+#, no-wrap
+msgid "CW<baz branch $(archpath) $(archpath new-feature)>\n"
+msgstr "CW<baz branch $(archpath) $(archpath new-feature)>\n"
+
+#. type: Plain text
+#: ../scripts/archpath.1:43
+msgid ""
+"Or if you want to tag your current code onto a \\(oqreleases\\(cq branch as "
+"version 1.0, you might use a command like this:"
+msgstr ""
+"Ou si vous voulez marquer votre code actuel comme étant une version 1.0 dans "
+"une branche « releases », vous pouvez utiliser une commande telle que :"
+
+#. type: Plain text
+#: ../scripts/archpath.1:48
+#, no-wrap
+msgid "CW<baz branch $(archpath) $(archpath releases--1.0)>\n"
+msgstr "CW<baz branch $(archpath) $(archpath releases--1.0)>\n"
+
+#. type: Plain text
+#: ../scripts/archpath.1:54
+msgid ""
+"That's much easier than using \\(oqbaz tree-version\\(cq to look up the "
+"package name and manually modifying the result."
+msgstr ""
+"C'est bien plus commode que d'utiliser « baz tree-version » pour récupérer "
+"le nom du paquet puis modifier le résultat manuellement."
+
+#. type: Plain text
+#: ../scripts/archpath.1:57
+msgid "B<archpath> was written by"
+msgstr "B<archpath> a été écrit par"
+
+#. type: Plain text
+#: ../scripts/archpath.1:59
+msgid "Colin Watson E<lt>cjwatson@debian.orgE<gt>."
+msgstr "Colin Watson E<lt>cjwatson@debian.orgE<gt>."
+
+#. type: Plain text
+#: ../scripts/archpath.1:63
+msgid ""
+"Like B<archpath>, this manual page is released under the GNU General Public "
+"License, version 2 or later."
+msgstr ""
+"Comme B<archpath>, cette page de manuel est publiée sous la Licence Publique "
+"Générale de GNU, version 2 ou ultérieure."
+
+#. type: textblock
+#: ../scripts/bts.pl:41
+msgid "bts - developers' command line interface to the BTS"
+msgstr ""
+"bts - Interface en ligne de commande pour le BTS, pour les développeurs"
+
+#. type: textblock
+#: ../scripts/bts.pl:188
+msgid ""
+"B<bts> [I<options>] I<command> [I<args>] [B<#>I<comment>] [B<.>|B<,> "
+"I<command> [I<args>] [B<#>I<comment>]] ..."
+msgstr ""
+"B<bts> [I<options>] I<commande> [I<paramètres>] [B<#>I<commentaire>] [B<.>|"
+"B<,> I<commande> [I<paramètres>] [B<#>I<commentaire>]] ..."
+
+#. type: textblock
+#: ../scripts/bts.pl:192
+msgid ""
+"This is a command line interface to the Debian Bug Tracking System (BTS), "
+"intended mainly for use by developers. It lets the BTS be manipulated using "
+"simple commands that can be run at the prompt or in a script, does various "
+"sanity checks on the input, and constructs and sends a mail to the BTS "
+"control address for you. A local cache of web pages and e-mails from the BTS "
+"may also be created and updated."
+msgstr ""
+"C'est une interface au système de suivi de bogues en ligne de commande, "
+"principalement destinée à l'usage des développeurs. Elle permet de manipuler "
+"le BTS avec de simples commandes pouvant être lancées depuis une invite de "
+"commandes ou depuis un script, effectue diverses vérifications de la "
+"validité des données entrées, afin de créer et d'envoyer pour vous un "
+"message à l'adresse de contrôle du BTS. Un cache local des pages web et des "
+"messages du BTS peut aussi être créé et mis à jour."
+
+#. type: textblock
+#: ../scripts/bts.pl:200
+msgid ""
+"In general, the command line interface is the same as what you would write "
+"in a mail to control@bugs.debian.org, just prefixed with \"bts\". For "
+"example:"
+msgstr ""
+"En général, cette interface en ligne de commande est la même que si vous "
+"vouliez écrire un message à control@bugs.debian.org, simplement précédée de "
+"« bts ». Par exemple :"
+
+#. type: verbatim
+#: ../scripts/bts.pl:204
+#, no-wrap
+msgid ""
+" % bts severity 69042 normal\n"
+" % bts merge 69042 43233\n"
+" % bts retitle 69042 blah blah\n"
+"\n"
+msgstr ""
+" % bts severity 69042 normal\n"
+" % bts merge 69042 43233\n"
+" % bts retitle 69042 bla bla\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:208
+msgid ""
+"A few additional commands have been added for your convenience, and this "
+"program is less strict about what constitutes a valid bug number. For "
+"example, \"severity Bug#85942 normal\" is understood, as is \"severity "
+"#85942 normal\". (Of course, your shell may regard \"#\" as a comment "
+"character though, so you may need to quote it!)"
+msgstr ""
+"Quelques commandes supplémentaires ont été ajoutées pour votre confort, et "
+"ce programme est moins strict sur la validité des numéros de bogue. Par "
+"exemple, « severity Bug#85942 normal » est compris, tout comme « severity "
+"#85942 normal ». (Bien sûr, votre interpréteur de commandes peut comprendre "
+"« # » comme un caractère de commentaire, donc il faudra probablement le "
+"mettre entre guillemets.)"
+
+#. type: textblock
+#: ../scripts/bts.pl:214
+msgid ""
+"Also, for your convenience, this program allows you to abbreviate commands "
+"to the shortest unique substring (similar to how cvs lets you abbreviate "
+"commands). So it understands things like \"bts cl 85942\"."
+msgstr ""
+"De même, pour vous faciliter la vie, ce programme vous permet d'abréger les "
+"commandes en la plus courte sous-chaîne unique (d'une manière similaire à "
+"celle de cvs). Ainsi des choses comme « bts cl 85942 » sont comprises."
+
+#. type: textblock
+#: ../scripts/bts.pl:218
+msgid ""
+"It is also possible to include a comment in the mail sent to the BTS. If "
+"your shell does not strip out the comment in a command like \"bts severity "
+"30321 normal #inflated severity\", then this program is smart enough to "
+"figure out where the comment is, and include it in the email. Note that "
+"most shells do strip out such comments before they get to the program, "
+"unless the comment is quoted. (Something like \"bts severity #85942 normal"
+"\" will not be treated as a comment!)"
+msgstr ""
+"Il est aussi possible d'inclure un commentaire dans le message envoyé au "
+"BTS. Si votre interpréteur de commandes ne supprime pas le commentaire dans "
+"une commande telle que « bts severity 30321 normal #sévérité augmentée », "
+"alors ce programme se débrouille pour trouver où se situe le commentaire et "
+"pour l'inclure dans le message. Remarquez que la plupart des interpréteurs "
+"de commandes ne tiennent pas compte de ce type de commentaires avant "
+"d'exécuter le programme, à moins que ce commentaire soit placé entre "
+"guillemets. (Quelque chose comme « bts severity #85942 normal » ne sera pas "
+"traité comme un commentaire.)"
+
+#. type: textblock
+#: ../scripts/bts.pl:226
+msgid ""
+"You can specify multiple commands by separating them with a single dot, "
+"rather like B<update-rc.d>; a single comma may also be used; all the "
+"commands will then be sent in a single mail. It is important the dot/comma "
+"is surrounded by whitespace so it is not mistaken for part of a command. "
+"For example (quoting where necessary so that B<bts> sees the comment):"
+msgstr ""
+"Vous pouvez indiquer plusieurs commandes en les séparant par un simple "
+"point, comme pour B<update-rc.d> ; une simple virgule peut aussi être "
+"utilisée ; toutes les commandes seront envoyées dans un seul message. Il est "
+"nécessaire d'entourer les points et les virgules par des espaces pour ne pas "
+"être confondus avec des portions de commandes. Par exemple (en protégeant ce "
+"qui doit l'être de manière à ce que B<bts> voie le commentaire "
+"correctement) :"
+
+#. type: verbatim
+#: ../scripts/bts.pl:232
+#, no-wrap
+msgid ""
+" % bts severity 95672 normal , merge 95672 95673 \\#they are the same!\n"
+"\n"
+msgstr ""
+" % bts severity 95672 normal , merge 95672 95673 \\#Il s\\'agit des mêmes !\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:234
+msgid ""
+"The abbreviation \"it\" may be used to refer to the last mentioned bug "
+"number, so you could write:"
+msgstr ""
+"L'abréviation « it » peut être utilisée pour désigner le dernier numéro de "
+"bogue mentionné, donc vous pouvez écrire :"
+
+#. type: verbatim
+#: ../scripts/bts.pl:237
+#, no-wrap
+msgid ""
+" % bts severity 95672 wishlist , retitle it \"bts: please add a --foo option\"\n"
+"\n"
+msgstr ""
+" % bts severity 95672 wishlist , retitle it \"bts : veuillez ajouter une option --toto\"\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:239
+msgid ""
+"Please use this program responsibly, and do take our users into "
+"consideration."
+msgstr ""
+"Merci d'utiliser ce programme d'une façon raisonnable et de prendre nos "
+"utilisateurs en considération."
+
+#. type: textblock
+#: ../scripts/bts.pl:244
+msgid ""
+"B<bts> examines the B<devscripts> configuration files as described below. "
+"Command line options override the configuration file settings, though."
+msgstr ""
+"B<bts> examine les fichiers de configuration de B<devscripts> comme décrit "
+"ci-dessous. Les options en ligne de commande permettent de remplacer les "
+"paramètres des fichiers de configuration."
+
+#. type: =item
+#: ../scripts/bts.pl:250
+msgid "B<-o>, B<--offline>"
+msgstr "B<-o>, B<--offline>"
+
+#. type: textblock
+#: ../scripts/bts.pl:252
+msgid ""
+"Make B<bts> use cached bugs for the B<show> and B<bugs> commands, if a cache "
+"is available for the requested data. See the B<cache> command, below for "
+"information on setting up a cache."
+msgstr ""
+"Faire en sorte que B<bts> utilise la mise en cache des bogues pour les "
+"commandes B<show> et B<bugs>, si un cache est disponible pour les données "
+"demandées. Veuillez vous reporter à la commande B<cache> ci-dessous pour "
+"plus d'informations sur la mise en place d'un cache."
+
+#. type: =item
+#: ../scripts/bts.pl:256
+msgid "B<--online>, B<--no-offline>"
+msgstr "B<--online>, B<--no-offline>"
+
+#. type: textblock
+#: ../scripts/bts.pl:258
+msgid ""
+"Opposite of B<--offline>; overrides any configuration file directive to work "
+"offline."
+msgstr ""
+"Contraire de l'option B<--offline> ; écraser toute directive venant d'un "
+"fichier de configuration afin de travailler hors ligne."
+
+#. type: =item
+#: ../scripts/bts.pl:261
+msgid "B<-n>, B<--no-action>"
+msgstr "B<-n>, B<--no-action>"
+
+#. type: textblock
+#: ../scripts/bts.pl:263
+msgid "Do not send emails but print them to standard output."
+msgstr "Ne pas envoyer le courrier, mais l'afficher sur la sortie standard."
+
+#. type: =item
+#: ../scripts/bts.pl:265
+msgid "B<--cache>, B<--no-cache>"
+msgstr "B<--cache>, B<--no-cache>"
+
+#. type: textblock
+#: ../scripts/bts.pl:267
+msgid ""
+"Should we attempt to cache new versions of BTS pages when performing B<show>/"
+"B<bugs> commands? Default is to cache."
+msgstr ""
+"Essayer ou non de mettre en cache de nouvelles versions des pages du BTS "
+"lorsque des commandes B<show> ou B<bugs> sont lancées. Par défaut, la mise "
+"en cache est activée."
+
+#. type: =item
+#: ../scripts/bts.pl:270
+msgid "B<--cache-mode=>{B<min>|B<mbox>|B<full>}"
+msgstr "B<--cache-mode=>{B<min>|B<mbox>|B<full>}"
+
+#. type: textblock
+#: ../scripts/bts.pl:272
+msgid ""
+"When running a B<bts cache> command, should we only mirror the basic bug "
+"(B<min>), or should we also mirror the mbox version (B<mbox>), or should we "
+"mirror the whole thing, including the mbox and the boring attachments to the "
+"BTS bug pages and the acknowledgement emails (B<full>)? Default is B<min>."
+msgstr ""
+"Lors d'une utilisation de la commande B<bts cache>, seulement faire un "
+"miroir basic du bogue (B<min>), inclure aussi la version mbox (B<mbox>), ou "
+"tout l'ensemble, à savoir la mbox et les différents fichiers joints des "
+"pages du BTS, ainsi que les messages de confirmation (B<full>). Par défaut, "
+"B<min> est utilisé."
+
+#. type: =item
+#: ../scripts/bts.pl:278
+msgid "B<--cache-delay=>I<seconds>"
+msgstr "B<--cache-delay=>I<secondes>"
+
+#. type: textblock
+#: ../scripts/bts.pl:280
+msgid ""
+"Time in seconds to delay between each download, to avoid hammering the BTS "
+"web server. Default is 5 seconds."
+msgstr ""
+"Délai (en secondes) entre deux téléchargements, afin d'éviter de surcharger "
+"le serveur web du BTS. Il est de 5 secondes par défaut."
+
+#. type: =item
+#: ../scripts/bts.pl:283
+msgid "B<--mbox>"
+msgstr "B<--mbox>"
+
+#. type: textblock
+#: ../scripts/bts.pl:285
+msgid ""
+"Open a mail reader to read the mbox corresponding to a given bug number for "
+"B<show> and B<bugs> commands."
+msgstr ""
+"Ouvrir un client de messagerie pour parcourir la boîte de messagerie "
+"(« mbox ») correspondant à un numéro de bogue donné, pour les commandes "
+"B<show> et B<bugs>."
+
+#. type: =item
+#: ../scripts/bts.pl:288
+msgid "B<--mailreader=>I<READER>"
+msgstr "B<--mailreader=>I<CLIENT_DE_MESSAGERIE>"
+
+#. type: textblock
+#: ../scripts/bts.pl:290
+msgid ""
+"Specify the command to read the mbox. Must contain a \"B<%s>\" string "
+"(unquoted!), which will be replaced by the name of the mbox file. The "
+"command will be split on white space and will not be passed to a shell. "
+"Default is 'B<mutt -f %s>'. (Also, B<%%> will be substituted by a single B<"
+"%> if this is needed.)"
+msgstr ""
+"Indiquer la commande pour lire la boîte de messagerie (« mbox »). Doit "
+"contenir une chaîne « B<%s> », qui sera remplacée par le nom du fichier "
+"mbox. La commande sera découpée en fonction des espaces et ne sera pas "
+"passée à un interpréteur de commandes (« shell »). Par défaut, « B<mutt> B<-"
+"f> B<%s> » sera utilisé (par ailleurs B<%%> sera remplacé par un simple B<%> "
+"si nécessaire)."
+
+#. type: =item
+#: ../scripts/bts.pl:296
+msgid "B<--cc-addr=>I<CC_EMAIL_ADDRESS>"
+msgstr "B<--cc-addr=>I<CC_ADRESSES_ÉLECTRONIQUES>"
+
+#. type: textblock
+#: ../scripts/bts.pl:298
+msgid ""
+"Send carbon copies to a list of users. I<CC_EMAIL_ADDRESS> should be a comma-"
+"separated list of email addresses."
+msgstr ""
+"Envoyer une copie conforme du message à une liste d'utilisateurs. "
+"I<CC_ADRESSES_ÉLECTRONIQUES> doit être une liste d'adresses séparées par des "
+"virgules."
+
+#. type: =item
+#: ../scripts/bts.pl:301
+msgid "B<--use-default-cc>"
+msgstr "B<--use-default-cc>"
+
+#. type: textblock
+#: ../scripts/bts.pl:303
+msgid ""
+"Add the addresses specified in the configuration file option "
+"B<BTS_DEFAULT_CC> to the list specified using B<--cc-addr>. This is the "
+"default."
+msgstr ""
+"Ajouter les adresses indiquées par l'option B<BTS_DEFAULT_CC> du fichier de "
+"configuration à la liste indiquée en utilisant B<--cc-addr>. C'est le "
+"comportement par défaut."
+
+#. type: =item
+#: ../scripts/bts.pl:307
+msgid "B<--no-use-default-cc>"
+msgstr "B<--no-use-default-cc>"
+
+#. type: textblock
+#: ../scripts/bts.pl:309
+msgid ""
+"Do not add addresses specified in B<BTS_DEFAULT_CC> to the carbon copy list."
+msgstr ""
+"Ne pas ajouter les adresses indiquées dans B<BTS_DEFAULT_CC> dans la liste "
+"des copies conformes."
+
+#. type: =item
+#: ../scripts/bts.pl:312 ../scripts/mass-bug.pl:103
+msgid "B<--sendmail=>I<SENDMAILCMD>"
+msgstr "B<--sendmail=>I<COMMANDE_D_ENVOI_DE_MESSAGE>"
+
+#. type: textblock
+#: ../scripts/bts.pl:314
+msgid ""
+"Specify the B<sendmail> command. The command will be split on white space "
+"and will not be passed to a shell. Default is F</usr/sbin/sendmail>. The "
+"B<-t> option will be automatically added if the command is F</usr/sbin/"
+"sendmail> or F</usr/sbin/exim*>. For other mailers, if they require a B<-t> "
+"option, this must be included in the I<SENDMAILCMD>, for example: B<--"
+"sendmail=\"/usr/sbin/mymailer -t\">."
+msgstr ""
+"Indiquer la commande d'envoi de message à utiliser. La commande sera séparée "
+"à chaque espace, et non passée à l'interpréteur de commandes. La valeur par "
+"défaut est F</usr/sbin/sendmail>. L'option B<-t> est ajoutée automatiquement "
+"si la commande est F</usr/sbin/sendmail> ou F</usr/sbin/exim*>. Pour les "
+"autres logiciels, l'option B<-t> doit être incluse dans "
+"I<COMMANDE_D_ENVOI_DE_MESSAGE> si nécessaire, par exemple : B<--sendmail=\"/"
+"usr/sbin/monutilitaire -t\">."
+
+#. type: TP
+#: ../scripts/bts.pl:321 ../scripts/nmudiff.1:31
+#, no-wrap
+msgid "B<--mutt>"
+msgstr "B<--mutt>"
+
+#. type: textblock
+#: ../scripts/bts.pl:323
+msgid ""
+"Use B<mutt> for sending of mails. Default is not to use B<mutt>, except for "
+"some commands."
+msgstr ""
+"Utiliser B<mutt> pour l'envoi des messages. Par défaut, B<mutt> n'est pas "
+"utilisé, sauf pour certaines commandes."
+
+#. type: textblock
+#: ../scripts/bts.pl:326
+msgid ""
+"Note that one of B<$DEBEMAIL> or B<$EMAIL> must be set in the environment in "
+"order to use B<mutt> to send emails."
+msgstr ""
+"Remarquez que B<$DEBEMAIL> ou B<$EMAIL> doivent être configurées dans "
+"l'environnement pour que B<mutt> puisse envoyer des courriers."
+
+#. type: TP
+#: ../scripts/bts.pl:329 ../scripts/nmudiff.1:36
+#, no-wrap
+msgid "B<--no-mutt>"
+msgstr "B<--no-mutt>"
+
+#. type: textblock
+#: ../scripts/bts.pl:331
+msgid "Don't use B<mutt> for sending of mails."
+msgstr "Ne pas utiliser B<mutt> pour l'envoi des messages."
+
+#. type: =item
+#: ../scripts/bts.pl:333
+msgid "B<--smtp-host=>I<SMTPHOST>"
+msgstr "B<--smtp-host=>I<SERVEUR_SMTP>"
+
+#. type: textblock
+#: ../scripts/bts.pl:335
+msgid ""
+"Specify an SMTP host. If given, B<bts> will send mail by talking directly "
+"to this SMTP host rather than by invoking a B<sendmail> command."
+msgstr ""
+"Indiquer un serveur SMTP. S'il est fourni, B<bts> enverra les courriers en "
+"utilisant directement ce serveur SMTP plutôt qu'en utilisant la commande "
+"B<sendmail>."
+
+#. type: textblock
+#: ../scripts/bts.pl:338
+msgid ""
+"The host name may be followed by a colon (\":\") and a port number in order "
+"to use a port other than the default. It may also begin with \"ssmtp://\" "
+"or \"smtps://\" to indicate that SMTPS should be used."
+msgstr ""
+"Le nom d'hôte peut être suivi d'un caractère deux-points (« : ») et d'un "
+"numéro de port afin d'utiliser un port autre que le port par défaut. Il peut "
+"également commencer par « ssmtp:// » ou « smtps:// » pour indiquer que le "
+"protocole SMTPS doit être utilisé."
+
+#. type: textblock
+#: ../scripts/bts.pl:342
+msgid ""
+"Note that one of B<$DEBEMAIL> or B<$EMAIL> must be set in the environment in "
+"order to use direct SMTP connections to send emails."
+msgstr ""
+"Remarquez que B<$DEBEMAIL> ou B<$EMAIL> doivent être configurées dans "
+"l'environnement pour l'envoi de courriers par connexion SMTP directe."
+
+#. type: textblock
+#: ../scripts/bts.pl:345
+msgid ""
+"Note that when sending directly via an SMTP host, specifying addresses in "
+"B<--cc-addr> or B<BTS_DEFAULT_CC> that the SMTP host will not relay will "
+"cause the SMTP host to reject the entire mail."
+msgstr ""
+"Remarquez qu'en envoyant les courriers directement à un serveur SMTP, si des "
+"adresses de B<--cc-addr> ou B<BTS_DEFAULT_CC> ne sont pas relayées par le "
+"serveur SMTP, alors le serveur SMTP rejettera le courrier en entier."
+
+#. type: textblock
+#: ../scripts/bts.pl:349
+msgid ""
+"Note also that the use of the B<reassign> command may, when either B<--"
+"interactive> or B<--force-interactive> mode is enabled, lead to the "
+"automatic addition of a Cc to I<$newpackage>@packages.debian.org. In these "
+"cases, the note above regarding relaying applies. The submission interface "
+"(port 587) on reportbug.debian.org does not support relaying and, as such, "
+"should not be used as an SMTP server for B<bts> under the circumstances "
+"described in this paragraph."
+msgstr ""
+"Remarquez également que la commande B<reassign> peut, quand le mode B<--"
+"interactive> ou B<--force-interactive> est activé, conduire à l'ajout "
+"automatique d'un Cc pour I<$nouveau_paquet>@packages.debian.org. Dans ce "
+"cas, la note ci-dessus à propos des relais s'applique. L'interface de "
+"soumission (port 587) de reportbug.debian.org ne prend pas en charge les "
+"relais et ne devrait donc pas être utilisée comme serveur SMTP pour B<bts> "
+"dans les circonstances décrites dans ce paragraphe."
+
+#. type: =item
+#: ../scripts/bts.pl:356
+msgid "B<--smtp-username=>I<USERNAME>, B<--smtp-password=>I<PASSWORD>"
+msgstr ""
+"B<--smtp-username=>I<NOM_UTILISATEUR>, B<--smtp-password=>I<MOT_DE_PASSE>"
+
+#. type: textblock
+#: ../scripts/bts.pl:358
+msgid ""
+"Specify the credentials to use when connecting to the SMTP server specified "
+"by B<--smtp-host>. If the server does not require authentication then these "
+"options should not be used."
+msgstr ""
+"Indiquer les informations d'identification à utiliser pour la connexion au "
+"serveur SMTP indiqué par B<--smtp-host>. Si le serveur ne nécessite pas "
+"d'identification, alors ces options ne devraient pas être utilisées."
+
+#. type: textblock
+#: ../scripts/bts.pl:362
+msgid ""
+"If a username is specified but not a password, B<bts> will prompt for the "
+"password before sending the mail."
+msgstr ""
+"Si un nom d'utilisateur est indiqué mais pas de mot de passe, B<bts> "
+"demandera le mot de passe avant l'envoi du courrier."
+
+#. type: =item
+#: ../scripts/bts.pl:365
+msgid "B<--smtp-helo=>I<HELO>"
+msgstr "B<--smtp-helo=>I<HELO>"
+
+#. type: textblock
+#: ../scripts/bts.pl:367
+msgid ""
+"Specify the name to use in the I<HELO> command when connecting to the SMTP "
+"server; defaults to the contents of the file F</etc/mailname>, if it exists."
+msgstr ""
+"Indiquer le nom à utiliser dans la commande I<HELO> lors de la connexion au "
+"serveur SMTP ; par défaut, c'est le contenu du fichier F</etc/mailname>, "
+"s'il existe."
+
+#. type: textblock
+#: ../scripts/bts.pl:371
+msgid ""
+"Note that some SMTP servers may reject the use of a I<HELO> which either "
+"does not resolve or does not appear to belong to the host using it."
+msgstr ""
+"Remarquez que certains serveurs SMTP peuvent rejeter l'utilisation d'un "
+"I<HELO> qui ne peut pas être résolu ou qui ne semble pas appartenir à l'hôte "
+"qui l'utilise."
+
+#. type: =item
+#: ../scripts/bts.pl:374
+msgid "B<--bts-server>"
+msgstr "B<--bts-server>"
+
+#. type: textblock
+#: ../scripts/bts.pl:376
+msgid "Use a debbugs server other than bugs.debian.org."
+msgstr "Utiliser un serveur debbugs autre que bugs.debian.org."
+
+#. type: =item
+#: ../scripts/bts.pl:378
+msgid "B<-f>, B<--force-refresh>"
+msgstr "B<-f>, B<--force-refresh>"
+
+#. type: textblock
+#: ../scripts/bts.pl:380
+msgid ""
+"Download a bug report again, even if it does not appear to have changed "
+"since the last B<cache> command. Useful if a B<--cache-mode=full> is "
+"requested for the first time (otherwise unchanged bug reports will not be "
+"downloaded again, even if the boring bits have not been downloaded)."
+msgstr ""
+"Télécharger le rapport de bogue à nouveau, même s'il ne semble pas avoir "
+"changé depuis la dernière commande B<cache>. Utile si une option B<--cache-"
+"mode=full> est utilisée la première fois (sinon les rapports de bogue "
+"inchangés ne seront pas téléchargés à nouveau, même si les parties "
+"inintéressantes n'ont pas été téléchargées)."
+
+#. type: =item
+#: ../scripts/bts.pl:386
+msgid "B<--no-force-refresh>"
+msgstr "B<--no-force-refresh>"
+
+#. type: textblock
+#: ../scripts/bts.pl:388
+msgid "Suppress any configuration file B<--force-refresh> option."
+msgstr ""
+"Ne tenir compte d'aucune option B<--force-refresh> venant d'un fichier de "
+"configuration."
+
+#. type: =item
+#: ../scripts/bts.pl:390
+msgid "B<--only-new>"
+msgstr "B<--only-new>"
+
+#. type: textblock
+#: ../scripts/bts.pl:392
+msgid ""
+"Download only new bugs when caching. Do not check for updates in bugs we "
+"already have."
+msgstr ""
+"Ne télécharger que les nouveaux bogues pour la mise en cache. Ne pas "
+"vérifier si les bogues déjà téléchargés ont été modifiés."
+
+#. type: =item
+#: ../scripts/bts.pl:395
+msgid "B<--include-resolved>"
+msgstr "B<--include-resolved>"
+
+#. type: textblock
+#: ../scripts/bts.pl:397
+msgid ""
+"When caching bug reports, include those that are marked as resolved. This "
+"is the default behaviour."
+msgstr ""
+"Lors de la mise en cache des rapports de bogue, inclure ceux qui sont "
+"marqués comme étant résolus. C'est le comportement par défaut."
+
+#. type: =item
+#: ../scripts/bts.pl:400
+msgid "B<--no-include-resolved>"
+msgstr "B<--no-include-resolved>"
+
+#. type: textblock
+#: ../scripts/bts.pl:402
+msgid ""
+"Reverse the behaviour of the previous option. That is, do not cache bugs "
+"that are marked as resolved."
+msgstr ""
+"Inverser le comportement de l'option précédente. C'est-à-dire, ne pas mettre "
+"les bogues dans le cache s'ils sont marqués comme étant résolus."
+
+#. type: =item
+#: ../scripts/bts.pl:405
+msgid "B<--no-ack>"
+msgstr "B<--no-ack>"
+
+#. type: textblock
+#: ../scripts/bts.pl:407
+msgid ""
+"Suppress acknowledgment mails from the BTS. Note that this will only affect "
+"the copies of messages CCed to bugs, not those sent to the control bot."
+msgstr ""
+"Supprimer les courriers de confirmation du BTS. Remarquez que cela "
+"n'affectera que les copies des courriers en copie des bogues, pas celles "
+"envoyées par le robot « control »."
+
+#. type: =item
+#: ../scripts/bts.pl:411
+msgid "B<--ack>"
+msgstr "B<--ack>"
+
+#. type: textblock
+#: ../scripts/bts.pl:413
+msgid "Do not suppress acknowledgement mails. This is the default behaviour."
+msgstr ""
+"Ne pas supprimer les courriers de confirmation. C'est le comportement par "
+"défaut."
+
+#. type: =item
+#: ../scripts/bts.pl:415 ../scripts/tagpending.pl:135
+msgid "B<-i>, B<--interactive>"
+msgstr "B<-i>, B<--interactive>"
+
+#. type: textblock
+#: ../scripts/bts.pl:417
+msgid ""
+"Before sending an e-mail to the control bot, display the content and allow "
+"it to be edited, or the sending cancelled."
+msgstr ""
+"Avant d'envoyer un courrier au robot « control », afficher son contenu et "
+"permettre de l'éditer ou d'annuler l'envoi."
+
+#. type: =item
+#: ../scripts/bts.pl:420
+msgid "B<--force-interactive>"
+msgstr "B<--force-interactive>"
+
+#. type: textblock
+#: ../scripts/bts.pl:422
+msgid ""
+"Similar to B<--interactive>, with the exception that an editor is spawned "
+"before prompting for confirmation of the message to be sent."
+msgstr ""
+"Semblable à B<--interactive>, à l'exception qu'un éditeur est lancé avant de "
+"demander la confirmation de l'envoi du courrier."
+
+#. type: =item
+#: ../scripts/bts.pl:425
+msgid "B<--no-interactive>"
+msgstr "B<--no-interactive>"
+
+#. type: textblock
+#: ../scripts/bts.pl:427
+msgid ""
+"Send control e-mails without confirmation. This is the default behaviour."
+msgstr ""
+"Envoyer des courrier à « control » sans confirmation. C'est le comportement "
+"par défaut."
+
+#. type: =item
+#: ../scripts/bts.pl:429 ../scripts/dget.pl:576
+msgid "B<-q>, B<--quiet>"
+msgstr "B<-q>, B<--quiet>"
+
+#. type: textblock
+#: ../scripts/bts.pl:431
+msgid ""
+"When running B<bts cache>, only display information about newly cached "
+"pages, not messages saying already cached. If this option is specified "
+"twice, only output error messages (to stderr)."
+msgstr ""
+"En lançant B<bts cache>, n'afficher que les informations concernant les "
+"pages nouvellement mises en cache, et non les messages indiquant ce qui a "
+"déjà été mis en cache. Si cette option est fournie deux fois, n'afficher que "
+"les messages d'erreur, vers la sortie d'erreur (« stderr »)."
+
+#. type: TP
+#: ../scripts/bts.pl:435 ../scripts/cvs-debrelease.1:57
+#: ../scripts/cvs-debuild.1:38 ../scripts/debc.1:85 ../scripts/debchange.1:377
+#: ../scripts/debclean.1:77 ../scripts/debdiff.1:153 ../scripts/debi.1:102
+#: ../scripts/debrelease.1:95 ../scripts/debsign.1:96 ../scripts/debuild.1:221
+#: ../scripts/dpkg-depcheck.1:92 ../scripts/dscverify.1:24
+#: ../scripts/grep-excuses.1:14 ../scripts/licensecheck.pl:89
+#: ../scripts/mass-bug.pl:112 ../scripts/nmudiff.1:69
+#: ../scripts/rmadison.pl:284 ../scripts/uscan.1:483 ../scripts/uupdate.1:78
+#: ../scripts/who-uploads.1:40
+#, no-wrap
+msgid "B<--no-conf>, B<--noconf>"
+msgstr "B<--no-conf>, B<--noconf>"
+
+#. type: Plain text
+#: ../scripts/bts.pl:437 ../scripts/cvs-debrelease.1:61 ../scripts/debc.1:89
+#: ../scripts/debchange.1:381 ../scripts/debclean.1:81
+#: ../scripts/debdiff.1:157 ../scripts/debi.1:106 ../scripts/debrelease.1:99
+#: ../scripts/debsign.1:100 ../scripts/debuild.1:225
+#: ../scripts/dpkg-depcheck.1:96 ../scripts/dscverify.1:28
+#: ../scripts/grep-excuses.1:18 ../scripts/mass-bug.pl:114
+#: ../scripts/nmudiff.1:73 ../scripts/uscan.1:487 ../scripts/uupdate.1:82
+#: ../scripts/who-uploads.1:44
+msgid ""
+"Do not read any configuration files. This can only be used as the first "
+"option given on the command-line."
+msgstr ""
+"Ne lire aucun fichier de configuration. L'option ne peut être utilisée qu'en "
+"première position de la ligne de commande."
+
+#. type: =head1
+#: ../scripts/bts.pl:791 ../scripts/chdist.pl:55
+msgid "COMMANDS"
+msgstr "COMMANDES"
+
+#. type: textblock
+#: ../scripts/bts.pl:793
+msgid ""
+"For full details about the commands, see the BTS documentation. L<https://"
+"www.debian.org/Bugs/server-control>"
+msgstr ""
+"Pour tous les détails sur les commandes, veuillez consulter la documentation "
+"du BTS. L<https://bugs.debian.org/Bugs/server-control>"
+
+#. type: =item
+#: ../scripts/bts.pl:798
+msgid ""
+"B<show> [I<options>] [I<bug number> | I<package> | I<maintainer> | B<:> ] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<show> [I<options>] [I<numéro_de_bogue> | I<paquet> | I<responsable> | B<:"
+"> ] [I<opt>B<=>I<val> ...]"
+
+#. type: =item
+#: ../scripts/bts.pl:800
+msgid ""
+"B<show> [I<options>] [B<src:>I<package> | B<from:>I<submitter>] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<show> [I<options>] [B<src:>I<paquet> | B<from:>I<rapporteur>] "
+"[I<opt>B<=>I<val> ...]"
+
+#. type: =item
+#: ../scripts/bts.pl:802
+msgid ""
+"B<show> [I<options>] [B<tag:>I<tag> | B<usertag:>I<tag> ] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<show> [I<options>] [B<tag:>I<étiquette> | B<usertag:>I<étiquette>] "
+"[I<opt>B<=>I<val> ...]"
+
+#. type: =item
+#: ../scripts/bts.pl:804
+msgid "B<show> [B<release-critical> | B<release-critical/>... | B<RC>]"
+msgstr "B<show> [B<release-critical> | B<release-critical/>... | B<RC>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:806
+msgid "This is a synonym for B<bts bugs>."
+msgstr "C'est un synonyme pour B<bts bugs>."
+
+#. type: =item
+#: ../scripts/bts.pl:814
+msgid ""
+"B<bugs> [I<options>] [I<bug_number> | I<package> | I<maintainer> | B<:> ] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<bugs> [I<options>] [I<numéro_de_bogue> | I<paquet> | I<responsable> | B<:"
+"> ] [I<opt>B<=>I<val> ...]"
+
+#. type: =item
+#: ../scripts/bts.pl:816
+msgid ""
+"B<bugs> [I<options>] [B<src:>I<package> | B<from:>I<submitter>] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<bugs> [I<options>] [B<src:>I<paquet> | B<from:>I<rapporteur>] "
+"[I<opt>B<=>I<val> ...]"
+
+#. type: =item
+#: ../scripts/bts.pl:818
+msgid ""
+"B<bugs> [I<options>] [B<tag:>I<tag> | B<usertag:>I<tag> ] "
+"[I<opt>B<=>I<val> ...]"
+msgstr ""
+"B<bugs> [I<options>] [B<tag:>I<étiquette> | B<usertag:>I<étiquette>] "
+"[I<opt>B<=>I<val> ...]"
+
+#. type: =item
+#: ../scripts/bts.pl:820
+msgid "B<bugs> [B<release-critical> | B<release-critical/>... | B<RC>]"
+msgstr "B<bugs> [B<release-critical> | B<release-critical/>... | B<RC>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:822
+msgid ""
+"Display the page listing the requested bugs in a web browser using sensible-"
+"browser(1)."
+msgstr ""
+"Afficher la page référençant les bogues demandés dans un navigateur web en "
+"utilisant sensible-browser(1)."
+
+#. type: textblock
+#: ../scripts/bts.pl:825
+msgid ""
+"Options may be specified after the B<bugs> command in addition to or instead "
+"of options at the start of the command line: recognised options at this "
+"point are: B<-o>/B<--offline>/B<--online>, B<-m>/B<--mbox>, B<--mailreader> "
+"and B<-->[B<no->]B<cache>. These are described earlier in this manpage. If "
+"either the B<-o> or B<--offline> option is used, or there is already an up-"
+"to-date copy in the local cache, the cached version will be used."
+msgstr ""
+"Des options peuvent être indiquées après la commande B<bugs> en plus ou à la "
+"place des options au début de la ligne de commande. Les options reconnues "
+"pour l'instant sont : B<-o>/B<--offline>/B<--online>, B<-m>/B<--mbox>, B<--"
+"mailreader> et B<-->[B<no->]B<cache>. Celles-ci sont expliquées plus haut "
+"dans cette page de manuel. Si B<-o> ou B<--offline> est utilisée, ou s'il y "
+"a déjà une copie à jour dans le cache local, les versions mises en cache "
+"vont être utilisées."
+
+#. type: textblock
+#: ../scripts/bts.pl:832
+msgid "The meanings of the possible arguments are as follows:"
+msgstr "Les significations des arguments possibles sont les suivantes :"
+
+#. type: =item
+#: ../scripts/bts.pl:836
+msgid "(none)"
+msgstr "(aucune)"
+
+#. type: textblock
+#: ../scripts/bts.pl:838
+msgid ""
+"If nothing is specified, B<bts bugs> will display your bugs, assuming that "
+"either B<DEBEMAIL> or B<EMAIL> (examined in that order) is set to the "
+"appropriate email address."
+msgstr ""
+"Si rien n'est indiqué, B<bts bugs> va afficher vos bogues, en supposant que "
+"soit B<DEBEMAIL>, soit B<EMAIL> (considérées dans cet ordre) est définie à "
+"l'adresse électronique désirée."
+
+#. type: =item
+#: ../scripts/bts.pl:842
+msgid "I<bug_number>"
+msgstr "I<numéro_de_bogue>"
+
+#. type: textblock
+#: ../scripts/bts.pl:844
+msgid "Display bug number I<bug_number>."
+msgstr "Afficher le bogue de numéro I<numéro_de_bogue>."
+
+#. type: =item
+#: ../scripts/bts.pl:846
+msgid "I<package>"
+msgstr "I<paquet>"
+
+#. type: textblock
+#: ../scripts/bts.pl:848
+msgid "Display the bugs for the package I<package>."
+msgstr "Afficher les bogues du paquet I<paquet>."
+
+#. type: =item
+#: ../scripts/bts.pl:850
+msgid "B<src:>I<package>"
+msgstr "B<src:>I<paquet>"
+
+#. type: textblock
+#: ../scripts/bts.pl:852
+msgid "Display the bugs for the source package I<package>."
+msgstr "Afficher les bogues du paquet source I<paquet>."
+
+#. type: =item
+#: ../scripts/bts.pl:854
+msgid "I<maintainer>"
+msgstr "I<responsable>"
+
+#. type: textblock
+#: ../scripts/bts.pl:856
+msgid "Display the bugs for the maintainer email address I<maintainer>."
+msgstr ""
+"Afficher les bogues dont le responsable a pour adresse électronique "
+"I<responsable>."
+
+#. type: =item
+#: ../scripts/bts.pl:858
+msgid "B<from:>I<submitter>"
+msgstr "B<from:>I<rapporteur>"
+
+#. type: textblock
+#: ../scripts/bts.pl:860
+msgid "Display the bugs for the submitter email address I<submitter>."
+msgstr ""
+"Afficher les bogues dont le rapporteur a pour adresse électronique "
+"I<rapporteur>."
+
+#. type: =item
+#: ../scripts/bts.pl:862
+msgid "B<tag:>I<tag>"
+msgstr "B<tag:>I<étiquette>"
+
+#. type: textblock
+#: ../scripts/bts.pl:864
+msgid "Display the bugs which are tagged with I<tag>."
+msgstr "Afficher les bogues marqués avec I<étiquette>."
+
+#. type: =item
+#: ../scripts/bts.pl:866
+msgid "B<usertag:>I<tag>"
+msgstr "B<usertag:>I<étiquette>"
+
+#. type: textblock
+#: ../scripts/bts.pl:868
+msgid ""
+"Display the bugs which are tagged with usertag I<tag>. See the BTS "
+"documentation for more information on usertags. This will require the use "
+"of a B<users=>I<email> option."
+msgstr ""
+"Afficher les bogues marqués avec l'étiquette utilisateur I<étiquette>. "
+"Veuillez consulter la documentation du BTS pour plus d'informations sur les "
+"étiquettes utilisateur. Cela nécessite d'utiliser une option "
+"B<users=>I<adresse>."
+
+#. type: =item
+#: ../scripts/bts.pl:872
+msgid "B<:>"
+msgstr "B<:>"
+
+#. type: textblock
+#: ../scripts/bts.pl:874
+msgid ""
+"Details of the bug tracking system itself, along with a bug-request page "
+"with more options than this script, can be found on https://bugs.debian."
+"org/. This page itself will be opened if the command 'bts bugs :' is used."
+msgstr ""
+"Les détails concernant le système de suivi de bogues, ainsi qu'une page de "
+"recherche dans les bogues contenant plus d'options que ce script, peuvent "
+"être trouvés à https://bugs.debian.org/. Cette page peut être ouverte par la "
+"commande B<bts bugs:>."
+
+#. type: =item
+#: ../scripts/bts.pl:879
+msgid "B<release-critical>, B<RC>"
+msgstr "B<release-critical>, B<RC>"
+
+#. type: textblock
+#: ../scripts/bts.pl:881
+msgid ""
+"Display the front page of the release-critical pages on the BTS. This is a "
+"synonym for https://bugs.debian.org/release-critical/index.html. It is also "
+"possible to say release-critical/debian/main.html and the like. RC is a "
+"synonym for release-critical/other/all.html."
+msgstr ""
+"Afficher le sommaire des pages du BTS concernant les rapports de bogues "
+"critiques pour la prochaine publication. C'est un synonyme pour https://bugs."
+"debian.org/release-critical/index.html. Il est aussi possible d'indiquer "
+"release-critical/debian/main.html et de même RC est synonyme de release-"
+"critical/other/all.html."
+
+#. type: textblock
+#: ../scripts/bts.pl:888
+msgid ""
+"After the argument specifying what to display, you can optionally specify "
+"options to use to format the page or change what it displayed. These are "
+"passed to the BTS in the URL downloaded. For example, pass dist=stable to "
+"see bugs affecting the stable version of a package, version=1.0 to see bugs "
+"affecting that version of a package, or reverse=yes to display newest "
+"messages first in a bug log."
+msgstr ""
+"Après le paramètre indiquant quoi afficher, vous pouvez indiquer des options "
+"facultatives pour formater la page ou changer ce qui doit être affiché. "
+"Celles-ci sont passées au BTS dans l'URL demandée. Par exemple, passez "
+"B<dist=stable> pour afficher les bogues touchant la version stable d'un "
+"paquet, B<version=1.0> pour voir les bogues touchant cette version d'un "
+"paquet, ou B<reverse=yes> pour afficher d'abord les messages les plus "
+"récents dans le fichier journal des bogues."
+
+#. type: textblock
+#: ../scripts/bts.pl:895
+msgid ""
+"If caching has been enabled (that is, B<--no-cache> has not been used, and "
+"B<BTS_CACHE> has not been set to B<no>), then any page requested by B<bts "
+"show> will automatically be cached, and be available offline thereafter. "
+"Pages which are automatically cached in this way will be deleted on "
+"subsequent \"B<bts show>|B<bugs>|B<cache>\" invocations if they have not "
+"been accessed in 30 days. Warning: on a filesystem mounted with the "
+"\"noatime\" option, running \"B<bts show>|B<bugs>\" does not update the "
+"cache files' access times; a cached bug will then be subject to auto-"
+"cleaning 30 days after its initial download, even if it has been accessed in "
+"the meantime."
+msgstr ""
+"Si la mise en cache a été activée (c'est-à-dire si B<--no-cache> n'a pas été "
+"utilisée et si la variable B<BTS_CACHE> ne vaut pas B<no>), alors toute page "
+"demandée par B<bts show> va être automatiquement mise en cache et sera donc "
+"disponible pour être visualisée plus tard tout en étant hors ligne. Les "
+"pages mises en cache automatiquement de cette manière seront supprimées lors "
+"d'invocations ultérieures de « B<bts> B<show>|B<bugs>|B<cache> » si on n'y "
+"accède pas dans les 30 jours. Attention : sur un système de fichiers monté "
+"avec l'option « noatime », l'exécution de « B<bts> B<show>|B<bugs> » ne met "
+"pas à jour les heures et dates d'accès aux fichiers du cache ; un bogue mis "
+"en cache sera donc nettoyé automatiquement 30 jours après son téléchargement "
+"initial, même si on y accède entre temps."
+
+#. type: textblock
+#: ../scripts/bts.pl:906
+msgid ""
+"Any other B<bts> commands following this on the command line will be "
+"executed after the browser has been exited."
+msgstr ""
+"Toute autre commande B<bts> suivant cela sur la ligne de commande sera "
+"exécutée après que le navigateur aura été fermé."
+
+#. type: textblock
+#: ../scripts/bts.pl:909
+msgid ""
+"The desired browser can be specified and configured by setting the "
+"B<BROWSER> environment variable. The conventions follow those defined by "
+"Eric Raymond at http://www.catb.org/~esr/BROWSER/; we here reproduce the "
+"relevant part."
+msgstr ""
+"Le navigateur voulu peut être indiqué et configuré en définissant la "
+"variable d'environnement B<BROWSER>. Les conventions suivent celles définies "
+"par Eric Raymond à l'adresse http://www.catb.org/~esr/BROWSER/ ; nous "
+"reproduisons ici les informations pertinentes."
+
+#. type: textblock
+#: ../scripts/bts.pl:914
+msgid ""
+"The value of B<BROWSER> may consist of a colon-separated series of browser "
+"command parts. These should be tried in order until one succeeds. Each "
+"command part may optionally contain the string B<%s>; if it does, the URL to "
+"be viewed is substituted there. If a command part does not contain B<%s>, "
+"the browser is to be launched as if the URL had been supplied as its first "
+"argument. The string B<%%> must be substituted as a single %."
+msgstr ""
+"La variable B<BROWSER> peut être constituée d'une série de commandes de "
+"navigateur séparées par des deux-points. Celles-ci devraient être essayées "
+"successivement jusqu'à ce qu'il y en ait une qui fonctionne. Chaque commande "
+"peut contenir la chaîne B<%s> ; si c'est le cas, celle-ci est remplacée par "
+"l'URL à afficher. Si une des commandes ne contient pas B<%s>, le navigateur "
+"est lancé comme si l'URL avait été indiquée en tant que premier paramètre. "
+"La chaîne B<%%> doit être remplacée par un simple « % »."
+
+#. type: textblock
+#: ../scripts/bts.pl:922
+msgid ""
+"Rationale: We need to be able to specify multiple browser commands so "
+"programs obeying this convention can do the right thing in either X or "
+"console environments, trying X first. Specifying multiple commands may also "
+"be useful for people who share files like F<.profile> across multiple "
+"systems. We need B<%s> because some popular browsers have remote-invocation "
+"syntax that requires it. Unless B<%%> reduces to %, it won't be possible to "
+"have a literal B<%s> in the string."
+msgstr ""
+"Justification : nous devons pouvoir indiquer plusieurs navigateurs de "
+"manière à ce que les programmes suivant cette convention puissent faire ce "
+"qu'il faut que ce soit dans un environnement graphique ou console, en "
+"essayant un environnement graphique d'abord. Indiquer plusieurs commandes "
+"peut être utile à ceux qui partagent des fichiers, comme leur F<.profile>, "
+"entre plusieurs systèmes. B<%s> est nécessaire parce que la plupart des "
+"navigateurs ont une syntaxe qui l'exige. Enfin, B<%%> doit être transformé "
+"en %, sinon il ne serait pas possible d'avoir un B<%s> littéral dans la "
+"chaîne."
+
+#. type: textblock
+#: ../scripts/bts.pl:930
+msgid "For example, on most Linux systems a good thing to do would be:"
+msgstr ""
+"Par exemple, sur la plupart des systèmes Linux, une bonne chose à faire "
+"serait :"
+
+#. type: textblock
+#: ../scripts/bts.pl:932
+msgid "BROWSER='mozilla -raise -remote \"openURL(%s,new-window)\":links'"
+msgstr "BROWSER='mozilla -raise -remote \"openURL(%s,new-window)\":links'"
+
+#. type: =item
+#: ../scripts/bts.pl:1007
+msgid "B<select> [I<key>B<:>I<value> ...]"
+msgstr "B<select> [I<clef>B<:>I<valeur> ...]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1009
+msgid ""
+"Uses the SOAP interface to output a list of bugs which match the given "
+"selection requirements."
+msgstr ""
+"Utiliser l'interface SOAP pour sortir une liste de bogues qui correspondent "
+"à certains critères de recherche."
+
+#. type: textblock
+#: ../scripts/bts.pl:1012
+msgid "The following keys are allowed, and may be given multiple times."
+msgstr ""
+"Les clefs suivantes sont autorisées, et peuvent être utilisées plusieurs "
+"fois."
+
+#. type: =item
+#: ../scripts/bts.pl:1016 ../scripts/bts.pl:1859
+#: ../scripts/who-permits-upload.pl:86
+msgid "B<package>"
+msgstr "B<package>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1018 ../scripts/bts.pl:1861
+msgid "Binary package name."
+msgstr "Nom d'un paquet binaire."
+
+#. type: =item
+#: ../scripts/bts.pl:1020 ../scripts/bts.pl:1863
+msgid "B<source>"
+msgstr "B<source>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1022 ../scripts/bts.pl:1865
+msgid "Source package name."
+msgstr "Nom d'un paquet source."
+
+#. type: =item
+#: ../scripts/bts.pl:1024
+msgid "B<maintainer>"
+msgstr "B<maintainer>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1026
+msgid "E-mail address of the maintainer."
+msgstr "Adresse électronique du responsable."
+
+#. type: =item
+#: ../scripts/bts.pl:1028 ../scripts/bts.pl:1843
+msgid "B<submitter>"
+msgstr "B<submitter>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1030 ../scripts/bts.pl:1845
+msgid "E-mail address of the submitter."
+msgstr "Adresse électronique de l'auteur du bogue."
+
+#. type: =item
+#: ../scripts/bts.pl:1032 ../scripts/bts.pl:1871
+msgid "B<severity>"
+msgstr "B<severity>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1034 ../scripts/bts.pl:1873
+msgid "Bug severity."
+msgstr "Sévérité du bogue."
+
+#. type: =item
+#: ../scripts/bts.pl:1036
+msgid "B<status>"
+msgstr "B<status>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1038
+msgid "Status of the bug. One of B<open>, B<done>, or B<forwarded>."
+msgstr "État du bogue. Soit B<open>, B<done> ou B<forwarded>."
+
+#. type: =item
+#: ../scripts/bts.pl:1040 ../scripts/bts.pl:1867
+msgid "B<tag>"
+msgstr "B<tag>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1042
+msgid ""
+"Tags applied to the bug. If B<users> is specified, may include usertags in "
+"addition to the standard tags."
+msgstr ""
+"Étiquettes attachées au bogue. Si B<users> est indiqué, les étiquettes "
+"peuvent être des « usertags » en plus des étiquettes traditionnelles."
+
+#. type: =item
+#: ../scripts/bts.pl:1045 ../scripts/bts.pl:1875
+msgid "B<owner>"
+msgstr "B<owner>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1047 ../scripts/bts.pl:1877
+msgid "Bug's owner."
+msgstr "Propriétaire du bogue."
+
+#. type: =item
+#: ../scripts/bts.pl:1049
+msgid "B<correspondent>"
+msgstr "B<correspondent>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1051
+msgid "Address of someone who sent mail to the log."
+msgstr "Adresse d'une personne qui a envoyé un courrier au journal."
+
+#. type: =item
+#: ../scripts/bts.pl:1053 ../scripts/bts.pl:1879
+msgid "B<affects>"
+msgstr "B<affects>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1055
+msgid "Bugs which affect this package."
+msgstr "Bogues qui affectent ce paquet."
+
+#. type: =item
+#: ../scripts/bts.pl:1057
+msgid "B<bugs>"
+msgstr "B<bugs>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1059
+msgid "List of bugs to search within."
+msgstr "Liste de bogues dans lesquels chercher."
+
+#. type: =item
+#: ../scripts/bts.pl:1061
+msgid "B<users>"
+msgstr "B<users>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1063
+msgid "Users to use when looking up usertags."
+msgstr ""
+"Utilisateurs à utiliser pour la recherche d'étiquettes utilisateur "
+"(« usertags »)."
+
+#. type: =item
+#: ../scripts/bts.pl:1065 ../scripts/bts.pl:1883
+msgid "B<archive>"
+msgstr "B<archive>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1067 ../scripts/bts.pl:1885
+msgid ""
+"Whether to search archived bugs or normal bugs; defaults to B<0> (i.e. only "
+"search normal bugs). As a special case, if archive is B<both>, both archived "
+"and unarchived bugs are returned."
+msgstr ""
+"Rechercher des bogues archivés ou des bogues normaux ; la valeur par défaut "
+"est B<0> (c'est-à-dire ne chercher que les bogues normaux). Une valeur "
+"particulière, B<both>, permet de rechercher à la fois parmi les bogues "
+"archivés et non archivés."
+
+#. type: textblock
+#: ../scripts/bts.pl:1073
+msgid ""
+"For example, to select the set of bugs submitted by jrandomdeveloper@example."
+"com and tagged B<wontfix>, one would use"
+msgstr ""
+"Par exemple, pour sélectionner l'ensemble des bogues envoyés par "
+"undéveloppeur@example.com qui ont l'étiquette B<wontfix>, on utilisera :"
+
+#. type: textblock
+#: ../scripts/bts.pl:1076
+msgid "bts select submitter:jrandomdeveloper@example.com tag:wontfix"
+msgstr "bts select submitter:undéveloppeur@example.com tag:wontfix"
+
+#. type: textblock
+#: ../scripts/bts.pl:1078 ../scripts/bts.pl:1897
+msgid ""
+"If a key is used multiple times then the set of bugs selected includes those "
+"matching any of the supplied values; for example"
+msgstr ""
+"Si une clef est utilisée plusieurs fois alors les bogues sélectionnés sont "
+"ceux qui correspondent à une des valeurs fournies ; par exemple :"
+
+#. type: textblock
+#: ../scripts/bts.pl:1081
+msgid "bts select package:foo severity:wishlist severity:minor"
+msgstr "bts select package:toto severity:wishlist severity:minor"
+
+#. type: textblock
+#: ../scripts/bts.pl:1083
+msgid "returns all bugs of package foo with either wishlist or minor severity."
+msgstr "renvoie tous les bogues du paquet toto de sévérité wishlist ou minor."
+
+#. type: =item
+#: ../scripts/bts.pl:1096
+msgid ""
+"B<status> [I<bug> | B<file:>I<file> | B<fields:>I<field>[B<,>I<field> ...] | "
+"B<verbose>] ..."
+msgstr ""
+"B<status> [I<bogue> | B<file:>I<fichier> | B<fields:>I<champ>[B<,"
+">I<champ> ...] | B<verbose>] ..."
+
+#. type: textblock
+#: ../scripts/bts.pl:1098
+msgid ""
+"Uses the SOAP interface to output status information for the given bugs (or "
+"as read from the listed files -- use B<-> to indicate STDIN)."
+msgstr ""
+"Utiliser l'interface SOAP pour fournir les informations d'état pour les "
+"bogues indiqués (ou lus dans les fichiers fournis ; utilisez B<-> pour "
+"indiquer l'entrée standard)."
+
+#. type: textblock
+#: ../scripts/bts.pl:1101
+msgid "By default, all populated fields for a bug are displayed."
+msgstr "Par défaut, tout les champs existants du bogue sont affichés."
+
+#. type: textblock
+#: ../scripts/bts.pl:1103
+msgid "If B<verbose> is given, empty fields will also be displayed."
+msgstr "Si B<verbose> est fournie, les champs vides sont également affichés."
+
+#. type: textblock
+#: ../scripts/bts.pl:1105
+msgid ""
+"If B<fields> is given, only those fields will be displayed. No validity "
+"checking is performed on any specified fields."
+msgstr ""
+"Si B<fields> est fournie, seuls ces I<champ>s seront affichés. Aucune "
+"vérification de validité n'est réalisée sur les I<champ>s indiqués."
+
+#. type: =item
+#: ../scripts/bts.pl:1182
+msgid "B<clone> I<bug> I<new_ID> [I<new_ID> ...]"
+msgstr "B<clone> I<bogue> I<nouvel_ID> [I<nouvel_ID> ...]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1184
+msgid ""
+"The B<clone> control command allows you to duplicate a I<bug> report. It is "
+"useful in the case where a single report actually indicates that multiple "
+"distinct bugs have occurred. \"New IDs\" are negative numbers, separated by "
+"spaces, which may be used in subsequent control commands to refer to the "
+"newly duplicated bugs. A new report is generated for each new ID."
+msgstr ""
+"La commande de contrôle B<clone> vous permet de dupliquer un rapport de "
+"I<bogue>. C'est utile dans le cas où un rapport de bogue unique indique en "
+"fait que plusieurs bogues distincts se produisent. Les « nouveaux ID » sont "
+"des nombres négatifs, séparés par des espaces, qui peuvent être utilisés "
+"dans les commandes de contrôle suivantes pour se référer aux rapports de "
+"bogue nouvellement dupliqués. Un nouveau rapport de bogue est produit pour "
+"chaque nouvel identifiant."
+
+#. type: =item
+#: ../scripts/bts.pl:1234
+msgid "B<done> I<bug> [I<version>]"
+msgstr "B<done> I<bogue> [I<version>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1236
+msgid ""
+"Mark a I<bug> as Done. This forces interactive mode since done messages "
+"should include an explanation why the bug is being closed. You should "
+"specify which I<version> of the package closed the bug, if possible."
+msgstr ""
+"Fermer le I<bogue>. Le mode interactif est forcé puisqu'un message de "
+"fermeture doit contenir une explication. La I<version> du paquet dans "
+"laquelle le bogue a été corrigé doit si possible être indiquée."
+
+#. type: =item
+#: ../scripts/bts.pl:1254
+msgid "B<reopen> I<bug> [I<submitter>]"
+msgstr "B<reopen> I<bogue> [I<rapporteur>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1256
+msgid "Reopen a I<bug>, with optional I<submitter>."
+msgstr "Réouvrir un I<bogue>, avec I<rapporteur> optionnel."
+
+#. type: =item
+#: ../scripts/bts.pl:1267
+msgid "B<archive> I<bug>"
+msgstr "B<archive> I<bogue>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1269
+msgid ""
+"Archive a I<bug> that has previously been archived but is currently not. "
+"The I<bug> must fulfil all of the requirements for archiving with the "
+"exception of those that are time-based."
+msgstr ""
+"Archiver un I<bogue> qui a déjà été archivé, mais ne l'est plus. Le I<bogue> "
+"doit satisfaire à tous les critères pour les bogues archivés, sauf celui de "
+"la période d'attente."
+
+#. type: =item
+#: ../scripts/bts.pl:1281
+msgid "B<unarchive> I<bug>"
+msgstr "B<unarchive> I<bogue>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1283
+msgid "Unarchive a I<bug> that is currently archived."
+msgstr "Désarchiver un I<bogue> qui est déjà archivé."
+
+#. type: =item
+#: ../scripts/bts.pl:1293
+msgid "B<retitle> I<bug> I<title>"
+msgstr "B<retitle> I<bogue> I<titre>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1295
+msgid "Change the I<title> of the I<bug>."
+msgstr "Changer le I<titre> du I<bogue>."
+
+#. type: =item
+#: ../scripts/bts.pl:1308
+msgid "B<summary> I<bug> [I<messagenum>]"
+msgstr "B<summary> I<bogue> [I<numéro_message>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1310
+msgid "Select a message number that should be used as the summary of a I<bug>."
+msgstr ""
+"Sélectionner un numéro de message qui doit être utilisé comme résumé d'un "
+"I<bogue>."
+
+#. type: textblock
+#: ../scripts/bts.pl:1313
+msgid "If no message number is given, the summary is cleared."
+msgstr "Si aucun numéro de message n'est fourni, le résumé est supprimé."
+
+#. type: =item
+#: ../scripts/bts.pl:1323
+msgid "B<submitter> I<bug> [I<bug> ...] I<submitter-email>"
+msgstr "B<submitter> I<bogue> [I<bogue> ...] I<adresse-du-rapporteur>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1325
+msgid ""
+"Change the submitter address of a I<bug> or a number of bugs, with B<!> "
+"meaning `use the address on the current email as the new submitter address'."
+msgstr ""
+"Changer l'adresse électronique du rapporteur du ou des I<bogue>s, où B<!> "
+"signifie « utiliser l'adresse électronique actuelle en tant que nouvelle "
+"adresse du rapporteur »."
+
+#. type: =item
+#: ../scripts/bts.pl:1342
+msgid "B<reassign> I<bug> [I<bug> ...] I<package> [I<version>]"
+msgstr "B<reassign> I<bogue> [I<bogue> ...] I<paquet> [I<version>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1344
+msgid ""
+"Reassign a I<bug> or a number of bugs to a different I<package>. The "
+"I<version> field is optional; see the explanation at L<https://www.debian."
+"org/Bugs/server-control>."
+msgstr ""
+"Réassigner un I<bogue> ou un ensemble de bogues à un I<paquet> différent. Le "
+"champ I<version> est optionnel ; veuillez consulter les explications sur "
+"L<https://www.debian.org/Bugs/server-control>."
+
+#. type: =item
+#: ../scripts/bts.pl:1375
+msgid "B<found> I<bug> [I<version>]"
+msgstr "B<found> I<bogue> [I<version>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1377
+msgid ""
+"Indicate that a I<bug> was found to exist in a particular package version. "
+"Without I<version>, the list of fixed versions is cleared and the bug is "
+"reopened."
+msgstr ""
+"Indiquer qu'un I<bogue> a été découvert dans une version particulière d'un "
+"paquet. Sans I<version>, la liste des versions corrigées est effacée et le "
+"bogue est rouvert."
+
+#. type: =item
+#: ../scripts/bts.pl:1394
+msgid "B<notfound> I<bug> I<version>"
+msgstr "B<notfound> I<bogue> I<version>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1396
+msgid ""
+"Remove the record that I<bug> was encountered in the given version of the "
+"package to which it is assigned."
+msgstr ""
+"Enlever l'indication concernant la version dans laquelle ce I<bogue> a été "
+"découvert."
+
+#. type: =item
+#: ../scripts/bts.pl:1408
+msgid "B<fixed> I<bug> I<version>"
+msgstr "B<fixed> I<bogue> I<version>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1410
+msgid ""
+"Indicate that a I<bug> was fixed in a particular package version, without "
+"affecting the I<bug>'s open/closed status."
+msgstr ""
+"Indiquer qu'un I<bogue> a été corrigé dans une version particulière d'un "
+"paquet, sans changer l'état ouvert ou fermé du I<bogue>."
+
+#. type: =item
+#: ../scripts/bts.pl:1422
+msgid "B<notfixed> I<bug> I<version>"
+msgstr "B<notfixed> I<bogue> I<version>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1424
+msgid ""
+"Remove the record that a I<bug> was fixed in the given version of the "
+"package to which it is assigned."
+msgstr ""
+"Enlever l'indication que ce I<bogue> est corrigé dans une version donnée."
+
+#. type: textblock
+#: ../scripts/bts.pl:1427
+msgid ""
+"This is equivalent to the sequence of commands \"B<found> I<bug> I<version>"
+"\", \"B<notfound> I<bug> I<version>\"."
+msgstr ""
+"Cette commande est équivalente à la séquence « B<found> I<bogue> "
+"I<version> », « B<notfound> I<bogue> I<version> »."
+
+#. type: =item
+#: ../scripts/bts.pl:1439
+msgid "B<block> I<bug> B<by>|B<with> I<bug> [I<bug> ...]"
+msgstr "B<block> I<bogue> B<by>|B<with> I<bogue> [I<bogue> ...]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1441
+msgid "Note that a I<bug> is blocked from being fixed by a set of other bugs."
+msgstr ""
+"Enregistrer que la résolution d'un I<bogue> est bloquée par un ensemble "
+"d'autres bogues."
+
+#. type: =item
+#: ../scripts/bts.pl:1460
+msgid "B<unblock> I<bug> B<by>|B<with> I<bug> [I<bug> ...]"
+msgstr "B<unblock> I<bogue> B<by>|B<with> I<bogue> [I<bogue> ...]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1462
+msgid ""
+"Note that a I<bug> is no longer blocked from being fixed by a set of other "
+"bugs."
+msgstr ""
+"Enregistrer que la résolution d'un I<bogue> n'est plus bloquée par un "
+"ensemble d'autres bogues."
+
+#. type: =item
+#: ../scripts/bts.pl:1481
+msgid "B<merge> I<bug> I<bug> [I<bug> ...]"
+msgstr "B<merge> I<bogue> I<bogue> [I<bogue> ...]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1483
+msgid "Merge a set of bugs together."
+msgstr "Fusionner plusieurs bogues."
+
+#. type: =item
+#: ../scripts/bts.pl:1498
+msgid "B<forcemerge> I<bug> I<bug> [I<bug> ...]"
+msgstr "B<forcemerge> I<bogue> I<bogue> [I<bogue> ...]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1500
+msgid ""
+"Forcibly merge a set of bugs together. The first I<bug> listed is the master "
+"bug, and its settings (those which must be equal in a normal B<merge>) are "
+"assigned to the bugs listed next."
+msgstr ""
+"Forcer la fusion d'un ensemble de bogues entre eux. Le premier I<bogue> est "
+"le bogue maître et sa configuration (cette configuration qui doit "
+"correspondre pour les fusions normales avec B<merge>) est donnée à tous les "
+"bogues qui suivent."
+
+#. type: =item
+#: ../scripts/bts.pl:1518
+msgid "B<unmerge> I<bug>"
+msgstr "B<unmerge> I<bogue>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1520
+msgid "Unmerge a I<bug>."
+msgstr "Annuler la fusion d'un I<bogue>."
+
+#. type: =item
+#: ../scripts/bts.pl:1530
+msgid "B<tag> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr "B<tag> I<bogue> [B<+>|B<->|B<=>] I<étiquette> [I<étiquette> ..]"
+
+#. type: =item
+#: ../scripts/bts.pl:1532
+msgid "B<tags> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr "B<tags> I<bogue> [B<+>|B<->|B<=>] I<étiquette> [I<étiquette> ..]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1534
+msgid ""
+"Set or unset a I<tag> on a I<bug>. The tag may either be the exact tag name "
+"or it may be abbreviated to any unique tag substring. (So using B<fixed> "
+"will set the tag B<fixed>, not B<fixed-upstream>, for example, but B<fix> "
+"would not be acceptable.) Multiple tags may be specified as well. The two "
+"commands (tag and tags) are identical. At least one tag must be specified, "
+"unless the B<=> flag is used, where the command"
+msgstr ""
+"Ajouter ou retirer une I<étiquette> à un I<bogue>. L'étiquette peut être "
+"indiquée par son nom exact ou être abrégée en la plus courte sous-chaîne "
+"unique. (Ainsi B<fixed> va ajouter l'étiquette B<fixed> et non B<fixed-"
+"upstream>, par exemple, mais B<fix> ne sera pas accepté.) Plusieurs "
+"étiquettes peuvent être indiquées simultanément. Les deux commandes (tag et "
+"tags) sont identiques. Il est nécessaire d'indiquer au moins une étiquette, "
+"à moins que l'argument B<=> ne soit utilisé ; la commande"
+
+#. type: verbatim
+#: ../scripts/bts.pl:1541
+#, no-wrap
+msgid ""
+" bts tags <bug> =\n"
+"\n"
+msgstr ""
+" bts tags <bogue> =\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:1543
+msgid "will remove all tags from the specified I<bug>."
+msgstr "va supprimer toutes les étiquettes du I<bogue> indiqué."
+
+#. type: textblock
+#: ../scripts/bts.pl:1545
+msgid ""
+"Adding/removing the B<security> tag will add \"team\\@security.debian.org\" "
+"to the Cc list of the control email."
+msgstr ""
+"L’ajout ou suppression de l’étiquette B<security> ajoutera « team\\@security."
+"debian.org » en copie du message de contrôle."
+
+#. type: =item
+#: ../scripts/bts.pl:1623
+msgid "B<affects> I<bug> [B<+>|B<->|B<=>] I<package> [I<package> ...]"
+msgstr "B<affects> I<bogue> [B<+>|B<->|B<=>] I<paquet> [I<paquet> ...]"
+
+# NOTE: package list -> bug list
+#. type: textblock
+#: ../scripts/bts.pl:1625
+msgid ""
+"Indicates that a I<bug> affects a I<package> other than that against which "
+"it is filed, causing the I<bug> to be listed by default in the I<package> "
+"list of the other I<package>. This should generally be used where the "
+"I<bug> is severe enough to cause multiple reports from users to be assigned "
+"to the wrong package. At least one I<package> must be specified, unless the "
+"B<=> flag is used, where the command"
+msgstr ""
+"Indiquer qu'un I<bogue> affecte un I<paquet> autre que celui pour lequel il "
+"est enregistré ; le I<bogue> sera listé par défaut dans la liste des bogues "
+"de l'autre I<paquet>. Ce n'est généralement à utiliser que si le I<bogue> "
+"est suffisamment important et si de nombreux bogues sont remontés sur le "
+"mauvais paquet par des utilisateurs. Au moins un I<paquet> doit être "
+"indiqué, sauf si l'attribut B<=> est utilisé, où la commande"
+
+#. type: verbatim
+#: ../scripts/bts.pl:1631
+#, no-wrap
+msgid ""
+" bts affects <bug> =\n"
+"\n"
+msgstr ""
+" bts affects <bogue> =\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:1633
+msgid "will remove all indications that I<bug> affects other packages."
+msgstr ""
+"va supprimer toutes les indications que le I<bogue> affecte d'autres paquets."
+
+#. type: =item
+#: ../scripts/bts.pl:1666
+msgid "B<user> I<email>"
+msgstr "B<user> I<adresse>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1668
+msgid "Specify a user I<email> address before using the B<usertags> command."
+msgstr ""
+"Indiquer l'I<adresse> électronique d'un utilisateur avant d'utiliser la "
+"commande B<usertags>."
+
+#. type: =item
+#: ../scripts/bts.pl:1684
+msgid "B<usertag> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr "B<usertag> I<bogue> [B<+>|B<->|B<=>] I<étiquette> [I<étiquette> ...]"
+
+#. type: =item
+#: ../scripts/bts.pl:1686
+msgid "B<usertags> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]"
+msgstr "B<usertags> I<bogue> [B<+>|B<->|B<=>] I<étiquette> [I<étiquette> ...]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1688
+msgid ""
+"Set or unset a user tag on a I<bug>. The I<tag> must be the exact tag name "
+"wanted; there are no defaults or checking of tag names. Multiple tags may "
+"be specified as well. The two commands (B<usertag> and B<usertags>) are "
+"identical. At least one I<tag> must be specified, unless the B<=> flag is "
+"used, where the command"
+msgstr ""
+"Ajouter ou retirer une I<étiquette> utilisateur à un I<bogue>. Le nom exact "
+"de celle-ci doit être utilisé ; il n'y a ni valeur par défaut ni "
+"vérification de la validité des noms d'étiquette. Plusieurs étiquettes "
+"peuvent être indiquées simultanément. Les deux commandes (B<usertag> et "
+"B<usertags>) sont identiques. Il est nécessaire d'indiquer au moins une "
+"I<étiquette> utilisateur, à moins que l'argument B<=> ne soit utilisé ; la "
+"commande"
+
+#. type: verbatim
+#: ../scripts/bts.pl:1694
+#, no-wrap
+msgid ""
+" bts usertags <bug> =\n"
+"\n"
+msgstr ""
+" bts usertags <bogue> =\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:1696
+msgid "will remove all user tags from the specified I<bug>."
+msgstr "va supprimer toutes les étiquettes utilisateur du I<bogue> indiqué."
+
+#. type: =item
+#: ../scripts/bts.pl:1726
+msgid "B<claim> I<bug> [I<claim>]"
+msgstr "B<claim> I<bogue> [I<adresse>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1728
+msgid ""
+"Record that you have claimed a I<bug> (e.g. for a bug squashing party). "
+"I<claim> should be a unique token allowing the bugs you have claimed to be "
+"identified; an e-mail address is often used."
+msgstr ""
+"Enregistrer que vous avez réclamé un I<bogue> (par exemple pour une bug "
+"squashing party). I<adresse> doit être une chaîne unique permettant "
+"d'identifier les bogues que vous avez réclamé ; une adresse électronique est "
+"souvent utilisée."
+
+#. type: textblock
+#: ../scripts/bts.pl:1732 ../scripts/bts.pl:1752
+msgid ""
+"If no I<claim> is specified, the environment variable B<DEBEMAIL> or "
+"B<EMAIL> (checked in that order) is used."
+msgstr ""
+"Si aucune I<adresse> n'est fournie, les variables d'environnement "
+"B<DEBEMAIL> et B<EMAIL> sont utilisées (dans cet ordre)."
+
+#. type: =item
+#: ../scripts/bts.pl:1748
+msgid "B<unclaim> I<bug> [I<claim>]"
+msgstr "B<unclaim> I<bogue> [I<adresse>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1750
+msgid "Remove the record that you have claimed a bug."
+msgstr "Supprimer votre revendication pour un I<bogue>."
+
+#. type: =item
+#: ../scripts/bts.pl:1768
+msgid "B<severity> I<bug> I<severity>"
+msgstr "B<severity> I<bogue> I<sévérité>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1770
+msgid ""
+"Change the I<severity> of a I<bug>. Available severities are: B<wishlist>, "
+"B<minor>, B<normal>, B<important>, B<serious>, B<grave>, B<critical>. The "
+"severity may be abbreviated to any unique substring."
+msgstr ""
+"Changer la I<sévérité> d'un I<bogue>. Les sévérités possibles sont : "
+"B<wishlist>, B<minor>, B<normal>, B<important>, B<serious>, B<grave> et "
+"B<critical>. Cette sévérité peut être abrégée en une sous-chaîne unique."
+
+#. type: =item
+#: ../scripts/bts.pl:1787
+msgid "B<forwarded> I<bug> I<address>"
+msgstr "B<forwarded> I<bogue> I<adresse>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1789
+msgid ""
+"Mark the I<bug> as forwarded to the given I<address> (usually an email "
+"address or a URL for an upstream bug tracker)."
+msgstr ""
+"Marquer le I<bogue> comme transmis à l'I<adresse> donnée (normalement une "
+"adresse électronique ou une URL pour un système de suivi amont)."
+
+#. type: =item
+#: ../scripts/bts.pl:1806
+msgid "B<notforwarded> I<bug>"
+msgstr "B<notforwarded> I<bogue>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1808
+msgid "Mark a I<bug> as not forwarded."
+msgstr "Marquer le I<bogue> comme n'ayant pas été transmis."
+
+#. type: =item
+#: ../scripts/bts.pl:1818
+msgid "B<package> [I<package> ...]"
+msgstr "B<package> [I<paquet> ...]"
+
+#. type: textblock
+#: ../scripts/bts.pl:1820
+msgid ""
+"The following commands will only apply to bugs against the listed "
+"I<package>s; this acts as a safety mechanism for the BTS. If no packages "
+"are listed, this check is turned off again."
+msgstr ""
+"Les commandes suivantes ne vont s'appliquer qu'aux bogues touchant les "
+"I<paquet>s indiqués ; il s'agit d'un mécanisme de sûreté pour le BTS. Si "
+"aucun paquet n'est listé, cette vérification est désactivée à nouveau."
+
+#. type: =item
+#: ../scripts/bts.pl:1834
+msgid "B<limit> [I<key>[B<:>I<value>]] ..."
+msgstr "B<limit> [I<clef>[B<:>I<valeur>]] ..."
+
+#. type: textblock
+#: ../scripts/bts.pl:1836
+msgid ""
+"The following commands will only apply to bugs which meet the specified "
+"criterion; this acts as a safety mechanism for the BTS. If no I<value>s are "
+"listed, the limits for that I<key> are turned off again. If no I<key>s are "
+"specified, all limits are reset."
+msgstr ""
+"Les commandes suivantes ne vont s'appliquer qu'aux bogues correspondant aux "
+"critères indiqués ; il s'agit d'un mécanisme de sûreté pour le BTS. Si "
+"aucune I<valeur> n'est indiquée, les limites pour cette I<clef> sont "
+"désactivées. Si aucune I<clef> n'est indiquée, les limites sont remises à "
+"zéro."
+
+#. type: =item
+#: ../scripts/bts.pl:1847
+msgid "B<date>"
+msgstr "B<date>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1849
+msgid "Date the bug was submitted."
+msgstr "Date à laquelle le bogue a été soumis."
+
+#. type: =item
+#: ../scripts/bts.pl:1851
+msgid "B<subject>"
+msgstr "B<subject>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1853
+msgid "Subject of the bug."
+msgstr "Sujet du bogue."
+
+#. type: =item
+#: ../scripts/bts.pl:1855
+msgid "B<msgid>"
+msgstr "B<msgid>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1857
+msgid "Message-id of the initial bug report."
+msgstr "Identifiant du message du rapport de bogue initial."
+
+#. type: textblock
+#: ../scripts/bts.pl:1869
+msgid "Tags applied to the bug."
+msgstr "Étiquettes du bogue."
+
+#. type: textblock
+#: ../scripts/bts.pl:1881
+msgid "Bugs affecting this package."
+msgstr "Bogues qui affectent ce paquet."
+
+#. type: textblock
+#: ../scripts/bts.pl:1891
+msgid ""
+"For example, to limit the set of bugs affected by the subsequent control "
+"commands to those submitted by jrandomdeveloper@example.com and tagged "
+"B<wontfix>, one would use"
+msgstr ""
+"Par exemple, pour limiter l'ensemble des bogues pour lesquels vont "
+"s'appliquer les commandes de contrôle qui suivent à ceux envoyés par "
+"undéveloppeur@example.com qui ont l'étiquette B<wontfix>, on utilisera :"
+
+#. type: textblock
+#: ../scripts/bts.pl:1895
+msgid "bts limit submitter:jrandomdeveloper@example.com tag:wontfix"
+msgstr "bts limit submitter:undéveloppeur@example.com tag:wontfix"
+
+#. type: textblock
+#: ../scripts/bts.pl:1900
+msgid "bts limit package:foo severity:wishlist severity:minor"
+msgstr "bts limit package:toto severity:wishlist severity:minor"
+
+#. type: textblock
+#: ../scripts/bts.pl:1902
+msgid ""
+"only applies the subsequent control commands to bugs of package foo with "
+"either B<wishlist> or B<minor> severity."
+msgstr ""
+"n'applique les commandes de contrôle qui suivent qu'aux bogues du paquet "
+"toto avec pour sévérité B<wishlist> ou B<minor>."
+
+#. type: =item
+#: ../scripts/bts.pl:1977
+msgid "B<owner> I<bug> I<owner-email>"
+msgstr "B<owner> I<bogue> I<adresse-du-propriétaire>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1979
+msgid ""
+"Change the \"owner\" address of a I<bug>, with B<!> meaning `use the address "
+"on the current email as the new owner address'."
+msgstr ""
+"Changer l'adresse électronique du « propriétaire » du I<bogue>, où B<!> "
+"signifie « utiliser l'adresse électronique actuelle comme nouvelle adresse "
+"de propriétaire »."
+
+#. type: textblock
+#: ../scripts/bts.pl:1982
+msgid "The owner of a bug accepts responsibility for dealing with it."
+msgstr "Le propriétaire d'un bogue accepte la responsabilité de s'en occuper."
+
+#. type: =item
+#: ../scripts/bts.pl:1993
+msgid "B<noowner> I<bug>"
+msgstr "B<noowner> I<bogue>"
+
+#. type: textblock
+#: ../scripts/bts.pl:1995
+msgid "Mark a bug as having no \"owner\"."
+msgstr "Marquer un bogue comme n'ayant pas de « propriétaire »."
+
+#. type: =item
+#: ../scripts/bts.pl:2005
+msgid "B<subscribe> I<bug> [I<email>]"
+msgstr "B<subscribe> I<bogue> [I<adresse>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:2007
+msgid ""
+"Subscribe the given I<email> address to the specified I<bug> report. If no "
+"email address is specified, the environment variable B<DEBEMAIL> or B<EMAIL> "
+"(in that order) is used. If those are not set, or B<!> is given as email "
+"address, your default address will be used."
+msgstr ""
+"Abonner l'I<adresse> électronique donnée au rapport de I<bogue> indiqué. Si "
+"aucune adresse n'a été fournie, la variable d'environnement B<DEBEMAIL> ou "
+"B<EMAIL> (dans cet ordre) est utilisée. Si aucune n'est définie, ou si B<!> "
+"est donné comme adresse électronique, votre adresse par défaut va être "
+"utilisée."
+
+#. type: textblock
+#: ../scripts/bts.pl:2012
+msgid ""
+"After executing this command, you will be sent a subscription confirmation "
+"to which you have to reply. When subscribed to a bug report, you receive "
+"all relevant emails and notifications. Use the unsubscribe command to "
+"unsubscribe."
+msgstr ""
+"Après avoir exécuté cette commande, vous allez recevoir une confirmation "
+"d'abonnement à laquelle vous devez répondre. En étant abonné à un rapport de "
+"bogue, vous allez recevoir tous les messages et notifications pertinents. "
+"Utilisez la commande unsubscribe pour vous désabonner."
+
+#. type: =item
+#: ../scripts/bts.pl:2033
+msgid "B<unsubscribe> I<bug> [I<email>]"
+msgstr "B<unsubscribe> I<bogue> [I<adresse>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:2035
+msgid ""
+"Unsubscribe the given email address from the specified bug report. As with "
+"subscribe above, if no email address is specified, the environment variables "
+"B<DEBEMAIL> or B<EMAIL> (in that order) is used. If those are not set, or "
+"B<!> is given as email address, your default address will be used."
+msgstr ""
+"Désabonner l'adresse électronique utilisée du rapport de bogue indiqué. "
+"Comme pour la commande subscribe décrite ci-dessus, si aucune adresse n'a "
+"été fournie, la variable d'environnement B<DEBEMAIL> ou B<EMAIL> (dans cet "
+"ordre) est utilisée. Si aucune n'est définie, ou si B<!> est donné comme "
+"adresse électronique, votre adresse par défaut va être utilisée."
+
+#. type: textblock
+#: ../scripts/bts.pl:2040
+msgid ""
+"After executing this command, you will be sent an unsubscription "
+"confirmation to which you have to reply. Use the B<subscribe> command to, "
+"well, subscribe."
+msgstr ""
+"Après avoir exécuté cette commande, vous allez recevoir une confirmation de "
+"désabonnement à laquelle vous devez répondre. Utilisez la commande "
+"B<subscribe>, évidemment, pour vous abonner."
+
+#. type: =item
+#: ../scripts/bts.pl:2060
+msgid "B<reportspam> I<bug> ..."
+msgstr "B<reportspam> I<bogue> ..."
+
+#. type: textblock
+#: ../scripts/bts.pl:2062
+msgid ""
+"The B<reportspam> command allows you to report a I<bug> report as containing "
+"spam. It saves one from having to go to the bug web page to do so."
+msgstr ""
+"La commande B<reportspam> vous permet de signaler un rapport de I<bogue> "
+"comme contenant du pourriel. Cela évite de passer par la page web du rapport "
+"de bogue pour ce faire."
+
+#. type: =item
+#: ../scripts/bts.pl:2098
+msgid "B<spamreport> I<bug> ..."
+msgstr "B<spamreport> I<bogue> ..."
+
+#. type: textblock
+#: ../scripts/bts.pl:2100
+msgid "B<spamreport> is a synonym for B<reportspam>."
+msgstr "B<spamreport> est synonyme de B<reportspam>."
+
+#. type: =item
+#: ../scripts/bts.pl:2108
+msgid ""
+"B<cache> [I<options>] [I<maint_email> | I<pkg> | B<src:>I<pkg> | B<from:"
+">I<submitter>]"
+msgstr ""
+"B<cache> [I<options>] [I<adresse_resp.>] | I<paquet> | B<src:>I<paquet> | "
+"B<from:>I<rapporteur>]"
+
+#. type: =item
+#: ../scripts/bts.pl:2110
+msgid ""
+"B<cache> [I<options>] [B<release-critical> | B<release-critical/>... | B<RC>]"
+msgstr ""
+"B<cache> [I<options>] [B<release-critical> | B<release-critical/>... | B<RC>]"
+
+#. type: textblock
+#: ../scripts/bts.pl:2112
+msgid ""
+"Generate or update a cache of bug reports for the given email address or "
+"package. By default it downloads all bugs belonging to the email address in "
+"the B<DEBEMAIL> environment variable (or the B<EMAIL> environment variable "
+"if B<DEBEMAIL> is unset). This command may be repeated to cache bugs "
+"belonging to several people or packages. If multiple packages or addresses "
+"are supplied, bugs belonging to any of the arguments will be cached; those "
+"belonging to more than one of the arguments will only be downloaded once. "
+"The cached bugs are stored in F<~/.devscripts_cache/bts/>."
+msgstr ""
+"Créer ou mettre à jour le cache des rapports de bogue pour l'adresse "
+"électronique ou le paquet indiqué. Par défaut, cela télécharge tous les "
+"bogues appartenant à l'adresse électronique stockée dans la variable "
+"d'environnement B<DEBEMAIL> (ou dans la variable d'environnement B<EMAIL> si "
+"B<DEBEMAIL> n'est pas définie). Cette commande peut être répétée pour mettre "
+"en cache des bogues appartenant à plusieurs personnes ou touchant plusieurs "
+"paquets. Si plusieurs paquets ou adresses sont fournis, les bogues "
+"correspondant à l'un des paramètres seront mis en cache ; ceux correspondant "
+"à plusieurs paramètres ne seront téléchargés qu'une seule fois. Les bogues "
+"mis en cache sont stockés dans F<~/.devscripts_cache/bts/>."
+
+#. type: textblock
+#: ../scripts/bts.pl:2121
+msgid "You can use the cached bugs with the B<-o> switch. For example:"
+msgstr "Vous pouvez utiliser le cache grâce à l'option B<-o>. Par exemple :"
+
+#. type: verbatim
+#: ../scripts/bts.pl:2123
+#, no-wrap
+msgid ""
+" bts -o bugs\n"
+" bts -o show 12345\n"
+"\n"
+msgstr ""
+" bts -o bugs\n"
+" bts -o show 12345\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/bts.pl:2126
+msgid ""
+"Also, B<bts> will update the files in it in a piecemeal fashion as it "
+"downloads information from the BTS using the B<show> command. You might thus "
+"set up the cache, and update the whole thing once a week, while letting the "
+"automatic cache updates update the bugs you frequently refer to during the "
+"week."
+msgstr ""
+"Ainsi, une fois que le cache est mis en place, B<bts> va mettre à jour les "
+"fichiers contenus dans celui-ci au coup par coup quand il télécharge des "
+"informations depuis le BTS avec la commande B<show>. Il est donc possible de "
+"mettre en place un cache, et de le mettre à jour une fois par semaine, tout "
+"en laissant les mises à jour automatiques se faire pour les bogues auxquels "
+"vous accédez fréquemment pendant la semaine."
+
+#. type: textblock
+#: ../scripts/bts.pl:2132
+msgid ""
+"Some options affect the behaviour of the B<cache> command. The first is the "
+"setting of B<--cache-mode>, which controls how much B<bts> downloads of the "
+"referenced links from the bug page, including boring bits such as the "
+"acknowledgement emails, emails to the control bot, and the mbox version of "
+"the bug report. It can take three values: B<min> (the minimum), B<mbox> "
+"(download the minimum plus the mbox version of the bug report) or B<full> "
+"(the whole works). The second is B<--force-refresh> or B<-f>, which forces "
+"the download, even if the cached bug report is up-to-date. The B<--include-"
+"resolved> option indicates whether bug reports marked as resolved should be "
+"downloaded during caching."
+msgstr ""
+"Certaines options modifient le comportement de la commande B<cache>. La "
+"première est B<--cache-mode>, qui contrôle à quel point B<bts> télécharge "
+"les liens référencés depuis la page du bogue, ce qui inclut des choses "
+"pénibles comme les messages de confirmation, les messages au robot de "
+"contrôle, et la version B<mbox> du rapport de bogue. Trois valeurs sont "
+"acceptées : B<min> (le minimum), B<mbox> (télécharger le minimum plus la "
+"version mbox du rapport de bogue) ou B<full>. La seconde option qui modifie "
+"le comportement de la commande cache est B<--force-refresh> ou B<-f>, qui "
+"force le téléchargement, même si le rapport de bogue mis en cache est à jour."
+"L'option B<--include-resolved> indique si les rapports de bogue marqués "
+"comme étant résolus doivent être téléchargés lors de la mise en cache."
+
+#. type: textblock
+#: ../scripts/bts.pl:2143
+msgid ""
+"Each of these is configurable from the configuration file, as described "
+"below. They may also be specified after the B<cache> command as well as at "
+"the start of the command line."
+msgstr ""
+"Toutes ces options sont configurables dans le fichier de configuration, "
+"comme décrit ci-dessous. Elles peuvent aussi bien être indiquées après la "
+"commande B<cache> qu'au début de la ligne de commande."
+
+#. type: textblock
+#: ../scripts/bts.pl:2147
+msgid ""
+"Finally, B<-q> or B<--quiet> will suppress messages about caches being up-to-"
+"date, and giving the option twice will suppress all cache messages (except "
+"for error messages)."
+msgstr ""
+"Enfin, B<-q> ou B<--quiet> supprime les messages indiquant que le cache est "
+"à jour et utiliser cette option deux fois va supprimer tous les messages à "
+"propos du cache (à l'exception des messages d'erreur)."
+
+#. type: textblock
+#: ../scripts/bts.pl:2151
+msgid ""
+"Beware of caching RC, though: it will take a LONG time! (With 1000+ RC bugs "
+"and a delay of 5 seconds between bugs, you're looking at a minimum of 1.5 "
+"hours, and probably significantly more than that.)"
+msgstr ""
+"Attention à la mise en cache RC : cela met vraiment LONGTEMPS ! (Avec plus "
+"de mille bogues RC et un délai de 5 secondes entre chaque bogue, vous allez "
+"avoir besoin d'un minimum d'une heure et demie, et probablement bien plus "
+"que ça.)"
+
+#. type: =item
+#: ../scripts/bts.pl:2280
+msgid "B<cleancache> I<package> | B<src:>I<package> | I<maintainer>"
+msgstr "B<cleancache> I<paquet> | B<src:>I<paquet> | I<responsable>"
+
+#. type: =item
+#: ../scripts/bts.pl:2282
+msgid ""
+"B<cleancache from:>I<submitter> | B<tag:>I<tag> | B<usertag:>I<tag> | "
+"I<number> | B<ALL>"
+msgstr ""
+"B<cleancache from:>I<rapporteur> | B<tag:>I<étiquette> | B<usertag:"
+">I<étiquette> | I<numéro> | B<ALL>"
+
+#. type: textblock
+#: ../scripts/bts.pl:2284
+msgid ""
+"Clean the cache for the specified I<package>, I<maintainer>, etc., as "
+"described above for the B<bugs> command, or clean the entire cache if B<ALL> "
+"is specified. This is useful if you are going to have permanent network "
+"access or if the database has become corrupted for some reason. Note that "
+"for safety, this command does not default to the value of B<DEBEMAIL> or "
+"B<EMAIL>."
+msgstr ""
+"Supprimer le cache du I<paquet>, I<responsable>, etc., indiqué, comme décrit "
+"plus haut dans la commande B<bugs>, ou supprimer tout le cache si B<ALL> est "
+"indiqué. C'est utile si vous avez un accès permanent au réseau ou si la base "
+"de données a été corrompue pour une raison quelconque. Remarquez que par "
+"sécurité, la commande ne prendra pas la valeur de B<DEBEMAIL> ou B<EMAIL> "
+"par défaut."
+
+#. type: =item
+#: ../scripts/bts.pl:2333
+msgid "B<version>"
+msgstr "B<version>"
+
+#. type: textblock
+#: ../scripts/bts.pl:2335
+msgid "Display version and copyright information."
+msgstr "Afficher la version et le copyright."
+
+#. type: =item
+#: ../scripts/bts.pl:2350
+msgid "B<help>"
+msgstr "B<help>"
+
+#. type: textblock
+#: ../scripts/bts.pl:2352
+msgid ""
+"Display a short summary of commands, suspiciously similar to parts of this "
+"man page."
+msgstr ""
+"Afficher un court résumé des commandes, de manière similaire à certaines "
+"parties de cette page de manuel."
+
+#. type: SH
+#: ../scripts/bts.pl:3987 ../scripts/debuild.1:86 ../scripts/diff2patches.1:40
+#: ../scripts/pts-subscribe.1:34
+#, no-wrap
+msgid "ENVIRONMENT VARIABLES"
+msgstr "VARIABLES D'ENVIRONNEMENT"
+
+#. type: =item
+#: ../scripts/bts.pl:3991
+msgid "B<DEBEMAIL>"
+msgstr "B<DEBEMAIL>"
+
+#. type: textblock
+#: ../scripts/bts.pl:3993
+msgid ""
+"If this is set, the From: line in the email will be set to use this email "
+"address instead of your normal email address (as would be determined by "
+"B<mail>)."
+msgstr ""
+"Si cela est défini, la ligne From: du message va être configurée pour "
+"utiliser cette adresse électronique au lieu de votre adresse habituelle (qui "
+"serait déterminée par B<mail>)."
+
+#. type: =item
+#: ../scripts/bts.pl:3997
+msgid "B<DEBFULLNAME>"
+msgstr "B<DEBFULLNAME>"
+
+#. type: textblock
+#: ../scripts/bts.pl:3999
+msgid ""
+"If B<DEBEMAIL> is set, B<DEBFULLNAME> is examined to determine the full name "
+"to use; if this is not set, B<bts> attempts to determine a name from your "
+"F<passwd> entry."
+msgstr ""
+"Si B<DEBEMAIL> est définie, B<DEBFULLNAME> est examinée pour déterminer le "
+"nom complet à utiliser ; sinon B<bts> essaie de déterminer un nom à partir "
+"de votre entrée I<passwd>."
+
+#. type: =item
+#: ../scripts/bts.pl:4003
+msgid "B<BROWSER>"
+msgstr "B<BROWSER>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4005
+msgid ""
+"If set, it specifies the browser to use for the B<show> and B<bugs> "
+"options. See the description above."
+msgstr ""
+"Si elle est définie, elle indique le navigateur à utiliser pour les options "
+"B<show> et B<bugs>. Consultez la description précédente."
+
+#. type: SH
+#: ../scripts/bts.pl:4010 ../scripts/dcontrol.pl:264 ../scripts/debc.1:92
+#: ../scripts/debchange.1:392 ../scripts/debcheckout.pl:177
+#: ../scripts/debclean.1:90 ../scripts/debcommit.pl:104
+#: ../scripts/debdiff.1:169 ../scripts/debi.1:109 ../scripts/debrelease.1:105
+#: ../scripts/debrsign.1:57 ../scripts/debsign.1:106 ../scripts/debuild.1:290
+#: ../scripts/dget.pl:631 ../scripts/dpkg-depcheck.1:102
+#: ../scripts/dscverify.1:42 ../scripts/grep-excuses.1:28
+#: ../scripts/licensecheck.pl:96 ../scripts/mass-bug.pl:132
+#: ../scripts/nmudiff.1:79 ../scripts/plotchangelog.1:106
+#: ../scripts/pts-subscribe.1:42 ../scripts/rmadison.pl:293
+#: ../scripts/uscan.1:493 ../scripts/uupdate.1:88 ../scripts/who-uploads.1:50
+#, no-wrap
+msgid "CONFIGURATION VARIABLES"
+msgstr "VARIABLES DE CONFIGURATION"
+
+# NOTE: presque identique
+#. type: textblock
+#: ../scripts/bts.pl:4012 ../scripts/debcommit.pl:106
+#: ../scripts/licensecheck.pl:98 ../scripts/mass-bug.pl:134
+msgid ""
+"The two configuration files F</etc/devscripts.conf> and F<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file settings. "
+"Environment variable settings are ignored for this purpose. The currently "
+"recognised variables are:"
+msgstr ""
+"Les deux fichiers de configuration I</etc/devscripts.conf> et I<~/."
+"devscripts> sont chargés dans cet ordre par un interpréteur de commandes "
+"pour définir les variables de configuration. Des options de ligne de "
+"commande peuvent être utilisées pour écraser les paramètres des fichiers de "
+"configuration. Les paramètres des variables d'environnement sont ignorés à "
+"cette fin. Les variables actuellement reconnues sont :"
+
+#. type: =item
+#: ../scripts/bts.pl:4020
+msgid "B<BTS_OFFLINE>"
+msgstr "B<BTS_OFFLINE>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4022
+msgid ""
+"If this is set to B<yes>, then it is the same as the B<--offline> command "
+"line parameter being used. Only has an effect on the B<show> and B<bugs> "
+"commands. The default is B<no>. See the description of the B<show> command "
+"above for more information."
+msgstr ""
+"Lui attribuer la valeur B<yes> équivaut à utiliser le paramètre en ligne de "
+"commande B<--offline>. Cela n'affecte que les commandes B<show> et B<bugs>. "
+"La valeur par défaut est B<no>. Veuillez consulter la description de la "
+"commande B<show> ci-dessus pour plus d'informations."
+
+#. type: =item
+#: ../scripts/bts.pl:4027
+msgid "B<BTS_CACHE>"
+msgstr "B<BTS_CACHE>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4029
+msgid ""
+"If this is set to B<no>, then it is the same as the B<--no-cache> command "
+"line parameter being used. Only has an effect on the B<show> and B<bug> "
+"commands. The default is B<yes>. Again, see the B<show> command above for "
+"more information."
+msgstr ""
+"Lui attribuer la valeur B<no>, équivaut à utiliser le paramètre en ligne de "
+"commande B<--nocache>. Cela n'affecte que les commandes B<show> et B<bug>. "
+"La valeur par défaut est B<yes>. À nouveau, veuillez consulter la commande "
+"B<show> ci-dessus pour plus d'informations."
+
+#. type: =item
+#: ../scripts/bts.pl:4034
+msgid "B<BTS_CACHE_MODE=>{B<min>,B<mbox>,B<full>}"
+msgstr "B<BTS_CACHE_MODE=>{B<min>,B<mbox>,B<full>}"
+
+#. type: textblock
+#: ../scripts/bts.pl:4036
+msgid ""
+"How much of the BTS should we mirror when we are asked to cache something? "
+"Just the minimum, or also the mbox or the whole thing? The default is "
+"B<min>, and it has the same meaning as the B<--cache-mode> command line "
+"parameter. Only has an effect on the cache. See the B<cache> command for "
+"more information."
+msgstr ""
+"Quantité de données du BTS à récupérer quand le cache est demandé. Seulement "
+"le minimum, ou alors la mbox ou bien encore le tout. La valeur par défaut "
+"est B<min>, ce qui a la même signification que le paramètre de l'option de "
+"ligne commande B<--cache-mode>. Cela n'affecte que le cache. Consultez la "
+"documentation de la commande B<cache> pour plus d'informations."
+
+#. type: =item
+#: ../scripts/bts.pl:4042
+msgid "B<BTS_FORCE_REFRESH>"
+msgstr "B<BTS_FORCE_REFRESH>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4044
+msgid ""
+"If this is set to B<yes>, then it is the same as the B<--force-refresh> "
+"command line parameter being used. Only has an effect on the B<cache> "
+"command. The default is B<no>. See the B<cache> command for more "
+"information."
+msgstr ""
+"Lui attribuer la valeur B<yes>, équivaut à utiliser le paramètre en ligne de "
+"commande B<--force-refresh>. Cela n'affecte que la commande B<cache>. La "
+"valeur par défaut est B<no>. Veuillez consulter la commande B<cache> pour "
+"plus d'informations."
+
+#. type: =item
+#: ../scripts/bts.pl:4049
+msgid "B<BTS_MAIL_READER>"
+msgstr "B<BTS_MAIL_READER>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4051
+msgid ""
+"If this is set, specifies a mail reader to use instead of B<mutt>. Same as "
+"the B<--mailreader> command line option."
+msgstr ""
+"Si elle est définie, elle indique le client de messagerie à utiliser à la "
+"place de B<mutt>. Équivalent à l'option de ligne de commande B<--mailreader>."
+
+#. type: TP
+#: ../scripts/bts.pl:4054 ../scripts/mass-bug.pl:142 ../scripts/nmudiff.1:104
+#, no-wrap
+msgid "B<BTS_SENDMAIL_COMMAND>"
+msgstr "B<BTS_SENDMAIL_COMMAND>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4056 ../scripts/mass-bug.pl:144
+msgid ""
+"If this is set, specifies a B<sendmail> command to use instead of F</usr/"
+"sbin/sendmail>. Same as the B<--sendmail> command line option."
+msgstr ""
+"Si elle est définie, elle indique la commande d'envoi de message à utiliser "
+"à la place de F</usr/sbin/sendmail>. Équivaut à l'option de ligne de "
+"commande B<--sendmail>."
+
+#. type: =item
+#: ../scripts/bts.pl:4059
+msgid "B<BTS_ONLY_NEW>"
+msgstr "B<BTS_ONLY_NEW>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4061
+msgid ""
+"Download only new bugs when caching. Do not check for updates in bugs we "
+"already have. The default is B<no>. Same as the B<--only-new> command line "
+"option."
+msgstr ""
+"Ne télécharger que les nouveaux bogues pour la mise en cache. Ne pas "
+"vérifier si les bogues déjà téléchargés ont été modifiés. La valeur par "
+"défaut est B<no>. Identique à l'option en ligne de commande B<--only-new>."
+
+#. type: =item
+#: ../scripts/bts.pl:4065
+msgid "B<BTS_SMTP_HOST>"
+msgstr "B<BTS_SMTP_HOST>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4067
+msgid ""
+"If this is set, specifies an SMTP host to use for sending mail rather than "
+"using the B<sendmail> command. Same as the B<--smtp-host> command line "
+"option."
+msgstr ""
+"Si elle est définie, elle indique un serveur SMTP à utiliser pour envoyer "
+"les courriers au lieu d'utiliser la commande B<sendmail>. Équivaut à "
+"l'option en ligne de commande B<--smtp-host>."
+
+#. type: textblock
+#: ../scripts/bts.pl:4071
+msgid ""
+"Note that this option takes priority over B<BTS_SENDMAIL_COMMAND> if both "
+"are set, unless the B<--sendmail> option is used."
+msgstr ""
+"Remarquez que cette option a la priorité par rapport à "
+"B<BTS_SENDMAIL_COMMAND> si les deux sont utilisées, à moins que l'option B<--"
+"sendmail> soit utilisée."
+
+#. type: =item
+#: ../scripts/bts.pl:4074
+msgid "B<BTS_SMTP_AUTH_USERNAME>, B<BTS_SMTP_AUTH_PASSWORD>"
+msgstr "B<BTS_SMTP_AUTH_USERNAME>, B<BTS_SMTP_AUTH_PASSWORD>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4076
+msgid ""
+"If these options are set, then it is the same as the B<--smtp-username> and "
+"B<--smtp-password> options being used."
+msgstr ""
+"Définir ces options équivaut à utiliser les options B<--smtp-username> et "
+"B<--smtp-password>."
+
+#. type: =item
+#: ../scripts/bts.pl:4079
+msgid "B<BTS_SMTP_HELO>"
+msgstr "B<BTS_SMTP_HELO>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4081
+msgid "Same as the B<--smtp-helo> command line option."
+msgstr "Identique à l'option en ligne de commande B<--smtp-helo>."
+
+#. type: =item
+#: ../scripts/bts.pl:4083
+msgid "B<BTS_INCLUDE_RESOLVED>"
+msgstr "B<BTS_INCLUDE_RESOLVED>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4085
+msgid ""
+"If this is set to B<no>, then it is the same as the B<--no-include-resolved> "
+"command line parameter being used. Only has an effect on the B<cache> "
+"command. The default is B<yes>. See the B<cache> command for more "
+"information."
+msgstr ""
+"Lui attribuer la valeur B<no> équivaut à utiliser le paramètre en ligne de "
+"commande B<--no-include-resolved>. Cela n'affecte que la commande B<cache>. "
+"La valeur par défaut est B<yes>. Veuillez consulter la commande B<cache> "
+"pour plus d'informations."
+
+#. type: =item
+#: ../scripts/bts.pl:4090
+msgid "B<BTS_SUPPRESS_ACKS>"
+msgstr "B<BTS_SUPPRESS_ACKS>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4092
+msgid ""
+"If this is set to B<yes>, then it is the same as the B<--no-ack> command "
+"line parameter being used. The default is B<no>."
+msgstr ""
+"Lui attribuer la valeur B<yes> équivaut à utiliser l'option B<--no-ack>. La "
+"valeur par défaut est B<no>."
+
+#. type: =item
+#: ../scripts/bts.pl:4095
+msgid "B<BTS_INTERACTIVE>"
+msgstr "B<BTS_INTERACTIVE>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4097
+msgid ""
+"If this is set to B<yes> or B<force>, then it is the same as the B<--"
+"interactive> or B<--force-interactive> command line parameter being used. "
+"The default is B<no>."
+msgstr ""
+"Lui attribuer la valeur B<yes> ou B<force> équivaut à utiliser l'option B<--"
+"interactive> ou B<--force-interactive>. La valeur par défaut est B<no>."
+
+#. type: =item
+#: ../scripts/bts.pl:4101
+msgid "B<BTS_DEFAULT_CC>"
+msgstr "B<BTS_DEFAULT_CC>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4103
+msgid ""
+"Specify a list of e-mail addresses to which a carbon copy of the generated e-"
+"mail to the control bot should automatically be sent."
+msgstr ""
+"Indiquer une liste d'adresses électroniques auxquelles une copie conforme "
+"des courriers, créés pour le robot « control », doit être envoyée "
+"automatiquement."
+
+#. type: =item
+#: ../scripts/bts.pl:4106
+msgid "B<BTS_SERVER>"
+msgstr "B<BTS_SERVER>"
+
+#. type: textblock
+#: ../scripts/bts.pl:4108
+msgid ""
+"Specify the name of a debbugs server which should be used instead of bugs."
+"debian.org."
+msgstr ""
+"Indiquer le nom d'un serveur debbugs qui doit être utilisé à la place de "
+"bugs.debian.org."
+
+#. type: textblock
+#: ../scripts/bts.pl:4115
+msgid ""
+"Please see L<https://www.debian.org/Bugs/server-control> for more details on "
+"how to control the BTS using emails and L<https://www.debian.org/Bugs/> for "
+"more information about the BTS."
+msgstr ""
+"Veuillez consulter L<https://www.debian.org/Bugs/server-control> pour plus "
+"de détails sur comment contrôler le BTS avec des courriers et L<https://www."
+"debian.org/Bugs/> pour plus d'informations sur le BTS."
+
+#. type: textblock
+#: ../scripts/bts.pl:4119
+msgid "querybts(1), reportbug(1)"
+msgstr "B<querybts>(1), B<reportbug>(1)"
+
+#. type: =head1
+#: ../scripts/bts.pl:4121 ../scripts/chdist.pl:119 ../scripts/debsnap.1:126
+#: ../scripts/mass-bug.pl:515 ../scripts/tagpending.pl:430
+#, no-wrap
+msgid "COPYRIGHT"
+msgstr "COPYRIGHT"
+
+#. type: textblock
+#: ../scripts/bts.pl:4123
+msgid ""
+"This program is Copyright (C) 2001-2003 by Joey Hess <joeyh@debian.org>. "
+"Many modifications have been made, Copyright (C) 2002-2005 Julian Gilbey "
+"<jdg@debian.org> and Copyright (C) 2007 Josh Triplett <josh@freedesktop.org>."
+msgstr ""
+"Ce programme est Copyright (C) 2001-2003 by Joey Hess <joeyh@debian.org>. De "
+"nombreuses modifications ont été effectuées, Copyright (C) 2002-2005 Julian "
+"Gilbey <jdg@debian.org> et Copyright (C) 2007 Josh Triplett "
+"<josh@freedesktop.org>."
+
+#. type: textblock
+#: ../scripts/bts.pl:4128 ../scripts/chdist.pl:124 ../scripts/mass-bug.pl:519
+msgid ""
+"It is licensed under the terms of the GPL, either version 2 of the License, "
+"or (at your option) any later version."
+msgstr ""
+"Il est publié sous les termes de la Licence Publique Générale (GPL) version "
+"2 ou toute version ultérieure (à votre discrétion)."
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:20
+msgid ""
+"build-rdeps - find packages that depend on a specific package to build "
+"(reverse build depends)"
+msgstr ""
+"build-rdeps - Trouver les paquets qui dépendent d'un paquet donné pour leur "
+"construction"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:24
+msgid "B<build-rdeps> I<package>"
+msgstr "B<build-rdeps> I<paquet>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:28
+msgid ""
+"B<build-rdeps> searches for all packages that build-depend on the specified "
+"package."
+msgstr ""
+"B<build-rdeps> recherche tous les paquets qui dépendent du paquet indiqué "
+"pour leur construction (« reverse build depends » : dépendances de "
+"construction inverses)"
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:34
+msgid "B<-u>, B<--update>"
+msgstr "B<-u>, B<--update>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:36
+msgid "Run apt-get update before searching for build-depends."
+msgstr ""
+"Exécuter « apt-get update » avant de chercher les dépendances de "
+"construction."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:38
+msgid "B<-s>, B<--sudo>"
+msgstr "B<-s>, B<--sudo>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:40
+msgid "Use sudo when running apt-get update. Has no effect if -u is omitted."
+msgstr ""
+"Utiliser sudo pour l'exécution de « apt-get update ». Ça n'a aucun effet si -"
+"u n'est pas utilisée."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:42
+msgid "B<--distribution>"
+msgstr "B<--distribution>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:44
+msgid "Select another distribution, which is searched for build-depends."
+msgstr ""
+"Sélectionner une autre distribution, dans laquelle seront recherchées les "
+"dépendances de construction."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:46
+msgid "B<--only-main>"
+msgstr "B<--only-main>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:48
+msgid "Ignore contrib and non-free"
+msgstr "Ignorer contrib et non-free"
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:50
+msgid "B<--exclude-component>"
+msgstr "B<--exclude-component>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:52
+msgid "Ignore the given component (e.g. main, contrib, non-free)."
+msgstr ""
+"Ignorer les composantes indiquées (par exemple, main, contrib, non-free)."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:54
+msgid "B<--origin>"
+msgstr "B<--origin>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:56
+msgid "Restrict the search to only the specified origin (such as \"Debian\")."
+msgstr ""
+"Restreindre la recherche à l'origine indiquée seulement (par exemple "
+"« Debian »)."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:58
+msgid "B<-m>, B<--print-maintainer>"
+msgstr "B<-m>, B<--print-maintainer>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:60
+msgid "Print the value of the maintainer field for each package."
+msgstr "Afficher le responsable (le champ Maintainer) pour tous les paquets."
+
+#. type: =item
+#: ../scripts/build-rdeps.pl:62 ../scripts/dcontrol.pl:250
+msgid "B<-d>, B<--debug>"
+msgstr "B<-d>, B<--debug>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:64
+msgid "Run the debug mode"
+msgstr "Exécuter en mode débogue."
+
+#. type: TP
+#: ../scripts/build-rdeps.pl:66 ../scripts/cowpoke.1:131
+#: ../scripts/debclean.1:84 ../scripts/diff2patches.1:22
+#: ../scripts/grep-excuses.1:22 ../scripts/mass-bug.pl:117
+#: ../scripts/nmudiff.1:73 ../scripts/plotchangelog.1:92
+#: ../scripts/uscan.1:487
+#, no-wrap
+msgid "B<--help>"
+msgstr "B<--help>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:68
+msgid "Show the usage information."
+msgstr "Afficher les informations sur l'utilisation."
+
+#. type: TP
+#: ../scripts/build-rdeps.pl:70 ../scripts/chdist.pl:49
+#: ../scripts/cowpoke.1:135 ../scripts/debchange.1:389
+#: ../scripts/debclean.1:87 ../scripts/debrelease.1:102
+#: ../scripts/debsign.1:103 ../scripts/debsnap.1:61
+#: ../scripts/dep3changelog.1:19 ../scripts/diff2patches.1:25
+#: ../scripts/dscverify.1:39 ../scripts/grep-excuses.1:25
+#: ../scripts/mass-bug.pl:121 ../scripts/nmudiff.1:76
+#: ../scripts/plotchangelog.1:95 ../scripts/pts-subscribe.1:31
+#: ../scripts/rmadison.pl:280 ../scripts/uscan.1:490 ../scripts/uupdate.1:85
+#: ../scripts/who-uploads.1:47
+#, no-wrap
+msgid "B<--version>"
+msgstr "B<--version>"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:72
+msgid "Show the version information."
+msgstr "Afficher les informations sur la version."
+
+#. type: SH
+#: ../scripts/build-rdeps.pl:76 ../scripts/debpkg.1:12
+#, no-wrap
+msgid "REQUIREMENTS"
+msgstr "CONDITIONS D'EXÉCUTION"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:78
+msgid ""
+"The tool requires apt Sources files to be around for the checked "
+"components. In the default case this means that in /var/lib/apt/lists files "
+"need to be around for main, contrib and non-free."
+msgstr ""
+"L'outil a besoin des fichiers Sources d'APT présents pour les composantes "
+"vérifiées. Par défaut, cela signifie que les fichiers de /var/lib/apt/lists "
+"doivent être présents pour main, contrib et non-free."
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:82
+msgid ""
+"In practice this means one needs to add one deb-src line for each component, "
+"e.g."
+msgstr ""
+"En pratique, cela signifie que la ligne deb-src doit être ajoutée pour "
+"chaque composante, par exemple :"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:85
+msgid "deb-src http://<mirror>/debian <dist> main contrib non-free"
+msgstr "deb-src http://<miroir>/debian <dist> main contrib non-free"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:87
+msgid ""
+"and run apt-get update afterwards or use the update option of this tool."
+msgstr ""
+"et d'exécuter ensuite « apt-get update » ou d'utiliser l'option B<--update> "
+"de cet outil."
+
+#. type: =head1
+#: ../scripts/build-rdeps.pl:336 ../scripts/debcommit.pl:901
+#: ../scripts/desktop2menu.pl:43 ../scripts/licensecheck.pl:120
+#: ../scripts/namecheck.pl:36 ../scripts/svnpath.pl:89
+#: ../scripts/transition-check.pl:72
+msgid "LICENSE"
+msgstr "LICENCE"
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:338
+msgid ""
+"This code is copyright by Patrick Schoenfeld <schoenfeld@debian.org>, all "
+"rights reserved. This program comes with ABSOLUTELEY NO WARRANTY. You are "
+"free to redistribute this code under the terms of the GNU General Public "
+"License, version 2 or later."
+msgstr ""
+"Ce code est copyright Patrick Schoenfeld <schoenfeld@debian.org>, tous "
+"droits réservés. Ce programme est fourni SANS AUCUNE GARANTIE. Vous êtes "
+"libre de redistribuer ce code sous les termes de la licence publique "
+"générale GNU (GNU General Public Licence), version 2 ou ultérieure."
+
+#. type: textblock
+#: ../scripts/build-rdeps.pl:346
+msgid "Patrick Schoenfeld <schoenfeld@debian.org>"
+msgstr "Patrick Schoenfeld <schoenfeld@debian.org>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:20
+msgid "chdist - script to easily play with several distributions"
+msgstr "chdist - Script pour facilement jouer avec différentes distributions"
+
+#. type: textblock
+#: ../scripts/chdist.pl:24
+msgid "B<chdist> [I<options>] [I<command>] [I<command parameters>]"
+msgstr "B<chdist> [I<options>] [I<commande>] [I<paramètres de la commande>]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:28
+msgid ""
+"B<chdist> is a rewrite of what used to be known as 'MultiDistroTools' (or "
+"mdt). Its use is to create 'APT trees' for several distributions, making it "
+"easy to query the status of packages in other distribution without using "
+"chroots, for instance."
+msgstr ""
+"B<chdist> est une réécriture de ce qu'était « MultiDistroTools » (ou "
+"« mdt »). Ce programme permet de créer des « arbres APT » pour différentes "
+"distributions, facilitant la récupération du statut de paquets d'autres "
+"distributions sans, par exemple, utiliser de chroot."
+
+#. type: textblock
+#: ../scripts/chdist.pl:39 ../scripts/mass-bug.pl:119
+msgid "Provide a usage message."
+msgstr "Afficher un message sur l'utilisation."
+
+#. type: =item
+#: ../scripts/chdist.pl:41
+msgid "B<-d>, B<--data-dir> I<DIR>"
+msgstr "B<-d>, B<--data-dir> I<REP>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:43
+msgid "Choose data directory (default: F<$HOME/.chdist/>)."
+msgstr "Choisir le répertoire des données (par défaut : F<$HOME/.chdist/>)."
+
+#. type: =item
+#: ../scripts/chdist.pl:45
+msgid "B<-a>, B<--arch> I<ARCH>"
+msgstr "B<-a>, B<--arch> I<ARCH>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:47
+msgid "Choose architecture (default: `B<dpkg --print-architecture>`)."
+msgstr ""
+"Choisir l'architecture (par défaut : « B<dpkg> B<--print-architecture> »)."
+
+#. type: Plain text
+#: ../scripts/chdist.pl:51 ../scripts/deb-reversion.dbk:239
+#: ../scripts/mass-bug.pl:123 ../scripts/uscan.1:493
+msgid "Display version information."
+msgstr "Afficher les informations sur la version."
+
+#. type: =item
+#: ../scripts/chdist.pl:59
+msgid "B<create> I<DIST> [I<URL> I<RELEASE> I<SECTIONS>]"
+msgstr "B<create> I<DIST> [I<URL> I<VERSION> I<SECTIONS>]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:61
+msgid "Prepare a new tree named I<DIST>"
+msgstr "Préparer une nouvelle arborescence nommée I<DIST>."
+
+#. type: =item
+#: ../scripts/chdist.pl:63
+msgid "B<apt-get> I<DIST> <B<update>|B<source>|...>"
+msgstr "B<apt-get> I<DIST> <B<update>|B<source>|...>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:65
+msgid "Run B<apt-get> inside I<DIST>"
+msgstr "Exécuter B<apt-get> dans I<DIST>."
+
+#. type: =item
+#: ../scripts/chdist.pl:67
+msgid "B<apt-cache> I<DIST> <B<show>|B<showsrc>|...>"
+msgstr "B<apt-cache> I<DIST> <B<show>|B<showsrc>|...>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:69
+msgid "Run B<apt-cache> inside I<DIST>"
+msgstr "Exécuter B<apt-cache> dans I<DIST>."
+
+#. type: =item
+#: ../scripts/chdist.pl:71
+msgid "B<apt-rdepends> I<DIST> [...]"
+msgstr "B<apt-rdepends> I<DIST> [...]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:73
+msgid "Run B<apt-rdepends> inside I<DIST>"
+msgstr "Exécuter B<apt-rdepends> dans I<DIST>."
+
+#. type: =item
+#: ../scripts/chdist.pl:75
+msgid "B<src2bin> I<DIST SRCPKG>"
+msgstr "B<src2bin> I<DIST PQTSRC>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:77
+msgid "List binary packages for I<SRCPKG> in I<DIST>"
+msgstr "Afficher la liste des paquets binaires de I<PQTSRC> dans I<DIST>."
+
+#. type: =item
+#: ../scripts/chdist.pl:79
+msgid "B<bin2src> I<DIST BINPKG>"
+msgstr "B<bin2src> I<DIST PQTBIN>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:81
+msgid "List source package for I<BINPKG> in I<DIST>"
+msgstr "Afficher la liste des paquets source de I<PQTBIN> dans I<DIST>."
+
+#. type: =item
+#: ../scripts/chdist.pl:83
+msgid "B<compare-packages> I<DIST1 DIST2> [I<DIST3>, ...]"
+msgstr "B<compare-packages> I<DIST1 DIST2> [I<DIST3>, ...]"
+
+#. type: =item
+#: ../scripts/chdist.pl:85
+msgid "B<compare-bin-packages> I<DIST1 DIST2> [I<DIST3>, ...]"
+msgstr "B<compare-bin-packages> I<DIST1 DIST2> [I<DIST3>, ...]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:87
+msgid "List versions of packages in several I<DIST>ributions"
+msgstr ""
+"Afficher la liste des versions de paquets de plusieurs I<DIST>ributions."
+
+#. type: =item
+#: ../scripts/chdist.pl:89
+msgid "B<compare-versions> I<DIST1 DIST2>"
+msgstr "B<compare-versions> I<DIST1 DIST2>"
+
+#. type: =item
+#: ../scripts/chdist.pl:91
+msgid "B<compare-bin-versions> I<DIST1 DIST2>"
+msgstr "B<compare-bin-versions> I<DIST1 DIST2>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:93
+msgid ""
+"Same as B<compare-packages>/B<compare-bin-packages>, but also runs B<dpkg --"
+"compare-versions> and display where the package is newer."
+msgstr ""
+"Comme pour B<compare-packages>/B<compare-bin-packages>, mais exécuter "
+"également B<dpkg --compare-versions> et afficher où se trouve le paquet le "
+"plus récent."
+
+#. type: =item
+#: ../scripts/chdist.pl:96
+msgid "B<compare-src-bin-packages> I<DIST>"
+msgstr "B<compare-src-bin-packages> I<DIST>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:98
+msgid "Compare sources and binaries for I<DIST>"
+msgstr "Comparer les sources et binaires de I<DIST>."
+
+#. type: =item
+#: ../scripts/chdist.pl:100
+msgid "B<compare-src-bin-versions> I<DIST>"
+msgstr "B<compare-src-bin-versions> I<DIST>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:102
+msgid ""
+"Same as B<compare-src-bin-packages>, but also run B<dpkg --compare-versions> "
+"and display where the package is newer"
+msgstr ""
+"Comme pour B<compare-src-bin-packages>, mais exécuter également B<dpkg --"
+"compare-versions> et afficher où se trouve le paquet le plus récent."
+
+#. type: =item
+#: ../scripts/chdist.pl:105
+msgid "B<grep-dctrl-packages> I<DIST> [...]"
+msgstr "B<grep-dctrl-packages> I<DIST> [...]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:107
+msgid "Run B<grep-dctrl> on F<*_Packages> inside I<DIST>"
+msgstr "Exécuter B<grep-dctrl> sur tous les fichiers F<*_Packages> de I<DIST>."
+
+#. type: =item
+#: ../scripts/chdist.pl:109
+msgid "B<grep-dctrl-sources> I<DIST> [...]"
+msgstr "B<grep-dctrl-sources> I<DIST> [...]"
+
+#. type: textblock
+#: ../scripts/chdist.pl:111
+msgid "Run B<grep-dctrl> on F<*_Sources> inside I<DIST>"
+msgstr "Exécuter B<grep-dctrl> sur tous les fichiers F<*_Sources> de I<DIST>."
+
+#. type: =item
+#: ../scripts/chdist.pl:113
+msgid "B<list>"
+msgstr "B<list>"
+
+#. type: textblock
+#: ../scripts/chdist.pl:115
+msgid "List available I<DIST>s"
+msgstr "Afficher la liste des I<DIST>ributions disponibles."
+
+#. type: textblock
+#: ../scripts/chdist.pl:121
+msgid ""
+"This program is copyright 2007 by Lucas Nussbaum and Luk Claes. This program "
+"comes with ABSOLUTELY NO WARRANTY."
+msgstr ""
+"Ce programme est copyright 2007 par Lucas Nussbaum et Luk Claes. Ce "
+"programme est fourni SANS AUCUNE GARANTIE."
+
+#. type: TH
+#: ../scripts/checkbashisms.1:1
+#, no-wrap
+msgid "CHECKBASHISMS"
+msgstr "CHECKBASHISMS"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:4
+msgid "checkbashisms - check for bashisms in /bin/sh scripts"
+msgstr ""
+"checkbashisms - Rechercher des constructions spécifiques à bash dans les "
+"scripts /bin/sh"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:6
+msgid "B<checkbashisms> I<script> ..."
+msgstr "B<checkbashisms> I<script> ..."
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:8
+msgid "B<checkbashisms --help>|B<--version>"
+msgstr "B<checkbashisms --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:14
+msgid ""
+"B<checkbashisms>, based on one of the checks from the B<lintian> system, "
+"performs basic checks on I</bin/sh> shell scripts for the possible presence "
+"of bashisms. It takes the names of the shell scripts on the command line, "
+"and outputs warnings if possible bashisms are detected."
+msgstr ""
+"B<checkbashisms> se base sur l'un des tests de B<lintian> pour effectuer des "
+"tests simples sur des scripts de type I</bin/sh> pour détecter la présence "
+"de possibles constructions spécifiques à bash [ NdT : bashism en anglais ]. "
+"Il prend en argument le nom des scripts et affiche des avertissements "
+"lorsqu'une telle construction est détectée."
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:19
+msgid ""
+"Note that the definition of a bashism in this context roughly equates to \"a "
+"shell feature that is not required to be supported by POSIX\"; this means "
+"that some issues flagged may be permitted under optional sections of POSIX, "
+"such as XSI or User Portability."
+msgstr ""
+"Remarquez que la définition d'une construction spécifique à bash dans ce "
+"contexte correspond grossièrement à « une fonctionnalité d'un interpréteur "
+"de commandes qu'il n'est pas nécessaire de gérer d'après POSIX » ; cela "
+"signifie que certains des points relevés peuvent être permis dans des "
+"sections optionnelles de POSIX, comme XSI ou « User Portability »."
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:23
+msgid ""
+"In cases where POSIX and Debian Policy disagree, B<checkbashisms> by default "
+"allows extensions permitted by Policy but may also provide options for "
+"stricter checking."
+msgstr ""
+"Dans les cas où POSIX et la Charte Debian sont en désaccord, "
+"B<checkbashisms> autorise par défaut les extensions permises par la Charte "
+"mais fournit des options pour une vérification plus stricte."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:24 ../scripts/debchange.1:386
+#: ../scripts/debdiff.1:157 ../scripts/debrelease.1:99
+#: ../scripts/debsign.1:100 ../scripts/dep3changelog.1:16
+#: ../scripts/dscverify.1:36 ../scripts/pts-subscribe.1:28
+#: ../scripts/rc-alert.1:21 ../scripts/uupdate.1:82 ../scripts/whodepends.1:11
+#: ../scripts/who-uploads.1:44 ../scripts/who-permits-upload.pl:65
+#: ../scripts/wnpp-alert.1:23 ../scripts/wnpp-check.1:17
+#, no-wrap
+msgid "B<--help>, B<-h>"
+msgstr "B<--help>, B<-h>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:27 ../scripts/debdiff.1:160
+#: ../scripts/mk-build-deps.pl:81 ../scripts/rc-alert.1:24
+#: ../scripts/wnpp-alert.1:26 ../scripts/wnpp-check.1:20
+msgid "Show a summary of options."
+msgstr "Afficher un résumé des options."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:27
+#, no-wrap
+msgid "B<--newline>, B<-n>"
+msgstr "B<--newline>, B<-n>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:30
+msgid ""
+"Check for \"B<echo -n>\" usage (non POSIX but required by Debian Policy "
+"10.4.)"
+msgstr ""
+"Vérifier l'utilisation de « B<echo -n> » (pas dans POSIX, mais permise par "
+"la Charte Debian, section 10.4)."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:30
+#, no-wrap
+msgid "B<--posix>, B<-p>"
+msgstr "B<--posix>, B<-p>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:34
+msgid ""
+"Check for issues which are non POSIX but required to be supported by Debian "
+"Policy 10.4 (implies B<-n>)."
+msgstr ""
+"Vérifier les points qui ne sont pas POSIX, mais dont la prise en charge est "
+"exigée par la Charte Debian, section 10.4 (implique B<-n>)."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:34
+#, no-wrap
+msgid "B<--force>, B<-f>"
+msgstr "B<--force>, B<-f>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:39
+msgid ""
+"Force each script to be checked, even if it would normally not be (for "
+"instance, it has a bash or non POSIX shell shebang or appears to be a shell "
+"wrapper)."
+msgstr ""
+"Forcer la vérification de tous les scripts, même s'ils ne l'auraient pas été "
+"normalement (par exemple parce qu'ils ont un shebang qui demande une "
+"exécution par bash ou un autre shell non POSIX ou ressemble à un wrapper "
+"shell)."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:39
+#, no-wrap
+msgid "B<--extra>, B<-x>"
+msgstr "B<--extra>, B<-x>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:46
+msgid ""
+"Highlight lines which, whilst they do not contain bashisms, may be useful in "
+"determining whether a particular issue is a false positive which may be "
+"ignored. For example, the use of \"B<$BASH_ENV>\" may be preceded by "
+"checking whether \"B<$BASH>\" is set."
+msgstr ""
+"Met en évidence les lignes qui, même si elles ne contiennent pas de "
+"construction propre à bash, peuvent être utiles pour déterminer si certains "
+"problèmes particuliers sont des faux positifs qui peuvent être ignorés. Par "
+"exemple, l'utilisation de « B<$BASH_ENV> » peut être précédée d'une "
+"vérification pour s'assurer que « B<$BASH> » est définie."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:46 ../scripts/debdiff.1:160
+#: ../scripts/manpage-alert.1:17 ../scripts/rc-alert.1:24
+#: ../scripts/whodepends.1:14 ../scripts/wnpp-alert.1:26
+#: ../scripts/wnpp-check.1:20
+#, no-wrap
+msgid "B<--version>, B<-v>"
+msgstr "B<--version>, B<-v>"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:49 ../scripts/debdiff.1:163
+#: ../scripts/getbuildlog.1:31 ../scripts/grep-excuses.1:28
+#: ../scripts/manpage-alert.1:20 ../scripts/mk-build-deps.pl:85
+#: ../scripts/rc-alert.1:27 ../scripts/whodepends.1:17
+#: ../scripts/wnpp-alert.1:29 ../scripts/wnpp-check.1:23
+msgid "Show version and copyright information."
+msgstr "Affiche la version et le copyright."
+
+#. type: SH
+#: ../scripts/checkbashisms.1:49 ../scripts/debdiff.1:213
+#, no-wrap
+msgid "EXIT VALUES"
+msgstr "VALEURS DE RETOUR"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:53
+msgid ""
+"The exit value will be 0 if no possible bashisms or other problems were "
+"detected. Otherwise it will be the sum of the following error values:"
+msgstr ""
+"La valeur de retour est 0 si aucune construction spécifique à bash ou autre "
+"problème n'a été détecté. Sinon, la somme des erreurs est renvoyée. Les "
+"erreurs sont pondérées de la façon suivante :"
+
+#. type: TP
+#: ../scripts/checkbashisms.1:53 ../scripts/dscextract.1:24
+#: ../scripts/uscan.1:556 ../scripts/wnpp-check.1:29
+#, no-wrap
+msgid "1"
+msgstr "1"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:56
+msgid "A possible bashism was detected."
+msgstr "Une construction probablement spécifique à bash a été détectée."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:56 ../scripts/dscextract.1:27
+#, no-wrap
+msgid "2"
+msgstr "2"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:60
+msgid ""
+"A file was skipped for some reason, for example, because it was unreadable "
+"or not found. The warning message will give details."
+msgstr ""
+"Un fichier a été ignoré, par exemple parce qu'il n'était pas lisible ou n'a "
+"pas été trouvé. Le message d'erreur donnera des précisions."
+
+#. type: TP
+#: ../scripts/checkbashisms.1:60
+#, no-wrap
+msgid "4"
+msgstr "4"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:63
+msgid "No bashisms were detected in a bash script."
+msgstr ""
+"Aucune construction spécifique à bash n'a été détectée dans un script bash."
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:65
+msgid "B<lintian>(1)"
+msgstr "B<lintian>(1)"
+
+#. type: Plain text
+#: ../scripts/checkbashisms.1:68
+msgid ""
+"B<checkbashisms> was originally written as a shell script by Yann Dirson "
+"E<lt>I<dirson@debian.org>E<gt> and rewritten in Perl with many more features "
+"by Julian Gilbey E<lt>I<jdg@debian.org>E<gt>."
+msgstr ""
+"B<checkbashisms> a été initialement écrit sous forme de script shell par "
+"Yann Dirson E<lt>I<dirson@debian.org>E<gt> et a été réécrit en Perl avec "
+"beaucoup plus de fonctionnalités par Julian Gilbey E<lt>I<jdg@debian."
+"org>E<gt>."
+
+#. type: TH
+#: ../scripts/cowpoke.1:5
+#, no-wrap
+msgid "COWPOKE"
+msgstr "COWPOKE"
+
+#. type: TH
+#: ../scripts/cowpoke.1:5
+#, no-wrap
+msgid "April 28, 2008"
+msgstr "28 avril 2008"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:20
+msgid "cowpoke - Build a Debian source package in a remote cowbuilder instance"
+msgstr ""
+"cowpoke - Construire un paquet source Debian dans une instance de cowbuilder "
+"distante"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:23
+msgid "B<cowpoke> [I<options>]I< packagename.dsc>"
+msgstr "B<cowpoke> [I<options>]I< paquet.dsc>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:27
+msgid ""
+"Uploads a Debian source package to a B<cowbuilder> host and builds it, "
+"optionally also signing and uploading the result to an incoming queue."
+msgstr ""
+"Envoyer un paquet source Debian à un hôte B<cowbuilder> et construire le "
+"paquet. Le paquet résultant peut également être signé et envoyé dans une "
+"file d'attente."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:31 ../scripts/debsnap.1:28
+msgid "The following options are available:"
+msgstr "Les options suivantes sont disponibles :"
+
+#. type: TP
+#: ../scripts/cowpoke.1:32
+#, no-wrap
+msgid "B<--arch=>I<architecture>"
+msgstr "B<--arch=>I<architecture>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:38
+msgid ""
+"Specify the Debian architecture(s) to build for. A space separated list of "
+"architectures may be used to build for all of them in a single pass. Valid "
+"arch names are those returned by B<dpkg-architecture>(1) for "
+"B<DEB_BUILD_ARCH>."
+msgstr ""
+"Indiquer la ou les architectures Debian pour lesquelles le paquet doit être "
+"construit. Une liste d'architectures séparées par des espaces peut être "
+"utilisée pour construire le paquet pour toutes ces architectures en une "
+"seule passe. Les noms d'architecture supportés sont ceux renvoyés par B<dpkg-"
+"architecture>(1) pour B<DEB_BUILD_ARCH>."
+
+#. type: TP
+#: ../scripts/cowpoke.1:39
+#, no-wrap
+msgid "B<--dist=>I<distribution>"
+msgstr "B<--dist=>I<distribution>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:47
+msgid ""
+"Specify the Debian distribution(s) to build for. A space separated list of "
+"distributions may be used to build for all of them in a single pass. Either "
+"codenames (such as B<sid>, or B<squeeze>) or distribution names (such as "
+"B<unstable>, or B<experimental>) may be used, but you should usually stick "
+"to using one or the other consistently as this name may be used in file "
+"paths and to locate old packages for comparison reporting."
+msgstr ""
+"Indiquer la ou les distributions Debian pour lesquelles le paquet doit être "
+"construit. Une liste de distributions séparées par des espaces peut être "
+"utilisée pour construire le paquet pour toutes ces distributions en une "
+"seule passe. Des noms de code (comme B<sid> ou B<squeeze>) ou des noms de "
+"distribution (comme B<unstable> ou B<experimental>) peuvent être utilisés, "
+"mais vous devriez toujours utiliser un type de noms ou l'autre parce que "
+"c'est ce nom qui est utilisé pour les chemins de fichier et pour trouver les "
+"anciens paquets utilisés pour les rapports de comparaison."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:55
+msgid ""
+"It is now also possible to use locally defined names with this option, when "
+"used in conjunction with the B<BASE_DIST> option in a configuration file. "
+"This permits the maintenance and use of specially configured build chroots, "
+"which can source package dependencies from the backports archives or a local "
+"repository, or have other unusual configuration options set, without "
+"polluting the chroots you use for clean package builds intended for upload "
+"to the main repositories. See the description of B<BASE_DIST> below."
+msgstr ""
+"Utiliser des noms définis localement est maintenant aussi possible avec "
+"cette option, quand elle est utilisée conjointement à l’option B<BASE_DIST> "
+"dans un fichier de configuration. Cela permet la maintenance et "
+"l’utilisation de chroots de construction configurés spécialement, afin par "
+"exemple de fournir les dépendances de paquet des archives de rétroportages "
+"ou d’un dépôt local, ou de définir des options de configuration non "
+"habituelles, sans polluer les chroots propres utilisés pour les "
+"constructions de paquet à destination des dépôts principaux. Consultez la "
+"description de B<BASE_DIST> ci-dessous."
+
+#. type: TP
+#: ../scripts/cowpoke.1:56
+#, no-wrap
+msgid "B<--buildd=>I<host>"
+msgstr "B<--buildd=>I<hôte>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:59
+msgid "Specify the remote host to build on."
+msgstr "Indiquer l'hôte distant sur lequel se fera la construction."
+
+#. type: TP
+#: ../scripts/cowpoke.1:60
+#, no-wrap
+msgid "B<--buildd-user=>I<name>"
+msgstr "B<--buildd-user=>I<nom>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:63
+msgid "Specify the remote user to build as."
+msgstr "Indiquer l'utilisateur distant à utiliser pour la construction."
+
+#. type: TP
+#: ../scripts/cowpoke.1:64 ../scripts/debchange.1:194
+#, no-wrap
+msgid "B<--create>"
+msgstr "B<--create>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:69
+msgid ""
+"Create the remote B<cowbuilder> root if it does not already exist. If this "
+"option is not passed it is an error for the specified B<--dist> or B<--arch> "
+"to not have an existing B<cowbuilder> root in the expected location."
+msgstr ""
+"Créer la racine B<cowbuilder> distante si elle n'existe pas encore. Si cette "
+"option n'est pas fournie, une distribution ou architecture (indiquées par "
+"B<--dist> ou B<--arch>) qui n'aurait pas de racine B<cowbuilder> sera "
+"considérée comme une erreur."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:74
+msgid ""
+"The B<--buildd-user> must have permission to create the B<RESULT_DIR> on the "
+"build host, or an admin with the necessary permission must first create it "
+"and give that user (or some group they are in) write access to it, for this "
+"option to succeed."
+msgstr ""
+"L’utilisateur indiqué par B<--buildd-user> doit avoir le droit de créer "
+"B<RESULT_DIR> sur l’hôte de construction, sinon un administrateur avec les "
+"droits nécessaires doit d’abord le créer et donner à cet utilisateur (ou à "
+"un groupe dont il fait partie) accès en écriture à ce répertoire, afin que "
+"cette option réussisse."
+
+#. type: TP
+#: ../scripts/cowpoke.1:75
+#, no-wrap
+msgid "B<--return=>[I<path>]"
+msgstr "B<--return=>[I<chemin>]"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:79
+msgid ""
+"Copy results of the build to I<path>. If I<path> is not specified, then "
+"return them to the current directory. The given I<path> must exist, it will "
+"not be created."
+msgstr ""
+"Copier les fichiers résultant de la construction vers I<chemin>. Si aucun "
+"I<chemin> n'est indiqué, ils sont alors renvoyés vers le répertoire actuel. "
+"Le I<chemin> donné doit exister, il ne sera pas créé."
+
+#. type: TP
+#: ../scripts/cowpoke.1:80
+#, no-wrap
+msgid "B<--no-return>"
+msgstr "B<--no-return>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:84
+msgid ""
+"Do not copy results of the build to B<RETURN_DIR> (overriding a path set for "
+"it in the configuration files)."
+msgstr ""
+"Ne pas copier le résultat de la construction vers B<RETURN_DIR> (écrase le "
+"chemin configuré dans les fichiers de configuration)."
+
+#. type: TP
+#: ../scripts/cowpoke.1:85
+#, no-wrap
+msgid "B<--dpkg-opts=>I<'opt1 opt2 ...'>"
+msgstr "B<--dpkg-opts=>I<'opt1 opt2 ...'>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:90
+msgid ""
+"Specify additional options to be passed to B<dpkg-buildpackage>(1). "
+"Multiple options are delimited with spaces. This will override any options "
+"specified in B<DEBBUILDOPTS> in the build host's I<pbuilderrc>."
+msgstr ""
+"Indiquer des options supplémentaires à fournir à B<dpkg-buildpackage>(1). "
+"les différentes options sont séparées par des espaces. Cela remplacera toute "
+"option fournie par la variable B<DEBBUILDOPTS> du fichier I<pbuilderrc> de "
+"la machine de construction."
+
+#. type: TP
+#: ../scripts/cowpoke.1:91
+#, no-wrap
+msgid "B<--create-opts=>I<'cowbuilder option'>"
+msgstr "B<--create-opts=>I<'option de cowbuilder'>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:97
+msgid ""
+"Specify additional arguments to be passed verbatim to B<cowbuilder> when a "
+"chroot is first created (using the B<--create> option above). If multiple "
+"arguments need to be passed, this option should be specified separately for "
+"each of them."
+msgstr ""
+"Indiquer des arguments supplémentaires à passer directement à B<cowbuilder> "
+"quand un chroot est créé (en utilisant l’option B<--create> précédente). Si "
+"plusieurs arguments doivent être passés, cette option devrait être indiquée "
+"séparément pour chacun."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:99
+msgid ""
+"E.g., B<--create-opts \"--othermirror\" --create-opts \"deb http:// ...\">"
+msgstr ""
+"Par exemple, B<--create-opts \"--othermirror\" --create-opts \"deb "
+"http:// ...\">"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:102
+msgid ""
+"This option will override any B<CREATE_OPTS> specified for a chroot in the "
+"cowpoke configuration files."
+msgstr ""
+"Cette option remplacera toutes les B<CREATE_OPTS> indiquées pour un chroot "
+"dans les fichiers de configuration de B<cowpoke>."
+
+#. type: TP
+#: ../scripts/cowpoke.1:103
+#, no-wrap
+msgid "B<--update-opts=>I<'cowbuilder option'>"
+msgstr "B<--update-opts=>I<'option de cowbuilder'>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:108
+msgid ""
+"Specify additional arguments to be passed verbatim to B<cowbuilder> if the "
+"base of the chroot is updated. If multiple arguments need to be passed, "
+"this option should be specified separately for each of them."
+msgstr ""
+"Indiquer des arguments supplémentaires à passer directement à B<cowbuilder> "
+"si la base du chroot est mise à jour. Si plusieurs arguments doivent être "
+"passés, cette option devrait être indiquée séparément pour chacun."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:111
+msgid ""
+"This option will override any B<UPDATE_OPTS> specified for a chroot in the "
+"cowpoke configuration files."
+msgstr ""
+"Cette option remplacera toutes les B<UPDATE_OPTS> indiquées pour un chroot "
+"dans les fichiers de configuration de B<cowpoke>."
+
+#. type: TP
+#: ../scripts/cowpoke.1:112
+#, no-wrap
+msgid "B<--build-opts=>I<'cowbuilder option'>"
+msgstr "B<--build-opts=>I<'option de cowbuilder'>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:117
+msgid ""
+"Specify additional arguments to be passed verbatim to B<cowbuilder> when a "
+"package build is performed. If multiple arguments need to be passed, this "
+"option should be specified separately for each of them."
+msgstr ""
+"Indiquer des arguments supplémentaires à passer directement à B<cowbuilder> "
+"quand un paquet est construit. Si plusieurs arguments doivent être passés, "
+"cette option devrait être indiquée séparément pour chacun."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:120
+msgid ""
+"This option will override any B<BUILD_OPTS> specified for a chroot in the "
+"cowpoke configuration files."
+msgstr ""
+"Cette option remplacera toutes les B<BUILD_OPTS> indiquées pour un chroot "
+"dans les fichiers de configuration de B<cowpoke>."
+
+#. type: TP
+#: ../scripts/cowpoke.1:121
+#, no-wrap
+msgid "B<--sign=>I<keyid>"
+msgstr "B<--sign=>I<identifiant_clef>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:125
+msgid ""
+"Specify the key to sign packages with. This will override any B<SIGN_KEYID> "
+"specified for a chroot in the cowpoke configuration files."
+msgstr ""
+"Indiquer la clef à utiliser pour signer les paquets. Cela remplacera toutes "
+"les B<SIGN_KEYID> indiquées pour un chroot dans les fichiers de "
+"configuration de B<cowpoke>."
+
+#. type: TP
+#: ../scripts/cowpoke.1:126
+#, no-wrap
+msgid "B<--upload=>I<queue>"
+msgstr "B<--upload=>I<file>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:130
+msgid ""
+"Specify the dput queue to upload signed packages to. This will override any "
+"B<UPLOAD_QUEUE> specified for a chroot in the cowpoke configuration files."
+msgstr ""
+"Indiquer la I<file> dput à utiliser pour envoyer les paquets signés. Cela "
+"remplacera toutes les B<UPLOAD_QUEUE> indiquées pour un chroot dans les "
+"fichiers de configuration de B<cowpoke>."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:134
+msgid ""
+"Display a brief summary of the available options and current configuration."
+msgstr ""
+"Afficher un bref résumé des options disponibles et de la configuration en "
+"cours."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:138
+msgid "Display the current version information."
+msgstr "Afficher les informations sur la version."
+
+#. type: SH
+#: ../scripts/cowpoke.1:140 ../scripts/debsnap.1:66
+#, no-wrap
+msgid "CONFIGURATION OPTIONS"
+msgstr "OPTIONS DE CONFIGURATION"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:146
+msgid ""
+"When B<cowpoke> is run the following configuration options are read from "
+"global, per-user, and per-project configuration files if present. File "
+"paths may be absolute or relative, the latter being relative to the "
+"B<BUILDD_USER>'s home directory. Since the paths are typically quoted when "
+"used, tilde expansion will B<not> be performed on them."
+msgstr ""
+"Quand B<cowpoke> est exécuté, les options de configuration suivantes sont "
+"lues dans le fichier de configuration global, celui de l'utilisateur et du "
+"projet, s'ils sont présents. Les chemins peuvent être indiqués de façon "
+"absolue ou relative (les chemins étant alors relatifs au répertoire "
+"personnel de l'utilisateur B<BUILDD_USER>). Les chemins étant généralement "
+"fournis entre guillemets, l'expansion des tildes ne sera B<pas> réalisée."
+
+#. type: SS
+#: ../scripts/cowpoke.1:147
+#, no-wrap
+msgid "Global defaults"
+msgstr "Valeurs globales par défaut"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:149
+msgid ""
+"These apply to every I<arch> and I<dist> in a single cowpoke invocation."
+msgstr ""
+"Elles s'appliquent à chaque I<arch>itecture et I<dist>ribution lors d'un "
+"appel à cowpoke."
+
+#. type: TP
+#: ../scripts/cowpoke.1:150
+#, no-wrap
+msgid "B<BUILDD_HOST>"
+msgstr "B<BUILDD_HOST>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:154
+msgid ""
+"The network address or fqdn of the build machine where B<cowbuilder> is "
+"configured. This may be overridden by the B<--buildd> command line option."
+msgstr ""
+"L'adresse réseau ou le nom complètement qualifié (FQDN) de la machine de "
+"construction où B<cowbuilder> est configuré. Elle peut être modifiée avec "
+"l'option en ligne de commande B<--buildd>."
+
+#. type: TP
+#: ../scripts/cowpoke.1:154
+#, no-wrap
+msgid "B<BUILDD_USER>"
+msgstr "B<BUILDD_USER>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:160
+msgid ""
+"The unprivileged user name for operations on the build machine. This "
+"defaults to the local name of the user executing B<cowpoke> (or to a "
+"username that is specified in your SSH configuration for B<BUILDD_HOST>), "
+"and may be overridden by the B<--buildd-user> command line option."
+msgstr ""
+"Le nom de l'utilisateur, non privilégié, sur la machine de construction. Le "
+"nom par défaut est le nom de l'utilisateur local qui exécute B<cowpoke> (ou "
+"le nom d'utilisateur précisé dans la configuration SSH pour B<BUILDD_HOST>), "
+"et le nom fournit par la variable d'environnement peut être remplacé avec "
+"l'option B<--buildd-user> en ligne de commande."
+
+#. type: TP
+#: ../scripts/cowpoke.1:160
+#, no-wrap
+msgid "B<BUILDD_ARCH>"
+msgstr "B<BUILDD_ARCH>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:167
+msgid ""
+"The Debian architecture(s) to build for. This must match the "
+"B<DEB_BUILD_ARCH> of the build chroot being used. It defaults to the local "
+"machine architecture where B<cowpoke> is executed, and may be overridden by "
+"the B<--arch> command line option. A (quoted) space separated list of "
+"architectures may be used here to build for all of them in a single pass."
+msgstr ""
+"La ou les architectures Debian pour lesquelles il faut construire les "
+"paquets. Cela doit correspondre à la valeur de B<DEB_BUILD_ARCH> du chroot "
+"de construction utilisé. La valeur par défaut est l'architecture de la "
+"machine sur laquelle B<cowpoke> est exécutée, et l'architecture peut être "
+"remplacée avec l'option B<--arch> en ligne de commande. Une liste "
+"d'architectures séparées par des espaces (il peut être nécessaire de fournir "
+"le tout entre guillemets) peut être utilisée pour construire les paquets "
+"pour toutes ces architectures en une seule passe."
+
+#. type: TP
+#: ../scripts/cowpoke.1:167
+#, no-wrap
+msgid "B<BUILDD_DIST>"
+msgstr "B<BUILDD_DIST>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:172
+msgid ""
+"The Debian distribution(s) to build for. A (quoted) space separated list of "
+"distributions may be used to build for all of them in a single pass. This "
+"may be overridden by the B<--dist> command line option."
+msgstr ""
+"La ou les distributions Debian pour lesquelles il faut construire les "
+"paquets. Une liste de distributions séparées par des espaces (il peut être "
+"nécessaire de fournir le tout entre guillemets) peut être utilisée pour "
+"construire les paquets pour toutes ces architectures en une seule passe. La "
+"ou les distributions peuvent être remplacées avec l'option B<--dist> en "
+"ligne de commande."
+
+#. type: TP
+#: ../scripts/cowpoke.1:173
+#, no-wrap
+msgid "B<INCOMING_DIR>"
+msgstr "B<INCOMING_DIR>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:177
+msgid ""
+"The directory path on the build machine where the source package will "
+"initially be placed. This must be writable by the B<BUILDD_USER>."
+msgstr ""
+"Le chemin du répertoire sur la machine de construction où sont placés "
+"initialement les paquets source. Il doit être accessible en écriture par "
+"l'utilisateur B<BUILDD_USER>."
+
+#. type: TP
+#: ../scripts/cowpoke.1:177
+#, no-wrap
+msgid "B<PBUILDER_BASE>"
+msgstr "B<PBUILDER_BASE>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:182
+msgid ""
+"The filesystem root for all pbuilder CoW and result files. I<Arch> and "
+"I<dist> specific subdirectories will normally be created under this. The "
+"apt cache and temporary build directory will also be located under this path."
+msgstr ""
+"La racine du système de fichiers pour tous les fichiers CoW et les fichiers "
+"résultats. Des sous-répertoires spécifiques aux I<arch>itectures et aux "
+"I<dist>ributions seront normalement créés sous cette racine. Le cache d'apt "
+"et les répertoires temporaires de construction se trouveront également sous "
+"ce chemin."
+
+#. type: TP
+#: ../scripts/cowpoke.1:183
+#, no-wrap
+msgid "B<SIGN_KEYID>"
+msgstr "B<SIGN_KEYID>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:194
+msgid ""
+"If this option is set, it is expected to contain the gpg key ID to pass to "
+"B<debsign>(1) if the packages are to be remotely signed. You will be "
+"prompted to confirm whether you wish to sign the packages after all builds "
+"are complete. If this option is unset or an empty string, no attempt to "
+"sign packages will be made. It may be overridden on an I<arch> and I<dist> "
+"specific basis using the I<arch>B<_>I<dist>B<_SIGN_KEYID> option described "
+"below, or per-invocation with the B<--sign> command line option."
+msgstr ""
+"Si cette option est activée, elle doit contenir l'identifiant de la clef GPG "
+"à fournir à B<debsign>(1) si les paquets doivent être signés sur la machine "
+"distante. Il vous sera demandé si vous souhaitez signer les paquets après "
+"que toutes les constructions sont finies. Si cette option n'est pas activée "
+"ou si elle contient une chaîne vide, aucune tentative de signature ne sera "
+"effectuée. Elle peut être remplacée de façon spécifique à une "
+"I<arch>itecture et une I<dist>ribution avec l’option "
+"I<arch>B<_>I<dist>B<_SIGN_KEYID> décrite ci-dessous, ou par invocation avec "
+"l’option B<--sign> en ligne de commande."
+
+#. type: TP
+#: ../scripts/cowpoke.1:195
+#, no-wrap
+msgid "B<UPLOAD_QUEUE>"
+msgstr "B<UPLOAD_QUEUE>"
+
+# NOTE: "them" => packages
+#. type: Plain text
+#: ../scripts/cowpoke.1:206
+msgid ""
+"If this option is set, it is expected to contain a 'host' specification for "
+"B<dput>(1) which will be used to upload them after they are signed. You "
+"will be prompted to confirm whether you wish to upload the packages after "
+"they are signed. If this option is unset or an empty string, no attempt to "
+"upload packages will be made. If B<SIGN_KEYID> is not set, this option will "
+"be ignored entirely. It may be overridden on an I<arch> and I<dist> "
+"specific basis using the I<arch>B<_>I<dist>B<_UPLOAD_QUEUE> option described "
+"below, or per-invocation with the B<--upload> command line option."
+msgstr ""
+"Si cette option est activée, elle doit contenir une indication d'hôte pour "
+"B<dput>(1) qui sera utilisée pour envoyer les paquets après qu'ils ont été "
+"signés. Il vous sera demandé de confirmer si vous souhaitez envoyer les "
+"paquets après qu'ils ont été signés. Si cette option n'est pas activée ou si "
+"elle contient une chaîne vide, aucune tentative d'envoi ne sera effectuée. "
+"Si B<SIGN_KEYID> n'est pas activée, cette option sera complètement ignorée. "
+"Elle peut être remplacée de façon spécifique à une I<arch>itecture et une "
+"I<dist>ribution avec l’option I<arch>B<_>I<dist>B<_UPLOAD_QUEUE> décrite ci-"
+"dessous, ou par invocation avec l’option B<--upload> en ligne de commande."
+
+#. type: TP
+#: ../scripts/cowpoke.1:208
+#, no-wrap
+msgid "B<BUILDD_ROOTCMD>"
+msgstr "B<BUILDD_ROOTCMD>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:216
+msgid ""
+"The command to use to gain root privileges on the remote build machine. If "
+"unset the default is B<sudo>(8). This is only required to invoke "
+"B<cowbuilder> and allow it to enter its chroot, so you may restrict this "
+"user to only being able to run that command with escalated privileges. "
+"Something like this in sudoers will enable invoking B<cowbuilder> without an "
+"additional password entry required:"
+msgstr ""
+"La commande à utiliser pour obtenir les droits du superutilisateur sur la "
+"machine distante de construction. Si elle n'est pas définie, la commande par "
+"défaut est B<sudo>(8). Elle n'est nécessaire que pour appeler B<cowbuilder> "
+"et lui permettre d'entrer dans son chroot. Vous pouvez donc n'autoriser cet "
+"utilisateur à acquérir des droits supplémentaires que pour l'exécution de "
+"cette commande. La ligne suivante dans sudoers permettra d'appeler "
+"B<cowbuilder> sans avoir à fournir de mot de passe :"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:220
+msgid "youruser ALL = NOPASSWD: /usr/sbin/cowbuilder"
+msgstr "utilisateur ALL = NOPASSWD: /usr/sbin/cowbuilder"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:227
+msgid ""
+"Alternatively you could use SSH with a forwarded key, or whatever other "
+"mechanism suits your local access policy. Using B<su -c> isn't really "
+"suitable here due to its quoting requirements being somewhat different to "
+"the rest."
+msgstr ""
+"Autrement, vous pouvez utiliser SSH avec une clef ou tout autre mécanisme "
+"correspondant à votre politique locale. B<su -c> n'est pas vraiment "
+"utilisable ici parce qu'il nécessite de placer des guillemets autour, "
+"contrairement aux autres."
+
+#. type: TP
+#: ../scripts/cowpoke.1:228
+#, no-wrap
+msgid "B<DEBOOTSTRAP>"
+msgstr "B<DEBOOTSTRAP>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:232
+msgid ""
+"The utility to use when creating a new build root. Alternatives are "
+"B<debootstrap> or B<cdebootstrap>."
+msgstr ""
+"L'utilitaire à utiliser pour créer une nouvelle racine de construction. Les "
+"possibilités sont B<debootstrap> ou B<cdebootstrap>."
+
+#. type: TP
+#: ../scripts/cowpoke.1:233
+#, no-wrap
+msgid "B<RETURN_DIR>"
+msgstr "B<RETURN_DESTDIR>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:239
+msgid ""
+"If set, package files resulting from the build will be copied to the path "
+"(local or remote) that this is set to, after the build completes. The path "
+"must exist, it will not be created. This option is unset by default and can "
+"be overridden with B<--return> or B<--no-return>."
+msgstr ""
+"Si elle est définie, les fichiers de paquet issus de la construction seront "
+"copiés à l'endroit (local ou distant) configuré, une fois la construction "
+"terminée. Le chemin doit exister, il ne sera pas créé. Cette option n'est "
+"pas définie par défaut et peut être écrasée par B<--return> ou B<--no-"
+"return>."
+
+#. type: SS
+#: ../scripts/cowpoke.1:241
+#, no-wrap
+msgid "Arch and dist specific options"
+msgstr "Options spécifiques à des architectures ou distributions"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:244
+msgid ""
+"These are variables of the form: $arch_$distB<_VAR> which apply only for a "
+"particular target arch/dist build."
+msgstr ""
+"Ce sont des variables de la forme $arch_$distB<_VAR> qui ne s'appliquent "
+"qu'à une cible de construction spécifique à une architecture et à une "
+"distribution."
+
+#. type: TP
+#: ../scripts/cowpoke.1:245
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_RESULT_DIR>"
+msgstr "I<arch>B<_>I<dist>B<_RESULT_DIR>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:256
+msgid ""
+"The directory path on the build machine where the resulting packages (source "
+"and binary) will be found, and where older versions of the package that were "
+"built previously may be found. If any such older packages exist, B<debdiff> "
+"will be used to compare the new package with the previous version after the "
+"build is complete, and the result will be included in the build log. Files "
+"in it must be readable by the B<BUILDD_USER> for sanity checking with "
+"B<lintian>(1) and B<debdiff>(1), and for upload with B<dput>(1). If this "
+"option is not specified for some arch and dist combination then it will "
+"default to I<$PBUILDER_BASE/$arch/$dist/result>"
+msgstr ""
+"Le chemin du répertoire de la machine de construction où les paquets "
+"résultants (source et binaires) seront trouvés, et où les versions "
+"ultérieures des paquets ayant été précédemment construits pourront être "
+"trouvées. Si des anciens paquets sont trouvés, B<debdiff> sera utilisé pour "
+"comparer le nouveau paquet avec la version précédente une fois la "
+"construction finie, et le résultat se trouvera dans le journal de "
+"construction. Les fichiers du répertoire doivent être lisibles par "
+"B<BUILDD_USER> pour les vérifications par B<lintian>(1) et B<debdiff>(1) "
+"ainsi que pour les envois par B<dput>(1). Si cette option n'est pas définie "
+"pour certaines combinaisons d'architectures et de distributions, alors le "
+"chemin par défaut sera I<$PBUILDER_BASE/$arch/$dist/result>"
+
+#. type: TP
+#: ../scripts/cowpoke.1:257
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_BASE_PATH>"
+msgstr "I<arch>B<_>I<dist>B<_BASE_PATH>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:263
+msgid ""
+"The directory where the CoW master files are to be found (or created if the "
+"B<--create> command line option was passed). If this option is not "
+"specified for some arch or dist then it will default to I<$PBUILDER_BASE/"
+"$arch/$dist/base.cow>"
+msgstr ""
+"Le répertoire ou les fichiers CoW maîtres se trouvent (ou là où ils sont "
+"créés si l'option en ligne de commande B<--create> est utilisée). Si cette "
+"option n'est pas définie pour une combinaison d'architecture et de "
+"distribution, alors le chemin par défaut est I<$PBUILDER_BASE/$arch/$dist/"
+"base.cow>"
+
+#. type: TP
+#: ../scripts/cowpoke.1:264
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_BASE_DIST>"
+msgstr "I<arch>B<_>I<dist>B<_BASE_DIST>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:274
+msgid ""
+"The code name to pass as the B<--distribution> option for cowbuilder instead "
+"of I<dist>. This is necessary when I<dist> is a locally significant name "
+"assigned to some specially configured build chroot, such as "
+"'wheezy_backports', and not the formal suite name of a distro release known "
+"to debootstrap. This option cannot be overridden on the command line, since "
+"it would rarely, if ever, make any sense to change it for individual "
+"invocations of B<cowpoke>. If this option is not specified for an arch and "
+"dist combination then it will default to I<dist>."
+msgstr ""
+"Le nom de code à passer à l’option B<--distribution> de B<cowbuilder> à la "
+"place de I<dist>. C’est nécessaire quand I<dist> est un nom localement "
+"significatif utilisé pour un chroot de construction configuré spécialement, "
+"comme par exemple « wheezy_backports », et non le nom de suite formel d’une "
+"I<dist>ribution connue de debootstrap. Cette option ne peut pas être "
+"remplacée en ligne de commande, puisqu’il n’y pas vraiment de raison de la "
+"modifier pour les appels individuels de B<cowpoke>. Si cette option n’est "
+"pas indiquée pour une combinaison d’I<arch>itecture et de I<dist>ribution, "
+"alors la I<dist>ribution est utilisée par défaut."
+
+#. type: TP
+#: ../scripts/cowpoke.1:275
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_CREATE_OPTS>"
+msgstr "I<arch>B<_>I<dist>B<_CREATE_OPTS>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:283
+msgid ""
+"A bash array containing additional options to pass verbatim to B<cowbuilder> "
+"when this chroot is created for the first time (using the B<--create> "
+"option). This is useful when options like B<--othermirror> are wanted to "
+"create specialised chroot configurations such as 'wheezy_backports'. By "
+"default this is unset. All values set in it will be overridden if the B<--"
+"create-opts> option is passed on the command line."
+msgstr ""
+"Un tableau bash contenant des options supplémentaires à passer directement à "
+"B<cowbuilder> quand un chroot est créé (en utilisant l’option B<--create>). "
+"C’est pratique quand des options comme B<--othermirror> sont voulues pour "
+"créer des configurations spéciales de chroot, comme par exemple "
+"« wheezy_backports ». Par défaut il n’est pas défini. Toutes les valeurs "
+"définie dans ce tableaux seront ignorées si l’option B<--create-opts> est "
+"passée en ligne de commande."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:288
+msgid ""
+"Each element in this array corresponds to a single argument (in the ARGV "
+"sense) that will be passed to cowbuilder. This ensures that arguments "
+"which may contain whitespace or have strange quoting requirements or other "
+"special characters will not be mangled before they get to cowbuilder."
+msgstr ""
+"Chaque élément de ce tableau correspond à un seul argument (dans le sens de "
+"ARGV) qui sera passé à B<cowbuilder>. Cela permet à ces arguments, qui "
+"pourraient contenir des espaces, avoir des besoins de protection bizarre ou "
+"d’autres caractères spéciaux, de pas ne pas être déformés avant d’atteindre "
+"B<cowbuilder>."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:290
+msgid "Bash arrays are initialised using the following form:"
+msgstr "Les tableaux bash sont initialisés un utilisant le format suivant :"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:292
+#, no-wrap
+msgid " OPTS=( \"arg1\" \"arg 2\" \"--option\" \"value\" \"--opt=val\" \"etc. etc.\" )\n"
+msgstr " OPTS=( \"arg1\" \"arg 2\" \"--option\" \"valeur\" \"--opt=val\" \"etc.\" )\n"
+
+#. type: TP
+#: ../scripts/cowpoke.1:293
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_UPDATE_OPTS>"
+msgstr "I<arch>B<_>I<dist>B<_UPDATE_OPTS>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:298
+msgid ""
+"A bash array containing additional options to pass verbatim to B<cowbuilder> "
+"each time the base of this chroot is updated. It behaves similarly to the "
+"B<CREATE_OPTS> option above, except for acting when the chroot is updated."
+msgstr ""
+"Un tableau bash contenant des options supplémentaires à passer directement à "
+"B<cowbuilder> à chaque fois que la base de ce chroot est mise à jour. Le "
+"comportement est similaire à l’option B<CREATE_OPTS> précédente, à part "
+"qu’il est déclenché quand le chroot est mis à jour."
+
+#. type: TP
+#: ../scripts/cowpoke.1:299
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_BUILD_OPTS>"
+msgstr "I<arch>B<_>I<dist>B<_BUILD_OPTS>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:306
+msgid ""
+"A bash array containing additional options to pass verbatim to B<cowbuilder> "
+"each time a package build is performed in this chroot. This is useful when "
+"you want to use some option like B<--twice> which cowpoke does not directly "
+"need to care about. It otherwise behaves similarly to B<UPDATE_OPTS> above "
+"except that it acts during the build phase of B<cowbuilder>."
+msgstr ""
+"Un tableau bash contenant des options supplémentaires à passer directement à "
+"B<cowbuilder> quand un paquet est construit. C’est pratique pour utiliser "
+"une option comme B<--twice> que cowpoke n’a pas besoin de gérer directement. "
+"Le comportement est sinon similaire à l’option B<UPDATE_OPTS> précédente, à "
+"part qu’il est déclenché pendant la phase de construction par B<cowbuilder>."
+
+#. type: TP
+#: ../scripts/cowpoke.1:307
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_SIGN_KEYID>"
+msgstr "I<arch>B<_>I<dist>B<_SIGN_KEYID>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:311
+msgid ""
+"An optional arch and dist specific override for the global B<SIGN_KEYID> "
+"option."
+msgstr ""
+"Un remplacement facultatif de l’option B<SIGN_KEYID> globale, spécifique à "
+"une I<arch>itecture et une I<dist>ribution."
+
+#. type: TP
+#: ../scripts/cowpoke.1:312
+#, no-wrap
+msgid "I<arch>B<_>I<dist>B<_UPLOAD_QUEUE>"
+msgstr "I<arch>B<_>I<dist>B<_UPLOAD_QUEUE>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:316
+msgid ""
+"An optional arch and dist specific override for the global B<UPLOAD_QUEUE> "
+"option."
+msgstr ""
+"Un remplacement facultatif de l’option B<UPLOAD_QUEUE> globale, spécifique à "
+"une I<arch>itecture et une I<dist>ribution."
+
+#. type: SH
+#: ../scripts/cowpoke.1:318
+#, no-wrap
+msgid "CONFIGURATION FILES"
+msgstr "FICHIERS DE CONFIGURATION"
+
+#. type: TP
+#: ../scripts/cowpoke.1:319
+#, no-wrap
+msgid "I</etc/cowpoke.conf>"
+msgstr "I</etc/cowpoke.conf>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:322
+msgid "Global configuration options. Will override hardcoded defaults."
+msgstr ""
+"Options de configuration globales. Elles remplaceront les valeurs par défaut "
+"codées en dur."
+
+#. type: TP
+#: ../scripts/cowpoke.1:322
+#, no-wrap
+msgid "I<~/.cowpoke>"
+msgstr "I<~/.cowpoke>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:325 ../scripts/debsnap.1:117
+msgid ""
+"Per-user configuration options. Will override any global configuration."
+msgstr ""
+"Options de configuration de l'utilisateur. Elles remplaceront les valeurs "
+"des options de configuration globales."
+
+#. type: TP
+#: ../scripts/cowpoke.1:325
+#, no-wrap
+msgid "I<.cowpoke>"
+msgstr "I<.cowpoke>"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:329
+msgid ""
+"Per-project configuration options. Will override any per-user or global "
+"configuration if B<cowpoke> is called from the directory where they exist."
+msgstr ""
+"Options de configuration du projet. Elles remplaceront les valeurs des "
+"options de configuration globale ou de l'utilisateur si B<cowpoke> est "
+"appelé depuis le répertoire où se trouve le fichier."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:333
+msgid ""
+"If the environment variable B<COWPOKE_CONF> is set, it specifies an "
+"additional configuration file which will override all of those above. "
+"Options specified explicitly on the command line override all configuration "
+"files."
+msgstr ""
+"Si la variable d'environnement B<COWPOKE_CONF> est définie, elle indique un "
+"fichier de configuration supplémentaire qui remplacera tous les autres. Les "
+"options utilisées explicitement sur la ligne de commande remplacent les "
+"options provenant des fichiers de configuration."
+
+#. type: SH
+#: ../scripts/cowpoke.1:335
+#, no-wrap
+msgid "COWBUILDER CONFIGURATION"
+msgstr "CONFIGURATION DE COWBUILDER"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:344
+msgid ""
+"There is nothing particularly special required to configure a B<cowbuilder> "
+"instance for use with B<cowpoke>. Simply create them in the flavour you "
+"require with `B<cowbuilder --create>` according to the B<cowbuilder> "
+"documentation, then configure B<cowpoke> with the user, arch, and path "
+"information required to access it, on the machines you wish to invoke it "
+"from (or alternatively configure B<cowpoke> with the path, arch and "
+"distribution information and pass the B<--create> option to it on the first "
+"invocation). The build host running B<cowbuilder> does not require "
+"B<cowpoke> installed locally."
+msgstr ""
+"Il n'y a rien de particulier à faire pour configurer une instance de "
+"B<cowbuilder> pour qu'elle puisse être utilisée avec B<cowpoke>. Créez-la "
+"simplement telle que vous en avez besoin avec « B<cowbuilder --create> » en "
+"suivant la documentation de B<cowbuilder>, puis configurez B<cowpoke> avec "
+"les informations sur l'utilisateur, l'architecture et le chemin nécessaire "
+"pour y accéder sur les machines où vous souhaitez l'appeler (ou configurez "
+"B<cowpoke> avec les informations sur le chemin, l'architecture et la "
+"distribution et fournissez lui l'option B<--create> lors du premier appel). "
+"L'hôte de construction sur lequel B<cowbuilder> tourne n'a pas besoin que "
+"B<cowpoke> soit installé localement."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:354
+msgid ""
+"The build machine should have the B<lintian> and B<devscripts> packages "
+"installed for post-build sanity checking. Upon completion, the build log "
+"and the results of automated checks will be recorded in the "
+"B<INCOMING_DIR>. If you wish to upload signed packages the build machine "
+"will also need B<dput>(1) installed and configured to use the 'I<host>' "
+"alias specified by B<UPLOAD_QUEUE>. If B<rsync>(1) is available on both the "
+"local and build machine, then it will be used to transfer the source package "
+"(this may save on some transfers of the I<orig.tar.*> when building "
+"subsequent Debian revisions)."
+msgstr ""
+"La machine de construction doit avoir les paquets B<lintian> et "
+"B<devscripts> installés pour les vérifications en fin de construction. Une "
+"fois la construction finie, un journal et les résultats des tests "
+"automatiques seront enregistrés dans B<INCOMING_DIR>. Si vous souhaitez "
+"envoyer des paquets signés, B<dput>(1) devra également être installé sur la "
+"machine de construction et devra être configuré pour utiliser l'alias "
+"I<hôte> indiqué par B<UPLOAD_QUEUE>. Si B<rsync>(1) est disponible à la fois "
+"sur la machine locale et la machine de construction, alors il peut être "
+"utilisé pour transférer le paquet source (cela permet d'économiser quelques "
+"échanges de I<orig.tar.*> lors de la construction des révisions Debian "
+"suivantes)."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:360
+msgid ""
+"The user executing B<cowpoke> must have SSH access to the build machine as "
+"the B<BUILDD_USER>. That user must be able to invoke B<cowbuilder> as root "
+"by using the B<BUILDD_ROOTCMD>. Signing keys are not required to be "
+"installed on the build machine (and will be ignored there if they are). If "
+"the package is signed, keys will be expected on the machine that executes "
+"B<cowpoke>."
+msgstr ""
+"L'utilisateur qui exécute B<cowpoke> doit avoir un accès SSH à la machine de "
+"construction en tant que B<BUILDD_USER>. Cet utilisateur doit pouvoir "
+"exécuter B<cowbuilder> en tant que superutilisateur en utilisant "
+"B<BUILDD_ROOTCMD>. Les clefs pour les signatures n'ont pas nécessairement à "
+"être installées sur la machine de construction (et elles seront ignorées si "
+"elles le sont). Si un paquet est signé, les clefs seront nécessaires sur la "
+"machine qui exécute B<cowpoke>."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:367
+msgid ""
+"When B<cowpoke> is invoked, it will first attempt to update the "
+"B<cowbuilder> image if that has not already been done on the same day. This "
+"is checked by the presence or absence of a I<cowbuilder-$arch-$dist-update-"
+"log-$date> file in the B<INCOMING_DIR>. You may move, remove, or touch this "
+"file if you wish the image to be updated more or less often than that. Its "
+"contents log the output of B<cowbuilder> during the update (or creation) of "
+"the build root."
+msgstr ""
+"Quand B<cowpoke> est appelé, il cherche d'abord à mettre à jour l'image "
+"B<cowbuilder> si cela n'a pas déjà été fait le même jour. Cette vérification "
+"se base sur la présence d'un fichier I<cowbuilder-$arch-$dist-update-log-"
+"$date> dans le répertoire B<INCOMING_DIR>. Vous pouvez déplacer, renommer ou "
+"toucher ce fichier si vous souhaitez que l'image soit mise à jour plus ou "
+"moins souvent. Son contenu liste les sorties de B<cowbuilder> pendant la "
+"mise à jour (ou la création) de la racine de construction."
+
+#. type: =head1
+#: ../scripts/cowpoke.1:369 ../scripts/origtargz.pl:80
+#: ../scripts/rmadison.pl:324
+#, no-wrap
+msgid "NOTES"
+msgstr "NOTES"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:378
+msgid ""
+"Since B<cowbuilder> creates a chroot, and to do that you need root, "
+"B<cowpoke> also requires some degree of root access. So all the horrible "
+"things that can go wrong with that may well one day rain down upon you. "
+"B<cowbuilder> has been known to accidentally wipe out bind-mounted "
+"filesystems outside the chroot, and worse than that can easily happen. So "
+"be careful, keep good backups of things you don't want to lose on your build "
+"machine, and use B<cowpoke> to keep all that on a machine that isn't your "
+"bleeding edge dev box with your last few hours of uncommitted work."
+msgstr ""
+"Puisque cowbuilder crée un chroot, et qu'il faut pour cela être "
+"superutilisateur, B<cowpoke> nécessite également certains des droits du "
+"superutilisateur. Et toutes les horreurs qui peuvent arriver à cause de ça "
+"pourront vous arriver un jour. B<cowbuilder> est connu pour avoir "
+"accidentellement écrasé des systèmes de fichiers montés avec l'option "
+"« bind » en dehors de son chroot, et pire encore peut arriver. Soyez "
+"prudents, conservez des sauvegardes de ce que vous ne souhaitez pas perdre "
+"sur vos machines de construction et utilisez B<cowpoke> pour isoler tous ces "
+"problèmes sur une machine qui n'est pas votre machine de développement avec "
+"vos quelques heures de travail non committé."
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:384
+msgid "B<cowbuilder>(1), B<pbuilder>(1), B<ssh-agent>(1), B<sudoers>(5)"
+msgstr "B<cowbuilder>(1), B<pbuilder>(1), B<ssh-agent>(1), B<sudoers>(5)"
+
+#. type: Plain text
+#: ../scripts/cowpoke.1:388
+msgid "B<cowpoke> was written by Ron E<lt>I<ron@debian.org>E<gt>."
+msgstr "B<cowpoke> a été écrit par Ron E<lt>I<ron@debian.org>E<gt>."
+
+#. type: TH
+#: ../scripts/cvs-debc.1:1 ../scripts/cvs-debrelease.1:1
+#, no-wrap
+msgid "CVS-DEBC"
+msgstr "CVS-DEBC"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:4
+msgid ""
+"cvs-debc - view contents of a cvs-buildpackage/cvs-debuild generated package"
+msgstr ""
+"cvs-debc - Visualiser le contenu d'un paquet Debian créé par cvs-"
+"buildpackage ou cvs-debuild"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:6
+msgid "B<cvs-debc> [I<options>] [I<package> ...]"
+msgstr "B<cvs-debc> [I<options>] [I<paquet> ...]"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:17
+msgid ""
+"B<cvs-debc> is run from the CVS working directory after B<cvs-buildpackage> "
+"or B<cvs-debuild>. It uses the B<cvs-buildpackage> system to locate the I<."
+"changes> file generated in that run. It then displays information about the "
+"I<.deb> files which were generated in that run, by running B<dpkg-deb -I> "
+"and B<dpkg-deb -c> on every I<.deb> archive listed in the I<.changes> file, "
+"assuming that all of the I<.deb> archives live in the same directory as the "
+"I<.changes> file. It is useful for ensuring that the expected files have "
+"ended up in the Debian package."
+msgstr ""
+"B<cvs-debc> est exécuté après B<cvs-buildpackage> ou B<cvs-debuild> depuis "
+"le répertoire de travail CVS. Il utilise le système B<cvs-buildpackage> pour "
+"trouver le fichier I<.changes> produit au cours de cette exécution. Il "
+"affiche ensuite les informations des fichiers I<.deb> produits au cours de "
+"cette exécution. Pour cela, il exécute B<dpkg-deb -I> et B<dpkg-deb -c> pour "
+"toutes les archives I<.deb> listées dans le fichier I<.changes>, en "
+"supposant que toutes ces archives I<.deb> se trouvent dans le même "
+"répertoire que le fichier I<.changes>. C'est utile pour s'assurer que les "
+"bons fichiers se trouvent dans le paquet Debian."
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:20
+msgid ""
+"If a list of packages is given on the command line, then only those debs "
+"with names in this list of packages will be processed."
+msgstr ""
+"Si une liste de paquets est fournie en ligne de commande, alors seuls les "
+"paquets Debian dont les noms sont dans la liste seront considérés."
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:24 ../scripts/cvs-debi.1:23
+#: ../scripts/cvs-debrelease.1:21
+msgid ""
+"Note that unlike B<cvs-buildpackage>, the only way to specify the source "
+"package name is with the B<-P> option; you cannot simply have it as the last "
+"command-line parameter."
+msgstr ""
+"Remarquez que, contrairement à B<cvs-buildpackage>, le nom du paquet source "
+"ne peut être indiqué qu'avec l'option B<-P> ; vous ne pouvez pas utiliser "
+"simplement le dernier argument de la ligne de commande."
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:28 ../scripts/cvs-debi.1:32
+msgid ""
+"All current B<cvs-buildpackage> options are silently accepted; however, only "
+"the ones listed below have any effect. For more details on all of them, see "
+"the B<cvs-buildpackage>(1) manpage."
+msgstr ""
+"Toutes les options de B<cvs-buildpackage> sont acceptées sans avertissement. "
+"Cependant, seules celles listées ci-dessous ont un effet. Pour plus de "
+"détails sur ces options, consultez la page de manuel de B<cvs-"
+"buildpackage>(1)."
+
+#. type: TP
+#: ../scripts/cvs-debc.1:28 ../scripts/cvs-debi.1:32
+#: ../scripts/cvs-debrelease.1:30 ../scripts/debc.1:65 ../scripts/debi.1:66
+#: ../scripts/debrelease.1:67 ../scripts/debrsign.1:35 ../scripts/debsign.1:72
+#, no-wrap
+msgid "B<-a>I<debian-architecture>, B<-t>I<GNU-system-type>"
+msgstr "B<-a>I<architecture-debian>, B<-t>I<type-de-système-GNU>"
+
+# NOTE: presque pareil ?
+#. type: Plain text
+#: ../scripts/cvs-debc.1:34 ../scripts/cvs-debi.1:38
+#: ../scripts/cvs-debrelease.1:36 ../scripts/debc.1:71 ../scripts/debi.1:72
+#: ../scripts/debrsign.1:41 ../scripts/debsign.1:78
+msgid ""
+"See B<dpkg-architecture>(1) for a description of these options. They affect "
+"the search for the I<.changes> file. They are provided to mimic the "
+"behaviour of B<dpkg-buildpackage> when determining the name of the I<."
+"changes> file."
+msgstr ""
+"Veuillez consulter B<dpkg-architecture>(1) pour une description de ces "
+"options. Ces options affectent la recherche du fichier I<.changes>. Elles "
+"consistent à imiter le comportement de B<dpkg-buildpackage> lors de la "
+"détermination du nom du fichier I<.changes>. "
+
+#. type: TP
+#: ../scripts/cvs-debc.1:34 ../scripts/cvs-debi.1:38
+#: ../scripts/cvs-debrelease.1:36
+#, no-wrap
+msgid "B<-M>I<module>"
+msgstr "B<-M>I<module>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:37 ../scripts/cvs-debi.1:41
+#: ../scripts/cvs-debrelease.1:39
+msgid "The name of the CVS module."
+msgstr "Le nom du module CVS."
+
+#. type: TP
+#: ../scripts/cvs-debc.1:37 ../scripts/cvs-debi.1:41
+#: ../scripts/cvs-debrelease.1:39
+#, no-wrap
+msgid "B<-P>I<package>"
+msgstr "B<-P>I<paquet>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:40 ../scripts/cvs-debi.1:44
+#: ../scripts/cvs-debrelease.1:42
+msgid "The name of the package."
+msgstr "Le nom du paquet."
+
+#. type: TP
+#: ../scripts/cvs-debc.1:40 ../scripts/cvs-debi.1:44
+#: ../scripts/cvs-debrelease.1:42
+#, no-wrap
+msgid "B<-V>I<version>"
+msgstr "B<-V>I<version>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:43 ../scripts/cvs-debi.1:47
+#: ../scripts/cvs-debrelease.1:45
+msgid "The version number of the package."
+msgstr "Le numéro de version du paquet."
+
+#. type: TP
+#: ../scripts/cvs-debc.1:43 ../scripts/cvs-debi.1:47
+#: ../scripts/cvs-debrelease.1:45
+#, no-wrap
+msgid "B<-T>I<tag>"
+msgstr "B<-T>I<étiquette>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:46 ../scripts/cvs-debi.1:50
+#: ../scripts/cvs-debrelease.1:48
+msgid "The CVS tag to use for exporting sources."
+msgstr "L'étiquette CVS utilisée pour exporter les sources."
+
+#. type: TP
+#: ../scripts/cvs-debc.1:46 ../scripts/cvs-debi.1:50
+#: ../scripts/cvs-debrelease.1:48
+#, no-wrap
+msgid "B<-R>I<root\\ directory>"
+msgstr "B<-R>I<répertoire_racine>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:49 ../scripts/cvs-debi.1:53
+#: ../scripts/cvs-debrelease.1:51
+msgid "Root of the original sources archive."
+msgstr "Racine de l'archive source initiale."
+
+#. type: TP
+#: ../scripts/cvs-debc.1:49 ../scripts/cvs-debi.1:53
+#: ../scripts/cvs-debrelease.1:51
+#, no-wrap
+msgid "B<-W>I<work directory>"
+msgstr "B<-W>I<espace_de_travail>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:52 ../scripts/cvs-debi.1:56
+#: ../scripts/cvs-debrelease.1:54
+msgid "The full path name for the cvs-buildpackage working directory."
+msgstr "Le chemin complet de l'espace de travail pour cvs-buildpackage."
+
+#. type: TP
+#: ../scripts/cvs-debc.1:52 ../scripts/cvs-debi.1:56
+#: ../scripts/cvs-debrelease.1:54
+#, no-wrap
+msgid "B<-x>I<prefix>"
+msgstr "B<-x>I<préfixe>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:55 ../scripts/cvs-debi.1:59
+#: ../scripts/cvs-debrelease.1:57
+msgid "This option provides the CVS default module prefix."
+msgstr "Le préfixe par défaut des modules CVS."
+
+#. type: TP
+#: ../scripts/cvs-debc.1:55 ../scripts/cvs-debi.1:59
+#: ../scripts/cvs-debrelease.1:61 ../scripts/debc.1:89 ../scripts/debi.1:106
+#: ../scripts/debrsign.1:50
+#, no-wrap
+msgid "B<--help>, B<--version>"
+msgstr "B<--help>, B<--version>"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:58 ../scripts/cvs-debi.1:62
+#: ../scripts/cvs-debrelease.1:64 ../scripts/debc.1:92 ../scripts/debi.1:109
+#: ../scripts/debrsign.1:53
+msgid "Show help message and version information respectively."
+msgstr "Afficher respectivement le message d'aide et la version."
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:63
+msgid "B<cvs-buildpackage>(1), B<cvs-debi>(1), B<cvs-debuild>(1), B<debc>(1)"
+msgstr "B<cvs-buildpackage>(1), B<cvs-debi>(1), B<cvs-debuild>(1), B<debc>(1)"
+
+#. type: Plain text
+#: ../scripts/cvs-debc.1:67 ../scripts/cvs-debi.1:71
+msgid ""
+"B<cvs-buildpackage> was written by Manoj Srivastava, and the current version "
+"of B<debi> was written by Julian Gilbey E<lt>jdg@debian.orgE<gt>. They have "
+"been combined into this program by Julian Gilbey."
+msgstr ""
+"B<cvs-buildpackage> a été écrit par Manoj Srivastava et la version actuelle "
+"de B<debi> a été écrite par Julian Gilbey E<lt>jdg@debian.orgE<gt>. Ils ont "
+"été combinés par Julian Gilbey pour donner ce programme."
+
+#. type: TH
+#: ../scripts/cvs-debi.1:1
+#, no-wrap
+msgid "CVS-DEBI"
+msgstr "CVS-DEBI"
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:4
+msgid "cvs-debi - install cvs-buildpackage/cvs-debuild generated package"
+msgstr ""
+"cvs-debi - Installer un paquet créé par cvs-buildpackage ou cvs-debuild"
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:6
+msgid "B<cvs-debi> [I<options>] [I<package> ...]"
+msgstr "B<cvs-debi> [I<options>] [I<paquet> ...]"
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:16
+msgid ""
+"B<cvs-debi> is run from the CVS working directory after B<cvs-buildpackage> "
+"or B<cvs-debuild>. It uses the B<cvs-buildpackage> system to locate the I<."
+"changes> file generated in that run. It then runs B<debpkg -i> on every I<."
+"deb> archive listed in the I<.changes> file to install them, assuming that "
+"all of the I<.deb> archives live in the same directory as the I<.changes> "
+"file. Note that you probably don't want to run this program on a I<."
+"changes> file relating to a different architecture after cross-compiling the "
+"package!"
+msgstr ""
+"B<cvs-debi> est exécuté après B<cvs-buildpackage> ou B<cvs-debuild> depuis "
+"le répertoire de travail CVS. Il utilise le système B<cvs-buildpackage> pour "
+"trouver le fichier I<.changes> produit au cours de cette exécution. Il "
+"installe ensuite avec B<debpkg -i> toutes les archives I<.deb> listées dans "
+"le fichier I<.changes>, en supposant que toutes ces archives I<.deb> se "
+"trouvent dans le même répertoire que le fichier I<.changes>. Remarquez que "
+"vous ne voulez sûrement pas utiliser ce programme pour le fichier I<."
+"changes> d'une autre architecture qui aurait été créé après avoir cross-"
+"compilé le paquet."
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:19 ../scripts/debi.1:24
+msgid ""
+"If a list of packages is given on the command line, then only those debs "
+"with names in this list of packages will be installed."
+msgstr ""
+"Si une liste de paquets est fournie en ligne de commande, alors seuls les "
+"paquets Debian dont les noms sont dans la liste seront installés."
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:28 ../scripts/debi.1:29
+msgid ""
+"Since installing a package requires root privileges, B<debi> calls B<debpkg> "
+"rather than B<dpkg> directly. Thus B<debi> will only be useful if it is "
+"either being run as root or B<debpkg> can be run as root. See B<debpkg>(1) "
+"for more details."
+msgstr ""
+"Puisque l'installation d'un paquet nécessite les droits du superutilisateur, "
+"B<debi> appelle B<debpkg> plutôt que B<dpkg>. De ce fait, B<debi> ne pourra "
+"être utile que s'il est exécuté avec ces droits ou si B<debpkg> peut être "
+"exécuté en tant que superutilisateur. Veuillez consulter B<debpkg>(1) pour "
+"plus de détails."
+
+#. type: Plain text
+#: ../scripts/cvs-debi.1:67
+msgid "B<cvs-buildpackage>(1), B<cvs-debc>(1), B<cvs-debuild>(1), B<debi>(1)"
+msgstr "B<cvs-buildpackage>(1), B<cvs-debc>(1), B<cvs-debuild>(1), B<debi>(1)"
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:4
+msgid ""
+"cvs-debrelease - upload a cvs-buildpackage/cvs-debuild generated package"
+msgstr ""
+"cvs-debrelease - Envoyer à l'archive Debian un paquet créé par cvs-"
+"buildpackage ou cvs-debuild"
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:7
+msgid ""
+"B<cvs-debrelease> [I<cvs-debrelease options>] [B<--dopts> [I<dupload/dput "
+"options>]]"
+msgstr ""
+"B<cvs-debrelease> [I<options_cvs-debrelease>] [B<--dopts>\\ "
+"[I<options_dupload/dput>]]"
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:17
+msgid ""
+"B<cvs-debrelease> is run from the CVS working directory after B<cvs-"
+"buildpackage> or B<cvs-debuild>. It uses the B<cvs-buildpackage> system to "
+"locate the I<.changes> file generated in that run. It then uploads the "
+"package using B<debrelease>(1), which in turn calls either B<dupload> or "
+"B<dput>. Note that the B<--dopts> option must be specified to distinguish "
+"the B<cvs-debrelease> options from the B<dupload> or B<dput> options. Also, "
+"the B<devscripts> configuration files will be read, as described in the "
+"B<debrelease>(1) manpage."
+msgstr ""
+"B<cvs-debrelease> est exécuté après B<cvs-buildpackage> ou B<cvs-debuild> "
+"depuis le répertoire de travail CVS. Il utilise le système B<cvs-"
+"buildpackage> pour trouver le fichier I<.changes> produit au cours de cette "
+"exécution. Il envoie ensuite le paquet à l'archive Debian en utilisant "
+"B<debrelease>(1), qui appelle soit B<dupload> soit B<dput>. Remarquez que "
+"l'option B<--dopts> doit être utilisée pour différencier les options de "
+"B<cvs-debrelease> des options de B<dupload> ou B<dput>. Les fichiers de "
+"configuration de B<devscripts> seront également lus, comme décrit dans la "
+"page de manuel de B<debrelease>(1)."
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:26
+msgid ""
+"All current B<cvs-buildpackage> options are silently accepted; however, only "
+"the ones listed below have any effect. For more details on all of them, see "
+"the B<cvs-buildpackage>(1) manpage. All B<debrelease> options (as listed "
+"below) are also accepted."
+msgstr ""
+"Toutes les options de B<cvs-buildpackage> sont acceptées sans avertissement. "
+"Cependant, seules celles listées ci-dessous ont un effet. Pour plus de "
+"détails sur ces options, consultez la page de manuel de B<cvs-"
+"buildpackage>(1). Toutes les options de B<debrelease> (listées ci-dessous) "
+"sont également acceptées."
+
+#. type: TP
+#: ../scripts/cvs-debrelease.1:26 ../scripts/debrelease.1:57
+#, no-wrap
+msgid "B<--dupload>, B<--dput>"
+msgstr "B<--dupload>, B<--dput>"
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:30 ../scripts/debrelease.1:61
+msgid ""
+"This specifies which uploader program to use; the default is B<dupload>."
+msgstr ""
+"Permet d'indiquer le programme utilisé pour l'envoi à l'archive Debian. Par "
+"défaut, B<dupload> est utilisé."
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:68
+msgid "B<cvs-buildpackage>(1), B<cvs-debuild>(1), B<debrelease>(1)"
+msgstr "B<cvs-buildpackage>(1), B<cvs-debuild>(1), B<debrelease>(1)"
+
+#. type: Plain text
+#: ../scripts/cvs-debrelease.1:72
+msgid ""
+"B<cvs-buildpackage> was written by Manoj Srivastava, and the current version "
+"of B<debrelease> was written by Julian Gilbey E<lt>jdg@debian.orgE<gt>. "
+"They have been combined into this program by Julian Gilbey."
+msgstr ""
+"B<cvs-buildpackage> a été écrit par Manoj Srivastava, et la version actuelle "
+"de B<debrelease> a été écrite par Julian Gilbey E<lt>jdg@debian.orgE<gt>. "
+"Ils ont été combinés par Julian Gilbey pour donner ce programme."
+
+#. type: TH
+#: ../scripts/cvs-debuild.1:1
+#, no-wrap
+msgid "CVS-DEBUILD"
+msgstr "CVS-DEBUILD"
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:4
+msgid "cvs-debuild - build a Debian package using cvs-buildpackage and debuild"
+msgstr ""
+"cvs-debuild - Construire un paquet Debian avec cvs-buildpackage et debuild"
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:7
+msgid ""
+"B<cvs-debuild> [I<debuild options>] [I<cvs-buildpackage options>] [B<--"
+"lintian-opts> I<lintian options>]"
+msgstr ""
+"B<cvs-debuild> [I<options_debuild>] [I<options_cvs-buildpackage>] [B<--"
+"lintian-opts> I<options_lintian>]"
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:13
+msgid ""
+"B<cvs-debuild> is a wrapper around B<cvs-buildpackage> to run it with "
+"B<debuild> as the package-building program. (This cannot simply be "
+"accomplished using the B<-C> option of B<cvs-buildpackage>, as it does not "
+"know how to handle all of the special B<debuild> options.)"
+msgstr ""
+"B<cvs-debuild> encapsule des appels à B<cvs-buildpackage> pour l'exécuter "
+"avec B<debuild> comme programme de création de paquets. Ça ne peut pas se "
+"faire simplement en utilisant l'option B<-C> de B<cvs-buildpackage>, qui ne "
+"sait pas utiliser toutes les options particulières à B<debuild>."
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:22
+msgid ""
+"The program simply stashes the B<debuild> and B<lintian> options, and passes "
+"them to B<debuild> when it is called by B<cvs-buildpackage>. All of the "
+"standard B<debuild> options may be used (as listed below), but note that the "
+"root command specified by any B<--rootcmd> or B<-r> command-line option will "
+"be passed as an option to B<cvs-buildpackage>. The first non-B<debuild> "
+"option detected will signal the start of the B<cvs-buildpackage> options."
+msgstr ""
+"Ce programme ne fait que sauvegarder les options pour B<debuild> et "
+"B<lintian>, pour les passer ensuite à B<debuild> lorsqu'il est appelé par "
+"B<cvs-buildpackage>. Toutes les options standards de B<debuild> peuvent être "
+"utilisées (voir la liste ci-dessous), mais notez que les commandes pour "
+"devenir superutilisateur, indiquées par les options B<--rootcmd> ou B<-r>, "
+"seront passées en option de B<cvs-buildpackage>. La première option détectée "
+"comme n'étant pas pour B<debuild> indique le début des options pour B<cvs-"
+"buildpackage>."
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:29
+msgid ""
+"The selection of the root command is slightly subtle: if there are any "
+"command-line options, these will be used. If not, then if B<cvs-"
+"buildpackage> is set up to use a default root command, that will be used. "
+"Finally, if neither of these are the case, then B<debuild> will use its "
+"procedures to determine an appropriate command, as described in its "
+"documentation."
+msgstr ""
+"Le choix de la commande pour devenir superutilisateur est un peu subtil : si "
+"elle est fournie par une option de la ligne de commande, celle-ci est "
+"utilisée. Sinon, si B<cvs-buildpackage> est configuré pour en utiliser une "
+"par défaut, celle-ci est utilisée. Enfin, B<debuild> utilisera ses "
+"procédures pour déterminer la commande appropriée, comme décrit dans sa "
+"documentation."
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:32
+msgid ""
+"See the manpages for B<debuild>(1) and B<cvs-buildpackage> for more "
+"information about the behaviour of each."
+msgstr ""
+"Consultez les pages de manuel de B<debuild>(1) et de B<cvs-buildpackage>(1) "
+"pour plus d'informations sur leur comportement."
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:38
+msgid ""
+"The following are the B<debuild> options recognised by B<cvs-debuild>. All "
+"B<cvs-buildpackage> and B<lintian> options are simply passed to the "
+"appropriate program. For explanations of the meanings of these variables, "
+"see B<debuild>(1)."
+msgstr ""
+"Voici les options de B<debuild> reconnues par B<cvs-debuild>. Toutes les "
+"options de B<cvs-buildpackage> et B<lintian> sont simplement passées aux "
+"programmes appropriés. Pour des explications sur la signification de ces "
+"options, veuillez consulter B<debuild>(1)."
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:40 ../scripts/debuild.1:225
+#, no-wrap
+msgid "B<--rootcmd=>I<gain-root-command>, B<-r>I<gain-root-command>"
+msgstr "B<--rootcmd=>I<commande-pour-devenir-superutilisateur>, B<-r>I<commande-pour-devenir-superutilisateur>"
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:42 ../scripts/debuild.1:228
+#, no-wrap
+msgid "B<--preserve-env>"
+msgstr "B<--preserve-env>"
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:44 ../scripts/debuild.1:231
+#, no-wrap
+msgid "B<--preserve-envvar=>I<var>, B<-e>I<var>"
+msgstr "B<--preserve-envvar=>I<var>, B<-e>I<var>"
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:46 ../scripts/debuild.1:238
+#, no-wrap
+msgid "B<--set-envvar=>I<var>B<=>I<value>, B<-e>I<var>B<=>I<value>"
+msgstr "B<--set-envvar=>I<var>B<=>I<valeur>, B<-e>I<var>B<=>I<valeur>"
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:48
+#, no-wrap
+msgid "B<--lintian>, B<--no-lintian>"
+msgstr "B<--lintian>, B<--no-lintian>"
+
+#. type: TP
+#: ../scripts/cvs-debuild.1:50
+#, no-wrap
+msgid "B<--ignore-dirname>, B<--check-dirname>"
+msgstr "B<--ignore-dirname>, B<--check-dirname>"
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:53
+msgid "These should not be needed, but it is provided nevertheless."
+msgstr ""
+"Ces options ne devraient pas être nécessaires, mais sont néanmoins fournies."
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:58
+msgid ""
+"B<cvs-buildpackage>(1), B<debuild>(1), B<dpkg-buildpackage>(1), B<lintian>(1)"
+msgstr ""
+"B<cvs-buildpackage>(1), B<debuild>(1), B<dpkg-buildpackage>(1), B<lintian>(1)"
+
+#. type: Plain text
+#: ../scripts/cvs-debuild.1:59
+msgid "This program was written by Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr "Ce programme a été écrit par Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#. type: TH
+#: ../scripts/dcmd.1:1
+#, no-wrap
+msgid "DCMD"
+msgstr "DCMD"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:4
+msgid "dcmd - expand file lists of .dsc/.changes files in the command line"
+msgstr ""
+"dcmd - Développer la liste des fichiers d'un fichier .dsc ou .changes sur "
+"une ligne de commande"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:6
+msgid "B<dcmd> [I<options>] [I<command>] [I<changes-file>|I<dsc-file>] ..."
+msgstr ""
+"B<dcmd> [I<options>] [I<commande>] [I<fichier-changes>|I<fichier-dsc>] ..."
+
+#. type: Plain text
+#: ../scripts/dcmd.1:11
+msgid ""
+"B<dcmd> replaces any reference to a I<.dsc> or I<.changes> file in the "
+"command line with the list of files in its 'Files' section, plus the file "
+"itself. It allows easy manipulation of all the files involved in an upload "
+"(for I<.changes> files) or a source package (for I<.dsc> files)."
+msgstr ""
+"B<dcmd> remplace toutes les références à un fichier I<.dsc> ou I<.changes> "
+"sur la ligne de commande par la liste des fichiers de sa section « Files », "
+"plus le fichier lui-même. Cela facilite la manipulation de tous les fichiers "
+"impliqués dans un envoi (pour les fichiers I<.changes>) ou un paquet source "
+"(pour les fichiers I<.dsc>)."
+
+#. type: Plain text
+#: ../scripts/dcmd.1:15
+msgid ""
+"If I<command> is omitted (that is the first argument is an existing I<.dsc> "
+"or I<.changes> file), the expanded list of files is printed to stdout, one "
+"file by line. Useful for usage in backticks."
+msgstr ""
+"Si aucune I<commande> n'est fournie (c'est-à-dire si le premier paramètre "
+"est un fichier I<.dsc> ou I<.changes>), la liste des fichiers est affichée "
+"sur la sortie standard, un fichier par ligne. C'est utile pour l'utilisation "
+"dans une autre commande."
+
+#. type: Plain text
+#: ../scripts/dcmd.1:19
+msgid ""
+"There are a number of options which may be used in order to select only a "
+"subset of the files listed in the I<.dsc> or I<.changes> file. If a "
+"requested file is not found, an error message will be printed."
+msgstr ""
+"Différentes options permettent de ne sélectionner qu'une partie des fichiers "
+"listés dans le fichier I<.dsc> ou I<.changes>. Si un fichier demandé n'est "
+"pas trouvé, un message d'erreur est affiché."
+
+#. type: TP
+#: ../scripts/dcmd.1:19
+#, no-wrap
+msgid "B<--dsc>"
+msgstr "B<--dsc>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:22
+msgid "Select the I<.dsc> file."
+msgstr "Sélectionner le fichier I<.dsc>."
+
+#. type: TP
+#: ../scripts/dcmd.1:22
+#, no-wrap
+msgid "B<--schanges>"
+msgstr "B<--schanges>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:25
+msgid "Select I<.changes> files for the 'source' architecture."
+msgstr "Sélectionner les fichiers I<.changes> pour l'architecture « source »."
+
+#. type: TP
+#: ../scripts/dcmd.1:25
+#, no-wrap
+msgid "B<--bchanges>"
+msgstr "B<--bchanges>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:28
+msgid "Select I<.changes> files for binary architectures."
+msgstr "Sélectionner les fichiers I<.changes> pour les architectures binaires."
+
+#. type: TP
+#: ../scripts/dcmd.1:28
+#, no-wrap
+msgid "B<--changes>"
+msgstr "B<--changes>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:31
+msgid "Select I<.changes> files. Implies B<--schanges> and B<--bchanges>."
+msgstr ""
+"Sélectionner les fichiers I<.changes>. Implique B<--schanges> et B<--"
+"bchanges>."
+
+#. type: TP
+#: ../scripts/dcmd.1:31
+#, no-wrap
+msgid "B<--archdeb>"
+msgstr "B<--archdeb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:34
+msgid "Select architecture-dependent binary packages (I<.deb> files)."
+msgstr ""
+"Sélectionner les paquets binaires (fichiers I<.deb>) spécifiques à une "
+"architecture."
+
+#. type: TP
+#: ../scripts/dcmd.1:34
+#, no-wrap
+msgid "B<--indepdeb>"
+msgstr "B<--indepdeb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:37
+msgid "Select architecture-independent binary packages (I<.deb> files)."
+msgstr ""
+"Sélectionner les paquets binaires (fichiers I<.deb>) non spécifiques à une "
+"architecture."
+
+#. type: TP
+#: ../scripts/dcmd.1:37
+#, no-wrap
+msgid "B<--deb>"
+msgstr "B<--deb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:40
+msgid ""
+"Select binary packages (I<.deb> files). Implies B<--archdeb> and B<--"
+"indepdeb>."
+msgstr ""
+"Sélectionner les paquets binaires (fichiers I<.deb>). Implique B<--archdeb> "
+"et B<--indepdeb>."
+
+#. type: TP
+#: ../scripts/dcmd.1:40
+#, no-wrap
+msgid "B<--archudeb>"
+msgstr "B<--archudeb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:43
+msgid "Select architecture-dependent I<.udeb> binary packages."
+msgstr ""
+"Sélectionner les paquets I<.udeb> binaires spécifiques à une architecture."
+
+#. type: TP
+#: ../scripts/dcmd.1:43
+#, no-wrap
+msgid "B<--indepudeb>"
+msgstr "B<--indepudeb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:46
+msgid "Select architecture-independent I<.udeb> binary packages."
+msgstr ""
+"Sélectionner les paquets I<.udeb> binaires non spécifiques à une "
+"architecture."
+
+#. type: TP
+#: ../scripts/dcmd.1:46
+#, no-wrap
+msgid "B<--udeb>"
+msgstr "B<--udeb>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:49
+msgid ""
+"Select I<.udeb> binary packages. Implies B<--archudeb> and B<--indepudeb>."
+msgstr ""
+"Sélectionner les paquets I<.udeb> binaires. Implique B<--archudeb> et B<--"
+"indepudeb>."
+
+#. type: TP
+#: ../scripts/dcmd.1:49
+#, no-wrap
+msgid "B<--tar>,\\ B<--orig>"
+msgstr "B<--tar>, B<--orig>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:52
+msgid "Select the upstream I<.tar> file."
+msgstr "Sélectionner le fichier I<.tar> amont."
+
+#. type: TP
+#: ../scripts/dcmd.1:52
+#, no-wrap
+msgid "B<--diff>,\\ B<--debtar>"
+msgstr "B<--diff>, B<--debtar>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:55
+msgid "Select the Debian I<.debian.tar> or I<.diff> file."
+msgstr "Sélectionner le fichier Debian I<.debian.tar> ou I<.diff>."
+
+#. type: Plain text
+#: ../scripts/dcmd.1:58
+msgid ""
+"Each option may be prefixed by B<--no> to indicate that all files I<not> "
+"matching the specification should be selected."
+msgstr ""
+"Chaque option peut être préfixée par B<--no> pour indiquer que tous les "
+"fichiers qui ne correspondent I<pas> aux indications doivent être "
+"sélectionnés."
+
+#. type: Plain text
+#: ../scripts/dcmd.1:62
+msgid ""
+"It is not possible to combine positive filtering options (e.g. B<--dsc>) "
+"and negative filtering options (e.g. B<--no-changes>) in the same B<dcmd> "
+"invocation."
+msgstr ""
+"Il n'est pas possible de combiner les options de filtrage positives (par "
+"exemple B<--dsc>) et négatives (par exemple B<--no-changes>) dans le même "
+"appel à B<dcmd>."
+
+#. type: TP
+#: ../scripts/dcmd.1:62
+#, no-wrap
+msgid "B<--no-fail-on-missing>, B<-r>"
+msgstr "B<--no-fail-on-missing>, B<-r>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:65
+msgid "If any of the requested files were not found, do not output an error."
+msgstr ""
+"Si un des fichiers demandés n'est pas trouvé, ne pas afficher d'erreur."
+
+#. type: TP
+#: ../scripts/dcmd.1:65
+#, no-wrap
+msgid "B<--package>, B<-p>"
+msgstr "B<--package>, B<-p>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:68
+msgid "Output package name part only."
+msgstr "N’afficher que la partie du nom de paquet."
+
+#. type: TP
+#: ../scripts/dcmd.1:68
+#, no-wrap
+msgid "B<--sort>, B<-s>"
+msgstr "B<--sort>, B<-s>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:71
+msgid "Sort output alphabetically."
+msgstr "Trier alphabétiquement en sortie."
+
+#. type: TP
+#: ../scripts/dcmd.1:71
+#, no-wrap
+msgid "B<--tac>, B<-t>"
+msgstr "B<--tac>, B<-t>"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:74
+msgid "Reverse output order."
+msgstr "Inverser l’ordre de sortie."
+
+#. type: =head1
+#: ../scripts/dcmd.1:75 ../scripts/debsnap.1:93 ../scripts/debuild.1:367
+#: ../scripts/dget.pl:660 ../scripts/getbuildlog.1:31 ../scripts/rc-alert.1:96
+#: ../scripts/who-permits-upload.pl:133
+#, no-wrap
+msgid "EXAMPLES"
+msgstr "EXEMPLES"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:77
+msgid "Copy the result of a build to another machine:"
+msgstr ""
+"Copier le résultat d'une construction de paquet sur une autre machine :"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:85
+#, no-wrap
+msgid ""
+"$ dcmd scp rcs_5.7-23_amd64.changes elegiac:/tmp\n"
+"rcs_5.7-23.dsc 100% 490 0.5KB/s 00:00\n"
+"rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.changes 100% 1095 1.1KB/s 00:00\n"
+"$\n"
+msgstr ""
+"$ dcmd scp rcs_5.7-23_amd64.changes elegiac:/tmp\n"
+"rcs_5.7-23.dsc 100% 490 0.5KB/s 00:00\n"
+"rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.changes 100% 1095 1.1KB/s 00:00\n"
+"$\n"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:90
+#, no-wrap
+msgid ""
+"$ dcmd --diff --deb scp rcs_5.7-23_amd64.changes elegiac:/tmp\n"
+"rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00\n"
+"$\n"
+msgstr ""
+"$ dcmd --diff --deb scp rcs_5.7-23_amd64.changes elegiac:/tmp\n"
+"rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00\n"
+"rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00\n"
+"$\n"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:93
+msgid "Check the contents of a source package:"
+msgstr "Vérifier le contenu d'un paquet source :"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:100
+#, no-wrap
+msgid ""
+"$ dcmd md5sum rcs_5.7-23.dsc\n"
+"8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz\n"
+"f0ceeae96603e823eacba6721a30b5c7 rcs_5.7-23.diff.gz\n"
+"5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc\n"
+"$\n"
+msgstr ""
+"$ dcmd md5sum rcs_5.7-23.dsc\n"
+"8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz\n"
+"f0ceeae96603e823eacba6721a30b5c7 rcs_5.7-23.diff.gz\n"
+"5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc\n"
+"$\n"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:105
+#, no-wrap
+msgid ""
+"$ dcmd --no-diff md5sum rcs_5.7-23.dsc\n"
+"8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz\n"
+"5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc\n"
+"$\n"
+msgstr ""
+"$ dcmd --no-diff md5sum rcs_5.7-23.dsc\n"
+"8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz\n"
+"5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc\n"
+"$\n"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:110
+msgid "B<dpkg-genchanges>(1), B<dpkg-source>(1)"
+msgstr "B<dpkg-genchanges>(1), B<dpkg-source>(1)"
+
+#. type: Plain text
+#: ../scripts/dcmd.1:112
+msgid ""
+"This program was written by Romain Francoise E<lt>rfrancoise@debian.orgE<gt> "
+"and is released under the GPL, version 2 or later."
+msgstr ""
+"Ce programme a été écrit par Romain Françoise E<lt>rfrancoise@debian."
+"orgE<gt> et est distribué sous licence GPL, version 2 ou ultérieure."
+
+# NOTE: -- -> -
+#. type: textblock
+#: ../scripts/dcontrol.pl:198
+msgid ""
+"dcontrol -- Query package and source control files for all Debian "
+"distributions"
+msgstr ""
+"dcontrol - Interroger les fichiers de contrôle des paquets source et "
+"binaires pour toutes les distributions Debian"
+
+#. type: =item
+#: ../scripts/dcontrol.pl:204
+msgid "B<dcontrol> [I<options>] I<package>[I<modifiers>] ..."
+msgstr "B<dcontrol> [I<options>] I<paquet>[I<modificateur>] ..."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:210
+msgid ""
+"B<dcontrol> queries a remote database of Debian binary and source package "
+"control files. It can be thought of as an B<apt-cache> webservice that also "
+"operates for distributions and architectures different from the local "
+"machine."
+msgstr ""
+"B<dcontrol> interroge une base de données distante des fichiers de contrôle "
+"des paquets Debian source ou binaires. On peut le considérer comme un "
+"service web de type B<apt-cache> qui fonctionne pour les distributions et "
+"les architectures autres que celles de la machine locale."
+
+#. type: =head1
+#: ../scripts/dcontrol.pl:214
+msgid "MODIFIERS"
+msgstr "MODIFICATEURS"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:216
+msgid "Like B<apt-cache>, packages can be suffixed by modifiers:"
+msgstr ""
+"Comme pour B<apt-cache>, un modificateur peut être ajouté en suffixe du "
+"paquet :"
+
+#. type: =item
+#: ../scripts/dcontrol.pl:220
+msgid "B<=>I<version>"
+msgstr "B<=>I<version>"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:222
+msgid "Exact version match"
+msgstr "Correspondance de version exacte"
+
+#. type: =item
+#: ../scripts/dcontrol.pl:224
+msgid "B<@>I<architecture>"
+msgstr "B<@>I<architecture>"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:226
+msgid ""
+"Query this only architecture. Use B<@source> for source packages, B<@binary> "
+"excludes source packages."
+msgstr ""
+"N'interroger que cette architecture. Utilisez B<@source> pour les paquets "
+"source, B<@binary> exclut les paquets source."
+
+#. type: =item
+#: ../scripts/dcontrol.pl:229
+msgid "B</>[I<archive>B<:>][I<suite>][B</>I<component>]"
+msgstr "B</>[I<archive>B<:>][I<suite>][B</>I<composante>]"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:231
+msgid ""
+"Restrict to I<archive> (debian, debian-backports, debian-security, debian-"
+"volatile), I<suite> (always codenames, with the exception of experimental), "
+"and/or I<component> (main, updates/main, ...). Use two slashes (B<//>) to "
+"separate suite and component if the suite name contains slashes. (Component "
+"can be left empty.)"
+msgstr ""
+"Restreindre à l'I<archive> (debian, debian-backports, debian-security, "
+"debian-volatile), la I<suite> (toujours des noms de code, à l'exception "
+"d'experimental), et la I<composante> (main, updates/main, ...). Utilisez "
+"deux barres obliques (B<//>) pour séparer la suite de la composante si le "
+"nom de la suite contient une barre oblique (la composante peut rester vide)."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:239
+msgid ""
+"By default, all versions, suites, and architectures are queried. Refer to "
+"B<https://qa.debian.org/cgi-bin/dcontrol> for currently supported values."
+msgstr ""
+"Par défaut, toutes les versions, toutes les suites et toutes les "
+"architectures sont interrogées. Consultez B<https://qa.debian.org/cgi-bin/"
+"dcontrol> pour les valeurs prises en charge."
+
+#. type: =item
+#: ../scripts/dcontrol.pl:246
+msgid "B<-s>, B<--show-suites>"
+msgstr "B<-s>, B<--show-suites>"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:248
+msgid "Add headers showing which distribution the control file is from."
+msgstr ""
+"Ajouter des en-têtes indiquant de quelle distribution le fichier de contrôle "
+"provient."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:252
+msgid "Print URL queried."
+msgstr "Afficher l'URL demandée."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:256 ../scripts/dget.pl:623
+msgid "Show a help message."
+msgstr "Afficher un message d'aide."
+
+#. type: TP
+#: ../scripts/dcontrol.pl:258 ../scripts/dd-list.1:96 ../scripts/dget.pl:625
+#: ../scripts/getbuildlog.1:28
+#, no-wrap
+msgid "B<-V>, B<--version>"
+msgstr "B<-V>, B<--version>"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:260 ../scripts/dget.pl:627
+msgid "Show version information."
+msgstr "Afficher les informations sur la version."
+
+# NOTE: presque identique
+#. type: textblock
+#: ../scripts/dcontrol.pl:266 ../scripts/dget.pl:633
+msgid ""
+"The two configuration files F</etc/devscripts.conf> and F<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file settings. "
+"Environment variable settings are ignored for this purpose. The currently "
+"recognised variable is:"
+msgstr ""
+"Les deux fichiers de configuration I</etc/devscripts.conf> et I<~/."
+"devscripts> sont chargés dans cet ordre par un interpréteur de commandes "
+"pour définir les variables de configuration. Des options de ligne de "
+"commande peuvent être utilisées pour écraser les paramètres des fichiers de "
+"configuration. Les paramètres des variables d'environnement sont ignorés à "
+"cette fin. La variable actuellement reconnue est :"
+
+#. type: =item
+#: ../scripts/dcontrol.pl:274
+msgid "DCONTROL_URL"
+msgstr "DCONTROL_URL"
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:276
+msgid "URL to query. Default is B<https://qa.debian.org/cgi-bin/dcontrol>."
+msgstr ""
+"URL à interroger. C'est par défaut B<https://qa.debian.org/cgi-bin/dcontrol>."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:282
+msgid "This program is Copyright (C) 2009 by Christoph Berg <myon@debian.org>."
+msgstr "Ce programme est Copyright (C) 2009 Christoph Berg <myon@debian.org>."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:284 ../scripts/dget.pl:680
+#: ../scripts/tagpending.pl:439
+msgid ""
+"This program is licensed under the terms of the GPL, either version 2 of the "
+"License, or (at your option) any later version."
+msgstr ""
+"Ce programme est publié sous les termes de la Licence Publique Générale "
+"(GPL) version 2 ou toute version ultérieure (à votre discrétion)."
+
+#. type: textblock
+#: ../scripts/dcontrol.pl:289
+msgid "B<apt-cache>(1)"
+msgstr "B<apt-cache>(1)"
+
+#. type: TH
+#: ../scripts/dd-list.1:16
+#, no-wrap
+msgid "DD-LIST"
+msgstr "DD-LIST"
+
+#. type: TH
+#: ../scripts/dd-list.1:16
+#, no-wrap
+msgid "2011-10-27"
+msgstr "27 octobre 2011"
+
+#. type: TH
+#: ../scripts/dd-list.1:16
+#, no-wrap
+msgid "Debian"
+msgstr "Debian"
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:21
+msgid "dd-list - nicely list .deb packages and their maintainers"
+msgstr ""
+"dd-list - Afficher une jolie liste de paquets .deb et de leurs responsables"
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:26
+msgid ""
+"B<dd-list> [B<-hiusV>] [B<--help>] [B<--stdin>] [B<--sources "
+">I<Sources_file>] [B<--dctrl>] [B<--version>] [B<--uploaders>] "
+"[I<package> ...]"
+msgstr ""
+"B<dd-list> [B<-hiusV>] [B<--help>] [B<--stdin>] [B<--sources> "
+"I<fichier_Sources>] [B<--dctrl>] [B<--version>] [B<--uploaders>] "
+"[I<paquet> ...]"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:30
+msgid ""
+"B<dd-list> produces nicely formatted lists of Debian (.deb) packages and "
+"their maintainers."
+msgstr ""
+"B<dd-list> produit des listes de paquets Debian (.deb) et de leurs "
+"responsables, joliment formatées."
+
+#. type: Plain text
+#: ../scripts/dd-list.1:37
+msgid ""
+"Input is a list of source or binary package names on the command line (or "
+"the standard input if B<--stdin> is given). Output is a list of the "
+"following format, where package names are source packages by default:"
+msgstr ""
+"Une liste de noms de paquets source ou binaires est attendue en tant que "
+"paramètre de la ligne de commande (ou sur l'entrée standard si l'option B<--"
+"stdin> est fournie). La sortie est une liste au format suivant, où les noms "
+"de paquets sont, par défaut, des noms de paquets source :"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:41
+#, no-wrap
+msgid "J. Random Developer E<lt>jrandom@debian.orgE<gt>\n"
+msgstr "J. Random Developer E<lt>jrandom@debian.orgE<gt>\n"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:44
+#, no-wrap
+msgid ""
+"j-random-package\n"
+"j-random-other\n"
+msgstr ""
+"j-random-package\n"
+"j-random-other\n"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:47
+#, no-wrap
+msgid "Diana Hacker E<lt>diana@example.orgE<gt>\n"
+msgstr "Diana Hacker E<lt>diana@example.orgE<gt>\n"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:50
+#, no-wrap
+msgid ""
+"fun-package\n"
+"more-fun-package\n"
+msgstr ""
+"fun-package\n"
+"more-fun-package\n"
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:58
+msgid ""
+"This is useful when you want, for example, to produce a list of packages "
+"that need to attention from their maintainers, e.g., to be rebuilt when a "
+"library version transition happens."
+msgstr ""
+"C'est utile quand vous voulez, par exemple, obtenir une liste des paquets "
+"qui demandent l'attention de leurs responsables, par exemple lorsqu'ils "
+"doivent être reconstruits suite à une transition de bibliothèque."
+
+#. type: Plain text
+#: ../scripts/dd-list.1:62
+msgid "Print brief help message."
+msgstr "Afficher un bref message d'aide."
+
+#. type: TP
+#: ../scripts/dd-list.1:62
+#, no-wrap
+msgid "B<-i>, B<--stdin>"
+msgstr "B<-i>, B<--stdin>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:66
+msgid ""
+"Read package names from the standard input, instead of taking them from the "
+"command line. Package names are whitespace delimited."
+msgstr ""
+"Lire les noms de paquets depuis l'entrée standard, plutôt que les obtenir "
+"depuis la ligne de commande. Les noms de paquets doivent être séparés par "
+"des espaces."
+
+#. type: TP
+#: ../scripts/dd-list.1:66
+#, no-wrap
+msgid "B<-d>, B<--dctrl>"
+msgstr "B<-d>, B<--dctrl>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:73
+msgid ""
+"Read package list from standard input in the format of a Debian package "
+"control file. This includes the status file, or output of apt-cache. This is "
+"the fastest way to use dd-list, as it uses the maintainer information from "
+"the input instead of looking up the maintainer of each listed package."
+msgstr ""
+"Lire la liste de paquets depuis l'entrée standard, au format du fichier de "
+"contrôle Debian (« debian/control »). Cela inclut le fichier d'état, ou la "
+"sortie d'apt-cache. C'est l'utilisation la plus rapide de dd-list, "
+"puisqu'elle utilise les informations de responsable depuis l'entrée plutôt "
+"que de rechercher les responsables de chaque paquet."
+
+#. type: Plain text
+#: ../scripts/dd-list.1:76
+msgid ""
+"If no I<Source:> line is given, the I<Package:> name is used for output, "
+"which might be a binary package name."
+msgstr ""
+"Si aucune ligne I<Source:> n'est donnée, le nom de I<Package:> est utilisé "
+"en sortie, et peut être un nom de paquet binaire."
+
+#. type: TP
+#: ../scripts/dd-list.1:76
+#, no-wrap
+msgid "B<-s>, B<--sources> I<Sources_file>"
+msgstr "B<-s>, B<--sources> I<fichier_Sources>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:80
+msgid ""
+"Read package information from the specified I<Sources_file>s. This can be "
+"given multiple times."
+msgstr ""
+"Lire les renseignements sur le paquet depuis le (ou les) I<fichier_Sources> "
+"indiqué(s). Cette option peut être indiquée plusieurs fois."
+
+#. type: Plain text
+#: ../scripts/dd-list.1:83
+msgid ""
+"If no I<Sources_file>s are specified, any files matching I</var/lib/apt/"
+"lists/*_source_Sources> will be used."
+msgstr ""
+"Si aucun I<fichier_Sources> n'est indiqué, tous les fichiers correspondant à "
+"I</var/lib/apt/lists/*_source_Sources> seront utilisés."
+
+#. type: TP
+#: ../scripts/dd-list.1:83
+#, no-wrap
+msgid "B<-u>, B<--uploaders>"
+msgstr "B<-u>, B<--uploaders>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:88
+msgid ""
+"Also list developers who are named as uploaders of packages, not only the "
+"maintainers; this is the default behaviour, use --nouploaders to prevent it. "
+"Uploaders are indicated with \"(U)\" appended to the package name."
+msgstr ""
+"Afficher aussi la liste des développeurs marqués comme « uploaders » des "
+"paquets et non seulement les responsables ; c'est le comportement par "
+"défaut, utilisez --nouploaders si ce n'est pas ce que vous souhaitez. Les "
+"uploaders sont indiqués avec un « (U) » ajouté en fin de nom de paquet."
+
+#. type: TP
+#: ../scripts/dd-list.1:88
+#, no-wrap
+msgid "B<-nou>, B<--nouploaders>"
+msgstr "B<-nou>, B<--nouploaders>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:91
+msgid "Only list package Maintainers, do not list Uploaders."
+msgstr ""
+"N'afficher que la liste des responsables (Maintainers) d'un paquet, pas les "
+"Uploaders."
+
+#. type: TP
+#: ../scripts/dd-list.1:91
+#, no-wrap
+msgid "B<-b>, B<--print-binary>"
+msgstr "B<-b>, B<--print-binary>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:96
+msgid ""
+"Use binary package names in the output instead of source package names (has "
+"no effect with B<--dctrl> if the I<Package:> line contains source package "
+"names)."
+msgstr ""
+"Utiliser des noms de paquets binaires pour la sortie, plutôt que des noms de "
+"paquets source (sans effet avec B<--dctrl> si la ligne I<Package:> contient "
+"des noms de paquets source)."
+
+#. --------------------------------------------------------------------
+#. type: Plain text
+#: ../scripts/dd-list.1:100
+msgid "Print the version."
+msgstr "Afficher la version."
+
+#. type: Plain text
+#: ../scripts/dd-list.1:102
+msgid "Lars Wirzenius E<lt>liw@iki.fiE<gt>"
+msgstr "Lars Wirzenius E<lt>liw@iki.fiE<gt>"
+
+#. type: Plain text
+#: ../scripts/dd-list.1:103
+msgid "Joey Hess E<lt>joeyh@debian.orgE<gt>"
+msgstr "Joey Hess E<lt>joeyh@debian.orgE<gt>"
+
+#. type: TH
+#: ../scripts/debc.1:1
+#, no-wrap
+msgid "DEBC"
+msgstr "DEBC"
+
+#. type: Plain text
+#: ../scripts/debc.1:4
+msgid "debc - view contents of a generated Debian package"
+msgstr "debc - Visualiser le contenu d'un paquet Debian créé"
+
+#. type: Plain text
+#: ../scripts/debc.1:6
+msgid "B<debc> [I<options>] [I<changes file>] [I<package> ...]"
+msgstr "B<debc> [I<options>] [I<fichier_changes>] [I<paquet> ...]"
+
+#. type: Plain text
+#: ../scripts/debc.1:25
+msgid ""
+"B<debc> figures out the current version of a package and displays "
+"information about the I<.deb> and I<.udeb> files which have been generated "
+"in the current build process. If a I<.changes> file is specified on the "
+"command line, the filename must end with I<.changes>, as this is how the "
+"program distinguishes it from package names. If not, then B<debc> has to be "
+"called from within the source code directory tree. In this case, it will "
+"look for the I<.changes> file corresponding to the current package version "
+"(by determining the name and version number from the changelog, and the "
+"architecture in the same way as B<dpkg-buildpackage>(1) does). It then runs "
+"B<dpkg-deb -I> and B<dpkg-deb -c> on every I<.deb> and I<.udeb> archive "
+"listed in the I<.changes> file to display information about the contents of "
+"the I<.deb> / I<.udeb> files. It precedes every I<.deb> or I<.udeb> file "
+"with the name of the file. It assumes that all of the I<.deb> / I<.udeb> "
+"archives live in the same directory as the I<.changes> file. It is useful "
+"for ensuring that the expected files have ended up in the Debian package."
+msgstr ""
+"B<debc> détermine la version d'un paquet et affiche des informations "
+"concernant les fichiers I<.deb> et I<.udeb> produits. Si un fichier I<."
+"changes> est indiqué en ligne de commande, le nom du fichier doit se "
+"terminer par I<.changes>, puisque c'est comme cela que le programme le "
+"différencie d'un nom de paquet. Sinon, B<debc> doit être appelé depuis le "
+"répertoire du code source. Dans ce cas, il recherchera un fichier I<."
+"changes> correspondant à la version du paquet ; pour cela, il détermine le "
+"nom et la version grâce au fichier I<changelog>, et l'architecture est "
+"cherchée comme B<dpkg-buildpackage>(1) le ferait. Il exécute ensuite B<dpkg-"
+"deb -I> et B<dpkg-deb -c> pour toutes les archives I<.deb> listées dans le "
+"fichier I<.changes> pour afficher des informations sur le contenu des "
+"fichiers I<.deb> et I<.udeb>. Il place devant tous les fichiers I<.deb> ou "
+"I<.udeb> le nom du fichier. Il suppose que toutes ces archives I<.deb> ou I<."
+"udeb> se trouvent dans le même répertoire que le fichier I<.changes>. C'est "
+"utile pour s'assurer que tous les fichiers attendus se trouvent dans le "
+"paquet Debian."
+
+#. type: Plain text
+#: ../scripts/debc.1:28
+msgid ""
+"If a list of packages is given on the command line, then only those debs or "
+"udebs with names in this list of packages will be processed."
+msgstr ""
+"Si une liste de paquets est fournie en ligne de commande, alors seuls les "
+"paquets Debian (I<.deb> ou I<.udeb>) dont les noms sont dans la liste seront "
+"considérés."
+
+#. type: SH
+#: ../scripts/debc.1:28 ../scripts/debchange.1:105 ../scripts/debclean.1:24
+#: ../scripts/debi.1:29 ../scripts/debrelease.1:20 ../scripts/debuild.1:49
+#: ../scripts/uscan.1:306
+#, no-wrap
+msgid "Directory name checking"
+msgstr "Vérification du nom du répertoire"
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/debc.1:39
+msgid ""
+"In common with several other scripts in the B<devscripts> package, B<debc> "
+"will climb the directory tree until it finds a I<debian/changelog> file. As "
+"a safeguard against stray files causing potential problems, it will examine "
+"the name of the parent directory once it finds the I<debian/changelog> file, "
+"and check that the directory name corresponds to the package name. "
+"Precisely how it does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and B<--"
+"check-dirname-regex>."
+msgstr ""
+"Comme plusieurs autres scripts du paquet B<devscripts>, B<debc> parcourt une "
+"arborescence de répertoires jusqu'à trouver un fichier I<debian/changelog>. "
+"Pour éviter les problèmes posés par les fichiers égarés, il examine le nom "
+"du répertoire parent une fois qu'il a trouvé le fichier I<debian/changelog>, "
+"et vérifie que le nom du répertoire correspond au nom du paquet. La méthode "
+"précise utilisée est contrôlée par les deux variables du fichier de "
+"configuration B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> et "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, et les options en ligne de commande "
+"associées B<--check-dirname-level> et B<--check-dirname-regex>."
+
+#. type: Plain text
+#: ../scripts/debc.1:41 ../scripts/debchange.1:118 ../scripts/debclean.1:37
+#: ../scripts/debi.1:42 ../scripts/debrelease.1:33 ../scripts/debuild.1:63
+#: ../scripts/uscan.1:323
+msgid "B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> can take the following values:"
+msgstr "B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> peut prendre les valeurs suivantes :"
+
+#. type: TP
+#: ../scripts/debc.1:41 ../scripts/debchange.1:118 ../scripts/debclean.1:37
+#: ../scripts/debi.1:42 ../scripts/debrelease.1:33 ../scripts/debuild.1:63
+#: ../scripts/uscan.1:323
+#, no-wrap
+msgid "B<0>"
+msgstr "B<0>"
+
+#. type: Plain text
+#: ../scripts/debc.1:44 ../scripts/debchange.1:121 ../scripts/debclean.1:40
+#: ../scripts/debi.1:45 ../scripts/debrelease.1:36 ../scripts/debuild.1:66
+#: ../scripts/uscan.1:326
+msgid "Never check the directory name."
+msgstr "Ne jamais vérifier le nom du répertoire."
+
+#. type: TP
+#: ../scripts/debc.1:44 ../scripts/debchange.1:121 ../scripts/debclean.1:40
+#: ../scripts/debi.1:45 ../scripts/debrelease.1:36 ../scripts/debuild.1:66
+#: ../scripts/uscan.1:326
+#, no-wrap
+msgid "B<1>"
+msgstr "B<1>"
+
+#. type: Plain text
+#: ../scripts/debc.1:48 ../scripts/debchange.1:125 ../scripts/debclean.1:44
+#: ../scripts/debi.1:49 ../scripts/debrelease.1:40 ../scripts/debuild.1:70
+msgid ""
+"Only check the directory name if we have had to change directory in our "
+"search for I<debian/changelog>. This is the default behaviour."
+msgstr ""
+"Ne vérifier le nom du répertoire que s'il a fallu changer de répertoire pour "
+"trouver le fichier I<debian/changelog>. C'est le comportement par défaut."
+
+#. type: TP
+#: ../scripts/debc.1:48 ../scripts/debchange.1:125 ../scripts/debclean.1:44
+#: ../scripts/debi.1:49 ../scripts/debrelease.1:40 ../scripts/debuild.1:70
+#: ../scripts/uscan.1:332
+#, no-wrap
+msgid "B<2>"
+msgstr "B<2>"
+
+#. type: Plain text
+#: ../scripts/debc.1:51 ../scripts/debchange.1:128 ../scripts/debclean.1:47
+#: ../scripts/debi.1:52 ../scripts/debrelease.1:43 ../scripts/debuild.1:73
+#: ../scripts/uscan.1:335
+msgid "Always check the directory name."
+msgstr "Toujours vérifier le nom du répertoire."
+
+#. type: Plain text
+#: ../scripts/debc.1:64 ../scripts/debclean.1:60 ../scripts/debi.1:65
+#: ../scripts/debrelease.1:56
+msgid ""
+"The directory name is checked by testing whether the current directory name "
+"(as determined by B<pwd>(1)) matches the regex given by the configuration "
+"file option B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> or by the command line option "
+"B<--check-dirname-regex> I<regex>. Here I<regex> is a Perl regex (see "
+"B<perlre>(3perl)), which will be anchored at the beginning and the end. If "
+"I<regex> contains a '/', then it must match the full directory path. If "
+"not, then it must match the full directory name. If I<regex> contains the "
+"string \\'PACKAGE', this will be replaced by the source package name, as "
+"determined from the changelog. The default value for the regex is: "
+"\\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and PACKAGE-"
+"version."
+msgstr ""
+"Le nom du répertoire est vérifié en testant si le nom du répertoire actuel "
+"(donné par B<pwd>(1)) correspond à l'expression rationnelle donnée par la "
+"variable B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> du fichier de configuration ou "
+"par l'option B<--check-dirname-regex> I<regex>. Il s'agit d'une expression "
+"rationnelle Perl (voir B<perlre>(1)), qui sera ancrée à son début et à sa "
+"fin. Si elle contient un « / », alors elle doit correspondre au chemin "
+"complet. Si elle contient la chaîne « PACKAGE », cette chaîne sera remplacée "
+"par le nom du paquet source déterminé par le journal de modifications. La "
+"valeur par défaut de cette expression rationnelle est « PACKAGE(-.+)? », ce "
+"qui correspond aux répertoires nommés PACKAGE ou PACKAGE-version."
+
+#. type: TP
+#: ../scripts/debc.1:71 ../scripts/debi.1:72 ../scripts/debrelease.1:81
+#, no-wrap
+msgid "B<--debs-dir> I<directory>"
+msgstr "B<--debs-dir> I<répertoire>"
+
+#. type: Plain text
+#: ../scripts/debc.1:77
+msgid ""
+"Look for the I<.changes>, I<.deb> and I<.udeb> files in I<directory> instead "
+"of the parent of the source directory. This should either be an absolute "
+"path or relative to the top of the source directory."
+msgstr ""
+"Chercher les fichiers I<.changes>, I<.deb> et I<.udeb> dans le I<répertoire> "
+"au lieu du répertoire parent du répertoire source. Cela doit être soit un "
+"chemin absolu, soit un chemin relatif à la racine du répertoire source."
+
+#. type: TP
+#: ../scripts/debc.1:77 ../scripts/debchange.1:369 ../scripts/debclean.1:69
+#: ../scripts/debi.1:87 ../scripts/debrelease.1:87 ../scripts/debuild.1:276
+#: ../scripts/uscan.1:472
+#, no-wrap
+msgid "B<--check-dirname-level> I<N>"
+msgstr "B<--check-dirname-level> I<N>"
+
+#. type: Plain text
+#: ../scripts/debc.1:81 ../scripts/debc.1:85 ../scripts/debclean.1:73
+#: ../scripts/debclean.1:77 ../scripts/debi.1:91 ../scripts/debi.1:95
+#: ../scripts/debrelease.1:91 ../scripts/debrelease.1:95
+#: ../scripts/debuild.1:280 ../scripts/debuild.1:284 ../scripts/uscan.1:476
+#: ../scripts/uscan.1:480
+msgid ""
+"See the above section B<Directory name checking> for an explanation of this "
+"option."
+msgstr ""
+"Veuillez consulter la section B<Vérification du nom du répertoire> ci-dessus "
+"pour une explication de cette option."
+
+#. type: TP
+#: ../scripts/debc.1:81 ../scripts/debchange.1:373 ../scripts/debclean.1:73
+#: ../scripts/debi.1:91 ../scripts/debrelease.1:91 ../scripts/debuild.1:280
+#: ../scripts/uscan.1:476
+#, no-wrap
+msgid "B<--check-dirname-regex> I<regex>"
+msgstr "B<--check-dirname-regex> I<regex>"
+
+# NOTE: et --noconf ?
+#. type: Plain text
+#: ../scripts/debc.1:98 ../scripts/debchange.1:398 ../scripts/debclean.1:96
+#: ../scripts/debi.1:115 ../scripts/debrelease.1:111 ../scripts/debrsign.1:63
+#: ../scripts/debsign.1:112 ../scripts/nmudiff.1:85
+#: ../scripts/pts-subscribe.1:48 ../scripts/uupdate.1:94
+#: ../scripts/who-uploads.1:56
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced in that order to set configuration variables. Command line options "
+"can be used to override configuration file settings. Environment variable "
+"settings are ignored for this purpose. The currently recognised variables "
+"are:"
+msgstr ""
+"Les deux fichiers de configuration I</etc/devscripts.conf> et I<~/."
+"devscripts> sont évalués dans cet ordre pour régler les variables de "
+"configuration. Des options de ligne de commande peuvent être utilisées pour "
+"écraser les paramètres des fichiers de configuration. Les variables "
+"d'environnement sont ignorées à cette fin. Les variables actuellement "
+"identifiées sont :"
+
+#. type: TP
+#: ../scripts/debc.1:98 ../scripts/debi.1:115 ../scripts/debrelease.1:116
+#: ../scripts/debsign.1:124
+#, no-wrap
+msgid "B<DEBRELEASE_DEBS_DIR>"
+msgstr "B<DEBRELEASE_DEBS_DIR>"
+
+#. type: Plain text
+#: ../scripts/debc.1:108
+msgid ""
+"This specifies the directory in which to look for the I<.changes>, I<.deb> "
+"and I<.udeb> files, and is either an absolute path or relative to the top of "
+"the source tree. This corresponds to the B<--debs-dir> command line "
+"option. This directive could be used, for example, if you always use "
+"B<pbuilder> or B<svn-buildpackage> to build your packages. Note that it "
+"also affects B<debrelease>(1) in the same way, hence the strange name of the "
+"option."
+msgstr ""
+"Indique le répertoire dans lequel chercher les fichiers I<.changes>, I<.deb> "
+"et I<.udeb>, et est soit un chemin absolu, soit un chemin relatif à la "
+"racine du répertoire racine. Cela correspond à l'option en ligne de commande "
+"B<--debs-dir>. Cette directive peut être utilisée par exemple si vous "
+"utilisez systématiquement B<pbuilder> ou B<svn-buildpackage> pour construire "
+"vos paquets. Remarquez que cela concerne également B<debrelease>(1), ce qui "
+"explique le nom étrange de l'option."
+
+#. type: TP
+#: ../scripts/debc.1:108 ../scripts/debchange.1:406 ../scripts/debclean.1:100
+#: ../scripts/debi.1:125 ../scripts/debrelease.1:125 ../scripts/debuild.1:360
+#: ../scripts/devscripts.conf.5:42
+#, no-wrap
+msgid "B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL>, B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>"
+msgstr "B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL>, B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>"
+
+#. type: Plain text
+#: ../scripts/debc.1:115 ../scripts/debclean.1:107 ../scripts/debi.1:132
+#: ../scripts/debrelease.1:132 ../scripts/debuild.1:367
+msgid ""
+"See the above section B<Directory name checking> for an explanation of these "
+"variables. Note that these are package-wide configuration variables, and "
+"will therefore affect all B<devscripts> scripts which check their value, as "
+"described in their respective manpages and in B<devscripts.conf>(5)."
+msgstr ""
+"Veuillez consulter la section B<Vérification du nom du répertoire> ci-dessus "
+"pour une explication de ces variables. Remarquez que ce sont des variables "
+"de configuration pour tous les outils du paquet B<devscripts> ; elles "
+"impacteront tous les scripts qui les utilisent, comme indiqué dans leurs "
+"pages de manuel respectives et dans B<devscripts.conf>(5)."
+
+#. type: Plain text
+#: ../scripts/debc.1:119
+msgid "B<debdiff>(1), B<dpkg-deb>(1), B<devscripts.conf>(5)"
+msgstr "B<debdiff>(1), B<dpkg-deb>(1), B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/debc.1:121
+msgid ""
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>, based on an original script by "
+"Christoph Lameter E<lt>clameter@debian.orgE<gt>."
+msgstr ""
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>, basé sur un script de Christoph "
+"Lameter E<lt>clameter@debian.orgE<gt>."
+
+#. type: TH
+#: ../scripts/debchange.1:1
+#, no-wrap
+msgid "DEBCHANGE"
+msgstr "DEBCHANGE"
+
+#. type: Plain text
+#: ../scripts/debchange.1:4
+msgid ""
+"debchange - Tool for maintenance of the debian/changelog file in a source "
+"package"
+msgstr ""
+"debchange - Outil pour la maintenance du fichier debian/changelog d'un "
+"paquet source"
+
+#. type: Plain text
+#: ../scripts/debchange.1:6
+msgid "B<debchange> [I<options>] [I<text> ...]"
+msgstr "B<debchange> [I<options>] [I<texte> ...]"
+
+#. type: Plain text
+#: ../scripts/debchange.1:8
+msgid "B<dch> [I<options>] [I<text> ...]"
+msgstr "B<dch> [I<options>] [I<texte> ...]"
+
+#. type: Plain text
+#: ../scripts/debchange.1:29
+msgid ""
+"B<debchange> or its alias B<dch> will add a new comment line to the Debian "
+"changelog in the current source tree. This command must be run from within "
+"that tree. If the text of the change is given on the command line, "
+"B<debchange> will run in batch mode and simply add the text, with line "
+"breaks as necessary, at the appropriate place in I<debian/changelog> (or the "
+"changelog specified by options, as described below). If no text is "
+"specified then B<debchange> will run the editor as determined by B<sensible-"
+"editor> for you to edit the file. (The environment variables B<VISUAL> and "
+"B<EDITOR> are used in this order to determine which editor to use.) Editors "
+"which understand the I<+n> option for starting the editing on a specified "
+"line will use this to move to the correct line of the file for editing. If "
+"the editor is quit without modifying the temporary file, B<debchange> will "
+"exit without touching the existing changelog. B<Note that the changelog is "
+"assumed to be encoded with the UTF-8 encoding. If it is not, problems may "
+"occur.> Please see the B<iconv>(1) manpage to find out how to convert "
+"changelogs from legacy encodings. Finally, a I<changelog> or I<NEWS> file "
+"can be created from scratch using the B<--create> option described below."
+msgstr ""
+"B<debchange> ou son alias B<dch> ajoute une nouvelle ligne de commentaire au "
+"fichier I<debian/changelog> dans le répertoire des sources. Cette commande "
+"doit être exécutée depuis ce répertoire. Si le texte décrivant le changement "
+"est donné en ligne de commande, B<debchange> s'exécutera de façon "
+"automatique et ajoutera simplement le texte, avec les passages à la ligne "
+"qui s'imposent et à l'emplacement approprié, dans le fichier I<debian/"
+"changelog> (ou le fichier indiqué par les options décrites ci-après). Si "
+"aucun texte n'est renseigné, alors B<debchange> exécute un éditeur "
+"(déterminé par B<sensible-editor>) pour que vous éditiez le fichier. (Les "
+"variables d'environnement B<VISUAL> et B<EDITOR> sont utilisées dans cet "
+"ordre pour déterminer l'éditeur à utiliser.) Pour les éditeurs qui acceptent "
+"l'option I<+n> pour démarrer l'édition à une ligne donnée, cette option sera "
+"utilisée pour positionner l'édition à la bonne ligne. Si l'éditeur est "
+"quitté sans avoir modifié le fichier temporaire, B<debchange> quittera sans "
+"modifier le fichier I<changelog>. B<Remarquez que les fichiers changelog "
+"sont supposés être codés en UTF-8. Dans le cas contraire, des problèmes "
+"peuvent se produire.> Veuillez consulter la page de manuel de B<iconv>(1) "
+"pour trouver comment convertir les fichiers I<changelog> codés autrement. "
+"Enfin, un fichier I<changelog> ou I<NEWS> peut être créé à partir de rien en "
+"utilisant l'option B<--create> décrite ci-dessous."
+
+#. type: Plain text
+#: ../scripts/debchange.1:42
+msgid ""
+"B<debchange> also supports automatically producing bug-closing changelog "
+"entries, using the B<--closes> option. This will usually query the BTS, the "
+"Debian Bug Tracking System (see https://bugs.debian.org/) to determine the "
+"title of the bug and the package in which it occurs. This behaviour can be "
+"stopped by giving a B<--noquery> option or by setting the configuration "
+"variable B<DEBCHANGE_QUERY_BTS> to I<no>, as described below. In either "
+"case, the editor (as described above) will always be invoked to give an "
+"opportunity to modify the entries, and the changelog will be accepted "
+"whether or not modifications are made. An extra changelog entry can be "
+"given on the command line in addition to the closes entries."
+msgstr ""
+"B<debchange> peut également créer des entrées de changelog permettant de "
+"fermer des bogues, en utilisant l'option B<--closes>. Le BTS, ou Debian Bug "
+"Tracking System (système de suivi de bogues Debian, https://bugs.debian."
+"org/), est interrogé pour déterminer le titre du bogue et le paquet dans "
+"lequel il apparaît. Ce comportement peut être modifié en utilisant l'option "
+"B<--noquery> ou en positionnant la variable de configuration "
+"B<DEBCHANGE_QUERY_BTS> à I<no>, comme décrit ci-dessus. Dans tous les cas, "
+"l'éditeur (voir ci-dessus) est toujours appelé pour permettre une "
+"modification de l'entrée, mais le fichier I<changelog> est créé, que des "
+"modifications aient été faites ou non. Une entrée supplémentaire peut être "
+"fournie en ligne de commande en plus de l'entrée fermant le bogue."
+
+#. type: Plain text
+#: ../scripts/debchange.1:49
+msgid ""
+"At most one of B<--append>, B<--increment>, B<--edit>, B<--release>, and B<--"
+"newversion> may be specified as listed below. If no options are specified, "
+"B<debchange> will use heuristics to guess whether or not the package has "
+"been successfully released, and behave as if B<--increment> had been "
+"specified if the package has been released, or otherwise as if B<--append> "
+"has been specified."
+msgstr ""
+"Au plus une des options B<--append>, B<--increment>, B<--edit>, B<--"
+"release>, et B<--newversion> doit être utilisée conformément à leurs "
+"descriptions ci-après. Si aucune option n'est fournie, B<debchange> devra "
+"utiliser des heuristiques pour deviner si le paquet a bien été distribué ou "
+"non, et se comporte comme si B<--increment> avait été utilisée si le paquet "
+"a été distribué, ou autrement comme si B<--append> avait été utilisée."
+
+#. type: Plain text
+#: ../scripts/debchange.1:64
+msgid ""
+"Two different sets of heuristics can be used, as controlled by the B<--"
+"release-heuristic> option or the B<DEBCHANGE_RELEASE_HEURISTIC> "
+"configuration variable. The default I<changelog> heuristic assumes the "
+"package has been released unless its changelog contains B<UNRELEASED> in the "
+"distribution field. If this heuristic is enabled then the distribution will "
+"default to B<UNRELEASED> in new changelog entries, and the B<--mainttrailer> "
+"option described below will be automatically enabled. This can be useful if "
+"a package can be released by different maintainers, or if you do not keep "
+"the upload logs. The alternate I<log> heuristic determines if a package has "
+"been released by looking for an appropriate B<dupload>(1) or B<dput>(1) log "
+"file in the parent directory. A warning will be issued if the log file is "
+"found but a successful upload is not recorded. This may be because the "
+"previous upload was performed with a version of B<dupload> prior to 2.1 or "
+"because the upload failed."
+msgstr ""
+"Deux différents types d'heuristiques peuvent être utilisés, contrôlés par "
+"l'option B<--release-heuristic> ou la variable de configuration "
+"B<DEBCHANGE_RELEASE_HEURISTIC>. L'heuristique par défaut (I<changelog>) "
+"suppose que le paquet a été distribué à moins que le journal des "
+"modifications ne contienne B<UNRELEASED> dans le champ de la distribution. "
+"Si cette heuristique est activée, la distribution sera modifiée en "
+"B<UNRELEASED> dans les nouvelles entrées du journal des modifications, et "
+"l'option B<--mainttrailer> décrite ci-dessous sera activée automatiquement. "
+"Cela peut être utile si un paquet peut être distribué par différents "
+"responsables, ou si vous ne voulez pas garder les journaux d'envoi. L'autre "
+"heuristique (I<log>) détermine si un paquet a été distribué en cherchant un "
+"journal B<dupload>(1) ou B<dput>(1) approprié. Un message d'alerte sera "
+"affiché si le fichier du journal est détecté mais qu'aucun envoi réussi n'y "
+"est enregistré. Cela peut arriver si l'envoi précédent a été exécuté avec "
+"une version de B<dupload> inférieure à 2.1 ou s'il a échoué."
+
+#. type: Plain text
+#: ../scripts/debchange.1:82
+msgid ""
+"If either B<--increment> or B<--newversion> is used, the name and email for "
+"the new version will be determined as follows. If the environment variable "
+"B<DEBFULLNAME> is set, this will be used for the maintainer full name; if "
+"not, then B<NAME> will be checked. If the environment variable B<DEBEMAIL> "
+"is set, this will be used for the email address. If this variable has the "
+"form \"name E<lt>emailE<gt>\", then the maintainer name will also be taken "
+"from here if neither B<DEBFULLNAME> nor B<NAME> is set. If this variable is "
+"not set, the same test is performed on the environment variable B<EMAIL>. "
+"Next, if the full name has still not been determined, then use "
+"B<getpwuid>(3) to determine the name from the password file. If this fails, "
+"use the previous changelog entry. For the email address, if it has not been "
+"set from B<DEBEMAIL> or B<EMAIL>, then look in I</etc/mailname>, then "
+"attempt to build it from the username and FQDN, otherwise use the email "
+"address in the previous changelog entry. In other words, it's a good idea "
+"to set B<DEBEMAIL> and B<DEBFULLNAME> when using this script."
+msgstr ""
+"Si les options B<--increment> ou B<--newversion> sont utilisées, le nom et "
+"l'adresse électronique pour la nouvelle version sont déterminés de la façon "
+"suivante. Si la variable d'environnement B<DEBFULLNAME> est définie, sa "
+"valeur est utilisée comme nom complet du responsable. Si la variable "
+"d'environnement B<DEBEMAIL> est définie, elle est utilisée comme adresse "
+"électronique. Si cette variable est de la forme « nom E<lt>adresseE<gt> », "
+"alors le nom est pris dans cette variable si la variable d'environnement "
+"B<DEBFULLNAME> n'est pas définie. Si cette variable d'environnement n'est "
+"pas définie, le même test est réalisé sur B<EMAIL>. Puis, si le nom complet "
+"n'est pas encore déterminé, B<getpwuid>(3) est utilisé pour déterminer le "
+"nom grâce au fichier des mots de passe. En cas d'échec, l'entrée précédente "
+"du fichier I<changelog> est utilisée. Pour l'adresse électronique, si elle "
+"n'a pas été déterminée avec B<DEBEMAIL> ou B<EMAIL>, I</etc/mailname> est "
+"utilisé, puis il tente de la construire à partir du nom d'utilisateur et du "
+"FQDN, sinon, l'adresse de l'entrée précédente du fichier I<changelog> est "
+"utilisée. Pour simplifier, il est préférable de définir les variables "
+"d'environnement B<DEBEMAIL> et B<DEBFULLNAME> lorsque ce script est utilisé."
+
+#. type: Plain text
+#: ../scripts/debchange.1:95
+msgid ""
+"Support is included for changelogs that record changes by multiple co-"
+"maintainers of a package. If an entry is appended to the current version's "
+"entries, and the maintainer is different from the maintainer who is listed "
+"as having done the previous entries, then lines will be added to the "
+"changelog to tell which maintainers made which changes. Currently only one "
+"of the several such styles of recording this information is supported, in "
+"which the name of the maintainer who made a set of changes appears on a line "
+"before the changes, inside square brackets. This can be switched on and off "
+"using the B<-->[B<no>]B<multimaint> option or the B<DEBCHANGE_MULTIMAINT> "
+"configuration file option; the default is to enable it. Note that if an "
+"entry has already been marked in this way, then this option will be silently "
+"ignored."
+msgstr ""
+"Les journaux de modification qui enregistrent les modifications des "
+"différents coresponsables d'un paquet sont gérés. Si une entrée est ajoutée "
+"à celles de la version actuelle et que le responsable est différent du "
+"responsable qui est mentionné comme ayant créé les entrées précédentes, "
+"alors des lignes seront ajoutées au journal pour indiquer le responsable "
+"ayant fait cette modification. Pour le moment, seul un des différents styles "
+"d'enregistrement de ces informations est géré, dans lequel le nom du "
+"responsable ayant fait quelques modifications apparaît sur une ligne avant "
+"les modifications, entre crochets. Cela peut-être activé ou désactivé en "
+"utilisant l'option B<-->[B<no>]B<multimaint> ou la variable de configuration "
+"B<DEBCHANGE_MULTIMAINT> ; le comportement par défaut est de l'activer. À "
+"noter : si une entrée a déjà été marquée dans ce but, alors cette option "
+"sera ignorée de façon silencieuse."
+
+#. type: Plain text
+#: ../scripts/debchange.1:101
+msgid ""
+"If the directory name of the source tree has the form I<package>-I<version>, "
+"then B<debchange> will also attempt to rename it if the (upstream) version "
+"number changes. This can be prevented by using the B<--preserve> command "
+"line or configuration file option as described below."
+msgstr ""
+"Si le nom du répertoire de l'arborescence des sources est sous la forme "
+"I<paquet>-I<version>, B<debchange> cherchera également à le renommer si le "
+"numéro de version (amont) change. Cela peut être empêché en utilisant "
+"l'option B<--preserve> en ligne de commande ou avec un paramètre du fichier "
+"de configuration, comme décrit ci-dessous."
+
+#. type: Plain text
+#: ../scripts/debchange.1:105
+msgid ""
+"If B<--force-bad-version> or B<--allow-lower-version> is used, B<debchange> "
+"will not stop if the new version is less than the current one. This is "
+"especially useful while doing backports."
+msgstr ""
+"Si B<--force-bad-version> ou B<--allow-lower-version> est utilisée, "
+"B<debchange> ne s'arrêtera pas si une nouvelle version est inférieure à la "
+"version actuelle. C'est particulièrement utile lors de la conception de "
+"rétroportages."
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/debchange.1:116
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debchange> will climb the directory tree until it finds a I<debian/"
+"changelog> file. As a safeguard against stray files causing potential "
+"problems, it will examine the name of the parent directory once it finds the "
+"I<debian/changelog> file, and check that the directory name corresponds to "
+"the package name. Precisely how it does this is controlled by two "
+"configuration file variables B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and their corresponding command-line "
+"options B<--check-dirname-level> and B<--check-dirname-regex>."
+msgstr ""
+"Comme certains autres scripts du paquet B<devscripts>, B<debchange> parcourt "
+"une arborescence de répertoires jusqu'à ce qu'il trouve un fichier I<debian/"
+"changelog>. Pour éviter les problèmes posés par les fichiers égarés, il "
+"examine le nom du répertoire parent une fois le fichier I<debian/changelog> "
+"trouvé, et vérifie que le nom du répertoire correspond au nom du paquet. La "
+"méthode précise utilisée est contrôlée par les deux variables du fichier de "
+"configuration B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> et "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, et les options en ligne de commande "
+"associées B<--check-dirname-level> et B<--check-dirname-regex>."
+
+#. type: Plain text
+#: ../scripts/debchange.1:141
+msgid ""
+"The directory name is checked by testing whether the current directory name "
+"(as determined by B<pwd>(1)) matches the regex given by the configuration "
+"file option B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> or by the command line option "
+"B<--check-dirname-regex> I<regex>. Here I<regex> is a Perl regex (see "
+"B<perlre>(3perl)), which will be anchored at the beginning and the end. If "
+"I<regex> contains a 'B</>', then it must match the full directory path. If "
+"not, then it must match the full directory name. If I<regex> contains the "
+"string \\'B<PACKAGE>', this will be replaced by the source package name, as "
+"determined from the changelog. The default value for the regex is: "
+"\\'B<PACKAGE(-.+)?>', thus matching directory names such as B<PACKAGE> and "
+"B<PACKAGE->I<version>."
+msgstr ""
+"Le nom du répertoire est vérifié en testant si le nom du répertoire actuel "
+"(donné par B<pwd>(1)) correspond à l'expression rationnelle donnée par la "
+"variable B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> du fichier de configuration ou "
+"par l'option B<--check-dirname-regex> I<regex>. Il s'agit d'une expression "
+"rationnelle Perl (voir B<perlre>(1)), qui sera ancrée à son début et à sa "
+"fin. Si elle contient un « B</> », alors elle doit correspondre au chemin "
+"complet. Si elle contient la chaîne « B<PACKAGE> », cette chaîne sera "
+"remplacée par le nom du paquet source déterminé par le fichier I<changelog>. "
+"La valeur par défaut de cette expression rationnelle est « B<PACKAGE(-.+)?"
+"> », ce qui correspond aux répertoires nommés B<PACKAGE> ou B<PACKAGE-"
+">I<version>."
+
+#. type: Plain text
+#: ../scripts/debchange.1:145
+msgid ""
+"The default changelog to be edited is I<debian/changelog>; however, this can "
+"be changed using the B<--changelog> or B<--news> options or the B<CHANGELOG> "
+"environment variable, as described below."
+msgstr ""
+"Le journal des modifications par défaut à éditer est I<debian/changelog> ; "
+"cependant, cela peut être changé en utilisant les options B<--changelog> ou "
+"B<--news>, ou la variable d'environnement B<CHANGELOG>, comme décrit plus "
+"bas."
+
+#. type: TP
+#: ../scripts/debchange.1:146
+#, no-wrap
+msgid "B<--append>, B<-a>"
+msgstr "B<--append>, B<-a>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:149
+msgid "Add a new changelog entry at the end of the current version's entries."
+msgstr ""
+"Ajouter une nouvelle entrée au fichier I<changelog> à la fin des entrées de "
+"la version actuelle."
+
+#. type: TP
+#: ../scripts/debchange.1:149
+#, no-wrap
+msgid "B<--increment>, B<-i>"
+msgstr "B<--increment>, B<-i>"
+
+# NOTE: signature
+#. type: Plain text
+#: ../scripts/debchange.1:162
+msgid ""
+"Increment either the final component of the Debian release number or, if "
+"this is a native Debian package, the version number. On Ubuntu or Tanglu, "
+"this will also change the suffix from buildX to ubuntu1/tanglu1. Use B<-R>, "
+"B<--rebuild> for a no change rebuild increment. This creates a new section "
+"at the beginning of the changelog with appropriate headers and footers. "
+"Also, if this is a new version of a native Debian package, the directory "
+"name is changed to reflect this. If B<DEBCHANGE_RELEASE_HEURISTIC> is "
+"I<changelog> (default) and the current release is I<UNRELEASED>, this will "
+"only change the version of the current changelog stanza. Otherwise, this "
+"will create a new changelog stanza with the new version."
+msgstr ""
+"Incrémenter le numéro de version Debian ou, dans le cas d'un paquet Debian "
+"natif, le numéro de version. Sur Ubuntu ou Tanglu, cela modifiera aussi le "
+"suffixe buildX en ubuntu1 ou tanglu1. Utiliser B<-R>, B<--rebuild> pour un "
+"incrément de reconstruction sans modification. Cela crée une nouvelle "
+"section au début du journal de modifications avec le bon en-tête et la "
+"signature. De plus, dans le cas d'une nouvelle version d'un paquet natif "
+"Debian, le nom du répertoire est modifié de manière à refléter ce changement "
+"de version. Si B<DEBCHANGE_RELEASE_HEURISTIC> est I<changelog> (par défaut) "
+"et que la version actuelle est I<UNRELEASED>, cela ne modifiera que la "
+"version du paragraphe actuel du journal de modifications. Sinon, cela créera "
+"un nouveau paragraphe du journal de modifications avec la nouvelle version."
+
+#. type: TP
+#: ../scripts/debchange.1:162
+#, no-wrap
+msgid "B<--newversion >I<version>, B<-v >I<version>"
+msgstr "B<--newversion >I<version>, B<-v >I<version>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:172
+msgid ""
+"This specifies the version number (including the Debian release part) "
+"explicitly and behaves as the B<--increment> option in other respects. It "
+"will also change the directory name if the upstream version number has "
+"changed. If B<DEBCHANGE_RELEASE_HEURISTIC> is I<changelog> (default) and "
+"the current release is I<UNRELEASED>, this will only change the version of "
+"the current changelog stanza. Otherwise, this will create a new changelog "
+"stanza with the new version."
+msgstr ""
+"Indiquer explicitement le numéro de version (avec la partie relative à la "
+"version Debian). Cette option se comporte comme l'option B<--increment> pour "
+"les autres aspects. Le nom du répertoire sera également modifié si le numéro "
+"de version amont a changé. Si B<DEBCHANGE_RELEASE_HEURISTIC> est "
+"I<changelog> (par défaut) et que la version actuelle est I<UNRELEASED>, cela "
+"ne modifiera que la version du paragraphe actuel du journal de "
+"modifications. Sinon, cela créera un nouveau paragraphe du journal de "
+"modifications avec la nouvelle version."
+
+#. type: TP
+#: ../scripts/debchange.1:172
+#, no-wrap
+msgid "B<--edit>, B<-e>"
+msgstr "B<--edit>, B<-e>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:175
+msgid "Edit the changelog in an editor."
+msgstr "Éditer le journal des modifications dans un éditeur."
+
+#. type: TP
+#: ../scripts/debchange.1:175
+#, no-wrap
+msgid "B<--release>, B<-r>"
+msgstr "B<--release>, B<-r>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:183
+msgid ""
+"Finalize the changelog for a release. Update the changelog timestamp. If "
+"the distribution is set to B<UNRELEASED>, change it to the distribution from "
+"the previous changelog entry (or another distribution as specified by B<--"
+"distribution>). If there are no previous changelog entries and an explicit "
+"distribution has not been specified, B<unstable> will be used."
+msgstr ""
+"Finaliser le fichier I<changelog> pour un envoi. Cela met à jour "
+"l'horodatage du fichier I<changelog>. Si la distribution vaut I<UNRELEASED>, "
+"elle prend la valeur de l'entrée précédente du fichier (ou de la "
+"distribution indiquée par l'option B<--distribution>). S'il n'y a pas "
+"d'entrée précédente, et qu'aucune distribution n'a été indiquée "
+"explicitement, la distribution sera B<unstable>."
+
+#. type: TP
+#: ../scripts/debchange.1:183
+#, no-wrap
+msgid "B<--force-save-on-release>"
+msgstr "B<--force-save-on-release>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:188
+msgid ""
+"When B<--release> is used, an editor is opened to allow inspection of the "
+"changelog. The user is required to save the file to accept the modified "
+"changelog, otherwise the original will be kept (default)."
+msgstr ""
+"Quand l'option B<--release> est utilisée, un éditeur est ouvert pour "
+"permettre de vérifier le journal des modifications. L'utilisateur doit "
+"enregistrer le journal de modifications pour accepter les modifications du "
+"fichier, sinon l'original sera conservé (option par défaut)."
+
+#. type: TP
+#: ../scripts/debchange.1:188
+#, no-wrap
+msgid "B<--no-force-save-on-release>"
+msgstr "B<--no-force-save-on-release>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:194
+msgid ""
+"Do not do so. Note that a dummy changelog entry may be supplied in order to "
+"achieve the same effect - e.g. B<debchange --release \"\">. The entry will "
+"not be added to the changelog but its presence will suppress the editor."
+msgstr ""
+"Inverse de B<--force-save-on-release>. Remarquez qu'une fausse entrée de "
+"journal peut être fournie pour obtenir le même résultat - par exemple avec "
+"B<debchange --release \"\">. L'entrée ne sera pas ajoutée au journal des "
+"modifications, mais sa présence évite l'ouverture de l'éditeur."
+
+#. type: Plain text
+#: ../scripts/debchange.1:206
+msgid ""
+"This will create a new I<debian/changelog> file (or I<NEWS> if the B<--news> "
+"option is used). You must be in the top-level directory to use this; no "
+"directory name checking will be performed. The package name and version can "
+"either be specified using the B<--package> and B<--newversion> options, "
+"determined from the directory name using the B<--fromdirname> option or "
+"entered manually into the generated I<changelog> file. The maintainer name "
+"is determined from the environment if this is possible, and the distribution "
+"is specified either using the B<--distribution> option or in the generated "
+"I<changelog> file."
+msgstr ""
+"Cela créera un nouveau fichier I<debian/changelog> (ou I<debian/NEWS> si "
+"l'option B<--news> est utilisée). Vous devez être dans le répertoire de plus "
+"haut niveau pour l'utiliser ; aucune vérification sur le nom du répertoire "
+"ne sera faite. Le nom du paquet et sa version peuvent être indiqués en "
+"utilisant les options B<--package> et B<--newversion>, déterminés grâce au "
+"nom du répertoire en utilisant l'option B<--fromdirname> ou entrés "
+"manuellement dans le fichier I<changelog> créé. Le nom du responsable est "
+"déterminé grâce aux variables d'environnement si cela est possible, et la "
+"distribution est indiquée soit en utilisant l'option B<--distribution> soit "
+"dans le fichier I<changelog> créé."
+
+#. type: TP
+#: ../scripts/debchange.1:206
+#, no-wrap
+msgid "B<--empty>"
+msgstr "B<--empty>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:213
+msgid ""
+"When used in combination with B<--create>, suppress the automatic addition "
+"of an \"B<initial release>\" changelog entry (so that the next invocation of "
+"B<debchange> adds the first entry). Note that this will cause a B<dpkg-"
+"parsechangelog> warning on the next invocation due to the lack of changes."
+msgstr ""
+"Quand elle est utilisée avec l'option B<--create>, elle permet de supprimer "
+"l'ajout automatique d'une entrée « B<initial release> » (de telle sorte que "
+"le prochain appel à B<debchange> ajoutera la première entrée). Remarquez que "
+"B<dpkg-parsechangelog> produira des avertissements du fait de l'absence de "
+"description de modifications."
+
+#. type: TP
+#: ../scripts/debchange.1:213 ../scripts/mk-origtargz.pl:60
+#: ../scripts/uscan.1:431
+#, no-wrap
+msgid "B<--package> I<package>"
+msgstr "B<--package> I<paquet>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:218
+msgid ""
+"This specifies the package name to be used in the new changelog; this may "
+"only be used in conjunction with the B<--create>, B<--increment> and B<--"
+"newversion> options."
+msgstr ""
+"Indiquer le nom du paquet qui devra être utilisé dans le nouveau journal des "
+"modifications ; doit être utilisé seulement en conjonction avec les options "
+"B<--create>, B<--increment>, et B<--newversion>."
+
+#. type: TP
+#: ../scripts/debchange.1:218
+#, no-wrap
+msgid "B<--nmu>, B<-n>"
+msgstr "B<--nmu>, B<-n>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:227
+msgid ""
+"Increment the Debian release number for a non-maintainer upload by either "
+"appending a \"B<.1>\" to a non-NMU version number (unless the package is "
+"Debian native, in which case \"B<+nmu1>\" is appended) or by incrementing an "
+"NMU version number, and add an NMU changelog comment. This happens "
+"automatically if the packager is neither in the B<Maintainer> nor the "
+"B<Uploaders> field in I<debian/control>, unless B<DEBCHANGE_AUTO_NMU> is set "
+"to I<no> or the B<--no-auto-nmu> option is used."
+msgstr ""
+"Incrémenter le numéro de version Debian pour un envoi d'un non-responsable "
+"soit en ajoutant « B<.1> » à une version non-NMU (à moins qu'il s'agisse "
+"d'un paquet Debian natif, auquel cas « B<+nmu1> » est ajouté) soit en "
+"incrémentant un numéro de NMU. Cela se produit automatiquement si l'auteur "
+"du paquet n'est pas dans les champs B<Maintainer> ou B<Uploaders> de "
+"I<debian/control>, à moins que B<DEBCHANGE_AUTO_NMU> soit définie à I<no> ou "
+"que l'option B<--no-auto-nmu> soit utilisée."
+
+#. type: TP
+#: ../scripts/debchange.1:227
+#, no-wrap
+msgid "B<--bin-nmu>"
+msgstr "B<--bin-nmu>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:232
+msgid ""
+"Increment the Debian release number for a binary non-maintainer upload by "
+"either appending a \"B<+b1>\" to a non-binNMU version number or by "
+"incrementing a binNMU version number, and add a binNMU changelog comment."
+msgstr ""
+"Incrémenter le numéro de version Debian pour un envoi binaire d'un non-"
+"responsable soit en ajoutant « B<+b1> » à une version non-binNMU soit en "
+"incrémentant un numéro de binNMU, et ajouter un commentaire « binNMU » dans "
+"le changelog."
+
+#. type: TP
+#: ../scripts/debchange.1:232
+#, no-wrap
+msgid "B<--qa>, B<-q>"
+msgstr "B<--qa>, B<-q>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:236
+msgid ""
+"Increment the Debian release number for a Debian QA Team upload, and add a "
+"B<QA upload> changelog comment."
+msgstr ""
+"Incrémenter le numéro de publication de Debian pour un envoi par l'équipe QA "
+"de Debian, et ajouter un commentaire « B<QA upload> » dans le changelog."
+
+#. type: TP
+#: ../scripts/debchange.1:236
+#, no-wrap
+msgid "B<--rebuild>, B<-R>"
+msgstr "B<--rebuild>, B<-R>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:240
+msgid ""
+"Increment the Debian release number for a no-change rebuild by appending a "
+"\"build1\" or by incrementing a rebuild version number."
+msgstr ""
+"Incrémente le numéro de version Debian pour une reconstruction sans "
+"modification en ajoutant « build1 » ou en incrémentant un numéro de "
+"reconstruction."
+
+#. type: TP
+#: ../scripts/debchange.1:240
+#, no-wrap
+msgid "B<--security>, B<-s>"
+msgstr "B<--security>, B<-s>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:244
+msgid ""
+"Increment the Debian release number for a Debian Security Team non-"
+"maintainer upload, and add a B<Security Team upload> changelog comment."
+msgstr ""
+"Incrémenter le numéro de publication de Debian pour un envoi par l'équipe "
+"Sécurité de Debian, et ajouter un commentaire « B<Security Team upload> » "
+"dans le changelog."
+
+#. type: TP
+#: ../scripts/debchange.1:244
+#, no-wrap
+msgid "B<--team>"
+msgstr "B<--team>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:248
+msgid ""
+"Increment the Debian release number for a team upload, and add a B<Team "
+"upload> changelog comment."
+msgstr ""
+"Incrémenter le numéro de publication de Debian pour un envoi par l'équipe, "
+"et ajouter un commentaire « B<Team upload> » dans le changelog."
+
+#. type: TP
+#: ../scripts/debchange.1:248
+#, no-wrap
+msgid "B<--upstream>, B<-U>"
+msgstr "B<--upstream>, B<-U>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:252
+msgid ""
+"Don't append B<distro-name1> to the version on a derived distribution. "
+"Increment the Debian version."
+msgstr ""
+"Ne pas ajouter I<nom-de-distribution1> à la version d'une distribution "
+"dérivée. Incrémenter le numéro de publication de Debian."
+
+#. type: TP
+#: ../scripts/debchange.1:252
+#, no-wrap
+msgid "B<--bpo>"
+msgstr "B<--bpo>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:256
+msgid ""
+"Increment the Debian release number for an upload to wheezy-backports, and "
+"add a backport upload changelog comment."
+msgstr ""
+"Incrémenter le numéro de publication de Debian pour un envoi d'un "
+"rétroportage pour Wheezy, et ajouter un commentaire pour l'envoi du "
+"rétroportage dans le changelog."
+
+#. type: TP
+#: ../scripts/debchange.1:256
+#, no-wrap
+msgid "B<--local>, B<-l>I<suffix>"
+msgstr "B<--local>, B<-l>I<suffixe>"
+
+# NOTE: space
+#. type: Plain text
+#: ../scripts/debchange.1:259
+#, no-wrap
+msgid " Add a suffix to the Debian version number for a local build.\n"
+msgstr "Ajouter un I<suffixe> au numéro de version Debian pour une construction locale.\n"
+
+#. type: TP
+#: ../scripts/debchange.1:259
+#, no-wrap
+msgid "B<--force-bad-version>, B<-b>"
+msgstr "B<--force-bad-version>, B<-b>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:263
+msgid ""
+"Force a version number to be less than the current one (e.g., when "
+"backporting)."
+msgstr ""
+"Forcer un numéro de version à être moins élevé que le numéro de version "
+"actuel (comme c'est le cas par exemple dans le cas d'un rétroportage)."
+
+#. type: TP
+#: ../scripts/debchange.1:263
+#, no-wrap
+msgid "B<--allow-lower-version >I<pattern>"
+msgstr "B<--allow-lower-version >I<modèle>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:267
+msgid ""
+"Allow a version number to be less than the current one if the new version "
+"matches the specified pattern."
+msgstr ""
+"Permettre à un numéro de version d'être inférieur à la version en cours si "
+"la nouvelle version satisfait le modèle indiqué."
+
+#. type: TP
+#: ../scripts/debchange.1:267
+#, no-wrap
+msgid "B<--force-distribution>"
+msgstr "B<--force-distribution>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:271
+msgid ""
+"Force the provided distribution to be used, even if it doesn't match the "
+"list of known distributions (e.g. for unofficial distributions)."
+msgstr ""
+"Forcer l'utilisation de la distribution indiquée, même si elle ne correspond "
+"à aucune distribution connue (par exemple pour une distribution non "
+"officielle)."
+
+#. type: TP
+#: ../scripts/debchange.1:271
+#, no-wrap
+msgid "B<--auto-nmu>"
+msgstr "B<--auto-nmu>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:275
+msgid ""
+"Attempt to automatically determine whether a change to the changelog "
+"represents a Non Maintainer Upload. This is the default."
+msgstr ""
+"Essayer de déterminer automatiquement si une modification dans le journal "
+"des modifications correspond à une NMU (mise à jour indépendante ou « Non "
+"Maintainer Upload »). Il s'agit du comportement par défaut."
+
+#. type: TP
+#: ../scripts/debchange.1:275
+#, no-wrap
+msgid "B<--no-auto-nmu>"
+msgstr "B<--no-auto-nmu>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:279
+msgid ""
+"Disable automatic NMU detection. Equivalent to setting "
+"B<DEBCHANGE_AUTO_NMU> to I<no>."
+msgstr ""
+"Désactiver la détection automatique des NMU. C'est équivalent à configurer "
+"B<DEBCHANGE_AUTO_NMU> avec la valeur I<no>."
+
+#. type: TP
+#: ../scripts/debchange.1:279
+#, no-wrap
+msgid "B<--fromdirname>, B<-d>"
+msgstr "B<--fromdirname>, B<-d>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:289
+msgid ""
+"This will take the upstream version number from the directory name, which "
+"should be of the form I<package>B<->I<version>. If the upstream version "
+"number has increased from the most recent changelog entry, then a new entry "
+"will be made with version number I<version>B<-1> (or I<version> if the "
+"package is Debian native), with the same epoch as the previous package "
+"version. If the upstream version number is the same, this option will "
+"behave in the same way as B<-i>."
+msgstr ""
+"Déterminer le numéro de version amont à partir du nom du répertoire, qui "
+"devra être de la forme I<paquet>-I<version>. Si le numéro de version amont a "
+"augmenté depuis l'entrée la plus récente du fichier I<changelog>, la "
+"nouvelle entrée sera ajoutée avec pour numéro de version I<version>B<-1> (ou "
+"I<version> dans le cas d'un paquet Debian natif), avec le même temps absolu "
+"(« epoch ») que le paquet précédent. Si le numéro de version amont est le "
+"même, cette option se comporte de la même façon que B<-i>."
+
+#. type: TP
+#: ../scripts/debchange.1:289
+#, no-wrap
+msgid "B<--closes>I< nnnnn>[B<,>I<nnnnn >...]"
+msgstr "B<--closes> I<nnnnn>[B<,>I<nnnnn> ...]"
+
+#. type: Plain text
+#: ../scripts/debchange.1:295
+msgid ""
+"Add changelog entries to close the specified bug numbers. Also invoke the "
+"editor after adding these entries. Will generate warnings if the BTS cannot "
+"be contacted (and B<--noquery> has not been specified), or if there are "
+"problems with the bug report located."
+msgstr ""
+"Ajouter des entrées au fichier I<changelog> pour fermer les bogues indiqués. "
+"Un éditeur est également lancé après avoir ajouté ces entrées. Il produira "
+"des avertissements si le BTS ne peut pas être contacté (et que l'option B<--"
+"noquery> n'a pas été utilisée) ou s'il y a un problème avec un rapport de "
+"bogue."
+
+#. type: TP
+#: ../scripts/debchange.1:295
+#, no-wrap
+msgid "B<-->[B<no>]B<query>"
+msgstr "B<-->[B<no>]B<query>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:298
+msgid "Should we attempt to query the BTS when generating closes entries?"
+msgstr ""
+"Indiquer si le BTS doit être interrogé lorsqu'une fermeture de bogue est "
+"produite."
+
+#. type: TP
+#: ../scripts/debchange.1:298
+#, no-wrap
+msgid "B<--preserve>, B<-p>"
+msgstr "B<--preserve>, B<-p>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:303
+msgid ""
+"Preserve the source tree directory name if the upstream version number (or "
+"the version number of a Debian native package) changes. See also the "
+"configuration variables section below."
+msgstr ""
+"Conserver le nom du répertoire de l'architecture source si le numéro de "
+"version amont (ou le numéro de version d'un paquet Debian natif) change. "
+"Veuillez également consulter la section sur les variables de configuration "
+"ci-dessous."
+
+#. type: TP
+#: ../scripts/debchange.1:303
+#, no-wrap
+msgid " B<--no-preserve>, B<--nopreserve>"
+msgstr "B<--no-preserve>, B<--nopreserve>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:306
+msgid "Do not preserve the source tree directory name (default)."
+msgstr ""
+"Ne pas conserver le nom du répertoire de l'arborescence des sources "
+"(comportement par défaut)."
+
+#. type: TP
+#: ../scripts/debchange.1:306
+#, no-wrap
+msgid "B<--vendor >I<vendor>"
+msgstr "B<--vendor> I<éditeur>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:311
+msgid ""
+"Override the distributor ID over the default returned by dpkg-vendor. This "
+"name is used for heuristics applied to new package versions and for sanity "
+"checking of the target distribution."
+msgstr ""
+"Écraser l'identifiant de distributeur dont la valeur par défaut est renvoyée "
+"par B<dpkg-vendor>. Ce nom est utilisé pour les heuristiques appliquées aux "
+"nouvelles versions de paquet et aux vérifications de distribution cible."
+
+#. type: TP
+#: ../scripts/debchange.1:311
+#, no-wrap
+msgid "B<--distribution >I<dist>, B<-D >I<dist>"
+msgstr "B<--distribution >I<dist>, B<-D >I<dist>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:316
+msgid ""
+"Use the specified distribution in the changelog entry being edited, instead "
+"of using the previous changelog entry's distribution for new entries or the "
+"existing value for existing entries."
+msgstr ""
+"Utiliser la distribution indiquée dans la nouvelle entrée du fichier "
+"changelog au lieu d'utiliser la distribution de la dernière entrée ou de "
+"l'entrée en cours d'édition."
+
+#. type: TP
+#: ../scripts/debchange.1:316
+#, no-wrap
+msgid "B<--urgency >I<urgency>, B<-u >I<urgency>"
+msgstr "B<--urgency> I<urgence>, B<-u> I<urgence>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:321
+msgid ""
+"Use the specified urgency in the changelog entry being edited, instead of "
+"using the default \"B<medium>\" for new entries or the existing value for "
+"existing entries."
+msgstr ""
+"Utiliser le niveau d'urgence indiqué dans la nouvelle entrée du fichier "
+"I<changelog>, s'il y en a une, au lieu du niveau d'urgence moyen "
+"(« B<medium> ») par défaut ou de la valeur actuelle pour les entrées "
+"existantes."
+
+#. type: TP
+#: ../scripts/debchange.1:321
+#, no-wrap
+msgid "B<--changelog >I<file>, B<-c >I<file>"
+msgstr "B<--changelog >I<fichier>, B<-c >I<fichier>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:327
+msgid ""
+"This will edit the changelog I<file> instead of the standard I<debian/"
+"changelog>. This option overrides any B<CHANGELOG> environment variable "
+"setting. Also, no directory traversing or checking will be performed when "
+"this option is used."
+msgstr ""
+"Éditer le journal des modifications I<fichier> au lieu de I<debian/"
+"changelog>. Cette option remplace la valeur définie par la variable "
+"d'environnement B<CHANGELOG>. De plus, aucune traversée ou contrôle de "
+"répertoire ne sera fait quand cette option est utilisée."
+
+#. type: TP
+#: ../scripts/debchange.1:327
+#, no-wrap
+msgid "B<--news> [I<newsfile>]"
+msgstr "B<--news> [I<newsfile>]"
+
+#. type: Plain text
+#: ../scripts/debchange.1:333
+msgid ""
+"This will edit I<newsfile> (by default, I<debian/NEWS>) instead of the "
+"regular changelog. Directory searching will be performed. The changelog "
+"will be examined in order to determine the current package version."
+msgstr ""
+"Éditer I<newsfile> (I<debian/NEWS> par défaut) au lieu du journal des "
+"modifications. Une recherche sur le répertoire sera faite. Le journal des "
+"modifications sera analysé pour déterminer la version actuelle du paquet."
+
+#. type: TP
+#: ../scripts/debchange.1:333
+#, no-wrap
+msgid "B<-->[B<no>]B<multimaint>"
+msgstr "B<-->[B<no>]B<multimaint>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:338
+msgid ""
+"Should we indicate that parts of a changelog entry have been made by "
+"different maintainers? Default is yes; see the discussion above and also the "
+"B<DEBCHANGE_MULTIMAINT> configuration file option below."
+msgstr ""
+"Préciser s'il faut indiquer que les différents points du journal des "
+"modifications sont l'œuvre de différents responsables. L'option par défaut "
+"est B<--multimaint>. Veuillez consulter la discussion ci-dessus ainsi que "
+"les explications ci-dessous à propos de la variable B<DEBCHANGE_MULTIMAINT> "
+"du fichier de configuration."
+
+#. type: TP
+#: ../scripts/debchange.1:338
+#, no-wrap
+msgid "B<-->[B<no>]B<multimaint-merge>"
+msgstr "B<-->[B<no>]B<multimaint-merge>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:343
+msgid ""
+"Should all changes made by the same author be merged into the same changelog "
+"section? Default is no; see the discussion above and also the "
+"B<DEBCHANGE_MULTIMAINT_MERGE> configuration file option below."
+msgstr ""
+"Préciser si toutes les modifications réalisées par le même auteur doivent "
+"être fusionnées dans la même section du journal des modifications. L'option "
+"par défaut est B<--nomultimaint-merge>. Veuillez consulter la discussion ci-"
+"dessus ainsi que les explications ci-dessous à propos de la variable "
+"B<DEBCHANGE_MULTIMAINT_MERGE> du fichier de configuration."
+
+#. type: TP
+#: ../scripts/debchange.1:343
+#, no-wrap
+msgid "B<--maintmaint>, B<-m>"
+msgstr "B<--maintmaint>, B<-m>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:351
+msgid ""
+"Do not modify the maintainer details previously listed in the changelog. "
+"This is useful particularly for sponsors wanting to automatically add a "
+"sponsorship message without disrupting the other changelog details. Note "
+"that there may be some interesting interactions if multi-maintainer mode is "
+"in use; you will probably wish to check the changelog manually before "
+"uploading it in such cases."
+msgstr ""
+"Ne pas modifier les informations sur le responsable listées précédemment "
+"dans le journal des modifications. C'est particulièrement utile pour les "
+"parrains qui souhaitent ajouter un message automatiquement sans perturber "
+"les informations du journal des modifications. Remarquez qu'il peut y avoir "
+"des interactions intéressantes quand le mode multiresponsable est utilisé : "
+"vous voudrez probablement vérifier le journal des modifications manuellement "
+"avant d'envoyer le paquet à l'archive dans ce cas."
+
+#. type: TP
+#: ../scripts/debchange.1:351
+#, no-wrap
+msgid "B<--controlmaint>, B<-M>"
+msgstr "B<--controlmaint>, B<-M>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:359
+msgid ""
+"Use maintainer details from the I<debian/control> B<Maintainer> field rather "
+"than relevant environment variables (B<DEBFULLNAME>, B<DEBEMAIL>, etc.). "
+"This option might be useful to restore details of the main maintainer in the "
+"changelog trailer after a bogus edit (e.g. when B<-m> was intended but "
+"forgot) or when releasing a package in the name of the main maintainer (e.g. "
+"the team)."
+msgstr ""
+"Utiliser les données du champ B<Maintainer> du fichier I<debian/control> "
+"plutôt que les variables d'environnements habituelles (B<DEBFULLNAME>, "
+"B<DEBEMAIL>, etc.). Cette option peut servir à rétablir les données du "
+"responsable principal dans la dernière ligne de l'entrée du journal de "
+"modifications après un problème d'édition (par exemple quand on voulait "
+"utiliser l'option B<-m> et qu'on a oublié) ou lors de la publication d'un "
+"paquet au nom du responsable principal (par exemple l'équipe)."
+
+#. type: TP
+#: ../scripts/debchange.1:359
+#, no-wrap
+msgid "B<-->[B<no>]B<mainttrailer>, B<-t>"
+msgstr "B<-->[B<no>]B<mainttrailer>, B<-t>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:369
+msgid ""
+"If B<mainttrailer> is set, it will avoid modifying the existing changelog "
+"trailer line (i.e. the maintainer and date-stamp details), unless used with "
+"options that require the trailer to be modified (e.g. B<--create>, B<--"
+"release>, B<-i>, B<--qa>, etc.) This option differs from B<--maintmaint> in "
+"that it will use multi-maintainer mode if appropriate, with the exception of "
+"editing the trailer. See also the B<DEBCHANGE_MAINTTRAILER> configuration "
+"file option below."
+msgstr ""
+"Si l'option B<mainttrailer> est activée, elle évitera la modification de la "
+"ligne de fin des entrées du journal des modifications (c'est-à-dire les "
+"détails sur le responsable et l'horodatage), à moins qu'une option qui "
+"nécessite la modification de cette ligne de fin soit utilisée (par exemple, "
+"B<--create>, B<--release>, B<-i>, B<--qa>, etc.). Cette option diffère de "
+"B<--maintmaint> puisque le mode multiresponsable sera utilisé s'il se "
+"justifie, à l'exception de l'édition de la ligne de fin. Consultez aussi "
+"l'option du fichier de configuration B<DEBCHANGE_MAINTTRAILER> ci-dessous."
+
+#. type: Plain text
+#: ../scripts/debchange.1:373 ../scripts/debchange.1:377
+msgid ""
+"See the above section \"B<Directory name checking>\" for an explanation of "
+"this option."
+msgstr ""
+"Veuillez consulter la section ci-dessus « B<Vérification du nom du "
+"répertoire> » pour une explication de cette option."
+
+#. type: TP
+#: ../scripts/debchange.1:381
+#, no-wrap
+msgid "B<--release-heuristic> I<log>|I<changelog>"
+msgstr "B<--release-heuristic> I<log>|I<changelog>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:386
+msgid ""
+"Controls how B<debchange> determines if a package has been released, when "
+"deciding whether to create a new changelog entry or append to an existing "
+"changelog entry."
+msgstr ""
+"Contrôler comment B<debchange> détermine si le paquet a été distribué, pour "
+"décider s'il faut créer une nouvelle entrée ou rajouter dans une entrée "
+"existante du journal des modifications."
+
+#. type: Plain text
+#: ../scripts/debchange.1:392 ../scripts/debclean.1:90
+#: ../scripts/debrelease.1:105 ../scripts/debsign.1:106
+#: ../scripts/dep3changelog.1:22 ../scripts/dscverify.1:42
+#: ../scripts/nmudiff.1:79 ../scripts/pts-subscribe.1:34
+#: ../scripts/uupdate.1:88 ../scripts/who-uploads.1:50
+msgid "Display version and copyright information and exit successfully."
+msgstr "Afficher la version et le copyright, puis quitter avec succès."
+
+#. type: TP
+#: ../scripts/debchange.1:398
+#, no-wrap
+msgid "B<DEBCHANGE_PRESERVE>"
+msgstr "B<DEBCHANGE_PRESERVE>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:402
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--preserve> command "
+"line parameter being used."
+msgstr ""
+"Lui attribuer la valeur I<yes> équivaut à utiliser l'option B<--preserve>."
+
+#. type: TP
+#: ../scripts/debchange.1:402
+#, no-wrap
+msgid "B<DEBCHANGE_QUERY_BTS>"
+msgstr "B<DEBCHANGE_QUERY_BTS>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:406
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--noquery> command "
+"line parameter being used."
+msgstr ""
+"Lui attribuer la valeur I<no> équivaut à utiliser l'option B<--noquery>."
+
+#. type: Plain text
+#: ../scripts/debchange.1:413
+msgid ""
+"See the above section \"B<Directory name checking>\" for an explanation of "
+"these variables. Note that these are package-wide configuration variables, "
+"and will therefore affect all B<devscripts> scripts which check their value, "
+"as described in their respective manpages and in B<devscripts.conf>(5)."
+msgstr ""
+"Veuillez consulter la section « B<Vérification du nom du répertoire> » ci-"
+"dessus pour une explication de ces variables. Remarquez que ce sont des "
+"variables de configuration pour tous les outils du paquet B<devscripts> ; "
+"elles impacteront tous les scripts qui les utilisent, comme indiqué dans "
+"leurs pages de manuel respectives et dans B<devscripts.conf>(5)."
+
+#. type: TP
+#: ../scripts/debchange.1:413
+#, no-wrap
+msgid "B<DEBCHANGE_RELEASE_HEURISTIC>"
+msgstr "B<DEBCHANGE_RELEASE_HEURISTIC>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:418
+msgid ""
+"Controls how B<debchange> determines if a package has been released, when "
+"deciding whether to create a new changelog entry or append to an existing "
+"changelog entry. Can be either I<log> or I<changelog>."
+msgstr ""
+"Contrôle comment B<debchange> détermine si le paquet a été distribué, pour "
+"décider s'il faut créer une nouvelle entrée ou rajouter dans une entrée "
+"existante du journal des modifications. Peut être soit I<log> soit "
+"I<changelog>."
+
+#. type: TP
+#: ../scripts/debchange.1:418
+#, no-wrap
+msgid "B<DEBCHANGE_MULTIMAINT>"
+msgstr "B<DEBCHANGE_MULTIMAINT>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:423
+msgid ""
+"If set to I<no>, B<debchange> will not introduce multiple-maintainer "
+"distinctions when a different maintainer appends an entry to an existing "
+"changelog. See the discussion above. Default is I<yes>."
+msgstr ""
+"Si elle est définie à I<no>, B<debchange> n'introduira pas de distinction "
+"multiresponsable lorsqu'un responsable différent ajoutera une entrée à un "
+"journal des modifications existant. Regardez la discussion ci-dessus. La "
+"valeur par défaut est I<yes>."
+
+#. type: TP
+#: ../scripts/debchange.1:423
+#, no-wrap
+msgid "B<DEBCHANGE_MULTIMAINT_MERGE>"
+msgstr "B<DEBCHANGE_MULTIMAINT_MERGE>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:429
+msgid ""
+"If set to I<yes>, when adding changes in multiple-maintainer mode "
+"B<debchange> will check whether previous changes by the current maintainer "
+"exist and add the new changes to the existing block rather than creating a "
+"new block. Default is I<no>."
+msgstr ""
+"Si elle est définie à I<yes>, lors de l'ajout de modifications en mode "
+"multiresponsable, B<debchange> vérifiera si des modifications précédentes "
+"ont été réalisées par le responsable actuel et ajoutera les modifications au "
+"bloc existant plutôt que de créer un nouveau bloc. La valeur par défaut est "
+"I<no>."
+
+#. type: TP
+#: ../scripts/debchange.1:429
+#, no-wrap
+msgid "B<DEBCHANGE_MAINTTRAILER>"
+msgstr "B<DEBCHANGE_MAINTTRAILER>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:433
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--nomainttrailer> "
+"command line parameter being used."
+msgstr ""
+"Lui attribuer la valeur I<no> équivaut à utiliser l'option B<--"
+"nomainttrailer>."
+
+#. type: TP
+#: ../scripts/debchange.1:433
+#, no-wrap
+msgid "B<DEBCHANGE_TZ>"
+msgstr "B<DEBCHANGE_TZ>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:437
+msgid ""
+"Use this timezone for changelog entries. Default is the user/system "
+"timezone as shown by `B<date -R>` and affected by the environment variable "
+"B<TZ>."
+msgstr ""
+"Utiliser ce fuseau horaire pour les entrées de journal des modifications. "
+"Par défaut, le fuseau horaire de l'utilisateur sur le système est utilisé, "
+"comme avec « B<date -R> » avec prise en compte de la variable "
+"d'environnement TZ."
+
+#. type: TP
+#: ../scripts/debchange.1:437
+#, no-wrap
+msgid "B<DEBCHANGE_LOWER_VERSION_PATTERN>"
+msgstr "B<DEBCHANGE_LOWER_VERSION_PATTERN>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:441
+msgid ""
+"If this is set, then it is the same as the B<--allow-lower-version> command "
+"line parameter being used."
+msgstr ""
+"Lui attribuer une valeur équivaut à utiliser cette valeur avec l'option B<--"
+"allow-lower-version> sur la ligne de commande."
+
+#. type: TP
+#: ../scripts/debchange.1:441
+#, no-wrap
+msgid "B<DEBCHANGE_AUTO_NMU>"
+msgstr "B<DEBCHANGE_AUTO_NMU>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:447
+msgid ""
+"If this is set to I<no> then B<debchange> will not attempt to automatically "
+"determine whether the current changelog stanza represents an NMU. The "
+"default is I<yes>. See the discussion of the B<--nmu> option above."
+msgstr ""
+"Si elle est définie à I<no> alors B<debchanges> n'essaiera pas de déterminer "
+"automatiquement si la modification en cours représente une NMU. La valeur "
+"par défaut est I<yes>. Consultez la discussion sur l'option B<--nmu> ci-"
+"dessus."
+
+#. type: TP
+#: ../scripts/debchange.1:447
+#, no-wrap
+msgid "B<DEBCHANGE_FORCE_SAVE_ON_RELEASE>"
+msgstr "B<DEBCHANGE_FORCE_SAVE_ON_RELEASE>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:451
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-force-save-on-"
+"release> command line parameter being used."
+msgstr ""
+"Lui attribuer la valeur I<no> équivaut à utiliser l'option B<--no-force-save-"
+"on-release>."
+
+#. type: TP
+#: ../scripts/debchange.1:451
+#, no-wrap
+msgid "B<DEBCHANGE_VENDOR>"
+msgstr "B<DEBCHANGE_VENDOR>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:455
+msgid ""
+"Use this vendor instead of the default (dpkg-vendor output). See B<--"
+"vendor> for details."
+msgstr ""
+"Utiliser cet éditeur à la place de celui par défaut (sortie de B<dpkg-"
+"vendor>). Consultez B<--vendor> pour plus de précisions."
+
+#. type: =head1
+#: ../scripts/debchange.1:455 ../scripts/dep3changelog.1:22
+#: ../scripts/devscripts.1:16 ../scripts/devscripts.1:20
+#: ../scripts/mass-bug.pl:127
+#, no-wrap
+msgid "ENVIRONMENT"
+msgstr "ENVIRONNEMENT"
+
+#. type: TP
+#: ../scripts/debchange.1:456 ../scripts/dep3changelog.1:23
+#, no-wrap
+msgid "B<DEBEMAIL>, B<EMAIL>, B<DEBFULLNAME>, B<NAME>"
+msgstr "B<DEBEMAIL>, B<EMAIL>, B<DEBFULLNAME>, B<NAME>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:459 ../scripts/dep3changelog.1:26
+msgid "See the above description of the use of these environment variables."
+msgstr ""
+"Reportez-vous à la description précédente de l'utilisation de ces variables "
+"d'environnement"
+
+#. type: TP
+#: ../scripts/debchange.1:459
+#, no-wrap
+msgid "B<CHANGELOG>"
+msgstr "B<CHANGELOG>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:465
+msgid ""
+"This variable specifies the changelog to edit in place of I<debian/"
+"changelog>. No directory traversal or checking is performed when this "
+"variable is set. This variable is overridden by the B<--changelog> command-"
+"line setting."
+msgstr ""
+"Cette variable indique le journal des modifications à éditer en remplacement "
+"de I<debian/changelog>. Aucune traversée ou contrôle de répertoire ne sera "
+"fait si cette variable est utilisée. Cette variable est remplacée par "
+"l'option de la ligne de commande B<--changelog>."
+
+#. type: TP
+#: ../scripts/debchange.1:465
+#, no-wrap
+msgid "B<VISUAL>, B<EDITOR>"
+msgstr "B<VISUAL>, B<EDITOR>"
+
+#. type: Plain text
+#: ../scripts/debchange.1:469
+msgid ""
+"These environment variables (in this order) determine the editor used by "
+"B<sensible-editor>."
+msgstr ""
+"Ces variables d'environnement déterminent (dans cet ordre) quel sera "
+"l'éditeur invoqué par B<sensible-editor>."
+
+#. type: Plain text
+#: ../scripts/debchange.1:475
+msgid ""
+"B<debc>(1), B<debclean>(1), B<dput>(1), B<dupload>(1), B<devscripts.conf>(5)"
+msgstr ""
+"B<debc>(1), B<debclean>(1), B<dput>(1), B<dupload>(1), B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/debchange.1:478
+msgid ""
+"The original author was Christoph Lameter E<lt>clameter@debian.orgE<gt>. "
+"Many substantial changes and improvements were made by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"L'auteur initial est Christoph Lameter E<lt>clameter@debian.orgE<gt>. "
+"Beaucoup de changements substantiels et d'améliorations ont été apportés par "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:26
+msgid "debcheckout - checkout the development repository of a Debian package"
+msgstr "debcheckout - Récupérer le contenu du dépôt d'un paquet Debian"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:32
+msgid "B<debcheckout> [I<OPTIONS>] I<PACKAGE> [I<DESTDIR>]"
+msgstr "B<debcheckout> [I<options>] I<paquet> [I<rép_destination>]"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:34
+msgid "B<debcheckout> [I<OPTIONS>] I<REPOSITORY_URL> [I<DESTDIR>]"
+msgstr "B<debcheckout> [I<options>] I<URL_dépôt> [I<rép_destination>]"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:36
+msgid "B<debcheckout> B<--help>"
+msgstr "B<debcheckout> B<--help>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:42
+msgid ""
+"B<debcheckout> retrieves the information about the Version Control System "
+"used to maintain a given Debian package (the I<PACKAGE> argument), and then "
+"checks out the latest (potentially unreleased) version of the package from "
+"its repository. By default the repository is checked out to the I<PACKAGE> "
+"directory; this can be overridden by providing the I<DESTDIR> argument."
+msgstr ""
+"B<debcheckout> récupère les informations sur le système de gestion de "
+"version utilisé pour la maintenance d'un paquet Debian (le paramètre "
+"I<paquet>), puis récupère la dernière version (potentiellement non "
+"officielle) du paquet depuis le dépôt. Par défaut le dépôt est récupéré dans "
+"le répertoire I<paquet> ; cela peut être modifié à l'aide du paramètre "
+"I<rép_destination>."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:48
+msgid ""
+"The information about where the repository is available is expected to be "
+"found in B<Vcs-*> fields available in the source package record. For "
+"example, the B<vim> package exposes such information with a field like "
+"S<B<Vcs-Hg: http://hg.debian.org/hg/pkg-vim/vim>>, you can see it by "
+"grepping through B<apt-cache showsrc vim>."
+msgstr ""
+"Les informations indiquant où se trouve le dépôt sont recherchées dans les "
+"champs B<Vcs-*> du paquet source. Par exemple, le paquet B<vim> fournit les "
+"informations en utilisant un champ S<B<Vcs-Hg: http://hg.debian.org/hg/pkg-"
+"vim/vim>> visible dans la sortie de B<apt-cache showsrc vim>."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:54
+msgid ""
+"If more than one source package record containing B<Vcs-*> fields is "
+"available, B<debcheckout> will select the record with the highest version "
+"number. Alternatively, a particular version may be selected from those "
+"available by specifying the package name as I<PACKAGE>=I<VERSION>."
+msgstr ""
+"Si plus d'un paquet source contenant des champs B<Vcs-*> est disponible, "
+"B<debcheckout> sélectionnera le paquet avec le numéro de version le plus "
+"élevé. Sinon, un numéro de version spécifique peut être sélectionné parmi "
+"ceux disponibles en utilisant la forme I<paquet>B<=>I<version> pour le nom "
+"de paquet."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:59
+msgid ""
+"If you already know the URL of a given repository you can invoke "
+"B<debcheckout> directly on it, but you will probably need to pass the "
+"appropriate B<-t> flag. That is, some heuristics are in use to guess the "
+"repository type from the URL; if they fail, you might want to override the "
+"guessed type using B<-t>."
+msgstr ""
+"Si vous connaissez déjà l'URL d'un dépôt, vous pouvez appeler directement "
+"B<debcheckout> avec celle-ci, mais vous aurez probablement à utiliser le "
+"paramètre B<-t> approprié. C'est-à-dire que des heuristiques sont utilisées "
+"pour deviner le type de dépôt à partir de l'URL ; si elles échouent, vous "
+"pouvez remplacer le type deviné en utilisant B<-t>."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:65
+msgid ""
+"The currently supported version control systems are: Arch (arch), Bazaar "
+"(bzr), CVS (cvs), Darcs (darcs), Git (git), Mercurial (hg) and Subversion "
+"(svn)."
+msgstr ""
+"Les systèmes de contrôle de versions actuellement pris en charge sont : Arch "
+"(arch), Bazaar (bzr), CVS (cvs), Darcs (darcs), Git (git), Mercurial (hg) et "
+"Subversion (svn)."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:70
+msgid "B<GENERAL OPTIONS>"
+msgstr "B<OPTIONS GÉNÉRALES>"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:74
+msgid "B<-a>, B<--auth>"
+msgstr "B<-a>, B<--auth>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:76
+msgid ""
+"Work in authenticated mode; this means that for known repositories (mainly "
+"those hosted on S<I<https://alioth.debian.org>>) URL rewriting is attempted "
+"before checking out, to ensure that the repository can be committed to. For "
+"example, for Subversion repositories hosted on alioth this means that S<I<svn"
+"+ssh://svn.debian.org/...>> will be used instead of S<I<svn://svn.debian."
+"org/...>>."
+msgstr ""
+"Utiliser le mode authentifié ; cela signifie que pour les dépôts connus "
+"(principalement ceux hébergés sur S<I<https://alioth.debian.org>>), une ré-"
+"écriture de l'URL est tentée avant d'effectuer la récupération, pour "
+"s'assurer qu'il est possible d'envoyer les modifications dans le dépôt. Par "
+"exemple, pour les dépôts Subversion hébergés sur Alioth, cela signifie que "
+"S<I<svn+ssh://svn.debian.org/...>> sera utilisé à la place de S<I<svn://svn."
+"debian.org/...>>"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:83
+msgid "B<-d>, B<--details>"
+msgstr "B<-d>, B<--details>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:85
+msgid ""
+"Only print a list of detailed information about the package repository, "
+"without checking it out; the output format is a list of fields, each field "
+"being a pair of TAB-separated field name and field value. The actual fields "
+"depend on the repository type. This action might require a network "
+"connection to the remote repository."
+msgstr ""
+"N'afficher qu'une liste d'informations sur le dépôt du paquet, sans le "
+"récupérer ; le format de sortie est une liste de champs, chaque champ étant "
+"une paire nom et valeur du champ séparés par une tabulation. Les champs "
+"dépendent du type de dépôt. Cette action peut nécessiter une connexion "
+"réseau vers le dépôt distant."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:91
+msgid "Also see B<-p>. This option and B<-p> are mutually exclusive."
+msgstr ""
+"Consultez également B<-p>. Cette option et l'option B<-p> sont mutuellement "
+"exclusives."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:95
+msgid "Print a detailed help message and exit."
+msgstr "Afficher un message d'aide détaillé et quitter."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:97
+msgid "B<-p>, B<--print>"
+msgstr "B<-p>, B<--print>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:99
+msgid ""
+"Only print a summary about package repository information, without checking "
+"it out; the output format is TAB-separated with two fields: repository type, "
+"repository URL. This action works offline, it only uses \"static\" "
+"information as known by APT's cache."
+msgstr ""
+"N'afficher qu'un résumé des informations sur le dépôt du paquet, sans le "
+"récupérer ; le format de sortie comprend deux champs séparés par une "
+"tabulation : le type de dépôt et l'URL du dépôt. Cette action fonctionne "
+"hors-ligne, elle n'utilise que des informations « statiques » telles "
+"qu'elles sont connues du cache d'APT."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:104
+msgid "Also see B<-d>. This option and B<-d> are mutually exclusive."
+msgstr ""
+"Consultez également B<-d>. Cette option et l'option B<-d> sont mutuellement "
+"exclusives."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:106
+msgid "B<-P> I<package>, B<--package> I<package>"
+msgstr "B<-P> I<paquet>, B<--package> I<paquet>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:108
+msgid ""
+"When checking out a repository URL, instead of trying to guess the package "
+"name from the URL, use this package name."
+msgstr ""
+"Lors de la récupération d'un dépôt par son URL, utiliser ce nom de I<paquet> "
+"au lieu d'essayer de le deviner à partir de l'URL."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:111
+msgid "B<-t> I<TYPE>, B<--type> I<TYPE>"
+msgstr "B<-t> I<type>, B<--type> I<type>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:113
+msgid ""
+"Override the repository type (which defaults to some heuristics based on the "
+"URL or, in case of heuristic failure, the fallback \"svn\"); should be one "
+"of the currently supported repository types."
+msgstr ""
+"Forcer le type de dépôt (défini par défaut par des heuristiques basées sur "
+"l'URL ou, si les heuristiques échouent, « svn ») ; le type de dépôt doit "
+"être un des types de dépôt gérés."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:117
+msgid "B<-u> I<USERNAME>, B<--user> I<USERNAME>"
+msgstr "B<-u> I<nom_utilisateur>, B<--user> I<nom_utilisateur>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:119
+msgid ""
+"Specify the login name to be used in authenticated mode (see B<-a>). This "
+"option implies B<-a>: you don't need to specify both."
+msgstr ""
+"Indiquer le nom d'utilisateur à utiliser en mode authentifié (voir B<-a>). "
+"Cette option implique l'utilisation de B<-a> : vous n'avez pas à préciser "
+"les deux."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:122
+msgid "B<-f>, B<--file>"
+msgstr "B<-f>, B<--file>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:124
+msgid ""
+"Specify that the named file should be extracted from the repository and "
+"placed in the destination directory. May be used more than once to extract "
+"multiple files."
+msgstr ""
+"Indiquer que le fichier mentionné doit être extrait du dépôt et placé dans "
+"le répertoire de destination. Elle peut être utilisée plus d'une fois pour "
+"extraire plusieurs fichiers."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:128
+msgid "B<--source=never>|B<auto>|B<download-only>|B<always>"
+msgstr "B<--source=never>|B<auto>|B<download-only>|B<always>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:130
+msgid ""
+"Some packages only place the F<debian> directory in version control. "
+"B<debcheckout> can retrieve the remaining parts of the source using B<apt-"
+"get source> and move the files into the checkout."
+msgstr ""
+"Certains paquets ne gardent que le répertoire F<debian> en système de "
+"contrôle de versions. B<debcheckout> permet de récupérer les morceaux "
+"manquants des sources avec B<apt-get source> et de déplacer les fichiers "
+"dans le répertoire récupéré."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:136
+msgid "B<never>"
+msgstr "B<never>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:138
+msgid "Only use the repository."
+msgstr "N'utiliser que le dépôt."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:140
+msgid "B<auto> (default)"
+msgstr "B<auto> (défaut)"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:142
+msgid ""
+"If the repository only contains the F<debian> directory, retrieve the source "
+"package, unpack it, and also place the F<.orig.tar.gz> file into the current "
+"directory. Else, do nothing."
+msgstr ""
+"Si le dépôt ne contient que le répertoire F<debian>, récupérer le paquet "
+"source, le dépaqueter, et mettre aussi le fichier F<.orig.tar.gz> dans le "
+"répertoire actuel. Sinon, ne rien faire."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:146
+msgid "B<download-only>"
+msgstr "B<download-only>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:148
+msgid "Always retrieve the I<.orig.tar.gz> file, but do not unpack it."
+msgstr ""
+"Toujours récupérer le fichier I<.orig.tar.gz>, mais ne jamais le dépaqueter."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:150
+msgid "B<always>"
+msgstr "B<always>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:152
+msgid ""
+"Always retrieve the I<.orig.tar.gz> file, and if the repository only "
+"contains the F<debian> directory, unpack it."
+msgstr ""
+"Toujours récupérer le fichier I<.orig.tar.gz>, et si le dépôt ne contient "
+"que le répertoire F<debian>, le dépaqueter."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:159
+msgid "B<VCS-SPECIFIC OPTIONS>"
+msgstr "B<OPTIONS SPECIFIQUES AU SYSTÈME DE CONTRÔLE DE VERSIONS>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:161
+msgid "I<GIT-SPECIFIC OPTIONS>"
+msgstr "I<OPTIONS SPÉCIFIQUES À GIT>"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:165
+msgid "B<--git-track> I<BRANCHES>"
+msgstr "B<--git-track> I<branches>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:167
+msgid ""
+"Specify a list of remote branches which will be set up for tracking (as in "
+"S<B<git branch --track>>, see B<git-branch>(1)) after the remote Git "
+"repository has been cloned. The list should be given as a space-separated "
+"list of branch names."
+msgstr ""
+"Indiquer une liste de branches qui seront configurées pour être suivies "
+"(comme avec S<B<git branch --track>>, consultez B<git-branch>(1)) une fois "
+"que le dépôt Git distant sera cloné. La liste doit être une liste de noms de "
+"branches, séparés par des espaces."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:172
+msgid ""
+"As a shorthand, the string \"B<*>\" can be given to require tracking of all "
+"remote branches."
+msgstr ""
+"Comme raccourci, la chaîne « B<*> » peut être fournie pour demander le suivi "
+"de toutes les branches distantes."
+
+# NOTE: presque identique
+#. type: textblock
+#: ../scripts/debcheckout.pl:179 ../scripts/rmadison.pl:295
+msgid ""
+"The two configuration files F</etc/devscripts.conf> and F<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file settings. "
+"Environment variable settings are ignored for this purpose. The currently "
+"recognised variables are:"
+msgstr ""
+"Les deux fichiers de configuration I</etc/devscripts.conf> et I<~/."
+"devscripts> sont chargés dans cet ordre par un interpréteur de commandes "
+"pour définir les variables de configuration. Des options de ligne de "
+"commande peuvent être utilisées pour écraser les paramètres des fichiers de "
+"configuration. Les paramètres des variables d'environnement sont ignorés à "
+"cette fin. Les variables actuellement reconnues sont :"
+
+#. type: =item
+#: ../scripts/debcheckout.pl:187
+msgid "B<DEBCHECKOUT_AUTH_URLS>"
+msgstr "B<DEBCHECKOUT_AUTH_URLS>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:189
+msgid ""
+"This variable should be a space separated list of Perl regular expressions "
+"and replacement texts, which must come in pairs: I<REGEXP> I<TEXT> I<REGEXP> "
+"I<TEXT> ... and so on. Each pair denotes a substitution which is applied to "
+"repository URLs if other built-in means of building URLs for authenticated "
+"mode (see B<-a>) have failed."
+msgstr ""
+"Cette variable doit être une liste d'expressions rationnelles Perl et de "
+"textes de remplacements séparées par des espaces, qui doivent être fournies "
+"par paires : I<exp_rat> I<texte> I<exp_rat> I<texte> ... Chaque paire "
+"indique une substitution qui est appliquée aux URL des dépôts si les autres "
+"moyens internes pour construire des URL pour le mode authentifié (voir B<-"
+"a>) ont échoué."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:195
+msgid ""
+"References to matching substrings in the replacement texts are allowed as "
+"usual in Perl by the means of B<$1>, B<$2>, ... and so on."
+msgstr ""
+"Les références aux sous-chaînes sont autorisées dans les textes de "
+"remplacement comme d'habitude avec Perl en utilisant B<$1>, B<$2>, ..."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:198
+msgid ""
+"This setting can be used to enable authenticated mode for most repositories "
+"out there. Note that the Debian repositories on S<alioth.debian.org> (S<"
+"$vcs.debian.org>) are implicitly defined."
+msgstr ""
+"Cette configuration permet d'activer le mode authentifié pour la plupart des "
+"dépôts existants. Remarquez que les dépôts Debian de S<alioth.debian.org> (S<"
+"$vcs.debian.org>) sont implicitement définis."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:202
+msgid "Here is a sample snippet suitable for the configuration files:"
+msgstr ""
+"Voici un bout d'exemple qui conviendra pour les fichiers de configuration :"
+
+#. type: verbatim
+#: ../scripts/debcheckout.pl:204
+#, no-wrap
+msgid ""
+" DEBCHECKOUT_AUTH_URLS='\n"
+" ^\\w+://(svn\\.example\\.com)/(.*) svn+ssh://$1/srv/svn/$2\n"
+" ^\\w+://(git\\.example\\.com)/(.*) git+ssh://$1/home/git/$2\n"
+" '\n"
+"\n"
+msgstr ""
+" DEBCHECKOUT_AUTH_URLS='\n"
+" ^\\w+://(svn\\.example\\.com)/(.*) svn+ssh://$1/srv/svn/$2\n"
+" ^\\w+://(git\\.example\\.com)/(.*) git+ssh://$1/home/git/$2\n"
+" '\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:209
+msgid ""
+"Note that whitespace is not allowed in either regexps or replacement texts. "
+"Also, given that configuration files are sourced by a shell, you probably "
+"want to use single quotes around the value of this variable."
+msgstr ""
+"Veuillez noter que les blancs ne sont autorisés ni dans les expressions "
+"rationnelles ni dans les textes de remplacement. Aussi, comme les fichiers "
+"de configuration sont souvent lus par les interpréteurs de commandes avec "
+"« source », vous avez intérêt à utiliser des guillemets simples autour de la "
+"valeur de cette variable."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:214
+msgid "B<DEBCHECKOUT_SOURCE>"
+msgstr "B<DEBCHECKOUT_SOURCE>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:216
+msgid ""
+"This variable determines under what scenarios the associated orig.tar.gz for "
+"a package will be downloaded. See the B<--source> option for a description "
+"of the values."
+msgstr ""
+"Cette variable détermine le scenario pour télécharger ou non le fichier I<."
+"orig.tar.gz> associé à un paquet. Consultez l'option B<--source> pour une "
+"description des valeurs."
+
+#. type: =item
+#: ../scripts/debcheckout.pl:220
+msgid "B<DEBCHECKOUT_USER>"
+msgstr "B<DEBCHECKOUT_USER>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:222
+msgid ""
+"This variable sets the username for authenticated mode. It can be overridden "
+"with the B<--user> option. Setting this variable does not imply the use of "
+"authenticated mode, it still has to be activated with B<--auth>."
+msgstr ""
+"Cette variable définit l’identifiant pour le mode authentifié. Il peut être "
+"modifié avec l’option B<--user>. La définition de cette variable n’implique "
+"pas l’utilisation du mode authentifié, il doit toujours être activé avec B<--"
+"auth>."
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:230
+msgid ""
+"B<apt-cache>(8), Section 6.2.5 of the Debian Developer's Reference (for more "
+"information about B<Vcs-*> fields): S<I<https://www.debian.org/doc/"
+"developers-reference/best-pkging-practices.html#bpp-vcs>>."
+msgstr ""
+"B<apt-cache>(8), Section 6.2.5 de la référence du développeur Debian (pour "
+"plus d'informations sur les champs B<Vcs-*>) : S<I<https://www.debian.org/"
+"doc/developers-reference/best-pkging-practices.html#bpp-vcs>>"
+
+#. type: textblock
+#: ../scripts/debcheckout.pl:235
+msgid ""
+"B<debcheckout> and this manpage have been written by Stefano Zacchiroli "
+"<I<zack@debian.org>>."
+msgstr ""
+"B<debcheckout> et cette page de manuel ont été écrits par Stefano Zacchiroli "
+"<I<zack@debian.org>>."
+
+#. type: TH
+#: ../scripts/debclean.1:1
+#, no-wrap
+msgid "DEBCLEAN"
+msgstr "DEBCLEAN"
+
+#. type: Plain text
+#: ../scripts/debclean.1:4
+msgid "debclean - clean up a sourcecode tree"
+msgstr "debclean - Nettoyer une arborescence de code source"
+
+#. type: Plain text
+#: ../scripts/debclean.1:6
+msgid "B<debclean> [I<options>]"
+msgstr "B<debclean> [I<options>]"
+
+#. type: Plain text
+#: ../scripts/debclean.1:13
+msgid ""
+"B<debclean> walks through the directory tree starting at the directory tree "
+"in which it was invoked, and executes I<debian/rules clean> for each Debian "
+"source directory encountered. These directories are recognised by "
+"containing a debian/changelog file for a package whose name matches that of "
+"the directory. Name matching is described below."
+msgstr ""
+"B<debclean> parcourt l'arborescence des répertoires en commençant par "
+"l'arborescence du répertoire d'où il a été appelé, et exécute B<debian/rules "
+"clean> pour chaque répertoire source Debian rencontré. Ces répertoires sont "
+"reconnus parce qu'ils contiennent un fichier I<debian/changelog> pour le "
+"paquet dont le nom correspond au nom du répertoire. La correspondance des "
+"noms est décrite plus bas."
+
+#. type: Plain text
+#: ../scripts/debclean.1:22
+msgid ""
+"Also, if the B<--cleandebs> option is given, then in every directory "
+"containing a Debian source tree, all files named *.deb, *.changes and *."
+"build are removed. The .dsc, .diff.gz and the (.orig).tar.gz files are not "
+"touched so that the release can be reconstructed if necessary, and the ."
+"upload files are left so that B<debchange> functions correctly. The B<--"
+"nocleandebs> option prevents this extra cleaning behaviour and the B<--"
+"cleandebs> option forces it. The default is not to clean these files."
+msgstr ""
+"En outre, si l'option B<--cleandebs> est donnée, alors dans chaque "
+"répertoire contenant une arborescence source Debian, tous les fichiers "
+"nommés *.deb, *.changes et *.build sont supprimés. Les fichiers .dsc, .diff."
+"gz et (.orig).tar.gz ne sont pas touchés afin que la version puisse être "
+"reconstruite si nécessaire et les fichiers .upload sont laissés pour que "
+"B<debchange> fonctionne correctement. L'option B<--nocleandebs> empêche ce "
+"comportement de nettoyage supplémentaire et l'option B<--cleandebs> le "
+"force. Par défaut, le nettoyage n'est pas réalisé."
+
+#. type: Plain text
+#: ../scripts/debclean.1:24
+msgid "B<debclean> uses B<debuild>(1) to clean the source tree."
+msgstr ""
+"B<debclean> utilise B<debuild>(1) pour nettoyer l'arborescence des sources."
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/debclean.1:35
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debclean> will walk through the directory tree searching for I<debian/"
+"changelog> files. As a safeguard against stray files causing potential "
+"problems, it will examine the name of the parent directory once it finds a "
+"I<debian/changelog> file, and check that the directory name corresponds to "
+"the package name. Precisely how it does this is controlled by two "
+"configuration file variables B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and their corresponding command-line "
+"options B<--check-dirname-level> and B<--check-dirname-regex>."
+msgstr ""
+"Comme certains autres scripts du paquet B<devscripts>, B<debclean> parcourt "
+"une arborescence de répertoires pour trouver des fichiers I<debian/"
+"changelog>. Pour éviter les problèmes posés par les fichiers égarés, il "
+"examine le nom du répertoire parent une fois qu'il a trouvé le fichier "
+"I<debian/changelog>, et vérifie que le nom du répertoire correspond au nom "
+"du paquet. La façon précise utilisée est contrôlée par les deux variables du "
+"fichier de configuration B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> et "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, et les options en ligne de commande "
+"associées B<--check-dirname-level> et B<--check-dirname-regex>."
+
+#. type: TP
+#: ../scripts/debclean.1:61
+#, no-wrap
+msgid "B<--cleandebs>"
+msgstr "B<--cleandebs>"
+
+#. type: Plain text
+#: ../scripts/debclean.1:65
+msgid ""
+"Also remove all .deb, .changes and .build files from the parent directory."
+msgstr ""
+"Enlever également tous les fichiers .deb, .changes et .build du répertoire "
+"parent."
+
+#. type: TP
+#: ../scripts/debclean.1:65
+#, no-wrap
+msgid "B<--nocleandebs>"
+msgstr "B<--nocleandebs>"
+
+#. type: Plain text
+#: ../scripts/debclean.1:69
+msgid ""
+"Do not remove the .deb, .changes and .build files from the parent directory; "
+"this is the default behaviour."
+msgstr ""
+"Ne pas supprimer les fichiers .deb, .changes et .build du répertoire parent. "
+"C'est le comportement par défaut."
+
+#. type: TP
+#: ../scripts/debclean.1:81 ../scripts/debuild.1:284
+#, no-wrap
+msgid "B<-d>"
+msgstr "B<-d>"
+
+#. type: Plain text
+#: ../scripts/debclean.1:84
+msgid "Do not run dpkg-checkbuilddeps to check build dependencies."
+msgstr ""
+"Ne pas exécuter dpkg-checkbuilddeps pour vérifier les dépendances de "
+"construction du paquet (« build dependencies »)."
+
+#. type: TP
+#: ../scripts/debclean.1:96
+#, no-wrap
+msgid "B<DEBCLEAN_CLEANDEBS>"
+msgstr "B<DEBCLEAN_CLEANDEBS>"
+
+#. type: Plain text
+#: ../scripts/debclean.1:100
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--cleandebs> command "
+"line parameter being used."
+msgstr ""
+"Lui attribuer la valeur I<yes> équivaut à utiliser l'option B<--cleandebs>."
+
+#. type: Plain text
+#: ../scripts/debclean.1:110
+msgid "B<debuild>(1), B<devscripts.conf>(5)"
+msgstr "B<debuild>(1), B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/debclean.1:112
+msgid ""
+"Christoph Lameter E<lt>clameter@debian.orgE<gt>; modifications by Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Christoph Lameter E<lt>clameter@debian.orgE<gt> ; modifications par Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:5
+msgid "debcommit - commit changes to a package"
+msgstr "debcommit - Soumettre les changements à un paquet"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:9
+msgid "B<debcommit> [I<options>] [B<--all> | I<files to commit>]"
+msgstr "B<debcommit> [I<options>] [B<--all> | I<fichiers à commiter>]"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:13
+msgid ""
+"B<debcommit> generates a commit message based on new text in B<debian/"
+"changelog>, and commits the change to a package's repository. It must be run "
+"in a working copy for the package. Supported version control systems are: "
+"B<cvs>, B<git>, B<hg> (mercurial), B<svk>, B<svn> (Subversion), B<baz>, "
+"B<bzr>, B<tla> (arch), B<darcs>."
+msgstr ""
+"B<debcommit> génère un message de commit basé sur le nouveau texte dans le "
+"fichier debian/changelog, et envoie la modification dans un dépôt du paquet. "
+"Il doit être lancé dans une copie de travail du paquet. Les systèmes de "
+"contrôle de versions pris en charge sont B<cvs>, B<git>, B<hg> (mercurial), "
+"B<svk>, B<svn> (Subversion), B<baz>, B<bzr>, B<tla> (arch), B<darcs>."
+
+#. type: =item
+#: ../scripts/debcommit.pl:23
+msgid "B<-c>, B<--changelog> I<path>"
+msgstr "B<-c>, B<--changelog> I<chemin>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:25
+msgid ""
+"Specify an alternate location for the changelog. By default debian/changelog "
+"is used."
+msgstr ""
+"Indiquer un autre emplacement pour le journal des modifications. Par défaut "
+"debian/changelog est utilisé."
+
+#. type: =item
+#: ../scripts/debcommit.pl:28
+msgid "B<-r>, B<--release>"
+msgstr "B<-r>, B<--release>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:30
+msgid ""
+"Commit a release of the package. The version number is determined from "
+"debian/changelog, and is used to tag the package in the repository."
+msgstr ""
+"Commiter une distribution (« release ») du paquet. Le numéro de version est "
+"déterminé à partir du fichier debian/changelog et est utilisé pour étiqueter "
+"le paquet dans le dépôt."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:33
+msgid ""
+"Note that svn/svk tagging conventions vary, so debcommit uses svnpath(1) to "
+"determine where the tag should be placed in the repository."
+msgstr ""
+"Veuillez noter que les conventions de nommage des étiquettes varient pour "
+"Subversion et svk, donc debcommit utilise svnpath(1) pour déterminer où "
+"l'étiquette doit être placée dans le dépôt."
+
+#. type: =item
+#: ../scripts/debcommit.pl:37
+msgid "B<-R>, B<--release-use-changelog>"
+msgstr "B<-R>, B<--release-use-changelog>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:39
+msgid ""
+"When used in conjunction with B<--release>, if there are uncommited changes "
+"to the changelog then derive the commit message from those changes rather "
+"than using the default message."
+msgstr ""
+"Quand elle est utilisée avec l'option B<--release>, s'il y a des "
+"modifications non envoyées dans le journal des modifications, alors utiliser "
+"ces modifications pour le message d'envoi (commit) plutôt que le message par "
+"défaut."
+
+#. type: =item
+#: ../scripts/debcommit.pl:43
+msgid "B<-m> I<text>, B<--message> I<text>"
+msgstr "B<-m> I<texte>, B<--message> I<texte>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:45
+msgid ""
+"Specify a commit message to use. Useful if the program cannot determine a "
+"commit message on its own based on debian/changelog, or if you want to "
+"override the default message."
+msgstr ""
+"Indiquer un message de commit à utiliser. Utile si le programme ne peut pas "
+"déterminer tout seul un message de commit à partir du fichier debian/"
+"changelog ou si vous voulez remplacer le message par défaut."
+
+#. type: =item
+#: ../scripts/debcommit.pl:49 ../scripts/tagpending.pl:97
+msgid "B<-n>, B<--noact>"
+msgstr "B<-n>, B<--noact>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:51
+msgid ""
+"Do not actually do anything, but do print the commands that would be run."
+msgstr "Ne rien faire, mais afficher les commandes qui seraient exécutées."
+
+#. type: =item
+#: ../scripts/debcommit.pl:53
+msgid "B<-d>, B<--diff>"
+msgstr "B<-d>, B<--diff>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:55
+msgid ""
+"Instead of committing, do print the diff of what would have been committed "
+"if this option were not given. A typical usage scenario of this option is "
+"the generation of patches against the current working copy (e.g. when you "
+"don't have commit access right)."
+msgstr ""
+"Au lieu de faire un envoi (commit), afficher la différence qui correspond à "
+"ce qui serait envoyé si cette option n'avait pas été fournie. C'est utile "
+"pour créer un patch correspondant aux modifications dans un espace de "
+"travail (par exemple quand vous n'avez pas les droits d'accès pour effectuer "
+"l'envoi)."
+
+#. type: =item
+#: ../scripts/debcommit.pl:60
+msgid "B<-C>, B<--confirm>"
+msgstr "B<-C>, B<--confirm>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:62
+msgid ""
+"Display the generated commit message and ask for confirmation before "
+"committing it. It is also possible to edit the message at this stage; in "
+"this case, the confirmation prompt will be re-displayed after the editing "
+"has been performed."
+msgstr ""
+"Afficher le message d'envoi créé et demander une confirmation avant l'envoi. "
+"Il est aussi possible d'éditer le message à ce moment ; dans ce cas, la "
+"demande de confirmation sera affichée de nouveau après que le message a été "
+"édité."
+
+#. type: =item
+#: ../scripts/debcommit.pl:66
+msgid "B<-e>, B<--edit>"
+msgstr "B<-e>, B<--edit>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:68
+msgid ""
+"Edit the generated commit message in your favorite editor before committing "
+"it."
+msgstr ""
+"Éditer le message d'envoi créé dans votre éditeur préféré avant l'envoi."
+
+#. type: TP
+#: ../scripts/debcommit.pl:71 ../scripts/dget.pl:567
+#: ../scripts/dpkg-depcheck.1:16
+#, no-wrap
+msgid "B<-a>, B<--all>"
+msgstr "B<-a>, B<--all>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:73
+msgid ""
+"Commit all files. This is the default operation when using a VCS other than "
+"git."
+msgstr ""
+"Envoyer tous les fichiers. C'est l'opération par défaut pour les systèmes de "
+"contrôle de versions autres que Git."
+
+#. type: =item
+#: ../scripts/debcommit.pl:76
+msgid "B<-s>, B<--strip-message>, B<--no-strip-message>"
+msgstr "B<-s>, B<--strip-message>, B<--no-strip-message>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:78
+msgid ""
+"If this option is set and the commit message has been derived from the "
+"changelog, the characters \"* \" will be stripped from the beginning of the "
+"message."
+msgstr ""
+"Si cette option est utilisée et que le message d'envoi est défini à l'aide "
+"du journal des modifications, les caractères « * » (espace comprise) seront "
+"enlevés au début du message."
+
+# NOTE: space inside the brackets?
+#. type: textblock
+#: ../scripts/debcommit.pl:82
+msgid ""
+"This option is set by default and ignored if more than one line of the "
+"message begins with \"[*+-] \"."
+msgstr ""
+"Cette option est activée par défaut et est ignorée si plus d'une ligne du "
+"message commence par « [*+-] » (espace comprise)."
+
+#. type: =item
+#: ../scripts/debcommit.pl:85
+msgid "B<--sign-commit>, B<--no-sign-commit>"
+msgstr "B<--sign-commit>, B<--no-sign-commit>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:87
+msgid ""
+"If this option is set, then the commits that debcommit creates will be "
+"signed using gnupg. Currently this is only supported by git, hg, and bzr."
+msgstr ""
+"Si cette option est activée, alors les messages créés par debcommit seront "
+"signés avec GnuPG. Ce n'est actuellement géré que par Git, mercurial et "
+"Bazaar."
+
+#. type: =item
+#: ../scripts/debcommit.pl:90
+msgid "B<--sign-tags>, B<--no-sign-tags>"
+msgstr "B<--sign-tags>, B<--no-sign-tags>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:92
+msgid ""
+"If this option is set, then tags that debcommit creates will be signed using "
+"gnupg. Currently this is only supported by git."
+msgstr ""
+"Si cette option est activée, alors les étiquettes créées par debcommit "
+"seront signées avec GnuPG. Ce n'est actuellement géré que par Git."
+
+#. type: =item
+#: ../scripts/debcommit.pl:95
+msgid "B<--changelog-info>"
+msgstr "B<--changelog-info>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:97
+msgid ""
+"If this option is set, the commit author and date will be determined from "
+"the Maintainer and Date field of the first paragraph in F<debian/"
+"changelog>. This is mainly useful when using B<debchange>(1) with the B<--"
+"no-mainttrailer> option."
+msgstr ""
+"Si cette option est définie, l'auteur et la date de commit seront déterminés "
+"à partir des champs Maintainer et Date du premier paragraphe de F<debian/"
+"changelog>. C'est surtout pratique en utilisant B<debchange>(1) avec "
+"l'option B<--no-mainttrailer>."
+
+#. type: =item
+#: ../scripts/debcommit.pl:114
+msgid "B<DEBCOMMIT_STRIP_MESSAGE>"
+msgstr "B<DEBCOMMIT_STRIP_MESSAGE>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:116
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-strip-message> "
+"command line parameter being used. The default is I<yes>."
+msgstr ""
+"Lui attribuer la valeur I<no> équivaut à utiliser l'option B<--no-strip-"
+"message>. La valeur par défaut est I<yes>."
+
+#. type: =item
+#: ../scripts/debcommit.pl:119
+msgid "B<DEBCOMMIT_SIGN_TAGS>"
+msgstr "B<DEBCOMMIT_SIGN_TAGS>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:121
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--sign-tags> command "
+"line parameter being used. The default is I<no>."
+msgstr ""
+"Lui attribuer la valeur I<yes> équivaut à utiliser l'option B<--sign-tags>. "
+"La valeur par défaut est I<no>."
+
+#. type: =item
+#: ../scripts/debcommit.pl:124
+msgid "B<DEBCOMMIT_SIGN_COMMITS>"
+msgstr "B<DEBCOMMIT_SIGN_COMMITS>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:126
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--sign-commit> "
+"command line parameter being used. The default is I<no>."
+msgstr ""
+"Lui attribuer la valeur I<yes> équivaut à utiliser l'option B<--sign-"
+"commit>. La valeur par défaut est I<no>."
+
+#. type: =item
+#: ../scripts/debcommit.pl:129
+msgid "B<DEBCOMMIT_RELEASE_USE_CHANGELOG>"
+msgstr "B<DEBCOMMIT_RELEASE_USE_CHANGELOG>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:131
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--release-use-"
+"changelog> command line parameter being used. The default is I<no>."
+msgstr ""
+"Lui attribuer la valeur I<yes> équivaut à utiliser l'option B<--release-use-"
+"changelog>. La valeur par défaut est I<no>."
+
+#. type: TP
+#: ../scripts/debcommit.pl:134 ../scripts/debsign.1:118
+#, no-wrap
+msgid "B<DEBSIGN_KEYID>"
+msgstr "B<DEBSIGN_KEYID>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:136
+msgid ""
+"This is the key id used for signing tags. If not set, a default will be "
+"chosen by the revision control system."
+msgstr ""
+"L'identifiant de la clef à utiliser pour les signatures. Si cette variable "
+"n'est pas configurée, une valeur par défaut sera utilisée par les systèmes "
+"de contrôle de versions."
+
+#. type: =head1
+#: ../scripts/debcommit.pl:141
+msgid "VCS SPECIFIC FEATURES"
+msgstr "FONCTIONNALITÉS SPÉCIFIQUES AUX SYSTÈMES DE CONTRÔLE DE VERSIONS"
+
+#. type: =item
+#: ../scripts/debcommit.pl:145
+msgid "B<tla> / B<baz>"
+msgstr "B<tla> / B<baz>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:147
+msgid ""
+"If the commit message contains more than 72 characters, a summary will be "
+"created containing as many full words from the message as will fit within 72 "
+"characters, followed by an ellipsis."
+msgstr ""
+"Si le message d'envoi contient plus de 72 caractères, un résumé sera créé, "
+"contenant autant de mots entiers que possible dans la limite des 72 "
+"caractères, suivi de points de suspension."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:153
+msgid ""
+"Each of the features described below is applicable only if the commit "
+"message has been automatically determined from the changelog."
+msgstr ""
+"Chacune des fonctionnalités décrites ci-dessous ne s'applique que si le "
+"message d'envoi a été créé automatiquement à partir du journal des "
+"modifications."
+
+#. type: =item
+#: ../scripts/debcommit.pl:158
+msgid "B<git>"
+msgstr "B<git>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:160
+msgid ""
+"If only a single change is detected in the changelog, B<debcommit> will "
+"unfold it to a single line and behave as if B<--strip-message> was used."
+msgstr ""
+"Si une seule modification est détectée dans le journal des modifications, "
+"B<debcommit> rassemblera le message sur une unique ligne et se comportera "
+"comme si l'option B<--strip-message> était utilisée."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:163
+msgid ""
+"Otherwise, the first change will be unfolded and stripped to form a summary "
+"line and a commit message formed using the summary line followed by a blank "
+"line and the changes as extracted from the changelog. B<debcommit> will then "
+"spawn an editor so that the message may be fine-tuned before committing."
+msgstr ""
+"Sinon, la première modification sera rassemblée sur une ligne et nettoyée "
+"pour former la ligne de résumé et un message d'envoi sera créé avec la ligne "
+"de résumé, suivi d'une ligne vide puis des modifications du journal des "
+"modifications. B<debcommit> lancera ensuite un éditeur de telle sorte que le "
+"message puisse être retouché avant l'envoi."
+
+#. type: =item
+#: ../scripts/debcommit.pl:168
+msgid "B<hg> / B<darcs>"
+msgstr "B<hg> / B<darcs>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:170
+msgid ""
+"The first change detected in the changelog will be unfolded to form a single "
+"line summary. If multiple changes were detected then an editor will be "
+"spawned to allow the message to be fine-tuned."
+msgstr ""
+"La première modification détectée dans le journal des modifications sera "
+"rassemblée sur une ligne de résumé. Si plusieurs modifications sont "
+"détectées alors un éditeur sera lancé pour permettre de retoucher le message."
+
+#. type: =item
+#: ../scripts/debcommit.pl:174
+msgid "B<bzr>"
+msgstr "B<bzr>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:176
+msgid ""
+"If the changelog entry used for the commit message closes any bugs then B<--"
+"fixes> options to \"bzr commit\" will be generated to associate the revision "
+"and the bugs."
+msgstr ""
+"Si l'entrée du journal des modifications utilisée pour le message de commit "
+"ferme des bogues, des options B<--fixes> pour « bzr commit » seront produits "
+"pour associer la révision aux bogues."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:903
+msgid ""
+"This code is copyright by Joey Hess <joeyh@debian.org>, all rights "
+"reserved. This program comes with ABSOLUTELY NO WARRANTY. You are free to "
+"redistribute this code under the terms of the GNU General Public License, "
+"version 2 or later."
+msgstr ""
+"Ce code est copyright Joey Hess <joeyh@debian.org>, tous droits réservés. Ce "
+"programme est fourni SANS AUCUNE GARANTIE. Vous êtes libre de redistribuer "
+"ce code sous les termes de la licence publique générale GNU (GNU General "
+"Public Licence), version 2 ou ultérieure."
+
+#. type: textblock
+#: ../scripts/debcommit.pl:910 ../scripts/mass-bug.pl:524
+msgid "Joey Hess <joeyh@debian.org>"
+msgstr "Joey Hess <joeyh@debian.org>"
+
+#. type: textblock
+#: ../scripts/debcommit.pl:914
+msgid "B<debchange>(1), B<svnpath>(1)"
+msgstr "B<debchange>(1), B<svnpath>(1)"
+
+#. type: TH
+#: ../scripts/debdiff.1:1
+#, no-wrap
+msgid "DEBDIFF"
+msgstr "DEBDIFF"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:4
+msgid "debdiff - compare file lists in two Debian packages"
+msgstr "debdiff - Comparer la liste des fichiers de deux paquets Debian"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:6
+msgid "B<debdiff> [I<options>]"
+msgstr "B<debdiff> [I<options>]"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:8
+msgid "B<debdiff> [I<options>] ... I<deb1 deb2>"
+msgstr "B<debdiff> [I<options>] ... I<deb1 deb2>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:10
+msgid "B<debdiff> [I<options>] ... I<changes1 changes2>"
+msgstr "B<debdiff> [I<options>] ... I<changes1 changes2>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:13
+msgid ""
+"B<debdiff> [I<options>] ... B<--from >I<deb1a deb1b ... >B<--to >I<deb2a "
+"deb2b ...>"
+msgstr ""
+"B<debdiff> [I<options>] ... B<--from> I<deb1a deb1b ... >B<--to> I<deb2a "
+"deb2b ...>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:15
+msgid "B<debdiff> [I<options>] ... I<dsc1 dsc2>"
+msgstr "B<debdiff> [I<options>] ... I<dsc1 dsc2>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:26
+msgid ""
+"B<debdiff> takes the names of two Debian package files (I<.deb>s or I<."
+"udeb>s) on the command line and compares their contents (considering only "
+"the files in the main package, not the maintenance scripts). It shows which "
+"files have been introduced and which removed between the two package files, "
+"and is therefore useful for spotting files which may have been inadvertently "
+"lost between revisions of the package. It also checks the file owners and "
+"permissions, and compares the control files of the two packages using the "
+"B<wdiff> program. If you want a deeper comparison of two Debian package "
+"files you can use the B<debbindiff> tool."
+msgstr ""
+"B<debdiff> prend en argument le nom de deux paquets Debian (fichiers I<.deb> "
+"ou I<.udeb>) et compare leur contenu (en comparant uniquement les fichiers "
+"principaux, sans les scripts de maintenance). Il affiche quels fichiers ont "
+"été ajoutés ou retirés entre deux paquets. Il est de ce fait utile pour "
+"pointer les fichiers perdus par inadvertance entre deux versions d'un "
+"paquet. Il vérifie également les permissions et propriétaires des fichiers "
+"et compare le fichier control des deux paquets à l'aide du programme "
+"B<wdiff>. Pour une comparaison plus précise de deux paquets Debian, l’outil "
+"B<debbindiff> peut être utilisé."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:29
+msgid ""
+"If no arguments are given, B<debdiff> tries to compare the content of the "
+"current source directory with the last version of the package."
+msgstr ""
+"Si aucun paramètre n'est donné, B<debdiff> essaie de comparer le contenu du "
+"répertoire source actuel avec la dernière version du paquet."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:40
+msgid ""
+"B<debdiff> can also handle changes between groups of I<.deb> files in two "
+"ways. The first is to specify two I<.changes> files. In this case, the I<."
+"deb> files listed in the I<.changes> file will be compared, by taking the "
+"contents of all of the listed I<.deb> files together. (The I<.deb> files "
+"listed are assumed to be in the same directory as the I<.changes> file.) "
+"The second way is to list the I<.deb> files of interest specifically using "
+"the B<--from> ... B<--to> syntax. These both help if a package is broken up "
+"into smaller packages and one wishes to ensure that nothing is lost in the "
+"interim."
+msgstr ""
+"B<debdiff> peut aussi gérer les changements entre des groupes de fichiers I<."
+"deb> de deux façons. La première consiste à indiquer deux fichiers I<."
+"changes>. Dans ce cas, les fichiers I<.deb> listés dans les fichiers I<."
+"changes> seront comparés, en considérant ensemble le contenu de tous les "
+"fichiers I<.deb>. Il est supposé que les fichiers I<.deb> se trouvent dans "
+"le même répertoire que le fichier I<.changes>. La deuxième façon consiste à "
+"indiquer la liste de fichiers I<.deb> avec la syntaxe B<--from> ... (depuis) "
+"et B<--to> ... (vers). On peut ainsi vérifier que, lorsqu'un paquet est "
+"découpé en paquets plus petits, rien n'est perdu au passage."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:44
+msgid ""
+"B<debdiff> examines the B<devscripts> configuration files as described "
+"below. Command line options override the configuration file settings, "
+"though."
+msgstr ""
+"B<debdiff> examine les fichiers de configuration de B<devscripts> comme "
+"décrit ci-dessous. Les options en ligne de commande permettent de remplacer "
+"les paramètres des fichiers de configuration."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:52
+msgid ""
+"If B<debdiff> is passed two source packages (I<.dsc> files) it will compare "
+"the contents of the source packages. If the source packages differ only in "
+"Debian revision number (that is, the I<.orig.tar.gz> files are the same in "
+"the two I<.dsc> files), then B<interdiff>(1) will be used to compare the two "
+"patch files if this program is available on the system, otherwise a B<diff> "
+"will be performed between the two source trees."
+msgstr ""
+"Si deux paquets source (fichiers I<.dsc>) sont fournis à B<debdiff>, il "
+"comparera le contenu des paquets source. Si les paquets source ne diffèrent "
+"que par leur numéro de version Debian (c'est-à-dire que les fichiers I<.orig."
+"tar.gz> sont identiques dans les deux fichiers I<.dsc>), alors "
+"B<interdiff>(1) sera utilisé pour comparer les deux fichiers de rustine si "
+"ce programme est disponible sur le système, sinon, B<diff> sera utilisé sur "
+"les deux arborescences des sources."
+
+#. type: TP
+#: ../scripts/debdiff.1:53
+#, no-wrap
+msgid "B<--dirs>, B<-d>"
+msgstr "B<--dirs>, B<-d>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:58
+msgid ""
+"The default mode of operation is to ignore directory names which appear in "
+"the file list, but they, too, will be considered if this option is given."
+msgstr ""
+"Le mode opératoire par défaut est d'ignorer les noms de répertoire qui "
+"apparaissent dans la liste de fichiers ; mais avec cette option, ils seront "
+"pris en compte."
+
+#. type: TP
+#: ../scripts/debdiff.1:58
+#, no-wrap
+msgid "B<--nodirs>"
+msgstr "B<--nodirs>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:62
+msgid ""
+"Ignore directory names which appear in the file list. This is the default "
+"and it can be used to override a configuration file setting."
+msgstr ""
+"Ignorer les répertoires dont le nom apparaît dans la liste de fichiers. "
+"C'est le comportement par défaut. Cette option permet de remplacer un "
+"paramètre d'un fichier de configuration."
+
+#. type: TP
+#: ../scripts/debdiff.1:62
+#, no-wrap
+msgid "B<--move>I< FROM TO>,B< -m>I< FROM TO>"
+msgstr "B<--move> I<DEPUIS VERS>, B<-m> I<DEPUIS VERS>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:72
+msgid ""
+"It sometimes occurs that various files or directories are moved around "
+"between revisions. This can be handled using this option. There are two "
+"arguments, the first giving the location of the directory or file in the "
+"first package, and the second in the second. Any files in the first listing "
+"whose names begin with the first argument are treated as having that "
+"substituted for the second argument when the file lists are compared. Any "
+"number of B<--move> arguments may be given; they are processed in the order "
+"in which they appear."
+msgstr ""
+"Il arrive parfois que différents fichiers ou répertoires soient déplacés "
+"entre deux versions. On peut régler le problème en utilisant cette option. "
+"Les deux arguments représentent les emplacements du répertoire ou du fichier "
+"dans le premier et dans le second paquet. Quand les listes de fichiers sont "
+"comparées, tous les fichiers de la première liste dont le nom commence par "
+"le premier argument sont traités comme s'ils commençaient par le second "
+"argument. Vous pouvez donner un nombre arbitraire d'arguments B<--move> : "
+"ils sont interprétés dans l'ordre d'apparition."
+
+#. type: TP
+#: ../scripts/debdiff.1:72
+#, no-wrap
+msgid "B<--move-regex>I< FROM TO>"
+msgstr "B<--move-regex> I<DEPUIS VERS>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:78
+msgid ""
+"This is the same as B<--move>, except that I<FROM> is treated as a regular "
+"expression and the B<perl> substitution command I<s/^FROM/TO/> is applied to "
+"the files. In particular, TO can make use of backreferences such as $1."
+msgstr ""
+"Identique à B<--move>, mais I<DEPUIS> est traité comme une expression "
+"rationnelle et la commande de substitution B<perl> I<s/^DEPUIS/VERS/> est "
+"appliquée aux fichiers. En particulier, VERS peut avoir des références "
+"arrières telles que $1."
+
+#. type: TP
+#: ../scripts/debdiff.1:78
+#, no-wrap
+msgid "B<--nocontrol>"
+msgstr "B<--nocontrol>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:83
+msgid ""
+"B<debdiff> will usually compare the respective control files of the packages "
+"using B<wdiff>(1). This option suppresses this part of the processing."
+msgstr ""
+"B<debdiff> compare normalement les deux fichiers control respectifs avec "
+"B<wdiff>(1). Cette option permet de désactiver cette fonctionnalité."
+
+#. type: TP
+#: ../scripts/debdiff.1:83
+#, no-wrap
+msgid "B<--control>"
+msgstr "B<--control>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:87
+msgid ""
+"Compare the respective control files; this is the default, and it can be "
+"used to override a configuration file setting."
+msgstr ""
+"Comparer les fichiers I<control> respectifs, ce qui est le comportement par "
+"défaut. Cette option permet de remplacer un paramètre d'un fichier de "
+"configuration."
+
+#. type: TP
+#: ../scripts/debdiff.1:87
+#, no-wrap
+msgid "B<--controlfiles>I< FILE>[B<,>I<FILE> ...]"
+msgstr "B<--controlfiles> I<FICHIER>[B<,>I<FICHIER> ...]"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:95
+msgid ""
+"Specify which control files to compare; by default this is just I<control>, "
+"but could include I<postinst>, I<config> and so on. Files will only be "
+"compared if they are present in both I<.debs> being compared. The special "
+"value I<ALL> compares all control files present in both packages, except for "
+"md5sums. This option can be used to override a configuration file setting."
+msgstr ""
+"Indiquer quels fichiers de contrôle comparer. Par défaut, il s'agit juste de "
+"I<control>, mais peut inclure I<postinst>, I<config>, etc. Les fichiers ne "
+"seront comparés que s'ils sont présents dans les deux fichiers I<.deb>. La "
+"valeur spéciale I<ALL> compare tous les fichiers de contrôle présents dans "
+"les deux paquets, à l'exception de md5sums. Cette option peut être utilisée "
+"pour remplacer les paramètres du fichier de configuration."
+
+#. type: TP
+#: ../scripts/debdiff.1:95
+#, no-wrap
+msgid "B<--wdiff-source-control>"
+msgstr "B<--wdiff-source-control>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:99
+msgid ""
+"When processing source packages, compare control files using B<wdiff>. "
+"Equivalent to the B<--control> option for binary packages."
+msgstr ""
+"Lors du traitement des paquets source, comparer les fichiers de contrôle "
+"avec B<wdiff>. C'est équivalent à l'option B<--control> pour les paquets "
+"binaires."
+
+#. type: TP
+#: ../scripts/debdiff.1:99
+#, no-wrap
+msgid "B<--no-wdiff-source-control>"
+msgstr "B<--no-wdiff-source-control>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:103
+msgid ""
+"Do not compare control files in source packages using B<wdfiff>. This is "
+"the default."
+msgstr ""
+"Ne pas comparer les fichiers de contrôle des paquets source en utilisant "
+"B<wdfiff>. C'est le comportement par défaut."
+
+#. type: TP
+#: ../scripts/debdiff.1:103
+#, no-wrap
+msgid "B<--wp>, B<--wl>, B<--wt>"
+msgstr "B<--wp>, B<--wl>, B<--wt>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:108
+msgid ""
+"Pass a B<-p>, B<-l> or B<-t> option to B<wdiff> respectively. (This yields "
+"the whole B<wdiff> output rather than just the lines with any changes.)"
+msgstr ""
+"Passe respectivement les options B<-p>, B<-l> ou B<-t> à B<wdiff> (cela "
+"affiche le B<wdiff> complet, plutôt que juste les lignes modifiées)."
+
+#. type: TP
+#: ../scripts/debdiff.1:108
+#, no-wrap
+msgid "B<--show-moved>"
+msgstr "B<--show-moved>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:115
+msgid ""
+"If multiple I<.deb> files are specified on the command line, either using I<."
+"changes> files or the B<--from>/B<--to> syntax, then this option will also "
+"show which files (if any) have moved between packages. (The package names "
+"are simply determined from the names of the I<.deb> files.)"
+msgstr ""
+"Si plusieurs fichiers I<.deb> sont fournis sur la ligne de commande, que la "
+"syntaxe utilisée soit des fichiers I<.changes> soit la syntaxe B<--from>/B<--"
+"to>, alors cette option affichera également les fichiers (s'il y en a) qui "
+"ont été déplacés entre deux paquets. Les noms des paquets sont simplement "
+"déterminés par les noms des fichiers I<.deb>."
+
+#. type: TP
+#: ../scripts/debdiff.1:115
+#, no-wrap
+msgid "B<--noshow-moved>"
+msgstr "B<--noshow-moved>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:119 ../scripts/debdiff.1:136
+msgid ""
+"The default behaviour; can be used to override a configuration file setting."
+msgstr ""
+"Le comportement par défaut ; cette option permet de remplacer les paramètres "
+"d'un fichier de configuration."
+
+#. type: TP
+#: ../scripts/debdiff.1:119
+#, no-wrap
+msgid "B<--renamed>I< FROM TO>"
+msgstr "B<--renamed> I<DEPUIS VERS>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:125
+msgid ""
+"If B<--show-moved> is being used and a package has been renamed in the "
+"process, this command instructs B<debdiff> to treat the package in the first "
+"list called I<FROM> as if it were called I<TO>. Multiple uses of this "
+"option are permitted."
+msgstr ""
+"Si l'option B<--show-moved> est utilisée et qu'un paquet a été renommé au "
+"cours du processus, cette commande indique à B<debdiff> de traiter le paquet "
+"de la première liste appelé I<DEPUIS> comme s'il s'appelait I<VERS>. Cette "
+"option peut être utilisée plusieurs fois."
+
+#. type: TP
+#: ../scripts/debdiff.1:125
+#, no-wrap
+msgid "B<--exclude>I< PATTERN>"
+msgstr "B<--exclude> I<MOTIF>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:129
+msgid ""
+"Exclude files that match I<PATTERN>. Multiple uses of this option are "
+"permitted."
+msgstr ""
+"Exclut les fichiers correspondant au I<MOTIF>. Une utilisation multiple de "
+"cette option est possible."
+
+#. type: TP
+#: ../scripts/debdiff.1:129
+#, no-wrap
+msgid "B<--diffstat>"
+msgstr "B<--diffstat>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:132
+msgid "Include the result of B<diffstat> before the generated diff."
+msgstr "Inclure le résultat de B<diffstat> avant de produire le différentiel."
+
+#. type: TP
+#: ../scripts/debdiff.1:132
+#, no-wrap
+msgid "B<--no-diffstat>"
+msgstr "B<--no-diffstat>"
+
+#. type: TP
+#: ../scripts/debdiff.1:136
+#, no-wrap
+msgid "B<--auto-ver-sort>"
+msgstr "B<--auto-ver-sort>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:139
+msgid "When comparing source packages, do so in version order."
+msgstr ""
+"Lors de la comparaison de paquets source, comparer dans l'ordre des versions."
+
+#. type: TP
+#: ../scripts/debdiff.1:139
+#, no-wrap
+msgid "B<--no-auto-ver-sort>"
+msgstr "B<--no-auto-ver-sort>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:145
+msgid ""
+"Compare source packages in the order they were passed on the command-line, "
+"even if that means comparing a package with a higher version against one "
+"with a lower version. This is the default behaviour."
+msgstr ""
+"Comparer les paquets source dans l'ordre où ils ont été fournis sur la ligne "
+"de commande, même si cela force la comparaison entre un paquet avec une "
+"version supérieure et un paquet avec une version inférieure. C'est le "
+"comportement par défaut."
+
+#. type: TP
+#: ../scripts/debdiff.1:145
+#, no-wrap
+msgid "B<--unpack-tarballs>"
+msgstr "B<--unpack-tarballs>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:150
+msgid ""
+"When comparing source packages, also unpack tarballs found in the top level "
+"source directory to compare their contents along with the other files. This "
+"is the default behaviour."
+msgstr ""
+"Lors de la comparaison des paquets source, ouvrir également les archives tar "
+"trouvées dans la racine des sources pour comparer leurs contenus en même "
+"temps que les autres fichiers. Il s'agit du comportement par défaut."
+
+#. type: TP
+#: ../scripts/debdiff.1:150
+#, no-wrap
+msgid "B<--no-unpack-tarballs>"
+msgstr "B<--no-unpack-tarballs>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:153
+msgid "Do not unpack tarballs inside source packages."
+msgstr "Ne pas ouvrir les archives tar se trouvant dans les paquets source."
+
+#. type: TP
+#: ../scripts/debdiff.1:163
+#, no-wrap
+msgid "B<--quiet>, B<-q>"
+msgstr "B<--quiet>, B<-q>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:166
+msgid "Be quiet if no differences were found."
+msgstr "Rester silencieux si aucune différence n'est trouvée."
+
+#. type: TP
+#: ../scripts/debdiff.1:166
+#, no-wrap
+msgid "B<--ignore-space>, B<-w>"
+msgstr "B<--ignore-space>, B<-w>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:169
+msgid "Ignore whitespace in diffs."
+msgstr "Ignorer les blancs dans les diffs."
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/debdiff.1:175
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override configuration file settings. "
+"Environment variable settings are ignored for this purpose. The currently "
+"recognised variables are:"
+msgstr ""
+"Les deux fichiers de configuration I</etc/devscripts.conf> et I<~/."
+"devscripts> sont évalués dans cet ordre par un interpréteur de commandes "
+"(« shell ») pour placer les variables de configuration. Des options de ligne "
+"de commande peuvent être utilisées pour neutraliser les paramètres des "
+"fichiers de configuration. Les paramètres des variables d'environnement sont "
+"ignorés à cette fin. Si la première option donnée en ligne de commande est "
+"B<--noconf>, alors ces fichiers ne sont pas évalués. Les variables "
+"actuellement identifiées sont :"
+
+#. type: TP
+#: ../scripts/debdiff.1:175
+#, no-wrap
+msgid "B<DEBDIFF_DIRS>"
+msgstr "B<DEBDIFF_DIRS>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:179
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--dirs> command line "
+"parameter being used."
+msgstr "Lui attribuer la valeur I<yes> équivaut à utiliser l'option B<--dirs>."
+
+#. type: TP
+#: ../scripts/debdiff.1:179
+#, no-wrap
+msgid "B<DEBDIFF_CONTROL>"
+msgstr "B<DEBDIFF_CONTROL>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:184
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--nocontrol> command "
+"line parameter being used. The default is I<yes>."
+msgstr ""
+"Lui attribuer la valeur I<no> équivaut à utiliser l'option B<--nocontrol>. "
+"La valeur par défaut est I<yes>."
+
+#. type: TP
+#: ../scripts/debdiff.1:184
+#, no-wrap
+msgid "B<DEBDIFF_CONTROLFILES>"
+msgstr "B<DEBDIFF_CONTROLFILES>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:189
+msgid ""
+"Which control files to compare, corresponding to the B<--controlfiles> "
+"command line option. The default is I<control>."
+msgstr ""
+"Définit les fichiers control à comparer, correspondant à l'option en ligne "
+"de commande B<--controlfiles>. La valeur par défaut est I<control>."
+
+#. type: TP
+#: ../scripts/debdiff.1:189
+#, no-wrap
+msgid "B<DEBDIFF_SHOW_MOVED>"
+msgstr "B<DEBDIFF_SHOW_MOVED>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:193
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--show-moved> command "
+"line parameter being used."
+msgstr ""
+"Lui attribuer la valeur I<yes> équivaut à utiliser l'option B<--show-moved>."
+
+#. type: TP
+#: ../scripts/debdiff.1:193
+#, no-wrap
+msgid "B<DEBDIFF_WDIFF_OPT>"
+msgstr "B<DEBDIFF_WDIFF_OPT>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:197
+msgid ""
+"This option will be passed to B<wdiff>; it should be one of B<-p>, B<-l> or "
+"B<-t>."
+msgstr ""
+"Cette option est passée à B<wdiff> ; les valeurs possibles sont B<-p>, B<-l> "
+"ou B<-t>."
+
+#. type: TP
+#: ../scripts/debdiff.1:197
+#, no-wrap
+msgid "B<DEBDIFF_SHOW_DIFFSTAT>"
+msgstr "B<DEBDIFF_SHOW_DIFFSTAT>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:201
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--diffstat> command "
+"line parameter being used."
+msgstr ""
+"Lui attribuer la valeur I<yes> équivaut à utiliser l'option B<--diffstat> de "
+"la ligne de commande."
+
+#. type: TP
+#: ../scripts/debdiff.1:201
+#, no-wrap
+msgid "B<DEBDIFF_WDIFF_SOURCE_CONTROL>"
+msgstr "B<DEBDIFF_WDIFF_SOURCE_CONTROL>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:205
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--wdiff-source-"
+"control> command line parameter being used."
+msgstr ""
+"Lui attribuer la valeur I<yes> équivaut à utiliser l'option B<--wdiff-source-"
+"control> de la ligne de commande."
+
+#. type: TP
+#: ../scripts/debdiff.1:205
+#, no-wrap
+msgid "B<DEBDIFF_AUTO_VER_SORT>"
+msgstr "B<DEBDIFF_AUTO_VER_SORT>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:209
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--auto-ver-sort> "
+"command line parameter being used."
+msgstr ""
+"Lui attribuer la valeur I<yes> équivaut à utiliser l'option B<--auto-ver-"
+"sort> de la ligne de commande."
+
+#. type: TP
+#: ../scripts/debdiff.1:209
+#, no-wrap
+msgid "B<DEBDIFF_UNPACK_TARBALLS>"
+msgstr "B<DEBDIFF_UNPACK_TARBALLS>"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:213
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-unpack-tarballs> "
+"command line parameter being used."
+msgstr ""
+"Lui attribuer la valeur I<no> équivaut à utiliser l'option B<--no-unpack-"
+"tarballs> de la ligne de commande."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:217
+msgid ""
+"Normally the exit value will be 0 if no differences are reported and 1 if "
+"any are reported. If there is some fatal error, the exit code will be 255."
+msgstr ""
+"Normalement, la valeur de retour est 0 si aucune différence n'a été trouvée "
+"et 1 en cas de différence. Dans le cas d'une erreur fatale, la valeur de "
+"retour sera 255."
+
+#. type: Plain text
+#: ../scripts/debdiff.1:224
+msgid ""
+"B<diffstat>(1), B<dpkg-deb>(1), B<interdiff>(1), B<wdiff>(1), B<devscripts."
+"conf>(5), B<debbindiff>(1)"
+msgstr ""
+"B<diffstat>(1), B<dpkg-deb>(1), B<interdiff>(1), B<wdiff>(1), B<devscripts."
+"conf>(5), B<debbindiff>(1)"
+
+#. type: Plain text
+#: ../scripts/debdiff.1:229
+msgid ""
+"B<debdiff> was originally written as a shell script by Yann Dirson "
+"E<lt>dirson@debian.orgE<gt> and rewritten in Perl with many more features by "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>. The software may be freely "
+"redistributed under the terms and conditions of the GNU General Public "
+"License, version 2."
+msgstr ""
+"B<debdiff> a été initialement écrit sous forme de script shell par Yann "
+"Dirson E<lt>dirson@debian.orgE<gt> et a été réécrit en Perl avec beaucoup "
+"plus de fonctionnalités par Julian Gilbey E<lt>jdg@debian.orgE<gt>. C'est un "
+"logiciel libre qui peut être redistribué suivant les termes de la licence "
+"publique générale GNU, version 2."
+
+#. type: TH
+#: ../scripts/debi.1:1
+#, no-wrap
+msgid "DEBI"
+msgstr "DEBI"
+
+#. type: Plain text
+#: ../scripts/debi.1:4
+msgid "debi - install current version of generated Debian package"
+msgstr "debi - Installer la version actuelle d'un paquet Debian créé"
+
+#. type: Plain text
+#: ../scripts/debi.1:6
+msgid "B<debi> [I<options>] [I<changes file>] [I<package> ...]"
+msgstr "B<debi> [I<options>] [I<fichier_changes>] [I<paquet> ...]"
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/debi.1:21
+msgid ""
+"B<debi> figures out the current version of a package and installs it. If a "
+"I<.changes> file is specified on the command line, the filename must end "
+"with I<.changes>, as this is how the program distinguishes it from package "
+"names. If not, then B<debi> has to be called from within the source code "
+"directory tree. In this case, it will look for the I<.changes> file "
+"corresponding to the current package version (by determining the name and "
+"version number from the changelog, and the architecture in the same way as "
+"B<dpkg-buildpackage>(1) does). It then runs B<debpkg -i> on every I<.deb> "
+"archive listed in the I<.changes> file to install them, assuming that all of "
+"the I<.deb> archives live in the same directory as the I<.changes> file. "
+"Note that you probably don't want to run this program on a I<.changes> file "
+"relating to a different architecture after cross-compiling the package!"
+msgstr ""
+"B<debi> détermine la version actuelle d'un paquet et l'installe. Si un "
+"fichier I<.changes> est fourni sur la ligne de commande, le nom du fichier "
+"doit se terminer par I<.changes>, puisque c'est comme cela que le programme "
+"le différencie d'un nom de paquet. Sinon, B<debi> doit être appelé depuis le "
+"répertoire du code source. Dans ce cas, il recherchera un fichier I<."
+"changes> correspondant à la version du paquet ; pour cela, il détermine le "
+"nom et la version grâce au fichier I<changelog>, et l'architecture est "
+"cherchée comme B<dpkg-buildpackage>(1) le ferait. Il installe ensuite avec "
+"B<debpkg -i> toutes les archives I<.deb> listées dans le fichier I<."
+"changes>, en supposant que toutes ces archives I<.deb> se trouvent dans le "
+"même répertoire que le fichier I<.changes>. Remarquez que vous ne voulez "
+"sûrement pas utiliser ce programme pour le fichier I<.changes> d'une autre "
+"architecture qui aurait été créé après intercompilation du paquet."
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/debi.1:40
+msgid ""
+"In common with several other scripts in the B<devscripts> package, B<debi> "
+"will climb the directory tree until it finds a I<debian/changelog> file. As "
+"a safeguard against stray files causing potential problems, it will examine "
+"the name of the parent directory once it finds the I<debian/changelog> file, "
+"and check that the directory name corresponds to the package name. "
+"Precisely how it does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and B<--"
+"check-dirname-regex>."
+msgstr ""
+"Comme plusieurs autres scripts du paquet B<devscripts>, B<debi> parcourt une "
+"arborescence de répertoires jusqu'à trouver un fichier I<debian/changelog>. "
+"Pour éviter les problèmes posés par les fichiers égarés, il examine le nom "
+"du répertoire parent une fois qu'il a trouvé le fichier I<debian/changelog>, "
+"et vérifie que le nom du répertoire correspond au nom du paquet. La méthode "
+"précise utilisée est contrôlée par les deux variables du fichier de "
+"configuration B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> et "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, et les options en ligne de commande "
+"associées B<--check-dirname-level> et B<--check-dirname-regex>."
+
+#. type: Plain text
+#: ../scripts/debi.1:78 ../scripts/debrelease.1:87
+msgid ""
+"Look for the I<.changes> and I<.deb> files in I<directory> instead of the "
+"parent of the source directory. This should either be an absolute path or "
+"relative to the top of the source directory."
+msgstr ""
+"Chercher les fichiers I<.changes> et I<.deb> dans le I<répertoire> au lieu "
+"du répertoire parent du répertoire source. Cela doit être soit un chemin "
+"absolu, soit un chemin relatif à la racine du répertoire source."
+
+#. type: TP
+#: ../scripts/debi.1:78
+#, no-wrap
+msgid "B<-m>, B<--multi>"
+msgstr "B<-m>, B<--multi>"
+
+#. type: Plain text
+#: ../scripts/debi.1:81
+msgid "Search for a multiarch I<.changes> file, as created by B<dpkg-cross>."
+msgstr ""
+"Chercher un fichier I<.changes> multiarchitecture, tel que créé par B<dpkg-"
+"cross>."
+
+#. type: TP
+#: ../scripts/debi.1:81
+#, no-wrap
+msgid "B<-u>, B<--upgrade>"
+msgstr "B<-u>, B<--upgrade>"
+
+#. type: Plain text
+#: ../scripts/debi.1:87
+msgid ""
+"Only upgrade packages already installed on the system, rather than "
+"installing all packages listed in the I<.changes> file. Useful for multi-"
+"binary packages when you don't want to have all the binaries installed at "
+"once."
+msgstr ""
+"Limiter les mises à jour aux paquets déjà installés sur le système, plutôt "
+"que d'installer tous les paquets listés dans le fichier I<.changes>. C'est "
+"utile pour les paquets qui produisent plusieurs paquets binaires quand vous "
+"ne souhaitez pas que tous les paquets binaires soient installés à la fois."
+
+#. type: TP
+#: ../scripts/debi.1:95
+#, no-wrap
+msgid "B<--with-depends>"
+msgstr "B<--with-depends>"
+
+#. type: Plain text
+#: ../scripts/debi.1:98
+msgid "Attempt to satisfy the I<Depends> of a package when installing it."
+msgstr ""
+"Essayer de satisfaire les dépendances d'un paquet lors de son installation."
+
+#. type: TP
+#: ../scripts/debi.1:98
+#, no-wrap
+msgid "B<--tool> I<tool>"
+msgstr "B<--tool> I<outil>"
+
+#. type: Plain text
+#: ../scripts/debi.1:102
+msgid ""
+"Use the specified I<tool> for installing the dependencies of the package(s) "
+"to be installed. By default, B<apt-get> is used."
+msgstr ""
+"Utiliser l'I<outil> indiqué pour installer les dépendances des paquets à "
+"installer. Par défaut, B<apt-get> est utilisé."
+
+#. type: Plain text
+#: ../scripts/debi.1:125
+msgid ""
+"This specifies the directory in which to look for the I<.changes> and I<."
+"deb> files, and is either an absolute path or relative to the top of the "
+"source tree. This corresponds to the B<--debs-dir> command line option. "
+"This directive could be used, for example, if you always use B<pbuilder> or "
+"B<svn-buildpackage> to build your packages. Note that it also affects "
+"B<debrelease>(1) in the same way, hence the strange name of the option."
+msgstr ""
+"Indiquer le répertoire dans lequel chercher les fichiers I<.changes> et I<."
+"deb>, avec soit un chemin absolu, soit un chemin relatif à la racine du "
+"répertoire racine. Cela correspond à l'option en ligne de commande B<--debs-"
+"dir>. Cette directive peut être utilisée par exemple si vous utilisez "
+"systématiquement B<pbuilder> ou B<svn-buildpackage> pour construire vos "
+"paquets. Remarquez que cela concerne également B<debrelease>(1), ce qui "
+"explique le nom étrange de l'option."
+
+#. type: Plain text
+#: ../scripts/debi.1:135
+msgid "B<debpkg>(1), B<devscripts.conf>(5)"
+msgstr "B<debpkg>(1), B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/debi.1:140
+msgid ""
+"B<debi> was originally written by Christoph Lameter E<lt>clameter@debian."
+"orgE<gt>. The now-defunct script B<debit> was originally written by James "
+"R. Van Zandt E<lt>jrv@vanzandt.mv.comE<gt>. They have been moulded into one "
+"script together with B<debc>(1) and parts extensively modified by Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"B<debi> a été initialement écrit par Christoph Lameter E<lt>clameter@debian."
+"orgE<gt>. Le script B<debit> (qui n'est désormais plus utilisé) a été écrit "
+"par James R. Van Zandt E<lt>jrv@vanzandt.mv.comE<gt>. Ils ont été rassemblés "
+"en un script, avec B<debc>(1), et ont été fortement modifiés par Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#. type: TH
+#: ../scripts/debpkg.1:1
+#, no-wrap
+msgid "DEBPKG"
+msgstr "DEBPKG"
+
+#. type: Plain text
+#: ../scripts/debpkg.1:4
+msgid "debpkg - wrapper for dpkg"
+msgstr "debpkg - Encapsulation d'appels à dpkg"
+
+#. type: Plain text
+#: ../scripts/debpkg.1:6
+msgid "B<debpkg> I<dpkg-options>"
+msgstr "B<debpkg> I<options-dpkg>"
+
+#. type: Plain text
+#: ../scripts/debpkg.1:12
+msgid ""
+"B<debpkg> simply invokes B<dpkg>(1) but first becomes superuser so that "
+"B<dpkg> is able to install and remove packages. It also cleans the "
+"environment and resets PATH to a sane default: \"/usr/sbin:/usr/bin:/sbin:/"
+"bin:/usr/bin/X11\" so that local versions of programs are not run by "
+"accident."
+msgstr ""
+"B<debpkg> appelle simplement B<dpkg>(1), mais devient superutilisateur "
+"auparavant de façon à être capable d'installer ou de retirer des paquets. Il "
+"nettoie également l'environnement et remet le PATH à une valeur saine : « /"
+"usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 » de telle sorte que les versions "
+"locales des programmes ne soient pas exécutées par accident."
+
+#. type: Plain text
+#: ../scripts/debpkg.1:17
+msgid ""
+"B<debpkg> must be given superuser privileges in some way to function "
+"properly. B<Access to debpkg with those privileges is the same as having "
+"superuser access to your machine.> B<debpkg> will abort if it finds that it "
+"neither being run by root nor setuid root."
+msgstr ""
+"B<debpkg> doit avoir les droits du superutilisateur pour fonctionner "
+"correctement. B<Un accès à debpkg avec ces droits revient au même que "
+"d'avoir les droits du superutilisateur sur cette machine>. B<debpkg> "
+"quittera s'il n'est ni exécuté par le superutilisateur, ni setuid root."
+
+#. type: Plain text
+#: ../scripts/debpkg.1:23
+msgid ""
+"The B<devscripts> package has been designed to allow B<debpkg> to be made "
+"setuid root. This works by using a compiled wrapper script, which means "
+"that B<suidperl> is not required. See B<dpkg-statoverride>(8) if you wish "
+"to make this program setuid root. B<sudo> or B<super> could also "
+"conceivably be used."
+msgstr ""
+"Le paquet B<devscripts> a été conçu de façon à permettre à B<debpkg> d'être "
+"setuid root. Cela a été réalisé en utilisant un script d'appel compilé, ce "
+"qui signifie que B<suidperl> n'est pas nécessaire. Consultez B<dpkg-"
+"statoverride>(8) si vous voulez rendre ce programme setuid root. B<sudo> ou "
+"B<super> peuvent aussi être utilisés."
+
+#. type: Plain text
+#: ../scripts/debpkg.1:25
+msgid ""
+"Christoph Lameter E<lt>clameter@debian.orgE<gt>; minor modifications made by "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Christoph Lameter E<lt>clameter@debian.orgE<gt> ; modifications mineures par "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#. type: TH
+#: ../scripts/debrelease.1:1
+#, no-wrap
+msgid "DEBRELEASE"
+msgstr "DEBRELEASE"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:4
+msgid "debrelease - a wrapper around dupload or dput"
+msgstr "debrelease - Encapsulation d'appels à dupload ou dput"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:6
+msgid "B<debrelease> [I<debrelease options>] [I<dupload/dput options>]"
+msgstr "B<debrelease> [I<options_debrelease>] [I<options_dupload/dput>]"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:15
+msgid ""
+"B<debrelease> is a simple wrapper around B<dupload> or B<dput>. It is "
+"called from within the source code tree of a package, and figures out the "
+"current version of a package. It then looks for the corresponding I<."
+"changes> file (which lists the files needed to upload in order to release "
+"the package) in the parent directory of the source code tree and calls "
+"B<dupload> or B<dput> with the I<.changes> file as parameter in order to "
+"perform the actual uploading."
+msgstr ""
+"B<debrelease> est un simple script d'encapsulation (« wrapper ») d'appels à "
+"B<dupload> ou B<dput>. Il est appelé depuis l'arborescence des sources d'un "
+"paquet, et détermine la version actuelle d'un paquet. Il recherche ensuite "
+"un fichier I<.changes> correspondant (qui liste les fichiers nécessaires à "
+"l'envoi à l'archive Debian) dans le répertoire parent de l'arborescence du "
+"code source, et appelle ensuite B<dupload> ou B<dput> avec le fichier I<."
+"changes> en paramètre de façon à réaliser l'envoi (« upload »)."
+
+#. type: Plain text
+#: ../scripts/debrelease.1:20
+msgid ""
+"Options may be given to B<debrelease>; except for the ones listed below, "
+"they are passed on unchanged to B<dupload> or B<dput>. The B<devscripts> "
+"configuration files are also read by B<debrelease> as described below."
+msgstr ""
+"Vous pouvez fournir des options à B<debrelease>. À l'exception de celles qui "
+"sont listées ci-dessous, elles sont passées inchangées à B<dupload> ou "
+"B<dput>. Les fichiers de configuration de B<devscripts> sont également lus "
+"par B<debrelease>, comme indiqué ci-dessous."
+
+# NOTE: presque identique à beaucoup d'autres
+#. type: Plain text
+#: ../scripts/debrelease.1:31
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debrelease> will climb the directory tree until it finds a I<debian/"
+"changelog> file. As a safeguard against stray files causing potential "
+"problems, it will examine the name of the parent directory once it finds the "
+"I<debian/changelog> file, and check that the directory name corresponds to "
+"the package name. Precisely how it does this is controlled by two "
+"configuration file variables B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and their corresponding command-line "
+"options B<--check-dirname-level> and B<--check-dirname-regex>."
+msgstr ""
+"Comme plusieurs autres scripts du paquet B<devscripts>, B<debrelease> "
+"parcourt une arborescence de répertoires jusqu'à ce qu'il trouve un fichier "
+"I<debian/changelog>. Pour éviter les problèmes posés par les fichiers "
+"égarés, il examine le nom du répertoire parent une fois qu'il a trouvé le "
+"fichier I<debian/changelog>, et vérifie que le nom du répertoire correspond "
+"au nom du paquet. La façon précise utilisée est contrôlée par les deux "
+"variables du fichier de configuration B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> et "
+"B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, et les options en ligne de commande "
+"associées B<--check-dirname-level> et B<--check-dirname-regex>."
+
+#. type: TP
+#: ../scripts/debrelease.1:61 ../scripts/debrsign.1:31 ../scripts/debsign.1:68
+#, no-wrap
+msgid "B<-S>"
+msgstr "B<-S>"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:67
+msgid ""
+"If this option is used, or the default I<.changes> file is not found but a "
+"source-only I<.changes> file is present, then this source-only I<.changes> "
+"file will be uploaded instead of an arch-specific one."
+msgstr ""
+"Si cette option est utilisée ou si le fichier par défaut I<.changes> n'est "
+"pas trouvé mais qu'un fichier I<.changes> pour les sources uniquement est "
+"présent, alors ce dernier fichier I<.changes> est téléchargé vers le serveur "
+"à la place de celui spécifique à une architecture."
+
+#. type: Plain text
+#: ../scripts/debrelease.1:75
+msgid ""
+"See B<dpkg-architecture>(1) for a description of these options. They affect "
+"the search for the I<.changes> file. They are provided to mimic the "
+"behaviour of B<dpkg-buildpackage> when determining the name of the I<."
+"changes> file. If a plain B<-t> is given, it is taken to be the B<dupload> "
+"host-specifying option, and therefore signifies the end of the B<debrelease>-"
+"specific options."
+msgstr ""
+"Veuillez consulter B<dpkg-architecture>(1) pour une description de ces "
+"options. Ces options affectent la recherche du fichier I<.changes>. Elles "
+"consistent à imiter le comportement de B<dpkg-buildpackage> lors de la "
+"détermination du nom du fichier I<.changes>. Si une option B<-t> est donnée, "
+"elle est considérée comme une option définissant l'hôte pour B<dupload> et "
+"marque donc la fin des options spécifiques à B<debrelease>."
+
+#. type: TP
+#: ../scripts/debrelease.1:75 ../scripts/debrsign.1:41 ../scripts/debsign.1:78
+#, no-wrap
+msgid "B<--multi>"
+msgstr "B<--multi>"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:81
+msgid ""
+"Multiarch I<.changes> mode: This signifies that B<debrelease> should use the "
+"most recent file with the name pattern I<package_version_*+*.changes> as the "
+"I<.changes> file, allowing for the I<.changes> files produced by B<dpkg-"
+"cross>."
+msgstr ""
+"Mode des fichiers I<.changes> multiarchitecture : cela signifie que "
+"B<debrelease> doit utiliser le fichier le plus récent respectant le modèle "
+"I<paquet_version_*+*.changes>, autorisant ainsi les fichiers I<.changes> "
+"produits par B<dpkg-cross>."
+
+#. type: TP
+#: ../scripts/debrelease.1:111
+#, no-wrap
+msgid "B<DEBRELEASE_UPLOADER>"
+msgstr "B<DEBRELEASE_UPLOADER>"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:116
+msgid ""
+"The currently recognised values are I<dupload> and I<dput>, and it specifies "
+"which uploader program should be used. It corresponds to the B<--dupload> "
+"and B<--dput> command line options."
+msgstr ""
+"Les valeurs valables actuellement sont I<dupload> et I<dput>. Cette variable "
+"permet d'indiquer quel sera le programme utilisé pour réaliser l'envoi au "
+"serveur. Elle correspond à l'utilisation des options B<--dupload> ou B<--"
+"dput>."
+
+#. type: Plain text
+#: ../scripts/debrelease.1:125
+msgid ""
+"This specifies the directory in which to look for the I<.changes> and I<."
+"deb> files, and is either an absolute path or relative to the top of the "
+"source tree. This corresponds to the B<--debs-dir> command line option. "
+"This directive could be used, for example, if you always use B<pbuilder> or "
+"B<svn-buildpackage> to build your packages. Note that it also affects "
+"B<debc>(1) and B<debi>(1)."
+msgstr ""
+"Indiquer le répertoire dans lequel chercher les fichiers I<.changes> et I<."
+"deb> avec soit un chemin absolu, soit un chemin relatif à la racine du "
+"répertoire racine. Cela correspond à l'option en ligne de commande B<--debs-"
+"dir>. Cette directive peut être utilisée par exemple si vous utilisez "
+"systématiquement B<pbuilder> ou B<svn-buildpackage> pour construire vos "
+"paquets. Remarquez que cela concerne également B<debc>(1) et B<debi>(1)."
+
+#. type: Plain text
+#: ../scripts/debrelease.1:136
+msgid "B<dput>(1), B<dupload>(1), B<devscripts.conf>(5)"
+msgstr "B<dput>(1), B<dupload>(1), B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/debrelease.1:138
+msgid ""
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>, based on the original B<release> "
+"script by Christoph Lameter E<lt>clameter@debian.orgE<gt>."
+msgstr ""
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>, basé sur le script initial "
+"B<release> de Christoph Lameter E<lt>clameter@debian.orgE<gt>."
+
+#. type: Content of the dhfirstname entity
+#: ../scripts/deb-reversion.dbk:30
+msgid "<firstname>martin f.</firstname>"
+msgstr "<firstname>Martin F.</firstname>"
+
+#. type: Content of the dhsurname entity
+#: ../scripts/deb-reversion.dbk:31
+msgid "<surname>krafft</surname>"
+msgstr "<surname>Krafft</surname>"
+
+#. type: Content of the dhmaintfirstname entity
+#: ../scripts/deb-reversion.dbk:32
+msgid "<firstname>Julian</firstname>"
+msgstr "<firstname>Julian</firstname>"
+
+#. type: Content of the dhmaintsurname entity
+#: ../scripts/deb-reversion.dbk:33
+msgid "<surname>Gilbey</surname>"
+msgstr "<surname>Gilbey</surname>"
+
+#. type: Content of the dhdate entity
+#: ../scripts/deb-reversion.dbk:35
+msgid "<date>Feb 13, 2006</date>"
+msgstr "<date>13 février 2006</date>"
+
+#. type: Content of the dhsection entity
+#: ../scripts/deb-reversion.dbk:38
+msgid "<manvolnum>1</manvolnum>"
+msgstr "<manvolnum>1</manvolnum>"
+
+#. type: Content of the dhemail entity
+#: ../scripts/deb-reversion.dbk:39
+msgid "<email>madduck@debian.org</email>"
+msgstr "<email>madduck@debian.org</email>"
+
+#. type: Content of the dhmaintemail entity
+#: ../scripts/deb-reversion.dbk:40
+msgid "<email>jdg@debian.org</email>"
+msgstr "<email>jdg@debian.org</email>"
+
+#. type: Content of the dhusername entity
+#: ../scripts/deb-reversion.dbk:41
+msgid "martin f. krafft"
+msgstr "Martin F. Krafft"
+
+#. type: Content of the dhmaintusername entity
+#: ../scripts/deb-reversion.dbk:42
+msgid "Julian Gilbey"
+msgstr "Julian Gilbey"
+
+#. type: Content of the dhucpackage entity
+#: ../scripts/deb-reversion.dbk:43
+msgid "<refentrytitle>deb-reversion</refentrytitle>"
+msgstr "<refentrytitle>deb-reversion</refentrytitle>"
+
+#. type: Content of the dhcommand entity
+#: ../scripts/deb-reversion.dbk:44 ../scripts/deb-reversion.dbk:45
+msgid "deb-reversion"
+msgstr "deb-reversion"
+
+#. type: Content of the debian entity
+#: ../scripts/deb-reversion.dbk:47
+msgid "<productname>Debian</productname>"
+msgstr "<productname>Debian</productname>"
+
+#. type: Content of the gnu entity
+#: ../scripts/deb-reversion.dbk:48
+msgid "<acronym>GNU</acronym>"
+msgstr "<acronym>GNU</acronym>"
+
+#. type: Content of the gpl entity
+#: ../scripts/deb-reversion.dbk:49
+msgid "&gnu; <acronym>GPL</acronym>"
+msgstr "&gnu; <acronym>GPL</acronym>"
+
+#. type: Content of: <refentry><refentryinfo><address>
+#: ../scripts/deb-reversion.dbk:55
+#, no-wrap
+msgid ""
+" &dhemail;\n"
+" "
+msgstr ""
+" &dhemail;\n"
+" "
+
+#. type: Content of: <refentry><refentryinfo>
+#: ../scripts/deb-reversion.dbk:54
+msgid "<placeholder type=\"address\" id=\"0\"/> &dhdate;"
+msgstr "<placeholder type=\"address\" id=\"0\"/> &dhdate;"
+
+#. type: Content of: <refentry><refnamediv><refname>
+#: ../scripts/deb-reversion.dbk:65
+msgid "&dhcommand;"
+msgstr "&dhcommand;"
+
+#. type: Content of: <refentry><refnamediv><refpurpose>
+#: ../scripts/deb-reversion.dbk:67
+msgid "simple script to change the version of a .deb file"
+msgstr "Script pour changer la version d'un fichier .deb"
+
+#. type: Content of: <refentry><refsynopsisdiv><cmdsynopsis>
+#: ../scripts/deb-reversion.dbk:72
+msgid ""
+"<command>&dhcommand;</command> <arg choice=\"opt\"> <replaceable>options</"
+"replaceable> </arg> <replaceable> .deb-file</replaceable> <arg choice=\"opt"
+"\" rep=\"repeat\"><replaceable>log message</replaceable></arg>"
+msgstr ""
+"<command>&dhcommand;</command> <arg choice=\"opt\"> <replaceable>options</"
+"replaceable> </arg> <replaceable> .deb-file</replaceable> <arg choice=\"opt"
+"\" rep=\"repeat\"><replaceable>message de journalisation</replaceable></arg>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:85
+msgid ""
+"<command>&dhcommand;</command> unpacks the specified <filename>.deb</"
+"filename> file, changes the version number in the relevant locations, "
+"appends a Debian <filename>changelog</filename> entry with the specified "
+"contents, and creates a new <filename>.deb</filename> file with the updated "
+"version."
+msgstr ""
+"<command>&dhcommand;</command> dépaquette le fichier <filename>.deb</"
+"filename> indiqué, change le numéro de version aux endroits appropriés, "
+"ajoute une entrée de <filename>changelog</filename> Debian avec le contenu "
+"indiqué, et crée un nouveau fichier <filename>.deb</filename> avec la "
+"version mise à jour."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:92
+msgid ""
+"By default, the tool creates a new version number suitable for local "
+"changes, such that the new package will be greater than the current one, but "
+"lesser than any future, official Debian packages. With <option>-v "
+"<replaceable class=\"parameter\">version</replaceable></option>, the version "
+"number can be specified directly. On the other hand, the <option>-c</"
+"option> simply calculates the new version number but does not generate a new "
+"package."
+msgstr ""
+"Par défaut, cet outil crée un numéro de version convenable pour les "
+"changements locaux, de manière à ce que le nouveau paquet soit considéré "
+"plus récent que le paquet actuel, mais moins récent que tout futur paquet "
+"Debian officiel. Avec <option>-v <replaceable class=\"parameter\">version</"
+"replaceable></option>, le numéro de version peut être indiqué directement. "
+"D'un autre côté, l'option <option>-c</option> se contente de calculer le "
+"nouveau numéro de version mais ne génère pas de nouveau paquet."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:103
+msgid ""
+"When building a <filename>.deb</filename> file, root privileges are required "
+"in order to have the correct permissions and ownerships in the resulting "
+"<filename>.deb</filename> file. This can be achieved either by running "
+"<command>&dhcommand;</command> as root or running under "
+"<citerefentry><refentrytitle>fakeroot</refentrytitle> <manvolnum>1</"
+"manvolnum></citerefentry>, as 'fakeroot &dhcommand; foo.deb'."
+msgstr ""
+"Lors de la construction d'un paquet, les droits du superutilisateur sont "
+"nécessaires pour obtenir les permissions et les propriétaires adéquats pour "
+"le contenu du fichier <filename>.deb</filename>. Cela peut être réalisé soit "
+"en lançant la commande <command>&dhcommand;</command> comme superutilisateur "
+"soit en lançant <citerefentry><refentrytitle>fakeroot</refentrytitle> "
+"<manvolnum>1</manvolnum></citerefentry>, comme « fakeroot &dhcommand; toto."
+"deb »."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:113
+msgid ""
+"With <option>-k <replaceable class=\"parameter\">hook</replaceable></"
+"option>, a hook script may be specified, which is run on the unpacked binary "
+"packages just before it is repacked. If you want to write changelog entries "
+"from within the hook, use '<command>dch -a -- <replaceable class=\"parameter"
+"\">your message</replaceable></command>'. (Alternatively, do not give a "
+"changelog entry on the <command>&dhcommand;</command> command line and "
+"<command>dch</command> will be called automatically.) The hook command must "
+"be placed in quotes if it has more than one word; it is called via "
+"<command>sh -c</command>."
+msgstr ""
+"Avec <option>-k <replaceable class=\"parameter\">hook</replaceable></"
+"option>, un script crochet (« hook ») peut être précisé, et lancé sur les "
+"paquets binaires dépaquetés juste avant qu'ils soient rempaquetés. Si vous "
+"voulez écrire les entrées du fichier <filename>changelog</filename> avec ce "
+"script, utilisez la commande « <command>dch -a -- <replaceable class="
+"\"parameter\">votre message</replaceable></command> ». (Alternativement, "
+"vous pouvez ne pas indiquer l'entrée du <filename>changelog</filename> dans "
+"la ligne de commande <command>&dhcommand;</command>, <command>dch</command> "
+"sera alors appelée automatiquement.) La commande crochet doit être placée "
+"entre guillemets s'il y a plus d'un mot ; elle est appelée avec la commande "
+"<command>sh -c</command>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:131
+msgid ""
+"<option>-v</option> <replaceable class=\"parameter\">new-version</"
+"replaceable>"
+msgstr ""
+"<option>-v</option> <replaceable class=\"parameter\">nouvelle-version</"
+"replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:132
+msgid ""
+"<option>--new-version</option> <replaceable class=\"parameter\">new-version</"
+"replaceable>"
+msgstr ""
+"<option>--new-version</option> <replaceable class=\"parameter\">nouvelle-"
+"version</replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:135
+msgid ""
+"Specifies the version number to be used for the new version. Passed to "
+"<citerefentry> <refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry>."
+msgstr ""
+"Indiquer le numéro de version à utiliser pour la nouvelle version. Passé à "
+"<citerefentry> <refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:145
+msgid ""
+"<option>-o</option> <replaceable class=\"parameter\">old-version</"
+"replaceable>"
+msgstr ""
+"<option>-o</option> <replaceable class=\"parameter\">ancienne-version</"
+"replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:146
+msgid ""
+"<option>--old-version</option> <replaceable class=\"parameter\">old-version</"
+"replaceable>"
+msgstr ""
+"<option>--old-version</option> <replaceable class=\"parameter\">ancienne-"
+"version</replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:149
+msgid ""
+"Specifies the version number to be used as the old version instead of the "
+"version stored in the <filename>.deb</filename>'s <filename>control</"
+"filename> file."
+msgstr ""
+"Indiquer le numéro de version à utiliser comme ancienne version à la place "
+"de la version indiquée dans le fichier <filename>control</filename> du "
+"paquet <filename>.deb</filename>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:157
+msgid "<option>-c</option>"
+msgstr "<option>-c</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:158
+msgid "<option>--calculate-only</option>"
+msgstr "<option>--calculate-only</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:161
+msgid ""
+"Only calculate and display the new version number which would be used; do "
+"not build a new <filename>.deb</filename> file. Cannot be used in "
+"conjunction with <option>-v</option>."
+msgstr ""
+"Se contenter de calculer et d'afficher le nouveau numéro de version qui "
+"serait utilisé ; ne pas construire de nouveau paquet <filename>.deb</"
+"filename>. Ne peut pas être utilisé en même temps que <option>-v</option>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:169
+msgid ""
+"<option>-s</option> <replaceable class=\"parameter\">string</replaceable>"
+msgstr ""
+"<option>-s</option> <replaceable class=\"parameter\">chaîne</replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:170
+msgid ""
+"<option>--string</option> <replaceable class=\"parameter\">string</"
+"replaceable>"
+msgstr ""
+"<option>--string</option> <replaceable class=\"parameter\">chaîne</"
+"replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:173
+msgid ""
+"Instead of using 'LOCAL.' as the version string to append to the old version "
+"number, use <replaceable class=\"parameter\">string</replaceable> instead."
+msgstr ""
+"Au lieu d'ajouter « LOCAL. » à l'ancien numéro de version, ajouter "
+"<replaceable class=\"parameter\">chaîne</replaceable>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:181
+msgid ""
+"<option>-k</option> <replaceable class=\"parameter\">hook-command</"
+"replaceable>"
+msgstr ""
+"<option>-k</option> <replaceable class=\"parameter\">commande-crochet</"
+"replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:182
+msgid ""
+"<option>--hook</option> <replaceable class=\"parameter\">hook-command</"
+"replaceable>"
+msgstr ""
+"<option>--hook</option> <replaceable class=\"parameter\">commande-crochet</"
+"replaceable>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:185
+msgid ""
+"A hook command to run after unpacking the old <filename>.deb</filename> file "
+"and modifying the <filename>changelog</filename>, and before packing up the "
+"new <filename>.deb</filename> file. Must be in quotes if it is more than "
+"one (shell) word. Only one hook command may be specified; if you want to "
+"perform more than this, you could specify 'bash' as the hook command, and "
+"you will then be given a shell to work in."
+msgstr ""
+"Une commande de crochet à lancer après avoir dépaqueté l'ancien fichier "
+"<filename>.deb</filename>, avoir modifié le fichier <filename>changelog</"
+"filename> et avant de construire le nouveau fichier <filename>.deb</"
+"filename>. Doit être placée entre guillemets si elle est constituée de plus "
+"d'un mot (du point de vue de l'interpréteur). Une seule commande de crochet "
+"peut être précisée ; si vous voulez effectuer plus de choses, vous pouvez "
+"indiquer « bash » comme commande de crochet, vous aurez ainsi une invite de "
+"commandes pour travailler."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:197
+msgid "<option>-D</option>"
+msgstr "<option>-D</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:198
+msgid "<option>--debug</option>"
+msgstr "<option>--debug</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:201
+msgid ""
+"Pass <option>--debug</option> to <citerefentry> <refentrytitle>dpkg-deb</"
+"refentrytitle> <manvolnum>1</manvolnum> </citerefentry>."
+msgstr ""
+"Passer <option>--debug</option> à <citerefentry> <refentrytitle>dpkg-deb</"
+"refentrytitle> <manvolnum>1</manvolnum> </citerefentry>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:211
+msgid "<option>-b</option>"
+msgstr "<option>-b</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:212
+msgid "<option>--force-bad-version</option>"
+msgstr "<option>--force-bad-version</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:215
+msgid ""
+"Pass <option>--force-bad-version</option> to <citerefentry> "
+"<refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </citerefentry>"
+msgstr ""
+"Passer <option>--force-bad-version</option> à <citerefentry> "
+"<refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </citerefentry>."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:225
+msgid "<option>-h</option>"
+msgstr "<option>-h</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:226
+msgid "<option>--help</option>"
+msgstr "<option>--help</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
+#: ../scripts/deb-reversion.dbk:229
+msgid "Display usage information."
+msgstr "Afficher les informations d'utilisation."
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:235
+msgid "<option>-V</option>"
+msgstr "<option>-V</option>"
+
+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
+#: ../scripts/deb-reversion.dbk:236
+msgid "<option>--version</option>"
+msgstr "<option>--version</option>"
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:249
+msgid ""
+"<citerefentry> <refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry>, <citerefentry> <refentrytitle>dpkg-deb</refentrytitle> "
+"<manvolnum>1</manvolnum> </citerefentry>, <citerefentry> "
+"<refentrytitle>fakeroot</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry>"
+msgstr ""
+"<citerefentry> <refentrytitle>dch</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry>, <citerefentry> <refentrytitle>dpkg-deb</refentrytitle> "
+"<manvolnum>1</manvolnum> </citerefentry>, <citerefentry> "
+"<refentrytitle>fakeroot</refentrytitle> <manvolnum>1</manvolnum> </"
+"citerefentry>"
+
+#. type: Content of: <refentry><refsect1><title>
+#: ../scripts/deb-reversion.dbk:265
+msgid "DISCLAIMER"
+msgstr "AVERTISSEMENT"
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:267
+msgid ""
+"&dhpackage; is a tool intended to help porters with modifying packages for "
+"other architectures, and to augment deb-repack, which creates modified "
+"packages with identical version numbers as the official packages. Chaos will "
+"ensue! With &dhpackage;, a proper version number can be selected, which does "
+"not obstruct the next official release but can be specifically pinned with "
+"APT or held with dpkg."
+msgstr ""
+"&dhpackage; est un outil censé aider les porteurs à modifier les paquets "
+"pour d'autres architectures et épauler deb-repack, qui crée des paquets "
+"modifiés avec des numéros de version identiques aux paquets officiels. Le "
+"chaos arrive. Avec &dhpackage;, un numéro de version adéquat est choisi, qui "
+"ne génère pas de conflit avec la prochaine publication officielle, mais qui "
+"peut être ajouté avec APT ou gelé avec dpkg."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:276
+msgid ""
+"Please take note that &dhpackage; does not come without problems. While it "
+"works fine in most cases, it may just not in yours. Especially, please "
+"consider that it changes binary packages (only!) and hence can break strict "
+"versioned dependencies between binary packages generated from the same "
+"source."
+msgstr ""
+"Veuillez noter que &dhpackage; ne vient pas sans problèmes. Il fonctionne "
+"bien dans la plupart des cas, mais peut ne pas fonctionner dans les vôtres. "
+"En particulier, veuillez noter qu'il ne change (que) des paquets binaires et "
+"donc peut casser des dépendances versionnées entre des paquets produits à "
+"partir de la même source."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:283
+msgid ""
+"You are using this tool at your own risk and I shall not shed a tear if your "
+"gerbil goes up in flames, your microwave attacks the stereo, or the angry "
+"slamming of your fist spills your coffee into the keyboard, which sets off a "
+"chain reaction resulting in a vast amount of money transferred from your "
+"account to mine."
+msgstr ""
+"Vous utilisez cet outil à vos risques et périls, et ne venez pas pleurer si "
+"votre souris s'enflamme, si votre four à micro-ondes attaque votre chaîne "
+"stéréo, ou si votre poing rageur renverse votre café sur votre clavier, ce "
+"qui déclenche une vaste réaction en chaîne, ayant pour conséquence un "
+"transfert bancaire conséquent de votre compte au mien."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:295
+msgid ""
+"&dhpackage; is Copyright 2004-5 by &dhusername; &dhemail; and modifications "
+"are Copyright 2006 by &dhmaintusername; &dhmaintemail;."
+msgstr ""
+"&dhpackage; est Copyright 2004-2005 &dhusername; &dhemail; ; les "
+"modifications sont Copyright 2006 &dhmaintusername; &dhmaintemail;."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:300
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the Artistic License: <ulink>http://www.opensource.org/licenses/"
+"artistic-license.php</ulink>. On Debian systems, the complete text of the "
+"Artistic License can be found in <filename>/usr/share/common-licenses/"
+"Artistic</filename>."
+msgstr ""
+"Il est permis de copier, distribuer et/ou modifier ce document selon les "
+"termes de la licence Artistic : <ulink>http://www.opensource.org/licenses/"
+"artistic-license.php</ulink>. Sur les systèmes Debian, le texte complet de "
+"la licence Artistic est disponible dans <filename>/usr/share/common-licenses/"
+"Artistic</filename>."
+
+#. type: Content of: <refentry><refsect1><para>
+#: ../scripts/deb-reversion.dbk:309
+msgid ""
+"This manual page was written by &dhusername; &dhemail; and modified by "
+"&dhmaintusername; &dhmaintemail;."
+msgstr ""
+"Cette page de manuel a été écrite par &dhusername; &dhemail; et modifiée par "
+"&dhmaintusername; &dhmaintemail;."
+
+#. type: TH
+#: ../scripts/debrsign.1:1
+#, no-wrap
+msgid "DEBRSIGN"
+msgstr "DEBRSIGN"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:4
+msgid "debrsign - remotely sign a Debian .changes and .dsc file pair using SSH"
+msgstr ""
+"debrsign - Signer des fichiers .changes et .dsc Debian à distance avec SSH"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:7
+msgid ""
+"B<debrsign> [I<options>] [I<user>B<@>]I<remotehost> [I<changes-file>|I<dsc-"
+"file>]"
+msgstr ""
+"B<debrsign> [I<options>] [I<utilisateur>B<@>]I<hôte_distant> [I<fichier-"
+"changes>|I<fichier-dsc>]"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:15
+msgid ""
+"B<debrsign> takes either an unsigned I<.dsc> file or an unsigned I<.changes> "
+"file and the associated unsigned I<.dsc> file (found by replacing the "
+"architecture name and I<.changes> by I<.dsc>) if it appears in the I<."
+"changes> file and signs them by copying them to the remote machine using "
+"B<ssh>(1) and remotely running B<debsign>(1) on that machine. All options "
+"not listed below are passed to the B<debsign> program on the remote machine."
+msgstr ""
+"B<debrsign> prend soit un fichier I<.dsc> non signé soit un fichier I<."
+"changes> non signé et son fichier I<.dsc> non signé associé (obtenu en "
+"remplaçant le nom de l'architecture et l'extension I<.changes> en I<.dsc>) "
+"s'il apparaît dans le fichier I<.changes>, et les signe en les copiant sur "
+"la machine distante et en exécutant B<debsign>(1) sur cette machine. Toute "
+"option non listée ci-dessous est passée au programme B<debsign> sur la "
+"machine distante."
+
+#. type: Plain text
+#: ../scripts/debrsign.1:19
+msgid ""
+"If a I<.changes> or I<.dsc> file is specified, it is signed, otherwise, "
+"I<debian/changelog> is parsed to determine the name of the I<.changes> file "
+"to look for in the parent directory."
+msgstr ""
+"Si un fichier I<.changes> ou I<.dsc> est fourni, il est signé. Sinon, "
+"I<debian/changelog> est analysé pour déterminer le nom du fichier I<."
+"changes> à rechercher dans le répertoire parent."
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/debrsign.1:25
+msgid ""
+"This utility is useful if a developer must build a package on one machine "
+"where it is unsafe to sign it; they need then only transfer the small I<."
+"dsc> and I<.changes> files to a safe machine and then use the B<debsign> "
+"program to sign them before transferring them back. This program automates "
+"this process."
+msgstr ""
+"Cet utilitaire permet à un développeur de construire un paquet sur une "
+"machine où il serait dangereux (du point de vue de la sécurité) de réaliser "
+"une signature. Il suffit de transférer les petits fichiers I<.dsc> et I<."
+"changes> sur une machine sûre et d'utiliser le programme B<debsign> pour les "
+"signer avant de les renvoyer. Ce programme automatise ce processus."
+
+#. type: Plain text
+#: ../scripts/debrsign.1:30
+msgid ""
+"To do it the other way round, that is to connect to an unsafe machine to "
+"download the I<.dsc> and I<.changes> files, to sign them locally and then to "
+"transfer them back, see the B<debsign>(1) program, which can do this task."
+msgstr ""
+"Consultez aussi B<debsign>(1), qui permet d'effectuer l'opération dans "
+"l'autre sens, c'est-à-dire se connecter à la machine non sûre pour "
+"télécharger les fichiers I<.dsc> et I<.changes>, signer les fichiers "
+"localement, puis les renvoyer."
+
+#. type: Plain text
+#: ../scripts/debrsign.1:35 ../scripts/debsign.1:72
+msgid ""
+"Look for a source-only I<.changes> file instead of a binary-build I<."
+"changes> file."
+msgstr ""
+"Chercher un fichier I<.changes> uniquement pour le source plutôt qu'un "
+"fichier I<.changes> correspondant à un paquet binaire."
+
+#. type: Plain text
+#: ../scripts/debrsign.1:47
+msgid ""
+"Multiarch I<.changes> mode: This signifies that B<debrsign> should use the "
+"most recent file with the name pattern I<package_version_*+*.changes> as the "
+"I<.changes> file, allowing for the I<.changes> files produced by B<dpkg-"
+"cross>."
+msgstr ""
+"Mode des fichiers I<.changes> multiarchitecture : cela signifie que "
+"B<debrsign> doit utiliser le fichier le plus récent respectant le modèle "
+"I<paquet_version_*+*.changes>, autorisant ainsi les fichiers I<.changes> "
+"produits par B<dpkg-cross>."
+
+#. type: TP
+#: ../scripts/debrsign.1:47
+#, no-wrap
+msgid "B<--path >I<remote-path>"
+msgstr "B<--path> I<chemin-distant>"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:50
+msgid "Specify a path to the GPG binary on the remote host."
+msgstr "Indiquer le chemin du programme GPG sur l'hôte distant."
+
+#. type: TP
+#: ../scripts/debrsign.1:53
+#, no-wrap
+msgid "B<Other options>"
+msgstr "B<Autres options>"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:57
+msgid "All other options are passed on to B<debsign> on the remote machine."
+msgstr ""
+"Toutes les autres options sont passées à B<debsign> sur la machine distante."
+
+#. type: TP
+#: ../scripts/debrsign.1:63
+#, no-wrap
+msgid "B<DEBRSIGN_PGP_PATH>"
+msgstr "B<DEBRSIGN_PGP_PATH>"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:66
+msgid "Equivalent to passing B<--path> on the command line (see above.)"
+msgstr ""
+"Équivaut à utiliser l'option B<--path> en ligne de commande (voir ci-dessus)."
+
+#. type: Plain text
+#: ../scripts/debrsign.1:70
+msgid "B<debsign>(1), B<dpkg-architecture>(1), B<ssh>(1)"
+msgstr "B<debsign>(1), B<dpkg-architecture>(1), B<ssh>(1)"
+
+#. type: Plain text
+#: ../scripts/debrsign.1:72 ../scripts/debsign.1:147
+msgid ""
+"This program was written by Julian Gilbey E<lt>jdg@debian.orgE<gt> and is "
+"copyright under the GPL, version 2 or later."
+msgstr ""
+"Ce programme a été écrit par Julian Gilbey E<lt>jdg@debian.orgE<gt> et est "
+"distribué sous licence GPL, version 2 ou ultérieure."
+
+#. type: TH
+#: ../scripts/debsign.1:1
+#, no-wrap
+msgid "DEBSIGN"
+msgstr "DEBSIGN"
+
+#. type: Plain text
+#: ../scripts/debsign.1:4
+msgid "debsign - sign a Debian .changes and .dsc file pair using GPG"
+msgstr ""
+"debsign - Signer une paire de fichiers .changes et .dsc Debian avec GPG"
+
+#. type: Plain text
+#: ../scripts/debsign.1:6
+msgid ""
+"B<debsign> [I<options>] [I<changes-file>|I<dsc-file>|I<commands-file> ...]"
+msgstr ""
+"B<debsign> [I<options>] [I<fichier-changes>|I<fichier-dsc>|I<fichier-"
+"commands> ...]"
+
+#. type: Plain text
+#: ../scripts/debsign.1:16
+msgid ""
+"B<debsign> mimics the signing aspects (and bugs) of B<dpkg-"
+"buildpackage>(1). It takes either an unsigned I<.dsc> file or an unsigned "
+"I<.changes> file (along with the associated unsigned I<.dsc> file found by "
+"replacing the architecture name and I<.changes> by I<.dsc> if it appears in "
+"the I<.changes> file), and signs them using the GNU Privacy Guard. It is "
+"careful to calculate the size and checksums of the newly signed I<.dsc> file "
+"and replace the original values in the I<.changes> file."
+msgstr ""
+"B<debsign> imite les aspects (et les bogues) concernant la signature de "
+"B<dpkg-buildpackage>(1). Il prend en argument soit un fichier I<.dsc> non "
+"signé, soit un fichier I<.changes> non signé (avec le fichier I<.dsc> "
+"associé, qui est trouvé en remplaçant le nom de l'architecture et "
+"l'extension I<.changes> par I<.dsc> s'il apparaît dans le fichier I<."
+"changes>), et les signe en utilisant GNU Privacy Guard. Il fait attention à "
+"calculer la taille et la somme de contrôle du nouveau fichier I<.dsc> signé "
+"et remplace les valeurs du fichier I<.changes>."
+
+#. type: Plain text
+#: ../scripts/debsign.1:21
+msgid ""
+"If a I<.changes>, I<.dsc> or I<.commands> file is specified, it is signed, "
+"otherwise, I<debian/changelog> is parsed to determine the name of the I<."
+"changes> file to look for in the parent directory."
+msgstr ""
+"Si un fichier I<.changes>, I<.dsc> ou I<.commands> est fourni, il est signé. "
+"Sinon, I<debian/changelog> est analysé pour déterminer le nom du fichier I<."
+"changes> à rechercher dans le répertoire parent."
+
+#. type: Plain text
+#: ../scripts/debsign.1:25
+msgid ""
+"If a I<.commands> file is specified it is first validated (see the details "
+"at I<ftp://ftp.upload.debian.org/pub/UploadQueue/README>), and the name "
+"specified in the Uploader field is used for signing."
+msgstr ""
+"Si un fichier I<.commands> est indiqué, il est validé en premier (voir les "
+"détails I<ftp://ftp.upload.debian.org/pub/UploadQueue/README>) ; le nom "
+"indiqué dans le champ Uploader est utilisé pour la signature."
+
+# NOTE: presque identique à une autre chaîne
+#. type: Plain text
+#: ../scripts/debsign.1:36
+msgid ""
+"This utility is useful if a developer must build a package on one machine "
+"where it is unsafe to sign it; they need then only transfer the small I<."
+"dsc> and I<.changes> files to a safe machine and then use the B<debsign> "
+"program to sign them before transferring them back. This process can be "
+"automated in two ways. If the files to be signed live on the B<remote> "
+"machine, the B<-r> option may be used to copy them to the local machine and "
+"back again after signing. If the files live on the B<local> machine, then "
+"they may be transferred to the remote machine for signing using "
+"B<debrsign>(1)."
+msgstr ""
+"Cet utilitaire permet à un développeur de construire un paquet sur une "
+"machine où il serait dangereux (du point de vue de la sécurité) de réaliser "
+"une signature. Il suffit de transférer les petits fichiers I<.dsc> et I<."
+"changes> sur une machine sûre et d'utiliser le programme B<debsign> pour les "
+"signer avant de les renvoyer. Ce processus peut être automatisé de deux "
+"façons. Si les fichiers à signer se trouvent sur la machine B<distante>, "
+"l'option B<-r> peut être utilisée pour les copier sur la machine locale où "
+"ils seront signés puis de les recopier sur la machine distante. Si les "
+"fichiers se trouvent sur la machine B<locale>, ils peuvent être transférés "
+"sur la machine distante pour être signés en utilisant B<debrsign>(1)."
+
+#. type: Plain text
+#: ../scripts/debsign.1:39
+msgid ""
+"This program can take default settings from the B<devscripts> configuration "
+"files, as described below."
+msgstr ""
+"Ce programme peut utiliser des paramètres par défaut des fichiers de "
+"configuration de B<devscripts>, comme décrit ci-dessous."
+
+#. type: TP
+#: ../scripts/debsign.1:40
+#, no-wrap
+msgid "B<-r >[I<username>B<@>]I<remotehost>"
+msgstr "B<-r> [I<nom_utilisateur>@]I<hôte_distant>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:48
+msgid ""
+"The I<.changes> and I<.dsc> files live on the specified remote host. In "
+"this case, a I<.changes> file must be explicitly named, with an absolute "
+"directory or one relative to the remote home directory. B<scp> will be used "
+"for the copying. The [I<username>B<@>]I<remotehost>B<:>I<changes> syntax is "
+"permitted as an alternative. Wildcards (B<*> etc.) are allowed."
+msgstr ""
+"Les fichiers I<.changes> et I<.dsc> se trouvent sur l'hôte distant indiqué. "
+"Dans ce cas, un fichier I<.changes> doit être explicitement nommé, avec un "
+"nom de répertoire absolu ou relatif au répertoire personnel distant. B<scp> "
+"sera utilisé pour le transfert. La syntaxe "
+"[I<nom_utilisateur>@]I<hôte_distant>:I<fichier_changes> est également "
+"permise. Les jokers (B<*>, etc.) sont autorisés."
+
+#. type: TP
+#: ../scripts/debsign.1:48
+#, no-wrap
+msgid "B<-p>I<progname>"
+msgstr "B<-p>I<programme>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:52
+msgid ""
+"When B<debsign> needs to execute GPG to sign it will run I<progname> "
+"(searching the B<PATH> if necessary), instead of B<gpg>."
+msgstr ""
+"Lorsque B<debsign> doit exécuter GPG pour signer, il exécutera I<programme> "
+"(en le cherchant dans B<PATH> si nécessaire), au lieu de B<gpg>."
+
+#. type: TP
+#: ../scripts/debsign.1:52
+#, no-wrap
+msgid "B<-m>I<maintainer>"
+msgstr "B<-m>I<responsable>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:61
+msgid ""
+"Specify the maintainer name to be used for signing. (See B<dpkg-"
+"buildpackage>(1) for more information about the differences between B<-m>, "
+"B<-e> and B<-k> when building packages; B<debsign> makes no use of these "
+"distinctions except with respect to the precedence of the various options. "
+"These multiple options are provided so that the program will behave as "
+"expected when called by B<debuild>(1).)"
+msgstr ""
+"Indiquer le nom du responsable à utiliser pour la signature. Consultez "
+"B<dpkg-buildpackage>(1) pour plus d'informations concernant les différences "
+"entre B<-m>, B<-e> et B<-k> lors de la construction des paquets ; B<debsign> "
+"ne fait pas ces distinctions, mais respecte l'ordre de priorité des "
+"différentes options. Ces différentes options sont fournies de sorte que ce "
+"programme se comporte comme prévu lorsqu'il est appelé par B<debuild>(1)."
+
+#. type: TP
+#: ../scripts/debsign.1:61
+#, no-wrap
+msgid "B<-e>I<maintainer>"
+msgstr "B<-e>I<responsable>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:64
+msgid "Same as B<-m> but takes precedence over it."
+msgstr "Identique à B<-m>, mais avec une priorité plus élevée."
+
+#. type: TP
+#: ../scripts/debsign.1:64
+#, no-wrap
+msgid "B<-k>I<keyid>"
+msgstr "B<-k>I<identifiant_clef>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:68
+msgid ""
+"Specify the key ID to be used for signing; overrides any B<-m> and B<-e> "
+"options."
+msgstr ""
+"Indiquer l'identifiant de la clef à utiliser pour la signature. Cette option "
+"prévaut sur toute utilisation des options B<-m> et B<-e>."
+
+#. type: Plain text
+#: ../scripts/debsign.1:84
+msgid ""
+"Multiarch I<.changes> mode: This signifies that B<debsign> should use the "
+"most recent file with the name pattern I<package_version_*+*.changes> as the "
+"I<.changes> file, allowing for the I<.changes> files produced by B<dpkg-"
+"cross>."
+msgstr ""
+"Mode des fichiers I<.changes> multiarchitecture : cela signifie que "
+"B<debsign> doit utiliser le fichier le plus récent respectant le modèle "
+"I<paquet_version_*+*.changes>, autorisant ainsi les fichiers I<.changes> "
+"produits par B<dpkg-cross>."
+
+#. type: TP
+#: ../scripts/debsign.1:84
+#, no-wrap
+msgid "B<--re-sign>, B<--no-re-sign>"
+msgstr "B<--re-sign>, B<--no-re-sign>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:90
+msgid ""
+"Recreate signature, respectively use the existing signature, if the file has "
+"been signed already. If neither option is given and an already signed file "
+"is found the user is asked if he or she likes to use the current signature."
+msgstr ""
+"Respectivement recréer la signature ou utiliser celle existante si le "
+"fichier a déjà été signé. Si aucune option n'est fournie alors qu'un fichier "
+"signé est trouvé, il est demandé si la signature actuelle doit être utilisée."
+
+#. type: TP
+#: ../scripts/debsign.1:90
+#, no-wrap
+msgid "B<--debs-dir> I<DIR>"
+msgstr "B<--debs-dir> I<RÉP>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:96
+msgid ""
+"Look for the I<.changes> and I<.dsc> files in directory I<DIR> instead of "
+"the parent of the source directory. This should either be an absolute path "
+"or relative to the top of the source directory."
+msgstr ""
+"Chercher les fichiers I<.changes> et I<.deb> dans le répertoire I<RÉP> au "
+"lieu du répertoire parent du répertoire source. Cela doit être soit un "
+"chemin absolu, soit un chemin relatif à la racine du répertoire source."
+
+#. type: TP
+#: ../scripts/debsign.1:112
+#, no-wrap
+msgid "B<DEBSIGN_PROGRAM>"
+msgstr "B<DEBSIGN_PROGRAM>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:115
+msgid "Setting this is equivalent to giving a B<-p> option."
+msgstr "Lui attribuer une valeur équivaut à fournir une option B<-p>."
+
+#. type: TP
+#: ../scripts/debsign.1:115
+#, no-wrap
+msgid "B<DEBSIGN_MAINT>"
+msgstr "B<DEBSIGN_MAINT>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:118
+msgid "This is the B<-m> option."
+msgstr "Équivaut à utiliser l'option B<-m>."
+
+#. type: Plain text
+#: ../scripts/debsign.1:121
+msgid "And this is the B<-k> option."
+msgstr "Équivaut à utiliser l'option B<-k>."
+
+#. type: TP
+#: ../scripts/debsign.1:121
+#, no-wrap
+msgid "B<DEBSIGN_ALWAYS_RESIGN>"
+msgstr "B<DEBSIGN_ALWAYS_RESIGN>"
+
+#. type: Plain text
+#: ../scripts/debsign.1:124
+msgid ""
+"Always re-sign files even if they are already signed, without prompting."
+msgstr ""
+"Toujours signer de nouveau les fichiers, même s'ils ont déjà été signés, "
+"sans demander."
+
+#. type: Plain text
+#: ../scripts/debsign.1:134
+msgid ""
+"This specifies the directory in which to look for the I<.changes> and I<."
+"dsc> files, and is either an absolute path or relative to the top of the "
+"source tree. This corresponds to the B<--debs-dir> command line option. "
+"This directive could be used, for example, if you always use B<pbuilder> or "
+"B<svn-buildpackage> to build your packages. Note that it also affects "
+"B<debrelease>(1) in the same way, hence the strange name of the option."
+msgstr ""
+"Indiquer le répertoire dans lequel chercher les fichiers I<.changes> et I<."
+"deb>, et est soit un chemin absolu ou un chemin relatif à la racine du "
+"répertoire racine. Cela correspond à l'option en ligne de commande B<--debs-"
+"dir>. Cette directive peut être utilisée par exemple si vous utilisez "
+"systématiquement B<pbuilder> ou B<svn-buildpackage> pour construire vos "
+"paquets. Remarquez que cela concerne également B<debrelease>(1), ce qui "
+"explique le nom étrange de l'option."
+
+#. type: Plain text
+#: ../scripts/debsign.1:145
+msgid ""
+"B<debrsign>(1), B<debuild>(1), B<dpkg-architecture>(1), B<dpkg-"
+"buildpackage>(1), B<gpg>(1), B<md5sum>(1), B<sha1sum>(1), B<sha256sum>(1), "
+"B<scp>(1), B<devscripts.conf>(5)"
+msgstr ""
+"B<debrsign>(1), B<debuild>(1), B<dpkg-architecture>(1), B<dpkg-"
+"buildpackage>(1), B<gpg>(1), B<md5sum>(1), B<sha1sum>(1), B<sha256sum>(1), "
+"B<scp>(1), B<devscripts.conf>(5)"
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "DEBSNAP"
+msgstr "DEBSNAP"
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "July 3, 2010"
+msgstr "3 juillet 2010"
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "Debian devscripts"
+msgstr "Debian devscripts"
+
+#. type: TH
+#: ../scripts/debsnap.1:2
+#, no-wrap
+msgid "DebSnap User Manual"
+msgstr "Manuel utilisateur de DebSnap"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:5
+msgid "debsnap - retrieve old snapshots of Debian packages"
+msgstr "debsnap - Récupérer d'anciennes versions de paquets Debian"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:9
+msgid "B<debsnap> [I<options>]I< package >[I<version>]"
+msgstr "B<debsnap> [I<options>]I< paquet >[I<version>]"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:12
+msgid "B<debsnap> [B<-h> | B<--help>]B< >[B<--version>]"
+msgstr "B<debsnap> [B<-h> | B<--help>]B< >[B<--version>]"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:17
+msgid ""
+"B<debsnap> is a tool to help with retrieving snapshots of old packages from "
+"a daily archive repository."
+msgstr ""
+"B<debsnap> est un outil qui permet de récupérer d'anciens paquets sur un "
+"dépôt d'archives journalières."
+
+#. type: Plain text
+#: ../scripts/debsnap.1:20
+msgid ""
+"The only publicly available snapshot archive is currently located at "
+"I<http://snapshot.debian.org>"
+msgstr ""
+"La seule archive publique disponible se trouve sur I<http://snapshot.debian."
+"org>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:24
+msgid ""
+"By default, debsnap will download all the available versions for I<package> "
+"that are found in the snapshot archive. If a I<version> is specified, only "
+"that particular version will be downloaded, if available."
+msgstr ""
+"Par défaut, debsnap téléchargera toutes les versions du I<paquet> qui sont "
+"disponibles dans l'archive. Si une I<version> est indiquée, seule cette "
+"version sera téléchargée, si elle est disponible."
+
+#. type: TP
+#: ../scripts/debsnap.1:29
+#, no-wrap
+msgid "B<-d>I< destination>,I< >B<--destdir>I< destination>"
+msgstr "B<-d>I< destination>,I< >B<--destdir>I< destination>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:32
+msgid "Directory to place retrieved packages."
+msgstr "Répertoire où placer les paquets récupérés."
+
+#. type: =item
+#: ../scripts/debsnap.1:33 ../scripts/tagpending.pl:109
+#, no-wrap
+msgid "B<-f>, B<--force>"
+msgstr "B<-f>, B<--force>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:41
+msgid ""
+"Force writing into an existing I<destination>. By default B<debsnap> will "
+"insist the destination directory does not exist yet unless it is explicitly "
+"specified to be 'B<.>' (the current working directory). This is to avoid "
+"files being accidentally overwritten by what is fetched from the archive and "
+"to provide a guarantee for other scripts that only the files fetched will be "
+"present there upon completion."
+msgstr ""
+"Forcer l'écrasement d'une I<destination> existante. Par défaut, B<debsnap> "
+"insistera pour que le répertoire de destination n'existe pas, sauf s'il "
+"s'agit explicitment de « B<.> » (le répertoire de travail en cours). C'est "
+"pour éviter que des fichiers soient accidentellement écrasés par ce qui est "
+"récupéré de l'archive et pour garantir aux autres scripts que seuls les "
+"fichiers récupérés seront présents à la fin."
+
+#. type: TP
+#: ../scripts/debsnap.1:42 ../scripts/sadt.pod:46
+#: ../doc/suspicious-source.1:38 ../scripts/tagpending.pl:105
+#: ../doc/wrap-and-sort.1:70
+#, no-wrap
+msgid "B<-v>, B<--verbose>"
+msgstr "B<-v>, B<--verbose>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:46
+msgid ""
+"Report on the B<debsnap> configuration being used and progress during the "
+"download operation. Please always use this option when reporting bugs."
+msgstr ""
+"Faire un compte-rendu sur la configuration de B<debsnap> utilisée et la "
+"progression pendant le téléchargement. Veuillez toujours utiliser cette "
+"option pour les rapports de bogue."
+
+#. type: TP
+#: ../scripts/debsnap.1:47
+#, no-wrap
+msgid "B<--binary>"
+msgstr "B<--binary>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:50
+msgid "Download binary packages instead of source packages."
+msgstr "Télécharger les paquets binaires au lieu des paquets source. "
+
+#. type: TP
+#: ../scripts/debsnap.1:51
+#, no-wrap
+msgid "B<-a>, B<--architecture>"
+msgstr "B<-a>, B<--architecture>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:56
+msgid ""
+"Specify architecture of downloaded binary packages. Implies B<--binary>. "
+"This can be given multiple times in order to download binary packages for "
+"multiple architectures."
+msgstr ""
+"Indiquer l'architecture des paquets binaires téléchargés, ce qui implique "
+"l'option B<--binary>. Cette option peut être indiquée plusieurs fois afin de "
+"télécharger les paquets binaires pour plusieurs architectures."
+
+#. type: Plain text
+#: ../scripts/debsnap.1:60
+msgid "Show a summary of these options."
+msgstr "Afficher un résumé des options."
+
+#. type: Plain text
+#: ../scripts/debsnap.1:64
+msgid "Show the version of B<debsnap>."
+msgstr "Afficher la version de B<debsnap>."
+
+#. type: Plain text
+#: ../scripts/debsnap.1:69
+msgid ""
+"B<debsnap> may also be configured through the use of the following options "
+"in the devscripts configuration files:"
+msgstr ""
+"B<debsnap> peut aussi être configuré à l'aide des options suivantes des "
+"fichiers de configuration de devscripts :"
+
+#. type: TP
+#: ../scripts/debsnap.1:70
+#, no-wrap
+msgid "B<DEBSNAP_VERBOSE>"
+msgstr "B<DEBSNAP_VERBOSE>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:73
+msgid "Same as the command line option B<--verbose>. Set to I<yes> to enable."
+msgstr ""
+"Identique à l'option en ligne de commande B<--verbose>. Lui attribuer la "
+"valeur I<yes> pour activer l'option."
+
+#. type: TP
+#: ../scripts/debsnap.1:74
+#, no-wrap
+msgid "B<DEBSNAP_DESTDIR>"
+msgstr "B<DEBSNAP_DESTDIR>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:79
+msgid ""
+"Set a default path for the destination directory. If unset I<./source-"
+"E<lt>package_nameE<gt>> will be used. The command line option B<--destdir> "
+"will override this."
+msgstr ""
+"Définir un chemin par défaut pour le répertoire de destination. Si elle "
+"n'est pas définie, I<./source-E<lt>nom_paquetE<gt>> sera utilisé. L'option "
+"en ligne de commande B<--destdir> remplacera cette valeur."
+
+#. type: TP
+#: ../scripts/debsnap.1:80
+#, no-wrap
+msgid "B<DEBSNAP_BASE_URL>"
+msgstr "B<DEBSNAP_BASE_URL>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:83
+msgid "The base url for the snapshots archive."
+msgstr "L'URL de base pour l'archive d'instantanés (« snapshots »)."
+
+#. type: Plain text
+#: ../scripts/debsnap.1:85
+msgid "If unset this defaults to I<http://snapshot.debian.org>"
+msgstr ""
+"Si elle n'est pas définie, la valeur par défaut est I<http://snapshot.debian."
+"org>"
+
+#. type: SH
+#: ../scripts/debsnap.1:86 ../scripts/dscextract.1:20
+#: ../scripts/transition-check.pl:54 ../scripts/uscan.1:548
+#: ../scripts/wnpp-check.1:25
+#, no-wrap
+msgid "EXIT STATUS"
+msgstr "VALEURS DE RETOUR"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:92
+msgid ""
+"B<debsnap> will return an exit status of 0 if all operations succeeded, 1 if "
+"a fatal error occurred, and 2 if some packages failed to be downloaded but "
+"operations otherwise succeeded as expected. In some cases packages may fail "
+"to be downloaded because they are no longer available on the snapshot "
+"mirror, so any caller should expect this may occur in normal use."
+msgstr ""
+"B<debsnap> renverra une valeur de retour de 0 si toutes les opérations ont "
+"fonctionné, de 1 si une erreur fatale a été rencontrée et de 2 si des "
+"paquets n'ont pas pu être téléchargés mais que les opérations ont toutefois "
+"réussi comme attendu. Dans certains cas, le téléchargement de paquets peut "
+"échouer parce qu'ils ne sont plus disponibles sur le miroir, donc vous "
+"devriez vous attendre à ce que ça arrive en temps normal."
+
+#. type: TP
+#: ../scripts/debsnap.1:94
+#, no-wrap
+msgid "B<debsnap -a amd64 xterm 256-1>"
+msgstr "B<debsnap -a amd64 xterm 256-1>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:97
+msgid ""
+"Download the binary package of a specific xterm version for amd64 "
+"architecture."
+msgstr ""
+"Télécharger une version particulière du paquet binaire xterm pour "
+"l'architecture amd64."
+
+#. type: TP
+#: ../scripts/debsnap.1:97
+#, no-wrap
+msgid "B<debsnap -a armel xterm>"
+msgstr "B<debsnap -a armel xterm>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:100
+msgid ""
+"Download binary packages for all versions of xterm for armel architecture."
+msgstr ""
+"Télécharger toutes les versions des paquets binaires xterm pour "
+"l'architecture armel."
+
+#. type: TP
+#: ../scripts/debsnap.1:100
+#, no-wrap
+msgid "B<debsnap --binary xterm 256-1>"
+msgstr "B<debsnap --binary xterm 256-1>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:103
+msgid ""
+"Download binary packages for a specific xterm version but for all "
+"architectures."
+msgstr ""
+"Télécharger une version particulière des paquets binaires xterm pour toutes "
+"les architectures."
+
+#. type: TP
+#: ../scripts/debsnap.1:103
+#, no-wrap
+msgid "B<debsnap --binary xterm>"
+msgstr "B<debsnap --binary xterm>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:106
+msgid ""
+"Download binary packages for all versions of xterm for all architectures."
+msgstr ""
+"Télécharger toutes les versions des paquets binaires xterm pour toutes les "
+"architectures."
+
+#. type: TP
+#: ../scripts/debsnap.1:106
+#, no-wrap
+msgid "B<aptitude search '~i' -F '%p %V' | while read pkg ver; do debsnap -a $(dpkg-architecture -qDEB_HOST_ARCH) -a all $pkg $ver; done>"
+msgstr "B<aptitude search '~i' -F '%p %V' | while read pkg ver; do debsnap -a $(dpkg-architecture -qDEB_HOST_ARCH) -a all $pkg $ver; done>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:109
+msgid ""
+"Download binary packages of all packages that are installed on the system."
+msgstr ""
+"Télécharger les paquets binaires de tous les paquets installés sur le "
+"système."
+
+#. type: SH
+#: ../scripts/debsnap.1:110 ../scripts/diff2patches.1:28
+#, no-wrap
+msgid "FILES"
+msgstr "FICHIERS"
+
+#. type: TP
+#: ../scripts/debsnap.1:111
+#, no-wrap
+msgid "I</etc/devscripts.conf>"
+msgstr "I</etc/devscripts.conf>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:114
+msgid ""
+"Global devscripts configuration options. Will override hardcoded defaults."
+msgstr ""
+"Options de configuration globales de devscripts. Elles remplaceront les "
+"valeurs par défaut codées en dur."
+
+#. type: TP
+#: ../scripts/debsnap.1:114
+#, no-wrap
+msgid "I<~/.devscripts>"
+msgstr "I<~/.devscripts>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:122
+msgid "B<devscripts>(1), B<devscripts.conf>(5), B<git-debimport>(1)"
+msgstr "B<devscripts>(1), B<devscripts.conf>(5), B<git-debimport>(1)"
+
+#. type: SH
+#: ../scripts/debsnap.1:123 ../doc/edit-patch.1:37
+#: ../doc/suspicious-source.1:51 ../doc/what-patch.1:27
+#: ../doc/wrap-and-sort.1:79
+#, no-wrap
+msgid "AUTHORS"
+msgstr "AUTEURS"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:125
+msgid "David Paleino E<lt>dapal@debian.orgE<gt>"
+msgstr "David Paleino E<lt>dapal@debian.orgE<gt>"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:128
+msgid "Copyright \\(co 2010 David Paleino"
+msgstr "Copyright \\(co 2010 David Paleino"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:132
+msgid ""
+"Permission is granted to copy, distribute and/or modify this document under "
+"the terms of the GNU General Public License, Version 3 or (at your option) "
+"any later version published by the Free Software Foundation."
+msgstr ""
+"Il est permis de copier, distribuer et/ou modifier ce document selon les "
+"termes de la GNU General Public License, version 3 ou (si vous le souhaitez) "
+"toute version ultérieure publiée par la Free Software Foundation."
+
+#. type: Plain text
+#: ../scripts/debsnap.1:135
+msgid ""
+"On Debian systems, the complete text of the GNU General Public License can "
+"be found in I</usr/share/common-licenses/GPL>."
+msgstr ""
+"Sur les systèmes Debian, le texte complet de la GNU General Public License "
+"peut être trouvé dans I</usr/share/common-licenses/GPL>."
+
+#. type: SS
+#: ../scripts/debsnap.1:137
+#, no-wrap
+msgid "Reporting bugs"
+msgstr "Soumettre des rapports de bogue"
+
+#. type: Plain text
+#: ../scripts/debsnap.1:140
+msgid ""
+"The program is part of the devscripts package. Please report bugs using "
+"`B<reportbug devscripts>`"
+msgstr ""
+"Le programme fait partie du paquet devscripts. Veuillez soumettre les "
+"rapports de bogue en utilisant « B<reportbug devscripts> »"
+
+#. type: TH
+#: ../scripts/debuild.1:1
+#, no-wrap
+msgid "DEBUILD"
+msgstr "DEBUILD"
+
+#. type: Plain text
+#: ../scripts/debuild.1:4
+msgid "debuild - build a Debian package"
+msgstr "debuild - Construire un paquet Debian"
+
+#. type: Plain text
+#: ../scripts/debuild.1:7
+msgid ""
+"B<debuild> [I<debuild options>] [I<dpkg-buildpackage options>] [B<--lintian-"
+"opts> I<lintian options>]"
+msgstr ""
+"B<debuild> [I<options_debuild>] [I<options_dpkg-buildpackage>] [B<--lintian-"
+"opts> I<options_lintian>]"
+
+#. type: Plain text
+#: ../scripts/debuild.1:10
+msgid ""
+"B<debuild> [I<debuild options>] B<binary>|B<binary-arch>|B<binary-indep>|"
+"B<clean> ..."
+msgstr ""
+"B<debuild> [I<options_debuild>] B<binary>|B<binary-arch>|B<binary-indep>|"
+"B<clean> ..."
+
+#. type: Plain text
+#: ../scripts/debuild.1:29
+msgid ""
+"B<debuild> creates all the files necessary for uploading a Debian package. "
+"It first runs B<dpkg-buildpackage>, then runs B<lintian> on the I<.changes> "
+"file created (assuming that B<lintian> is installed), and finally signs the "
+"I<.changes> and/or I<.dsc> files as appropriate (using B<debsign>(1) to do "
+"this instead of B<dpkg-buildpackage>(1) itself; all relevant key-signing "
+"options are passed on). Parameters can be passed to B<dpkg-buildpackage> "
+"and B<lintian>, where the parameters to the latter are indicated with the "
+"B<--lintian-opts> option. The allowable options in this case are B<--"
+"lintian> and B<--no-lintian> to force or skip the B<lintian> step, "
+"respectively. The default is to run B<lintian>. There are also various "
+"options available for setting and preserving environment variables, as "
+"described below in the Environment Variables section. In this method of "
+"running B<debuild>, we also save a build log to the file I<../"
+"E<lt>packageE<gt>_E<lt>versionE<gt>_E<lt>archE<gt>.build>."
+msgstr ""
+"B<debuild> crée tous les fichiers nécessaires pour envoyer un paquet à "
+"l'archive Debian. Il exécute dans un premier temps B<dpkg-buildpackage>, "
+"puis B<lintian> avec le fichier I<.changes> créé (en supposant que "
+"B<lintian> est installé), enfin il signe les fichiers I<.changes> et/ou B<."
+"dsc> appropriés (en utilisant B<debsign>(1) plutôt que B<dpkg-"
+"buildpackage>(1) ; toutes les options relatives à la signature lui sont "
+"passées). Des paramètres peuvent être fournis à B<dpkg-buildpackage> et "
+"B<lintian>, en utilisant les paramètres de l'option B<--lintian-opts> pour "
+"ce dernier. Les options B<--lintian> et B<--no-lintian> permettent de forcer "
+"ou d'empêcher l'exécution de B<lintian>. Par défaut, B<lintian> est exécuté. "
+"Il y a également d'autres options permettant de définir ou conserver des "
+"variables d'environnement, comme décrit dans la section B<VARIABLES "
+"D'ENVIRONNEMENT> ci-dessous. Cette façon d'exécuter B<debuild> permet "
+"également d'obtenir un journal de la construction du paquet dans I<../"
+"E<lt>paquetE<gt>_E<lt>versionE<gt>_E<lt>archE<gt>.build>."
+
+#. type: Plain text
+#: ../scripts/debuild.1:46
+msgid ""
+"An alternative way of using B<debuild> is to use one or more of the "
+"parameters B<binary>, B<binary-arch>, B<binary-indep> and B<clean>, in which "
+"case B<debuild> will attempt to gain root privileges and then run I<debian/"
+"rules> with the given parameters. A B<--rootcmd=>I<gain-root-command> or B<-"
+"r>I<gain-root-command> option may be used to specify a method of gaining "
+"root privileges. The I<gain-root-command> is likely to be one of "
+"I<fakeroot>, I<sudo> or I<super>. See below for further discussion of this "
+"point. Again, the environment preservation options may be used. In this "
+"case, B<debuild> will also attempt to run B<dpkg-checkbuilddeps> first; this "
+"can be explicitly requested or switched off using the options B<-D> and B<-"
+"d> respectively. Note also that if either of these or a B<-r> option is "
+"specified in the configuration file option "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS>, then it will be recognised even in this "
+"method of invocation of B<debuild>."
+msgstr ""
+"Une autre façon d'utiliser B<debuild> est d'utiliser un (ou plus) des "
+"paramètres B<binary>, B<binary-arch>, B<binary-indep> et B<clean>. Dans ce "
+"cas, B<debuild> cherchera à obtenir les droits du superutilisateur et à "
+"exécuter I<debian/rules> avec ce(s) paramètre(s). Les options B<--"
+"rootcmd>=I<commande_pour_devenir_superutilisateur> ou B<-"
+"r>I<commande_pour_devenir_superutilisateur> peuvent être utilisées. La "
+"I<commande_pour_devenir_superutilisateur> est en règle générale une de "
+"celles-ci : I<fakeroot>, I<sudo> ou I<super>. Lisez ci-dessous pour une "
+"discussion plus approfondie sur ce point. Encore une fois, les options "
+"permettant de préserver l'environnement peuvent être utilisées. Dans ce cas, "
+"B<debuild> cherchera également à exécuter dans un premier temps B<dpkg-"
+"checkbuilddeps> ; cela peut être explicitement demandé ou empêché avec les "
+"options B<-D> et B<-d>, respectivement. Remarquez également que si une de "
+"ces options ou si l'option B<-r> est indiquée dans la variable "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> du fichier de configuration, elle sera "
+"reconnue, même avec cette façon d'exécuter B<debuild>."
+
+#. type: Plain text
+#: ../scripts/debuild.1:49
+msgid ""
+"B<debuild> also reads the B<devscripts> configuration files as described "
+"below. This allows default options to be given."
+msgstr ""
+"B<debuild> lit aussi les fichiers de configuration de B<devscripts> décrits "
+"ci-dessous. Cela permet de fournir des options à utiliser par défaut."
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/debuild.1:61
+msgid ""
+"In common with several other scripts in the B<devscripts> package, "
+"B<debuild> will climb the directory tree until it finds a I<debian/"
+"changelog> file before attempting to build the package. As a safeguard "
+"against stray files causing potential problems, it will examine the name of "
+"the parent directory once it finds the I<debian/changelog> file, and check "
+"that the directory name corresponds to the package name. Precisely how it "
+"does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and B<--"
+"check-dirname-regex>."
+msgstr ""
+"Comme plusieurs autres scripts du paquet B<devscripts>, B<debuild> parcourt "
+"une arborescence de répertoires jusqu'à trouver un fichier I<debian/"
+"changelog> avant de construire le paquet. Pour éviter les problèmes posés "
+"par les fichiers égarés, il examine le nom du répertoire parent une fois le "
+"fichier I<debian/changelog> trouvé, et vérifie que le nom du répertoire "
+"correspond au nom du paquet. La façon précise utilisée est contrôlée par les "
+"deux variables du fichier de configuration B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> "
+"et B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, et les options en ligne de commande "
+"associées B<--check-dirname-level> et B<--check-dirname-regex>."
+
+#. type: Plain text
+#: ../scripts/debuild.1:86 ../scripts/uscan.1:348
+msgid ""
+"The directory name is checked by testing whether the current directory name "
+"(as determined by B<pwd>(1)) matches the regex given by the configuration "
+"file option B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> or by the command line option "
+"B<--check-dirname-regex> I<regex>. Here I<regex> is a Perl regex (see "
+"B<perlre>(3perl)), which will be anchored at the beginning and the end. If "
+"I<regex> contains a '/', then it must match the full directory path. If "
+"not, then it must match the full directory name. If I<regex> contains the "
+"string \\'PACKAGE', this will be replaced by the source package name, as "
+"determined from the I<changelog>. The default value for the regex is: "
+"\\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and PACKAGE-"
+"version."
+msgstr ""
+"Le nom du répertoire est vérifié en testant si le nom du répertoire actuel "
+"(donné par B<pwd>(1)) correspond à l'expression rationnelle donnée par la "
+"variable B<DEVSCRIPTS_CHECK_DIRNAME_REGEX> du fichier de configuration ou "
+"par l'option B<--check-dirname-regex> I<regex>. Il s'agit d'une expression "
+"rationnelle Perl (voir B<perlre>(1)), qui sera ancrée à son début et à sa "
+"fin. Si elle contient un « / », alors elle doit correspondre au chemin "
+"complet. Si elle contient la chaîne « PACKAGE », cette chaîne sera remplacée "
+"par le nom du paquet source déterminé par le fichier I<changelog>. La valeur "
+"par défaut de cette expression rationnelle est « PACKAGE(-.+)? », ce qui "
+"correspond aux répertoires nommés PACKAGE ou PACKAGE-version."
+
+#. type: Plain text
+#: ../scripts/debuild.1:94
+msgid ""
+"As environment variables can affect the building of a package, often "
+"unintentionally, B<debuild> sanitises the environment by removing all "
+"environment variables except for B<TERM>, B<HOME>, B<LOGNAME>, B<GNUPGHOME>, "
+"B<PGPPATH>, B<GPG_AGENT_INFO>, B<FAKEROOTKEY>, B<DEB_>I<*>, the (B<C>, "
+"B<CPP>, B<CXX>, B<LD> and B<F>)B<FLAGS> variables and their B<_APPEND> "
+"counterparts and the locale variables B<LANG> and B<LC_>I<*>. B<TERM> is "
+"set to `dumb' if it is unset, and B<PATH> is set to \"/usr/sbin:/usr/bin:/"
+"sbin:/bin:/usr/bin/X11\"."
+msgstr ""
+"Comme les variables d'environnement peuvent affecter la construction d'un "
+"paquet, souvent de façon involontaire, B<debuild> nettoie l'environnement en "
+"enlevant toutes les variables d'environnement, à l'exception de B<TERM>, "
+"B<HOME>, B<LOGNAME>, B<GNUPGHOME>, B<PGPPATH>, B<GPG_AGENT_INFO>, "
+"B<FAKEROOTKEY>, B<DEB_>I<*>, des variables (B<C>, B<CPP>, B<CXX>, B<LD> et "
+"B<F>)B<FLAGS> et les variables B<_APPEND> associées, ainsi que les variables "
+"pour les paramètres régionaux B<LANG> et B<LC_>I<*>. La variable B<TERM> "
+"vaut « dumb » si elle n'est pas définie, et B<PATH> est définie à « /usr/"
+"sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 »."
+
+#. type: Plain text
+#: ../scripts/debuild.1:105
+msgid ""
+"If a particular environment variable is required to be passed through "
+"untouched to the build process, this may be specified by using a B<--"
+"preserve-envvar> I<envvar> (which can also be written as B<-e> I<envvar> "
+"option). The environment may be left untouched by using the B<--preserve-"
+"env> option. However, even in this case, the B<PATH> will be set to the "
+"sane value described above. The B<only> way to prevent B<PATH> from being "
+"reset is to specify a B<--preserve-envvar PATH> option. But you are warned "
+"that using programs from non-standard locations can easily result in the "
+"package being broken, as it will not be able to be built on standard systems."
+msgstr ""
+"Si une variable d'environnement ne doit pas être modifiée pour la "
+"construction d'un paquet, il est possible d'utiliser B<--preserve-envvar> "
+"I<var> (ou B<-e> I<var>). L'environnement peut aussi être préservé en "
+"utilisant l'option B<--preserve-env>. Cependant, même dans ce cas le B<PATH> "
+"est remis à la valeur précisée ci-dessus. Le B<seul> moyen d'empêcher le "
+"B<PATH> d'être remis à zéro est d'utiliser une option B<--preserve-envvar "
+"PATH>. Mais soyez conscient qu'utiliser des programmes d'un emplacement non "
+"standard peut facilement résulter en un paquet cassé, puisqu'il ne sera pas "
+"possible de le construire sur des systèmes standards."
+
+#. type: Plain text
+#: ../scripts/debuild.1:109
+msgid ""
+"Note that one may add directories to the beginning of the sanitised B<PATH>, "
+"using the B<--prepend-path> option. This is useful when one wishes to use "
+"tools such as B<ccache> or B<distcc> for building."
+msgstr ""
+"Remarquez que des répertoire peuvent être ajoutés au début de la variable "
+"d'environnement B<PATH> en utilisant l'option B<--prepend-path>. C'est utile "
+"quand on veut utiliser des outils comme B<ccache> ou B<distcc> pour la "
+"construction d'un paquet."
+
+#. type: Plain text
+#: ../scripts/debuild.1:114
+msgid ""
+"It is also possible to avoid having to type something like I<FOO>B<=>I<bar "
+">B<debuild -e >I<FOO> by writing B<debuild -e >I<FOO>B<=>I<bar> or the long "
+"form B<debuild --set-envvar >I<FOO>B<=>I<bar>."
+msgstr ""
+"Il est également possible d'éviter d'avoir à écrire quelque chose comme "
+"I<TOTO>=I<titi> B<debuild -e> I<TOTO> en écrivant B<debuild -e> "
+"I<TOTO>=I<titi> ou la forme longue B<debuild --set-envvar> I<TOTO>=I<titi>."
+
+#. type: SH
+#: ../scripts/debuild.1:114
+#, no-wrap
+msgid "SUPERUSER REQUIREMENTS"
+msgstr "OBTENTION DES DROITS DU SUPERUTILISATEUR"
+
+#. type: Plain text
+#: ../scripts/debuild.1:124
+msgid ""
+"B<debuild> needs to be run as superuser to function properly. There are "
+"three fundamentally different ways to do this. The first, and preferable, "
+"method is to use some root-gaining command. The best one to use is probably "
+"B<fakeroot>(1), since it does not involve granting any genuine privileges. "
+"B<super>(1) and B<sudo>(1) are also possibilities. If no B<-r> (or B<--"
+"rootcmd>) option is given (and recall that B<dpkg-buildpackage> also accepts "
+"a B<-r> option) and neither of the following methods is used, then B<-"
+"rfakeroot> will silently be assumed."
+msgstr ""
+"B<debuild> doit être exécuté en tant que superutilisateur pour fonctionner "
+"correctement. Il y a trois façons fondamentalement différentes de faire "
+"cela. La première, et celle qui est conseillée, est d'utiliser une commande "
+"permettant de devenir superutilisateur. La meilleure d'entre elles est "
+"probablement B<fakeroot>(1), puisqu'elle ne nécessite pas d'accorder "
+"véritablement de droits. B<super>(1) et B<sudo>(1) sont d'autres "
+"possibilités. Si aucune option B<-r> (ou B<--rootcmd>) n'est donnée "
+"(rappelez-vous que B<dpkg-buildpackage> accepte également une option B<-r>) "
+"et qu'aucune des méthodes suivantes n'est utilisée, alors B<-rfakeroot> sera "
+"implicitement considérée."
+
+#. type: Plain text
+#: ../scripts/debuild.1:130
+msgid ""
+"The second method is to use some command such as B<su>(1) to become root, "
+"and then to do everything as root. Note, though, that B<lintian> will abort "
+"if it is run as root or setuid root; this can be overcome using the B<--"
+"allow-root> option of B<lintian> if you know what you are doing."
+msgstr ""
+"La deuxième méthode est d'utiliser une commande comme B<su>(1) pour devenir "
+"superutilisateur, et ensuite de réaliser toutes les opérations en tant que "
+"superutilisateur. Remarquez cependant que B<lintian> s'arrêtera s'il est "
+"exécuté en tant que superutilisateur ou setuid root ; cela peut être "
+"contourné en utilisant l'option B<--allow-root> de B<lintian> si vous êtes "
+"sûr de vous."
+
+#. type: Plain text
+#: ../scripts/debuild.1:146
+msgid ""
+"The third possible method is to have B<debuild> installed as setuid root. "
+"This is not the default method, and will have to be installed as such by the "
+"system administrator. It must also be realised that anyone who can run "
+"B<debuild> as root or setuid root has B<full access to the whole machine>. "
+"This method is therefore not recommended, but will work. B<debuild> could "
+"be installed with mode 4754, so that only members of the owning group could "
+"run it. A disadvantage of this method would be that other users would then "
+"not be able to use the program. There are many other variants of this "
+"option involving multiple copies of B<debuild>, or the use of programs such "
+"as B<sudo> or B<super> to grant root privileges to users selectively. If "
+"the sysadmin wishes to do this, she should use the B<dpkg-statoverride> "
+"program to change the permissions of I</usr/bin/debuild>. This will ensure "
+"that these permissions are preserved across upgrades."
+msgstr ""
+"La troisième méthode consiste à installer B<debuild> setuid root. Ce n'est "
+"pas la méthode par défaut, et nécessitera l'installation en tant que tel par "
+"l'administrateur système. Il faut aussi être conscient que toute personne "
+"pouvant exécuter B<debuild> en tant que superutilisateur ou setuid root a "
+"B<un accès complet au système>. Cette méthode n'est pas recommandée, mais "
+"fonctionnera. B<debuild> peut être installé avec les permissions 4754, de "
+"façon à ce que seuls les membres de son groupe puissent l'exécuter. "
+"L'inconvénient de cette méthode est que les autres utilisateurs ne pourront "
+"plus alors utiliser ce programme. D'autres variantes consistent à avoir "
+"plusieurs copies de B<debuild> ou d'utiliser des programmes comme B<sudo> ou "
+"B<super> pour accorder sélectivement des droits du superutilisateur à "
+"certains utilisateurs. Si l'administrateur veut utiliser cette méthode, il "
+"devra utiliser le programme B<dpkg-statoverride> pour modifier les "
+"permissions de I</usr/bin/debuild>. Cela permettra de conserver les "
+"permissions après les mises à jour."
+
+#. type: SH
+#: ../scripts/debuild.1:146
+#, no-wrap
+msgid "HOOKS"
+msgstr "POINTS D'ACCROCHE"
+
+#. type: Plain text
+#: ../scripts/debuild.1:153
+msgid ""
+"B<debuild> supports a number of hooks when running B<dpkg-buildpackage>. "
+"Note that if any of the hooks from B<clean-hook> to B<final-clean> "
+"(inclusive) are used, B<debuild> will emulate some sections of the B<dpkg-"
+"buildpackage> process rather than running them directly, as B<dpkg-"
+"buildpackage> does not support hooks. The available hooks are as follows:"
+msgstr ""
+"B<debuild> gère un certain nombre de points d'accroche (« hook ») quand il "
+"exécute B<dpkg-buildpackage>. Remarquez que si un des points d'accroche "
+"entre B<clean-hook> et B<final-hook> (inclus) est utilisé, B<debuild> "
+"émulera certaines sections du processus B<dpkg-buildpackage> plutôt que de "
+"les exécuter directement, puisque B<dpkg-buildpackage> n'a pas de point "
+"d'accroche. Les points d'accroche disponibles sont les suivants :"
+
+#. type: TP
+#: ../scripts/debuild.1:153
+#, no-wrap
+msgid "B<dpkg-buildpackage-hook>"
+msgstr "B<dpkg-buildpackage-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:156
+msgid ""
+"Run before B<dpkg-buildpackage> begins by calling B<dpkg-checkbuilddeps>."
+msgstr ""
+"S'exécute avant le début de B<dpkg-buildpackage> en appelant B<dpkg-"
+"checkbuilddeps>."
+
+#. type: TP
+#: ../scripts/debuild.1:156
+#, no-wrap
+msgid "B<clean-hook>"
+msgstr "B<clean-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:161
+msgid ""
+"Run before B<dpkg-buildpackage> runs B<debian/rules clean> to clean the "
+"source tree. (Run even if the tree is not being cleaned because B<-nc> is "
+"used.)"
+msgstr ""
+"S'exécute avant que B<dpkg-buildpackage> lance la règle B<clean> du fichier "
+"I<debian/rules> pour nettoyer le source. (S'exécute même si le source n'est "
+"pas nettoyé car B<-nc> est utilisée.)"
+
+#. type: TP
+#: ../scripts/debuild.1:161
+#, no-wrap
+msgid "B<dpkg-source-hook>"
+msgstr "B<dpkg-source-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:165
+msgid ""
+"Run after cleaning the tree and before running B<dpkg-source>. (Run even if "
+"B<dpkg-source> is not being called because B<-b>, B<-B>, or B<-A> is used.)"
+msgstr ""
+"S'exécute après le nettoyage du source et avant l'exécution de B<dpkg-"
+"source> (s'exécute même si B<dpkg-source> n'est pas appelé car B<-b>, B<-B>, "
+"ou B<-A> est utilisée)."
+
+#. type: TP
+#: ../scripts/debuild.1:165
+#, no-wrap
+msgid "B<dpkg-build-hook>"
+msgstr "B<dpkg-build-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:170
+msgid ""
+"Run after B<dpkg-source> and before calling B<debian/rules build>. (Run "
+"even if this is a source-only build, so B<debian/rules build> is not being "
+"called.)"
+msgstr ""
+"S'exécute après B<dpkg-source> et avant l'appel de la règle B<build> du "
+"fichier I<debian/rules> (s'exécute même si ce n'est qu'une construction du "
+"paquet source, donc que la règle B<build> du fichier I<debian/rules> n'est "
+"pas appelée)."
+
+#. type: TP
+#: ../scripts/debuild.1:170
+#, no-wrap
+msgid "B<dpkg-binary-hook>"
+msgstr "B<dpkg-binary-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:174
+msgid ""
+"Run between B<debian/rules build> and B<debian/rules binary>(B<-arch>). Run "
+"B<only> if a binary package is being built."
+msgstr ""
+"S'exécute entre les appels aux règles B<build> et B<binary>(B<-arch>) du "
+"fichier I<debian/rules>. Ne s'exécute B<que> si un paquet binaire est "
+"construit."
+
+#. type: TP
+#: ../scripts/debuild.1:174
+#, no-wrap
+msgid "B<dpkg-genchanges-hook>"
+msgstr "B<dpkg-genchanges-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:178
+msgid ""
+"Run after the binary package is built and before calling B<dpkg-genchanges>."
+msgstr ""
+"S'exécute seulement après la construction du paquet et avant l'appel à "
+"B<dpkg-genchanges>."
+
+#. type: TP
+#: ../scripts/debuild.1:178
+#, no-wrap
+msgid "B<final-clean-hook>"
+msgstr "B<final-clean-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:183
+msgid ""
+"Run after B<dpkg-genchanges> and before the final B<debian/rules clean>. "
+"(Run even if we are not cleaning the tree post-build, which is the default.)"
+msgstr ""
+"S'exécute après B<dpkg-genchanges> et avant l'appel final à la règle "
+"B<clean> du fichier I<debian/rules> (s'exécute même si le source n'est pas "
+"nettoyé après la construction, ce qui est le comportement par défaut)."
+
+#. type: TP
+#: ../scripts/debuild.1:183
+#, no-wrap
+msgid "B<lintian-hook>"
+msgstr "B<lintian-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:187
+msgid ""
+"Run (once) before calling B<lintian>. (Run even if we are not calling "
+"B<lintian>.)"
+msgstr ""
+"S'exécute (une fois) avant l'appel à B<lintian> (s'exécute même si aucun de "
+"ces programmes n'est appelé)."
+
+#. type: TP
+#: ../scripts/debuild.1:187
+#, no-wrap
+msgid "B<signing-hook>"
+msgstr "B<signing-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:191
+msgid ""
+"Run after calling B<lintian> before any signing takes place. (Run even if "
+"we are not signing anything.)"
+msgstr ""
+"S'exécute seulement après l'appel à B<lintian> et avant la signature "
+"(s'exécute même si rien n'est signé)."
+
+#. type: TP
+#: ../scripts/debuild.1:191
+#, no-wrap
+msgid "B<post-dpkg-buildpackage-hook>"
+msgstr "B<post-dpkg-buildpackage-hook>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:194
+msgid "Run after everything has finished."
+msgstr "S'exécute quand tout est fini."
+
+#. type: Plain text
+#: ../scripts/debuild.1:209
+msgid ""
+"A hook command can be specified either in the configuration file as, for "
+"example, DEBUILD_SIGNING_HOOK='foo' (note the hyphens change into "
+"underscores!) or as a command line option B<--signing-hook-foo>. The "
+"command will have certain percent substitutions made on it: B<%%> will be "
+"replaced by a single B<%> sign, B<%p> will be replaced by the package name, "
+"B<%v> by the package version number, B<%s> by the source version number, B<"
+"%u> by the upstream version number. Neither B<%s> nor B<%u> will contain an "
+"epoch. B<%a> will be B<1> if the immediately following action is to be "
+"performed and B<0> if not (for example, in the B<dpkg-source> hook, B<%a> "
+"will become B<1> if B<dpkg-source> is to be run and B<0> if not). Then it "
+"will be handed to the shell to deal with, so it can include redirections and "
+"stuff. For example, to only run the B<dpkg-source> hook if B<dpkg-source> "
+"is to be run, the hook could be something like: \"if [ %a -eq 1 ]; then ...; "
+"fi\"."
+msgstr ""
+"Une commande de point d'accroche peut être définie soit dans le fichier de "
+"configuration, par exemple avec DEBUILD_SIGNING_HOOK='toto' (notez que les "
+"tirets ont été modifiés en caractères de soulignement), ou avec l'option en "
+"ligne de commande B<--signing-hook-foo>. La commande sera en partie "
+"modifiée : B<%%> deviendra un signe B<%> simple, B<%p> sera remplacé par le "
+"nom du paquet, B<%v> par le numéro de version du paquet, B<%s> par le numéro "
+"de version du source et B<%u> par le numéro de version amont. Ni B<%s> ni B<"
+"%u> ne contiendra de temps absolu (« epoch »). B<%a> sera B<1> si l'action "
+"suivante doit être effectuée et B<0> dans le cas contraire (par exemple, "
+"dans le crochet B<dpkg-source>, B<%a> sera B<1> si B<dpkg-source> doit être "
+"lancé et B<0> sinon). Elle sera alors passée à l'interpréteur de commandes "
+"pour être traitée, et peut donc inclure des redirections ou des choses du "
+"genre. Par exemple, pour ne lancer que le crochet B<dpkg-source> si B<dpkg-"
+"source> doit être exécutée, le crochet peut ressemble à ceci : « if [ %a -eq "
+"1 ]; then ...; fi »."
+
+#. type: Plain text
+#: ../scripts/debuild.1:213
+msgid ""
+"B<Please take care with hooks>, as misuse of them can lead to packages which "
+"FTBFS (fail to build from source). They can be useful for taking snapshots "
+"of things or the like."
+msgstr ""
+"B<Soyez prudent avec les points d'accroche>, puisqu'une mauvaise utilisation "
+"peut empêcher le paquet de se compiler depuis le source. Ils peuvent être "
+"utiles pour prendre des instantanés, etc."
+
+#. type: Plain text
+#: ../scripts/debuild.1:219
+msgid ""
+"Finally, only B<dpkg-buildpackage-hook> and the hooks from B<lintian-hook> "
+"onwards can be used if B<dpkg-cross> is installed. (This is because "
+"internally, B<debuild> reimplements B<dpkg-buildpackage>, but it does not "
+"attempt to reimplement the B<dpkg-cross> replacement of this script.)"
+msgstr ""
+"Enfin, seuls B<dpkg-buildpackage-hook> et les points d'accroche avant "
+"B<lintian-hook> peuvent être utilisés si B<dpkg-cross> est installé (cela "
+"est dû au fait que B<debuild> réimplémente en interne B<dpkg-buildpackage>, "
+"mais n'essaie pas de réimplémenter le remplacement de B<dpkg-cross> pour ce "
+"script)."
+
+#. type: Plain text
+#: ../scripts/debuild.1:221
+msgid "For details, see above."
+msgstr "Plus de précisions sont fournies ci-après."
+
+#. type: Plain text
+#: ../scripts/debuild.1:228
+msgid "Command to gain root (or fake root) privileges."
+msgstr "Commande pour obtenir (ou simuler) les droits du superutilisateur."
+
+#. type: Plain text
+#: ../scripts/debuild.1:231
+msgid "Do not clean the environment, except for PATH."
+msgstr "Ne pas nettoyer l'environnement, à l'exception du PATH."
+
+#. type: Plain text
+#: ../scripts/debuild.1:234
+msgid "Do not clean the I<var> variable from the environment."
+msgstr "Ne pas nettoyer la variable d'environnement I<var>."
+
+#. type: Plain text
+#: ../scripts/debuild.1:238
+msgid ""
+"If I<var> ends in an asterisk (\"*\") then all variables with names that "
+"match the portion of I<var> before the asterisk will be preserved."
+msgstr ""
+"Si I<var> se termine par un astérisque (« * ») alors toutes les variables "
+"qui ont une correspondance avec la portion de I<var> avant l'astérisque "
+"seront préservées."
+
+#. type: Plain text
+#: ../scripts/debuild.1:242
+msgid ""
+"Set the environment variable I<var> to I<value> and do not remove it from "
+"the environment."
+msgstr ""
+"Définir la variable d'environnement I<var> à I<valeur> et ne l'enlève pas de "
+"l'environnement."
+
+#. type: TP
+#: ../scripts/debuild.1:242
+#, no-wrap
+msgid "B<--prepend-path=>I<value >"
+msgstr "B<--prepend-path=>I<valeur>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:246
+msgid "Once the normalized PATH has been set, prepend I<value> to it."
+msgstr "Une fois que PATH a été normalisé, ajouter I<valeur> au début."
+
+#. type: TP
+#: ../scripts/debuild.1:246
+#, no-wrap
+msgid "B<--lintian>"
+msgstr "B<--lintian>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:251
+msgid ""
+"Run B<lintian> after B<dpkg-buildpackage>. This is the default behaviour, "
+"and it overrides any configuration file directive to the contrary."
+msgstr ""
+"Exécuter B<lintian> après B<dpkg-buildpackage>. C'est le comportement par "
+"défaut. Cette option permet de remplacer une directive contraire placée dans "
+"un fichier de configuration."
+
+#. type: TP
+#: ../scripts/debuild.1:251
+#, no-wrap
+msgid "B<--no-lintian>"
+msgstr "B<--no-lintian>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:254
+msgid "Do not run B<lintian> after B<dpkg-buildpackage>."
+msgstr "Ne pas exécuter B<lintian> après B<dpkg-buildpackage>."
+
+#. type: TP
+#: ../scripts/debuild.1:254
+#, no-wrap
+msgid "B<--no-tgz-check>"
+msgstr "B<--no-tgz-check>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:259
+msgid ""
+"Even if we're running B<dpkg-buildpackage> and the version number has a "
+"Debian revision, do not check that the I<.orig.tar.gz> file or I<.orig> "
+"directory exists before starting the build."
+msgstr ""
+"Même si B<dpkg-buildpackage> est exécuté et que le numéro de version possède "
+"une révision pour Debian, ne pas vérifier si le fichier I<.orig.tar.gz> ou "
+"le répertoire I<.orig> existe avant de démarrer la construction."
+
+#. type: TP
+#: ../scripts/debuild.1:259
+#, no-wrap
+msgid "B<--tgz-check>"
+msgstr "B<--tgz-check>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:264
+msgid ""
+"If we're running B<dpkg-buildpackage> and the version number has a Debian "
+"revision, check that the I<.orig.tar.gz> file or I<.orig> directory exists "
+"before starting the build. This is the default behaviour."
+msgstr ""
+"Si B<dpkg-buildpackage> est exécuté et que le numéro de version possède une "
+"révision pour Debian, vérifier si le fichier I<.orig.tar.gz> ou le "
+"répertoire I<.orig> existe avant de démarrer la construction. C'est le "
+"comportement par défaut."
+
+#. type: TP
+#: ../scripts/debuild.1:264
+#, no-wrap
+msgid "B<--username> I<username>"
+msgstr "B<--username> I<nom_utilisateur>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:268
+msgid ""
+"When signing, use B<debrsign> instead of B<debsign>. I<username> specifies "
+"the credentials to be used."
+msgstr ""
+"Pour les signatures, utiliser B<debrsign> plutôt que B<debsign>. "
+"I<nom_utilisateur> indique l'identifiant à utiliser."
+
+#. type: TP
+#: ../scripts/debuild.1:268
+#, no-wrap
+msgid "B<-->I<foo>B<-hook>=I<hook>"
+msgstr "B<-->I<toto>B<-hook>=I<accroche>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:272
+msgid ""
+"Set a hook as described above. If I<hook> is blank, this unsets the hook."
+msgstr ""
+"Définir un point d'accroche comme décrit ci-dessus. Si I<accroche> est "
+"laissé blanc, le point d'accroche est annulé."
+
+#. type: TP
+#: ../scripts/debuild.1:272
+#, no-wrap
+msgid "B<--clear-hooks>"
+msgstr "B<--clear-hooks>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:276
+msgid ""
+"Clears all hooks. They may be reinstated by later command line options."
+msgstr ""
+"Supprimer tous les points d'accroche. Ils peuvent être réinstaurés par des "
+"options ultérieures en ligne de commande."
+
+#. type: Plain text
+#: ../scripts/debuild.1:287
+msgid "Do not run B<dpkg-checkbuilddeps> to check build dependencies."
+msgstr ""
+"Ne pas exécuter B<dpkg-checkbuilddeps> pour vérifier les dépendances de "
+"construction du paquet (« build dependencies »)."
+
+#. type: TP
+#: ../scripts/debuild.1:287
+#, no-wrap
+msgid "B<-D>"
+msgstr "B<-D>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:290
+msgid "Run B<dpkg-checkbuilddeps> to check build dependencies."
+msgstr ""
+"Exécuter B<dpkg-checkbuilddeps> pour vérifier les dépendances de "
+"construction."
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/debuild.1:298
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. Command "
+"line options can be used to override some of these configuration file "
+"settings, otherwise the B<--no-conf> option can be used to prevent reading "
+"these files. Environment variable settings are ignored when these "
+"configuration files are read. The currently recognised variables are:"
+msgstr ""
+"Les deux fichiers de configuration I</etc/devscripts.conf> et I<~/."
+"devscripts> sont évalués dans cet ordre par un interpréteur de commandes "
+"(« shell ») pour placer les variables de configuration. Des options de ligne "
+"de commande peuvent être utilisées pour neutraliser les paramètres des "
+"fichiers de configuration. Les paramètres des variables d'environnement sont "
+"ignorés à cette fin. Si la première option donnée en ligne de commande est "
+"B<--noconf>, alors ces fichiers ne sont pas évalués. Les variables "
+"actuellement identifiées sont :"
+
+#. type: TP
+#: ../scripts/debuild.1:298
+#, no-wrap
+msgid "B<DEBUILD_PRESERVE_ENV>"
+msgstr "B<DEBUILD_PRESERVE_ENV>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:302
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--preserve-env> "
+"command line parameter being used."
+msgstr ""
+"Lui attribuer la valeur I<yes> équivaut à utiliser l'option B<--preserve-"
+"env>."
+
+#. type: TP
+#: ../scripts/debuild.1:302
+#, no-wrap
+msgid "B<DEBUILD_PRESERVE_ENVVARS>"
+msgstr "B<DEBUILD_PRESERVE_ENVVARS>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:307
+msgid ""
+"Which environment variables to preserve. This should be a comma-separated "
+"list of variables. This corresponds to using possibly multiple B<--preserve-"
+"envvar> or B<-e> options."
+msgstr ""
+"Définit les variables d'environnement à conserver. Elle est constituée d'une "
+"liste de variables d'environnement séparées par des virgules. Cela "
+"correspond à utiliser plusieurs fois les options B<--preserve-envvar> ou B<-"
+"e>."
+
+#. type: TP
+#: ../scripts/debuild.1:307
+#, no-wrap
+msgid "B<DEBUILD_SET_ENVVAR_>I<var>B<=>I<value>"
+msgstr "B<DEBUILD_SET_ENVVAR_>I<var>=I<valeur>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:310
+msgid "This corresponds to B<--set-envvar=>I<var>B<=>I<value>."
+msgstr "Équivaut à utiliser B<--set-envvar>=I<var>=I<value>."
+
+#. type: TP
+#: ../scripts/debuild.1:310
+#, no-wrap
+msgid "B<DEBUILD_PREPEND_PATH>"
+msgstr "B<DEBUILD_PREPEND_PATH>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:313
+msgid "This corresponds to B<--prepend-path>."
+msgstr "Équivaut à utiliser B<--prepend-path>."
+
+#. type: TP
+#: ../scripts/debuild.1:313
+#, no-wrap
+msgid "B<DEBUILD_ROOTCMD>"
+msgstr "B<DEBUILD_ROOTCMD>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:317
+msgid "Setting this variable to I<prog> is the equivalent of B<-r>I<prog>."
+msgstr "Lui attribuer la valeur I<prog> équivaut à utiliser B<-r>I<prog>."
+
+#. type: TP
+#: ../scripts/debuild.1:317
+#, no-wrap
+msgid "B<DEBUILD_TGZ_CHECK>"
+msgstr "B<DEBUILD_TGZ_CHECK>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:321
+msgid ""
+"Setting this variable to I<no> is the same as the B<--no-tgz-check> command "
+"line option."
+msgstr ""
+"Lui attribuer la valeur I<no> équivaut à utiliser l'option B<--no-tgz-check> "
+"en ligne de commande."
+
+#. type: TP
+#: ../scripts/debuild.1:321
+#, no-wrap
+msgid "B<DEBUILD_SIGNING_USERNAME>"
+msgstr "B<DEBUILD_SIGNING_USERNAME>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:325
+msgid ""
+"Setting this variable is the same as using the B<--username> command line "
+"option."
+msgstr ""
+"Définir cette variable équivaut à utiliser l'option B<--username> en ligne "
+"de commande."
+
+#. type: TP
+#: ../scripts/debuild.1:325
+#, no-wrap
+msgid "B<DEBUILD_DPKG_BUILDPACKAGE_OPTS>"
+msgstr "B<DEBUILD_DPKG_BUILDPACKAGE_OPTS>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:333
+msgid ""
+"These are options which should be passed to the invocation of B<dpkg-"
+"buildpackage>. They are given before any command-line options. Due to "
+"issues of shell quoting, if a word containing spaces is required as a single "
+"option, extra quotes will be required. For example, to ensure that your own "
+"GPG key is always used, even for sponsored uploads, the configuration file "
+"might contain the line:"
+msgstr ""
+"Voici les options qui devraient être passées à l'invocation de B<dpkg-"
+"buildpackage>. Elles sont données avant toute option en ligne de commande. À "
+"cause des problèmes de guillemets avec les interpréteurs de commandes, pour "
+"les paramètres contenant un espace, il sera nécessaire d'ajouter des "
+"guillemets supplémentaires. Par exemple, pour forcer à toujours utiliser "
+"votre clef GPG, même pour les envois parrainés (« sponsored upload »), le "
+"fichier de configuration pourra contenir :"
+
+#. type: Plain text
+#: ../scripts/debuild.1:336
+#, no-wrap
+msgid "DEBUILD_DPKG_BUILDPACKAGE_OPTS=\"-k'Julian Gilbey E<lt>jdg@debian.orgE<gt>' -sa\"\n"
+msgstr "DEBUILD_DPKG_BUILDPACKAGE_OPTS=\"-k'Julian Gilbey E<lt>jdg@debian.orgE<gt>' -sa\"\n"
+
+#. type: Plain text
+#: ../scripts/debuild.1:341
+msgid ""
+"which gives precisely two options. Without the extra single quotes, B<dpkg-"
+"buildpackage> would reasonably complain that I<Gilbey> is an unrecognised "
+"option (it doesn't start with a B<-> sign)."
+msgstr ""
+"ce qui fournit exactement deux options. Sans les guillemets supplémentaires, "
+"B<dpkg-buildpackage> se serait plaint (à juste titre) que I<Gilbey> n'est "
+"pas une option reconnue (elle ne commence pas par un signe B<->)."
+
+#. type: Plain text
+#: ../scripts/debuild.1:346
+msgid ""
+"Also, if this option contains any B<-r>, B<-d> or B<-D> options, these will "
+"always be taken account of by B<debuild>. Note that a B<-r> option in this "
+"variable will override the setting in B<DEBUILD_ROOTCMD>."
+msgstr ""
+"Également, si ce paramètre contient une (ou plusieurs) des options B<-r>, B<-"
+"d> ou B<-D>, elle sera toujours prise en compte par B<debuild>. Remarquez "
+"que l'option B<-r> placée ici écrasera le paramètre B<DEBUILD_ROOTCMD>."
+
+#. type: TP
+#: ../scripts/debuild.1:346
+#, no-wrap
+msgid "B<DEBUILD_>I<FOO>B<_HOOK>"
+msgstr "B<DEBUILD_>I<TOTO>B<_HOOK>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:350
+msgid ""
+"The hook variable for the I<foo> hook. See the section on hooks above for "
+"more details. By default, this is empty."
+msgstr ""
+"La variable de point d'accroche pour le point d'accroche I<toto>. Voyez la "
+"section sur les points d'accroche pour plus de détails. Par défaut, elle est "
+"non définie."
+
+#. type: TP
+#: ../scripts/debuild.1:350
+#, no-wrap
+msgid "B<DEBUILD_LINTIAN>"
+msgstr "B<DEBUILD_LINTIAN>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:354
+msgid ""
+"Should we run B<lintian>? If this is set to I<no>, then B<lintian> will not "
+"be run."
+msgstr "Lui attribuer la valeur I<no> empêchera l'exécution de B<lintian>."
+
+#. type: TP
+#: ../scripts/debuild.1:354
+#, no-wrap
+msgid "B<DEBUILD_LINTIAN_OPTS>"
+msgstr "B<DEBUILD_LINTIAN_OPTS>"
+
+#. type: Plain text
+#: ../scripts/debuild.1:360
+msgid ""
+"These are options which should be passed to the invocation of B<lintian>. "
+"They are given before any command-line options, and the usage of this "
+"variable is as described for the B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> variable."
+msgstr ""
+"Ce sont les options qui doivent être passées lors de l'invocation de "
+"B<lintian>. Elles sont données avant toute option en ligne de commande, et "
+"l'utilisation de cette option est la même que celle décrite pour la variable "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS>."
+
+#. type: Plain text
+#: ../scripts/debuild.1:371
+msgid ""
+"To build your own package, simply run B<debuild> from inside the source "
+"tree. B<dpkg-buildpackage>(1) options may be given on the command line."
+msgstr ""
+"Pour construire votre propre paquet, lancez simplement B<debuild> depuis "
+"l'arbre des sources. Des options de B<dpkg-buildpackage>(1) peuvent être "
+"passées en ligne de commande."
+
+#. type: Plain text
+#: ../scripts/debuild.1:374
+msgid ""
+"The typical command line options to build only the binary package(s) "
+"without signing the .changes file (or the non-existent .dsc file):"
+msgstr ""
+"La ligne de commande typiquement utilisée pour construire le(s) paquet(s) "
+"binaire(s) sans signer le fichier .changes (ou le fichier .dsc inexistant) "
+"est :"
+
+#. type: Plain text
+#: ../scripts/debuild.1:377
+#, no-wrap
+msgid "debuild -i -us -uc -b\n"
+msgstr "debuild -i -us -uc -b\n"
+
+#. type: Plain text
+#: ../scripts/debuild.1:380
+msgid "Change the B<-b> to B<-S> to build only a source package."
+msgstr "Changez B<-b> en B<-S> pour ne construire qu'un paquet source."
+
+#. type: Plain text
+#: ../scripts/debuild.1:383
+msgid ""
+"An example using B<lintian> to check the resulting packages and passing "
+"options to it:"
+msgstr ""
+"Voici un exemple appelant B<lintian> (et lui fournissant des options) pour "
+"vérifier les paquets créés :"
+
+#. type: Plain text
+#: ../scripts/debuild.1:386
+#, no-wrap
+msgid "debuild --lintian-opts -i\n"
+msgstr "debuild --lintian-opts -i\n"
+
+#. type: Plain text
+#: ../scripts/debuild.1:394
+msgid ""
+"Note the order of options here: the B<debuild> options come first, then the "
+"B<dpkg-buildpackage> ones, then finally the checker options. (And "
+"B<lintian> is called by default.) If you find yourself using the same "
+"B<dpkg-buildpackage> options repeatedly, consider using the "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> configuration file option as described "
+"above."
+msgstr ""
+"Remarquez bien l'ordre des options : d'abord les options de B<debuild>, puis "
+"celles de B<dpkg-buildpackage> et enfin celles de B<lintian> (B<lintian> est "
+"appelé par défaut). Si vous utilisez toujours les mêmes options de B<dpkg-"
+"buildpackage>, vous pouvez utiliser l'option "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> du fichier de configuration, comme décrit "
+"plus haut."
+
+#. type: Plain text
+#: ../scripts/debuild.1:398
+msgid ""
+"To build a package for a sponsored upload, given I<foobar_1.0-1.dsc> and the "
+"respective source files, run something like the following commands:"
+msgstr ""
+"Pour construire un paquet pour un envoi parrainé (« sponsored upload »), "
+"donné par I<toto_1.0-1.dsc> et les fichiers source respectifs, lancez "
+"quelque chose qui ressemblerait aux commandes suivantes :"
+
+#. type: Plain text
+#: ../scripts/debuild.1:403
+#, no-wrap
+msgid ""
+"dpkg-source -x foobar_1.0-1.dsc\n"
+"cd foobar-1.0\n"
+"debuild -k0x12345678\n"
+msgstr ""
+"dpkg-source -x toto_1.0-1.dsc\n"
+"cd toto-1.0\n"
+"debuild -k0x12345678\n"
+
+#. type: Plain text
+#: ../scripts/debuild.1:410
+msgid ""
+"where 0x12345678 is replaced by your GPG key ID or other key identifier such "
+"as your email address. Again, you could also use the "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> configuration file option as described "
+"above to avoid having to type the B<-k> option each time you do a sponsored "
+"upload."
+msgstr ""
+"où 0x12345678 est remplacé par l'identifiant de votre clef GPG ou un autre "
+"identifiant de clef tel que votre adresse de messagerie. De nouveau, vous "
+"pouvez également utiliser l'option du fichier de configuration "
+"B<DEBUILD_DPKG_BUILDPACKAGE_OPTS> tel que c'est décrit plus haut pour éviter "
+"d'avoir à taper l'option B<-k> à chaque fois que vous effectuez un envoi "
+"parrainé."
+
+#. type: Plain text
+#: ../scripts/debuild.1:422
+msgid ""
+"B<chmod>(1), B<debsign>(1), B<dpkg-buildpackage>(1), B<dpkg-"
+"checkbuilddeps>(1), B<fakeroot>(1), B<lintian>(1), B<su>(1), B<sudo>(1), "
+"B<super>(1), B<devscripts.conf>(5), B<dpkg-statoverride>(8)"
+msgstr ""
+"B<chmod>(1), B<debsign>(1), B<dpkg-buildpackage>(1), B<dpkg-"
+"checkbuilddeps>(1), B<fakeroot>(1), B<lintian>(1), B<su>(1), B<sudo>(1), "
+"B<super>(1), B<devscripts.conf>(5), B<dpkg-statoverride>(8)"
+
+#. type: Plain text
+#: ../scripts/debuild.1:425
+msgid ""
+"The original B<debuild> program was written by Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. The current version has been written by "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Le programme B<debuild> a été initialement écrit par Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. La version actuelle a été écrite par Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:26
+msgid "desktop2menu - create a menu file skeleton from a desktop file"
+msgstr ""
+"desktop2menu - Créer un modèle de fichier menu à partir d'un fichier desktop"
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:30
+msgid "B<desktop2menu> B<--help>|B<--version>"
+msgstr "B<desktop2menu> B<--help>|B<--version>"
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:32
+msgid "B<desktop2menu> I<desktop file> [I<package name>]"
+msgstr "B<desktop2menu> I<fichier desktop> [I<nom paquet>]"
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:36
+msgid ""
+"B<desktop2menu> generates a skeleton menu file from the supplied freedesktop."
+"org desktop file."
+msgstr ""
+"B<desktop2menu> génère un corps de fichier menu à partir d'un fichier "
+"desktop freedesktop.org."
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:39
+msgid ""
+"The package name to be used in the menu file may be passed as an additional "
+"argument. If it is not supplied then B<desktop2menu> will attempt to derive "
+"the package name from the data in the desktop file."
+msgstr ""
+"Le nom de paquet à utiliser dans le fichier menu peut être fourni dans un "
+"paramètre supplémentaire. S'il n'est pas fourni, alors B<desktop2menu> "
+"essaiera de trouver le nom du paquet en fonction des données du fichier "
+"desktop."
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:45
+msgid ""
+"This program is Copyright (C) 2007 by Sune Vuorela <debian@pusling.com>. It "
+"was modified by Adam D. Barratt <adam@adam-barratt.org.uk> for the "
+"devscripts package. This program comes with ABSOLUTELY NO WARRANTY. You "
+"are free to redistribute this code under the terms of the GNU General Public "
+"License, version 2 or later."
+msgstr ""
+"Ce programme est Copyright (C) 2007 Sune Vuorela <debian@pusling.com>. Il a "
+"été modifié par Adam D. Barratt <adam@adam-barratt.org.uk> pour le paquet "
+"devscripts. Ce programme est fourni SANS AUCUNE GARANTIE. Vous êtes libre de "
+"redistribuer ce code sous les termes de la licence publique générale GNU "
+"(GNU General Public Licence), version 2 ou ultérieure."
+
+#. type: textblock
+#: ../scripts/desktop2menu.pl:54
+msgid ""
+"Sune Vuorela <debian@pusling.com> with modifications by Adam D. Barratt "
+"<adam@adam-barratt.org.uk>"
+msgstr ""
+"Sune Vuorela <debian@pusling.com> avec des modifications de Adam D. Barratt "
+"<adam@adam-barratt.org.uk>"
+
+#. type: TH
+#: ../scripts/dep3changelog.1:1
+#, no-wrap
+msgid "DEP3CHANGELOG"
+msgstr "DEP3CHANGELOG"
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:4
+msgid ""
+"dep3changelog - generate a changelog entry from a DEP3-style patch header"
+msgstr ""
+"dep3changelog - Préparer une entrée du journal de modifications à partir de "
+"l'en-tête d'un correctif compatible DEP3"
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:6
+msgid ""
+"B<dep3changelog> I<patch> [I<patch> ...] [I<options>] [-- [I<dch_options>]]"
+msgstr ""
+"B<dep3changelog> I<correctif> [I<correctif> ...] [I<options>] [-- "
+"[I<options_dch>]]"
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:15
+msgid ""
+"B<dep3changelog> extracts the DEP3 patch headers from the given I<patch> "
+"files and builds a changelog entry for each patch. If the patch author "
+"differs from the one detected from the B<DEBEMAIL>, B<NAME>, B<DEBEMAIL>, or "
+"B<EMAIL> environment variables, ``Thanks to I<author> E<lt>I<email>E<gt>'' "
+"is added to the changelog entry for that patch. Any B<bug-debian> or B<bug-"
+"ubuntu> fields are added as ``Closes'' to the changelog entry. The "
+"generated changelog entries are passed to B<debchange> as an argument along "
+"with the given I<dch_options>."
+msgstr ""
+"B<dep3changelog> extrait les en-têtes d'un correctif DEP3 à partir des "
+"fichiers I<correctif> donnés et construit une entrée du journal de "
+"modifications pour chaque correctif. Si l'auteur du correctif est différent "
+"de celui détecté par les variables d'environnement B<DEBEMAIL>, B<NAME>, "
+"B<DEBEMAIL> ou B<EMAIL>, « Thanks to I<auteur> E<lt>I<adresse>E<gt> » est "
+"ajouté à l'entrée du journal de modifications pour ce correctif. Tous les "
+"champs B<bug-debian> et B<bug-ubuntu> sont ajoutés en « Closes » de l'entrée "
+"du journal de modifications. Les entrées du journal de modifications "
+"préparées sont passées en argument à B<debchange> avec les I<options_dch> "
+"données."
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:28
+msgid "Steve Langasek E<lt>vorlon@debian.orgE<gt>"
+msgstr "Steve Langasek E<lt>vorlon@debian.orgE<gt>"
+
+#. type: Plain text
+#: ../scripts/dep3changelog.1:29 ../scripts/list-unreleased.1:21
+msgid "B<debchange>(1)"
+msgstr "B<debchange>(1)"
+
+#. type: TH
+#: ../scripts/devscripts.1:1
+#, no-wrap
+msgid "DEVSCRIPTS"
+msgstr "DEVSCRIPTS"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:4
+msgid "devscripts - scripts to ease the lives of Debian developers"
+msgstr "devscripts - Scripts pour faciliter le travail des développeurs Debian"
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/devscripts.1:12
+msgid ""
+"The B<devscripts> package provides a collection of scripts which may be of "
+"use to Debian developers and others wishing to build Debian packages. For a "
+"summary of the available scripts, please see the file I</usr/share/doc/"
+"devscripts/README.gz>, and for full details, please see the individual "
+"manpages. They are contributed by multiple developers; for details of the "
+"authors, please see the code or manpages."
+msgstr ""
+"Le paquet B<devscripts> fournit un ensemble de scripts qui peuvent être "
+"utiles aux développeurs Debian et à tous ceux qui souhaitent construire des "
+"paquets Debian. Pour un résumé des différents scripts disponibles, veuillez "
+"consulter I</usr/share/doc/devscripts/README.gz>, et pour plus de détails, "
+"veuillez consulter les pages de manuel individuelles. Ils ont été développés "
+"par un certain nombre de développeurs, la liste des auteurs se trouve dans "
+"le code et les pages de manuel."
+
+#. type: Plain text
+#: ../scripts/devscripts.1:16
+msgid ""
+"Also, the directory I</usr/share/doc/devscripts/examples> contains examples "
+"of B<procmail> and B<exim> scripts for sorting mail arriving to Debian "
+"mailing lists."
+msgstr ""
+"Le répertoire I</usr/share/doc/devscripts/examples> contient également des "
+"exemples de scripts pour B<procmail> et B<exim> permettant de trier les "
+"messages arrivant aux listes de diffusion Debian."
+
+#. type: Plain text
+#: ../scripts/devscripts.1:20
+msgid ""
+"Several scripts of the devscripts suite use the following environment "
+"variables. Check the man pages of individual scripts for more details on how "
+"the variables are used."
+msgstr ""
+"Plusieurs scripts de l'ensemble devscripts utilisent les variables "
+"d'environnement suivantes. Vérifiez les pages de manuel de chaque script "
+"pour obtenir plus de précisions sur la façon dont ces variables sont "
+"utilisées."
+
+#. type: IX
+#: ../scripts/devscripts.1:20
+#, no-wrap
+msgid "Header"
+msgstr "Header"
+
+#. type: IP
+#: ../scripts/devscripts.1:21
+#, no-wrap
+msgid "\\s-1DEBEMAIL\\s0"
+msgstr "\\s-1DEBEMAIL\\s0"
+
+#. type: IX
+#: ../scripts/devscripts.1:22 ../scripts/devscripts.1:25
+#, no-wrap
+msgid "Item"
+msgstr "Item"
+
+#. type: IX
+#: ../scripts/devscripts.1:22
+#, no-wrap
+msgid "DEBEMAIL"
+msgstr "B<DEBEMAIL>"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:24
+msgid "Email of the person acting on a given Debian package via devscripts."
+msgstr ""
+"Adresse électronique de la personne agissant sur un paquet Debian donné avec "
+"devscripts."
+
+#. type: IP
+#: ../scripts/devscripts.1:24
+#, no-wrap
+msgid "\\s-1DEBFULLNAME\\s0"
+msgstr "\\s-1DEBFULLNAME\\s0"
+
+#. type: IX
+#: ../scripts/devscripts.1:25
+#, no-wrap
+msgid "DEBFULLNAME"
+msgstr "B<DEBFULLNAME>"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:28
+msgid ""
+"Full name (first + family) of the person acting on a given Debian package "
+"via devscripts."
+msgstr ""
+"Nom complet (prénom et nom) de la personne agissant sur un paquet Debian "
+"donné avec devscripts."
+
+#. type: SH
+#: ../scripts/devscripts.1:28
+#, no-wrap
+msgid "SCRIPTS"
+msgstr "SCRIPTS"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:31
+msgid ""
+"Here is the complete list of available devscripts. See their man pages for "
+"additional documentation."
+msgstr ""
+"Voici la liste complète des outils devscripts disponibles. Consultez leurs "
+"pages de manuel pour une documentation plus complète."
+
+#. type: IP
+#: ../scripts/devscripts.1:31
+#, no-wrap
+msgid "I<annotate-output>(1)"
+msgstr "B<annotate-output>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:33
+msgid ""
+"run a command and prepend time and stream (O for stdout, E for stderr) for "
+"every line of output"
+msgstr ""
+"exécuter une commande et ajouter le temps et le type de sortie (O pour la "
+"sortie standard et E pour la sortie d'erreur standard) au début de chaque "
+"ligne affichée"
+
+#. type: IP
+#: ../scripts/devscripts.1:33
+#, no-wrap
+msgid "I<archpath>(1)"
+msgstr "B<archpath>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:35
+msgid "print tla/Bazaar package names [tla | bazaar]"
+msgstr "afficher les noms de paquets tla ou Bazaar [tla | bazaar]"
+
+#. type: IP
+#: ../scripts/devscripts.1:35
+#, no-wrap
+msgid "I<bts>(1)"
+msgstr "B<bts>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:37
+msgid ""
+"a command-line tool for manipulating the BTS [www-browser, libauthen-sasl-"
+"perl, libnet-smtp-ssl-perl, libsoap-lite-perl, libwww-perl, bsd-mailx | "
+"mailx]"
+msgstr ""
+"outil en ligne de commande pour manipuler le BTS [www-browser, libauthen-"
+"sasl-perl, libnet-smtp-ssl-perl, libsoap-lite-perl, libwww-perl, bsd-mailx | "
+"mailx]"
+
+#. type: IP
+#: ../scripts/devscripts.1:37
+#, no-wrap
+msgid "I<build-rdeps>(1)"
+msgstr "B<build-rdeps>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:39
+msgid ""
+"search for all packages that build-depend on a given package [dctrl-tools]"
+msgstr ""
+"rechercher tous les paquets qui dépendent du paquet indiqué pour leur "
+"construction (« reverse build-depends » : dépendances de construction "
+"inverses) [dctrl-tools]"
+
+#. type: IP
+#: ../scripts/devscripts.1:39
+#, no-wrap
+msgid "I<chdist>(1)"
+msgstr "B<chdist>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:41
+msgid "tool to easily play with several distributions [dctrl-tools]"
+msgstr ""
+"outil pour jouer facilement avec différentes distributions [dctrl-tools]"
+
+#. type: IP
+#: ../scripts/devscripts.1:41
+#, no-wrap
+msgid "I<checkbashisms>(1)"
+msgstr "B<checkbashisms>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:43
+msgid ""
+"check whether a /bin/sh script contains any common bash-specific contructs"
+msgstr "rechercher des constructions spécifiques à bash dans un script /bin/sh"
+
+#. type: IP
+#: ../scripts/devscripts.1:43
+#, no-wrap
+msgid "I<cowpoke>(1)"
+msgstr "B<cowpoke>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:45
+msgid ""
+"upload a Debian source package to a cowbuilder host and build it, optionally "
+"also signing and uploading the result to an incoming queue [ssh-client]"
+msgstr ""
+"envoyer un paquet source Debian à un hôte cowbuilder et construire le "
+"paquet. Le paquet résultant peut également être signé et envoyé dans une "
+"file d'attente [ssh-client]"
+
+#. type: IP
+#: ../scripts/devscripts.1:45
+#, no-wrap
+msgid "I<cvs-debi, cvs-debc>(1)"
+msgstr "B<cvs-debi>, B<cvs-debc>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:47
+msgid ""
+"wrappers around debi and debc respectively (see below) which allow them to "
+"be called from the CVS working directory [cvs-buildpackage]"
+msgstr ""
+"encapsulations (« wrappers ») respectivement de debi et debc (voir plus bas) "
+"pouvant être appelées depuis un répertoire de travail CVS [cvs-buildpackage]"
+
+#. type: IP
+#: ../scripts/devscripts.1:47
+#, no-wrap
+msgid "I<cvs-debrelease>(1)"
+msgstr "B<cvs-debrelease>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:49
+msgid ""
+"wrapper around debrelease which allows it to be called from the CVS working "
+"directory [cvs-buildpackage, dupload | dput, ssh-client]"
+msgstr ""
+"encapsulation de debrelease pouvant être appelée depuis un répertoire de "
+"travail CVS [cvs-buildpackage, dupload | dput, ssh-client]"
+
+#. type: IP
+#: ../scripts/devscripts.1:49
+#, no-wrap
+msgid "I<cvs-debuild>(1)"
+msgstr "B<cvs-debuild>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:51
+msgid ""
+"wrapper for cvs-buildpackage to use debuild as its package building program "
+"[cvs-buildpackage, fakeroot, lintian, gnupg]"
+msgstr ""
+"encapsulation de debuild pour construire les paquets avec cvs-buildpackage "
+"[cvs-buildpackage, fakeroot, lintian, gnupg]"
+
+#. type: IP
+#: ../scripts/devscripts.1:51
+#, no-wrap
+msgid "I<dcmd>(1)"
+msgstr "B<dcmd>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:53
+msgid ""
+"run a given command replacing the name of a .changes or .dsc file with each "
+"of the files referenced therein"
+msgstr ""
+"exécuter une commande donnée en remplaçant le nom d'un fichier .changes ou ."
+"dsc par chaque fichier référencé"
+
+#. type: IP
+#: ../scripts/devscripts.1:53
+#, no-wrap
+msgid "I<dcontrol>(1)"
+msgstr "B<dcontrol>(1)"
+
+# NOTE: -- -> -
+#. type: Plain text
+#: ../scripts/devscripts.1:55
+msgid ""
+"remotely query package and source control files for all Debian distributions "
+"[liburl-perl, libwww-perl]"
+msgstr ""
+"interroger les fichiers de contrôle des paquets source et binaires pour "
+"toutes les distributions Debian [liburl-perl, libwww-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:55
+#, no-wrap
+msgid "I<dd-list>(1)"
+msgstr "B<dd-list>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:57
+msgid "given a list of packages, pretty-print it ordered by maintainer"
+msgstr "ordonner joliment une liste de paquets par responsable"
+
+#. type: IP
+#: ../scripts/devscripts.1:57
+#, no-wrap
+msgid "I<debc>(1)"
+msgstr "B<debc>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:59
+msgid "display the contents of just-built .debs"
+msgstr "afficher le contenu des paquets venant d'être construits"
+
+#. type: IP
+#: ../scripts/devscripts.1:59
+#, no-wrap
+msgid "I<debchange/dch>(1)"
+msgstr "B<debchange>/B<dch>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:61
+msgid ""
+"automagically add entries to debian/changelog files [libdistro-info-perl, "
+"libparse-debcontrol-perl, libsoap-lite-perl]"
+msgstr ""
+"ajouter automatiquement des entrées aux fichiers debian/changelog [libdistro-"
+"info-perl, libparse-debcontrol-perl, libsoap-lite-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:61
+#, no-wrap
+msgid "I<debcheckout>(1)"
+msgstr "B<debcheckout>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:63
+msgid "checkout the development repository of a Debian package"
+msgstr "récupérer le contenu du dépôt d'un paquet Debian"
+
+#. type: IP
+#: ../scripts/devscripts.1:63
+#, no-wrap
+msgid "I<debclean>(1)"
+msgstr "B<debclean>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:65
+msgid "clean a Debian source tree [fakeroot]"
+msgstr "nettoyer une arborescence source Debian [fakeroot]"
+
+#. type: IP
+#: ../scripts/devscripts.1:65
+#, no-wrap
+msgid "I<debcommit>(1)"
+msgstr "B<debcommit>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:67
+msgid ""
+"commit changes to cvs, darcs, svn, svk, tla, bzr, git, or hg, basing commit "
+"message on changelog [cvs | darcs | subversion | svk | tla | bzr | git-core "
+"| mercurial, libtimedate-perl]"
+msgstr ""
+"soumettre les changements vers CVS, Darcs, Subversion, SVK, GNU Arch, "
+"Bazaar, Git ou Mercurial en basant le message de modification sur le journal "
+"de modifications [cvs | darcs | subversion | svk | tla | bzr | git | "
+"mercurial, libtimedate-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:67
+#, no-wrap
+msgid "I<debdiff>(1)"
+msgstr "B<debdiff>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:69
+msgid ""
+"compare two versions of a Debian package to check for added and removed "
+"files. Use the debbindiff package for deep comparisons. [wdiff, patchutils]"
+msgstr ""
+"comparer deux versions d'un paquet Debian pour vérifier les fichiers ajoutés "
+"ou supprimés (utilisez B<debbindiff> pour une comparaison plus précise de "
+"paquets) [wdiff, patchutils]"
+
+#. type: IP
+#: ../scripts/devscripts.1:69
+#, no-wrap
+msgid "I<debi>(1)"
+msgstr "B<debi>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:71
+msgid "install a just-built package"
+msgstr "installer un paquet venant d'être construit"
+
+#. type: IP
+#: ../scripts/devscripts.1:71
+#, no-wrap
+msgid "I<debpkg>(1)"
+msgstr "B<debpkg>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:73
+msgid "dpkg wrapper to be able to manage/test packages without su"
+msgstr "encapsulation de dpkg pour gérer et essayer les paquets sans su"
+
+#. type: IP
+#: ../scripts/devscripts.1:73
+#, no-wrap
+msgid "I<debrelease>(1)"
+msgstr "B<debrelease>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:75
+msgid "wrapper around dupload or dput [dupload | dput, ssh-client]"
+msgstr "encapsulation de dupload ou dput [dupload | dput, ssh-client]"
+
+#. type: IP
+#: ../scripts/devscripts.1:75
+#, no-wrap
+msgid "I<debsign, debrsign>(1)"
+msgstr "B<debsign>, B<debrsign>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:77
+msgid ""
+"sign a .changes/.dsc pair without needing any of the rest of the package to "
+"be present; can sign the pair remotely or fetch the pair from a remote "
+"machine for signing [gnupg, debian-keyring, ssh-client]"
+msgstr ""
+"signer une paire de fichiers .changes et .dsc sans avoir besoin du reste du "
+"paquet. Signature à distance possible, ainsi que la récupération de la paire "
+"de fichiers depuis une machine distante pour la signature [gnupg, debian-"
+"keyring, ssh-client]"
+
+#. type: IP
+#: ../scripts/devscripts.1:77
+#, no-wrap
+msgid "I<debsnap>(1)"
+msgstr "B<debsnap>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:79
+msgid ""
+"grab packages from http://snapshot.debian.org [libwww-perl, libjson-perl]"
+msgstr ""
+"récupérer des paquets de http://snapshot.debian.org [libwww-perl, libjson-"
+"perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:79
+#, no-wrap
+msgid "I<debuild>(1)"
+msgstr "B<debuild>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:81
+msgid ""
+"wrapper to build a package without having to su or worry about how to invoke "
+"dpkg to build using fakeroot. Also deals with common environment problems, "
+"umask etc. [fakeroot, lintian, gnupg]"
+msgstr ""
+"encapsulation pour construire un paquet sans su ni s'embêter à appeler dpkg "
+"pour construire avec fakeroot. Les problèmes d'environnement classiques sont "
+"aussi gérés, umask, etc. [fakeroot, lintian, gnupg]"
+
+#. type: IP
+#: ../scripts/devscripts.1:81
+#, no-wrap
+msgid "I<deb-reversion>(1)"
+msgstr "B<deb-reversion>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:83
+msgid ""
+"increase a binary package version number and repacks the package, useful for "
+"porters and the like"
+msgstr ""
+"augmenter le numéro de version d'un paquet binaire et reconstruire le "
+"paquet, pratique pour les porteurs et autres"
+
+#. type: IP
+#: ../scripts/devscripts.1:83
+#, no-wrap
+msgid "I<dep3changelog>(1)"
+msgstr "B<dep3changelog>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:85
+msgid "generate a changelog entry from a DEP3-style patch header"
+msgstr ""
+"préparer une entrée du journal de modifications à partir de l'en-tête d'un "
+"correctif compatible DEP3"
+
+#. type: IP
+#: ../scripts/devscripts.1:85
+#, no-wrap
+msgid "I<desktop2menu>(1)"
+msgstr "B<desktop2menu>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:87
+msgid ""
+"given a freedesktop.org desktop file, generate a skeleton for a menu file "
+"[libfile-desktopentry-perl]"
+msgstr ""
+"À partir d'un fichier desktop freedesktop.org, produire un corps de fichier "
+"menu [libfile-desktopentry-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:87
+#, no-wrap
+msgid "I<dget>(1)"
+msgstr "B<dget>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:89
+msgid "download Debian source and binary packages [wget | curl]"
+msgstr "télécharger des paquets Debian source et binaires [wget | curl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:89
+#, no-wrap
+msgid "I<diff2patches>(1)"
+msgstr "B<diff2patches>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:91
+msgid ""
+"extract patches from a .diff.gz file placing them under debian/ or, if "
+"present, debian/patches [patchutils]"
+msgstr ""
+"extraire les correctifs d'un fichier .diff.gz en les plaçant dans debian/ ou "
+"debian/patches s'il existe [patchutils]"
+
+#. type: IP
+#: ../scripts/devscripts.1:91
+#, no-wrap
+msgid "I<dpkg-depcheck, dpkg-genbuilddeps>(1)"
+msgstr "B<dpkg-depcheck>, B<dpkg-genbuilddeps>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:93
+msgid ""
+"determine the packages used during the build of a Debian package; useful for "
+"determining the Build-Depends control field needed [build-essential, strace]"
+msgstr ""
+"déterminer les paquets utilisés pendant la construction du paquet Debian. "
+"Pratique pour déterminer les champs de contrôle Build-Depends nécessaires "
+"[build-essential, strace]"
+
+#. type: IP
+#: ../scripts/devscripts.1:93
+#, no-wrap
+msgid "I<dscextract>(1)"
+msgstr "B<dscextract>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:95
+msgid "extract a single file from a Debian source package [patchutils]"
+msgstr "extraire un seul fichier d'un paquet source Debian [patchutils]"
+
+#. type: IP
+#: ../scripts/devscripts.1:95
+#, no-wrap
+msgid "I<dscverify>(1)"
+msgstr "B<dscverify>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:97
+msgid ""
+"verify the integrity of a Debian package from the .changes or .dsc files "
+"[gnupg, debian-keyring, libdigest-md5-perl]"
+msgstr ""
+"vérifier l'intégrité d'un paquet Debian à partir des fichiers .changes ou ."
+"dsc [gnupg, debian-keyring, libdigest-md5-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:97
+#, no-wrap
+msgid "I<edit-patch>(1)"
+msgstr "B<edit-patch>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:99
+msgid ""
+"add/edit a patch for a source package and commit the changes [quilt | dpatch "
+"| cdbs]"
+msgstr ""
+"ajouter et éditer un correctif pour un paquet source et envoyer les "
+"modifications [quilt | dpatch | cdbs]"
+
+#. type: IP
+#: ../scripts/devscripts.1:99
+#, no-wrap
+msgid "I<getbuildlog>(1)"
+msgstr "B<getbuildlog>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:101
+msgid "download package build logs from Debian auto-builders [wget]"
+msgstr ""
+"télécharger les journaux de construction de paquet des serveurs Debian de "
+"construction automatique [wget]"
+
+#. type: IP
+#: ../scripts/devscripts.1:101
+#, no-wrap
+msgid "I<grep-excuses>(1)"
+msgstr "B<grep-excuses>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:103
+msgid ""
+"grep the update_excuses.html file for your packages [libterm-size-perl, "
+"wget, w3m]"
+msgstr ""
+"rechercher vos paquets dans le fichier update_excuses.html [libterm-size-"
+"perl, wget, w3m]"
+
+#. type: IP
+#: ../scripts/devscripts.1:103
+#, no-wrap
+msgid "I<licensecheck>(1)"
+msgstr "B<licensecheck>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:105
+msgid "attempt to determine the license of source files"
+msgstr "essayer de déterminer la licence des fichiers source"
+
+#. type: IP
+#: ../scripts/devscripts.1:105
+#, no-wrap
+msgid "I<list-unreleased>(1)"
+msgstr "B<list-unreleased>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:107
+msgid "search for unreleased packages"
+msgstr "rechercher les paquets qui ne sont pas encore envoyés (UNRELEASED)"
+
+#. type: IP
+#: ../scripts/devscripts.1:107
+#, no-wrap
+msgid "I<manpage-alert>(1)"
+msgstr "B<manpage-alert>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:109
+msgid "locate binaries without corresponding manpages [man-db]"
+msgstr "trouver des programmes sans page de manuel [man-db]"
+
+#. type: IP
+#: ../scripts/devscripts.1:109
+#, no-wrap
+msgid "I<mass-bug>(1)"
+msgstr "B<mass-bug>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:111
+msgid "mass-file bug reports [bsd-mailx | mailx]"
+msgstr "soumettre en masse des rapports de bogue [bsd-mailx | mailx]"
+
+#. type: IP
+#: ../scripts/devscripts.1:111
+#, no-wrap
+msgid "I<mergechanges>(1)"
+msgstr "B<mergechanges>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:113
+msgid ""
+"merge .changes files from the same release but built on different "
+"architectures"
+msgstr ""
+"fusionner les fichiers .changes d'une même version mais construits sur "
+"plusieurs architectures"
+
+#. type: IP
+#: ../scripts/devscripts.1:113
+#, no-wrap
+msgid "I<mk-build-deps>(1)"
+msgstr "B<mk-build-deps>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:115
+msgid ""
+"given a package name and/or control file, generate a binary package which "
+"may be installed to satisfy the build-dependencies of the given package "
+"[equivs]"
+msgstr ""
+"à partir d'un nom de paquet ou d'un fichier « control », créer un paquet "
+"binaire qui peut être installé pour satisfaire les dépendances de "
+"construction d'un paquet [equivs]"
+
+#. type: IP
+#: ../scripts/devscripts.1:115
+#, no-wrap
+msgid "I<mk-origtargz>(1)"
+msgstr "B<mk-origtargz>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:117
+msgid ""
+"rename upstream tarball, optionally changing the compression and removing "
+"unwanted files [unzip, xz-utils, file]"
+msgstr ""
+"Renommer l’archive amont, en modifiant éventuellement la compression et en "
+"supprimant les fichiers non désirés [unzip, xz-utils, file]"
+
+#. type: IP
+#: ../scripts/devscripts.1:117
+#, no-wrap
+msgid "I<namecheck>(1)"
+msgstr "B<namecheck>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:119
+msgid "check project names are not already taken"
+msgstr "vérifier la disponibilité des noms de projet"
+
+#. type: IP
+#: ../scripts/devscripts.1:119
+#, no-wrap
+msgid "I<nmudiff>(1)"
+msgstr "B<nmudiff>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:121
+msgid ""
+"mail a diff of the current package against the previous version to the BTS "
+"to assist in tracking NMUs [patchutils, mutt]"
+msgstr ""
+"envoyer un correctif du paquet en cours par rapport à la version précédente "
+"vers le BTS pour aider au suivi des NMU [patchutils, mutt]"
+
+#. type: IP
+#: ../scripts/devscripts.1:121
+#, no-wrap
+msgid "I<origtargz>(1)"
+msgstr "B<origtargz>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:123
+msgid ""
+"fetch the orig tarball of a Debian package from various sources, and unpack "
+"it"
+msgstr ""
+"récupérer l'archive amont d'un paquet Debian depuis divers sources, et la "
+"dépaqueter"
+
+#. type: IP
+#: ../scripts/devscripts.1:123
+#, no-wrap
+msgid "I<plotchangelog>(1)"
+msgstr "B<plotchangelog>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:125
+msgid ""
+"view a nice plot of the data in a changelog file [libtimedate-perl, gnuplot]"
+msgstr ""
+"afficher sous forme graphique les données d'un fichier I<changelog> "
+"[libtimedate-perl, gnuplot]"
+
+#. type: IP
+#: ../scripts/devscripts.1:125
+#, no-wrap
+msgid "I<pts-subscribe>(1)"
+msgstr "B<pts-subscribe>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:127
+msgid ""
+"subscribe to the PTS for a limited period of time [bsd-mailx | mailx, at]"
+msgstr "s'abonner au PTS pendant un temps limité [bsd-mailx | mailx, at]"
+
+#. type: IP
+#: ../scripts/devscripts.1:127
+#, no-wrap
+msgid "I<rc-alert>(1)"
+msgstr "B<rc-alert>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:129
+msgid "list installed packages which have release-critical bugs [wget | curl]"
+msgstr ""
+"afficher la liste des paquets installés ayant des bogues empêchant leur "
+"intégration dans la prochaine distribution [wget | curl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:129
+#, no-wrap
+msgid "I<rmadison>(1)"
+msgstr "B<rmadison>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:131
+msgid ""
+"remotely query the Debian archive database about packages [liburi-perl, wget "
+"| curl]"
+msgstr ""
+"interroger à distance la base de données de l'archive Debian [liburi-perl, "
+"wget | curl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:131
+#, no-wrap
+msgid "I<sadt>(1)"
+msgstr "B<sadt>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:133
+msgid "run DEP-8 tests [python3-debian]"
+msgstr "exécuter des tests DEP-8 [python3-debian]"
+
+#. type: IP
+#: ../scripts/devscripts.1:133
+#, no-wrap
+msgid "I<suspicious-source>(1)"
+msgstr "B<suspicious-source>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:135
+msgid ""
+"output a list of files which are not common source files [python3-magic]"
+msgstr ""
+"afficher une liste de fichiers qui ne sont pas des fichiers source usuels "
+"[python3-magic]"
+
+#. type: IP
+#: ../scripts/devscripts.1:135
+#, no-wrap
+msgid "I<svnpath>(1)"
+msgstr "B<svnpath>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:137
+msgid "print Subversion repository paths [subversion]"
+msgstr "afficher les chemins de dépôt Subversion [subversion]"
+
+#. type: IP
+#: ../scripts/devscripts.1:137
+#, no-wrap
+msgid "I<tagpending>(1)"
+msgstr "B<tagpending>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:139
+msgid ""
+"run from a Debian source tree and tag bugs that are to be closed in the "
+"latest changelog as pending [libsoap-lite-perl]"
+msgstr ""
+"exécuter depuis une arborescence source Debian et placer l'étiquette "
+"« pending » sur tous les bogues à fermer dans le dernier groupe d'entrée du "
+"changelog [libsoap-lite-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:139
+#, no-wrap
+msgid "I<transition-check>(1)"
+msgstr "B<transition-check>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:141
+msgid ""
+"check a list of source packages for involvement in transitions for which "
+"uploads to unstable are currently blocked [libwww-perl, libyaml-syck-perl]"
+msgstr ""
+"vérifier si l'un des paquets source listés est impliqué dans une transition "
+"pour laquelle les envois sont bloqués actuellement [libwww-perl, libyaml-"
+"syck-perl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:141
+#, no-wrap
+msgid "I<uscan>(1)"
+msgstr "B<uscan>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:143
+msgid ""
+"scan upstream sites for new releases of packages [gpgv, gnupg, liblwp-"
+"protocol-https-perl, libwww-perl, unzip, xz-utils, file]"
+msgstr ""
+"surveiller la disponibilité d'une nouvelle version amont [gpgv, gnupg, "
+"liblwp-protocol-https-perl, libwww-perl, unzip, xz-utils, file]"
+
+#. type: IP
+#: ../scripts/devscripts.1:143
+#, no-wrap
+msgid "I<uupdate>(1)"
+msgstr "B<uupdate>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:145
+msgid "integrate upstream changes into a source package [patch]"
+msgstr "intégrer les modifications amont à un paquet source [patch]"
+
+#. type: IP
+#: ../scripts/devscripts.1:145
+#, no-wrap
+msgid "I<what-patch>(1)"
+msgstr "B<what-patch>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:147
+msgid ""
+"determine what patch system, if any, a source package is using [patchutils]"
+msgstr ""
+"déterminer le système de correctifs, s'il existe, utilisé par un paquet "
+"source [patchutils]"
+
+#. type: IP
+#: ../scripts/devscripts.1:147
+#, no-wrap
+msgid "I<whodepends>(1)"
+msgstr "B<whodepends>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:149
+msgid "check which maintainers' packages depend on a package"
+msgstr "vérifier quels paquets (et responsables) dépendent d'un autre paquet"
+
+#. type: IP
+#: ../scripts/devscripts.1:149
+#, no-wrap
+msgid "I<who-uploads>(1)"
+msgstr "B<who-uploads>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:151
+msgid ""
+"determine the most recent uploaders of a package to the Debian archive "
+"[gnupg, debian-keyring, debian-maintainers, wget]"
+msgstr ""
+"identifier les dernières personnes ayant envoyé un paquet donné vers "
+"l'archive Debian [gnupg, debian-keyring, debian-maintainers, wget]"
+
+#. type: IP
+#: ../scripts/devscripts.1:151
+#, no-wrap
+msgid "I<wnpp-alert>(1)"
+msgstr "B<wnpp-alert>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:153
+msgid ""
+"list installed packages which are orphaned or up for adoption [wget | curl]"
+msgstr ""
+"afficher la liste des paquets installés offerts à l'adoption ou orphelins "
+"[wget | curl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:153
+#, no-wrap
+msgid "I<wnpp-check>(1)"
+msgstr "B<wnpp-check>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:155
+msgid ""
+"check whether there is an open request for packaging or intention to package "
+"bug for a package [wget | curl]"
+msgstr ""
+"Vérifier si un bogue du type paquet demandé (RFP) ou paquet en cours de "
+"travail (ITP) est ouvert pour un paquet [wget | curl]"
+
+#. type: IP
+#: ../scripts/devscripts.1:155
+#, no-wrap
+msgid "I<who-permits-upload>(1)"
+msgstr "B<who-permits-upload>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:157
+msgid ""
+"Retrieve information about Debian Maintainer access control lists [gnupg, "
+"libencode-locale-perl, libparse-debcontrol-perl, libwww-perl, debian-keyring]"
+msgstr ""
+"Récupérer des renseignements sur les listes de contrôle d’accès de "
+"mainteneurs Debian [gnupg, libencode-locale-perl, libparse-debcontrol-perl, "
+"libwww-perl, debian-keyring]"
+
+#. type: IP
+#: ../scripts/devscripts.1:157
+#, no-wrap
+msgid "I<wrap-and-sort>(1)"
+msgstr "B<wrap-and-sort>(1)"
+
+#. type: Plain text
+#: ../scripts/devscripts.1:158
+msgid "wrap long lines and sort items in packaging files [python3-debian]"
+msgstr ""
+"couper les lignes longues et trier les items des fichiers d'empaquetage "
+"[python3-debian]"
+
+#. type: textblock
+#: ../scripts/dget.pl:510
+msgid "dget -- Download Debian source and binary packages"
+msgstr "dget - Télécharger des paquets Debian source et binaires"
+
+#. type: =item
+#: ../scripts/dget.pl:516
+msgid "B<dget> [I<options>] I<URL> ..."
+msgstr "B<dget> [I<options>] I<URL> ..."
+
+#. type: =item
+#: ../scripts/dget.pl:518
+msgid "B<dget> [I<options>] [B<--all>] I<package>[B<=>I<version>] ..."
+msgstr "B<dget> [I<options>] [B<--all>] I<paquet>[B<=>I<version>] ..."
+
+#. type: textblock
+#: ../scripts/dget.pl:524
+msgid ""
+"B<dget> downloads Debian packages. In the first form, B<dget> fetches the "
+"requested URLs. If this is a .dsc or .changes file, then B<dget> acts as a "
+"source-package aware form of B<wget>: it also fetches any files referenced "
+"in the .dsc/.changes file. The downloaded source is then checked with "
+"B<dscverify> and, if successful, unpacked by B<dpkg-source>."
+msgstr ""
+"B<dget> télécharge des paquets Debian. Avec la première forme, B<dget> "
+"télécharge l'adresse passée. Si cette adresse pointe vers un fichier .dsc "
+"ou .changes, B<dget> agit comme une sorte de B<wget> adapté aux paquets "
+"source : il télécharge aussi tous les fichiers référencés dans le fichier ."
+"dsc/.changes. Le paquet source téléchargé est ensuite vérifié avec "
+"B<dscverify> puis dépaqueté avec B<dpkg-source> si la vérification a réussi."
+
+#. type: textblock
+#: ../scripts/dget.pl:531
+msgid ""
+"In the second form, B<dget> downloads a I<binary> package (i.e., a I<.deb> "
+"file) from the Debian mirror configured in /etc/apt/sources.list(.d). "
+"Unlike B<apt-get install -d>, it does not require root privileges, writes to "
+"the current directory, and does not download dependencies. If a version "
+"number is specified, this version of the package is requested. With B<--"
+"all>, the list of all binaries for the source package I<package> is "
+"extracted from the output of C<apt-cache showsrc package>."
+msgstr ""
+"Avec la seconde forme, B<dget> télécharge un paquet I<binaire> (c'est-à-dire "
+"un fichier I<.deb>) depuis le miroir Debian configuré dans /etc/apt/sources."
+"lists(.d). À la différence d'B<apt-get install -d>, il ne nécessite pas les "
+"droits du superutilisateur, écrit dans le répertoire actuel et ne télécharge "
+"pas les dépendances. Si un numéro de version est indiqué, cette version du "
+"paquet est téléchargée. Avec B<--all>, la liste de tous les binaires pour le "
+"paquet source I<paquet> est extraite de la sortie de C<apt-cache showsrc "
+"paquet>."
+
+#. type: textblock
+#: ../scripts/dget.pl:540
+msgid ""
+"In both cases dget is capable of getting several packages and/or URLs at "
+"once."
+msgstr ""
+"Dans tous les cas, dget peut récupérer plusieurs paquets ou URL à la fois."
+
+#. type: textblock
+#: ../scripts/dget.pl:543
+msgid ""
+"(Note that I<.udeb> packages used by debian-installer are located in "
+"separate packages files from I<.deb> packages. In order to use I<.udebs> "
+"with B<dget>, you will need to have configured B<apt> to use a packages file "
+"for I<component>/I<debian-installer>)."
+msgstr ""
+"(Remarquez que les paquets I<.udeb> utilisés par l'installateur Debian sont "
+"situés dans des fichiers de paquets distincts des paquets I<.deb>. Pour "
+"utiliser des I<.udeb> avec B<dget>, vous devrez configurer B<apt> pour "
+"utiliser des fichiers de paquets pour I<composante>/I<debian-installer>.)"
+
+#. type: textblock
+#: ../scripts/dget.pl:548
+msgid ""
+"Before downloading files listed in .dsc and .changes files, and before "
+"downloading binary packages, B<dget> checks to see whether any of these "
+"files already exist. If they do, then their md5sums are compared to avoid "
+"downloading them again unnecessarily. B<dget> also looks for matching files "
+"in I</var/cache/apt/archives> and directories given by the B<--path> option "
+"or specified in the configuration files (see below). Finally, if "
+"downloading (.orig).tar.gz or .diff.gz files fails, dget consults B<apt-get "
+"source --print-uris>. Download backends used are B<curl> and B<wget>, "
+"looked for in that order."
+msgstr ""
+"Avant de télécharger les fichiers référencés dans les fichiers .dsc et ."
+"changes, et avant de télécharger des paquets binaires, B<dget> vérifie si "
+"les fichiers existent déjà. Si c'est le cas, les sommes de contrôle MD5 sont "
+"comparées afin d'éviter de gâcher de la bande passante. B<dget> cherche "
+"également si les fichiers sont dans I</var/cache/apt/archives> ou un des "
+"répertoires fournis avec l'option B<--path> ou dans les fichiers de "
+"configuration (voir ci-dessous). Enfin, si le téléchargement d'un fichier (."
+"orig).tar.gz ou .diff.gz échoue, dget consulte B<apt-get source --print-"
+"uris>. Les programmes de téléchargement utilisés sont B<curl> et B<wget>, "
+"recherchés dans cet ordre."
+
+#. type: textblock
+#: ../scripts/dget.pl:558
+msgid ""
+"B<dget> was written to make it easier to retrieve source packages from the "
+"web for sponsor uploads. For checking the package with B<debdiff>, the last "
+"binary version is available via B<dget> I<package>, the last source version "
+"via B<apt-get source> I<package>."
+msgstr ""
+"B<dget> a été écrit pour faciliter la récupération de paquets source par le "
+"web pour les envois parrainés. Afin de vérifier le paquet avec B<debdiff>, "
+"la dernière version binaire est disponible avec B<dget> I<paquet>, la "
+"dernière version source avec B<apt-get source> I<paquet>."
+
+#. type: textblock
+#: ../scripts/dget.pl:569
+msgid ""
+"Interpret I<package> as a source package name, and download all binaries as "
+"found in the output of \"apt-cache showsrc I<package>\"."
+msgstr ""
+"Interpréter I<paquet> comme un nom de paquet source, et télécharger tous les "
+"binaires trouvés dans la sortie de « apt-cache showsrc I<paquet> »."
+
+#. type: =item
+#: ../scripts/dget.pl:572
+msgid "B<-b>, B<--backup>"
+msgstr "B<-b>, B<--backup>"
+
+#. type: textblock
+#: ../scripts/dget.pl:574
+msgid "Move files that would be overwritten to I<./backup>."
+msgstr "Déplacer les fichiers qui devraient être écrasés dans I<./backup>."
+
+#. type: textblock
+#: ../scripts/dget.pl:578
+msgid "Suppress B<wget>/B<curl> non-error output."
+msgstr "Supprimer la sortie de B<wget>/B<curl> (sauf les erreurs)."
+
+#. type: =item
+#: ../scripts/dget.pl:580 ../scripts/origtargz.pl:129
+msgid "B<-d>, B<--download-only>"
+msgstr "B<-d>, B<--download-only>"
+
+#. type: textblock
+#: ../scripts/dget.pl:582
+msgid ""
+"Do not run B<dpkg-source -x> on the downloaded source package. This can "
+"only be used with the first method of calling B<dget>."
+msgstr ""
+"Ne pas exécuter B<dpkg-source -x> sur le paquet source téléchargé. Cette "
+"option ne peut être utilisée qu'avec la première méthode d'invocation de "
+"B<dget>."
+
+#. type: =item
+#: ../scripts/dget.pl:585
+msgid "B<-x>, B<--extract>"
+msgstr "B<-x>, B<--extract>"
+
+#. type: textblock
+#: ../scripts/dget.pl:587
+msgid ""
+"Run B<dpkg-source -x> on the downloaded source package to unpack it. This "
+"option is the default and can only be used with the first method of calling "
+"B<dget>."
+msgstr ""
+"Exécuter B<dpkg-source -x> sur le paquet source téléchargé. Cette option "
+"correspond au comportement par défaut et ne peut être utilisée qu'avec la "
+"première méthode d'invocation de B<dget>."
+
+#. type: =item
+#: ../scripts/dget.pl:591
+msgid "B<-u>, B<--allow-unauthenticated>"
+msgstr "B<-u>, B<--allow-unauthenticated>"
+
+#. type: textblock
+#: ../scripts/dget.pl:593
+msgid ""
+"Do not attempt to verify the integrity of downloaded source packages using "
+"B<dscverify>."
+msgstr ""
+"Ne pas chercher à vérifier l'intégrité des paquets source téléchargés en "
+"utilisant B<dscverify>."
+
+#. type: =item
+#: ../scripts/dget.pl:596
+msgid "B<--build>"
+msgstr "B<--build>"
+
+#. type: textblock
+#: ../scripts/dget.pl:598
+msgid "Run B<dpkg-buildpackage -b -uc> on the downloaded source package."
+msgstr "Exécuter B<dpkg-buildpackage -b -uc> sur le paquet source téléchargé."
+
+#. type: =item
+#: ../scripts/dget.pl:600
+msgid "B<--path> I<DIR>[B<:>I<DIR> ...]"
+msgstr "B<--path> I<RÉP>[B<:>I<RÉP> ...]"
+
+#. type: textblock
+#: ../scripts/dget.pl:602
+msgid ""
+"In addition to I</var/cache/apt/archives>, B<dget> uses the colon-separated "
+"list given as argument to B<--path> to find files with a matching md5sum. "
+"For example: \"--path /srv/pbuilder/result:/home/cb/UploadQueue\". If DIR "
+"is empty (i.e., \"--path ''\" is specified), then any previously listed "
+"directories or directories specified in the configuration files will be "
+"ignored. This option may be specified multiple times, and all of the "
+"directories listed will be searched; hence, the above example could have "
+"been written as: \"--path /srv/pbuilder/result --path /home/cb/UploadQueue\"."
+msgstr ""
+"En plus de I</var/cache/apt/archives>, B<dget> cherche les paquets ayant une "
+"somme de contrôle MD5 correspondante dans la liste de répertoires donnée en "
+"paramètre à B<--path>. Par exemple « --path /srv/pbuilder/result:/home/cb/"
+"UploadQueue ». Si RÉP est vide (c'est-à-dire que l'option « --path '' » est "
+"passée), alors tous les répertoires passés précédemment ou dans les fichiers "
+"de configuration sont ignorés. Cette option peut être passée plusieurs fois, "
+"et B<dget> cherchera dans tous les répertoires listés. Ainsi, l'exemple ci-"
+"dessus est équivalent à « --path /srv/pbuilder/result --path /home/cb/"
+"UploadQueue »."
+
+#. type: =item
+#: ../scripts/dget.pl:613
+msgid "B<--insecure>"
+msgstr "B<--insecure>"
+
+#. type: textblock
+#: ../scripts/dget.pl:615
+msgid "Allow SSL connections to untrusted hosts."
+msgstr ""
+"Autoriser les connexions SSL vers des hôtes dont l'authenticité n'est pas "
+"certifiée."
+
+#. type: =item
+#: ../scripts/dget.pl:617
+msgid "B<--no-cache>"
+msgstr "B<--no-cache>"
+
+#. type: textblock
+#: ../scripts/dget.pl:619
+msgid "Bypass server-side HTTP caches by sending a B<Pragma: no-cache> header."
+msgstr ""
+"Éviter les caches HTTP côté serveur en envoyant un en-tête B<Pragma: no-"
+"cache>."
+
+#. type: =item
+#: ../scripts/dget.pl:641
+msgid "B<DGET_PATH>"
+msgstr "B<DGET_PATH>"
+
+#. type: textblock
+#: ../scripts/dget.pl:643
+msgid ""
+"This can be set to a colon-separated list of directories in which to search "
+"for files in addition to the default I</var/cache/apt/archives>. It has the "
+"same effect as the B<--path> command line option. It is not set by default."
+msgstr ""
+"Liste de répertoires dans lesquels chercher les fichiers, en plus de I</var/"
+"cache/apt/archives> qui est utilisé par défaut. Cette variable a le même "
+"effet que l'option de ligne de commande B<--path>. Par défaut, elle n'est "
+"pas définie."
+
+#. type: =item
+#: ../scripts/dget.pl:648
+msgid "B<DGET_UNPACK>"
+msgstr "B<DGET_UNPACK>"
+
+#. type: textblock
+#: ../scripts/dget.pl:650
+msgid ""
+"Set to 'no' to disable extracting downloaded source packages. Default is "
+"'yes'."
+msgstr ""
+"À configurer à « no » pour désactiver l'extraction des paquets source "
+"téléchargés. La valeur par défaut est « yes »."
+
+#. type: =item
+#: ../scripts/dget.pl:653
+msgid "B<DGET_VERIFY>"
+msgstr "B<DGET_VERIFY>"
+
+#. type: textblock
+#: ../scripts/dget.pl:655
+msgid ""
+"Set to 'no' to disable checking signatures of downloaded source packages. "
+"Default is 'yes'."
+msgstr ""
+"À configurer à « no » pour désactiver la vérification des signatures des "
+"paquets source téléchargés. La valeur par défaut est « yes »."
+
+#. type: textblock
+#: ../scripts/dget.pl:662
+msgid ""
+"Download all I<.deb> files for the previous version of a package and run "
+"B<debdiff> on them:"
+msgstr ""
+"Télécharger tous les fichiers I<.deb> pour la version précédente d’un paquet "
+"et exécuter B<debdiff> avec eux :"
+
+#. type: verbatim
+#: ../scripts/dget.pl:665
+#, no-wrap
+msgid ""
+" dget --all mypackage=1.2-1\n"
+" debdiff --from *_1.2-1_*.deb --to *_1.2-2_*.deb\n"
+"\n"
+msgstr ""
+" dget --all monpaquet=1.2-1\n"
+" debdiff --from *_1.2-1_*.deb --to *_1.2-2_*.deb\n"
+"\n"
+
+#. type: =head1
+#: ../scripts/dget.pl:668
+msgid "BUGS AND COMPATIBILITY"
+msgstr "BOGUES ET COMPATIBILITÉ"
+
+#. type: textblock
+#: ../scripts/dget.pl:670
+msgid "B<dget> I<package> should be implemented in B<apt-get install -d>."
+msgstr "B<dget> I<paquet> devrait être implémenté dans B<apt-get install -d>."
+
+#. type: textblock
+#: ../scripts/dget.pl:672
+msgid ""
+"Before devscripts version 2.10.17, the default was not to extract the "
+"downloaded source. Set DGET_UNPACK=no to revert to the old behaviour."
+msgstr ""
+"Avant la version 2.10.17 de devscripts, le comportement par défaut était de "
+"ne pas extraire les paquets source téléchargés. Configurez DGET_UNPACK à "
+"« no » pour retrouver cet ancien comportement."
+
+#. type: textblock
+#: ../scripts/dget.pl:677
+msgid ""
+"This program is Copyright (C) 2005-2013 by Christoph Berg <myon@debian."
+"org>. Modifications are Copyright (C) 2005-06 by Julian Gilbey <jdg@debian."
+"org>."
+msgstr ""
+"Ce programme est Copyright (C) 2005-2013 Christoph Berg <myon@debian.org>. "
+"Les modifications sont Copyright (C) 2005-2006 Julian Gilbey <jdg@debian."
+"org>."
+
+#. type: textblock
+#: ../scripts/dget.pl:685
+msgid ""
+"B<apt-get>(1), B<curl>(1), B<debcheckout>(1), B<debdiff>(1), B<dpkg-"
+"source>(1), B<wget>(1)"
+msgstr ""
+"B<apt-get>(1), B<curl>(1), B<debcheckout>(1), B<debdiff>(1), B<dpkg-"
+"source>(1), B<wget>(1)"
+
+#. type: TH
+#: ../scripts/diff2patches.1:1
+#, no-wrap
+msgid "diff2patches"
+msgstr "diff2patches"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:1 ../scripts/diff2patches.1:50
+#, no-wrap
+msgid "Raphael Geissert E<lt>atomo64@gmail.comE<gt>"
+msgstr "Raphael Geissert E<lt>atomo64@gmail.comE<gt>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:5
+msgid "diff2patches - Extract non-debian/ patches from .diff.gz files"
+msgstr ""
+"diff2patches - Extraire les correctifs qui ne s'appliquent pas à debian/ "
+"dans des fichiers .diff.gz"
+
+#. type: SH
+#: ../scripts/diff2patches.1:5
+#, no-wrap
+msgid "SYNTAX"
+msgstr "SYNTAXE"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:8
+msgid "B<diff2patches >I<filename>"
+msgstr "B<diff2patches> I<nom_fichier>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:10
+msgid "B<diff2patches --help>|B<--version>"
+msgstr "B<diff2patches --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:16
+msgid ""
+"Extracts patches from .diff.gz which apply to files outside the ``debian/'' "
+"directory scope. A patch is created for each modified file. Each patch is "
+"named according to the path of the modified file, with ``/'' replaced by "
+"``___'', and an extension of ``.patch''."
+msgstr ""
+"Extraire les correctifs de .diff.gz qui ne s'appliquent au répertoire "
+"« debian/ ». Un correctif est créé par fichier modifié. Chaque correctif est "
+"nommé en fonction du chemin du fichier modifié, en remplaçant « / » par "
+"« ___ », et avec une extension « .patch »."
+
+#. type: TP
+#: ../scripts/diff2patches.1:18
+#, no-wrap
+msgid "I<filename>"
+msgstr "I<nom_fichier>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:22
+msgid ""
+"Extract patches from I<filename> which apply outside the ``debian/'' "
+"directory."
+msgstr ""
+"Extraire les correctifs de I<nom_fichier> qui ne s'appliquent pas au "
+"répertoire « debian/ »."
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:25
+msgid "Output help information and exit."
+msgstr "Afficher un message d'aide puis quitter."
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:28
+msgid "Output version information and exit."
+msgstr "Afficher les informations sur la version puis quitter."
+
+#. type: TP
+#: ../scripts/diff2patches.1:29
+#, no-wrap
+msgid "I<debian/control>"
+msgstr "I<debian/control>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:32
+msgid "Existence of this file is tested before any patch is extracted."
+msgstr "L'existence de ce fichier est testée avant d'extraire les correctifs."
+
+#. type: TP
+#: ../scripts/diff2patches.1:32
+#, no-wrap
+msgid "I<debian/>"
+msgstr "I<debian/>"
+
+#. type: TQ
+#: ../scripts/diff2patches.1:34
+#, no-wrap
+msgid "I<debian/patches/>"
+msgstr "I<debian/patches/>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:40
+msgid ""
+"Patches are extracted to one of these directories. ``debian/patches/'' is "
+"preferred, if it exists. If I<DEB_PATCHES> is present in the environment, "
+"it will override this behavior (see ``ENVIRONMENT VARIABLES'' section below)."
+msgstr ""
+"Les correctifs sont extraits dans ce répertoire. « debian/patches/ » est "
+"utilisé s'il existe. Si I<DEB_PATCHES> est définie, elle est prioritaire sur "
+"ce comportement (consultez la section B<VARIABLES D'ENVIRONNEMENT> ci-"
+"dessous)."
+
+#. type: TP
+#: ../scripts/diff2patches.1:41
+#, no-wrap
+msgid "B<DEB_PATCHES>"
+msgstr "B<DEB_PATCHES>"
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:45
+msgid ""
+"When defined and points to an existing directory, patches are extracted in "
+"that directory and not under ``debian/'' nor ``debian/patches/''."
+msgstr ""
+"Quand elle est présente et si elle pointe vers un répertoire existant, les "
+"correctifs sont extraits dans ce répertoire au lieu de les placer dans le "
+"répertoire « debian » ou « debian/patches »."
+
+#. type: Plain text
+#: ../scripts/diff2patches.1:48
+msgid "B<combinediff>(1)"
+msgstr "B<combinediff>(1)"
+
+#. type: TH
+#: ../scripts/dpkg-depcheck.1:1
+#, no-wrap
+msgid "DPKG-DEPCHECK"
+msgstr "DPKG-DEPCHECK"
+
+#. type: TH
+#: ../scripts/dpkg-depcheck.1:1
+#, no-wrap
+msgid "March 2002"
+msgstr "Mars 2002"
+
+#. type: TH
+#: ../scripts/dpkg-depcheck.1:1
+#, no-wrap
+msgid "dpkg-depcheck"
+msgstr "dpkg-depcheck"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:4
+msgid "dpkg-depcheck - determine packages used to execute a command"
+msgstr ""
+"dpkg-depcheck - Déterminer les paquets utilisés pour exécuter une commande"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:6
+msgid "B<dpkg-depcheck> [I<options>] I<command>"
+msgstr "B<dpkg-depcheck> [I<options>] I<commande>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:15
+msgid ""
+"This program runs the specified command under B<strace> and then determines "
+"and outputs the packages used in the process. The list can be trimmed in "
+"various ways as described in the options below. A good example of this "
+"program would be the command B<dpkg-depcheck -b debian/rules build>, which "
+"would give a good first approximation to the Build-Depends line needed by a "
+"Debian package. Note, however, that this does I<not> give any direct "
+"information on versions required or architecture-specific packages."
+msgstr ""
+"Ce programme exécute la commande indiquée avec B<strace> puis détermine et "
+"affiche la liste des paquets utilisés par ce processus. La liste est "
+"affectée par les options décrites plus bas. Un bon exemple d'utilisation de "
+"ce programme consiste à exécuter B<dpkg-depcheck -b debian/rules build>, qui "
+"donnera une première bonne approximation de la ligne des dépendances de "
+"construction (Build-Depends) du paquet Debian. Remarquez cependant que ça ne "
+"donne I<aucune> information sur les versions nécessaires ou sur les paquets "
+"spécifiques à une architecture."
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:22
+msgid ""
+"Report all packages used to run I<command>. This is the default behaviour. "
+"If used in conjunction with B<-b>, B<-d> or B<-m>, gives additional "
+"information on those packages skipped by these options."
+msgstr ""
+"Signaler les paquets utilisés pour exécuter la I<commande>, ce qui est le "
+"comportement par défaut. Utilisée avec B<-b>, B<-d> ou B<-m>, elle procure "
+"davantage d'informations sur les paquets ignorés par ces options."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:22
+#, no-wrap
+msgid "B<-b>, B<--build-depends>"
+msgstr "B<-b>, B<--build-depends>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:26
+msgid ""
+"Do not report any build-essential or essential packages used, or any of "
+"their (direct or indirect) dependencies."
+msgstr ""
+"Ne signaler aucune utilisation d'un paquet « essential » (essentiel) ou "
+"« build-essential » (essentiel pour la construction des paquets), ou d'une "
+"de leurs dépendances (directes ou indirectes)."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:26
+#, no-wrap
+msgid "B<-d>, B<--ignore-dev-deps>"
+msgstr "B<-d>, B<--ignore-dev-deps>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:30
+msgid ""
+"Do not show packages used which are direct dependencies of I<-dev> packages "
+"used. This implies B<-b>."
+msgstr ""
+"Ne pas afficher les paquets qui sont des dépendances directes des paquets I<-"
+"dev> utilisés, ce qui implique l'option B<-b>."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:30
+#, no-wrap
+msgid "B<-m>, B<--min-deps>"
+msgstr "B<-m>, B<--min-deps>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:34
+msgid ""
+"Output a minimal set of packages needed, taking into account direct "
+"dependencies. Using B<-m> implies B<-d> and also B<-b>."
+msgstr ""
+"Donner un ensemble minimaliste de paquets nécessaires, en prenant en compte "
+"les dépendances directes. Utiliser B<-m> implique B<-d> ainsi que B<-b>."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:34
+#, no-wrap
+msgid "B<-C>, B<--C-locale>"
+msgstr "B<-C>, B<--C-locale>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:37
+msgid "Run I<command> with the C locale."
+msgstr "Exécuter la I<commande> avec les paramètres régionaux (« locale ») C."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:37
+#, no-wrap
+msgid "B<--no-C-locale>"
+msgstr "B<--no-C-locale>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:40
+msgid "Don't change locale when running I<command>."
+msgstr "Ne pas changer la « locale » lors de l'exécution de I<commande>."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:40
+#, no-wrap
+msgid "B<-l>, B<--list-files>"
+msgstr "B<-l>, B<--list-files>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:43
+msgid "Also report the list of files used in each package."
+msgstr "Signaler également la liste des fichiers utilisés dans chaque paquet."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:43
+#, no-wrap
+msgid "B<--no-list-files>"
+msgstr "B<--no-list-files>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:47
+msgid "Do not report the files used in each package. Cancels a B<-l> option."
+msgstr ""
+"Ne pas signaler la liste des fichiers utilisés dans chaque paquet. Cette "
+"option annule l'option B<-l>."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:47
+#, no-wrap
+msgid "B<-o>, B<--output=>I<FILE>"
+msgstr "B<-o>, B<--output>=I<FICHIER>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:50
+msgid "Output the package diagnostics to I<FILE> instead of stdout."
+msgstr ""
+"Diriger le diagnostic du paquet dans le I<FICHIER> plutôt que sur la sortie "
+"standard."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:50
+#, no-wrap
+msgid "B<-O>, B<--strace-output=>I<FILE>"
+msgstr "B<-O>, B<--strace-output>=I<FICHIER>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:54
+msgid ""
+"Write the B<strace> output to I<FILE> when tracing I<command> instead of "
+"using a temporary file."
+msgstr ""
+"Écrire la sortie de B<strace> dans I<FICHIER> plutôt que dans un fichier "
+"temporaire lorsque la I<commande> est « tracée »."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:54
+#, no-wrap
+msgid "B<-I>, B<--strace-input=>I<FILE>"
+msgstr "B<-I>, B<--strace-input>=I<FICHIER>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:59
+msgid ""
+"Get B<strace> output from I<FILE> instead of tracing I<command>; B<strace> "
+"must have be run with the B<-f -q> options for this to work."
+msgstr ""
+"Utiliser la sortie B<strace> du I<FICHIER> au lieu de « tracer » la "
+"I<commande>. B<strace> doit avoir été exécuté avec les options B<-f -q> pour "
+"que cela fonctionne."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:59
+#, no-wrap
+msgid "B<-f>, B<--features=>I<LIST>"
+msgstr "B<-f>, B<--features>=I<LISTE>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:65
+msgid ""
+"Enable or disabled features given in the comma-separated I<LIST> as "
+"follows. A feature is enabled with I<+feature> or just I<feature> and "
+"disabled with I<-feature>. The currently recognised features are:"
+msgstr ""
+"Activer ou désactiver les fonctionnalités données dans la I<LISTE>. Les "
+"fonctionnalités sont séparées par des virgules. Une fonctionnalité est "
+"activée en précisant I<+fonctionnalité> ou juste I<fonctionnalité> ; elle "
+"est désactivée en précisant I<-fonctionnalité>. La liste des fonctionnalités "
+"reconnues actuellement est la suivante :"
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:67
+#, no-wrap
+msgid "B<warn-local>"
+msgstr "B<warn-local>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:71
+msgid ""
+"Warn if files in I</usr/local> or I</var/local> are used. Enabled by "
+"default."
+msgstr ""
+"Avertir si des fichiers de I</usr/local> ou I</var/local> sont utilisés. "
+"Cette option est activée par défaut."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:71
+#, no-wrap
+msgid "B<discard-check-version>"
+msgstr "B<discard-check-version>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:76
+msgid ""
+"Discards I<execve> when only a I<--version> argument is given to the "
+"program; this works around some configure scripts that check for binaries "
+"they don't actually use. Enabled by default."
+msgstr ""
+"Ne pas utiliser I<execve> lorsque seul un argument I<--version> est donné au "
+"programme. C'est une astuce pour les scripts « configure » qui recherchent "
+"des exécutables qu'ils n'utilisent pas en fait. Cette fonctionnalité est "
+"activée par défaut."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:76
+#, no-wrap
+msgid "B<trace-local>"
+msgstr "B<trace-local>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:81
+msgid ""
+"Also try to identify files which are accessed in I</usr/local> and I</var/"
+"local>. Not usually very useful, as Debian does not place files in these "
+"directories. Disabled by default."
+msgstr ""
+"Essayer également d'identifier les accès aux fichiers de I</usr/local> et I</"
+"var/local>. Ce n'est généralement pas très utile, puisque qu'aucun fichier "
+"n'y est placé par Debian. Cette fonctionnalité est désactivée par défaut."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:81
+#, no-wrap
+msgid "B<catch-alternatives>"
+msgstr "B<catch-alternatives>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:85
+msgid ""
+"Warn about access to files controlled by the Debian I<alternatives> "
+"mechanism. Enabled by default."
+msgstr ""
+"Avertir à propos des accès aux fichiers contrôlés par le système "
+"d'I<alternatives> de Debian. Cette fonctionnalité est activée par défaut."
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:85
+#, no-wrap
+msgid "B<discard-sgml-catalogs>"
+msgstr "B<discard-sgml-catalogs>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:90
+msgid ""
+"Discards access to SGML catalogs; some SGML tools read all the registered "
+"catalogs at startup. Files matching the regexp /usr/share/sgml/.*\\e.cat "
+"are recognised as catalogs. Enabled by default."
+msgstr ""
+"Ne pas prendre les accès aux catalogues SGML en considération. Certains "
+"outils lisent tous les catalogues au démarrage. Les fichiers qui "
+"correspondent à l'expression rationnelle /usr/share/sgml/.*\\e.cat sont "
+"considérés comme des catalogues. Cette fonctionnalité est activée par défaut."
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:99
+msgid "Display usage information and exit."
+msgstr "Afficher un message d'aide et quitter."
+
+#. type: =item
+#: ../scripts/dpkg-depcheck.1:99 ../scripts/mk-build-deps.pl:83
+#, no-wrap
+msgid "B<-v>, B<--version>"
+msgstr "B<-v>, B<--version>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:102
+msgid "Display version and copyright information and exit."
+msgstr "Afficher la version et le copyright puis quitter."
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:108 ../scripts/grep-excuses.1:34
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced in that order to set configuration variables. Command line options "
+"can be used to override configuration file settings. Environment variable "
+"settings are ignored for this purpose. The currently recognised variable is:"
+msgstr ""
+"Les deux fichiers de configuration I</etc/devscripts.conf> et I<~/."
+"devscripts> sont évalués dans cet ordre par un interpréteur de commandes "
+"pour placer les variables de configuration. Des options de ligne de commande "
+"peuvent être utilisées pour neutraliser les paramètres des fichiers de "
+"configuration. Les paramètres des variables d'environnement sont ignorés à "
+"cette fin. Si la première option donnée en ligne de commande est B<--"
+"noconf>, alors ces fichiers ne sont pas évalués. Les variables actuellement "
+"identifiées sont :"
+
+#. type: TP
+#: ../scripts/dpkg-depcheck.1:108
+#, no-wrap
+msgid "B<DPKG_DEPCHECK_OPTIONS>"
+msgstr "B<DPKG_DEPCHECK_OPTIONS>"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:112
+msgid ""
+"These are options which are parsed before the command-line options. For "
+"example,"
+msgstr ""
+"Il s'agit des options qui sont analysées avant les options de la ligne de "
+"commande. Par exemple :"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:114
+msgid "DPKG_DEPCHECK_OPTIONS=\"-b -f-catch-alternatives\""
+msgstr "DPKG_DEPCHECK_OPTIONS=\"-b -f-catch-alternatives\""
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:118
+msgid ""
+"which passes these options to B<dpkg-depcheck> before any command-line "
+"options are processed. You are advised not to try tricky quoting, because "
+"of the vagaries of shell quoting!"
+msgstr ""
+"qui permet de passer ces options à B<dpkg-depcheck> avant que les options de "
+"la ligne de commande soient analysées. Il est conseillé de ne pas jouer au "
+"plus fin avec les guillemets, car les interpréteurs de commandes sont assez "
+"capricieux à ce sujet !"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:123
+msgid ""
+"B<dpkg>(1), B<strace>(1), B<devscripts.conf>(5), B<update-alternatives>(8)"
+msgstr ""
+"B<dpkg>(1), B<strace>(1), B<devscripts.conf>(5), B<update-alternatives>(8)"
+
+#. type: SH
+#: ../scripts/dpkg-depcheck.1:123
+#, no-wrap
+msgid "COPYING"
+msgstr "COPYRIGHT"
+
+#. type: Plain text
+#: ../scripts/dpkg-depcheck.1:130
+msgid ""
+"Copyright 2001 Bill Allombert E<lt>ballombe@debian.orgE<gt>. Modifications "
+"copyright 2002,2003 Julian Gilbey E<lt>jdg@debian.orgE<gt>. B<dpkg-"
+"depcheck> is free software, covered by the GNU General Public License, "
+"version 2 or (at your option) any later version, and you are welcome to "
+"change it and/or distribute copies of it under certain conditions. There is "
+"absolutely no warranty for B<dpkg-depcheck>."
+msgstr ""
+"Copyright 2001 Bill Allombert E<lt>ballombe@debian.orgE<gt>. Modifications "
+"copyright 2002, 2003 Julian Gilbey E<lt>jdg@debian.orgE<gt>. B<dpkg-"
+"depcheck> est un logiciel libre, sous la licence publique générale GNU, "
+"version 2 ou ultérieure (comme vous le souhaitez). Vous êtes encouragés à "
+"apporter des modifications et/ou à distribuer des copies sous certaines "
+"conditions. Absolument aucune garantie n'est donnée pour B<dpkg-depcheck>."
+
+#. type: TH
+#: ../scripts/dpkg-genbuilddeps.1:1
+#, no-wrap
+msgid "DPKG-GENBUILDDEPS"
+msgstr "DPKG-GENBUILDDEPS"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:4
+msgid ""
+"dpkg-genbuilddeps - generate a list of packages used to build this package"
+msgstr ""
+"dpkg-genbuilddeps - Produire la liste des paquets utilisés pour la "
+"construction de ce paquet"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:6
+msgid "B<dpkg-genbuilddeps> [I<arg> ...]"
+msgstr "B<dpkg-genbuilddeps> [I<arg> ...]"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:19
+msgid ""
+"This program is a wrapper around B<dpkg-depcheck>(1). It should be run from "
+"the top of a Debian build tree. It calls B<dpkg-buildpackage> with any "
+"arguments given on the command line, and by tracing the execution of this, "
+"it determines which non-essential packages were used during the package "
+"building. This can be useful in determining what the I<Build-Depends> "
+"control fields should contain. It does not determine which packages were "
+"used for the arch independent parts of the build and which for the arch "
+"dependent parts, not does it attempt to determine which versions of packages "
+"are required. It should be able to run under B<fakeroot> rather than being "
+"run as root, as B<fakeroot dpkg-genbuilddeps>, or B<dpkg-genbuilddeps -"
+"rfakeroot>."
+msgstr ""
+"Ce programme encapsule les appels à B<dpkg-depcheck>(1). Il doit être "
+"exécuté depuis la racine d'une arborescence de construction d'un paquet "
+"Debian. Il appelle B<dpkg-buildpackage> avec tous les arguments donnés en "
+"ligne de commande, et en traçant son exécution, il détermine quels paquets "
+"non essentiels ont été utilisés pendant la construction du paquet. Cela peut "
+"s'avérer utile pour déterminer ce que doit contenir le champ I<Build-"
+"Depends> du fichier control. Il ne sépare pas les paquets utilisés pour "
+"l'étape de construction spécifique à une architecture et ceux utilisés pour "
+"l'étape non spécifique à une architecture ; il ne cherche pas non plus à "
+"déterminer les versions de paquets qui seront nécessaires. Il doit être "
+"capable de tourner avec B<fakeroot> plutôt que d'être exécuté en tant que "
+"superutilisateur, en utilisant B<fakeroot dpkg-genbuilddeps> ou B<dpkg-"
+"genbuilddeps -rfakeroot>."
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:23
+msgid ""
+"This program requires the build-essential package to be installed. If it is "
+"not, please use B<dpkg-depcheck> directly, with a command such as"
+msgstr ""
+"Ce programme nécessite que les paquets essentiels pour la construction des "
+"paquets (build-essential) soient installés. Dans le cas contraire, veuillez "
+"exécuter B<dpkg-depcheck> directement avec une commande comme :"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:25
+#, no-wrap
+msgid " dpkg-depcheck --all dpkg-buildpackage -us -uc -b -rfakeroot ...\n"
+msgstr " dpkg-depcheck --all dpkg-buildpackage -us -uc -b -rfakeroot ...\n"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:27
+msgid "All this program itself does is essentially to run the command:"
+msgstr "Ce programme ne fait que lancer la commande suivante :"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:29
+#, no-wrap
+msgid " dpkg-depcheck -b dpkg-buildpackage -us -uc -b -rfakeroot [arg ...]\n"
+msgstr " dpkg-depcheck -b dpkg-buildpackage -us -uc -b -rfakeroot [arg ...]\n"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:33
+msgid "B<dpkg-depcheck>(1), B<fakeroot>(1)"
+msgstr "B<dpkg-depcheck>(1), B<fakeroot>(1)"
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:36
+msgid "B<The Debian Policy Manual,> sections on Build-Depends etc."
+msgstr "La B<Charte Debian>, sections Build-Depends, etc."
+
+#. type: Plain text
+#: ../scripts/dpkg-genbuilddeps.1:40
+msgid ""
+"The original B<dpkg-genbuilddeps> was written by Ben Collins "
+"E<lt>bcollins@debian.orgE<gt>. The current version is a simple wrapper "
+"around B<dpkg-depcheck> written by Bill Allombert E<lt>ballombe@debian."
+"orgE<gt>. This manual page was written by Julian Gilbey E<lt>jdg@debian."
+"orgE<gt>."
+msgstr ""
+"La version initiale de B<dpkg-genbuilddeps> a été écrite par Ben Collins "
+"E<lt>bcollins@debian.orgE<gt>. La version actuelle est un simple « wrapper » "
+"autour de B<dpkg-depcheck> écrit par Bill Allombert E<lt>ballombe@debian."
+"orgE<gt>. Cette page de manuel a été écrite par Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+
+#. type: TH
+#: ../doc/edit-patch.1:1
+#, no-wrap
+msgid "EDIT-PATCH"
+msgstr "EDIT-PATCH"
+
+#. type: Plain text
+#: ../doc/edit-patch.1:5
+msgid ""
+"B<edit-patch>, B<add-patch> - tool for preparing patches for Debian source "
+"packages"
+msgstr ""
+"B<edit-patch>, B<add-patch> - Préparation de correctifs pour paquets source "
+"Debian"
+
+#. type: Plain text
+#: ../doc/edit-patch.1:8
+msgid "B<edit-patch> I<path/to/patch>"
+msgstr "B<edit-patch> I<chemin/vers/le/correctif>"
+
+#. type: Plain text
+#: ../doc/edit-patch.1:10
+msgid "B<add-patch> I<path/to/patch>"
+msgstr "B<add-patch> I<chemin/vers/le/correctif>"
+
+#. type: Plain text
+#: ../doc/edit-patch.1:18
+msgid ""
+"B<edit-patch> is a wrapper script around the Quilt, CDBS, and dpatch patch "
+"systems. It simplifies the process of preparing and editing patches to "
+"Debian source packages and allows the user to not have to be concerned with "
+"which patch system is in use. Run from inside the root directory of the "
+"source package, B<edit-patch> can be used to edit existing patches located "
+"in I<debian/patches>."
+msgstr ""
+"B<edit-patch> est une encapsulation des systèmes de correctif Quilt, CDBS et "
+"dpatch. Elle simplifie le processus de préparation et de modification des "
+"correctifs de paquets source Debian et permet à son utilisateur de ne pas se "
+"soucier du système de correctif utilisé. Exécutée depuis le répertoire "
+"racine d'un paquet source, B<edit-patch> permet de modifier les correctifs "
+"existants dans I<debian/patches>."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:25
+msgid ""
+"It can also be used to incorporate new patches. If pointed at a patch not "
+"already present, it will copy the patch to I<debian/patches> in the correct "
+"format for the patch system in use. Next, the patch is applied and a "
+"subshell is opened in order to edit the patch. Typing B<exit> or pressing "
+"Ctrl-d will close the subshell and launch an editor to record the I<debian/"
+"changelog> entry."
+msgstr ""
+"Elle permet aussi d'intégrer de nouveaux correctifs. Si le correctif indiqué "
+"n'est pas encore présent, il sera copié vers I<debian/patches> au format "
+"correspondant au système de correctif utilisé. Ensuite, le correctif sera "
+"appliqué et un interpréteur de commande sera ouvert pour modifier le "
+"correctif. Taper B<exit> ou appuyer sur Ctrl-d fermera l'interpréteur et "
+"ouvrira un éditeur pour enregistrer l'entrée de I<debian/changelog>."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:29
+msgid ""
+"B<edit-patch> is integrated with the Bazaar and Git version control "
+"systems. The patch will be automatically added to the tree, and the "
+"I<debian/changelog> entry will be used as the commit message."
+msgstr ""
+"B<edit-patch> est intégré au systèmes de gestion de version Bazaar et Git. "
+"Le correctif sera automatiquement ajouté à l'arbre, et l'entrée du fichier "
+"I<debian/changelog> sera utilisée comme message d'envoi (commit)."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:32
+msgid ""
+"If no patch system is present, the patch is applied inline, and a copy is "
+"stored in I<debian/patches-applied>."
+msgstr ""
+"Si aucun système de correctif n'est utilisé, le correctif est directement "
+"appliqué et une copie est conservée dans I<debian/patches-applied>."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:36
+msgid ""
+"B<add-patch> is the non-interactive version of B<edit-patch>. The patch "
+"will be incorporated but no editor or subshell will be spawned."
+msgstr ""
+"B<add-patch> est la version non interactive d'B<edit-patch>. Le correctif "
+"sera appliqué mais aucun éditeur ou interpréteur ne sera appelé."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:40
+msgid ""
+"B<edit-patch> was written by Daniel Holbach E<lt>daniel.holbach@canonical."
+"comE<gt>, Michael Vogt E<lt>michael.vogt@canonical.comE<gt>, and David "
+"Futcher E<lt>bobbo@ubuntu.comE<gt>."
+msgstr ""
+"B<edit-patch> a été écrit par Daniel Holbach E<lt>I<daniel.holbach@canonical."
+"com>E<gt>, Michael Vogt E<lt>I<michael.vogt@canonical.com>E<gt> et David "
+"Futcher E<lt>I<bobbo@ubuntu.com>E<gt>."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:42
+msgid ""
+"This manual page was written by Andrew Starr-Bochicchio E<lt>a.starr.b@gmail."
+"comE<gt>."
+msgstr ""
+"Cette page de manuel a été écrite par Andrew Starr-Bochicchio E<lt>I<a.starr."
+"b@gmail.com>E<gt>."
+
+#. type: Plain text
+#: ../doc/edit-patch.1:43
+msgid ""
+"Both are released under the terms of the GNU General Public License, version "
+"3."
+msgstr ""
+"Tous deux sont publiés sous les termes de la GNU General Public License, "
+"version 3."
+
+#. type: TH
+#: ../scripts/dscextract.1:1
+#, no-wrap
+msgid "DSCEXTRACT"
+msgstr "DSCEXTRACT"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:4
+msgid "dscextract - extract a single file from a Debian source package"
+msgstr "dscextract - Extraire un seul fichier d'un paquet source Debian"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:6
+msgid "B<dscextract> [I<options>] I<dscfile> I<file>"
+msgstr "B<dscextract> [I<options>] I<fichier_dsc> I<fichier>"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:11
+msgid ""
+"B<dscextract> reads a single file from a Debian source package. The idea is "
+"to only look into I<.diff.gz> files (source format 1.0) or I<.debian.tar.gz/"
+"bz2> files (source format 3.0) where possible, hence avoiding to unpack "
+"large tarballs. It is most useful for files in the I<debian/> subdirectory."
+msgstr ""
+"B<dscextract> lit un seul fichier à partir d'un paquet source Debian. L'idée "
+"est de regarder seulement les fichiers I<.diff.gz> (format source 1.0) ou I<."
+"debian.tar.gz/bz2> (format source 3.0) si possible, en évitant ainsi de "
+"dépaqueter de grosses archives. C'est particulièrement utile pour les "
+"fichiers du sous-répertoire I<debian/>."
+
+#. type: Plain text
+#: ../scripts/dscextract.1:14
+msgid ""
+"I<file> is relative to the first level directory contained in the package, i."
+"e. with the first component stripped."
+msgstr ""
+"I<fichier> est relatif au répertoire de premier niveau contenu dans le "
+"paquet, c'est-à-dire une fois enlevé le premier répertoire."
+
+#. type: TP
+#: ../scripts/dscextract.1:15
+#, no-wrap
+msgid "B<-f>"
+msgstr "B<-f>"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:20
+msgid ""
+"\"Fast\" mode. For source format 1.0, avoid to fall back scanning the I<."
+"orig.tar.gz> file if I<file> was not found in the I<.diff.gz>. (For 3.0 "
+"packages, it is assumed that I<debian/*> are exactly the contents of "
+"I<debian.tar.gz/bz2>.)"
+msgstr ""
+"Mode « rapide ». Pour le format source 1.0, éviter de se rabattre sur le "
+"balayage du fichier I<.orig.tar.gz> si I<fichier> n'a pas été trouvé dans le "
+"I<.diff.gz> (pour les paquets au format source 3.0, I<debian/*> est censé se "
+"trouver directement dans I<.debian.tar.gz/bz2>)."
+
+#. type: TP
+#: ../scripts/dscextract.1:21 ../scripts/uscan.1:552
+#: ../scripts/wnpp-check.1:26
+#, no-wrap
+msgid "0"
+msgstr "0"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:24
+msgid "I<file> was extracted."
+msgstr "I<fichier> a été extrait."
+
+#. type: Plain text
+#: ../scripts/dscextract.1:27
+msgid "I<file> was not found in the source package."
+msgstr "I<fichier> n'a pas été trouvé dans le paquet source."
+
+#. type: Plain text
+#: ../scripts/dscextract.1:30
+msgid "An error occurred, like I<dscfile> was not found."
+msgstr ""
+"Une erreur est survenue, I<fichier_dsc> n'a pas été trouvé par exemple."
+
+#. type: Plain text
+#: ../scripts/dscextract.1:32
+msgid "dscextract dds_2.1.1+ddd105-2.dsc debian/watch || test $? = 1"
+msgstr "dscextract dds_2.1.1+ddd105-2.dsc debian/watch || test $? = 1"
+
+#. type: Plain text
+#: ../scripts/dscextract.1:33
+msgid "B<dscextract> was written by Christoph Berg E<lt>myon@debian.orgE<gt>."
+msgstr ""
+"B<dscextract> a été écrit par Christoph Berg E<lt>I<myon@debian.org>E<gt>."
+
+#. type: TH
+#: ../scripts/dscverify.1:1
+#, no-wrap
+msgid "DSCVERIFY"
+msgstr "DSCVERIFY"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:4
+msgid "dscverify - verify the validity of a Debian package"
+msgstr "dscverify - Vérifier la validité d'un paquet Debian"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:6
+msgid ""
+"B<dscverify> [B<--keyring >I<keyring>] ... I<changes_or_dsc_filename> ..."
+msgstr ""
+"B<dscverify> [B<--keyring >I<trousseau_de_clefs>] ... "
+"I<fichier_changes_ou_dsc> ..."
+
+#. type: Plain text
+#: ../scripts/dscverify.1:17
+msgid ""
+"B<dscverify> checks that the GPG signatures on the given I<.changes> or I<."
+"dsc> files are good signatures made by keys in the current Debian keyrings, "
+"found in the I<debian-keyring> and I<debian-maintainers> packages. "
+"(Additional keyrings can be specified using the B<--keyring> option any "
+"number of times.) It then checks that the other files listed in the I<."
+"changes> or I<.dsc> files have the correct sizes and checksums (MD5 plus "
+"SHA1 and SHA256 if the latter are present). The exit status is 0 if there "
+"are no problems and non-zero otherwise."
+msgstr ""
+"B<dscverify> vérifie que les signatures GPG des fichiers I<.changes> ou I<."
+"dsc> sont des signatures correctes effectuées avec des clefs du trousseau de "
+"clefs Debian actuel, que l'on peut trouver dans les paquets I<debian-"
+"keyring> et I<debian-maintainers>. (Des trousseaux supplémentaires peuvent "
+"être précisés avec l'option B<--keyring> autant de fois que nécessaire.) Il "
+"vérifie ensuite que les fichiers listés dans les fichiers I<.changes> ou I<."
+"dsc> ont une taille et des sommes de contrôle (MD5 plus SHA1 et SHA256 si "
+"ces dernières sont présentes) correctes. La valeur de retour vaut 0 s'il n'y "
+"a pas de problème et une valeur non nulle dans le cas contraire."
+
+#. type: TP
+#: ../scripts/dscverify.1:18
+#, no-wrap
+msgid "B<--keyring>I< >I<keyring>"
+msgstr "B<--keyring> I<trousseau>"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:21
+msgid "Add I<keyring> to the list of keyrings to be used."
+msgstr "Ajoute un trousseau de clefs à la liste des trousseaux à utiliser."
+
+#. type: TP
+#: ../scripts/dscverify.1:21 ../scripts/who-uploads.1:25
+#, no-wrap
+msgid "B<--no-default-keyrings>"
+msgstr "B<--no-default-keyrings>"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:24
+msgid "Do not use the default set of keyrings."
+msgstr "Ne pas utiliser les trousseaux de clefs par défaut."
+
+#. type: TP
+#: ../scripts/dscverify.1:28
+#, no-wrap
+msgid "B<--nosigcheck>, B<--no-sig-check>, B<-u>"
+msgstr "B<--nosigcheck>, B<--no-sig-check>, B<-u>"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:32
+msgid ""
+"Skip the signature verification step. That is, only verify the sizes and "
+"checksums of the files listed in the I<.changes> or I<.dsc> files."
+msgstr ""
+"Omettre l'étape de vérification de signature. Vérifier uniquement la taille "
+"et les sommes de contrôle des fichiers listés dans le fichier I<.changes> ou "
+"I<.dsc>."
+
+#. type: TP
+#: ../scripts/dscverify.1:32 ../scripts/plotchangelog.1:78
+#: ../scripts/uscan.1:459
+#, no-wrap
+msgid "B<--verbose>"
+msgstr "B<--verbose>"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:35
+msgid "Do not suppress GPG output."
+msgstr "Ne pas supprimer la sortie de GPG."
+
+# NOTE: presque identique, manque la surcharge par les options
+#. type: Plain text
+#: ../scripts/dscverify.1:49
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. "
+"Environment variable settings are ignored for this purpose. If the first "
+"command line option given is B<--noconf> or B<--no-conf>, then these files "
+"will not be read. The currently recognised variable is:"
+msgstr ""
+"Les deux fichiers de configuration I</etc/devscripts.conf> et I<~/."
+"devscripts> sont évalués dans cet ordre par un interpréteur de commandes "
+"(« shell ») pour placer les variables de configuration. Des options de ligne "
+"de commande peuvent être utilisées pour neutraliser les paramètres des "
+"fichiers de configuration. Les paramètres des variables d'environnement sont "
+"ignorés à cette fin. Si la première option donnée en ligne de commande est "
+"B<--noconf> ou B<--no-conf>, alors ces fichiers ne sont pas évalués. Les "
+"variables actuellement identifiées sont :"
+
+#. type: TP
+#: ../scripts/dscverify.1:49
+#, no-wrap
+msgid "B<DSCVERIFY_KEYRINGS>"
+msgstr "B<DSCVERIFY_KEYRINGS>"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:53
+msgid ""
+"This is a colon-separated list of extra keyrings to use in addition to any "
+"specified on the command line."
+msgstr ""
+"Liste de trousseaux de clefs supplémentaires (séparés par des « : ») à "
+"utiliser en plus de ceux indiqués en ligne de commande."
+
+#. type: SH
+#: ../scripts/dscverify.1:53
+#, no-wrap
+msgid "KEYRING"
+msgstr "TROUSSEAU DE CLEFS"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:60
+msgid ""
+"Please note that the keyring provided by the debian-keyring package can be "
+"slightly out of date. The latest version can be obtained with rsync, as "
+"documented in the README that comes with debian-keyring. If you sync the "
+"keyring to a non-standard location (see below), you can use the "
+"possibilities to specify extra keyrings, by either using the above mentioned "
+"configuration option or the --keyring option."
+msgstr ""
+"Veuillez noter que le trousseau de clefs fourni par le paquet debian-keyring "
+"peut ne pas être complètement à jour. La dernière version peut être obtenue "
+"avec rsync, comme c'est documenté dans le fichier README fourni avec debian-"
+"keyring. Si vous synchronisez le trousseau de clefs à un emplacement non "
+"standard (voir ci-dessous), vous pouvez utiliser la possibilité d'indiquer "
+"des trousseaux supplémentaires soit en utilisant l'option de configuration "
+"mentionnée ci-dessus, soit en utilisant l'option --keyring."
+
+#. type: Plain text
+#: ../scripts/dscverify.1:62
+msgid "Below is an example for an alias:"
+msgstr "Voici un exemple d'alias :"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:64
+msgid "alias dscverify='dscverify --keyring ~/.gnupg/pubring.gpg'"
+msgstr "alias dscverify='dscverify --keyring ~/.gnupg/pubring.gpg'"
+
+#. type: SH
+#: ../scripts/dscverify.1:64
+#, no-wrap
+msgid "STANDARD KEYRING LOCATIONS"
+msgstr "EMPLACEMENTS STANDARDS DES TROUSSEAUX"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:67
+msgid ""
+"By default dscverify searches for the debian-keyring in the following "
+"locations:"
+msgstr ""
+"Par défaut, dscverify recherche le trousseau de clefs debian aux "
+"emplacements suivants :"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:69
+msgid "- ~/.gnupg/trustedkeys.gpg"
+msgstr "- ~/.gnupg/trustedkeys.gpg"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:71
+msgid "- /org/keyring.debian.org/keyrings/debian-keyring.gpg"
+msgstr "- /org/keyring.debian.org/keyrings/debian-keyring.gpg"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:73
+msgid "- /usr/share/keyrings/debian-keyring.gpg"
+msgstr "- /usr/share/keyrings/debian-keyring.gpg"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:75
+msgid "- /usr/share/keyrings/debian-maintainers.gpg"
+msgstr "- /usr/share/keyrings/debian-maintainers.gpg"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:78
+msgid "B<gpg>(1), B<devscripts.conf>(5)"
+msgstr "B<gpg>(1), B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/dscverify.1:82
+msgid ""
+"B<dscverify> was written by Roderick Schertler E<lt>roderick@argon.orgE<gt> "
+"and posted on the debian-devel@lists.debian.org mailing list, with several "
+"modifications by Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"B<dscverify> a été écrit par Roderick Schertler E<lt>roderick@argon."
+"orgE<gt>, et posté sur la liste de diffusion debian-devel@lists.debian.org. "
+"Certaines modifications ont été apportées par Julian Gilbey E<lt>jdg@debian."
+"orgE<gt>."
+
+#. type: TH
+#: ../scripts/getbuildlog.1:1
+#, no-wrap
+msgid "GETBUILDLOG"
+msgstr "GETBUILDLOG"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:4
+msgid "getbuildlog - download build logs from Debian auto-builders"
+msgstr ""
+"getbuildlog - Télécharger les journaux de construction des serveurs Debian "
+"de construction automatique"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:8
+msgid ""
+"B<getbuildlog> I<package> [I<version-pattern>] [I<architecture-pattern>]"
+msgstr "B<getbuildlog> I<paquet> [I<modèle-version>] [I<modèle-architecture>]"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:17
+msgid ""
+"B<getbuildlog> downloads build logs of I<package> from Debian auto-builders. "
+"It downloads build logs of all versions and for all architectures if "
+"I<version-pattern> and I<architecture-pattern> are not specified or empty, "
+"otherwise only build logs whose versions match I<version-pattern> and build "
+"logs whose architectures match I<architecture-pattern> will be downloaded. "
+"The version and architecture patterns are interpreted as extended regular "
+"expressions as described in B<grep>(1)."
+msgstr ""
+"B<getbuildlog> télécharge les journaux de construction de I<paquet> depuis "
+"les serveurs Debian de construction automatique. Il télécharge les journaux "
+"de construction de toutes les versions et de toutes les architectures si "
+"I<modèle-version> et I<modèle-architecture> ne sont pas indiqués ou sont "
+"vides, sinon, seuls les journaux de construction pour les versions "
+"correspondant à I<modèle-version> et dont l'architecture correspond à "
+"I<modèle-architecture> seront téléchargés. Les modèles de version et "
+"d'architectures sont interprétés comme des expressions rationnelles "
+"étendues, décrites dans B<grep>(1)."
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:21
+msgid ""
+"If I<version-pattern> is \"last\" then only the logs for the most recent "
+"version of I<package> found on buildd.debian.org will be downloaded."
+msgstr ""
+"Si I<modèle-version> vaut « last », alors seuls les journaux de la version "
+"la plus récente de I<paquet> trouvée sur buildd.debian.org seront "
+"téléchargés."
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:24
+msgid ""
+"If I<version-pattern> is \"last-all\" then the logs for the most recent "
+"version found on each build log index will be downloaded."
+msgstr ""
+"Si I<modèle-version> vaut « last-all », alors les journaux pour la version "
+"la plus récente de I<paquet> trouvée dans chaque index de journaux de "
+"construction seront téléchargés."
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:28
+msgid "Show usage information and examples."
+msgstr "Afficher un message d'aide et des exemples."
+
+#. type: TP
+#: ../scripts/getbuildlog.1:32
+#, no-wrap
+msgid "getbuildlog hello 2\\e.2-1 amd64"
+msgstr "getbuildlog hello 2\\e.2-1 amd64"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:35
+msgid "Download amd64 build log for hello version 2.2-1."
+msgstr ""
+"Télécharger le journal de construction amd64 pour la version 2.2-1 de hello"
+
+#. type: TP
+#: ../scripts/getbuildlog.1:35
+#, no-wrap
+msgid "getbuildlog glibc \"\" mips.*"
+msgstr "getbuildlog glibc \"\" mips.*"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:38
+msgid "Download mips(el) build logs of all glibc versions."
+msgstr ""
+"Télécharger les journaux de construction mips(el) pour toutes les versions "
+"de la glibc."
+
+#. type: TP
+#: ../scripts/getbuildlog.1:38
+#, no-wrap
+msgid "getbuildlog wesnoth .*bpo.*"
+msgstr "getbuildlog wesnoth .*bpo.*"
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:41
+msgid "Download all build logs of backported wesnoth versions."
+msgstr ""
+"Télécharger tous les journaux de construction des versions rétro-portées de "
+"wesnoth."
+
+#. type: Plain text
+#: ../scripts/getbuildlog.1:42
+msgid "Written by Frank S. Thomas E<lt>fst@debian.orgE<gt>."
+msgstr "Écrit par Frank S. Thomas E<lt>fst@debian.orgE<gt>."
+
+#. type: TH
+#: ../scripts/grep-excuses.1:1
+#, no-wrap
+msgid "GREP-EXCUSES"
+msgstr "GREP-EXCUSES"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:4
+msgid ""
+"grep-excuses - search the testing excuses files for a specific maintainer"
+msgstr ""
+"grep-excuses - Rechercher les fichiers d'excuses pour testing d'un "
+"responsable"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:6
+msgid "B<grep-excuses> [I<options>] [I<maintainer>|I<package>]"
+msgstr "B<grep-excuses> [I<options>] [I<responsable>|I<paquet>]"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:13
+msgid ""
+"B<grep-excuses> downloads the update_excuses.html file and greps it for the "
+"specified maintainer name. The B<libwww-perl> package is required for this "
+"script. If no name is given on the command line, first the environment "
+"variable B<DEBFULLNAME> is used if it is defined, and failing that, the "
+"configuration variable described below is used."
+msgstr ""
+"B<grep-excuses> télécharge le fichier update_excuses.html et y recherche "
+"(avec grep) un certain nom de responsable. Le paquet B<libwww-perl> est "
+"nécessaire pour ce script. Si aucun nom n'est fourni en ligne de commande, "
+"la variable d'environnement B<DEBFULLNAME> est utilisée si elle est définie "
+"et sinon, la variable de configuration décrite plus bas est utilisée."
+
+#. type: TP
+#: ../scripts/grep-excuses.1:18
+#, no-wrap
+msgid "B<--wipnity>, B<-w>"
+msgstr "B<--wipnity>, B<-w>"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:22
+msgid ""
+"Get information from E<lt>https://release.debian.org/migration/E<gt>. A "
+"package name must be given when using this option."
+msgstr ""
+"Récupérer les informations de E<lt>https://release.debian.org/migration/"
+"E<gt>. Un nom de paquet doit être fourni quand on utilise cette option."
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:25 ../scripts/whodepends.1:14
+msgid "Show a brief usage message."
+msgstr "Affiche un bref message d'aide."
+
+#. type: TP
+#: ../scripts/grep-excuses.1:34
+#, no-wrap
+msgid "B<GREP_EXCUSES_MAINTAINER>"
+msgstr "B<GREP_EXCUSES_MAINTAINER>"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:38
+msgid ""
+"The default maintainer, email or package to grep for if none is specified on "
+"the command line."
+msgstr ""
+"Le responsable, l'adresse électronique ou le paquet qui sera utilisé par "
+"défaut si aucun n'est indiqué en ligne de commande."
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:40 ../scripts/plotchangelog.1:126
+msgid "B<devscripts.conf>(5)"
+msgstr "B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/grep-excuses.1:42
+msgid ""
+"Joey Hess E<lt>joeyh@debian.orgE<gt>; modifications by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Joey Hess E<lt>joeyh@debian.orgE<gt> ; modifications par Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:24
+msgid "licensecheck - simple license checker for source files"
+msgstr "licensecheck - Vérificateur de licence pour fichiers source"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:28
+msgid "B<licensecheck> B<--help>|B<--version>"
+msgstr "B<licensecheck> B<--help>|B<--version>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:30
+msgid ""
+"B<licensecheck> [B<--no-conf>] [B<--verbose>] [B<--copyright>] [B<-l>|B<--"
+"lines=>I<N>] [B<-i>|B<--ignore=>I<regex>] [B<-c>|B<--check=>I<regex>] [B<-m>|"
+"B<--machine>] [B<-r>|B<--recursive>] I<list of files and directories to "
+"check>"
+msgstr ""
+"B<licensecheck> [B<--no-conf>] [B<--verbose>] [B<--copyright>] [B<-l>|B<--"
+"lines=>I<N>] [B<-i>|B<--ignore=>I<regex>] [B<-c>|B<--check=>I<regex>] [B<-m>|"
+"B<--machine>] [B<-r>|B<--recursive>] I<liste de fichiers ou répertoires à "
+"vérifier>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:37
+msgid ""
+"B<licensecheck> attempts to determine the license that applies to each file "
+"passed to it, by searching the start of the file for text belonging to "
+"various licenses."
+msgstr ""
+"B<licensecheck> cherche à déterminer la licence qui s'applique à chaque "
+"fichier qui lui est fourni en recherchant, au début du fichier, différents "
+"blocs de texte qui appartiennent à des licences."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:41
+msgid ""
+"If any of the arguments passed are directories, B<licensecheck> will add the "
+"files contained within to the list of files to process."
+msgstr ""
+"Si un des paramètre est un répertoire, B<licensecheck> ajoutera les fichiers "
+"contenus dans ce répertoire à la liste des fichiers à analyser."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:48
+msgid "B<--verbose>, B<--no-verbose>"
+msgstr "B<--verbose>, B<--no-verbose>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:50
+msgid ""
+"Specify whether to output the text being processed from each file before the "
+"corresponding license information."
+msgstr ""
+"Indiquer s'il faut afficher le texte analysé pour chacun des fichiers avant "
+"les informations sur la licence du fichier."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:53
+msgid "Default is to be quiet."
+msgstr "Le comportement par défaut est d'être silencieux."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:55
+msgid "B<-l=>I<N>, B<--lines=>I<N>"
+msgstr "B<-l=>I<N>, B<--lines=>I<N>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:57
+msgid ""
+"Specify the number of lines of each file's header which should be parsed for "
+"license information. (Default is 60)."
+msgstr ""
+"Indiquer le nombre de lignes de chaque en-tête de fichier qui doivent être "
+"analysées pour rechercher les informations sur les licences (par défaut, "
+"c'est 60 lignes)."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:60
+msgid "B<-i=>I<regex>, B<--ignore=>I<regex>"
+msgstr "B<-i=>I<regex>, B<--ignore=>I<regex>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:62
+msgid ""
+"When processing the list of files and directories, the regular expression "
+"specified by this option will be used to indicate those which should not be "
+"considered (e.g. backup files, VCS metadata)."
+msgstr ""
+"Lors du traitement de la liste des fichiers et répertoires, l'expression "
+"rationnelle précisée par cette option sera utilisée pour indiquer les "
+"fichiers ou répertoires qui ne doivent pas être traités (par exemple les "
+"fichiers de sauvegarde ou les fichiers des systèmes de gestion de "
+"configuration)."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:66
+msgid "B<-r>, B<--recursive>"
+msgstr "B<-r>, B<--recursive>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:68
+msgid "Specify that the contents of directories should be added recursively."
+msgstr ""
+"Indiquer que le contenu des répertoires doit être ajouté récursivement."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:71
+msgid "B<-c=>I<regex>, B<--check=>I<regex>"
+msgstr "B<-c=>I<regex>, B<--check=>I<regex>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:73
+msgid ""
+"Specify a pattern against which filenames will be matched in order to decide "
+"which files to check the license of."
+msgstr ""
+"Indiquer un modèle utilisé pour définir les fichiers dont la licence doit "
+"être vérifiée."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:76
+msgid "The default includes common source files."
+msgstr "La valeur par défaut comprend différents fichiers source usuels."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:78
+msgid "B<--copyright>"
+msgstr "B<--copyright>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:80
+msgid "Also display copyright text found within the file"
+msgstr ""
+"Afficher aussi les blocs de texte de copyright trouvés dans le fichier."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:82
+msgid "B<-m>, B<--machine>"
+msgstr "B<-m>, B<--machine>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:84
+msgid ""
+"Display the information in a machine readable way, i.e. in the form "
+"<file><tab><license>[<tab><copyright>] so that it can be easily sorted and/"
+"or filtered, e.g. with the B<awk> and B<sort> commands. Note that using the "
+"B<--verbose> option will kill the readability."
+msgstr ""
+"Afficher les renseignements de façon lisible par une machine, c'est à dire "
+"sous la forme <fichier><tab><licence>[<tab><copyright>] afin d'être "
+"facilement triés ou filtrés, par exemple avec les commandes B<awk> et "
+"B<sort>. Remarquez que l'utilisation de l'option B<--verbose> va ruiner la "
+"lisibilité."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:91
+msgid ""
+"Do not read any configuration files. This can only be used as the first "
+"option given on the command line."
+msgstr ""
+"Ne lire aucun fichier de configuration. L'option ne peut être utilisée qu'en "
+"première position de la ligne de commande."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:106
+msgid "B<LICENSECHECK_VERBOSE>"
+msgstr "B<LICENSECHECK_VERBOSE>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:108
+msgid ""
+"If this is set to I<yes>, then it is the same as the B<--verbose> command "
+"line parameter being used. The default is I<no>."
+msgstr ""
+"Si elle est définie à I<yes>, équivaut à utiliser l'option B<--verbose> de "
+"la ligne de commande. La valeur par défaut est I<no>."
+
+#. type: =item
+#: ../scripts/licensecheck.pl:111
+msgid "B<LICENSECHECK_PARSELINES>"
+msgstr "B<LICENSECHECK_PARSELINES>"
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:113
+msgid ""
+"If this is set to a positive number then the specified number of lines at "
+"the start of each file will be read whilst attempting to determine the "
+"license(s) in use. This is equivalent to the B<--lines> command line option."
+msgstr ""
+"Si elle est configurée avec un nombre positif, alors le nombre de lignes "
+"indiqué au début des fichiers sera lu pour essayer de déterminer la ou les "
+"licences utilisées. C'est équivalent à utiliser l'option B<--lines> de la "
+"ligne de commande."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:122
+msgid ""
+"This code is copyright by Adam D. Barratt <I<adam@adam-barratt.org.uk>>, all "
+"rights reserved; based on a script of the same name from the KDE SDK, which "
+"is copyright by <I<dfaure@kde.org>>. This program comes with ABSOLUTELY NO "
+"WARRANTY. You are free to redistribute this code under the terms of the GNU "
+"General Public License, version 2 or later."
+msgstr ""
+"Ce code est copyright Adam D. Barratt <I<adam@adam-barratt.org.uk>>, tous "
+"droits réservés ; basé sur un script du même nom du SDK KDE, copyright "
+"<I<dfaure@kde.org>>. Ce programme est fourni SANS AUCUNE GARANTIE. Vous êtes "
+"libre de redistribuer ce code sous les termes de la licence publique "
+"générale GNU (GNU General Public Licence), version 2 ou ultérieure."
+
+#. type: textblock
+#: ../scripts/licensecheck.pl:131
+msgid "Adam D. Barratt <adam@adam-barratt.org.uk>"
+msgstr "Adam D. Barratt <adam@adam-barratt.org.uk>"
+
+#. type: TH
+#: ../scripts/list-unreleased.1:1
+#, no-wrap
+msgid "LIST-UNRELEASED"
+msgstr "LIST-UNRELEASED"
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:4
+msgid "list-unreleased - display UNRELEASED packages"
+msgstr ""
+"list-unreleased - Afficher les paquets qui ne sont pas encore envoyés "
+"(UNRELEASED)"
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:6
+msgid "B<list-unreleased> [I<arg> ...] [I<path> ...]"
+msgstr "B<list-unreleased> [I<param> ...] [I<chemin> ...]"
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:9
+msgid ""
+"Searches for packages whose changelogs indicate there are pending changes "
+"(UNRELEASED) and either lists them or displays the relevant changelog entry."
+msgstr ""
+"Rechercher des paquets dont le journal des modifications indique qu'il y a "
+"des changements en cours (UNRELEASED) et lister ces paquets ou les entrées "
+"des journaux des modifications correspondants."
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:12
+msgid ""
+"By default it searches for packages under the current directory. If a path "
+"is specified it will look for packages under that directory instead."
+msgstr ""
+"Par défaut, il recherche les paquets dans le répertoire en cours. Si un "
+"chemin est fourni, la recherche est à la place effectuée dans le répertoire "
+"indiqué."
+
+#. type: TP
+#: ../scripts/list-unreleased.1:13
+#, no-wrap
+msgid "B<-c>"
+msgstr "B<-c>"
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:16
+msgid "Display pending changes."
+msgstr "Afficher les modifications en cours."
+
+#. type: TP
+#: ../scripts/list-unreleased.1:16
+#, no-wrap
+msgid "B<-R>"
+msgstr "B<-R>"
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:19
+msgid "Don't recurse into subdirectories looking for packages."
+msgstr "Ne pas rechercher récursivement les paquets dans les sous-répertoires."
+
+#. type: Plain text
+#: ../scripts/list-unreleased.1:23
+msgid ""
+"B<list-unreleased> was written by Frans Pop E<lt>elendil@planet.nlE<gt>. "
+"This manual page was written by Joey Hess E<lt>joeyh@debian.orgE<gt>."
+msgstr ""
+"B<list-unreleased> a été écrit par Frans Pop E<lt>elendil@planet.nlE<gt>. "
+"Cette page de manuel a été écrite par Joey Hess E<lt>joeyh@debian.orgE<gt>."
+
+#. type: TH
+#: ../scripts/manpage-alert.1:1
+#, no-wrap
+msgid "MANPAGE-ALERT"
+msgstr "MANPAGE-ALERT"
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:4
+msgid "manpage-alert - check for binaries without corresponding manpages"
+msgstr "manpage-alert - Chercher des programmes sans page de manuel"
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:6
+msgid "B<manpage-alert> [I<path list>]"
+msgstr "B<manpage-alert> [I<liste de chemins>]"
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:8
+msgid "B<manpage-alert --help>|B<--version>"
+msgstr "B<manpage-alert --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:11
+msgid ""
+"B<manpage-alert> searches the given list of paths for binaries without "
+"corresponding manpages."
+msgstr ""
+"B<manpage-alert> recherche dans la liste des chemins fournie les binaires "
+"qui n'ont pas de page de manuel correspondante."
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:14
+msgid ""
+"If no paths are specified on the command line, the path list I</bin /sbin /"
+"usr/bin /usr/sbin /usr/games> will be assumed."
+msgstr ""
+"Si aucun chemin n'est indiqué sur la ligne de commande, la liste suivante "
+"est utilisée : I</bin /sbin /usr/bin /usr/sbin /usr/games>."
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:17
+msgid "B<--help>, B<-h> Show a summary of options."
+msgstr "B<--help>, B<-h> Afficher un résumé des options."
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:25
+msgid ""
+"B<manpage-alert> was written by Branden Robinson and modified by Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt> and Adam D. Barratt E<lt>debian-bts@adam-"
+"barratt.org.ukE<gt> (who also wrote this manpage) for the devscripts package."
+msgstr ""
+"B<manpage-alert> a été écrit par Branden Robinson et a été modifié par "
+"Julian Gilbey E<lt>jdg@debian.orgE<gt> et Adam D. Barratt E<lt>debian-"
+"bts@adam-barratt.org.ukE<gt> (qui a également écrit cette page de manuel) "
+"pour le paquet devscripts."
+
+#. type: Plain text
+#: ../scripts/manpage-alert.1:28
+msgid ""
+"This manpage and the associated program are licensed under the terms of the "
+"GPL, version 2 or later."
+msgstr ""
+"Cette page de manuel et le programme associé sont publiés sous licence GPL, "
+"version 2 ou ultérieure."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:23
+msgid "mass-bug - mass-file a bug report against a list of packages"
+msgstr ""
+"mass-bug - Soumettre en masse un rapport de bogue contre une liste de paquets"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:27
+msgid ""
+"B<mass-bug> [I<options>] B<--subject=\">I<bug subject>B<\"> I<template "
+"package-list>"
+msgstr ""
+"B<mass-bug> [I<options>] B<--subject=\">I<sujet du bogue>B<\"> I<modèle "
+"liste-des-paquets>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:31
+msgid ""
+"mass-bug assists in filing a mass bug report in the Debian BTS on a set of "
+"packages. For each package in the package-list file (which should list one "
+"package per line together with an optional version number separated from the "
+"package name by an underscore), it fills out the template, adds BTS pseudo-"
+"headers, and either displays or sends the bug report."
+msgstr ""
+"mass-bug aide à soumettre un rapport de bogue en masse dans le BTS de "
+"Debian, sur un ensemble de paquets. Pour chaque paquet dans le fichier liste-"
+"des-paquets (qui doit lister un paquet par ligne, avec un numéro de version "
+"optionnel séparé du paquet par un tiret-bas), cette commande récupère le "
+"modèle, ajoute les pseudo-en-têtes du BTS, et affiche ou envoie le rapport "
+"de bogue."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:37
+msgid ""
+"Warning: Some care has been taken to avoid unpleasant and common mistakes, "
+"but this is still a power tool that can generate massive amounts of bug "
+"report mails. Use it with care, and read the documentation in the "
+"Developer's Reference about mass filing of bug reports first."
+msgstr ""
+"Attention : il faut être prudent pour éviter des erreurs déplaisantes et "
+"habituelles, mais il s'agit toujours d'un outil puissant qui peut produire "
+"un grand nombre de messages pour un rapport de bogue. Utilisez-le avec "
+"précautions, et lisez d'abord la documentation dans la référence du "
+"développeur sur l'envoi de rapports de bogue en masse."
+
+#. type: =head1
+#: ../scripts/mass-bug.pl:42
+msgid "TEMPLATE"
+msgstr "MODÈLE"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:44
+msgid ""
+"The template file is the body of the message that will be sent for each bug "
+"report, excluding the BTS pseudo-headers. In the template, #PACKAGE# is "
+"replaced with the name of the package. If a version was specified for the "
+"package, #VERSION# will be replaced by that version."
+msgstr ""
+"Le fichier modèle représente le corps du message qui sera envoyé pour chaque "
+"rapport de bogue, sans les pseudo-en-têtes du BTS. Dans le modèle, #PACKAGE# "
+"est remplacé par le nom du paquet. Si une version a été indiquée pour le "
+"paquet, #VERSION# sera remplacé par cette version."
+
+# NOTE: missing #? (in #EPOCH#UPSTREAM_VERSION##REVISION#)
+#. type: textblock
+#: ../scripts/mass-bug.pl:49
+msgid ""
+"The components of the version number may be specified using #EPOCH#, "
+"#UPSTREAM_VERSION# and #REVISION#. #EPOCH# includes the trailing colon and "
+"#REVISION# the leading dash so that #EPOCH#UPSTREAM_VERSION##REVISION# is "
+"always the same as #VERSION#."
+msgstr ""
+"Les différentes parties du numéro de version peuvent être indiquées en "
+"utilisant #EPOCH#, #UPSTREAM_VERSION# et #REVISION#. #EPOCH# contient le "
+"« : » de fin et #REVISION# contient le tiret de début, de telle sorte que "
+"#EPOCH##UPSTREAM_VERSION##REVISION# est toujours identique à #VERSION#."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:54
+msgid ""
+"Note that text in the template will be automatically word-wrapped to 70 "
+"columns, up to the start of a signature (indicated by S<'-- '> at the start "
+"of a line on its own). This is another reason to avoid including BTS pseudo-"
+"headers in your template."
+msgstr ""
+"Remarquez que le texte dans le modèle sera automatiquement ajusté à "
+"70 colonnes par ligne, jusqu'au début de la signature (indiqué par une ligne "
+"commençant par la chaîne S<'-- '>). C'est une autre raison pour laquelle il "
+"faut éviter les pseudo-en-têtes dans les modèles."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:61
+msgid ""
+"B<mass-bug> examines the B<devscripts> configuration files as described "
+"below. Command line options override the configuration file settings, "
+"though."
+msgstr ""
+"B<mass-bug> examine les fichiers de configuration de B<devscripts> comme "
+"décrit ci-dessous. Les options en ligne de commande permettent de remplacer "
+"les paramètres des fichiers de configuration."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:67
+msgid ""
+"B<--severity=>(B<wishlist>|B<minor>|B<normal>|B<important>|B<serious>|"
+"B<grave>|B<critical>)"
+msgstr ""
+"B<--severity=>(B<wishlist>|B<minor>|B<normal>|B<important>|B<serious>|"
+"B<grave>|B<critical>)"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:69
+msgid ""
+"Specify the severity with which bugs should be filed. Default is B<normal>."
+msgstr ""
+"Indiquer la sévérité avec laquelle soumettre les bogues. Par défaut, "
+"B<normal> est utilisé."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:72
+msgid "B<--display>"
+msgstr "B<--display>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:74
+msgid ""
+"Fill out the templates for each package and display them all for "
+"verification. This is the default behavior."
+msgstr ""
+"Complète les modèles pour chaque paquet et les affiche tous pour être "
+"vérifiés. C'est le comportement par défaut."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:77
+msgid "B<--send>"
+msgstr "B<--send>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:79
+msgid "Actually send the bug reports."
+msgstr "Envoie réellement les rapports de bogue."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:81
+msgid "B<--subject=\">I<bug subject>B<\">"
+msgstr "B<--subject=\">I<sujet du bogue>B<\">"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:83
+msgid ""
+"Specify the subject of the bug report. The subject will be automatically "
+"prefixed with the name of the package that the bug is filed against."
+msgstr ""
+"Indiquer le sujet du rapport de bogue. Le sujet sera automatiquement préfixé "
+"par le nom du paquet contre lequel le bogue est soumis."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:86
+msgid "B<--tags>"
+msgstr "B<--tags>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:88
+msgid "Set the BTS pseudo-header for tags."
+msgstr "Définir le pseudo-en-tête « tags » pour le BTS."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:90
+msgid "B<--user>"
+msgstr "B<--user>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:92
+msgid "Set the BTS pseudo-header for a usertags' user."
+msgstr ""
+"Définir le pseudo-en-tête définissant l'utilisateur des usertags pour le BTS."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:94
+msgid "B<--usertags>"
+msgstr "B<--usertags>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:96
+msgid "Set the BTS pseudo-header for usertags."
+msgstr "Définir le pseudo-en-tête « usertags » pour le BTS."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:98
+msgid "B<--source>"
+msgstr "B<--source>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:100
+msgid ""
+"Specify that package names refer to source packages rather than binary "
+"packages."
+msgstr ""
+"Préciser que les noms de paquet se réfèrent à des paquets source et non pas "
+"à des paquets binaires."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:105
+msgid ""
+"Specify the B<sendmail> command. The command will be split on white space "
+"and will not be passed to a shell. Default is F</usr/sbin/sendmail>."
+msgstr ""
+"Indiquer la commande utilisée pour envoyer le message. La commande sera "
+"découpée en fonction des espaces et ne sera pas passée à un interpréteur de "
+"commandes. Par défaut, c'est F</usr/sbin/sendmail> qui est utilisé."
+
+#. type: =item
+#: ../scripts/mass-bug.pl:108
+msgid "B<--no-wrap>"
+msgstr "B<--no-wrap>"
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:110
+msgid "Do not wrap the template to lines of 70 characters."
+msgstr "Ne remet pas les lignes en forme à 70 caractères."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:129
+msgid ""
+"B<DEBEMAIL> and B<EMAIL> can be set in the environment to control the email "
+"address that the bugs are sent from."
+msgstr ""
+"B<DEBEMAIL> et B<EMAIL> peuvent être définis dans l'environnement pour "
+"contrôler l'adresse électronique utilisée pour envoyer les bogues."
+
+#. type: textblock
+#: ../scripts/mass-bug.pl:517
+msgid "This program is Copyright (C) 2006 by Joey Hess <joeyh@debian.org>."
+msgstr ""
+"Ce programme a été écrit par Joey Hess <joeyh@debian.org>, Copyright (C) "
+"2006."
+
+#. type: TH
+#: ../scripts/mergechanges.1:1
+#, no-wrap
+msgid "MERGECHANGES"
+msgstr "MERGECHANGES"
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:4
+msgid "mergechanges - merge multiple changes files"
+msgstr "mergechanges - Fusionner plusieurs fichiers changes"
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:6
+msgid "B<mergechanges> [B<-f>] I<file1 file2> [I<file>...]"
+msgstr "B<mergechanges> [B<-f>] I<fichier1 fichier2> [I<fichier>...]"
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:13
+msgid ""
+"B<mergechanges> merges two or more I<.changes> files, merging the "
+"Architecture, Description and Files (and Checksums-*, if present) fields of "
+"the two. There are checks made to ensure that the changes files are from "
+"the same source package and version and use the same changes file Format. "
+"The first changes file is used as the basis and the information from the "
+"later ones is merged into it."
+msgstr ""
+"B<mergechanges> fusionne deux fichiers I<.changes> (ou plus), en fusionnant "
+"les champs « Architecture », « Description » et « Files » des fichiers "
+"(ainsi que les champs « Checksums-* », s'il y en a). Des vérifications de "
+"base sont effectuées pour s'assurer que les fichiers « changes » proviennent "
+"du même paquet source et de la même version, et qu'ils utilisent le même "
+"format de fichier « changes ». Le premier fichier « changes » est utilisé "
+"comme base et les informations des fichiers suivants y sont ajoutées."
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:18
+msgid ""
+"The output is normally written to I<stdout>. If the B<-f> option is given, "
+"the output is written to I<package>_I<version>_multi.changes instead, in the "
+"same directory as the first changes file listed."
+msgstr ""
+"La sortie est normalement dirigée vers la sortie standard (I<stdout>). Si "
+"l'option B<-f> est utilisée, la sortie est écrite dans "
+"I<paquet>_I<version>_multi.changes, dans le même répertoire que le premier "
+"fichier « changes »."
+
+#. type: Plain text
+#: ../scripts/mergechanges.1:21
+msgid ""
+"Gergely Nagy E<lt>algernon@debian.orgE<gt>, modifications by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> and Adam D. Barratt E<lt>adam@adam-barratt.org."
+"ukE<gt>."
+msgstr ""
+"Gergely Nagy E<lt>algernon@debian.orgE<gt>, modifications par Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> et Adam D. Barratt E<lt>adam@adam-barratt.org."
+"ukE<gt>."
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:26
+msgid ""
+"mk-build-deps - build a package satisfying a package's build-dependencies"
+msgstr ""
+"mk-build-deps - Construire un paquet qui satisfait les dépendances de "
+"construction d'un paquet"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:30
+msgid "B<mk-build-deps> B<--help>|B<--version>"
+msgstr "B<mk-build-deps> B<--help>|B<--version>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:32
+msgid "B<mk-build-deps> [I<options>] I<control file> | I<package name> ..."
+msgstr ""
+"B<mk-build-deps> [I<options>] I<fichier de contrôl> | I<nom de paquet> ..."
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:36
+msgid ""
+"Given a I<package name> and/or I<control file>, B<mk-build-deps> will use "
+"B<equivs> to generate a binary package which may be installed to satisfy all "
+"the build dependencies of the given package."
+msgstr ""
+"À partir d'un I<nom de paquet> ou d'un I<fichier de contrôle>, B<mk-build-"
+"deps> utilisera B<equivs> pour produire un paquet binaire qui peut être "
+"installé pour satisfaire les dépendances de construction d'un paquet."
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:40
+msgid ""
+"If B<--build-dep> and/or B<--build-indep> are given, then the resulting "
+"binary package(s) will depend solely on the Build-Depends/Build-Depends-"
+"Indep dependencies, respectively."
+msgstr ""
+"Si B<--build-dep> ou B<--build-indep> est fournie, les paquets binaires "
+"résultant ne dépendront respectivement que des dépendances Build-Depends ou "
+"Build-Depends-Indep (ou des deux)."
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:48
+msgid "B<-i>, B<--install>"
+msgstr "B<-i>, B<--install>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:50
+msgid "Install the generated packages and its build-dependencies."
+msgstr "Installer les paquets créés et leurs dépendances de construction."
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:52
+msgid "B<-t>, B<--tool>"
+msgstr "B<-t>, B<--tool>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:54
+msgid ""
+"When installing the generated package use the specified tool. (default: "
+"B<apt-get --no-install-recommends>)"
+msgstr ""
+"Pour l'installation du paquet créé, utiliser l'outil indiqué (par défaut : "
+"B<apt-get --no-install-recommends>)."
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:57
+msgid "B<-r>, B<--remove>"
+msgstr "B<-r>, B<--remove>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:59
+msgid ""
+"Remove the package file after installing it. Ignored if used without the B<--"
+"install> switch."
+msgstr ""
+"Supprimer le fichier du paquet après l'avoir installé. Cette option est "
+"ignorée si l'option B<--install> n'est pas utilisée."
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:62
+msgid "B<-a> I<foo>, B<--arch> I<foo>"
+msgstr "B<-a> I<toto>, B<--arch> I<toto>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:64
+msgid ""
+"If the source package has architecture-specific build dependencies, produce "
+"a package for architecture I<foo>, not for the system architecture. (If the "
+"source package does not have architecture-specific build dependencies, the "
+"package produced is always for the pseudo-architecture B<all>.)"
+msgstr ""
+"Si le paquet source possède des dépendances de construction spécifiques à "
+"l'architecture, produit un paquet pour l'architecture I<toto> et non pour "
+"l'architecture du système (si le paquet source ne possède pas de dépendances "
+"de construction spécifiques à l'architecture, le paquet produit est toujours "
+"pour la pseudo-architecture B<all>). "
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:69
+msgid "B<-B>, B<--build-dep>"
+msgstr "B<-B>, B<--build-dep>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:71
+msgid ""
+"Generate a package which only depends on the source package's Build-Depends "
+"dependencies."
+msgstr ""
+"Crée un paquet qui ne dépend que des dépendances Build-Depends du paquet "
+"source."
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:74
+msgid "B<-A>, B<--build-indep>"
+msgstr "B<-A>, B<--build-indep>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:76
+msgid ""
+"Generate a package which only depends on the source package's Build-Depends-"
+"Indep dependencies."
+msgstr ""
+"Crée un paquet qui ne dépend que des dépendances Build-Depends-Indep du "
+"paquet source."
+
+#. type: =item
+#: ../scripts/mk-build-deps.pl:87
+msgid "B<-s>, B<--root-cmd>"
+msgstr "B<-s>, B<--root-cmd>"
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:89
+msgid ""
+"Use the specified tool to gain root privileges before installing. Ignored "
+"if used without the B<--install> switch."
+msgstr ""
+"Utilise l'outil indiqué pour obtenir les droits du superutilisateur avant "
+"l'installation. Cette option est ignorée si l'option B<--install> n'est pas "
+"utilisée."
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:96
+msgid ""
+"B<mk-build-deps> is copyright by Vincent Fourmond and was modified for the "
+"devscripts package by Adam D. Barratt <adam@adam-barratt.org.uk>."
+msgstr ""
+"B<mk-build-deps> est sous copyright de Vincent Fourmond et a été modifié "
+"pour le paquet devscripts par Adam D. Barratt <adam@adam-barratt.org.uk>."
+
+#. type: textblock
+#: ../scripts/mk-build-deps.pl:99 ../scripts/transition-check.pl:77
+msgid ""
+"This program comes with ABSOLUTELY NO WARRANTY. You are free to "
+"redistribute this code under the terms of the GNU General Public License, "
+"version 2 or later."
+msgstr ""
+"Ce programme est fourni SANS AUCUNE GARANTIE. Vous êtes libre de "
+"redistribuer ce code sous les termes de la licence publique générale GNU "
+"(GNU General Public Licence), version 2 ou ultérieure."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:26
+msgid ""
+"mk-origtargz - rename upstream tarball, optionally changing the compression "
+"and removing unwanted files"
+msgstr ""
+"mk-origtargz - Renommer l’archive amont, en modifiant éventuellement la "
+"compression et en supprimant les fichiers non désirés"
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:32
+msgid "B<mk-origtargz> [I<options>] F<foo-1.0.tar.gz>"
+msgstr "B<mk-origtargz> [I<options>] F<truc-1.0.tar.gz>"
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:34
+msgid "B<mk-origtargz> B<--help>"
+msgstr "B<mk-origtargz> B<--help>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:40
+msgid ""
+"B<mk-origtargz> renames the given file to match what is expected by B<dpkg-"
+"buildpackage>, based on the source package name and version in F<debian/"
+"changelog>. It can convert B<zip> to B<tar>, optionally change the "
+"compression scheme and remove files according to B<Files-Excluded> in "
+"F<debian/copyright>. The resulting file is placed in F<debian/../..>."
+msgstr ""
+"B<mk-origtargz> renomme le fichier donné pour correspondre à ce qui est "
+"attendu par B<dpkg-buildpackage>, à partir du nom de paquet source et de la "
+"version dans F<debian/changelog>. Il peut convertir du B<ZIP> en B<tar>, et "
+"éventuellement modifier la compression et supprimer les fichiers "
+"conformément à B<Files-Excluded> dans F<debian/copyright>. Le fichier "
+"résultant est placé dans F<debian/../..>."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:46
+msgid ""
+"If the package name is given via the B<--package> option, no information is "
+"read from F<debian/>, and the result file is placed in the current directory."
+msgstr ""
+"Si le nom de paquet est donné à l’aide de l’option B<--package>, aucun "
+"renseignement n’est lu dans F<debian/> et le fichier résultant est placé "
+"dans le répertoire actuel."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:49
+msgid ""
+"B<mk-origtargz> is commonly called via B<uscan>, which first obtains the "
+"upstream tarball."
+msgstr ""
+"B<mk-origtargz> est normalement appelé par B<uscan>, qui obtient d’abord "
+"l’archive amont."
+
+#. type: =head2
+#: ../scripts/mk-origtargz.pl:54
+msgid "Metadata options"
+msgstr "Options de métadonnées"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:56
+msgid ""
+"The following options extend or replace information taken from F<debian/>."
+msgstr ""
+"Les options suivantes étendent ou remplacent les renseignements pris dans "
+"F<debian/>."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:62
+msgid ""
+"Use I<package> as the name of the Debian source package, and do not require "
+"or use a F<debian/> directory. This option can only be used together with "
+"B<--version>."
+msgstr ""
+"Utiliser I<paquet> comme nom de paquet source Debian et ne pas nécessiter ni "
+"utiliser de répertoire F<debian/>. Cette option ne peut être utilisée "
+"qu’avec B<--version>."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:66
+msgid ""
+"The default is to use the package name of the first entry in F<debian/"
+"changelog>."
+msgstr ""
+"Par défaut, le nom de paquet est pris dans la première entrée de F<debian/"
+"changelog>."
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:68
+msgid "B<-v>, B<--version> I<version>"
+msgstr "B<-v>, B<--version> I<version>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:70
+msgid ""
+"Use I<version> as the version of the package. This needs to be the upstream "
+"version portion of a full Debian version, i.e. no Debian revision, no epoch."
+msgstr ""
+"Utiliser I<version> comme version du paquet. Cela doit être la partie de "
+"version amont d’une version Debian complète, c’est-à-dire sans révision "
+"Debian ni epoch."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:72
+msgid ""
+"The default is to use the upstream portion of the version of the first entry "
+"in F<debian/changelog>."
+msgstr ""
+"Par défaut, la partie amont de la version est prise dans la première entrée "
+"de F<debian/changelog>."
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:74
+msgid "B<--exclude-file> I<glob>"
+msgstr "B<--exclude-file> I<joker>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:76
+msgid ""
+"Remove files matching the given I<glob> from the tarball, as if it was "
+"listed in B<Files-Excluded>."
+msgstr ""
+"Supprimer les fichiers correspondant au I<joker> donné de l’archive amont, "
+"comme s’il était indiqué dans B<Files-Excluded>."
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:79
+msgid "B<--copyright-file> I<filename>"
+msgstr "B<--copyright-file> I<fichier>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:81
+msgid ""
+"Remove files matching the patterns found in I<filename>, which should have "
+"the format of a Debian F<copyright> file (B<Format: https://www.debian.org/"
+"doc/packaging-manuals/copyright-format/1.0/> to be precise). Errors parsing "
+"that file are silently ignored, exactly as it is the case with F<debian/"
+"copyright>."
+msgstr ""
+"Supprimer les fichiers correspondant aux motifs de I<fichier> qui devrait "
+"être au format d’un fichier I<copyright> Debian (B<Format: https://www."
+"debian.org/doc/packaging-manuals/copyright-format/1.0/> pour être exact). "
+"Les erreurs d’analyse de ce fichier sont ignorées silencieusement, comme "
+"c’est le cas avec F<debian/copyright>."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:83
+msgid ""
+"Both the B<--exclude-file> and B<--copyright-file> options amend the list of "
+"patterns found in F<debian/copyright>. If you do not want to read that file, "
+"you will have to use B<--package>."
+msgstr ""
+"Les options B<--exclude-file> et B<--copyright-file> modifient toutes les "
+"deux la liste des motifs trouvés dans F<debian/copyright>. Si vous ne voulez "
+"pas lire ce fichier, vous devez utiliser B<--package>."
+
+#. type: =head2
+#: ../scripts/mk-origtargz.pl:89
+msgid "Action options"
+msgstr "Options d’action"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:91
+msgid ""
+"These options specify what exactly B<mk-origtargz> should do. The options "
+"B<--copy>, B<--rename> and B<--symlink> are mutually exclusive."
+msgstr ""
+"Ces options indiquent exactement ce que B<mk-origtargz> devrait faire. Les "
+"options B<--copy>, B<--rename> et B<--symlink> s’excluent mutuellement."
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:96 ../scripts/uscan.1:397
+#, no-wrap
+msgid "B<--symlink>"
+msgstr "B<--symlink>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:98
+msgid ""
+"Make the resulting file a symlink to the given original file. (This is the "
+"default behaviour.)"
+msgstr ""
+"Faire du fichier résultant un lien symbolique vers le fichier d’origine "
+"donné (c'est le comportement par défaut)."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:101
+msgid ""
+"If the file has to be modified (because it is a B<zip> file, because of B<--"
+"repack> or B<Files-Excluded>), this option behaves like B<--copy>."
+msgstr ""
+"Si le fichier doit être modifié (parce qu’il s’agit d’un fichier B<ZIP>, à "
+"cause de B<--repack> ou à cause de B<Files-Excluded>), cette option se "
+"comporte comme B<--copy>."
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:104 ../scripts/uscan.1:402
+#, no-wrap
+msgid "B<--copy>"
+msgstr "B<--copy>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:106
+msgid ""
+"Make the resulting file a copy of the original file (unless it has to be "
+"modified, of course)."
+msgstr ""
+"Faire du fichier résultant une copie du fichier d’origine (sauf bien sûr "
+"s’il doit être modifié)."
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:108 ../scripts/uscan.1:405
+#, no-wrap
+msgid "B<--rename>"
+msgstr "B<--rename>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:110
+msgid "Rename the original file."
+msgstr "Renommer le fichier d’origine."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:112
+msgid ""
+"If the file has to be modified (because it is a B<zip> file, because of B<--"
+"repack> or B<Files-Excluded>), this implies that the original file is "
+"deleted afterwards."
+msgstr ""
+"Si le fichier doit être modifié (parce qu’il s’agit d’un fichier B<ZIP>, à "
+"cause de B<--repack> ou à cause de B<Files-Excluded>), cela implique la "
+"suppression du fichier d’origine à la fin."
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:114 ../scripts/uscan.1:408
+#, no-wrap
+msgid "B<--repack>"
+msgstr "B<--repack>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:116
+msgid ""
+"If the given file is not compressed using the desired format (see B<--"
+"compression>), recompress it."
+msgstr ""
+"Si le fichier donné n’est pas compressé au format voulu (consultez B<--"
+"compression>), le recompresser."
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:119
+msgid "B<-S>, B<--repack-suffix> I<suffix>"
+msgstr "B<-S>, B<--repack-suffix> I<suffixe>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:121
+msgid ""
+"If the file has to be modified, because of B<Files-Excluded>, append "
+"I<suffix> to the upstream version."
+msgstr ""
+"Si le fichier doit être modifié, à cause de B<Files-Excluded>, ajouter "
+"I<suffixe> à la version amont."
+
+#. type: TP
+#: ../scripts/mk-origtargz.pl:123 ../scripts/uscan.1:414
+#, no-wrap
+msgid "B<--compression> [ B<gzip> | B<bzip2> | B<lzma> | B<xz> ]"
+msgstr "B<--compression> [ B<gzip> | B<bzip2> | B<lzma> | B<xz> ]"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:125
+msgid ""
+"If B<--repack> is used, or if the given file is a B<zip> file, ensure that "
+"the resulting file is compressed using the given scheme. The default is "
+"B<gzip>."
+msgstr ""
+"Si B<--repack> est utilisé ou si le fichier donné est un fichier B<ZIP>, "
+"s’assurer que le fichier résultant est compressé un utilisant le format "
+"donné. Par défaut, B<gzip> est utilisé."
+
+#. type: =item
+#: ../scripts/mk-origtargz.pl:127
+msgid "B<-C>, B<--directory> I<directory>"
+msgstr "B<-C>, B<--directory> I<répertoire>"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:129
+msgid "Put the resulting file in the given directory."
+msgstr "Placer le fichier résultant dans le répertoire donné."
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:145
+msgid "B<uscan>(1), B<uupdate>(1)"
+msgstr "B<uscan>(1), B<uupdate>(1)"
+
+#. type: textblock
+#: ../scripts/mk-origtargz.pl:149
+msgid ""
+"B<mk-origtargz> and this manpage have been written by Joachim Breitner "
+"<I<nomeata@debian.org>>."
+msgstr ""
+"B<mk-origtargz> et cette page de manuel ont été écrits par Joachim Breitner "
+"<I<nomeata@debian.org>>."
+
+#. type: textblock
+#: ../scripts/namecheck.pl:5
+msgid "namecheck - Check project names are not already taken."
+msgstr "namecheck - Vérifier la disponibilité des noms de projet."
+
+#. type: =head1
+#: ../scripts/namecheck.pl:7
+msgid "ABOUT"
+msgstr "à propos de"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:9
+msgid ""
+"This is a simple tool to automate the testing of project names at the most "
+"common Open Source / Free Software hosting environments."
+msgstr ""
+"Cet outil permet d'automatiser la vérification des noms de projet présents "
+"dans les environnements d'hébergement de logiciel libres les plus utilisés."
+
+#. type: textblock
+#: ../scripts/namecheck.pl:12
+msgid ""
+"Each new project requires a name, and those names are ideally unique. To "
+"come up with names is hard, and testing to ensure they're not already in use "
+"is time-consuming - unless you have a tool such as this one."
+msgstr ""
+"Chaque nouveau projet a besoin d'un nom, qui devrait être unique. Il est "
+"difficile de trouver des noms, et tester si ces noms ne sont pas déjà pris "
+"prend beaucoup de temps, à moins de disposer d'un outil comme celui-ci."
+
+#. type: =head1
+#: ../scripts/namecheck.pl:16
+msgid "CUSTOMIZATION"
+msgstr "PERSONNALISATION"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:18
+msgid ""
+"The script, as is, contains a list of sites, and patterns, to test against."
+msgstr "Ce script contient déjà une liste de sites et de motifs à vérifier."
+
+#. type: textblock
+#: ../scripts/namecheck.pl:20
+msgid ""
+"If those patterns aren't sufficient then you may create your own additions "
+"and add them to the script. If you wish to have your own version of the "
+"patterns you may save them into the file ~/.namecheckrc"
+msgstr ""
+"Si ces motifs ne sont pas suffisants, vous pouvez créer les vôtres et les "
+"ajouter au script. Si vous souhaitez avoir votre propre version de motifs, "
+"enregistrez-les dans un fichier ~/.namecheckrc."
+
+#. type: =head1
+#: ../scripts/namecheck.pl:24
+msgid "HOMEPAGE"
+msgstr "PAGE D'ACCUEIL"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:26
+msgid "The most recent version of this script may be found here:"
+msgstr "La version la plus récente de ce script peut se trouver à l'adresse :"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:28
+msgid "http://mybin.repository.steve.org.uk/?raw-file/tip/namecheck"
+msgstr "http://mybin.repository.steve.org.uk/?raw-file/tip/namecheck"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:32
+msgid "Steve -- http://www.steve.org.uk/"
+msgstr "Steve -- http://www.steve.org.uk/"
+
+#. type: textblock
+#: ../scripts/namecheck.pl:38
+msgid "Copyright (c) 2008 by Steve Kemp. All rights reserved."
+msgstr "Copyright (c) 2008 par Steve Kemp. Tous droits réservés."
+
+#. type: textblock
+#: ../scripts/namecheck.pl:40
+msgid ""
+"This module is free software; you can redistribute it and/or modify it under "
+"the same terms as Perl itself."
+msgstr ""
+"Ce module est un logiciel libre ; vous pouvez le redistribuer et/ou le "
+"modifier sous les mêmes termes que Perl lui-même."
+
+#. type: TH
+#: ../scripts/nmudiff.1:1
+#, no-wrap
+msgid "NMUDIFF"
+msgstr "NMUDIFF"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:4
+msgid "nmudiff - email an NMU diff to the Debian BTS"
+msgstr ""
+"nmudiff - Envoyer un courrier contenant le correctif d'une NMU vers le BTS "
+"Debian"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:6
+msgid "B<nmudiff> [I<options>]"
+msgstr "B<nmudiff> [I<options>]"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:16
+msgid ""
+"B<nmudiff> should be run in the source tree of the package being NMUed, "
+"after the NMU is built. It assumes that the source packages (specifically, "
+"the I<.dsc> and any corresponding I<tar> and I<diff> files) for both the "
+"previous version of the package and the newly built NMU version are in the "
+"parent directory. It then uses B<debdiff> to generate a diff between the "
+"previous version and the current NMU, and either runs mutt or an editor "
+"(using B<sensible-editor>) so that the mail message (including the diff) can "
+"be examined and modified; once you exit the editor the diff will be mailed "
+"to the Debian BTS."
+msgstr ""
+"B<nmudiff> devrait être lancé dans l'arbre des sources du paquet devant être "
+"NMU-é, après que la NMU a été construite. Cela suppose que le source (c'est-"
+"à-dire le fichier I<.dsc> et éventuellement les fichiers I<tar> et I<diff> "
+"correspondants) pour la version précédente du paquet et pour la version "
+"nouvellement construite soient dans le répertoire parent. B<debdiff> est "
+"ensuite utilisé pour créer un différentiel de la NMU, puis B<mutt> ou un "
+"éditeur (choisi par B<sensible-editor>) est utilisé pour lancer un éditeur "
+"de sorte que le message (y compris le différentiel) puisse être examiné et "
+"modifié ; une fois que vous avez quitté l'éditeur, le différentiel est "
+"envoyé par courrier électronique au système de gestion de bogues (« BTS ») "
+"Debian."
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:21
+msgid ""
+"The default behaviour is that if exactly one bug is closed by this NMU, then "
+"that bug will be mailed, otherwise a new bug will be submitted. This "
+"behaviour may be changed by command line options and configuration file "
+"options."
+msgstr ""
+"Si un seul bogue est corrigé par la NMU, le comportement par défaut est "
+"d'envoyer le message à ce bogue ; sinon, un nouveau bogue est soumis. Ce "
+"comportement par défaut peut être modifié en ligne de commande ou par le "
+"fichier de configuration."
+
+#. type: TP
+#: ../scripts/nmudiff.1:22
+#, no-wrap
+msgid "B<--new>"
+msgstr "B<--new>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:26
+msgid ""
+"Instead of mailing the bug reports which are to be closed by this NMU, a new "
+"bug report is submitted directly to the BTS."
+msgstr ""
+"Soumettre un nouveau rapport de bogue au BTS au lieu d'envoyer un message "
+"aux bogues corrigés par la NMU."
+
+#. type: TP
+#: ../scripts/nmudiff.1:26
+#, no-wrap
+msgid "B<--old>"
+msgstr "B<--old>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:31
+msgid ""
+"Send the bug report to all of the bugs which are being closed by this NMU, "
+"rather than opening a new bug report. This option has no effect if no bugs "
+"are being closed by this NMU."
+msgstr ""
+"Envoyer le rapport de bogue à tous les bogues corrigés dans cette NMU, au "
+"lieu d'ouvrir un nouveau bogue. Cette option n'a aucun effet si la NMU ne "
+"corrige aucun bogue."
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:36
+msgid ""
+"Use B<mutt>(1) for editing and sending the message to the BTS (default "
+"behaviour). This can be controlled using a configuration file option (see "
+"below)."
+msgstr ""
+"Utiliser B<mutt>(1) pour modifier et envoyer le message au BTS (comportement "
+"par défaut). Cela peut être choisi par une option du fichier de "
+"configuration (voir plus bas)."
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:41
+msgid ""
+"Use B<sensible-editor>(1) to edit the message and then mail it directly "
+"using I</usr/bin/sendmail>. This can be controlled using a configuration "
+"file option (see below)."
+msgstr ""
+"Utiliser B<sensible-editor>(1) pour modifier le message, puis l'envoyer "
+"directement avec I</usr/sbin/sendmail>. Cela peut être choisi par une option "
+"du fichier de configuration (voir plus bas)."
+
+#. type: TP
+#: ../scripts/nmudiff.1:41
+#, no-wrap
+msgid "B<--sendmail> I<SENDMAILCMD>"
+msgstr "B<--sendmail> I<COMMANDE_D_ENVOI_DE_MESSAGE>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:51
+msgid ""
+"Specify the B<sendmail> command. The command will be split on white space "
+"and will be interpreted by the shell. Default is I</usr/sbin/sendmail>. "
+"The B<-t> option will be automatically added if the command is I</usr/sbin/"
+"sendmail> or I</usr/sbin/exim*>. For other mailers, if they require a B<-t> "
+"option, this must be included in the I<SENDMAILCMD>, for example: B<--"
+"sendmail=\"/usr/sbin/mymailer -t\">. This can also be set using the "
+"devscripts configuration files; see below."
+msgstr ""
+"Indiquer la commande d'envoi de message. La commande sera séparée à chaque "
+"espace, et interprétée par le shell. La valeur par défaut est I</usr/sbin/"
+"sendmail>. L'option B<-t> est ajoutée automatiquement si la commande est I</"
+"usr/sbin/sendmail> ou I</usr/sbin/exim*>. Pour les autres logiciels d'envoi "
+"de message, l'option B<-t> doit être incluse explicitement dans "
+"I<COMMANDE_D_ENVOI_DE_MESSAGE> si elle est nécessaire, par exemple B<--"
+"sendmail=\"/usr/sbin/monutilitaire -t\">. La commande peut également être "
+"indiquée dans les fichiers de configuration de B<devscripts> comme précisé "
+"ci-après."
+
+#. type: TP
+#: ../scripts/nmudiff.1:51
+#, no-wrap
+msgid "B<--from> I<EMAIL>"
+msgstr "B<--from> I<EMAIL>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:59
+msgid ""
+"If using the B<sendmail> (B<--no-mutt>) option, then the email to the BTS "
+"will be sent using the name and address in the environment variables "
+"B<DEBEMAIL> and B<DEBFULLNAME>. If these are not set, then the variables "
+"B<EMAIL> and B<NAME> will be used instead. These can be overridden using "
+"the B<--from> option. The program will not work in this case if an email "
+"address cannot be determined."
+msgstr ""
+"Si la commande B<sendmail> est utilisée (option B<--no-mutt>), le message "
+"envoyé au BTS utilisera le nom et l'adresse contenus dans les variables "
+"d'environnement B<DEBEMAIL> et B<DEBFULLNAME>. Si elles n'existent pas, les "
+"variables B<EMAIL> et B<NAME> seront utilisées. L'option B<--from> remplace "
+"ces variables d'environnement. Le programme ne fonctionnera pas s'il est "
+"impossible de déterminer une adresse électronique."
+
+#. type: TP
+#: ../scripts/nmudiff.1:59
+#, no-wrap
+msgid "B<--delay> I<DELAY>"
+msgstr "B<--delay> I<DÉLAI>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:66
+msgid ""
+"Indicate in the generated mail that the NMU has been uploaded to the DELAYED "
+"queue, with a delay of I<DELAY> days. The default value is I<XX> which adds "
+"a placeholder to the e-mail. A value of B<0> indicates that the upload has "
+"not been sent to a delayed queue. This can also be set using the devscripts "
+"configuration files; see below."
+msgstr ""
+"Indiquer dans le message créé que la NMU a été envoyée dans la file "
+"d'attente différée, avec un délai de I<DÉLAI> jours. La valeur par défaut "
+"est I<XX>, ce qui laisse un emplacement pour mettre le délai dans le "
+"message. Une valeur de B<0> indique que le paquet n'a pas été envoyé dans la "
+"file d'attente différée. Les fichiers de configuration de B<devscripts> "
+"peuvent aussi être utilisés comme précisé ci-après."
+
+#. type: TP
+#: ../scripts/nmudiff.1:66
+#, no-wrap
+msgid "B<--no-delay>, B<--nodelay>"
+msgstr "B<--no-delay>, B<--nodelay>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:69
+msgid "Equivalent to B<--delay 0>."
+msgstr "Équivalent à B<--delay 0>."
+
+#. type: TP
+#: ../scripts/nmudiff.1:85
+#, no-wrap
+msgid "B<NMUDIFF_DELAY>"
+msgstr "B<NMUDIFF_DELAY>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:91
+msgid ""
+"If this is set to a number, e-mails generated by B<nmudiff> will by default "
+"mention an upload to the DELAYED queue, delayed for the specified number of "
+"days. The value B<0> indicates that the DELAYED queue has not been used."
+msgstr ""
+"Lorsque qu'un nombre est configuré dans cette variable, les courriers créés "
+"par B<nmudiff> indiqueront par défaut que l'envoi a été effectué dans la "
+"file d'attente différée, avec un délai égal au nombre de jours indiqués. La "
+"valeur B<0> indique que la file d'attente différée n'a pas été utilisée."
+
+#. type: TP
+#: ../scripts/nmudiff.1:91
+#, no-wrap
+msgid "B<NMUDIFF_MUTT>"
+msgstr "B<NMUDIFF_MUTT>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:96
+msgid ""
+"Can be I<yes> (default) or I<no>, and specifies whether to use B<mutt> to "
+"compose and send the message or not, as described above."
+msgstr ""
+"Peut être I<yes> (par défaut) ou I<no>, et indique s'il faut utiliser "
+"B<mutt> pour écrire et envoyer le message, tel que décrit ci-dessus."
+
+#. type: TP
+#: ../scripts/nmudiff.1:96
+#, no-wrap
+msgid "B<NMUDIFF_NEWREPORT>"
+msgstr "B<NMUDIFF_NEWREPORT>"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:104
+msgid ""
+"This option controls whether a new bug report is made, or whether the diff "
+"is sent to the bugs closed by this NMU. Can be I<maybe> (default), which "
+"sends to the existing bug reports if exactly one bug is being closed; "
+"I<yes>, which always creates a new report, or I<no>, which always sends to "
+"the reports of the bugs being closed (unless no bugs are being closed, in "
+"which case a new report is always made)."
+msgstr ""
+"Cette option permet de contrôler si un nouveau rapport de bogue est soumis, "
+"ou si le diff est envoyé aux bogues corrigés par la NMU. Peut être l'une des "
+"valeurs I<maybe> (par défaut) qui envoie au bogue fermé par la NMU s'il est "
+"unique, I<yes> qui crée systématiquement un nouveau rapport de bogue, ou "
+"I<no> qui envoie toujours aux bogues corrigés (sauf si aucun bogue n'est "
+"corrigé, auquel cas un nouveau rapport est toujours créé)."
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:108
+msgid ""
+"If this is set, specifies a B<sendmail> command to use instead of I</usr/"
+"sbin/sendmail>. Same as the B<--sendmail> command line option."
+msgstr ""
+"Si cela est défini, cela indique la commande d'envoi de message à utiliser à "
+"la place de I</usr/sbin/sendmail>. Équivaut à l'option de ligne de commande "
+"B<--sendmail>."
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:112
+msgid "B<debdiff>(1), B<sensible-editor>(1), B<devscripts.conf>(5)"
+msgstr "B<debdiff>(1), B<sensible-editor>(1), B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/nmudiff.1:116
+msgid ""
+"B<nmudiff> was written and is copyright 2006 by Steinar H. Gunderson and "
+"modified by Julian Gilbey E<lt>jdg@debian.orgE<gt>. The software may be "
+"freely redistributed under the terms and conditions of the GNU General "
+"Public License, version 2."
+msgstr ""
+"B<nmudiff> a été écrit et est copyright 2006 Steinar H. Gunderson, et "
+"modifié par Julian Gilbey E<lt>jdg@debian.orgE<gt>. Ce logiciel peut être "
+"redistribué suivant les termes de la licence publique générale GNU, version "
+"2."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:22
+msgid ""
+"origtargz - fetch the orig tarball of a Debian package from various sources, "
+"and unpack it"
+msgstr ""
+"origtargz - Récupérer l'archive amont d'un paquet Debian depuis divers "
+"sources, et la dépaqueter"
+
+#. type: =item
+#: ../scripts/origtargz.pl:28
+msgid "B<origtargz> [I<OPTIONS>] [B<--unpack>[=B<no>|B<once>|B<yes>]]"
+msgstr "B<origtargz> [I<options>] [B<--unpack>[=B<no>|B<once>|B<yes>]]"
+
+#. type: =item
+#: ../scripts/origtargz.pl:30
+msgid "B<origtargz> B<--help>"
+msgstr "B<origtargz> B<--help>"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:36
+msgid ""
+"B<origtargz> downloads the orig tarball of a Debian package, and optionally "
+"unpacks it into the current directory. The version number to be used is "
+"determined from F<debian/changelog>. The main use for B<origtargz> is with "
+"debian-dir-only repository checkouts. It should be invoked from the top "
+"level directory of an unpacked Debian source package."
+msgstr ""
+"B<origtargz> télécharge l'archive amont (orig) d'un paquet Debian et la "
+"dépaquette facultativement dans le répertoire actuel. Le numéro de version à "
+"utiliser est déterminé par F<debian/changelog>. L'utilisation principale "
+"d'B<origtargz> est avec les dépôts ne contenant que le répertoire I<debian>. "
+"Il devrait être appelé depuis le répertoire de premier niveau d'un paquet "
+"source Debian non dépaqueté."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:42
+msgid "Various download locations are tried:"
+msgstr "Plusieurs emplacements de téléchargement sont essayés :"
+
+#. type: =item
+#: ../scripts/origtargz.pl:46 ../scripts/origtargz.pl:50
+#: ../scripts/origtargz.pl:54 ../scripts/origtargz.pl:58
+#: ../scripts/origtargz.pl:62
+msgid "*"
+msgstr "-"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:48
+msgid "First, an existing file is looked for."
+msgstr "d'abord, un fichier existant est recherché ;"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:52
+msgid "Directories given with B<--path> are searched."
+msgstr "les répertoires donnés avec B<--path> sont explorés ;"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:56
+msgid "B<pristine-tar> is tried."
+msgstr "B<pristine-tar> est essayé ;"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:60
+msgid ""
+"B<apt-get source> is tried when B<apt-cache showsrc> reports a matching "
+"version."
+msgstr ""
+"B<apt-get source> est essayé si B<apt-cache showsrc> indique une version "
+"correspondante ;"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:64
+msgid "Finally, B<uscan --download-current-version> is tried."
+msgstr "enfin, B<uscan --download-current-version> est essayé."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:68
+msgid ""
+"When asked to unpack the orig tarball, B<origtargz> will remove all files "
+"and directories from the current directory, except the debian directory, and "
+"the VCS repository directories. Some files outside F<debian/> which are "
+"often stored in VCS even for debian-dir-only repositories are also preserved "
+"(F<.bzr-builddeb>, F<.gitignore>, F<.hgignore>). I<Note that this will drop "
+"all non-committed changes> for the patch system in use (e.g. source format "
+"\"3.0 (quilt)\"), and will even remove all patches from the package when no "
+"patch system is in use (the original \"1.0\" source format)."
+msgstr ""
+"Lorsqu'une archive amont doit être dépaquetée, B<origtargz> retirera tous "
+"les fichiers et répertoires du répertoire actuel sauf le répertoire "
+"F<debian> et les répertoires du dépôt de système de contrôle de versions. "
+"Certains fichiers hors de F<debian/> généralement gardés dans le système de "
+"contrôle de versions même pour les dépôts ne contenant que le répertoire "
+"F<debian> sont aussi conservés (par exemple F<.bzr-builddeb>, F<.gitignore> "
+"ou F<.hgignore>). I<Remarquez que toutes les modifications non prises en "
+"compte (committed) seront effacées> du système de correctifs utilisé (par "
+"exemple au format source « 3.0 (quilt) ») et que tous les correctifs seront "
+"retirés du paquet si aucun système n'est utilisé (pour le format source "
+"d'origine « 1.0 »)."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:77
+msgid ""
+"The default behavior is to unpack the orig tarball on the first invocation "
+"of B<origtargz> in a debian-dir-only checkout."
+msgstr ""
+"Le comportement par défaut est de dépaqueter l'archive amont la première "
+"fois que B<origtargz> est appelé depuis un répertoire issu d'un dépôt ne "
+"contenant que le répertoire F<debian>."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:82
+msgid ""
+"Despite B<origtargz> being called \"targz\", it will work with any "
+"compression scheme used for the tarball."
+msgstr ""
+"Malgré son nom, B<origtargz> fonctionne avec n'importe quel format de "
+"compression utilisé pour l'archive amont."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:85
+msgid ""
+"A similar tool to unpack orig tarballs is B<uupdate>(1). B<uupdate> creates "
+"a new working directory, unpacks the tarball, and applies the Debian F<.diff."
+"gz> changes. In contrast, B<origtargz> uses the current directory, keeping "
+"VCS metadata."
+msgstr ""
+"Un outil similaire pour dépaqueter les archives amont est B<uupdate>(1). "
+"B<uupdate> crée un nouveau répertoire de travail, dépaquette l'archive et "
+"applique les modifications Debian F<.diff.gz>. De son côté, B<origtargz> "
+"utilise le répertoire actuel, en gardant les métadonnées du système de "
+"gestion de versions."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:90
+msgid ""
+"For Debian package repositories that keep the full upstream source, other "
+"tools should be used to upgrade the repository from the new tarball. See "
+"B<git-import-orig>(1) and B<svn-upgrade>(1) for examples. B<origtargz> is "
+"still useful for downloading the current tarball."
+msgstr ""
+"Pour les dépôts de paquet Debian gardant l'intégralité des sources amont, "
+"d'autres outils devraient être utilisés pour mettre à niveau le dépôt à "
+"partir de l'archive amont. Consultez par exemple B<git-import-orig>(1) et "
+"B<svn-upgrade>(1). B<origtargz> est toujours utile pour télécharger "
+"l'archive amont actuelle."
+
+#. type: =item
+#: ../scripts/origtargz.pl:99
+msgid "B<-p>, B<--path> I<directory>"
+msgstr "B<-p>, B<--path> I<répertoire>"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:101
+msgid ""
+"Add I<directory> to the list of locations to search for an existing "
+"tarball. When found, a hardlink is created if possible, otherwise a symlink."
+msgstr ""
+"Ajouter I<répertoire> à la liste des emplacements pour chercher une archive "
+"amont. Une fois trouvé, un lien matériel est créé si possible, un lien "
+"symbolique sinon."
+
+#. type: =item
+#: ../scripts/origtargz.pl:104
+msgid "B<-u>, B<--unpack>[=B<no>|B<once>|B<yes>]"
+msgstr "B<-u>, B<--unpack>[=B<no>|B<once>|B<yes>]"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:106
+msgid ""
+"Unpack the downloaded orig tarball to the current directory, replacing "
+"everything except the debian directory. Existing files are removed, except "
+"for F<debian/> and VCS files. Preserved are: F<.bzr>, F<.bzrignore>, F<.bzr-"
+"builddeb>, F<.git>, F<.gitignore>, F<.hg>, F<.hgignore>, F<_darcs> and F<."
+"svn>."
+msgstr ""
+"Dépaqueter l'archive amont téléchargée dans le répertoire actuel, en "
+"remplaçant tout sauf le répertoire I<debian>. Les fichiers existants sont "
+"supprimés, sauf le répertoire F<debian> et les fichiers du système de "
+"contrôle de versions. Sont gardés : F<.bzr>, F<.bzrignore>, F<.bzr-"
+"builddeb>, F<.git>, F<.gitignore>, F<.hg>, F<.hgignore>, F<_darcs> et F<."
+"svn>."
+
+#. type: =item
+#: ../scripts/origtargz.pl:114
+msgid "B<no>"
+msgstr "B<no>"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:116
+msgid "Do not unpack the orig tarball."
+msgstr "Ne pas dépaqueter l'archive amont."
+
+#. type: =item
+#: ../scripts/origtargz.pl:118
+msgid "B<once> (default when B<--unpack> is not used)"
+msgstr "B<once> (par défaut si B<--unpack> n'est pas utilisé)"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:120
+msgid ""
+"If the current directory contains only a F<debian> directory (and possibly "
+"some dotfiles), unpack the orig tarball. This is the default behavior."
+msgstr ""
+"Si le répertoire actuel ne contient qu'un répertoire F<debian> (et "
+"éventuellement quelques fichiers F<.*>), dépaqueter l'archive amont. C'est "
+"le comportement par défaut."
+
+#. type: =item
+#: ../scripts/origtargz.pl:123
+msgid "B<yes> (default for B<--unpack> without argument)"
+msgstr "B<yes> (par défaut si B<--unpack> est utilisé sans argument)"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:125
+msgid "Always unpack the orig tarball."
+msgstr "Toujours dépaqueter l'archive amont."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:131
+msgid "Alias for B<--unpack=no>."
+msgstr "Identique à B<--unpack=no>."
+
+#. type: =item
+#: ../scripts/origtargz.pl:133
+msgid "B<-t>, B<--tar-only>"
+msgstr "B<-t>, B<--tar-only>"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:135
+msgid ""
+"When using B<apt-get source>, pass B<--tar-only> to it. The default is to "
+"download the full source package including F<.dsc> and F<.diff.gz> or F<."
+"debian.tar.gz> components so B<debdiff> can be used to diff the last upload "
+"to the next one. With B<--tar-only>, only download the F<.orig.tar.*> file."
+msgstr ""
+"En utilisant B<apt-get source>, lui passer B<--tar-only>. L'action par "
+"défaut est de télécharger le paquet source complet, y compris les composants "
+"F<.dsc> et F<.diff.gz> ou F<.debian.tar.gz> pour que B<debdiff> puisse être "
+"utilisé pour comparer le dernier envoi au prochain. Avec B<--tar-only>, seul "
+"le fichier F<.orig.tar.*> est téléchargé."
+
+#. type: =item
+#: ../scripts/origtargz.pl:140
+msgid "B<--clean>"
+msgstr "B<--clean>"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:142
+msgid ""
+"Remove existing files as with B<--unpack>. Note that like B<--unpack>, this "
+"will remove upstream files even if they are stored in VCS."
+msgstr ""
+"Supprimer les fichiers existants comme avec B<--unpack>. Remarquez que comme "
+"B<--unpack>, cela supprimera les fichiers amonts même s'ils sont stockés "
+"dans un système de contrôle de versions."
+
+#. type: textblock
+#: ../scripts/origtargz.pl:159
+msgid ""
+"B<debcheckout>(1), B<git-import-orig>(1), B<pristine-tar>(1), B<svn-"
+"upgrade>(1), B<uupdate>(1)"
+msgstr ""
+"B<debcheckout>(1), B<git-import-orig>(1), B<pristine-tar>(1), B<svn-"
+"upgrade>(1), B<uupdate>(1)"
+
+#. type: textblock
+#: ../scripts/origtargz.pl:163
+msgid ""
+"B<origtargz> and this manpage have been written by Christoph Berg "
+"<I<myon@debian.org>>."
+msgstr ""
+"B<origtargz> et cette page de manuel ont été écrits par Christoph Berg "
+"<I<myon@debian.org>>."
+
+#. type: TH
+#: ../scripts/plotchangelog.1:1
+#, no-wrap
+msgid "PLOTCHANGELOG"
+msgstr "PLOTCHANGELOG"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:4
+msgid "plotchangelog - graph Debian changelogs"
+msgstr ""
+"plotchangelog - Représenter les modifications Debian sous forme de graphique"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:7
+msgid "B<plotchangelog> [I<options>]I< changelog >..."
+msgstr "B<plotchangelog> [I<options>] I<changelog> ..."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:17
+msgid ""
+"B<plotchangelog> is a tool to aid in visualizing a Debian I<changelog>. The "
+"changelogs are graphed with B<gnuplot>(1) , with the X axis of the graph "
+"denoting time of release and the Y axis denoting the Debian version number "
+"of the package. Each individual release of the package is represented by a "
+"point, and the points are color coded to indicate who released that version "
+"of the package. The upstream version number of the package can also be "
+"labeled on the graph."
+msgstr ""
+"B<plotchangelog> est un outil qui aide à visualiser les informations d'un "
+"fichier I<changelog>. Ces informations sont affichées graphiquement avec "
+"B<gnuplot>(1), avec sur l'axe des abscisses la date des versions, et sur "
+"l'axe des ordonnées le numéro de version Debian d'un paquet. Chaque version "
+"individuelle d'un paquet est représentée par un point, dont la couleur "
+"indique qui a fourni cette version. Le numéro de version amont peut "
+"également être affiché sur le graphique."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:21
+msgid ""
+"Alternatively, the Y axis can be configured to display the size of the "
+"changelog entry for each new version. Or it can be configured to display "
+"approximately how many bugs were fixed for each new version."
+msgstr ""
+"L'axe des ordonnées peut également être configuré de manière à indiquer la "
+"taille de l'entrée du fichier I<changelog> pour chaque nouvelle version. Il "
+"peut aussi être configuré de manière à indiquer approximativement combien de "
+"bogues ont été corrigés par chaque nouvelle version."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:24
+msgid ""
+"Note that if the package is a Debian-specific package, the entire package "
+"version will be used for the Y axis. This does not always work perfectly."
+msgstr ""
+"Remarquez que s'il s'agit d'un paquet spécifique à Debian, l'axe des Y "
+"utilisera les versions du paquet. Cela ne fonctionne pas toujours très bien."
+
+#. type: SH
+#: ../scripts/plotchangelog.1:25
+#, no-wrap
+msgid "READING THE GRAPH"
+msgstr "LECTURE DU GRAPHIQUE"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:33
+msgid ""
+"The general outline of a package's graph is typically a series of peaks, "
+"starting at 1, going up to n, and then returning abruptly to 1. The higher "
+"the peaks, the more releases the maintainer made between new upstream "
+"versions of the package. If a package is Debian-only, it's graph will just "
+"grow upwards without ever falling (although a bug in this program may cause "
+"it to fall sometimes, if the version number goes from say, 0.9 to say, 0.10 "
+"- this is interpreted wrong...)"
+msgstr ""
+"La silhouette du graphique d'un paquet est en règle générale une série de "
+"pics, démarrant à 1, allant jusqu'à n, et retournant à 1 juste après. Plus "
+"un pic est important, plus le responsable a fourni de versions du paquet "
+"pour une version amont. Pour un paquet uniquement pour Debian, son graphique "
+"sera croissant sans jamais redescendre (même si un bogue du programme peut, "
+"à cause d'une mauvaise interprétation, le faire redescendre, si la version "
+"passe par exemple de 0.9 à 0.10)."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:40
+msgid ""
+"If the graph dips below 1, someone made a NMU of the package and upgraded it "
+"to a new upstream version, thus setting the Debian version to 0. NMU's in "
+"general appear as fractional points like 1.1, 2.1, etc. A NMU can also be "
+"easily detected by looking at the points that represent which maintainer "
+"uploaded the package -- a solitary point of a different type than the points "
+"before and after it is typically a NMU."
+msgstr ""
+"Si le graphique plonge à une valeur inférieure à 1, cela signifie que "
+"quelqu'un a fait une NMU pour le paquet en même temps qu'une mise à jour "
+"vers une nouvelle version amont, ce qui place la version Debian à 0. En "
+"règle générale, les NMU apparaissent comme des nombres à virgule : 1.1, 2.1, "
+"etc. Une NMU peut également être facilement détectée en regardant sur les "
+"points quel responsable a envoyé le paquet : un point isolé d'un type "
+"différent des points précédents et suivants est souvent le signe d'une NMU."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:43
+msgid ""
+"It's also easy to tell by looking at the points when a package changes "
+"maintainers."
+msgstr ""
+"Il est également facile de trouver quand un paquet a changé de responsable "
+"en jetant un coup d'oeil aux points."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:44
+#, no-wrap
+msgid "B<-l>, B<--linecount>"
+msgstr "B<-l>, B<--linecount>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:50
+msgid ""
+"Instead of using the Debian version number as the Y axis, use the number of "
+"lines in the changelog entry for each version. Cannot be used together with "
+"B<--bugcount>."
+msgstr ""
+"Au lieu d'utiliser le numéro de version Debian pour l'axe des ordonnées, "
+"utilise le nombre de lignes de l'entrée du fichier I<changelog> pour chaque "
+"version. Cette option ne peut pas être utilisée en même temps que B<--"
+"bugcount>."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:50
+#, no-wrap
+msgid "B<-b>, B<--bugcount>"
+msgstr "B<-b>, B<--bugcount>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:57
+msgid ""
+"Instead of using the Debian version number as the Y axis, use the number of "
+"bugs that were closed by each changelog entry. Note that this number is "
+"obtained by searching for \"#dddd\" in the changelog, and so it may be "
+"inaccurate. Cannot be used together with B<--linecount>."
+msgstr ""
+"Au lieu d'utiliser le numéro de version Debian pour l'axe des ordonnées, "
+"utilise le nombre de bogues fermés par chaque entrée du fichier "
+"I<changelog>. Remarquez que ce nombre de bogues est trouvé en recherchant "
+"« #dddd » dans le fichier I<changelog>, et peut donc être imprécis. Cette "
+"option ne peut pas être utilisée avec B<--linecount>."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:57
+#, no-wrap
+msgid "B<-c>, B<--cumulative>"
+msgstr "B<-c>, B<--cumulative>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:65
+msgid ""
+"When used together with either B<--bugcount> or B<--linecount>, graphs the "
+"cumulative count rather than the count in each individual changelog entry."
+msgstr ""
+"Lorsqu'elle est utilisée avec les options B<--bugcount> ou B<--linecount>, "
+"effectue un décompte incrémental plutôt qu'un décompte individuel pour "
+"chaque entrée du fichier I<changelog>."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:65
+#, no-wrap
+msgid "B<-v>, B<--no-version>"
+msgstr "B<-v>, B<--no-version>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:68
+msgid ""
+"Do not show upstream version labels. Useful if the graph gets too crowded."
+msgstr ""
+"N'affiche pas les versions amont, ce qui est utile lorsque le graphique est "
+"trop chargé."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:68
+#, no-wrap
+msgid "B<-m, --no-maint>"
+msgstr "B<-m>, B<--no-maint>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:71
+msgid "Do not differentiate between different maintainers of the package."
+msgstr "Ne fait pas de différence entre les différents responsables du paquet."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:71
+#, no-wrap
+msgid "B<-s file>, B<--save=>I<file>"
+msgstr "B<-s> I<fichier>, B<--save=>I<fichier>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:75
+msgid ""
+"Save the graph to I<file> in PostScript format instead of immediately "
+"displaying it."
+msgstr ""
+"Sauver le graphe dans le I<fichier> au format PostScript, au lieu de "
+"l'afficher immédiatement."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:75
+#, no-wrap
+msgid "B<-u>, B<--urgency>"
+msgstr "B<-u>, B<--urgency>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:78
+msgid "Use larger points when displaying higher-urgency package uploads."
+msgstr ""
+"Utilise des points plus gros pour les versions ayant un niveau d'urgence "
+"plus important."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:81
+msgid ""
+"Output the gnuplot script that is fed into gnuplot (for debugging purposes)."
+msgstr "Affiche le script qui est fourni à gnuplot (pour le débogage)."
+
+# NOTE: \" manquant
+#. type: TP
+#: ../scripts/plotchangelog.1:81
+#, no-wrap
+msgid "B<-g>I<commands>, B<--gnuplot=>I<commands>"
+msgstr "B<-g>I<commandes>, B<--gnuplot=>I<commandes>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:92
+msgid ""
+"This allows you to insert B<gnuplot>(1) commands into the gnuplot script "
+"that is used to generate the graph. The commands are placed after all "
+"initialization but before the final B<plot> command. This can be used to "
+"override the default look provided by this program in arbitrary ways. You "
+"can also use things like \"set terminal png color\" to change the output "
+"file type, which is useful in conjunction with the -s option."
+msgstr ""
+"Ces options vous permettent d'insérer des commandes B<gnuplot>(1) dans le "
+"script gnuplot utilisé pour créer le graphique. Les commandes sont placées "
+"après l'initialisation, mais avant la commande B<plot> finale. Elles peuvent "
+"être utilisées pour remplacer l'apparence par défaut fournie par ce "
+"programme de façon arbitraire. Vous pouvez également utiliser quelque chose "
+"comme « set terminal png color » pour modifier le type du fichier de sortie, "
+"ce qui peut être utile avec l'option -s."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:95
+msgid "Show a usage summary."
+msgstr "Affiche un résumé d'aide."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:98
+msgid "Display version, author and copyright information."
+msgstr "Affiche la version, le nom de l'auteur, et le copyright."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:98
+#, no-wrap
+msgid "B<--noconf>, B<--no-conf>"
+msgstr "B<--noconf>, B<--no-conf>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:101
+msgid "Do not read any configuration files (see below)."
+msgstr "Ne lit aucun fichier de configuration (voir ci-dessous)."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:101
+#, no-wrap
+msgid "I<changelog >..."
+msgstr "I<changelog> ..."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:106
+msgid ""
+"The I<changelog> files to graph. If multiple files are specified they will "
+"all be displayed on the same graph. The files may be compressed with gzip. "
+"Any text in them that is not in Debian changelog format will be ignored."
+msgstr ""
+"Le fichier I<changelog> dont on veut le graphique. Si plusieurs fichiers "
+"sont indiqués, ils seront tous affichés sur le même graphique. Les fichiers "
+"peuvent être compressés avec gzip. Tout texte n'étant pas dans le format des "
+"fichiers changelog de Debian sera ignoré."
+
+# NOTE: presque identique, var env cleaned only when files are read
+#. type: Plain text
+#: ../scripts/plotchangelog.1:113
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. The B<--no-"
+"conf> option can be used to prevent reading these files. Environment "
+"variable settings are ignored when these configuration files are read. The "
+"currently recognised variables are:"
+msgstr ""
+"Les deux fichiers de configuration I</etc/devscripts.conf> et I<~/."
+"devscripts> sont évalués dans cet ordre par un interpréteur de commandes "
+"(« shell ») pour placer les variables de configuration. Des options de ligne "
+"de commande peuvent être utilisées pour neutraliser les paramètres des "
+"fichiers de configuration. Les paramètres des variables d'environnement sont "
+"ignorés à cette fin. Si la première option donnée en ligne de commande est "
+"B<--no-conf>, alors ces fichiers ne sont pas évalués. Les variables "
+"actuellement identifiées sont :"
+
+#. type: TP
+#: ../scripts/plotchangelog.1:113
+#, no-wrap
+msgid "B<PLOTCHANGELOG_OPTIONS>"
+msgstr "B<PLOTCHANGELOG_OPTIONS>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:118
+msgid ""
+"This is a space-separated list of options to always use, for example B<-l -"
+"b>. Do not include B<-g> or B<--gnuplot> among this list as it may be "
+"ignored; see the next variable instead."
+msgstr ""
+"Liste d'options à toujours utiliser. Les options sont séparées par des "
+"espaces. Par exemple, B<-l -b>. N'incluez pas les options B<-g> ou B<--"
+"gnuplot> dans cette liste, elles seraient ignorées ; voyez plutôt l'option "
+"suivante."
+
+#. type: TP
+#: ../scripts/plotchangelog.1:118
+#, no-wrap
+msgid "B<PLOTCHANGELOG_GNUPLOT>"
+msgstr "B<PLOTCHANGELOG_GNUPLOT>"
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:124
+msgid ""
+"These are B<gnuplot> commands which will be prepended to any such commands "
+"given on the command line."
+msgstr ""
+"Ce sont les commandes B<gnuplot> qui sont utilisées avant toute commande "
+"gnuplot fournie en ligne de commande."
+
+#. type: Plain text
+#: ../scripts/plotchangelog.1:127
+msgid "Joey Hess E<lt>joey@kitenet.netE<gt>"
+msgstr "Joey Hess E<lt>joey@kitenet.netE<gt>"
+
+#. type: TH
+#: ../scripts/pts-subscribe.1:1
+#, no-wrap
+msgid "PTS-SUBSCRIBE"
+msgstr "PTS-SUBSCRIBE"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:4
+msgid "pts-subscribe - time-limited subscription to the PTS"
+msgstr "pts-subscribe - Abonnement au PTS limité dans le temps"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:6
+msgid "B<pts-subscribe> [I<options>] I<package>"
+msgstr "B<pts-subscribe> [I<options>] I<paquet>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:8
+msgid "B<pts-unsubscribe> [I<options>] I<package>"
+msgstr "B<pts-unsubscribe> [I<options>] I<paquet>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:12
+msgid ""
+"B<pts-subscribe> sends a subscription request for I<package> to the Package "
+"Tracking System at pts@qa.debian.org, and cancels the subscription 30 days "
+"later."
+msgstr ""
+"B<pts-subscribe> envoie une demande d'abonnement pour le I<paquet> au "
+"système de suivi des paquets (PTS), à pts@qa.debian.org, et se désabonne "
+"30 jours plus tard."
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:15
+msgid ""
+"If called as B<pts-unsubscribe>, send an unsubscription request for "
+"I<package> to the Package Tracking System."
+msgstr ""
+"Lorsque le programme est appelé en tant que B<pts-unsubscribe>, envoie une "
+"demande de suppression de l'abonnement pour le paquet I<paquet> au système "
+"de suivi des paquets."
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:18
+msgid ""
+"This utility is useful if a developer has made an NMU and wants to track the "
+"package for a limited period of time."
+msgstr ""
+"Cet outil est utile si un développeur a effectué une NMU et veut suivre le "
+"paquet concerné pendant une période limitée."
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:19
+#, no-wrap
+msgid "B<--until >I<time>, B<-u> I<time>"
+msgstr "B<--until >I<date>, B<-u> I<date>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:24
+msgid ""
+"When B<at>(1) should cancel the subscription. I<time> must be specified "
+"using B<at>'s syntax. Default is 'now + 30 days'. This option will "
+"probably require quoting!"
+msgstr ""
+"Date à laquelle B<at>(1) doit envoyer la demande de désabonnement, en "
+"utilisant la syntaxe de B<at>. La valeur par défaut est « now + 30 days ». "
+"Cette option doit probablement être protégée avec des guillemets."
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:24
+#, no-wrap
+msgid "B<--forever>"
+msgstr "B<--forever>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:28
+msgid ""
+"Don't cancel the subscription automatically. This can also be specified as "
+"B<--until forever>."
+msgstr ""
+"Ne pas supprimer l'abonnement automatiquement. Cela peut également être "
+"indiqué avec B<--until forever>."
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:35
+#, no-wrap
+msgid "B<DEBEMAIL>, B<EMAIL>"
+msgstr "B<DEBEMAIL>, B<EMAIL>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:42
+msgid ""
+"If one of these is set (with preference give to B<DEBEMAIL>), then this will "
+"be used for the subscription address. If neither is set, then the email "
+"will be sent without a specified subscription address, and the email's From: "
+"line will be used to determine the sender's address. This will be "
+"determined by B<mail>(1)."
+msgstr ""
+"Si l'une d'elles est renseignée (avec une préférence donnée à B<DEBEMAIL>), "
+"alors elle est utilisée comme adresse d'abonnement. Si aucune n'est "
+"renseignée, alors le message va être envoyé sans adresse d'abonnement et la "
+"ligne From: du message va être utilisée pour déterminer l'adresse de "
+"l'émetteur du message. Cela va être déterminé par B<mail>(1)."
+
+#. type: TP
+#: ../scripts/pts-subscribe.1:48
+#, no-wrap
+msgid "B<PTS_UNTIL>"
+msgstr "B<PTS_UNTIL>"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:51
+msgid "Setting this is equivalent to giving a B<--until> option."
+msgstr "Équivaut à fournir une option B<--until>."
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:56
+msgid ""
+"B<at>(1), information about the Package Tracking System in the Developer's "
+"Reference at https://www.debian.org/doc/developers-reference/resources."
+"html#pkg-tracking-system"
+msgstr ""
+"B<at>(1), informations à propos du système de suivi des paquets (PTS) dans "
+"la Référence du Développeur à https://www.debian.org/doc/manuals/developers-"
+"reference/resources.html#pkg-tracking-system"
+
+#. type: Plain text
+#: ../scripts/pts-subscribe.1:59
+msgid ""
+"This program was written by Julian Gilbey E<lt>jdg@debian.orgE<gt> based on "
+"a public domain prototype by Raphael Hertzog E<lt>hertzog@debian.orgE<gt> "
+"and is copyright under the GPL, version 2 or later."
+msgstr ""
+"Ce programme a été écrit par Julian Gilbey E<lt>jdg@debian.orgE<gt>, basé "
+"sur un prototype placé dans le domaine public par Raphaël Hertzog "
+"E<lt>hertzog@debian.orgE<gt> et est distribué sous licence GPL, version 2 ou "
+"ultérieure."
+
+#. type: TH
+#: ../scripts/rc-alert.1:1
+#, no-wrap
+msgid "RC-ALERT"
+msgstr "RC-ALERT"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:4
+msgid "rc-alert - check for installed packages with release-critical bugs"
+msgstr ""
+"rc-alert - Rechercher les paquets installés ayant des bogues empêchant leur "
+"intégration dans la prochaine distribution"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:6
+msgid ""
+"B<rc-alert> [I<inclusion options>] [B<--debtags> [I<tag>[B<,>I<tag> ...]]] "
+"[B<--popcon>] [I<package> ...]"
+msgstr ""
+"B<rc-alert> [I<options d'inclusion>] [B<--debtags> [I<étiquette>[B<,"
+">I<étiquette> ...]]] [B<--popcon>] [I<paquet> ...]"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:8
+msgid "B<rc-alert --help>|B<--version>"
+msgstr "B<rc-alert --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:12
+msgid ""
+"B<rc-alert> downloads the list of release-critical bugs from the Debian BTS "
+"webpages, and then outputs a list of packages installed on the system, or "
+"given on the command-line, which are in that list."
+msgstr ""
+"B<rc-alert> télécharge la liste des bogues empêchant l'intégration de "
+"paquets dans la prochaine distribution (« release-critical ») depuis les "
+"pages web du BTS Debian, puis affiche l'ensemble des paquets installés sur "
+"le système, ou fournis sur la ligne de commande, qui se trouvent dans cette "
+"liste."
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:17
+msgid ""
+"If the directory I<~/.devscripts_cache> exists or the B<--cache> option is "
+"given, then the (sizable) downloaded list will be cached, and will only be "
+"downloaded again on a second invocation if it has changed."
+msgstr ""
+"Si le répertoire I<~/.devscripts_cache> existe ou que l'option B<--cache> "
+"est donnée, la liste de téléchargement (qui peut être importante) sera mise "
+"en cache et sera seulement téléchargée une nouvelle fois lors d'une seconde "
+"invocation si elle a changé."
+
+#. type: TP
+#: ../scripts/rc-alert.1:18
+#, no-wrap
+msgid "B<--cache>"
+msgstr "B<--cache>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:21
+msgid "Force the creation of the I<~/.devscripts_cache> cache directory."
+msgstr "Force la création du répertoire de cache I<~/.devscripts_cache>."
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:31
+msgid ""
+"It is also possible to filter the list of bugs reported based on the tags "
+"and distributions associated with the package. The filtering options are:"
+msgstr ""
+"Il est également possible de filtrer la liste des bogues en fonction des "
+"étiquettes et de la distribution associée aux paquets. Les options de "
+"filtrage sont :"
+
+#. type: TP
+#: ../scripts/rc-alert.1:31
+#, no-wrap
+msgid "B<--include-tags>, B<-f>"
+msgstr "B<--include-tags>, B<-f>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:35
+msgid ""
+"A list of tags which the bug must have, in the format used for output. For "
+"example, to include bugs tagged security or help wanted, use \"SH\"."
+msgstr ""
+"Une liste d'étiquettes que le bogue doit avoir, dans le format utilisé pour "
+"la sortie. Par exemple, pour inclure les bogues avec l'étiquette security ou "
+"help, utilisez « SH »."
+
+#. type: TP
+#: ../scripts/rc-alert.1:35
+#, no-wrap
+msgid "B<--include-tag-op>, B<-t>"
+msgstr "B<--include-tag-op>, B<-t>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:39
+msgid ""
+"If set to I<and>, a bug must have all of the tags specified by B<--include-"
+"tags>."
+msgstr ""
+"Lorsqu'elle vaut I<and>, un bogue doit avoir toutes les étiquettes indiquées "
+"par B<--include-tags>."
+
+#. type: TP
+#: ../scripts/rc-alert.1:39
+#, no-wrap
+msgid "B<--exclude-tags>"
+msgstr "B<--exclude-tags>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:43
+msgid ""
+"A list of tags which the bug must not have, in the same format as B<--"
+"include-tags>."
+msgstr ""
+"Une liste d'étiquettes que le bogue ne doit pas avoir, dans le même format "
+"que pour B<--include-tags>."
+
+#. type: TP
+#: ../scripts/rc-alert.1:43
+#, no-wrap
+msgid "B<--exclude-tag-op>"
+msgstr "B<--exclude-tag-op>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:48
+msgid ""
+"If set to I<and>, a bug must have none of the tags specified by B<--exclude-"
+"tags>. By default, the bug will be excluded if any tag matches."
+msgstr ""
+"Lorsqu'elle vaut I<and>, un bogue ne doit avoir aucune des étiquettes "
+"indiquées par B<--exclude-tags>. Par défaut un bogue sera exclu s'il a une "
+"des étiquettes."
+
+#. type: TP
+#: ../scripts/rc-alert.1:48
+#, no-wrap
+msgid "B<--include-dists>, B<-d>"
+msgstr "B<--include-dists>, B<-d>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:52
+msgid ""
+"A list of distributions which the bug must apply to, in the format used for "
+"output. For example, to include bugs affecting testing or unstable, use \"TU"
+"\"."
+msgstr ""
+"Une liste de distributions pour lesquelles le bogue s'applique, au format "
+"utilisé pour la sortie. Par exemple, pour inclure les bogues qui affectent "
+"testing ou unstable, utilisez « TU »."
+
+#. type: TP
+#: ../scripts/rc-alert.1:52
+#, no-wrap
+msgid "B<--include-dist-op>, B<-o>"
+msgstr "B<--include-dist-op>, B<-o>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:56
+msgid ""
+"If set to I<and>, a bug must apply to all of the specified distributions in "
+"order to be included."
+msgstr ""
+"Lorsqu'elle vaut I<and>, un bogue doit s'appliquer à toutes les "
+"distributions indiquées pour être sélectionné."
+
+#. type: TP
+#: ../scripts/rc-alert.1:56
+#, no-wrap
+msgid "B<--exclude-dists>"
+msgstr "B<--exclude-dists>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:60
+msgid ""
+"A list of distributions to which the bug must not apply, in the same format "
+"as B<--include-dists>."
+msgstr ""
+"Une liste de distribution pour lesquelles le bogue ne doit pas s'appliquer, "
+"dans le même format que pour B<--include-dists>."
+
+#. type: TP
+#: ../scripts/rc-alert.1:60
+#, no-wrap
+msgid "B<--exclude-dist-op>"
+msgstr "B<--exclude-dist-op>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:65
+msgid ""
+"If set to I<and>, a bug must apply to all of the specified distributions in "
+"order to be excluded. By default the bug will be excluded if it applies to "
+"any of the listed distributions."
+msgstr ""
+"Lorsqu'elle vaut I<and>, un bogue doit s'appliquer à toutes les "
+"distributions indiquées pour être exclu. Par défaut, le bogue sera exclu "
+"s'il s'applique à une des distributions listées."
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:70
+msgid ""
+"It is also possible to only list bugs which have specific debtags set. Note "
+"that you need to have debtags installed and also that it's not mandatory for "
+"maintainers to set proper debtags. The produced list will thus probably be "
+"incomplete."
+msgstr ""
+"Il est également possible de ne lister que les bogues qui ont certaines "
+"étiquettes utilisateur (« debtags »). Remarquez que vous devez avoir "
+"installé debtags et que les étiquettes utilisateur ne sont pas "
+"nécessairement configurées comme il faut par les responsables des paquets. "
+"La liste produite sera donc probablement incomplète."
+
+#. type: TP
+#: ../scripts/rc-alert.1:70
+#, no-wrap
+msgid "B<--debtags>"
+msgstr "B<--debtags>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:75
+msgid ""
+"Match packages based on the listed tags. Each package is matched only if it "
+"has all the listed tags; in the case of multiple tags within the same facet, "
+"a package is matched if it has any of the listed tags within the facet."
+msgstr ""
+"Sélectionner les paquets en fonction des étiquettes listées. Chaque paquet "
+"est sélectionné seulement s'il a toutes les étiquettes listées ; dans le cas "
+"de plusieurs étiquettes de la même facette, un paquet est sélectionné s'il a "
+"une des étiquettes listées d'une facette."
+
+#. type: TP
+#: ../scripts/rc-alert.1:75
+#, no-wrap
+msgid "B<--debtags-database>"
+msgstr "B<--debtags-database>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:79
+msgid ""
+"Use a non-standard debtags database. The default is I</var/lib/debtags/"
+"packages-tags>."
+msgstr ""
+"Utiliser une base de données debtags non standard. La base de données par "
+"défaut est I</var/lib/debtags/packages-tags>."
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:83
+msgid ""
+"Popularity-contest collects data about installation and usage of Debian "
+"packages. You can additionally sort the bugs by the popcon rank of the "
+"related packages."
+msgstr ""
+"Popularity-contest collecte des données concernant l'installation et "
+"l'utilisation des paquets Debian. Vous pouvez également trier les bogues par "
+"le rang popcon des paquets correspondants."
+
+#. type: TP
+#: ../scripts/rc-alert.1:83
+#, no-wrap
+msgid "B<--popcon>"
+msgstr "B<--popcon>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:86
+msgid "Sort bugs by the popcon rank of the package the bug belongs to."
+msgstr ""
+"Trier les bogues par le rang popcon des paquets auxquels les bogues "
+"appartiennent."
+
+#. type: TP
+#: ../scripts/rc-alert.1:86
+#, no-wrap
+msgid "B<--pc-vote>"
+msgstr "B<--pc-vote>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:92
+msgid ""
+"By default, packages are sorted according to the number of people who have "
+"the package installed. This option enables sorting by the number of people "
+"regularly using the package instead. This option has no effect in "
+"combination with --pc-local."
+msgstr ""
+"Par défaut, les paquets sont triés en fonction du nombre de personnes qui "
+"ont installé le paquet. Cette option permet de trier en fonction du nombre "
+"de personnes qui utilisent régulièrement le paquet. Cette option n'a aucun "
+"effet quand elle est combinée à --pc-local."
+
+#. type: TP
+#: ../scripts/rc-alert.1:92
+#, no-wrap
+msgid "B<--pc-local>"
+msgstr "B<--pc-local>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:96
+msgid ""
+"Instead of requesting remote data the information from the last popcon run "
+"is used (I</var/log/popularity-contest>)."
+msgstr ""
+"Au lieu de télécharger les données, utiliser les informations de la dernière "
+"exécution de popcon (I</var/log/popularity-contest>)."
+
+#. type: TP
+#: ../scripts/rc-alert.1:97
+#, no-wrap
+msgid "B<--include-dists> OS"
+msgstr "B<--include-dists> OS"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:100
+msgid "The bug must apply to at least one of oldstable or stable"
+msgstr "Le bogue doit s'appliquer à au moins oldstable ou stable"
+
+#. type: TP
+#: ../scripts/rc-alert.1:100
+#, no-wrap
+msgid "B<--include-dists> TUB< --include-dist-op> and"
+msgstr "B<--include-dists> TUB< --include-dist-op> and"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:103
+msgid "The bug must apply to both testing and unstable"
+msgstr "Le bogue doit s'appliquer à testing et unstable"
+
+#. type: TP
+#: ../scripts/rc-alert.1:103
+#, no-wrap
+msgid "B<--include-dists> OB< --include-tags> SB< --exclude-tags> +"
+msgstr "B<--include-dists> OB< --include-tags> SB< --exclude-tags> +"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:106
+msgid "The bug must apply to oldstable and be tagged security but not patch"
+msgstr ""
+"Le bogue doit s'appliquer à oldstable et doit avoir l'étiquette security, "
+"sans l'étiquette patch"
+
+#. type: TP
+#: ../scripts/rc-alert.1:106
+#, no-wrap
+msgid "B<--exclude-dists> SOTB< --include-tags> R"
+msgstr "B<--exclude-dists> SOTB< --include-tags> R"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:110
+msgid ""
+"The bug must apply to only unstable or experimental (or both) and be tagged "
+"unreproducible"
+msgstr ""
+"Le bogue ne doit s'appliquer qu'à unstable ou experimental (ou les deux) et "
+"doit avoir l'étiquette unreproducible"
+
+#. type: TP
+#: ../scripts/rc-alert.1:110
+#, no-wrap
+msgid "B<--debtags> implemented-in::perl,role::plugin,implemented-in::python"
+msgstr "B<--debtags> implemented-in::perl,role::plugin,implemented-in::python"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:115
+msgid ""
+"The bug must apply to packages matching the specified debtags, i.e. the "
+"match will only include packages that have the 'role::plugin' tag and that "
+"have either of the tags 'implemented-in::perl' or 'implemented-in::python'."
+msgstr ""
+"Le bogue doit s'appliquer aux paquets qui correspondent aux étiquettes "
+"debtags indiquées, c'est-à-dire que la sélection ne comprendra que des "
+"paquets qui ont l'étiquette « role::plugin » et qui ont soit l'étiquette "
+"« implemented-in::perl », soit l'étiquette « implemented-in::python »."
+
+#. type: TP
+#: ../scripts/rc-alert.1:115
+#, no-wrap
+msgid "B<--popcon> B<--pc-local>"
+msgstr "B<--popcon> B<--pc-local>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:119
+msgid ""
+"Read I</var/log/popularity-contest> and sort bugs by your personal popcon "
+"ranking (which is basically the atime of your packages' binaries)."
+msgstr ""
+"Lire I</var/log/popularity-contest> et trier les bogues par votre classement "
+"popcon (qui correspond grossièrement à l'heure d'accès des binaires de vos "
+"paquets)."
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:121
+msgid "It is not possible to say \"does not apply only to unstable\""
+msgstr ""
+"Il n'est pas possible de demander « ne s'applique pas uniquement à unstable »"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:125
+msgid "B<debtags(1)> B<popbugs(1)> B<popularity-contest(8)>"
+msgstr "B<debtags(1)> B<popbugs(1)> B<popularity-contest(8)>"
+
+#. type: Plain text
+#: ../scripts/rc-alert.1:129
+msgid ""
+"B<rc-alert> was written by Anthony DeRobertis and modified by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt> and Adam D. Barratt E<lt>adam@adam-barratt.org."
+"ukE<gt> for the devscripts package. Debtags and popcon functionality was "
+"added by Jan Hauke Rahm E<lt>info@jhr-online.deE<gt>."
+msgstr ""
+"B<rc-alert> a été écrit par Anthony DeRobertis et a été modifié par Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt> et Adam D. Barratt E<lt>adam@adam-barratt."
+"org.ukE<gt> pour le paquet devscripts. Les fonctionnalités debtags et popcon "
+"ont été ajoutées par Jan Hauke Rahm E<lt>info@jhr-online.deE<gt>."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:202
+msgid "rmadison -- Remotely query the Debian archive database about packages"
+msgstr ""
+"rmadison - Interroger à distance la base de données de l'archive Debian"
+
+#. type: =item
+#: ../scripts/rmadison.pl:208
+msgid "B<rmadison> [I<OPTIONS>] I<PACKAGE> ..."
+msgstr "B<rmadison> [I<OPTIONS>] I<PAQUET> ..."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:214
+msgid ""
+"B<dak ls> queries the Debian archive database (\"projectb\") and displays "
+"which package version is registered per architecture/component/suite. The "
+"CGI at B<https://qa.debian.org/madison.php> provides that service without "
+"requiring SSH access to ftp-master.debian.org or the mirror on mirror.ftp-"
+"master.debian.org. This script, B<rmadison>, is a command line frontend to "
+"this CGI."
+msgstr ""
+"L'outil B<dak ls> interroge la base d'archive Debian (« projectb ») et "
+"affiche les versions de paquet enregistrées par architecture/composante/"
+"distribution. Le script CGI à B<https://qa.debian.org/madison.php> met ce "
+"service à disposition, de sorte qu'un accès SSH à ftp-master.debian.org ou "
+"au miroir mirror.ftp-master.debian.org n'est pas requis. Ce script, "
+"B<rmadison>, est un frontal en ligne de commande pour ce script CGI."
+
+#. type: =item
+#: ../scripts/rmadison.pl:225
+msgid "B<-a>, B<--architecture=>I<ARCH>"
+msgstr "B<-a>, B<--architecture=>I<ARCH>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:227
+msgid "only show info for ARCH(s)"
+msgstr "N'afficher les informations que pour ARCH(s)."
+
+#. type: =item
+#: ../scripts/rmadison.pl:229
+msgid "B<-b>, B<--binary-type=>I<TYPE>"
+msgstr "B<-b>, B<--binary-type=>I<TYPE>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:231
+msgid "only show info for binary TYPE"
+msgstr "N'afficher les informations que pour les binaires TYPE."
+
+#. type: =item
+#: ../scripts/rmadison.pl:233
+msgid "B<-c>, B<--component=>I<COMPONENT>"
+msgstr "B<-c>, B<--component=>I<COMPOSANTE>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:235
+msgid "only show info for COMPONENT(s)"
+msgstr "N'afficher les informations que pour la ou les COMPOSANTEs."
+
+#. type: =item
+#: ../scripts/rmadison.pl:237
+msgid "B<-g>, B<--greaterorequal>"
+msgstr "B<-g>, B<--greaterorequal>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:239
+msgid "show buildd 'dep-wait pkg >= {highest version}' info"
+msgstr ""
+"Afficher les informations de démon d'empaquetage « dep-wait pkg >= {highest "
+"version} »."
+
+#. type: =item
+#: ../scripts/rmadison.pl:241
+msgid "B<-G>, B<--greaterthan>"
+msgstr "B<-G>, B<--greaterthan>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:243
+msgid "show buildd 'dep-wait pkg >> {highest version}' info"
+msgstr ""
+"Afficher les informations de démon d'empaquetage « dep-wait pkg >> {highest "
+"version} »."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:247
+msgid "show this help and exit"
+msgstr "Afficher cette aide et quitter."
+
+#. type: =item
+#: ../scripts/rmadison.pl:249
+msgid "B<-s>, B<--suite=>I<SUITE>"
+msgstr "B<-s>, B<--suite=>I<DISTRIBUTION>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:251
+msgid "only show info for this suite"
+msgstr "N'afficher des informations que pour cette distribution."
+
+#. type: =item
+#: ../scripts/rmadison.pl:253
+msgid "B<-s>, B<--regex>"
+msgstr "B<-s>, B<--regex>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:255
+msgid "treat PACKAGE as a regex"
+msgstr "Traiter I<PAQUET> comme une expression rationnelle."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:257
+msgid ""
+"B<Note:> Since B<-r> can easily DoS the database (\"-r .\"), this option is "
+"not supported by the CGI on qa.debian.org and most other installations."
+msgstr ""
+"B<Remarque :> Étant donné que l'option B<-r> peut facilement créer un déni "
+"de service sur la base de données (« B<-r> B<.> »), cette option n'est pas "
+"prise en charge par le script CGI sur qa.debian.org ni sur la plupart des "
+"autres installations."
+
+#. type: =item
+#: ../scripts/rmadison.pl:260
+msgid "B<-S>, B<--source-and-binary>"
+msgstr "B<-S>, B<--source-and-binary>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:262
+msgid "show info for the binary children of source pkgs"
+msgstr "Afficher les informations pour les binaires issus des paquets source."
+
+#. type: =item
+#: ../scripts/rmadison.pl:264
+msgid "B<-t>, B<--time>"
+msgstr "B<-t>, B<--time>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:266
+msgid "show projectb snapshot and reload time (not supported by all archives)"
+msgstr ""
+"Afficher le temps utilisé pour faire l'image « projectb » et le temps de "
+"chargement (pas géré par toutes les archives)."
+
+#. type: =item
+#: ../scripts/rmadison.pl:268
+msgid "B<-u>, B<--url=>I<URL>[B<,>I<URL> ...]"
+msgstr "B<-u>, B<--url=>I<URL>[B<,>I<URL> ...]"
+
+#. type: verbatim
+#: ../scripts/rmadison.pl:270
+#, no-wrap
+msgid ""
+"use I<URL> for the query. Supported shorthands are\n"
+" B<debian> or B<qa> https://qa.debian.org/madison.php\n"
+" B<debug> http://debug.debian.net/cgi-bin/madison.cgi\n"
+" B<ubuntu> http://people.canonical.com/~ubuntu-archive/madison.cgi\n"
+" B<udd> https://qa.debian.org/cgi-bin/madison.cgi\n"
+" B<new> https://qa.debian.org/cgi-bin/madison.cgi?table=new\n"
+"\n"
+msgstr ""
+"utiliser I<URL> pour la requête. Les raccourcis autorisés sont\n"
+" B<debian> ou B<qa> https://qa.debian.org/madison.php\n"
+" B<debug> http://debug.debian.net/cgi-bin/madison.cgi\n"
+" B<ubuntu> http://people.ubuntu.com/~ubuntu-archive/madison.cgi\n"
+" B<udd> https://qa.debian.org/cgi-bin/madison.cgi\n"
+" B<new> https://qa.debian.org/cgi-bin/madison.cgi?table=new\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:277
+msgid ""
+"See the B<RMADISON_URL_MAP_> variable below for a method to add new "
+"shorthands."
+msgstr ""
+"Consultez la variable B<RMADISON_URL_MAP_> ci-après pour une méthode d'ajout "
+"de raccourcis."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:282
+msgid "show version and exit"
+msgstr "Afficher la version et quitter."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:286
+msgid "don't read the devscripts configuration files"
+msgstr "Ne pas lire les fichiers de configuration de devscripts."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:290
+msgid ""
+"ARCH, COMPONENT and SUITE can be comma (or space) separated lists, e.g. --"
+"architecture=m68k,i386"
+msgstr ""
+"ARCH, COMPOSANTE et DISTRIBUTION peuvent être des listes dont les éléments "
+"sont séparés par des virgules (ou des espaces), par exemple --"
+"architecture=m68k,i386."
+
+#. type: =item
+#: ../scripts/rmadison.pl:303
+msgid "B<RMADISON_URL_MAP_>I<SHORTHAND>=I<URL>"
+msgstr "B<RMADISON_URL_MAP_>I<RACCOURCIS>=I<URL>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:305
+msgid ""
+"Add an entry to the set of shorthand URLs listed above. I<SHORTHAND> should "
+"be replaced with the shorthand form to be used to refer to I<URL>."
+msgstr ""
+"Ajouter une entrée pour configurer les URL de raccourcis listées ci-dessus. "
+"I<RACCOURCIS> doit être remplacé par le raccourci à utilisé pour faire "
+"référence à I<URL>."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:308
+msgid ""
+"Multiple shorthand entries may be specified by using multiple "
+"B<RMADISON_URL_MAP_*> variables."
+msgstr ""
+"Plusieurs raccourcis peuvent être définis en utilisant plusieurs variables "
+"B<RMADISON_URL_MAP_*>."
+
+#. type: =item
+#: ../scripts/rmadison.pl:311
+msgid "B<RMADISON_DEFAULT_URL>=I<URL>"
+msgstr "B<RMADISON_DEFAULT_URL>=I<URL>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:313
+msgid ""
+"Set the default URL to use unless overridden by a command line option. For "
+"Debian this defaults to debian,new. For Ubuntu this defaults to ubuntu."
+msgstr ""
+"Définir l'URL par défaut à utiliser, à moins qu'une autre soit fournie par "
+"une option en ligne de commande. Pour Debian, c’est « debian,new » par "
+"défaut. Pour Ubuntu, c’est « ubuntu » par défaut."
+
+#. type: =item
+#: ../scripts/rmadison.pl:316
+msgid "B<RMADISON_ARCHITECTURE>=I<ARCH>"
+msgstr "B<RMADISON_ARCHITECTURE>=I<ARCH>"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:318
+msgid ""
+"Set the default architecture to use unless overridden by a command line "
+"option. To run an unrestricted query when B<RMADISON_ARCHITECTURE> is set, "
+"use B<--architecture='*'>."
+msgstr ""
+"Définir l'architecture par défaut à utiliser, à moins qu'une autre soit "
+"fournie par une option en ligne de commande. Pour exécuter une requête non "
+"autorisée quand B<RMADISON_ARCHITECTURE> est définie, utiliser B<--"
+"architecture='*'>."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:326
+msgid "B<dak ls> was formerly called B<madison>."
+msgstr "B<dak ls> s'appelait précédemment B<madison>."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:328
+msgid ""
+"The protocol used by rmadison is fairly simple, the CGI accepts query the "
+"parameters a, b, c, g, G, r, s, S, t, and package. The parameter text is "
+"passed to enable plain-text output."
+msgstr ""
+"Le protocole utilisé par rmadison est assez simple, le script CGI accepte en "
+"entrée les paramètres a, b, c, g, G, r, s, S, t et package. Le paramètre "
+"text est utilisé pour permettre une sortie textuelle."
+
+#. type: textblock
+#: ../scripts/rmadison.pl:334
+msgid "B<dak>(1), B<madison-lite>(1)"
+msgstr "B<dak>(1), B<madison-lite>(1)"
+
+#. type: textblock
+#: ../scripts/rmadison.pl:338
+msgid ""
+"rmadison and https://qa.debian.org/madison.php were written by Christoph "
+"Berg <myon@debian.org>. dak was written by James Troup <james@nocrew.org>, "
+"Anthony Towns <ajt@debian.org>, and others."
+msgstr ""
+"rmadison et https://qa.debian.org/madison.php ont été écrits par Christoph "
+"Berg <myon@debian.org>. dak a été écrit par James Troup <james@nocrew.org>, "
+"Anthony Towns <ajt@debian.org> et d'autres."
+
+#. type: textblock
+#: ../scripts/sadt.pod:19
+msgid "sadt - simple DEP-8 test runner"
+msgstr "sadt - Simple exécution de test DEP-8"
+
+#. type: textblock
+#: ../scripts/sadt.pod:23
+msgid "B<sadt> [I<options>] [I<test-name>...]"
+msgstr "B<sadt> [I<options>] [I<nom-test> ...]"
+
+#. type: textblock
+#: ../scripts/sadt.pod:27
+msgid ""
+"B<sadt> is a simple implementation of DEP-8 (“automatic as-installed package "
+"testing”) test runner."
+msgstr ""
+"B<sadt> permet simplement d’exécuter des tests DEP-8 (« test automatique de "
+"paquet tel qu’il est installé »)."
+
+#. type: textblock
+#: ../scripts/sadt.pod:30
+msgid ""
+"It is your responsibility to satisfy tests' dependencies. B<sadt> won't "
+"attempt to install any missing packages. If a test's dependencies cannot be "
+"satisfied by packages that are currently installed, the test will be skipped."
+msgstr ""
+"Les dépendances à satisfaire pour les tests sont de votre responsabilité. "
+"B<sadt> n’essayera pas d’installer les paquets manquants. Si des dépendances "
+"d’un test ne peuvent pas être satisfaites par les paquets actuellement "
+"installés, le test sera ignoré."
+
+#. type: textblock
+#: ../scripts/sadt.pod:34
+msgid ""
+"B<sadt> won't build the package even if a test declares the B<build-needed> "
+"restriction. Instead, such a test will be skipped. However, you can build "
+"the package manually, and then tell B<sadt> to assume that the package is "
+"already built using the B<-b>/B<--built-source-tree>."
+msgstr ""
+"B<sadt> ne construira pas le paquet même si un test déclare la restriction "
+"B<build-needed>. À la place, ce genre de test sera ignoré. Cependant, vous "
+"pouvez construire le paquet vous-même et indiquer ensuite à B<sadt> de "
+"considérer que le paquet est déjà construit à l’aide de l’option B<-b> ou "
+"B<--built-source-tree>."
+
+#. type: textblock
+#: ../scripts/sadt.pod:39
+msgid ""
+"B<sadt> doesn't implement any virtualisation arrangements, therefore it "
+"skips tests that declare the B<breaks-testbed> restriction."
+msgstr ""
+"B<sadt> ne permet pas de gérer la virtualisation, par conséquent les tests "
+"qui déclarent la restriction B<breaks-testbed> sont ignorés."
+
+#. type: textblock
+#: ../scripts/sadt.pod:48
+msgid "Make the output more verbose."
+msgstr "Rendre la sortie plus bavarde."
+
+#. type: =item
+#: ../scripts/sadt.pod:50
+msgid "B<-b>, B<--built-source-tree>"
+msgstr "B<-b>, B<--built-source-tree>"
+
+#. type: textblock
+#: ../scripts/sadt.pod:52
+msgid ""
+"Assume that the source tree is already built. This is equivalent to B<--"
+"ignore-restriction=build-needed>."
+msgstr ""
+"Supposer que l’arborescence source est déjà construite. C’est équivalent à "
+"B<--ignore-restriction=build-needed>."
+
+#. type: =item
+#: ../scripts/sadt.pod:55
+msgid "B<--ignore-restriction>=I<restriction>"
+msgstr "B<--ignore-restriction=>I<restriction>"
+
+#. type: textblock
+#: ../scripts/sadt.pod:57
+msgid "Don't skip tests that declare the I<restriction>."
+msgstr "Ne pas ignorer les tests qui déclarent la I<restriction>"
+
+#. type: textblock
+#: ../scripts/sadt.pod:61
+msgid "Show a help message and exit."
+msgstr "Afficher un message d'aide et quitter."
+
+#. type: =head1
+#: ../scripts/sadt.pod:65
+msgid "CONFORMING TO"
+msgstr "CONFORMITÉ"
+
+#. type: textblock
+#: ../scripts/sadt.pod:67
+msgid "README.package-tests shipped by autopkgtest 2.7.2"
+msgstr "README.package-tests distribué dans autopkgtest 2.7.2."
+
+#. type: textblock
+#: ../scripts/sadt.pod:71
+msgid "B<adt-run>(1)"
+msgstr "B<adt-run>(1)"
+
+#. type: TH
+#: ../doc/suspicious-source.1:15
+#, no-wrap
+msgid "SUSPICIOUS-SOURCE"
+msgstr "SUSPICIOUS-SOURCE"
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:20
+msgid ""
+"suspicious-source - search for files that are not the GPL's \"preferred form "
+"of modification\""
+msgstr ""
+"suspicious-source - Rechercher des fichiers qui ne sont pas sous la « forme "
+"la plus adéquate pour les modifications » demandée par la GPL"
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:23
+msgid "B<suspicious-source> [I<options>]"
+msgstr "B<suspicious-source> [I<options>]"
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:30
+msgid ""
+"B<suspicious-source> is a script that outputs a list of files which are not "
+"common source files. This should be run in the root of a source tree to "
+"find files which might not be the \"preferred form of modification\" that "
+"the GPL and other licenses require."
+msgstr ""
+"B<suspicious-source> affiche une liste de fichiers qui ne sont pas des "
+"fichiers source usuels. Elle devrait être exécutée depuis le répertoire "
+"racine d'une arborescence source pour trouver les fichiers qui risquent de "
+"ne pas être sous la « forme la plus adéquate pour les modifications » comme "
+"exigé par la GPL et d'autres licences."
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:33
+msgid ""
+"The files inside version control system directories (like I<.bzr/> or I<CVS/"
+">) are not considered."
+msgstr ""
+"Les fichiers des répertoires de systèmes de gestion de version (comme I<.bzr/"
+"> or I<CVS/>) ne sont pas pris en compte."
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:38 ../doc/wrap-and-sort.1:37
+msgid "Show this help message and exit."
+msgstr "Afficher ce message d'aide et quitter."
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:41
+msgid "Print more information."
+msgstr "Afficher plus de renseignements."
+
+#. type: TP
+#: ../doc/suspicious-source.1:41
+#, no-wrap
+msgid "B<-d >I<directory>, B<--directory=>I<directory>"
+msgstr "B<-d> I<répertoire>, B<--directory=>I<répertoire>"
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:44
+msgid ""
+"Check the files in the specified I<directory> instead of the current "
+"directory."
+msgstr ""
+"Vérifier les fichiers du I<répertoire> indiqué plutôt que ceux du répertoire "
+"actuel."
+
+#. type: TP
+#: ../doc/suspicious-source.1:44
+#, no-wrap
+msgid "B<-m >I<mimetype>, B<--mimetype=>I<mimetype>"
+msgstr "B<-m> I<typemime>, B<--mimetype=>I<typemime>"
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:47
+msgid "Add I<mimetype> to list of white-listed MIME types."
+msgstr "Ajouter I<typemime> à la liste des types MIME acceptés."
+
+#. type: TP
+#: ../doc/suspicious-source.1:47
+#, no-wrap
+msgid "B<-e >I<extension>, B<--extension=>I<extension>"
+msgstr "B<-e> I<extension>, B<--extension=>I<extension>"
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:50
+msgid "Add I<extension> to list of white-listed extensions."
+msgstr "Ajouter I<extension> à la liste des extensions acceptées."
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:54
+msgid ""
+"B<suspicious-source> and this manpage have been written by Benjamin Drung "
+"E<lt>bdrung@debian.orgE<gt>."
+msgstr ""
+"B<suspicious-source> et cette page de manuel ont été écrites par Benjamin "
+"Drung E<lt>I<bdrung@debian.org>E<gt>."
+
+#. type: Plain text
+#: ../doc/suspicious-source.1:55 ../doc/wrap-and-sort.1:83
+msgid "Both are released under the ISC license."
+msgstr "Toutes deux sont publiées sous la License ISC."
+
+#. type: textblock
+#: ../scripts/svnpath.pl:5
+msgid "svnpath - output svn url with support for tags and branches"
+msgstr "svnpath - Afficher l'URL svn avec la gestion des tags et des branches"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:9
+msgid "B<svnpath>"
+msgstr "B<svnpath>"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:11
+msgid "B<svnpath tags>"
+msgstr "B<svnpath tags>"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:13
+msgid "B<svnpath branches>"
+msgstr "B<svnpath branches>"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:15
+msgid "B<svnpath trunk>"
+msgstr "B<svnpath trunk>"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:19
+msgid "B<svnpath> is intended to be run in a Subversion working copy."
+msgstr ""
+"B<svnpath> est destiné à être utilisé dans une copie de travail Subversion."
+
+#. type: textblock
+#: ../scripts/svnpath.pl:21
+msgid ""
+"In its simplest usage, B<svnpath> with no parameters outputs the svn url for "
+"the repository associated with the working copy."
+msgstr ""
+"Dans son utilisation la plus simple, B<svnpath> sans paramètre affiche l'URL "
+"svn pour le référentiel associé à la copie de travail."
+
+#. type: textblock
+#: ../scripts/svnpath.pl:24
+msgid ""
+"If a parameter is given, B<svnpath> attempts to instead output the url that "
+"would be used for the tags, branches, or trunk. This will only work if it's "
+"run in the top-level directory that is subject to tagging or branching."
+msgstr ""
+"Si un paramètre est donné, B<svnpath> essaie d'afficher à la place l'URL qui "
+"serait utilisée pour les tags, les branches ou le tronc. Cela ne "
+"fonctionnera que si la commande est lancée dans le niveau supérieur qui sera "
+"sujet aux marquages et aux mises en branches."
+
+#. type: textblock
+#: ../scripts/svnpath.pl:28
+msgid ""
+"For example, if you want to tag what's checked into Subversion as version "
+"1.0, you could use a command like this:"
+msgstr ""
+"Par exemple, si vous voulez marquer ce qui est dans Subversion comme la "
+"version 1.0, vous pouvez utiliser une commande telle que :"
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:31
+#, no-wrap
+msgid ""
+" svn cp $(svnpath) $(svnpath tags)/1.0\n"
+"\n"
+msgstr ""
+" svn cp $(svnpath) $(svnpath tags)/1.0\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:33
+msgid ""
+"That's much easier than using svn info to look up the repository url and "
+"manually modifying it to derive the url to use for the tag, and typing in "
+"something like this:"
+msgstr ""
+"C'est beaucoup plus simple que d'utiliser svn info pour regarder l'URL du "
+"référentiel et de la modifier manuellement pour en déduire l'URL à utiliser "
+"pour le étiquette, et de taper quelque chose comme :"
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:37
+#, no-wrap
+msgid ""
+" svn cp svn+ssh://my.server.example/svn/project/trunk svn+ssh://my.server.example/svn/project/tags/1.0\n"
+"\n"
+msgstr ""
+" svn cp svn+ssh://mon.serveur.exemple/svn/project/trunk svn+ssh://mon.serveur.exemple/svn/project/tags/1.0\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:39
+msgid ""
+"svnpath uses a simple heuristic to convert between the trunk, tags, and "
+"branches paths. It replaces the first occurrence of B<trunk>, B<tags>, or "
+"B<branches> with the name of what you're looking for. This will work ok for "
+"most typical Subversion repository layouts."
+msgstr ""
+"svnpath utilise une heuristique simple pour convertir les chemins entre "
+"trunk, tags et branches. Elle remplace la première occurrence de B<trunk>, "
+"B<tags> ou B<branches> avec le nom que vous recherchez. Cela fonctionnera "
+"dans la plupart des configurations Subversion habituelles."
+
+#. type: textblock
+#: ../scripts/svnpath.pl:44
+msgid ""
+"If you have an atypical layout and it does not work, you can add a F<~/."
+"svnpath> file. This file is perl code, which can modify the path in $url. "
+"For example, the author uses this file:"
+msgstr ""
+"Si vous avez une configuration inhabituelle et que cela ne fonctionne pas, "
+"vous pouvez ajouter un fichier F<~/.svnpath>. Ce fichier est du code perl, "
+"qui peut modifier le chemin dans $url. Par exemple :"
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:48
+#, no-wrap
+msgid ""
+" #!/usr/bin/perl\n"
+" # svnpath personal override file\n"
+"\n"
+msgstr ""
+" #!/usr/bin/perl\n"
+" # fichier de remplacement personnel pour svnpath\n"
+"\n"
+
+#. type: verbatim
+#: ../scripts/svnpath.pl:51
+#, no-wrap
+msgid ""
+" # For d-i I sometimes work from a full d-i tree branch. Remove that from\n"
+" # the path to get regular tags or branches directories.\n"
+" $url=~s!d-i/(rc|beta)[0-9]+/!!;\n"
+" $url=~s!d-i/sarge/!!;\n"
+" 1\n"
+"\n"
+msgstr ""
+" # Pour l'installateur Debian, il est parfois utile de travailler\n"
+" # avec une branche complète. Il faut donc supprimer cela du chemin\n"
+" # pour obtenir les répertoires tags et branches habituels.\n"
+" $url=~s!d-i/(rc|beta)[0-9]+/!!;\n"
+" $url=~s!d-i/sarge/!!;\n"
+" 1\n"
+"\n"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:91
+msgid "GPL version 2 or later"
+msgstr "GPL version 2 ou ultérieure"
+
+#. type: textblock
+#: ../scripts/svnpath.pl:95
+msgid "Joey Hess <joey@kitenet.net>"
+msgstr "Joey Hess <joey@kitenet.net>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:81
+msgid ""
+"tagpending - tags bugs that are to be closed in the latest changelog as "
+"pending"
+msgstr ""
+"tagpending - Placer l'étiquette « pending » sur tous les bogues à fermer "
+"dans le dernier groupe d'entrée du fichier changelog"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:85
+msgid "B<tagpending> [I<options>]"
+msgstr "B<tagpending> [I<options>]"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:89
+msgid ""
+"B<tagpending> parses debian/changelog to determine which bugs would be "
+"closed if the package were uploaded. Each bug is then marked as pending, "
+"using B<bts>(1) if it is not already so."
+msgstr ""
+"B<tagpending> analyse les fichiers I<debian/changelog> afin de trouver quels "
+"bogues seront fermés si le paquet était envoyé. Chaque bogue est ensuite "
+"marqué avec une étiquette « pending », en utilisant B<bts>(1), si elle n'est "
+"pas déjà présente."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:99
+msgid "Check whether any bugs require tagging, but do not actually do so."
+msgstr ""
+"Vérifier si l'étiquette « pending » doit être placée sur certains bogues, "
+"sans placer cette étiquette."
+
+#. type: =item
+#: ../scripts/tagpending.pl:101
+msgid "B<-s>, B<--silent>"
+msgstr "B<-s>, B<--silent>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:103
+msgid "Do not output any messages."
+msgstr "Ne pas afficher de messages."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:107
+msgid "List each bug checked and tagged in turn."
+msgstr "Lister tous les bogues vérifiés et qui ont l'étiquette."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:111
+msgid "Do not query the BTS, but (re)tag all bugs closed in the changelog."
+msgstr ""
+"Ne pas interroger le BTS, mais (re)placer l'étiquette sur les bogues fermés "
+"dans le I<changelog>."
+
+#. type: =item
+#: ../scripts/tagpending.pl:113
+msgid "B<--comments>"
+msgstr "B<--comments>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:115
+msgid ""
+"Include the changelog header line and the entries relating to the tagged "
+"bugs as comments in the generated mail. This is the default."
+msgstr ""
+"Inclure l'en-tête du journal des modifications et les entrées liées aux "
+"bogues à marquer, en tant que commentaires, dans le courrier créé. C'est le "
+"comportement par défaut."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:118
+msgid ""
+"Note that when used in combination with B<--to>, the header line output will "
+"always be that of the most recent version."
+msgstr ""
+"Remarquez, lors d'une utilisation avec l'option B<--to>, que la ligne d'en-"
+"tête utilisée sera toujours celle de la version la plus récente."
+
+#. type: =item
+#: ../scripts/tagpending.pl:121
+msgid "B<--no-comments>"
+msgstr "B<--no-comments>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:123
+msgid "Do not include changelog entries in the generated mail."
+msgstr ""
+"Ne pas inclure les entrées du fichier I<changelog> dans le courrier créé."
+
+#. type: =item
+#: ../scripts/tagpending.pl:125
+msgid "B<-c>, B<--confirm>"
+msgstr "B<-C>, B<--confirm>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:127
+msgid "Tag bugs as both confirmed and pending."
+msgstr "Placer à la fois l'étiquette « confirmed » et « pending »."
+
+#. type: =item
+#: ../scripts/tagpending.pl:129
+msgid "B<-t>, B<--to> I<version>"
+msgstr "B<-t>, B<--to> I<version>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:131
+msgid "Parse changelogs for all versions strictly greater than I<version>."
+msgstr ""
+"Analyser les entrées du fichier I<changelog> plus récentes (strictement) que "
+"la I<version>."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:133
+msgid "Equivalent to B<dpkg-parsechangelog>'s B<-v> option."
+msgstr "C'est équivalent à l'option B<-v> de B<dpkg-parsechangelog>."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:137
+msgid ""
+"Display the message which would be sent to the BTS and, except when B<--"
+"noact> was used, prompt for confirmation before sending it."
+msgstr ""
+"Afficher le message qui sera envoyé au BTS et, à moins que l'option B<--"
+"noact> ne soit utilisée, demander une confirmation avant de l'envoyer."
+
+#. type: =item
+#: ../scripts/tagpending.pl:140
+msgid "B<-w>, B<--wnpp>"
+msgstr "B<-w>, B<--wnpp>"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:142
+msgid ""
+"For each bug that does not appear to belong to the current package, check "
+"whether it is filed against wnpp. If so, tag it. This allows e.g. ITAs and "
+"ITPs closed in an upload to be tagged."
+msgstr ""
+"Pour chaque bogue qui ne semble pas appartenir au paquet en cours, vérifier "
+"s'il est attribué au paquet wnpp, et si oui l'étiqueter. Cela permet "
+"d'ajouter des étiquettes aux bogues ITA ou ITP qui sont fermés par l'envoi "
+"d'un paquet, par exemple."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:150
+msgid "B<bts>(1) and B<dpkg-parsechangelog>(1)"
+msgstr "B<bts>(1), B<dpkg-parsechangelog>(1)"
+
+#. type: textblock
+#: ../scripts/tagpending.pl:432
+msgid ""
+"This program is Copyright 2008 by Adam D. Barratt <adam@adam-barratt.org.uk>."
+msgstr ""
+"Ce programme a été écrit par Adam D. Barratt <adam@adam-barratt.org.uk>, "
+"Copyright (C) 2008."
+
+#. type: textblock
+#: ../scripts/tagpending.pl:435
+msgid ""
+"The shell script tagpending, on which this program is based, is Copyright "
+"2004 by Joshua Kwan <joshk@triplehelix.org> with changes copyright 2004-7 by "
+"their respective authors."
+msgstr ""
+"Le script shell tagpending, sur lequel se programme est basé est Copyright "
+"2004 par Joshua Kwan <joshk@triplehelix.org> avec des modifications "
+"copyright 2004-2007 par ses différents auteurs."
+
+#. type: textblock
+#: ../scripts/transition-check.pl:25
+msgid "transition-check - check a package list for involvement in transitions"
+msgstr ""
+"transition-check - Vérifier si un paquet est impliqué dans des transitions"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:29
+msgid "B<transition-check> B<--help>|B<--version>"
+msgstr "B<transition-check> B<--help>|B<--version>"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:31
+msgid ""
+"B<transition-check> [B<-f>|B<--filename=>I<FILENAME>] [I<source package "
+"list>]"
+msgstr ""
+"B<transition-check> [B<-f>|B<--filename=>I<FICHIER>] [I<liste de paquets "
+"source>]"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:35
+msgid ""
+"B<transition-check> checks whether any of the listed source packages are "
+"involved in a transition for which uploads to unstable are currently blocked."
+msgstr ""
+"B<transition-check> vérifie si l'un des paquets source listés est impliqué "
+"dans une transition pour laquelle les envois sont bloqués actuellement."
+
+#. type: textblock
+#: ../scripts/transition-check.pl:39
+msgid ""
+"If neither a filename nor a list of packages is supplied, B<transition-"
+"check> will use the source package name from I<debian/control>."
+msgstr ""
+"Si ni un fichier ni une liste de paquets n'est fourni, B<transition-check> "
+"utilisera le nom de paquet source indiqué dans I<debian/control>."
+
+#. type: =item
+#: ../scripts/transition-check.pl:46
+msgid "B<-f>, B<--filename=>I<filename>"
+msgstr "B<-f>, B<--filename=>I<fichier>"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:48
+msgid ""
+"Read a source package name from I<filename>, which should be a Debian "
+"package control file or I<.changes> file, and add that package to the list "
+"of packages to check."
+msgstr ""
+"Lire le nom de paquet source depuis I<fichier>, qui doit être un fichier de "
+"contrôle Debian ou un fichier I<.changes>, et ajoute ce paquet à la liste "
+"des paquets à vérifier."
+
+#. type: textblock
+#: ../scripts/transition-check.pl:56
+msgid ""
+"The exit status indicates whether any of the packages examined were found to "
+"be involved in a transition."
+msgstr ""
+"La valeur de retour indique si un des paquets examinés est impliqué dans une "
+"transition."
+
+#. type: =item
+#: ../scripts/transition-check.pl:61 ../scripts/who-permits-upload.pl:119
+msgid "0Z<>"
+msgstr "0Z<>"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:63
+msgid ""
+"Either B<--help> or B<--version> was used, or none of the packages examined "
+"was involved in a transition."
+msgstr ""
+"Soit les options B<--help> ou B<--version> ont été utilisées ou aucun des "
+"paquets examinés n'est impliqué dans une transition."
+
+#. type: =item
+#: ../scripts/transition-check.pl:66 ../scripts/who-permits-upload.pl:123
+msgid "1Z<>"
+msgstr "1Z<>"
+
+#. type: textblock
+#: ../scripts/transition-check.pl:68
+msgid "At least one package examined is involved in a current transition."
+msgstr ""
+"Au moins un paquet examiné est impliqué actuellement dans une transition."
+
+#. type: textblock
+#: ../scripts/transition-check.pl:74
+msgid ""
+"This code is copyright by Adam D. Barratt <I<adam@adam-barratt.org.uk>>, all "
+"rights reserved."
+msgstr ""
+"Ce programme est soumis au copyright de Adam D. Barratt <I<adam@adam-barratt."
+"org.uk>>, Tous droits réservés."
+
+#. type: textblock
+#: ../scripts/transition-check.pl:83
+msgid "Adam D. Barratt <I<adam@adam-barratt.org.uk>>"
+msgstr "Adam D. Barratt <I<adam@adam-barratt.org.uk>>"
+
+#. type: TH
+#: ../scripts/uscan.1:1
+#, no-wrap
+msgid "USCAN"
+msgstr "USCAN"
+
+#. type: Plain text
+#: ../scripts/uscan.1:4
+msgid "uscan - scan/watch upstream sources for new releases of software"
+msgstr ""
+"uscan - Tester ou surveiller la disponibilité d'une nouvelle version amont"
+
+#. type: Plain text
+#: ../scripts/uscan.1:6
+msgid "B<uscan> [I<options>] [I<path-to-debian-source-packages> ...]"
+msgstr "B<uscan> [I<options>] [I<chemin-vers-le-paquet-source> ...]"
+
+#. type: Plain text
+#: ../scripts/uscan.1:16
+msgid ""
+"B<uscan> scans the given directories (or the current directory if none are "
+"specified) and all of their subdirectories for packages containing a control "
+"file I<debian/watch>. Parameters are then read from those control files and "
+"upstream ftp or http sites are inspected for newly available updates (as "
+"compared with the upstream version number retrieved from the I<debian/"
+"changelog> file in the same directory). The newest updates are retrieved "
+"(as determined by their version numbers) and if specified in the I<watch> "
+"file, a program may then be executed on the newly downloaded source."
+msgstr ""
+"B<uscan> parcourt les répertoires donnés (ou le répertoire actuel si aucun "
+"n'est indiqué) et tous leurs sous-répertoires à la recherche de paquets "
+"contenant un fichier de contrôle I<debian/watch>. Les paramètres de ces "
+"fichiers de contrôle sont ensuite analysés, et les sites FTP ou HTTP amont "
+"sont inspectés pour tester la présence de nouvelles mises à jour (qui sont "
+"comparées aux numéros de version amont des fichiers I<debian/changelog> du "
+"même répertoire). Les mises à jour les plus récentes (en fonction de leur "
+"numéro de version) sont récupérées et un programme est exécuté sur les "
+"sources téléchargées si c'est spécifié dans le fichier I<watch>."
+
+#. type: Plain text
+#: ../scripts/uscan.1:21
+msgid ""
+"The traditional I<debian/watch> files can still be used, but the current "
+"format offers both simpler and more flexible services. We do not describe "
+"the old format here; for their documentation, see the source code for uscan."
+msgstr ""
+"Les fichiers I<debian/watch> traditionnels peuvent encore être utilisés, "
+"mais le format actuel est à la fois plus simple et offre des services plus "
+"souples. L'ancien format n'est pas décrit ici. Pour la documentation de "
+"l'ancien format, reportez-vous au code source de uscan."
+
+#. type: SH
+#: ../scripts/uscan.1:22
+#, no-wrap
+msgid "FORMAT of debian/watch files"
+msgstr "FORMAT du fichier debian/watch"
+
+#. type: Plain text
+#: ../scripts/uscan.1:28
+msgid ""
+"The following demonstrates the type of entries which can appear in a "
+"I<debian/watch> file. Obviously, not all of these would appear in one such "
+"file; usually, one would have one line for the current package."
+msgstr ""
+"L'exemple suivant montre les types d'entrée trouvables dans un fichier "
+"I<debian/watch>. Bien sûr, toutes ces entrées n'apparaîtront pas dans un tel "
+"fichier. Une seule ligne existe généralement pour le paquet actuel."
+
+#. type: Plain text
+#: ../scripts/uscan.1:33
+#, no-wrap
+msgid ""
+"# format version number, currently 3; this line is compulsory!\n"
+"version=3\n"
+msgstr ""
+"# numéro de version du format, actuellement 3.\n"
+"# Cette ligne est obligatoire !\n"
+"version=3\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:35
+#, no-wrap
+msgid "# Line continuations are performed with B<\\e>\n"
+msgstr "# Les lignes peuvent être poursuivies à la ligne suivante avec un B<\\e>\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:40
+#, no-wrap
+msgid ""
+"# This is the format for an FTP site:\n"
+"# Full-site-with-pattern [Version [Action]]\n"
+"ftp://ftp.tex.ac.uk/tex-archive/web/c_cpp/cweb/cweb-(.+)\\e.tar\\e.gz \\e\n"
+" debian uupdate\n"
+msgstr ""
+"# Voici le format pour un site FTP :\n"
+"# Nom-complet-du-site-avec-modèle [Version [Action]]\n"
+"ftp://ftp.tex.ac.uk/tex-archive/web/c_cpp/cweb/cweb-(.+)\\e.tar\\e.gz \\e\n"
+" debian uupdate\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:44
+#, no-wrap
+msgid ""
+"# This is the format for an FTP site with regex special characters in\n"
+"# the filename part\n"
+"ftp://ftp.worldforge.org/pub/worldforge/libs/Atlas-C++/transitional/Atlas-C\\e+\\e+-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+"# Voici la syntaxe pour un site FTP, avec une expression rationnelle \n"
+"# dans le nom du fichier\n"
+"ftp://ftp.worldforge.org/pub/worldforge/libs/Atlas-C++/transitional/Atlas-C\\e+\\e+-(.+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:47
+#, no-wrap
+msgid ""
+"# This is the format for an FTP site with directory pattern matching\n"
+"ftp://ftp.nessus.org/pub/nessus/nessus-([\\ed\\e.]+)/src/nessus-core-([\\ed\\e.]+)\\e.tar\\e.gz\n"
+msgstr ""
+"# Voici la syntaxe pour un site FTP avec un modèle de répertoire\n"
+"ftp://ftp.nessus.org/pub/nessus/nessus-([\\ed\\e.]+)/src/nessus-core-([\\ed\\e.]+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:51
+#, no-wrap
+msgid ""
+"# This can be used if you want to override the PASV setting\n"
+"# for a specific site\n"
+"# opts=pasv ftp://.../...\n"
+msgstr ""
+"# Voici comment remplacer le paramètre PASV pour un site spécifique :\n"
+"# opts=pasv ftp://.../...\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:57
+#, no-wrap
+msgid ""
+"# This is one format for an HTTP site, which is the same\n"
+"# as the FTP format. B<uscan> starts by downloading the homepage,\n"
+"# obtained by removing the last component of the URL; in this case,\n"
+"# I<http://www.cpan.org/modules/by-module/Text/>\n"
+"http://www.cpan.org/modules/by-module/Text/Text-CSV_XS-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+"# Il s'agit d'un format pour un site HTTP, identique à celui d'un\n"
+"# site FTP. B<uscan> commence par télécharger la page principale,\n"
+"# obtenue en supprimant le dernier élément de l'URL ; dans ce cas,\n"
+"# I<http://www.cpan.org/modules/by-module/Text/>\n"
+"http://www.cpan.org/modules/by-module/Text/Text-CSV_XS-(.+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:63
+#, no-wrap
+msgid ""
+"# This is a variant HTTP format which allows direct specification of\n"
+"# the homepage:\n"
+"# Homepage Pattern [Version [Action]]\n"
+"http://www.dataway.ch/~lukasl/amph/amph.html \\e\n"
+" files/amphetamine-([\\ed\\e.]*).tar.bz2\n"
+msgstr ""
+"# Voici un autre format pour les sites HTTP,\n"
+"# qui permet de spécifier directement la page principale :\n"
+"# Page principale Modèle [Version [Action]]\n"
+"http://www.dataway.ch/~lukasl/amph/amph.html \\e\n"
+" files/amphetamine-([\\ed\\e.]*).tar.bz2\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:70
+#, no-wrap
+msgid ""
+"# This one shows that recursive directory scanning works, in either of\n"
+"# two forms, as long as the website can handle requests of the form\n"
+"# I<http://site/inter/mediate/dir/>\n"
+"http://tmrc.mit.edu/mirror/twisted/Twisted/(\\ed\\e.\\ed)/ \\e\n"
+" Twisted-([\\ed\\e.]*)\\e.tar\\e.bz2\n"
+"http://tmrc.mit.edu/mirror/twisted/Twisted/(\\ed\\e.\\ed)/Twisted-([\\ed\\e.]*)\\e.tar\\e.bz2\n"
+msgstr ""
+"# Cet exemple montre qu'il est possible de scanner des répertoires, sous\n"
+"# deux formes différentes, à condition que le site web autorise les\n"
+"# requêtes de la forme I<http://site/répertoire/inter/médiaire/>\n"
+"http://tmrc.mit.edu/mirror/twisted/Twisted/(\\ed\\e.\\ed)/ \\e\n"
+" Twisted-([\\ed\\e.]*)\\e.tar\\e.bz2\n"
+"http://tmrc.mit.edu/mirror/twisted/Twisted/(\\ed\\e.\\ed)/Twisted-([\\ed\\e.]*)\\e.tar\\e.bz2\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:73
+#, no-wrap
+msgid ""
+"# For maximum flexibility with upstream tarball formats, use this:\n"
+"http://example.com/example-(\\ed[\\ed.]*)\\e.(?:zip|tgz|tbz2|txz|tar\\e.(?:gz|bz2|xz))\n"
+msgstr ""
+"# Pour une flexibilité maximale avec les formats d'archive amont :\n"
+"http://example.com/exemple-(\\ed[\\ed.]*)\\e.(?:zip|tgz|tbz2|txz|tar\\e.(?:gz|bz2|xz))\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:78
+#, no-wrap
+msgid ""
+"# qa.debian.org runs a redirector which allows a simpler form of URL\n"
+"# for SourceForge based projects. The format below will automatically\n"
+"# be rewritten to use the redirector.\n"
+"http://sf.net/audacity/audacity-src-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+"# qa.debian.org fournit un redirecteur qui permet une forme plus\n"
+"# simple pour les projets hébergés sur SourceForge. Le format\n"
+"# ci-dessous sera automatiquement réécrit pour utiliser le redirecteur\n"
+"http://sf.net/audacity/audacity-src-(.+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:84
+#, no-wrap
+msgid ""
+"# For GitHub projects you can use the tags or releases page. Since the archive\n"
+"# URLs use only the version as the name, it is recommended to use a\n"
+"# filenamemangle to adjust the name of the downloaded file:\n"
+"opts=\"filenamemangle=s/(?:.*\\/)?v?(\\ed[\\ed\\e.]*)\\e.tar\\e.gz/E<lt>projectE<gt>-$1.tar.gz/\" \\e\n"
+" https://github.com/E<lt>userE<gt>/E<lt>projectE<gt>/tags (?:.*/)?v?(\\ed[\\ed\\e.]*)\\e.tar\\e.gz\n"
+msgstr ""
+"# Pour les projets GitHub, les pages de marques ou de publications\n"
+"# peuvent être utilisées. Puisque les URL de l’archive n’utilisent que la\n"
+"# version pour le nom, l’utilisation de filenamemangle est recommandée\n"
+"# pour ajuster le nom du fichier téléchargé :\n"
+"opts=\"filenamemangle=s/(?:.*\\/)?v?(\\ed[\\ed\\e.]*)\\e.tar\\e.gz/E<lt>projetE<gt>-$1.tar.gz/\" \\e\n"
+" https://github.com/E<lt>utilisateurE<gt>/E<lt>projetE<gt>/tags (?:.*/)?v?(\\ed[\\ed\\e.]*)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:88
+#, no-wrap
+msgid ""
+"# For Google Code projects you should use the downloads page like this:\n"
+"https://code.google.com/p/E<lt>projectE<gt>/downloads/list?can=1 \\e\n"
+" .*/E<lt>projectE<gt>-(\\ed[\\ed.]*)\\e.tar\\e.gz\n"
+msgstr ""
+"# Pour les projets Google Code, la page de téléchargement devrait être\n"
+"# utilisée comme ceci :\n"
+"https://code.google.com/p/E<lt>projetE<gt>/downloads/list?can=1 \\e\n"
+" .*/E<lt>projetE<gt>-(\\ed[\\ed.]*)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:93
+#, no-wrap
+msgid ""
+"# This is the format for a site which has funny version numbers;\n"
+"# the parenthesised groups will be joined with dots to make a\n"
+"# sanitised version number\n"
+"http://www.site.com/pub/foobar/foobar_v(\\ed+)_(\\ed+)\\e.tar\\e.gz\n"
+msgstr ""
+"# Ceci est le format pour un site qui possède des numéros de\n"
+"# version exotiques ; le groupe entre parenthèses devra être joint\n"
+"# par des points pour créer un numéro de version sain :\n"
+"http://www.site.com/pub/toto/toto_v(\\ed+)_(\\ed+)\\e.tar\\e.gz\n"
+
+# NOTE: Ca reste encore cryptique
+#. type: Plain text
+#: ../scripts/uscan.1:101
+#, no-wrap
+msgid ""
+"# This is another way of handling site with funny version numbers,\n"
+"# this time using mangling. (Note that multiple groups will be\n"
+"# concatenated before mangling is performed, and that mangling will\n"
+"# only be performed on the basename version number, not any path\n"
+"# version numbers.)\n"
+"opts=\"uversionmangle=s/^/0.0./\" \\e\n"
+" ftp://ftp.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+"# Voici une autre manière pour des sites ayant des numéros de version\n"
+"# bizarres, en effectuant une modification cette fois. (Remarquez que\n"
+"# plusieurs groupes seront concaténés avant d'effectuer la modification,\n"
+"# et que les modifications ne seront effectuées que sur le numéro de\n"
+"# version de base, et pas dans les versions contenues dans les chemins.)\n"
+"opts=\"uversionmangle=s/^/0.0/\" \\e\n"
+" ftp://ftp.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-(.+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:106
+#, no-wrap
+msgid ""
+"# Similarly, the upstream part of the Debian version number can be\n"
+"# mangled:\n"
+"opts=dversionmangle=s/\\e+dfsg\\ed*$// \\e\n"
+" http://some.site.org/some/path/foobar-(.+)\\e.tar\\e.gz\n"
+msgstr ""
+"# De manière similaire, la partie de la version amont du numéro de\n"
+"# version Debian peut être modifiée :\n"
+"opts=dversionmangle=s/\\e+dfsg\\ed*$// \\e\n"
+" http://un.site.org/un/chemin/toto-(.+)\\e.tar\\e.gz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:119
+#, no-wrap
+msgid ""
+"# The filename is found by taking the last component of the URL and\n"
+"# removing everything after any 'B<?>'. If this would not make a usable\n"
+"# filename, use filenamemangle. For example,\n"
+"# E<lt>A href=\"http://foo.bar.org/download/?path=&download=foo-0.1.1.tar.gz\"E<gt>\n"
+"# could be handled as:\n"
+"# opts=filenamemangle=s/.*=(.*)/$1/ \\e\n"
+"# http://foo.bar.org/download/\\e?path=&download=foo-(.+)\\e.tar\\e.gz\n"
+"#\n"
+"# E<lt>A href=\"http://foo.bar.org/download/?path=&download_version=0.1.1\"E<gt>\n"
+"# could be handled as:\n"
+"# opts=filenamemangle=s/.*=(.*)/foo-$1\\e.tar\\e.gz/ \\e\n"
+"# http://foo.bar.org/download/\\e?path=&download_version=(.+)\n"
+msgstr ""
+"# Le nom de fichier est déterminé en prenant le dernier composant de\n"
+"# l'URL et en retirant tout ce qui se trouve après un éventuel « B<?> ».\n"
+"# Si ça ne donne pas de nom de fichier utilisable, utilisez\n"
+"# filenamemangle. Par exemple,\n"
+"# E<lt>A href=\"http://toto.titi.org/download/?path=&download=toto-0.1.1.tar.gz\"E<gt>\n"
+"# peut être géré ainsi :\n"
+"# opts=filenamemangle=s/.*=(.*)/$1/ \\e\n"
+"# http://toto.titi.org/download/\\e?path=&download=toto-(.+)\\e.tar\\e.gz\n"
+"#\n"
+"# E<lt>A href=\"http://toto.titi.org/download/?path=&download_version=0.1.1\"E<gt>\n"
+"# peut être géré ainsi :\n"
+"# opts=filenamemangle=s/.*=(.*)/toto-$1\\e.tar\\e.gz/ \\e\n"
+"# http://toto.titi.org/download/\\e?path=&download_version=(.+)\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:127
+#, no-wrap
+msgid ""
+"# The option downloadurlmangle can be used to mangle the URL of the file\n"
+"# to download. This can only be used with http:// URLs. This may be\n"
+"# necessary if the link given on the web page needs to be transformed in\n"
+"# some way into one which will work automatically, for example:\n"
+"# opts=downloadurlmangle=s/prdownload/download/ \\e\n"
+"# http://developer.berlios.de/project/showfiles.php?group_id=2051 \\e\n"
+"# http://prdownload.berlios.de/softdevice/vdr-softdevice-(.+).tgz\n"
+msgstr ""
+"# L'option downloadurlmangle peut être utilisée pour modifier l'URL\n"
+"# du fichier à télécharger. Cela ne peut être utilisé qu'avec des liens\n"
+"# http://. Cela peut être nécessaire si le lien donné sur la page web\n"
+"# doit être transformé de manière à ce que cela fonctionne\n"
+"# automatiquement, par exemple :\n"
+"# opts=downloadurlmangle=s/prdownload/download/ \\e\n"
+"# http://developer.berlios.de/project/showfiles.php?group_id=2051 \\e\n"
+"# http://prdownload.berlios.de/softdevice/vdr-softdevice-(.+).tgz\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:133
+msgid ""
+"Comment lines may be introduced with a `B<#>' character. Continuation lines "
+"may be indicated by terminating a line with a backslash character."
+msgstr ""
+"Des lignes de commentaire peuvent être ajoutées avec un caractère « B<#> ». "
+"Les lignes peuvent se poursuivre à la ligne suivante en les terminant par un "
+"caractère backslash (« B<\\e> »)."
+
+#. type: Plain text
+#: ../scripts/uscan.1:137
+msgid ""
+"The first (non-comment) line of the file must begin `version=3'. This "
+"allows for future extensions without having to change the name of the file."
+msgstr ""
+"La première ligne (en ne prenant pas en compte les commentaires) doit "
+"commencer par « version=3 ». Cela devrait permettre des extensions futures, "
+"sans avoir à changer le nom du fichier."
+
+#. type: Plain text
+#: ../scripts/uscan.1:142
+msgid ""
+"There are two possibilities for the syntax of an HTTP I<watch> file line, "
+"and only one for an FTP line. We begin with the common (and simpler) "
+"format. We describe the optional opts=... first field below, and ignore it "
+"in what follows."
+msgstr ""
+"Les fichiers I<watch> acceptent deux syntaxes pour les sites HTTP, et une "
+"seule pour les sites FTP. Voici la syntaxe la plus commune (et la plus "
+"simple). Le premier champ optionnel opts=... est décrit plus bas et sera "
+"ignoré dans ce qui suit."
+
+#. type: Plain text
+#: ../scripts/uscan.1:159
+msgid ""
+"The first field gives the full pattern of URLs being searched for. In the "
+"case of an FTP site, the directory listing for the requested directory will "
+"be requested and this will be scanned for files matching the basename "
+"(everything after the trailing `B</>'). In the case of an HTTP site, the "
+"URL obtained by stripping everything after the trailing slash will be "
+"downloaded and searched for hrefs (links of the form E<lt>a href=...E<gt>) "
+"to either the full URL pattern given, or to the absolute part (everything "
+"without the http://host.name/ part), or to the basename (just the part after "
+"the final `B</>'). Everything up to the final slash is taken as a verbatim "
+"URL, as long as there are no parentheses (`B<(>' and 'B<)>') in this part of "
+"the URL: if it does, the directory name will be matched in the same way as "
+"the final component of the URL as described below. (Note that regex "
+"metacharacters such as `B<+>' are regarded literally unless they are in a "
+"path component containing parentheses; see the Atlas-C++ example above. "
+"Also, the parentheses must match within each path component.)"
+msgstr ""
+"Le premier champ donne le modèle complet des URL à rechercher. Dans le cas "
+"d'un site FTP, la liste des fichiers du répertoire indiqué sera demandée et "
+"il recherchera dans cette liste des fichiers dont le nom de base (ce qui "
+"suit le « B</> » final) correspond. Dans le cas d'un site HTTP, il recherche "
+"dans l'URL obtenue en enlevant tout ce qui suit le « / » de fin des "
+"références « href » (liens de la forme E<lt>a href=...E<gt>) vers soit une "
+"URL complète, un chemin absolu (l'ensemble de l'URL, sans la partie http://"
+"nom.serveur/) ou encore vers un nom de base (la partie qui suit le « B</> » "
+"final) qui correspond au modèle donné. L'ensemble, jusqu'au « B</> » final "
+"est considéré comme l'URL complète, tant qu'il n'y a pas de parenthèse "
+"(« B<(> » et « B<)> ») dans cette partie de l'URL. S'il y a des parenthèses, "
+"on cherchera à faire correspondre le nom du répertoire de la même façon que "
+"l'élément final de l'URL, comme décrit ci-dessous. (Veuillez noter que les "
+"caractères spéciaux des expressions rationnelles, comme « B<+> » sont "
+"considérés littéralement, à moins qu'ils se trouvent dans une partie entre "
+"parenthèses ; voyez l'exemple d'Atlas-C++ ci-dessus. De plus, les "
+"parenthèses doivent se fermer à l'intérieur de chaque élément du chemin.)"
+
+# NOTE: ancré: ^...$
+#. type: Plain text
+#: ../scripts/uscan.1:168
+msgid ""
+"The pattern (after the final slash) is a Perl regexp (see B<perlre>(1) for "
+"details of these). You need to make the pattern so tight that it matches "
+"only the upstream software you are interested in and nothing else. Also, "
+"the pattern will be anchored at the beginning and at the end, so it must "
+"match the full filename. (Note that for HTTP URLs, the href may include the "
+"absolute path or full site and path and still be accepted.) The pattern "
+"must contain at least one Perl group as explained in the next paragraph."
+msgstr ""
+"Le modèle (la partie après le « / » final) est une expression rationnelle "
+"Perl (voir B<perlre>(1) pour plus de détails). Vous devez utiliser un modèle "
+"suffisamment strict pour qu'il ne corresponde qu'au programme amont qui vous "
+"intéresse, et à rien d'autre. Aussi, le modèle sera ancré au début et à la "
+"fin pour qu'il corresponde au nom complet. (Remarquez que dans les URL HTTP, "
+"le champ « href » peut contenir un chemin absolu ou le nom du site avec le "
+"chemin, et être toujours accepté.) Le modèle doit contenir au moins un "
+"groupe Perl comme décrit dans le prochain paragraphe."
+
+#. type: Plain text
+#: ../scripts/uscan.1:179
+msgid ""
+"Having got a list of `files' matching the pattern, their version numbers are "
+"extracted by treating the part matching the Perl regexp groups, demarcated "
+"by `B<(...)>', joining them with `B<.>' as a separator, and using the result "
+"as the version number of the file. The version number will then be mangled "
+"if required by the uversionmangle option described below. Finally, the file "
+"versions are then compared to find the one with the greatest version number, "
+"as determined by B<dpkg --compare-versions>. Note that if you need Perl "
+"groups which are not to be used in the version number, either use "
+"`B<(?:...)>' or use the uversionmangle option to clean up the mess!"
+msgstr ""
+"Après avoir récupéré une liste de « fichiers » qui correspondent au modèle, "
+"leurs numéros de version sont extraits en concaténant l'ensemble des groupes "
+"de l'expression rationnelle Perl (démarqués par « B<(...)> ») et en les "
+"séparant par un « B<.> ». Ce numéro est considéré comme le numéro de version "
+"du fichier. Les numéros de version sont ensuite modifiés si l'option "
+"B<uversionmangle>, décrite ci-dessous, a été précisée. Enfin, les versions "
+"des fichiers sont ensuite comparées pour trouver celui qui a le plus grand "
+"numéro de version, qui est trouvé en utilisant B<dpkg --compare-versions>. "
+"Note : si vous avez besoin de groupes qui ne sont pas utilisés dans le "
+"numéro de version, utilisez soit « B<(?:...)> » soit l'option "
+"B<uversionmangle> pour nettoyer la version par la suite."
+
+#. type: Plain text
+#: ../scripts/uscan.1:196
+msgid ""
+"The current (upstream) version can be specified as the second parameter in "
+"the I<watch> file line. If this is I<debian> or absent, then the current "
+"Debian version (as determined by I<debian/changelog>) is used to determine "
+"the current upstream version. The current upstream version may also be "
+"specified by the command-line option B<--upstream-version>, which specifies "
+"the upstream version number of the currently installed package (i.e., the "
+"Debian version number without epoch and Debian revision). The upstream "
+"version number will then be mangled using the dversionmangle option if one "
+"is specified, as described below. If the newest version available is newer "
+"than the current version, then it is downloaded into the parent directory, "
+"unless the B<--report> or B<--report-status> option has been used. Once the "
+"file has been downloaded, then a symlink to the file is made from "
+"I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.{gz|bz2|lzma|xz}> as "
+"described by the help for the B<--symlink> option."
+msgstr ""
+"La version actuelle (amont) peut être indiquée comme le second paramètre "
+"dans la ligne du fichier I<watch>. Si elle vaut I<debian> ou est absente, "
+"alors la version Debian actuelle (telle qu'elle est déterminée par I<debian/"
+"changelog>) est utilisée pour déterminer la version amont actuelle. La "
+"version amont actuelle peut aussi être indiquée par l'option B<--upstream-"
+"version> en ligne de commande, qui spécifie le numéro de version amont du "
+"paquet actuellement installé (c'est-à-dire, le numéro de version Debian sans "
+"epoch ni version Debian). Le numéro de version amont sera alors modifié en "
+"utilisant l'option B<dversionmangle> si elle est indiquée, tel que cela est "
+"décrit plus bas. Si la version la plus récente disponible est plus récente "
+"que la version actuelle, alors elle sera téléchargée dans le répertoire "
+"parent, sans que l'option B<--report> ou B<--report-status> ait été "
+"utilisée. Une fois que le fichier a été téléchargé, un lien symbolique vers "
+"le fichier est créé depuis le paquet I<E<lt>paquetE<gt>_E<lt>versionE<gt>."
+"orig.tar.{gz|bz2|lzma|xz}> conformément à l'aide décrite pour l'option B<--"
+"symlink>."
+
+#. type: Plain text
+#: ../scripts/uscan.1:199
+msgid ""
+"Finally, if a third parameter (an action) is given in the I<watch> file "
+"line, this is taken as the name of a command, and the command"
+msgstr ""
+"Enfin, si un troisième paramètre est donné dans la ligne du fichier "
+"I<watch>, il est considéré comme le nom d'une commande, et la commande :"
+
+#. type: Plain text
+#: ../scripts/uscan.1:201
+#, no-wrap
+msgid " I<command >B<--upstream-version>I< version filename>\n"
+msgstr " I<commande> B<--upstream-version> I<version nom_fichier>\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:210
+msgid ""
+"is executed, using either the original file or the symlink name. A common "
+"such command would be B<uupdate>(1). (Note that the calling syntax was "
+"slightly different when using I<watch> file without a `B<version=>...' line; "
+"there the command executed was `I<command filename version>'.) If the "
+"command is B<uupdate>, then the B<--no-symlink> option is given to "
+"B<uupdate> as a first option, since any requested symlinking will already be "
+"done by B<uscan>."
+msgstr ""
+"est exécutée, en utilisant soit le fichier initial, soit le nom du lien "
+"symbolique. En règle générale, cette commande est B<uupdate>. (Remarquez que "
+"la syntaxe d'appel est légèrement différente de celle des fichiers I<watch> "
+"sans la ligne « B<version=...> », pour lesquels la commande exécutée était "
+"« I<commande fichier version> ».)"
+
+#. type: Plain text
+#: ../scripts/uscan.1:226
+msgid ""
+"The alternative version of the I<watch> file syntax for HTTP URLs is as "
+"follows. The first field is a homepage which should be downloaded and then "
+"searched for hrefs matching the pattern given in the second field. (Again, "
+"this pattern will be anchored at the beginning and the end, so it must match "
+"the whole href. If you want to match just the basename of the href, you can "
+"use a pattern like \".*/name-(.+)\\e.tar\\e.gz\" if you know that there is a "
+"full URL, or better still: \"(?:.*/)?name-(.+)\\e.tar\\e.gz\" if there may "
+"or may not be. Note the use of (?:...) to avoid making a backreference.) "
+"If any of the hrefs in the homepage which match the (anchored) pattern are "
+"relative URLs, they will be taken as being relative to the base URL of the "
+"homepage (i.e., with everything after the trailing slash removed), or "
+"relative to the base URL specified in the homepage itself with a E<lt>base "
+"href=\"...\"E<gt> tag. The third and fourth fields are the version number "
+"and action fields as before."
+msgstr ""
+"L'autre syntaxe possible pour les URL HTTP est la suivante. Le premier champ "
+"correspond à la page d'accueil qui doit être téléchargée et dans laquelle "
+"doivent être recherchés les liens (« href ») correspondant au modèle donné "
+"dans le second champ. (Encore une fois, ce modèle sera ancré à son début et "
+"à sa fin, de façon à ce qu'il corresponde au lien complet. Si vous chercher "
+"à faire correspondre uniquement le nom de base du lien, vous pouvez utiliser "
+"un modèle comme « .*/nom-(.+)\\e.tar\\e.gz » si vous savez qu'il y a une URL "
+"complète, ou encore mieux : « (?:.*/)?nom-(.+)\\e.tar\\e.gz » si l'URL peut "
+"être ou ne pas être complète. Remarquez l'utilisation de « (?:...) » qui "
+"évite de créer une référence.) Si un des liens de cette page est une URL "
+"relative, elle sera considérée comme relative à l'URL de base de la page "
+"d'accueil (c'est-à-dire en retirant tout ce qui suit le « / » final), ou "
+"relative à l'URL de base indiquée dans cette page avec une balise E<lt>base "
+"href=\"...\"E<gt>. Les troisième et quatrième champs sont les champs du "
+"numéro de version et de la commande, comme précédemment."
+
+#. type: SH
+#: ../scripts/uscan.1:226
+#, no-wrap
+msgid "PER-SITE OPTIONS"
+msgstr "OPTIONS SPÉCIFIQUES À UN SITE"
+
+#. type: Plain text
+#: ../scripts/uscan.1:232
+msgid ""
+"A I<watch> file line may be prefixed with `B<opts=>I<options>', where "
+"I<options> is a comma-separated list of options. The whole I<options> "
+"string may be enclosed in double quotes, which is necessary if I<options> "
+"contains any spaces. The recognised options are as follows:"
+msgstr ""
+"Une ligne du fichier I<watch> peut être précédée de « B<opts=>I<options> », "
+"où I<options> est une liste d'options séparées par des virgules. La chaîne "
+"I<options> peut être placée entre guillemets doubles (« B<\"> »), ce qui est "
+"nécessaire si I<options> contient des espaces. Les options reconnues sont :"
+
+#. type: TP
+#: ../scripts/uscan.1:232
+#, no-wrap
+msgid "B<active> and B<passive> (or B<pasv>)"
+msgstr "B<active> et B<passive> (ou B<pasv>)"
+
+#. type: Plain text
+#: ../scripts/uscan.1:237
+msgid ""
+"If used on an FTP line, these override the choice of whether to use PASV "
+"mode or not, and force the use of the specified mode for this site."
+msgstr ""
+"Si utilisé sur une ligne FTP, cela forcera l'utilisation du mode passif "
+"(PASV) ou actif pour ce site."
+
+#. type: TP
+#: ../scripts/uscan.1:237
+#, no-wrap
+msgid "B<uversionmangle=>I<rules>"
+msgstr "B<uversionmangle=>I<règles>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:244
+msgid ""
+"This is used to mangle the upstream version number as matched by the "
+"ftp://... or http:// rules as follows. First, the I<rules> string is split "
+"into multiple rules at every `B<;>'. Then the upstream version number is "
+"mangled by applying I<rule> to the version, in a similar way to executing "
+"the Perl command:"
+msgstr ""
+"Cela permet de modifier le numéro de version amont qui correspond à une "
+"règle ftp://... ou http://... de la façon suivante. Dans un premier temps, "
+"les I<règles> sont découpées en plusieurs règles en utilisant « B<;> » comme "
+"séparateur. Puis les numéros de version amont sont modifiés en appliquant la "
+"I<règle> à la version, de façon similaire à l'exécution de la commande Perl "
+"suivante :"
+
+#. type: Plain text
+#: ../scripts/uscan.1:246
+#, no-wrap
+msgid " $version =~ I<rule>;\n"
+msgstr " $version =~ I<règle>;\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:251
+msgid ""
+"for each rule. Thus, suitable rules might be `B<s/^/0./>' to prepend `B<0."
+">' to the version number and `B<s/_/./g>' to change underscores into "
+"periods. Note that the I<rule> string may not contain commas; this should "
+"not be a problem."
+msgstr ""
+"pour chaque règle. Ainsi, la règle « B<s/^/0./> » permet d'ajouter « B<0.> » "
+"au début du numéro de version et « B<s/_/./g> » pour changer les tirets bas "
+"en points. Remarquez que la chaîne de caractères I<règle> ne doit pas "
+"contenir de virgule ; cela ne devrait pas être un problème."
+
+#. type: Plain text
+#: ../scripts/uscan.1:256
+msgid ""
+"I<rule> may only use the 'B<s>', 'B<tr>' and 'B<y>' operations. When the "
+"'B<s>' operation is used, only the 'B<g>', 'B<i>' and 'B<x>' flags are "
+"available and I<rule> may not contain any expressions which have the "
+"potential to execute code (i.e. the (?{}) and (??{}) constructs are not "
+"supported)."
+msgstr ""
+"I<règle> ne peut utiliser que les opérations « B<s> », « B<tr> » et "
+"« B<y> ». Quand l'opération « B<s> » est utilisée, seuls les arguments "
+"« B<g> », « B<i> » et « B<x> » peuvent être utilisés et I<règle> ne peut "
+"contenir d'expression pouvant exécuter du code (c'est-à-dire que les "
+"constructions de la forme (?{}) ou (??{}) ne sont pas prises en charge)."
+
+#. type: Plain text
+#: ../scripts/uscan.1:261
+msgid ""
+"If the 'B<s>' operation is used, the replacement can contain backreferences "
+"to expressions within parenthesis in the matching regexp, like `B<s/-"
+"alpha(\\ed*)/.a$1/>'. These backreferences must use the `B<$1>' syntax, as "
+"the `B<\\e1>' syntax is not supported."
+msgstr ""
+"Si l'opération « B<s> » est utilisée, le remplacement peut contenir des "
+"références arrières aux expressions entre parenthèses de l'expression "
+"rationnelle correspondante, comme « B<s/-alpha(\\ed*)/.a$1/> ». Ces "
+"références arrières doivent utiliser la syntaxe « B<$1> », puisque la "
+"syntaxe « B<\\e1> » n'est pas permise."
+
+#. type: TP
+#: ../scripts/uscan.1:261
+#, no-wrap
+msgid "B<dversionmangle=>I<rules>"
+msgstr "B<dversionmangle=>I<règles>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:269
+msgid ""
+"This is used to mangle the Debian version number of the currently installed "
+"package in the same way as the B<uversionmangle> option. Thus, a suitable "
+"rule might be `B<s/\\+dfsg\\ed*$//>' to remove a `B<+dfsg1>' suffix from the "
+"Debian version number, or to handle `B<.pre6>' type version numbers. Again, "
+"the I<rules> string may not contain commas; this should not be a problem."
+msgstr ""
+"Utilisé pour modifier le numéro de version Debian du paquet actuellement "
+"installé dans la même optique que l'option B<uversionmangle>. Ainsi, une "
+"règle appropriée peut être « B<s/\\e+dfsg\\ed*$//> » pour supprimer le "
+"suffixe « B<+dfsg1> » dans un numéro de version Debian ou pour gérer les "
+"numéros de version de type « B<.pre6> ». Ici encore, la chaîne de caractères "
+"I<règles> ne doit pas contenir de virgule ; cela ne devrait pas être un "
+"problème."
+
+#. type: TP
+#: ../scripts/uscan.1:269
+#, no-wrap
+msgid "B<versionmangle=>I<rules>"
+msgstr "B<versionmangle=>I<règles>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:274
+msgid ""
+"This is a syntactic shorthand for B<uversionmangle=>I<rules>B<,"
+"dversionmangle=>I<rules>, applying the same rules to both the upstream and "
+"Debian version numbers."
+msgstr ""
+"Il s'agit d'un raccourci syntactique pour B<uversionmangle=>I<règles>,"
+"B<dversionmangle>=I<règles>, appliquant les mêmes règles à la fois aux "
+"numéros de version Debian et amont."
+
+#. type: TP
+#: ../scripts/uscan.1:274
+#, no-wrap
+msgid "B<filenamemangle=>I<rules>"
+msgstr "B<filenamemangle=>I<règles>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:280
+msgid ""
+"This is used to mangle the filename with which the downloaded file will be "
+"saved, and is parsed in the same way as the B<uversionmangle> option. "
+"Examples of its use are given in the examples section above."
+msgstr ""
+"C'est utilisé pour modifier le nom de fichier sous lequel le fichier "
+"téléchargé sera enregistré, et est parcouru de la même manière qu'avec "
+"l'option B<uversionmangle>. Les exemples d'utilisation sont donnés dans la "
+"section ci-dessus."
+
+#. type: TP
+#: ../scripts/uscan.1:280
+#, no-wrap
+msgid "B<downloadurlmangle=>I<rules>"
+msgstr "B<downloadurlmangle=>I<règles>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:288
+msgid ""
+"This is used to mangle the URL to be used for the download. The URL is "
+"first computed based on the homepage downloaded and the pattern matched, "
+"then the version number is determined from this URL. Finally, any rules "
+"given by this option are applied before the actual download attempt is made. "
+"An example of its use is given in the examples section above."
+msgstr ""
+"C'est utilisé pour modifier l'URL nécessaire pour le téléchargement. L'URL "
+"est d'abord calculée en se basant sur la page principale téléchargée et sur "
+"la correspondance du motif, puis le numéro de version est déterminé depuis "
+"cette URL. Enfin, toutes les règles données par cette option sont appliquées "
+"avant que la tentative de téléchargement soit effectuée. Un exemple "
+"d'utilisation est donné dans la section des exemples ci-dessus."
+
+#. type: TP
+#: ../scripts/uscan.1:288
+#, no-wrap
+msgid "B<pgpsigurlmangle=>I<rules>"
+msgstr "B<pgpsigurlmangle=>I<règles>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:299
+msgid ""
+"If present, the supplied rules will be applied to the downloaded URL (after "
+"any downloadurlmangle rules, if present) to craft a new URL that will be "
+"used to fetch the detached OpenPGP signature file for the upstream tarball. "
+"Some common rules might be `B<s/$/.asc/>' or `B<s/$/.pgp/>' or `B<s/$/.gpg/"
+">'. This signature must be made by a key found in the keyring B<debian/"
+"upstream/signing-key.pgp> or the armored keyring B<debian/upstream/signing-"
+"key.asc>. If it is not valid, or not made by one of the listed keys, uscan "
+"will report an error."
+msgstr ""
+"En cas de présence, les règles fournies seront appliquées à l’URL "
+"téléchargée (après les règles downloadurlmangle s’il y en a) pour préparer "
+"une nouvelle URL qui sera utilisée pour récupérer le fichier de signature "
+"OpenPGP détachée pour l’archive amont. Certaines règles habituelles "
+"pourraient être « B<s/$/.asc/> », « B<s/$/.pgp/> » ou « B<s/$/.gpg/> ». "
+"Cette signature doit être réalisée avec une clef du trousseau B<debian/"
+"upstream/signing-key.pgp> ou du trousseau avec armure ASCII B<debian/"
+"upstream/signing-key.asc>. Si elle n’est pas valable, ou si la clef ne fait "
+"pas partie du trousseau, B<uscan> signalera une erreur."
+
+#. type: TP
+#: ../scripts/uscan.1:299
+#, no-wrap
+msgid "B<repacksuffix=>I<suffix>"
+msgstr "B<repacksuffix=>I<suffixe>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:306
+msgid ""
+"If the upstream sources are modified because I<debian/copyright> contains "
+"the B<Files-Excluded> field, I<suffix> will be appended to the upstream "
+"version of the repacked tar archive. Common suffixes might be B<+dfsg1> to "
+"indicate the removal of non-DFSG code or B<+ds1> to indicate the removal of "
+"embedded (DFSG) code copies."
+msgstr ""
+"Si les sources amont sont modifiées parce que I<debian/copyright> contient "
+"le champ B<Files-Excluded>, I<suffixe> sera ajouté à la version amont de "
+"l’archive tar rempaquetée. Par exemple, le suffixe peut être B<+dfsg1> pour "
+"indiquer la suppression de code non compatible avec les DFSG ou B<+ds1> pour "
+"indiquer la suppression de copies de code (DFSG) embarquées."
+
+# NOTE: "and in order to promote efficiency" ?
+#. type: Plain text
+#: ../scripts/uscan.1:321
+msgid ""
+"Similarly to several other scripts in the B<devscripts> package, B<uscan> "
+"explores the requested directory trees looking for I<debian/changelog> and "
+"I<debian/watch> files. As a safeguard against stray files causing potential "
+"problems, and in order to promote efficiency, it will examine the name of "
+"the parent directory once it finds the I<debian/changelog> file, and check "
+"that the directory name corresponds to the package name. It will only "
+"attempt to download newer versions of the package and then perform any "
+"requested action if the directory name matches the package name. Precisely "
+"how it does this is controlled by two configuration file variables "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> and B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, and "
+"their corresponding command-line options B<--check-dirname-level> and B<--"
+"check-dirname-regex>."
+msgstr ""
+"Comme plusieurs autres scripts du paquet B<devscripts>, B<uscan> parcourt le "
+"répertoire demandé à la recherche de fichiers I<debian/changelog> et "
+"I<debian/watch>. Pour se protéger contre certains fichiers égarés qui "
+"pourraient poser problème, il examine le nom du répertoire parent une fois "
+"qu'il a trouvé le fichier I<debian/changelog>, et vérifie que le nom du "
+"répertoire correspond au nom du paquet. Il ne cherchera à télécharger les "
+"nouvelles versions d'un paquet et à effectuer l'action demandée que si le "
+"nom du répertoire correspond au nom du paquet. La façon précise utilisée est "
+"contrôlée par les deux variables du fichier de configuration "
+"B<DEVSCRIPTS_CHECK_DIRNAME_LEVEL> et B<DEVSCRIPTS_CHECK_DIRNAME_REGEX>, et "
+"les options en ligne de commande associées B<--check-dirname-level> et B<--"
+"check-dirname-regex>."
+
+#. type: Plain text
+#: ../scripts/uscan.1:332
+msgid ""
+"Only check the directory name if we have had to change directory in our "
+"search for I<debian/changelog>, that is, the directory containing I<debian/"
+"changelog> is not the directory from which B<uscan> was invoked. This is "
+"the default behaviour."
+msgstr ""
+"Ne vérifie le nom du répertoire que s'il a fallu changer de répertoire pour "
+"trouver le fichier I<debian/changelog>, c'est-à-dire que le répertoire qui "
+"contient I<debian/changelog> n'est pas le répertoire dans lequel B<uscan> a "
+"été invoqué. C'est le comportement par défaut."
+
+#. type: Plain text
+#: ../scripts/uscan.1:350
+msgid "This script will perform a fully automatic upstream update."
+msgstr ""
+"Ce script va réaliser une mise à jour complètement automatique avec l'amont."
+
+#. type: Plain text
+#: ../scripts/uscan.1:358
+#, no-wrap
+msgid ""
+"#!/bin/sh -e\n"
+"# called with '--upstream-version' E<lt>versionE<gt> E<lt>fileE<gt>\n"
+"uupdate \"$@\"\n"
+"package=`dpkg-parsechangelog | sed -n 's/^Source: //p'`\n"
+"cd ../$package-$2\n"
+"debuild\n"
+msgstr ""
+"#!/bin/sh -e\n"
+"# appelé avec '--upstream-version' E<lt>versionE<gt> E<lt>fichierE<gt>\n"
+"uupdate \"$@\"\n"
+"package=`dpkg-parsechangelog | sed -n 's/^Source: //p'`\n"
+"cd ../$package-$2\n"
+"debuild\n"
+
+#. type: Plain text
+#: ../scripts/uscan.1:363
+msgid ""
+"Note that we don't call B<dupload> or B<dput> automatically, as the "
+"maintainer should perform sanity checks on the software before uploading it "
+"to Debian."
+msgstr ""
+"Remarquez que B<dupload> et B<dput> ne sont pas appelés automatiquement, "
+"puisque le responsable doit réaliser des vérifications sur le logiciel avant "
+"de l'envoyer à l'archive Debian."
+
+#. type: TP
+#: ../scripts/uscan.1:364
+#, no-wrap
+msgid "B<--report>, B<--no-download>"
+msgstr "B<--report>, B<--no-download>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:367
+msgid ""
+"Only report about available newer versions but do not download anything."
+msgstr ""
+"Ne fournir qu'un rapport indiquant les nouvelles versions, mais ne rien "
+"télécharger."
+
+#. type: TP
+#: ../scripts/uscan.1:367
+#, no-wrap
+msgid "B<--report-status>"
+msgstr "B<--report-status>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:371
+msgid ""
+"Report on the status of all packages, even those which are up-to-date, but "
+"do not download anything."
+msgstr ""
+"Rapporter l'état de tous les paquets, même ceux qui sont à jour, mais ne "
+"rien télécharger du tout."
+
+#. type: TP
+#: ../scripts/uscan.1:371
+#, no-wrap
+msgid "B<--download>"
+msgstr "B<--download>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:374
+msgid "Report and download. (This is the default behaviour.)"
+msgstr ""
+"Fournir un rapport puis télécharger (c'est le comportement par défaut)."
+
+#. type: TP
+#: ../scripts/uscan.1:374
+#, no-wrap
+msgid "B<--destdir>"
+msgstr "B<--destdir>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:379
+msgid ""
+"Path of directory to which to download. If the specified path is not "
+"absolute, it will be relative to one of the current directory or, if "
+"directory scanning is enabled, the package's source directory."
+msgstr ""
+"Chemin du répertoire où placer les fichiers téléchargés. Si le chemin "
+"indiqué n'est pas absolu, il sera relatif au répertoire actuel ou, si "
+"l'exploration de répertoires est activée, au répertoire du paquet source."
+
+#. type: TP
+#: ../scripts/uscan.1:379
+#, no-wrap
+msgid "B<--force-download>"
+msgstr "B<--force-download>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:382
+msgid ""
+"Download upstream even if up to date (will not overwrite local files, "
+"however)"
+msgstr ""
+"Télécharger le fichier amont même si le paquet est à jour (cependant, les "
+"fichiers locaux ne sont pas écrasés)."
+
+#. type: TP
+#: ../scripts/uscan.1:382
+#, no-wrap
+msgid "B<--pasv>"
+msgstr "B<--pasv>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:385
+msgid "Force PASV mode for FTP connections."
+msgstr "Forcer le mode passif (« PASV ») pour les connexions FTP."
+
+#. type: TP
+#: ../scripts/uscan.1:385
+#, no-wrap
+msgid "B<--no-pasv>"
+msgstr "B<--no-pasv>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:388
+msgid "Do not use PASV mode for FTP connections."
+msgstr "Ne pas utiliser le mode passif pour les connexions FTP."
+
+#. type: TP
+#: ../scripts/uscan.1:388
+#, no-wrap
+msgid "B<--timeout> I<N>"
+msgstr "B<--timeout> I<N>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:391
+msgid "Set timeout to N seconds (default 20 seconds)."
+msgstr "Définir le temps d'attente à N secondes (20 secondes par défaut)."
+
+#. type: TP
+#: ../scripts/uscan.1:391 ../scripts/uupdate.1:74
+#, no-wrap
+msgid "B<--no-symlink>"
+msgstr "B<--no-symlink>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:394
+msgid "Do not call B<mk-origtargz>."
+msgstr "Ne pas appeler B<mk-origtargz>."
+
+#. type: Plain text
+#: ../scripts/uscan.1:396
+msgid "The following options are passed to B<mk-origtargz>:"
+msgstr "Les options suivantes sont passées à B<mk-origtargz> :"
+
+#. type: Plain text
+#: ../scripts/uscan.1:402
+msgid ""
+"Make I<orig.tar.gz> (with the appropriate extension) symlinks to the "
+"downloaded files. (This is the default behaviour.)"
+msgstr ""
+"Faire des fichiers résultants (I<*.orig.tar.{gz|bz2|lzma|xz}> des liens "
+"symboliques vers les fichiers téléchargés (c'est le comportement par défaut)."
+
+#. type: Plain text
+#: ../scripts/uscan.1:405
+msgid "Instead of symlinking as described above, copy the downloaded files."
+msgstr ""
+"Au lieu de créer des liens symboliques comme décrit précédemment, copier les "
+"fichiers téléchargés."
+
+#. type: Plain text
+#: ../scripts/uscan.1:408
+msgid "Instead of symlinking as described above, rename the downloaded files."
+msgstr ""
+"Au lieu de créer des liens symboliques comme décrit précédemment, renommer "
+"les fichiers téléchargés."
+
+#. type: Plain text
+#: ../scripts/uscan.1:414
+msgid ""
+"After having downloaded an lzma tar, xz tar, bzip tar or zip archive, repack "
+"it to a gzip tar archive, if required. The B<unzip> package must be "
+"installed in order to repack .zip archives, the B<xz-utils> package must be "
+"installed to repack lzma or xz tar archives."
+msgstr ""
+"Après avoir téléchargé une archive tar compressée avec lzma ou xz ou bzip, "
+"ou une archive ZIP, la rempaqueter dans une archive tar compressée avec "
+"gzip, si nécessaire. Le paquet B<unzip> doit être installé pour rempaqueter "
+"les archives ZIP, le paquet B<xz-utils> doit être installé pour rempaqueter "
+"les archives tar compressées avec lzma ou xz."
+
+#. type: Plain text
+#: ../scripts/uscan.1:420
+msgid ""
+"In the case where the upstream sources are repacked (either because B<--"
+"repack> option is given or I<debian/copyright> contains the field B<Files-"
+"Excluded>), it is possible to control the compression method via the "
+"parameter (defaults to B<gzip>)."
+msgstr ""
+"Au cas où les sources amont sont rempaquetés (soit parce que l’option B<--"
+"repack> est donnée, soit parce que I<debian/copyright> contient le champ "
+"B<Files-Excluded>), la méthode de compression peut être contrôlée avec le "
+"paramètre I<comp> (B<gzip> par défaut)."
+
+#. type: TP
+#: ../scripts/uscan.1:420
+#, no-wrap
+msgid "B<--copyright-file >I<copyright-file>"
+msgstr "B<--copyright-file> I<fichier>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:424
+msgid ""
+"Exclude files mentioned in B<Files-Excluded> in the given copyright file. "
+"This is useful when running uscan not within a source package directory."
+msgstr ""
+"Exclure les fichiers mentionnés dans le champ B<Files-Excluded> du "
+"I<fichier> de copyright donné. C’est utile lors de l’utilisation d’B<uscan> "
+"en dehors d’un répertoire de paquet source."
+
+#. type: TP
+#: ../scripts/uscan.1:425
+#, no-wrap
+msgid "B<--dehs>"
+msgstr "B<--dehs>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:428
+msgid "Use an XML format for output, as required by the DEHS system."
+msgstr "Utiliser le format XML pour la sortie, requis par le système DEHS."
+
+#. type: TP
+#: ../scripts/uscan.1:428
+#, no-wrap
+msgid "B<--no-dehs>"
+msgstr "B<--no-dehs>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:431
+msgid ""
+"Use the traditional uscan output format. (This is the default behaviour.)"
+msgstr ""
+"Utiliser le format de sortie traditionnel de uscan (c'est le comportement "
+"par défaut)."
+
+#. type: Plain text
+#: ../scripts/uscan.1:440
+msgid ""
+"Specify the name of the package to check for rather than examining I<debian/"
+"changelog>; this requires the B<--upstream-version> (unless a version is "
+"specified in the I<watch> file) and B<--watchfile> options as well. "
+"Furthermore, no directory scanning will be done and nothing will be "
+"downloaded. This option is probably most useful in conjunction with the "
+"DEHS system (and B<--dehs>)."
+msgstr ""
+"Indiquer le nom du paquet à contrôler plutôt qu'examiner I<debian/"
+"changelog> ; cela nécessite les options B<--upstream-version> (à moins "
+"qu'une option ne soit précisée dans le fichier I<watch>) et B<--watchfile>. "
+"De plus, aucun répertoire ne sera scanné et rien ne sera téléchargé. Cette "
+"option est probablement la plus utile en conjonction avec le système DEHS "
+"(et B<--dehs>)."
+
+#. type: TP
+#: ../scripts/uscan.1:440
+#, no-wrap
+msgid "B<--upstream-version> I<upstream-version>"
+msgstr "B<--upstream-version> I<version-amont>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:445
+msgid ""
+"Specify the current upstream version rather than examine the I<watch> file "
+"or I<changelog> to determine it. This is ignored if a directory scan is "
+"being performed and more than one I<watch> file is found."
+msgstr ""
+"Indiquer la version amont actuelle plutôt qu'examiner le fichier I<watch> ou "
+"le journal des modifications pour le déterminer. C'est ignoré si un balayage "
+"de répertoire est fait et que plus d'un fichier I<watch> est trouvé."
+
+#. type: TP
+#: ../scripts/uscan.1:445
+#, no-wrap
+msgid "B<--watchfile> I<watchfile>"
+msgstr "B<--watchfile> I<watchfile>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:452
+msgid ""
+"Specify the I<watchfile> rather than perform a directory scan to determine "
+"it. If this option is used without B<--package>, then B<uscan> must be "
+"called from within the Debian package source tree (so that I<debian/"
+"changelog> can be found simply by stepping up through the tree)."
+msgstr ""
+"Indiquer le fichier I<watch> plutôt que faire un balayage de répertoire pour "
+"le déterminer. Si cette option est utilisée sans B<--package>, B<uscan> "
+"devra être appelé depuis l'arborescence du paquet Debian source (de sorte "
+"que I<debian/changelog> puisse être trouvé simplement par une recherche dans "
+"l'arborescence)."
+
+#. type: TP
+#: ../scripts/uscan.1:452
+#, no-wrap
+msgid "B<--download-version> I<version>"
+msgstr "B<--download-version> I<version>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:456
+msgid ""
+"Specify the version which the upstream release must match in order to be "
+"considered, rather than using the release with the highest version."
+msgstr ""
+"Indiquer la version amont souhaitée, plutôt qu'utiliser celle avec le numéro "
+"de version le plus important."
+
+#. type: TP
+#: ../scripts/uscan.1:456
+#, no-wrap
+msgid "B<--download-current-version>"
+msgstr "B<--download-current-version>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:459
+msgid "Download the currently packaged version"
+msgstr "Télécharger la version du paquet actuel"
+
+#. type: Plain text
+#: ../scripts/uscan.1:462
+msgid "Give verbose output."
+msgstr "Donner une sortie bavarde."
+
+#. type: TP
+#: ../scripts/uscan.1:462
+#, no-wrap
+msgid "B<--no-verbose>"
+msgstr "B<--no-verbose>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:465
+msgid "Don't give verbose output. (This is the default behaviour.)"
+msgstr "Ne pas donner de sortie bavarde (c'est le comportement par défaut)."
+
+#. type: TP
+#: ../scripts/uscan.1:465
+#, no-wrap
+msgid "B<--no-exclusion>"
+msgstr "B<--no-exclusion>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:469
+msgid ""
+"Do not automatically exclude files mentioned in I<debian/copyright> field "
+"B<Files-Excluded>"
+msgstr ""
+"Ne pas exclure automatiquement les fichiers mentionnés dans le champ B<Files-"
+"Excluded> de I<debian/copyright>."
+
+#. type: TP
+#: ../scripts/uscan.1:469
+#, no-wrap
+msgid "B<--debug>"
+msgstr "B<--debug>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:472
+msgid "Dump the downloaded web pages to stdout for debugging your watch file."
+msgstr ""
+"Afficher les pages web téléchargées sur la sortie standard afin de déboguer "
+"le fichier « watch »."
+
+#. type: TP
+#: ../scripts/uscan.1:480
+#, no-wrap
+msgid "B<--user-agent>, B<--useragent>"
+msgstr "B<--user-agent>, B<--useragent>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:483
+msgid "Override the default user agent header."
+msgstr "Utiliser un champ « user agent » différent de celui par défaut."
+
+#. type: Plain text
+#: ../scripts/uscan.1:490
+msgid "Give brief usage information."
+msgstr "Afficher un bref message d'aide."
+
+# NOTE: presque identique à un autre ?
+#. type: Plain text
+#: ../scripts/uscan.1:500
+msgid ""
+"The two configuration files I</etc/devscripts.conf> and I<~/.devscripts> are "
+"sourced by a shell in that order to set configuration variables. These may "
+"be overridden by command line options. Environment variable settings are "
+"ignored for this purpose. If the first command line option given is B<--"
+"noconf>, then these files will not be read. The currently recognised "
+"variables are:"
+msgstr ""
+"Les deux fichiers de configuration I</etc/devscripts.conf> et I<~/."
+"devscripts> sont évalués dans cet ordre par un interpréteur de commandes "
+"(« shell ») pour placer les variables de configuration. Des options de ligne "
+"de commande peuvent être utilisées pour neutraliser les paramètres des "
+"fichiers de configuration. Les paramètres des variables d'environnement sont "
+"ignorés à cette fin. Si la première option donnée en ligne de commande est "
+"B<--noconf>, alors ces fichiers ne sont pas évalués. Les variables "
+"actuellement identifiées sont :"
+
+#. type: TP
+#: ../scripts/uscan.1:500
+#, no-wrap
+msgid "B<USCAN_DOWNLOAD>"
+msgstr "B<USCAN_DOWNLOAD>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:505
+msgid ""
+"If this is set to I<no>, then newer upstream files will not be downloaded; "
+"this is equivalent to the B<--report> or B<--no-download> options."
+msgstr ""
+"Si elle est définie à I<no>, les nouveaux fichiers amonts ne seront pas "
+"téléchargés, ce qui équivaut à utiliser les options B<--report> ou B<--no-"
+"download>."
+
+#. type: TP
+#: ../scripts/uscan.1:505
+#, no-wrap
+msgid "B<USCAN_PASV>"
+msgstr "B<USCAN_PASV>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:511
+msgid ""
+"If this is set to I<yes> or I<no>, this will force FTP connections to use "
+"PASV mode or not to, respectively. If this is set to I<default>, then "
+"B<Net::FTP>(3) makes the choice (primarily based on the B<FTP_PASSIVE> "
+"environment variable)."
+msgstr ""
+"Si elle est définie à I<yes> ou I<no>, cela force respectivement à utiliser "
+"ou à ne pas utiliser le mode passif pour les connexions FTP. Si elle est "
+"définie à I<default>, alors B<Net::FTP>(3) fait un choix (basé "
+"principalement sur la variable d'environnement B<FTP_PASSIVE>)."
+
+#. type: TP
+#: ../scripts/uscan.1:511
+#, no-wrap
+msgid "B<USCAN_TIMEOUT>"
+msgstr "B<USCAN_TIMEOUT>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:515
+msgid ""
+"If set to a number I<N>, then set the timeout to I<N> seconds. This is "
+"equivalent to the B<--timeout> option."
+msgstr ""
+"Si cette option est définie à un nombre I<N>, alors définir le temps limite "
+"à I<N> secondes. C'est équivalent à l'option B<--timeout>."
+
+#. type: TP
+#: ../scripts/uscan.1:515
+#, no-wrap
+msgid "B<USCAN_SYMLINK>"
+msgstr "B<USCAN_SYMLINK>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:522
+msgid ""
+"If this is set to I<no>, then a pkg_version.orig.tar.{gz|bz2|lzma|xz} "
+"symlink will not be made (equivalent to the B<--no-symlink> option). If it "
+"is set to I<yes> or I<symlink>, then the symlinks will be made. If it is "
+"set to I<rename>, then the files are renamed (equivalent to the B<--rename> "
+"option)."
+msgstr ""
+"Si cette option est mise à I<no>, un lien symbolique vers paquet_version."
+"orig.tar.{gz|bz2|lzma|xz} ne sera pas créé (équivalent à l'option B<--no-"
+"symlink>). Si elle est à I<yes> ou I<symlink>, les liens symboliques seront "
+"créés. Si elle est à I<rename>, les fichiers sont renommés (équivalent à "
+"l'option B<--rename>)."
+
+#. type: TP
+#: ../scripts/uscan.1:522
+#, no-wrap
+msgid "B<USCAN_DEHS_OUTPUT>"
+msgstr "B<USCAN_DEHS_OUTPUT>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:526
+msgid ""
+"If this is set to I<yes>, then DEHS-style output will be used. This is "
+"equivalent to the B<--dehs> option."
+msgstr ""
+"Si cette option est à I<yes>, alors la sortie sera de type DEHS, comme si "
+"l'option B<--dehs> était utilisée."
+
+#. type: TP
+#: ../scripts/uscan.1:526
+#, no-wrap
+msgid "B<USCAN_VERBOSE>"
+msgstr "B<USCAN_VERBOSE>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:530
+msgid ""
+"If this is set to I<yes>, then verbose output will be given. This is "
+"equivalent to the B<--verbose> option."
+msgstr ""
+"Si elle est définie à I<yes>, alors la sortie sera bavarde, comme si "
+"l'option B<--verbose> était utilisée."
+
+#. type: TP
+#: ../scripts/uscan.1:530
+#, no-wrap
+msgid "B<USCAN_USER_AGENT>"
+msgstr "B<USCAN_USER_AGENT>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:534
+msgid ""
+"If set, the specified user agent string will be used in place of the "
+"default. This is equivalent to the B<--user-agent> option."
+msgstr ""
+"Si elle est définie, elle spécifie la chaîne à utiliser pour annoncer le "
+"navigateur (« user agent ») à la place de la valeur par défaut. C'est "
+"équivalent à l'option B<--user-agent>."
+
+#. type: TP
+#: ../scripts/uscan.1:534
+#, no-wrap
+msgid "B<USCAN_DESTDIR>"
+msgstr "B<USCAN_DESTDIR>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:538
+msgid ""
+"If set, the downloaded files will be placed in this directory. This is "
+"equivalent to the B<--destdir> option."
+msgstr ""
+"Si elle est définie, elle désigne le répertoire où les fichiers téléchargés "
+"seront placés. C'est équivalent à l'option B<--destdir>."
+
+#. type: TP
+#: ../scripts/uscan.1:538
+#, no-wrap
+msgid "B<USCAN_REPACK>"
+msgstr "B<USCAN_REPACK>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:543
+msgid ""
+"If this is set to I<yes>, then after having downloaded a bzip tar, lzma tar, "
+"xz tar, or zip archive, B<uscan> will repack it to a gzip tar. This is "
+"equivalent to the B<--repack> option."
+msgstr ""
+"Si elle est définie à I<yes>, alors après avoir téléchargé une archive tar "
+"compressée avec bzip ou lzma ou xz ou une archive ZIP, B<uscan> recréera une "
+"archive tar compressée avec gzip. C'est équivalent à l'option B<--repack>."
+
+#. type: TP
+#: ../scripts/uscan.1:543
+#, no-wrap
+msgid "B<USCAN_EXCLUSION>"
+msgstr "B<USCAN_EXCLUSION>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:548
+msgid ""
+"If this is set to I<no>, files mentioned in the field B<Files-Excluded> of "
+"I<debian/copyright> will be ignored and no exclusion of files will be "
+"tried. This is equivalent to the B<--no-exclusion> option."
+msgstr ""
+"Si elle est définie à I<no>, les fichiers mentionnés dans le champ B<Files-"
+"Excluded> de I<debian/copyright> seront ignorés et aucune exclusion de "
+"fichiers ne sera tentée. C'est équivalent à l'option B<--no-exclusion>."
+
+#. type: Plain text
+#: ../scripts/uscan.1:552
+msgid ""
+"The exit status gives some indication of whether a newer version was found "
+"or not; one is advised to read the output to determine exactly what happened "
+"and whether there were any warnings to be noted."
+msgstr ""
+"La valeur de retour indique si une nouvelle version a été trouvée ; il est "
+"conseillé de lire la sortie pour déterminer exactement ce qu'il s'est passé "
+"et pour voir s'il n'y a pas eu d'avertissement."
+
+#. type: Plain text
+#: ../scripts/uscan.1:556
+msgid ""
+"Either B<--help> or B<--version> was used, or for some I<watch> file which "
+"was examined, a newer upstream version was located."
+msgstr ""
+"Soit les options B<--help> ou B<--version> ont été utilisées, soit une "
+"nouvelle version amont a été trouvée pour un des fichiers I<watch> examinés."
+
+#. type: Plain text
+#: ../scripts/uscan.1:560
+msgid ""
+"No newer upstream versions were located for any of the I<watch> files "
+"examined."
+msgstr ""
+"Aucune nouvelle version amont n'a été trouvée pour les fichiers I<watch> "
+"examinés."
+
+#. type: SH
+#: ../scripts/uscan.1:560
+#, no-wrap
+msgid "HISTORY AND UPGRADING"
+msgstr "HISTORIQUE ET MISE À NIVEAU"
+
+#. type: Plain text
+#: ../scripts/uscan.1:564
+msgid ""
+"This section briefly describes the backwards-incompatible I<watch> file "
+"features which have been added in each I<watch> file version, and the first "
+"version of the B<devscripts> package which understood them."
+msgstr ""
+"Cette section décrit brièvement les incompatibilités inverses des "
+"fonctionnalités du fichier I<watch> qui ont été ajoutées dans chaque version "
+"du fichier I<watch> et la première version du paquet B<devscripts> qui les "
+"comprenait."
+
+#. type: TP
+#: ../scripts/uscan.1:564
+#, no-wrap
+msgid "I<Pre-version 2>"
+msgstr "I<Versions antérieures à 2>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:569
+msgid ""
+"The I<watch> file syntax was significantly different in those days. Don't "
+"use it. If you are upgrading from a pre-version 2 I<watch> file, you are "
+"advised to read this manpage and to start from scratch."
+msgstr ""
+"La syntaxe du fichier I<watch> était très différente à l'époque. Ne "
+"l'utilisez plus. Si vous mettez votre fichier I<watch> à niveau depuis une "
+"version antérieure à 2, il est recommandé de lire cette page de manuel et de "
+"recommencer à zéro."
+
+#. type: TP
+#: ../scripts/uscan.1:569
+#, no-wrap
+msgid "I<Version 2>"
+msgstr "I<Version 2>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:573
+msgid ""
+"devscripts version 2.6.90: The first incarnation of the current style of "
+"I<watch> files."
+msgstr ""
+"devscripts version 2.6.90 : la première incarnation du style actuel de "
+"fichier I<watch>."
+
+#. type: TP
+#: ../scripts/uscan.1:573
+#, no-wrap
+msgid "I<Version 3>"
+msgstr "I<Version 3>"
+
+#. type: Plain text
+#: ../scripts/uscan.1:579
+msgid ""
+"devscripts version 2.8.12: Introduced the following: correct handling of "
+"regex special characters in the path part, directory/path pattern matching, "
+"version number in several parts, version number mangling. Later versions "
+"have also introduced URL mangling."
+msgstr ""
+"devscripts version 2.8.12 a introduit les choses suivantes : manipulation "
+"correcte des expressions rationnelles dans la partie du chemin, recherche de "
+"motif d'un répertoire/chemin, numéro de version dans plusieurs parties, "
+"numéro de version modifiable. Les versions suivantes ont introduit la "
+"modification des liens."
+
+#. type: Plain text
+#: ../scripts/uscan.1:585
+msgid ""
+"If you are upgrading from version 2, the key incompatibility is if you have "
+"multiple groups in the pattern part; whereas only the first one would be "
+"used in version 2, they will all be used in version 3. To avoid this "
+"behaviour, change the non-version-number groups to be (?:...) instead of a "
+"plain (...) group."
+msgstr ""
+"Si vous êtes en train de vous mettre à niveau depuis la version 2, "
+"l'incompatibilité principale est s'il existe plusieurs groupes dans la "
+"partie des motifs. Alors que seul le premier était utilisé dans la version "
+"2, ils le seront tous dans la version 3. Pour éviter ce comportement, "
+"modifiez les groupes non liés au numéro de version en (?:...) au lieu d'un "
+"groupe ordinaire (...)."
+
+#. type: Plain text
+#: ../scripts/uscan.1:591
+msgid ""
+"B<dpkg>(1), B<mk-origtargz>(1), B<perlre>(1), B<uupdate>(1), B<devscripts."
+"conf>(5)"
+msgstr ""
+"B<dpkg>(1), B<mk-origtargz>(1), B<perlre>(1), B<uupdate>(1), B<devscripts."
+"conf>(5)"
+
+#. type: Plain text
+#: ../scripts/uscan.1:596
+msgid ""
+"The original version of B<uscan> was written by Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. Significant improvements, changes and "
+"bugfixes were made by Julian Gilbey E<lt>jdg@debian.orgE<gt>. HTTP support "
+"was added by Piotr Roszatycki E<lt>dexter@debian.orgE<gt>. The program was "
+"rewritten in Perl by Julian Gilbey."
+msgstr ""
+"La version initiale de B<uscan> a été écrite par Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. Des améliorations significatives, d'autres "
+"modifications et des corrections de bogues ont été apportées par Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>. Le support pour HTTP a été ajouté par Piotr "
+"Roszatycki E<lt>dexter@debian.orgE<gt>. Le programme a été réécrit en Perl "
+"par Julian Gilbey."
+
+#. type: TH
+#: ../scripts/uupdate.1:1
+#, no-wrap
+msgid "UUPDATE"
+msgstr "UUPDATE"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:4
+msgid "uupdate - upgrade a source code package from an upstream revision"
+msgstr "uupdate - Mettre à jour un paquet source depuis une version amont"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:6
+msgid "B<uupdate> [I<options>] I<new_upstream_archive> [I<version>]"
+msgstr "B<uupdate> [I<options>] I<nouvelle_archive_amont> [I<version>]"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:8
+msgid "B<uupdate> [I<options>] B<--patch>|B<-p> I<patch_file>"
+msgstr "B<uupdate> [I<options>] B<--patch>|B<-p> I<fichier_rustine>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:20
+msgid ""
+"B<uupdate> modifies an existing Debian source code archive to reflect an "
+"upstream update supplied as a patch or from a wholly new source code "
+"archive. The utility needs to be invoked from the top directory of the old "
+"source code directory, and if a relative name is given for the new archive "
+"or patch file, it will be looked for first relative to the execution "
+"directory and then relative to the parent of the source tree. (For example, "
+"if the changelog file is I</usr/local/src/foo/foo-1.1/debian/changelog>, "
+"then the archive or patch file will be looked for relative to I</usr/local/"
+"src/foo>.) Note that the patch file or archive cannot be within the source "
+"tree itself. The full details of what the code does are given below."
+msgstr ""
+"B<uupdate> modifie une archive source Debian existante pour intégrer une "
+"mise à jour amont fournie par une rustine, ou une archive source complète. "
+"L'utilitaire doit être invoqué depuis le répertoire de plus haut niveau de "
+"l'ancien répertoire des sources, et si un nom relatif est donné pour la "
+"nouvelle archive ou rustine, la recherche démarrera par le répertoire "
+"d'exécution puis relativement au répertoire parent de l'arborescence des "
+"sources. (Par exemple, si le fichier I<changelog> est I</usr/local/src/toto/"
+"toto-1.1/debian/changelog>, alors l'archive ou la rustine sera recherchée "
+"relativement à I</usr/local/src/toto>). Remarquez que l'archive ou la "
+"rustine ne peuvent pas se trouver dans l'arborescence des sources elle-même. "
+"Les détails complets sur ce que fait le code sont donnés plus bas."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:30
+msgid ""
+"Currently supported source code file types are I<.tar.gz>, I<.tar.bz2>, I<."
+"tar.Z>, I<.tgz>, I<.tar>, I<.tar.lzma>, I<.tar.xz>, I<.7z> and I<.zip> "
+"archives. Also supported are already unpacked source code archives; simply "
+"give the path of the source code directory. Supported patch file types are "
+"B<gzip>-compressed, B<bzip2>-compressed, B<lzma>-compressed, B<xz>-"
+"compressed and uncompressed patch files. The file types are identified by "
+"the file names, so they must use the standard suffixes."
+msgstr ""
+"Les types de fichier pris en charge pour le code source sont les archives I<."
+"tar.gz>, I<.tar.bz2>, I<.tar.Z>, I<.tgz>, I<.tar>, I<.tar.lzma>, I<.tar.xz>, "
+"I<.7z> et I<.zip>. Les archives de code source non compressées sont "
+"également gérées, il suffit dans ce cas de donner le nom du répertoire du "
+"code source. Les types de fichier pour les rustines sont les fichiers non "
+"compressés ou compressés avec B<gzip>, B<bzip2>, B<lzma>, ou B<xz>. Le type "
+"de fichier est identifié par le nom du fichier, qui doit donc utiliser un "
+"suffixe standard."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:40
+msgid ""
+"Usually B<uupdate> will be able to deduce the version number from the source "
+"archive name (as long as it only contains digits and periods). If that "
+"fails, you need to specify the version number explicitly (without the Debian "
+"release number which will always be initially ``1'', or ``0ubuntu1'' on "
+"Ubuntu-detected systems). This can be done with an initial B<--upstream-"
+"version> or B<-v> option, or in the case of an archive, with a version "
+"number after the filename. (The reason for the latter is so that B<uupdate> "
+"can be called directly from B<uscan>.)"
+msgstr ""
+"B<uupdate> est en règle générale capable de déduire le numéro de version "
+"grâce au nom de l'archive source (si ce numéro de version ne contient que "
+"des chiffres et points). En cas d'échec, vous devez spécifier le numéro de "
+"version explicitement (sans le numéro de livraison Debian, qui sera toujours "
+"initialisé à « 1 », ou « 0ubuntu1 » sur les systèmes Ubuntu reconnus). Cela "
+"peut se faire avec les options B<--upstream-version> ou B<-v> ou, dans le "
+"cas d'une archive, avec un numéro de version à la fin du nom de fichier. (La "
+"raison d'être de cette deuxième méthode est que B<uupdate> peut alors être "
+"appelé directement depuis B<uscan>.)"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:45
+msgid ""
+"Since B<uupdate> uses B<debuild> to clean the current archive before trying "
+"to apply a patch file, it accepts a B<--rootcmd> or B<-r> option allowing "
+"the user to specify a gain-root command to be used. The default is to use "
+"B<fakeroot>."
+msgstr ""
+"Comme B<uupdate> utilise B<debuild> pour nettoyer l'archive actuelle avant "
+"d'essayer d'appliquer une rustine, il accepte les options B<--rootcmd> ou B<-"
+"r> pour spécifier la commande à utiliser pour obtenir les droits du "
+"superutilisateur. Par défaut, B<fakeroot> est utilisé."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:52
+msgid ""
+"If an archive is being built, the pristine upstream source should be used to "
+"create the I<.orig.tar.gz> file wherever possible. This means that MD5 sums "
+"or other similar methods can be used to easily compare the upstream source "
+"to Debian's copy of the upstream version. This is the default behaviour, "
+"and can be switched off using the B<--no-pristine> option below."
+msgstr ""
+"Lorsqu'une archive est créée, les sources amont vierges doivent être "
+"utilisées pour créer le fichier I<.orig.tar.gz> autant que possible. Cela "
+"signifie qu'une somme MD5 ou tout autre moyen peut être utilisé pour "
+"facilement comparer les sources amont et la copie Debian de la version "
+"amont. C'est le comportement par défaut, qui peut être désactivé en "
+"utilisant l'option B<--no-pristine> décrite ci-dessous."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:54
+msgid "This is a summary of what was explained above."
+msgstr "Voici un résumé de ce qui est expliqué ci-dessus."
+
+#. type: TP
+#: ../scripts/uupdate.1:54
+#, no-wrap
+msgid "B<--upstream-version >I<version>, B<-v >I<version>"
+msgstr "B<--upstream-version >I<version>, B<-v >I<version>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:57
+msgid "Specify the version number of the upstream package explicitly."
+msgstr "Indique explicitement le numéro de version du paquet amont."
+
+#. type: TP
+#: ../scripts/uupdate.1:57
+#, no-wrap
+msgid "B<--rootcmd >I<gain-root-command>, B<-r >I<gain-root-command>"
+msgstr "B<--rootcmd> I<commande-pour-devenir-superutilisateur>, B<-r> I<commande-pour-devenir-superutilisateur>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:61
+msgid ""
+"Specify the command to be used to become root to build the package and is "
+"passed onto B<debuild>(1) if it is specified."
+msgstr ""
+"Indique la commande utilisée pour devenir superutilisateur pour la "
+"construction du paquet, et qui sera passée à B<debuild>(1) si elle est "
+"fournie."
+
+#. type: TP
+#: ../scripts/uupdate.1:61
+#, no-wrap
+msgid "B<--pristine>, B<-u>"
+msgstr "B<--pristine>, B<-u>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:66
+msgid ""
+"Treat the source as pristine upstream source and symlink to it from "
+"I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz> whenever possible. This "
+"option has no meaning for patches. This is the default behaviour."
+msgstr ""
+"Traite les sources comme les sources amont vierges et crée un lien "
+"symbolique vers I<E<lt>paquetE<gt>_E<lt>versionE<gt>.orig.tar.gz> si "
+"possible. Cette option est sans importance pour les rustines. C'est le "
+"comportement par défaut."
+
+#. type: TP
+#: ../scripts/uupdate.1:66
+#, no-wrap
+msgid "B<--no-pristine>"
+msgstr "B<--no-pristine>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:69
+msgid ""
+"Do not attempt to make a I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz> "
+"symlink."
+msgstr ""
+"Ne cherche pas à créer de lien symbolique "
+"I<E<lt>paquetE<gt>_E<lt>versionE<gt>.orig.tar.gz>"
+
+#. type: TP
+#: ../scripts/uupdate.1:69
+#, no-wrap
+msgid "B<--symlink>, B<-s>"
+msgstr "B<--symlink>, B<-s>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:74
+msgid ""
+"Simply create a symlink when moving a new upstream I<.tar.gz> archive to the "
+"new I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz> location. This is "
+"the default behaviour."
+msgstr ""
+"Crée simplement un lien symbolique lors du déplacement de la nouvelle "
+"archive amont I<.tar.gz> vers son nouvel emplacement "
+"I<E<lt>paquetE<gt>_E<lt>versionE<gt>.orig.tar.gz>. Il s'agit du comportement "
+"par défaut."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:78
+msgid ""
+"Copy the upstream I<.tar.gz> to the new location instead of making a symlink."
+msgstr ""
+"Copie l'archive I<.tar.gz> amont au nouvel emplacement au lieu de faire un "
+"lien symbolique."
+
+#. type: TP
+#: ../scripts/uupdate.1:94
+#, no-wrap
+msgid "B<UUPDATE_PRISTINE>"
+msgstr "B<UUPDATE_PRISTINE>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:98
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-pristine> command "
+"line parameter being used."
+msgstr ""
+"Si elle est définie à I<no>, alors c'est comme si l'option B<--no-pristine> "
+"était utilisée."
+
+#. type: TP
+#: ../scripts/uupdate.1:98
+#, no-wrap
+msgid "B<UUPDATE_SYMLINK_ORIG>"
+msgstr "B<UUPDATE_SYMLINK_ORIG>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:102
+msgid ""
+"If this is set to I<no>, then it is the same as the B<--no-symlink> command "
+"line parameter being used."
+msgstr ""
+"Si elle est définie à I<no>, alors c'est comme si l'option B<--no-symlink> "
+"était utilisée."
+
+#. type: TP
+#: ../scripts/uupdate.1:102
+#, no-wrap
+msgid "B<UUPDATE_ROOTCMD>"
+msgstr "B<UUPDATE_ROOTCMD>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:105
+msgid "This is equivalent to the B<--rootcmd> option."
+msgstr "Équivaut à utiliser l'option B<--rootcmd>."
+
+#. type: SH
+#: ../scripts/uupdate.1:105
+#, no-wrap
+msgid "ACTIONS TAKEN ON AN ARCHIVE"
+msgstr "ACTIONS EFFECTUÉES SUR UNE ARCHIVE"
+
+#. type: TP
+#: ../scripts/uupdate.1:106 ../scripts/uupdate.1:139
+#, no-wrap
+msgid "B<Figure out new version number>"
+msgstr "B<Récupération du numéro de version>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:112
+msgid ""
+"Unless an explicit version number is provided, the archive name is analyzed "
+"for a sequence of digits separated by dots. If something like that is "
+"found, it is taken to be the new upstream version number. If not, "
+"processing is aborted."
+msgstr ""
+"À moins que le numéro de version ne soit explicitement fourni, le nom de "
+"l'archive est analysé pour rechercher une séquence de chiffres séparés par "
+"des points. Si quelque chose comme ça est trouvé, ce sera utilisé comme "
+"nouveau numéro de version amont. Sinon, le processus est interrompu."
+
+#. type: TP
+#: ../scripts/uupdate.1:112
+#, no-wrap
+msgid "B<Create the .orig.tar.gz archive>"
+msgstr "B<Création de l'archive .orig.tar.gz>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:117
+msgid ""
+"If the B<--pristine> or B<-u> option is specified and the upstream archive "
+"is a I<.tar.gz> or I<.tgz> archive, then this will be copied directly to "
+"I<E<lt>packageE<gt>_E<lt>versionE<gt>.orig.tar.gz>."
+msgstr ""
+"Si les options B<--pristine> ou B<-u> sont utilisées et que l'archive amont "
+"est une archive I<.tar.gz> ou I<.tgz>, alors elle est copiée directement "
+"dans I<E<lt>paquetE<gt>_E<lt>versionE<gt>.orig.tar.gz>."
+
+#. type: TP
+#: ../scripts/uupdate.1:117
+#, no-wrap
+msgid "B<Unpacking>"
+msgstr "B<Décompression>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:122
+msgid ""
+"The archive is unpacked and placed in a directory with the correct name "
+"according to Debian policy: package-upstream_version.orig. Processing is "
+"aborted if this directory already exists."
+msgstr ""
+"L'archive est décompressée et placée dans un répertoire avec le nom défini "
+"dans la Charte Debian : paquet-version_amont.orig. Le processus est "
+"interrompu si ce répertoire existe déjà."
+
+#. type: TP
+#: ../scripts/uupdate.1:122 ../scripts/uupdate.1:150
+#, no-wrap
+msgid "B<Patching>"
+msgstr "B<Application de la rustine>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:130
+msgid ""
+"The I<.diffs.gz> from the current version are applied to the unpackaged "
+"archive. A non-zero exit status and warning message will occur if the "
+"patches did not apply cleanly or if no patch file was found. Also, the list "
+"of rejected patches will be shown. The file I<debian/rules> is made "
+"executable and all of the I<.orig> files created by B<patch> are deleted."
+msgstr ""
+"La rustine (« patch ») I<.diff.gz> de la version actuelle est appliquée à "
+"l'archive décompressée. Un message d'avertissement est affiché avant de "
+"quitter avec une valeur de retour non nulle si la rustine ne s'applique pas "
+"sans problème ou si elle n'a pas été trouvée. La liste des rustines rejetées "
+"est également affichée. Le fichier I<debian/rules> est rendu exécutable et "
+"tous les fichiers I<.orig> créés par B<patch> sont détruits."
+
+#. type: TP
+#: ../scripts/uupdate.1:130 ../scripts/uupdate.1:162
+#, no-wrap
+msgid "B<Changelog update>"
+msgstr "B<Mise à jour du fichier changelog>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:134 ../scripts/uupdate.1:166
+msgid ""
+"A changelog entry with the new version number is generated with the text "
+"``New upstream release''."
+msgstr ""
+"Une entrée du fichier I<changelog> avec la nouvelle version est créée avec "
+"le texte « New upstream release » (nouvelle version amont)."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:138 ../scripts/uupdate.1:170
+msgid ""
+"When used on Ubuntu systems, B<dpkg-vendor> detection is used to set the "
+"Debian revision to ``0ubuntu1''. You may change I<debian/changelog> "
+"manually afterwards."
+msgstr ""
+"Sur les systèmes Ubuntu, la détection B<dpkg-vendor> est utilisée pour "
+"configurer le numéro de livraison Debian à « 0ubuntu1 ». Vous devriez "
+"ensuite modifier I<debian/changelog> vous-même."
+
+#. type: SH
+#: ../scripts/uupdate.1:138
+#, no-wrap
+msgid "ACTIONS TAKEN ON A PATCH FILE"
+msgstr "ACTIONS APPLIQUÉES À UN FICHIER DE RUSTINES"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:145
+msgid ""
+"Unless an explicit version number is provided, the patch file name is "
+"analyzed for a sequence of digits separated by dots. If something like that "
+"is found, it is taken to be the new upstream version number. If not, "
+"processing is aborted."
+msgstr ""
+"À moins qu'un numéro de version ne soit explicitement fourni, le fichier de "
+"rustines est analysé afin de rechercher une séquence de chiffres séparés par "
+"des points. Si une telle séquence est trouvée, elle est utilisée comme "
+"nouveau numéro de version amont. Sinon, le processus est interrompu."
+
+#. type: TP
+#: ../scripts/uupdate.1:145
+#, no-wrap
+msgid "B<Clean the current source tree>"
+msgstr "B<Nettoyage de l'arborescence source actuelle>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:150
+msgid ""
+"The command B<debuild clean> is executed within the current Debian source "
+"archive to clean it. If a B<-r> option is given to B<uupdate>, it is passed "
+"on to B<debuild>."
+msgstr ""
+"La commande B<debuild clean> est exécutée dans l'archive de l'architecture "
+"source Debian pour la nettoyer. Si une option B<-r> est fournie à "
+"B<uupdate>, elle est passée à B<debuild>."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:162
+msgid ""
+"The current source archive (I<.orig.tar.gz>) is unpacked and the patch "
+"applied to the original sources. If this is successful, then the I<.orig> "
+"directory is renamed to reflect the new version number and the current "
+"Debian source directory is copied to a directory with the new version "
+"number, otherwise processing is aborted. The patch is then applied to the "
+"new copy of the Debian source directory. The file I<debian/rules> is made "
+"executable and all of the I<.orig> files created by B<patch> are deleted. "
+"If there was a problem with the patching, a warning is issued and the "
+"program will eventually exit with non-zero exit status."
+msgstr ""
+"L'archive source actuelle (I<.orig.tar.gz>) est décompressée et la rustine "
+"est appliquée aux sources originelles. En cas de succès, le répertoire I<."
+"orig> est renommé de façon à refléter le nouveau numéro de version, et le "
+"répertoire source Debian actuel est copié vers un répertoire avec le nouveau "
+"numéro de version. Sinon, le processus est interrompu. La rustine est "
+"appliquée à la nouvelle copie du répertoire source Debian. Le fichier "
+"I<debian/rules> est rendu exécutable, et tous les fichiers I<.orig> créés "
+"par B<patch> sont détruits. En cas de problème lors de l'application de la "
+"rustine, un avertissement est affiché et le programme quittera avec une "
+"valeur de retour non nulle."
+
+#. type: Plain text
+#: ../scripts/uupdate.1:175
+msgid "B<debuild>(1), B<fakeroot>(1), B<patch>(1), B<devscripts.conf>(5)"
+msgstr "B<debuild>(1), B<fakeroot>(1), B<patch>(1), B<devscripts.conf>(5)"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:177
+msgid "B<The Debian Policy Manual>"
+msgstr "La B<Charte Debian>"
+
+#. type: Plain text
+#: ../scripts/uupdate.1:180
+msgid ""
+"The original version of B<uupdate> was written by Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. Several changes and improvements have been "
+"made by Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"La version initiale de B<uupdate> a été écrite par Christoph Lameter "
+"E<lt>clameter@debian.orgE<gt>. Plusieurs modifications et améliorations ont "
+"été apportées par Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#. type: TH
+#: ../doc/what-patch.1:1
+#, no-wrap
+msgid "WHAT-PATCH"
+msgstr "WHAT-PATCH"
+
+#. type: Plain text
+#: ../doc/what-patch.1:4
+msgid "what-patch - detect which patch system a Debian package uses"
+msgstr ""
+"what-patch - Détecter le système de correctif utilisé dans un paquet Debian"
+
+#. type: Plain text
+#: ../doc/what-patch.1:7
+msgid "B<what-patch> [I<options>]"
+msgstr "B<tagpending> [I<options>]"
+
+#. type: Plain text
+#: ../doc/what-patch.1:11
+msgid ""
+"B<what-patch> examines the I<debian/rules> file to determine which patch "
+"system the Debian package is using."
+msgstr ""
+"B<what-patch> examine le fichier I<debian/rules> pour déterminer le système "
+"de correctif utilisé dans un paquet Debian."
+
+#. type: Plain text
+#: ../doc/what-patch.1:14
+msgid ""
+"B<what-patch> should be run from the root directory of the Debian source "
+"package."
+msgstr ""
+"B<what-patch> devrait être exécutée depuis le répertoire racine d'un paquet "
+"source Debian."
+
+#. type: Plain text
+#: ../doc/what-patch.1:17
+msgid "Listed below are the command line options for B<what-patch>:"
+msgstr "Les options suivantes sont utilisables avec B<what-patch>."
+
+#. type: Plain text
+#: ../doc/what-patch.1:20
+msgid "Display a help message and exit."
+msgstr "Afficher un message d'aide et quitter."
+
+#. type: TP
+#: ../doc/what-patch.1:20
+#, no-wrap
+msgid "B<-v>"
+msgstr "B<-v>"
+
+#. type: Plain text
+#: ../doc/what-patch.1:26
+msgid ""
+"Enable verbose mode. This will include the listing of any files modified "
+"outside or the I<debian/> directory and report any additional details about "
+"the patch system if available."
+msgstr ""
+"Activer la sortie bavarde. Cela comprend la liste de tous les fichiers "
+"modifiés hors du répertoire I<debian/> et un compte-rendu détaillé du "
+"système de correctif s'il est disponible."
+
+#. type: Plain text
+#: ../doc/what-patch.1:32
+msgid ""
+"B<what-patch> was written by Kees Cook E<lt>kees@ubuntu.comE<gt>, Siegfried-"
+"A. Gevatter E<lt>rainct@ubuntu.comE<gt>, and Daniel Hahler "
+"E<lt>ubuntu@thequod.deE<gt>, among others. This manual page was written by "
+"Jonathan Patrick Davies E<lt>jpds@ubuntu.comE<gt>."
+msgstr ""
+"B<what-patch> a été écrite par Kees Cook E<lt>I<kees@ubuntu.com>E<gt>, "
+"Siegfried-A. Gevatter E<lt>I<rainct@ubuntu.com>E<gt> et Daniel Hahler "
+"E<lt>I<ubuntu@thequod.de>E<gt>, parmi d'autres. Cette page de manuel a été "
+"écrite par Jonathan Patrick Davies E<lt>I<jpds@ubuntu.com>E<gt>."
+
+#. type: Plain text
+#: ../doc/what-patch.1:34
+msgid ""
+"Both are released under the GNU General Public License, version 3 or later."
+msgstr ""
+"Toutes deux sont publiées sous la GNU General Public License, version 3 ou "
+"suivante."
+
+#. type: Plain text
+#: ../doc/what-patch.1:38
+msgid ""
+"The Ubuntu MOTU team has some documentation about patch systems at the "
+"Ubuntu wiki: I<https://wiki.ubuntu.com/PackagingGuide/PatchSystems>"
+msgstr ""
+"L'équipe de MOTU Ubuntu a documenté ces systèmes de correctifs dans le wiki "
+"d'Ubuntu : I<https://wiki.ubuntu.com/PackagingGuide/PatchSystems>"
+
+#. type: Plain text
+#: ../doc/what-patch.1:42
+msgid "B<cdbs-edit-patch>(1), B<dbs-edit-patch>(1), B<dpatch-edit-patch>(1)"
+msgstr "B<cdbs-edit-patch>(1), B<dbs-edit-patch>(1), B<dpatch-edit-patch>(1)"
+
+#. type: TH
+#: ../scripts/whodepends.1:1
+#, no-wrap
+msgid "WHODEPENDS"
+msgstr "WHODEPENDS"
+
+#. type: Plain text
+#: ../scripts/whodepends.1:4
+msgid "whodepends - check which maintainers' packages depend on a package"
+msgstr ""
+"whodepends - Vérifier quels paquets (et responsables) dépendent d'un autre"
+
+#. type: Plain text
+#: ../scripts/whodepends.1:6
+msgid "B<whodepends> [I<package>] [I<options>]"
+msgstr "B<whodepends> [I<paquet>] [I<options>]"
+
+#. type: Plain text
+#: ../scripts/whodepends.1:10
+msgid ""
+"B<whodepends> gives the names, e-mail addresses and the packages they "
+"maintain of all maintainers who have packages depending on the given package."
+msgstr ""
+"B<whodepends> donne le nom de tous les responsables qui ont un paquet qui "
+"dépend d'un paquet donné, ainsi que leurs adresses électroniques et le nom "
+"des paquets concernés."
+
+#. type: Plain text
+#: ../scripts/whodepends.1:19
+msgid "B<whodepends> is not very efficient."
+msgstr "B<whodepends> n'est pas vraiment efficace."
+
+#. type: Plain text
+#: ../scripts/whodepends.1:20
+msgid ""
+"B<whodepends> has been written by Moshe Zadka E<lt>moshez@debian.orgE<gt>."
+msgstr "B<whodepends> a été écrit par Moshe Zadka E<lt>moshez@debian.orgE<gt>."
+
+#. type: TH
+#: ../scripts/who-uploads.1:1
+#, no-wrap
+msgid "WHO-UPLOADS"
+msgstr "WHO-UPLOADS"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:4
+msgid "who-uploads - identify the uploaders of Debian source packages"
+msgstr ""
+"who-uploads - Identifier les personnes ayant envoyé des paquets source Debian"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:6
+msgid "B<who-uploads> [I<options>] I<source_package> ..."
+msgstr "B<who-uploads> [I<options>] I<paquet_source> ..."
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:12
+msgid ""
+"B<who-uploads> uses the Package Tracking System (PTS) to identify the "
+"uploaders of the three most recent versions of the given source packages. "
+"Note that the uploaders are identified using their B<gpg>(1) keys; "
+"installing a recent version of the I<debian-keyring> package should provide "
+"most of the required keys."
+msgstr ""
+"B<who-uploads> utilise le système de suivi des paquets (PTS) pour identifier "
+"les personnes ayant envoyé les trois versions les plus récentes des paquets "
+"source donnés. Remarquez que ces personnes sont identifiées avec leurs clefs "
+"B<gpg>(1). L'installation d'une version récente du paquet I<debian-keyring> "
+"devrait fournir la plupart des clefs nécessaires."
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:15
+msgid ""
+"Note that because the PTS uses source packages, you must give the source "
+"package names, not the binary package names."
+msgstr ""
+"Remarquez que puisque le PTS utilise les paquets source, vous devez donner "
+"les noms des paquets source, et non ceux des paquets binaires."
+
+#. type: TP
+#: ../scripts/who-uploads.1:16
+#, no-wrap
+msgid "B<-M>, B<--max-uploads=>I<N>"
+msgstr "B<-M>, B<--max-uploads=>I<N>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:21
+msgid ""
+"Specify the maximum number of uploads to display for each package; the "
+"default is 3. Note that you may not see this many uploads if there are not "
+"this many recorded in the PTS."
+msgstr ""
+"Indique le nombre maximum d'envois à afficher pour chaque paquet. La valeur "
+"par défaut est 3. Remarquez qu'un nombre inférieur peut être affiché s'il "
+"n'y a pas suffisamment d'envois enregistrés dans le PTS."
+
+#. type: TP
+#: ../scripts/who-uploads.1:21
+#, no-wrap
+msgid "B<--keyring >I<keyring>"
+msgstr "B<--keyring> I<trousseau>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:25
+msgid ""
+"Add I<keyring> to the list of keyrings to be searched for the uploader's GPG "
+"key."
+msgstr ""
+"Ajoute un I<trousseau> de clefs à la liste des trousseaux à utiliser pour "
+"identifier la clef GPG des personnes ayant envoyé un paquet."
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:33
+msgid ""
+"By default, B<who-uploads> uses the two Debian keyrings I</usr/share/"
+"keyrings/debian-keyring.gpg> and I</usr/share/keyrings/debian-maintainers."
+"gpg> (although this default can be changed in the configuration file, see "
+"below). Specifying this option means that the default keyrings will not be "
+"examined. The B<--keyring> option overrides this one."
+msgstr ""
+"Par défaut, B<who-uploads> utilise les deux trousseaux Debian I</usr/share/"
+"keyrings/debian-keyring.gpg> et I</usr/share/keyrings/debian-maintainers."
+"gpg> (même si cette valeur peut être modifiée dans le fichier de "
+"configuration, voyez ci-dessous). En spécifiant cette option, les trousseaux "
+"par défaut ne seront pas examinés. L'option B<--keyring> remplace cette "
+"valeur."
+
+#. type: TP
+#: ../scripts/who-uploads.1:33
+#, no-wrap
+msgid "B<--date>"
+msgstr "B<--date>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:36
+msgid "Show the date of the upload alongside the uploader's details"
+msgstr ""
+"Afficher la date de l'envoi avec les détails sur la personne ayant effectué "
+"l'envoi."
+
+#. type: TP
+#: ../scripts/who-uploads.1:36
+#, no-wrap
+msgid "B<--nodate>, B<--no-date>"
+msgstr "B<--nodate>, B<--no-date>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:40
+msgid ""
+"Do not show the date of the upload alongside the uploader's details. This "
+"is the default behaviour."
+msgstr ""
+"Ne pas afficher la date de l'envoi avec les détails sur la personne ayant "
+"effectué l'envoi. C'est le comportement par défaut."
+
+#. type: TP
+#: ../scripts/who-uploads.1:56
+#, no-wrap
+msgid "B<WHOUPLOADS_DATE>"
+msgstr "B<WHOUPLOADS_DATE>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:60
+msgid ""
+"Show the date of the upload alongside the uploader's details. By default, "
+"this is \"no\"."
+msgstr ""
+"Afficher la date de l'envoi avec les détails sur la personne ayant effectué "
+"l'envoi. La valeur par défaut est « no »."
+
+#. type: TP
+#: ../scripts/who-uploads.1:60
+#, no-wrap
+msgid "B<WHOUPLOADS_MAXUPLOADS>"
+msgstr "B<WHOUPLOADS_MAXUPLOADS>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:64
+msgid ""
+"The maximum number of uploads to display for each package. By default, this "
+"is 3."
+msgstr ""
+"Nombre maximum d'envois à afficher pour chaque paquet. La valeur par défaut "
+"est 3."
+
+#. type: TP
+#: ../scripts/who-uploads.1:64
+#, no-wrap
+msgid "B<WHOUPLOADS_KEYRINGS>"
+msgstr "B<WHOUPLOADS_KEYRINGS>"
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:71
+msgid ""
+"This is a colon-separated list of the default keyrings to be used. By "
+"default, it is the two Debian keyrings I</usr/share/keyrings/debian-keyring."
+"gpg> and I</usr/share/keyrings/debian-maintainers.gpg>."
+msgstr ""
+"Il s'agit d'une liste séparée par des deux-points des trousseaux par défaut "
+"à utiliser. Par défaut, il s'agit des deux trousseaux Debian I</usr/share/"
+"keyrings/debian-keyring.gpg> et I</usr/share/keyrings/debian-maintainers."
+"gpg>."
+
+#. type: Plain text
+#: ../scripts/who-uploads.1:74
+msgid ""
+"The original version of B<who-uploads> was written by Adeodato Sim\\['o] "
+"E<lt>dato@net.com.org.esE<gt>. The current version is by Julian Gilbey "
+"E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Le programme B<who-uploads> a été initialement écrit par Adeodato Sim\\['o] "
+"E<lt>dato@net.com.org.esE<gt>. La version actuelle est écrite par Julian "
+"Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:44
+msgid "who-permits-upload - look-up Debian Maintainer access control lists"
+msgstr ""
+"who-permits-upload - Rechercher dans les listes de contrôle d’accès de "
+"mainteneurs Debian"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:48
+msgid ""
+"B<who-permits-upload> [B<-h>] [B<-s> I<keyring>] [B<-d> I<dm_url>] [B<-s> "
+"I<search_type>] I<query> [I<query> ...]"
+msgstr ""
+"B<who-permits-upload> [B<-h>] [B<-s> I<trousseau>] [B<-d> I<url_dm>] [B<-s> "
+"I<type_de_recherche>] I<requête> [I<requête> ...]"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:52
+msgid ""
+"B<who-permits-upload> looks up the given Debian Maintainer (DM) upload "
+"permissions from ftp-master.debian.org and parses them in a human readable "
+"way. The tool can search by DM name, sponsor (the person who granted the "
+"permission) and by package."
+msgstr ""
+"B<who-permits-upload> recherche les droits d’envoi du mainteneur Debian (DM) "
+"donné sur ftp-master.debian.org et les analyse de façon lisible. L’outil "
+"permet de rechercher par nom de DM, parrain (la personne ayant octroyé les "
+"droits) et par paquet."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:60
+msgid "B<--dmfile=>I<dm_url>, B<-d> I<dm_url>"
+msgstr "B<--dmfile=>I<url_dm>, B<-d> I<url_dm>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:62
+msgid ""
+"Retrieve the DM permission file from the supplied URL. When this option is "
+"not present, the default value I<https://ftp-master.debian.org/dm.txt> is "
+"used."
+msgstr ""
+"Récupérer le fichier de droits de DM depuis l’URL fournie. Quand cette "
+"option n’est pas présente, la valeur par défaut I<https://ftp-master.debian."
+"org/dm.txt> est utilisée."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:67
+msgid "Display an usage summary and exit."
+msgstr "Afficher une description de l'utilisation et quitter."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:69
+msgid "B<--keyring=>I<keyring>, B<-s> I<keyring>"
+msgstr "B<--keyring=>I<trousseau>, B<-s> I<trousseau>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:71
+msgid ""
+"Use the supplied GnuPG keyrings to look-up GPG fingerprints from the DM "
+"permission file. When not present, the default Debian Developer and "
+"Maintainer keyrings are used (I</usr/share/keyrings/debian-keyring.gpg> and "
+"I</usr/share/keyrings/debian-maintainers.gpg>, installed by the I<debian-"
+"keyring> package)."
+msgstr ""
+"Utiliser les trousseaux GnuPG fournis pour rechercher les empreintes GPG du "
+"fichier de droits de DM. En absence, les trousseaux de développeurs et "
+"mainteneurs Debian par défaut sont utilisés (I</usr/share/keyrings/debian-"
+"keyring.gpg> et I</usr/share/keyrings/debian-maintainers.gpg>, installés par "
+"le paquet I<debian-keyring>)."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:77
+msgid "Separate keyrings with a colon \":\"."
+msgstr "Séparez les trousseaux par un deux-points « : »."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:79
+msgid "B<--search=>I<search_type>, B<-s> I<search_type>"
+msgstr "B<--search=>I<type_de_recherche>, B<-s> I<type_de_recherche>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:81
+msgid ""
+"Modify the look-up behavior. This influences the interpretation of the "
+"I<query> argument. Supported search types are:"
+msgstr ""
+"Modifier le comportement de recherche. Cela influence l’interprétation de "
+"l’argument I<requête>. Les types de recherche possibles sont :"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:88
+msgid ""
+"Search for a source package name. This is also the default when B<--search> "
+"is omitted. Since package names are unique, this will return given ACLs - "
+"if any - for a single package."
+msgstr ""
+"Rechercher un nom de paquet source. C’est aussi le comportement par défaut "
+"quand B<--search> est omis. Puisque les noms de paquets sont uniques, cela "
+"renverra les listes de contrôle d’accès – s’il y en a – pour un seul paquet."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:92
+msgid "B<uid>"
+msgstr "B<uid>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:94
+msgid ""
+"Search for a Debian Maintainer. This should be (a fraction of) a name. It "
+"will return all ACLs assigned to matching maintainers."
+msgstr ""
+"Rechercher un mainteneur Debian. Cela devrait être un(e partie de) nom. Cela "
+"renverra toutes les listes de contrôle d’accès associées aux mainteneurs "
+"correspondants."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:97
+msgid "B<sponsor>"
+msgstr "B<sponsor>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:99
+msgid ""
+"Search for a sponsor (i.e. a Debian Developer) who granted DM permissions. "
+"This will return all ACLs given by the supplied developer."
+msgstr ""
+"Rechercher un parrain (c’est-à-dire un développeur Debian) qui a octroyé des "
+"droits de DM. Cela renverra toutes les listes de contrôle d’accès données "
+"par le développeur indiqué."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:102
+msgid "Note that this is an expensive operation which may take some time."
+msgstr ""
+"Remarquez qu’il s’agit d’une opération coûteuse qui pourrait prendre un peu "
+"de temps."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:106
+msgid "I<query>"
+msgstr "I<requête>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:108
+msgid ""
+"A case sensitive argument to be looked up in the ACL permission file. The "
+"exact interpretation of this argument is dependent by the B<--search> "
+"argument."
+msgstr ""
+"Un argument sensible à la casse à rechercher dans le fichier de droits de "
+"liste de contrôle d’accès. L’interprétation exacte de cet argument dépend de "
+"l’argument de B<--search>."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:111
+msgid "This argument can be repeated."
+msgstr "Cet argument peut être répété."
+
+#. type: =head1
+#: ../scripts/who-permits-upload.pl:115
+msgid "EXIT VALUE"
+msgstr "VALEUR DE RETOUR"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:121
+msgid "Success"
+msgstr "Réussite"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:125
+msgid "An error occurred"
+msgstr "Une erreur s'est produite"
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:127
+msgid "2Z<>"
+msgstr "2Z<>"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:129
+msgid "The command line was not understood"
+msgstr "La ligne de commande n’a pas été comprise"
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:137
+msgid "who-permits-upload --search=sponsor arno@debian.org"
+msgstr "who-permits-upload --search=sponsor arno@debian.org"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:139
+msgid ""
+"Search for all DM upload permissions given by the UID \"arno@debian.org\". "
+"Note, that only primary UIDs will match."
+msgstr ""
+"Rechercher tous les droits de DM donnés par l’identifiant utilisateur "
+"« arno@debian.org ». Remarquez que seuls les identifiants utilisateur "
+"primaires correspondront."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:142
+msgid "who-permits-upload -s=sponsor \"Arno Töll\""
+msgstr "who-permits-upload -s=sponsor \"Arno Töll\""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:144
+msgid "Same as above, but use a full name instead."
+msgstr "Comme précédemment, mais en utilisant un nom complet à la place."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:146
+msgid "who-permits-upload apache2"
+msgstr "who-permits-upload apache2"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:148
+msgid "Look up who gave upload permissions for the apache2 source package."
+msgstr ""
+"Rechercher qui a donné les droits d’envoi pour le paquet source apache2."
+
+#. type: =item
+#: ../scripts/who-permits-upload.pl:150
+msgid "who-permits-upload --search=uid \"Paul Tagliamonte\""
+msgstr "who-permits-upload --search=uid \"Paul Tagliamonte\""
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:152
+msgid "Look up all DM upload permissions given to \"Paul Tagliamonte\"."
+msgstr ""
+"Rechercher tous les droits d’envoi de DM donnés à « Paul Tagliamonte »."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:158
+msgid ""
+"B<who-permits-upload> was written by Arno Töll <arno@debian.org> and is "
+"licensed under the terms of the General Public License (GPL) version 2 or "
+"later."
+msgstr ""
+"B<who-permits-upload> a été écrit par Arno Töll E<lt>arno@debian.orgE<gt> et "
+"est distribué sous licence publique générale (GPL), version 2 ou ultérieure."
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:163
+msgid "B<gpg>(1), B<who-uploads>(1)"
+msgstr "B<gpg>(1), B<who-uploads>(1)"
+
+#. type: textblock
+#: ../scripts/who-permits-upload.pl:165
+msgid ""
+"S<I<https://lists.debian.org/debian-devel-announce/2012/09/msg00008.html>>"
+msgstr ""
+"S<I<https://lists.debian.org/debian-devel-announce/2012/09/msg00008.html>>"
+
+#. type: TH
+#: ../scripts/wnpp-alert.1:1
+#, no-wrap
+msgid "WNPP-ALERT"
+msgstr "WNPP-ALERT"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:4
+msgid "wnpp-alert - check for installed packages up for adoption or orphaned"
+msgstr ""
+"wnpp-alert - Rechercher les paquets installés offerts à l'adoption ou "
+"orphelins"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:6
+msgid "B<wnpp-alert >[B<--diff>] [I<package> ...]"
+msgstr "B<wnpp-alert> [B<--diff>] [I<paquet> ...]"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:8
+msgid "B<wnpp-alert --help>|B<--version>"
+msgstr "B<wnpp-alert --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:14
+msgid ""
+"B<wnpp-alert> downloads the lists of packages which have been orphaned (O), "
+"are up for adoption (RFA), or the maintainer has asked for help (RFH) from "
+"the WNPP webpages, and then outputs a list of packages installed on the "
+"system, or matching the listed packages, which are in those lists."
+msgstr ""
+"B<wnpp-alert> télécharge la liste des paquets orphelins (O), la liste des "
+"paquets offerts à l'adoption (RFA), ou la liste des paquets dont le "
+"responsable a demandé de l'aide (RFH) depuis les pages web WNPP, puis "
+"affiche la liste des paquets installés sur le système, ou qui correspondent "
+"aux paquets fournis, qui se trouvent dans ces listes."
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:17
+msgid ""
+"Note that WNPP, and therefore B<wnpp-alert>'s output, is source package "
+"based."
+msgstr ""
+"Remarquez que WNPP, et donc la sortie de B<wnpp-alert>, est basé sur des "
+"paquets source."
+
+#. type: TP
+#: ../scripts/wnpp-alert.1:18
+#, no-wrap
+msgid "B<--diff>, B<-d>"
+msgstr "B<--diff>, B<-d>"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:23
+msgid ""
+"If the I<~/.devscripts_cache> directory exists, compare the output of B<wnpp-"
+"alert> to the previous output (cached in the file I<wnpp-diff>) and output "
+"the differences."
+msgstr ""
+"Si le répertoire I<~/.devscripts_cache> existe, comparer la sortie de B<wnpp-"
+"alert> à la sortie précédente (en cache dans le fichier I<wnpp-diff>) et "
+"afficher les différences."
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:31 ../scripts/wnpp-check.1:25
+msgid "https://www.debian.org/devel/wnpp"
+msgstr "https://www.debian.org/devel/wnpp"
+
+#. type: Plain text
+#: ../scripts/wnpp-alert.1:34
+msgid ""
+"B<wnpp-alert> was written by Arthur Korn E<lt>arthur@korn.chE<gt> and "
+"modified by Julian Gilbey E<lt>jdg@debian.orgE<gt> for the devscripts "
+"package. It is in the public domain."
+msgstr ""
+"B<wnpp-alert> a été écrit par Arthur Korn E<lt>arthur@korn.chE<gt> et "
+"modifié par Julian Gilbey E<lt>jdg@debian.orgE<gt> pour le paquet "
+"devscripts. Il se trouve dans le domaine public."
+
+#. type: TH
+#: ../scripts/wnpp-check.1:1
+#, no-wrap
+msgid "WNPP-CHECK"
+msgstr "WNPP-CHECK"
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:4
+msgid ""
+"wnpp-check - check if a package is being packaged or if this has been "
+"requested"
+msgstr ""
+"wnpp-check - Vérifier si un paquet est en cours de création ou si sa "
+"création a été demandée"
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:6
+msgid "B<wnpp-check >I<package >..."
+msgstr "B<wnpp-check> I<paquet> ..."
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:8
+msgid "B<wnpp-check --help>|B<--version>"
+msgstr "B<wnpp-check --help>|B<--version>"
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:13
+msgid ""
+"B<wnpp-check> downloads the lists of packages which are listed as being "
+"packaged (ITPed) or for which a package has been requested (RFPed) from the "
+"WNPP website and lists any packages supplied on the command line which "
+"appear in those lists."
+msgstr ""
+"B<wnpp-check> télécharge la liste des paquets en cours de création (ITP) et "
+"la liste des paquets dont la création a été demandée (RFP) sur le site web "
+"WNPP, et liste les paquets qui sont fournis sur la ligne de commande et "
+"apparaissent dans ces listes."
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:16
+msgid ""
+"Note that WNPP, and therefore B<wnpp-check>'s output, is source package "
+"based."
+msgstr ""
+"Remarquez que WNPP, et donc la sortie de B<wnpp-check>, est basé sur des "
+"paquets source."
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:29
+msgid "None of the packages supplied has an open ITP or RFP"
+msgstr "Aucun des paquets fournis n'a d'ITP ou de RFP ouvert."
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:33
+msgid ""
+"Either an error occurred or at least one package supplied has an open ITP or "
+"RFP"
+msgstr ""
+"Une erreur est survenue ou au moins un des paquets a un bogue ITP ou RFP "
+"ouvert."
+
+#. type: Plain text
+#: ../scripts/wnpp-check.1:39
+msgid ""
+"B<wnpp-check> was written by David Paleino E<lt>d.paleino@gmail.comE<gt>; "
+"this man page was written by Adam D. Barratt E<lt>adam@adam-barratt.org."
+"ukE<gt> for the devscripts package. B<wnpp-check> was originally based on "
+"B<wnpp-alert>, which was written by Arthur Korn E<lt>arthur@korn.chE<gt> and "
+"modified by Julian Gilbey E<lt>jdg@debian.orgE<gt> for the devscripts "
+"package. Both scripts are in the public domain."
+msgstr ""
+"B<wnpp-check> a été écrit par David Paleino E<lt>d.paleino@gmail.comE<gt> ; "
+"cette page de manuel a été écrite par Adam D. Barratt E<lt>adam@adam-barratt."
+"org.ukE<gt> pour le paquet devscripts. B<wnpp-check> a été créé à partir de "
+"B<wnpp-alert>, qui a été écrit par Arthur Korn E<lt>arthur@korn.chE<gt> et "
+"modifié par Julian Gilbey E<lt>jdg@debian.orgE<gt> pour le paquet "
+"devscripts. Les deux scripts sont dans le domaine publique."
+
+#. type: TH
+#: ../doc/wrap-and-sort.1:15
+#, no-wrap
+msgid "WRAP-AND-SORT"
+msgstr "WRAP-AND-SORT"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:18
+msgid ""
+"wrap-and-sort - wrap long lines and sort items in Debian packaging files"
+msgstr ""
+"wrap-and-sort - Couper les lignes longues et trier les objets des fichiers "
+"d'empaquetage"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:21
+msgid "B<wrap-and-sort> [I<options>]"
+msgstr "B<wrap-and-sort> [I<options>]"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:28
+msgid ""
+"B<wrap-and-sort> wraps the package lists in Debian control files. By default "
+"the lists will only split into multiple lines if the entries are longer than "
+"the maximum line length limit of 79 characters. B<wrap-and-sort> sorts the "
+"package lists in Debian control files and all I<.install> files. Beside that "
+"B<wrap-and-sort> removes trailing spaces in these files."
+msgstr ""
+"B<wrap-and-sort> renvoie à la ligne les listes de paquets des fichiers de "
+"contrôle Debian. Par défaut, les listes ne seront coupées que si les entrées "
+"sont plus longues que la taille maximale de ligne, c’est-à-dire "
+"79 caractères. B<wrap-and-sort> trie la liste de paquets des fichiers de "
+"contrôle Debian et de tous les fichiers I<.install>. De plus, B<wrap-and-"
+"sort> supprime les espaces de fin de ligne de ces fichiers."
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:32
+msgid ""
+"This script should be run in the root of a Debian package tree. It searches "
+"for I<control>, I<control*.in>, I<copyright>, I<copyright.in>, I<install>, "
+"and I<*.install> in the I<debian> directory."
+msgstr ""
+"Cette commande devrait être exécutée depuis la racine d'un paquet source "
+"Debian. Elle cherche les fichiers I<control>, I<control*.in>, I<copyright>, "
+"I<copyright.in>, I<install> et I<*.install> dans le répertoire I<debian>."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:37
+#, no-wrap
+msgid "B<-a>, B<--wrap-always>"
+msgstr "B<-a>, B<--wrap-always>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:41
+msgid ""
+"Wrap all package lists in the Debian I<control> file even if they do not "
+"exceed the line length limit and could fit in one line."
+msgstr ""
+"Utiliser une ligne par paquet dans le fichier I<control> de Debian, même si "
+"la liste ne dépasse pas la taille limite et pourrait tenir sur une ligne."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:41
+#, no-wrap
+msgid "B<-s>, B<--short-indent>"
+msgstr "B<-s>, B<--short-indent>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:45
+msgid ""
+"Only indent wrapped lines by one space (default is in-line with the field "
+"name)."
+msgstr ""
+"N'indenter les lignes coupées que d'une espace (par défaut, elle sont "
+"alignées avec le nom du champ)."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:45
+#, no-wrap
+msgid "B<-b>, B<--sort-binary-packages>"
+msgstr "B<-b>, B<--sort-binary-packages>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:48
+msgid "Sort binary package paragraphs by name."
+msgstr "Trier les paragraphes du paquet binaire par nom."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:48
+#, no-wrap
+msgid "B<-k>, B<--keep-first>"
+msgstr "B<-k>, B<--keep-first>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:54
+msgid ""
+"When sorting binary package paragraphs, leave the first one at the top. "
+"Unqualified B<debhelper>(7) configuration files are applied to the first "
+"package."
+msgstr ""
+"Lors du tri des paragraphes du paquet binaire, laisser le premier en haut. "
+"Les fichiers de configuration de B<debhelper>(7) sans condition sont "
+"appliqués au premier paquet."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:54
+#, no-wrap
+msgid "B<-n>, B<--no-cleanup>"
+msgstr "B<-n>, B<--no-cleanup>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:57
+msgid "Do not remove trailing whitespaces."
+msgstr "Ne pas supprimer les blancs."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:57
+#, no-wrap
+msgid "B<-t>, B<--trailing-comma>"
+msgstr "B<-t>, B<--trailing-comma>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:62
+msgid ""
+"Add a trailing comma at the end of the sorted fields. This minimizes future "
+"differences in the VCS commits when additional dependencies are appended or "
+"removed."
+msgstr ""
+"Ajouter une virgule finale pour terminer les champs ordonnés. Cela réduira "
+"les prochaines différences, dans les systèmes de suivi de version, lors de "
+"l'ajout ou la suppression de dépendances."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:62
+#, no-wrap
+msgid "B<-d >I<path>, B<--debian-directory=>I<path>"
+msgstr "B<-d> I<chemin>, B<--directory=>I<chemin>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:65
+msgid "Location of the I<debian> directory (default: I<./debian>)."
+msgstr "Emplacement du répertoire I<debian> (I<./debian> par défaut)."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:65
+#, no-wrap
+msgid "B<-f >I<file>, B<--file=>I<file>"
+msgstr "B<-f> I<fichier>, B<--file=>I<fichier>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:70
+msgid ""
+"Wrap and sort only the specified I<file>. You can specify this parameter "
+"multiple times. All supported files will be processed if no files are "
+"specified."
+msgstr ""
+"Ne couper et trier que le I<fichier> indiqué. Vous pouvez utiliser ce "
+"paramètre plusieurs fois. Tous les fichiers pris en charge seront traités si "
+"aucun fichier n'est indiqué."
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:73
+msgid "Print all files that are touched."
+msgstr "Afficher tous les fichiers modifiés."
+
+#. type: TP
+#: ../doc/wrap-and-sort.1:73
+#, no-wrap
+msgid "B<--max-line-length=>I<max_line_length>"
+msgstr "B<--max-line-length=>I<taille_maximale_ligne>"
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:78
+msgid ""
+"Set the maximum allowed line length. Package lists in the Debian I<control> "
+"file that exceed this length limit will be wrapped. The default maximum line "
+"length is 79 characters."
+msgstr ""
+"Définir la taille maximale de ligne permise. Les listes de paquet dans le "
+"fichier I<control> de Debian qui dépassent cette taille limite seront "
+"ajustées. Par défaut, la taille maximale de ligne est de 79 caractères."
+
+#. type: Plain text
+#: ../doc/wrap-and-sort.1:82
+msgid ""
+"B<wrap-and-sort> and this manpage have been written by Benjamin Drung "
+"E<lt>bdrung@debian.orgE<gt>."
+msgstr ""
+"B<wrap-and-sort> et cette page de manuel ont été écrites par Benjamin Drung "
+"E<lt>I<bdrung@debian.org>E<gt>."
+
+#. type: TH
+#: ../scripts/devscripts.conf.5:1
+#, no-wrap
+msgid "DEVSCRIPTS.CONF"
+msgstr "DEVSCRIPTS.CONF"
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:4
+msgid "devscripts.conf - configuration file for the devscripts package"
+msgstr "devscripts.conf - Fichier de configuration du paquet devscripts"
+
+# NOTE: presque identique
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:9
+msgid ""
+"The B<devscripts> package provides a collection of scripts which may be of "
+"use to Debian developers and others wishing to build Debian packages. Many "
+"of these have options which can be configured on a system-wide and per-user "
+"basis."
+msgstr ""
+"Le paquet B<devscripts> fournit un ensemble de scripts qui peuvent être "
+"utiles aux développeurs Debian et à tous ceux qui souhaitent construire des "
+"paquets Debian. Beaucoup d'entre eux ont des options qui peuvent être "
+"configurées dans des fichiers de configuration au niveau du système ou par "
+"utilisateur."
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:15
+msgid ""
+"Every script in the B<devscripts> package which makes use of values from "
+"these configuration files describes the specific settings recognised in its "
+"own manpage. (For a list of the scripts, either see I</usr/share/doc/"
+"devscripts/README.gz> or look at the output of I<dpkg -L devscripts | grep /"
+"usr/bin>.)"
+msgstr ""
+"Tous les scripts du paquet B<devscripts> qui utilisent des valeurs de ces "
+"fichiers de configuration décrivent les paramètres reconnus par chacun "
+"d'entre eux dans leurs pages de manuel respectives. (Consultez I</usr/share/"
+"doc/devscripts/README.gz> pour avoir une liste des scripts ou utilisez la "
+"sortie de I<dpkg -L devscripts | grep /usr/bin>.)"
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:24
+msgid ""
+"The two configuration files are I</etc/devscripts.conf> for system-wide "
+"defaults and I<~/.devscripts> for per-user settings. They are written with "
+"B<bash>(1) syntax, but should only have comments and simple variable "
+"assignments in them; they are both sourced (if present) by many of the "
+"B<devscripts> scripts. Variables corresponding to simple switches should "
+"have one of the values I<yes> and I<no>; any other setting is regarded as "
+"equivalent to the default setting."
+msgstr ""
+"Les deux fichiers de configuration sont I</etc/devscripts.conf> au niveau "
+"système et I<~/.devscripts> pour les paramètres propres à un utilisateur. "
+"Ils sont écrits dans la syntaxe B<bash>(1), mais ne doivent comporter que "
+"des commentaires ou des affectations de variable simples. Ils sont évalués "
+"tous les deux par beaucoup des scripts du paquet B<devscripts>. Les "
+"variables booléennes peuvent prendre pour valeurs I<yes> (oui) ou I<no> "
+"(non) ; toute autre valeur sera interprétée comme la valeur par défaut."
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:28
+msgid ""
+"All variable names are written in uppercase, and begin with the script "
+"name. Package-wide variables begin with \"DEVSCRIPTS\", and are listed "
+"below, as well as in the relevant manpages."
+msgstr ""
+"Toutes les variables sont écrites en majuscules, et commencent par le nom du "
+"script. Les variables globales au paquet commencent par « DEVSCRIPTS », et "
+"sont listées ci-dessous et dans les pages de manuel appropriées."
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:36
+msgid ""
+"For a list of all of the available options variables, along with their "
+"default settings, see the example configuration file I</usr/share/doc/"
+"devscripts/devscripts.conf.ex>. This is copied to I</etc/devscripts.conf> "
+"when the B<devscripts> package is first installed. Information about "
+"configuration options introduced in newer versions of the package will be "
+"appended to I</etc/devscripts.conf> when the package is upgraded."
+msgstr ""
+"Pour une liste de toutes les variables disponibles, avec leur valeur par "
+"défaut, veuillez consulter l'exemple de fichier de configuration I</usr/"
+"share/doc/devscripts/devscripts.conf.ex>. Celui-ci est copié dans I</etc/"
+"devscripts.conf> quand le paquet B<devscripts> est installé pour la première "
+"fois. Les informations concernant les options ajoutées dans les nouvelles "
+"versions du paquet sont ajoutées à la fin de I</etc/devscripts.conf> quand "
+"le paquet est mis à jour."
+
+# NOTE: et --noconf ?
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:40
+msgid ""
+"Every script which reads the configuration files can be forced to ignore "
+"them by using B<--no-conf> as the I<first> command-line option."
+msgstr ""
+"Il est possible d'empêcher la lecture des fichiers de configuration, pour "
+"les scripts qui les utilisent, en utilisant l'option B<--no-conf> comme "
+"I<première> option de la ligne de commande."
+
+#. type: SH
+#: ../scripts/devscripts.conf.5:40
+#, no-wrap
+msgid "PACKAGE-WIDE VARIABLES"
+msgstr "VARIABLES GLOBALES AU PAQUET"
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:42
+msgid "The currently recognised package-wide variables are:"
+msgstr "Les options globales au paquet actuellement reconnues sont :"
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:54
+msgid ""
+"These variables control scripts which change directory to find a I<debian/"
+"changelog> file or suchlike, and some other miscellaneous cases. In order "
+"to prevent unwanted, even possibly dangerous, behaviour, these variables "
+"control when actions will be performed. The scripts which currently make "
+"use of these variables are: B<debc>, B<debchange>/B<dch>, B<debclean>, "
+"B<debi>, B<debrelease>, B<debuild> and B<uscan>, but this list may change "
+"with time (and I may not remember to update this manpage). Please see the "
+"manpages of individual scripts for details of the specific behaviour for "
+"each script."
+msgstr ""
+"Ces variables permettent de contrôler les scripts qui changent de répertoire "
+"afin de trouver un fichier I<debian/changelog> ou un fichier y ressemblant, "
+"et quelques autres cas. Pour empêcher des comportements indésirables, et "
+"pouvant être dangereux, ces variables contrôlent le moment où les actions "
+"sont effectuées. Les scripts qui utilisent actuellement ces variables sont : "
+"B<debc>, B<debchange>/B<dch>, B<debclean>, B<debi>, B<debrelease>, "
+"B<debuild> et B<uscan>, mais cette liste peut être amenée à être modifiée "
+"(et il se peut que cette page de manuel ne soit pas mise à jour). Veuillez "
+"consulter les pages de manuel des différents scripts pour les détails des "
+"comportements de ceux-ci."
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:58
+msgid "B<devscripts>(1) and I</usr/share/doc/devscripts/README.gz.>"
+msgstr "B<devscripts>(1) et I</usr/share/doc/devscripts/README.gz>."
+
+#. type: Plain text
+#: ../scripts/devscripts.conf.5:60
+msgid ""
+"This manpage was written for the B<devscripts> package by the package "
+"maintainer Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+msgstr ""
+"Cette page de manuel a été écrite pour le paquet B<devscripts> par le "
+"responsable du paquet, Julian Gilbey E<lt>jdg@debian.orgE<gt>."
+
+#~ msgid ""
+#~ "As a special case, the unofficial B<gift> tag name is supported in "
+#~ "addition to official tag names. B<gift> is used as a shorthand for the "
+#~ "B<gift> usertag; see L<https://wiki.debian.org/qa.debian.org/GiftTag>. "
+#~ "Adding/removing the B<gift> tag will add/remove the B<gift> usertag, "
+#~ "belonging to the \"debian-qa@lists.debian.org\" user."
+#~ msgstr ""
+#~ "Comme cas particulier, l'étiquette non officielle B<gift> est prise en "
+#~ "charge en plus des étiquettes officielles. B<gift> est utilisée comme "
+#~ "raccourci pour l'étiquette utilisateur (« usertag ») B<gift> ; consultez "
+#~ "L<https://wiki.debian.org/qa.debian.org/GiftTag>. L'ajout ou la "
+#~ "suppression de l'étiquette B<gift> ajoutera ou supprimera l'étiquette "
+#~ "utilisateur B<gift>, pour l'utilisateur « debian-qa@lists.debian.org »."
+
+#~ msgid "B<--diff>"
+#~ msgstr "B<--diff>"
+
+#, fuzzy
+#~| msgid ""
+#~| "# Similarly, the upstream part of the Debian version number can be\n"
+#~| "# mangled:\n"
+#~| "opts=dversionmangle=s/\\e.dfsg\\e.\\ed+$// \\e\n"
+#~| " http://some.site.org/some/path/foobar-(.+)\\e.tar\\e.gz\n"
+#~ msgid ""
+#~ "# If the package is repacked using the Files-Excluded field in\n"
+#~ "# debian/copyright, the +dfsg suffix can instead be added with:\n"
+#~ "opts=uversionmangle=s/$/+dfsg/ \\e\n"
+#~ " http://some.site.org/some/path/foobar-(.+)\\e.tar\\e.gz\n"
+#~ msgstr ""
+#~ "# De manière similaire, la partie de la version amont du numéro de\n"
+#~ "# version Debian peut être modifiée :\n"
+#~ "opts=dversionmangle=s/\\e.dfsg\\e.\\ed+$// \\e\n"
+#~ " http://un.site.org/un/chemin/toto-(.+)\\e.tar\\e.gz\n"
+
+#~ msgid ""
+#~ "Make orig.tar.gz symlinks to any downloaded files if their extensions are "
+#~ "I<.tar.gz> or I<.tgz>. This is also handled for orig.tar.bz2 (for "
+#~ "upstream I<.tar.bz2>, I<.tbz>, and I<.tbz2>), orig.tar.lzma (for upstream "
+#~ "I<.tar.lzma>, I<.tlz>, I<.tlzm>, and I<.tlzma>), and orig.tar.xz (for "
+#~ "upstream I<.tar.xz> and I<.txz>). (This is the default behaviour.)"
+#~ msgstr ""
+#~ "Faire des liens symboliques orig.tar.gz vers les fichiers téléchargés "
+#~ "s'ils ont des extensions I<.tar.gz> ou I<.tgz>. Cela fonctionne aussi "
+#~ "pour orig.tar.bz2 (pour les fichiers amont en I<.tar.bz2>, I<.tbz> et I<."
+#~ "tbz2>), orig.tar.lzma (pour les fichiers amont en I<.tar.lzma>, I<.tlz>, "
+#~ "I<.tlzm> et I<.tlzma>) et orig.tar.xz (pour les fichiers amont en I<.tar."
+#~ "xz> et I<.txz>). C'est le comportement par défaut."
+
+#~ msgid ""
+#~ "Instead of symlinking, rename the downloaded files to their Debian I<orig."
+#~ "tar.gz>, I<orig.tar.bz2>, I<orig.tar.lzma>, or I<orig.tar.xz> names as "
+#~ "described above."
+#~ msgstr ""
+#~ "Au lieu de créer des liens symboliques, renommer les fichiers téléchargés "
+#~ "avec leur nom Debian I<orig.tar.gz>, I<orig.tar.bz2>, I<orig.tar.lzma> ou "
+#~ "I<orig.tar.xz> conformément à la description ci-dessus."
+
+#~ msgid "B<--repack-compression> [ B<gzip> | B<bzip2> | B<lzma> | B<xz> ]"
+#~ msgstr "B<--repack-compression> [ B<gzip> | B<bzip2> | B<lzma> | B<xz> ]"
+
+#~ msgid "Don't make these symlinks and don't rename the files."
+#~ msgstr "Ne pas créer ces liens symboliques et ne pas renommer les fichiers."
+
+#~ msgid "B<--repack-compression> I<comp>"
+#~ msgstr "B<--repack-compression> I<comp>"
+
+#~ msgid ""
+#~ "# For GitHub projects you can use the tags page:\n"
+#~ "https://github.com/E<lt>userE<gt>/E<lt>projectE<gt>/tags .*/(\\ed[\\ed"
+#~ "\\e.]*)\\e.tar\\e.gz\n"
+#~ msgstr ""
+#~ "# Pour les projets GitHub, la page des marques peut être utilisée :\n"
+#~ "https://github.com/E<lt>utilisateurE<gt>/E<lt>projetE<gt>/tags .*/"
+#~ "(\\ed[\\ed\\e.]*)\\e.tar\\e.gz\n"
+
+#~ msgid ""
+#~ "Indicate that a I<bug> was found to exist in a particular package version."
+#~ msgstr ""
+#~ "Indiquer qu'un I<bogue> a été découvert dans une version particulière "
+#~ "d'un paquet."
+
+#~ msgid "B<--keyring=>I<file>, B<-s> I<file>"
+#~ msgstr "B<--keyring=>I<trousseau>, B<-s> I<trousseau>"
+
+#~ msgid "B<who-uploads>(1), B<gpg>(1)"
+#~ msgstr "B<gpg>(1), B<who-uploads>(1)"
--- /dev/null
+
+include ../Makefile.common
+DESTDIR =
+
+define \n
+
+
+endef
+
+VERSION_FILE = ../version
+VERSION := $(shell cat $(VERSION_FILE))
+
+PL_FILES := $(wildcard *.pl)
+SH_FILES = $(wildcard *.sh)
+LIBS = libvfork.so.0
+CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS)
+CFLAGS := $(shell dpkg-buildflags --get CFLAGS)
+CFLAGS += -std=c99
+LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
+CWRAPPERS = debpkg-wrapper
+SCRIPTS = $(patsubst %.pl,%,$(PL_FILES)) $(patsubst %.sh,%,$(SH_FILES))
+COMPL_FILES := $(wildcard *.bash_completion)
+COMPLETION = $(patsubst %.bash_completion,devscripts.%,$(COMPL_FILES))
+
+GEN_MAN1S += devscripts.1 mk-origtargz.1
+
+BINDIR = /usr/bin
+LIBDIR = /usr/lib/devscripts
+BIN_LIBDIR = /usr/lib/devscripts
+
+all: $(SCRIPTS) $(GEN_MAN1S) $(LIBS) $(CWRAPPERS) $(COMPLETION)
+
+$(VERSION_FILE):
+ $(MAKE) -C .. version
+
+%: %.sh
+
+debchange: debchange.pl $(VERSION_FILE)
+ cp $< $@
+ sed -i "s/###VERSION###/$(VERSION)/" $@
+ifeq ($(shell dpkg-vendor --query Vendor),Ubuntu)
+# On Ubuntu always default to targeting the release that it's built on,
+# not the current devel release, since its primary use on stable releases
+# will be for preparing PPA uploads.
+ sed -i 's/get_ubuntu_devel_distro()/"$(shell lsb_release -cs)"/' $@
+endif
+ perl -I.. -c $@
+
+%.tmp: %.sh $(VERSION_FILE)
+ sed -e "s/###VERSION###/$(VERSION)/" $< > $@
+ bash -n $@
+%.tmp: %.pl $(VERSION_FILE)
+ sed -e "s/###VERSION###/$(VERSION)/" $< > $@
+ perl -I.. -c $@
+%: %.tmp
+ cp $< $@
+ chmod +x $@
+
+%.1: %.pl
+ podchecker $<
+ pod2man --utf8 --center=" " --release="Debian Utilities" $< > $@
+%.1: %.pod
+ podchecker $<
+ pod2man --utf8 --center=" " --release="Debian Utilities" $< > $@
+%.1: %.dbk
+ xsltproc --nonet -o $@ \
+ /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl $<
+
+# There is a slight chance this gets called twice, once here from here and once
+# from ../po4a/Makefile. Treat files with care.
+PID := $(shell echo $$$$-$$PPID)
+devscripts.1: devscripts.1.in
+ cat $< > $@.$(PID)
+ perl ../debian/genmanpage.pl >> $@.$(PID)
+ mv $@.$(PID) $@
+
+devscripts.%: %.bash_completion
+ cp $< $@
+
+libvfork.o: libvfork.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) -fPIC -D_REENTRANT -c $<
+libvfork.so.0: libvfork.o
+ $(CC) $(LDFLAGS) -shared $< -lc -Wl,-soname -Wl,libvfork.so.0 -o $@
+
+clean:
+ python3 setup.py clean -a
+ find -name '*.pyc' -delete
+ find -name __pycache__ -delete
+ rm -rf devscripts.egg-info
+ rm -f $(SCRIPTS) $(patsubst %,%.tmp,$(SCRIPTS)) \
+ $(GEN_MAN1S) $(SCRIPT_LIBS) $(CWRAPPERS) \
+ libvfork.o libvfork.so.0 $(COMPLETION)
+
+test:
+ $(foreach python,$(shell py3versions -r ../debian/control),$(python) setup.py test$(\n))
+
+install: all
+ python3 setup.py install --root="$(DESTDIR)" --no-compile --install-layout=deb
+ install -dD $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR)
+ cp $(SCRIPTS) $(DESTDIR)$(BINDIR)
+ ln -sf edit-patch $(DESTDIR)$(BINDIR)/add-patch
+ cp $(LIBS) $(DESTDIR)$(LIBDIR)
+ install -dD $(DESTDIR)/etc/bash_completion.d
+ cp $(COMPLETION) $(DESTDIR)/etc/bash_completion.d
+ # Special treatment for debpkg
+ install -dD $(DESTDIR)$(PERLMOD_DIR)
+ mv $(DESTDIR)$(BINDIR)/debpkg $(DESTDIR)$(PERLMOD_DIR)
+ cp debpkg-wrapper $(DESTDIR)$(BINDIR)/debpkg
+
+.PHONY: test
--- /dev/null
+.TH ANNOTATE-OUTPUT 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+annotate-output \- annotate program output with time and stream
+.SH SYNOPSIS
+\fBannotate\-output\fR [\fIoptions\fR] \fIprogram\fR [\fIargs\fR ...]
+.SH DESCRIPTION
+\fBannotate\-output\fR will execute the specified program, while
+prepending every line with the current time and O for stdout and E for
+stderr.
+
+.SH OPTIONS
+.TP
+\fB+FORMAT\fR
+Controls the timestamp format, as per \fBdate\fR(1). Defaults to
+"%H:%M:%S".
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Display a help message and exit successfully.
+
+.SH EXAMPLE
+
+.nf
+$ annotate-output make
+21:41:21 I: Started make
+21:41:21 O: gcc \-Wall program.c
+21:43:18 E: program.c: Couldn't compile, and took me ages to find out
+21:43:19 E: collect2: ld returned 1 exit status
+21:43:19 E: make: *** [all] Error 1
+21:43:19 I: Finished with exitcode 2
+.fi
+
+.SH BUGS
+Since stdout and stderr are processed in parallel, it can happen that
+some lines received on stdout will show up before later-printed stderr
+lines (and vice-versa).
+
+This is unfortunately very hard to fix with the current annotation
+strategy. A fix would involve switching to PTRACE'ing the process.
+Giving nice a (much) higher priority over the executed program could
+however cause this behaviour to show up less frequently.
+
+The program does not work as well when the output is not linewise. In
+particular, when an interactive program asks for input, the question
+might not be shown until after you have answered it. This will give
+the impression that the annotated program has hung, while it has not.
+
+.SH "SEE ALSO"
+\fBdate\fR(1)
+
+.SH SUPPORT
+This program is community-supported (meaning: you'll need to fix it
+yourself). Patches are however appreciated, as is any feedback
+(positive or negative).
+
+.SH AUTHOR
+\fBannotate-output\fR was written by Jeroen van Wolffelaar
+<jeroen@wolffelaar.nl>. This manpage comes under the same copyright as
+annotate-output itself, read /usr/bin/annotate-output (or wherever
+you install it) for the details.
--- /dev/null
+#!/bin/bash
+# this script was downloaded from:
+# https://jeroen.a-eskwadraat.nl/sw/annotate
+# and is part of devscripts ###VERSION###
+
+# Executes a program annotating the output linewise with time and stream
+# Version 1.2
+
+# Copyright 2003, 2004 Jeroen van Wolffelaar <jeroen@wolffelaar.nl>
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+progname=$(basename $0)
+
+addtime ()
+{
+ while IFS= read -r line; do
+ printf "%s %s: %s\n" "$(date "${FMT}")" "$1" "$line"
+ done
+ if [ ! -z "$line" ]; then
+ printf "%s %s: %s" "$(date "${FMT}")" "$1" "$line"
+ fi
+}
+
+usage ()
+{
+ echo \
+"Usage: $progname [options] program [args ...]
+ Run program and annotate STDOUT/STDERR with a timestamp.
+
+ Options:
+ +FORMAT - Controls the timestamp format as per date(1)
+ -h, --help - Show this message"
+}
+
+FMT="+%H:%M:%S"
+while [ "$1" ]; do
+ case "$1" in
+ +*)
+ FMT="$1"
+ shift
+ ;;
+ -h|-help|--help)
+ usage
+ exit 0
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+if [ $# -lt 1 ]; then
+ usage
+ exit 1
+fi
+
+cleanup() { __st=$?; rm -rf "$tmp"; exit $__st; }
+trap cleanup 0
+trap 'exit $?' 1 2 13 15
+
+tmp=$(mktemp -d --tmpdir annotate.XXXXXX) || exit 1
+OUT=$tmp/out
+ERR=$tmp/err
+
+mkfifo $OUT $ERR || exit 1
+
+addtime O < $OUT &
+addtime E < $ERR &
+
+echo "Started $@" | addtime I
+"$@" > $OUT 2> $ERR ; EXIT=$?
+rm -f $OUT $ERR
+wait
+
+echo "Finished with exitcode $EXIT" | addtime I
+
+exit $EXIT
--- /dev/null
+.TH ARCHPATH 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+archpath \- output arch (tla/Bazaar) archive names, with support for branches
+.SH SYNOPSIS
+.B archpath
+.br
+.B archpath
+.I branch
+.br
+.B archpath
+.IR branch \fB--\fI version
+.SH DESCRIPTION
+.B archpath
+is intended to be run in an arch (tla or Bazaar) working copy.
+.PP
+In its simplest usage,
+.B archpath
+with no parameters outputs the package name
+(archive/category--branch--version) associated with the working copy.
+.PP
+If a parameter is given, it may either be a branch--version, in which case
+.B archpath
+will output a corresponding package name in the current archive and
+category, or a plain branch name (without \(oq--\(dq), in which case
+.B archpath
+will output a corresponding package name in the current archive and
+category and with the same version as the current working copy.
+.PP
+This is useful for branching.
+For example, if you're using Bazaar and you want to create a branch for a
+new feature, you might use a command like this:
+.PP
+.RS
+.nf
+.ft CW
+baz branch $(archpath) $(archpath new-feature)
+.ft R
+.fi
+.RE
+.PP
+Or if you want to tag your current code onto a \(oqreleases\(cq branch as
+version 1.0, you might use a command like this:
+.PP
+.RS
+.nf
+.ft CW
+baz branch $(archpath) $(archpath releases--1.0)
+.ft R
+.fi
+.RE
+.PP
+That's much easier than using \(oqbaz tree-version\(cq to look up the
+package name and manually modifying the result.
+.SH AUTHOR
+.B archpath
+was written by
+.na
+Colin Watson <cjwatson@debian.org>.
+.ad
+Like
+.BR archpath ,
+this manual page is released under the GNU General Public License,
+version 2 or later.
--- /dev/null
+#!/bin/bash
+
+# Output arch (tla/Bazaar) archive names, with support for branches
+
+# Copyright (C) 2005 Colin Watson <cjwatson@debian.org>
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option) any
+# later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+set -e
+
+# Which arch implementation should we use?
+if type baz >/dev/null 2>&1; then
+ PROGRAM=baz
+else
+ PROGRAM=tla
+fi
+
+WANTED="$1"
+ME="$($PROGRAM tree-version)"
+
+if [ "$WANTED" ]; then
+ ARCHIVE="$($PROGRAM parse-package-name --arch "$ME")"
+ CATEGORY="$($PROGRAM parse-package-name --category "$ME")"
+ case $WANTED in
+ *--*)
+ echo "$ARCHIVE/$CATEGORY--$WANTED"
+ ;;
+ *)
+ VERSION="$($PROGRAM parse-package-name --vsn "$ME")"
+ echo "$ARCHIVE/$CATEGORY--$WANTED--$VERSION"
+ ;;
+ esac
+else
+ echo "$ME"
+fi
--- /dev/null
+#!/usr/bin/perl -w
+
+# bts: This program provides a convenient interface to the Debian
+# Bug Tracking System.
+#
+# Written by Joey Hess <joeyh@debian.org>
+# Modifications by Julian Gilbey <jdg@debian.org>
+# Modifications by Josh Triplett <josh@freedesktop.org>
+# Copyright 2001-2003 Joey Hess <joeyh@debian.org>
+# Modifications Copyright 2001-2003 Julian Gilbey <jdg@debian.org>
+# Modifications Copyright 2007 Josh Triplett <josh@freedesktop.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+# Use our own subclass of Pod::Text to
+# a) Strip the POD markup before displaying it via "bts help"
+# b) Automatically display the text which is supposed to be replaced by the
+# user between <>, as per convention.
+package Pod::BTS;
+use strict;
+
+use base qw(Pod::Text);
+
+sub cmd_i { return '<' . $_[2] . '>' }
+
+package main;
+
+=head1 NAME
+
+bts - developers' command line interface to the BTS
+
+=cut
+
+use 5.006_000;
+use strict;
+use File::Basename;
+use File::Copy;
+use File::Path;
+use File::Spec;
+use File::Temp qw/tempfile/;
+use Net::SMTP;
+use Cwd;
+use IO::File;
+use IO::Handle;
+BEGIN { push @INC, '/usr/share/devscripts'; }
+use Devscripts::DB_File_Lock;
+use Devscripts::Debbugs;
+use Fcntl qw(O_RDWR O_RDONLY O_CREAT F_SETFD);
+use Getopt::Long;
+use Encode;
+
+use Scalar::Util qw(looks_like_number);
+use POSIX qw(locale_h strftime);
+
+setlocale(LC_TIME, "C"); # so that strftime is locale independent
+
+# Funny UTF-8 warning messages from HTML::Parse should be ignorable (#292671)
+$SIG{'__WARN__'} = sub { warn $_[0] unless $_[0] =~ /^Parsing of undecoded UTF-8 will give garbage when decoding entities/; };
+
+my $it = undef;
+my $last_user = '';
+my $lwp_broken = undef;
+my $smtp_ssl_broken = undef;
+my $authen_sasl_broken;
+my $ua;
+
+sub have_lwp() {
+ return ($lwp_broken ? 0 : 1) if defined $lwp_broken;
+ eval {
+ require LWP;
+ require LWP::UserAgent;
+ require HTTP::Status;
+ require HTTP::Date;
+ };
+
+ if ($@) {
+ if ($@ =~ m%^Can\'t locate LWP%) {
+ $lwp_broken="the libwww-perl package is not installed";
+ } else {
+ $lwp_broken="couldn't load LWP::UserAgent: $@";
+ }
+ }
+ else { $lwp_broken=''; }
+ return $lwp_broken ? 0 : 1;
+}
+
+sub have_smtp_ssl() {
+ return ($smtp_ssl_broken ? 0 : 1) if defined $smtp_ssl_broken;
+ eval {
+ require Net::SMTP::SSL;
+ };
+
+ if ($@) {
+ if ($@ =~ m%^Can\'t locate Net/SMTP/SSL%) {
+ $smtp_ssl_broken="the libnet-smtp-ssl-perl package is not installed";
+ } else {
+ $smtp_ssl_broken="couldn't load Net::SMTP::SSL: $@";
+ }
+ }
+ else { $smtp_ssl_broken=''; }
+ return $smtp_ssl_broken ? 0 : 1;
+}
+
+sub have_authen_sasl() {
+ return ($authen_sasl_broken ? 0 : 1) if defined $authen_sasl_broken;
+ eval {
+ require Authen::SASL;
+ };
+
+ if ($@) {
+ if ($@ =~ m%^Can't locate Authen/SASL%) {
+ $authen_sasl_broken='the libauthen-sasl-perl package is not installed';
+ } else {
+ $authen_sasl_broken="couldn't load Authen::SASL: $@";
+ }
+ }
+ else { $authen_sasl_broken=''; }
+ return $authen_sasl_broken ? 0 : 1;
+}
+
+# Constants
+sub MIRROR_ERROR { 0; }
+sub MIRROR_DOWNLOADED { 1; }
+sub MIRROR_UP_TO_DATE { 2; }
+my $NONPRINT = "\\x00-\\x1F\\x7F-\\xFF"; # we need this later for MIME stuff
+
+my $progname = basename($0);
+my $modified_conf_msg;
+my $debug = (exists $ENV{'DEBUG'} and $ENV{'DEBUG'}) ? 1 : 0;
+
+# Program version handling
+# The BTS changed its format :/ Pages downloaded using old versions
+# of bts won't look very good, so we force updating if the last cached
+# version was downloaded by a devscripts version less than
+# $new_cache_format_version
+my $version = '###VERSION###';
+$version = '2.9.6' if $version =~ /\#/; # for testing unconfigured version
+my $new_cache_format_version = '2.9.6';
+
+# The official list is mirrored
+# bugs-mirror.debian.org:/org/bugs.debian.org/etc/config
+# in the variable @gTags; we copy it verbatim here.
+our (@gTags, @valid_tags, %valid_tags);
+@gTags = ( "patch", "wontfix", "moreinfo", "unreproducible", "fixed",
+ "potato", "woody", "sid", "help", "security", "upstream",
+ "pending", "sarge", "sarge-ignore", "experimental", "d-i",
+ "confirmed", "ipv6", "lfs", "fixed-in-experimental",
+ "fixed-upstream", "l10n", "newcomer", "etch", "etch-ignore",
+ "lenny", "lenny-ignore", "squeeze", "squeeze-ignore",
+ "wheezy", "wheezy-ignore", "jessie", "jessie-ignore",
+ "stretch", "stretch-ignore", "buster", "buster-ignore",
+ );
+
+*valid_tags = \@gTags;
+%valid_tags = map { $_ => 1 } @valid_tags;
+my @valid_severities=qw(wishlist minor normal important
+ serious grave critical);
+
+my $browser; # Will set if necessary
+
+my $cachedir=$ENV{'HOME'}."/.devscripts_cache/bts/";
+my $timestampdb=$cachedir."bts_timestamps.db";
+my $prunestamp=$cachedir."bts_prune.timestamp";
+
+my %timestamp;
+END {
+ # This works even if we haven't tied it
+ untie %timestamp;
+}
+
+my %clonedbugs = ();
+my %ccpackages = ();
+my %ccsubmitters = ();
+
+=head1 SYNOPSIS
+
+B<bts> [I<options>] I<command> [I<args>] [B<#>I<comment>] [B<.>|B<,> I<command> [I<args>] [B<#>I<comment>]] ...
+
+=head1 DESCRIPTION
+
+This is a command line interface to the Debian Bug Tracking System
+(BTS), intended mainly
+for use by developers. It lets the BTS be manipulated using simple commands
+that can be run at the prompt or in a script, does various sanity checks on
+the input, and constructs and sends a mail to the BTS control address for
+you. A local cache of web pages and e-mails from the BTS may also be
+created and updated.
+
+In general, the command line interface is the same as what you would write
+in a mail to control@bugs.debian.org, just prefixed with "bts". For
+example:
+
+ % bts severity 69042 normal
+ % bts merge 69042 43233
+ % bts retitle 69042 blah blah
+
+A few additional commands have been added for your convenience, and this
+program is less strict about what constitutes a valid bug number. For example,
+"severity Bug#85942 normal" is understood, as is "severity #85942 normal".
+(Of course, your shell may regard "#" as a comment character though, so you
+may need to quote it!)
+
+Also, for your convenience, this program allows you to abbreviate commands
+to the shortest unique substring (similar to how cvs lets you abbreviate
+commands). So it understands things like "bts cl 85942".
+
+It is also possible to include a comment in the mail sent to the BTS. If
+your shell does not strip out the comment in a command like
+"bts severity 30321 normal #inflated severity", then this program is smart
+enough to figure out where the comment is, and include it in the email.
+Note that most shells do strip out such comments before they get to the
+program, unless the comment is quoted. (Something like "bts
+severity #85942 normal" will not be treated as a comment!)
+
+You can specify multiple commands by separating them with a single dot,
+rather like B<update-rc.d>; a single comma may also be used; all the
+commands will then be sent in a single mail. It is important the dot/comma is
+surrounded by whitespace so it is not mistaken for part of a command. For
+example (quoting where necessary so that B<bts> sees the comment):
+
+ % bts severity 95672 normal , merge 95672 95673 \#they are the same!
+
+The abbreviation "it" may be used to refer to the last mentioned bug
+number, so you could write:
+
+ % bts severity 95672 wishlist , retitle it "bts: please add a --foo option"
+
+Please use this program responsibly, and do take our users into
+consideration.
+
+=head1 OPTIONS
+
+B<bts> examines the B<devscripts> configuration files as described
+below. Command line options override the configuration file settings,
+though.
+
+=over 4
+
+=item B<-o>, B<--offline>
+
+Make B<bts> use cached bugs for the B<show> and B<bugs> commands, if a cache
+is available for the requested data. See the B<cache> command, below for
+information on setting up a cache.
+
+=item B<--online>, B<--no-offline>
+
+Opposite of B<--offline>; overrides any configuration file directive to work
+offline.
+
+=item B<-n>, B<--no-action>
+
+Do not send emails but print them to standard output.
+
+=item B<--cache>, B<--no-cache>
+
+Should we attempt to cache new versions of BTS pages when
+performing B<show>/B<bugs> commands? Default is to cache.
+
+=item B<--cache-mode=>{B<min>|B<mbox>|B<full>}
+
+When running a B<bts cache> command, should we only mirror the basic
+bug (B<min>), or should we also mirror the mbox version (B<mbox>), or should
+we mirror the whole thing, including the mbox and the boring
+attachments to the BTS bug pages and the acknowledgement emails (B<full>)?
+Default is B<min>.
+
+=item B<--cache-delay=>I<seconds>
+
+Time in seconds to delay between each download, to avoid hammering the BTS
+web server. Default is 5 seconds.
+
+=item B<--mbox>
+
+Open a mail reader to read the mbox corresponding to a given bug number
+for B<show> and B<bugs> commands.
+
+=item B<--mailreader=>I<READER>
+
+Specify the command to read the mbox. Must contain a "B<%s>" string
+(unquoted!), which will be replaced by the name of the mbox file. The
+command will be split on white space and will not be passed to a
+shell. Default is 'B<mutt -f %s>'. (Also, B<%%> will be substituted by a
+single B<%> if this is needed.)
+
+=item B<--cc-addr=>I<CC_EMAIL_ADDRESS>
+
+Send carbon copies to a list of users. I<CC_EMAIL_ADDRESS> should be a
+comma-separated list of email addresses.
+
+=item B<--use-default-cc>
+
+Add the addresses specified in the configuration file option
+B<BTS_DEFAULT_CC> to the list specified using B<--cc-addr>. This is the
+default.
+
+=item B<--no-use-default-cc>
+
+Do not add addresses specified in B<BTS_DEFAULT_CC> to the carbon copy
+list.
+
+=item B<--sendmail=>I<SENDMAILCMD>
+
+Specify the B<sendmail> command. The command will be split on white
+space and will not be passed to a shell. Default is
+F</usr/sbin/sendmail>. The B<-t> option will be automatically added if
+the command is F</usr/sbin/sendmail> or F</usr/sbin/exim*>. For other
+mailers, if they require a B<-t> option, this must be included in the
+I<SENDMAILCMD>, for example: B<--sendmail="/usr/sbin/mymailer -t">.
+
+=item B<--mutt>
+
+Use B<mutt> for sending of mails. Default is not to use B<mutt>, except for some
+commands.
+
+Note that one of B<$DEBEMAIL> or B<$EMAIL> must be set in the environment in order
+to use B<mutt> to send emails.
+
+=item B<--no-mutt>
+
+Don't use B<mutt> for sending of mails.
+
+=item B<--smtp-host=>I<SMTPHOST>
+
+Specify an SMTP host. If given, B<bts> will send mail by talking directly to
+this SMTP host rather than by invoking a B<sendmail> command.
+
+The host name may be followed by a colon (":") and a port number in
+order to use a port other than the default. It may also begin with
+"ssmtp://" or "smtps://" to indicate that SMTPS should be used.
+
+Note that one of B<$DEBEMAIL> or B<$EMAIL> must be set in the environment in order
+to use direct SMTP connections to send emails.
+
+Note that when sending directly via an SMTP host, specifying addresses in
+B<--cc-addr> or B<BTS_DEFAULT_CC> that the SMTP host will not relay will cause the
+SMTP host to reject the entire mail.
+
+Note also that the use of the B<reassign> command may, when either B<--interactive>
+or B<--force-interactive> mode is enabled, lead to the automatic addition of a Cc
+to I<$newpackage>@packages.debian.org. In these cases, the note above regarding
+relaying applies. The submission interface (port 587) on reportbug.debian.org
+does not support relaying and, as such, should not be used as an SMTP server
+for B<bts> under the circumstances described in this paragraph.
+
+=item B<--smtp-username=>I<USERNAME>, B<--smtp-password=>I<PASSWORD>
+
+Specify the credentials to use when connecting to the SMTP server
+specified by B<--smtp-host>. If the server does not require authentication
+then these options should not be used.
+
+If a username is specified but not a password, B<bts> will prompt for
+the password before sending the mail.
+
+=item B<--smtp-helo=>I<HELO>
+
+Specify the name to use in the I<HELO> command when connecting to the SMTP
+server; defaults to the contents of the file F</etc/mailname>, if it
+exists.
+
+Note that some SMTP servers may reject the use of a I<HELO> which either
+does not resolve or does not appear to belong to the host using it.
+
+=item B<--bts-server>
+
+Use a debbugs server other than bugs.debian.org.
+
+=item B<-f>, B<--force-refresh>
+
+Download a bug report again, even if it does not appear to have
+changed since the last B<cache> command. Useful if a B<--cache-mode=full> is
+requested for the first time (otherwise unchanged bug reports will not
+be downloaded again, even if the boring bits have not been
+downloaded).
+
+=item B<--no-force-refresh>
+
+Suppress any configuration file B<--force-refresh> option.
+
+=item B<--only-new>
+
+Download only new bugs when caching. Do not check for updates in
+bugs we already have.
+
+=item B<--include-resolved>
+
+When caching bug reports, include those that are marked as resolved. This
+is the default behaviour.
+
+=item B<--no-include-resolved>
+
+Reverse the behaviour of the previous option. That is, do not cache bugs
+that are marked as resolved.
+
+=item B<--no-ack>
+
+Suppress acknowledgment mails from the BTS. Note that this will only
+affect the copies of messages CCed to bugs, not those sent to the
+control bot.
+
+=item B<--ack>
+
+Do not suppress acknowledgement mails. This is the default behaviour.
+
+=item B<-i>, B<--interactive>
+
+Before sending an e-mail to the control bot, display the content and
+allow it to be edited, or the sending cancelled.
+
+=item B<--force-interactive>
+
+Similar to B<--interactive>, with the exception that an editor is spawned
+before prompting for confirmation of the message to be sent.
+
+=item B<--no-interactive>
+
+Send control e-mails without confirmation. This is the default behaviour.
+
+=item B<-q>, B<--quiet>
+
+When running B<bts cache>, only display information about newly cached
+pages, not messages saying already cached. If this option is
+specified twice, only output error messages (to stderr).
+
+=item B<--no-conf>, B<--noconf>
+
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+
+=back
+
+=cut
+
+# Start by setting default values
+
+my $offlinemode=0;
+my $caching=1;
+my $cachemode='min';
+my $refreshmode=0;
+my $updatemode=0;
+my $mailreader='mutt -f %s';
+my $muttcmd='mutt -H %s';
+my $sendmailcmd='/usr/sbin/sendmail';
+my $smtphost='';
+my $smtpuser='';
+my $smtppass='';
+my $smtphelo='';
+my $noaction=0;
+# regexp for mailers which require a -t option
+my $sendmail_t='^/usr/sbin/sendmail$|^/usr/sbin/exim';
+my $includeresolved=1;
+my $requestack=1;
+my $interactive=0;
+my $forceinteractive=0;
+my $ccemail="";
+my $toolname="";
+my $btsserver='bugs.debian.org';
+my $use_mutt = 0;
+
+# Next, read read configuration files and then command line
+# The next stuff is boilerplate
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'BTS_OFFLINE' => 'no',
+ 'BTS_CACHE' => 'yes',
+ 'BTS_CACHE_MODE' => 'min',
+ 'BTS_FORCE_REFRESH' => 'no',
+ 'BTS_ONLY_NEW' => 'no',
+ 'BTS_MAIL_READER' => 'mutt -f %s',
+ 'BTS_SENDMAIL_COMMAND' => '/usr/sbin/sendmail',
+ 'BTS_INCLUDE_RESOLVED' => 'yes',
+ 'BTS_SMTP_HOST' => '',
+ 'BTS_SMTP_AUTH_USERNAME' => '',
+ 'BTS_SMTP_AUTH_PASSWORD' => '',
+ 'BTS_SMTP_HELO' => '',
+ 'BTS_SUPPRESS_ACKS' => 'no',
+ 'BTS_INTERACTIVE' => 'no',
+ 'BTS_DEFAULT_CC' => '',
+ 'BTS_SERVER' => 'bugs.debian.org',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ # Check validity
+ $config_vars{'BTS_OFFLINE'} =~ /^(yes|no)$/
+ or $config_vars{'BTS_OFFLINE'}='no';
+ $config_vars{'BTS_CACHE'} =~ /^(yes|no)$/
+ or $config_vars{'BTS_CACHE'}='yes';
+ $config_vars{'BTS_CACHE_MODE'} =~ /^(min|mbox|full)$/
+ or $config_vars{'BTS_CACHE_MODE'}='min';
+ $config_vars{'BTS_FORCE_REFRESH'} =~ /^(yes|no)$/
+ or $config_vars{'BTS_FORCE_REFRESH'}='no';
+ $config_vars{'BTS_ONLY_NEW'} =~ /^(yes|no)$/
+ or $config_vars{'BTS_ONLY_NEW'}='no';
+ $config_vars{'BTS_MAIL_READER'} =~ /\%s/
+ or $config_vars{'BTS_MAIL_READER'}='mutt -f %s';
+ $config_vars{'BTS_SENDMAIL_COMMAND'} =~ /./
+ or $config_vars{'BTS_SENDMAIL_COMMAND'}='/usr/sbin/sendmail';
+ $config_vars{'BTS_INCLUDE_RESOLVED'} =~ /^(yes|no)$/
+ or $config_vars{'BTS_INCLUDE_RESOLVED'} = 'yes';
+ $config_vars{'BTS_SUPPRESS_ACKS'} =~ /^(yes|no)$/
+ or $config_vars{'BTS_SUPPRESS_ACKS'} = 'no';
+ $config_vars{'BTS_INTERACTIVE'} =~ /^(yes|no|force)$/
+ or $config_vars{'BTS_INTERACTIVE'} = 'no';
+
+ if (!length $config_vars{'BTS_SMTP_HOST'}
+ and $config_vars{'BTS_SENDMAIL_COMMAND'} ne '/usr/sbin/sendmail') {
+ my $cmd = (split ' ', $config_vars{'BTS_SENDMAIL_COMMAND'})[0];
+ unless ($cmd =~ /^~?[A-Za-z0-9_\-\+\.\/]*$/) {
+ warn "BTS_SENDMAIL_COMMAND contained funny characters: $cmd\nReverting to default value /usr/sbin/sendmail\n";
+ $config_vars{'BTS_SENDMAIL_COMMAND'}='/usr/sbin/sendmail';
+ } elsif (system("command -v $cmd >/dev/null 2>&1") != 0) {
+ warn "BTS_SENDMAIL_COMMAND $cmd could not be executed.\nReverting to default value /usr/sbin/sendmail\n";
+ $config_vars{'BTS_SENDMAIL_COMMAND'}='/usr/sbin/sendmail';
+ }
+ }
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $offlinemode = $config_vars{'BTS_OFFLINE'} eq 'yes' ? 1 : 0;
+ $caching = $config_vars{'BTS_CACHE'} eq 'no' ? 0 : 1;
+ $cachemode = $config_vars{'BTS_CACHE_MODE'};
+ $refreshmode = $config_vars{'BTS_FORCE_REFRESH'} eq 'yes' ? 1 : 0;
+ $updatemode = $config_vars{'BTS_ONLY_NEW'} eq 'yes' ? 1 : 0;
+ $mailreader = $config_vars{'BTS_MAIL_READER'};
+ $sendmailcmd = $config_vars{'BTS_SENDMAIL_COMMAND'};
+ $smtphost = $config_vars{'BTS_SMTP_HOST'};
+ $smtpuser = $config_vars{'BTS_SMTP_AUTH_USERNAME'};
+ $smtppass = $config_vars{'BTS_SMTP_AUTH_PASSWORD'};
+ $smtphelo = $config_vars{'BTS_SMTP_HELO'};
+ $includeresolved = $config_vars{'BTS_INCLUDE_RESOLVED'} eq 'yes' ? 1 : 0;
+ $requestack = $config_vars{'BTS_SUPPRESS_ACKS'} eq 'no' ? 1 : 0;
+ $interactive = $config_vars{'BTS_INTERACTIVE'} eq 'no' ? 0 : 1;
+ $forceinteractive = $config_vars{'BTS_INTERACTIVE'} eq 'force' ? 1 : 0;
+ $ccemail = $config_vars{'BTS_DEFAULT_CC'};
+ $btsserver = $config_vars{'BTS_SERVER'};
+}
+
+if (exists $ENV{'BUGSOFFLINE'}) {
+ warn "BUGSOFFLINE environment variable deprecated: please use ~/.devscripts\nor --offline/-o option instead! (See bts(1) for details.)\n";
+}
+
+my ($opt_help, $opt_version, $opt_noconf);
+my ($opt_cachemode, $opt_mailreader, $opt_sendmail, $opt_smtphost);
+my ($opt_smtpuser, $opt_smtppass, $opt_smtphelo);
+my $opt_cachedelay=5;
+my $opt_mutt;
+my $mboxmode = 0;
+my $quiet=0;
+my $opt_ccemail = "";
+my $use_default_cc = 1;
+my $ccsecurity="";
+
+Getopt::Long::Configure(qw(gnu_compat bundling require_order));
+GetOptions("help|h" => \$opt_help,
+ "version" => \$opt_version,
+ "o" => \$offlinemode,
+ "offline!" => \$offlinemode,
+ "online" => sub { $offlinemode = 0; },
+ "cache!" => \$caching,
+ "cache-mode|cachemode=s" => \$opt_cachemode,
+ "cache-delay=i" => \$opt_cachedelay,
+ "m|mbox" => \$mboxmode,
+ "mailreader|mail-reader=s" => \$opt_mailreader,
+ "cc-addr=s" => \$opt_ccemail,
+ "sendmail=s" => \$opt_sendmail,
+ "smtp-host|smtphost=s" => \$opt_smtphost,
+ "smtp-user|smtp-username=s" => \$opt_smtpuser,
+ "smtp-pass|smtp-password=s" => \$opt_smtppass,
+ "smtp-helo=s" => \$opt_smtphelo,
+ "f" => \$refreshmode,
+ "force-refresh!" => \$refreshmode,
+ "only-new!" => \$updatemode,
+ "n|no-action" => \$noaction,
+ "q|quiet+" => \$quiet,
+ "noconf|no-conf" => \$opt_noconf,
+ "include-resolved!" => \$includeresolved,
+ "ack!" => \$requestack,
+ "i|interactive" => \$interactive,
+ "no-interactive" => sub { $interactive = 0; $forceinteractive = 0; },
+ "force-interactive" => sub { $interactive = 1; $forceinteractive = 1; },
+ "use-default-cc!" => \$use_default_cc,
+ "toolname=s" => \$toolname,
+ "bts-server=s" => \$btsserver,
+ "mutt!" => \$opt_mutt,
+ )
+ or die "Usage: $progname [options]\nRun $progname --help for more details\n";
+
+if ($opt_noconf) {
+ die "$progname: --no-conf is only acceptable as the first command-line option!\n";
+}
+if ($opt_help) { bts_help(); exit 0; }
+if ($opt_version) { bts_version(); exit 0; }
+
+if (!$use_default_cc) {
+ $ccemail = "";
+}
+
+if ($opt_ccemail) {
+ $ccemail .= ", " if $ccemail;
+ $ccemail .= $opt_ccemail;
+}
+
+if ($opt_mailreader) {
+ if ($opt_mailreader =~ /\%s/) {
+ $mailreader=$opt_mailreader;
+ } else {
+ warn "$progname: ignoring invalid --mailreader option: invalid mail command following it.\n";
+ }
+}
+
+if ($opt_mutt) {
+ $use_mutt = 1;
+}
+
+if ($opt_sendmail and $opt_smtphost) {
+ die "$progname: --sendmail and --smtp-host mutually exclusive\n";
+} elsif ($opt_mutt and $opt_sendmail) {
+ die "$progname: --sendmail and --mutt mutually exclusive\n";
+} elsif ($opt_mutt and $opt_smtphost) {
+ die "$progname: --smtp-host and --mutt mutually exclusive\n";
+}
+
+$smtphost = $opt_smtphost if $opt_smtphost;
+$smtpuser = $opt_smtpuser if $opt_smtpuser;
+$smtppass = $opt_smtppass if $opt_smtppass;
+$smtphelo = $opt_smtphelo if $opt_smtphelo;
+
+if ($opt_sendmail) {
+ if ($opt_sendmail ne '/usr/sbin/sendmail'
+ and $opt_sendmail ne $sendmailcmd) {
+ my $cmd = (split ' ', $opt_sendmail)[0];
+ unless ($cmd =~ /^~?[A-Za-z0-9_\-\+\.\/]*$/) {
+ warn "--sendmail command contained funny characters: $cmd\nReverting to default value $sendmailcmd\n";
+ undef $opt_sendmail;
+ } elsif (system("command -v $cmd >/dev/null 2>&1") != 0) {
+ warn "--sendmail command $cmd could not be executed.\nReverting to default value $sendmailcmd\n";
+ undef $opt_sendmail;
+ }
+ }
+}
+
+if ($opt_sendmail) {
+ $sendmailcmd = $opt_sendmail;
+ $smtphost = '';
+} else {
+ if (length $smtphost and ! length $smtphelo) {
+ if (-e "/etc/mailname") {
+ if (open MAILNAME, '<', "/etc/mailname") {
+ $smtphelo = <MAILNAME>;
+ chomp $smtphelo;
+ close MAILNAME;
+ } else {
+ warn "Unable to open /etc/mailname: $!\nUsing default HELO for SMTP\n";
+ }
+ }
+ }
+}
+
+if ($opt_cachemode) {
+ if ($opt_cachemode =~ /^(min|mbox|full)$/) {
+ $cachemode=$opt_cachemode;
+ } else {
+ warn "$progname: ignoring invalid --cache-mode; must be one of min, mbox, full.\n";
+ }
+}
+
+if ($toolname) {
+ $toolname =" (using $toolname)";
+}
+
+my $btsurl;
+if ($btsserver =~ m%^https?://(.*)/?$%) {
+ $btsurl = $btsserver . '/';
+ $btsserver=$1;
+} else {
+ $btsurl = "http://$btsserver/";
+}
+$btsurl =~ s%//$%/%;
+my $btscgiurl=$btsurl . 'cgi-bin/';
+my $btscgipkgurl=$btscgiurl . 'pkgreport.cgi';
+my $btscgibugurl=$btscgiurl . 'bugreport.cgi';
+my $btscgispamurl=$btscgiurl . 'bugspam.cgi';
+my $btsemail='control@' . $btsserver;
+my $packagesserver='';
+if ($btsserver =~ /^bugs(-[\w-]+)?\.debian\.org/i) {
+ $packagesserver = 'packages.debian.org';
+ $btscgispamurl =~ s|$btsurl|http://bugs-master.debian.org/|;
+}
+no warnings 'once';
+$Devscripts::Debbugs::btsurl=$btsurl;
+use warnings 'once';
+
+if (@ARGV == 0) {
+ bts_help();
+ exit 0;
+}
+
+
+# Otherwise, parse the arguments
+my @command;
+my @args;
+our @comment=('');
+my $ncommand = 0;
+my $iscommand = 1;
+while (@ARGV) {
+ $_ = shift @ARGV;
+ if ($_ =~ /^[\.,]$/) {
+ next if $iscommand; # ". ." in command line - oops!
+ $ncommand++;
+ $iscommand = 1;
+ $comment[$ncommand] = '';
+ }
+ elsif ($iscommand) {
+ push @command, $_;
+ $iscommand = 0;
+ }
+ elsif ($comment[$ncommand]) {
+ $comment[$ncommand] .= " $_";
+ }
+ elsif (/^\#/ and not /^\#\d+$/) {
+ $comment[$ncommand] = $_;
+ } else {
+ push @{$args[$ncommand]}, $_;
+ }
+}
+$ncommand-- if $iscommand;
+
+# Grub through the symbol table to find matching commands.
+my $subject = '';
+my $body = '';
+our $index;
+for $index (0 .. $ncommand) {
+ no strict 'refs';
+ if (exists $::{"bts_$command[$index]"}) {
+ "bts_$command[$index]"->(@{$args[$index]});
+ } elsif ($command[$index] =~ /^#/) {
+ mailbts('', $command[$index]);
+ } else {
+ my @matches=grep /^bts_\Q$command[$index]\E/, keys %::;
+ if (@matches != 1) {
+ die "$progname: Couldn't find a unique match for the command $command[$index]!\nRun $progname --help for a list of valid commands.\n";
+ }
+
+ # Replace the abbreviated command with its expanded equivalent
+ $command[$index] = $matches[0];
+ $command[$index] =~ s/^bts_//;
+
+ $matches[0]->(@{$args[$index]});
+ }
+}
+
+# Send all cached commands.
+mailbtsall($subject, $body) if length $body;
+
+# Unnecessary, but we'll do this for clarity
+exit 0;
+
+=head1 COMMANDS
+
+For full details about the commands, see the BTS documentation.
+L<https://www.debian.org/Bugs/server-control>
+
+=over 4
+
+=item B<show> [I<options>] [I<bug number> | I<package> | I<maintainer> | B<:> ] [I<opt>B<=>I<val> ...]
+
+=item B<show> [I<options>] [B<src:>I<package> | B<from:>I<submitter>] [I<opt>B<=>I<val> ...]
+
+=item B<show> [I<options>] [B<tag:>I<tag> | B<usertag:>I<tag> ] [I<opt>B<=>I<val> ...]
+
+=item B<show> [B<release-critical> | B<release-critical/>... | B<RC>]
+
+This is a synonym for B<bts bugs>.
+
+=cut
+
+sub bts_show {
+ goto &bts_bugs;
+}
+
+=item B<bugs> [I<options>] [I<bug_number> | I<package> | I<maintainer> | B<:> ] [I<opt>B<=>I<val> ...]
+
+=item B<bugs> [I<options>] [B<src:>I<package> | B<from:>I<submitter>] [I<opt>B<=>I<val> ...]
+
+=item B<bugs> [I<options>] [B<tag:>I<tag> | B<usertag:>I<tag> ] [I<opt>B<=>I<val> ...]
+
+=item B<bugs> [B<release-critical> | B<release-critical/>... | B<RC>]
+
+Display the page listing the requested bugs in a web browser using
+sensible-browser(1).
+
+Options may be specified after the B<bugs> command in addition to or
+instead of options at the start of the command line: recognised
+options at this point are: B<-o>/B<--offline>/B<--online>, B<-m>/B<--mbox>, B<--mailreader>
+and B<-->[B<no->]B<cache>. These are described earlier in this manpage. If
+either the B<-o> or B<--offline> option is used, or there is already an
+up-to-date copy in the local cache, the cached version will be used.
+
+The meanings of the possible arguments are as follows:
+
+=over 8
+
+=item (none)
+
+If nothing is specified, B<bts bugs> will display your bugs, assuming
+that either B<DEBEMAIL> or B<EMAIL> (examined in that order) is set to the
+appropriate email address.
+
+=item I<bug_number>
+
+Display bug number I<bug_number>.
+
+=item I<package>
+
+Display the bugs for the package I<package>.
+
+=item B<src:>I<package>
+
+Display the bugs for the source package I<package>.
+
+=item I<maintainer>
+
+Display the bugs for the maintainer email address I<maintainer>.
+
+=item B<from:>I<submitter>
+
+Display the bugs for the submitter email address I<submitter>.
+
+=item B<tag:>I<tag>
+
+Display the bugs which are tagged with I<tag>.
+
+=item B<usertag:>I<tag>
+
+Display the bugs which are tagged with usertag I<tag>. See the BTS
+documentation for more information on usertags. This will require the
+use of a B<users=>I<email> option.
+
+=item B<:>
+
+Details of the bug tracking system itself, along with a bug-request
+page with more options than this script, can be found on
+https://bugs.debian.org/. This page itself will be opened if the
+command 'bts bugs :' is used.
+
+=item B<release-critical>, B<RC>
+
+Display the front page of the release-critical pages on the BTS. This
+is a synonym for https://bugs.debian.org/release-critical/index.html.
+It is also possible to say release-critical/debian/main.html and the like.
+RC is a synonym for release-critical/other/all.html.
+
+=back
+
+After the argument specifying what to display, you can optionally
+specify options to use to format the page or change what it displayed.
+These are passed to the BTS in the URL downloaded. For example, pass
+dist=stable to see bugs affecting the stable version of a package,
+version=1.0 to see bugs affecting that version of a package, or reverse=yes
+to display newest messages first in a bug log.
+
+If caching has been enabled (that is, B<--no-cache> has not been used,
+and B<BTS_CACHE> has not been set to B<no>), then any page requested by
+B<bts show> will automatically be cached, and be available offline
+thereafter. Pages which are automatically cached in this way will be
+deleted on subsequent "B<bts show>|B<bugs>|B<cache>" invocations if they have
+not been accessed in 30 days. Warning: on a filesystem mounted with
+the "noatime" option, running "B<bts show>|B<bugs>" does not update the cache
+files' access times; a cached bug will then be subject to auto-cleaning
+30 days after its initial download, even if it has been accessed in the
+meantime.
+
+Any other B<bts> commands following this on the command line will be
+executed after the browser has been exited.
+
+The desired browser can be specified and configured by setting the
+B<BROWSER> environment variable. The conventions follow those defined by
+Eric Raymond at http://www.catb.org/~esr/BROWSER/; we here reproduce the
+relevant part.
+
+The value of B<BROWSER> may consist of a colon-separated series of
+browser command parts. These should be tried in order until one
+succeeds. Each command part may optionally contain the string B<%s>; if
+it does, the URL to be viewed is substituted there. If a command part
+does not contain B<%s>, the browser is to be launched as if the URL had
+been supplied as its first argument. The string B<%%> must be substituted
+as a single %.
+
+Rationale: We need to be able to specify multiple browser commands so
+programs obeying this convention can do the right thing in either X or
+console environments, trying X first. Specifying multiple commands may
+also be useful for people who share files like F<.profile> across
+multiple systems. We need B<%s> because some popular browsers have
+remote-invocation syntax that requires it. Unless B<%%> reduces to %, it
+won't be possible to have a literal B<%s> in the string.
+
+For example, on most Linux systems a good thing to do would be:
+
+BROWSER='mozilla -raise -remote "openURL(%s,new-window)":links'
+
+=cut
+
+sub bts_bugs {
+ @ARGV = @_; # needed for GetOptions
+ my ($sub_offlinemode, $sub_caching, $sub_mboxmode, $sub_mailreader);
+ GetOptions("o" => \$sub_offlinemode,
+ "offline!" => \$sub_offlinemode,
+ "online" => sub { $sub_offlinemode = 0; },
+ "cache!" => \$sub_caching,
+ "m|mbox" => \$sub_mboxmode,
+ "mailreader|mail-reader=s" => \$sub_mailreader,
+ )
+ or die "$progname: unknown options for bugs command\n";
+ @_ = @ARGV; # whatever's left
+
+ if (defined $sub_offlinemode) {
+ ($offlinemode, $sub_offlinemode) = ($sub_offlinemode, $offlinemode);
+ }
+ if (defined $sub_caching) {
+ ($caching, $sub_caching) = ($sub_caching, $caching);
+ }
+ if (defined $sub_mboxmode) {
+ ($mboxmode, $sub_mboxmode) = ($sub_mboxmode, $mboxmode);
+ }
+ if (defined $sub_mailreader) {
+ if ($sub_mailreader =~ /\%s/) {
+ ($mailreader, $sub_mailreader) = ($sub_mailreader, $mailreader);
+ } else {
+ warn "$progname: ignoring invalid --mailreader $sub_mailreader option:\ninvalid mail command following it.\n";
+ $sub_mailreader = undef;
+ }
+ }
+
+ my $url = sanitizething(shift);
+ if (! $url) {
+ if (defined $ENV{'DEBEMAIL'}) {
+ $url=$ENV{'DEBEMAIL'};
+ } else {
+ if (defined $ENV{'EMAIL'}) {
+ $url=$ENV{'EMAIL'};
+ } else {
+ die "bts bugs: Please set DEBEMAIL or EMAIL to your Debian email address.\n";
+ }
+ }
+ }
+ if ($url =~ /^.*\s<(.*)>\s*$/) { $url = $1; }
+ $url =~ s/^:$//;
+
+ # Are there any options?
+ my $urlopts = '';
+ if (@_) {
+ $urlopts = join(";", '', @_); # so it'll be ";opt1=val1;opt2=val2"
+ $urlopts =~ s/:/=/g;
+ $urlopts =~ s/;tag=/;include=/;
+ }
+
+ browse($url, $urlopts);
+
+ # revert options
+ if (defined $sub_offlinemode) {
+ $offlinemode = $sub_offlinemode;
+ }
+ if (defined $sub_caching) {
+ $caching = $sub_caching;
+ }
+ if (defined $sub_mboxmode) {
+ $mboxmode = $sub_mboxmode;
+ }
+ if (defined $sub_mailreader) {
+ $mailreader = $sub_mailreader;
+ }
+}
+
+=item B<select> [I<key>B<:>I<value> ...]
+
+Uses the SOAP interface to output a list of bugs which match the given
+selection requirements.
+
+The following keys are allowed, and may be given multiple times.
+
+=over 8
+
+=item B<package>
+
+Binary package name.
+
+=item B<source>
+
+Source package name.
+
+=item B<maintainer>
+
+E-mail address of the maintainer.
+
+=item B<submitter>
+
+E-mail address of the submitter.
+
+=item B<severity>
+
+Bug severity.
+
+=item B<status>
+
+Status of the bug. One of B<open>, B<done>, or B<forwarded>.
+
+=item B<tag>
+
+Tags applied to the bug. If B<users> is specified, may include
+usertags in addition to the standard tags.
+
+=item B<owner>
+
+Bug's owner.
+
+=item B<correspondent>
+
+Address of someone who sent mail to the log.
+
+=item B<affects>
+
+Bugs which affect this package.
+
+=item B<bugs>
+
+List of bugs to search within.
+
+=item B<users>
+
+Users to use when looking up usertags.
+
+=item B<archive>
+
+Whether to search archived bugs or normal bugs; defaults to B<0>
+(i.e. only search normal bugs). As a special case, if archive is
+B<both>, both archived and unarchived bugs are returned.
+
+=back
+
+For example, to select the set of bugs submitted by
+jrandomdeveloper@example.com and tagged B<wontfix>, one would use
+
+bts select submitter:jrandomdeveloper@example.com tag:wontfix
+
+If a key is used multiple times then the set of bugs selected includes
+those matching any of the supplied values; for example
+
+bts select package:foo severity:wishlist severity:minor
+
+returns all bugs of package foo with either wishlist or minor severity.
+
+=cut
+
+sub bts_select {
+ my @args = @_;
+ my $bugs = Devscripts::Debbugs::select(@args);
+ if (not defined $bugs) {
+ die "Error while retrieving bugs from SOAP server";
+ }
+ print map {qq($_\n)} @{$bugs};
+}
+
+=item B<status> [I<bug> | B<file:>I<file> | B<fields:>I<field>[B<,>I<field> ...] | B<verbose>] ...
+
+Uses the SOAP interface to output status information for the given bugs
+(or as read from the listed files -- use B<-> to indicate STDIN).
+
+By default, all populated fields for a bug are displayed.
+
+If B<verbose> is given, empty fields will also be displayed.
+
+If B<fields> is given, only those fields will be displayed. No validity
+checking is performed on any specified fields.
+
+=cut
+
+sub bts_status {
+ my @args = @_;
+
+ my @bugs;
+ my $showempty = 0;
+ my %field;
+ for my $bug (@args) {
+ if (looks_like_number($bug)) {
+ push @bugs,$bug;
+ }
+ elsif ($bug =~ m{^file:(.+)}) {
+ my $file = $1;
+ my $fh;
+ if ($file eq '-') {
+ $fh = \*STDIN;
+ }
+ else {
+ $fh = IO::File->new($file,'r') or
+ die "Unable to open $file for reading: $!";
+ }
+ while (<$fh>) {
+ chomp;
+ next if /^\s*\#/;
+ s/\s//g;
+ next unless looks_like_number($_);
+ push @bugs,$_;
+ }
+ }
+ elsif ($bug =~ m{^fields:(.+)}) {
+ my $fields = $1;
+ for my $field (split /,/, $fields) {
+ $field{lc $field} = 1;
+ }
+ $showempty = 1;
+ }
+ elsif ($bug =~ m{^verbose$}) {
+ $showempty = 1;
+ }
+ }
+ my $bugs = Devscripts::Debbugs::status( map {[bug => $_, indicatesource => 1]} @bugs );
+ return if ($bugs eq "");
+
+ my $first = 1;
+ for my $bug (keys %{$bugs}) {
+ print "\n" if not $first;
+ $first = 0;
+ my @keys = grep {$_ ne 'bug_num'}
+ keys %{$bugs->{$bug}};
+ for my $key ('bug_num',@keys) {
+ if (%field) {
+ next unless exists $field{$key};
+ }
+ my $out;
+ if (ref($bugs->{$bug}{$key}) eq 'ARRAY') {
+ $out .= join(',',@{$bugs->{$bug}{$key}});
+ }
+ elsif (ref($bugs->{$bug}{$key}) eq 'HASH') {
+ $out .= join(',',
+ map { $_ .' => '. ($bugs->{$bug}{$key}{$_}||'') }
+ keys %{$bugs->{$bug}{$key}}
+ );
+ }
+ else {
+ $out .= $bugs->{$bug}{$key}||'';
+ }
+ if ($out || $showempty) {
+ print "$key\t$out\n";
+ }
+ }
+ }
+}
+
+=item B<clone> I<bug> I<new_ID> [I<new_ID> ...]
+
+The B<clone> control command allows you to duplicate a I<bug> report. It is useful
+in the case where a single report actually indicates that multiple distinct
+bugs have occurred. "New IDs" are negative numbers, separated by spaces,
+which may be used in subsequent control commands to refer to the newly
+duplicated bugs. A new report is generated for each new ID.
+
+=cut
+
+sub bts_clone {
+ my $bug=checkbug(shift) or die "bts clone: clone what bug?\n";
+ @_ or die "bts clone: must specify at least one new ID\n";
+ foreach (@_) {
+ $_ =~ /^-\d+$/ or die "bts clone: new IDs must be negative numbers\n";
+ $clonedbugs{$_} = 1;
+ }
+ mailbts("cloning $bug", "clone $bug " . join(" ",@_));
+}
+
+sub common_close {
+ my $bug=checkbug(shift) or die "bts $command[$index]: close what bug?\n";
+ my $version=shift;
+ $version="" unless defined $version;
+ opts_done(@_);
+ mailbts("closing $bug", "close $bug $version");
+ return $bug;
+}
+
+# Do not include this in the manpage - it's deprecated
+#
+# =item B<close> I<bug> I<version>
+#
+# Close a I<bug>. Remember that using this to close a bug is often bad manners,
+# sending an informative mail to nnnnn-done@bugs.debian.org is much better.
+# You should specify which I<version> of the package closed the I<bug>, if
+# possible.
+#
+# =cut
+
+sub bts_close {
+ my ($bug) = common_close(@_);
+ warn <<"EOT";
+$progname: Closing $bug as you requested.
+Please note that the "$progname close" command is deprecated!
+It is usually better to email nnnnnn-done\@$btsserver with
+an informative mail.
+Please remember to email $bug-submitter\@$btsserver with
+an explanation of why you have closed this bug. Thank you!
+EOT
+}
+
+=item B<done> I<bug> [I<version>]
+
+Mark a I<bug> as Done. This forces interactive mode since done messages should
+include an explanation why the bug is being closed. You should specify which
+I<version> of the package closed the bug, if possible.
+
+=cut
+
+sub bts_done {
+ my ($bug) = common_close(@_);
+ # Force interactive mode since done mails shouldn't be sent without an
+ # explanation
+ if (not $use_mutt) {
+ $forceinteractive = 1;
+ }
+
+ # Include the submitter in the email, so we act like a mail to -done
+ $ccsubmitters{"$bug-submitter"} = 1;
+}
+
+=item B<reopen> I<bug> [I<submitter>]
+
+Reopen a I<bug>, with optional I<submitter>.
+
+=cut
+
+sub bts_reopen {
+ my $bug=checkbug(shift) or die "bts reopen: reopen what bug?\n";
+ my $submitter=shift || ''; # optional
+ opts_done(@_);
+ mailbts("reopening $bug", "reopen $bug $submitter");
+}
+
+=item B<archive> I<bug>
+
+Archive a I<bug> that has previously been archived but is currently not.
+The I<bug> must fulfil all of the requirements for archiving with the
+exception of those that are time-based.
+
+=cut
+
+sub bts_archive {
+ my $bug=checkbug(shift) or die "bts archive: archive what bug?\n";
+ opts_done(@_);
+ mailbts("archiving $bug", "archive $bug");
+}
+
+=item B<unarchive> I<bug>
+
+Unarchive a I<bug> that is currently archived.
+
+=cut
+
+sub bts_unarchive {
+ my $bug=checkbug(shift) or die "bts unarchive: unarchive what bug?\n";
+ opts_done(@_);
+ mailbts("unarchiving $bug", "unarchive $bug");
+}
+
+=item B<retitle> I<bug> I<title>
+
+Change the I<title> of the I<bug>.
+
+=cut
+
+sub bts_retitle {
+ my $bug=checkbug(shift) or die "bts retitle: retitle what bug?\n";
+ my $title=join(" ", @_);
+ if (! length $title) {
+ die "bts retitle: set title of $bug to what?\n";
+ }
+ mailbts("retitle $bug to $title", "retitle $bug $title");
+}
+
+=item B<summary> I<bug> [I<messagenum>]
+
+Select a message number that should be used as
+the summary of a I<bug>.
+
+If no message number is given, the summary is cleared.
+
+=cut
+
+sub bts_summary {
+ my $bug=checkbug(shift) or die "bts summary: change summary of what bug?\n";
+ my $msg=shift || '';
+ mailbts("summary $bug $msg", "summary $bug $msg");
+}
+
+=item B<submitter> I<bug> [I<bug> ...] I<submitter-email>
+
+Change the submitter address of a I<bug> or a number of bugs, with B<!> meaning
+`use the address on the current email as the new submitter address'.
+
+=cut
+
+sub bts_submitter {
+ @_ or die "bts submitter: change submitter of what bug?\n";
+ my $submitter=checkemail(pop, 1);
+ if (!defined $submitter) {
+ die "bts submitter: change submitter to what?\n";
+ }
+ foreach (@_) {
+ my $bug=checkbug($_) or die "bts submitter: $_ is not a bug number\n";
+ mailbts("submitter $bug", "submitter $bug $submitter");
+ }
+}
+
+=item B<reassign> I<bug> [I<bug> ...] I<package> [I<version>]
+
+Reassign a I<bug> or a number of bugs to a different I<package>.
+The I<version> field is optional; see the explanation at
+L<https://www.debian.org/Bugs/server-control>.
+
+=cut
+
+sub bts_reassign {
+ my ($bug, @bugs);
+ while ($_ = shift) {
+ $bug=checkbug($_, 1) or last;
+ push @bugs, $bug;
+ }
+ @bugs or die "bts reassign: reassign what bug(s)?\n";
+ my $package=$_ or die "bts reassign: reassign bug(s) to what package?\n";
+ my $version=shift;
+ $version="" unless defined $version;
+ if (length $version and $version !~ /\d/) {
+ die "bts reassign: version number $version contains no digits!\n";
+ }
+ opts_done(@_);
+
+ foreach $bug (@bugs) {
+ mailbts("reassign $bug to $package", "reassign $bug $package $version");
+ }
+
+ foreach my $packagename (split /,/, $package) {
+ $packagename =~ s/^src://;
+ $ccpackages{$packagename} = 1;
+ }
+}
+
+=item B<found> I<bug> [I<version>]
+
+Indicate that a I<bug> was found to exist in a particular package version.
+Without I<version>, the list of fixed versions is cleared and the bug is
+reopened.
+
+=cut
+
+sub bts_found {
+ my $bug=checkbug(shift) or die "bts found: found what bug?\n";
+ my $version=shift;
+ if (! defined $version) {
+ warn "$progname: found has no version number, but sending to the BTS anyway\n";
+ $version="";
+ }
+ opts_done(@_);
+ mailbts("found $bug in $version", "found $bug $version");
+}
+
+=item B<notfound> I<bug> I<version>
+
+Remove the record that I<bug> was encountered in the given version of the
+package to which it is assigned.
+
+=cut
+
+sub bts_notfound {
+ my $bug=checkbug(shift) or die "bts notfound: what bug?\n";
+ my $version=shift or die "bts notfound: remove record \#$bug from which version?\n";
+ opts_done(@_);
+ mailbts("notfound $bug in $version", "notfound $bug $version");
+}
+
+=item B<fixed> I<bug> I<version>
+
+Indicate that a I<bug> was fixed in a particular package version, without
+affecting the I<bug>'s open/closed status.
+
+=cut
+
+sub bts_fixed {
+ my $bug=checkbug(shift) or die "bts fixed: what bug?\n";
+ my $version=shift or die "bts fixed: \#$bug fixed in which version?\n";
+ opts_done(@_);
+ mailbts("fixed $bug in $version", "fixed $bug $version");
+}
+
+=item B<notfixed> I<bug> I<version>
+
+Remove the record that a I<bug> was fixed in the given version of the
+package to which it is assigned.
+
+This is equivalent to the sequence of commands "B<found> I<bug> I<version>",
+"B<notfound> I<bug> I<version>".
+
+=cut
+
+sub bts_notfixed {
+ my $bug=checkbug(shift) or die "bts notfixed: what bug?\n";
+ my $version=shift or die "bts notfixed: remove record \#$bug from which version?\n";
+ opts_done(@_);
+ mailbts("notfixed $bug in $version", "notfixed $bug $version");
+}
+
+=item B<block> I<bug> B<by>|B<with> I<bug> [I<bug> ...]
+
+Note that a I<bug> is blocked from being fixed by a set of other bugs.
+
+=cut
+
+sub bts_block {
+ my $bug=checkbug(shift) or die "bts block: what bug is blocked?\n";
+ my $word=shift;
+ if (defined $word && $word ne 'by' && $word ne 'with') {
+ unshift @_, $word;
+ }
+ @_ or die "bts block: need to specify at least two bug numbers\n";
+ my @blockers;
+ foreach (@_) {
+ my $blocker=checkbug($_) or die "bts block: some blocking bug number(s) not valid\n";
+ push @blockers, $blocker;
+ }
+ mailbts("block $bug with @blockers", "block $bug with @blockers");
+}
+
+=item B<unblock> I<bug> B<by>|B<with> I<bug> [I<bug> ...]
+
+Note that a I<bug> is no longer blocked from being fixed by a set of other bugs.
+
+=cut
+
+sub bts_unblock {
+ my $bug=checkbug(shift) or die "bts unblock: what bug is blocked?\n";
+ my $word=shift;
+ if (defined $word && $word ne 'by' && $word ne 'with') {
+ unshift @_, $word;
+ }
+ @_ or die "bts unblock: need to specify at least two bug numbers\n";
+ my @blockers;
+ foreach (@_) {
+ my $blocker=checkbug($_) or die "bts unblock: some blocking bug number(s) not valid\n";
+ push @blockers, $blocker;
+ }
+ mailbts("unblock $bug with @blockers", "unblock $bug with @blockers");
+}
+
+=item B<merge> I<bug> I<bug> [I<bug> ...]
+
+Merge a set of bugs together.
+
+=cut
+
+sub bts_merge {
+ my @bugs;
+ foreach (@_) {
+ my $bug=checkbug($_) or die "bts merge: some bug number(s) not valid\n";
+ push @bugs, $bug;
+ }
+ @bugs > 1 or
+ die "bts merge: at least two bug numbers to be merged must be specified\n";
+ mailbts("merging @bugs", "merge @bugs");
+}
+
+=item B<forcemerge> I<bug> I<bug> [I<bug> ...]
+
+Forcibly merge a set of bugs together. The first I<bug> listed is the master bug,
+and its settings (those which must be equal in a normal B<merge>) are assigned to
+the bugs listed next.
+
+=cut
+
+sub bts_forcemerge {
+ my @bugs;
+ foreach (@_) {
+ my $bug=checkbug($_) or die "bts forcemerge: some bug number(s) not valid\n";
+ push @bugs, $bug;
+ }
+ @bugs > 1 or
+ die "bts forcemerge: at least two bug numbers to be merged must be specified\n";
+ mailbts("forcibly merging @bugs", "forcemerge @bugs");
+}
+
+
+=item B<unmerge> I<bug>
+
+Unmerge a I<bug>.
+
+=cut
+
+sub bts_unmerge {
+ my $bug=checkbug(shift) or die "bts unmerge: unmerge what bug?\n";
+ opts_done(@_);
+ mailbts("unmerging $bug", "unmerge $bug");
+}
+
+=item B<tag> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]
+
+=item B<tags> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]
+
+Set or unset a I<tag> on a I<bug>. The tag may either be the exact tag name
+or it may be abbreviated to any unique tag substring. (So using
+B<fixed> will set the tag B<fixed>, not B<fixed-upstream>, for example,
+but B<fix> would not be acceptable.) Multiple tags may be specified as
+well. The two commands (tag and tags) are identical. At least one tag
+must be specified, unless the B<=> flag is used, where the command
+
+ bts tags <bug> =
+
+will remove all tags from the specified I<bug>.
+
+Adding/removing the B<security> tag will add "team\@security.debian.org"
+to the Cc list of the control email.
+
+=cut
+
+sub bts_tags {
+ my $bug=checkbug(shift) or die "bts tags: tag what bug?\n";
+ if (! @_) {
+ die "bts tags: set what tag?\n";
+ }
+ # Parse the rest of the command line.
+ my $base_command="tags $bug";
+ my $commands = [];
+
+ my $curop;
+ foreach my $tag (@_) {
+ if ($tag =~ s/^([-+=])//) {
+ my $op = $1;
+ if ($op eq '=') {
+ $curop = '=';
+ $commands = [];
+ $ccsecurity = '';
+ }
+ elsif (!$curop || $curop ne $op) {
+ $curop = $op;
+ }
+ next unless $tag;
+ }
+ if (!$curop) {
+ $curop = '+';
+ }
+ if ($tag eq 'gift') {
+ my $gift_flag = $curop;
+ if ($gift_flag eq '=') {
+ $gift_flag = '+';
+ }
+ # Backward compatibility: do both gift usertagging and newcomer
+ # tagging. Gifting should be removed after a suitable migration
+ # time. See https://wiki.debian.org/qa.debian.org/GiftTag header
+ # for more info.
+ mailbts("tagging $bug", "tags $bug + newcomer");
+ mailbts("gifting $bug",
+ "user debian-qa\@lists.debian.org\nusertag $bug $gift_flag gift");
+ next;
+ }
+ if (!exists $valid_tags{$tag}) {
+ # Try prefixes
+ my @matches = grep /^\Q$tag\E/, @valid_tags;
+ if (@matches != 1) {
+ die "bts tags: \"$tag\" is not a " . (@matches > 1 ? "unique" : "valid") . " tag prefix. Choose from: " . join(" ", @valid_tags) . "\n";
+ }
+ $tag = $matches[0];
+ }
+ if (!@$commands || $curop ne $commands->[-1]{op}) {
+ push(@$commands, { op => $curop, tags => [] });
+ }
+ push(@{$commands->[-1]{tags}}, $tag);
+ if ($tag eq "security") {
+ $ccsecurity = "team\@security.debian.org";
+ }
+ }
+
+ my $command = '';
+ foreach my $cmd (@$commands) {
+ if ($cmd->{op} ne '=' && !@{$cmd->{tags}}) {
+ die "bts tags: set what tag?\n";
+ }
+ $command .= " $cmd->{op} " . join(' ', @{$cmd->{tags}});
+ }
+ if (!$command && $curop eq '=') {
+ $command = " $curop";
+ }
+
+ if ($command) {
+ mailbts("tagging $bug", $base_command . $command);
+ }
+}
+
+=item B<affects> I<bug> [B<+>|B<->|B<=>] I<package> [I<package> ...]
+
+Indicates that a I<bug> affects a I<package> other than that against which it is filed, causing
+the I<bug> to be listed by default in the I<package> list of the other I<package>. This should
+generally be used where the I<bug> is severe enough to cause multiple reports from users to be
+assigned to the wrong package. At least one I<package> must be specified, unless
+the B<=> flag is used, where the command
+
+ bts affects <bug> =
+
+will remove all indications that I<bug> affects other packages.
+
+=cut
+
+sub bts_affects {
+ my $bug=checkbug(shift) or die "bts affects: mark what bug as affecting another package?\n";
+
+ if (! @_) {
+ die "bts affects: mark which package as affected?\n";
+ }
+ # Parse the rest of the command line.
+ my $command="affects $bug";
+ my $flag="";
+ if ($_[0] =~ /^[-+=]$/) {
+ $flag = $_[0];
+ $command .= " $flag";
+ shift;
+ } elsif ($_[0] =~ s/^([-+=])//) {
+ $flag = $1;
+ $command .= " $flag";
+ }
+
+ if ($flag ne '=' && ! @_) {
+ die "bts affects: mark which package as affected?\n";
+ }
+
+ foreach my $package (@_) {
+ $command .= " $package";
+ }
+
+ mailbts("affects $bug", $command);
+}
+
+=item B<user> I<email>
+
+Specify a user I<email> address before using the B<usertags> command.
+
+=cut
+
+sub bts_user {
+ my $email=checkemail(shift) or die "bts user: set user to what email address?\n";
+ if (! length $email) {
+ die "bts user: set user to what email address?\n";
+ }
+ opts_done(@_);
+ if ($email ne $last_user) {
+ mailbts("user $email", "user $email");
+ }
+ $last_user = $email;
+}
+
+=item B<usertag> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]
+
+=item B<usertags> I<bug> [B<+>|B<->|B<=>] I<tag> [I<tag> ...]
+
+Set or unset a user tag on a I<bug>. The I<tag> must be the exact tag name wanted;
+there are no defaults or checking of tag names. Multiple tags may be
+specified as well. The two commands (B<usertag> and B<usertags>) are identical.
+At least one I<tag> must be specified, unless the B<=> flag is used, where the
+command
+
+ bts usertags <bug> =
+
+will remove all user tags from the specified I<bug>.
+
+=cut
+
+sub bts_usertags {
+ my $bug=checkbug(shift) or die "bts usertags: tag what bug?\n";
+ if (! @_) {
+ die "bts usertags: set what user tag?\n";
+ }
+ # Parse the rest of the command line.
+ my $command="usertags $bug";
+ my $flag="";
+ if ($_[0] =~ /^[-+=]$/) {
+ $flag = $_[0];
+ $command .= " $flag";
+ shift;
+ } elsif ($_[0] =~ s/^([-+=])//) {
+ $flag = $1;
+ $command .= " $flag";
+ }
+
+ if ($flag ne '=' && ! @_) {
+ die "bts usertags: set what user tag?\n";
+ }
+
+ $command .= sprintf(' %s', join(' ', @_));
+
+ mailbts("usertagging $bug", $command);
+}
+
+=item B<claim> I<bug> [I<claim>]
+
+Record that you have claimed a I<bug> (e.g. for a bug squashing party).
+I<claim> should be a unique token allowing the bugs you have claimed
+to be identified; an e-mail address is often used.
+
+If no I<claim> is specified, the environment variable B<DEBEMAIL>
+or B<EMAIL> (checked in that order) is used.
+
+=cut
+
+sub bts_claim {
+ my $bug=checkbug(shift) or die "bts claim: claim what bug?\n";
+ my $claim=checkemail(shift) || $ENV{'DEBEMAIL'} || $ENV{'EMAIL'} || "";
+ if (! length $claim) {
+ die "bts claim: use what claim token?\n";
+ }
+ $claim=extractemail($claim);
+ bts_user("bugsquash\@qa.debian.org");
+ bts_usertags("$bug" , "+$claim");
+}
+
+=item B<unclaim> I<bug> [I<claim>]
+
+Remove the record that you have claimed a bug.
+
+If no I<claim> is specified, the environment variable B<DEBEMAIL>
+or B<EMAIL> (checked in that order) is used.
+
+=cut
+
+sub bts_unclaim {
+ my $bug=checkbug(shift) or die "bts unclaim: unclaim what bug?\n";
+ my $claim=checkemail(shift) || $ENV{'DEBEMAIL'} || $ENV{'EMAIL'} || "";
+ if (! length $claim) {
+ die "bts unclaim: use what claim token?\n";
+ }
+ $claim=extractemail($claim);
+ bts_user("bugsquash\@qa.debian.org");
+ bts_usertags("$bug" , "-$claim");
+}
+
+=item B<severity> I<bug> I<severity>
+
+Change the I<severity> of a I<bug>. Available severities are: B<wishlist>, B<minor>, B<normal>,
+B<important>, B<serious>, B<grave>, B<critical>. The severity may be abbreviated to any
+unique substring.
+
+=cut
+
+sub bts_severity {
+ my $bug=checkbug(shift) or die "bts severity: change the severity of what bug?\n";
+ my $severity=lc(shift) or die "bts severity: set \#$bug\'s severity to what?\n";
+ my @matches = grep /^\Q$severity\E/i, @valid_severities;
+ if (@matches != 1) {
+ die "bts severity: \"$severity\" is not a valid severity.\nChoose from: @valid_severities\n";
+ }
+ opts_done(@_);
+ mailbts("severity of $bug is $matches[0]", "severity $bug $matches[0]");
+}
+
+=item B<forwarded> I<bug> I<address>
+
+Mark the I<bug> as forwarded to the given I<address> (usually an email address or
+a URL for an upstream bug tracker).
+
+=cut
+
+sub bts_forwarded {
+ my $bug=checkbug(shift) or die "bts forwarded: mark what bug as forwarded?\n";
+ my $email=join(' ', @_);
+ if ($email =~ /$btsserver/) {
+ die "bts forwarded: We don't forward bugs within $btsserver, use bts reassign instead\n";
+ }
+ if (! length $email) {
+ die "bts forwarded: mark bug $bug as forwarded to what email address?\n";
+ }
+ mailbts("bug $bug is forwarded to $email", "forwarded $bug $email");
+}
+
+=item B<notforwarded> I<bug>
+
+Mark a I<bug> as not forwarded.
+
+=cut
+
+sub bts_notforwarded {
+ my $bug=checkbug(shift) or die "bts notforwarded: what bug?\n";
+ opts_done(@_);
+ mailbts("bug $bug is not forwarded", "notforwarded $bug");
+}
+
+=item B<package> [I<package> ...]
+
+The following commands will only apply to bugs against the listed
+I<package>s; this acts as a safety mechanism for the BTS. If no packages
+are listed, this check is turned off again.
+
+=cut
+
+sub bts_package {
+ if (@_) {
+ bts_limit(map { "package:$_" } @_);
+ } else {
+ bts_limit('package');
+ }
+}
+
+=item B<limit> [I<key>[B<:>I<value>]] ...
+
+The following commands will only apply to bugs which meet the specified
+criterion; this acts as a safety mechanism for the BTS. If no I<value>s are
+listed, the limits for that I<key> are turned off again. If no I<key>s are
+specified, all limits are reset.
+
+=over 8
+
+=item B<submitter>
+
+E-mail address of the submitter.
+
+=item B<date>
+
+Date the bug was submitted.
+
+=item B<subject>
+
+Subject of the bug.
+
+=item B<msgid>
+
+Message-id of the initial bug report.
+
+=item B<package>
+
+Binary package name.
+
+=item B<source>
+
+Source package name.
+
+=item B<tag>
+
+Tags applied to the bug.
+
+=item B<severity>
+
+Bug severity.
+
+=item B<owner>
+
+Bug's owner.
+
+=item B<affects>
+
+Bugs affecting this package.
+
+=item B<archive>
+
+Whether to search archived bugs or normal bugs; defaults to B<0>
+(i.e. only search normal bugs). As a special case, if archive is
+B<both>, both archived and unarchived bugs are returned.
+
+=back
+
+For example, to limit the set of bugs affected by the subsequent control
+commands to those submitted by jrandomdeveloper@example.com and tagged
+B<wontfix>, one would use
+
+bts limit submitter:jrandomdeveloper@example.com tag:wontfix
+
+If a key is used multiple times then the set of bugs selected includes
+those matching any of the supplied values; for example
+
+bts limit package:foo severity:wishlist severity:minor
+
+only applies the subsequent control commands to bugs of package foo with
+either B<wishlist> or B<minor> severity.
+
+=cut
+
+sub bts_limit {
+ my @args=@_;
+ my %limits;
+ # Ensure we're using the limit fields that debbugs expects. These are the
+ # keys from Debbugs::Status::fields
+ my %valid_keys = (submitter => 'originator',
+ date => 'date',
+ subject => 'subject',
+ msgid => 'msgid',
+ package => 'package',
+ source => 'source',
+ src => 'source',
+ tag => 'keywords',
+ severity => 'severity',
+ owner => 'owner',
+ affects => 'affects',
+ archive => 'unarchived',
+ );
+ for my $arg (@args) {
+ my ($key,$value) = split /:/, $arg, 2;
+ next unless $key;
+ if (!defined $value) {
+ die "bts limit: No value given for '$key'\n";
+ }
+ if (exists $valid_keys{$key}) {
+ # Support "$key:" by making it look like "$key", i.e. no $value
+ # defined
+ undef $value unless length($value);
+ if ($key eq "archive") {
+ if (defined $value) {
+ # limit looks for unarchived, not archive. Verify we have
+ # a valid value and then switch the boolean value to match
+ # archive => unarchive
+ if ($value =~ /^yes|1|true|on$/i) {
+ $value = 0;
+ } elsif ($value =~ /^no|0|false|off$/i) {
+ $value = 1;
+ }
+ elsif ($value ne 'both') {
+ die "bts limit: Invalid value ($value) for archive\n";
+ }
+ }
+ }
+ $key = $valid_keys{$key};
+ if (defined $value and $value) {
+ push(@{$limits{$key}},$value);
+ } else {
+ $limits{$key} = ();
+ }
+ } elsif ($key eq 'clear') {
+ %limits = ();
+ $limits{$key} = 1;
+ } else {
+ die "bts limit: Unrecognized key: $key\n";
+ }
+ }
+ for my $key (keys %limits) {
+ if ($key eq 'clear') {
+ mailbts('clear all limit(s)', 'limit clear');
+ next;
+ }
+ if (defined $limits{$key}) {
+ my $value = join ' ', @{$limits{$key}};
+ mailbts("limit $key to $value", "limit $key $value");
+ } else {
+ mailbts("clear $key limit", "limit $key");
+ }
+ }
+}
+
+=item B<owner> I<bug> I<owner-email>
+
+Change the "owner" address of a I<bug>, with B<!> meaning
+`use the address on the current email as the new owner address'.
+
+The owner of a bug accepts responsibility for dealing with it.
+
+=cut
+
+sub bts_owner {
+ my $bug=checkbug(shift) or die "bts owner: change owner of what bug?\n";
+ my $owner=checkemail(shift, 1) or die "bts owner: change owner to what?\n";
+ opts_done(@_);
+ mailbts("owner $bug", "owner $bug $owner");
+}
+
+=item B<noowner> I<bug>
+
+Mark a bug as having no "owner".
+
+=cut
+
+sub bts_noowner {
+ my $bug=checkbug(shift) or die "bts noowner: what bug?\n";
+ opts_done(@_);
+ mailbts("bug $bug has no owner", "noowner $bug");
+}
+
+=item B<subscribe> I<bug> [I<email>]
+
+Subscribe the given I<email> address to the specified I<bug> report. If no email
+address is specified, the environment variable B<DEBEMAIL> or B<EMAIL> (in that
+order) is used. If those are not set, or B<!> is given as email address,
+your default address will be used.
+
+After executing this command, you will be sent a subscription confirmation to
+which you have to reply. When subscribed to a bug report, you receive all
+relevant emails and notifications. Use the unsubscribe command to unsubscribe.
+
+=cut
+
+sub bts_subscribe {
+ my $bug=checkbug(shift) or die "bts subscribe: subscribe to what bug?\n";
+ my $email=checkemail(shift, 1);
+ $email=lc($email) if defined $email;
+ if (defined $email and $email eq '!') { $email = undef; }
+ else {
+ $email ||= $ENV{'DEBEMAIL'};
+ $email ||= $ENV{'EMAIL'};
+ $email = extractemail($email) if defined $email;
+ }
+ opts_done(@_);
+ mailto('subscription request for bug #' . $bug, '',
+ $bug . '-subscribe@' . $btsserver, $email);
+}
+
+=item B<unsubscribe> I<bug> [I<email>]
+
+Unsubscribe the given email address from the specified bug report. As with
+subscribe above, if no email address is specified, the environment variables
+B<DEBEMAIL> or B<EMAIL> (in that order) is used. If those are not set, or B<!> is
+given as email address, your default address will be used.
+
+After executing this command, you will be sent an unsubscription confirmation
+to which you have to reply. Use the B<subscribe> command to, well, subscribe.
+
+=cut
+
+sub bts_unsubscribe {
+ my $bug=checkbug(shift) or die "bts unsubscribe: unsubscribe from what bug?\n";
+ my $email=checkemail(shift, 1);
+ $email = lc($email) if defined $email;
+ if (defined $email and $email eq '!') { $email = undef; }
+ else {
+ $email ||= $ENV{'DEBEMAIL'};
+ $email ||= $ENV{'EMAIL'};
+ $email = extractemail($email) if defined $email;
+ }
+ opts_done(@_);
+ mailto('unsubscription request for bug #' . $bug, '',
+ $bug . '-unsubscribe@' . $btsserver, $email);
+}
+
+=item B<reportspam> I<bug> ...
+
+The B<reportspam> command allows you to report a I<bug> report as containing spam.
+It saves one from having to go to the bug web page to do so.
+
+=cut
+
+sub bts_reportspam {
+ my @bugs;
+
+ if (! have_lwp()) {
+ die "$progname: Couldn't run bts reportspam: $lwp_broken\n";
+ }
+
+ foreach (@_) {
+ my $bug=checkbug($_) or die "bts reportspam: some bug number(s) not valid\n";
+ push @bugs, $bug;
+ }
+ @bugs >= 1 or
+ die "bts reportspam: at least one bug number must be specified\n";
+
+ init_agent() unless $ua;
+ foreach my $bug (@bugs) {
+ my $url = "$btscgispamurl?bug=$bug;ok=ok";
+ if ($noaction) {
+ print "bts reportspam: would report $bug as containing spam (URL: " .
+ $url . ")\n";
+ } else {
+ my $request = HTTP::Request->new('GET', $url);
+ my $response = $ua->request($request);
+ if (! $response->is_success) {
+ warn "$progname: failed to report $bug as containing spam: " .
+ $response->status_line . "\n";
+ }
+ }
+ }
+}
+
+=item B<spamreport> I<bug> ...
+
+B<spamreport> is a synonym for B<reportspam>.
+
+=cut
+
+sub bts_spamreport {
+ goto &bts_reportspam;
+}
+
+=item B<cache> [I<options>] [I<maint_email> | I<pkg> | B<src:>I<pkg> | B<from:>I<submitter>]
+
+=item B<cache> [I<options>] [B<release-critical> | B<release-critical/>... | B<RC>]
+
+Generate or update a cache of bug reports for the given email address
+or package. By default it downloads all bugs belonging to the email
+address in the B<DEBEMAIL> environment variable (or the B<EMAIL> environment
+variable if B<DEBEMAIL> is unset). This command may be repeated to cache
+bugs belonging to several people or packages. If multiple packages or
+addresses are supplied, bugs belonging to any of the arguments will be
+cached; those belonging to more than one of the arguments will only be
+downloaded once. The cached bugs are stored in F<~/.devscripts_cache/bts/>.
+
+You can use the cached bugs with the B<-o> switch. For example:
+
+ bts -o bugs
+ bts -o show 12345
+
+Also, B<bts> will update the files in it in a piecemeal fashion as it
+downloads information from the BTS using the B<show> command. You might
+thus set up the cache, and update the whole thing once a week, while
+letting the automatic cache updates update the bugs you frequently
+refer to during the week.
+
+Some options affect the behaviour of the B<cache> command. The first is
+the setting of B<--cache-mode>, which controls how much B<bts> downloads
+of the referenced links from the bug page, including boring bits such
+as the acknowledgement emails, emails to the control bot, and the mbox
+version of the bug report. It can take three values: B<min> (the
+minimum), B<mbox> (download the minimum plus the mbox version of the bug
+report) or B<full> (the whole works). The second is B<--force-refresh> or
+B<-f>, which forces the download, even if the cached bug report is
+up-to-date. The B<--include-resolved> option indicates whether bug
+reports marked as resolved should be downloaded during caching.
+
+Each of these is configurable from the configuration
+file, as described below. They may also be specified after the
+B<cache> command as well as at the start of the command line.
+
+Finally, B<-q> or B<--quiet> will suppress messages about caches being
+up-to-date, and giving the option twice will suppress all cache
+messages (except for error messages).
+
+Beware of caching RC, though: it will take a LONG time! (With 1000+
+RC bugs and a delay of 5 seconds between bugs, you're looking at a
+minimum of 1.5 hours, and probably significantly more than that.)
+
+=cut
+
+sub bts_cache {
+ @ARGV = @_;
+ my ($sub_cachemode, $sub_refreshmode, $sub_updatemode);
+ my $sub_quiet = $quiet;
+ my $sub_includeresolved = $includeresolved;
+ GetOptions("cache-mode|cachemode=s" => \$sub_cachemode,
+ "f" => \$sub_refreshmode,
+ "force-refresh!" => \$sub_refreshmode,
+ "only-new!" => \$sub_updatemode,
+ "q|quiet+" => \$sub_quiet,
+ "include-resolved!" => \$sub_includeresolved,
+ )
+ or die "$progname: unknown options for cache command\n";
+ @_ = @ARGV; # whatever's left
+
+ if (defined $sub_refreshmode) {
+ ($refreshmode, $sub_refreshmode) = ($sub_refreshmode, $refreshmode);
+ }
+ if (defined $sub_updatemode) {
+ ($updatemode, $sub_updatemode) = ($sub_updatemode, $updatemode);
+ }
+ if (defined $sub_cachemode) {
+ if ($sub_cachemode =~ /^(min|mbox|full)$/) {
+ ($cachemode, $sub_cachemode) = ($sub_cachemode, $cachemode);
+ } else {
+ warn "$progname: ignoring invalid --cache-mode $sub_cachemode;\nmust be one of min, mbox, full.\n";
+ }
+ }
+ # This may be a no-op, we don't mind
+ ($quiet, $sub_quiet) = ($sub_quiet, $quiet);
+ ($includeresolved, $sub_includeresolved) = ($sub_includeresolved, $includeresolved);
+
+ prunecache();
+ if (! have_lwp()) {
+ die "$progname: Couldn't run bts cache: $lwp_broken\n";
+ }
+
+ if (! -d $cachedir) {
+ if (! -d dirname($cachedir)) {
+ mkdir(dirname($cachedir))
+ or die "$progname: couldn't mkdir ".dirname($cachedir).": $!\n";
+ }
+ mkdir($cachedir)
+ or die "$progname: couldn't mkdir $cachedir: $!\n";
+ }
+
+ download("css/bugs.css");
+
+ my $tocache;
+ if (@_ > 0) { $tocache=sanitizething(shift); }
+ else { $tocache=''; }
+
+ if (! length $tocache) {
+ $tocache=$ENV{'DEBEMAIL'} || $ENV{'EMAIL'} || '';
+ if ($tocache =~ /^.*\s<(.*)>\s*$/) { $tocache = $1; }
+ }
+ if (! length $tocache) {
+ die "bts cache: cache what?\n";
+ }
+
+ my $sub_thgopts = '';
+ $sub_thgopts = ';pend-exc=done'
+ if (! $includeresolved && $tocache !~ /^release-critical/);
+
+ my %bugs = ();
+ my %oldbugs = ();
+
+ do {
+ %oldbugs = (%oldbugs, map { $_ => 1 } bugs_from_thing($tocache, $sub_thgopts));
+
+ # download index
+ download($tocache, $sub_thgopts, 1);
+
+ %bugs = (%bugs, map { $_ => 1 } bugs_from_thing($tocache, $sub_thgopts));
+
+ $tocache = sanitizething(shift);
+ } while (defined $tocache);
+
+ # remove old bugs from cache
+ if (keys %oldbugs) {
+ tie (%timestamp, "Devscripts::DB_File_Lock", $timestampdb,
+ O_RDWR()|O_CREAT(), 0600, $DB_HASH, "write")
+ or die "$progname: couldn't open DB file $timestampdb for writing: $!\n"
+ if ! tied %timestamp;
+ }
+
+ foreach my $bug (keys %oldbugs) {
+ if (! $bugs{$bug}) {
+ deletecache($bug);
+ }
+ }
+
+ untie %timestamp;
+
+ # download bugs
+ my $bugcount = 1;
+ my $bugtotal = scalar keys %bugs;
+ foreach my $bug (keys %bugs) {
+ if (-f cachefile($bug, '') and $updatemode) {
+ print "Skipping $bug as requested ... $bugcount/$bugtotal\n"
+ if !$quiet;
+ $bugcount++;
+ next;
+ }
+ download($bug, '', 1, 0, $bugcount, $bugtotal);
+ sleep $opt_cachedelay;
+ $bugcount++;
+ }
+
+ # revert options
+ if (defined $sub_refreshmode) {
+ $refreshmode = $sub_refreshmode;
+ }
+ if (defined $sub_updatemode) {
+ $updatemode = $sub_updatemode;
+ }
+ if (defined $sub_cachemode) {
+ $cachemode = $sub_cachemode;
+ }
+ $quiet = $sub_quiet;
+ $includeresolved = $sub_includeresolved;
+}
+
+=item B<cleancache> I<package> | B<src:>I<package> | I<maintainer>
+
+=item B<cleancache from:>I<submitter> | B<tag:>I<tag> | B<usertag:>I<tag> | I<number> | B<ALL>
+
+Clean the cache for the specified I<package>, I<maintainer>, etc., as
+described above for the B<bugs> command, or clean the entire cache if
+B<ALL> is specified. This is useful if you are going to have permanent
+network access or if the database has become corrupted for some
+reason. Note that for safety, this command does not default to the
+value of B<DEBEMAIL> or B<EMAIL>.
+
+=cut
+
+sub bts_cleancache {
+ prunecache();
+ my $toclean=sanitizething(shift);
+ if (! defined $toclean) {
+ die "bts cleancache: clean what?\n";
+ }
+ if (! -d $cachedir) {
+ return;
+ }
+ if ($toclean eq 'ALL') {
+ if (system("/bin/rm", "-rf", $cachedir) >> 8 != 0) {
+ warn "Problems cleaning cache: $!\n";
+ }
+ return;
+ }
+
+ # clean index
+ tie (%timestamp, "Devscripts::DB_File_Lock", $timestampdb,
+ O_RDWR()|O_CREAT(), 0600, $DB_HASH, "write")
+ or die "$progname: couldn't open DB file $timestampdb for writing: $!\n"
+ if ! tied %timestamp;
+
+ if ($toclean =~ /^\d+$/) {
+ # single bug only
+ deletecache($toclean);
+ } else {
+ my @bugs_to_clean = bugs_from_thing($toclean);
+ deletecache($toclean);
+
+ # remove old bugs from cache
+ foreach my $bug (@bugs_to_clean) {
+ deletecache($bug);
+ }
+ }
+
+ untie %timestamp;
+}
+
+# Add any new commands here.
+
+=item B<version>
+
+Display version and copyright information.
+
+=cut
+
+sub bts_version {
+ print <<"EOF";
+$progname version $version
+Copyright (C) 2001-2003 by Joey Hess <joeyh\@debian.org>.
+Modifications Copyright (C) 2002-2004 by Julian Gilbey <jdg\@debian.org>.
+Modifications Copyright (C) 2007 by Josh Triplett <josh\@freedesktop.org>.
+It is licensed under the terms of the GPL, either version 2 of the
+License, or (at your option) any later version.
+EOF
+}
+
+=item B<help>
+
+Display a short summary of commands, suspiciously similar to parts of this
+man page.
+
+=cut
+
+# Other supporting subs
+
+# This must be the last bts_* sub
+sub bts_help {
+ my $inlist = 0;
+ my $insublist = 0;
+ print <<"EOF";
+Usage: $progname [options] command [args] [\#comment] [.|, command ... ]
+Valid options are:
+ -o, --offline Do not attempt to connect to BTS for show/bug
+ commands: use cached copy
+ --online, --no-offline Attempt to connect (default)
+ -n, --no-action Do not send emails but print them to standard output.
+ --no-cache Do not attempt to cache new versions of BTS
+ pages when performing show/bug commands
+ --cache Do attempt to cache new versions of BTS
+ pages when performing show/bug commands (default)
+ --cache-mode={min|mbox|full}
+ How much to cache when we are caching: the sensible
+ bare minimum (default), the mbox as well, or
+ everything?
+ --cache-delay=seconds Time to sleep between each download when caching.
+ -m, --mbox With show or bugs, open a mailreader to read the mbox
+ version instead
+ --mailreader=CMD Run CMD to read an mbox; default is 'mutt -f %s'
+ (must contain %s, which is replaced by mbox name)
+ --cc-addr=CC_EMAIL_ADDRESS
+ Send carbon copies to a list of users.
+ CC_EMAIL_ADDRESS should be a comma-separated list of
+ e-mail addresses.
+ --use-default-cc Send carbon copies to any addresses specified in the
+ configuration file BTS_DEFAULT_CC (default)
+ --no-use-default-cc Do not do so
+ --sendmail=cmd Sendmail command to use (default /usr/sbin/sendmail)
+ --mutt Use mutt for sending of mails.
+ --no-mutt Do not do so (default)
+ --smtp-host=host SMTP host to use
+ --smtp-username=user } Credentials to use when connecting to an SMTP
+ --smtp-password=pass } server which requires authentication
+ --smtp-helo=helo HELO to use when connecting to the SMTP server;
+ (defaults to the content of /etc/mailname)
+ --bts-server The name of the debbugs server to use
+ (default bugs.debian.org)
+ -f, --force-refresh Reload all bug reports being cached, even unchanged
+ ones
+ --no-force-refresh Do not do so (default)
+ --only-new Download only new bugs when caching. Do not check
+ for updates in bugs we already have.
+ --include-resolved Cache bugs marked as resolved (default)
+ --no-include-resolved Do not cache bugs marked as resolved
+ --no-ack Suppress BTS acknowledgment mails
+ --ack Do not do so (default)
+ -i, --interactive Prompt for confirmation before sending e-mail
+ --force-interactive Same as --interactive, with the exception that an
+ editor is spawned before confirmation is requested
+ --no-interactive Do not do so (default)
+ -q, --quiet Only display information about newly cached pages.
+ If given twice, only display error messages.
+ --no-conf, --noconf Do not read devscripts config files;
+ must be the first option given
+ -h, --help Display this message
+ -v, --version Display version and copyright info
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+
+Valid commands are:
+EOF
+ seek DATA, 0, 0;
+ while (<DATA>) {
+ $inlist = 1 if /^=over 4/;
+ next unless $inlist;
+ $insublist = 1 if /^=over [^4]/;
+ $insublist = 0 if /^=back/;
+ if (/^=item\sB<([^->].*)>/ and ! $insublist) {
+ if ($1 eq 'help') {
+ last;
+ }
+ # Strip POD markup before displaying and ensure we don't wrap
+ # longer lines
+ my $parser = Pod::BTS->new(width => 100);
+ $parser->no_whining(1);
+ $parser->output_fh(\*STDOUT);
+ $parser->parse_string_document($_);
+ }
+ }
+}
+
+# Strips any leading # or Bug# and trailing : from a thing if what's left is
+# a pure positive number;
+# also RC is a synonym for release-critical/other/all.html
+sub sanitizething {
+ my $bug = $_[0];
+ defined $bug or return undef;
+
+ return 'release-critical/other/all.html' if $bug eq 'RC';
+ return 'release-critical/index.html' if $bug eq 'release-critical';
+ $bug =~ s/^(?:(?:Bug)?\#)?(\d+):?$/$1/;
+ return $bug;
+}
+
+# Perform basic validation of an argument which should be an email address,
+# handling ! if allowed
+sub checkemail {
+ my $email=$_[0] or return;
+ my $allowbang=$_[1];
+
+ if ($email !~ /\@/ && (!$allowbang || $email ne '!')) {
+ return;
+ }
+
+ return $email;
+}
+
+# Validate a bug number. Strips out extraneous leading junk, allowing
+# for things like "#74041" and "Bug#94921"
+sub checkbug {
+ my $bug=$_[0] or return "";
+ my $quiet=$_[1] || 0; # used when we don't want warnings from checkbug
+
+ if ($bug eq 'it') {
+ if (not defined $it) {
+ die "$progname: You specified 'it', but no previous bug number referenced!\n";
+ }
+ } else {
+ $bug=~s/^(?:(?:bug)?\#)?(-?\d+):?$/$1/i;
+ if (! exists $clonedbugs{$bug} &&
+ (! length $bug || $bug !~ /^[0-9]+$/)) {
+ warn "\"$_[0]\" does not look like a bug number\n" unless $quiet;
+ return "";
+ }
+
+ # Valid, now set $it to this so that we can refer to it by 'it' later
+ $it = $bug;
+ }
+
+ return $it;
+}
+
+# Stores up some extra information for a mail to the bts.
+sub mailbts {
+ if ($subject eq '') {
+ $subject = $_[0];
+ }
+ elsif (length($subject) + length($_[0]) < 100) {
+ $subject .= ", $_[0]" if length($_[0]);
+ }
+ elsif ($subject !~ / ...$/) {
+ $subject .= " ...";
+ }
+ $body .= "$comment[$index]\n" if $comment[$index];
+ $body .= "$_[1]\n";
+}
+
+# Extract an array of email addresses from a string
+sub extract_addresses {
+ my $s = shift;
+ my @addresses;
+
+ # Original regular expression from git-send-email, slightly modified
+ while ($s =~ /([^,<>"\s\@]+\@[^.,<>"\s@]+(?:\.[^.,<>"\s\@]+)+)(.*)/) {
+ push @addresses, $1;
+ $s = $2;
+ }
+ return @addresses;
+}
+
+# Send one full mail message using the smtphost or sendmail.
+sub send_mail {
+ my ($from, $to, $cc, $subject, $body) = @_;
+
+ my @fromaddresses = extract_addresses($from);
+ my $fromaddress = $fromaddresses[0];
+ # Message-ID algorithm from git-send-email
+ my $msgid = sprintf("%s-%s", time(), int(rand(4200)))."-bts-$fromaddress";
+ my $date = strftime "%a, %d %b %Y %T %z", localtime;
+
+ my $message = fold_from_header("From: $from") . "\n";
+ $message .= "To: $to\n" if length $to;
+ $message .= "Cc: $cc\n" if length $cc;
+ $message .= "X-Debbugs-No-Ack: Yes\n" if $requestack==0;
+ $message .= "Subject: $subject\n"
+ . "Date: $date\n"
+ . "User-Agent: devscripts bts/$version$toolname\n"
+ . "Message-ID: <$msgid>\n"
+ . "\n";
+
+ $body = addfooter($body);
+ ($message, $body) = confirmmail($message, $body);
+
+ return if not defined $body;
+
+ $message .= "$body\n";
+ if ($noaction) {
+ print "$message\n";
+ }
+ elsif ($use_mutt) {
+ my ($fh,$filename) = tempfile("btsXXXXXX",
+ SUFFIX => ".mail",
+ DIR => File::Spec->tmpdir,
+ UNLINK => 1);
+ open (MAILOUT, ">&", $fh)
+ or die "$progname: writing to temporary file: $!\n";
+
+ print MAILOUT $message;
+
+ my $mailcmd = $muttcmd;
+ $mailcmd =~ s/\%([%s])/$1 eq '%' ? '%' : $filename/eg;
+
+ exec($mailcmd) or die "$progname: unable to start mailclient: $!";
+ }
+ elsif (length $smtphost) {
+ my $smtp;
+
+ if ($smtphost =~ m%^(?:(?:ssmtp|smtps)://)(.*)$%) {
+ my ($host, $port) = split(/:/, $1);
+ $port ||= '465';
+
+ if (have_smtp_ssl) {
+ $smtp = Net::SMTP::SSL->new($host, Port => $port,
+ Hello => $smtphelo) or die "$progname: failed to open SMTPS connection to $smtphost\n($@)\n";
+ } else {
+ die "$progname: Unable to establish SMTPS connection: $smtp_ssl_broken\n";
+ }
+ } else {
+ my ($host, $port) = split(/:/, $smtphost);
+ $port ||= '25';
+
+ $smtp = Net::SMTP->new($host, Port => $port, Hello => $smtphelo)
+ or die "$progname: failed to open SMTP connection to $smtphost\n($@)\n";
+ }
+ if ($smtpuser) {
+ if (have_authen_sasl) {
+ $smtppass = getpass() if not $smtppass;
+ $smtp->auth($smtpuser, $smtppass)
+ or die "$progname: failed to authenticate to $smtphost\n($@)\n";
+ } else {
+ die "$progname: failed to authenticate to $smtphost: $authen_sasl_broken\n";
+ }
+ }
+ $smtp->mail($fromaddress)
+ or die "$progname: failed to set SMTP from address $fromaddress\n($@)\n";
+ my @addresses = extract_addresses($to);
+ push @addresses, extract_addresses($cc);
+ foreach my $address (@addresses) {
+ $smtp->recipient($address)
+ or die "$progname: failed to set SMTP recipient $address\n($@)\n";
+ }
+ $smtp->data($message)
+ or die "$progname: failed to send message as SMTP DATA\n($@)\n";
+ $smtp->quit
+ or die "$progname: failed to quit SMTP connection\n($@)\n";
+ }
+ else {
+ my $pid = open(MAIL, "|-");
+ if (! defined $pid) {
+ die "$progname: Couldn't fork: $!\n";
+ }
+ $SIG{'PIPE'} = sub { die "$progname: pipe for $sendmailcmd broke\n"; };
+ if ($pid) {
+ # parent
+ print MAIL $message;
+ close MAIL or die "$progname: $sendmailcmd error: $!\n";
+ }
+ else {
+ # child
+ if ($debug) {
+ exec("/bin/cat")
+ or die "$progname: error running cat: $!\n";
+ } else {
+ my @mailcmd = split ' ', $sendmailcmd;
+ push @mailcmd, "-t" if $sendmailcmd =~ /$sendmail_t/;
+ exec @mailcmd
+ or die "$progname: error running $sendmailcmd: $!\n";
+ }
+ }
+ }
+}
+
+sub generate_packages_cc {
+ my @ccs;
+ if (keys %ccpackages && $packagesserver) {
+ push @ccs, map { "$_\@$packagesserver" } sort keys %ccpackages;
+ }
+ if (keys %ccsubmitters && $btsserver) {
+ push @ccs, map { "$_\@$btsserver" } sort keys %ccsubmitters;
+ }
+ return join(', ', @ccs);
+}
+
+# Sends all cached mail to the bts (duh).
+sub mailbtsall {
+ my $subject=shift;
+ my $body=shift;
+
+ my $charset = `locale charmap`;
+ chomp $charset;
+ $charset =~ s/^ANSI_X3\.4-19(68|86)$/US-ASCII/;
+ $subject = MIME_encode_mimewords($subject, 'Charset' => $charset);
+
+ if ($forceinteractive) {
+ $ccemail .= ", " if length $ccemail;
+ $ccemail .= generate_packages_cc();
+ }
+ if ($ccsecurity) {
+ my $comma = "";
+ if ($ccemail) {
+ $comma = ", ";
+ }
+ $ccemail = "$ccemail$comma$ccsecurity";
+ }
+ if ($ENV{'DEBEMAIL'} || $ENV{'EMAIL'}) {
+ # We need to fake the From: line
+ my ($email, $name);
+ if (exists $ENV{'DEBFULLNAME'}) { $name = $ENV{'DEBFULLNAME'}; }
+ if (exists $ENV{'DEBEMAIL'}) {
+ $email = $ENV{'DEBEMAIL'};
+ if ($email =~ /^(.*?)\s+<(.*)>\s*$/) {
+ $name ||= $1;
+ $email = $2;
+ }
+ }
+ if (exists $ENV{'EMAIL'}) {
+ if ($ENV{'EMAIL'} =~ /^(.*?)\s+<(.*)>\s*$/) {
+ $name ||= $1;
+ $email ||= $2;
+ } else {
+ $email ||= $ENV{'EMAIL'};
+ }
+ }
+ if (! $name) {
+ # Perhaps not ideal, but it will have to do
+ $name = (getpwuid($<))[6];
+ $name =~ s/,.*//;
+ }
+ my $from = $name ? "$name <$email>" : $email;
+ $from = MIME_encode_mimewords($from, 'Charset' => $charset);
+
+ send_mail($from, $btsemail, $ccemail, $subject, $body);
+ }
+ else { # No DEBEMAIL
+ my $header = "";
+
+ $header = "To: $btsemail\n";
+ $header .= "Cc: $ccemail\n" if length $ccemail;
+ $header .= "X-Debbugs-No-Ack: Yes\n" if $requestack==0;
+ $header .= "Subject: $subject\n"
+ . "User-Agent: devscripts bts/$version$toolname\n"
+ . "\n";
+
+ $body = addfooter($body);
+ ($header, $body) = confirmmail($header, $body);
+
+ return if not defined $body;
+
+ if ($noaction) {
+ print "$header$body\n";
+ return;
+ }
+
+ my $pid = open(MAIL, "|-");
+ if (! defined $pid) {
+ die "$progname: Couldn't fork: $!\n";
+ }
+ $SIG{'PIPE'} = sub { die "$progname: pipe for $sendmailcmd broke\n"; };
+ if ($pid) {
+ # parent
+ print MAIL $header;
+ print MAIL $body;
+ close MAIL or die "$progname: $sendmailcmd: $!\n";
+ }
+ else {
+ # child
+ if ($debug) {
+ exec("/bin/cat")
+ or die "$progname: error running cat: $!\n";
+ } else {
+ my @mailcmd = split ' ', $sendmailcmd;
+ push @mailcmd, "-t" if $sendmailcmd =~ /$sendmail_t/;
+ exec @mailcmd
+ or die "$progname: error running $sendmailcmd: $!\n";
+ }
+ }
+ }
+}
+
+sub confirmmail {
+ my ($header, $body) = @_;
+
+ return ($header, $body) if $noaction;
+
+ $body = edit($body) if $forceinteractive;
+ my $setHeader = 0;
+ if ($interactive) {
+ while(1) {
+ print "\n", $header, "\n", $body, "\n---\n";
+ print "OK to send? [Y/n/e] ";
+ $_ = <STDIN>;
+ if (/^n/i) {
+ $body = undef;
+ last;
+ } elsif (/^(y|$)/i) {
+ last;
+ } elsif (/^e/i) {
+ # Since the user has chosen to edit the message, we go ahead
+ # and add the $ccpackages Ccs (if they haven't already been
+ # added due to $forceinteractive).
+ if (!$forceinteractive && !$setHeader) {
+ $setHeader = 1;
+ my $ccs = generate_packages_cc();
+ if ($header =~ m/^Cc: (.*?)$/m) {
+ $ccs = "$1, $ccs";
+ $header =~ s/^Cc: .*?$/Cc: $ccs/m;
+ }
+ else {
+ $header =~ s/^(To: .*?)$/$1\nCc: $ccs/m;
+ }
+ }
+ $body = edit($body);
+ }
+ }
+ }
+
+ return ($header, $body);
+}
+
+sub addfooter() {
+ my $body = shift;
+
+ $body .= "thanks\n";
+ if ($forceinteractive) {
+ if (-r $ENV{'HOME'} . "/.signature") {
+ if (open SIG, "<", $ENV{'HOME'} . "/.signature") {
+ $body .= "-- \n";
+ while(<SIG>) {
+ $body .= $_;
+ }
+ close SIG;
+ }
+ }
+ }
+
+ return $body;
+}
+
+sub getpass() {
+ system "stty -echo cbreak </dev/tty";
+ die "$progname: error disabling stty echo\n" if $?;
+ print "\a${smtpuser}";
+ print "\@$smtphost" if $smtpuser !~ /\@/;
+ print "'s SMTP password: ";
+ $_ = <STDIN>;
+ chomp;
+ print "\n";
+ system "stty echo -cbreak </dev/tty";
+ die "$progname: error enabling stty echo\n" if $?;
+ return $_;
+}
+
+sub extractemail() {
+ my $thing=shift or die "$progname: extract e-mail from what?\n";
+
+ if ($thing =~ /^(.*?)\s+<(.*)>\s*$/) {
+ $thing = $2;
+ }
+
+ return $thing;
+}
+
+# A simplified version of mailbtsall which sends one message only to
+# a specified address using the specified email From: header
+sub mailto {
+ my ($subject, $body, $to, $from) = @_;
+
+ if (defined($from) || $noaction) {
+ send_mail($from, $to, '', $subject, $body);
+ }
+ else { # No $from
+ unless (system("command -v mailx >/dev/null 2>&1") == 0) {
+ die "$progname: You need to either specify an email address (say using DEBEMAIL)\nor have the bsd-mailx package (or another package providing mailx) installed\nto send mail!\n";
+ }
+ my $pid = open(MAIL, "|-");
+ if (! defined $pid) {
+ die "$progname: Couldn't fork: $!\n";
+ }
+ $SIG{'PIPE'} = sub { die "$progname: pipe for mailx broke\n"; };
+ if ($pid) {
+ # parent
+ print MAIL $body;
+ close MAIL or die "$progname: mailx: $!\n";
+ }
+ else {
+ # child
+ if ($debug) {
+ exec("/bin/cat")
+ or die "$progname: error running cat: $!\n";
+ } else {
+ exec("mailx", "-s", $subject, $to)
+ or die "$progname: error running mailx: $!\n";
+ }
+ }
+ }
+}
+
+# The following routines are taken from a patched version of MIME::Words
+# posted at http://mail.nl.linux.org/linux-utf8/2002-01/msg00242.html
+# by Richard =?utf-8?B?xIxlcGFz?= (Chepas) <rch@richard.eu.org>
+
+sub MIME_encode_B {
+ my $str = shift;
+ require MIME::Base64;
+ MIME::Base64::encode_base64($str, '');
+}
+
+sub MIME_encode_Q {
+ my $str = shift;
+ $str =~ s{([_\?\=\015\012\t $NONPRINT])}{$1 eq ' ' ? '_' : sprintf("=%02X", ord($1))}eog; # RFC-2047, Q rule 3
+ $str;
+}
+
+sub MIME_encode_mimeword {
+ my $word = shift;
+ my $encoding = uc(shift || 'Q');
+ my $charset = uc(shift || 'ISO-8859-1');
+ my $encfunc = (($encoding eq 'Q') ? \&MIME_encode_Q : \&MIME_encode_B);
+ "=?$charset?$encoding?" . &$encfunc($word) . "?=";
+}
+
+sub MIME_encode_mimewords {
+ my ($rawstr, %params) = @_;
+ # check if we have something to encode
+ $rawstr !~ /[$NONPRINT]/o and $rawstr !~ /\=\?/o and return $rawstr;
+ my $charset = $params{Charset} || 'ISO-8859-1';
+ # if there is 1/3 unsafe bytes, the Q encoded string will be 1.66 times
+ # longer and B encoded string will be 1.33 times longer than original one
+ my $encoding = lc($params{Encoding} ||
+ (length($rawstr) > 3*($rawstr =~ tr/[\x00-\x1F\x7F-\xFF]//) ? 'q':'b'));
+
+ # Encode any "words" with unsafe bytes.
+ my ($last_token, $last_word_encoded, $token) = ('', 0);
+ $rawstr =~ s{([^\015\012\t ]+|[\015\012\t ]+)}{ # get next "word"
+ $token = $1;
+ if ($token =~ /[\015\012\t ]+/) { # white-space
+ $last_token = $token;
+ } else {
+ if ($token !~ /[$NONPRINT]/o and $token !~ /\=\?/o) {
+ # no unsafe bytes, leave as it is
+ $last_word_encoded = 0;
+ $last_token = $token;
+ } else {
+ # has unsafe bytes, encode to one or more encoded words
+ # white-space between two encoded words is skipped on
+ # decoding, so we should encode space in that case
+ $_ = $last_token =~ /[\015\012\t ]+/ && $last_word_encoded ? $last_token.$token : $token;
+ # We limit such words to about 18 bytes, to guarantee that the
+ # worst-case encoding give us no more than 54 + ~10 < 75 bytes
+ s{(.{1,15}[\x80-\xBF]{0,4})}{
+ # don't split multibyte characters - this regexp should
+ # work for UTF-8 characters
+ MIME_encode_mimeword($1, $encoding, $charset).' ';
+ }sxeg;
+ $_ = substr($_, 0, -1); # remove trailing space
+ $last_word_encoded = 1;
+ $last_token = $token;
+ $_;
+ }
+ }
+ }sxeg;
+ $rawstr;
+}
+
+# This is a stripped-down version of Mail::Header::_fold_line, but is
+# not as general-purpose as the original, so take care if using it elsewhere!
+# The heuristics are changed to prevent splitting in the middle of an
+# encoded word; we should not have any commas or semicolons!
+sub fold_from_header {
+ my $header = shift;
+ chomp $header; # We assume there wasn't a newline anyhow
+
+ my $maxlen = 76;
+ my $max = int($maxlen - 5); # 4 for leading spcs + 1 for [\,\;]
+
+ if(length($header) > $maxlen) {
+ # Split the line up:
+ # first split at a whitespace,
+ # else we are looking at a single word and we won't try to split
+ # it, even though we really ought to
+ # But this could only happen if someone deliberately uses a really
+ # long name with no spaces in it.
+ my @x;
+
+ push @x, $1
+ while($header =~ s/^\s*
+ ([^\"]{1,$max}\s
+ |[^\s\"]*(?:\"[^\"]*\"[ \t]?[^\s\"]*)+\s
+ |[^\s\"]+\s
+ )
+ //x);
+ push @x, $header;
+ map { s/\s*$// } @x;
+ if (@x > 1 and length($x[-1]) + length($x[-2]) < $max) {
+ $x[-2] .= " $x[-1]";
+ pop @x;
+ }
+ $x[0] =~ s/^\s*//;
+ $header = join("\n ", @x);
+ }
+
+ $header =~ s/^(\S+)\n\s*(?=\S)/$1 /so;
+ return $header;
+}
+
+########## Browsing and caching subroutines
+
+# Mirrors a given thing; if the online version is no newer than our
+# cached version, then returns an empty string, otherwise returns the
+# live thing as a (non-empty) string
+sub download {
+ my $thing=shift;
+ my $thgopts=shift ||'';
+ my $manual=shift; # true="bts cache", false="bts show/bug"
+ my $mboxing=shift; # true="bts --mbox show/bugs", and only if $manual=0
+ my $bug_current=shift; # current bug being downloaded if caching
+ my $bug_total=shift; # total things to download if caching
+ my $timestamp = 0;
+ my $versionstamp = '';
+ my $url;
+
+ my $oldcwd = getcwd;
+
+ # What URL are we to download?
+ if ($thgopts ne '') {
+ # have to be intelligent here :/
+ $url = thing_to_url($thing) . $thgopts;
+ } else {
+ # let the BTS be intelligent
+ $url = "$btsurl$thing";
+ }
+
+ if (! -d $cachedir) {
+ die "$progname: download() called but no cachedir!\n";
+ }
+
+ chdir($cachedir) || die "$progname: chdir $cachedir: $!\n";
+
+ if (-f cachefile($thing, $thgopts)) {
+ ($timestamp, $versionstamp) = get_timestamp($thing, $thgopts);
+ $timestamp ||= 0;
+ $versionstamp ||= 0;
+ # And ensure we preserve any manual setting
+ if (is_manual($timestamp)) { $manual = 1; }
+ }
+
+ # do we actually have to do more than we might have thought?
+ # yes, if we've caching with --cache-mode=mbox or full and the bug had
+ # previously been cached in a less thorough format
+ my $forcedownload = 0;
+ if ($thing =~ /^\d+$/ and ! $refreshmode) {
+ if (old_cache_format_version($versionstamp)) {
+ $forcedownload = 1;
+ } elsif ($cachemode ne 'min' or $mboxing) {
+ if (! -r mboxfile($thing)) {
+ $forcedownload = 1;
+ } elsif ($cachemode eq 'full' and -d $thing) {
+ opendir DIR, $thing or die "$progname: opendir $cachedir/$thing: $!\n";
+ my @htmlfiles = grep { /^\d+\.html$/ } readdir(DIR);
+ closedir DIR;
+ $forcedownload = 1 unless @htmlfiles;
+ }
+ }
+ }
+
+ print "Downloading $url ... "
+ if ! $quiet and $manual and $thing ne "css/bugs.css";
+ IO::Handle::flush(\*STDOUT);
+ my ($ret, $msg, $livepage, $contenttype) = bts_mirror($url, $timestamp, $forcedownload);
+ my $charset = $contenttype || '';
+ if ($charset =~ m/charset=(.*?)(;|\Z)/) {
+ $charset = $1;
+ } else {
+ $charset = "";
+ }
+ if ($ret == MIRROR_UP_TO_DATE) {
+ # we have an up-to-date version already, nothing to do
+ # and $timestamp is guaranteed to be well-defined
+ if (is_automatic($timestamp) and $manual) {
+ set_timestamp($thing, $thgopts, make_manual($timestamp), $versionstamp);
+ }
+
+ if (! $quiet and $manual and $thing ne "css/bugs.css") {
+ print "(cache already up-to-date) ";
+ print "$bug_current/$bug_total" if $bug_total;
+ print "\n";
+ }
+ chdir $oldcwd or die "$progname: chdir $oldcwd failed: $!\n";
+ return "";
+ }
+ elsif ($ret == MIRROR_DOWNLOADED) {
+ # Note the current timestamp, but don't record it until
+ # we've successfully stashed the data away
+ $timestamp = time;
+
+ die "$progname: empty page downloaded\n" unless length $livepage;
+
+ my $bug2filename = { };
+
+ if ($thing =~ /^\d+$/) {
+ # we've downloaded an individual bug, and it's been updated,
+ # so we need to also download all the attachments
+ $bug2filename =
+ download_attachments($thing, $livepage, $timestamp);
+ }
+
+ my $data = $livepage; # work on a copy, not the original
+ my $cachefile=cachefile($thing,$thgopts);
+ open (OUT_CACHE, ">$cachefile") or die "$progname: open $cachefile: $!\n";
+
+ $data = mangle_cache_file($data, $thing, $bug2filename, $timestamp, $charset ? $contenttype : '');
+ print OUT_CACHE $data;
+ close OUT_CACHE or die "$progname: problems writing to $cachefile: $!\n";
+
+ set_timestamp($thing, $thgopts,
+ $manual ? make_manual($timestamp) : make_automatic($timestamp),
+ $version);
+
+ if (! $quiet and $manual and $thing ne "css/bugs.css") {
+ print "(cached new version) ";
+ print "$bug_current/$bug_total" if $bug_total;
+ print "\n";
+ } elsif ($quiet == 1 and $manual and $thing ne "css/bugs.css") {
+ print "Downloading $url ... (cached new version)\n";
+ } elsif ($quiet > 1) {
+ # do nothing
+ }
+
+ # Add a <base> tag to the live page content, so that relative urls
+ # in it work when it's passed to the web browser.
+ my $base=$url;
+ $base=~s%/[^/]*$%%;
+ $livepage=~s%<head>%<head><base href="$base">%i;
+
+ chdir $oldcwd or die "$progname: chdir $oldcwd failed: $!\n";
+ return $livepage;
+ } else {
+ die "$progname: couldn't download $url:\n$msg\n";
+ }
+}
+
+sub download_attachments {
+ my ($thing, $toppage, $timestamp) = @_;
+ my %bug2filename;
+
+ # We search for appropriate strings in the top page, and save the
+ # attachments in files with names as follows:
+ # - if the attachment specifies a filename, save as bug#/msg#-att#/filename
+ # - if not, save as bug#/msg#-att# with suffix .txt if plain/text and
+ # .html if plain/html, no suffix otherwise (too much like hard work!)
+ # Since messages are never modified retrospectively, we don't download
+ # attachments which have already been downloaded
+
+ # Yuck, yuck, yuck. This regex splits the $data string at every
+ # occurrence of either "[<a " or plain "<a ", preserving any "[".
+ my @data = split /(?:(?=\[<[Aa]\s)|(?<!\[)(?=<[Aa]\s))/, $toppage;
+ foreach (@data) {
+ next unless m%<a(?: class=\".*?\")? href="(?:/cgi-bin/)?((bugreport\.cgi[^\"]+)">|(version\.cgi[^\"]+)"><img[^>]* src="(?:/cgi-bin/)?([^\"]+)">|(version\.cgi[^\"]+)">)%i;
+
+ my $ref = $5;
+ $ref = $4 if not defined $ref;
+ $ref = $2 if not defined $ref;
+
+ my ($msg, $filename) = href_to_filename($_);
+
+ next unless defined $msg;
+
+ if ($msg =~ /^\d+-\d+$/) {
+ # it's an attachment, must download
+
+ if (-f dirname($filename)) {
+ warn "$progname: found file where directory expected; using existing file (" . dirname($filename) . ")\n";
+ $bug2filename{$msg} = dirname($filename);
+ } else {
+ $bug2filename{$msg} = $filename;
+ }
+
+ # already downloaded?
+ next if -f $bug2filename{$msg} and not $refreshmode;
+ }
+ elsif ($cachemode eq 'full' and $msg =~ /^\d+$/) {
+ $bug2filename{$msg} = $filename;
+ # already downloaded?
+ next if -f $bug2filename{$msg} and not $refreshmode;
+ }
+ elsif ($cachemode eq 'full' and $msg =~ /^\d+-mbox$/) {
+ $bug2filename{$msg} = $filename;
+ # already downloaded?
+ next if -f $bug2filename{$msg} and not $refreshmode;
+ }
+ elsif (($cachemode eq 'full' or $cachemode eq 'mbox' or $mboxmode) and
+ $msg eq 'mbox') {
+ $bug2filename{$msg} = $filename;
+ # This always needs refreshing, as it does change as the bug
+ # changes
+ }
+ elsif ($cachemode eq 'full' and $msg =~ /^(status|raw)mbox$/) {
+ $bug2filename{$msg} = $filename;
+ # Always need refreshing, as they could change each time the
+ # bug does
+ }
+ elsif ($cachemode eq 'full' and $msg eq 'versions') {
+ $bug2filename{$msg} = $filename;
+ # Ensure we always download the full size images for
+ # version graphs, without the informational links
+ $ref =~ s%;info=1%;info=0%;
+ $ref =~ s%(;|\?)(height|width)=\d+%$1%g;
+ # already downloaded?
+ next if -f $bug2filename{$msg} and not $refreshmode;
+ }
+
+ next unless exists $bug2filename{$msg};
+
+ warn "bts debug: downloading $btscgiurl$ref\n" if $debug;
+ init_agent() unless $ua; # shouldn't be necessary, but do just in case
+ my $request = HTTP::Request->new('GET', $btscgiurl . $ref);
+ my $response = $ua->request($request);
+ if ($response->is_success) {
+ my $content_length = defined $response->content ?
+ length($response->content) : 0;
+ if ($content_length == 0) {
+ warn "$progname: failed to download $ref, skipping\n";
+ next;
+ }
+
+ my $data = $response->content;
+
+ if ($msg =~ /^\d+$/) {
+ # we're dealing with a boring message, and so we must be
+ # in 'full' mode
+ $data =~ s%<HEAD>%<HEAD><BASE href="../">%;
+ $data = mangle_cache_file($data, $thing, 'full', $timestamp);
+ }
+ mkpath(dirname $bug2filename{$msg});
+ open OUT_CACHE, ">$bug2filename{$msg}"
+ or die "$progname: open cache $bug2filename{$msg}\n";
+ print OUT_CACHE $data;
+ close OUT_CACHE;
+ } else {
+ warn "$progname: failed to download $ref, skipping\n";
+ next;
+ }
+ }
+
+ return \%bug2filename;
+}
+
+
+# Download the mailbox for a given bug, return mbox ($fh, filename) on success,
+# die on failure
+sub download_mbox {
+ my $thing = shift;
+ my $temp = shift; # do we wish to store it in cache or in a temp file?
+ my $mboxfile = mboxfile($thing);
+
+ die "$progname: trying to download mbox for illegal bug number $thing.\n"
+ unless $mboxfile;
+
+ if (! have_lwp()) {
+ die "$progname: couldn't run bts --mbox: $lwp_broken\n";
+ }
+ init_agent() unless $ua;
+
+ my $request = HTTP::Request->new('GET', $btscgiurl . "bugreport.cgi?bug=$thing;mboxmaint=yes");
+ my $response = $ua->request($request);
+ if ($response->is_success) {
+ my $content_length = defined $response->content ?
+ length($response->content) : 0;
+ if ($content_length == 0) {
+ die "$progname: failed to download mbox.\n";
+ }
+
+ my ($fh, $filename);
+ if ($temp) {
+ ($fh,$filename) = tempfile("btsXXXXXX",
+ SUFFIX => ".mbox",
+ DIR => File::Spec->tmpdir,
+ UNLINK => 1);
+ # Use filehandle for security
+ open (OUT_MBOX, ">&", $fh)
+ or die "$progname: writing to temporary file: $!\n";
+ } else {
+ $filename = $mboxfile;
+ open (OUT_MBOX, ">$mboxfile")
+ or die "$progname: writing to mbox file $mboxfile: $!\n";
+ }
+ print OUT_MBOX $response->content;
+ close OUT_MBOX;
+
+ return ($fh, $filename);
+ } else {
+ die "$progname: failed to download mbox.\n";
+ }
+}
+
+
+# Mangle downloaded file to work in the local cache, so
+# selectively modify the links
+sub mangle_cache_file {
+ my ($data, $thing, $bug2filename, $timestamp, $ctype) = @_;
+ my $fullmode = ! ref $bug2filename;
+
+ # Undo unnecessary '+' encoding in URLs
+ while ($data =~ s!(href=\"[^\"]*)\%2b!$1+!ig) { };
+ my $time=localtime(abs($timestamp));
+ $data =~ s%(<BODY.*>)%$1<p><em>[Locally cached on $time by devscripts version $version]</em></p>%i;
+ $data =~ s%href="/css/bugs.css"%href="bugs.css"%;
+ if ($ctype) {
+ $data =~ s%(<HEAD.*>)%$1<META HTTP-EQUIV="Content-Type" CONTENT="$ctype">%i;
+ }
+
+ my @data;
+ # We have to distinguish between release-critical pages and normal BTS
+ # pages as they have a different structure
+ if ($thing =~ /^release-critical/) {
+ @data = split /(?=<[Aa])/, $data;
+ foreach (@data) {
+ s%<a href="(http://$btsserver/cgi-bin/bugreport\.cgi.*bug=(\d+)[^\"]*)">(.+?)</a>%<a href="$2.html">$3</a> (<a href="$1">online</a>)%i;
+ s%<a href="(http://$btsserver/cgi-bin/pkgreport\.cgi.*pkg=([^\"&;]+)[^\"]*)">(.+?)</a>%<a href="$2.html">$3</a> (<a href="$1">online</a>)%i;
+ # References to other bug lists on bugs.d.o/release-critical
+ if (m%<a href="((?:debian|other)[-a-z/]+\.html)"%i) {
+ my $ref = 'release-critical/'.$1;
+ $ref =~ s%/%_%g;
+ s%<a href="((?:debian|other)[-a-z/]+\.html)">(.+?)</a>%<a href="$ref">$2</a> (<a href="${btsurl}release-critical/$1">online</a>)%i;
+ }
+ # Maintainer email address - YUCK!!
+ s%<a href="(http://$btsserver/([^\"?]*\@[^\"?]*))">(.+?)</a>>%<a href="$2.html">$3</a>> (<a href="$1">online</a>)%i;
+ # Graph - we don't download
+ s%<img src="graph.png" alt="Graph of RC bugs">%<img src="${btsurl}release-critical/graph.png" alt="Graph of RC bugs (online)">%
+ }
+ } else {
+ # Yuck, yuck, yuck. This regex splits the $data string at every
+ # occurrence of either "[<a " or plain "<a ", preserving any "[".
+ @data = split /(?:(?=\[<[Aa]\s)|(?<!\[)(?=<[Aa]\s))/, $data;
+ foreach (@data) {
+ if (m%<a(?: class=\".*?\")? href=\"(?:/cgi-bin/)?bugreport\.cgi[^\?]*\?.*?;?bug=(\d+)%i) {
+ my $bug = $1;
+ my ($msg, $filename) = href_to_filename($_);
+ if ($bug eq $thing and defined $msg) {
+ if ($fullmode or
+ (! $fullmode and exists $$bug2filename{$msg})) {
+ s%<a((?: class=\".*?\")?) href="(?:/cgi-bin/)?(bugreport\.cgi[^\"]*)">(.+?)</a>%<a$1 href="$filename">$3</a> (<a$1 href="$btscgiurl$2">online</a>)%i;
+ } else {
+ s%<a((?: class=\".*?\")?) href="(?:/cgi-bin/)?(bugreport\.cgi[^\"]*)">(.+?)</a>%$3 (<a$1 href="$btscgiurl$2">online</a>)%i;
+ }
+ } else {
+ s%<a((?: class=\".*?\")?) href="(?:/cgi-bin/)?(bugreport\.cgi[^\?]*\?.*?bug=(\d+))"(.*?)>(.+?)</a>%<a$1 href="$3.html"$4>$5</a> (<a$1 href="$btscgiurl$2">online</a>)%i;
+ }
+ } else {
+ s%<a((?: class=\".*?\")?) href="(?:/cgi-bin/)?(pkgreport\.cgi\?(?:pkg|maint)=([^\"&;]+)[^\"]*)">(.+?)</a>%<a$1 href="$3.html">$4</a> (<a$1 href="$btscgiurl$2">online</a>)%gi;
+ s%<a((?: class=\".*?\")?) href="(?:/cgi-bin/)?(pkgreport\.cgi\?src=([^\"&;]+)[^\"]*)">(.+?)</a>%<a$1 href="src_$3.html">$4</a> (<a$1 href="$btscgiurl$2">online</a>)%i;
+ s%<a((?: class=\".*?\")?) href="(?:/cgi-bin/)?(pkgreport\.cgi\?submitter=([^\"&;]+)[^\"]*)">(.+?)</a>%<a$1 href="from_$3.html">$4</a> (<a$1 href="$btscgiurl$2">online</a>)%i;
+ s%<a((?: class=\".*?\")?) href="(?:/cgi-bin/)?(pkgreport\.cgi\?.*?;?archive=([^\"&;]+);submitter=([^\"&;]+)[^\"]*)">(.+?)</a>%<a$1 href="from_$4_3Barchive_3D$3.html">$5</a> (<a$1 href="$btscgiurl$2">online</a>)%i;
+ s%<a((?: class=\".*?\")?) href="(?:/cgi-bin/)?(pkgreport\.cgi\?.*?;?package=([^\"&;]+)[^\"]*)">(.+?)</a>%<a$1 href="$3.html">$4</a> (<a$1 href="$btscgiurl$2">online</a>)%gi;
+ s%<a((?: class=\".*?\")?) href="(?:/cgi-bin/)?(bugspam\.cgi[^\"]+)">%<a$1 href="$btscgiurl$2">%i;
+ s%<a((?: class=\".*?\")?) href="/([0-9]+?)">(.+?)</a>%<a$1 href="$2.html">$3</a> (<a$1 href="$btsurl$2">online</a>)%i;
+
+ # Version graphs
+ # - remove 'package=' and move the package to the front
+ s%((?:<img[^>]* src=\"|<a[^>]* href=\")(?:/cgi-bin/)?version\.cgi\?)([^\"]+)package=([^;\"]+)([^\"]+\"|\")>%$1$3;$2$4>%gi;
+ # - replace 'found=' with '.f.' and 'fixed=' with '.fx.'
+ 1 while s%((?:<img[^>]* src=\"|<a[^>]* href=\")(?:/cgi-bin/)?version\.cgi\?)(.*?;)found=([^\"]+)\">%$1$2.f.$3">%i;
+ 1 while s%((?:<img[^>]* src=\"|<a[^>]* href=\")(?:/cgi-bin/)?version\.cgi\?)(.*?;)fixed=([^\"]+)\">%$1$2.fx.$3">%i;
+ 1 while s%((?:<img[^>]* src=\"|<a[^>]* href=\")(?:/cgi-bin/)?version\.cgi\?found=)([^\"]+)\">%$1.f.$2">%i;
+ 1 while s%((?:<img[^>]* src=\"|<a[^>]* href=\")(?:/cgi-bin/)?version\.cgi\?fixed=)([^\"]+)\">%$1.fx.$2">%i;
+ # - replace '%2F' or '%2C' (a URL-encoded / or ,) with '.'
+ 1 while s%((?:<img[^>]* src=\"|<a[^>]* href=\")(?:/cgi-bin/)?version\.cgi\?[^\%]*)\%2[FC]([^\"]+)\">%$1.$2">%gi;
+ # - display collapsed graph images at 25%
+ s%(<img[^>]* src=\"[^\"]+);collapse=1([^\"]+)\">%$1$2.co" width="25\%" height="25\%">%gi;
+ # - and link to the collapsed graph
+ s%(<a[^>]* href=\"[^\"]+);collapse=1([^\"]+)\">%$1$2.co">%gi;
+ # - remove any other parameters
+ 1 while s%((?:<img[^>]* src|<a[^>]* href)=\"(?:/cgi-bin/)?version\.cgi\?[^\"]+);(?:\w+=\d+)([^>]+)\>%$1$2>%gi;
+ # - remove any +s (encoded spaces)
+ 1 while s%((?:<img[^>]* src=\"|<a[^>]* href=\")(?:/cgi-bin/)?version\.cgi\?[^\+]*)\+([^\"]+)\">%$1$2">%gi;
+ # - remove trailing ";" and ";." from previous substitutions
+ 1 while s%((?:<img[^>]* src=\"|<a[^>]* href=\")(?:/cgi-bin/)?version\.cgi\?[^\"]+);\.(.*?)>%$1.$2>%gi;
+ 1 while s%((?:<img[^>]* src=\"|<a[^>]* href=\")(?:/cgi-bin/)?version\.cgi\?[^\"]+);\">%$1">%gi;
+ # - final reference should be $package.$versions[.co].png
+ s%(<img[^>]* src=\"|<a[^>]* href=\")(?:/cgi-bin/)?version\.cgi\?([^\"]+)(\"[^>]*)>%$1$2.png$3>%gi;
+ }
+ }
+ }
+
+ return join("", @data);
+}
+
+
+# Removes a specified thing from the cache
+sub deletecache {
+ my $thing=shift;
+ my $thgopts=shift || '';
+
+ if (! -d $cachedir) {
+ die "$progname: deletecache() called but no cachedir!\n";
+ }
+
+ delete_timestamp($thing,$thgopts);
+ unlink cachefile($thing,$thgopts);
+ if ($thing =~ /^\d+$/) {
+ rmtree("$cachedir/$thing", 0, 1) if -d "$cachedir/$thing";
+ unlink("$cachedir/$thing.mbox") if -f "$cachedir/$thing.mbox";
+ unlink("$cachedir/$thing.status.mbox") if -f "$cachedir/$thing.status.mbox";
+ unlink("$cachedir/$thing.raw.mbox") if -f "$cachedir/$thing.raw.mbox";
+ }
+}
+
+# Given a thing, returns the filename for it in the cache.
+sub cachefile {
+ my $thing=shift;
+ my $thgopts=shift || '';
+ if ($thing eq '') { die "$progname: cachefile given empty argument\n"; }
+ if ($thing =~ /bugs.css$/) { return $cachedir."bugs.css" }
+ $thing =~ s/^src:/src_/;
+ $thing =~ s/^from:/from_/;
+ $thing =~ s/^tag:/tag_/;
+ $thing =~ s/^usertag:/usertag_/;
+ $thing =~ s%^release-critical/index\.html$%release-critical.html%;
+ $thing =~ s%/%_%g;
+ $thgopts =~ s/;/_3B/g;
+ $thgopts =~ s/=/_3D/g;
+ return $cachedir.$thing.$thgopts.($thing =~ /\.html$/ ? "" : ".html");
+}
+
+# Given a thing, returns the filename for its mbox in the cache.
+sub mboxfile {
+ my $thing=shift;
+ return $thing =~ /^\d+$/ ? $cachedir.$thing.".mbox" : undef;
+}
+
+# Given a bug number, returns the dirname for it in the cache.
+sub cachebugdir {
+ my $thing=shift;
+ if ($thing !~ /^\d+$/) { die "$progname: cachebugdir given faulty argument: $thing\n"; }
+ return $cachedir.$thing;
+}
+
+# And the reverse: Given a filename in the cache, returns the corresponding
+# "thing".
+sub cachefile_to_thing {
+ my $thing=basename(shift, '.html');
+ my $thgopts='';
+ $thing =~ s/^src_/src:/;
+ $thing =~ s/^from_/from:/;
+ $thing =~ s/^tag_/tag:/;
+ $thing =~ s/^usertag_/usertag:/;
+ $thing =~ s%^release-critical\.html$%release-critical/index\.html%;
+ $thing =~ s%_%/%g;
+ $thing =~ s/_3B/;/g;
+ $thing =~ s/_3D/=/g;
+ $thing =~ /^(.*?)((?:;.*)?)$/;
+ ($thing, $thgopts) = ($1, $2);
+ return ($thing, $thgopts);
+}
+
+# Given a thing, gives the official BTS cgi page for it
+sub thing_to_url {
+ my $thing = shift;
+ my $thingurl;
+
+ # have to be intelligent here :/
+ if ($thing =~ /^\d+$/) {
+ $thingurl = $btscgibugurl."?bug=".$thing;
+ } elsif ($thing =~ /^from:/) {
+ ($thingurl = $thing) =~ s/^from:/submitter=/;
+ $thingurl = $btscgipkgurl.'?'.$thingurl;
+ } elsif ($thing =~ /^src:/) {
+ ($thingurl = $thing) =~ s/^src:/src=/;
+ $thingurl = $btscgipkgurl.'?'.$thingurl;
+ } elsif ($thing =~ /^tag:/) {
+ ($thingurl = $thing) =~ s/^tag:/tag=/;
+ $thingurl = $btscgipkgurl.'?'.$thingurl;
+ } elsif ($thing =~ /^usertag:/) {
+ ($thingurl = $thing) =~ s/^usertag:/tag=/;
+ $thingurl = $btscgipkgurl.'?'.$thingurl;
+ } elsif ($thing =~ m%^release-critical(\.html|/(index\.html)?)?$%) {
+ $thingurl = $btsurl . 'release-critical/index.html';
+ } elsif ($thing =~ m%^release-critical/%) {
+ $thingurl = $btsurl . $thing;
+ } elsif ($thing =~ /\@/) { # so presume it's a maint request
+ $thingurl = $btscgipkgurl.'?maint='.$thing;
+ } else { # it's a package, or had better be...
+ $thingurl = $btscgipkgurl.'?pkg='.$thing;
+ }
+
+ return $thingurl;
+}
+
+# Given a thing, reads all links to bugs from the corresponding cache file
+# if there is one, and returns a list of them.
+sub bugs_from_thing {
+ my $thing=shift;
+ my $thgopts=shift || '';
+ my $cachefile=cachefile($thing,$thgopts);
+
+ if (-f $cachefile) {
+ local $/;
+ open (IN, $cachefile) || die "$progname: open $cachefile: $!\n";
+ my $data=<IN>;
+ close IN;
+
+ return $data =~ m!href="(\d+)\.html"!g;
+ } else {
+ return ();
+ }
+}
+
+# Given an <a href="bugreport.cgi?...>...</a> string, return a
+# msg id and corresponding filename
+sub href_to_filename {
+ my $href = $_[0];
+ my ($msg, $filename);
+
+ if ($href =~ m%\[<a(?: class=\".*?\")? href="(?:/cgi-bin/)?bugreport\.cgi([^\?]*)\?([^\"]*);bug=(\d+)">.*?\(([^,]*), .*?\)\]%) {
+ # this looks like an attachment; $4 should give the MIME-type
+ my $urlfilename = $1;
+ my $ref = $2;
+ my $bug = $3;
+ my $mimetype = $4;
+ $ref =~ s/&(?:amp;)?/;/g; # normalise all hrefs
+
+ return undef unless $ref =~ /msg=(\d+);(filename=[^;]*;)?att=(\d+)/;
+ $msg = "$1-$3";
+ $urlfilename ||= "$2" if defined $2;
+ $urlfilename ||= "";
+
+ my $fileext = '';
+ if ($urlfilename =~ m%^/%) {
+ $filename = basename($urlfilename);
+ } elsif ($urlfilename =~ m%^filename=([^;]*?);%) {
+ $urlfilename = $1;
+ $filename = basename($urlfilename);
+ } else {
+ $filename = '';
+ if ($mimetype eq 'text/plain') { $fileext = '.txt'; }
+ if ($mimetype eq 'text/html') { $fileext = '.html'; }
+ }
+ if (length ($filename)) {
+ $filename = "$bug/$msg/$filename";
+ } else {
+ $filename = "$bug/$msg$fileext";
+ }
+ }
+ elsif ($href =~ m%<a(?: class=\".*?\")? href="(?:/cgi-bin/)?bugreport\.cgi([^\?]*)\?([^"]*);?bug=(\d+)(.*?)".*?>%) {
+ my $urlfilename = $1;
+ my $ref = $2;
+ my $bug = $3;
+ $ref .= $4 if defined $4;
+ $ref =~ s/&(?:amp;)?/;/g; # normalise all hrefs
+ $ref =~ s/;archive=(yes|no)\b//;
+ $ref =~ s/%3D/=/g;
+
+ if ($ref =~ /msg=(\d+);$/) {
+ $msg = $1;
+ $filename = "$bug/$1.html";
+ }
+ elsif ($ref =~ /msg=(\d+);mbox=yes;$/) {
+ $msg = "$1-mbox";
+ $filename = "$bug/$1.mbox";
+ }
+ elsif ($ref =~ /^mbox=yes;$/) {
+ $msg = 'rawmbox';
+ $filename = "$bug.raw.mbox";
+ }
+ elsif ($ref =~ /mboxstat(us)?=yes/) {
+ $msg = 'statusmbox';
+ $filename = "$bug.status.mbox";
+ }
+ elsif ($ref =~ /mboxmaint=yes/) {
+ $msg = 'mbox';
+ $filename = "$bug.mbox";
+ }
+ elsif ($ref eq '') {
+ return undef;
+ }
+ else {
+ $href =~ s/>.*/>/s;
+ warn "$progname: in href_to_filename: unrecognised BTS URL type: $href\n";
+ return undef;
+ }
+ }
+ elsif ($href =~ m%<a[^>]* href=\"(?:/cgi-bin/)?version\.cgi([^>]+><img[^>]* src=\"(?:/cgi-bin/)?version\.cgi)?\?([^\"]+)\">%i) {
+ my $refs = $2;
+ $refs = $1 if not defined $refs;
+
+ # Remove package= and make sure the package name is at the
+ # start of the filename
+ $refs =~ s/(.*?)package=(.*?)(;.*?|)$/$2;$1$3/;
+ # Package versions
+ $refs =~ s/;found=/.f./g;
+ $refs =~ s/;fixed=/.fx./g;
+ # Replace encoded "/" and "," characters with "."
+ $refs =~ s/%2[FC]/./g;
+ # Remove encoded spaces
+ $refs =~ s/\+//g;
+ # Is this a "collapsed" graph?
+ $refs =~ s/;collapse=1(.*)/$1.co/;
+ # Remove any other parameters
+ $refs =~ s/(^|;)(\w+)=\d+//g;
+ # and tidy up any remaining separators
+ $refs =~ s/;//g;
+
+ $msg = 'versions';
+ $filename = "$refs.png";
+ }
+ else {
+ return undef;
+ }
+
+ return ($msg, $filename);
+}
+
+# Browses a given thing, with preprocessed list of URL options such as
+# ";opt1=val1;opt2=val2" with possible caching if there are no options
+sub browse {
+ prunecache();
+ my $thing=shift;
+ my $thgopts=shift || '';
+
+ if ($thing eq '') {
+ if ($thgopts ne '') {
+ die "$progname: you can only give options for a BTS page if you specify a bug/maint/... .\n";
+ }
+ runbrowser($btsurl);
+ return;
+ }
+
+ my $hascache=-d $cachedir;
+ my $cachefile=cachefile($thing,$thgopts);
+ my $mboxfile=mboxfile($thing);
+ if ($mboxmode and ! $mboxfile) {
+ die "$progname: you can only request a mailbox for a single bug report.\n";
+ }
+
+ # Check that if we're requesting a tag, that it's a valid tag
+ if (($thing.$thgopts) =~ /(?:^|;)(?:tag|include|exclude)[:=]([^;]*)/) {
+ unless (exists $valid_tags{$1}) {
+ die "$progname: invalid tag requested: $1\nRecognised tag names are: " . join(" ", @valid_tags) . "\n";
+ }
+ }
+
+ my $livedownload = 1;
+ if ($offlinemode) {
+ $livedownload = 0;
+ if (! $hascache) {
+ die "$progname: Sorry, you are in offline mode and have no cache.\nRun \"bts cache\" or \"bts show\" to create one.\n";
+ }
+ elsif ((! $mboxmode and ! -r $cachefile) or
+ ($mboxmode and ! -r $mboxfile)) {
+ die "$progname: Sorry, you are in offline mode and that is not cached.\nUse \"bts [--cache-mode=...] cache\" to update the cache.\n";
+ }
+ if ($mboxmode) {
+ runmailreader($mboxfile);
+ } else {
+ runbrowser("file://$cachefile");
+ }
+ }
+ # else we're in online mode
+ elsif ($caching && have_lwp() && $thing ne '') {
+ if (! $hascache) {
+ if (! -d dirname($cachedir)) {
+ unless (mkdir(dirname($cachedir))) {
+ warn "$progname: couldn't mkdir ".dirname($cachedir).": $!\n";
+ goto LIVE;
+ }
+ }
+ unless (mkdir($cachedir)) {
+ warn "$progname: couldn't mkdir $cachedir: $!\n";
+ goto LIVE;
+ }
+ }
+
+ $livedownload = 0;
+ my $live=download($thing, $thgopts, 0, $mboxmode);
+
+ if ($mboxmode) {
+ runmailreader($mboxfile);
+ } else {
+ if (length($live)) {
+ my ($fh,$livefile) = tempfile("btsXXXXXX",
+ SUFFIX => ".html",
+ DIR => File::Spec->tmpdir,
+ UNLINK => 1);
+
+ # Use filehandle for security
+ open (OUT_LIVE, ">&", $fh)
+ or die "$progname: writing to temporary file: $!\n";
+ # Correct relative urls to point to the bts.
+ $live =~ s%\shref="(?:/cgi-bin/)?(\w+\.cgi)% href="$btscgiurl$1%g;
+ print OUT_LIVE $live;
+ # Some browsers don't like unseekable filehandles,
+ # so use filename
+ runbrowser("file://$livefile");
+ } else {
+ runbrowser("file://$cachefile");
+ }
+ }
+ }
+
+ LIVE: # we are not caching; just show it live
+ if ($livedownload) {
+ if ($mboxmode) {
+ # we appear not to be caching; OK, we'll download to a
+ # temporary file
+ warn "bts debug: downloading ${btscgiurl}bugreport.cgi?bug=$thing;mbox=yes\n" if $debug;
+ my ($fh, $fn) = download_mbox($thing, 1);
+ runmailreader($fn);
+ } else {
+ if ($thgopts ne '') {
+ my $thingurl = thing_to_url($thing);
+ runbrowser($thingurl.$thgopts);
+ } else {
+ # let the BTS be intelligent
+ runbrowser($btsurl.$thing);
+ }
+ }
+ }
+}
+
+# Removes all files from the cache which were downloaded automatically
+# and have not been accessed for more than 30 days. We also only run
+# this at most once per day for efficiency.
+
+sub prunecache {
+ return unless -d $cachedir;
+ return if -f $prunestamp and -M _ < 1;
+
+ my $oldcwd = getcwd;
+
+ chdir($cachedir) || die "$progname: chdir $cachedir: $!\n";
+
+ # remove the now-defunct live-download file
+ unlink "live_download.html";
+
+ opendir DIR, '.' or die "$progname: opendir $cachedir: $!\n";
+ my @cachefiles = grep { ! /^\.\.?$/ } readdir(DIR);
+ closedir DIR;
+
+ # Are there any unexpected files lying around?
+ my @known_files = map { basename($_) } ($timestampdb, $timestampdb.".lock",
+ $prunestamp);
+
+ my %weirdfiles = map { $_ => 1 } grep { ! /\.(html|css|png)$/ } @cachefiles;
+ foreach (@known_files) {
+ delete $weirdfiles{$_} if exists $weirdfiles{$_};
+ }
+ # and bug directories
+ foreach (@cachefiles) {
+ if (/^(\d+)\.html$/) {
+ delete $weirdfiles{$1} if exists $weirdfiles{$1} and -d $1;
+ delete $weirdfiles{"$1.mbox"}
+ if exists $weirdfiles{"$1.mbox"} and -f "$1.mbox";
+ delete $weirdfiles{"$1.raw.mbox"}
+ if exists $weirdfiles{"$1.raw.mbox"} and -f "$1.raw.mbox";
+ delete $weirdfiles{"$1.status.mbox"}
+ if exists $weirdfiles{"$1.status.mbox"} and -f "$1.status.mbox";
+ }
+ }
+
+ warn "$progname: unexpected files/dirs in cache directory $cachedir:\n " .
+ join("\n ", keys %weirdfiles) . "\n"
+ if keys %weirdfiles;
+
+ my @oldfiles;
+ foreach (@cachefiles) {
+ next unless /\.(html|css)$/;
+ push @oldfiles, $_ if -A $_ > 30;
+ }
+
+ # We now remove the oldfiles if they're automatically downloaded
+ tie (%timestamp, "Devscripts::DB_File_Lock", $timestampdb,
+ O_RDWR()|O_CREAT(), 0600, $DB_HASH, "write")
+ or die "$progname: couldn't open DB file $timestampdb for writing: $!\n"
+ if ! tied %timestamp;
+
+ my @unrecognised;
+ foreach my $oldfile (@oldfiles) {
+ my ($thing, $thgopts) = cachefile_to_thing($oldfile);
+ unless (defined get_timestamp($thing, $thgopts)) {
+ push @unrecognised, $oldfile;
+ next;
+ }
+ next if is_manual(get_timestamp($thing, $thgopts));
+
+ # Otherwise, it's automatic and we purge it
+ deletecache($thing, $thgopts);
+ }
+
+ untie %timestamp;
+
+ if (! -e $prunestamp) {
+ open PRUNESTAMP, ">$prunestamp" || die "$progname: prune timestamp: $!\n";
+ close PRUNESTAMP;
+ }
+ chdir $oldcwd || die "$progname: chdir $oldcwd: $!\n";
+ utime time, time, $prunestamp;
+}
+
+# Determines which browser to use
+sub runbrowser {
+ my $URL = shift;
+
+ if (system('sensible-browser', $URL) >> 8 != 0) {
+ warn "Problem running sensible-browser: $!\n";
+ }
+}
+
+# Determines which mailreader to use
+sub runmailreader {
+ my $file = shift;
+ my $quotedfile;
+ die "$progname: could not read mbox file!\n" unless -r $file;
+
+ if ($file !~ /\'/) { $quotedfile = qq['$file']; }
+ elsif ($file !~ /[\"\\\$\'\!]/) { $quotedfile = qq["$file"]; }
+ else { die "$progname: could not figure out how to quote the mbox filename \"$file\"\n"; }
+
+ my $reader = $mailreader;
+ $reader =~ s/\%([%s])/$1 eq '%' ? '%' : $quotedfile/eg;
+
+ if (system($reader) >> 8 != 0) {
+ warn "Problem running mail reader: $!\n";
+ }
+}
+
+# Timestamp handling
+#
+# We store a +ve timestamp to represent an automatic download and
+# a -ve one to represent a manual download.
+
+sub get_timestamp {
+ my $thing = shift;
+ my $thgopts = shift || '';
+ my $timestamp = undef;
+ my $versionstamp = undef;
+
+ if (tied %timestamp) {
+ ($timestamp, $versionstamp) = split /;/, $timestamp{$thing.$thgopts}
+ if exists $timestamp{$thing.$thgopts};
+ } else {
+ tie (%timestamp, "Devscripts::DB_File_Lock", $timestampdb,
+ O_RDONLY(), 0600, $DB_HASH, "read")
+ or die "$progname: couldn't open DB file $timestampdb for reading: $!\n";
+
+ ($timestamp, $versionstamp) = split /;/, $timestamp{$thing.$thgopts}
+ if exists $timestamp{$thing.$thgopts};
+
+ untie %timestamp;
+ }
+
+ return wantarray ? ($timestamp, $versionstamp) : $timestamp;
+}
+
+sub set_timestamp {
+ my $thing = shift;
+ my $thgopts = shift || '';
+ my $timestamp = shift;
+ my $versionstamp = shift || $version;
+
+ if (tied %timestamp) {
+ $timestamp{$thing.$thgopts} = "$timestamp;$versionstamp";
+ } else {
+ tie (%timestamp, "Devscripts::DB_File_Lock", $timestampdb,
+ O_RDWR()|O_CREAT(), 0600, $DB_HASH, "write")
+ or die "$progname: couldn't open DB file $timestampdb for writing: $!\n";
+
+ $timestamp{$thing.$thgopts} = "$timestamp;$versionstamp";
+
+ untie %timestamp;
+ }
+}
+
+sub delete_timestamp {
+ my $thing = shift;
+ my $thgopts = shift || '';
+
+ if (tied %timestamp) {
+ delete $timestamp{$thing.$thgopts};
+ } else {
+ tie (%timestamp, "Devscripts::DB_File_Lock", $timestampdb,
+ O_RDWR()|O_CREAT(), 0600, $DB_HASH, "write")
+ or die "$progname: couldn't open DB file $timestampdb for writing: $!\n";
+
+ delete $timestamp{$thing.$thgopts};
+
+ untie %timestamp;
+ }
+}
+
+sub is_manual {
+ return $_[0] < 0;
+}
+
+sub make_manual {
+ return -abs($_[0]);
+}
+
+sub is_automatic {
+ return $_[0] > 0;
+}
+
+sub make_automatic {
+ return abs($_[0]);
+}
+
+# Returns true if current cached version is older than critical version
+# We're only using really simple version numbers here: a.b.c
+sub old_cache_format_version {
+ my $cacheversion = $_[0];
+
+ my @cache = split /\./, $cacheversion;
+ my @new = split /\./, $new_cache_format_version;
+
+ push @cache, 0, 0, 0, 0;
+ push @new, 0, 0;
+
+ return
+ ($cache[0]<$new[0]) ||
+ ($cache[0]==$new[0] && $cache[1]<$new[1]) ||
+ ($cache[0]==$new[0] && $cache[1]==$new[1] && $cache[2]<$new[2]) ||
+ ($cache[0]==$new[0] && $cache[1]==$new[1] && $cache[2]==$new[2] &&
+ $cache[3]<$new[3]);
+}
+
+# We would love to use LWP::Simple::mirror in this script.
+# Unfortunately, bugs.debian.org does not respect the
+# If-Modified-Since header. For single bug reports, however,
+# bugreport.cgi will return a Last-Modified header if sent a HEAD
+# request. So this is a hack, based on code from the LWP modules. :-(
+# Return value:
+# (return value, error string)
+# with return values: MIRROR_ERROR failed
+# MIRROR_DOWNLOADED downloaded new version
+# MIRROR_UP_TO_DATE up-to-date
+
+sub bts_mirror {
+ my ($url, $timestamp, $force) = @_;
+
+ init_agent() unless $ua;
+ if ($url =~ m%/\d+$% and ! $refreshmode and ! $force) {
+ # Single bug, worth doing timestamp checks
+ my $request = HTTP::Request->new('HEAD', $url);
+ my $response = $ua->request($request);
+
+ if ($response->is_success) {
+ my $lm = $response->last_modified;
+ if (defined $lm and $lm <= abs($timestamp)) {
+ return (MIRROR_UP_TO_DATE, $response->status_line);
+ }
+ } else {
+ return (MIRROR_ERROR, $response->status_line);
+ }
+ }
+
+ # So now we download the full thing regardless
+ # We don't care if we scotch the contents of $file - it's only
+ # a temporary file anyway
+ my $request = HTTP::Request->new('GET', $url);
+ my $response = $ua->request($request);
+
+ if ($response->is_success) {
+ # This check from LWP::UserAgent; I don't even know whether
+ # the BTS sends a Content-Length header...
+ my $nominal_content_length = $response->content_length || 0;
+ my $true_content_length = defined $response->content ?
+ length($response->content) : 0;
+ if ($true_content_length == 0) {
+ return (MIRROR_ERROR, $response->status_line);
+ }
+ if ($nominal_content_length > 0) {
+ if ($true_content_length < $nominal_content_length) {
+ return (MIRROR_ERROR,
+ "Transfer truncated: only $true_content_length out of $nominal_content_length bytes received");
+ }
+ if ($true_content_length > $nominal_content_length) {
+ return (MIRROR_ERROR,
+ "Content-length mismatch: expected $nominal_content_length bytes, got $true_content_length");
+ }
+ # else OK
+ }
+
+ return (MIRROR_DOWNLOADED, $response->status_line, $response->content, $response->header('Content-Type'));
+ } else {
+ return (MIRROR_ERROR, $response->status_line);
+ }
+}
+
+sub init_agent {
+ $ua = new LWP::UserAgent; # we create a global UserAgent object
+ $ua->agent("LWP::UserAgent/Devscripts/$version");
+ $ua->env_proxy;
+}
+
+sub opts_done {
+ if (@_) {
+ die "$progname: unknown options to '$command[$index]': @_\n";
+ }
+}
+
+sub edit {
+ my $message = shift;
+ my ($fh, $filename);
+ ($fh, $filename) = tempfile("btsXXXX",
+ SUFFIX => ".mail",
+ DIR => File::Spec->tmpdir);
+ open(OUT_MAIL, ">$filename")
+ or die "$progname: writing to temporary file: $!\n";
+ print OUT_MAIL $message;
+ close OUT_MAIL;
+ system("sensible-editor $filename");
+ open(OUT_MAIL, "<$filename")
+ or die "$progname: reading from temporary file: $!\n";
+ undef $message;
+ while(<OUT_MAIL>) {
+ $message .= $_;
+ }
+ close OUT_MAIL;
+ unlink($filename);
+ return $message;
+}
+
+=back
+
+=head1 ENVIRONMENT VARIABLES
+
+=over 4
+
+=item B<DEBEMAIL>
+
+If this is set, the From: line in the email will be set to use this email
+address instead of your normal email address (as would be determined by
+B<mail>).
+
+=item B<DEBFULLNAME>
+
+If B<DEBEMAIL> is set, B<DEBFULLNAME> is examined to determine the full name
+to use; if this is not set, B<bts> attempts to determine a name from
+your F<passwd> entry.
+
+=item B<BROWSER>
+
+If set, it specifies the browser to use for the B<show> and B<bugs>
+options. See the description above.
+
+=back
+
+=head1 CONFIGURATION VARIABLES
+
+The two configuration files F</etc/devscripts.conf> and
+F<~/.devscripts> are sourced by a shell in that order to set
+configuration variables. Command line options can be used to override
+configuration file settings. Environment variable settings are
+ignored for this purpose. The currently recognised variables are:
+
+=over 4
+
+=item B<BTS_OFFLINE>
+
+If this is set to B<yes>, then it is the same as the B<--offline> command
+line parameter being used. Only has an effect on the B<show> and B<bugs>
+commands. The default is B<no>. See the description of the B<show>
+command above for more information.
+
+=item B<BTS_CACHE>
+
+If this is set to B<no>, then it is the same as the B<--no-cache> command
+line parameter being used. Only has an effect on the B<show> and B<bug>
+commands. The default is B<yes>. Again, see the B<show> command above
+for more information.
+
+=item B<BTS_CACHE_MODE=>{B<min>,B<mbox>,B<full>}
+
+How much of the BTS should we mirror when we are asked to cache something?
+Just the minimum, or also the mbox or the whole thing? The default is
+B<min>, and it has the same meaning as the B<--cache-mode> command line
+parameter. Only has an effect on the cache. See the B<cache> command for more
+information.
+
+=item B<BTS_FORCE_REFRESH>
+
+If this is set to B<yes>, then it is the same as the B<--force-refresh>
+command line parameter being used. Only has an effect on the B<cache>
+command. The default is B<no>. See the B<cache> command for more
+information.
+
+=item B<BTS_MAIL_READER>
+
+If this is set, specifies a mail reader to use instead of B<mutt>. Same as
+the B<--mailreader> command line option.
+
+=item B<BTS_SENDMAIL_COMMAND>
+
+If this is set, specifies a B<sendmail> command to use instead of
+F</usr/sbin/sendmail>. Same as the B<--sendmail> command line option.
+
+=item B<BTS_ONLY_NEW>
+
+Download only new bugs when caching. Do not check for updates in
+bugs we already have. The default is B<no>. Same as the B<--only-new>
+command line option.
+
+=item B<BTS_SMTP_HOST>
+
+If this is set, specifies an SMTP host to use for sending mail rather
+than using the B<sendmail> command. Same as the B<--smtp-host> command line
+option.
+
+Note that this option takes priority over B<BTS_SENDMAIL_COMMAND> if both are
+set, unless the B<--sendmail> option is used.
+
+=item B<BTS_SMTP_AUTH_USERNAME>, B<BTS_SMTP_AUTH_PASSWORD>
+
+If these options are set, then it is the same as the B<--smtp-username> and
+B<--smtp-password> options being used.
+
+=item B<BTS_SMTP_HELO>
+
+Same as the B<--smtp-helo> command line option.
+
+=item B<BTS_INCLUDE_RESOLVED>
+
+If this is set to B<no>, then it is the same as the B<--no-include-resolved>
+command line parameter being used. Only has an effect on the B<cache>
+command. The default is B<yes>. See the B<cache> command for more
+information.
+
+=item B<BTS_SUPPRESS_ACKS>
+
+If this is set to B<yes>, then it is the same as the B<--no-ack> command
+line parameter being used. The default is B<no>.
+
+=item B<BTS_INTERACTIVE>
+
+If this is set to B<yes> or B<force>, then it is the same as the
+B<--interactive> or B<--force-interactive> command line parameter being used.
+The default is B<no>.
+
+=item B<BTS_DEFAULT_CC>
+
+Specify a list of e-mail addresses to which a carbon copy of the generated
+e-mail to the control bot should automatically be sent.
+
+=item B<BTS_SERVER>
+
+Specify the name of a debbugs server which should be used instead of
+bugs.debian.org.
+
+=back
+
+=head1 SEE ALSO
+
+Please see L<https://www.debian.org/Bugs/server-control> for
+more details on how to control the BTS using emails and
+L<https://www.debian.org/Bugs/> for more information about the BTS.
+
+querybts(1), reportbug(1)
+
+=head1 COPYRIGHT
+
+This program is Copyright (C) 2001-2003 by Joey Hess <joeyh@debian.org>.
+Many modifications have been made, Copyright (C) 2002-2005 Julian
+Gilbey <jdg@debian.org> and Copyright (C) 2007 Josh Triplett
+<josh@freedesktop.org>.
+
+It is licensed under the terms of the GPL, either version 2 of the
+License, or (at your option) any later version.
+
+=cut
+
+# Please leave this alone unless you understand the seek above.
+__DATA__
--- /dev/null
+#!/usr/bin/perl
+# Copyright (C) Patrick Schoenfeld
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+=head1 NAME
+
+build-rdeps - find packages that depend on a specific package to build (reverse build depends)
+
+=head1 SYNOPSIS
+
+B<build-rdeps> I<package>
+
+=head1 DESCRIPTION
+
+B<build-rdeps> searches for all packages that build-depend on the specified package.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-u>, B<--update>
+
+Run apt-get update before searching for build-depends.
+
+=item B<-s>, B<--sudo>
+
+Use sudo when running apt-get update. Has no effect if -u is omitted.
+
+=item B<--distribution>
+
+Select another distribution, which is searched for build-depends.
+
+=item B<--only-main>
+
+Ignore contrib and non-free
+
+=item B<--exclude-component>
+
+Ignore the given component (e.g. main, contrib, non-free).
+
+=item B<--origin>
+
+Restrict the search to only the specified origin (such as "Debian").
+
+=item B<-m>, B<--print-maintainer>
+
+Print the value of the maintainer field for each package.
+
+=item B<-d>, B<--debug>
+
+Run the debug mode
+
+=item B<--help>
+
+Show the usage information.
+
+=item B<--version>
+
+Show the version information.
+
+=back
+
+=head1 REQUIREMENTS
+
+The tool requires apt Sources files to be around for the checked components.
+In the default case this means that in /var/lib/apt/lists files need to be
+around for main, contrib and non-free.
+
+In practice this means one needs to add one deb-src line for each component,
+e.g.
+
+deb-src http://<mirror>/debian <dist> main contrib non-free
+
+and run apt-get update afterwards or use the update option of this tool.
+
+=cut
+
+use warnings;
+use strict;
+use File::Basename;
+use File::Find;
+use Getopt::Long qw(:config gnu_getopt);
+use Pod::Usage;
+use Data::Dumper;
+my $progname = basename($0);
+my $version = '1.0';
+my $dctrl = "grep-dctrl";
+my $sources_path = "/var/lib/apt/lists/";
+my $release_pattern = '(.*_dists_(sid|unstable))_(?:In)*Release$';
+my %seen_origins;
+my @source_files;
+my $opt_debug;
+my $opt_update;
+my $opt_sudo;
+my $opt_maintainer;
+my $opt_mainonly;
+my $opt_distribution;
+my $opt_origin = 'Debian';
+my @opt_exclude_components;
+
+if (system('command -v grep-dctrl >/dev/null 2>&1')) {
+ die "$progname: Fatal error. grep-dctrl is not available.\nPlease install the 'dctrl-tools' package.\n";
+}
+
+sub version {
+ print <<"EOT";
+This is $progname $version, from the Debian devscripts package, v. ###VERSION###
+This code is copyright by Patrick Schoenfeld, all rights reserved.
+It comes with ABSOLUTELY NO WARRANTY. You are free to redistribute this code
+under the terms of the GNU General Public License, version 2 or later.
+EOT
+exit (0);
+}
+
+sub usage {
+ print <<"EOT";
+usage: $progname packagename
+ $progname --help
+ $progname --version
+
+Searches for all packages that build-depend on the specified package.
+
+Options:
+ -u, --update Run apt-get update before searching for build-depends.
+ (needs root privileges)
+ -s, --sudo Use sudo when running apt-get update
+ (has no effect when -u is ommitted)
+ -d, --debug Enable the debug mode
+ -m, --print-maintainer Print the maintainer information (experimental)
+ --distribution distribution Select a distribution to search for build-depends
+ (Default: unstable)
+ --origin origin Select an origin to search for build-depends
+ (Default: Debian)
+ --only-main Ignore contrib and non-free
+ --exclude-component COMPONENT Ignore the specified component (can be given multiple times)
+
+EOT
+version;
+}
+
+# Sub to test if a given section shall be included in the result
+sub test_for_valid_component {
+ my $filebase = shift;
+
+ if ($opt_mainonly and $filebase =~ /(contrib|non-free)/) {
+ return -1;
+ }
+ foreach my $component (@opt_exclude_components) {
+ if ($filebase =~ /$component/) {
+ return -1;
+ }
+ }
+
+ if (! -e "$sources_path/$filebase") {
+ print STDERR "Warning: Ignoring missing sources file $filebase. (Missing component in sources.list?)\n";
+ return -1;
+ }
+
+ print STDERR "DEBUG: Component ($filebase) may not be excluded.\n" if ($opt_debug);
+ return 0;
+}
+
+# Scan Release files and add appropriate Sources files
+sub readrelease {
+ my ($file, $base) = @_;
+ open(RELEASE, '<', "$sources_path/$file");
+ while (<RELEASE>) {
+ if (/^Origin:\s*(.+)\s*$/) {
+ my $origin = $1;
+ # skip undesired (non-specified or already seen) origins
+ if (($opt_origin && $origin !~ /^\s*\Q$opt_origin\E\s*$/)
+ || $seen_origins{$origin}) {
+ last;
+ }
+ $seen_origins{$origin} = 1;
+ }
+ elsif (/^(?:MD5|SHA)\w+:/) {
+ # from a list of checksums, grab names of Sources files
+ while (<RELEASE>) {
+ last unless /^ /;
+ if (/([^ ]+\/Sources)$/) {
+ addsources($base, $1);
+ }
+ }
+ last;
+ }
+ }
+ close(RELEASE);
+}
+
+# Add a *_Sources file if test_for_valid_component likes it
+sub addsources {
+ my ($base, $filename) = @_;
+ # main/source/Sources
+ $filename =~ s/\//_/g;
+ # -> ftp.debian.org_..._main_source_Sources
+ $filename = "${base}_${filename}";
+ if (test_for_valid_component($filename) == 0) {
+ push(@source_files, $filename);
+ print STDERR "DEBUG: Added source file: $filename\n" if ($opt_debug);
+ }
+}
+
+sub findreversebuilddeps {
+ my ($package, $source_file) = @_;
+ my %packages;
+ my $depending_package;
+ my $count=0;
+ my $maintainer_info='';
+
+ open(PACKAGES, '-|', $dctrl, '-r', '-F', 'Build-Depends,Build-Depends-Indep', "\\(^\\|, \\)$package", '-s', 'Package,Build-Depends,Build-Depends-Indep,Maintainer', $source_file);
+
+ while(<PACKAGES>) {
+ chomp;
+ print STDERR "$_\n" if ($opt_debug);
+ if (/Package: (.*)$/) {
+ $depending_package = $1;
+ $packages{$depending_package}->{'Build-Depends'} = 0;
+ }
+ elsif (/Maintainer: (.*)$/) {
+ if ($depending_package) {
+ $packages{$depending_package}->{'Maintainer'} = $1;
+ }
+ }
+ elsif (/Build-Depends: (.*)$/ or /Build-Depends-Indep: (.*)$/) {
+ if ($depending_package) {
+ print STDERR "$1\n" if ($opt_debug);
+ if ($1 =~ /^(.*\s)?\Q$package\E(?::[a-zA-Z0-9][a-zA-Z0-9-]*)?([\s,]|$)/) {
+ $packages{$depending_package}->{'Build-Depends'} = 1;
+ }
+ }
+ }
+ }
+
+ while($depending_package = each(%packages)) {
+ if ($packages{$depending_package}->{'Build-Depends'} != 1) {
+ print STDERR "Ignoring package $depending_package because its not really build depending on $package.\n" if ($opt_debug);
+ next;
+ }
+ print $depending_package;
+ if ($opt_maintainer) {
+ print " ($packages{$depending_package}->{'Maintainer'})";
+ }
+ print "\n";
+ $count+=1;
+ }
+
+ if ($count == 0) {
+ print "No reverse build-depends found for $package.\n\n"
+ }
+ else {
+ print "\nFound a total of $count reverse build-depend(s) for $package.\n\n";
+ }
+}
+
+if ($#ARGV < 0) { usage; exit(0); }
+
+
+GetOptions(
+ "u|update" => \$opt_update,
+ "s|sudo" => \$opt_sudo,
+ "m|print-maintainer" => \$opt_maintainer,
+ "distribution=s" => \$opt_distribution,
+ "only-main" => \$opt_mainonly,
+ "exclude-component=s" => \@opt_exclude_components,
+ "origin=s" => \$opt_origin,
+ "d|debug" => \$opt_debug,
+ "h|help" => sub { usage; },
+ "v|version" => sub { version; }
+) or do { usage; exit 1; };
+
+my $package = shift;
+
+if (!$package) {
+ die "$progname: missing argument. expecting packagename\n";
+}
+
+print STDERR "DEBUG: Package => $package\n" if ($opt_debug);
+
+if ($opt_update) {
+ print STDERR "DEBUG: Updating apt-cache before search\n" if ($opt_debug);
+ my @cmd;
+ if ($opt_sudo) {
+ print STDERR "DEBUG: Using sudo to become root\n" if ($opt_debug);
+ push(@cmd, 'sudo');
+ }
+ push(@cmd, 'apt-get', 'update');
+ system @cmd;
+}
+
+if ($opt_distribution) {
+ print STDERR "DEBUG: Setting distribution to $opt_distribution\n" if ($opt_debug);
+ $release_pattern = '(.*_dists_' . $opt_distribution . ')_(?:In)*Release$';
+}
+
+# Find sources files
+find(sub { readrelease($_, $1) if /$release_pattern/ }, $sources_path);
+
+if (!@source_files) {
+ die "$progname: unable to find sources files.\nDid you forget to run apt-get update (or add --update to this command)?";
+}
+
+foreach my $source_file (@source_files) {
+ if ($source_file =~ /main/) {
+ print "Reverse Build-depends in main:\n";
+ print "------------------------------\n\n";
+ findreversebuilddeps($package, "$sources_path/$source_file");
+ }
+
+ if ($source_file =~ /contrib/) {
+ print "Reverse Build-depends in contrib:\n";
+ print "---------------------------------\n\n";
+ findreversebuilddeps($package, "$sources_path/$source_file");
+ }
+
+ if ($source_file =~ /non-free/) {
+ print "Reverse Build-depends in non-free:\n";
+ print "----------------------------------\n\n";
+ findreversebuilddeps($package, "$sources_path/$source_file");
+ }
+}
+
+=head1 LICENSE
+
+This code is copyright by Patrick Schoenfeld
+<schoenfeld@debian.org>, all rights reserved.
+This program comes with ABSOLUTELEY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+
+=head1 AUTHOR
+
+Patrick Schoenfeld <schoenfeld@debian.org>
+
+=cut
--- /dev/null
+have chdist &&
+_chdist ()
+{
+ local cur=$2 prev=$3
+ local options='--help -h --data-dir -d --arch -a'
+ local commands='create apt-get apt-cache apt-rdepends
+ src2bin bin2src
+ compare-packages compare-bin-packages
+ compare-versions compare-bin-versions
+ grep-dctrl-packages grep-dctrl-sources
+ list'
+ local archs='i386 amd64 powerpc m68k sparc alpha hppa arm mips mipsel ia64 armel s390 ppc64 sh armeb m32r'
+ local dists=$(ls $HOME/.chdist 2>/dev/null)
+
+ COMPREPLY=()
+
+
+ case "$prev" in
+ -@(-arch|a))
+ COMPREPLY=( $( compgen -W "$archs" -- $cur ) )
+ return 0
+ ;;
+ -@(-data-dir|d))
+ _filedir
+ return 0
+ ;;
+ -@(-help|h)|list)
+ return 0
+ ;;
+ create|apt-get|apt-cache|apt-rdepends|src2bin|bin2src|compare-packages|compare-bin-packages|compare-versions|compare-bin-versions|grep-dctrl-packages|grep-dctrl-sources)
+ COMPREPLY=( $( compgen -W "$dists" -- $cur ) )
+ return 0
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ # return one of the possible options
+ COMPREPLY=( $( compgen -W "$options" -- $cur ) )
+ else
+ # return one of the possible commands
+ COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
+ fi
+
+ return 0
+
+}
+
+
+[ -n "${have:-}" ] && complete -F _chdist $filenames chdist
+
+
--- /dev/null
+#!/usr/bin/perl
+
+# Debian GNU/Linux chdist. Copyright (C) 2007 Lucas Nussbaum and Luk Claes.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+=head1 NAME
+
+chdist - script to easily play with several distributions
+
+=head1 SYNOPSIS
+
+B<chdist> [I<options>] [I<command>] [I<command parameters>]
+
+=head1 DESCRIPTION
+
+B<chdist> is a rewrite of what used to be known as 'MultiDistroTools'
+(or mdt). Its use is to create 'APT trees' for several distributions,
+making it easy to query the status of packages in other distribution
+without using chroots, for instance.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-h>, B<--help>
+
+Provide a usage message.
+
+=item B<-d>, B<--data-dir> I<DIR>
+
+Choose data directory (default: F<$HOME/.chdist/>).
+
+=item B<-a>, B<--arch> I<ARCH>
+
+Choose architecture (default: `B<dpkg --print-architecture>`).
+
+=item B<--version>
+
+Display version information.
+
+=back
+
+=head1 COMMANDS
+
+=over 4
+
+=item B<create> I<DIST> [I<URL> I<RELEASE> I<SECTIONS>]
+
+Prepare a new tree named I<DIST>
+
+=item B<apt-get> I<DIST> <B<update>|B<source>|...>
+
+Run B<apt-get> inside I<DIST>
+
+=item B<apt-cache> I<DIST> <B<show>|B<showsrc>|...>
+
+Run B<apt-cache> inside I<DIST>
+
+=item B<apt-rdepends> I<DIST> [...]
+
+Run B<apt-rdepends> inside I<DIST>
+
+=item B<src2bin> I<DIST SRCPKG>
+
+List binary packages for I<SRCPKG> in I<DIST>
+
+=item B<bin2src> I<DIST BINPKG>
+
+List source package for I<BINPKG> in I<DIST>
+
+=item B<compare-packages> I<DIST1 DIST2> [I<DIST3>, ...]
+
+=item B<compare-bin-packages> I<DIST1 DIST2> [I<DIST3>, ...]
+
+List versions of packages in several I<DIST>ributions
+
+=item B<compare-versions> I<DIST1 DIST2>
+
+=item B<compare-bin-versions> I<DIST1 DIST2>
+
+Same as B<compare-packages>/B<compare-bin-packages>, but also runs
+B<dpkg --compare-versions> and display where the package is newer.
+
+=item B<compare-src-bin-packages> I<DIST>
+
+Compare sources and binaries for I<DIST>
+
+=item B<compare-src-bin-versions> I<DIST>
+
+Same as B<compare-src-bin-packages>, but also run B<dpkg --compare-versions>
+and display where the package is newer
+
+=item B<grep-dctrl-packages> I<DIST> [...]
+
+Run B<grep-dctrl> on F<*_Packages> inside I<DIST>
+
+=item B<grep-dctrl-sources> I<DIST> [...]
+
+Run B<grep-dctrl> on F<*_Sources> inside I<DIST>
+
+=item B<list>
+
+List available I<DIST>s
+
+=back
+
+=head1 COPYRIGHT
+
+This program is copyright 2007 by Lucas Nussbaum and Luk Claes. This
+program comes with ABSOLUTELY NO WARRANTY.
+
+It is licensed under the terms of the GPL, either version 2 of the
+License, or (at your option) any later version.
+
+=cut
+
+use strict;
+use warnings;
+no if $] >= 5.018, 'warnings', 'experimental::smartmatch';
+use feature 'switch';
+use File::Copy qw(cp);
+use File::Path qw(make_path);
+use File::Basename;
+use Getopt::Long qw(:config gnu_compat bundling require_order);
+use Cwd qw(abs_path cwd);
+use Dpkg::Version;
+use Pod::Usage;
+
+# Redefine Pod::Text's cmd_i so pod2usage converts I<...> to <...> instead of
+# *...*
+{
+ package Pod::Text;
+ no warnings qw(redefine);
+
+ sub cmd_i { '<'. $_[2] . '>' }
+}
+
+my $progname = basename($0);
+
+sub usage {
+ pod2usage(-verbose => 99,
+ -exitval => $_[0],
+ -sections => 'SYNOPSIS|OPTIONS|ARGUMENTS|COMMANDS');
+}
+
+# specify the options we accept and initialize
+# the option parser
+my $help = '';
+
+my $version = '';
+my $versioninfo = <<"EOF";
+This is $progname, from the Debian devscripts package, version
+###VERSION### This code is copyright 2007 by Lucas Nussbaum and Luk
+Claes. This program comes with ABSOLUTELY NO WARRANTY. You are free
+to redistribute this code under the terms of the GNU General Public
+License, version 2 or (at your option) any later version.
+EOF
+
+my $arch;
+my $datadir = $ENV{'HOME'} . '/.chdist';
+
+GetOptions(
+ "h|help" => \$help,
+ "d|data-dir=s" => \$datadir,
+ "a|arch=s" => \$arch,
+ "version" => \$version,
+) or usage(1);
+
+# Fix-up relative paths
+$datadir = cwd() . "/$datadir" if $datadir !~ m!^/!;
+$datadir = abs_path($datadir);
+
+if ($help) {
+ usage(0);
+}
+
+if ($version) {
+ print $versioninfo;
+ exit 0;
+}
+
+
+########################################################
+### Functions
+########################################################
+
+sub fatal
+{
+ my ($msg) = @_;
+ $msg =~ s/\n?$/\n/;
+ print STDERR "$progname: $msg";
+ exit 1;
+}
+
+sub uniq (@) {
+ my %hash;
+ map { $hash{$_}++ == 0 ? $_ : () } @_;
+}
+
+sub dist_check {
+ # Check that dist exists in $datadir
+ my ($dist) = @_;
+ if ($dist) {
+ my $dir = "$datadir/$dist";
+ return 0 if (-d $dir);
+ fatal("Could not find $dist in $datadir. Run `$progname create $dist` first.");
+ }
+ else {
+ fatal('No dist provided.');
+ }
+}
+
+sub type_check {
+ my ($type) = @_;
+ if (($type ne 'Sources') && ($type ne 'Packages')) {
+ fatal("Unknown type $type.");
+ }
+}
+
+sub aptopts
+{
+ # Build apt options
+ my ($dist) = @_;
+ my @opts = ();
+ if ($arch) {
+ print "W: Forcing arch $arch for this command only.\n";
+ push(@opts, '-o', "Apt::Architecture=$arch");
+ }
+ return @opts;
+}
+
+sub aptconfig
+{
+ # Build APT_CONFIG override
+ my ($dist) = @_;
+ my $aptconf = "$datadir/$dist/etc/apt/apt.conf";
+ if (! -r $aptconf) {
+ fatal("Unable to read $aptconf");
+ }
+ $ENV{'APT_CONFIG'} = $aptconf;
+}
+
+###
+
+sub aptcmd
+{
+ my ($cmd, $dist, @args) = @_;
+ dist_check($dist);
+ unshift(@args, aptopts($dist));
+ aptconfig($dist);
+ exec($cmd, @args);
+}
+
+sub bin2src
+{
+ my ($dist, $pkg) = @_;
+ dist_check($dist);
+ if (!defined($pkg)) {
+ fatal("No package name provided. Exiting.");
+ }
+ my @args = (aptopts($dist), 'show', $pkg);
+ aptconfig($dist);
+ my $src = $pkg;
+ my $pid = open(CACHE, '-|', 'apt-cache', @args);
+ if (!defined($pid)) {
+ fatal("Couldn't run apt-cache: $!");
+ }
+ if ($pid) {
+ while (<CACHE>) {
+ if (m/^Source: (.*)/) {
+ $src = $1;
+ # Slurp remaining output to avoid SIGPIPE
+ local $/ = undef;
+ my $junk = <CACHE>;
+ last;
+ }
+ }
+ close CACHE || fatal("bad apt-cache $!: $?");
+ print "$src\n";
+ }
+}
+
+sub src2bin {
+ my ($dist, $pkg) = @_;
+ dist_check($dist);
+ if (!defined($pkg)) {
+ fatal("no package name provided. Exiting.");
+ }
+ my @args = (aptopts($dist), 'showsrc', $pkg);
+ my $pid = open(CACHE, '-|', 'apt-cache', @args);
+ if (!defined($pid)) {
+ fatal("Couldn't run apt-cache: $!");
+ }
+ if ($pid) {
+ while (<CACHE>) {
+ if (m/^Binary: (.*)/) {
+ print join("\n", split(/, /, $1)) . "\n";
+ # Slurp remaining output to avoid SIGPIPE
+ local $/ = undef;
+ my $junk = <CACHE>;
+ last;
+ }
+ }
+ close CACHE || fatal("bad apt-cache $!: $?");
+ }
+}
+
+sub dist_create
+{
+ my ($dist, $method, $version, @sections) = @_;
+ if (!defined($dist)) {
+ fatal("you must provide a dist name.");
+ }
+ my $dir = "$datadir/$dist";
+ if (-d $dir) {
+ fatal("$dir already exists, exiting.");
+ }
+ make_path($datadir);
+ foreach my $d (('/etc/apt', '/etc/apt/apt.conf.d', '/etc/apt/preferences.d',
+ '/etc/apt/trusted.gpg.d', '/var/lib/apt/lists/partial',
+ '/var/cache/apt/archives/partial', '/var/lib/dpkg')) {
+ make_path("$dir/$d");
+ }
+
+ # Create sources.list
+ open(FH, '>', "$dir/etc/apt/sources.list");
+ if ($version) {
+ # Use provided method, version and sections
+ my $sections_str = join(' ', @sections);
+ print FH <<EOF;
+deb $method $version $sections_str
+deb-src $method $version $sections_str
+EOF
+ }
+ else {
+ if ($method) {
+ warn "W: method provided without a section. Using default content for sources.list\n";
+ }
+ # Fill in sources.list with example contents
+ print FH <<EOF;
+#deb http://ftp.debian.org/debian/ unstable main contrib non-free
+#deb-src http://ftp.debian.org/debian/ unstable main contrib non-free
+
+#deb http://archive.ubuntu.com/ubuntu dapper main restricted
+#deb http://archive.ubuntu.com/ubuntu dapper universe multiverse
+#deb-src http://archive.ubuntu.com/ubuntu dapper main restricted
+#deb-src http://archive.ubuntu.com/ubuntu dapper universe multiverse
+EOF
+ }
+ close FH;
+ # Create dpkg status
+ open(FH, '>', "$dir/var/lib/dpkg/status");
+ close FH; #empty file
+ # Create apt.conf
+ $arch ||= `dpkg --print-architecture`;
+ chomp $arch;
+ open(FH, ">$dir/etc/apt/apt.conf");
+ print FH <<EOF;
+Apt {
+ Architecture "$arch";
+};
+
+Dir "$dir";
+Dir::State::status "$dir/var/lib/dpkg/status";
+EOF
+ close FH;
+ foreach my $keyring (qw(debian-archive-keyring.gpg
+ debian-archive-removed-keys.gpg
+ ubuntu-archive-keyring.gpg
+ ubuntu-archive-removed-keys.gpg)) {
+ cp("/usr/share/keyrings/$keyring", "$dir/etc/apt/trusted.gpg.d/");
+ }
+ print "Now edit $dir/etc/apt/sources.list\n" unless $version;
+ print "Run chdist apt-get $dist update\n";
+ print "And enjoy.\n";
+}
+
+
+
+sub get_distfiles {
+ # Retrieve files to be read
+ # Takes a dist and a type
+ my ($dist, $type) = @_;
+
+ my @files;
+
+ foreach my $file ( glob($datadir . '/' . $dist . "/var/lib/apt/lists/*_$type") ) {
+ if ( -f $file ) {
+ push @files, $file;
+ }
+ }
+
+ return \@files;
+}
+
+
+sub dist_compare(\@$$) {
+ # Takes a list of dists, a type of comparison and a do_compare flag
+ my ($dists, $do_compare, $type) = @_;
+ type_check($type);
+
+ # Get the list of dists from the reference
+ my @dists = @$dists;
+ map { dist_check($_) } @dists;
+
+ # Get all packages
+ my %packages;
+
+ foreach my $dist (@dists) {
+ my $files = get_distfiles($dist,$type);
+ my @files = @$files;
+ foreach my $file ( @files ) {
+ my $parsed_file = parseFile($file);
+ foreach my $package ( keys(%{$parsed_file}) ) {
+ if ( $packages{$dist}{$package} ) {
+ warn "W: Package $package is already listed for $dist. Not overriding.\n";
+ } else {
+ $packages{$dist}{$package} = $parsed_file->{$package};
+ }
+ }
+ }
+ }
+
+ # Get entire list of packages
+ my @all_packages = uniq sort ( map { keys(%{$packages{$_}}) } @dists );
+
+ foreach my $package (@all_packages) {
+ my $line = "$package ";
+ my $status = "";
+ my $details;
+
+ foreach my $dist (@dists) {
+ if ( $packages{$dist}{$package} ) {
+ $line .= "$packages{$dist}{$package}{'Version'} ";
+ } else {
+ $line .= "UNAVAIL ";
+ $status = "not_in_$dist";
+ }
+ }
+
+ my @versions = map { $packages{$_}{$package}{'Version'} } @dists;
+ # Escaped versions
+ my @esc_vers = @versions;
+ foreach my $vers (@esc_vers) {
+ $vers =~ s|\+|\\\+|;
+ }
+
+ # Do compare
+ if ($do_compare) {
+ if (!@dists) {
+ fatal('Can only compare versions if there are two distros.');
+ }
+ if (!$status) {
+ my $cmp = version_compare($versions[0], $versions[1]);
+ if (!$cmp) {
+ $status = "same_version";
+ } elsif ($cmp < 0) {
+ $status = "newer_in_$dists[1]";
+ if ( $versions[1] =~ m|^$esc_vers[0]| ) {
+ $details = " local_changes_in_$dists[1]";
+ }
+ } else {
+ $status = "newer_in_$dists[0]";
+ if ( $versions[0] =~ m|^$esc_vers[1]| ) {
+ $details = " local_changes_in_$dists[0]";
+ }
+ }
+ }
+ $line .= " $status $details";
+ }
+
+ print "$line\n";
+ }
+}
+
+
+sub compare_src_bin {
+ my ($dist, $do_compare) = @_;
+
+ dist_check($dist);
+
+ # Get all packages
+ my %packages;
+ my @parse_types = ('Sources', 'Packages');
+ my @comp_types = ('Sources_Bin', 'Packages');
+
+ foreach my $type (@parse_types) {
+ my $files = get_distfiles($dist, $type);
+ my @files = @$files;
+ foreach my $file ( @files ) {
+ my $parsed_file = parseFile($file);
+ foreach my $package ( keys(%{$parsed_file}) ) {
+ if ( $packages{$dist}{$package} ) {
+ warn "W: Package $package is already listed for $dist. Not overriding.\n";
+ } else {
+ $packages{$type}{$package} = $parsed_file->{$package};
+ }
+ }
+ }
+ }
+
+ # Build 'Sources_Bin' hash
+ foreach my $package ( keys( %{$packages{Sources}} ) ) {
+ my $package_h = \%{$packages{Sources}{$package}};
+ if ( $package_h->{'Binary'} ) {
+ my @binaries = split(", ", $package_h->{'Binary'});
+ my $version = $package_h->{'Version'};
+ foreach my $binary (@binaries) {
+ if (defined $packages{Sources_Bin}{$binary}) {
+ my $alt_ver = $packages{Sources_Bin}{$binary}{Version};
+ # Skip this entry if it's an older version than we already
+ # have
+ if (version_compare($version, $alt_ver) < 0) {
+ next;
+ }
+ }
+ $packages{Sources_Bin}{$binary}{Version} = $version;
+ }
+ } else {
+ warn "Source $package has no binaries!\n";
+ }
+ }
+
+ # Get entire list of packages
+ my @all_packages = uniq sort ( map { keys(%{$packages{$_}}) } @comp_types );
+
+ foreach my $package (@all_packages) {
+ my $line = "$package ";
+ my $status = "";
+ my $details;
+
+ foreach my $type (@comp_types) {
+ if ( $packages{$type}{$package} ) {
+ $line .= "$packages{$type}{$package}{'Version'} ";
+ } else {
+ $line .= "UNAVAIL ";
+ $status = "not_in_$type";
+ }
+ }
+
+ my @versions = map { $packages{$_}{$package}{'Version'} } @comp_types;
+
+ # Do compare
+ if ($do_compare) {
+ if (!@comp_types) {
+ fatal('Can only compare versions if there are two types.');
+ }
+ if (!$status) {
+ my $cmp = version_compare($versions[0], $versions[1]);
+ if (!$cmp) {
+ $status = "same_version";
+ } elsif ($cmp < 0) {
+ $status = "newer_in_$comp_types[1]";
+ if ( $versions[1] =~ m|^\Q$versions[0]\E| ) {
+ $details = " local_changes_in_$comp_types[1]";
+ }
+ } else {
+ $status = "newer_in_$comp_types[0]";
+ if ( $versions[0] =~ m|^\Q$versions[1]\E| ) {
+ $details = " local_changes_in_$comp_types[0]";
+ }
+ }
+ }
+ $line .= " $status $details";
+ }
+
+ print "$line\n";
+ }
+}
+
+sub grep_file(\@$)
+{
+ my ($argv, $file) = @_;
+ my $dist = shift @{$argv};
+ dist_check($dist);
+ my @f = glob($datadir . '/' . $dist . "/var/lib/apt/lists/*_$file");
+ if (@f) {
+ exec('grep-dctrl', @{$argv}, @f);
+ }
+ else {
+ fatal("Couldn't find a $file for $dist.");
+ }
+}
+
+sub list {
+ opendir(DIR, $datadir) or fatal("can't open dir $datadir: $!");
+ while (my $file = readdir(DIR)) {
+ if ( (-d "$datadir/$file") && ($file =~ m|^\w+|) ) {
+ print "$file\n";
+ }
+ }
+ closedir(DIR);
+}
+
+
+
+sub parseFile {
+ my ($file) = @_;
+
+ # Parse a source file and returns results as a hash
+
+ open(FILE, '<', $file) || fatal("Could not open $file : $!");
+
+ # Use %tmp hash to store tmp data
+ my %tmp;
+ my %result;
+
+ while (my $line = <FILE>) {
+ if ( $line =~ m|^$| ) {
+ # Commit data if empty line
+ if ( $tmp{'Package'} ) {
+ #print "Committing data for $tmp{'Package'}\n";
+ while ( my ($field, $data) = each(%tmp) ) {
+ if ( $field ne "Package" ) {
+ $result{$tmp{'Package'}}{$field} = $data;
+ }
+ }
+ # Reset %tmp
+ %tmp = ();
+ } else {
+ warn "W: No Package field found. Not committing data.\n";
+ }
+ } elsif ( $line =~ m|^[a-zA-Z]| ) {
+ # Gather data
+ my ($field, $data) = $line =~ m|([a-zA-Z-]+): (.*)$|;
+ if ($data) {
+ $tmp{$field} = $data;
+ }
+ }
+ }
+ close(FILE);
+
+ return \%result;
+}
+
+
+
+
+########################################################
+### Command parsing
+########################################################
+
+my $command = shift @ARGV;
+given ($command) {
+ when ('create') {
+ dist_create(@ARGV);
+ }
+ when ('apt-get') {
+ aptcmd('apt-get', @ARGV);
+ }
+ when ('apt-cache') {
+ aptcmd('apt-cache', @ARGV);
+ }
+ when ('apt-rdepends') {
+ aptcmd('apt-rdepends', @ARGV);
+ }
+ when ('bin2src') {
+ bin2src(@ARGV);
+ }
+ when ('src2bin') {
+ src2bin(@ARGV);
+ }
+ when ('compare-packages') {
+ dist_compare(@ARGV, 0, 'Sources');
+ }
+ when ('compare-bin-packages') {
+ dist_compare(@ARGV, 0, 'Packages');
+ }
+ when ('compare-versions') {
+ dist_compare(@ARGV, 1, 'Sources');
+ }
+ when ('compare-bin-versions') {
+ dist_compare(@ARGV, 1, 'Packages');
+ }
+ when ('grep-dctrl-packages') {
+ grep_file(@ARGV, 'Packages');
+ }
+ when ('grep-dctrl-sources') {
+ grep_file(@ARGV, 'Sources');
+ }
+ when ('compare-src-bin-packages') {
+ compare_src_bin(@ARGV, 0);
+ }
+ when ('compare-src-bin-versions') {
+ compare_src_bin(@ARGV, 1);
+ }
+ when ('list') {
+ list;
+ }
+ default {
+ usage(1);
+ }
+}
--- /dev/null
+.TH CHECKBASHISMS 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+checkbashisms \- check for bashisms in /bin/sh scripts
+.SH SYNOPSIS
+\fBcheckbashisms\fR \fIscript\fR ...
+.br
+\fBcheckbashisms \-\-help\fR|\fB\-\-version\fR
+.SH DESCRIPTION
+\fBcheckbashisms\fR, based on one of the checks from the \fBlintian\fR
+system, performs basic checks on \fI/bin/sh\fR shell scripts for the
+possible presence of bashisms. It takes the names of the shell
+scripts on the command line, and outputs warnings if possible bashisms
+are detected.
+.PP
+Note that the definition of a bashism in this context roughly equates
+to "a shell feature that is not required to be supported by POSIX"; this
+means that some issues flagged may be permitted under optional sections
+of POSIX, such as XSI or User Portability.
+.PP
+In cases where POSIX and Debian Policy disagree, \fBcheckbashisms\fR by
+default allows extensions permitted by Policy but may also provide
+options for stricter checking.
+.SH OPTIONS
+.TP
+.BR \-\-help ", " \-h
+Show a summary of options.
+.TP
+.BR \-\-newline ", " \-n
+Check for "\fBecho \-n\fR" usage (non POSIX but required by Debian Policy 10.4.)
+.TP
+.BR \-\-posix ", " \-p
+Check for issues which are non POSIX but required to be supported by Debian
+Policy 10.4 (implies \fB\-n\fR).
+.TP
+.BR \-\-force ", " \-f
+Force each script to be checked, even if it would normally not be (for
+instance, it has a bash or non POSIX shell shebang or appears to be a
+shell wrapper).
+.TP
+.BR \-\-extra ", " \-x
+Highlight lines which, whilst they do not contain bashisms, may be
+useful in determining whether a particular issue is a false positive
+which may be ignored.
+For example, the use of "\fB$BASH_ENV\fR" may be preceded by checking
+whether "\fB$BASH\fR" is set.
+.TP
+.BR \-\-version ", " \-v
+Show version and copyright information.
+.SH "EXIT VALUES"
+The exit value will be 0 if no possible bashisms or other problems
+were detected. Otherwise it will be the sum of the following error
+values:
+.TP
+1
+A possible bashism was detected.
+.TP
+2
+A file was skipped for some reason, for example, because it was
+unreadable or not found. The warning message will give details.
+.TP
+4
+No bashisms were detected in a bash script.
+.SH "SEE ALSO"
+.BR lintian (1)
+.SH AUTHOR
+\fBcheckbashisms\fR was originally written as a shell script by Yann Dirson
+<\fIdirson@debian.org\fR> and rewritten in Perl with many more features by
+Julian Gilbey <\fIjdg@debian.org\fR>.
--- /dev/null
+#!/usr/bin/perl -w
+
+# This script is essentially copied from /usr/share/lintian/checks/scripts,
+# which is:
+# Copyright (C) 1998 Richard Braakman
+# Copyright (C) 2002 Josip Rodin
+# This version is
+# Copyright (C) 2003 Julian Gilbey
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use strict;
+use Getopt::Long qw(:config gnu_getopt);
+use File::Temp qw/tempfile/;
+
+sub init_hashes;
+
+(my $progname = $0) =~ s|.*/||;
+
+my $usage = <<"EOF";
+Usage: $progname [-n] [-f] [-x] script ...
+ or: $progname --help
+ or: $progname --version
+This script performs basic checks for the presence of bashisms
+in /bin/sh scripts and the lack of bashisms in /bin/bash ones.
+EOF
+
+my $version = <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2003 by Julian Gilbey <jdg\@debian.org>,
+based on original code which is copyright 1998 by Richard Braakman
+and copyright 2002 by Josip Rodin.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2, or (at your option) any later version.
+EOF
+
+my ($opt_echo, $opt_force, $opt_extra, $opt_posix);
+my ($opt_help, $opt_version);
+my @filenames;
+
+# Detect if STDIN is a pipe
+if (scalar(@ARGV) == 0 && (-p STDIN or -f STDIN)) {
+ push(@ARGV, '-');
+}
+
+##
+## handle command-line options
+##
+$opt_help = 1 if int(@ARGV) == 0;
+
+GetOptions("help|h" => \$opt_help,
+ "version|v" => \$opt_version,
+ "newline|n" => \$opt_echo,
+ "force|f" => \$opt_force,
+ "extra|x" => \$opt_extra,
+ "posix|p" => \$opt_posix,
+ )
+ or die "Usage: $progname [options] filelist\nRun $progname --help for more details\n";
+
+if ($opt_help) { print $usage; exit 0; }
+if ($opt_version) { print $version; exit 0; }
+
+$opt_echo = 1 if $opt_posix;
+
+my $mode = 0;
+my $issues = 0;
+my $status = 0;
+my $makefile = 0;
+my (%bashisms, %string_bashisms, %singlequote_bashisms);
+
+my $LEADIN = qr'(?:(?:^|[`&;(|{])\s*|(?:if|then|do|while|shell)\s+)';
+init_hashes;
+
+my @bashisms_keys = sort keys %bashisms;
+my @string_bashisms_keys = sort keys %string_bashisms;
+my @singlequote_bashisms_keys = sort keys %singlequote_bashisms;
+
+foreach my $filename (@ARGV) {
+ my $check_lines_count = -1;
+
+ my $display_filename = $filename;
+
+ if ($filename eq '-') {
+ my $tmp_fh;
+ ($tmp_fh, $filename) = tempfile("chkbashisms_tmp.XXXX", TMPDIR => 1, UNLINK => 1);
+ while (my $line = <STDIN>) {
+ print $tmp_fh $line;
+ }
+ close($tmp_fh);
+ $display_filename = "(stdin)";
+ }
+
+ if (!$opt_force) {
+ $check_lines_count = script_is_evil_and_wrong($filename);
+ }
+
+ if ($check_lines_count == 0 or $check_lines_count == 1) {
+ warn "script $display_filename does not appear to be a /bin/sh script; skipping\n";
+ next;
+ }
+
+ if ($check_lines_count != -1) {
+ warn "script $display_filename appears to be a shell wrapper; only checking the first "
+ . "$check_lines_count lines\n";
+ }
+
+ unless (open C, '<', $filename) {
+ warn "cannot open script $display_filename for reading: $!\n";
+ $status |= 2;
+ next;
+ }
+
+ $issues = 0;
+ $mode = 0;
+ my $cat_string = "";
+ my $cat_indented = 0;
+ my $quote_string = "";
+ my $last_continued = 0;
+ my $continued = 0;
+ my $found_rules = 0;
+ my $buffered_orig_line = "";
+ my $buffered_line = "";
+ my %start_lines;
+
+ while (<C>) {
+ next unless ($check_lines_count == -1 or $. <= $check_lines_count);
+
+ if ($. == 1) { # This should be an interpreter line
+ if (m,^\#!\s*(\S+),) {
+ my $interpreter = $1;
+
+ if ($interpreter =~ m,/make$,) {
+ init_hashes if !$makefile++;
+ $makefile = 1;
+ } else {
+ init_hashes if $makefile--;
+ $makefile = 0;
+ }
+ next if $opt_force;
+
+ if ($interpreter =~ m,/bash$,) {
+ $mode = 1;
+ }
+ elsif ($interpreter !~ m,/(sh|posh)$,) {
+### ksh/zsh?
+ warn "script $display_filename does not appear to be a /bin/sh script; skipping\n";
+ $status |= 2;
+ last;
+ }
+ } else {
+ warn "script $display_filename does not appear to have a \#! interpreter line;\nyou may get strange results\n";
+ }
+ }
+
+ chomp;
+ my $orig_line = $_;
+
+ # We want to remove end-of-line comments, so need to skip
+ # comments that appear inside balanced pairs
+ # of single or double quotes
+
+ # Remove comments in the "quoted" part of a line that starts
+ # in a quoted block? The problem is that we have no idea
+ # whether the program interpreting the block treats the
+ # quote character as part of the comment or as a quote
+ # terminator. We err on the side of caution and assume it
+ # will be treated as part of the comment.
+ # s/^(?:.*?[^\\])?$quote_string(.*)$/$1/ if $quote_string ne "";
+
+ # skip comment lines
+ if (m,^\s*\#, && $quote_string eq '' && $buffered_line eq '' && $cat_string eq '') {
+ next;
+ }
+
+ # Remove quoted strings so we can more easily ignore comments
+ # inside them
+ s/(^|[^\\](?:\\\\)*)\'(?:\\.|[^\\\'])+\'/$1''/g;
+ s/(^|[^\\](?:\\\\)*)\"(?:\\.|[^\\\"])+\"/$1""/g;
+
+ # If inside a quoted string, remove everything before the quote
+ s/^.+?\'//
+ if ($quote_string eq "'");
+ s/^.+?[^\\]\"//
+ if ($quote_string eq '"');
+
+ # If the remaining string contains what looks like a comment,
+ # eat it. In either case, swap the unmodified script line
+ # back in for processing.
+ if (m/(?:^|[^[\\])[\s\&;\(\)](\#.*$)/) {
+ $_ = $orig_line;
+ s/\Q$1\E//; # eat comments
+ } else {
+ $_ = $orig_line;
+ }
+
+ # Handle line continuation
+ if (!$makefile && $cat_string eq '' && m/\\$/) {
+ chop;
+ $buffered_line .= $_;
+ $buffered_orig_line .= $orig_line . "\n";
+ next;
+ }
+
+ if ($buffered_line ne '') {
+ $_ = $buffered_line . $_;
+ $orig_line = $buffered_orig_line . $orig_line;
+ $buffered_line ='';
+ $buffered_orig_line ='';
+ }
+
+ if ($makefile) {
+ $last_continued = $continued;
+ if (/[^\\]\\$/) {
+ $continued = 1;
+ } else {
+ $continued = 0;
+ }
+
+ # Don't match lines that look like a rule if we're in a
+ # continuation line before the start of the rules
+ if (/^[\w%-]+:+\s.*?;?(.*)$/ and !($last_continued and !$found_rules)) {
+ $found_rules = 1;
+ $_ = $1 if $1;
+ }
+
+ last if m%^\s*(override\s|export\s)?\s*SHELL\s*:?=\s*(/bin/)?bash\s*%;
+
+ # Remove "simple" target names
+ s/^[\w%.-]+(?:\s+[\w%.-]+)*::?//;
+ s/^\t//;
+ s/(?<!\$)\$\((\w+)\)/\${$1}/g;
+ s/(\$){2}/$1/g;
+ s/^[\s\t]*[@-]{1,2}//;
+ }
+
+ if ($cat_string ne "" && (m/^\Q$cat_string\E$/ || ($cat_indented && m/^\t*\Q$cat_string\E$/))) {
+ $cat_string = "";
+ next;
+ }
+ my $within_another_shell = 0;
+ if (m,(^|\s+)((/usr)?/bin/)?((b|d)?a|k|z|t?c)sh\s+-c\s*.+,) {
+ $within_another_shell = 1;
+ }
+ # if cat_string is set, we are in a HERE document and need not
+ # check for things
+ if ($cat_string eq "" and !$within_another_shell) {
+ my $found = 0;
+ my $match = '';
+ my $explanation = '';
+ my $line = $_;
+
+ # Remove "" / '' as they clearly aren't quoted strings
+ # and not considering them makes the matching easier
+ $line =~ s/(^|[^\\])(\'\')+/$1/g;
+ $line =~ s/(^|[^\\])(\"\")+/$1/g;
+
+ if ($quote_string ne "") {
+ my $otherquote = ($quote_string eq "\"" ? "\'" : "\"");
+ # Inside a quoted block
+ if ($line =~ /(?:^|^.*?[^\\])$quote_string(.*)$/) {
+ my $rest = $1;
+ my $templine = $line;
+
+ # Remove quoted strings delimited with $otherquote
+ $templine =~ s/(^|[^\\])$otherquote[^$quote_string]*?[^\\]$otherquote/$1/g;
+ # Remove quotes that are themselves quoted
+ # "a'b"
+ $templine =~ s/(^|[^\\])$otherquote.*?$quote_string.*?[^\\]$otherquote/$1/g;
+ # "\""
+ $templine =~ s/(^|[^\\])$quote_string\\$quote_string$quote_string/$1/g;
+
+ # After all that, were there still any quotes left?
+ my $count = () = $templine =~ /(^|[^\\])$quote_string/g;
+ next if $count == 0;
+
+ $count = () = $rest =~ /(^|[^\\])$quote_string/g;
+ if ($count % 2 == 0) {
+ # Quoted block ends on this line
+ # Ignore everything before the closing quote
+ $line = $rest || '';
+ $quote_string = "";
+ } else {
+ next;
+ }
+ } else {
+ # Still inside the quoted block, skip this line
+ next;
+ }
+ }
+
+ # Check even if we removed the end of a quoted block
+ # in the previous check, as a single line can end one
+ # block and begin another
+ if ($quote_string eq "") {
+ # Possible start of a quoted block
+ for my $quote ("\"", "\'") {
+ my $templine = $line;
+ my $otherquote = ($quote eq "\"" ? "\'" : "\"");
+
+ # Remove balanced quotes and their content
+ while (1) {
+ my ($length_single, $length_double) = (0, 0);
+
+ # Determine which one would match first:
+ if ($templine =~ m/(^.+?(?:^|[^\\\"](?:\\\\)*)\')[^\']*\'/) {
+ $length_single = length($1);
+ }
+ if ($templine =~ m/(^.*?(?:^|[^\\\'](?:\\\\)*)\")(?:\\.|[^\\\"])+\"/) {
+ $length_double = length($1);
+ }
+
+ # Now simplify accordingly (shorter is preferred):
+ if ($length_single != 0 && ($length_single < $length_double || $length_double == 0)) {
+ $templine =~ s/(^|[^\\\"](?:\\\\)*)\'[^\']*\'/$1/;
+ } elsif ($length_double != 0) {
+ $templine =~ s/(^|[^\\\'](?:\\\\)*)\"(?:\\.|[^\\\"])+\"/$1/;
+ } else {
+ last;
+ }
+ }
+
+ # Don't flag quotes that are themselves quoted
+ # "a'b"
+ $templine =~ s/$otherquote.*?$quote.*?$otherquote//g;
+ # "\""
+ $templine =~ s/(^|[^\\])$quote\\$quote$quote/$1/g;
+ # \' or \"
+ $templine =~ s/\\[\'\"]//g;
+ my $count = () = $templine =~ /(^|(?!\\))$quote/g;
+
+ # If there's an odd number of non-escaped
+ # quotes in the line it's almost certainly the
+ # start of a quoted block.
+ if ($count % 2 == 1) {
+ $quote_string = $quote;
+ $start_lines{'quote_string'} = $.;
+ $line =~ s/^(.*)$quote.*$/$1/;
+ last;
+ }
+ }
+ }
+
+ # since this test is ugly, I have to do it by itself
+ # detect source (.) trying to pass args to the command it runs
+ # The first expression weeds out '. "foo bar"'
+ if (not $found and
+ not m/$LEADIN\.\s+(\"[^\"]+\"|\'[^\']+\'|\$\([^)]+\)+(?:\/[^\s;]+)?)\s*(\&|\||\d?>|<|;|\Z)/o
+ and m/$LEADIN(\.\s+[^\s;\`:]+\s+([^\s;]+))/o) {
+ if ($2 =~ /^(\&|\||\d?>|<)/) {
+ # everything is ok
+ ;
+ } else {
+ $found = 1;
+ $match = $1;
+ $explanation = "sourced script with arguments";
+ output_explanation($display_filename, $orig_line, $explanation);
+ }
+ }
+
+ # Remove "quoted quotes". They're likely to be inside
+ # another pair of quotes; we're not interested in
+ # them for their own sake and removing them makes finding
+ # the limits of the outer pair far easier.
+ $line =~ s/(^|[^\\\'\"])\"\'\"/$1/g;
+ $line =~ s/(^|[^\\\'\"])\'\"\'/$1/g;
+
+ foreach my $re (@singlequote_bashisms_keys) {
+ my $expl = $singlequote_bashisms{$re};
+ if ($line =~ m/($re)/) {
+ $found = 1;
+ $match = $1;
+ $explanation = $expl;
+ output_explanation($display_filename, $orig_line, $explanation);
+ }
+ }
+
+ my $re='(?<![\$\\\])\$\'[^\']+\'';
+ if ($line =~ m/(.*)($re)/o){
+ my $count = () = $1 =~ /(^|[^\\])\'/g;
+ if( $count % 2 == 0 ) {
+ output_explanation($display_filename, $orig_line, q<$'...' should be "$(printf '...')">);
+ }
+ }
+
+ # $cat_line contains the version of the line we'll check
+ # for heredoc delimiters later. Initially, remove any
+ # spaces between << and the delimiter to make the following
+ # updates to $cat_line easier. However, don't remove the
+ # spaces if the delimiter starts with a -, as that changes
+ # how the delimiter is searched.
+ my $cat_line = $line;
+ $cat_line =~ s/(<\<-?)\s+(?!-)/$1/g;
+
+ # Ignore anything inside single quotes; it could be an
+ # argument to grep or the like.
+ $line =~ s/(^|[^\\\"](?:\\\\)*)\'(?:\\.|[^\\\'])+\'/$1''/g;
+
+ # As above, with the exception that we don't remove the string
+ # if the quote is immediately preceded by a < or a -, so we
+ # can match "foo <<-?'xyz'" as a heredoc later
+ # The check is a little more greedy than we'd like, but the
+ # heredoc test itself will weed out any false positives
+ $cat_line =~ s/(^|[^<\\\"-](?:\\\\)*)\'(?:\\.|[^\\\'])+\'/$1''/g;
+
+ $re='(?<![\$\\\])\$\"[^\"]+\"';
+ if ($line =~ m/(.*)($re)/o){
+ my $count = () = $1 =~ /(^|[^\\])\"/g;
+ if( $count % 2 == 0 ) {
+ output_explanation($display_filename, $orig_line, q<$"foo" should be eval_gettext "foo">);
+ }
+ }
+
+ foreach my $re (@string_bashisms_keys) {
+ my $expl = $string_bashisms{$re};
+ if ($line =~ m/($re)/) {
+ $found = 1;
+ $match = $1;
+ $explanation = $expl;
+ output_explanation($display_filename, $orig_line, $explanation);
+ }
+ }
+
+ # We've checked for all the things we still want to notice in
+ # double-quoted strings, so now remove those strings as well.
+ $line =~ s/(^|[^\\\'](?:\\\\)*)\"(?:\\.|[^\\\"])+\"/$1""/g;
+ $cat_line =~ s/(^|[^<\\\'-](?:\\\\)*)\"(?:\\.|[^\\\"])+\"/$1""/g;
+ foreach my $re (@bashisms_keys) {
+ my $expl = $bashisms{$re};
+ if ($line =~ m/($re)/) {
+ $found = 1;
+ $match = $1;
+ $explanation = $expl;
+ output_explanation($display_filename, $orig_line, $explanation);
+ }
+ }
+ # This check requires the value to be compared, which could
+ # be done in the regex itself but requires "use re 'eval'".
+ # So it's better done in its own
+ if ($line =~ m/$LEADIN((?:exit|return)\s+(\d{3,}))/o && $2 > 255) {
+ $explanation = 'exit|return status code greater than 255';
+ output_explanation($display_filename, $orig_line, $explanation);
+ }
+
+ # Only look for the beginning of a heredoc here, after we've
+ # stripped out quoted material, to avoid false positives.
+ if ($cat_line =~ m/(?:^|[^<])\<\<(\-?)\s*(?:(?!<|'|")((?:[^\s;>|]+(?:(?<=\\)[\s;>|])?)+)|[\'\"](.*?)[\'\"])/) {
+ $cat_indented = ($1 && $1 eq '-')? 1 : 0;
+ my $quoted = defined($3);
+ $cat_string = $quoted? $3 : $2;
+ unless ($quoted) {
+ # Now strip backslashes. Keep the position of the
+ # last match in a variable, as s/// resets it back
+ # to undef, but we don't want that.
+ my $pos = 0;
+ pos($cat_string) = $pos;
+ while ($cat_string =~ s/\G(.*?)\\/$1/) {
+ # postition += length of match + the character
+ # that followed the backslash:
+ $pos += length($1)+1;
+ pos($cat_string) = $pos;
+ }
+ }
+ $start_lines{'cat_string'} = $.;
+ }
+ }
+ }
+
+ warn "error: $display_filename: Unterminated heredoc found, EOF reached. Wanted: <$cat_string>, opened in line $start_lines{'cat_string'}\n"
+ if ($cat_string ne '');
+ warn "error: $display_filename: Unterminated quoted string found, EOF reached. Wanted: <$quote_string>, opened in line $start_lines{'quote_string'}\n"
+ if ($quote_string ne '');
+ warn "error: $display_filename: EOF reached while on line continuation.\n"
+ if ($buffered_line ne '');
+
+ close C;
+
+ if ($mode && !$issues) {
+ warn "could not find any possible bashisms in bash script $filename\n";
+ $status |= 4;
+ }
+}
+
+exit $status;
+
+sub output_explanation {
+ my ($filename, $line, $explanation) = @_;
+
+ if ($mode) {
+ # When examining a bash script, just flag that there are indeed
+ # bashisms present
+ $issues = 1;
+ } else {
+ warn "possible bashism in $filename line $. ($explanation):\n$line\n";
+ $status |= 1;
+ }
+}
+
+# Returns non-zero if the given file is not actually a shell script,
+# just looks like one.
+sub script_is_evil_and_wrong {
+ my ($filename) = @_;
+ my $ret = -1;
+ # lintian's version of this function aborts if the file
+ # can't be opened, but we simply return as the next
+ # test in the calling code handles reporting the error
+ # itself
+ open (IN, '<', $filename) or return $ret;
+ my $i = 0;
+ my $var = "0";
+ my $backgrounded = 0;
+ local $_;
+ while (<IN>) {
+ chomp;
+ next if /^#/o;
+ next if /^$/o;
+ last if (++$i > 55);
+ if (m~
+ # the exec should either be "eval"ed or a new statement
+ (^\s*|\beval\s*[\'\"]|(;|&&|\b(then|else))\s*)
+
+ # eat anything between the exec and $0
+ exec\s*.+\s*
+
+ # optionally quoted executable name (via $0)
+ .?\$$var.?\s*
+
+ # optional "end of options" indicator
+ (--\s*)?
+
+ # Match expressions of the form '${1+$@}', '${1:+"$@"',
+ # '"${1+$@', "$@", etc where the quotes (before the dollar
+ # sign(s)) are optional and the second (or only if the $1
+ # clause is omitted) parameter may be $@ or $*.
+ #
+ # Finally the whole subexpression may be omitted for scripts
+ # which do not pass on their parameters (i.e. after re-execing
+ # they take their parameters (and potentially data) from stdin
+ .?(\${1:?\+.?)?(\$(\@|\*))?~x) {
+ $ret = $. - 1;
+ last;
+ } elsif (/^\s*(\w+)=\$0;/) {
+ $var = $1;
+ } elsif (m~
+ # Match scripts which use "foo $0 $@ &\nexec true\n"
+ # Program name
+ \S+\s+
+
+ # As above
+ .?\$$var.?\s*
+ (--\s*)?
+ .?(\${1:?\+.?)?(\$(\@|\*))?.?\s*\&~x) {
+
+ $backgrounded = 1;
+ } elsif ($backgrounded and m~
+ # the exec should either be "eval"ed or a new statement
+ (^\s*|\beval\s*[\'\"]|(;|&&|\b(then|else))\s*)
+ exec\s+true(\s|\Z)~x) {
+
+ $ret = $. - 1;
+ last;
+ } elsif (m~\@DPATCH\@~) {
+ $ret = $. - 1;
+ last;
+ }
+
+ }
+ close IN;
+ return $ret;
+}
+
+sub init_hashes {
+
+ %bashisms = (
+ qr'(?:^|\s+)function [^<>\(\)\[\]\{\};|\s]+(\s|\(|\Z)' => q<'function' is useless>,
+ $LEADIN . qr'select\s+\w+' => q<'select' is not POSIX>,
+ qr'(test|-o|-a)\s*[^\s]+\s+==\s' => q<should be 'b = a'>,
+ qr'\[\s+[^\]]+\s+==\s' => q<should be 'b = a'>,
+ qr'\s\|\&' => q<pipelining is not POSIX>,
+ qr'[^\\\$]\{([^\s\\\}]*?,)+[^\\\}\s]*\}' => q<brace expansion>,
+ qr'\{\d+\.\.\d+(?:\.\.\d+)?\}' => q<brace expansion, {a..b[..c]}should be $(seq a [c] b)>,
+ qr'(?i)\{[a-z]\.\.[a-z](?:\.\.\d+)?\}' => q<brace expansion>,
+ qr'(?:^|\s+)\w+\[\d+\]=' => q<bash arrays, H[0]>,
+ $LEADIN . qr'read\s+(?:-[a-qs-zA-Z\d-]+)' => q<read with option other than -r>,
+ $LEADIN . qr'read\s*(?:-\w+\s*)*(?:\".*?\"|[\'].*?[\'])?\s*(?:;|$)'
+ => q<read without variable>,
+ $LEADIN . qr'echo\s+(-n\s+)?-n?en?\s' => q<echo -e>,
+ $LEADIN . qr'exec\s+-[acl]' => q<exec -c/-l/-a name>,
+ $LEADIN . qr'let\s' => q<let ...>,
+ qr'(?<![\$\(])\(\(.*\)\)' => q<'((' should be '$(('>,
+ qr'(?:^|\s+)(\[|test)\s+-a' => q<test with unary -a (should be -e)>,
+ qr'\&>' => q<should be \>word 2\>&1>,
+ qr'(<\&|>\&)\s*((-|\d+)[^\s;|)}`&\\\\]|[^-\d\s]+(?<!\$)(?!\d))' =>
+ q<should be \>word 2\>&1>,
+ qr'\[\[(?!:)' => q<alternative test command ([[ foo ]] should be [ foo ])>,
+ qr'/dev/(tcp|udp)' => q</dev/(tcp|udp)>,
+ $LEADIN . qr'builtin\s' => q<builtin>,
+ $LEADIN . qr'caller\s' => q<caller>,
+ $LEADIN . qr'compgen\s' => q<compgen>,
+ $LEADIN . qr'complete\s' => q<complete>,
+ $LEADIN . qr'declare\s' => q<declare>,
+ $LEADIN . qr'dirs(\s|\Z)' => q<dirs>,
+ $LEADIN . qr'disown\s' => q<disown>,
+ $LEADIN . qr'enable\s' => q<enable>,
+ $LEADIN . qr'mapfile\s' => q<mapfile>,
+ $LEADIN . qr'readarray\s' => q<readarray>,
+ $LEADIN . qr'shopt(\s|\Z)' => q<shopt>,
+ $LEADIN . qr'suspend\s' => q<suspend>,
+ $LEADIN . qr'time\s' => q<time>,
+ $LEADIN . qr'type\s' => q<type>,
+ $LEADIN . qr'typeset\s' => q<typeset>,
+ $LEADIN . qr'ulimit(\s|\Z)' => q<ulimit>,
+ $LEADIN . qr'set\s+-[BHT]+' => q<set -[BHT]>,
+ $LEADIN . qr'alias\s+-p' => q<alias -p>,
+ $LEADIN . qr'unalias\s+-a' => q<unalias -a>,
+ $LEADIN . qr'local\s+-[a-zA-Z]+' => q<local -opt>,
+ # function '=' is special-cased due to bash arrays (think of "foo=()")
+ qr'(?:^|\s)\s*=\s*\(\s*\)\s*([\{|\(]|\Z)'
+ => q<function names should only contain [a-z0-9_]>,
+ qr'(?:^|\s)(?<func>function\s)?\s*(?:[^<>\(\)\[\]\{\};|\s]*[^<>\(\)\[\]\{\};|\s\w][^<>\(\)\[\]\{\};|\s]*)(?(<func>)(?=)|(?<!=))\s*(?(<func>)(?:\(\s*\))?|\(\s*\))\s*([\{|\(]|\Z)'
+ => q<function names should only contain [a-z0-9_]>,
+ $LEADIN . qr'(push|pop)d(\s|\Z)' => q<(push|pop)d>,
+ $LEADIN . qr'export\s+-[^p]' => q<export only takes -p as an option>,
+ qr'(?:^|\s+)[<>]\(.*?\)' => q<\<() process substituion>,
+ $LEADIN . qr'readonly\s+-[af]' => q<readonly -[af]>,
+ $LEADIN . qr'(sh|\$\{?SHELL\}?) -[rD]' => q<sh -[rD]>,
+ $LEADIN . qr'(sh|\$\{?SHELL\}?) --\w+' => q<sh --long-option>,
+ $LEADIN . qr'(sh|\$\{?SHELL\}?) [-+]O' => q<sh [-+]O>,
+ qr'\[\^[^]]+\]' => q<[^] should be [!]>,
+ $LEADIN . qr'printf\s+-v' => q<'printf -v var ...' should be var='$(printf ...)'>,
+ $LEADIN . qr'coproc\s' => q<coproc>,
+ qr';;?&' => q<;;& and ;& special case operators>,
+ $LEADIN . qr'jobs\s' => q<jobs>,
+# $LEADIN . qr'jobs\s+-[^lp]\s' => q<'jobs' with option other than -l or -p>,
+ $LEADIN . qr'command\s+-[^p]\s' => q<'command' with option other than -p>,
+ $LEADIN . qr'setvar\s' => q<setvar 'foo' 'bar' should be eval 'foo="'"$bar"'"'>,
+ $LEADIN . qr'trap\s+["\']?.*["\']?\s+.*(?:ERR|DEBUG|RETURN)' => q<trap with ERR|DEBUG|RETURN>,
+ $LEADIN . qr'(?:exit|return)\s+-\d' => q<exit|return with negative status code>,
+ $LEADIN . qr'(?:exit|return)\s+--' => q<'exit --' should be 'exit' (idem for return)>,
+ $LEADIN . qr'sleep\s+(?:-|\d+(?:[.a-z]|\s+\d))' => q<sleep only takes one integer>,
+ $LEADIN . qr'hash(\s|\Z)' => q<hash>,
+ qr'(?:[:=\s])~(?:[+-]|[+-]?\d+)(?:[/\s]|\Z)' => q<non-standard tilde expansion>,
+ );
+
+ %string_bashisms = (
+ qr'\$\[[^][]+\]' => q<'$[' should be '$(('>,
+ qr'\$\{(?:\w+|@|\*)\:(?:\d+|\$\{?\w+\}?)+(?::(?:\d+|\$\{?\w+\}?)+)?\}' => q<${foo:3[:1]}>,
+ qr'\$\{!\w+[\@*]\}' => q<${!prefix[*|@]>,
+ qr'\$\{!\w+\}' => q<${!name}>,
+ qr'\$\{(?:\w+|@|\*)([,^]{1,2}.*?)\}' => q<${parm,[,][pat]} or ${parm^[^][pat]}>,
+ qr'\$\{[@*]([#%]{1,2}.*?)\}' => q<${[@|*]#[#]pat} or ${[@|*]%[%]pat}>,
+ qr'\$\{#[@*]\}' => q<${#@} or ${#*}>,
+ qr'\$\{(?:\w+|@|\*)(/.+?){1,2}\}' => q<${parm/?/pat[/str]}>,
+ qr'\$\{\#?\w+\[.+\](?:[/,:#%^].+?)?\}' => q<bash arrays, ${name[0|*|@]}>,
+ qr'\$\{?RANDOM\}?\b' => q<$RANDOM>,
+ qr'\$\{?(OS|MACH)TYPE\}?\b' => q<$(OS|MACH)TYPE>,
+ qr'\$\{?HOST(TYPE|NAME)\}?\b' => q<$HOST(TYPE|NAME)>,
+ qr'\$\{?DIRSTACK\}?\b' => q<$DIRSTACK>,
+ qr'\$\{?EUID\}?\b' => q<$EUID should be "$(id -u)">,
+ qr'\$\{?UID\}?\b' => q<$UID should be "$(id -ru)">,
+ qr'\$\{?SECONDS\}?\b' => q<$SECONDS>,
+ qr'\$\{?BASH_[A-Z]+\}?\b' => q<$BASH_SOMETHING>,
+ qr'\$\{?SHELLOPTS\}?\b' => q<$SHELLOPTS>,
+ qr'\$\{?PIPESTATUS\}?\b' => q<$PIPESTATUS>,
+ qr'\$\{?SHLVL\}?\b' => q<$SHLVL>,
+ qr'\$\{?FUNCNAME\}?\b' => q<$FUNCNAME>,
+ qr'\$\{?TMOUT\}?\b' => q<$TMOUT>,
+ qr'(?:^|\s+)TMOUT=' => q<TMOUT=>,
+ qr'\$\{?TIMEFORMAT\}?\b' => q<$TIMEFORMAT>,
+ qr'(?:^|\s+)TIMEFORMAT=' => q<TIMEFORMAT=>,
+ qr'(?<![$\\])\$\{?_\}?\b' => q<$_>,
+ qr'(?:^|\s+)GLOBIGNORE=' => q<GLOBIGNORE=>,
+ qr'<<<' => q<\<\<\< here string>,
+ $LEADIN . qr'echo\s+(?:-[^e\s]+\s+)?\"[^\"]*(\\[abcEfnrtv0])+.*?[\"]' => q<unsafe echo with backslash>,
+ qr'\$\(\([\s\w$*/+-]*\w\+\+.*?\)\)' => q<'$((n++))' should be '$n; $((n=n+1))'>,
+ qr'\$\(\([\s\w$*/+-]*\+\+\w.*?\)\)' => q<'$((++n))' should be '$((n=n+1))'>,
+ qr'\$\(\([\s\w$*/+-]*\w\-\-.*?\)\)' => q<'$((n--))' should be '$n; $((n=n-1))'>,
+ qr'\$\(\([\s\w$*/+-]*\-\-\w.*?\)\)' => q<'$((--n))' should be '$((n=n-1))'>,
+ qr'\$\(\([\s\w$*/+-]*\*\*.*?\)\)' => q<exponentiation is not POSIX>,
+ $LEADIN . qr'printf\s["\'][^"\']+?%[qb].+?["\']' => q<printf %q|%b>,
+ );
+
+ %singlequote_bashisms = (
+ $LEADIN . qr'echo\s+(?:-[^e\s]+\s+)?\'[^\']*(\\[abcEfnrtv0])+.*?[\']' => q<unsafe echo with backslash>,
+ $LEADIN . qr'source\s+[\"\']?(?:\.\/|\/|\$|[\w~.-])\S*' =>
+ q<should be '.', not 'source'>,
+ );
+
+ if ($opt_echo) {
+ $bashisms{$LEADIN . qr'echo\s+-[A-Za-z]*n'} = q<echo -n>;
+ }
+ if ($opt_posix) {
+ $bashisms{$LEADIN . qr'local\s+\w+(\s+\W|\s*[;&|)]|$)'} = q<local foo>;
+ $bashisms{$LEADIN . qr'local\s+\w+='} = q<local foo=bar>;
+ $bashisms{$LEADIN . qr'local\s+\w+\s+\w+'} = q<local x y>;
+ $bashisms{$LEADIN . qr'((?:test|\[)\s+.+\s-[ao])\s'} = q<test -a/-o>;
+ $bashisms{$LEADIN . qr'kill\s+-[^sl]\w*'} = q<kill -[0-9] or -[A-Z]>;
+ $bashisms{$LEADIN . qr'trap\s+["\']?.*["\']?\s+.*[1-9]'} = q<trap with signal numbers>;
+ }
+
+ if ($makefile) {
+ $string_bashisms{qr'(\$\(|\`)\s*\<\s*([^\s\)]{2,}|[^DF])\s*(\)|\`)'} =
+ q<'$(\< foo)' should be '$(cat foo)'>;
+ } else {
+ $bashisms{$LEADIN . qr'\w+\+='} = q<should be VAR="${VAR}foo">;
+ $string_bashisms{qr'(\$\(|\`)\s*\<\s*\S+\s*(\)|\`)'} = q<'$(\< foo)' should be '$(cat foo)'>;
+ }
+
+ if ($opt_extra) {
+ $string_bashisms{qr'\$\{?BASH\}?\b'} = q<$BASH>;
+ $string_bashisms{qr'(?:^|\s+)RANDOM='} = q<RANDOM=>;
+ $string_bashisms{qr'(?:^|\s+)(OS|MACH)TYPE='} = q<(OS|MACH)TYPE=>;
+ $string_bashisms{qr'(?:^|\s+)HOST(TYPE|NAME)='} = q<HOST(TYPE|NAME)=>;
+ $string_bashisms{qr'(?:^|\s+)DIRSTACK='} = q<DIRSTACK=>;
+ $string_bashisms{qr'(?:^|\s+)EUID='} = q<EUID=>;
+ $string_bashisms{qr'(?:^|\s+)UID='} = q<UID=>;
+ $string_bashisms{qr'(?:^|\s+)BASH(_[A-Z]+)?='} = q<BASH(_SOMETHING)=>;
+ $string_bashisms{qr'(?:^|\s+)SHELLOPTS='} = q<SHELLOPTS=>;
+ $string_bashisms{qr'\$\{?POSIXLY_CORRECT\}?\b'} = q<$POSIXLY_CORRECT>;
+ }
+}
--- /dev/null
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH COWPOKE 1 "April 28, 2008"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+cowpoke \- Build a Debian source package in a remote cowbuilder instance
+.SH SYNOPSIS
+.B cowpoke
+.RI [ options ] " packagename.dsc"
+
+.SH DESCRIPTION
+Uploads a Debian source package to a \fBcowbuilder\fR host and builds it,
+optionally also signing and uploading the result to an incoming queue.
+
+
+.SH OPTIONS
+The following options are available:
+
+.TP
+.BI \-\-arch= architecture
+Specify the Debian architecture(s) to build for. A space separated list of
+architectures may be used to build for all of them in a single pass. Valid
+arch names are those returned by \fBdpkg-architecture\fP(1) for
+\fBDEB_BUILD_ARCH\fP.
+
+.TP
+.BI \-\-dist= distribution
+Specify the Debian distribution(s) to build for. A space separated list of
+distributions may be used to build for all of them in a single pass. Either
+codenames (such as \fBsid\fP, or \fBsqueeze\fP) or distribution names (such as
+\fBunstable\fP, or \fBexperimental\fP) may be used, but you should usually stick
+to using one or the other consistently as this name may be used in file paths
+and to locate old packages for comparison reporting.
+
+It is now also possible to use locally defined names with this option, when
+used in conjunction with the \fBBASE_DIST\fP option in a configuration file.
+This permits the maintenance and use of specially configured build chroots,
+which can source package dependencies from the backports archives or a local
+repository, or have other unusual configuration options set, without polluting
+the chroots you use for clean package builds intended for upload to the main
+repositories. See the description of \fBBASE_DIST\fP below.
+
+.TP
+.BI \-\-buildd= host
+Specify the remote host to build on.
+
+.TP
+.BI \-\-buildd\-user= name
+Specify the remote user to build as.
+
+.TP
+.B \-\-create
+Create the remote \fBcowbuilder\fR root if it does not already exist. If this option
+is not passed it is an error for the specified \fB\-\-dist\fP or \fB\-\-arch\fP
+to not have an existing \fBcowbuilder\fR root in the expected location.
+
+The \fB\-\-buildd\-user\fP must have permission to create the \fBRESULT_DIR\fP
+on the build host, or an admin with the necessary permission must first create
+it and give that user (or some group they are in) write access to it, for this
+option to succeed.
+
+.TP
+.BR \-\-return= [ \fIpath ]
+Copy results of the build to \fIpath\fP. If \fIpath\fP is not specified, then return
+them to the current directory. The given \fIpath\fP must exist, it will not be created.
+
+.TP
+.B \-\-no\-return
+Do not copy results of the build to \fBRETURN_DIR\fP (overriding a path set for
+it in the configuration files).
+
+.TP
+.BI \-\-dpkg\-opts= "'opt1 opt2 ...'"
+Specify additional options to be passed to \fBdpkg-buildpackage\fP(1). Multiple
+options are delimited with spaces. This will override any options specified in
+\fBDEBBUILDOPTS\fP in the build host's \fIpbuilderrc\fP.
+
+.TP
+.BI \-\-create\-opts= "'cowbuilder option'"
+Specify additional arguments to be passed verbatim to \fBcowbuilder\fR when a
+chroot is first created (using the \fB\-\-create\fP option above). If multiple
+arguments need to be passed, this option should be specified separately for
+each of them.
+
+E.g., \fB\-\-create\-opts "\-\-othermirror" \-\-create\-opts "deb http:// ..."\fP
+
+This option will override any \fBCREATE_OPTS\fP specified for a chroot in the
+cowpoke configuration files.
+
+.TP
+.BI \-\-update\-opts= "'cowbuilder option'"
+Specify additional arguments to be passed verbatim to \fBcowbuilder\fR if the
+base of the chroot is updated. If multiple arguments need to be passed, this
+option should be specified separately for each of them.
+
+This option will override any \fBUPDATE_OPTS\fP specified for a chroot in the
+cowpoke configuration files.
+
+.TP
+.BI \-\-build\-opts= "'cowbuilder option'"
+Specify additional arguments to be passed verbatim to \fBcowbuilder\fR when
+a package build is performed. If multiple arguments need to be passed, this
+option should be specified separately for each of them.
+
+This option will override any \fBBUILD_OPTS\fP specified for a chroot in the
+cowpoke configuration files.
+
+.TP
+.BI \-\-sign= keyid
+Specify the key to sign packages with. This will override any \fBSIGN_KEYID\fP
+specified for a chroot in the cowpoke configuration files.
+
+.TP
+.BI \-\-upload= queue
+Specify the dput queue to upload signed packages to. This will override any
+\fBUPLOAD_QUEUE\fP specified for a chroot in the cowpoke configuration files.
+
+.TP
+.B \-\-help
+Display a brief summary of the available options and current configuration.
+
+.TP
+.B \-\-version
+Display the current version information.
+
+
+.SH CONFIGURATION OPTIONS
+When \fBcowpoke\fP is run the following configuration options are read from
+global, per\-user, and per\-project configuration files if present. File paths
+may be absolute or relative, the latter being relative to the \fBBUILDD_USER\fR's
+home directory. Since the paths are typically quoted when used, tilde expansion
+will \fBnot\fP be performed on them.
+
+.SS Global defaults
+These apply to every \fIarch\fP and \fIdist\fP in a single cowpoke invocation.
+
+.TP
+.B BUILDD_HOST
+The network address or fqdn of the build machine where \fBcowbuilder\fR is configured.
+This may be overridden by the \fB\-\-buildd\fP command line option.
+.TP
+.B BUILDD_USER
+The unprivileged user name for operations on the build machine. This defaults
+to the local name of the user executing \fBcowpoke\fP (or to a username that is
+specified in your SSH configuration for \fBBUILDD_HOST\fR), and may be overridden by the
+\fB\-\-buildd\-user\fP command line option.
+.TP
+.B BUILDD_ARCH
+The Debian architecture(s) to build for. This must match the \fBDEB_BUILD_ARCH\fP
+of the build chroot being used. It defaults to the local machine architecture where
+\fBcowpoke\fP is executed, and may be overridden by the \fB\-\-arch\fP command line
+option. A (quoted) space separated list of architectures may be used here to build
+for all of them in a single pass.
+.TP
+.B BUILDD_DIST
+The Debian distribution(s) to build for. A (quoted) space separated list of
+distributions may be used to build for all of them in a single pass. This may
+be overridden by the \fB\-\-dist\fP command line option.
+
+.TP
+.B INCOMING_DIR
+The directory path on the build machine where the source package will initially
+be placed. This must be writable by the \fBBUILDD_USER\fP.
+.TP
+.B PBUILDER_BASE
+The filesystem root for all pbuilder CoW and result files. \fIArch\fP and \fIdist\fP
+specific subdirectories will normally be created under this. The apt cache
+and temporary build directory will also be located under this path.
+
+.TP
+.B SIGN_KEYID
+If this option is set, it is expected to contain the gpg key ID to pass to
+\fBdebsign\fP(1) if the packages are to be remotely signed. You will be prompted
+to confirm whether you wish to sign the packages after all builds are complete.
+If this option is unset or an empty string, no attempt to sign packages will be
+made. It may be overridden on an \fIarch\fP and \fIdist\fP specific basis using
+the
+.IB arch _ dist _SIGN_KEYID
+option described below, or per-invocation with the \fB\-\-sign\fP command line
+option.
+
+.TP
+.B UPLOAD_QUEUE
+If this option is set, it is expected to contain a 'host' specification for
+\fBdput\fP(1) which will be used to upload them after they are signed. You will
+be prompted to confirm whether you wish to upload the packages after they are
+signed. If this option is unset or an empty string, no attempt to upload packages
+will be made. If \fBSIGN_KEYID\fP is not set, this option will be ignored entirely.
+It may be overridden on an \fIarch\fP and \fIdist\fP specific basis using the
+.IB arch _ dist _UPLOAD_QUEUE
+option described below, or per-invocation with the \fB\-\-upload\fP command line
+option.
+
+
+.TP
+.B BUILDD_ROOTCMD
+The command to use to gain root privileges on the remote build machine. If
+unset the default is \fBsudo\fP(8). This is only required to invoke \fBcowbuilder\fR
+and allow it to enter its chroot, so you may restrict this user to only being
+able to run that command with escalated privileges. Something like this in
+sudoers will enable invoking \fBcowbuilder\fR without an additional password entry
+required:
+.TP
+.B " "
+.RS 1.5i
+youruser ALL = NOPASSWD: /usr/sbin/cowbuilder
+.RE
+.TP
+.B " "
+Alternatively you could use SSH with a forwarded key, or whatever other
+mechanism suits your local access policy. Using \fBsu \-c\fR isn't really
+suitable here due to its quoting requirements being somewhat different to
+the rest.
+
+.TP
+.B DEBOOTSTRAP
+The utility to use when creating a new build root. Alternatives are
+.BR debootstrap " or " cdebootstrap .
+
+.TP
+.B RETURN_DIR
+If set, package files resulting from the build will be copied to the path
+(local or remote) that this is set to, after the build completes. The path
+must exist, it will not be created. This option is unset by default and can
+be overridden with \fB\-\-return\fR or \fB\-\-no-return\fR.
+
+
+.SS Arch and dist specific options
+These are variables of the form: $arch_$dist\fB_VAR\fR which apply only for a
+particular target arch/dist build.
+
+.TP
+.IB arch _ dist _RESULT_DIR
+The directory path on the build machine where the resulting packages (source and
+binary) will be found, and where older versions of the package that were built
+previously may be found. If any such older packages exist, \fBdebdiff\fP will
+be used to compare the new package with the previous version after the build is
+complete, and the result will be included in the build log. Files in it must be
+readable by the \fBBUILDD_USER\fP for sanity checking with \fBlintian\fP(1) and
+\fBdebdiff\fP(1), and for upload with \fBdput\fP(1). If this option is not
+specified for some arch and dist combination then it will default to
+.I $PBUILDER_BASE/$arch/$dist/result
+
+.TP
+.IB arch _ dist _BASE_PATH
+The directory where the CoW master files are to be found (or created if the
+\fB\-\-create\fP command line option was passed). If this option is not specified
+for some arch or dist then it will default to
+.I $PBUILDER_BASE/$arch/$dist/base.cow
+
+.TP
+.IB arch _ dist _BASE_DIST
+The code name to pass as the \fB\-\-distribution\fP option for cowbuilder instead
+of \fIdist\fP. This is necessary when \fIdist\fP is a locally significant name
+assigned to some specially configured build chroot, such as 'wheezy_backports',
+and not the formal suite name of a distro release known to debootstrap. This
+option cannot be overridden on the command line, since it would rarely, if ever,
+make any sense to change it for individual invocations of \fBcowpoke\fP. If this
+option is not specified for an arch and dist combination then it will default to
+.IR dist .
+
+.TP
+.IB arch _ dist _CREATE_OPTS
+A bash array containing additional options to pass verbatim to \fBcowbuilder\fP
+when this chroot is created for the first time (using the \fB\-\-create\fP option).
+This is useful when options like \fB\-\-othermirror\fP are wanted to create
+specialised chroot configurations such as 'wheezy_backports'. By default this
+is unset. All values set in it will be overridden if the \fB\-\-create\-opts\fP
+option is passed on the command line.
+
+Each element in this array corresponds to a single argument (in the ARGV sense)
+that will be passed to cowbuilder. This ensures that arguments which may contain
+whitespace or have strange quoting requirements or other special characters will
+not be mangled before they get to cowbuilder.
+
+Bash arrays are initialised using the following form:
+
+ OPTS=( "arg1" "arg 2" "\-\-option" "value" "\-\-opt=val" "etc. etc." )
+
+.TP
+.IB arch _ dist _UPDATE_OPTS
+A bash array containing additional options to pass verbatim to \fBcowbuilder\fP
+each time the base of this chroot is updated. It behaves similarly to the
+\fBCREATE_OPTS\fP option above, except for acting when the chroot is updated.
+
+.TP
+.IB arch _ dist _BUILD_OPTS
+A bash array containing additional options to pass verbatim to \fBcowbuilder\fP
+each time a package build is performed in this chroot. This is useful when you
+want to use some option like \fB\-\-twice\fP which cowpoke does not directly
+need to care about. It otherwise behaves similarly to \fBUPDATE_OPTS\fP above
+except that it acts during the build phase of \fBcowbuilder\fP.
+
+.TP
+.IB arch _ dist _SIGN_KEYID
+An optional arch and dist specific override for the global \fBSIGN_KEYID\fP
+option.
+
+.TP
+.IB arch _ dist _UPLOAD_QUEUE
+An optional arch and dist specific override for the global \fBUPLOAD_QUEUE\fP
+option.
+
+
+.SH CONFIGURATION FILES
+.TP
+.I /etc/cowpoke.conf
+Global configuration options. Will override hardcoded defaults.
+.TP
+.I ~/.cowpoke
+Per\-user configuration options. Will override any global configuration.
+.TP
+.I .cowpoke
+Per\-project configuration options. Will override any per-user or global
+configuration if \fBcowpoke\fP is called from the directory where they exist.
+
+If the environment variable \fBCOWPOKE_CONF\fP is set, it specifies an additional
+configuration file which will override all of those above. Options specified
+explicitly on the command line override all configuration files.
+
+
+.SH COWBUILDER CONFIGURATION
+There is nothing particularly special required to configure a \fBcowbuilder\fR instance
+for use with \fBcowpoke\fP. Simply create them in the flavour you require with
+`\fBcowbuilder \-\-create\fP` according to the \fBcowbuilder\fR documentation, then
+configure \fBcowpoke\fP with the user, arch, and path information required to
+access it, on the machines you wish to invoke it from (or alternatively configure
+\fBcowpoke\fP with the path, arch and distribution information and pass the
+\fB\-\-create\fP option to it on the first invocation). The build host running
+\fBcowbuilder\fR does not require \fBcowpoke\fP installed locally.
+
+The build machine should have the \fBlintian\fP and \fBdevscripts\fR packages
+installed for post-build sanity checking. Upon completion, the build log and
+the results of automated checks will be recorded in the \fBINCOMING_DIR\fP.
+If you wish to upload signed packages the build machine will also need
+\fBdput\fP(1) installed and configured to use the '\fIhost\fP' alias specified
+by \fBUPLOAD_QUEUE\fP. If \fBrsync\fP(1) is available on both the local and
+build machine, then it will be used to transfer the source package (this may
+save on some transfers of the \fIorig.tar.*\fP when building subsequent Debian
+revisions).
+
+The user executing \fBcowpoke\fP must have SSH access to the build machine as
+the \fBBUILDD_USER\fP. That user must be able to invoke \fBcowbuilder\fR as root by
+using the \fBBUILDD_ROOTCMD\fP. Signing keys are not required to be installed
+on the build machine (and will be ignored there if they are). If the package
+is signed, keys will be expected on the machine that executes \fBcowpoke\fP.
+
+When \fBcowpoke\fP is invoked, it will first attempt to update the \fBcowbuilder\fR
+image if that has not already been done on the same day. This is checked by
+the presence or absence of a \fIcowbuilder-$arch-$dist-update-log-$date\fP file
+in the \fBINCOMING_DIR\fP. You may move, remove, or touch this file if you wish
+the image to be updated more or less often than that. Its contents log the
+output of \fBcowbuilder\fR during the update (or creation) of the build root.
+
+
+.SH NOTES
+Since \fBcowbuilder\fP creates a chroot, and to do that you need root, \fBcowpoke\fP
+also requires some degree of root access. So all the horrible things that can
+go wrong with that may well one day rain down upon you. \fBcowbuilder\fR has been
+known to accidentally wipe out bind-mounted filesystems outside the chroot, and
+worse than that can easily happen. So be careful, keep good backups of things
+you don't want to lose on your build machine, and use \fBcowpoke\fP to keep all
+that on a machine that isn't your bleeding edge dev box with your last few hours
+of uncommitted work.
+
+.SH SEE ALSO
+.BR cowbuilder (1),
+.BR pbuilder (1),
+.BR ssh-agent (1),
+.BR sudoers (5)
+
+.SH AUTHOR
+.B cowpoke
+was written by Ron <\fIron@debian.org\fP>.
+
--- /dev/null
+#!/bin/bash
+# Simple shell script for driving a remote cowbuilder via ssh
+#
+# Copyright(C) 2007, 2008, 2009, 2011, 2012, 2014, Ron <ron@debian.org>
+# This script is distributed according to the terms of the GNU GPL.
+
+set -e
+
+#BUILDD_HOST=
+#BUILDD_USER=
+BUILDD_ARCH="$(dpkg-architecture -qDEB_BUILD_ARCH 2>/dev/null)"
+
+# The 'default' dist is whatever cowbuilder is locally configured for
+BUILDD_DIST="default"
+
+INCOMING_DIR="cowbuilder-incoming"
+PBUILDER_BASE="/var/cache/pbuilder"
+
+#SIGN_KEYID=
+#UPLOAD_QUEUE="ftp-master"
+BUILDD_ROOTCMD="sudo"
+
+REMOTE_SCRIPT="cowssh_it"
+DEBOOTSTRAP="cdebootstrap"
+
+for f in /etc/cowpoke.conf ~/.cowpoke .cowpoke "$COWPOKE_CONF"; do [ -r "$f" ] && . "$f"; done
+
+
+get_archdist_vars()
+{
+ _ARCHDIST_OPTIONS="RESULT_DIR BASE_PATH BASE_DIST CREATE_OPTS UPDATE_OPTS BUILD_OPTS SIGN_KEYID UPLOAD_QUEUE"
+ _RESULT_DIR="result"
+ _BASE_PATH="base.cow"
+
+ for arch in $BUILDD_ARCH; do
+ for dist in $BUILDD_DIST; do
+ for var in $_ARCHDIST_OPTIONS; do
+ eval "val=( \"\${${arch}_${dist}_${var}[@]}\" )"
+
+ if [ "$1" = "display" ]; then
+ case $var in
+ RESULT_DIR | BASE_PATH )
+ [ ${#val[@]} -gt 0 ] || eval "val=\"$PBUILDER_BASE/$arch/$dist/\$_$var\""
+ echo " ${arch}_${dist}_${var} = $val"
+ ;;
+
+ *_OPTS )
+ # Don't display these if they are overridden on the command line.
+ eval "override=( \"\${OVERRIDE_${var}[@]}\" )"
+ [ ${#override[@]} -gt 0 ] || [ ${#val[@]} -eq 0 ] ||
+ echo " ${arch}_${dist}_${var} =$(printf " '%s'" "${val[@]}")"
+ ;;
+
+ * )
+ [ ${#val[@]} -eq 0 ] || echo " ${arch}_${dist}_${var} = $val"
+ ;;
+ esac
+ else
+ case $var in
+ RESULT_DIR | BASE_PATH )
+ # These are always a single value, and must always be set,
+ # either by the user or to their default value.
+ [ ${#val[@]} -gt 0 ] || eval "val=\"$PBUILDER_BASE/$arch/$dist/\$_$var\""
+ echo "${arch}_${dist}_${var}='$val'"
+ ;;
+
+ *_OPTS )
+ # These may have zero, one, or many values which we must not word-split.
+ # They can safely remain unset if there are no values.
+ #
+ # We don't need to worry about the command line overrides here,
+ # they will be taken care of in the remote script.
+ [ ${#val[@]} -eq 0 ] ||
+ echo "${arch}_${dist}_${var}=($(printf " %q" "${val[@]}") )"
+ ;;
+
+ SIGN_KEYID | UPLOAD_QUEUE )
+ # We don't need these in the remote script
+ ;;
+
+ * )
+ # These may have zero or one value.
+ # They can safely remain unset if there are no values.
+ [ ${#val[@]} -eq 0 ] || echo "${arch}_${dist}_${var}='$val'"
+ ;;
+ esac
+ fi
+ done
+ done
+ done
+}
+
+display_override_vars()
+{
+ _OVERRIDE_OPTIONS="CREATE_OPTS UPDATE_OPTS BUILD_OPTS SIGN_KEYID UPLOAD_QUEUE"
+
+ for var in $_OVERRIDE_OPTIONS; do
+ eval "override=( \"\${OVERRIDE_${var}[@]}\" )"
+ [ ${#override[@]} -eq 0 ] || echo " override: $var =$(printf " '%s'" "${override[@]}")"
+ done
+}
+
+
+PROGNAME="$(basename $0)"
+version ()
+{
+ echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is Copyright 2007-2014, Ron <ron@debian.org>.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License."
+ exit 0
+}
+
+usage()
+{
+ cat 1>&2 <<EOF
+
+cowpoke [options] package.dsc
+
+ Uploads a Debian source package to a cowbuilder host and builds it,
+ optionally also signing and uploading the result to an incoming queue.
+ The following options are supported:
+
+ --arch="arch" Specify the Debian architecture(s) to build for.
+ --dist="dist" Specify the Debian distribution(s) to build for.
+ --buildd="host" Specify the remote host to build on.
+ --buildd-user="name" Specify the remote user to build as.
+ --create Create the remote cowbuilder root if necessary.
+ --return[="path"] Copy results of the build to 'path'. If path is
+ not specified, return them to the current directory.
+ --no-return Do not copy results of the build to RETURN_DIR
+ (overriding a path set for it in the config files).
+ --sign="keyid" Specify the key to sign packages with.
+ --upload="queue" Specify the dput queue to upload signed packages to.
+
+ The current default configuration is:
+
+ BUILDD_HOST = $BUILDD_HOST
+ BUILDD_USER = $BUILDD_USER
+ BUILDD_ARCH = $BUILDD_ARCH
+ BUILDD_DIST = $BUILDD_DIST
+ RETURN_DIR = $RETURN_DIR
+ SIGN_KEYID = $SIGN_KEYID
+ UPLOAD_QUEUE = $UPLOAD_QUEUE
+
+ The expected remote paths are:
+
+ INCOMING_DIR = $INCOMING_DIR
+ PBUILDER_BASE = ${PBUILDER_BASE:-/}
+
+$(get_archdist_vars display)
+$(display_override_vars)
+
+ The cowbuilder image must have already been created on the build host
+ and the expected remote paths must already exist if the --create option
+ is not passed. You must have ssh access to the build host as BUILDD_USER
+ if that is set, else as the user executing cowpoke or a user specified
+ in your ssh config for '$BUILDD_HOST'.
+ That user must be able to execute cowbuilder as root using '$BUILDD_ROOTCMD'.
+
+EOF
+
+ exit $1
+}
+
+
+for arg; do
+ case "$arg" in
+ --arch=*)
+ BUILDD_ARCH="${arg#*=}"
+ ;;
+
+ --dist=*)
+ BUILDD_DIST="${arg#*=}"
+ ;;
+
+ --buildd=*)
+ BUILDD_HOST="${arg#*=}"
+ ;;
+
+ --buildd-user=*)
+ BUILDD_USER="${arg#*=}"
+ ;;
+
+ --create)
+ CREATE_COW="yes"
+ ;;
+
+ --return=*)
+ RETURN_DIR="${arg#*=}"
+ ;;
+
+ --return)
+ RETURN_DIR=.
+ ;;
+
+ --no-return)
+ RETURN_DIR=
+ ;;
+
+ --dpkg-opts=*)
+ # This one is a bit tricky, given the combination of the calling convention here,
+ # the calling convention for cowbuilder, and the behaviour of things that might
+ # pass this option to us. Some things, like when we are called from the gitpkg
+ # hook using options from git-config, will preserve any quoting that was used in
+ # the .gitconfig file, which is natural for anyone to want to use in a construct
+ # like: options = --dpkg-opts='-uc -us -j6'. People are going to cringe if we
+ # tell them they must not use quotes there no matter how much it may 'make sense'
+ # if you know too much about the internals. And it will only get worse when we
+ # then tell them they must quote it like that if they type it directly in their
+ # shell ...
+ #
+ # So we do the only thing that seems sensible, and try to Deal With It here.
+ # If the outermost characters are paired quotes, we manually strip them off.
+ # We don't want to let the shell do quote removal, since that might change a
+ # part of this which we don't want modified.
+ # We collect however many sets of those we are passed in an array, which we'll
+ # then combine back into a single argument at the final point of use.
+ #
+ # Which _should_ DTRT for anyone who isn't trying to blow this up deliberately
+ # and maybe will still do it for them too in spite of their efforts. But unless
+ # someone finds a sensible case this fails on, I'm not going to cry over people
+ # who want to stuff up their own system with input they created themselves.
+ val=${arg#*=}
+ [[ $val == \'*\' || $val == \"*\" ]] && val=${val:1:-1}
+ DEBBUILDOPTS+=( "$val" )
+ ;;
+
+ --create-opts=*)
+ OVERRIDE_CREATE_OPTS+=( "${arg#*=}" )
+ ;;
+
+ --update-opts=*)
+ OVERRIDE_UPDATE_OPTS+=( "${arg#*=}" )
+ ;;
+
+ --build-opts=*)
+ OVERRIDE_BUILD_OPTS+=( "${arg#*=}" )
+ ;;
+
+ --sign=*)
+ OVERRIDE_SIGN_KEYID=${arg#*=}
+ ;;
+
+ --upload=*)
+ OVERRIDE_UPLOAD_QUEUE=${arg#*=}
+ ;;
+
+ *.dsc)
+ DSC="$arg"
+ ;;
+
+ --help)
+ usage 0
+ ;;
+
+ --version)
+ version
+ ;;
+
+ *)
+ echo "ERROR: unrecognised option '$arg'"
+ usage 1
+ ;;
+ esac
+done
+
+if [ -z "$REMOTE_SCRIPT" ]; then
+ echo "No remote script name set. Aborted."
+ exit 1
+fi
+if [ -z "$DSC" ]; then
+ echo "ERROR: No package .dsc specified"
+ usage 1
+fi
+if ! [ -r "$DSC" ]; then
+ echo "ERROR: '$DSC' not found."
+ exit 1
+fi
+if [ -z "$BUILDD_ARCH" ]; then
+ echo "No BUILDD_ARCH set. Aborted."
+ exit 1
+fi
+if [ -z "$BUILDD_HOST" ]; then
+ echo "No BUILDD_HOST set. Aborted."
+ exit 1
+fi
+if [ -z "$BUILDD_ROOTCMD" ]; then
+ echo "No BUILDD_ROOTCMD set. Aborted."
+ exit 1
+fi
+if [ -e "$REMOTE_SCRIPT" ]; then
+ echo "$REMOTE_SCRIPT file already exists and will be overwritten."
+ echo -n "Do you wish to continue (Y/n)? "
+ read -e yesno
+ case "$yesno" in
+ N* | n*)
+ echo "Ok, bailing out."
+ echo "You should set the REMOTE_SCRIPT variable to some other value"
+ echo "if this name conflicts with something you already expect to use"
+ exit 1
+ ;;
+ *) ;;
+ esac
+fi
+
+[ -z "$BUILDD_USER" ] || BUILDD_USER="$BUILDD_USER@"
+
+PACKAGE="$(basename $DSC .dsc)"
+DATE="$(date +%Y%m%d 2>/dev/null)"
+
+
+cat > "$REMOTE_SCRIPT" <<-EOF
+ #!/bin/bash
+ # cowpoke generated remote worker script.
+ # Normally this should have been deleted already, you can safely remove it now.
+
+ compare_changes()
+ {
+ p1="\${1%_*.changes}"
+ p2="\${2%_*.changes}"
+ p1="\${p1##*_}"
+ p2="\${p2##*_}"
+
+ dpkg --compare-versions "\$p1" gt "\$p2"
+ }
+
+ $(get_archdist_vars)
+
+ for arch in $BUILDD_ARCH; do
+ for dist in $BUILDD_DIST; do
+
+ echo " ------- Begin build for \$arch \$dist -------"
+
+ CHANGES="\$arch.changes"
+ LOGFILE="$INCOMING_DIR/build.${PACKAGE}_\$arch.\$dist.log"
+ UPDATELOG="$INCOMING_DIR/cowbuilder-\${arch}-\${dist}-update-log-$DATE"
+ eval "RESULT_DIR=\"\\\$\${arch}_\${dist}_RESULT_DIR\""
+ eval "BASE_PATH=\"\\\$\${arch}_\${dist}_BASE_PATH\""
+ eval "BASE_DIST=\"\\\$\${arch}_\${dist}_BASE_DIST\""
+ eval "CREATE_OPTS=( \"\\\${\${arch}_\${dist}_CREATE_OPTS[@]}\" )"
+ eval "UPDATE_OPTS=( \"\\\${\${arch}_\${dist}_UPDATE_OPTS[@]}\" )"
+ eval "BUILD_OPTS=( \"\\\${\${arch}_\${dist}_BUILD_OPTS[@]}\" )"
+
+ [ -n "\$BASE_DIST" ] || BASE_DIST=\$dist
+ [ ${#OVERRIDE_CREATE_OPTS[@]} -eq 0 ] || CREATE_OPTS=("${OVERRIDE_CREATE_OPTS[@]}")
+ [ ${#OVERRIDE_UPDATE_OPTS[@]} -eq 0 ] || UPDATE_OPTS=("${OVERRIDE_UPDATE_OPTS[@]}")
+ [ ${#OVERRIDE_BUILD_OPTS[@]} -eq 0 ] || BUILD_OPTS=("${OVERRIDE_BUILD_OPTS[@]}")
+ [ ${#DEBBUILDOPTS[*]} -eq 0 ] || DEBBUILDOPTS=("--debbuildopts" "${DEBBUILDOPTS[*]}")
+
+
+ # Sort the list of old changes files for this package to try and
+ # determine the most recent one preceding this version. We will
+ # debdiff to this revision in the final sanity checks if one exists.
+ # This is adapted from the insertion sort trickery in git-debimport.
+
+ OLD_CHANGES="\$(find "\$RESULT_DIR/" -maxdepth 1 -type f \\
+ -name "${PACKAGE%%_*}_*_\$CHANGES" 2>/dev/null \\
+ | sort 2>/dev/null)"
+ P=( \$OLD_CHANGES )
+ count=\${#P[*]}
+
+ for(( i=1; i < count; ++i )) do
+ j=i
+ #echo "was \$i: \${P[i]}"
+ while ((\$j)) && compare_changes "\${P[j-1]}" "\${P[i]}"; do ((--j)); done
+ ((i==j)) || P=( \${P[@]:0:j} \${P[i]} \${P[j]} \${P[@]:j+1:i-(j+1)} \${P[@]:i+1} )
+ done
+ #for(( i=1; i < count; ++i )) do echo "now \$i: \${P[i]}"; done
+
+ OLD_CHANGES=
+ for(( i=count-1; i >= 0; --i )) do
+ if [ "\${P[i]}" != "\$RESULT_DIR/${PACKAGE}_\$CHANGES" ]; then
+ OLD_CHANGES="\${P[i]}"
+ break
+ fi
+ done
+
+
+ set -eo pipefail
+
+ if ! [ -e "\$BASE_PATH" ]; then
+ if [ "$CREATE_COW" = "yes" ]; then
+ mkdir -p "\$RESULT_DIR"
+ mkdir -p "\$(dirname \$BASE_PATH)"
+ mkdir -p "$PBUILDER_BASE/aptcache"
+ $BUILDD_ROOTCMD cowbuilder --create --distribution \$BASE_DIST \\
+ --basepath "\$BASE_PATH" \\
+ --aptcache "$PBUILDER_BASE/aptcache" \\
+ --debootstrap "$DEBOOTSTRAP" \\
+ --debootstrapopts --arch="\$arch" \\
+ "\${CREATE_OPTS[@]}" \\
+ 2>&1 | tee "\$UPDATELOG"
+ else
+ echo "SKIPPING \$dist/\$arch build, '\$BASE_PATH' does not exist" | tee "\$LOGFILE"
+ echo " use the cowpoke --create option to bootstrap a new build root" | tee -a "\$LOGFILE"
+ continue
+ fi
+ elif ! [ -e "\$UPDATELOG" ]; then
+ $BUILDD_ROOTCMD cowbuilder --update --distribution \$BASE_DIST \\
+ --basepath "\$BASE_PATH" \\
+ --aptcache "$PBUILDER_BASE/aptcache" \\
+ --autocleanaptcache \\
+ "\${UPDATE_OPTS[@]}" \\
+ 2>&1 | tee "\$UPDATELOG"
+ fi
+ $BUILDD_ROOTCMD cowbuilder --build --basepath "\$BASE_PATH" \\
+ --aptcache "$PBUILDER_BASE/aptcache" \\
+ --buildplace "$PBUILDER_BASE/build" \\
+ --buildresult "\$RESULT_DIR" \\
+ "\${DEBBUILDOPTS[@]}" \\
+ "\${BUILD_OPTS[@]}" \\
+ "$INCOMING_DIR/$(basename $DSC)" 2>&1 \\
+ | tee "\$LOGFILE"
+
+ set +eo pipefail
+
+
+ echo >> "\$LOGFILE"
+ echo "lintian \$RESULT_DIR/${PACKAGE}_\$CHANGES" >> "\$LOGFILE"
+ lintian "\$RESULT_DIR/${PACKAGE}_\$CHANGES" 2>&1 | tee -a "\$LOGFILE"
+
+ if [ -n "\$OLD_CHANGES" ]; then
+ echo >> "\$LOGFILE"
+ echo "debdiff \$OLD_CHANGES ${PACKAGE}_\$CHANGES" >> "\$LOGFILE"
+ debdiff "\$OLD_CHANGES" "\$RESULT_DIR/${PACKAGE}_\$CHANGES" 2>&1 \\
+ | tee -a "\$LOGFILE"
+ else
+ echo >> "\$LOGFILE"
+ echo "No previous packages for \$dist/\$arch to compare" >> "\$LOGFILE"
+ fi
+
+ done
+ done
+
+EOF
+chmod 755 "$REMOTE_SCRIPT"
+
+
+if ! dcmd rsync -vP $DSC "$REMOTE_SCRIPT" "$BUILDD_USER$BUILDD_HOST:$INCOMING_DIR";
+then
+ dcmd scp $DSC "$REMOTE_SCRIPT" "$BUILDD_USER$BUILDD_HOST:$INCOMING_DIR"
+fi
+
+ssh -t "$BUILDD_USER$BUILDD_HOST" "\"$INCOMING_DIR/$REMOTE_SCRIPT\" && rm -f \"$INCOMING_DIR/$REMOTE_SCRIPT\""
+
+echo
+echo "Build completed."
+
+for arch in $BUILDD_ARCH; do
+ CHANGES="$arch.changes"
+ for dist in $BUILDD_DIST; do
+
+ sign_keyid=$OVERRIDE_SIGN_KEYID
+ [ -n "$sign_keyid" ] || eval "sign_keyid=\"\$${arch}_${dist}_SIGN_KEYID\""
+ [ -n "$sign_keyid" ] || sign_keyid="$SIGN_KEYID"
+ [ -n "$sign_keyid" ] || continue
+
+ eval "RESULT_DIR=\"\$${arch}_${dist}_RESULT_DIR\""
+ [ -n "$RESULT_DIR" ] || RESULT_DIR="$PBUILDER_BASE/$arch/$dist/result"
+
+ _desc="$dist/$arch"
+ [ "$dist" != "default" ] || _desc="$arch"
+
+ while true; do
+ echo -n "Sign $_desc $PACKAGE with key '$sign_keyid' (yes/no)? "
+ read -e yesno
+ case "$yesno" in
+ YES | yes)
+ debsign "-k$sign_keyid" -r "$BUILDD_USER$BUILDD_HOST" "$RESULT_DIR/${PACKAGE}_$CHANGES"
+
+ upload_queue=$OVERRIDE_UPLOAD_QUEUE
+ [ -n "$upload_queue" ] || eval "upload_queue=\"\$${arch}_${dist}_UPLOAD_QUEUE\""
+ [ -n "$upload_queue" ] || upload_queue="$UPLOAD_QUEUE"
+
+ if [ -n "$upload_queue" ]; then
+ while true; do
+ echo -n "Upload $_desc $PACKAGE to '$upload_queue' (yes/no)? "
+ read -e upload
+ case "$upload" in
+ YES | yes)
+ ssh "$BUILDD_USER$BUILDD_HOST" \
+ "cd \"$RESULT_DIR/\" && dput \"$upload_queue\" \"${PACKAGE}_$CHANGES\""
+ break 2
+ ;;
+
+ NO | no)
+ echo "Package upload skipped."
+ break 2
+ ;;
+ *)
+ echo "Please answer 'yes' or 'no'"
+ ;;
+ esac
+ done
+ fi
+ break
+ ;;
+
+ NO | no)
+ echo "Package signing skipped."
+ break
+ ;;
+ *)
+ echo "Please answer 'yes' or 'no'"
+ ;;
+ esac
+ done
+ done
+done
+
+if [ -n "$RETURN_DIR" ]; then
+ for arch in $BUILDD_ARCH; do
+ CHANGES="$arch.changes"
+ for dist in $BUILDD_DIST; do
+
+ eval "RESULT_DIR=\"\$${arch}_${dist}_RESULT_DIR\""
+ [ -n "$RESULT_DIR" ] || RESULT_DIR="$PBUILDER_BASE/$arch/$dist/result"
+
+
+ cache_dir="./cowpoke-return-cache"
+ mkdir -p $cache_dir
+
+ scp "$BUILDD_USER$BUILDD_HOST:$RESULT_DIR/${PACKAGE}_$CHANGES" $cache_dir
+
+ for f in $(cd $cache_dir && dcmd ${PACKAGE}_$CHANGES); do
+ RESULTS="$RESULTS $RESULT_DIR/$f"
+ done
+
+ rm -f $cache_dir/${PACKAGE}_$CHANGES
+ rmdir $cache_dir
+
+
+ if ! rsync -vP "$BUILDD_USER$BUILDD_HOST:$RESULTS" "$RETURN_DIR" ;
+ then
+ scp "$BUILDD_USER$BUILDD_HOST:$RESULTS" "$RETURN_DIR"
+ fi
+
+ done
+ done
+fi
+
+rm -f "$REMOTE_SCRIPT"
+
+# vi:sts=4:sw=4:noet:foldmethod=marker
--- /dev/null
+.TH CVS-DEBC 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+cvs-debc \- view contents of a cvs-buildpackage/cvs-debuild generated package
+.SH SYNOPSIS
+\fBcvs-debc\fP [\fIoptions\fR] [\fIpackage\fR ...]
+.SH DESCRIPTION
+\fBcvs-debc\fR is run from the CVS working directory after
+\fBcvs-buildpackage\fR or \fBcvs-debuild\fR. It uses the
+\fBcvs-buildpackage\fR system to locate the \fI.changes\fR file
+generated in that run. It then displays information about the \fI.deb\fR
+files which were generated in that run, by running \fBdpkg-deb \-I\fR
+and \fBdpkg-deb \-c\fR on every \fI.deb\fR archive listed in
+the \fI.changes\fR file, assuming that all of the \fI.deb\fR archives
+live in the same directory as the \fI.changes\fR file. It is
+useful for ensuring that the expected files have ended up in the
+Debian package.
+.PP
+If a list of packages is given on the command line, then only those
+debs with names in this list of packages will be processed.
+.PP
+Note that unlike \fBcvs-buildpackage\fR, the only way to specify the
+source package name is with the \fB\-P\fR option; you cannot simply
+have it as the last command-line parameter.
+.SH OPTIONS
+All current \fBcvs-buildpackage\fR options are silently accepted;
+however, only the ones listed below have any effect. For more details
+on all of them, see the \fBcvs-buildpackage\fR(1) manpage.
+.TP
+\fB\-a\fIdebian-architecture\fR, \fB\-t\fIGNU-system-type\fR
+See \fBdpkg-architecture\fR(1) for a description of these options.
+They affect the search for the \fI.changes\fR file. They are provided
+to mimic the behaviour of \fBdpkg-buildpackage\fR when determining the
+name of the \fI.changes\fR file.
+.TP
+.BR \-M\fImodule
+The name of the CVS module.
+.TP
+.BR \-P\fIpackage
+The name of the package.
+.TP
+.B \-V\fIversion
+The version number of the package.
+.TP
+.B \-T\fItag
+The CVS tag to use for exporting sources.
+.TP
+.B \-R\fIroot\ directory
+Root of the original sources archive.
+.TP
+.B \-W\fIwork directory
+The full path name for the cvs-buildpackage working directory.
+.TP
+.B \-x\fIprefix
+This option provides the CVS default module prefix.
+.TP
+\fB\-\-help\fR, \fB\-\-version\fR
+Show help message and version information respectively.
+.SH "SEE ALSO"
+.BR cvs-buildpackage (1),
+.BR cvs-debi (1),
+.BR cvs-debuild (1),
+.BR debc (1)
+.SH AUTHOR
+\fBcvs-buildpackage\fR was written by Manoj Srivastava, and the
+current version of \fBdebi\fR was written by Julian Gilbey
+<jdg@debian.org>. They have been combined into this program by
+Julian Gilbey.
--- /dev/null
+.TH CVS-DEBI 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+cvs-debi \- install cvs-buildpackage/cvs-debuild generated package
+.SH SYNOPSIS
+\fBcvs-debi\fP [\fIoptions\fR] [\fIpackage\fR ...]
+.SH DESCRIPTION
+\fBcvs-debi\fR is run from the CVS working directory after
+\fBcvs-buildpackage\fR or \fBcvs-debuild\fR. It uses the
+\fBcvs-buildpackage\fR system to locate the \fI.changes\fR file
+generated in that run. It then runs \fBdebpkg \-i\fR on
+every \fI.deb\fR archive listed in the \fI.changes\fR file to install
+them, assuming that all of the \fI.deb\fR archives live in the same
+directory as the \fI.changes\fR file. Note that you probably don't
+want to run this program on a \fI.changes\fR file relating to a
+different architecture after cross-compiling the package!
+.PP
+If a list of packages is given on the command line, then only those
+debs with names in this list of packages will be installed.
+.PP
+Note that unlike \fBcvs-buildpackage\fR, the only way to specify the
+source package name is with the \fB\-P\fR option; you cannot simply
+have it as the last command-line parameter.
+.PP
+Since installing a package requires root privileges, \fBdebi\fR calls
+\fBdebpkg\fR rather than \fBdpkg\fR directly. Thus \fBdebi\fR will
+only be useful if it is either being run as root or \fBdebpkg\fR can
+be run as root. See \fBdebpkg\fR(1) for more details.
+.SH OPTIONS
+All current \fBcvs-buildpackage\fR options are silently accepted;
+however, only the ones listed below have any effect. For more details
+on all of them, see the \fBcvs-buildpackage\fR(1) manpage.
+.TP
+\fB\-a\fIdebian-architecture\fR, \fB\-t\fIGNU-system-type\fR
+See \fBdpkg-architecture\fR(1) for a description of these options.
+They affect the search for the \fI.changes\fR file. They are provided
+to mimic the behaviour of \fBdpkg-buildpackage\fR when determining the
+name of the \fI.changes\fR file.
+.TP
+.BR \-M\fImodule
+The name of the CVS module.
+.TP
+.BR \-P\fIpackage
+The name of the package.
+.TP
+.B \-V\fIversion
+The version number of the package.
+.TP
+.B \-T\fItag
+The CVS tag to use for exporting sources.
+.TP
+.B \-R\fIroot\ directory
+Root of the original sources archive.
+.TP
+.B \-W\fIwork directory
+The full path name for the cvs-buildpackage working directory.
+.TP
+.B \-x\fIprefix
+This option provides the CVS default module prefix.
+.TP
+\fB\-\-help\fR, \fB\-\-version\fR
+Show help message and version information respectively.
+.SH "SEE ALSO"
+.BR cvs-buildpackage (1),
+.BR cvs-debc (1),
+.BR cvs-debuild (1),
+.BR debi (1)
+.SH AUTHOR
+\fBcvs-buildpackage\fR was written by Manoj Srivastava, and the
+current version of \fBdebi\fR was written by Julian Gilbey
+<jdg@debian.org>. They have been combined into this program by
+Julian Gilbey.
--- /dev/null
+#!/bin/bash
+
+# cvs-debi: Install current version of deb package
+# cvs-debc: List contents of current version of deb package
+#
+# Based on debi/debc; see them for copyright information
+# Based on cvs-buildpackage, copyright 1997 Manoj Srivastava
+# (CVS Id: cvs-buildpackage,v 1.58 2003/08/22 17:24:29 srivasta Exp)
+# This code is copyright 2003, Julian Gilbey <jdg@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+set -e
+
+PROGNAME=`basename $0 .sh` # .sh for debugging purposes
+
+usage () {
+ if [ "$PROGNAME" = cvs-debi ]; then usage_i
+ elif [ "$PROGNAME" = cvs-debc ]; then usage_c
+ else echo "Unrecognised invocation name: $PROGNAME" >&2; exit 1
+ fi;
+}
+
+usage_i () {
+ echo \
+"Usage: $PROGNAME [options] [package ...]
+ Install the .deb file(s) just created by cvs-buildpackage or cvs-debuild,
+ as listed in the .changes file generated on that run. If packages are
+ listed, only install those specified binary packages from the .changes file.
+
+ Note that unlike cvs-buildpackage, the only way to specify the
+ source package name is with the -P option; you cannot simply have it
+ as the last parameter.
+
+ Also uses the cvs-buildpackage configuration files to determine the
+ location of the build tree, as described in the manpage.
+
+ Available options:
+ -M<module> CVS module name
+ -P<package> Package name
+ -V<version> Package version
+ -T<tag> CVS tag to use
+ -R<root dir> Root directory
+ -W<work dir> Working directory
+ -x<prefix> CVS default module prefix
+ -a<arch> Search for .changes file made for Debian build <arch>
+ -t<target> Search for .changes file made for GNU <target> arch
+ --help Show this message
+ --version Show version and copyright information
+ Other cvs-buildpackage options will be silently ignored."
+}
+
+usage_c () {
+ echo \
+"Usage: $PROGNAME [options] [package ...]
+ Display the contents of the .deb file(s) just created by
+ cvs-buildpackage or cvs-debuild, as listed in the .changes file generated
+ on that run. If packages are listed, only display those specified binary
+ packages from the .changes file.
+
+ Note that unlike cvs-buildpackage, the only way to specify the
+ source package name is with the -P option; you cannot simply have it
+ as the last parameter.
+
+ Also uses the cvs-buildpackage configuration files to determine the
+ location of the build tree, as described in its manpage.
+
+ Available options:
+ -M<module> CVS module name
+ -P<package> Package name
+ -V<version> Package version
+ -T<tag> CVS tag to use
+ -R<root dir> Root directory
+ -W<work dir> Working directory
+ -x<prefix> CVS default module prefix
+ -a<arch> Search for .changes file made for Debian build <arch>
+ -t<target> Search for .changes file made for GNU <target> arch
+ --help Show this message
+ --version Show version and copyright information
+ Other cvs-buildpackage options will be silently ignored."
+}
+
+version () { echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2003, Julian Gilbey <jdg@debian.org>,
+all rights reserved.
+Based on original code by Christoph Lameter and Manoj Srivastava.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of
+the GNU General Public License, version 2 or later."
+}
+
+setq() {
+ # Variable Value Doc string
+ if [ "x$2" = "x" ]; then
+ echo >&2 "$progname: Unable to determine $3"
+ exit 1;
+ else
+ if [ ! "x$Verbose" = "x" ]; then
+ echo "$progname: $3 is $2";
+ fi
+ eval "$1=\"\$2\"";
+ fi
+}
+
+# Is cvs-buildpackage installed?
+if ! command -v cvs-buildpackage >/dev/null 2>&1; then
+ echo "$PROGNAME: need the cvs-buildpackage package installed to run this" >&2
+ exit 1
+fi
+
+# Long term variables, which may be set in the cvsdeb config file or the
+# environment:
+# rootdir workdir (if all original sources are kept in one dir)
+
+TEMPDIR=$(mktemp -dt cvs-debi.XXXXXXXX) || {
+ echo "$PROGNAME: unable to create temporary directory" >&2
+ echo "Aborting..." >&2
+ exit 1
+}
+TEMPFILE=$TEMPDIR/cl-tmp
+trap "rm -f $TEMPFILE; rmdir $TEMPDIR" 0 1 2 3 7 10 13 15
+
+TAGOPT=
+
+# Command line; will bomb out if unrecognised options
+TEMP=$(getopt -a -s bash \
+ -o hC:EH:G:M:P:R:T:U:V:W:Ff:dcnr:x:Bp:Dk:a:Sv:m:e:i:I:t: \
+ --long help,version,ctp,tC,sgpg,spgp,us,uc,op \
+ --long si,sa,sd,ap,sp,su,sk,sr,sA,sP,sU,sK,sR,ss,sn \
+ -n "$PROGNAME" -- "$@")
+eval set -- $TEMP
+
+while true ; do
+ case "$1" in
+ -h|--help) usage; exit 0 ; shift ;;
+ --version) version; exit 0 ; shift ;;
+ -M) opt_cvsmodule="$2" ; shift 2 ;;
+ -P) opt_package="$2" ; shift 2 ;;
+ -R) opt_rootdir="$2" ; shift 2 ;;
+ -T) opt_tag="$2" ; shift 2 ;;
+ -V) opt_version="$2" ; shift 2 ;;
+ -W) opt_workdir="$2" ; shift 2 ;;
+ -x) opt_prefix="$2" ; shift 2 ;;
+ -a) targetarch="$2" ; shift 2 ;;
+ -t) if [ "$2" != "C" ]; then targetgnusystem="$2"; fi
+ shift 2 ;;
+
+ # everything else is silently ignored
+ -[CHfGUr]) shift 2 ;;
+ -[FnE]) shift ;;
+ --ctp|--op|--tC) shift ;;
+ -[dDBbS]) shift ;;
+ -p) shift 2 ;;
+ --us|--uc|--sgpg|--spgp) shift ;;
+ --s[idapukrAPUKRns]) shift ;;
+ --ap) shift ;;
+ -[kvmeiI]) shift 2 ;;
+
+ --) shift ; break ;;
+ *) echo >&2 "Internal error! ($1)"
+ usage; exit 1 ;;
+ esac
+done
+
+if [ "x$opt_cvsmodule" = "x" -a "x$opt_package" = "x" -a \
+ ! -e 'debian/changelog' ] ; then
+ echo >&2 "$progname should be run in the top working directory of"
+ echo >&2 "a Debian Package, or an explicit package (or CVS module) name"
+ echo >&2 "should be given."
+ exit 1
+fi
+
+if [ "x$opt_tag" != "x" ]; then
+ TAGOPT=-r$opt_tag
+fi
+
+# Command line, env variable, config file, or default
+# This anomalous position is in case we need to check out the changelog
+# below (anomalous since we have not loaded the config file yet)
+if [ ! "x$opt_prefix" = "x" ]; then
+ prefix="$opt_prefix"
+elif [ ! "x$CVSDEB_PREFIX" = "x" ]; then
+ prefix="$CVSDEB_PREFIX"
+elif [ ! "x$conf_prefix" = "x" ]; then
+ prefix="$conf_prefix"
+else
+ prefix=""
+fi
+
+# put a slash at the end of the prefix
+if [ "X$prefix" != "X" ]; then
+ prefix="$prefix/";
+ prefix=`echo $prefix | sed 's://:/:g'`;
+fi
+
+if [ ! -f CVS/Root ]; then
+ if [ "X$CVSROOT" = "X" ]; then
+ echo "no CVS/Root file found, and CVSROOT var is empty" >&2
+ exit 1
+ fi
+else
+ CVSROOT=$(cat CVS/Root)
+ export CVSROOT
+fi
+
+if [ "x$opt_package" = "x" ]; then
+ # Get the official package name and version.
+ if [ -f debian/changelog ]; then
+ # Ok, changelog exists
+ setq "package" \
+ "`dpkg-parsechangelog | sed -n 's/^Source: //p'`" \
+ "source package"
+ setq "version" \
+ "`dpkg-parsechangelog | sed -n 's/^Version: //p'`" \
+ "source version"
+ elif [ "x$opt_cvsmodule" != "x" ]; then
+ # Hmm. Well, see if we can checkout the changelog file
+ rm -f $TEMPFILE
+ cvs -q co -p $TAGOPT $opt_cvsmodule/debian/changelog > $TEMPFILE
+ setq "package" \
+ "`dpkg-parsechangelog -l$TEMPFILE | sed -n 's/^Source: //p'`" \
+ "source package"
+ setq "version" \
+ "`dpkg-parsechangelog -l$TEMPFILE | sed -n 's/^Version: //p'`" \
+ "source version"
+ rm -f "$TEMPFILE"
+ else
+ # Well. We don't know what this package is.
+ echo >&2 " This does not appear be a Debian source tree, since"
+ echo >&2 " theres is no debian/changelog, and there was no"
+ echo >&2 " package name or cvs module given on the comand line"
+ echo >&2 " it is hard to figure out what the package name "
+ echo >&2 " should be. I give up."
+ exit 1
+ fi
+else
+ # The user knows best; package name is provided
+ setq "package" "$opt_package" "source package"
+
+ # Now, the version number
+ if [ "x$opt_version" != "x" ]; then
+ # All hail the user provided value
+ setq "version" "$opt_version" "source package"
+ elif [ -f debian/changelog ]; then
+ # Fine, see what the changelog says
+ setq "version" \
+ "`dpkg-parsechangelog | sed -n 's/^Version: //p'`" \
+ "source version"
+ elif [ "x$opt_cvsmodule" != "x" ]; then
+ # Hmm. The CVS module name is known, so lets us try exporting changelog
+ rm -f $TEMPFILE
+ cvs -q co -p $TAGOPT $opt_cvsmodule/debian/changelog > $TEMPFILE
+ setq "version" \
+ "`dpkg-parsechangelog -l$TEMPFILE | sed -n 's/^Version: //p'`" \
+ "source version"
+ rm -f "$TEMPFILE"
+ else
+ # Ok, try exporting the package name
+ rm -f $TEMPFILE
+ cvsmodule="${prefix}$package"
+ cvs -q co -p $TAGOPT $cvsmodule/debian/changelog > $TEMPFILE
+ setq "version" \
+ "`dpkg-parsechangelog -l$TEMPFILE | sed -n 's/^Version: //p'`" \
+ "source version"
+ rm -f "$TEMPFILE"
+ fi
+fi
+
+rm -f $TEMPFILE
+rmdir $TEMPDIR
+trap "" 0 1 2 3 7 10 13 15
+
+
+non_epoch_version=$(echo -n "$version" | perl -pe 's/^\d+://')
+upstream_version=$(echo -n "$non_epoch_version" | sed -e 's/-[^-]*$//')
+debian_version=$(echo -n $non_epoch_version | perl -nle 'm/-([^-]*)$/ && print $1')
+
+# The default
+if [ "X$opt_rootdir" != "X" ]; then
+ rootdir="$opt_rootdir"
+else
+ rootdir='/usr/local/src/Packages'
+fi
+
+if [ "X$opt_workdir" != "X" ]; then
+ workdir="$opt_workdir"
+else
+ workdir="$rootdir/$package"
+fi
+
+# Load site defaults and over rides.
+if [ -f /etc/cvsdeb.conf ]; then
+ . /etc/cvsdeb.conf
+fi
+
+# Load user defaults and over rides.
+if [ -f ~/.cvsdeb.conf ]; then
+ . ~/.cvsdeb.conf
+fi
+
+# Command line, env variable, config file, or default
+if [ ! "x$opt_rootdir" = "x" ]; then
+ rootdir="$opt_rootdir"
+elif [ ! "x$CVSDEB_ROOTDIR" = "x" ]; then
+ rootdir="$CVSDEB_ROOTDIR"
+elif [ ! "x$conf_rootdir" = "x" ]; then
+ rootdir="$conf_rootdir"
+fi
+
+# Command line, env variable, config file, or default
+if [ ! "x$opt_workdir" = "x" ]; then
+ workdir="$opt_workdir"
+elif [ ! "x$CVSDEB_WORKDIR" = "x" ]; then
+ workdir="$CVSDEB_WORKDIR"
+elif [ ! "x$conf_workdir" = "x" ]; then
+ workdir="$conf_workdir"
+else
+ workdir="$rootdir/$package"
+fi
+
+if [ ! -d "$workdir" ]; then
+ echo >&2 "The working directory, $workdir, does not exist. Aborting."
+ if [ ! -d "$rootdir" ]; then
+ echo >&2 "The root directory, $rootdir, does not exist either."
+ fi
+ exit 1;
+fi
+
+# The next part is based on debi
+
+if [ -n "$targetarch" ] && [ -n "$targetgnusystem" ]; then
+ setq arch "$(dpkg-architecture "-a${targetarch}" "-t${targetgnusystem}" -qDEB_HOST_ARCH)" "build architecture"
+elif [ -n "$targetarch" ]; then
+ setq arch "$(dpkg-architecture "-a${targetarch}" -qDEB_HOST_ARCH)" "build architecture"
+elif [ -n "$targetgnusystem" ]; then
+ setq arch "$(dpkg-architecture "-t${targetgnusystem}" -qDEB_HOST_ARCH)" "build architecture"
+else
+ setq arch "$(dpkg-architecture -qDEB_HOST_ARCH)" "build architecture"
+fi
+
+pva="${package}_${non_epoch_version}_${arch}"
+changes="$pva.changes"
+
+cd $workdir || {
+ echo "Couldn't cd $workdir. Aborting" >&2
+ exit 1
+}
+
+if [ ! -r "$changes" ]; then
+ echo "Can't read $workdir/$changes! Have you built the package yet?" >&2
+ exit 1
+fi
+
+# Just call debc/debi respectively, now that we have a changes file
+
+SUBPROG=${PROGNAME#cvs-}
+
+exec $SUBPROG --check-dirname-level 0 $changes "$@"
--- /dev/null
+.TH CVS-DEBC 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+cvs-debrelease \- upload a cvs-buildpackage/cvs-debuild generated package
+.SH SYNOPSIS
+\fBcvs-debrelease\fP [\fIcvs-debrelease options\fR] [\fB\-\-dopts\fR
+[\fIdupload/dput options\fR]]
+.SH DESCRIPTION
+\fBcvs-debrelease\fR is run from the CVS working directory after
+\fBcvs-buildpackage\fR or \fBcvs-debuild\fR. It uses the
+\fBcvs-buildpackage\fR system to locate the \fI.changes\fR file
+generated in that run. It then uploads the package using
+\fBdebrelease\fR(1), which in turn calls either \fBdupload\fR or
+\fBdput\fR. Note that the \fB\-\-dopts\fR option must be specified to
+distinguish the \fBcvs-debrelease\fR options from the \fBdupload\fR or
+\fBdput\fR options. Also, the \fBdevscripts\fR configuration files
+will be read, as described in the \fBdebrelease\fR(1) manpage.
+.PP
+Note that unlike \fBcvs-buildpackage\fR, the only way to specify the
+source package name is with the \fB\-P\fR option; you cannot simply
+have it as the last command-line parameter.
+.SH OPTIONS
+All current \fBcvs-buildpackage\fR options are silently accepted;
+however, only the ones listed below have any effect. For more details
+on all of them, see the \fBcvs-buildpackage\fR(1) manpage. All
+\fBdebrelease\fR options (as listed below) are also accepted.
+.TP
+\fB\-\-dupload\fR, \fB\-\-dput\fR
+This specifies which uploader program to use; the default is
+\fBdupload\fR.
+.TP
+\fB\-a\fIdebian-architecture\fR, \fB\-t\fIGNU-system-type\fR
+See \fBdpkg-architecture\fR(1) for a description of these options.
+They affect the search for the \fI.changes\fR file. They are provided
+to mimic the behaviour of \fBdpkg-buildpackage\fR when determining the
+name of the \fI.changes\fR file.
+.TP
+.BR \-M\fImodule
+The name of the CVS module.
+.TP
+.BR \-P\fIpackage
+The name of the package.
+.TP
+.B \-V\fIversion
+The version number of the package.
+.TP
+.B \-T\fItag
+The CVS tag to use for exporting sources.
+.TP
+.B \-R\fIroot\ directory
+Root of the original sources archive.
+.TP
+.B \-W\fIwork directory
+The full path name for the cvs-buildpackage working directory.
+.TP
+.B \-x\fIprefix
+This option provides the CVS default module prefix.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+\fB\-\-help\fR, \fB\-\-version\fR
+Show help message and version information respectively.
+.SH "SEE ALSO"
+.BR cvs-buildpackage (1),
+.BR cvs-debuild (1),
+.BR debrelease (1)
+.SH AUTHOR
+\fBcvs-buildpackage\fR was written by Manoj Srivastava, and the
+current version of \fBdebrelease\fR was written by Julian Gilbey
+<jdg@debian.org>. They have been combined into this program by
+Julian Gilbey.
--- /dev/null
+#!/bin/bash
+
+# cvs-debrelease: Call dupload/dput to upload package built with
+# cvs-buildpackage or cvs-debuild
+#
+# Based on debrelease; see it for copyright information
+# Based on cvs-buildpackage, copyright 1997 Manoj Srivastava
+# (CVS Id: cvs-buildpackage,v 1.58 2003/08/22 17:24:29 srivasta Exp)
+# This code is copyright 2003, Julian Gilbey <jdg@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+set -e
+
+PROGNAME=`basename $0 .sh` # .sh for debugging purposes
+
+usage () {
+ echo \
+"Usage: $PROGNAME [cvs-debrelease options] [--dopts [dupload/dput options]]
+ Upload the .changes file(s) just created by cvs-buildpackage or
+ cvs-debuild, as listed in the .changes file generated on that run.
+
+ Note that unlike cvs-buildpackage, the only way to specify the
+ source package name is with the -P option; you cannot simply have it
+ as the last parameter.
+
+ Also uses the cvs-buildpackage configuration files to determine the
+ location of the build tree, as described in its manpage.
+
+ Available cvs-debrelease options:
+ -M<module> CVS module name
+ -P<package> Package name
+ -V<version> Package version
+ -T<tag> CVS tag to use
+ -R<root dir> Root directory
+ -W<work dir> Working directory
+ -x<prefix> CVS default module prefix
+ -a<arch> Search for .changes file made for Debian build <arch>
+ -t<target> Search for .changes file made for GNU <target> arch
+ --dupload Use dupload to upload files (default)
+ --dput Use dput to upload files
+ --no-conf, --noconf
+ Don't read devscripts config files;
+ must be the first option given
+ --dopts The remaining options are for dupload/dput
+ --help Show this message
+ --version Show version and copyright information
+ Other cvs-buildpackage options will be silently ignored.
+
+Default settings modified by devscripts configuration files:
+ (no configuration files are read by $PROGNAME)
+For information on default debrelease settings modified by the
+configuration files, run: debrelease --help"
+}
+
+
+version () { echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2003, Julian Gilbey <jdg@debian.org>,
+all rights reserved.
+Based on original code by Christoph Lameter and Manoj Srivastava.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of
+the GNU General Public License, version 2 or later."
+}
+
+setq() {
+ # Variable Value Doc string
+ if [ "x$2" = "x" ]; then
+ echo >&2 "$progname: Unable to determine $3"
+ exit 1;
+ else
+ if [ ! "x$Verbose" = "x" ]; then
+ echo "$progname: $3 is $2";
+ fi
+ eval "$1=\"\$2\"";
+ fi
+}
+
+# Is cvs-buildpackage installed?
+if ! command -v cvs-buildpackage >/dev/null 2>&1; then
+ echo "$PROGNAME: need the cvs-buildpackage package installed to run this" >&2
+ exit 1
+fi
+
+# Long term variables, which may be set in the cvsdeb config file or the
+# environment:
+# rootdir workdir (if all original sources are kept in one dir)
+
+TEMPDIR=$(mktemp -dt cvs-debrelease.XXXXXXXX) || {
+ echo "$PROGNAME: Unable to create temporary directory" >&2
+ echo "Aborting...." >&2
+ exit 1
+}
+TEMPFILE=$TEMPDIR/cl-tmp
+trap "rm -f $TEMPFILE; rmdir $TEMPDIR" 0 1 2 3 7 10 13 15
+
+TAGOPT=
+
+# Command line
+# Start by pulling off all options up to --dopts
+declare -a cvsopts debreleaseopts
+if [ "$1" = --no-conf -o "$1" = --noconf ]; then
+ debreleaseopts=("$1")
+ shift
+fi
+
+debreleaseopts=("${debreleaseopts[@]}" "--check-dirname-level=0")
+
+while [ $# -gt 0 ]; do
+ if [ "$1" = "--dopts" ]; then
+ shift
+ break
+ fi
+ cvsopts=("${cvsopts[@]}" "$1")
+ shift
+done
+
+# This will bomb out if there is an unrecognised option
+TEMP=$(getopt -a -s bash \
+ -o hC:EH:G:M:P:R:T:U:V:W:Ff:dcnr:x:Bp:Dk:a:Sv:m:e:i:I:t: \
+ --long help,version,ctp,tC,sgpg,spgp,us,uc,op \
+ --long si,sa,sd,ap,sp,su,sk,sr,sA,sP,sU,sK,sR,ss,sn \
+ --long dupload,dput,no-conf,noconf \
+ --long check-dirname-level:,check-dirname-regex: \
+ -n "$PROGNAME" -- "${cvsopts[@]}")
+
+eval set -- $TEMP
+
+while true ; do
+ case "$1" in
+ -h|--help) usage; exit 0 ; shift ;;
+ --version) version; exit 0 ; shift ;;
+ -M) opt_cvsmodule="$2" ; shift 2 ;;
+ -P) opt_package="$2" ; shift 2 ;;
+ -R) opt_rootdir="$2" ; shift 2 ;;
+ -T) opt_tag="$2" ; shift 2 ;;
+ -V) opt_version="$2" ; shift 2 ;;
+ -W) opt_workdir="$2" ; shift 2 ;;
+ -x) opt_prefix="$2" ; shift 2 ;;
+ -a) debreleaseopts=("${debreleaseopts[@]}" "$1" "$2")
+ targetarch="$2" ; shift 2 ;;
+ -t) if [ "$2" != "C" ]; then
+ debreleaseopts=("${debreleaseopts[@]}" "$1" "$2")
+ targetgnusystem="$2"
+ fi
+ shift 2 ;;
+ --dupload|--dput)
+ debreleaseopts=("${debreleaseopts[@]}" "$1"); shift ;;
+ --no-conf|--noconf)
+ echo "$PROGNAME: $1 is only acceptable as the first command-line option!" >&2
+ exit 1 ;;
+ --check-dirname-level|--check-dirname-regex)
+ debreleaseopts=("${debreleaseopts[@]}" "$1" "$2"); shift 2 ;;
+
+ # everything else is silently ignored
+ -[CHfGUr]) shift 2 ;;
+ -[FnE]) shift ;;
+ --ctp|--op|--tC) shift ;;
+ -[dDBbS]) shift ;;
+ -p) shift 2 ;;
+ --us|--uc|--sgpg|--spgp) shift ;;
+ --s[idapukrAPUKRns]) shift ;;
+ --ap) shift ;;
+ -[kvmeiI]) shift 2 ;;
+
+ --) shift ; break ;;
+ *) echo >&2 "Internal error! ($1)"
+ usage; exit 1 ;;
+ esac
+done
+
+if [ "x$opt_cvsmodule" = "x" -a "x$opt_package" = "x" -a \
+ ! -e 'debian/changelog' ] ; then
+ echo >&2 "$progname should be run in the top working directory of"
+ echo >&2 "a Debian Package, or an explicit package (or CVS module) name"
+ echo >&2 "should be given."
+ exit 1
+fi
+
+if [ "x$opt_tag" != "x" ]; then
+ TAGOPT=-r$opt_tag
+fi
+
+# Command line, env variable, config file, or default
+# This anomalous position is in case we need to check out the changelog
+# below (anomalous since we have not loaded the config file yet)
+if [ ! "x$opt_prefix" = "x" ]; then
+ prefix="$opt_prefix"
+elif [ ! "x$CVSDEB_PREFIX" = "x" ]; then
+ prefix="$CVSDEB_PREFIX"
+elif [ ! "x$conf_prefix" = "x" ]; then
+ prefix="$conf_prefix"
+else
+ prefix=""
+fi
+
+# put a slash at the end of the prefix
+if [ "X$prefix" != "X" ]; then
+ prefix="$prefix/";
+ prefix=`echo $prefix | sed 's://:/:g'`;
+fi
+
+if [ ! -f CVS/Root ]; then
+ if [ "X$CVSROOT" = "X" ]; then
+ echo "no CVS/Root file found, and CVSROOT var is empty" >&2
+ exit 1
+ fi
+else
+ CVSROOT=$(cat CVS/Root)
+ export CVSROOT
+fi
+
+if [ "x$opt_package" = "x" ]; then
+ # Get the official package name and version.
+ if [ -f debian/changelog ]; then
+ # Ok, changelog exists
+ setq "package" \
+ "`dpkg-parsechangelog | sed -n 's/^Source: //p'`" \
+ "source package"
+ setq "version" \
+ "`dpkg-parsechangelog | sed -n 's/^Version: //p'`" \
+ "source version"
+ elif [ "x$opt_cvsmodule" != "x" ]; then
+ # Hmm. Well, see if we can checkout the changelog file
+ rm -f $TEMPFILE
+ cvs -q co -p $TAGOPT $opt_cvsmodule/debian/changelog > $TEMPFILE
+ setq "package" \
+ "`dpkg-parsechangelog -l$TEMPFILE | sed -n 's/^Source: //p'`" \
+ "source package"
+ setq "version" \
+ "`dpkg-parsechangelog -l$TEMPFILE | sed -n 's/^Version: //p'`" \
+ "source version"
+ rm -f "$TEMPFILE"
+ else
+ # Well. We don't know what this package is.
+ echo >&2 " This does not appear be a Debian source tree, since"
+ echo >&2 " theres is no debian/changelog, and there was no"
+ echo >&2 " package name or cvs module given on the comand line"
+ echo >&2 " it is hard to figure out what the package name "
+ echo >&2 " should be. I give up."
+ exit 1
+ fi
+else
+ # The user knows best; package name is provided
+ setq "package" "$opt_package" "source package"
+
+ # Now, the version number
+ if [ "x$opt_version" != "x" ]; then
+ # All hail the user provided value
+ setq "version" "$opt_version" "source package"
+ elif [ -f debian/changelog ]; then
+ # Fine, see what the changelog says
+ setq "version" \
+ "`dpkg-parsechangelog | sed -n 's/^Version: //p'`" \
+ "source version"
+ elif [ "x$opt_cvsmodule" != "x" ]; then
+ # Hmm. The CVS module name is known, so lets us try exporting changelog
+ rm -f $TEMPFILE
+ cvs -q co -p $TAGOPT $opt_cvsmodule/debian/changelog > $TEMPFILE
+ setq "version" \
+ "`dpkg-parsechangelog -l$TEMPFILE | sed -n 's/^Version: //p'`" \
+ "source version"
+ rm -f "$TEMPFILE"
+ else
+ # Ok, try exporting the package name
+ rm -f $TEMPFILE
+ cvsmodule="${prefix}$package"
+ cvs -q co -p $TAGOPT $cvsmodule/debian/changelog > $TEMPFILE
+ setq "version" \
+ "`dpkg-parsechangelog -l$TEMPFILE | sed -n 's/^Version: //p'`" \
+ "source version"
+ rm -f "$TEMPFILE"
+ fi
+fi
+
+rm -f $TEMPFILE
+rmdir $TEMPDIR
+trap "" 0 1 2 3 7 10 13 15
+
+
+non_epoch_version=$(echo -n "$version" | perl -pe 's/^\d+://')
+upstream_version=$(echo -n "$non_epoch_version" | sed -e 's/-[^-]*$//')
+debian_version=$(echo -n $non_epoch_version | perl -nle 'm/-([^-]*)$/ && print $1')
+
+# The default
+if [ "X$opt_rootdir" != "X" ]; then
+ rootdir="$opt_rootdir"
+else
+ rootdir='/usr/local/src/Packages'
+fi
+
+if [ "X$opt_workdir" != "X" ]; then
+ workdir="$opt_workdir"
+else
+ workdir="$rootdir/$package"
+fi
+
+# Load site defaults and over rides.
+if [ -f /etc/cvsdeb.conf ]; then
+ . /etc/cvsdeb.conf
+fi
+
+# Load user defaults and over rides.
+if [ -f ~/.cvsdeb.conf ]; then
+ . ~/.cvsdeb.conf
+fi
+
+# Command line, env variable, config file, or default
+if [ ! "x$opt_rootdir" = "x" ]; then
+ rootdir="$opt_rootdir"
+elif [ ! "x$CVSDEB_ROOTDIR" = "x" ]; then
+ rootdir="$CVSDEB_ROOTDIR"
+elif [ ! "x$conf_rootdir" = "x" ]; then
+ rootdir="$conf_rootdir"
+fi
+
+# Command line, env variable, config file, or default
+if [ ! "x$opt_workdir" = "x" ]; then
+ workdir="$opt_workdir"
+elif [ ! "x$CVSDEB_WORKDIR" = "x" ]; then
+ workdir="$CVSDEB_WORKDIR"
+elif [ ! "x$conf_workdir" = "x" ]; then
+ workdir="$conf_workdir"
+else
+ workdir="$rootdir/$package"
+fi
+
+if [ ! -d "$workdir" ]; then
+ echo >&2 "The working directory, $workdir, does not exist. Aborting"
+ if [ ! -d "$rootdir" ]; then
+ echo >&2 "The root directory, $rootdir, does not exist either."
+ fi
+ exit 1;
+fi
+
+pkgdir="$workdir/$package-$upstream_version"
+
+if [ ! -d "$pkgdir" ]; then
+ echo "The build directory $pkgdir does not exist!" >&2
+ echo "Have you built the package yet?" >&2
+ exit 1
+fi
+
+if [ -n "$targetarch" ] && [ -n "$targetgnusystem" ]; then
+ setq arch "$(dpkg-architecture "-a${targetarch}" "-t${targetgnusystem}" -qDEB_HOST_ARCH)" "build architecture"
+elif [ -n "$targetarch" ]; then
+ setq arch "$(dpkg-architecture "-a${targetarch}" -qDEB_HOST_ARCH)" "build architecture"
+elif [ -n "$targetgnusystem" ]; then
+ setq arch "$(dpkg-architecture "-t${targetgnusystem}" -qDEB_HOST_ARCH)" "build architecture"
+else
+ setq arch "$(dpkg-architecture -qDEB_HOST_ARCH)" "build architecture"
+fi
+
+pva="${package}_${non_epoch_version}_${arch}"
+changes="$pva.changes"
+
+if [ ! -f "$workdir/$changes" ]; then
+ echo "Can't find $workdir/$changes!" >&2
+ echo "Have you built the package yet?" >&2
+ exit 1
+fi
+
+
+cd $pkgdir || {
+ echo "Couldn't cd $pkgdir. Aborting" >&2
+ exit 1
+}
+
+# Just call debrelease, now that we are in the correct directory
+
+SUBPROG=${PROGNAME#cvs-}
+
+exec $SUBPROG "${debreleaseopts[@]}" "$@"
--- /dev/null
+.TH CVS-DEBUILD 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+cvs-debuild \- build a Debian package using cvs-buildpackage and debuild
+.SH SYNOPSIS
+\fBcvs-debuild\fR [\fIdebuild options\fR] [\fIcvs-buildpackage options\fR]
+[\fB\-\-lintian-opts\fR \fIlintian options\fR]
+.SH DESCRIPTION
+\fBcvs-debuild\fR is a wrapper around \fBcvs-buildpackage\fR to run it
+with \fBdebuild\fR as the package-building program. (This cannot
+simply be accomplished using the \fB\-C\fR option of
+\fBcvs-buildpackage\fR, as it does not know how to handle all of the
+special \fBdebuild\fR options.)
+.PP
+The program simply stashes the \fBdebuild\fR and \fBlintian\fR
+options, and passes them to \fBdebuild\fR when it is
+called by \fBcvs-buildpackage\fR. All of the standard \fBdebuild\fR
+options may be used (as listed below), but note that the root command
+specified by any \fB\-\-rootcmd\fR or \fB\-r\fR command-line option
+will be passed as an option to \fBcvs-buildpackage\fR. The first
+non-\fBdebuild\fR option detected will signal the start of the
+\fBcvs-buildpackage\fR options.
+.PP
+The selection of the root command is slightly subtle: if there are any
+command-line options, these will be used. If not, then if
+\fBcvs-buildpackage\fR is set up to use a default root command, that
+will be used. Finally, if neither of these are the case, then
+\fBdebuild\fR will use its procedures to determine an appropriate
+command, as described in its documentation.
+.PP
+See the manpages for \fBdebuild\fR(1) and \fBcvs-buildpackage\fR for
+more information about the behaviour of each.
+.SH "OPTIONS"
+The following are the \fBdebuild\fR options recognised by
+\fBcvs-debuild\fR. All \fBcvs-buildpackage\fR and \fBlintian\fR
+options are simply passed to the appropriate program. For
+explanations of the meanings of these variables, see
+\fBdebuild\fR(1).
+.TP
+.B \-\-no\-conf\fR, \fB\-\-noconf
+.TP
+.BI \-\-rootcmd= "gain-root-command\fR, \fP" \-r gain-root-command
+.TP
+.B \-\-preserve\-env
+.TP
+.BI \-\-preserve\-envvar= "var\fR, \fP" \-e var
+.TP
+.BI \-\-set\-envvar= var = "value\fR, \fP" \-e var = value
+.TP
+.B \-\-lintian\fR, \fB\-\-no\-lintian
+.TP
+\fB\-\-ignore-dirname\fR, \fB\-\-check-dirname\fR
+These should not be needed, but it is provided nevertheless.
+.SH "SEE ALSO"
+.BR cvs-buildpackage (1),
+.BR debuild (1),
+.BR dpkg-buildpackage (1),
+.BR lintian (1)
+.SH AUTHOR
+This program was written by Julian Gilbey <jdg@debian.org>.
--- /dev/null
+#!/usr/bin/perl -w
+
+# A wrapper for cvs-buildpackage to use debuild, still giving access
+# to all of debuild's functionality.
+
+# Copyright 2003, Julian Gilbey <jdg@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+
+# We will do simple option processing. The calling syntax of this
+# program is:
+#
+# cvs-debuild [<debuild options>] [<cvs-buildpackage options>]
+# [--lintian-opts <lintian options>]
+#
+# cvs-debuild will run cvs-buildpackage, using debuild as the
+# package-building program, passing the debuild and lintian options to
+# it. For details of these options, and more information on debuild in
+# general, refer to debuild(1).
+
+use 5.006;
+use strict;
+use FileHandle;
+use File::Basename;
+use File::Temp qw/ tempfile /;
+use Fcntl;
+
+my $progname=basename($0);
+
+# Predeclare functions
+sub fatal($);
+
+sub usage
+{
+ print <<"EOF";
+ $progname [<debuild options>] [<cvs-buildpackage options>]
+ [--lintian-opts <lintian options>]
+ to run cvs-buildpackage using debuild as the package building program
+
+ Accepted debuild options, see debuild(1) or debuild --help for more info:
+ --no-conf, --noconf
+ --lintian, --no-lintian
+ --rootcmd=<gain-root-command>, -r<gain-root-command>
+ --preserve-envvar=<envvar>, -e<envvar>
+ --set-envvar=<envvar>=<value>, -e<envvar>=<value>
+ --preserve-env
+ --check-dirname-level=<value>, --check-dirname-regex=<regex>
+ -d, -D
+
+ --help display this message
+ --version show version and copyright information
+ All cvs-buildpackage options are accepted, as are all lintian options.
+
+ Note that any cvs-buildpackage options (command line or configuration file)
+ for setting a root command will override any debuild configuration file
+ options for this.
+
+Default settings modified by devscripts configuration files:
+ (no configuration files are read by $progname)
+For information on default debuild settings modified by the
+configuration files, run: debuild --help
+EOF
+}
+
+sub version
+{
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2003 by Julian Gilbey <jdg\@debian.org>,
+all rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+}
+
+# First check we can execute cvs-buildpackage
+unless (system("command -v cvs-buildpackage >/dev/null 2>&1") == 0) {
+ fatal "can't run cvs-buildpackage; have you installed it?";
+}
+
+# We start by parsing the command line to collect debuild and
+# lintian options. We stash them away in temporary files,
+# which we will pass to debuild.
+
+my (@debuild_opts, @cvs_opts, @lin_opts);
+{
+ no locale;
+ # debuild opts first
+ while (@ARGV) {
+ my $arg=shift;
+ $arg eq '--help' and usage(), exit 0;
+ $arg eq '--version' and version(), exit 0;
+
+ # rootcmd gets passed on to cvs-buildpackage
+ if ($arg eq '-r' or $arg eq '--rootcmd') {
+ push @cvs_opts, '-r' . shift;
+ next;
+ }
+ if ($arg =~ /^(?:-r|--rootcmd=)(.*)$/) {
+ push @cvs_opts, "-r$1";
+ next;
+ }
+
+ # other debuild options are stashed
+ if ($arg =~ /^--(no-?conf|(no-?)?lintian)$/) {
+ push @debuild_opts, $arg;
+ next;
+ }
+ if ($arg =~ /^--preserve-env$/) {
+ push @debuild_opts, $arg;
+ next;
+ }
+ if ($arg =~ /^--check-dirname-(level|regex)$/) {
+ push @debuild_opts, $arg, shift;
+ next;
+ }
+ if ($arg =~ /^--check-dirname-(level|regex)=/) {
+ push @debuild_opts, $arg;
+ next;
+ }
+ if ($arg =~ /^--(preserve|set)-envvar$/) {
+ push @debuild_opts, $arg, shift;
+ next;
+ }
+ if ($arg =~ /^--(preserve|set)-envvar=/) {
+ push @debuild_opts, $arg;
+ next;
+ }
+ # dpkg-buildpackage now has a -e option, so we have to be
+ # careful not to confuse the two; their option will always have
+ # the form -e<maintainer email> or similar
+ if ($arg eq '-e') {
+ push @debuild_opts, $arg, shift;
+ next;
+ }
+ if ($arg =~ /^-e(\w+(=.*)?)$/) {
+ push @debuild_opts, $arg;
+ next;
+ }
+ if ($arg eq '-d' or $arg eq '-D') {
+ push @debuild_opts, $arg;
+ next;
+ }
+ # Anything else matching /^-e/ is a dpkg-buildpackage option,
+ # and we've also now considered all debuild options.
+ # So now handle cvs-buildpackage options
+ unshift @ARGV, $arg;
+ last;
+ }
+
+ while (@ARGV) {
+ my $arg=shift;
+ if ($arg eq '-L' or $arg eq '--lintian') {
+ fatal "$arg argument not recognised; use --lintian-opts instead";
+ }
+ if ($arg =~ /^--lin(tian|da)-opts$/) {
+ push @lin_opts, $arg;
+ last;
+ }
+ push @cvs_opts, $arg;
+ }
+
+ if (@ARGV) {
+ push @lin_opts, @ARGV;
+ }
+}
+
+# So we've now got three arrays, and we'll have to store the debuild
+# options in temporary files
+my $debuild_cmd='debuild --cvs-debuild';
+my ($fhdeb, $fhlin);
+if (@debuild_opts) {
+ $fhdeb = tempfile("cvspreXXXXXX", UNLINK => 1)
+ or fatal "cannot create temporary file: $!";
+ fcntl $fhdeb, Fcntl::F_SETFD(), 0
+ or fatal "disabling close-on-exec for temporary file: $!";
+ print $fhdeb join("\0", @debuild_opts);
+ $debuild_cmd .= ' --cvs-debuild-deb /dev/fd/' . fileno($fhdeb);
+}
+if (@lin_opts) {
+ $fhlin = tempfile("cvspreXXXXXX", UNLINK => 1)
+ or fatal "cannot create temporary file: $!";
+ fcntl $fhlin, Fcntl::F_SETFD(), 0
+ or fatal "disabling close-on-exec for temporary file: $!";
+ print $fhlin join("\0", @lin_opts);
+ $debuild_cmd .= ' --cvs-debuild-lin /dev/fd/' . fileno($fhlin);
+}
+
+# Now we can run cvs-buildpackage
+my $status = system('cvs-buildpackage', '-C'.$debuild_cmd, @cvs_opts);
+
+if ($status & 255) {
+ die "cvs-debuild: cvs-buildpackage terminated abnormally: " .
+ sprintf("%#x",$status) . "\n";
+} else {
+ exit ($status >> 8);
+}
+
+
+sub fatal($) {
+ my ($pack,$file,$line);
+ ($pack,$file,$line) = caller();
+ (my $msg = "$progname: fatal error at line $line:\n@_\n") =~ tr/\0//d;
+ $msg =~ s/\n\n$/\n/;
+ die $msg;
+}
--- /dev/null
+.TH DCMD 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+dcmd \- expand file lists of .dsc/.changes files in the command line
+.SH SYNOPSIS
+\fBdcmd\fR [\fIoptions\fR] [\fIcommand\fR] [\fIchanges-file\fR|\fIdsc-file\fR] ...
+.SH DESCRIPTION
+\fBdcmd\fR replaces any reference to a \fI.dsc\fR or \fI.changes\fR file in the
+command line with the list of files in its 'Files' section, plus the
+file itself. It allows easy manipulation of all the files involved in
+an upload (for \fI.changes\fR files) or a source package (for \fI.dsc\fR files).
+
+If \fIcommand\fR is omitted (that is the first argument is an existing \fI.dsc\fR
+or \fI.changes\fR file), the expanded list of files is printed to stdout, one file
+by line. Useful for usage in backticks.
+.SH OPTIONS
+There are a number of options which may be used in order to select only a
+subset of the files listed in the \fI.dsc\fR or \fI.changes\fR file. If a requested file
+is not found, an error message will be printed.
+.TP 14
+.B \-\-dsc
+Select the \fI.dsc\fR file.
+.TP
+.B \-\-schanges
+Select \fI.changes\fR files for the 'source' architecture.
+.TP
+.B \-\-bchanges
+Select \fI.changes\fR files for binary architectures.
+.TP
+.B \-\-changes
+Select \fI.changes\fR files. Implies \fB\-\-schanges\fR and \fB\-\-bchanges\fR.
+.TP
+.B \-\-archdeb
+Select architecture-dependent binary packages (\fI.deb\fR files).
+.TP
+.B \-\-indepdeb
+Select architecture-independent binary packages (\fI.deb\fR files).
+.TP
+.B \-\-deb
+Select binary packages (\fI.deb\fR files). Implies \fB\-\-archdeb\fR and \fB\-\-indepdeb\fR.
+.TP
+.B \-\-archudeb
+Select architecture-dependent \fI.udeb\fR binary packages.
+.TP
+.B \-\-indepudeb
+Select architecture-independent \fI.udeb\fR binary packages.
+.TP
+.B \-\-udeb
+Select \fI.udeb\fR binary packages. Implies \fB\-\-archudeb\fR and \fB\-\-indepudeb\fR.
+.TP
+.BR \-\-tar ,\ \-\-orig
+Select the upstream \fI.tar\fR file.
+.TP
+.BR \-\-diff ,\ \-\-debtar
+Select the Debian \fI.debian.tar\fR or \fI.diff\fR file.
+.PP
+Each option may be prefixed by \fB\-\-no\fR to indicate that all files
+\fInot\fR matching the specification should be selected.
+.PP
+It is not possible to combine positive filtering options (e.g. \fB\-\-dsc\fR)
+and negative filtering options (e.g. \fB\-\-no\-changes\fR) in the same
+\fBdcmd\fR invocation.
+.TP
+.B \-\-no\-fail\-on\-missing\fR, \fB\-r
+If any of the requested files were not found, do not output an error.
+.TP
+.B \-\-package\fR, \fB\-p
+Output package name part only.
+.TP
+.B \-\-sort\fR, \fB\-s
+Sort output alphabetically.
+.TP
+.B \-\-tac\fR, \fB\-t
+Reverse output order.
+
+.SH "EXAMPLES"
+Copy the result of a build to another machine:
+
+.nf
+$ dcmd scp rcs_5.7-23_amd64.changes elegiac:/tmp
+rcs_5.7-23.dsc 100% 490 0.5KB/s 00:00
+rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00
+rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00
+rcs_5.7-23_amd64.changes 100% 1095 1.1KB/s 00:00
+$
+
+$ dcmd \-\-diff \-\-deb scp rcs_5.7-23_amd64.changes elegiac:/tmp
+rcs_5.7-23.diff.gz 100% 12KB 11.7KB/s 00:00
+rcs_5.7-23_amd64.deb 100% 363KB 362.7KB/s 00:00
+$
+.fi
+
+Check the contents of a source package:
+
+.nf
+$ dcmd md5sum rcs_5.7-23.dsc
+8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz
+f0ceeae96603e823eacba6721a30b5c7 rcs_5.7-23.diff.gz
+5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc
+$
+
+$ dcmd \-\-no\-diff md5sum rcs_5.7-23.dsc
+8fd09ea9654cda128f8d5c337d3b8de7 rcs_5.7.orig.tar.gz
+5241db1e231b1f43ae5514b63d2523f8 rcs_5.7-23.dsc
+$
+.fi
+
+.SH "SEE ALSO"
+.BR dpkg-genchanges (1),
+.BR dpkg-source (1)
+.SH AUTHOR
+This program was written by Romain Francoise <rfrancoise@debian.org> and
+is released under the GPL, version 2 or later.
--- /dev/null
+#!/bin/sh
+#
+# dcmd: expand file lists of .dsc/.changes files in the command line
+#
+# Copyright (C) 2008 Romain Francoise <rfrancoise@debian.org>
+# Copyright (C) 2008 Christoph Berg <myon@debian.org>
+# Copyright (C) 2008 Adam D. Barratt <adsb@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+# Usage:
+#
+# dcmd replaces any reference to a .dsc or .changes file in the command
+# line with the list of files in its 'Files' section, plus the
+# .dsc/.changes file itself.
+#
+# $ dcmd sha1sum rcs_5.7-23_amd64.changes
+# f61254e2b61e483c0de2fc163321399bbbeb43f1 rcs_5.7-23.dsc
+# 7a2b283b4c505d8272a756b230486a9232376771 rcs_5.7-23.diff.gz
+# e3bac970a57a6b0b41c28c615f2919c931a6cb68 rcs_5.7-23_amd64.deb
+# c531310b18773d943249cfaa8b539a9b6e14b8f4 rcs_5.7-23_amd64.changes
+# $
+
+PROGNAME=`basename $0`
+
+version () {
+ echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2008 by Romain Francoise, all rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later."
+}
+
+usage()
+{
+ printf "Usage: %s [options] [command] [dsc or changes file] [...]\n" $PROGNAME
+}
+
+endswith()
+{
+ case $1 in
+ *$2) return 0 ;;
+ *) return 1;;
+ esac
+}
+
+# Instead of parsing the file completely as the previous Python
+# implementation did (using python-debian), let's just select lines
+# that look like they might be part of the file list.
+RE="^ [0-9a-f]{32} [0-9]+ ((([a-zA-Z0-9_.-]+/)?[a-zA-Z0-9_.-]+|-) ([a-zA-Z]+|-) )?(.*)$"
+
+maybe_expand()
+{
+ local dir
+ local sedre
+ if [ -e "$1" ] && (endswith "$1" .changes || endswith "$1" .dsc); then
+ # Need to escape whatever separator is being used in sed expression so
+ # it doesn't prematurely end the s command
+ dir=$(dirname "$1" | sed 's/,/\\,/g')
+ if [ "$(echo "$1" | cut -b1-2)" != "./" ]; then
+ sedre="\."
+ fi
+ sed --regexp-extended -n "s,$RE,$dir/\5,p" <"$1" | sed "s,^$sedre/,,"
+ fi
+}
+
+DSC=1; BCHANGES=1; SCHANGES=1; ARCHDEB=1; INDEPDEB=1; TARBALL=1; DIFF=1
+CHANGES=1; DEB=1; ARCHUDEB=1; INDEPUDEB=1; UDEB=1;
+FILTERED=0; FAIL_MISSING=1
+EXTRACT_PACKAGE_NAME=0
+SORT=0
+TAC=0
+
+while [ $# -gt 0 ]; do
+ TYPE=""
+ case "$1" in
+ --version|-v) version; exit 0;;
+ --help|-h) usage; exit 0;;
+ --no-fail-on-missing|-r) FAIL_MISSING=0;;
+ --fail-on-missing) FAIL_MISSING=1;;
+ --package|-p) EXTRACT_PACKAGE_NAME=1;;
+ --sort|-s) SORT=1;;
+ --tac|-t) TAC=1;;
+ --) shift; break;;
+ --no-*)
+ TYPE=${1#--no-}
+ case "$FILTERED" in
+ 1) echo "$PROGNAME: Can't combine --foo and --no-foo options" >&2;
+ exit 1;;
+ 0) FILTERED=-1;;
+ esac;;
+ --**)
+ TYPE=${1#--}
+ case "$FILTERED" in
+ -1) echo "$PROGNAME: Can't combine --foo and --no-foo options" >&2;
+ exit 1;;
+ 0) FILTERED=1; DSC=0; BCHANGES=0; SCHANGES=0; CHANGES=0
+ ARCHDEB=0; INDEPDEB=0; DEB=0; ARCHUDEB=0; INDEPUDEB=0
+ UDEB=0; TARBALL=0; DIFF=0;;
+ esac;;
+ *) break;;
+ esac
+
+ case "$TYPE" in
+ "") ;;
+ dsc) [ "$FILTERED" = "1" ] && DSC=1 || DSC=0;;
+ changes) [ "$FILTERED" = "1" ] &&
+ { BCHANGES=1; SCHANGES=1; CHANGES=1; } ||
+ { BCHANGES=0; SCHANGES=0; CHANGES=0; } ;;
+ bchanges) [ "$FILTERED" = "1" ] && BCHANGES=1 || BCHANGES=0;;
+ schanges) [ "$FILTERED" = "1" ] && SCHANGES=1 || SCHANGES=1;;
+ deb) [ "$FILTERED" = "1" ] &&
+ { ARCHDEB=1; INDEPDEB=1; DEB=1; } ||
+ { ARCHDEB=0; INDEPDEB=0; DEB=0; };;
+ archdeb) [ "$FILTERED" = "1" ] && ARCHDEB=1 || ARCHDEB=0;;
+ indepdeb) [ "$FILTERED" = "1" ] && INDEPDEB=1 || INDEPDEB=0;;
+ udeb) [ "$FILTERED" = "1" ] &&
+ { ARCHUDEB=1; INDEPUDEB=1; UDEB=1; } ||
+ { ARCHUDEB=0; INDEPUDEB=0; UDEB=0; };;
+ archudeb) [ "$FILTERED" = "1" ] && ARCHUDEB=1 || ARCHUDEB=0;;
+ indepudeb) [ "$FILTERED" = "1" ] && INDEPUDEB=1 || INDEPUDEB=0;;
+ tar|orig) [ "$FILTERED" = "1" ] && TARBALL=1 || TARBALL=0;;
+ diff|debtar) [ "$FILTERED" = "1" ] && DIFF=1 || DIFF=0;;
+ *) echo "$PROGNAME: Unknown option '$1'" >&2; exit 1;;
+ esac
+ shift
+done
+
+cmd=
+args=""
+while [ $# -gt 0 ]; do
+ arg="$1"
+ shift
+ temparg="$(maybe_expand "$arg")"
+ if [ -z "$temparg" ]; then
+ if [ -z "$cmd" ]; then
+ cmd="$arg"
+ continue
+ fi
+ # Not expanded, so simply add to argument list
+ args="$args
+$arg"
+ else
+ SEEN_INDEPDEB=0; SEEN_ARCHDEB=0; SEEN_SCHANGES=0; SEEN_BCHANGES=0
+ SEEN_INDEPUDEB=0; SEEN_ARCHUDEB=0; SEEN_UDEB=0;
+ SEEN_TARBALL=0; SEEN_DIFF=0; SEEN_DSC=0
+ MISSING=0
+ newarg=""
+ # Output those items from the expanded list which were
+ # requested, and record which files are contained in the list
+ eval "$(echo "$temparg" | while read THISARG; do
+ if [ -z "$THISARG" ]; then
+ # Skip
+ :
+ elif endswith "$THISARG" _all.deb; then
+ [ "$INDEPDEB" = "0" ] || echo "newarg=\"\$newarg
+$THISARG\";"
+ echo "SEEN_INDEPDEB=1;"
+ elif endswith "$THISARG" .deb; then
+ [ "$ARCHDEB" = "0" ] || echo "newarg=\"\$newarg
+$THISARG\";"
+ echo "SEEN_ARCHDEB=1;"
+ elif endswith "$THISARG" _all.udeb; then
+ [ "$INDEPUDEB" = "0" ] || echo "newarg=\"\$newarg
+$THISARG\";"
+ echo "SEEN_INDEPUDEB=1;"
+ elif endswith "$THISARG" .udeb; then
+ [ "$ARCHUDEB" = "0" ] || echo "newarg=\"\$newarg
+$THISARG\";"
+ echo "SEEN_ARCHUDEB=1;"
+ elif endswith "$THISARG" .debian.tar.gz || \
+ endswith "$THISARG" .debian.tar.xz || \
+ endswith "$THISARG" .debian.tar.bz2; then
+ [ "$DIFF" = "0" ] || echo "newarg=\"\$newarg
+$THISARG\";"
+ echo "SEEN_DIFF=1;"
+ elif endswith "$THISARG" .tar.gz || \
+ endswith "$THISARG" .tar.xz || \
+ endswith "$THISARG" .tar.lzma || \
+ endswith "$THISARG" .tar.bz2; then
+ [ "$TARBALL" = "0" ] || echo "newarg=\"\$newarg
+$THISARG\";"
+ echo "SEEN_TARBALL=1;"
+ elif endswith "$THISARG" _source.changes; then
+ [ "$SCHANGES" = "0" ] || echo "newarg=\"\$newarg
+$THISARG\";"
+ echo "SEEN_SCHANGES=1;"
+ elif endswith "$THISARG" .changes; then
+ [ "$BCHANGES" = "0" ] || echo "newarg\"\$newarg
+$THISARG\";"
+ echo "SEEN_BCHANGES=1;"
+ elif endswith "$THISARG" .dsc; then
+ [ "$DSC" = "0" ] || echo "newarg=\"\$newarg
+$THISARG\";"
+ echo "SEEN_DSC=1;"
+ elif endswith "$THISARG" .diff.gz; then
+ [ "$DIFF" = "0" ] || echo "newarg=\"\$newarg
+$THISARG\";"
+ echo "SEEN_DIFF=1;"
+ elif [ "$FILTERED" != "1" ]; then
+ # What is it? Output anyway
+ echo "newarg=\"\$newarg
+$THISARG\";"
+ fi
+ done)"
+
+ INCLUDEARG=1
+ if endswith "$arg" _source.changes; then
+ [ "$SCHANGES" = "1" ] || INCLUDEARG=0
+ SEEN_SCHANGES=1
+ elif endswith "$arg" .changes; then
+ [ "$BCHANGES" = "1" ] || INCLUDEARG=0
+ SEEN_BCHANGES=1
+ elif endswith "$arg" .dsc; then
+ [ "$DSC" = "1" ] || INCLUDEARG=0
+ SEEN_DSC=1
+ fi
+
+ if [ "$FAIL_MISSING" = "1" ] && [ "$FILTERED" = "1" ]; then
+ if [ "$CHANGES" = "1" ]; then
+ if [ "$SEEN_SCHANGES" = "0" ] && [ "$SEEN_BCHANGES" = "0" ]; then
+ MISSING=1; echo "$arg: .changes fiie not found" >&2
+ fi
+ else
+ if [ "$SCHANGES" = "1" ] && [ "$SEEN_SCHANGES" = "0" ]; then
+ MISSING=1; echo "$arg: source .changes file not found" >&2
+ fi
+ if [ "$BCHANGES" = "1" ] && [ "$SEEN_BCHANGES" = "0" ]; then
+ MISSING=1; echo "$arg: binary .changes file not found" >&2
+ fi
+ fi
+
+ if [ "$DEB" = "1" ]; then
+ if [ "$SEEN_INDEPDEB" = "0" ] && [ "$SEEN_ARCHDEB" = "0" ]; then
+ MISSING=1; echo "$arg: binary packages not found" >&2
+ fi
+ else
+ if [ "$INDEPDEB" = "1" ] && [ "$SEEN_INDEPDEB" = "0" ]; then
+ MISSING=1; echo "$arg: arch-indep packages not found" >&2
+ fi
+ if [ "$ARCHDEB" = "1" ] && [ "$SEEN_ARCHDEB" = "0" ]; then
+ MISSING=1; echo "$arg: arch-dep packages not found" >&2
+ fi
+ fi
+
+ if [ "$UDEB" = "1" ]; then
+ if [ "$SEEN_INDEPUDEB" = "0" ] && [ "$SEEN_ARCHUDEB" = "0" ]; then
+ MISSING=1; echo "$arg: udeb packages not found" >&2
+ fi
+ else
+ if [ "$INDEPUDEB" = "1" ] && [ "$SEEN_INDEPUDEB" = "0" ]; then
+ MISSING=1; echo "$arg: arch-indep udeb packages not found" >&2
+ fi
+ if [ "$ARCHUDEB" = "1" ] && [ "$SEEN_ARCHUDEB" = "0" ]; then
+ MISSING=1; echo "$arg: arch-dep udeb packages not found" >&2
+ fi
+
+ fi
+
+ if [ "$DSC" = "1" ] && [ "$SEEN_DSC" = "0" ]; then
+ MISSING=1; echo "$arg: .dsc file not found" >&2
+ fi
+ if [ "$TARBALL" = "1" ] && [ "$SEEN_TARBALL" = "0" ]; then
+ MISSING=1; echo "$arg: upstream tar not found" >&2
+ fi
+ if [ "$DIFF" = "1" ] && [ "$SEEN_DIFF" = "0" ]; then
+ MISSING=1; echo "$arg: Debian debian.tar/diff not found" >&2
+ fi
+
+ [ "$MISSING" = "0" ] || exit 1
+ fi
+
+ args="$args
+$newarg"
+ [ "$INCLUDEARG" = "0" ] || args="$args
+$arg"
+ fi
+done
+
+IFS='
+'
+if [ "$EXTRACT_PACKAGE_NAME" = "1" ]; then
+ packages=""
+ for arg in $args; do
+ packages="$packages
+$(echo "$arg" |sed s/_.*//)"
+ done
+ args="$packages"
+fi
+if [ "$SORT" = "1" ]; then
+ args="$(echo "$args"| sort -)"
+fi
+if [ "$TAC" = "1" ]; then
+ args="$(echo "$args"| tac -)"
+fi
+if [ -z "$cmd" ]; then
+ for arg in $args; do
+ echo $arg
+ done
+ exit 0
+fi
+
+exec $cmd $args
--- /dev/null
+#!/usr/bin/perl -w
+# vim:sw=4:sta:
+
+# dcontrol - Query Debian control files across releases and architectures
+# Copyright (C) 2009 Christoph Berg <myon@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+use strict;
+use File::Basename;
+use Getopt::Long qw(:config gnu_getopt);
+
+BEGIN {
+ # Load the URI::Escape and LWP::UserAgent modules safely
+ my $progname = basename($0,'.pl');
+ eval { require URI::Escape; };
+ if ($@) {
+ if ($@ =~ /^Can\'t locate URI\/Escape\.pm/) {
+ die "$progname: you must have the liburi-perl package installed\nto use this script\n";
+ }
+ die "$progname: problem loading the URI::Escape module:\n $@\nHave you installed the liburi-perl package?\n";
+ }
+ import URI::Escape;
+
+ eval { require LWP::UserAgent; };
+ if ($@) {
+ my $progname = basename $0;
+ if ($@ =~ /^Can\'t locate LWP/) {
+ die "$progname: you must have the libwww-perl package installed\nto use this script\n";
+ }
+ die "$progname: problem loading the LWP::UserAgent module:\n $@\nHave you installed the libwww-perl package?\n";
+ }
+ import LWP::UserAgent;
+}
+
+# global variables
+
+my $progname = basename($0,'.pl'); # the '.pl' is for when we're debugging
+my $modified_conf_msg;
+my $dcontrol_url;
+my $opt;
+
+my $ua = LWP::UserAgent->new(agent => "$progname ###VERSION###");
+
+# functions
+
+sub usage {
+ print <<"EOT";
+Usage: $progname [-sd] package[modifiers] [...]
+
+Query package and source control files for all Debian distributions.
+
+Options:
+ -s --show-suite Add headers for distribution the control file is from
+ -d --debug Print URL queried
+
+Modifiers:
+ =version Exact version match
+ \@architecture Query this architecture
+ /[archive:][suite][/component]
+ Restrict to archive (debian, debian-backports,
+ debian-security, debian-volatile), suite (always
+ codenames, with the exception of experimental), and/or
+ component (main, updates/main, ...). Use // if the suite
+ name contains slashes.
+
+By default, all versions, suites, and architectures are queried.
+Use \@source for source packages. \@binary returns no source packages.
+Refer to $dcontrol_url for currently supported values.
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOT
+}
+
+sub version {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2009 by Christoph Berg <myon\@debian.org>.
+All rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+}
+
+sub apt_get {
+ my ($arg) = @_;
+ unless ($arg =~ /^([\w.+-]+)/) {
+ die "$arg does not start with a valid package name\n";
+ }
+ my $url = "$dcontrol_url?package=" . uri_escape($1);
+ if ($arg =~ /=([\w~:.+-]+)/) {
+ $url .= "&version=" . uri_escape($1);
+ }
+ if ($arg =~ /@([\w.-]+)/) {
+ $url .= "&architecture=$1";
+ }
+ if ($arg =~ m!/([\w-]*):([\w/-]*)//([\w/-]*)!) {
+ $url .= "&archive=$1&suite=$2&component=$3";
+ } elsif ($arg =~ m!/([\w/-]*)//([\w/-]*)!) {
+ $url .= "&suite=$1&component=$2";
+ } elsif ($arg =~ m!/([\w-]*):([\w-]*)/([\w/-]*)!) {
+ $url .= "&archive=$1&suite=$2&component=$3";
+ } elsif ($arg =~ m!/([\w-]*):([\w-]*)!) {
+ $url .= "&archive=$1&suite=$2";
+ } elsif ($arg =~ m!/([\w-]*)/([\w/-]*)!) {
+ $url .= "&suite=$1&component=$2";
+ } elsif ($arg =~ m!/([\w\/-]+)!) {
+ $url .= "&suite=$1";
+ }
+ if ($opt->{'show-suite'}) {
+ $url .= "&annotate=yes";
+ }
+ print "$url\n" if $opt->{debug};
+ my $response = $ua->get ($url);
+ if ($response->is_success) {
+ print $response->content . "\n";
+ } else {
+ die $response->status_line;
+ }
+}
+
+# main program
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'DCONTROL_URL' => 'https://qa.debian.org/cgi-bin/dcontrol',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= "$var='$config_vars{$var}';\n";
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $dcontrol_url = $config_vars{'DCONTROL_URL'};
+}
+
+# handle options
+GetOptions(
+ "d|debug" => \$opt->{'debug'},
+ "s|show-suite" => \$opt->{'show-suite'},
+ "h|help" => \$opt->{'help'},
+ "V|version" => \$opt->{'version'},
+)
+ or die "$progname: unrecognised option. Run $progname --help for more details.\n";
+
+if ($opt->{'help'}) { usage(); exit 0; }
+if ($opt->{'version'}) { version(); exit 0; }
+if ($opt->{'no-conf'}) {
+ die "$progname: --no-conf is only acceptable as the first command-line option!\n";
+}
+
+if (! @ARGV) {
+ usage();
+ exit 1;
+}
+
+# handle arguments
+while (my $arg = shift @ARGV) {
+ apt_get ($arg);
+}
+
+=head1 NAME
+
+dcontrol -- Query package and source control files for all Debian distributions
+
+=head1 SYNOPSIS
+
+=over
+
+=item B<dcontrol> [I<options>] I<package>[I<modifiers>] ...
+
+=back
+
+=head1 DESCRIPTION
+
+B<dcontrol> queries a remote database of Debian binary and source package
+control files. It can be thought of as an B<apt-cache> webservice that also
+operates for distributions and architectures different from the local machine.
+
+=head1 MODIFIERS
+
+Like B<apt-cache>, packages can be suffixed by modifiers:
+
+=over 4
+
+=item B<=>I<version>
+
+Exact version match
+
+=item B<@>I<architecture>
+
+Query this only architecture. Use B<@source> for source packages,
+B<@binary> excludes source packages.
+
+=item B</>[I<archive>B<:>][I<suite>][B</>I<component>]
+
+Restrict to I<archive> (debian, debian-backports, debian-security,
+debian-volatile), I<suite> (always codenames, with the exception of
+experimental), and/or I<component> (main, updates/main, ...). Use two slashes
+(B<//>) to separate suite and component if the suite name contains slashes.
+(Component can be left empty.)
+
+=back
+
+By default, all versions, suites, and architectures are queried. Refer to
+B<https://qa.debian.org/cgi-bin/dcontrol> for currently supported values.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-s>, B<--show-suites>
+
+Add headers showing which distribution the control file is from.
+
+=item B<-d>, B<--debug>
+
+Print URL queried.
+
+=item B<-h>, B<--help>
+
+Show a help message.
+
+=item B<-V>, B<--version>
+
+Show version information.
+
+=back
+
+=head1 CONFIGURATION VARIABLES
+
+The two configuration files F</etc/devscripts.conf> and
+F<~/.devscripts> are sourced by a shell in that order to set
+configuration variables. Command line options can be used to override
+configuration file settings. Environment variable settings are
+ignored for this purpose. The currently recognised variable is:
+
+=over 4
+
+=item DCONTROL_URL
+
+URL to query. Default is B<https://qa.debian.org/cgi-bin/dcontrol>.
+
+=back
+
+=head1 AUTHOR
+
+This program is Copyright (C) 2009 by Christoph Berg <myon@debian.org>.
+
+This program is licensed under the terms of the GPL, either version 2
+of the License, or (at your option) any later version.
+
+=head1 SEE ALSO
+
+B<apt-cache>(1)
--- /dev/null
+.\" Copyright 2005 Lars Wirzenius
+.\"
+.\" This program is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation; either version 2 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program. If not, see <https://www.gnu.org/licenses/>.
+.\"
+.TH DD\-LIST 1 2011-10-27 "Debian"
+.\" --------------------------------------------------------------------
+.SH NAME
+dd\-list \- nicely list .deb packages and their maintainers
+.\" --------------------------------------------------------------------
+.SH SYNOPSIS
+.BR dd\-list " [" \-hiusV "] [" \-\-help "] [" \-\-stdin "]"
+.BR "" "[" "\-\-sources \fISources_file" "]
+.BR "" "[" \-\-dctrl "] [" \-\-version "] [" \-\-uploaders "] [" \fIpackage " ...]"
+.\" --------------------------------------------------------------------
+.SH DESCRIPTION
+.B dd\-list
+produces nicely formatted lists of Debian (.deb) packages and their
+maintainers.
+.PP
+Input is a list of source or binary package names on the command line
+(or the standard input if
+.B \-\-stdin
+is given).
+Output is a list of the following format, where package names are source
+packages by default:
+.PP
+.nf
+.RS
+J. Random Developer <jrandom@debian.org>
+.RS
+j-random-package
+j-random-other
+.RE
+.PP
+Diana Hacker <diana@example.org>
+.RS
+fun-package
+more-fun-package
+.RE
+.RE
+.fi
+.PP
+This is useful when you want, for example, to produce a list of packages
+that need to attention from their maintainers, e.g., to be rebuilt when
+a library version transition happens.
+.\" --------------------------------------------------------------------
+.SH OPTIONS
+.TP
+.BR \-h ", " \-\-help
+Print brief help message.
+.TP
+.BR \-i ", " \-\-stdin
+Read package names from the standard input, instead of taking them
+from the command line. Package names are whitespace delimited.
+.TP
+.BR \-d ", " \-\-dctrl
+Read package list from standard input in the format of a Debian
+package control file. This includes the status file, or output of
+apt-cache. This is the fastest way to use dd-list, as it uses the
+maintainer information from the input instead of looking up the maintainer
+of each listed package.
+.IP
+If no \fISource:\fP line is given, the \fIPackage:\fP name is used for
+output, which might be a binary package name.
+.TP
+\fB\-s\fR, \fB\-\-sources\fR \fISources_file\fR
+Read package information from the specified \fISources_file\fRs. This can be
+given multiple times.
+.IP
+If no \fISources_file\fRs are specified, any files matching
+\fI/var/lib/apt/lists/*_source_Sources\fR will be used.
+.TP
+.BR \-u ", " \-\-uploaders
+Also list developers who are named as uploaders of packages, not only
+the maintainers; this is the default behaviour, use \-\-nouploaders to
+prevent it. Uploaders are indicated with "(U)" appended to the package name.
+.TP
+.BR \-nou ", " \-\-nouploaders
+Only list package Maintainers, do not list Uploaders.
+.TP
+.BR \-b ", " \-\-print\-binary
+Use binary package names in the output instead of source package names
+(has no effect with \fB--dctrl\fP if the \fIPackage:\fP line contains
+source package names).
+.TP
+.BR \-V ", " \-\-version
+Print the version.
+.\" --------------------------------------------------------------------
+.SH AUTHOR
+Lars Wirzenius <liw@iki.fi>
+.P
+Joey Hess <joeyh@debian.org>
--- /dev/null
+#!/usr/bin/perl -w
+#
+# dd-list: Generate a list of maintainers of packages.
+#
+# Written by Joey Hess <joeyh@debian.org>
+# Modifications by James McCoy <jamessan@debian.org>
+# Based on a python implementation by Lars Wirzenius.
+# Copyright 2005 Lars Wirzenius, Joey Hess
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use strict;
+use FileHandle;
+use Getopt::Long qw(:config gnu_getopt);
+
+my $version='###VERSION###';
+
+sub sort_developers {
+ return map { $_->[0] }
+ sort { $a->[1] cmp $b->[1] }
+ map { [$_, uc] } @_;
+}
+
+sub help {
+ print <<"EOF"
+Usage: dd-list [options] [package ...]
+
+ -h, --help
+ Print this help text.
+
+ -i, --stdin
+ Read package names from the standard input.
+
+ -d, --dctrl
+ Read package list in Debian control data from standard input.
+
+ -s, --sources SOURCES_FILE
+ Read package information from given SOURCES_FILE instead of all files
+ matching /var/lib/apt/lists/*_source_Sources. Can be specified
+ multiple times.
+
+ -u, --uploaders
+ Also list Uploaders of packages, not only the listed Maintainers
+ (this is the default behaviour, use --nouploaders to prevent this).
+
+ -nou, --nouploaders
+ Only list package Maintainers, do not list Uploaders.
+
+ -b, --print-binary
+ If binary package names are given as input, print these names
+ in the output instead of corresponding source packages.
+
+ -V, --version
+ Print version (it\'s $version by the way).
+EOF
+}
+
+my $use_stdin=0;
+my $use_dctrl=0;
+my $source_files=[];
+my $show_uploaders=1;
+my $print_binary=0;
+GetOptions(
+ "help|h" => sub { help(); exit },
+ "stdin|i" => \$use_stdin,
+ "dctrl|d" => \$use_dctrl,
+ "sources|s:s@" => \$source_files,
+ "uploaders|u!" => \$show_uploaders,
+ "print-binary|b" => \$print_binary,
+ "version" => sub { print "dd-list version $version\n" })
+or do {
+ help();
+ exit(1);
+};
+
+my %dict;
+my $errors=0;
+my %package_name;
+
+sub parsefh
+{
+ my ($fh, $fname, $check_package) = @_;
+ local $/="\n\n";
+ my $package_names;
+ if ($check_package) {
+ $package_names = sprintf '(?:^| )(%s)(?:,|$)',
+ join '|',
+ map { "\Q$_\E" }
+ keys %package_name;
+ }
+ while (<$fh>) {
+ my ($package, $source, $binaries, $maintainer, @uploaders);
+
+ # Binary is shown in _source_Sources and contains all binaries produced by
+ # that source package
+ if (/^Binary:\s+(.*(?:\n .*)*)$/m) {
+ $binaries = $1;
+ $binaries =~ s/\n//;
+ }
+ # Package is shown both in _source_Sources and _binary-*. It is the
+ # name of the package, source or binary respectively, being described
+ # in that control stanza
+ if (/^Package:\s+(.*)$/m) {
+ $package=$1;
+ }
+ # Source is shown in _binary-* and specifies the source package which
+ # produced the binary being described
+ if (/^Source:\s+(.*)$/m) {
+ $source=$1;
+ }
+ if (/^Maintainer:\s+(.*)$/m) {
+ $maintainer=$1;
+ }
+ if (/^Uploaders:\s+(.*(?:\n .*)*)$/m) {
+ my $matches=$1;
+ $matches =~ s/\n//g;
+ @uploaders = split /(?<=>)\s*,\s*/, $matches;
+ }
+
+ if (defined $maintainer
+ && (defined $package || defined $source || defined $binaries)) {
+ $source ||= $package;
+ $binaries ||= $package;
+ my @names;
+ if ($check_package) {
+ my @pkgs;
+ if (@pkgs = ($binaries =~ m/$package_names/g)) {
+ map { $package_name{$_}-- } @pkgs;
+ }
+ elsif ($source !~ m/$package_names/) {
+ next;
+ }
+ $package_name{$source}--;
+ @names = $print_binary ? @pkgs : $source;
+ }
+ else {
+ @names = $print_binary ? $binaries : $source;
+ }
+ push @{$dict{$maintainer}}, @names;
+ if ($show_uploaders && @uploaders) {
+ foreach my $uploader (@uploaders) {
+ push @{$dict{$uploader}}, map "$_ (U)", @names;
+ }
+ }
+ }
+ else {
+ warn "E: parse error in stanza $. of $fname\n";
+ $errors=1;
+ }
+ }
+}
+
+if ($use_dctrl) {
+ parsefh(\*STDIN, 'STDIN');
+}
+else {
+ if ($use_stdin) {
+ while (<STDIN>) {
+ chomp;
+ s/^\s+//;
+ s/\s+$//;
+ map { $package_name{lc($_)} = 1 } split ' ', $_;
+ }
+ }
+ else {
+ map { $package_name{lc($_)} = 1 } @ARGV;
+ }
+
+ unless (@{$source_files}) {
+ $source_files = [glob('/var/lib/apt/lists/*_source_Sources')];
+ }
+
+ foreach my $source (@{$source_files}) {
+ my $fh = FileHandle->new("<$source");
+ unless (defined $fh) {
+ warn "E: Couldn't open $fh\n";
+ $errors = 1;
+ next;
+ }
+ parsefh($fh, $source, 1);
+ $fh->close;
+ }
+}
+
+foreach my $developer (sort_developers(keys %dict)) {
+ print "$developer\n";
+ my %seen;
+ foreach my $package (sort @{$dict{$developer}}) {
+ next if $seen{$package};
+ $seen{$package}=1;
+ print " $package\n";
+ }
+ print "\n";
+}
+
+foreach my $package (grep { $package_name{$_} > 0 } keys %package_name) {
+ warn "E: Unknown package: $package\n";
+ $errors = 1;
+}
+
+exit($errors);
--- /dev/null
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!--
+
+Process this file with an XSLT processor: `xsltproc \
+-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl manpage.dbk'. A manual page
+<package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A
+typical entry in a Makefile or Makefile.am is:
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+manpage.1: manpage.dbk
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The
+XSL files are in docbook-xsl. Please remember that if you
+create the nroff version in one of the debian/rules file
+targets (such as build), you will need to include xsltproc
+and docbook-xsl in your Build-Depends control field.
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>martin f.</firstname>">
+ <!ENTITY dhsurname "<surname>krafft</surname>">
+ <!ENTITY dhmaintfirstname "<firstname>Julian</firstname>">
+ <!ENTITY dhmaintsurname "<surname>Gilbey</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>Feb 13, 2006</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>1</manvolnum>">
+ <!ENTITY dhemail "<email>madduck@debian.org</email>">
+ <!ENTITY dhmaintemail "<email>jdg@debian.org</email>">
+ <!ENTITY dhusername "martin f. krafft">
+ <!ENTITY dhmaintusername "Julian Gilbey">
+ <!ENTITY dhucpackage "<refentrytitle>deb-reversion</refentrytitle>">
+ <!ENTITY dhpackage "deb-reversion">
+ <!ENTITY dhcommand "deb-reversion">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhcommand;</refname>
+
+ <refpurpose>simple script to change the version of a .deb file</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhcommand;</command>
+ <arg choice="opt">
+ <replaceable>options</replaceable>
+ </arg>
+ <replaceable> .deb-file</replaceable>
+ <arg choice="opt" rep="repeat"><replaceable>log message</replaceable></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>
+ <command>&dhcommand;</command> unpacks the specified <filename>.deb</filename> file, changes the version
+ number in the relevant locations, appends a Debian
+ <filename>changelog</filename> entry with the specified
+ contents, and creates a new <filename>.deb</filename> file with the updated version.
+ </para>
+
+ <para>
+ By default, the tool creates a new version number suitable for
+ local changes, such that the new package will be greater than
+ the current one, but lesser than any future, official Debian
+ packages. With <option>-v <replaceable
+ class="parameter">version</replaceable></option>, the version
+ number can be specified directly. On the other hand, the
+ <option>-c</option> simply calculates the new version number but
+ does not generate a new package.
+ </para>
+
+ <para>
+ When building a <filename>.deb</filename> file, root privileges are required in order
+ to have the correct permissions and ownerships in the resulting
+ <filename>.deb</filename> file. This can be achieved either by running
+ <command>&dhcommand;</command> as root or running under
+ <citerefentry><refentrytitle>fakeroot</refentrytitle>
+ <manvolnum>1</manvolnum></citerefentry>, as 'fakeroot
+ &dhcommand; foo.deb'.
+ </para>
+
+ <para>
+ With <option>-k <replaceable
+ class="parameter">hook</replaceable></option>, a hook script may
+ be specified, which is run on the unpacked binary packages just
+ before it is repacked. If you want to write changelog entries
+ from within the hook, use '<command>dch -a -- <replaceable
+ class="parameter">your message</replaceable></command>'.
+ (Alternatively, do not give a changelog entry on the
+ <command>&dhcommand;</command> command line and
+ <command>dch</command> will be called automatically.) The hook
+ command must be placed in quotes if it has more than one word;
+ it is called via <command>sh -c</command>.
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>OPTIONS</title>
+ <variablelist>
+ <varlistentry>
+ <term><option>-v</option> <replaceable class="parameter">new-version</replaceable></term>
+ <term><option>--new-version</option> <replaceable class="parameter">new-version</replaceable></term>
+ <listitem>
+ <para>
+ Specifies the version number to be used for the new
+ version. Passed to <citerefentry>
+ <refentrytitle>dch</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-o</option> <replaceable class="parameter">old-version</replaceable></term>
+ <term><option>--old-version</option> <replaceable class="parameter">old-version</replaceable></term>
+ <listitem>
+ <para>
+ Specifies the version number to be used as the old
+ version instead of the version stored in the <filename>.deb</filename>'s
+ <filename>control</filename> file.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-c</option></term>
+ <term><option>--calculate-only</option></term>
+ <listitem>
+ <para>
+ Only calculate and display the new version number which
+ would be used; do not build a new <filename>.deb</filename> file. Cannot be
+ used in conjunction with <option>-v</option>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-s</option> <replaceable class="parameter">string</replaceable></term>
+ <term><option>--string</option> <replaceable class="parameter">string</replaceable></term>
+ <listitem>
+ <para>
+ Instead of using 'LOCAL.' as the version string to append
+ to the old version number, use <replaceable
+ class="parameter">string</replaceable> instead.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-k</option> <replaceable class="parameter">hook-command</replaceable></term>
+ <term><option>--hook</option> <replaceable class="parameter">hook-command</replaceable></term>
+ <listitem>
+ <para>
+ A hook command to run after unpacking the old <filename>.deb</filename> file and
+ modifying the <filename>changelog</filename>, and before packing up the new <filename>.deb</filename>
+ file. Must be in quotes if it is more than one (shell)
+ word. Only one hook command may be specified; if you want
+ to perform more than this, you could specify 'bash' as the
+ hook command, and you will then be given a shell to work
+ in.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-D</option></term>
+ <term><option>--debug</option></term>
+ <listitem>
+ <para>
+ Pass <option>--debug</option> to
+ <citerefentry>
+ <refentrytitle>dpkg-deb</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-b</option></term>
+ <term><option>--force-bad-version</option></term>
+ <listitem>
+ <para>
+ Pass <option>--force-bad-version</option> to
+ <citerefentry>
+ <refentrytitle>dch</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-h</option></term>
+ <term><option>--help</option></term>
+ <listitem>
+ <para>
+ Display usage information.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-V</option></term>
+ <term><option>--version</option></term>
+ <listitem>
+ <para>
+ Display version information.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>SEE ALSO</title>
+ <para>
+ <citerefentry>
+ <refentrytitle>dch</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>dpkg-deb</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>fakeroot</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>DISCLAIMER</title>
+ <para>
+ &dhpackage; is a tool intended to help porters with
+ modifying packages for other architectures, and to augment deb-repack,
+ which creates modified packages with identical version numbers as the
+ official packages. Chaos will ensue! With &dhpackage;, a proper version
+ number can be selected, which does not obstruct the next official
+ release but can be specifically pinned with APT or held with dpkg.
+ </para>
+
+ <para>
+ Please take note that &dhpackage; does not come without problems. While
+ it works fine in most cases, it may just not in yours. Especially,
+ please consider that it changes binary packages (only!) and hence can
+ break strict versioned dependencies between binary packages generated
+ from the same source. </para>
+
+ <para>
+ You are using this tool at your own risk and I shall not shed a tear if
+ your gerbil goes up in flames, your microwave attacks the stereo, or the
+ angry slamming of your fist spills your coffee into the keyboard, which
+ sets off a chain reaction resulting in a vast amount of money transferred
+ from your account to mine.
+ </para>
+ </refsect1>
+
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>
+ &dhpackage; is Copyright 2004-5 by &dhusername; &dhemail; and
+ modifications are Copyright 2006 by &dhmaintusername; &dhmaintemail;.
+ </para>
+
+ <para>
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the Artistic License:
+ <ulink>http://www.opensource.org/licenses/artistic-license.php</ulink>.
+ On Debian systems, the complete text of the Artistic License can be
+ found
+ in <filename>/usr/share/common-licenses/Artistic</filename>.
+ </para>
+
+ <para>
+ This manual page was written by &dhusername; &dhemail; and
+ modified by &dhmaintusername; &dhmaintemail;.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!--
+ Local Variables:
+ mode: xml
+ End:
+-->
--- /dev/null
+#!/bin/bash
+#
+# deb-reversion -- a script to bump a .deb file's version number.
+#
+# Copyright © martin f. krafft <madduck@madduck.net>
+# with contributions by: Goswin von Brederlow, Filippo Giunchedi
+# Released under the terms of the Artistic License 2.0
+#
+# TODO:
+# - add debugging output.
+# - allow to be used on dpkg-source and dpkg-deb unpacked source packages.
+#
+set -eu
+
+PROGNAME=${0##*/}
+PROGVERSION=0.9.1
+VERSTR='LOCAL.'
+
+versioninfo() {
+ echo "$PROGNAME $PROGVERSION"
+ echo "$PROGNAME is copyright © martin f. krafft"
+ echo "Released under the terms of the Artistic License 2.0"
+ echo "This programme is part of devscripts ###VERSION###."
+}
+
+usage()
+{
+ cat <<-_eousage
+ Usage: $PROGNAME [options] .deb-file [log message]
+ $PROGNAME -o <version> -c
+
+ Increase the .deb file's version number, noting the change in the
+ changelog with the specified log message. You should run this
+ program either as root or under fakeroot.
+
+ Options:
+ _eousage
+ cat <<-_eooptions | column -s\& -t
+ -v ver|--new-version=ver & use this as new version number
+ -o old|--old-version=ver & calculate new version number based on this old one
+ -c|--calculate-only & only calculate (and print) the augmented version
+ -s str|--string=str & append this string instead of '$VERSTR' to
+ & calculate new version number
+ -k script|--hook=script & call this script before repacking
+ -D|--debug & call dpkg-deb in debug mode
+ -b|--force-bad-version & passed through to dch
+ -h|--help & show this output
+ -V|--version & show version information
+ _eooptions
+}
+
+write()
+{
+ local PREFIX; PREFIX="$1"; shift
+ echo "${PREFIX}: $PROGNAME: $@" >&2
+}
+
+err()
+{
+ write E "$@"
+}
+
+CURDIR="$(pwd)"
+SHORTOPTS=hVo:v:ck:Ds:b
+LONGOPTS=help,version,old-version:new-version:,calculate-only,hook:,debug,string:,force-bad-version
+eval set -- "$(getopt -s bash -o $SHORTOPTS -l $LONGOPTS -n $PROGNAME -- "$@")"
+
+CALCULATE=0
+DPKGDEB_DEBUG=
+DEB=
+DCH_OPTIONS=
+for opt in "$@"; do
+ case "${OPT_STATE:-}" in
+ SET_OLD_VERSION) OLD_VERSION="$opt";;
+ SET_NEW_VERSION) NEW_VERSION="$opt";;
+ SET_STRING) VERSTR="$opt";;
+ SET_HOOK) HOOK="$opt";;
+ *) :;;
+ esac
+ [ -n "${OPT_STATE:-}" ] && unset OPT_STATE && continue
+
+ case $opt in
+ -v|--new-version) OPT_STATE=SET_NEW_VERSION;;
+ -o|--old-version) OPT_STATE=SET_OLD_VERSION;;
+ -c|--calculate-only|--print-only) CALCULATE=1;;
+ -s|--string) OPT_STATE=SET_STRING;;
+ -k|--hook) OPT_STATE=SET_HOOK;;
+ -D|--debug) DPKGDEB_DEBUG=--debug;;
+ -b|--force-bad-version) DCH_OPTIONS="${DCH_OPTIONS} -b";;
+ -h|--help) usage; exit 0;;
+ -V|--version) versioninfo; exit 0;;
+ --) :;;
+ *)
+ if [ -f "$opt" ]; then
+ if [ -n "$DEB" ]; then
+ err "multiple .deb files specified: ${DEB##*/} and $opt"
+ exit 1
+ else
+ case "$opt" in
+ /*.deb|/*.udeb) DEB="$opt";;
+ *.deb| *.udeb) DEB="${CURDIR}/$opt";;
+ *)
+ err "not a .deb file: $opt";
+ exit 2
+ ;;
+ esac
+ fi
+ else
+ LOG="${LOG:+$LOG }$opt"
+ fi
+ ;;
+ esac
+done
+
+if [ $CALCULATE -eq 0 ] || [ -z "${OLD_VERSION:-}" ]; then
+ if [ -z "$DEB" ]; then
+ err no .deb file specified.
+ exit 3
+ fi
+fi
+
+if [ -n "${NEW_VERSION:-}" ] && [ $CALCULATE -eq 1 ]; then
+ echo "$PROGNAME error: the options -v and -c cannot be used together" >&2
+ usage
+ exit 4
+fi
+
+make_temp_dir()
+{
+ TMPDIR=$(mktemp -d --tmpdir deb-reversion.XXXXXX)
+ trap "rm -rf $TMPDIR" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ mkdir -p ${TMPDIR}/package
+ TMPDIR=${TMPDIR}/package
+}
+
+extract_deb_file()
+{
+ dpkg-deb $DPKGDEB_DEBUG --extract $1 .
+ dpkg-deb $DPKGDEB_DEBUG --control $1 DEBIAN
+}
+
+get_version()
+{
+ dpkg --info $1 | sed -ne 's,^[[:space:]]Version: ,,p'
+}
+
+bump_version()
+{
+ case "$1" in
+ *${VERSTR}[0-9]*)
+ REV=${1##*${VERSTR}}
+ echo ${1%${VERSTR}*}${VERSTR}$((++REV));;
+ *-*)
+ echo ${1}${VERSTR}1;;
+ *)
+ echo ${1}-0${VERSTR}1;;
+ esac
+}
+
+call_hook()
+{
+ [ -z "${HOOK:-}" ] && return 0
+ export VERSION
+ sh -c "$HOOK"
+}
+
+change_version()
+{
+ PACKAGE=$(sed -ne 's,^Package: ,,p' DEBIAN/control)
+ VERSION=$1
+
+ # changelog massaging is only needed in the deb (not-udeb) case:
+ if [ "$DEB_TYPE" = "deb" ]; then
+ LOGFILE=
+ for i in changelog{,.Debian}.gz; do
+ [ -f usr/share/doc/${PACKAGE}/$i ] \
+ && LOGFILE=usr/share/doc/${PACKAGE}/$i
+ done
+ [ -z "$LOGFILE" ] && { echo "changelog file not found"; return 1; }
+ mkdir -p debian
+ zcat $LOGFILE > debian/changelog
+ shift
+ dch $DCH_OPTIONS -v $VERSION -- $@
+ call_hook
+ gzip -9 -c debian/changelog >| $LOGFILE
+ else
+ call_hook
+ fi
+
+ sed -i -e "s,^Version: .*,Version: $VERSION," DEBIAN/control
+ rm -rf debian
+}
+
+repack_file()
+{
+ cd ..
+ dpkg-deb -b package >/dev/null
+ debfile=$(dpkg-name package.deb | sed -e "s,.*['\`]\(.*\).,\1,")
+ # if Package-Type: udeb is absent, dpkg-name can't rename into *.udeb,
+ # so we're left to an extra rename afterwards:
+ if [ "$DEB_TYPE" = udeb ]; then
+ udebfile=${debfile%%.deb}.udeb
+ mv $debfile $udebfile
+ echo $udebfile
+ else
+ echo $debfile
+ fi
+}
+
+[ -z "${OLD_VERSION:-}" ] && OLD_VERSION="$(get_version $DEB)"
+[ -z "${NEW_VERSION:-}" ] && NEW_VERSION="$(bump_version $OLD_VERSION)"
+
+if [ $CALCULATE -eq 1 ]; then
+ echo $NEW_VERSION
+ exit 0
+fi
+
+if [ $(id -u) -ne 0 ]; then
+ err need root rights.
+ exit 5
+fi
+
+make_temp_dir
+cd "$TMPDIR"
+
+DEB_TYPE=$(echo "$DEB"|sed 's/.*[.]//')
+extract_deb_file "$DEB"
+change_version "$NEW_VERSION" "${LOG:-Bumped version with $PROGNAME}"
+FILE="$(repack_file)"
+
+if [ -f "$CURDIR/$FILE" ]; then
+ echo "$CURDIR/$FILE exists, moving to $CURDIR/$FILE.orig ." >&2
+ mv -i "$CURDIR/$FILE" "$CURDIR/$FILE.orig"
+fi
+
+mv "../$FILE" "$CURDIR"
+
+echo "version $VERSION of $PACKAGE is now available in $FILE ." >&2
--- /dev/null
+.TH DEBC 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+debc \- view contents of a generated Debian package
+.SH SYNOPSIS
+\fBdebc\fP [\fIoptions\fR] [\fIchanges file\fR] [\fIpackage\fR ...]
+.SH DESCRIPTION
+\fBdebc\fR figures out the current version of a package and displays
+information about the \fI.deb\fR and \fI.udeb\fR files which have been generated
+in the current build process. If a \fI.changes\fR file is specified
+on the command line, the filename must end with \fI.changes\fR, as
+this is how the program distinguishes it from package names. If not,
+then \fBdebc\fR has to be called from within the source code directory
+tree. In this case, it will look for the \fI.changes\fR file
+corresponding to the current package version (by determining the name
+and version number from the changelog, and the architecture in the
+same way as \fBdpkg-buildpackage\fR(1) does). It then runs
+\fBdpkg-deb \-I\fR and \fBdpkg-deb \-c\fR on every \fI.deb\fR and
+\fI.udeb\fR archive listed in the \fI.changes\fR file to display
+information about the contents of the \fI.deb\fR / \fI.udeb\fR files.
+It precedes every \fI.deb\fR or \fI.udeb\fR file with the name of the
+file. It assumes that all of the \fI.deb\fR / \fI.udeb\fR archives
+live in the same directory as the \fI.changes\fR file. It is
+useful for ensuring that the expected files have ended up in the
+Debian package.
+.PP
+If a list of packages is given on the command line, then only those
+debs or udebs with names in this list of packages will be processed.
+.SH "Directory name checking"
+In common with several other scripts in the \fBdevscripts\fR package,
+\fBdebc\fR will climb the directory tree until it finds a
+\fIdebian/changelog\fR file. As a safeguard against stray files
+causing potential problems, it will examine the name of the parent
+directory once it finds the \fIdebian/changelog\fR file, and check
+that the directory name corresponds to the package name. Precisely
+how it does this is controlled by two configuration file variables
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR and \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR, and
+their corresponding command-line options \fB\-\-check-dirname-level\fR
+and \fB\-\-check-dirname-regex\fR.
+.PP
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR can take the following values:
+.TP
+.B 0
+Never check the directory name.
+.TP
+.B 1
+Only check the directory name if we have had to change directory in
+our search for \fIdebian/changelog\fR. This is the default behaviour.
+.TP
+.B 2
+Always check the directory name.
+.PP
+The directory name is checked by testing whether the current directory
+name (as determined by \fBpwd\fR(1)) matches the regex given by the
+configuration file option \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR or by the
+command line option \fB\-\-check-dirname-regex\fR \fIregex\fR. Here
+\fIregex\fR is a Perl regex (see \fBperlre\fR(3perl)), which will be
+anchored at the beginning and the end. If \fIregex\fR contains a '/',
+then it must match the full directory path. If not, then it must
+match the full directory name. If \fIregex\fR contains the string
+\'PACKAGE', this will be replaced by the source package name, as
+determined from the changelog. The default value for the regex is:
+\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and
+PACKAGE-version.
+.SH OPTIONS
+.TP
+\fB\-a\fIdebian-architecture\fR, \fB\-t\fIGNU-system-type\fR
+See \fBdpkg-architecture\fR(1) for a description of these options.
+They affect the search for the \fI.changes\fR file. They are provided
+to mimic the behaviour of \fBdpkg-buildpackage\fR when determining the
+name of the \fI.changes\fR file.
+.TP
+\fB\-\-debs\-dir\fR \fIdirectory\fR
+Look for the \fI.changes\fR, \fI.deb\fR and \fI.udeb\fR files in
+\fIdirectory\fR instead of the parent of the source directory.
+This should either be an absolute path or relative to the top of the
+source directory.
+.TP
+\fB\-\-check-dirname-level\fR \fIN\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-\-check-dirname-regex\fR \fIregex\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+\fB\-\-help\fR, \fB\-\-version\fR
+Show help message and version information respectively.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variables are:
+.TP
+.B DEBRELEASE_DEBS_DIR
+This specifies the directory in which to look for the \fI.changes\fR,
+\fI.deb\fR and \fI.udeb\fR files, and is either an absolute path or
+relative to the top of the source tree. This corresponds to the
+\fB\-\-debs\-dir\fR command line option. This directive could be
+used, for example, if you always use \fBpbuilder\fR or
+\fBsvn-buildpackage\fR to build your packages. Note that it also
+affects \fBdebrelease\fR(1) in the same way, hence the strange name of
+the option.
+.TP
+.BR DEVSCRIPTS_CHECK_DIRNAME_LEVEL ", " DEVSCRIPTS_CHECK_DIRNAME_REGEX
+See the above section \fBDirectory name checking\fR for an explanation of
+these variables. Note that these are package-wide configuration
+variables, and will therefore affect all \fBdevscripts\fR scripts
+which check their value, as described in their respective manpages and
+in \fBdevscripts.conf\fR(5).
+.SH "SEE ALSO"
+.BR debdiff (1),
+.BR dpkg-deb (1),
+.BR devscripts.conf (5)
+.SH AUTHOR
+Julian Gilbey <jdg@debian.org>, based on an original script by
+Christoph Lameter <clameter@debian.org>.
--- /dev/null
+.TH DEBCHANGE 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+debchange \- Tool for maintenance of the debian/changelog file in a source package
+.SH SYNOPSIS
+\fBdebchange\fR [\fIoptions\fR] [\fItext\fR ...]
+.br
+\fBdch\fR [\fIoptions\fR] [\fItext\fR ...]
+.SH DESCRIPTION
+\fBdebchange\fR or its alias \fBdch\fR will add a new comment line to
+the Debian changelog in the current source tree. This command must be
+run from within that tree. If the text of the change is given on the
+command line, \fBdebchange\fR will run in batch mode and simply add the
+text, with line breaks as necessary, at the appropriate place in
+\fIdebian/changelog\fR (or the changelog specified by options, as
+described below). If no text is specified then \fBdebchange\fR
+will run the editor as determined by \fBsensible-editor\fR for you to
+edit the file. (The environment variables \fBVISUAL\fR and
+\fBEDITOR\fR are used in this order to determine which editor to use.)
+Editors which understand the \fI+n\fR option for starting the editing
+on a specified line will use this to move to the correct line of the
+file for editing. If the editor is quit without modifying the
+temporary file, \fBdebchange\fR will exit without touching the
+existing changelog. \fBNote that the changelog is assumed to be
+encoded with the UTF-8 encoding. If it is not, problems may occur.\fR
+Please see the \fBiconv\fR(1) manpage to find out how to convert
+changelogs from legacy encodings. Finally, a \fIchangelog\fR or \fINEWS\fR
+file can be created from scratch using the \fB\-\-create\fR option
+described below.
+.PP
+\fBdebchange\fR also supports automatically producing bug-closing
+changelog entries, using the \fB\-\-closes\fR option. This will
+usually query the BTS, the Debian Bug Tracking System (see
+https://bugs.debian.org/) to determine the title of the bug and the
+package in which it occurs. This behaviour can be stopped by giving a
+\fB\-\-noquery\fR option or by setting the configuration variable
+\fBDEBCHANGE_QUERY_BTS\fR to \fIno\fR, as described below. In either
+case, the editor (as described above) will always be invoked to give
+an opportunity to modify the entries, and the changelog will be
+accepted whether or not modifications are made. An extra changelog
+entry can be given on the command line in addition to the closes
+entries.
+.PP
+At most one of \fB\-\-append\fR, \fB\-\-increment\fR, \fB\-\-edit\fR,
+\fB\-\-release\fR, and \fB\-\-newversion\fR may be specified as listed
+below. If no options are specified, \fBdebchange\fR will use heuristics to
+guess whether or not the package has been successfully released, and behave
+as if \fB\-\-increment\fR had been specified if the package has been
+released, or otherwise as if \fB\-\-append\fR has been specified.
+.PP
+Two different sets of heuristics can be used, as controlled by the
+\fB\-\-release-heuristic\fR option or the
+\fBDEBCHANGE_RELEASE_HEURISTIC\fR configuration variable. The default
+\fIchangelog\fR heuristic assumes the package has been released unless its
+changelog contains \fBUNRELEASED\fR in the distribution field. If this heuristic
+is enabled then the distribution will default to \fBUNRELEASED\fR in new
+changelog entries, and the \fB\-\-mainttrailer\fR option described below will be
+automatically enabled. This can be useful if a package can be released by
+different maintainers, or if you do not keep the upload logs. The alternate
+\fIlog\fR heuristic determines if a package has been released by looking for an
+appropriate \fBdupload\fR(1) or \fBdput\fR(1) log file in the parent directory.
+A warning will be issued if the log file is found but a successful upload is not
+recorded. This may be because the previous upload was performed with a version
+of \fBdupload\fR prior to 2.1 or because the upload failed.
+.PP
+If either \fB\-\-increment\fR or \fB\-\-newversion\fR is used, the
+name and email for the new version will be determined as follows. If
+the environment variable \fBDEBFULLNAME\fR is set, this will be used
+for the maintainer full name; if not, then \fBNAME\fR will be checked.
+If the environment variable \fBDEBEMAIL\fR is set, this will be used
+for the email address. If this variable has the form "name <email>",
+then the maintainer name will also be taken from here if neither
+\fBDEBFULLNAME\fR nor \fBNAME\fR is set. If this variable is not set,
+the same test is performed on the environment variable \fBEMAIL\fR.
+Next, if the full name has still not been determined, then use
+\fBgetpwuid\fR(3) to determine the name from the password file. If
+this fails, use the previous changelog entry. For the email address,
+if it has not been set from \fBDEBEMAIL\fR or \fBEMAIL\fR, then look
+in \fI/etc/mailname\fR, then attempt to build it from the username and
+FQDN, otherwise use the email address in the previous changelog entry.
+In other words, it's a good idea to set \fBDEBEMAIL\fR and
+\fBDEBFULLNAME\fR when using this script.
+.PP
+Support is included for changelogs that record changes by multiple
+co-maintainers of a package. If an entry is appended to the current
+version's entries, and the maintainer is different from the maintainer who
+is listed as having done the previous entries, then lines will be added to
+the changelog to tell which maintainers made which changes. Currently only
+one of the several such styles of recording this information is supported,
+in which the name of the maintainer who made a set of changes appears
+on a line before the changes, inside square brackets. This can be
+switched on and off using the \fB\-\-\fR[\fBno\fR]\fBmultimaint\fR option or the
+\fBDEBCHANGE_MULTIMAINT\fR configuration file option; the default is to
+enable it. Note that if an entry has already been marked in this way,
+then this option will be silently ignored.
+.PP
+If the directory name of the source tree has the form
+\fIpackage\fR-\fIversion\fR, then \fBdebchange\fR will also attempt to
+rename it if the (upstream) version number changes. This can be
+prevented by using the \fB\-\-preserve\fR command line or
+configuration file option as described below.
+.PP
+If \fB\-\-force\-bad\-version\fR or \fB\-\-allow\-lower\-version\fR is used,
+\fBdebchange\fR will not stop if the new version is less than the current one.
+This is especially useful while doing backports.
+.SH "Directory name checking"
+In common with several other scripts in the \fBdevscripts\fR package,
+\fBdebchange\fR will climb the directory tree until it finds a
+\fIdebian/changelog\fR file. As a safeguard against stray files
+causing potential problems, it will examine the name of the parent
+directory once it finds the \fIdebian/changelog\fR file, and check
+that the directory name corresponds to the package name. Precisely
+how it does this is controlled by two configuration file variables
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR and \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR, and
+their corresponding command-line options \fB\-\-check-dirname-level\fR
+and \fB\-\-check-dirname-regex\fR.
+.PP
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR can take the following values:
+.TP
+.B 0
+Never check the directory name.
+.TP
+.B 1
+Only check the directory name if we have had to change directory in
+our search for \fIdebian/changelog\fR. This is the default behaviour.
+.TP
+.B 2
+Always check the directory name.
+.PP
+The directory name is checked by testing whether the current directory
+name (as determined by \fBpwd\fR(1)) matches the regex given by the
+configuration file option \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR or by the
+command line option \fB\-\-check-dirname-regex\fR \fIregex\fR. Here
+\fIregex\fR is a Perl regex (see \fBperlre\fR(3perl)), which will be
+anchored at the beginning and the end. If \fIregex\fR contains a '\fB/\fR',
+then it must match the full directory path. If not, then it must
+match the full directory name. If \fIregex\fR contains the string
+\'\fBPACKAGE\fR', this will be replaced by the source package name, as
+determined from the changelog. The default value for the regex is:
+\'\fBPACKAGE(-.+)?\fR', thus matching directory names such as \fBPACKAGE\fR and
+\fBPACKAGE-\fIversion\fR.
+.PP
+The default changelog to be edited is \fIdebian/changelog\fR; however,
+this can be changed using the \fB\-\-changelog\fR or \fB\-\-news\fR
+options or the \fBCHANGELOG\fR environment variable, as described below.
+.SH OPTIONS
+.TP
+.BR \-\-append ", " \-a
+Add a new changelog entry at the end of the current version's entries.
+.TP
+.BR \-\-increment ", " \-i
+Increment either the final component of the Debian release number or,
+if this is a native Debian package, the version number. On Ubuntu or Tanglu,
+this will also change the suffix from buildX to ubuntu1/tanglu1. Use
+\fB\-R\fR, \fB\-\-rebuild\fR for a no change rebuild increment. This creates
+a new section at the beginning of the changelog with appropriate
+headers and footers. Also, if this is a new version of a native
+Debian package, the directory name is changed to reflect this.
+If \fBDEBCHANGE_RELEASE_HEURISTIC\fR is \fIchangelog\fR (default) and the
+current release is \fIUNRELEASED\fR, this will only change the version of the
+current changelog stanza. Otherwise, this will create a new changelog stanza
+with the new version.
+.TP
+\fB\-\-newversion \fIversion\fR, \fB\-v \fIversion\fR
+This specifies the version number (including the Debian release part)
+explicitly and behaves as the \fB\-\-increment\fR option in other
+respects. It will also change the directory name if the upstream
+version number has changed.
+If \fBDEBCHANGE_RELEASE_HEURISTIC\fR is \fIchangelog\fR (default) and the
+current release is \fIUNRELEASED\fR, this will only change the version of the
+current changelog stanza. Otherwise, this will create a new changelog stanza
+with the new version.
+.TP
+.BR \-\-edit ", " \-e
+Edit the changelog in an editor.
+.TP
+.BR \-\-release ", " \-r
+Finalize the changelog for a release.
+Update the changelog timestamp. If the distribution is set to
+\fBUNRELEASED\fR, change it to the distribution from the previous changelog entry
+(or another distribution as specified by \fB\-\-distribution\fR). If there are
+no previous changelog entries and an explicit distribution has not been
+specified, \fBunstable\fR will be used.
+.TP
+.BR \-\-force\-save\-on\-release
+When \fB\-\-release\fR is used, an editor is opened to allow inspection
+of the changelog. The user is required to save the file to accept the modified
+changelog, otherwise the original will be kept (default).
+.TP
+.BR \-\-no\-force\-save\-on\-release
+Do not do so. Note that a dummy changelog entry may be supplied
+in order to achieve the same effect - e.g. \fBdebchange \-\-release ""\fR.
+The entry will not be added to the changelog but its presence will suppress
+the editor.
+.TP
+.BR \-\-create
+This will create a new \fIdebian/changelog\fR file (or \fINEWS\fR if
+the \fB\-\-news\fR option is used). You must be in the top-level
+directory to use this; no directory name checking will be performed.
+The package name and version can either be specified using the
+\fB\-\-package\fR and \fB\-\-newversion\fR options, determined from
+the directory name using the \fB\-\-fromdirname\fR option or entered
+manually into the generated \fIchangelog\fR file. The maintainer name is
+determined from the environment if this is possible, and the
+distribution is specified either using the \fB\-\-distribution\fR
+option or in the generated \fIchangelog\fR file.
+.TP
+.BR \-\-empty
+When used in combination with \fB\-\-create\fR, suppress the automatic
+addition of an "\fBinitial release\fR" changelog entry (so that the next
+invocation of \fBdebchange\fR adds the first entry). Note that this
+will cause a \fBdpkg\-parsechangelog\fR warning on the next invocation
+due to the lack of changes.
+.TP
+\fB\-\-package\fR \fIpackage\fR
+This specifies the package name to be used in the new changelog; this
+may only be used in conjunction with the \fB\-\-create\fR, \fB\-\-increment\fR and
+\fB\-\-newversion\fR options.
+.TP
+.BR \-\-nmu ", " \-n
+Increment the Debian release number for a non-maintainer upload by
+either appending a "\fB.1\fR" to a non-NMU version number (unless the package
+is Debian native, in which case "\fB+nmu1\fR" is appended) or by incrementing
+an NMU version number, and add an NMU changelog comment. This happens
+automatically if the packager is neither in the \fBMaintainer\fR nor the \fBUploaders\fR
+field in \fIdebian/control\fR, unless \fBDEBCHANGE_AUTO_NMU\fR is set to
+\fIno\fR or the \fB\-\-no\-auto\-nmu\fR option is used.
+.TP
+.BR \-\-bin\-nmu
+Increment the Debian release number for a binary non-maintainer upload
+by either appending a "\fB+b1\fR" to a non-binNMU version number or by
+incrementing a binNMU version number, and add a binNMU changelog comment.
+.TP
+.BR \-\-qa ", " \-q
+Increment the Debian release number for a Debian QA Team upload, and
+add a \fBQA upload\fR changelog comment.
+.TP
+.BR \-\-rebuild ", " \-R
+Increment the Debian release number for a no-change rebuild by
+appending a "build1" or by incrementing a rebuild version number.
+.TP
+.BR \-\-security ", " \-s
+Increment the Debian release number for a Debian Security Team non-maintainer
+upload, and add a \fBSecurity Team upload\fR changelog comment.
+.TP
+.B \-\-team
+Increment the Debian release number for a team upload, and add a \fBTeam upload\fR
+changelog comment.
+.TP
+.BR \-\-upstream ", " \-U
+Don't append \fBdistro-name1\fR to the version on a derived
+distribution. Increment the Debian version.
+.TP
+.B \-\-bpo
+Increment the Debian release number for an upload to wheezy-backports,
+and add a backport upload changelog comment.
+.TP
+.BR \-\-local ", " \-l \fIsuffix\fR
+ Add a suffix to the Debian version number for a local build.
+.TP
+.BR \-\-force\-bad\-version ", " \-b
+Force a version number to be less than the current one (e.g., when
+backporting).
+.TP
+.B \-\-allow\-lower\-version \fIpattern\fR
+Allow a version number to be less than the current one if the new version
+matches the specified pattern.
+.TP
+.BR \-\-force\-distribution
+Force the provided distribution to be used, even if it doesn't match the list of known
+distributions (e.g. for unofficial distributions).
+.TP
+.BR \-\-auto\-nmu
+Attempt to automatically determine whether a change to the changelog
+represents a Non Maintainer Upload. This is the default.
+.TP
+.BR \-\-no\-auto\-nmu
+Disable automatic NMU detection. Equivalent to setting
+\fBDEBCHANGE_AUTO_NMU\fR to \fIno\fR.
+.TP
+.BR \-\-fromdirname ", " \-d
+This will take the upstream version number from the directory name,
+which should be of the form \fIpackage\fB-\fIversion\fR. If the
+upstream version number has increased from the most recent changelog
+entry, then a new entry will be made with version number
+\fIversion\fB-1\fR (or \fIversion\fR if the package is Debian native),
+with the same epoch as the previous package version. If the upstream
+version number is the same, this option will behave in the same way as
+\fB\-i\fR.
+.TP
+.BI \-\-closes " nnnnn\fR[\fB,\fInnnnn \fR...]
+Add changelog entries to close the specified bug numbers. Also invoke
+the editor after adding these entries. Will generate warnings if the
+BTS cannot be contacted (and \fB\-\-noquery\fR has not been
+specified), or if there are problems with the bug report located.
+.TP
+.B \-\-\fR[\fBno\fR]\fBquery
+Should we attempt to query the BTS when generating closes entries?
+.TP
+.BR \-\-preserve ", " \-p
+Preserve the source tree directory name if the upstream version number
+(or the version number of a Debian native package) changes. See also
+the configuration variables section below.
+.TP
+\fB \-\-no\-preserve\fR, \fB\-\-nopreserve\fR
+Do not preserve the source tree directory name (default).
+.TP
+\fB\-\-vendor \fIvendor\fR
+Override the distributor ID over the default returned by dpkg-vendor.
+This name is used for heuristics applied to new package versions and for
+sanity checking of the target distribution.
+.TP
+\fB\-\-distribution \fIdist\fR, \fB\-D \fIdist\fR
+Use the specified distribution in the changelog entry being edited,
+instead of using the previous changelog entry's distribution for new
+entries or the existing value for existing entries.
+.TP
+\fB\-\-urgency \fIurgency\fR, \fB\-u \fIurgency\fR
+Use the specified urgency in the changelog entry being edited,
+instead of using the default "\fBmedium\fR" for new entries or the existing
+value for existing entries.
+.TP
+\fB\-\-changelog \fIfile\fR, \fB\-c \fIfile\fR
+This will edit the changelog \fIfile\fR instead of the standard
+\fIdebian/changelog\fR. This option overrides any \fBCHANGELOG\fR
+environment variable setting. Also, no directory traversing or
+checking will be performed when this option is used.
+.TP
+\fB\-\-news\fR [\fInewsfile\fR]
+This will edit \fInewsfile\fR (by default, \fIdebian/NEWS\fR) instead
+of the regular changelog. Directory searching will be performed.
+The changelog will be examined in order to determine the current package
+version.
+.TP
+\fB\-\-\fR[\fBno\fR]\fBmultimaint\fR
+Should we indicate that parts of a changelog entry have been made by
+different maintainers? Default is yes; see the discussion above and
+also the \fBDEBCHANGE_MULTIMAINT\fR configuration file option below.
+.TP
+\fB\-\-\fR[\fBno\fR]\fBmultimaint\-merge\fR
+Should all changes made by the same author be merged into the same
+changelog section? Default is no; see the discussion above and also the
+\fBDEBCHANGE_MULTIMAINT_MERGE\fR configuration file option below.
+.TP
+.BR \-\-maintmaint ", " \-m
+Do not modify the maintainer details previously listed in the changelog.
+This is useful particularly for sponsors wanting to automatically add a
+sponsorship message without disrupting the other changelog details.
+Note that there may be some interesting interactions if
+multi-maintainer mode is in use; you will probably wish to check the
+changelog manually before uploading it in such cases.
+.TP
+.BR \-\-controlmaint ", " \-M
+Use maintainer details from the \fIdebian/control\fR \fBMaintainer\fR field
+rather than relevant environment variables (\fBDEBFULLNAME\fR, \fBDEBEMAIL\fR,
+etc.). This option might be useful to restore details of the main maintainer
+in the changelog trailer after a bogus edit (e.g. when \fB\-m\fR was intended
+but forgot) or when releasing a package in the name of the main maintainer
+(e.g. the team).
+.TP
+.BR \-\-\fR[\fBno\fR]\fBmainttrailer ", " \-t
+If \fBmainttrailer\fR is set, it will avoid modifying the existing changelog
+trailer line (i.e. the maintainer and date-stamp details), unless
+used with options that require the trailer to be modified
+(e.g. \fB\-\-create\fR, \fB\-\-release\fR, \fB\-i\fR, \fB\-\-qa\fR, etc.)
+This option differs from \fB\-\-maintmaint\fR in that it will use
+multi-maintainer mode if appropriate, with the exception of editing the
+trailer. See also the \fBDEBCHANGE_MAINTTRAILER\fR configuration file option
+below.
+.TP
+\fB\-\-check-dirname-level\fR \fIN\fR
+See the above section "\fBDirectory name checking\fR" for an explanation of
+this option.
+.TP
+\fB\-\-check-dirname-regex\fR \fIregex\fR
+See the above section "\fBDirectory name checking\fR" for an explanation of
+this option.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+\fB\-\-release\-heuristic\fR \fIlog\fR|\fIchangelog\fR
+Controls how \fBdebchange\fR determines if a package has been released,
+when deciding whether to create a new changelog entry or append to an
+existing changelog entry.
+.TP
+.BR \-\-help ", " \-h
+Display a help message and exit successfully.
+.TP
+.B \-\-version
+Display version and copyright information and exit successfully.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variables are:
+.TP
+.B DEBCHANGE_PRESERVE
+If this is set to \fIyes\fR, then it is the same as the
+\fB\-\-preserve\fR command line parameter being used.
+.TP
+.B DEBCHANGE_QUERY_BTS
+If this is set to \fIno\fR, then it is the same as the
+\fB\-\-noquery\fR command line parameter being used.
+.TP
+.BR DEVSCRIPTS_CHECK_DIRNAME_LEVEL ", " DEVSCRIPTS_CHECK_DIRNAME_REGEX
+See the above section "\fBDirectory name checking\fR" for an explanation of
+these variables. Note that these are package-wide configuration
+variables, and will therefore affect all \fBdevscripts\fR scripts
+which check their value, as described in their respective manpages and
+in \fBdevscripts.conf\fR(5).
+.TP
+.BR DEBCHANGE_RELEASE_HEURISTIC
+Controls how \fBdebchange\fR determines if a package has been released,
+when deciding whether to create a new changelog entry or append to an
+existing changelog entry. Can be either \fIlog\fR or \fIchangelog\fR.
+.TP
+.BR DEBCHANGE_MULTIMAINT
+If set to \fIno\fR, \fBdebchange\fR will not introduce multiple-maintainer
+distinctions when a different maintainer appends an entry to an
+existing changelog. See the discussion above. Default is \fIyes\fR.
+.TP
+.BR DEBCHANGE_MULTIMAINT_MERGE
+If set to \fIyes\fR, when adding changes in multiple-maintainer mode
+\fBdebchange\fR will check whether previous changes by the current
+maintainer exist and add the new changes to the existing block
+rather than creating a new block. Default is \fIno\fR.
+.TP
+.BR DEBCHANGE_MAINTTRAILER
+If this is set to \fIno\fR, then it is the same as the
+\fB\-\-nomainttrailer\fR command line parameter being used.
+.TP
+.BR DEBCHANGE_TZ
+Use this timezone for changelog entries. Default is the user/system
+timezone as shown by `\fBdate \-R\fR` and affected by the environment variable \fBTZ\fR.
+.TP
+.BR DEBCHANGE_LOWER_VERSION_PATTERN
+If this is set, then it is the same as the
+\fB\-\-allow\-lower\-version\fR command line parameter being used.
+.TP
+.BR DEBCHANGE_AUTO_NMU
+If this is set to \fIno\fR then \fBdebchange\fR will not attempt to
+automatically determine whether the current changelog stanza represents
+an NMU. The default is \fIyes\fR. See the discussion of the
+\fB\-\-nmu\fR option above.
+.TP
+.BR DEBCHANGE_FORCE_SAVE_ON_RELEASE
+If this is set to \fIno\fR, then it is the same as the
+\fB\-\-no\-force\-save\-on\-release\fR command line parameter being used.
+.TP
+.B DEBCHANGE_VENDOR
+Use this vendor instead of the default (dpkg-vendor output). See
+\fB\-\-vendor\fR for details.
+.SH ENVIRONMENT
+.TP
+.BR DEBEMAIL ", " EMAIL ", " DEBFULLNAME ", " NAME
+See the above description of the use of these environment variables.
+.TP
+.B CHANGELOG
+This variable specifies the changelog to edit in place of
+\fIdebian/changelog\fR. No directory traversal or checking is
+performed when this variable is set. This variable is overridden by
+the \fB\-\-changelog\fR command-line setting.
+.TP
+.BR VISUAL ", " EDITOR
+These environment variables (in this order) determine the editor used
+by \fBsensible-editor\fR.
+.SH "SEE ALSO"
+.BR debc (1),
+.BR debclean (1),
+.BR dput (1),
+.BR dupload (1),
+.BR devscripts.conf (5)
+.SH AUTHOR
+The original author was Christoph Lameter <clameter@debian.org>.
+Many substantial changes and improvements were made by Julian Gilbey
+<jdg@debian.org>.
--- /dev/null
+#!/usr/bin/perl
+
+# debchange: update the debian changelog using your favorite visual editor
+# For options, see the usage message below.
+#
+# When creating a new changelog section, if either of the environment
+# variables DEBEMAIL or EMAIL is set, debchange will use this as the
+# uploader's email address (with the former taking precedence), and if
+# DEBFULLNAME or NAME is set, it will use this as the uploader's full name.
+# Otherwise, it will take the standard values for the current user or,
+# failing that, just copy the values from the previous changelog entry.
+#
+# Originally by Christoph Lameter <clameter@debian.org>
+# Modified extensively by Julian Gilbey <jdg@debian.org>
+#
+# Copyright 1999-2005 by Julian Gilbey
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use 5.008; # We're using PerlIO layers
+use strict;
+use warnings;
+use open ':utf8'; # changelogs are written with UTF-8 encoding
+use filetest 'access'; # use access rather than stat for -w
+# for checking whether user names are valid and making format() behave
+use Encode qw/decode_utf8 encode_utf8/;
+use Getopt::Long qw(:config gnu_getopt);
+use File::Copy;
+use File::Basename;
+use Cwd;
+use Dpkg::Vendor qw(get_current_vendor);
+use Dpkg::Changelog::Parse;
+BEGIN { push @INC, '/usr/share/devscripts'; }
+use Devscripts::Compression;
+use Devscripts::Debbugs;
+use POSIX qw(locale_h strftime);
+
+setlocale(LC_TIME, "C"); # so that strftime is locale independent
+
+# Predeclare functions
+sub fatal($);
+my $warnings = 0;
+
+# And global variables
+my $progname = basename($0);
+my $modified_conf_msg;
+my %env;
+my $CHGLINE; # used by the format O section at the end
+
+my $compression_re = compression_get_file_extension_regex();
+
+my $lpdc_broken;
+
+sub have_lpdc {
+ return ($lpdc_broken ? 0 : 1) if defined $lpdc_broken;
+ eval {
+ require Parse::DebControl;
+ };
+
+ if ($@) {
+ if ($@ =~ m%^Can\'t locate Parse/DebControl%) {
+ $lpdc_broken="the libparse-debcontrol-perl package is not installed";
+ } else {
+ $lpdc_broken="couldn't load Parse::DebControl: $@";
+ }
+ }
+ else { $lpdc_broken=''; }
+ return $lpdc_broken ? 0 : 1;
+}
+
+my $debian_distro_info;
+sub get_debian_distro_info {
+ return $debian_distro_info if defined $debian_distro_info;
+ eval {
+ require Debian::DistroInfo;
+ };
+ if ($@) {
+ printf "libdistro-info-perl is not installed, Debian release names "
+ . "are not known.\n";
+ $debian_distro_info = 0;
+ } else {
+ $debian_distro_info = DebianDistroInfo->new();
+ }
+ return $debian_distro_info;
+}
+
+my $ubuntu_distro_info;
+sub get_ubuntu_distro_info {
+ return $ubuntu_distro_info if defined $ubuntu_distro_info;
+ eval {
+ require Debian::DistroInfo;
+ };
+ if ($@) {
+ printf "libdistro-info-perl is not installed, Ubuntu release names "
+ . "are not known.\n";
+ $ubuntu_distro_info = 0;
+ } else {
+ $ubuntu_distro_info = UbuntuDistroInfo->new();
+ }
+ return $ubuntu_distro_info;
+}
+
+sub get_ubuntu_devel_distro {
+ my $ubu_info = get_ubuntu_distro_info();
+ if ($ubu_info == 0 or !$ubu_info->devel()) {
+ warn "$progname warning: Unable to determine the current Ubuntu "
+ . "development release. Using UNRELEASED instead.\n";
+ return 'UNRELEASED';
+ } else {
+ return $ubu_info->devel();
+ }
+}
+
+sub usage () {
+ print <<"EOF";
+Usage: $progname [options] [changelog entry]
+Options:
+ -a, --append
+ Append a new entry to the current changelog
+ -i, --increment
+ Increase the Debian release number, adding a new changelog entry
+ -v <version>, --newversion=<version>
+ Add a new changelog entry with version number specified
+ -e, --edit
+ Don't change version number or add a new changelog entry, just
+ opens an editor
+ -r, --release
+ Update the changelog timestamp. If the distribution is set to
+ "UNRELEASED", change it to unstable (or another distribution as
+ specified by --distribution).
+ --force-save-on-release
+ When --release is used and an editor opened to allow inspection
+ of the changelog, require the user to save the changelog their
+ editor opened. Otherwise, the original changelog will not be
+ modified. (default)
+ --no-force-save-on-release
+ Do not do so. Note that a dummy changelog entry may be supplied
+ in order to achieve the same effect - e.g. $progname --release ""
+ The entry will not be added to the changelog but its presence will
+ suppress the editor
+ --create
+ Create a new changelog (default) or NEWS file (with --news) and
+ open for editing
+ --empty
+ When creating a new changelog, don't add any changes to it
+ (i.e. only include the header and trailer lines)
+ --package <package>
+ Specify the package name when using --create (optional)
+ --auto-nmu
+ Attempt to intelligently determine whether a change to the
+ changelog represents an NMU (default)
+ --no-auto-nmu
+ Do not do so
+ -n, --nmu
+ Increment the Debian release number for a non-maintainer upload
+ --bin-nmu
+ Increment the Debian release number for a binary non-maintainer upload
+ -q, --qa
+ Increment the Debian release number for a Debian QA Team upload
+ -R, --rebuild
+ Increment the Debian release number for a no-change rebuild
+ -s, --security
+ Increment the Debian release number for a Debian Security Team upload
+ --team
+ Increment the Debian release number for a team upload
+ -U, --upstream
+ Increment the Debian release number without any appended derivative
+ distribution name
+ --bpo
+ Increment the Debian release number for a backports upload
+ to "wheezy-backports"
+ -l, --local <suffix>
+ Add a suffix to the Debian version number for a local build
+ -b, --force-bad-version
+ Force a version to be less than the current one (e.g., when
+ backporting)
+ --allow-lower-version <pattern>
+ Allow a version to be less than the current one (e.g., when
+ backporting) if it matches the specified pattern
+ --force-distribution
+ Force the provided distribution to be used, even if it doesn't match
+ the list of known distributions
+ --closes nnnnn[,nnnnn,...]
+ Add entries for closing these bug numbers,
+ getting bug titles from the BTS (bug-tracking system, bugs.debian.org)
+ --[no]query
+ [Don\'t] try contacting the BTS to get bug titles (default: do query)
+ -d, --fromdirname
+ Add a new changelog entry with version taken from the directory name
+ -p, --preserve
+ Preserve the directory name
+ --no-preserve
+ Do not preserve the directory name (default)
+ --vendor <vendor>
+ Override the distributor ID from dpkg-vendor.
+ -D, --distribution <dist>
+ Use the specified distribution in the changelog entry being edited
+ -u, --urgency <urgency>
+ Use the specified urgency in the changelog entry being edited
+ -c, --changelog <changelog>
+ Specify the name of the changelog to use in place of debian/changelog
+ No directory traversal or checking is performed in this case.
+ --news <newsfile>
+ Specify that the newsfile (default debian/NEWS) is to be edited
+ --[no]multimaint
+ When appending an entry to a changelog section (-a), [do not]
+ indicate if multiple maintainers are now involved (default: do so)
+ --[no]multimaint-merge
+ When appending an entry to a changelog section, [do not] merge the
+ entry into an existing changelog section for the current author.
+ (default: do not)
+ -m, --maintmaint
+ Don\'t change (maintain) the maintainer details in the changelog entry
+ -M, --controlmaint
+ Use maintainer name and email from the debian/control Maintainer field
+ -t, --mainttrailer
+ Don\'t change (maintain) the trailer line in the changelog entry; i.e.
+ maintain the maintainer and date/time details
+ --check-dirname-level N
+ How much to check directory names:
+ N=0 never
+ N=1 only if program changes directory (default)
+ N=2 always
+ --check-dirname-regex REGEX
+ What constitutes a matching directory name; REGEX is
+ a Perl regular expression; the string \`PACKAGE\' will
+ be replaced by the package name; see manpage for details
+ (default: 'PACKAGE(-.+)?')
+ --no-conf, --noconf
+ Don\'t read devscripts config files; must be the first option given
+ --release-heuristic log|changelog
+ Select heuristic used to determine if a package has been released.
+ (default: changelog)
+ --help, -h
+ Display this help message and exit
+ --version
+ Display version information
+ At most one of -a, -i, -e, -r, -v, -d, -n, --bin-nmu, -q, --qa, -R, -s,
+ --team, --bpo, -l (or their long equivalents) may be used.
+ With no options, one of -i or -a is chosen by looking at the release
+ specified in the changelog.
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOF
+}
+
+sub version () {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1999-2003 by Julian Gilbey, all rights reserved.
+Based on code by Christoph Lameter.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+}
+
+# Start by setting default values
+my $check_dirname_level = 1;
+my $check_dirname_regex = 'PACKAGE(-.+)?';
+my $opt_p = 0;
+my $opt_query = 1;
+my $opt_release_heuristic = 'changelog';
+my $opt_multimaint = 1;
+my $opt_multimaint_merge = 0;
+my $opt_tz = undef;
+my $opt_t = '';
+my $opt_allow_lower = '';
+my $opt_auto_nmu = 'yes';
+my $opt_force_save_on_release = 1;
+my $opt_vendor = undef;
+
+# Next, read configuration files and then command line
+# The next stuff is boilerplate
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'DEBCHANGE_PRESERVE' => 'no',
+ 'DEBCHANGE_QUERY_BTS' => 'yes',
+ 'DEVSCRIPTS_CHECK_DIRNAME_LEVEL' => 1,
+ 'DEVSCRIPTS_CHECK_DIRNAME_REGEX' => 'PACKAGE(-.+)?',
+ 'DEBCHANGE_RELEASE_HEURISTIC' => 'changelog',
+ 'DEBCHANGE_MULTIMAINT' => 'yes',
+ 'DEBCHANGE_TZ' => $ENV{TZ}, # undef if TZ unset
+ 'DEBCHANGE_MULTIMAINT_MERGE' => 'no',
+ 'DEBCHANGE_MAINTTRAILER' => '',
+ 'DEBCHANGE_LOWER_VERSION_PATTERN' => '',
+ 'DEBCHANGE_AUTO_NMU' => 'yes',
+ 'DEBCHANGE_FORCE_SAVE_ON_RELEASE' => 'yes',
+ 'DEBCHANGE_VENDOR' => '',
+ );
+ $config_vars{'DEBCHANGE_TZ'} ||= '';
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ # Check validity
+ $config_vars{'DEBCHANGE_PRESERVE'} =~ /^(yes|no)$/
+ or $config_vars{'DEBCHANGE_PRESERVE'}='no';
+ $config_vars{'DEBCHANGE_QUERY_BTS'} =~ /^(yes|no)$/
+ or $config_vars{'DEBCHANGE_QUERY_BTS'}='yes';
+ $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'} =~ /^[012]$/
+ or $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'}=1;
+ $config_vars{'DEBCHANGE_RELEASE_HEURISTIC'} =~ /^(log|changelog)$/
+ or $config_vars{'DEBCHANGE_RELEASE_HEURISTIC'}='changelog';
+ $config_vars{'DEBCHANGE_MULTIMAINT'} =~ /^(yes|no)$/
+ or $config_vars{'DEBCHANGE_MULTIMAINT'}='yes';
+ $config_vars{'DEBCHANGE_MULTIMAINT_MERGE'} =~ /^(yes|no)$/
+ or $config_vars{'DEBCHANGE_MULTIMAINT_MERGE'}='no';
+ $config_vars{'DEBCHANGE_AUTO_NMU'} =~ /^(yes|no)$/
+ or $config_vars{'DEBCHANGE_AUTO_NMU'}='yes';
+ $config_vars{'DEBCHANGE_FORCE_SAVE_ON_RELEASE'} =~ /^(yes|no)$/
+ or $config_vars{'DEBCHANGE_FORCE_SAVE_ON_RELEASE'}='yes';
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $opt_p = $config_vars{'DEBCHANGE_PRESERVE'} eq 'yes' ? 1 : 0;
+ $opt_query = $config_vars{'DEBCHANGE_QUERY_BTS'} eq 'no' ? 0 : 1;
+ $check_dirname_level = $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'};
+ $check_dirname_regex = $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_REGEX'};
+ $opt_release_heuristic = $config_vars{'DEBCHANGE_RELEASE_HEURISTIC'};
+ $opt_multimaint = $config_vars{'DEBCHANGE_MULTIMAINT'} eq 'no' ? 0 : 1;
+ $opt_tz = $config_vars{'DEBCHANGE_TZ'};
+ $opt_multimaint_merge = $config_vars{'DEBCHANGE_MULTIMAINT_MERGE'} eq 'no' ? 0 : 1;
+ $opt_t = ($config_vars{'DEBCHANGE_MAINTTRAILER'} eq 'no' ? 0 : 1)
+ if $config_vars{'DEBCHANGE_MAINTTRAILER'};
+ $opt_allow_lower = $config_vars{'DEBCHANGE_LOWER_VERSION_PATTERN'};
+ $opt_auto_nmu = $config_vars{'DEBCHANGE_AUTO_NMU'};
+ $opt_force_save_on_release =
+ $config_vars{'DEBCHANGE_FORCE_SAVE_ON_RELEASE'} eq 'yes' ? 1 : 0;
+ $opt_vendor = $config_vars{'DEBCHANGE_VENDOR'};
+}
+
+# We use bundling so that the short option behaviour is the same as
+# with older debchange versions.
+my ($opt_help, $opt_version);
+my ($opt_i, $opt_a, $opt_e, $opt_r, $opt_v, $opt_b, $opt_d, $opt_D, $opt_u, $opt_force_dist);
+my ($opt_n, $opt_bn, $opt_qa, $opt_R, $opt_s, $opt_team, $opt_U, $opt_bpo, $opt_l, $opt_c, $opt_m, $opt_M, $opt_create, $opt_package, @closes);
+my ($opt_news);
+my ($opt_level, $opt_regex, $opt_noconf, $opt_empty);
+
+Getopt::Long::Configure('bundling');
+GetOptions("help|h" => \$opt_help,
+ "version" => \$opt_version,
+ "i|increment" => \$opt_i,
+ "a|append" => \$opt_a,
+ "e|edit" => \$opt_e,
+ "r|release" => \$opt_r,
+ "create" => \$opt_create,
+ "package=s" => \$opt_package,
+ "v|newversion=s" => \$opt_v,
+ "b|force-bad-version" => \$opt_b,
+ "allow-lower-version=s" => \$opt_allow_lower,
+ "force-distribution" => \$opt_force_dist,
+ "d|fromdirname" => \$opt_d,
+ "p" => \$opt_p,
+ "preserve!" => \$opt_p,
+ "D|distribution=s" => \$opt_D,
+ "u|urgency=s" => \$opt_u,
+ "n|nmu" => \$opt_n,
+ "bin-nmu" => \$opt_bn,
+ "q|qa" => \$opt_qa,
+ "R|rebuild" => \$opt_R,
+ "s|security" => \$opt_s,
+ "team" => \$opt_team,
+ "U|upstream" => \$opt_U,
+ "bpo" => \$opt_bpo,
+ "l|local=s" => \$opt_l,
+ "query!" => \$opt_query,
+ "closes=s" => \@closes,
+ "c|changelog=s" => \$opt_c,
+ "news:s" => \$opt_news,
+ "multimaint!" => \$opt_multimaint,
+ "multi-maint!" => \$opt_multimaint,
+ 'multimaint-merge!' => \$opt_multimaint_merge,
+ 'multi-maint-merge!' => \$opt_multimaint_merge,
+ "m|maintmaint" => \$opt_m,
+ "M|controlmaint" => \$opt_M,
+ "t|mainttrailer!" => \$opt_t,
+ "check-dirname-level=s" => \$opt_level,
+ "check-dirname-regex=s" => \$opt_regex,
+ "noconf" => \$opt_noconf,
+ "no-conf" => \$opt_noconf,
+ "release-heuristic=s" => \$opt_release_heuristic,
+ "empty" => \$opt_empty,
+ "auto-nmu!" => \$opt_auto_nmu,
+ "force-save-on-release!" => \$opt_force_save_on_release,
+ "vendor=s" => \$opt_vendor,
+ )
+ or die "Usage: $progname [options] [changelog entry]\nRun $progname --help for more details\n";
+
+# So that we can distinguish, if required, between an explicit
+# passing of -a / -i and their values being automagically deduced
+# later on
+my $opt_a_passed = $opt_a || 0;
+my $opt_i_passed = $opt_i || 0;
+$opt_news = 'debian/NEWS' if defined $opt_news and $opt_news eq '';
+
+if ($opt_t eq '' && $opt_release_heuristic eq 'changelog') {
+ $opt_t = 1;
+}
+
+if ($opt_noconf) {
+ fatal "--no-conf is only acceptable as the first command-line option!";
+}
+if ($opt_help) { usage; exit 0; }
+if ($opt_version) { version; exit 0; }
+
+if (defined $opt_level) {
+ if ($opt_level =~ /^[012]$/) { $check_dirname_level = $opt_level; }
+ else {
+ fatal "Unrecognised --check-dirname-level value (allowed are 0,1,2)";
+ }
+}
+
+if (defined $opt_regex) { $check_dirname_regex = $opt_regex; }
+
+# Only allow at most one non-help option
+fatal "Only one of -a, -i, -e, -r, -v, -d, -n/--nmu, --bin-nmu, -q/--qa, -R/--rebuild, -s/--security, --team, --bpo, -l/--local is allowed;\ntry $progname --help for more help"
+ if ($opt_i?1:0) + ($opt_a?1:0) + ($opt_e?1:0) + ($opt_r?1:0) + ($opt_v?1:0) + ($opt_d?1:0) + ($opt_n?1:0) + ($opt_bn?1:0) + ($opt_qa?1:0) + ($opt_R?1:0) + ($opt_s?1:0) + ($opt_team?1:0) + ($opt_bpo?1:0) + ($opt_l?1:0) > 1;
+
+if ($opt_s) {
+ $opt_u = "high";
+}
+
+if (defined $opt_u) {
+ fatal "Urgency can only be one of: low, medium, high, critical, emergency"
+ unless $opt_u =~ /^(low|medium|high|critical|emergency)$/;
+}
+
+# See if we're Debian, Ubuntu or someone else, if we can
+my $vendor;
+if (defined $opt_vendor && $opt_vendor) {
+ $vendor = $opt_vendor;
+} else {
+ if (defined $opt_D) {
+ # Try to guess the vendor based on the given distribution name
+ my $distro = $opt_D;
+ $distro =~ s/-.*//;
+ my $deb_info = get_debian_distro_info();
+ my $ubu_info = get_ubuntu_distro_info();
+ if ($deb_info != 0 and $deb_info->valid($distro)) {
+ $vendor = 'Debian';
+ } elsif ($ubu_info != 0 and $ubu_info->valid($distro)) {
+ $vendor = 'Ubuntu';
+ }
+ }
+ if (not defined $vendor) {
+ # Get the vendor from dpkg-vendor (dpkg-vendor --query Vendor)
+ $vendor = get_current_vendor();
+ }
+}
+$vendor ||= 'Debian';
+if ($vendor eq 'Ubuntu' and ($opt_n or $opt_bn or $opt_qa or $opt_bpo)) {
+ $vendor = 'Debian';
+}
+
+# Check the distro name given.
+if (defined $opt_D) {
+ if ($vendor eq 'Debian') {
+ unless ($opt_D =~ /^(experimental|unstable|UNRELEASED|((old)?stable|testing)(-proposed-updates|-security)?|proposed-updates)$/) {
+ my $deb_info = get_debian_distro_info();
+ my ($oldstable_backports, $stable_backports) = ("", "");
+ if ($deb_info == 0) {
+ warn "$progname warning: Unable to determine Debian's backport distributions.\n";
+ } else {
+ $stable_backports = $deb_info->stable() . "-backports";
+ # Silence any potential warnings $deb_info emits when oldstable is no longer supported
+ local $SIG{__WARN__} = sub {};
+ my $oldstable = $deb_info->old();
+ $oldstable_backports = "$oldstable-backports" if $oldstable;
+ }
+ if ($deb_info == 0 || $opt_D !~ m/^(\Q$stable_backports\E|\Q$oldstable_backports\E)$/) {
+ $stable_backports = ", " . $stable_backports if $stable_backports;
+ $oldstable_backports = ", " . $oldstable_backports if $oldstable_backports;
+ warn "$progname warning: Recognised distributions are: unstable, testing, stable,\n"
+ . "oldstable, experimental, {testing-,stable-,oldstable-,}proposed-updates,\n"
+ . "{testing,stable,oldstable}-security$oldstable_backports$stable_backports and UNRELEASED.\n"
+ . "Using your request anyway.\n";
+ $warnings++ if not $opt_force_dist;
+ }
+ }
+ } elsif ($vendor eq 'Ubuntu') {
+ if ($opt_D eq 'UNRELEASED') {
+ ;
+ } else {
+ my $ubu_release = $opt_D;
+ $ubu_release =~ s/(-updates|-security|-proposed|-backports)$//;
+ my $ubu_info = get_ubuntu_distro_info();
+ if ($ubu_info == 0) {
+ warn "$progname warning: Unable to determine if $ubu_release "
+ . "is a valid Ubuntu release.\n";
+ } elsif (! $ubu_info->valid($ubu_release)) {
+ warn "$progname warning: Recognised distributions are:\n{"
+ . join(',', $ubu_info->supported())
+ . "}{,-updates,-security,-proposed,-backports} and UNRELEASED.\n"
+ . "Using your request anyway.\n";
+ $warnings++ if not $opt_force_dist;
+ }
+ }
+ } else {
+ # Unknown vendor, skip check
+ }
+}
+
+fatal "--closes should not be used with --news; put bug numbers in the changelog not the NEWS file"
+ if $opt_news && @closes;
+
+# hm, this can probably be used with more than just -i.
+fatal "--package can only be used with --create, --increment and --newversion"
+ if $opt_package && ! ($opt_create || $opt_i || $opt_v);
+
+my $changelog_path = $opt_c || $ENV{'CHANGELOG'} || 'debian/changelog';
+my $real_changelog_path = $changelog_path;
+if ($opt_news) { $changelog_path = $opt_news; }
+if ($changelog_path ne 'debian/changelog' and not $opt_news) {
+ $check_dirname_level = 0;
+}
+
+# extra --create checks
+fatal "--package cannot be used when creating a NEWS file"
+ if $opt_package && $opt_news;
+
+if ($opt_create) {
+ if ($opt_a || $opt_i || $opt_e || $opt_r || $opt_b || $opt_n || $opt_bn ||
+ $opt_qa || $opt_R || $opt_s || $opt_team || $opt_bpo || $opt_l ||
+ $opt_allow_lower) {
+ warn "$progname warning: ignoring -a/-i/-e/-r/-b/--allow-lower-version/-n/--bin-nmu/-q/--qa/-R/-s/--team/--bpo/-l options with --create\n";
+ $warnings++;
+ }
+ if ($opt_package && $opt_d) {
+ fatal "Can only use one of --package and -d";
+ }
+}
+
+
+@closes = split(/,/, join(',', @closes));
+map { s/^\#//; } @closes; # remove any leading # from bug numbers
+
+# We'll process the rest of the command line later.
+
+# Look for the changelog
+my $chdir = 0;
+if (! $opt_create) {
+ if ($changelog_path eq 'debian/changelog' or $opt_news) {
+ until (-f $changelog_path) {
+ $chdir = 1;
+ chdir '..' or fatal "Can't chdir ..: $!";
+ if (cwd() eq '/') {
+ fatal "Cannot find $changelog_path anywhere!\nAre you in the source code tree?\n(You could use --create if you wish to create this file.)";
+ }
+ }
+
+ # Can't write, so stop now.
+ if (! -w $changelog_path) {
+ fatal "$changelog_path is not writable!";
+ }
+ }
+ else {
+ unless (-f $changelog_path) {
+ fatal "Cannot find $changelog_path!\nAre you in the correct directory?\n(You could use --create if you wish to create this file.)";
+ }
+
+ # Can't write, so stop now.
+ if (! -w $changelog_path) {
+ fatal "$changelog_path is not writable!";
+ }
+ }
+}
+else { # $opt_create
+ unless (-d dirname $changelog_path) {
+ fatal "Cannot find " . (dirname $changelog_path) . " directory!\nAre you in the correct directory?";
+ }
+ if (-f $changelog_path) {
+ fatal "File $changelog_path already exists!";
+ }
+ unless (-w dirname $changelog_path) {
+ fatal "Cannot find " . (dirname $changelog_path) . " directory!\nAre you in the correct directory?";
+ }
+ if ($opt_news && ! -f 'debian/changelog') {
+ fatal "I can't create $opt_news without debian/changelog present";
+ }
+}
+
+#####
+
+# Find the current version number etc.
+my $changelog;
+my $PACKAGE = 'PACKAGE';
+my $VERSION = 'VERSION';
+my $MAINTAINER = 'MAINTAINER';
+my $EMAIL = 'EMAIL';
+my $DISTRIBUTION = 'UNRELEASED';
+my $bpo_dist = '';
+my %bpo_dists = ( 60, 'squeeze', 70, 'wheezy', 80, 'jessie' );
+my $latest_bpo_dist = '70';
+my $CHANGES = '';
+# Changelog urgency, possibly propogated to NEWS files
+my $CL_URGENCY = '';
+
+if (! $opt_create || ($opt_create && $opt_news)) {
+ my $file = $opt_create ? 'debian/changelog' : $changelog_path;
+ $changelog = Dpkg::Changelog::Parse::changelog_parse(file => $file);
+
+ # Now we've read the changelog, set some variables and then
+ # let's check the directory name is sensible
+ fatal "No package name in changelog!"
+ unless exists $changelog->{Source};
+ $PACKAGE = $changelog->{Source};
+ fatal "No version number in changelog!"
+ unless exists $changelog->{Version};
+ $VERSION=$changelog->{Version};
+ fatal "No maintainer in changelog!"
+ unless exists $changelog->{Maintainer};
+ $changelog->{Maintainer} = decode_utf8($changelog->{Maintainer});
+ ($MAINTAINER,$EMAIL) = ($changelog->{Maintainer} =~ /^([^<]*) <(.*)>/);
+ $MAINTAINER ||= '';
+ fatal "No distribution in changelog!"
+ unless exists $changelog->{Distribution};
+ if ($vendor eq 'Ubuntu') {
+ # In Ubuntu the development release regularly changes, don't just copy
+ # the previous name.
+ $DISTRIBUTION=get_ubuntu_devel_distro();
+ } else {
+ $DISTRIBUTION=$changelog->{Distribution};
+ }
+ fatal "No changes in changelog!"
+ unless exists $changelog->{Changes};
+
+ # Find the current package version
+ if ($opt_news) {
+ my $found_version = 0;
+ my $found_urgency = 0;
+ my $clog = Dpkg::Changelog::Parse::changelog_parse(file => $real_changelog_path);
+ $VERSION = $clog->{Version};
+ $VERSION =~ s/~$//;
+
+ $CL_URGENCY = $clog->{Urgency};
+ }
+
+ # Is the directory name acceptable?
+ if ($check_dirname_level == 2 or
+ ($check_dirname_level == 1 and $chdir)) {
+ my $re = $check_dirname_regex;
+ $re =~ s/PACKAGE/\\Q$PACKAGE\\E/g;
+ my $gooddir;
+ if ($re =~ m%/%) { $gooddir = eval "cwd() =~ /^$re\$/;"; }
+ else { $gooddir = eval "basename(cwd()) =~ /^$re\$/;"; }
+
+ if (! $gooddir) {
+ my $pwd = cwd();
+ fatal <<"EOF";
+Found debian/changelog for package $PACKAGE in the directory
+ $pwd
+but this directory name does not match the package name according to the
+regex $check_dirname_regex.
+
+To run $progname on this package, see the --check-dirname-level and
+--check-dirname-regex options; run $progname --help for more info.
+EOF
+ }
+ }
+} else {
+ # we're creating and we don't know much about our package
+ if ($opt_d) {
+ my $pwd = basename(cwd());
+ # The directory name should be <package>-<version>
+ my $version_chars = '0-9a-zA-Z+\.\-';
+ if ($pwd =~ m/^([a-z0-9][a-z0-9+\-\.]+)-([0-9][$version_chars]*)$/) {
+ $PACKAGE=$1;
+ $VERSION="$2-1"; # introduce a Debian version of -1
+ } elsif ($pwd =~ m/^[a-z0-9][a-z0-9+\-\.]+$/) {
+ $PACKAGE=$pwd;
+ } else {
+ # don't know anything
+ }
+ }
+ if ($opt_v) {
+ $VERSION=$opt_v;
+ }
+ if ($opt_D) {
+ $DISTRIBUTION=$opt_D;
+ }
+}
+
+if ($opt_package) {
+ if ($opt_package =~ m/^[a-z0-9][a-z0-9+\-\.]+$/) {
+ $PACKAGE=$opt_package;
+ } else {
+ warn "$progname warning: illegal package name used with --package: $opt_package\n";
+ $warnings++;
+ }
+}
+
+# Clean up after old versions of debchange
+if (-f "debian/RELEASED") {
+ unlink("debian/RELEASED");
+}
+
+if ( -e "$changelog_path.dch" ) {
+ fatal "The backup file $changelog_path.dch already exists --\n" .
+ "please move it before trying again";
+}
+
+
+# Is this a native Debian package, i.e., does it have a - in the
+# version number?
+(my $EPOCH) = ($VERSION =~ /^(\d+):/);
+(my $SVERSION=$VERSION) =~ s/^\d+://;
+(my $UVERSION=$SVERSION) =~ s/-[^-]*$//;
+
+# Check, sanitise and decode these environment variables
+check_env_utf8('DEBFULLNAME');
+check_env_utf8('NAME');
+check_env_utf8('DEBEMAIL');
+check_env_utf8('EMAIL');
+check_env_utf8('UBUMAIL');
+
+if (exists $env{'DEBEMAIL'} and $env{'DEBEMAIL'} =~ /^(.*)\s+<(.*)>$/) {
+ $env{'DEBFULLNAME'} = $1 unless exists $env{'DEBFULLNAME'};
+ $env{'DEBEMAIL'} = $2;
+}
+if (! exists $env{'DEBEMAIL'} or ! exists $env{'DEBFULLNAME'}) {
+ if (exists $env{'EMAIL'} and $env{'EMAIL'} =~ /^(.*)\s+<(.*)>$/) {
+ $env{'DEBFULLNAME'} = $1 unless exists $env{'DEBFULLNAME'};
+ $env{'EMAIL'} = $2;
+ }
+}
+if (exists $env{'UBUMAIL'} and $env{'UBUMAIL'} =~ /^(.*)\s+<(.*)>$/) {
+ $env{'DEBFULLNAME'} = $1 unless exists $env{'DEBFULLNAME'};
+ $env{'UBUMAIL'} = $2;
+}
+
+# Now use the gleaned values to detemine our MAINTAINER and EMAIL values
+if (! $opt_m and ! $opt_M) {
+ if (exists $env{'DEBFULLNAME'}) {
+ $MAINTAINER = $env{'DEBFULLNAME'};
+ } elsif (exists $env{'NAME'}) {
+ $MAINTAINER = $env{'NAME'};
+ } else {
+ my @pw = getpwuid $<;
+ if ($pw[6]) {
+ if (my $pw = decode_utf8($pw[6])) {
+ $pw =~ s/,.*//;
+ $MAINTAINER = $pw;
+ } else {
+ warn "$progname warning: passwd full name field for uid $<\nis not UTF-8 encoded; ignoring\n";
+ $warnings++;
+ }
+ }
+ }
+ # Otherwise, $MAINTAINER retains its default value of the last
+ # changelog entry
+
+ # Email is easier
+ if ($vendor eq 'Ubuntu' and exists $env{'UBUMAIL'}) { $EMAIL = $env{'UBUMAIL'}; }
+ elsif (exists $env{'DEBEMAIL'}) { $EMAIL = $env{'DEBEMAIL'}; }
+ elsif (exists $env{'EMAIL'}) { $EMAIL = $env{'EMAIL'}; }
+ else {
+ my $addr;
+ if (open MAILNAME, '/etc/mailname') {
+ chomp($addr = <MAILNAME>);
+ close MAILNAME;
+ }
+ if (!$addr) {
+ chomp($addr = `hostname --fqdn 2>/dev/null`);
+ $addr = undef if $?;
+ }
+ if ($addr) {
+ my $user = getpwuid $<;
+ if (!$user) {
+ $addr = undef;
+ }
+ else {
+ $addr = "$user\@$addr";
+ }
+ }
+ $EMAIL = $addr if $addr;
+ }
+ # Otherwise, $EMAIL retains its default value of the last changelog entry
+} # if (! $opt_m and ! $opt_M)
+
+if ($opt_M) {
+ if (-f 'debian/control') {
+ if (have_lpdc()) {
+ my $parser = Parse::DebControl->new;
+ my $deb822 = $parser->parse_file('debian/control', {stripComments => 'true'});
+ my $maintainer = decode_utf8($deb822->[0]->{'Maintainer'});
+ if ($maintainer =~ /^(.*)\s+<(.*)>$/) {
+ $MAINTAINER = $1;
+ $EMAIL = $2;
+ } else {
+ fatal "$progname: invalid debian/control Maintainer field value\n";
+ }
+ } else {
+ fatal "$progname: unable to get maintainer from debian/control: $lpdc_broken\n";
+ }
+ } else {
+ fatal "Missing file debian/control";
+ }
+}
+
+#####
+
+if ($opt_auto_nmu eq 'yes' and ! $opt_v and ! $opt_l and ! $opt_s and
+ ! $opt_team and ! $opt_qa and ! $opt_R and ! $opt_bpo and ! $opt_bn and
+ ! $opt_n and ! $opt_c and
+ ! (exists $ENV{'CHANGELOG'} and length $ENV{'CHANGELOG'}) and ! $opt_M and
+ ! $opt_create and ! $opt_a_passed and ! $opt_r and ! $opt_e and
+ $vendor ne 'Ubuntu' and $vendor ne 'Tanglu' and
+ ! ($opt_release_heuristic eq 'changelog' and
+ $changelog->{Distribution} eq 'UNRELEASED' and ! $opt_i_passed)) {
+
+ if (-f 'debian/control') {
+ if (have_lpdc()) {
+ my $parser = new Parse::DebControl;
+ my $deb822 = $parser->parse_file('debian/control', {stripComments => 'true'});
+ my $uploader = decode_utf8($deb822->[0]->{'Uploaders'}) || '';
+ my $maintainer = decode_utf8($deb822->[0]->{'Maintainer'});
+ my @uploaders = split(/,\s*/, $uploader);
+
+ my $packager = "$MAINTAINER <$EMAIL>";
+
+ if ($maintainer !~ m/<packages\@qa\.debian\.org>/ and
+ ! grep { $_ eq $packager } ($maintainer, @uploaders) and
+ $packager ne $changelog->{Maintainer} and ! $opt_team) {
+ $opt_n=1;
+ $opt_a=0;
+ }
+ } else {
+ warn "$progname: skipping automatic NMU detection: $lpdc_broken\n";
+ }
+ } else {
+ fatal "Missing file debian/control";
+ }
+}
+#####
+
+# Do we need to generate "closes" entries?
+
+my @closes_text = ();
+my $initial_release = 0;
+if (@closes and $opt_query) { # and we have to query the BTS
+ if (!Devscripts::Debbugs::have_soap) {
+ warn "$progname warning: libsoap-lite-perl not installed, so cannot query the bug-tracking system\n";
+ $opt_query=0;
+ $warnings++;
+ # This will now go and execute the "if (@closes and ! $opt_query)" code
+ }
+ else
+ {
+ my $bugs = Devscripts::Debbugs::select( "src:" . $PACKAGE );
+ my $statuses = Devscripts::Debbugs::status(
+ map {[bug => $_, indicatesource => 1]} @{$bugs} );
+ if ($statuses eq "") {
+ warn "$progname: No bugs found for package $PACKAGE\n";
+ }
+ foreach my $close (@closes) {
+ if ($statuses and exists $statuses->{$close}) {
+ my $title = $statuses->{$close}->{subject};
+ my $pkg = $statuses->{$close}->{package};
+ $title =~ s/^($pkg|$PACKAGE): //;
+ push @closes_text, "Fix \"$title\" <explain what you changed and why> (Closes: \#$close)\n";
+ }
+ else { # not our package, or wnpp
+ my $bug = Devscripts::Debbugs::status(
+ [bug => $close, indicatesource => 1] );
+ if ($bug eq "") {
+ warn "$progname warning: unknown bug \#$close does not belong to $PACKAGE,\n disabling closing changelog entry\n";
+ $warnings++;
+ push @closes_text, "Closes?? \#$close: UNKNOWN BUG IN WRONG PACKAGE!!\n";
+ } else {
+ my $bugtitle = $bug->{$close}->{subject};
+ $bugtitle ||= '';
+ my $bugpkg = $bug->{$close}->{package};
+ $bugpkg ||= '?';
+ my $bugsrcpkg = $bug->{$close}->{source};
+ $bugsrcpkg ||= '?';
+ if ($bugsrcpkg eq $PACKAGE) {
+ warn "$progname warning: bug \#$close appears to be already archived,\n disabling closing changelog entry\n";
+ $warnings++;
+ push @closes_text, "Closes?? \#$close: ALREADY ARCHIVED? $bugtitle!!\n";
+ }
+ elsif ($bugpkg eq 'wnpp') {
+ if ($bugtitle =~ /(^(O|RFA|ITA): )/) {
+ push @closes_text, "New maintainer. (Closes: \#$close: $bugtitle)\n";
+ }
+ elsif ($bugtitle =~ /(^(RFP|ITP): )/) {
+ push @closes_text, "Initial release. (Closes: \#$close: $bugtitle)\n";
+ $initial_release = 1;
+ }
+ }
+ else {
+ warn "$progname warning: bug \#$close belongs to package $bugpkg (src $bugsrcpkg),\n not to $PACKAGE: disabling closing changelog entry\n";
+ $warnings++;
+ push @closes_text, "Closes?? \#$close: WRONG PACKAGE!! $bugtitle\n";
+ }
+ }
+ }
+ }
+ }
+}
+
+if (@closes and ! $opt_query) { # and we don't have to query the BTS
+ foreach my $close (@closes) {
+ unless ($close =~ /^\d{3,}$/) {
+ warn "$progname warning: Bug number $close is invalid; ignoring\n";
+ $warnings++;
+ next;
+ }
+ push @closes_text, "Closes: \#$close: \n";
+ }
+}
+
+# Get a possible changelog entry from the command line
+my $ARGS=join(' ', @ARGV);
+my $TEXT=decode_utf8($ARGS);
+my $EMPTY_TEXT=0;
+
+if (@ARGV and ! $TEXT) {
+ if ($ARGS) {
+ warn "$progname warning: command-line changelog entry not UTF-8 encoded; ignoring\n";
+ $TEXT='';
+ } else {
+ $EMPTY_TEXT = 1;
+ }
+}
+
+# Get the date
+my $DATE;
+{
+ local $ENV{TZ} = $opt_tz if $opt_tz;
+ $DATE = strftime "%a, %d %b %Y %T %z", localtime();
+}
+
+if ($opt_news && !$opt_i && !$opt_a) {
+ if ($VERSION eq $changelog->{Version} && !$opt_v && !$opt_l) {
+ $opt_a = 1;
+ } else {
+ $opt_i = 1;
+ }
+}
+
+# Are we going to have to figure things out for ourselves?
+if (! $opt_i && ! $opt_v && ! $opt_d && ! $opt_a && ! $opt_e && ! $opt_r &&
+ ! $opt_n && ! $opt_bn && ! $opt_qa && ! $opt_R && ! $opt_s && ! $opt_team &&
+ ! $opt_bpo && ! $opt_l && ! $opt_create) {
+ # Yes, we are
+ if ($opt_release_heuristic eq 'log') {
+ my @UPFILES = glob("../$PACKAGE\_$SVERSION\_*.upload");
+ if (@UPFILES > 1) {
+ fatal "Found more than one appropriate .upload file!\n" .
+ "Please use an explicit -a, -i or -v option instead.";
+ }
+ elsif (@UPFILES == 0) { $opt_a = 1 }
+ else {
+ open UPFILE, "<${UPFILES[0]}"
+ or fatal "Couldn't open .upload file for reading: $!\n" .
+ "Please use an explicit -a, -i or -v option instead.";
+ while (<UPFILE>) {
+ if (m%^(s|Successfully uploaded) (/.*/)?\Q$PACKAGE\E\_\Q$SVERSION\E\_[\w\-\+]+\.changes %) {
+ $opt_i = 1;
+ last;
+ }
+ }
+ close UPFILE
+ or fatal "Problems experienced reading .upload file: $!\n" .
+ "Please use an explicit -a, -i or -v option instead.";
+ if (! $opt_i) {
+ warn "$progname warning: A successful upload of the current version was not logged\n" .
+ "in the upload log file; adding log entry to current version.\n";
+ $opt_a = 1;
+ }
+ }
+ }
+ elsif ($opt_release_heuristic eq 'changelog') {
+ if ($changelog->{Distribution} eq 'UNRELEASED') {
+ $opt_a = 1;
+ }
+ elsif ($EMPTY_TEXT==1) {
+ $opt_a = 1;
+ } else {
+ $opt_i = 1;
+ }
+ }
+ else {
+ fatal "Bad release heuristic value";
+ }
+}
+
+# Open in anticipation....
+unless ($opt_create) {
+ open S, $changelog_path or fatal "Cannot open existing $changelog_path: $!";
+
+ # Read the first stanza from the changelog file
+ # We do this directly rather than reusing $changelog->{Changes}
+ # so that we have the verbatim changes rather than a (albeit very
+ # slightly) reformatted version. See Debian bug #452806
+
+ while(<S>) {
+ last if /^ --/;
+
+ $CHANGES .= $_;
+ }
+
+ chomp $CHANGES;
+
+ # Reset file pointer
+ seek(S, 0, 0);
+}
+open O, ">$changelog_path.dch"
+ or fatal "Cannot write to temporary file: $!";
+# Turn off form feeds; taken from perlform
+select((select(O), $^L = "")[0]);
+
+# Note that we now have to remove it
+my $tmpchk=1;
+my ($NEW_VERSION, $NEW_SVERSION, $NEW_UVERSION);
+my $line;
+my $optionsok=0;
+my $merge=0;
+
+if (($opt_i || $opt_n || $opt_bn || $opt_qa || $opt_R || $opt_s || $opt_team ||
+ $opt_bpo || $opt_l || $opt_v || $opt_d ||
+ ($opt_news && $VERSION ne $changelog->{Version})) && ! $opt_create) {
+
+ $optionsok=1;
+
+ # Check that a given explicit version number is sensible.
+ if ($opt_v || $opt_d) {
+ if($opt_v) {
+ $NEW_VERSION=$opt_v;
+ } else {
+ my $pwd = basename(cwd());
+ # The directory name should be <package>-<version>
+ my $version_chars = '0-9a-zA-Z+\.~';
+ $version_chars .= ':' if defined $EPOCH;
+ $version_chars .= '\-' if $UVERSION ne $SVERSION;
+ if ($pwd =~ m/^\Q$PACKAGE\E-([0-9][$version_chars]*)$/) {
+ $NEW_VERSION=$1;
+ if ($NEW_VERSION eq $UVERSION) {
+ # So it's a Debian-native package
+ if ($SVERSION eq $UVERSION) {
+ fatal "New version taken from directory ($NEW_VERSION) is equal to\n" .
+ "the current version number ($UVERSION)!";
+ }
+ # So we just increment the Debian revision
+ warn "$progname warning: Incrementing Debian revision without altering\nupstream version number.\n";
+ $VERSION =~ /^(.*?)([a-yA-Y][a-zA-Z]*|\d*)$/;
+ my $end = $2;
+ if ($end eq '') {
+ fatal "Cannot determine new Debian revision; please use -v option!";
+ }
+ $end++;
+ $NEW_VERSION="$1$end";
+ } else {
+ $NEW_VERSION = "$EPOCH:$NEW_VERSION" if defined $EPOCH;
+ $NEW_VERSION .= "-1";
+ }
+ } else {
+ fatal "The directory name must be <package>-<version> for -d to work!\n" .
+ "No underscores allowed!";
+ }
+ # Don't try renaming the directory in this case!
+ $opt_p=1;
+ }
+
+ if (system("dpkg --compare-versions $VERSION le $NEW_VERSION" .
+ " 2>/dev/null 1>&2")) {
+ if ($opt_b or ($opt_allow_lower and $NEW_VERSION =~ /$opt_allow_lower/)) {
+ warn "$progname warning: new version ($NEW_VERSION) is less than\n" .
+ "the current version number ($VERSION).\n";
+ } else {
+ fatal "New version specified ($NEW_VERSION) is less than\n" .
+ "the current version number ($VERSION)! Use -b to force.";
+ }
+ }
+
+ ($NEW_SVERSION=$NEW_VERSION) =~ s/^\d+://;
+ ($NEW_UVERSION=$NEW_SVERSION) =~ s/-[^-]*$//;
+ }
+
+ # We use the following criteria for the version and release number:
+ # the last component of the version number is used as the
+ # release number. If this is not a Debian native package, then the
+ # upstream version number is everything up to the final '-', not
+ # including epochs.
+
+ if (! $NEW_VERSION) {
+ if ($VERSION =~ /(.*?)([a-yA-Y][a-zA-Z]*|\d+)([+~])?$/i) {
+ my $extra=$3 || '';
+ my $useextra = 0;
+ my $end=$2;
+ my $start=$1;
+ # If it's not already an NMU make it so
+ # otherwise we can be safe if we behave like dch -i
+
+ if (($opt_n or $opt_s) and $vendor ne 'Ubuntu' and $vendor ne 'Tanglu' and (
+ ($VERSION eq $UVERSION and not $start =~ /\+nmu/)
+ or ($VERSION ne $UVERSION and not $start =~ /\.$/))) {
+
+ if ($VERSION eq $UVERSION) {
+ # First NMU of a Debian native package
+ $end .= "+nmu1";
+ } else {
+ $end += 0.1;
+ }
+ } elsif ($opt_bn and not $start =~ /\+b/) {
+ $end .= "+b1";
+ } elsif ($opt_qa and $start =~/(.*?)-(\d+)\.$/) {
+ # Drop NMU revision when doing a QA upload
+ my $upstream_version = $1;
+ my $debian_revision = $2;
+ $debian_revision++;
+ $start = "$upstream_version-$debian_revision";
+ $end = "";
+ } elsif ($opt_R and $vendor eq 'Ubuntu' and
+ not $start =~ /build/ and not $start =~ /ubuntu/) {
+ $end .= "build1";
+ } elsif ($opt_R and $vendor eq 'Tanglu' and
+ not "$start$end" =~ /(b\d+)$/ and not $start =~ /tanglu/) {
+ $end .= "b1";
+ } elsif ($opt_bpo and not $start =~ /~bpo[0-9]+\+$/) {
+ # If it's not already a backport make it so
+ # otherwise we can be safe if we behave like dch -i
+ $end .= "~bpo$latest_bpo_dist+1";
+ } elsif ($opt_l and not $start =~ /\Q$opt_l\E/) {
+ # If it's not already a local package make it so
+ # otherwise we can be safe if we behave like dch -i
+ $end .= $opt_l."1";
+ } elsif (!$opt_news) {
+ # Don't bump the version of a NEWS file in this case as we're
+ # using the version from the changelog
+ if (($opt_i or $opt_s) and $vendor eq 'Ubuntu' and
+ $start !~ /(ubuntu|~ppa)(\d+\.)*$/ and not $opt_U) {
+
+ if ($start =~ /build/) {
+ # Drop buildX suffix in favor of ubuntu1
+ $start =~ s/build//;
+ $end = "";
+ }
+ $end .= "ubuntu1";
+ } elsif (($opt_i or $opt_s) and $vendor eq 'Tanglu' and
+ $start !~ /(tanglu)(\d+\.)*$/ and not $opt_U) {
+
+ if ("$start$end" =~ /(b\d+)$/) {
+ # Drop bX suffix in favor of tanglu1
+ $start =~ s/b$//;
+ $end = "";
+ }
+ $end .= "tanglu1";
+ } else {
+ $end++;
+ }
+
+ # Attempt to set the distribution for a backport correctly
+ # based on the version of the previous backport
+ if ($opt_bpo) {
+ my $previous_dist = $start;
+ $previous_dist =~ s/^.*~bpo([0-9]+)\+$/$1/;
+ if (defined $previous_dist and defined
+ $bpo_dists{$previous_dist}) {
+ $bpo_dist = $bpo_dists{$previous_dist} . '-backports';
+ } else {
+ # Fallback to using the previous distribution
+ $bpo_dist = $changelog->{Distribution};
+ }
+ }
+
+ if(! ($opt_s or $opt_n or $vendor eq 'Ubuntu' or $vendor eq 'Tanglu')) {
+ if ($start =~/(.*?)-(\d+)\.$/) {
+ # Drop NMU revision
+ my $upstream_version = $1;
+ my $debian_revision = $2;
+ $debian_revision++;
+ $start = "$upstream_version-$debian_revision";
+ $end = "";
+ }
+ }
+
+ if (! ($opt_qa or $opt_bpo or $opt_l)) {
+ $useextra = 1;
+ }
+ }
+ $NEW_VERSION = "$start$end";
+ if ($useextra) {
+ $NEW_VERSION .= $extra;
+ }
+ ($NEW_SVERSION=$NEW_VERSION) =~ s/^\d+://;
+ ($NEW_UVERSION=$NEW_SVERSION) =~ s/-[^-]*$//;
+ } else {
+ fatal "Error parsing version number: $VERSION";
+ }
+ }
+
+ if ($NEW_VERSION eq $NEW_UVERSION and $VERSION ne $UVERSION) {
+ warn "$progname warning: New package version is Debian native whilst previous version was not\n";
+ } elsif ($NEW_VERSION ne $NEW_UVERSION and $VERSION eq $UVERSION) {
+ warn "$progname warning: Previous package version was Debian native whilst new version is not\n"
+ unless $opt_n or $opt_s;
+ }
+
+ if ($opt_bpo) {
+ $bpo_dist ||= $bpo_dists{$latest_bpo_dist} . '-backports';
+ }
+ my $distribution = $opt_D || $bpo_dist || (($opt_release_heuristic eq 'changelog') ? "UNRELEASED" : $DISTRIBUTION);
+
+ my $urgency = $opt_u;
+ if ($opt_news) {
+ $urgency ||= $CL_URGENCY;
+ }
+ $urgency ||= 'medium';
+
+ if (($opt_v or $opt_i or $opt_l or $opt_d) and
+ $opt_release_heuristic eq 'changelog' and
+ $changelog->{Distribution} eq 'UNRELEASED' and
+ $distribution eq 'UNRELEASED') {
+
+ $merge = 1;
+ } else {
+ print O "$PACKAGE ($NEW_VERSION) $distribution; urgency=$urgency";
+ print O ", binary-only=yes" if ($opt_bn);
+ print O "\n\n";
+ if ($opt_n && ! $opt_news) {
+ print O " * Non-maintainer upload.\n";
+ $line = 1;
+ } elsif ($opt_bn && ! $opt_news) {
+ my $arch = qx/dpkg-architecture -qDEB_BUILD_ARCH/; chomp ($arch);
+ print O " * Binary-only non-maintainer upload for $arch; no source changes.\n";
+ $line = 1;
+ } elsif ($opt_qa && ! $opt_news) {
+ print O " * QA upload.\n";
+ $line = 1;
+ } elsif ($opt_s && ! $opt_news) {
+ if ($vendor eq 'Ubuntu' or $vendor eq 'Tanglu') {
+ print O " * SECURITY UPDATE:\n";
+ print O " * References\n";
+ } else {
+ print O " * Non-maintainer upload by the Security Team.\n";
+ }
+ $line = 1;
+ } elsif ($opt_team && ! $opt_news) {
+ print O " * Team upload.\n";
+ $line = 1;
+ } elsif ($opt_bpo && ! $opt_news) {
+ print O " * Rebuild for $bpo_dist.\n";
+ $line = 1;
+ }
+ if (@closes_text or $TEXT) {
+ foreach (@closes_text) { format_line($_, 1); }
+ if (length $TEXT) { format_line($TEXT, 1); }
+ } elsif ($opt_news) {
+ print O " \n";
+ } else {
+ print O " * \n";
+ }
+ $line += 3;
+ print O "\n -- $MAINTAINER <$EMAIL> $DATE\n\n";
+
+ # Copy the old changelog file to the new one
+ local $/ = undef;
+ print O <S>;
+ }
+}
+if (($opt_r || $opt_a || $merge) && ! $opt_create) {
+ # This means we just have to generate a new * entry in changelog
+ # and if a multi-developer changelog is detected, add developer names.
+
+ $NEW_VERSION=$VERSION unless $NEW_VERSION;
+ $NEW_SVERSION=$SVERSION unless $NEW_SVERSION;
+ $NEW_UVERSION=$UVERSION unless $NEW_UVERSION;
+
+ # Read and discard maintainer line, see who made the
+ # last entry, and determine whether there are existing
+ # multi-developer changes by the current maintainer.
+ $line=-1;
+ my ($lastmaint, $nextmaint, $maintline, $count, $lastheader, $lastdist, $dist_indicator);
+ my $savedline = $line;;
+ while (<S>) {
+ $line++;
+ # Start of existing changes by the current maintainer
+ if (/^ \[ $MAINTAINER \]$/ && $opt_multimaint_merge) {
+ # If there's more than one such block,
+ # we only care about the first
+ $maintline ||= $line;
+ }
+ elsif (/^ \[ (.*) \]$/ && defined $maintline) {
+ # Start of existing changes following those by the current
+ # maintainer
+ $nextmaint ||= $1;
+ }
+ elsif (m/^\w[-+0-9a-z.]* \(([^\(\) \t]+)\)((?:\s+[-+0-9a-z.]+)+)\;\s+urgency=(\w+)/i) {
+ if (defined $lastmaint) {
+ $lastheader = $_;
+ $lastdist = $2;
+ $lastdist =~ s/^\s+//;
+ undef $lastdist if $lastdist eq "UNRELEASED";
+ # Revert to our previously saved position
+ $line = $savedline;
+ last;
+ }
+ else {
+ my $tmpver = $1;
+ $tmpver =~ s/^\s+//;
+ if ($tmpver =~ m/~bpo(\d+)\+/ && exists $bpo_dists{$1}) {
+ $dist_indicator = "$bpo_dists{$1}-backports";
+ }
+ }
+ }
+ elsif (/ \* (?:Upload to|Rebuild for) (\S+).*$/) {
+ ($dist_indicator = $1) =~ s/[!:.,;]$//;
+ chomp $dist_indicator;
+ }
+ elsif (/^ --\s+([^<]+)\s+/ || /^ --\s+<(.+?)>/) {
+ $lastmaint=$1;
+ # Remember where we are so we can skip back afterwards
+ $savedline = $line;
+ }
+
+ if (defined $maintline && !defined $nextmaint) {
+ $maintline++;
+ }
+ }
+
+ # Munging of changelog for multimaintainer mode.
+ my $multimaint=0;
+ if (! $opt_news) {
+ my $lastmultimaint;
+
+ # Parse the changelog for multi-maintainer maintainer lines of
+ # the form [ Full Name ] and record the last of these.
+ while ($CHANGES=~/.*\n^\s+\[\s+([^\]]+)\s+]\s*$/mg) {
+ $lastmultimaint=$1;
+ }
+
+ if ((! defined $lastmultimaint && defined $lastmaint &&
+ $lastmaint ne $MAINTAINER && $opt_multimaint)
+ ||
+ (defined $lastmultimaint && $lastmultimaint ne $MAINTAINER)
+ ||
+ (defined $nextmaint)
+ ) {
+ $multimaint=1;
+
+ if (! $lastmultimaint) {
+ # Add a multi-maintainer header to the top of the existing
+ # changelog.
+ my $newchanges='';
+ $CHANGES=~s/^( .+)$/ [ $lastmaint ]\n$1/m;
+ }
+ }
+ }
+
+ # based on /usr/lib/dpkg/parsechangelog/debian
+ if ($CHANGES =~ m/^\w[-+0-9a-z.]* \([^\(\) \t]+\)((?:\s+[-+0-9a-z.]+)+)\;\s+urgency=(\w+)/i) {
+ my $distribution = $1;
+ my $urgency = $2;
+ if ($opt_news) {
+ $urgency = $CL_URGENCY;
+ }
+ $distribution =~ s/^\s+//;
+ if ($opt_r) {
+ # Change the distribution from UNRELEASED for release
+ if ($distribution eq "UNRELEASED") {
+ if ($dist_indicator and not $opt_D) {
+ $distribution = $dist_indicator;
+ } elsif ($vendor eq 'Ubuntu') {
+ if ($opt_D) {
+ $distribution = $opt_D;
+ } else {
+ $distribution = get_ubuntu_devel_distro();
+ }
+ } else {
+ $distribution = $opt_D || $lastdist || "unstable";
+ }
+ } elsif ($opt_D) {
+ warn "$progname warning: ignoring distribution passed to --release as changelog has already been released\n";
+ }
+ # Set the start-line to 1, as we don't know what they want to edit
+ $line=1;
+ } else {
+ $distribution = $opt_D if $opt_D;
+ }
+ $urgency = $opt_u if $opt_u;
+ $CHANGES =~ s/^(\w[-+0-9a-z.]* \([^\(\) \t]+\))(?:\s+[-+0-9a-z.]+)+\;\s+urgency=\w+/$PACKAGE ($NEW_VERSION) $distribution; urgency=$urgency/i;
+ } else {
+ warn "$progname: couldn't parse first changelog line, not touching it\n";
+ $warnings++;
+ }
+
+ if (defined $maintline && defined $nextmaint) {
+ # Output the lines up to the end of the current maintainer block
+ $count=1;
+ $line=$maintline;
+ foreach (split /\n/, $CHANGES) {
+ print O $_ . "\n";
+ $count++;
+ last if $count==$maintline;
+ }
+ } else {
+ # The first lines are as we have already found
+ print O $CHANGES;
+ };
+
+ if (! $opt_r) {
+ # Add a multi-maintainer header...
+ if ($multimaint) {
+ # ...unless there already is one for this maintainer.
+ if (!defined $maintline) {
+ print O "\n [ $MAINTAINER ]\n";
+ $line+=2;
+ }
+ }
+
+ if (@closes_text or $TEXT) {
+ foreach (@closes_text) { format_line($_, 0); }
+ if (length $TEXT) { format_line($TEXT, 0); }
+ } elsif ($opt_news) {
+ print O "\n \n";
+ $line++;
+ } elsif (!$EMPTY_TEXT) {
+ print O " * \n";
+ }
+ }
+
+ if (defined $count) {
+ # Output the remainder of the changes
+ $count=1;
+ foreach (split /\n/, $CHANGES) {
+ $count++;
+ next unless $count>$maintline;
+ print O $_ . "\n";
+ }
+ }
+
+ if ($opt_t && $opt_a) {
+ print O "\n -- $changelog->{Maintainer} $changelog->{Date}\n";
+ } else {
+ print O "\n -- $MAINTAINER <$EMAIL> $DATE\n";
+ }
+
+ if ($lastheader) {
+ print O "\n$lastheader";
+ }
+
+ # Copy the rest of the changelog file to new one
+ # Slurp the rest....
+ local $/ = undef;
+ print O <S>;
+}
+elsif ($opt_e && ! $opt_create) {
+ # We don't do any fancy stuff with respect to versions or adding
+ # entries, we just update the timestamp and open the editor
+
+ print O $CHANGES;
+
+ if ($opt_t) {
+ print O "\n -- $changelog->{Maintainer} $changelog->{Date}\n";
+ } else {
+ print O "\n -- $MAINTAINER <$EMAIL> $DATE\n";
+ }
+
+ # Copy the rest of the changelog file to the new one
+ $line=-1;
+ while (<S>) { $line++; last if /^ --/; }
+ # Slurp the rest...
+ local $/ = undef;
+ print O <S>;
+
+ # Set the start-line to 0, as we don't know what they want to edit
+ $line=0;
+}
+elsif ($opt_create) {
+ if (! $initial_release and ! $opt_news and ! $opt_empty and
+ ! $TEXT and ! $EMPTY_TEXT) {
+ push @closes_text, "Initial release. (Closes: \#XXXXXX)\n";
+ }
+
+ my $urgency = $opt_u;
+ if ($opt_news) {
+ $urgency ||= $CL_URGENCY;
+ }
+ $urgency ||= 'medium';
+ print O "$PACKAGE ($VERSION) $DISTRIBUTION; urgency=$urgency\n\n";
+
+ if (@closes_text or $TEXT) {
+ foreach (@closes_text) { format_line($_, 1); }
+ if (length $TEXT) { format_line($TEXT, 1); }
+ } elsif ($opt_news) {
+ print O " \n";
+ } elsif ($opt_empty) {
+ # Do nothing, but skip the empty entry
+ } else { # this can't happen, but anyway...
+ print O " * \n";
+ }
+
+ print O "\n -- $MAINTAINER <$EMAIL> $DATE\n";
+
+ $line = 1;
+}
+elsif (!$optionsok) {
+ fatal "Unknown changelog processing command line options - help!";
+}
+
+if (! $opt_create) {
+ close S or fatal "Error closing $changelog_path: $!";
+}
+close O or fatal "Error closing temporary $changelog_path: $!";
+
+if ($warnings) {
+ if ($warnings>1) {
+ warn "$progname: Did you see those $warnings warnings? Press RETURN to continue...\n";
+ } else {
+ warn "$progname: Did you see that warning? Press RETURN to continue...\n";
+ }
+ my $garbage = <STDIN>;
+}
+
+# Now Run the Editor; always run if doing "closes" to give a chance to check
+if ((!$TEXT and !$EMPTY_TEXT and ! ($opt_create and $opt_empty)) or @closes_text or
+ ($opt_create and ! ($PACKAGE ne 'PACKAGE' and $VERSION ne 'VERSION'))) {
+
+ my $mtime = (stat("$changelog_path.dch"))[9];
+ defined $mtime or fatal
+ "Error getting modification time of temporary $changelog_path: $!";
+ $mtime--;
+ utime $mtime, $mtime, "$changelog_path.dch";
+
+ system("sensible-editor +$line $changelog_path.dch") == 0 or
+ fatal "Error editing $changelog_path";
+
+ my $newmtime = (stat("$changelog_path.dch"))[9];
+ defined $newmtime or fatal
+ "Error getting modification time of temporary $changelog_path: $!";
+ if ($mtime == $newmtime && ! $opt_create &&
+ (!$opt_r || ($opt_r && $opt_force_save_on_release))) {
+
+ warn "$progname: $changelog_path unmodified; exiting.\n";
+ exit 0;
+ }
+}
+
+copy("$changelog_path.dch","$changelog_path") or
+ fatal "Couldn't replace $changelog_path with new version: $!";
+
+# Now find out what the new package version number is if we need to
+# rename the directory
+
+if ((basename(cwd()) =~ m%^\Q$PACKAGE\E-\Q$UVERSION\E$%) &&
+ !$opt_p && !$opt_create) {
+ # Find the current version number etc.
+ my ($new_version, $new_sversion, $new_uversion);
+ open PARSED, "dpkg-parsechangelog |"
+ or fatal "Cannot execute dpkg-parsechangelog: $!";
+ while (<PARSED>) {
+ if (/^Version:\s(.+?)\s*$/) { $new_version=$1; }
+ }
+
+ close PARSED
+ or fatal "Problem executing dpkg-parsechangelog: $!";
+ if ($?) { fatal "dpkg-parsechangelog failed!" }
+
+ fatal "No version number in debian/changelog!"
+ unless defined $new_version;
+
+ # Is this a native Debian package, i.e., does it have a - in the
+ # version number?
+ $new_version =~ s/^\d+://; # remove epoch
+ ($new_uversion=$new_version) =~ s/-[^-]*$//; # remove revision
+
+ if ($new_uversion ne $UVERSION) {
+ # Then we rename the directory
+ if (move(cwd(), "../$PACKAGE-$new_uversion")) {
+ warn "$progname warning: your current directory has been renamed to:\n../$PACKAGE-$new_uversion\n";
+ } else {
+ warn "$progname warning: Couldn't rename directory: $!\n";
+ }
+ # And check whether a new orig tarball exists
+ my @origs = glob("../$PACKAGE\_$new_uversion.*");
+ my $num_origs = grep { /^..\/\Q$PACKAGE\E_\Q$new_uversion\E\.orig\.tar\.$compression_re$/ } @origs;
+ if ($num_origs == 0) {
+ warn "$progname warning: no orig tarball found for the new version.\n";
+ }
+ }
+}
+
+exit 0;
+
+{
+ no warnings 'uninitialized';
+ # Format for standard Debian changelogs
+ format CHANGELOG =
+ * ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ $CHGLINE
+ ~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ $CHGLINE
+.
+ # Format for NEWS files.
+ format NEWS =
+ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ $CHGLINE
+~~^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ $CHGLINE
+.
+}
+
+my $linecount=0;
+sub format_line {
+ $CHGLINE=shift;
+ my $newentry=shift;
+
+ # Work around the fact that write() with formats
+ # seems to assume that characters are single-byte
+ # See https://rt.perl.org/Public/Bug/Display.html?id=33832
+ # and Debian bugs #473769 and #541484
+ # This relies on $CHGLINE being a sequence of unicode characters. We can
+ # compare how many unicode characters we have to how many bytes we have
+ # when encoding to utf8 and therefore how many spaces we need to pad.
+ my $count = length(encode_utf8($CHGLINE)) - length($CHGLINE);
+ $CHGLINE .= " " x $count;
+
+ print O "\n" if $opt_news && ! ($newentry || $linecount);
+ $linecount++;
+ my $f=select(O);
+ if ($opt_news) {
+ $~='NEWS';
+ }
+ else {
+ $~='CHANGELOG';
+ }
+ write O;
+ select $f;
+}
+
+BEGIN {
+ # Initialise the variable
+ $tmpchk=0;
+}
+
+END {
+ if ($tmpchk) {
+ unlink "$changelog_path.dch" or
+ warn "$progname warning: Could not remove $changelog_path.dch\n";
+ unlink "$changelog_path.dch~"; # emacs backup file
+ }
+}
+
+sub fatal($) {
+ my ($pack,$file,$line);
+ ($pack,$file,$line) = caller();
+ (my $msg = "$progname: fatal error at line $line:\n@_\n") =~ tr/\0//d;
+ $msg =~ s/\n\n$/\n/;
+ die $msg;
+}
+
+# Is the environment variable valid or not?
+sub check_env_utf8 {
+ my $envvar = $_[0];
+
+ if (exists $ENV{$envvar} and $ENV{$envvar} ne '') {
+ if (! decode_utf8($ENV{$envvar})) {
+ warn "$progname warning: environment variable $envvar not UTF-8 encoded; ignoring\n";
+ } else {
+ $env{$envvar} = decode_utf8($ENV{$envvar});
+ }
+ }
+}
--- /dev/null
+#!/usr/bin/perl
+#
+# debcheckout: checkout the development repository of a Debian package
+# Copyright (C) 2007-2009 Stefano Zacchiroli <zack@debian.org>
+# Copyright (C) 2010 Christoph Berg <myon@debian.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+
+# Created: Tue, 14 Aug 2007 10:20:55 +0200
+# Last-Modified: $Date$
+
+=head1 NAME
+
+debcheckout - checkout the development repository of a Debian package
+
+=head1 SYNOPSIS
+
+=over
+
+=item B<debcheckout> [I<OPTIONS>] I<PACKAGE> [I<DESTDIR>]
+
+=item B<debcheckout> [I<OPTIONS>] I<REPOSITORY_URL> [I<DESTDIR>]
+
+=item B<debcheckout> B<--help>
+
+=back
+
+=head1 DESCRIPTION
+
+B<debcheckout> retrieves the information about the Version Control System used
+to maintain a given Debian package (the I<PACKAGE> argument), and then checks
+out the latest (potentially unreleased) version of the package from its
+repository. By default the repository is checked out to the I<PACKAGE>
+directory; this can be overridden by providing the I<DESTDIR> argument.
+
+The information about where the repository is available is expected to be found
+in B<Vcs-*> fields available in the source package record. For example, the B<vim>
+package exposes such information with a field like S<B<Vcs-Hg:
+http://hg.debian.org/hg/pkg-vim/vim>>, you can see it by grepping through
+B<apt-cache showsrc vim>.
+
+If more than one source package record containing B<Vcs-*> fields is available,
+B<debcheckout> will select the record with the highest version number.
+Alternatively, a particular version may be selected from those available by
+specifying the package name as I<PACKAGE>=I<VERSION>.
+
+If you already know the URL of a given repository you can invoke
+B<debcheckout> directly on it, but you will probably need to pass the
+appropriate B<-t> flag. That is, some heuristics are in use to guess
+the repository type from the URL; if they fail, you might want to
+override the guessed type using B<-t>.
+
+The currently supported version control systems are: Arch (arch), Bazaar (bzr), CVS (cvs),
+Darcs (darcs), Git (git), Mercurial (hg) and Subversion (svn).
+
+=head1 OPTIONS
+
+B<GENERAL OPTIONS>
+
+=over
+
+=item B<-a>, B<--auth>
+
+Work in authenticated mode; this means that for known repositories (mainly those
+hosted on S<I<https://alioth.debian.org>>) URL rewriting is attempted before
+checking out, to ensure that the repository can be committed to. For example,
+for Subversion repositories hosted on alioth this means that
+S<I<svn+ssh://svn.debian.org/...>> will be used instead of
+S<I<svn://svn.debian.org/...>>.
+
+=item B<-d>, B<--details>
+
+Only print a list of detailed information about the package
+repository, without checking it out; the output format is a list of
+fields, each field being a pair of TAB-separated field name and field
+value. The actual fields depend on the repository type. This action
+might require a network connection to the remote repository.
+
+Also see B<-p>. This option and B<-p> are mutually exclusive.
+
+=item B<-h>, B<--help>
+
+Print a detailed help message and exit.
+
+=item B<-p>, B<--print>
+
+Only print a summary about package repository information, without
+checking it out; the output format is TAB-separated with two fields:
+repository type, repository URL. This action works offline, it only
+uses "static" information as known by APT's cache.
+
+Also see B<-d>. This option and B<-d> are mutually exclusive.
+
+=item B<-P> I<package>, B<--package> I<package>
+
+When checking out a repository URL, instead of trying to guess the package name
+from the URL, use this package name.
+
+=item B<-t> I<TYPE>, B<--type> I<TYPE>
+
+Override the repository type (which defaults to some heuristics based
+on the URL or, in case of heuristic failure, the fallback "svn");
+should be one of the currently supported repository types.
+
+=item B<-u> I<USERNAME>, B<--user> I<USERNAME>
+
+Specify the login name to be used in authenticated mode (see B<-a>). This option
+implies B<-a>: you don't need to specify both.
+
+=item B<-f>, B<--file>
+
+Specify that the named file should be extracted from the repository and placed
+in the destination directory. May be used more than once to extract multiple
+files.
+
+=item B<--source=never>|B<auto>|B<download-only>|B<always>
+
+Some packages only place the F<debian> directory in version control.
+B<debcheckout> can retrieve the remaining parts of the source using B<apt-get
+source> and move the files into the checkout.
+
+=over
+
+=item B<never>
+
+Only use the repository.
+
+=item B<auto> (default)
+
+If the repository only contains the F<debian> directory, retrieve the source
+package, unpack it, and also place the F<.orig.tar.gz> file into the current
+directory. Else, do nothing.
+
+=item B<download-only>
+
+Always retrieve the I<.orig.tar.gz> file, but do not unpack it.
+
+=item B<always>
+
+Always retrieve the I<.orig.tar.gz> file, and if the repository only contains the
+F<debian> directory, unpack it.
+
+=back
+
+=back
+
+B<VCS-SPECIFIC OPTIONS>
+
+I<GIT-SPECIFIC OPTIONS>
+
+=over
+
+=item B<--git-track> I<BRANCHES>
+
+Specify a list of remote branches which will be set up for tracking
+(as in S<B<git branch --track>>, see B<git-branch>(1)) after the remote
+Git repository has been cloned. The list should be given as a
+space-separated list of branch names.
+
+As a shorthand, the string "B<*>" can be given to require tracking of all
+remote branches.
+
+=back
+
+=head1 CONFIGURATION VARIABLES
+
+The two configuration files F</etc/devscripts.conf> and
+F<~/.devscripts> are sourced by a shell in that order to set
+configuration variables. Command line options can be used to override
+configuration file settings. Environment variable settings are ignored
+for this purpose. The currently recognised variables are:
+
+=over
+
+=item B<DEBCHECKOUT_AUTH_URLS>
+
+This variable should be a space separated list of Perl regular
+expressions and replacement texts, which must come in pairs: I<REGEXP>
+I<TEXT> I<REGEXP> I<TEXT> ... and so on. Each pair denotes a substitution which
+is applied to repository URLs if other built-in means of building URLs
+for authenticated mode (see B<-a>) have failed.
+
+References to matching substrings in the replacement texts are
+allowed as usual in Perl by the means of B<$1>, B<$2>, ... and so on.
+
+This setting can be used to enable authenticated mode for most repositories
+out there. Note that the Debian repositories on S<alioth.debian.org>
+(S<$vcs.debian.org>) are implicitly defined.
+
+Here is a sample snippet suitable for the configuration files:
+
+ DEBCHECKOUT_AUTH_URLS='
+ ^\w+://(svn\.example\.com)/(.*) svn+ssh://$1/srv/svn/$2
+ ^\w+://(git\.example\.com)/(.*) git+ssh://$1/home/git/$2
+ '
+
+Note that whitespace is not allowed in either regexps or
+replacement texts. Also, given that configuration files are sourced by
+a shell, you probably want to use single quotes around the value of
+this variable.
+
+=item B<DEBCHECKOUT_SOURCE>
+
+This variable determines under what scenarios the associated orig.tar.gz for a
+package will be downloaded. See the B<--source> option for a description of
+the values.
+
+=item B<DEBCHECKOUT_USER>
+
+This variable sets the username for authenticated mode. It can be overridden
+with the B<--user> option. Setting this variable does not imply the use of
+authenticated mode, it still has to be activated with B<--auth>.
+
+=back
+
+=head1 SEE ALSO
+
+B<apt-cache>(8), Section 6.2.5 of the Debian Developer's Reference (for
+more information about B<Vcs-*> fields): S<I<https://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-vcs>>.
+
+=head1 AUTHOR
+
+B<debcheckout> and this manpage have been written by Stefano Zacchiroli
+<I<zack@debian.org>>.
+
+=cut
+
+use strict;
+use warnings;
+no if $] >= 5.018, 'warnings', 'experimental::smartmatch';
+use feature 'switch';
+use Getopt::Long qw(:config gnu_getopt);
+use Pod::Usage;
+use File::Basename;
+use File::Copy qw/copy/;
+use File::Temp qw/tempdir/;
+use Cwd;
+BEGIN { push @INC, '/usr/share/devscripts'; }
+use Devscripts::Compression;
+use Devscripts::Versort;
+
+my @files = (); # files to checkout
+
+my $compression_re = compression_get_file_extension_regex();
+
+# <snippet from="bts.pl">
+# <!-- TODO we really need to factor out in a Perl module the
+# configuration file parsing code -->
+my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+my %config_vars = (
+ 'DEBCHECKOUT_AUTH_URLS' => '',
+ 'DEBCHECKOUT_SOURCE' => 'auto',
+ 'DEBCHECKOUT_USER' => '',
+ );
+my %config_default = %config_vars;
+my $shell_cmd;
+# Set defaults
+foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+}
+$shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+$shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+# Read back values
+foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+my $shell_out = `/bin/bash -c '$shell_cmd'`;
+@config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+# </snippet>
+
+my $lwp_broken;
+my $ua;
+
+sub have_lwp() {
+ return ($lwp_broken ? 0 : 1) if defined $lwp_broken;
+ eval {
+ require LWP;
+ require LWP::UserAgent;
+ };
+
+ if ($@) {
+ if ($@ =~ m%^Can\'t locate LWP%) {
+ $lwp_broken="the libwww-perl package is not installed";
+ } else {
+ $lwp_broken="couldn't load LWP::UserAgent: $@";
+ }
+ }
+ else { $lwp_broken=''; }
+ return $lwp_broken ? 0 : 1;
+}
+
+sub init_agent {
+ $ua = new LWP::UserAgent; # we create a global UserAgent object
+ $ua->agent("LWP::UserAgent/Devscripts");
+ $ua->env_proxy;
+}
+
+sub recurs_mkdir {
+ my ($dir) = @_;
+ my @temp = split /\//, $dir;
+ my $createdir = "";
+ foreach my $piece (@temp) {
+ if (! length $createdir and ! length $piece) {
+ $createdir = "/";
+ } elsif (length $createdir and $createdir ne "/") {
+ $createdir .= "/";
+ }
+ $createdir .= "$piece";
+ if (! -d $createdir) {
+ mkdir($createdir) or return 0;
+ }
+ }
+ return 1;
+}
+
+# Find the repository URL (and type) for a given package name, parsing Vcs-*
+# fields. Returns (version, type, url, origtgz_name) tuple.
+sub find_repo($$) {
+ my ($pkg, $desired_ver) = @_;
+ my @repo = ("", 0, "", "");
+ my $found = 0;
+ my ($nonepoch_version, $version) = ("", "");
+ my $origtgz_name = "";
+ my $type = "";
+ my $url = "";
+ my @repos = ();
+
+ open(APT, "apt-cache showsrc $pkg |");
+ while (my $line = <APT>) {
+ $found = 1;
+ chomp($line);
+ if ($line =~ /^(x-)?vcs-(\w+):\s*(.*)$/i) {
+ next if lc($2) eq "browser";
+ ($type, $url) = (lc($2), $3);
+ } elsif ($line =~ /^Version:\s*(.*)$/i) {
+ $version = $1;
+ ($nonepoch_version = $version) =~ s/^\d+://;
+ } elsif ($line =~ /^ [a-f0-9]{32} \d+ (\S+)(?:_\Q$nonepoch_version\E|\.orig)\.tar\.$compression_re$/) {
+ $origtgz_name = $1;
+ } elsif ($line =~ /^$/) {
+ push (@repos, [$version, $type, $url, $origtgz_name])
+ if ($version and $type and $url and
+ ($desired_ver eq "" or $desired_ver eq $version));
+ $version = "";
+ $type = "";
+ $url = "";
+ $origtgz_name = "";
+ }
+ }
+ close(APT);
+ die "unknown package '$pkg'\n" unless $found;
+
+ if (@repos) {
+ @repos = Devscripts::Versort::versort(@repos);
+ @repo = @{$repos[0]};
+ }
+ return @repo;
+}
+
+# Find the browse URL for a given package name, parsing Vcs-* fields.
+sub find_browse($$) {
+ my ($pkg, $desired_ver) = @_;
+ my $browse = "";
+ my $found = 0;
+ my $version = "";
+ my @browses;
+
+ open(APT, "apt-cache showsrc $pkg |");
+ while (my $line = <APT>) {
+ $found = 1;
+ chomp($line);
+ if ($line =~ /^(x-)?vcs-(\w+):\s*(.*)$/i) {
+ if (lc($2) eq "browser") {
+ $browse = $3;
+ }
+ } elsif ($line =~ /^Version:\s*(.*)$/i) {
+ $version = $1;
+ } elsif ($line =~ /^$/) {
+ push(@browses, [$version, $browse])
+ if $version and $browse and
+ ($desired_ver eq "" or $desired_ver eq $version);
+ $version = "";
+ $browse = "";
+ }
+ }
+ close(APT);
+ die "unknown package '$pkg'\n" unless $found;
+ if (@browses) {
+ @browses = Devscripts::Versort::versort(@browses);
+ $browse = $browses[0][1];
+ }
+ return $browse;
+}
+
+# Patch the cmdline invocation of a VCS to ensure the repository is checkout to
+# a given target directory.
+sub set_destdir($$@) {
+ my ($repo_type, $destdir, @cmd) = @_;
+ $destdir =~ s|^-d\s*||;
+
+ given ($repo_type) {
+ when ("cvs") {
+ my $module = pop @cmd;
+ push @cmd, ("-d", $destdir, $module);
+ }
+ when (/^(bzr|darcs|git|hg|svn)$/) {
+ push @cmd, $destdir;
+ }
+ default {
+ die "sorry, don't know how to set the destination directory for $repo_type repositories (patches welcome!)\n";
+ }
+ }
+ return @cmd;
+}
+
+# try patching a repository URL to enable authenticated mode, *relying
+# only on user defined rules*
+sub user_set_auth($$) {
+ my ($repo_type, $url) = @_;
+ my @rules = split ' ', $config_vars{'DEBCHECKOUT_AUTH_URLS'};
+ while (my $pat = shift @rules) { # read pairs for s/$pat/$subst/
+ my $subst = shift @rules
+ or die "Configuration error for DEBCHECKOUT_AUTH_URLS: regexp and replacement texts must come in pairs. See debcheckout(1).\n";
+ $url =~ s/$pat/qq("$subst")/ee; # ZACK: my worst Perl line ever
+ }
+ return $url;
+}
+
+# Patch a given repository URL to ensure that the checked out out repository
+# can be committed to. Only works for well known repositories (mainly Alioth's).
+sub set_auth($$$$) {
+ my ($repo_type, $url, $user, $dont_act) = @_;
+
+ my $old_url = $url;
+
+ $user .= "@" if length $user;
+ my $user_local = $user;
+ $user_local =~ s|(.*)(@)|$1|;
+ my $user_url = $url;
+
+ # Adjust urls from new-style anonymous access to old-style and then deal
+ # with adjusting for authentication
+ $url =~ s@(?:alioth\.debian\.org/(?:anonscm/bzr|scm/loggerhead/bzr)|anonscm\.debian\.org/bzr(?:/bzr)?)@bzr.debian.org/bzr@;
+ $url =~ s@(?:alioth\.debian\.org/anonscm/darcs|anonscm\.debian\.org/darcs)@darcs.debian.org/darcs@;
+ $url =~ s@git://anonscm\.debian\.org@git://git.debian.org@;
+ $url =~ s@(?:alioth\.debian\.org/anonscm/git|anonscm\.debian\.org/git)@git.debian.org/git@;
+ $url =~ s@(?:alioth\.debian\.org/anonscm/hg|anonscm\.debian\.org/hg)@hg.debian.org/hg@;
+ $url =~ s@svn://(?:scm\.alioth|anonscm)\.debian\.org@svn://svn.debian.org@;
+ given ($repo_type) {
+ when ("bzr") {
+ $url =~ s|^[\w+]+://(bzr\.debian\.org)/(.*)|bzr+ssh://$user$1/bzr/$2|;
+ $url =~ s[^\w+://(?:(bazaar|code)\.)?(launchpad\.net/.*)][bzr+ssh://${user}bazaar.$2];
+ }
+ when ("darcs") {
+ if ($url =~ m|(~)|) {
+ $user_url =~ s|^\w+://(darcs\.debian\.org)/(~)(.*?)/.*|$3|;
+ die "the local user '$user_local' doesn't own the personal repository '$url'\n"
+ if $user_local ne $user_url and !$dont_act;
+ $url =~ s|^\w+://(darcs\.debian\.org)/(~)(.*?)/(.*)|$user$1:~/public_darcs/$4|;
+ } else {
+ $url =~ s|^\w+://(darcs\.debian\.org)/(.*)|$user$1:/$2|;
+ }
+ }
+ when ("git") {
+ if ($url =~ m%(/users/|~)%) {
+ $user_url =~ s|^\w+://(git\.debian\.org)/git/users/(.*?)/.*|$2|;
+ $user_url =~ s|^\w+://(git\.debian\.org)/~(.*?)/.*|$2|;
+
+ die "the local user '$user_local' doesn't own the personal repository '$url'\n"
+ if $user_local ne $user_url and !$dont_act;
+ $url =~ s|^\w+://(git\.debian\.org)/git/users/.*?/(.*)|git+ssh://$user$1/~/public_git/$2|;
+ $url =~ s|^\w+://(git\.debian\.org)/~.*?/(.*)|git+ssh://$user$1/~/public_git/$2|;
+ } else {
+ $url =~ s|^\w+://(git\.debian\.org)/(?:git/)?(.*)|git+ssh://$user$1/git/$2|;
+ }
+ }
+ # "hg ssh://" needs an extra slash so paths are not based in the user's $HOME
+ when ("hg") {
+ $url =~ s|^\w+://(hg\.debian\.org/)|ssh://$user$1/|;
+ }
+ when ("svn") {
+ $url =~ s|^\w+://(svn\.debian\.org)/(.*)|svn+ssh://$user$1/svn/$2|;
+ }
+ default {
+ die "sorry, don't know how to enable authentication for $repo_type repositories (patches welcome!)\n";
+ }
+ }
+ if ($url eq $old_url) { # last attempt: try with user-defined rules
+ $url = user_set_auth($repo_type, $url);
+ }
+ die "can't use authenticated mode on repository '$url' since it is not a known repository (e.g. alioth)\n"
+ if $url eq $old_url;
+ return $url;
+}
+
+# Hack around specific, known deficiencies in repositories that don't follow
+# standard behavior.
+sub munge_url($$)
+{
+ my ($repo_type, $repo_url) = @_;
+
+ given ($repo_type) {
+ when ('bzr') {
+ # bzr.d.o explicitly doesn't run a smart server. Need to use nosmart
+ $repo_url =~ s|^http://(bzr\.debian\.org)/(.*)|nosmart+http://$1/$2|;
+ }
+ }
+ return $repo_url;
+}
+
+# Checkout a given repository in a given destination directory.
+sub checkout_repo($$$) {
+ my ($repo_type, $repo_url, $destdir) = @_;
+ my @cmd;
+
+ given ($repo_type) {
+ when ("arch") { @cmd = ("tla", "grab", $repo_url); } # XXX ???
+ when ("bzr") { @cmd = ("bzr", "branch", $repo_url); }
+ when ("cvs") {
+ $repo_url =~ s|^-d\s*||;
+ my ($root, $module) = split /\s+/, $repo_url;
+ $module ||= '';
+ @cmd = ("cvs", "-d", $root, "checkout", $module);
+ }
+ when ("darcs") { @cmd = ("darcs", "get", $repo_url); }
+ when ("git") {
+ if ($repo_url =~ m|(.*)\s+-b\s+(.*)|) {
+ @cmd = ("git", "clone", $1, "-b", $2);
+ } else {
+ @cmd = ("git", "clone", $repo_url);
+ }
+ }
+ when ("hg") { @cmd = ("hg", "clone", $repo_url); }
+ when ("svn") { @cmd = ("svn", "co", $repo_url); }
+ default { die "unsupported version control system '$repo_type'.\n"; }
+ }
+ @cmd = set_destdir($repo_type, $destdir, @cmd) if length $destdir;
+ print "@cmd ...\n";
+ system @cmd;
+ my $rc = $? >> 8;
+ return $rc;
+}
+
+# Checkout a given set of files from a given repository in a given
+# destination directory.
+sub checkout_files($$$$) {
+ my ($repo_type, $repo_url, $destdir, $browse_url) = @_;
+ my @cmd;
+ my $tempdir;
+
+ foreach my $file (@files) {
+ my $fetched = 0;
+
+ # Cheap'n'dirty escaping
+ # We should possibly depend on URI::Escape, but this should do...
+ my $escaped_file = $file;
+ $escaped_file =~ s|\+|%2B|g;
+
+ my $dir;
+ if (defined $destdir and length $destdir) {
+ $dir = "$destdir/";
+ } else {
+ $dir = "./";
+ }
+ $dir .= dirname($file);
+
+ if (! recurs_mkdir($dir)) {
+ print STDERR "Failed to create directory $dir\n";
+ return 1;
+ }
+
+ given ($repo_type) {
+ when ("arch") {
+ # If we've already retrieved a copy of the repository,
+ # reuse it
+ if (!length($tempdir)) {
+ if (!($tempdir = tempdir( "debcheckoutXXXX", TMPDIR => 1, CLEANUP => 1 ))) {
+ print STDERR
+ "Failed to create temporary directory . $!\n";
+ return 1;
+ }
+
+ my $oldcwd = getcwd();
+ chdir $tempdir;
+ @cmd = ("tla", "grab", $repo_url);
+ print "@cmd ...\n";
+ my $rc = system(@cmd);
+ chdir $oldcwd;
+ return ($rc >> 8) if $rc != 0;
+ }
+
+ if (!copy("$tempdir/$file", $dir)) {
+ print STDERR "Failed to copy $file to $dir: $!\n";
+ return 1;
+ }
+ }
+ when ("cvs") {
+ if (!length($tempdir)) {
+ if (!($tempdir = tempdir( "debcheckoutXXXX", TMPDIR => 1, CLEANUP => 1 ))) {
+ print STDERR
+ "Failed to create temporary directory . $!\n";
+ return 1;
+ }
+ }
+ $repo_url =~ s|^-d\s*||;
+ my ($root, $module) = split /\s+/, $repo_url;
+ # If an explicit module name isn't present, use the last
+ # component of the URL
+ if (!length($module)) {
+ $module = $repo_url;
+ $module =~ s%^.*/(.*?)$%$1%;
+ }
+ $module .= "/$file";
+ $module =~ s%//%/%g;
+
+ my $oldcwd = getcwd();
+ chdir $tempdir;
+ @cmd = ("cvs", "-d", $root, "export", "-r", "HEAD", "-f",
+ $module);
+ print "\n@cmd ...\n";
+ system @cmd;
+ if (($? >> 8) != 0) {
+ chdir $oldcwd;
+ return ($? >> 8);
+ } else {
+ chdir $oldcwd;
+ if (copy("$tempdir/$module", $dir)) {
+ print "Copied to $destdir/$file\n";
+ } else {
+ print STDERR "Failed to copy $file to $dir: $!\n";
+ return 1;
+ }
+ }
+ }
+ when (/(svn|bzr)/) {
+ @cmd = ($repo_type, "cat", "$repo_url/$file");
+ print "@cmd > $dir/" . basename($file) . " ... \n";
+ if (! open CAT, '-|', @cmd) {
+ print STDERR "Failed to execute @cmd $!\n";
+ return 1;
+ }
+ local $/;
+ my $content = <CAT>;
+ close CAT;
+ if (! open OUTPUT, ">", $dir . "/" . basename($file)) {
+ print STDERR "Failed to create output file "
+ . basename($file) ." $!\n";
+ return 1;
+ }
+ print OUTPUT $content;
+ close OUTPUT;
+ }
+ when (/(darcs|hg)/) {
+ # Subtly different but close enough
+ if (have_lwp) {
+ print "Attempting to retrieve $file via HTTP ...\n";
+
+ my $file_url = $repo_type eq "darcs"
+ ? "$repo_url/$escaped_file"
+ : "$repo_url/raw-file/tip/$file";
+ init_agent() unless $ua;
+ my $request = HTTP::Request->new('GET', "$file_url");
+ my $response = $ua->request($request);
+ if ($response->is_success) {
+ if (! open OUTPUT, ">", $dir . "/" . basename($file)) {
+ print STDERR "Failed to create output file "
+ . basename($file) . " $!\n";
+ return 1;
+ }
+ print "Writing to $dir/" . basename($file) . " ... \n";
+ print OUTPUT $response->content;
+ close OUTPUT;
+ $fetched = 1;
+ }
+ }
+ if ($fetched == 0) {
+ # If we've already retrieved a copy of the repository,
+ # reuse it
+ if (!length($tempdir)) {
+ if (!($tempdir = tempdir( "debcheckoutXXXX", TMPDIR => 1, CLEANUP => 1 ))) {
+ print STDERR
+ "Failed to create temporary directory . $!\n";
+ return 1;
+ }
+
+ # Can't get / clone in to a directory that already exists...
+ $tempdir .= "/repo";
+ if ($repo_type eq "darcs") {
+ @cmd = ("darcs", "get", $repo_url, $tempdir);
+ } else {
+ @cmd = ("hg", "clone", $repo_url, $tempdir);
+ }
+ print "@cmd ...\n";
+ my $rc = system(@cmd);
+ return ($rc >> 8) if $rc != 0;
+ print "\n";
+ }
+ }
+ if (copy "$tempdir/$file", $dir) {
+ print "Copied $file to $dir\n";
+ } else {
+ print STDERR "Failed to copy $file to $dir: $!\n";
+ return 1;
+ }
+ }
+ when ("git") {
+ # If there isn't a browse URL (either because the package
+ # doesn't ship one, or because we were called with a URL,
+ # try a common pattern for gitweb
+ if (!length($browse_url)) {
+ if ($repo_url =~ m%^\w+://([^/]+)/(?:git/)?(.*)$%) {
+ $browse_url = "http://$1/?p=$2";
+ }
+ }
+ if (have_lwp and $browse_url =~ /^http/) {
+ $escaped_file =~ s|/|%2F|g;
+
+ print "Attempting to retrieve $file via HTTP ...\n";
+
+ init_agent() unless $ua;
+ my $file_url = "$browse_url;a=blob_plain";
+ $file_url .= ";f=$escaped_file;hb=HEAD";
+ my $request = HTTP::Request->new('GET', $file_url);
+ my $response = $ua->request($request);
+ my $error = 0;
+ if (!$response->is_success) {
+ if ($browse_url =~ /\.git$/) {
+ print "Error retrieving file: "
+ . $response->status_line . "\n";
+ $error = 1;
+ } else {
+ $browse_url .= ".git";
+ $file_url = "$browse_url;a=blob_plain";
+ $file_url .= ";f=$escaped_file;hb=HEAD";
+ $request = HTTP::Request->new('GET', $file_url);
+ $response = $ua->request($request);
+ if (!$response->is_success) {
+ print "Error retrieving file: "
+ . $response->status_line . "\n";
+ $error = 1;
+ }
+ }
+ }
+ if (!$error) {
+ if (! open OUTPUT, ">", $dir . "/" . basename($file)) {
+ print STDERR "Failed to create output file "
+ . basename($file) . " $!\n";
+ return 1;
+ }
+ print "Writing to $dir/" . basename($file) . " ... \n";
+ print OUTPUT $response->content;
+ close OUTPUT;
+ $fetched = 1;
+ }
+ }
+ if ($fetched == 0) {
+ # If we've already retrieved a copy of the repository,
+ # reuse it
+ if (!length($tempdir)) {
+ if (!($tempdir = tempdir( "debcheckoutXXXX", TMPDIR => 1, CLEANUP => 1 ))) {
+ print STDERR
+ "Failed to create temporary directory . $!\n";
+ return 1;
+ }
+ # Since git won't clone in to a directory that
+ # already exists...
+ $tempdir .= "/repo";
+ # Can't shallow clone from an http:: URL
+ $repo_url =~ s/^http/git/;
+ @cmd = ("git", "clone", "--depth", "1", $repo_url,
+ "$tempdir");
+ print "@cmd ...\n\n";
+ my $rc = system(@cmd);
+ return ($rc >> 8) if $rc != 0;
+ print "\n";
+ }
+
+ my $oldcwd = getcwd();
+ chdir $tempdir;
+
+ @cmd = ($repo_type, "show", "HEAD:$file");
+ print "@cmd ... > $dir/" . basename($file) . "\n";
+ if (! open CAT, '-|', @cmd) {
+ print STDERR "Failed to execute @cmd $!\n";
+ chdir $oldcwd;
+ return 1;
+ }
+ chdir $oldcwd;
+ local $/;
+ my $content = <CAT>;
+ close CAT;
+ if (! open OUTPUT, ">", $dir . "/" . basename($file)) {
+ print STDERR "Failed to create output file "
+ . basename($file) ." $!\n";
+ return 1;
+ }
+ print OUTPUT $content;
+ close OUTPUT;
+ }
+ }
+ default {
+ die "unsupported version control system '$repo_type'.\n";
+ }
+ }
+ }
+
+ # If we've got this far, all the files were retrieved successfully
+ return 0;
+}
+
+# download source package, unpack it, and merge its contents into the checkout
+sub unpack_source($$$$$) {
+ my ($pkg, $version, $destdir, $origtgz_name, $unpack_source) = @_;
+
+ return 1 if ($unpack_source eq 'never');
+ return 1 if (defined $origtgz_name and $origtgz_name eq ''); # only really relevant with URL on command line
+
+ $destdir ||= $pkg;
+ # Apt will auto-resolve binary package names to source package names. We
+ # need to know the source package name to correctly identify the source
+ # package artifacts (dsc, orig.tar.*, etc)
+ (my $srcpkg = $origtgz_name) =~ s/_.*//;
+ # is this a debian-dir-only repository?
+ unless (-d $destdir) {
+ print STDERR "debcheckout did not create the $destdir directory - this is probably a bug\n";
+ return 0;
+ }
+ my @repo_files = glob "$destdir/*";
+ my $debian_only = 0;
+ if (@repo_files == 1 and $repo_files[0] eq "$destdir/debian") {
+ $debian_only = 1;
+ }
+
+ return 1 if ($unpack_source eq 'auto' and not $debian_only);
+ if ($unpack_source ne 'download-only' and $debian_only) {
+ print "repository only contains the debian directory, using apt-get source\n";
+ }
+
+ my $tmpdir = File::Temp->newdir(DIR => ".");
+
+ # unpack
+ my $oldcwd = getcwd();
+ chdir $tmpdir;
+ my @args = ('source');
+ push @args, '--download-only' if ($unpack_source eq 'download-only' or not $debian_only);
+ push @args, $version ? "$srcpkg=$version" : $srcpkg;
+ system('apt-get', @args);
+ chdir $oldcwd;
+ if ($? >> 8) {
+ print STDERR "apt-get source failed\n";
+ return 0;
+ }
+
+ # put source package in place
+ foreach my $sourcefile (glob "$tmpdir/${srcpkg}_*") {
+ next unless (-f $sourcefile); # skip directories
+ my $base = $sourcefile;
+ $base =~ s!.*/!!;
+ rename $sourcefile, $base or die "rename $sourcefile $base: $!";
+ }
+
+ return 1 if ($unpack_source eq 'download-only' or not $debian_only);
+
+ # figure out which directory was created
+ my @dirs = glob "$tmpdir/$srcpkg-*/";
+ unless (@dirs) {
+ print STDERR "apt-get source did not create any $tmpdir/$srcpkg-* directory\n";
+ return 0;
+ }
+ my $directory = $dirs[0];
+ chop $directory;
+
+ # move all files over, except the debian directory
+ opendir DIR, $directory or die "opendir $directory: $!";
+ foreach my $file (readdir DIR) {
+ if ($file eq 'debian') {
+ system ('rm', '-rf', "$directory/$file");
+ } elsif ($file eq '.' or $file eq '..') {
+ next;
+ } else {
+ rename "$directory/$file", "$destdir/$file" or
+ die "rename $directory/$file $destdir/$file: $!";
+ }
+ }
+ closedir DIR;
+ rmdir $directory or die "rmdir $directory: $!";
+
+ # $tmpdir is automatically removed
+ return 1;
+}
+
+# Print information about a repository and quit.
+sub print_repo($$) {
+ my ($repo_type, $repo_url) = @_;
+
+ print "$repo_type\t$repo_url\n";
+ exit(0);
+}
+
+sub git_ls_remote($$) {
+ my ($url, $prefix) = @_;
+
+ $url =~ s|\s+-b\s+.*||;
+ my $cmd = "git ls-remote '$url'";
+ $cmd .= " '$prefix/*'" if length $prefix;
+ open GIT, "$cmd |" or die "can't execute $cmd\n";
+ my @refs;
+ while (my $line = <GIT>) {
+ chomp $line;
+ my ($sha1, $name) = split /\s+/, $line;
+ my $ref = $name;
+ $ref = substr($ref, length($prefix) + 1) if length $prefix;
+ push @refs, $ref;
+ }
+ close GIT;
+ return @refs;
+}
+
+# Given a GIT repository URL, extract its topgit info (if any), see
+# the "topgit" package for more information
+sub tg_info($) {
+ my ($url) = @_;
+
+ my %info;
+ $info{'topgit'} = 'no';
+ $info{'top-bases'} = '';
+ my @bases = git_ls_remote($url, 'refs/top-bases');
+ if (@bases) {
+ $info{'topgit'} = 'yes';
+ $info{'top-bases'} = join ' ', @bases;
+ }
+ return(\%info);
+}
+
+# Print details about a repository and quit.
+sub print_details($$) {
+ my ($repo_type, $repo_url) = @_;
+
+ print "type\t$repo_type\n";
+ print "url\t$repo_url\n";
+ if ($repo_type eq "git") {
+ my $tg_info = tg_info($repo_url);
+ while (my ($k, $v) = each %$tg_info) {
+ print "$k\t$v\n";
+ }
+ }
+ exit(0);
+}
+
+sub guess_repo_type($$) {
+ my ($repo_url, $default) = @_;
+ my $repo_type = $default;
+ if ($repo_url =~ /^(git|svn|bzr)(\+ssh)?:/) {
+ $repo_type = $1;
+ } elsif ($repo_url =~ /^https?:\/\/(svn|git|hg|bzr|darcs)\.debian\.org/) {
+ $repo_type = $1;
+ } elsif ($repo_url =~ m@^https?://anonscm.debian.org/(svn|git|hg|bzr|darcs)/@) {
+ $repo_type = $1;
+ }
+ return $repo_type;
+}
+
+# Does a given string match the lexical rules for package names?
+sub is_package($) {
+ my ($arg) = @_;
+
+ return ($arg =~ /^[a-z0-9.+-]+$/); # lexical rule for package names
+}
+
+sub main() {
+ my $auth = 0; # authenticated mode
+ my $destdir = ""; # destination directory
+ my $pkg = ""; # package name
+ my $version = ""; # package version
+ my $origtgz_name = undef; # orig.tar.gz name (or "" when none; undef means unknown)
+ my $print_mode = 0; # print only mode
+ my $details_mode = 0; # details only mode
+ my $use_package = ''; # use this package instead of guessing from the URL
+ my $repo_type = "svn"; # default repo typo, overridden by '-t'
+ my $repo_url = ""; # repository URL
+ my $user = ""; # login name (authenticated mode only)
+ my $browse_url = ""; # online browsable repository URL
+ my $git_track = ""; # list of remote GIT branches to --track
+ my $unpack_source = $config_vars{DEBCHECKOUT_SOURCE}; # retrieve and unpack orig.tar.gz
+ GetOptions(
+ "auth|a" => \$auth,
+ "help|h" => sub { pod2usage({-exitval => 0, -verbose => 1}); },
+ "print|p" => \$print_mode,
+ "details|d" => \$details_mode,
+ "package|P=s" => \$use_package,
+ "type|t=s" => \$repo_type,
+ "user|u=s" => \$user,
+ "file|f=s" => sub { push(@files, $_[1]); },
+ "git-track=s" => \$git_track,
+ "source=s" => \$unpack_source,
+ ) or pod2usage({-exitval => 3});
+ pod2usage({-exitval => 3}) if ($#ARGV < 0 or $#ARGV > 1);
+ pod2usage({-exitval => 3,
+ -message =>
+ "-d and -p are mutually exclusive.\n", })
+ if ($print_mode and $details_mode);
+ my $dont_act = 1 if ($print_mode or $details_mode);
+ pod2usage({-exitval => 3,
+ -message =>
+ "--source argument must be one of never, auto, download-only, and always\n", })
+ unless ($unpack_source =~ /^(never|auto|download-only|always)$/);
+
+ # -u|--user implies -a|--auth
+ $auth = 1 if length $user;
+
+ # set user from the config file to be used with -a|--auth without -u|--user
+ $user = $config_vars{DEBCHECKOUT_USER} unless $user;
+
+ $destdir = $ARGV[1] if $#ARGV > 0;
+ ($pkg, $version) = split(/=/, $ARGV[0]);
+ $version ||= "";
+
+ if (not is_package($pkg)) { # repo-url passed on the command line
+ $repo_url = $ARGV[0];
+ $repo_type = guess_repo_type($repo_url, $repo_type);
+ $pkg = ""; $version = "";
+ # when --package is given, use it
+ if ($use_package) {
+ $pkg = $use_package;
+ # else guess package from url
+ } elsif ($repo_url =~ m!/trunk/([a-z0-9.+-]+)!) { # svn with {trunk,tags,branches}/$pkg
+ $pkg = $1;
+ } elsif ($repo_url =~ m!([a-z0-9.+-]+)/trunk/?!) { # svn with $pkg/{trunk,tags,branches}
+ $pkg = $1;
+ } elsif ($repo_url =~ /([a-z0-9.+-]+)\.git(\s+-b\s+.*)?$/) { # git
+ $pkg = $1;
+ } elsif ($repo_url =~ /([a-z0-9.+-]+)$/) { # catch-all
+ $pkg = $1;
+ }
+ $origtgz_name = $pkg; # FIXME: this should rather set srcpkg in unpack_source() directly
+ } else { # package name passed on the command line
+ ($version, $repo_type, $repo_url, $origtgz_name) = find_repo($pkg, $version);
+ unless ($repo_type) {
+ my $vermsg = "";
+ $vermsg = ", version $version" if length $version;
+ print <<EOF;
+No repository found for package $pkg$vermsg.
+
+A Vcs-* field is missing in its source record. See Debian Developer's
+Reference 6.2.5:
+ `https://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-vcs'
+If you know that the package is maintained via a version control
+system consider asking the maintainer to expose such information.
+
+Nevertheless, you can get the sources of package $pkg
+from the Debian archive executing:
+
+ apt-get source $pkg
+
+Note however that what you obtain will *not* be a local copy of
+some version control system: your changes will not be preserved
+and it will not be possible to commit them directly.
+
+EOF
+ exit(1);
+ }
+ $browse_url = find_browse($pkg, $version) if @files;
+ }
+
+ $repo_url = munge_url($repo_type, $repo_url);
+ $repo_url = set_auth($repo_type, $repo_url, $user, $dont_act)
+ if $auth and not @files;
+ print_repo($repo_type, $repo_url) if $print_mode; # ... then quit
+ print_details($repo_type, $repo_url) if $details_mode; # ... then quit
+ if (length $pkg) {
+ print "declared $repo_type repository at $repo_url\n";
+ $destdir = $pkg unless length $destdir;
+ }
+ my $rc;
+ if (@files) {
+ $rc = checkout_files($repo_type, $repo_url, $destdir, $browse_url);
+ } else {
+ $rc = checkout_repo($repo_type, $repo_url, $destdir);
+ } # XXX: there is no way to know for sure what is the destdir :-(
+ die "checkout failed (the command above returned a non-zero exit code)\n"
+ if $rc != 0;
+
+ # post-checkout actions
+ if ($repo_type eq 'bzr' and $auth) {
+ if (open B, '>>', "$destdir/.bzr/branch/branch.conf") {
+ print B "\npush_location = $repo_url";
+ close B;
+ } else {
+ print STDERR
+ "failed to open branch.conf to add push_location: $!\n";
+ }
+ } elsif ($repo_type eq 'git') {
+ my $tg_info = tg_info($repo_url);
+ my $wcdir = $destdir;
+ # HACK: if $destdir is unknown, take last URL part and remove /.git$/
+ $wcdir = (split m|\.|, (split m|/|, $repo_url)[-1])[0]
+ unless length $wcdir;
+ if ($$tg_info{'topgit'} eq 'yes') {
+ print "TopGit detected, populating top-bases ...\n";
+ system("cd $wcdir && tg remote --populate origin");
+ $rc = $? >> 8;
+ print STDERR "TopGit population failed\n" if $rc != 0;
+ }
+ system("cd $wcdir && git config user.name \"$ENV{'DEBFULLNAME'}\"")
+ if (defined($ENV{'DEBFULLNAME'}));
+ system("cd $wcdir && git config user.email \"$ENV{'DEBEMAIL'}\"")
+ if (defined($ENV{'DEBEMAIL'}));
+ if (length $git_track) {
+ my @heads;
+ if ($git_track eq '*') {
+ @heads = git_ls_remote($repo_url, 'refs/heads');
+ } else {
+ @heads = split ' ', $git_track;
+ }
+ # Filter out any branches already populated via TopGit
+ my @tgheads = split ' ', $$tg_info{'top-bases'};
+ my $master = 'master';
+ if (open(HEAD, "env GIT_DIR=\"$wcdir/.git\" git symbolic-ref HEAD |")) {
+ $master = <HEAD>;
+ chomp $master;
+ $master =~ s@refs/heads/@@;
+ }
+ close(HEAD);
+ foreach my $head (@heads) {
+ next if $head eq $master;
+ next if grep { $head eq $_ } @tgheads;
+ my $cmd = "cd $wcdir";
+ $cmd .= " && git branch --track $head remotes/origin/$head";
+ system($cmd);
+ }
+ }
+ } elsif ($repo_type eq 'hg') {
+ my $username = '';
+ $username .= " $ENV{'DEBFULLNAME'}" if (defined($ENV{'DEBFULLNAME'}));
+ $username .= " <$ENV{'DEBEMAIL'}>" if (defined($ENV{'DEBEMAIL'}));
+ if ($username) {
+ if (open(HGRC, '>>', "$destdir/.hg/hgrc")) {
+ print HGRC "[ui]\nusername =$username\n";
+ close HGRC;
+ } else {
+ print STDERR
+ "failed to open hgrc to set username: $!\n";
+ }
+ }
+ }
+ die "post-checkout action failed\n"
+ if $rc != 0;
+
+ if ($unpack_source) {
+ unless ($pkg) {
+ print STDERR "could not determine package name for orig.tar.gz retrieval\n";
+ $rc ||= 1;
+ exit($rc);
+ }
+ unpack_source($pkg, $version, $destdir, $origtgz_name, $unpack_source) or $rc = 1;
+ }
+
+ exit($rc);
+}
+
+main();
+
+# vim:sw=4
--- /dev/null
+.TH DEBCLEAN 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+debclean \- clean up a sourcecode tree
+.SH SYNOPSIS
+\fBdebclean\fR [\fIoptions\fR]
+.SH DESCRIPTION
+\fBdebclean\fR walks through the directory tree starting at the
+directory tree in which it was invoked, and executes
+.I debian/rules clean
+for each Debian source directory encountered. These directories are
+recognised by containing a debian/changelog file for a package whose
+name matches that of the directory. Name matching is described below.
+.PP
+Also, if the \fB\-\-cleandebs\fR option is given, then in every
+directory containing a Debian source tree, all files named *.deb,
+*.changes and *.build are removed. The .dsc, .diff.gz and
+the (.orig).tar.gz files are not touched so that the release can be
+reconstructed if necessary, and the .upload files are left so that
+\fBdebchange\fR functions correctly. The \fB\-\-nocleandebs\fR option
+prevents this extra cleaning behaviour and the \fB\-\-cleandebs\fR
+option forces it. The default is not to clean these files.
+.PP
+\fBdebclean\fR uses \fBdebuild\fR(1) to clean the source tree.
+.SH "Directory name checking"
+In common with several other scripts in the \fBdevscripts\fR package,
+\fBdebclean\fR will walk through the directory tree searching for
+\fIdebian/changelog\fR files. As a safeguard against stray files
+causing potential problems, it will examine the name of the parent
+directory once it finds a \fIdebian/changelog\fR file, and check
+that the directory name corresponds to the package name. Precisely
+how it does this is controlled by two configuration file variables
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR and \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR, and
+their corresponding command-line options \fB\-\-check-dirname-level\fR
+and \fB\-\-check-dirname-regex\fR.
+.PP
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR can take the following values:
+.TP
+.B 0
+Never check the directory name.
+.TP
+.B 1
+Only check the directory name if we have had to change directory in
+our search for \fIdebian/changelog\fR. This is the default behaviour.
+.TP
+.B 2
+Always check the directory name.
+.PP
+The directory name is checked by testing whether the current directory
+name (as determined by \fBpwd\fR(1)) matches the regex given by the
+configuration file option \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR or by the
+command line option \fB\-\-check-dirname-regex\fR \fIregex\fR. Here
+\fIregex\fR is a Perl regex (see \fBperlre\fR(3perl)), which will be
+anchored at the beginning and the end. If \fIregex\fR contains a '/',
+then it must match the full directory path. If not, then it must
+match the full directory name. If \fIregex\fR contains the string
+\'PACKAGE', this will be replaced by the source package name, as
+determined from the changelog. The default value for the regex is:
+\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and
+PACKAGE-version.
+.SH OPTIONS
+.TP
+.B \-\-cleandebs
+Also remove all .deb, .changes and .build files from the parent
+directory.
+.TP
+.B \-\-nocleandebs
+Do not remove the .deb, .changes and .build files from the parent
+directory; this is the default behaviour.
+.TP
+\fB\-\-check-dirname-level\fR \fIN\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-\-check-dirname-regex\fR \fIregex\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+.B \-d
+Do not run dpkg-checkbuilddeps to check build dependencies.
+.TP
+.B \-\-help
+Display a help message and exit successfully.
+.TP
+.B \-\-version
+Display version and copyright information and exit successfully.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variables are:
+.TP
+.B DEBCLEAN_CLEANDEBS
+If this is set to \fIyes\fR, then it is the same as the
+\fB\-\-cleandebs\fR command line parameter being used.
+.TP
+.BR DEVSCRIPTS_CHECK_DIRNAME_LEVEL ", " DEVSCRIPTS_CHECK_DIRNAME_REGEX
+See the above section \fBDirectory name checking\fR for an explanation of
+these variables. Note that these are package-wide configuration
+variables, and will therefore affect all \fBdevscripts\fR scripts
+which check their value, as described in their respective manpages and
+in \fBdevscripts.conf\fR(5).
+.SH "SEE ALSO"
+.BR debuild (1),
+.BR devscripts.conf (5)
+.SH AUTHOR
+Christoph Lameter <clameter@debian.org>;
+modifications by Julian Gilbey <jdg@debian.org>.
--- /dev/null
+#!/bin/bash
+
+PROGNAME=`basename $0`
+MODIFIED_CONF_MSG='Default settings modified by devscripts configuration files:'
+
+usage () {
+ echo \
+"Usage: $PROGNAME [options]
+ Clean all debian build trees under current directory.
+
+ Options:
+ --cleandebs Also remove all .deb, .changes and .build
+ files from the parent of each build tree
+
+ --nocleandebs Don't remove the .deb etc. files (default)
+
+ --check-dirname-level N
+ How much to check directory names before cleaning trees:
+ N=0 never
+ N=1 only if program changes directory (default)
+ N=2 always
+
+ --check-dirname-regex REGEX
+ What constitutes a matching directory name; REGEX is
+ a Perl regular expression; the string \`PACKAGE' will
+ be replaced by the package name; see manpage for details
+ (default: 'PACKAGE(-.+)?')
+
+ --no-conf, --noconf
+ Do not read devscripts config files;
+ must be the first option given
+
+ -d Do not run dpkg-checkbuilddeps to check build dependencies
+
+ --help Display this help message and exit
+
+ --version Display version information
+
+$MODIFIED_CONF_MSG"
+}
+
+version () {
+ echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1999 by Julian Gilbey, all rights reserved.
+Original code by Christoph Lameter.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later."
+}
+
+# Boilerplate: set config variables
+DEFAULT_DEBCLEAN_CLEANDEBS=no
+DEFAULT_DEVSCRIPTS_CHECK_DIRNAME_LEVEL=1
+DEFAULT_DEVSCRIPTS_CHECK_DIRNAME_REGEX='PACKAGE(-.+)?'
+VARS="DEBCLEAN_CLEANDEBS DEVSCRIPTS_CHECK_DIRNAME_LEVEL DEVSCRIPTS_CHECK_DIRNAME_REGEX"
+
+
+if [ "$1" = "--no-conf" -o "$1" = "--noconf" ]; then
+ shift
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (no configuration files read)"
+
+ # set defaults
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+else
+ # Run in a subshell for protection against accidental errors
+ # in the config files
+ eval $(
+ set +e
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+
+ for file in /etc/devscripts.conf ~/.devscripts
+ do
+ [ -r $file ] && . $file
+ done
+
+ set | egrep '^(DEBCLEAN|DEVSCRIPTS)_')
+
+ # check sanity
+ case "$DEBCLEAN_CLEANDEBS" in
+ yes|no) ;;
+ *) DEBCLEAN_CLEANDEBS=no ;;
+ esac
+ case "$DEVSCRIPTS_CHECK_DIRNAME_LEVEL" in
+ 0|1|2) ;;
+ *) DEVSCRIPTS_CHECK_DIRNAME_LEVEL=1 ;;
+ esac
+
+ # set config message
+ MODIFIED_CONF=''
+ for var in $VARS; do
+ eval "if [ \"\$$var\" != \"\$DEFAULT_$var\" ]; then
+ MODIFIED_CONF_MSG=\"\$MODIFIED_CONF_MSG
+ $var=\$$var\";
+ MODIFIED_CONF=yes;
+ fi"
+ done
+
+ if [ -z "$MODIFIED_CONF" ]; then
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (none)"
+ fi
+fi
+
+# synonyms
+CHECK_DIRNAME_LEVEL="$DEVSCRIPTS_CHECK_DIRNAME_LEVEL"
+CHECK_DIRNAME_REGEX="$DEVSCRIPTS_CHECK_DIRNAME_REGEX"
+
+# Need -o option to getopt or else it doesn't work
+TEMP=$(getopt -s bash -o "" -o d \
+ --long cleandebs,nocleandebs,no-cleandebs \
+ --long no-conf,noconf \
+ --long check-dirname-level:,check-dirname-regex: \
+ --long help,version -n "$PROGNAME" -- "$@")
+if [ $? != 0 ] ; then exit 1 ; fi
+
+eval set -- $TEMP
+
+# Process Parameters
+while [ "$1" ]; do
+ case $1 in
+ --cleandebs) DEBCLEAN_CLEANDEBS=yes ;;
+ --nocleandebs|--no-cleandebs) DEBCLEAN_CLEANDEBS=no ;;
+ --check-dirname-level)
+ shift
+ case "$1" in
+ 0|1|2) CHECK_DIRNAME_LEVEL=$1 ;;
+ *) echo "$PROGNAME: unrecognised --check-dirname-level value (allowed are 0,1,2)" >&2
+ exit 1 ;;
+ esac
+ ;;
+ -d)
+ CHECKBUILDDEP="-d" ;;
+ --check-dirname-regex)
+ shift; CHECK_DIRNAME_REGEX="$1" ;;
+ --no-conf|--noconf)
+ echo "$PROGNAME: $1 is only acceptable as the first command-line option!" >&2
+ exit 1 ;;
+ --help) usage; exit 0 ;;
+ --version) version; exit 0 ;;
+ --) shift; break ;;
+ *) echo "$PROGNAME: bug in option parser, sorry!" >&2 ; exit 1 ;;
+ esac
+ shift
+done
+
+# Still going?
+if [ $# -gt 0 ]; then
+ echo "$PROGNAME takes no non-option arguments;" >&2
+ echo "try $PROGNAME --help for usage information" >&2
+ exit 1
+fi
+
+
+# Script to clean up debian directories
+
+OPWD="`pwd`"
+for i in `find . -type d -name "debian"`; do
+ ( # subshell to not lose where we are
+ DIR=${i%/debian}
+ echo "Cleaning in directory $DIR"
+ cd $DIR
+
+ # Clean up the source package, but only if the directory looks like
+ # a genuine build tree
+ if [ ! -f debian/changelog ]; then
+ echo "Directory $DIR: contains no debian/changelog, skipping" >&2
+ exit
+ fi
+ package="`dpkg-parsechangelog | sed -n 's/^Source: //p'`"
+ if [ -z "$package" ]; then
+ echo "Directory $DIR: unable to determine package name, skipping" >&2
+ exit
+ fi
+
+ # let's test the directory name if appropriate
+ if [ $CHECK_DIRNAME_LEVEL -eq 2 -o \
+ \( $CHECK_DIRNAME_LEVEL -eq 1 -a "$OPWD" != "`pwd`" \) ]; then
+ if ! perl -MFile::Basename -w \
+ -e "\$pkg='$package'; \$re='$CHECK_DIRNAME_REGEX';" \
+ -e '$re =~ s/PACKAGE/\\Q$pkg\\E/g; $pwd=`pwd`; chomp $pwd;' \
+ -e 'if ($re =~ m%/%) { eval "exit (\$pwd =~ /^$re\$/ ? 0:1);"; }' \
+ -e 'else { eval "exit (basename(\$pwd) =~ /^$re\$/ ? 0:1);"; }'
+ then
+ echo "Full directory path `pwd` does not match package name, skipping." >&2
+ echo "Run $progname --help for more information on directory name matching." >&2
+ exit
+ fi
+ fi
+
+ # We now know we're OK and debuild won't complain about the dirname
+ debuild $CHECKBUILDDEP clean
+
+ # Clean up the package related files
+ if [ "$DEBCLEAN_CLEANDEBS" = yes ]; then
+ cd ..
+ rm -f *.changes *.deb *.build
+ fi
+ )
+done
--- /dev/null
+#!/usr/bin/perl
+
+=head1 NAME
+
+debcommit - commit changes to a package
+
+=head1 SYNOPSIS
+
+B<debcommit> [I<options>] [B<--all> | I<files to commit>]
+
+=head1 DESCRIPTION
+
+B<debcommit> generates a commit message based on new text in B<debian/changelog>,
+and commits the change to a package's repository. It must be run in a working
+copy for the package. Supported version control systems are:
+B<cvs>, B<git>, B<hg> (mercurial), B<svk>, B<svn> (Subversion),
+B<baz>, B<bzr>, B<tla> (arch), B<darcs>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-c>, B<--changelog> I<path>
+
+Specify an alternate location for the changelog. By default debian/changelog is
+used.
+
+=item B<-r>, B<--release>
+
+Commit a release of the package. The version number is determined from
+debian/changelog, and is used to tag the package in the repository.
+
+Note that svn/svk tagging conventions vary, so debcommit uses
+svnpath(1) to determine where the tag should be placed in the
+repository.
+
+=item B<-R>, B<--release-use-changelog>
+
+When used in conjunction with B<--release>, if there are uncommited
+changes to the changelog then derive the commit message from those
+changes rather than using the default message.
+
+=item B<-m> I<text>, B<--message> I<text>
+
+Specify a commit message to use. Useful if the program cannot determine
+a commit message on its own based on debian/changelog, or if you want to
+override the default message.
+
+=item B<-n>, B<--noact>
+
+Do not actually do anything, but do print the commands that would be run.
+
+=item B<-d>, B<--diff>
+
+Instead of committing, do print the diff of what would have been committed if
+this option were not given. A typical usage scenario of this option is the
+generation of patches against the current working copy (e.g. when you don't have
+commit access right).
+
+=item B<-C>, B<--confirm>
+
+Display the generated commit message and ask for confirmation before committing
+it. It is also possible to edit the message at this stage; in this case, the
+confirmation prompt will be re-displayed after the editing has been performed.
+
+=item B<-e>, B<--edit>
+
+Edit the generated commit message in your favorite editor before committing
+it.
+
+=item B<-a>, B<--all>
+
+Commit all files. This is the default operation when using a VCS other
+than git.
+
+=item B<-s>, B<--strip-message>, B<--no-strip-message>
+
+If this option is set and the commit message has been derived from the
+changelog, the characters "* " will be stripped from the beginning of
+the message.
+
+This option is set by default and ignored if more than one line of
+the message begins with "[*+-] ".
+
+=item B<--sign-commit>, B<--no-sign-commit>
+
+If this option is set, then the commits that debcommit creates will be
+signed using gnupg. Currently this is only supported by git, hg, and bzr.
+
+=item B<--sign-tags>, B<--no-sign-tags>
+
+If this option is set, then tags that debcommit creates will be signed
+using gnupg. Currently this is only supported by git.
+
+=item B<--changelog-info>
+
+If this option is set, the commit author and date will be determined from
+the Maintainer and Date field of the first paragraph in F<debian/changelog>.
+This is mainly useful when using B<debchange>(1) with the B<--no-mainttrailer>
+option.
+
+=back
+
+=head1 CONFIGURATION VARIABLES
+
+The two configuration files F</etc/devscripts.conf> and
+F<~/.devscripts> are sourced by a shell in that order to set
+configuration variables. Command line options can be used to override
+configuration file settings. Environment variable settings are
+ignored for this purpose. The currently recognised variables are:
+
+=over 4
+
+=item B<DEBCOMMIT_STRIP_MESSAGE>
+
+If this is set to I<no>, then it is the same as the B<--no-strip-message>
+command line parameter being used. The default is I<yes>.
+
+=item B<DEBCOMMIT_SIGN_TAGS>
+
+If this is set to I<yes>, then it is the same as the B<--sign-tags> command
+line parameter being used. The default is I<no>.
+
+=item B<DEBCOMMIT_SIGN_COMMITS>
+
+If this is set to I<yes>, then it is the same as the B<--sign-commit>
+command line parameter being used. The default is I<no>.
+
+=item B<DEBCOMMIT_RELEASE_USE_CHANGELOG>
+
+If this is set to I<yes>, then it is the same as the B<--release-use-changelog>
+command line parameter being used. The default is I<no>.
+
+=item B<DEBSIGN_KEYID>
+
+This is the key id used for signing tags. If not set, a default will be
+chosen by the revision control system.
+
+=back
+
+=head1 VCS SPECIFIC FEATURES
+
+=over 4
+
+=item B<tla> / B<baz>
+
+If the commit message contains more than 72 characters, a summary will
+be created containing as many full words from the message as will fit within
+72 characters, followed by an ellipsis.
+
+=back
+
+Each of the features described below is applicable only if the commit message
+has been automatically determined from the changelog.
+
+=over 4
+
+=item B<git>
+
+If only a single change is detected in the changelog, B<debcommit> will unfold
+it to a single line and behave as if B<--strip-message> was used.
+
+Otherwise, the first change will be unfolded and stripped to form a summary line
+and a commit message formed using the summary line followed by a blank line and
+the changes as extracted from the changelog. B<debcommit> will then spawn an
+editor so that the message may be fine-tuned before committing.
+
+=item B<hg> / B<darcs>
+
+The first change detected in the changelog will be unfolded to form a single line
+summary. If multiple changes were detected then an editor will be spawned to
+allow the message to be fine-tuned.
+
+=item B<bzr>
+
+If the changelog entry used for the commit message closes any bugs then B<--fixes>
+options to "bzr commit" will be generated to associate the revision and the bugs.
+
+=back
+
+=cut
+
+use warnings;
+use strict;
+use Getopt::Long qw(:config gnu_getopt);
+use Cwd;
+use File::Basename;
+use File::Temp;
+my $progname = basename($0);
+
+my $modified_conf_msg;
+
+sub usage {
+ print <<"EOT";
+Usage: $progname [options] [files to commit]
+ $progname --version
+ $progname --help
+
+Generates a commit message based on new text in debian/changelog,
+and commit the change to a package\'s repository.
+
+Options:
+ -c --changelog=path Specify the location of the changelog
+ -r --release Commit a release of the package and create a tag
+ -R --release-use-changelog
+ Take any uncommitted changes in the changelog in
+ to account when determining the commit message
+ for a release
+ -m --message=text Specify a commit message
+ -n --noact Dry run, no actual commits
+ -d --diff Print diff on standard output instead of committing
+ -C --confirm Ask for confirmation of the message before commit
+ -e --edit Edit the message in EDITOR before commit
+ -a --all Commit all files (default except for git)
+ -s --strip-message Strip the leading '* ' from the commit message (default)
+ --no-strip-message Do not strip a leading '* '
+ --sign-commit Enable signing of the commit (git, hg, and bzr)
+ --no-sign-commit Do not sign the commit (default)
+ --sign-tags Enable signing of tags (git only)
+ --no-sign-tags Do not sign tags (default)
+ --changelog-info Use author and date information from the changelog
+ for the commit (git, hg, and bzr)
+ -h --help This message
+ -v --version Version information
+
+ --no-conf, --noconf
+ Don\'t read devscripts config files;
+ must be the first option given
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+
+EOT
+}
+
+sub version {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright by Joey Hess <joeyh\@debian.org>, all rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+}
+
+my $release=0;
+my $message;
+my $release_use_changelog=0;
+my $noact=0;
+my $diffmode=0;
+my $confirm=0;
+my $edit=0;
+my $all=0;
+my $stripmessage=1;
+my $signcommit=0;
+my $signtags=0;
+my $changelog;
+my $changelog_info=0;
+my $keyid;
+my ($package, $version, $date, $maintainer);
+my $onlydebian=0;
+
+# Now start by reading configuration files and then command line
+# The next stuff is boilerplate
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'DEBCOMMIT_STRIP_MESSAGE' => 'yes',
+ 'DEBCOMMIT_SIGN_COMMITS' => 'no',
+ 'DEBCOMMIT_SIGN_TAGS' => 'no',
+ 'DEBCOMMIT_RELEASE_USE_CHANGELOG' => 'no',
+ 'DEBSIGN_KEYID' => '',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ # Check validity
+ $config_vars{'DEBCOMMIT_STRIP_MESSAGE'} =~ /^(yes|no)$/
+ or $config_vars{'DEBCOMMIT_STRIP_MESSAGE'}='yes';
+ $config_vars{'DEBCOMMIT_SIGN_COMMITS'} =~ /^(yes|no)$/
+ or $config_vars{'DEBCOMMIT_SIGN_COMMITS'}='no';
+ $config_vars{'DEBCOMMIT_SIGN_TAGS'} =~ /^(yes|no)$/
+ or $config_vars{'DEBCOMMIT_SIGN_TAGS'}='no';
+ $config_vars{'DEBCOMMIT_RELEASE_USE_CHANGELOG'} =~ /^(yes|no)$/
+ or $config_vars{'DEBCOMMIT_RELEASE_USE_CHANGELOG'}='no';
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $stripmessage = $config_vars{'DEBCOMMIT_STRIP_MESSAGE'} eq 'no' ? 0 : 1;
+ $signcommit = $config_vars{'DEBCOMMIT_SIGN_COMMITS'} eq 'no' ? 0 : 1;
+ $signtags = $config_vars{'DEBCOMMIT_SIGN_TAGS'} eq 'no' ? 0 : 1;
+ $release_use_changelog = $config_vars{'DEBCOMMIT_RELEASE_USE_CHANGELOG'} eq 'no' ? 0 : 1;
+ if (exists $config_vars{'DEBSIGN_KEYID'} &&
+ length $config_vars{'DEBSIGN_KEYID'}) {
+ $keyid=$config_vars{'DEBSIGN_KEYID'};
+ }
+}
+
+# Find a good default for the changelog file location
+
+for (qw"debian/changelog changelog") {
+ if (-e $_) {
+ $changelog = $_;
+ last;
+ }
+}
+
+# Now read the command line arguments
+
+if (! GetOptions(
+ "r|release" => \$release,
+ "m|message=s" => \$message,
+ "n|noact" => \$noact,
+ "d|diff" => \$diffmode,
+ "C|confirm" => \$confirm,
+ "e|edit" => \$edit,
+ "a|all" => \$all,
+ "c|changelog=s" => \$changelog,
+ "s|strip-message!" => \$stripmessage,
+ "sign-commit!" => \$signcommit,
+ "sign-tags!" => \$signtags,
+ "changelog-info!" => \$changelog_info,
+ "R|release-use-changelog!" => \$release_use_changelog,
+ "h|help" => sub { usage(); exit 0; },
+ "v|version" => sub { version(); exit 0; },
+ )) {
+ die "Usage: $progname [options] [--all | files to commit]\n";
+}
+
+if ($diffmode) {
+ $confirm = 0;
+ $edit = 0;
+}
+
+my @files_to_commit = @ARGV;
+if (@files_to_commit && !grep(/$changelog/,@files_to_commit)) {
+ push @files_to_commit, $changelog;
+}
+
+# Main program
+
+my $prog=getprog();
+if (! defined $changelog) {
+ die "debcommit: Could not find a Debian changelog\n";
+}
+if (! -e $changelog) {
+ die "debcommit: cannot find $changelog\n";
+}
+
+$message=getmessage() if ! defined $message and (not $release or $release_use_changelog);
+
+if ($release || $changelog_info) {
+ require Dpkg::Changelog::Parse;
+ my $log = Dpkg::Changelog::Parse::changelog_parse(file => $changelog);
+ if ($release) {
+ if ($log->{Distribution} =~ /UNRELEASED/) {
+ die "debcommit: $changelog says it's UNRELEASED\nTry running dch --release first\n";
+ }
+ $package = $log->{Source};
+ $version = $log->{Version};
+
+ $message="releasing package $package version $version" if ! defined $message;
+ }
+ if ($changelog_info) {
+ $maintainer = $log->{Maintainer};
+ $date = $log->{Date};
+ }
+}
+
+if ($edit) {
+ my $modified = 0;
+ ($message, $modified) = edit($message);
+ die "$progname: Commit message not modified / saved; aborting\n" unless $modified;
+}
+
+if (not $confirm or confirm($message)) {
+ commit($message);
+ tag($package, $version) if $release;
+}
+
+# End of code, only subs below
+
+sub getprog {
+ if (-d "debian") {
+ if (-d "debian/.svn") {
+ # SVN has .svn even in subdirs...
+ if (! -d ".svn") {
+ $onlydebian = 1;
+ }
+ return "svn";
+ } elsif (-d "debian/CVS") {
+ # CVS has CVS even in subdirs...
+ if (! -d "CVS") {
+ $onlydebian = 1;
+ }
+ return "cvs";
+ } elsif (-d "debian/{arch}") {
+ # I don't think we can tell just from the working copy
+ # whether to use tla or baz, so try baz if it's available,
+ # otherwise fall back to tla.
+ if (system ("baz --version >/dev/null 2>&1") == 0) {
+ return "baz";
+ } else {
+ return "tla";
+ }
+ } elsif (-d "debian/_darcs") {
+ $onlydebian = 1;
+ return "darcs";
+ }
+ }
+ if (-d ".svn") {
+ return "svn";
+ }
+ if (-d "CVS") {
+ return "cvs";
+ }
+ if (-d "{arch}") {
+ # I don't think we can tell just from the working copy
+ # whether to use tla or baz, so try baz if it's available,
+ # otherwise fall back to tla.
+ if (system ("baz --version >/dev/null 2>&1") == 0) {
+ return "baz";
+ } else {
+ return "tla";
+ }
+ }
+ if (-d ".bzr") {
+ return "bzr";
+ }
+ if (-d ".git") {
+ return "git";
+ }
+ if (-d ".hg") {
+ return "hg";
+ }
+ if (-d "_darcs") {
+ return "darcs";
+ }
+
+ # Test for this file to avoid interactive prompting from svk.
+ if (-d "$ENV{HOME}/.svk/local") {
+ # svk has no useful directories so try to run it.
+ my $svkpath=`svk info . 2>/dev/null| grep -i '^Depot Path:' | cut -d ' ' -f 3`;
+ if (length $svkpath) {
+ return "svk";
+ }
+ }
+
+ # .bzr, .git, .hg, or .svn may be in a parent directory, rather than the
+ # current directory, if multiple packages are kept in one repository.
+ my $dir=getcwd();
+ while ($dir=~s/[^\/]*\/?$// && length $dir) {
+ if (-d "$dir/.bzr") {
+ return "bzr";
+ }
+ if (-d "$dir/.git") {
+ return "git";
+ }
+ if (-d "$dir/.hg") {
+ return "hg";
+ }
+ if (-d "$dir/.svn") {
+ return "svn";
+ }
+ }
+
+ die "debcommit: not in a cvs, Subversion, baz, bzr, git, hg, svk or darcs working copy\n";
+}
+
+sub action {
+ my $prog=shift;
+ if ($prog eq "darcs" && $onlydebian) {
+ splice(@_, 1, 0, "--repodir=debian");
+ }
+ print $prog, " ",
+ join(" ", map { if (/[^-A-Za-z0-9]/) { "'$_'" } else { $_ } } @_), "\n";
+ return 1 if $noact;
+ return (system($prog, @_) != 0) ? 0 : 1;
+}
+
+sub bzr_find_fixes {
+ my $message=shift;
+
+ require Dpkg::Changelog::Entry::Debian;
+ require Dpkg::Vendor::Ubuntu;
+
+ my @debian_closes = Dpkg::Changelog::Entry::Debian::find_closes($message);
+ my $launchpad_closes = Dpkg::Vendor::Ubuntu::find_launchpad_closes($message);
+
+ my @fixes_arg = ();
+ map { push(@fixes_arg, ("--fixes", "deb:".$_)) } @debian_closes;
+ map { push(@fixes_arg, ("--fixes", "lp:".$_)) } @$launchpad_closes;
+ return @fixes_arg;
+}
+
+sub commit {
+ my $message=shift;
+
+ die "debcommit: can't specify a list of files to commit when using --all\n"
+ if (@files_to_commit and $all);
+
+ my $action_rc; # return code of external command
+ if ($prog =~ /^(cvs|svn|svk|hg)$/) {
+ if (!@files_to_commit && $onlydebian) {
+ @files_to_commit = ("debian");
+ }
+ my @extra_args;
+ if ($changelog_info && $prog eq 'hg') {
+ push(@extra_args, '-u', $maintainer, '-d', $date);
+ }
+ $action_rc = $diffmode
+ ? action($prog, "diff", @files_to_commit)
+ : action($prog, "commit", "-m", $message, @extra_args, @files_to_commit);
+ if ($prog eq 'hg' && $action_rc && $signcommit) {
+ my @sign_args;
+ push(@sign_args, '-k', $keyid) if $keyid;
+ push(@sign_args, '-u', $maintainer, '-d', $date) if $changelog_info;
+ if (!action($prog, 'sign', @sign_args)) {
+ die "$progname: failed to sign commit\n";
+ }
+ }
+ }
+ elsif ($prog eq 'git') {
+ if (! @files_to_commit && ($all || $release)) {
+ # check to see if the WC is clean. git-commit would exit
+ # nonzero, so don't run it in --all or --release mode.
+ my $status=`git status --porcelain`;
+ if (!$status) {
+ print $status;
+ return;
+ }
+ }
+ if ($diffmode) {
+ $action_rc = action($prog, "diff", @files_to_commit);
+ } else {
+ if ($all) {
+ @files_to_commit=("-a")
+ }
+ my @extra_args = ();
+ if ($changelog_info) {
+ @extra_args = ("--author=$maintainer", "--date=$date");
+ }
+ if ($signcommit) {
+ my $sign = '--gpg-sign';
+ $sign .= "=$keyid" if $keyid;
+ push(@extra_args, $sign);
+ }
+ $action_rc = action($prog, "commit", "-m", $message, @extra_args, @files_to_commit);
+ }
+ }
+ elsif ($prog eq 'tla' || $prog eq 'baz') {
+ my $summary=$message;
+ $summary=~s/^((?:\* )?[^\n]{1,72})(?:(?:\s|\n).*|$)/$1/ms;
+ my @args;
+ if (! $diffmode) {
+ if ($summary eq $message) {
+ $summary=~s/^\* //s;
+ @args=("-s", $summary);
+ } else {
+ $summary=~s/^\* //s;
+ @args=("-s", "$summary ...", "-L", $message);
+ }
+ }
+ push(
+ @args,
+ (($prog eq 'tla') ? '--' : ()),
+ @files_to_commit,
+ ) if @files_to_commit;
+ $action_rc = action($prog, $diffmode ? "diff" : "commit", @args);
+ }
+ elsif ($prog eq 'bzr') {
+ if ($diffmode) {
+ $action_rc = action($prog, "diff", @files_to_commit);
+ } else {
+ my @extra_args = bzr_find_fixes($message);
+ if ($changelog_info) {
+ eval {
+ require Date::Format;
+ require Date::Parse;
+ };
+ if ($@) {
+ my $error = "$progname: Couldn't format the changelog date: ";
+ if ($@ =~ m%^Can\'t locate Date%) {
+ $error .= "the libtimedate-perl package is not installed";
+ } else {
+ $error .= "couldn't load Date::Format/Date::Parse: $@";
+ }
+ die "$error\n";
+ }
+ my @time = Date::Parse::strptime($date);
+ my $time = Date::Format::strftime('%Y-%m-%d %H:%M:%S %z', \@time);
+ push(@extra_args, "--author=$maintainer", "--commit-time=$time");
+ }
+ my @sign_args;
+ if ($signcommit) {
+ push(@sign_args, "-Ocreate_signatures=always");
+ if ($keyid) {
+ push(@sign_args, "-Ogpg_signing_key=$keyid");
+ }
+ }
+ $action_rc = action($prog, @sign_args, "commit", "-m", $message,
+ @extra_args, @files_to_commit);
+ }
+ }
+ elsif ($prog eq 'darcs') {
+ if (! @files_to_commit && ($all || $release)) {
+ # check to see if the WC is clean. darcs record would exit
+ # nonzero, so don't run it in --all or --release mode.
+ $action_rc = action($prog, "status");
+ if (!$action_rc) {
+ return;
+ }
+ }
+ if ($diffmode) {
+ $action_rc = action($prog, "diff", @files_to_commit);
+ } else {
+ my $fh = File::Temp->new(TEMPLATE => '.commit-tmp.XXXXXX');
+ $fh->print("$message\n");
+ $fh->close();
+ $action_rc = action($prog, "record", "--logfile", "$fh", "-a", @files_to_commit);
+ }
+ }
+ else {
+ die "debcommit: unknown program $prog";
+ }
+ die "debcommit: commit failed\n" if (! $action_rc);
+}
+
+sub tag {
+ my ($package, $tag) = @_;
+
+ if ($prog eq 'svn' || $prog eq 'svk') {
+ my $svnpath=`svnpath`;
+ chomp $svnpath;
+ my $tagpath=`svnpath tags`;
+ chomp $tagpath;
+
+ if (! action($prog, "copy", $svnpath, "$tagpath/$tag",
+ "-m", "tagging package $package version $tag")) {
+ if (! action($prog, "mkdir", $tagpath,
+ "-m", "create tag directory") ||
+ ! action($prog, "copy", $svnpath, "$tagpath/$tag",
+ "-m", "tagging package $package version $tag")) {
+ die "debcommit: failed tagging with $tag\n";
+ }
+ }
+ }
+ elsif ($prog eq 'cvs') {
+ $tag=~s/^[0-9]+://; # strip epoch
+ $tag=~tr/./_/; # mangle for cvs
+ $tag="debian_version_$tag";
+ if (! action("cvs", "tag", "-f", $tag)) {
+ die "debcommit: failed tagging with $tag\n";
+ }
+ }
+ elsif ($prog eq 'tla' || $prog eq 'baz') {
+ my $archpath=`archpath`;
+ chomp $archpath;
+ my $tagpath=`archpath releases--\Q$tag\E`;
+ chomp $tagpath;
+ my $subcommand;
+ if ($prog eq 'baz') {
+ $subcommand="branch";
+ } else {
+ $subcommand="tag";
+ }
+
+ if (! action($prog, $subcommand, $archpath, $tagpath)) {
+ die "debcommit: failed tagging with $tag\n";
+ }
+ }
+ elsif ($prog eq 'bzr') {
+ if (action("$prog tags >/dev/null 2>&1")) {
+ if (! action($prog, "tag", $tag)) {
+ die "debcommit: failed tagging with $tag\n";
+ }
+ } else {
+ die "debcommit: bazaar or branch version too old to support tags\n";
+ }
+ }
+ elsif ($prog eq 'git') {
+ $tag=~s/^[0-9]+://; # strip epoch
+ $tag=~tr/~/./; # mangle for git
+ if ($tag=~/-/) {
+ # not a native package, so tag as a debian release
+ $tag="debian/$tag";
+ }
+
+ if ($signtags) {
+ if (defined $keyid) {
+ if (! action($prog, "tag", "-u", $keyid, "-m",
+ "tagging package $package version $tag", $tag)) {
+ die "debcommit: failed tagging with $tag\n";
+ }
+ }
+ else {
+ if (! action($prog, "tag", "-s", "-m",
+ "tagging package $package version $tag", $tag)) {
+ die "debcommit: failed tagging with $tag\n";
+ }
+ }
+ }
+ elsif (! action($prog, "tag", $tag)) {
+ die "debcommit: failed tagging with $tag\n";
+ }
+ }
+ elsif ($prog eq 'hg') {
+ $tag=~s/^[0-9]+://; # strip epoch
+ $tag="debian-$tag";
+ if (! action($prog, "tag", "-m", "tagging package $package version $tag", $tag)) {
+ die "debcommit: failed tagging with $tag\n";
+ }
+ }
+ elsif ($prog eq 'darcs') {
+ if (! action($prog, "tag", $tag)) {
+ die "debcommit: failed tagging with $tag\n";
+ }
+ }
+ else {
+ die "debcommit: unknown program $prog";
+ }
+}
+
+sub getmessage {
+ my $ret;
+
+ if ($prog =~ /^(cvs|svn|svk|tla|baz|bzr|git|hg|darcs)$/) {
+ $ret='';
+ my @diffcmd;
+
+ if ($prog eq 'tla') {
+ @diffcmd = ($prog, 'diff', '-D', '-w', '--');
+ } elsif ($prog eq 'baz') {
+ @diffcmd = ($prog, 'file-diff');
+ } elsif ($prog eq 'bzr') {
+ @diffcmd = ($prog, 'diff', '--diff-options', '-wu');
+ } elsif ($prog eq 'git') {
+ if (git_repo_has_commits()) {
+ if ($all) {
+ @diffcmd = ('git', 'diff', '-w', '--no-color');
+ } else {
+ @diffcmd = ('git', 'diff', '-w', '--cached', '--no-color');
+ }
+ } else {
+ # No valid head! Rather than fail, cheat and use 'diff'
+ @diffcmd = ('diff', '-u', '/dev/null');
+ }
+ } elsif ($prog eq 'svn') {
+ @diffcmd = ($prog, 'diff', '--diff-cmd', '/usr/bin/diff', '--extensions', '-wu');
+ } elsif ($prog eq 'svk') {
+ $ENV{'SVKDIFF'} = '/usr/bin/diff -w -u';
+ @diffcmd = ($prog, 'diff');
+ } elsif ($prog eq 'darcs') {
+ @diffcmd = ($prog, 'diff', '--diff-opts=-wu');
+ if ($onlydebian) {
+ push(@diffcmd, '--repodir=debian');
+ }
+ } else {
+ @diffcmd = ($prog, 'diff', '-w');
+ }
+
+ open CHLOG, '-|', @diffcmd, $changelog
+ or die "debcommit: cannot run $diffcmd[0]: $!\n";
+
+ foreach (<CHLOG>) {
+ next unless s/^\+( |\t)//;
+ next if /^\s*\[.*\]\s*$/; # maintainer name
+ $ret .= $_;
+ }
+
+ if (! length $ret) {
+ if ($release) {
+ return;
+ } else {
+ my $info='';
+ if ($prog eq 'git') {
+ $info = ' (do you mean "debcommit -a" or did you forget to run "git add"?)';
+ }
+ die "debcommit: unable to determine commit message using $prog$info\nTry using the -m flag.\n";
+ }
+ } else {
+ if ($prog =~ /^(git|hg|darcs)$/ and not $diffmode) {
+ my $count = () = $ret =~ /^\s*[\*\+-] /mg;
+
+ if ($count == 1) {
+ # Unfold
+ $ret =~ s/\n\s+/ /mg;
+ } else {
+ my $summary = '';
+
+ # We're constructing a message that can be used as a
+ # good starting point, the user will need to fine-tune it
+ $edit = 1;
+
+ $summary = $ret;
+ # Strip off the second and subsequent changes
+ $summary =~ s/(^\* .*?)^\s*[\*\+-] .*/$1/ms;
+ # Unfold
+ $summary =~ s/\n\s+/ /mg;
+
+ if ($prog eq 'git') {
+ $summary =~ s/^\* //;
+ $ret = $summary . "\n" . $ret;
+ } else {
+ # Strip off the first change so that we can prepend
+ # the unfolded version
+ $ret =~ s/^\* .*?(^\s*[\*\+-] .*)/$1\n/msg;
+ $ret = $summary . $ret;
+ }
+ }
+ }
+
+ if ($stripmessage or $prog eq 'git') {
+ my $count = () = $ret =~ /^[ \t]*[\*\+-] /mg;
+ if ($count == 1) {
+ $ret =~ s/^[ \t]*[\*\+-] //;
+ $ret =~ s/^[ \t]*//mg;
+ }
+ }
+ }
+ }
+ else {
+ die "debcommit: unknown program $prog";
+ }
+
+ chomp $ret;
+ return $ret;
+}
+
+sub confirm {
+ my $confirmmessage=shift;
+ print $confirmmessage, "\n--\n";
+ while(1) {
+ print "OK to commit? [Y/n/e] ";
+ $_ = <STDIN>;
+ return 0 if /^n/i;
+ if (/^(y|$)/i) {
+ $message = $confirmmessage;
+ return 1;
+ } elsif (/^e/i) {
+ ($confirmmessage) = edit($confirmmessage);
+ print "\n", $confirmmessage, "\n--\n";
+ }
+ }
+}
+
+# The string returned by edit is chomp()ed, so anywhere we present that string
+# to the user again needs to have a \n tacked on to the end.
+sub edit {
+ my $message=shift;
+ my $fh=File::Temp->new(TEMPLATE => '.commit-tmp.XXXXXX')
+ || die "$progname: unable to create a temporary file.\n";
+ # Ensure the message we present to the user has an EOL on the last line.
+ chomp($message);
+ $fh->print("$message\n");
+ $fh->close();
+ my $mtime = (stat("$fh"))[9];
+ defined $mtime || die "$progname: unable to retrieve modification time for temporary file: $!\n";
+ $mtime--;
+ utime $mtime, $mtime, $fh->filename;
+ system("sensible-editor $fh");
+ open(FH, '<', "$fh") || die "$progname: unable to open temporary file for reading\n";
+ $message = "";
+ while(<FH>) {
+ $message .= $_;
+ }
+ close(FH);
+ my $newmtime = (stat("$fh"))[9];
+ defined $newmtime || die "$progname: unable to retrieve modification time for updated temporary file: $!\n";
+ chomp $message;
+ return ($message, $mtime != $newmtime);
+}
+
+sub git_repo_has_commits {
+ my $command = "git rev-parse --verify --quiet HEAD >/dev/null";
+ system $command;
+ return ($? >> 8 == 0) ? 1 : 0;
+}
+
+=head1 LICENSE
+
+This code is copyright by Joey Hess <joeyh@debian.org>, all rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+
+=head1 AUTHOR
+
+Joey Hess <joeyh@debian.org>
+
+=head1 SEE ALSO
+
+B<debchange>(1), B<svnpath>(1)
+
+=cut
--- /dev/null
+.TH DEBDIFF 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+debdiff \- compare file lists in two Debian packages
+.SH SYNOPSIS
+\fBdebdiff\fR [\fIoptions\fR] \fR
+.br
+\fBdebdiff\fR [\fIoptions\fR] ... \fIdeb1 deb2\fR
+.br
+\fBdebdiff\fR [\fIoptions\fR] ... \fIchanges1 changes2\fR
+.br
+\fBdebdiff\fR [\fIoptions\fR] ... \fB\-\-from \fIdeb1a deb1b ...
+\fB\-\-to \fIdeb2a deb2b ...\fR
+.br
+\fBdebdiff\fR [\fIoptions\fR] ... \fIdsc1 dsc2\fR
+.SH DESCRIPTION
+\fBdebdiff\fR takes the names of two Debian package files (\fI.deb\fRs
+or \fI.udeb\fRs) on the command line and compares their contents
+(considering only the files in the main package, not the maintenance
+scripts). It shows which files have been introduced and which removed
+between the two package files, and is therefore useful for spotting
+files which may have been inadvertently lost between revisions of the
+package. It also checks the file owners and permissions, and compares
+the control files of the two packages using the \fBwdiff\fR program.
+If you want a deeper comparison of two Debian package files you can
+use the \fBdebbindiff\fR tool.
+.PP
+If no arguments are given, \fBdebdiff\fR tries to compare the content
+of the current source directory with the last version of the package.
+.PP
+\fBdebdiff\fR can also handle changes between groups of \fI.deb\fR
+files in two ways. The first is to specify two \fI.changes\fR files.
+In this case, the \fI.deb\fR files listed in the \fI.changes\fR file
+will be compared, by taking the contents of all of the
+listed \fI.deb\fR files together. (The \fI.deb\fR files listed are
+assumed to be in the same directory as the \fI.changes\fR file.) The
+second way is to list the \fI.deb\fR files of interest specifically
+using the \fB\-\-from\fR ... \fB\-\-to\fR syntax. These both help if
+a package is broken up into smaller packages and one wishes to ensure
+that nothing is lost in the interim.
+.PP
+\fBdebdiff\fR examines the \fBdevscripts\fR configuration files as
+described below. Command line options override the configuration file
+settings, though.
+.PP
+If \fBdebdiff\fR is passed two source packages (\fI.dsc\fR files) it
+will compare the contents of the source packages. If the source
+packages differ only in Debian revision number (that is,
+the \fI.orig.tar.gz\fR files are the same in the two \fI.dsc\fR
+files), then \fBinterdiff\fR(1) will be used to compare the two patch
+files if this program is available on the system, otherwise a
+\fBdiff\fR will be performed between the two source trees.
+.SH OPTIONS
+.TP
+.BR \-\-dirs ", " \-d
+The default mode of operation is to ignore directory names which
+appear in the file list, but they, too, will be considered if this
+option is given.
+.TP
+.B \-\-nodirs
+Ignore directory names which appear in the file list. This is the
+default and it can be used to override a configuration file setting.
+.TP
+.BI \-\-move " FROM TO" "\fR,\fP \-m" " FROM TO"
+It sometimes occurs that various files or directories are moved around
+between revisions. This can be handled using this option. There are
+two arguments, the first giving the location of the directory or file
+in the first package, and the second in the second. Any files in the
+first listing whose names begin with the first argument are treated as
+having that substituted for the second argument when the file lists
+are compared. Any number of \fB\-\-move\fR arguments may be given;
+they are processed in the order in which they appear.
+.TP
+.BI \-\-move\-regex " FROM TO"
+This is the same as \fB\-\-move\fR, except that \fIFROM\fR is treated
+as a regular expression and the \fBperl\fR substitution command
+\fIs/^FROM/TO/\fR is applied to the files. In particular, TO can make
+use of backreferences such as $1.
+.TP
+.B \-\-nocontrol
+\fBdebdiff\fR will usually compare the respective control files of the
+packages using \fBwdiff\fR(1). This option suppresses this part of
+the processing.
+.TP
+.B \-\-control
+Compare the respective control files; this is the default, and it can
+be used to override a configuration file setting.
+.TP
+.BI \-\-controlfiles " FILE\fR[\fP", "FILE\fR ...]\fP"
+Specify which control files to compare; by default this is just
+\fIcontrol\fR, but could include \fIpostinst\fR, \fIconfig\fR and so
+on. Files will only be compared if they are present in both
+\fI.debs\fR being compared. The special value \fIALL\fR compares all
+control files present in both packages, except for md5sums. This
+option can be used to override a configuration file setting.
+.TP
+.B \-\-wdiff\-source\-control
+When processing source packages, compare control files using \fBwdiff\fR.
+Equivalent to the \fB\-\-control\fR option for binary packages.
+.TP
+.B \-\-no\-wdiff\-source\-control
+Do not compare control files in source packages using \fBwdfiff\fR. This
+is the default.
+.TP
+.BR \-\-wp ", " \-\-wl ", " \-\-wt
+Pass a \fB\-p\fR, \fB\-l\fR or \fB\-t\fR option to \fBwdiff\fR
+respectively. (This yields the whole \fBwdiff\fR output rather than
+just the lines with any changes.)
+.TP
+.B \-\-show-moved
+If multiple \fI.deb\fR files are specified on the command line, either
+using \fI.changes\fR files or the \fB\-\-from\fR/\fB\-\-to\fR syntax,
+then this option will also show which files (if any) have moved
+between packages. (The package names are simply determined from the
+names of the \fI.deb\fR files.)
+.TP
+.B \-\-noshow-moved
+The default behaviour; can be used to override a configuration file
+setting.
+.TP
+.BI \-\-renamed " FROM TO"
+If \fB\-\-show-moved\fR is being used and a package has been renamed
+in the process, this command instructs \fBdebdiff\fR to treat the
+package in the first list called \fIFROM\fR as if it were called
+\fITO\fR. Multiple uses of this option are permitted.
+.TP
+.BI \-\-exclude " PATTERN"
+Exclude files that match \fIPATTERN\fR. Multiple uses of this option
+are permitted.
+.TP
+.B \-\-diffstat
+Include the result of \fBdiffstat\fR before the generated diff.
+.TP
+.B \-\-no\-diffstat
+The default behaviour; can be used to override a configuration file
+setting.
+.TP
+.B \-\-auto\-ver\-sort
+When comparing source packages, do so in version order.
+.TP
+.B \-\-no\-auto\-ver\-sort
+Compare source packages in the order they were passed on the
+command-line, even if that means comparing a package with a higher
+version against one with a lower version. This is the default
+behaviour.
+.TP
+.B \-\-unpack\-tarballs
+When comparing source packages, also unpack tarballs found in the top level
+source directory to compare their contents along with the other files.
+This is the default behaviour.
+.TP
+.B \-\-no\-unpack\-tarballs
+Do not unpack tarballs inside source packages.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+.BR \-\-help ", " \-h
+Show a summary of options.
+.TP
+.BR \-\-version ", " \-v
+Show version and copyright information.
+.TP
+.BR \-\-quiet ", " \-q
+Be quiet if no differences were found.
+.TP
+.BR \-\-ignore\-space ", " \-w
+Ignore whitespace in diffs.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced by a shell in that order to set
+configuration variables. Command line options can be used to override
+configuration file settings. Environment variable settings are
+ignored for this purpose. The currently recognised variables are:
+.TP
+.B DEBDIFF_DIRS
+If this is set to \fIyes\fR, then it is the same as the
+\fB\-\-dirs\fR command line parameter being used.
+.TP
+.B DEBDIFF_CONTROL
+If this is set to \fIno\fR, then it is the same as the
+\fB\-\-nocontrol\fR command line parameter being used. The default is
+\fIyes\fR.
+.TP
+.B DEBDIFF_CONTROLFILES
+Which control files to compare, corresponding to the
+\fB\-\-controlfiles\fR command line option. The default is
+\fIcontrol\fR.
+.TP
+.B DEBDIFF_SHOW_MOVED
+If this is set to \fIyes\fR, then it is the same as the
+\fB\-\-show\-moved\fR command line parameter being used.
+.TP
+.B DEBDIFF_WDIFF_OPT
+This option will be passed to \fBwdiff\fR; it should be one of
+\fB\-p\fR, \fB\-l\fR or \fB\-t\fR.
+.TP
+.B DEBDIFF_SHOW_DIFFSTAT
+If this is set to \fIyes\fR, then it is the same as the
+\fB\-\-diffstat\fR command line parameter being used.
+.TP
+.B DEBDIFF_WDIFF_SOURCE_CONTROL
+If this is set to \fIyes\fR, then it is the same as the
+\fB\-\-wdiff\-source\-control\fR command line parameter being used.
+.TP
+.B DEBDIFF_AUTO_VER_SORT
+If this is set to \fIyes\fR, then it is the same as the
+\fB\-\-auto\-ver\-sort\fR command line parameter being used.
+.TP
+.B DEBDIFF_UNPACK_TARBALLS
+If this is set to \fIno\fR, then it is the same as the
+\fB\-\-no\-unpack\-tarballs\fR command line parameter being used.
+.SH "EXIT VALUES"
+Normally the exit value will be 0 if no differences are reported and 1
+if any are reported. If there is some fatal error, the exit code will
+be 255.
+.SH "SEE ALSO"
+.BR diffstat (1),
+.BR dpkg-deb (1),
+.BR interdiff (1),
+.BR wdiff (1),
+.BR devscripts.conf (5),
+.BR debbindiff (1)
+.SH AUTHOR
+\fBdebdiff\fR was originally written as a shell script by Yann Dirson
+<dirson@debian.org> and rewritten in Perl with many more features by
+Julian Gilbey <jdg@debian.org>. The software may be freely
+redistributed under the terms and conditions of the GNU General Public
+License, version 2.
--- /dev/null
+#!/usr/bin/perl -w
+
+# Original shell script version:
+# Copyright 1998,1999 Yann Dirson <dirson@debian.org>
+# Perl version:
+# Copyright 1999,2000,2001 by Julian Gilbey <jdg@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License, version 2 ONLY,
+# as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+use 5.006_000;
+use strict;
+use Cwd;
+use Dpkg::IPC;
+use File::Copy qw(cp move);
+use File::Basename;
+use File::Spec;
+use File::Path qw/ rmtree /;
+use File::Temp qw/ tempdir tempfile /;
+BEGIN { push @INC, '/usr/share/devscripts'; }
+use Devscripts::Compression;
+use Devscripts::Versort;
+
+# Predeclare functions
+sub wdiff_control_files($$$$$);
+sub process_debc($$);
+sub process_debI($);
+sub mktmpdirs();
+sub fatal(@);
+
+my $progname = basename($0);
+my $modified_conf_msg;
+my $exit_status = 0;
+my $dummyname = "---DUMMY---";
+
+my $compression_re = compression_get_file_extension_regex();
+
+sub usage {
+ print <<"EOF";
+Usage: $progname [option]
+ or: $progname [option] ... deb1 deb2
+ or: $progname [option] ... changes1 changes2
+ or: $progname [option] ... dsc1 dsc2
+ or: $progname [option] ... --from deb1a deb1b ... --to deb2a deb2b ...
+Valid options are:
+ --no-conf, --noconf
+ Don\'t read devscripts config files;
+ must be the first option given
+ --help, -h Display this message
+ --version, -v Display version and copyright info
+ --move FROM TO, The prefix FROM in first packages has
+ -m FROM TO been renamed TO in the new packages
+ (multiple permitted)
+ --move-regex FROM TO, The prefix FROM in first packages has
+ been renamed TO in the new packages
+ (multiple permitted), using regexp substitution
+ --dirs, -d Note changes in directories as well as files
+ --nodirs Do not note changes in directories (default)
+ --nocontrol Skip comparing control files
+ --control Do compare control files
+ --controlfiles FILE,FILE,...
+ Which control files to compare; default is just
+ control; could include preinst, etc, config or
+ ALL to compare all control files present
+ --wp, --wl, --wt Pass the option -p, -l, -t respectively to wdiff
+ (only one should be used)
+ --wdiff-source-control When processing source packages, compare control
+ files as with --control for binary packages
+ --no-wdiff-source-control
+ Do not do so (default)
+ --show-moved Indicate also all files which have moved
+ between packages
+ --noshow-moved Do not also indicate all files which have moved
+ between packages (default)
+ --renamed FROM TO The package formerly called FROM has been
+ renamed TO; only of interest with --show-moved
+ (multiple permitted)
+ --quiet, -q Be quiet if no differences were found
+ --exclude PATTERN Exclude files that match PATTERN
+ --ignore-space, -w Ignore whitespace in diffs
+ --diffstat Include the result of diffstat before the diff
+ --no-diffstat Do not do so (default)
+ --auto-ver-sort When comparing source packages, ensure the
+ comparison is performed in version order
+ --no-auto-ver-sort Do not do so (default)
+ --unpack-tarballs Unpack tarballs found in the top level source
+ directory (default)
+ --no-unpack-tarballs Do not do so
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+
+Use the debbindiff package for deeper comparisons of .deb files.
+EOF
+}
+
+my $version = <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1999,2000,2001 by Julian Gilbey <jdg\@debian.org>,
+based on original code which is copyright 1998,1999 by
+Yann Dirson <dirson\@debian.org>
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 ONLY.
+EOF
+
+# Start by setting default values
+
+my $ignore_dirs = 1;
+my $compare_control = 1;
+my $controlfiles = 'control';
+my $show_moved = 0;
+my $wdiff_opt = '';
+my @diff_opts = ();
+my $show_diffstat = 0;
+my $wdiff_source_control = 0;
+my $auto_ver_sort = 0;
+my $unpack_tarballs = 1;
+
+my $quiet = 0;
+
+# Next, read read configuration files and then command line
+# The next stuff is boilerplate
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'DEBDIFF_DIRS' => 'no',
+ 'DEBDIFF_CONTROL' => 'yes',
+ 'DEBDIFF_CONTROLFILES' => 'control',
+ 'DEBDIFF_SHOW_MOVED' => 'no',
+ 'DEBDIFF_WDIFF_OPT' => '',
+ 'DEBDIFF_SHOW_DIFFSTAT' => 'no',
+ 'DEBDIFF_WDIFF_SOURCE_CONTROL' => 'no',
+ 'DEBDIFF_AUTO_VER_SORT' => 'no',
+ 'DEBDIFF_UNPACK_TARBALLS' => 'yes',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= "$var='$config_vars{$var}';\n";
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ # Check validity
+ $config_vars{'DEBDIFF_DIRS'} =~ /^(yes|no)$/
+ or $config_vars{'DEBDIFF_DIRS'}='no';
+ $config_vars{'DEBDIFF_CONTROL'} =~ /^(yes|no)$/
+ or $config_vars{'DEBDIFF_CONTROL'}='yes';
+ $config_vars{'DEBDIFF_SHOW_MOVED'} =~ /^(yes|no)$/
+ or $config_vars{'DEBDIFF_SHOW_MOVED'}='no';
+ $config_vars{'DEBDIFF_SHOW_DIFFSTAT'} =~ /^(yes|no)$/
+ or $config_vars{'DEBDIFF_SHOW_DIFFSTAT'}='no';
+ $config_vars{'DEBDIFF_WDIFF_SOURCE_CONTROL'} =~ /^(yes|no)$/
+ or $config_vars{'DEBDIFF_WDIFF_SOURCE_CONTROL'}='no';
+ $config_vars{'DEBDIFF_AUTO_VER_SORT'} =~ /^(yes|no)$/
+ or $config_vars{'DEBDIFF_AUTO_VER_SORT'}='no';
+ $config_vars{'DEBDIFF_UNPACK_TARBALLS'} =~ /^(yes|no)$/
+ or $config_vars{'DEBDIFF_UNPACK_TARBALLS'}='yes';
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $ignore_dirs = $config_vars{'DEBDIFF_DIRS'} eq 'yes' ? 0 : 1;
+ $compare_control = $config_vars{'DEBDIFF_CONTROL'} eq 'no' ? 0 : 1;
+ $controlfiles = $config_vars{'DEBDIFF_CONTROLFILES'};
+ $show_moved = $config_vars{'DEBDIFF_SHOW_MOVED'} eq 'yes' ? 1 : 0;
+ $wdiff_opt = $config_vars{'DEBDIFF_WDIFF_OPT'} =~ /^-([plt])$/ ? $1 : '';
+ $show_diffstat = $config_vars{'DEBDIFF_SHOW_DIFFSTAT'} eq 'yes' ? 1 : 0;
+ $wdiff_source_control = $config_vars{'DEBDIFF_WDIFF_SOURCE_CONTROL'}
+ eq 'yes' ? 1 : 0;
+ $auto_ver_sort = $config_vars{'DEBDIFF_AUTO_VER_SORT'} eq 'yes' ? 1 : 0;
+ $unpack_tarballs = $config_vars{'DEBDIFF_UNPACK_TARBALLS'} eq 'yes' ? 1 : 0;
+
+}
+
+# Are they a pair of debs, changes or dsc files, or a list of debs?
+my $type = '';
+my @excludes = ();
+my @move = ();
+my %renamed = ();
+
+
+# handle command-line options
+
+while (@ARGV) {
+ if ($ARGV[0] =~ /^(--help|-h)$/) { usage(); exit 0; }
+ if ($ARGV[0] =~ /^(--version|-v)$/) { print $version; exit 0; }
+ if ($ARGV[0] =~ /^(--move(-regex)?|-m)$/) {
+ fatal "Malformed command-line option $ARGV[0]; run $progname --help for more info"
+ unless @ARGV >= 3;
+
+ my $regex = $ARGV[0] eq '--move-regex' ? 1 : 0;
+ shift @ARGV;
+
+ # Ensure from and to values all begin with a slash
+ # dpkg -c produces filenames such as ./usr/lib/filename
+ my $from = shift;
+ my $to = shift;
+ $from =~ s%^\./%/%;
+ $to =~ s%^\./%/%;
+
+ if ($regex) {
+ # quote ':' in the from and to patterns;
+ # used later as a pattern delimiter
+ $from =~ s/:/\\:/g;
+ $to =~ s/:/\\:/g;
+ }
+ push @move, [$regex, $from, $to];
+ }
+ elsif ($ARGV[0] eq '--renamed') {
+ fatal "Malformed command-line option $ARGV[0]; run $progname --help for more info"
+ unless @ARGV >= 3;
+ shift @ARGV;
+
+ my $from = shift;
+ my $to = shift;
+ $renamed{$from} = $to;
+ }
+ elsif ($ARGV[0] eq '--exclude') {
+ fatal "Malformed command-line option $ARGV[0]; run $progname --help for more info"
+ unless @ARGV >= 2;
+ shift @ARGV;
+
+ my $exclude = shift;
+ push @excludes, $exclude;
+ }
+ elsif ($ARGV[0] =~ s/^--exclude=//) {
+ my $exclude = shift;
+ push @excludes, $exclude;
+ }
+ elsif ($ARGV[0] eq '--controlfiles') {
+ fatal "Malformed command-line option $ARGV[0]; run $progname --help for more info"
+ unless @ARGV >= 2;
+ shift @ARGV;
+
+ $controlfiles = shift;
+ }
+ elsif ($ARGV[0] =~ s/^--controlfiles=//) {
+ $controlfiles = shift;
+ }
+ elsif ($ARGV[0] =~ /^(--dirs|-d)$/) { $ignore_dirs = 0; shift; }
+ elsif ($ARGV[0] eq '--nodirs') { $ignore_dirs = 1; shift; }
+ elsif ($ARGV[0] =~ /^(--quiet|-q)$/) { $quiet = 1; shift; }
+ elsif ($ARGV[0] =~ /^(--show-moved|-s)$/) { $show_moved = 1; shift; }
+ elsif ($ARGV[0] eq '--noshow-moved') { $show_moved = 0; shift; }
+ elsif ($ARGV[0] eq '--nocontrol') { $compare_control = 0; shift; }
+ elsif ($ARGV[0] eq '--control') { $compare_control = 1; shift; }
+ elsif ($ARGV[0] eq '--from') { $type = 'debs'; last; }
+ elsif ($ARGV[0] =~ /^--w([plt])$/) { $wdiff_opt = "-$1"; shift; }
+ elsif ($ARGV[0] =~ /^(--ignore-space|-w)$/) {
+ push @diff_opts, "-w";
+ shift;
+ }
+ elsif ($ARGV[0] eq '--diffstat') { $show_diffstat = 1; shift; }
+ elsif ($ARGV[0] =~ /^--no-?diffstat$/) { $show_diffstat = 0; shift; }
+ elsif ($ARGV[0] eq '--wdiff-source-control') { $wdiff_source_control = 1; shift; }
+ elsif ($ARGV[0] =~ /^--no-?wdiff-source-control$/) { $wdiff_source_control = 0; shift; }
+ elsif ($ARGV[0] eq '--auto-ver-sort') { $auto_ver_sort = 1; shift; }
+ elsif ($ARGV[0] =~ /^--no-?auto-ver-sort$/) { $auto_ver_sort = 0; shift; }
+ elsif ($ARGV[0] eq '--unpack-tarballs') { $unpack_tarballs = 1; shift; }
+ elsif ($ARGV[0] =~ /^--no-?unpack-tarballs$/) { $unpack_tarballs = 0; shift; }
+ elsif ($ARGV[0] =~ /^--no-?conf$/) {
+ fatal "--no-conf is only acceptable as the first command-line option!";
+ }
+
+ # Not a recognised option
+ elsif ($ARGV[0] =~ /^-/) {
+ fatal "Unrecognised command-line option $ARGV[0]; run $progname --help for more info";
+ }
+ else {
+ # End of command line options
+ last;
+ }
+}
+
+my $guessed_version = 0;
+
+# If no file is given, assume that we are in a source directory
+# and try to create a diff with the previous version
+if(@ARGV == 0) {
+ my $namepat = qr/[-+0-9a-z.]/i;
+
+ fatal "Can't read file: debian/changelog" unless -r "debian/changelog";
+ open CHL, "debian/changelog";
+ while(<CHL>) {
+ if(/^(\w$namepat*)\s\((\d+:)?(.+)\)((\s+$namepat+)+)\;\surgency=.+$/) {
+ unshift @ARGV, "../".$1."_".$3.".dsc";
+ $guessed_version++;
+ }
+ last if $guessed_version > 1;
+ }
+ close CHL;
+}
+
+if (! $type) {
+ # we need 2 deb files or changes files to compare
+ fatal "Need exactly two deb files or changes files to compare"
+ unless @ARGV == 2;
+
+ foreach my $i (0,1) {
+ fatal "Can't read file: $ARGV[$i]" unless -r $ARGV[$i];
+ }
+
+ if ($ARGV[0] =~ /\.deb$/) { $type = 'deb'; }
+ elsif ($ARGV[0] =~ /\.udeb$/) { $type = 'deb'; }
+ elsif ($ARGV[0] =~ /\.changes$/) { $type = 'changes'; }
+ elsif ($ARGV[0] =~ /\.dsc$/) { $type = 'dsc'; }
+ else {
+ fatal "Could not recognise files; the names should end .deb, .udeb, .changes or .dsc";
+ }
+ if ($ARGV[1] !~ /\.$type$/ && ($type ne 'deb' || $ARGV[1] !~ /\.udeb$/)) {
+ fatal "The two filenames must have the same suffix, either .deb, .udeb, .changes or .dsc";
+ }
+}
+
+# We collect up the individual deb information in the hashes
+# %deb1 and %deb2, each key of which is a .deb name and each value is
+# a list ref. Note we need to use our, not my, as we will be symbolically
+# referencing these variables
+my @CommonDebs = ();
+my @singledeb;
+our (%debs1, %debs2, %files1, %files2, @D1, @D2, $dir1, $dir2, %DebPaths1, %DebPaths2);
+
+if ($type eq 'deb') {
+ no strict 'refs';
+ foreach my $i (1,2) {
+ my $deb = shift;
+ my ($debc, $debI) = ('', '');
+ my %dpkg_env = ( LC_ALL => 'C' );
+ eval {
+ spawn(exec => ['dpkg-deb', '-c', $deb],
+ env => \%dpkg_env,
+ to_string => \$debc,
+ wait_child => 1);
+ };
+ if ($@) {
+ fatal "dpkg-deb -c $deb failed!";
+ }
+
+ eval {
+ spawn(exec => ['dpkg-deb', '-I', $deb],
+ env => \%dpkg_env,
+ to_string => \$debI,
+ wait_child => 1);
+ };
+ if ($@) {
+ fatal "dpkg-deb -I $deb failed!";
+ }
+ # Store the name for later
+ $singledeb[$i] = $deb;
+ # get package name itself
+ $deb =~ s,.*/,,; $deb =~ s/_.*//;
+ @{"D$i"} = @{process_debc($debc,$i)};
+ push @{"D$i"}, @{process_debI($debI)};
+ }
+}
+elsif ($type eq 'changes' or $type eq 'debs') {
+ # Have to parse .changes files or remaining arguments
+ my $pwd = cwd;
+ foreach my $i (1,2) {
+ my (@debs) = ();
+ if ($type eq 'debs') {
+ if (@ARGV < 2) {
+ # Oops! There should be at least --from|--to deb ...
+ fatal "Missing .deb names or missing --to! (Run debdiff -h for help)\n";
+ }
+ shift; # get rid of --from or --to
+ while (@ARGV and $ARGV[0] ne '--to') {
+ push @debs, shift;
+ }
+
+ # Is there only one .deb listed?
+ if (@debs == 1) {
+ $singledeb[$i] = $debs[0];
+ }
+ } else {
+ my $changes = shift;
+ open CHANGES, $changes
+ or fatal "Couldn't open $changes: $!";
+ my $infiles = 0;
+ while (<CHANGES>) {
+ last if $infiles and /^[^ ]/;
+ /^Files:/ and $infiles=1, next;
+ next unless $infiles;
+ if (/ (\S*.u?deb)$/) {
+ my $file = $1;
+ $file !~ m,[/\x00],
+ or fatal "File name contains invalid characters: $file";
+ push @debs, dirname($changes) . '/' . $file;
+ }
+ }
+ close CHANGES
+ or fatal "Problem reading $changes: $!";
+
+ # Is there only one .deb listed?
+ if (@debs == 1) {
+ $singledeb[$i] = $debs[0];
+ }
+ }
+
+ foreach my $deb (@debs) {
+ no strict 'refs';
+ fatal "Can't read file: $deb" unless -r $deb;
+ my ($debc, $debI) = ('', '');
+ my %dpkg_env = ( LC_ALL => 'C' );
+ eval {
+ spawn(exec => ['dpkg-deb', '-c', $deb],
+ to_string => \$debc,
+ env => \%dpkg_env,
+ wait_child => 1);
+ };
+ if ($@) {
+ fatal "dpkg-deb -c $deb failed!";
+ }
+ eval {
+ spawn(exec => ['dpkg-deb', '-I', $deb],
+ to_string => \$debI,
+ env => \%dpkg_env,
+ wait_child => 1);
+ };
+ if ($@) {
+ fatal "dpkg-deb -I $deb failed!";
+ }
+ my $debpath = $deb;
+ # get package name itself
+ $deb =~ s,.*/,,; $deb =~ s/_.*//;
+ $deb = $renamed{$deb} if $i == 1 and exists $renamed{$deb};
+ if (exists ${"debs$i"}{$deb}) {
+ warn "Same package name appears more than once (possibly due to renaming): $deb\n";
+ } else {
+ ${"debs$i"}{$deb} = 1;
+ }
+ ${"DebPaths$i"}{$deb} = $debpath;
+ foreach my $file (@{process_debc($debc,$i)}) {
+ ${"files$i"}{$file} ||= "";
+ ${"files$i"}{$file} .= "$deb:";
+ }
+ foreach my $control (@{process_debI($debI)}) {
+ ${"files$i"}{$control} ||= "";
+ ${"files$i"}{$control} .= "$deb:";
+ }
+ }
+ no strict 'refs';
+ @{"D$i"} = keys %{"files$i"};
+ # Go back again
+ chdir $pwd or fatal "Couldn't chdir $pwd: $!";
+ }
+}
+elsif ($type eq 'dsc') {
+ # Compare source packages
+ my $pwd = cwd;
+
+ my (@origs, @diffs, @dscs, @dscformats, @versions);
+ foreach my $i (1,2) {
+ my $dsc = shift;
+ chdir dirname($dsc)
+ or fatal "Couldn't chdir ", dirname($dsc), ": $!";
+
+ $dscs[$i] = cwd() . '/' . basename($dsc);
+
+ open DSC, basename($dsc) or fatal "Couldn't open $dsc: $!";
+
+ my $infiles=0;
+ while(<DSC>) {
+ if (/^Files:/) {
+ $infiles=1;
+ next;
+ } elsif (/^Format: (.*)$/) {
+ $dscformats[$i] = $1;
+ } elsif (/^Version: (.*)$/) {
+ $versions[$i - 1] = [ $1, $i ];
+ }
+ next unless $infiles;
+ last if /^\s*$/;
+ last if /^[-\w]+:/; # don't expect this, but who knows?
+ chomp;
+
+ # This had better match
+ if (/^\s+[0-9a-f]{32}\s+\d+\s+(\S+)$/) {
+ my $file = $1;
+ $file !~ m,[/\x00],
+ or fatal "File name contains invalid characters: $file";
+ if ($file =~ /\.diff\.gz$/) {
+ $diffs[$i] = cwd() . '/' . $file;
+ }
+ elsif ($file =~ /((?:\.orig)?\.tar\.$compression_re|\.git)$/) {
+ $origs[$i] = $file;
+ }
+ } else {
+ warn "Unrecognised file line in .dsc:\n$_\n";
+ }
+ }
+
+ close DSC or fatal "Problem closing $dsc: $!";
+ # Go back again
+ chdir $pwd or fatal "Couldn't chdir $pwd: $!";
+ }
+
+ @versions = Devscripts::Versort::versort(@versions);
+ # If the versions are currently out of order, should we swap them?
+ if ($auto_ver_sort and !$guessed_version and $versions[0][1] == 1 and $versions[0][0] ne $versions[1][0]) {
+ foreach my $var ((\@origs, \@diffs, \@dscs, \@dscformats)) {
+ my $temp = @{$var}[1];
+ @{$var}[1] = @{$var}[2];
+ @{$var}[2] = $temp;
+ }
+ }
+
+ # Do we have interdiff?
+ system("command -v interdiff >/dev/null 2>&1");
+ my $use_interdiff = ($?==0) ? 1 : 0;
+ system("command -v diffstat >/dev/null 2>&1");
+ my $have_diffstat = ($?==0) ? 1 : 0;
+ system("command -v wdiff >/dev/null 2>&1");
+ my $have_wdiff = ($?==0) ? 1 : 0;
+
+ my ($fh, $filename) = tempfile("debdiffXXXXXX",
+ SUFFIX => ".diff",
+ DIR => File::Spec->tmpdir,
+ UNLINK => 1);
+
+ # When wdiffing source control files we always fully extract both source
+ # packages as it's the easiest way of getting the debian/control file,
+ # particularly if the orig tar ball contains one which is patched in the
+ # diffs
+ if ($origs[1] eq $origs[2] and defined $diffs[1] and defined $diffs[2]
+ and scalar(@excludes) == 0 and $use_interdiff and !$wdiff_source_control) {
+ # same orig tar ball, interdiff exists and not wdiffing
+
+ my $tmpdir = tempdir(CLEANUP => 1);
+ eval {
+ spawn(exec => ['interdiff', '-z', @diff_opts, $diffs[1], $diffs[2]],
+ to_file => $filename,
+ wait_child => 1,
+ # Make interdiff put its tempfiles in $tmpdir, so they're
+ # automatically cleaned up
+ env => { TMPDIR => $tmpdir });
+ };
+
+ # If interdiff fails for some reason, we'll fall back to our manual
+ # diffing.
+ unless ($@) {
+ if ($have_diffstat and $show_diffstat) {
+ my $header = "diffstat for " . basename($diffs[1])
+ . " " . basename($diffs[2]) . "\n\n";
+ $header =~ s/\.diff\.gz//g;
+ print $header;
+ spawn(exec => ['diffstat', $filename],
+ wait_child => 1);
+ print "\n";
+ }
+
+ if (-s $filename) {
+ open( INTERDIFF, '<', $filename );
+ while( <INTERDIFF> ) {
+ print $_;
+ }
+ close INTERDIFF;
+
+ $exit_status = 1;
+ }
+ exit $exit_status;
+ }
+ }
+
+ # interdiff ran and failed, or any other situation
+ if (!$use_interdiff) {
+ warn "Warning: You do not seem to have interdiff (in the patchutils package)\ninstalled; this program would use it if it were available.\n";
+ }
+ # possibly different orig tarballs, or no interdiff installed,
+ # or wdiffing debian/control
+ our ($sdir1, $sdir2);
+ mktmpdirs();
+ for my $i (1,2) {
+ no strict 'refs';
+ my @opts = ('-x');
+ push (@opts, '--skip-patches') if $dscformats[$i] eq '3.0 (quilt)';
+ my $diri = ${"dir$i"};
+ eval {
+ spawn(exec => ['dpkg-source', @opts, $dscs[$i]],
+ to_file => '/dev/null',
+ chdir => $diri,
+ wait_child => 1);
+ };
+ if ($@) {
+ my $dir = dirname $dscs[1] if $i == 2;
+ $dir = dirname $dscs[2] if $i == 1;
+ cp "$dir/$origs[$i]", $diri || fatal "copy $dir/$origs[$i] $diri: $!";
+ my $dscx = basename $dscs[$i];
+ cp $diffs[$i], $diri || fatal "copy $diffs[$i] $diri: $!";
+ cp $dscs[$i], $diri || fatal "copy $dscs[$i] $diri: $!";
+ spawn(exec => ['dpkg-source', @opts, $dscx],
+ to_file => '/dev/null',
+ chdir => $diri,
+ wait_child => 1);
+ }
+ opendir DIR,$diri;
+ while ($_ = readdir(DIR)) {
+ next if $_ eq '.' || $_ eq '..' || ! -d "$diri/$_";
+ ${"sdir$i"} = $_;
+ last;
+ }
+ closedir(DIR);
+ my $sdiri = ${"sdir$i"};
+
+ # also unpack tarballs found in the top level source directory so we can compare their contents too
+ next unless $unpack_tarballs;
+ opendir DIR,$diri.'/'.$sdiri;
+
+ my $tarballs = 1;
+ while ($_ = readdir(DIR)) {
+ my $unpacked = "=unpacked-tar" . $tarballs . "=";
+ my $filename = $_;
+ if ($filename =~ s/\.tar\.$compression_re$//) {
+ my $comp = compression_guess_from_filename($_);
+ $tarballs++;
+ spawn(exec => ['tar', "--$comp", '-xf', $_],
+ to_file => '/dev/null',
+ wait_child => 1,
+ chdir => "$diri/$sdiri",
+ nocheck => 1);
+ if (-d "$diri/$sdiri/$filename") {
+ move "$diri/$sdiri/$filename", "$diri/$sdiri/$unpacked";
+ }
+ }
+ }
+ closedir(DIR);
+ }
+
+ my @command = ("diff", "-Nru", @diff_opts);
+ for my $exclude (@excludes) {
+ push @command, ("--exclude", $exclude);
+ }
+ push @command, ("$dir1/$sdir1", "$dir2/$sdir2");
+
+ # Execute diff and remove the common prefixes $dir1/$dir2, so the patch can be used with -p1,
+ # as if when interdiff would have been used:
+ spawn(exec => \@command, to_file => $filename, wait_child => 1, nocheck => 1);
+
+ if ($have_diffstat and $show_diffstat) {
+ print "diffstat for $sdir1 $sdir2\n\n";
+ spawn(exec => ['diffstat', $filename],
+ wait_child => 1);
+ print "\n";
+ }
+
+ if ($have_wdiff and $wdiff_source_control) {
+ # Abuse global variables slightly to create some temporary directories
+ my $tempdir1 = $dir1;
+ my $tempdir2 = $dir2;
+ mktmpdirs();
+ our $wdiffdir1 = $dir1;
+ our $wdiffdir2 = $dir2;
+ $dir1 = $tempdir1;
+ $dir2 = $tempdir2;
+ our @cf;
+ if ($controlfiles eq 'ALL') {
+ @cf = ('control');
+ } else {
+ @cf = split /,/, $controlfiles;
+ }
+
+ no strict 'refs';
+ for my $i (1,2) {
+ foreach my $file (@cf) {
+ cp ${"dir$i"}.'/'.${"sdir$i"}."/debian/$file", ${"wdiffdir$i"};
+ }
+ }
+ use strict 'refs';
+
+ # We don't support "ALL" for source packages as that would
+ # wdiff debian/*
+ $exit_status = wdiff_control_files($wdiffdir1, $wdiffdir2, $dummyname,
+ $controlfiles eq 'ALL' ? 'control' : $controlfiles,
+ $exit_status);
+ print "\n";
+
+ # Clean up
+ rmtree([$wdiffdir1, $wdiffdir2]);
+ }
+
+ if (! -f $filename) {
+ fatal "Creation of diff file $filename failed!";
+ } elsif (-s $filename) {
+ open( DIFF, '<', $filename ) or fatal "Opening diff file $filename failed!";
+
+ while(<DIFF>) {
+ s/^--- $dir1\//--- /;
+ s/^\+\+\+ $dir2\//+++ /;
+ s/^(diff .*) $dir1\/\Q$sdir1\E/$1 $sdir1/;
+ s/^(diff .*) $dir2\/\Q$sdir2\E/$1 $sdir2/;
+ print;
+ }
+ close DIFF;
+
+ $exit_status = 1;
+ }
+
+ exit $exit_status;
+}
+else {
+ fatal "Internal error: \$type = $type unrecognised";
+}
+
+
+# Compare
+# Start by a piece of common code to set up the @CommonDebs list and the like
+
+my (@deblosses, @debgains);
+
+{
+ my %debs;
+ grep $debs{$_}--, keys %debs1;
+ grep $debs{$_}++, keys %debs2;
+
+ @deblosses = sort grep $debs{$_} < 0, keys %debs;
+ @debgains = sort grep $debs{$_} > 0, keys %debs;
+ @CommonDebs= sort grep $debs{$_} == 0, keys %debs;
+}
+
+if ($show_moved and $type ne 'deb') {
+ if (@debgains) {
+ my $msg = "Warning: these package names were in the second list but not in the first:";
+ print $msg, "\n", '-' x length $msg, "\n";
+ print join("\n",@debgains), "\n\n";
+ }
+
+ if (@deblosses) {
+ print "\n" if @debgains;
+ my $msg = "Warning: these package names were in the first list but not in the second:";
+ print $msg, "\n", '-' x length $msg, "\n";
+ print join("\n",@deblosses), "\n\n";
+ }
+
+ # We start by determining which files are in the first set of debs, the
+ # second set of debs or both.
+ my %files;
+ grep $files{$_}--, @D1;
+ grep $files{$_}++, @D2;
+
+ my @old = sort grep $files{$_} < 0, keys %files;
+ my @new = sort grep $files{$_} > 0, keys %files;
+ my @same = sort grep $files{$_} == 0, keys %files;
+
+ # We store any changed files in a hash of hashes %changes, where
+ # $changes{$from}{$to} is an array of files which have moved
+ # from package $from to package $to; $from or $to is '-' if
+ # the files have appeared or disappeared
+
+ my %changes;
+ my @funny; # for storing changed files which appear in multiple debs
+
+ foreach my $file (@old) {
+ my @firstdebs = split /:/, $files1{$file};
+ foreach my $firstdeb (@firstdebs) {
+ push @{$changes{$firstdeb}{'-'}}, $file;
+ }
+ }
+
+ foreach my $file (@new) {
+ my @seconddebs = split /:/, $files2{$file};
+ foreach my $seconddeb (@seconddebs) {
+ push @{$changes{'-'}{$seconddeb}}, $file;
+ }
+ }
+
+ foreach my $file (@same) {
+ # Are they identical?
+ next if $files1{$file} eq $files2{$file};
+
+ # Ah, they're not the same. If the file has moved from one deb
+ # to another, we'll put a note in that pair. But if the file
+ # was in more than one deb or ends up in more than one deb, we'll
+ # list it separately.
+ my @fdebs1 = split (/:/, $files1{$file});
+ my @fdebs2 = split (/:/, $files2{$file});
+
+ if (@fdebs1 == 1 && @fdebs2 == 1) {
+ push @{$changes{$fdebs1[0]}{$fdebs2[0]}}, $file;
+ } else {
+ # two packages to one or vice versa, or something like that
+ push @funny, [$file, \@fdebs1, \@fdebs2];
+ }
+ }
+
+ # This is not a very efficient way of doing things if there are
+ # lots of debs involved, but since that is highly unlikely, it
+ # shouldn't be much of an issue
+ my $changed = 0;
+
+ for my $deb1 (sort(keys %debs1), '-') {
+ next unless exists $changes{$deb1};
+ for my $deb2 ('-', sort keys %debs2) {
+ next unless exists $changes{$deb1}{$deb2};
+ my $msg;
+ if (! $changed) {
+ print "[The following lists of changes regard files as different if they have\ndifferent names, permissions or owners.]\n\n";
+ }
+ if ($deb1 eq '-') {
+ $msg = "New files in second set of .debs, found in package $deb2";
+ } elsif ($deb2 eq '-') {
+ $msg = "Files only in first set of .debs, found in package $deb1";
+ } else {
+ $msg = "Files moved from package $deb1 to package $deb2";
+ }
+ print $msg, "\n", '-' x length $msg, "\n";
+ print join("\n",@{$changes{$deb1}{$deb2}}), "\n\n";
+ $changed = 1;
+ }
+ }
+
+ if (@funny) {
+ my $msg = "Files moved or copied from at least TWO packages or to at least TWO packages";
+ print $msg, "\n", '-' x length $msg, "\n";
+ for my $funny (@funny) {
+ print $$funny[0], "\n"; # filename and details
+ print "From package", (@{$$funny[1]} > 1 ? "s" : ""), ": ";
+ print join(", ", @{$$funny[1]}), "\n";
+ print "To package", (@{$$funny[2]} > 1 ? "s" : ""), ": ";
+ print join(", ", @{$$funny[2]}), "\n";
+ }
+ $changed = 1;
+ }
+
+ if (! $quiet && ! $changed) {
+ print "File lists identical on package level (after any substitutions)\n";
+ }
+ $exit_status = 1 if $changed;
+} else {
+ my %files;
+ grep $files{$_}--, @D1;
+ grep $files{$_}++, @D2;
+
+ my @losses = sort grep $files{$_} < 0, keys %files;
+ my @gains = sort grep $files{$_} > 0, keys %files;
+
+ if (@losses == 0 && @gains == 0) {
+ print "File lists identical (after any substitutions)\n"
+ unless $quiet;
+ } else {
+ print "[The following lists of changes regard files as different if they have\ndifferent names, permissions or owners.]\n\n";
+ }
+
+ if (@gains) {
+ my $msg;
+ if ($type eq 'debs') {
+ $msg = "Files in second set of .debs but not in first";
+ } else {
+ $msg = sprintf "Files in second .%s but not in first",
+ $type eq 'deb' ? 'deb' : 'changes';
+ }
+ print $msg, "\n", '-' x length $msg, "\n";
+ print join("\n",@gains), "\n";
+ $exit_status = 1;
+ }
+
+ if (@losses) {
+ print "\n" if @gains;
+ my $msg;
+ if ($type eq 'debs') {
+ $msg = "Files in first set of .debs but not in second";
+ } else {
+ $msg = sprintf "Files in first .%s but not in second",
+ $type eq 'deb' ? 'deb' : 'changes';
+ }
+ print $msg, "\n", '-' x length $msg, "\n";
+ print join("\n",@losses), "\n";
+ $exit_status = 1;
+ }
+}
+
+# We compare the control files (at least the dependency fields)
+if (defined $singledeb[1] and defined $singledeb[2]) {
+ @CommonDebs = ( $dummyname );
+ $DebPaths1{$dummyname} = $singledeb[1];
+ $DebPaths2{$dummyname} = $singledeb[2];
+}
+
+exit $exit_status unless (@CommonDebs > 0) and $compare_control;
+
+unless (system ("command -v wdiff >/dev/null 2>&1") == 0) {
+ warn "Can't compare control files; wdiff package not installed\n";
+ exit $exit_status;
+}
+
+for my $debname (@CommonDebs) {
+ no strict 'refs';
+ mktmpdirs();
+
+ for my $i (1,2) {
+ my $debpath = "${\"DebPaths$i\"}{$debname}";
+ my $diri = ${"dir$i"};
+ eval {
+ spawn(exec => ['dpkg-deb', '-e', $debpath, $diri],
+ wait_child => 1);
+ };
+ if ($@) {
+ my $msg = "dpkg-deb -e ${\"DebPaths$i\"}{$debname} failed!";
+ rmtree([$dir1, $dir2]);
+ fatal $msg;
+ }
+ }
+
+ use strict 'refs';
+ $exit_status = wdiff_control_files($dir1, $dir2, $debname, $controlfiles,
+ $exit_status);
+
+ # Clean up
+ rmtree([$dir1, $dir2]);
+}
+
+exit $exit_status;
+
+###### Subroutines
+
+# This routine takes the output of dpkg-deb -c and returns
+# a processed listref
+sub process_debc($$)
+{
+ my ($data,$number) = @_;
+ my (@filelist);
+
+ # Format of dpkg-deb -c output:
+ # permissions owner/group size date time name ['->' link destination]
+ $data =~ s/^(\S+)\s+(\S+)\s+(\S+\s+){3}/$1 $2 /mg;
+ $data =~ s, \./, /,mg;
+ @filelist = grep ! m| /$|, split /\n/, $data; # don't bother keeping '/'
+
+ # Are we keeping directory names in our filelists?
+ if ($ignore_dirs) {
+ @filelist = grep ! m|/$|, @filelist;
+ }
+
+ # Do the "move" substitutions in the order received for the first debs
+ if ($number == 1 and @move) {
+ my @split_filelist = map { m/^(\S+) (\S+) (.*)/ && [$1, $2, $3] }
+ @filelist;
+ for my $move (@move) {
+ my $regex = $$move[0];
+ my $from = $$move[1];
+ my $to = $$move[2];
+ map { if ($regex) { eval "\$\$_[2] =~ s:$from:$to:g"; }
+ else { $$_[2] =~ s/\Q$from\E/$to/; } } @split_filelist;
+ }
+ @filelist = map { "$$_[0] $$_[1] $$_[2]" } @split_filelist;
+ }
+
+ return \@filelist;
+}
+
+# This does the same for dpkg-deb -I
+sub process_debI($)
+{
+ my ($data) = @_;
+ my (@filelist);
+
+ # Format of dpkg-deb -c output:
+ # 2 (always?) header lines
+ # nnnn bytes, nnn lines [*] filename [interpreter]
+ # Package: ...
+ # rest of control file
+
+ foreach (split /\n/, $data) {
+ last if /^Package:/;
+ next unless /^\s+\d+\s+bytes,\s+\d+\s+lines\s+(\*)?\s+([\-\w]+)/;
+ my $control = $2;
+ my $perms = ($1 ? "-rwxr-xr-x" : "-rw-r--r--");
+ push @filelist, "$perms root/root DEBIAN/$control";
+ }
+
+ return \@filelist;
+}
+
+sub wdiff_control_files($$$$$)
+{
+ my ($dir1, $dir2, $debname, $controlfiles, $origstatus) = @_;
+ return unless defined $dir1 and defined $dir2 and defined $debname
+ and defined $controlfiles;
+ my @cf;
+ my $status = $origstatus;
+ if ($controlfiles eq 'ALL') {
+ # only need to list one directory as we are only comparing control
+ # files in both packages
+ @cf = grep { ! /md5sums/ } map { basename($_); } glob("$dir1/*");
+ } else {
+ @cf = split /,/, $controlfiles;
+ }
+
+ foreach my $cf (@cf) {
+ next unless -f "$dir1/$cf" and -f "$dir2/$cf";
+ if ($cf eq 'control' or $cf eq 'conffiles') {
+ for my $file ("$dir1/$cf", "$dir2/$cf") {
+ my ($fd, @hdrs);
+ open $fd, '<', $file or fatal "Cannot read $file: $!";
+ while (<$fd>) {
+ if (/^\s/ and @hdrs > 0) {
+ $hdrs[$#hdrs] .= $_;
+ } else {
+ push @hdrs, $_;
+ }
+ }
+ close $fd;
+ chmod 0644, $file;
+ open $fd, '>', $file or fatal "Cannot write $file: $!";
+ print $fd sort @hdrs;
+ close $fd;
+ }
+ }
+ my $usepkgname = $debname eq $dummyname ? "" : " of package $debname";
+ my @opts = ('-n');
+ push @opts, $wdiff_opt if $wdiff_opt;
+ my $wdiff = '';
+ eval {
+ spawn(exec => ['wdiff', @opts, "$dir1/$cf", "$dir2/$cf"],
+ to_string => \$wdiff,
+ wait_child => 1);
+ };
+ if ($@ and $@ !~ /gave error exit status 1/) {
+ print "$@\n";
+ warn "wdiff failed\n";
+ } else {
+ if (!$@) {
+ if (! $quiet) {
+ print "\nNo differences were encountered between the $cf files$usepkgname\n";
+ }
+ } elsif ($wdiff_opt) {
+ # Don't try messing with control codes
+ my $msg = ucfirst($cf) . " files$usepkgname: wdiff output";
+ print "\n", $msg, "\n", '-' x length $msg, "\n";
+ print $wdiff;
+ $status = 1;
+ } else {
+ my @output;
+ @output = split /\n/, $wdiff;
+ @output = grep /(\[-|\{\+)/, @output;
+ my $msg = ucfirst($cf) . " files$usepkgname: lines which differ (wdiff format)";
+ print "\n", $msg, "\n", '-' x length $msg, "\n";
+ print join("\n",@output), "\n";
+ $status = 1;
+ }
+ }
+ }
+
+ return $status;
+}
+
+sub mktmpdirs ()
+{
+ no strict 'refs';
+
+ for my $i (1,2) {
+ ${"dir$i"}=tempdir( CLEANUP => 1 );
+ fatal "Couldn't create temp directory"
+ if not defined ${"dir$i"};
+ }
+}
+
+sub fatal(@)
+{
+ my ($pack,$file,$line);
+ ($pack,$file,$line) = caller();
+ (my $msg = "$progname: fatal error at line $line:\n@_\n") =~ tr/\0//d;
+ $msg =~ s/\n\n$/\n/;
+ die $msg;
+}
--- /dev/null
+.TH DEBI 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+debi \- install current version of generated Debian package
+.SH SYNOPSIS
+\fBdebi\fP [\fIoptions\fR] [\fIchanges file\fR] [\fIpackage\fR ...]
+.SH DESCRIPTION
+\fBdebi\fR figures out the current version of a package and installs
+it. If a \fI.changes\fR file is specified on the command line, the
+filename must end with \fI.changes\fR, as this is how the program
+distinguishes it from package names. If not, then \fBdebi\fR has to
+be called from within the source code directory tree. In this case,
+it will look for the \fI.changes\fR file corresponding to the current
+package version (by determining the name and version number from the
+changelog, and the architecture in the same way as
+\fBdpkg-buildpackage\fR(1) does). It then runs \fBdebpkg \-i\fR on
+every \fI.deb\fR archive listed in the \fI.changes\fR file to install
+them, assuming that all of the \fI.deb\fR archives live in the same
+directory as the \fI.changes\fR file. Note that you probably don't
+want to run this program on a \fI.changes\fR file relating to a
+different architecture after cross-compiling the package!
+.PP
+If a list of packages is given on the command line, then only those
+debs with names in this list of packages will be installed.
+.PP
+Since installing a package requires root privileges, \fBdebi\fR calls
+\fBdebpkg\fR rather than \fBdpkg\fR directly. Thus \fBdebi\fR will
+only be useful if it is either being run as root or \fBdebpkg\fR can
+be run as root. See \fBdebpkg\fR(1) for more details.
+.SH "Directory name checking"
+In common with several other scripts in the \fBdevscripts\fR package,
+\fBdebi\fR will climb the directory tree until it finds a
+\fIdebian/changelog\fR file. As a safeguard against stray files
+causing potential problems, it will examine the name of the parent
+directory once it finds the \fIdebian/changelog\fR file, and check
+that the directory name corresponds to the package name. Precisely
+how it does this is controlled by two configuration file variables
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR and \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR, and
+their corresponding command-line options \fB\-\-check-dirname-level\fR
+and \fB\-\-check-dirname-regex\fR.
+.PP
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR can take the following values:
+.TP
+.B 0
+Never check the directory name.
+.TP
+.B 1
+Only check the directory name if we have had to change directory in
+our search for \fIdebian/changelog\fR. This is the default behaviour.
+.TP
+.B 2
+Always check the directory name.
+.PP
+The directory name is checked by testing whether the current directory
+name (as determined by \fBpwd\fR(1)) matches the regex given by the
+configuration file option \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR or by the
+command line option \fB\-\-check-dirname-regex\fR \fIregex\fR. Here
+\fIregex\fR is a Perl regex (see \fBperlre\fR(3perl)), which will be
+anchored at the beginning and the end. If \fIregex\fR contains a '/',
+then it must match the full directory path. If not, then it must
+match the full directory name. If \fIregex\fR contains the string
+\'PACKAGE', this will be replaced by the source package name, as
+determined from the changelog. The default value for the regex is:
+\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and
+PACKAGE-version.
+.SH OPTIONS
+.TP
+\fB\-a\fIdebian-architecture\fR, \fB\-t\fIGNU-system-type\fR
+See \fBdpkg-architecture\fR(1) for a description of these options.
+They affect the search for the \fI.changes\fR file. They are provided
+to mimic the behaviour of \fBdpkg-buildpackage\fR when determining the
+name of the \fI.changes\fR file.
+.TP
+\fB\-\-debs\-dir\fR \fIdirectory\fR
+Look for the \fI.changes\fR and \fI.deb\fR files in \fIdirectory\fR
+instead of the parent of the source directory. This should
+either be an absolute path or relative to the top of the source
+directory.
+.TP
+.BR \-m ", " \-\-multi
+Search for a multiarch \fI.changes\fR file, as created by \fBdpkg-cross\fR.
+.TP
+.BR \-u ", " \-\-upgrade
+Only upgrade packages already installed on the system, rather than
+installing all packages listed in the \fI.changes\fR file.
+Useful for multi-binary packages when you don't want to have all the
+binaries installed at once.
+.TP
+\fB\-\-check-dirname-level\fR \fIN\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-\-check-dirname-regex\fR \fIregex\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-\-with-depends\fR
+Attempt to satisfy the \fIDepends\fR of a package when installing it.
+.TP
+\fB\-\-tool\fR \fItool\fR
+Use the specified \fItool\fR for installing the dependencies of the package(s) to be
+installed. By default, \fBapt-get\fR is used.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+\fB\-\-help\fR, \fB\-\-version\fR
+Show help message and version information respectively.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variables are:
+.TP
+.B DEBRELEASE_DEBS_DIR
+This specifies the directory in which to look for the \fI.changes\fR
+and \fI.deb\fR files, and is either an absolute path or relative to
+the top of the source tree. This corresponds to the
+\fB\-\-debs\-dir\fR command line option. This directive could be
+used, for example, if you always use \fBpbuilder\fR or
+\fBsvn-buildpackage\fR to build your packages. Note that it also
+affects \fBdebrelease\fR(1) in the same way, hence the strange name of
+the option.
+.TP
+.BR DEVSCRIPTS_CHECK_DIRNAME_LEVEL ", " DEVSCRIPTS_CHECK_DIRNAME_REGEX
+See the above section \fBDirectory name checking\fR for an explanation of
+these variables. Note that these are package-wide configuration
+variables, and will therefore affect all \fBdevscripts\fR scripts
+which check their value, as described in their respective manpages and
+in \fBdevscripts.conf\fR(5).
+.SH "SEE ALSO"
+.BR debpkg (1),
+.BR devscripts.conf (5)
+.SH AUTHOR
+\fBdebi\fR was originally written by Christoph Lameter
+<clameter@debian.org>. The now-defunct script \fBdebit\fR was
+originally written by James R. Van Zandt <jrv@vanzandt.mv.com>. They
+have been moulded into one script together with \fBdebc\fR(1) and
+parts extensively modified by Julian Gilbey <jdg@debian.org>.
--- /dev/null
+#!/usr/bin/perl -w
+
+# debi: Install current version of deb package
+# debc: List contents of current version of deb package
+#
+# debi and debc originally by Christoph Lameter <clameter@debian.org>
+# Copyright Christoph Lameter <clameter@debian.org>
+# The now defunct debit originally by Jim Van Zandt <jrv@vanzandt.mv.com>
+# Copyright 1999 Jim Van Zandt <jrv@vanzandt.mv.com>
+# Modifications by Julian Gilbey <jdg@debian.org>, 1999-2003
+# Copyright 1999-2003, Julian Gilbey <jdg@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use 5.008;
+use strict;
+use Getopt::Long qw(:config gnu_getopt);
+use File::Basename;
+use filetest 'access';
+use Cwd;
+use Dpkg::Control;
+use Dpkg::Changelog::Parse;
+
+my $progname = basename($0,'.pl'); # the '.pl' is for when we're debugging
+my $modified_conf_msg;
+
+sub usage_i {
+ print <<"EOF";
+Usage: $progname [options] [.changes file] [package ...]
+ Install the .deb file(s) just created, as listed in the generated
+ .changes file or the .changes file specified. If packages are listed,
+ only install those specified packages from the .changes file.
+ Options:
+ --no-conf or Don\'t read devscripts config files;
+ --noconf must be the first option given
+ -a<arch> Search for .changes file made for Debian build <arch>
+ -t<target> Search for .changes file made for GNU <target> arch
+ --debs-dir DIR Look for the changes and debs files in DIR instead of
+ the parent of the current package directory
+ --multi Search for multiarch .changes file made by dpkg-cross
+ --upgrade Only upgrade packages; don't install new ones.
+ --check-dirname-level N
+ How much to check directory names:
+ N=0 never
+ N=1 only if program changes directory (default)
+ N=2 always
+ --check-dirname-regex REGEX
+ What constitutes a matching directory name; REGEX is
+ a Perl regular expression; the string \`PACKAGE\' will
+ be replaced by the package name; see manpage for details
+ (default: 'PACKAGE(-.+)?')
+ --with-depends Install packages with their depends.
+ --tool TOOL Use the specified tool for installing the dependencies
+ of the package(s) to be installed.
+ (default: apt-get)
+ --help Show this message
+ --version Show version and copyright information
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOF
+}
+
+sub usage_c {
+ print <<"EOF";
+Usage: $progname [options] [.changes file] [package ...]
+ Display the contents of the .deb or .udeb file(s) just created, as listed
+ in the generated .changes file or the .changes file specified.
+ If packages are listed, only display those specified packages
+ from the .changes file. Options:
+ --no-conf or Don\'t read devscripts config files;
+ --noconf must be the first option given
+ -a<arch> Search for changes file made for Debian build <arch>
+ -t<target> Search for changes file made for GNU <target> arch
+ --debs-dir DIR Look for the changes and debs files in DIR instead of
+ the parent of the current package directory
+ --multi Search for multiarch .changes file made by dpkg-cross
+ --check-dirname-level N
+ How much to check directory names:
+ N=0 never
+ N=1 only if program changes directory (default)
+ N=2 always
+ --check-dirname-regex REGEX
+ What constitutes a matching directory name; REGEX is
+ a Perl regular expression; the string \`PACKAGE\' will
+ be replaced by the package name; see manpage for details
+ (default: 'PACKAGE(-.+)?')
+ --help Show this message
+ --version Show version and copyright information
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOF
+}
+
+if ($progname eq 'debi') { *usage = \&usage_i; }
+elsif ($progname eq 'debc') { *usage = \&usage_c; }
+else { die "Unrecognised invocation name: $progname\n"; }
+
+my $version = <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1999-2003, Julian Gilbey <jdg\@debian.org>,
+all rights reserved.
+Based on original code by Christoph Lameter and James R. Van Zandt.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of
+the GNU General Public License, version 2 or later.
+EOF
+
+# Start by setting default values
+my $debsdir;
+my $debsdir_warning;
+my $check_dirname_level = 1;
+my $check_dirname_regex = 'PACKAGE(-.+)?';
+my $install_tool = 'apt-get';
+
+# Next, read configuration files and then command line
+# The next stuff is boilerplate
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'DEBRELEASE_DEBS_DIR' => '..',
+ 'DEVSCRIPTS_CHECK_DIRNAME_LEVEL' => 1,
+ 'DEVSCRIPTS_CHECK_DIRNAME_REGEX' => 'PACKAGE(-.+)?',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ # Check validity
+ $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'} =~ /^[012]$/
+ or $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'}=1;
+ # We do not replace this with a default directory to avoid accidentally
+ # installing a broken package
+ $config_vars{'DEBRELEASE_DEBS_DIR'} =~ s%/+%/%;
+ $config_vars{'DEBRELEASE_DEBS_DIR'} =~ s%(.)/$%$1%;
+ $debsdir_warning = "config file specified DEBRELEASE_DEBS_DIR directory $config_vars{'DEBRELEASE_DEBS_DIR'} does not exist!";
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $debsdir = $config_vars{'DEBRELEASE_DEBS_DIR'};
+ $check_dirname_level = $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'};
+ $check_dirname_regex = $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_REGEX'};
+}
+
+# Command line options next
+my ($opt_help, $opt_version, $opt_a, $opt_t, $opt_debsdir, $opt_multi);
+my $opt_upgrade;
+my ($opt_level, $opt_regex, $opt_noconf);
+my ($opt_tool, $opt_with_depends);
+GetOptions("help" => \$opt_help,
+ "version" => \$opt_version,
+ "a=s" => \$opt_a,
+ "t=s" => \$opt_t,
+ "debs-dir=s" => \$opt_debsdir,
+ "m|multi" => \$opt_multi,
+ "u|upgrade" => \$opt_upgrade,
+ "check-dirname-level=s" => \$opt_level,
+ "check-dirname-regex=s" => \$opt_regex,
+ "with-depends" => \$opt_with_depends,
+ "tool=s" => \$opt_tool,
+ "noconf" => \$opt_noconf,
+ "no-conf" => \$opt_noconf,
+ )
+ or die "Usage: $progname [options] [.changes file] [package ...]\nRun $progname --help for more details\n";
+
+if ($opt_help) { usage(); exit 0; }
+if ($opt_version) { print $version; exit 0; }
+if ($opt_noconf) {
+ die "$progname: --no-conf is only acceptable as the first command-line option!\n";
+}
+
+my ($targetarch, $targetgnusystem);
+$targetarch = $opt_a ? "-a$opt_a" : "";
+$targetgnusystem = $opt_t ? "-t$opt_t" : "";
+
+if (defined $opt_level) {
+ if ($opt_level =~ /^[012]$/) { $check_dirname_level = $opt_level; }
+ else {
+ die "$progname: unrecognised --check-dirname-level value (allowed are 0,1,2)\n";
+ }
+}
+
+if (defined $opt_regex) { $check_dirname_regex = $opt_regex; }
+
+if ($opt_tool) {
+ $install_tool = $opt_tool;
+}
+
+# Is a .changes file listed on the command line?
+my ($changes, $mchanges, $arch);
+if (@ARGV and $ARGV[0] =~ /\.changes$/) {
+ $changes = shift;
+}
+
+# Need to determine $arch in any event
+$arch = `dpkg-architecture $targetarch $targetgnusystem -qDEB_HOST_ARCH`;
+if ($? != 0 or ! $arch) {
+ die "$progname: unable to determine target architecture.\n";
+}
+chomp $arch;
+
+my $chdir = 0;
+
+if (! defined $changes) {
+ if ($opt_debsdir) {
+ $opt_debsdir =~ s%/+%/%;
+ $opt_debsdir =~ s%(.)/$%$1%;
+ $debsdir_warning = "--debs-dir directory $opt_debsdir does not exist!";
+ $debsdir = $opt_debsdir;
+ }
+
+ if (! -d $debsdir) {
+ die "$progname: $debsdir_warning\n";
+ }
+
+ # Look for .changes file via debian/changelog
+ until (-r 'debian/changelog') {
+ $chdir = 1;
+ chdir '..' or die "$progname: can't chdir ..: $!\n";
+ if (cwd() eq '/') {
+ die "$progname: cannot find readable debian/changelog anywhere!\nAre you in the source code tree?\n";
+ }
+ }
+
+ if (-e ".svn/deb-layout") {
+ # Cope with format of svn-buildpackage tree
+ my $fh;
+ open($fh, "<", ".svn/deb-layout") || die "Can't open .svn/deb-layout: $!\n";
+ my($build_area) = grep /^buildArea=/, <$fh>;
+ close($fh);
+ if (defined($build_area) and not $opt_debsdir) {
+ chomp($build_area);
+ $build_area =~ s/^buildArea=//;
+ $debsdir = $build_area if -d $build_area;
+ }
+ }
+
+ # Find the source package name and version number
+ my $changelog = changelog_parse();
+
+ die "$progname: no package name in changelog!\n"
+ unless exists $changelog->{'Source'};
+ die "$progname: no package version in changelog!\n"
+ unless exists $changelog->{'Version'};
+
+ # Is the directory name acceptable?
+ if ($check_dirname_level == 2 or
+ ($check_dirname_level == 1 and $chdir)) {
+ my $re = $check_dirname_regex;
+ $re =~ s/PACKAGE/\\Q$changelog->{'Source'}\\E/g;
+ my $gooddir;
+ if ($re =~ m%/%) { $gooddir = eval "cwd() =~ /^$re\$/;"; }
+ else { $gooddir = eval "basename(cwd()) =~ /^$re\$/;"; }
+
+ if (! $gooddir) {
+ my $pwd = cwd();
+ die <<"EOF";
+$progname: found debian/changelog for package $changelog->{'Source'} in the directory
+ $pwd
+but this directory name does not match the package name according to the
+regex $check_dirname_regex.
+
+To run $progname on this package, see the --check-dirname-level and
+--check-dirname-regex options; run $progname --help for more info.
+EOF
+ }
+ }
+
+ my $sversion = $changelog->{'Version'};
+ $sversion =~ s/^\d+://;
+ my $package = $changelog->{'Source'};
+ my $pva="${package}_${sversion}_${arch}";
+ $changes="$debsdir/$pva.changes";
+
+ if (! -e $changes and -d "../build-area") {
+ # Try out default svn-buildpackage structure in case
+ # we were going to fail anyway...
+ $changes = "../build-area/$pva.changes";
+ }
+
+ if ($opt_multi) {
+ my @mchanges = glob("$debsdir/${package}_${sversion}_*+*.changes");
+ @mchanges = grep { /[_+]$arch[\.+]/ } @mchanges;
+ $mchanges = $mchanges[0] || '';
+ $mchanges ||= "$debsdir/${package}_${sversion}_multi.changes"
+ if -f "$debsdir/${package}_${sversion}_multi.changes";
+ }
+}
+
+chdir dirname($changes)
+ or die "$progname: can't chdir to $changes directory: $!\n";
+$changes = basename($changes);
+$mchanges = basename($mchanges) if $opt_multi;
+
+if (! -r $changes or $opt_multi and $mchanges and ! -r $mchanges) {
+ die "$progname: can't read $changes" .
+ (($opt_multi and $mchanges) ? " or $mchanges" : "") . "!\n";
+}
+
+if (! -r $changes and $opt_multi) {
+ $changes = $mchanges;
+} else {
+ $opt_multi = 0;
+}
+# $opt_multi now tells us whether we're actually using a multi-arch .changes
+# file
+
+my @debs = ();
+my %pkgs = map { $_ => 0 } @ARGV;
+my $ctrl = Dpkg::Control->new(name => $changes, type => CTRL_FILE_CHANGES);
+$ctrl->load($changes);
+for (split(/\n/, $ctrl->{Files})) {
+ # udebs are only supported for debc
+ if ((($progname eq 'debi') && (/ (\S*\.deb)$/)) ||
+ (($progname eq 'debc') && (/ (\S*\.u?deb)$/))) {
+ my $deb = $1;
+ $deb =~ /^([a-z0-9+\.-]+)_/ or warn "unrecognised .deb name: $deb\n";
+ # don't want other archs' .debs:
+ next unless $deb =~ /[_+]($arch|all)[\.+]/;
+ my $pkg = $deb;
+ $pkg =~ s/_.*$//;
+
+ if (@ARGV) {
+ if (exists $pkgs{$pkg}) {
+ push @debs, $deb;
+ $pkgs{$pkg}++;
+ } elsif (exists $pkgs{$deb}) {
+ push @debs, $deb;
+ $pkgs{$deb}++;
+ }
+ } else {
+ push @debs, $deb;
+ }
+ }
+}
+
+if (! @debs) {
+ die "$progname: no appropriate .debs found in the changes file $changes!\n";
+}
+
+if ($progname eq 'debi') {
+ my @upgrade = $opt_upgrade ? ('-O') : ();
+ if ($opt_with_depends) {
+ system('debpkg', @upgrade, '--unpack', @debs) == 0
+ or die "$progname: debpkg --unpack failed \n";
+ system($install_tool, '-f', 'install') == 0
+ or die "$progname: " . $install_tool . ' -f install failed\n';
+ } else {
+ system('debpkg', @upgrade, '-i', @debs) == 0
+ or die "$progname: debpkg -i failed\n";
+ }
+} else {
+ # $progname eq 'debc'
+ foreach my $deb (@debs) {
+ print "$deb\n";
+ print '-' x length($deb), "\n";
+ system('dpkg-deb', '-I', $deb) == 0
+ or die "$progname: dpkg-deb -I $deb failed\n";
+ system('dpkg-deb', '-c', $deb) == 0
+ or die "$progname: dpkg-deb -c $deb failed\n";
+ print "\n";
+ }
+}
+
+# Now do a sanity check
+if (@ARGV) {
+ foreach my $pkg (keys %pkgs) {
+ if ($pkgs{$pkg} == 0) {
+ warn "$progname: package $pkg not found in $changes, ignoring\n";
+ } elsif ($pkgs{$pkg} > 1) {
+ warn "$progname: package $pkg found more than once in $changes, installing all\n";
+ }
+ }
+}
+
+exit 0;
--- /dev/null
+/* Wrapper for debpkg so that we don't have to use suidperl any longer
+ (it's deprecated as of Perl 5.8.0) */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+
+#define REAL_PATH "/usr/share/devscripts/debpkg"
+
+int main(int ac, char **av)
+{
+ execv(REAL_PATH, av);
+
+ fprintf(stderr, "Error executing debpkg: %s\n", strerror(errno));
+ return 1;
+}
--- /dev/null
+.TH DEBPKG 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+debpkg \- wrapper for dpkg
+.SH SYNOPSIS
+\fBdebpkg\fP \fIdpkg-options\fP
+.SH DESCRIPTION
+\fBdebpkg\fR simply invokes \fBdpkg\fP(1) but first becomes superuser
+so that \fBdpkg\fP is able to install and remove packages. It also
+cleans the environment and resets PATH to a sane default:
+"/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11" so that local versions of
+programs are not run by accident.
+.SH REQUIREMENTS
+\fBdebpkg\fP must be given superuser privileges in some way to
+function properly. \fBAccess to debpkg with those privileges is the
+same as having superuser access to your machine.\fP \fBdebpkg\fP will
+abort if it finds that it neither being run by root nor setuid root.
+.PP
+The \fBdevscripts\fR package has been designed to allow \fBdebpkg\fR
+to be made setuid root. This works by using a compiled wrapper
+script, which means that \fBsuidperl\fR is not required. See
+\fBdpkg-statoverride\fR(8) if you wish to make this program setuid
+root. \fBsudo\fR or \fBsuper\fR could also conceivably be used.
+.SH AUTHOR
+Christoph Lameter <clameter@debian.org>; minor modifications made by
+Julian Gilbey <jdg@debian.org>.
--- /dev/null
+#!/usr/bin/perl -w
+
+# Perl version of Christoph Lameter's debpkg program.
+# Written by Julian Gilbey, December 1998.
+
+# Copyright 1999, Julian Gilbey
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+
+# All this program does is to check that it is either running as root
+# or setuid root, and then exec dpkg with the command line options.
+
+# As this may be running setuid, we make sure to clean out the
+# environment before we go further. Also wise for building the
+# packages, anyway. We don't put /usr/local/bin in the PATH as Debian
+# programs will presumably be built without the use of any locally
+# installed programs. This could be changed, but in which case,
+# you probably want to add /usr/local/bin at the END so that you don't
+# get any unexpected behaviour.
+
+use 5.003;
+use File::Basename;
+
+my $progname = basename($0);
+
+# Predeclare functions
+sub fatal($);
+
+my $usage = "Usage: $progname --help|--version|dpkg-options\n";
+
+my $version = <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1999 by Julian Gilbey, all rights reserved.
+Based on code by Christoph Lameter.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+
+##
+## handle command-line options
+##
+if (! @ARGV) { print STDERR $usage; exit 1; }
+if ($ARGV[0] eq '--help') { print $usage; exit 0; }
+if ($ARGV[0] eq '--version') { print $version; exit 0; }
+
+# We *do* preserve locale variables; dpkg should know how to handle
+# them, and anyone running this with root privileges has total power
+# over the system anyway, so doesn't really need to worry about forging
+# locale data. We don't try to preserve TEXTDOMAIN and the like.
+foreach $var (keys %ENV) {
+ delete $ENV{$var} unless
+ $var =~ /^(PATH|TERM|HOME|LOGNAME|LANG)$/ or
+ $var =~ /^LC_[A-Z]+$/;
+}
+
+$ENV{'PATH'} = "/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11";
+# $ENV{'PATH'} = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11";
+$ENV{'TERM'}='dumb' unless defined $ENV{'TERM'};
+
+# Pick up superuser privileges if we are running setuid root
+if ( $< != 0 && $> == 0 ) { $< = $>; }
+fatal "debpkg is only useful if it is run by root or setuid root!"
+ if $< != 0;
+
+# Pick up group 'root'
+$( = $) = 0;
+
+# @ARGV is tainted, so we need to untaint it. Don't bother doing any
+# checking; anyone running this as root can do anything anyway.
+my @clean_argv = map { /^(.*)$/ && $1; } @ARGV;
+exec 'dpkg', @clean_argv or fatal "Couldn't exec dpkg: $!\n";
+
+###### Subroutines
+
+sub fatal($) {
+ my ($pack,$file,$line);
+ ($pack,$file,$line) = caller();
+ (my $msg = "$progname: fatal error at line $line:\n@_\n") =~ tr/\0//d;
+ $msg =~ s/\n\n$/\n/;
+ die $msg;
+}
--- /dev/null
+.TH DEBRELEASE 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+debrelease \- a wrapper around dupload or dput
+.SH SYNOPSIS
+\fBdebrelease\fR [\fIdebrelease options\fR] [\fIdupload/dput options\fR]
+.SH DESCRIPTION
+\fBdebrelease\fR is a simple wrapper around \fBdupload\fR or
+\fBdput\fR. It is called from within the source code tree of a
+package, and figures out the current version of a package. It then
+looks for the corresponding \fI.changes\fR file (which lists the files
+needed to upload in order to release the package) in the parent
+directory of the source code tree and calls \fBdupload\fR or
+\fBdput\fR with the \fI.changes\fR file as parameter in order to
+perform the actual uploading.
+.PP
+Options may be given to \fBdebrelease\fR; except for the ones listed
+below, they are passed on unchanged to \fBdupload\fR or \fBdput\fR.
+The \fBdevscripts\fR configuration files are also read by
+\fBdebrelease\fR as described below.
+.SH "Directory name checking"
+In common with several other scripts in the \fBdevscripts\fR package,
+\fBdebrelease\fR will climb the directory tree until it finds a
+\fIdebian/changelog\fR file. As a safeguard against stray files
+causing potential problems, it will examine the name of the parent
+directory once it finds the \fIdebian/changelog\fR file, and check
+that the directory name corresponds to the package name. Precisely
+how it does this is controlled by two configuration file variables
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR and \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR, and
+their corresponding command-line options \fB\-\-check-dirname-level\fR
+and \fB\-\-check-dirname-regex\fR.
+.PP
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR can take the following values:
+.TP
+.B 0
+Never check the directory name.
+.TP
+.B 1
+Only check the directory name if we have had to change directory in
+our search for \fIdebian/changelog\fR. This is the default behaviour.
+.TP
+.B 2
+Always check the directory name.
+.PP
+The directory name is checked by testing whether the current directory
+name (as determined by \fBpwd\fR(1)) matches the regex given by the
+configuration file option \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR or by the
+command line option \fB\-\-check-dirname-regex\fR \fIregex\fR. Here
+\fIregex\fR is a Perl regex (see \fBperlre\fR(3perl)), which will be
+anchored at the beginning and the end. If \fIregex\fR contains a '/',
+then it must match the full directory path. If not, then it must
+match the full directory name. If \fIregex\fR contains the string
+\'PACKAGE', this will be replaced by the source package name, as
+determined from the changelog. The default value for the regex is:
+\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and
+PACKAGE-version.
+.SH OPTIONS
+.TP
+\fB\-\-dupload\fR, \fB\-\-dput\fR
+This specifies which uploader program to use; the default is
+\fBdupload\fR.
+.TP
+\fB\-S\fR
+If this option is used, or the default \fI.changes\fR file is
+not found but a source-only \fI.changes\fR file is present, then this
+source-only \fI.changes\fR file will be uploaded instead of an
+arch-specific one.
+.TP
+\fB\-a\fIdebian-architecture\fR, \fB\-t\fIGNU-system-type\fR
+See \fBdpkg-architecture\fR(1) for a description of these options.
+They affect the search for the \fI.changes\fR file. They are provided
+to mimic the behaviour of \fBdpkg-buildpackage\fR when determining the
+name of the \fI.changes\fR file. If a plain \fB\-t\fR is given, it is
+taken to be the \fBdupload\fR host-specifying option, and therefore
+signifies the end of the \fBdebrelease\fR-specific options.
+.TP
+\fB\-\-multi\fR
+Multiarch \fI.changes\fR mode: This signifies that \fBdebrelease\fR should
+use the most recent file with the name pattern
+\fIpackage_version_*+*.changes\fR as the \fI.changes\fR file, allowing for the
+\fI.changes\fR files produced by \fBdpkg-cross\fR.
+.TP
+\fB\-\-debs\-dir\fR \fIdirectory\fR
+Look for the \fI.changes\fR and \fI.deb\fR files in \fIdirectory\fR
+instead of the parent of the source directory. This should
+either be an absolute path or relative to the top of the source
+directory.
+.TP
+\fB\-\-check-dirname-level\fR \fIN\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-\-check-dirname-regex\fR \fIregex\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+.BR \-\-help ", " \-h
+Display a help message and exit successfully.
+.TP
+.B \-\-version
+Display version and copyright information and exit successfully.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variables are:
+.TP
+.B DEBRELEASE_UPLOADER
+The currently recognised values are \fIdupload\fR and \fIdput\fR, and
+it specifies which uploader program should be used. It corresponds to
+the \fB\-\-dupload\fR and \fB\-\-dput\fR command line options.
+.TP
+.B DEBRELEASE_DEBS_DIR
+This specifies the directory in which to look for the \fI.changes\fR
+and \fI.deb\fR files, and is either an absolute path or relative to
+the top of the source tree. This corresponds to the
+\fB\-\-debs\-dir\fR command line option. This directive could be
+used, for example, if you always use \fBpbuilder\fR or
+\fBsvn-buildpackage\fR to build your packages. Note that it also
+affects \fBdebc\fR(1) and \fBdebi\fR(1).
+.TP
+.BR DEVSCRIPTS_CHECK_DIRNAME_LEVEL ", " DEVSCRIPTS_CHECK_DIRNAME_REGEX
+See the above section \fBDirectory name checking\fR for an explanation of
+these variables. Note that these are package-wide configuration
+variables, and will therefore affect all \fBdevscripts\fR scripts
+which check their value, as described in their respective manpages and
+in \fBdevscripts.conf\fR(5).
+.SH "SEE ALSO"
+.BR dput (1),
+.BR dupload (1),
+.BR devscripts.conf (5)
+.SH AUTHOR
+Julian Gilbey <jdg@debian.org>, based on the original \fBrelease\fR
+script by Christoph Lameter <clameter@debian.org>.
--- /dev/null
+#!/bin/bash
+
+# debrelease: a devscripts wrapper around dupload/dput which calls
+# dupload/dput with the correct .changes file as parameter.
+# All command line options are passed onto dupload.
+#
+# Written and copyright 1999-2003 by Julian Gilbey <jdg@debian.org>
+# Based on the original 'release' script by
+# Christoph Lameter <clameter@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+set -e
+
+PROGNAME=`basename $0`
+MODIFIED_CONF_MSG='Default settings modified by devscripts configuration files:'
+
+usage () {
+ echo \
+"Usage: $PROGNAME [debrelease options] [dupload/dput options]
+ Run dupload on the newly created changes file.
+ Debrelease options:
+ --dupload Use dupload to upload files (default)
+ --dput Use dput to upload files
+ -a<arch> Search for .changes file made for Debian build <arch>
+ -t<target> Search for .changes file made for GNU <target> arch
+ -S Search for source-only .changes file instead of arch one
+ --multi Search for multiarch .changes file made by dpkg-cross
+ --debs-dir DIR Look for the changes and debs files in DIR instead of
+ the parent of the current package directory
+ --check-dirname-level N
+ How much to check directory names before cleaning trees:
+ N=0 never
+ N=1 only if program changes directory (default)
+ N=2 always
+ --check-dirname-regex REGEX
+ What constitutes a matching directory name; REGEX is
+ a Perl regular expression; the string \`PACKAGE' will
+ be replaced by the package name; see manpage for details
+ (default: 'PACKAGE(-.+)?')
+ --no-conf, --noconf
+ Don't read devscripts config files;
+ must be the first option given
+ --help Show this message
+ --version Show version and copyright information
+
+$MODIFIED_CONF_MSG"
+}
+
+version () {
+ echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1999-2003 by Julian Gilbey, all rights reserved.
+Based on original code by Christoph Lameter.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later."
+}
+
+mustsetvar () {
+ if [ "x$2" = x ]
+ then
+ echo >&2 "$PROGNAME: unable to determine $3"
+ exit 1
+ else
+ # echo "$PROGNAME: $3 is $2"
+ eval "$1=\"\$2\""
+ fi
+}
+
+# Boilerplate: set config variables
+DEFAULT_DEBRELEASE_UPLOADER=dupload
+DEFAULT_DEBRELEASE_DEBS_DIR=..
+DEFAULT_DEVSCRIPTS_CHECK_DIRNAME_LEVEL=1
+DEFAULT_DEVSCRIPTS_CHECK_DIRNAME_REGEX='PACKAGE(-.+)?'
+VARS="DEBRELEASE_UPLOADER DEBRELEASE_DEBS_DIR DEVSCRIPTS_CHECK_DIRNAME_LEVEL DEVSCRIPTS_CHECK_DIRNAME_REGEX"
+
+if [ "$1" = "--no-conf" -o "$1" = "--noconf" ]; then
+ shift
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (no configuration files read)"
+
+ # set defaults
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+else
+ # Run in a subshell for protection against accidental errors
+ # in the config files
+ eval $(
+ set +e
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+
+ for file in /etc/devscripts.conf ~/.devscripts
+ do
+ [ -r $file ] && . $file
+ done
+
+ set | egrep "^(DEBRELEASE|DEVSCRIPTS)_")
+
+ # check sanity
+ case "$DEBRELEASE_UPLOADER" in
+ dupload|dput) ;;
+ *) DEBRELEASE_UPLOADER=dupload ;;
+ esac
+
+ # We do not replace this with a default directory to avoid accidentally
+ # uploading a broken package
+ DEBRELEASE_DEBS_DIR="`echo \"$DEBRELEASE_DEBS_DIR\" | sed -e 's%/\+%/%g; s%\(.\)/$%\1%;'`"
+ if ! [ -d "$DEBRELEASE_DEBS_DIR" ]; then
+ debsdir_warning="config file specified DEBRELEASE_DEBS_DIR directory $DEBRELEASE_DEBS_DIR does not exist!"
+ fi
+
+ case "$DEVSCRIPTS_CHECK_DIRNAME_LEVEL" in
+ 0|1|2) ;;
+ *) DEVSCRIPTS_CHECK_DIRNAME_LEVEL=1 ;;
+ esac
+
+ # set config message
+ MODIFIED_CONF=''
+ for var in $VARS; do
+ eval "if [ \"\$$var\" != \"\$DEFAULT_$var\" ]; then
+ MODIFIED_CONF_MSG=\"\$MODIFIED_CONF_MSG
+ $var=\$$var\";
+ MODIFIED_CONF=yes;
+ fi"
+ done
+
+ if [ -z "$MODIFIED_CONF" ]; then
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (none)"
+ fi
+fi
+
+
+# synonyms
+CHECK_DIRNAME_LEVEL="$DEVSCRIPTS_CHECK_DIRNAME_LEVEL"
+CHECK_DIRNAME_REGEX="$DEVSCRIPTS_CHECK_DIRNAME_REGEX"
+
+
+sourceonly=
+multiarch=
+debsdir="$DEBRELEASE_DEBS_DIR"
+
+while [ $# -gt 0 ]
+do
+ case "$1" in
+ -a*) targetarch="`echo \"$1\" | sed -e 's/^-a//'`" ;;
+ -t*) targetgnusystem="`echo \"$1\" | sed -e 's/^-t//'`"
+ # dupload has a -t option
+ if [ -z "$targetgnusystem" ]; then break; fi ;;
+ -S) sourceonly=source ;;
+ --multi) multiarch=yes ;;
+ --dupload) DEBRELEASE_UPLOADER=dupload ;;
+ --dput) DEBRELEASE_UPLOADER=dput ;;
+ # Delay checking of debsdir until we need it. We need to make sure we're
+ # in the package root directory first.
+ --debs-dir=*)
+ opt_debsdir="`echo \"$1\" | sed -e 's/^--debs-dir=//; s%/\+%/%g; s%\(.\)/$%\1%;'`"
+ ;;
+ --debs-dir)
+ shift
+ opt_debsdir="`echo \"$1\" | sed -e 's%/\+%/%g; s%\(.\)/$%\1%;'`"
+ ;;
+ --check-dirname-level=*)
+ level="`echo \"$1\" | sed -e 's/^--check-dirname-level=//'`"
+ case "$level" in
+ 0|1|2) CHECK_DIRNAME_LEVEL=$level ;;
+ *) echo "$PROGNAME: unrecognised --check-dirname-level value (allowed are 0,1,2)" >&2
+ exit 1 ;;
+ esac
+ ;;
+ --check-dirname-level)
+ shift
+ case "$1" in
+ 0|1|2) CHECK_DIRNAME_LEVEL=$1 ;;
+ *) echo "$PROGNAME: unrecognised --check-dirname-level value (allowed are 0,1,2)" >&2
+ exit 1 ;;
+ esac
+ ;;
+ --check-dirname-regex=*)
+ regex="`echo \"$1\" | sed -e 's/^--check-dirname-level=//'`"
+ if [ -z "$regex" ]; then
+ echo "$PROGNAME: missing --check-dirname-regex parameter" >&2
+ echo "try $PROGNAME --help for usage information" >&2
+ exit 1
+ else
+ CHECK_DIRNAME_REGEX="$regex"
+ fi
+ ;;
+ --check-dirname-regex)
+ shift;
+ if [ -z "$1" ]; then
+ echo "$PROGNAME: missing --check-dirname-regex parameter" >&2
+ echo "try $PROGNAME --help for usage information" >&2
+ exit 1
+ else
+ CHECK_DIRNAME_REGEX="$1"
+ fi
+ ;;
+ --no-conf|--noconf)
+ echo "$PROGNAME: $1 is only acceptable as the first command-line option!" >&2
+ exit 1 ;;
+ --dopts) shift; break ;; # This is an option for cvs-debrelease,
+ # so we accept it here too, even though we don't
+ # advertise it
+ --help) usage; exit 0 ;;
+ --version) version; exit 0 ;;
+ *) break ;; # a dupload/dput option, so stop parsing here
+ esac
+ shift
+done
+
+# Look for .changes file via debian/changelog
+CHDIR=
+until [ -f debian/changelog ]; do
+ CHDIR=yes
+ cd ..
+ if [ `pwd` = "/" ]; then
+ echo "$PROGNAME: cannot find debian/changelog anywhere!" >&2
+ echo "Are you in the source code tree?" >&2
+ exit 1
+ fi
+done
+
+# Use svn-buildpackage's directory if there is one and debsdir wasn't already
+# specified on the command-line. This can override DEBRELEASE_DEBS_DIR.
+if [ -n "$opt_debsdir" ]; then
+ debsdir="$opt_debsdir"
+elif [ -e ".svn/deb-layout" ]; then
+ buildArea="$(sed -ne '/^buildArea=/{s/^buildArea=//; s%/\+%/%g; s%\(.\)/$%\1%; p; q}' .svn/deb-layout)"
+ if [ -n "$buildArea" -a -d "$buildArea" ]; then
+ debsdir="$buildArea"
+ fi
+fi
+
+# check sanity of debdir
+if ! [ -d "$debsdir" ]; then
+ if [ -n "$debsdir_warning" ]; then
+ echo "$PROGNAME: $debsdir_warning" >&2
+ exit 1
+ else
+ echo "$PROGNAME: could not find directory $debsdir!" >&2
+ exit 1
+ fi
+fi
+
+mustsetvar package "`dpkg-parsechangelog | sed -n 's/^Source: //p'`" \
+ "source package"
+mustsetvar version "`dpkg-parsechangelog | sed -n 's/^Version: //p'`" \
+ "source version"
+
+if [ $CHECK_DIRNAME_LEVEL -eq 2 -o \
+ \( $CHECK_DIRNAME_LEVEL -eq 1 -a "$CHDIR" = yes \) ]; then
+ if ! perl -MFile::Basename -w \
+ -e "\$pkg='$package'; \$re='$CHECK_DIRNAME_REGEX';" \
+ -e '$re =~ s/PACKAGE/\\Q$pkg\\E/g; $pwd=`pwd`; chomp $pwd;' \
+ -e 'if ($re =~ m%/%) { eval "exit (\$pwd =~ /^$re\$/ ? 0:1);"; }' \
+ -e 'else { eval "exit (basename(\$pwd) =~ /^$re\$/ ? 0:1);"; }'
+ then
+ echo >&2 <<EOF
+$progname: found debian/changelog for package $PACKAGE in the directory
+ $pwd
+but this directory name does not match the package name according to the
+regex $check_dirname_regex.
+
+To run $progname on this package, see the --check-dirname-level and
+--check-dirname-regex options; run $progname --help for more info.
+EOF
+ exit 1
+ fi
+fi
+
+if [ "x$sourceonly" = "xsource" ]; then
+ arch=source
+elif [ -n "$targetarch" ] && [ -n "$targetgnusystem" ]; then
+ mustsetvar arch "$(dpkg-architecture "-a${targetarch}" "-t${targetgnusystem}" -qDEB_HOST_ARCH)" "build architecture"
+elif [ -n "$targetarch" ]; then
+ mustsetvar arch "$(dpkg-architecture "-a${targetarch}" -qDEB_HOST_ARCH)" "build architecture"
+elif [ -n "$targetgnusystem" ]; then
+ mustsetvar arch "$(dpkg-architecture "-t${targetgnusystem}" -qDEB_HOST_ARCH)" "build architecture"
+else
+ mustsetvar arch "$(dpkg-architecture -qDEB_HOST_ARCH)" "build architecture"
+fi
+
+sversion=`echo "$version" | perl -pe 's/^\d+://'`
+pva="${package}_${sversion}_${arch}"
+pvs="${package}_${sversion}_source"
+changes="$debsdir/$pva.changes"
+schanges="$debsdir/$pvs.changes"
+mchanges=$(ls "$debsdir/${package}_${sversion}_*+*.changes" "$debsdir/${package}_${sversion}_multi.changes" 2>/dev/null | head -1)
+
+if [ -n "$multiarch" ]; then
+ if [ -z "$mchanges" -o ! -r "$mchanges" ]; then
+ echo "$PROGNAME: could not find/read any multiarch .changes file with name" >&2
+ echo "$debsdir/${package}_${sversion}_*.changes" >&2
+ exit 1
+ fi
+ changes=$mchanges
+elif [ "$arch" = source ]; then
+ if [ -r "$schanges" ]; then
+ changes=$schanges
+ else
+ echo "$PROGNAME: could not find/read changes file $schanges!" >&2
+ exit 1
+ fi
+else
+ if [ ! -r "$changes" ]; then
+ if [ -r "$mchanges" ]; then
+ changes=$mchanges
+ echo "$PROGNAME: could only find a multiarch changes file:" >&2
+ echo " $mchanges" >&2
+ echo -n "Should I upload this file? (y/n) " >&2
+ read ans
+ case ans in
+ y*) ;;
+ *) exit 1 ;;
+ esac
+ else
+ echo "$PROGNAME: could not read changes file $changes!" >&2
+ exit 1
+ fi
+ fi
+fi
+
+exec $DEBRELEASE_UPLOADER "$@" "$changes"
+
+echo "$PROGNAME: failed to exec $DEBRELEASE_UPLOADER!" >&2
+echo "Aborting...." >&2
+exit 1
--- /dev/null
+.TH DEBRSIGN 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+debrsign \- remotely sign a Debian .changes and .dsc file pair using SSH
+.SH SYNOPSIS
+\fBdebrsign\fR [\fIoptions\fR] [\fIuser\fB@\fR]\fIremotehost\fR
+[\fIchanges-file\fR|\fIdsc-file\fR]
+.SH DESCRIPTION
+\fBdebrsign\fR takes either an unsigned \fI.dsc\fR file or an
+unsigned \fI.changes\fR file and the associated unsigned \fI.dsc\fR
+file (found by replacing the architecture name and \fI.changes\fR
+by \fI.dsc\fR) if it appears in the \fI.changes\fR file and signs them
+by copying them to the remote machine using \fBssh\fR(1) and remotely
+running \fBdebsign\fR(1) on that machine. All options not listed
+below are passed to the \fBdebsign\fR program on the remote machine.
+.PP
+If a \fI.changes\fR or \fI.dsc\fR file is specified, it is signed,
+otherwise, \fIdebian/changelog\fR is parsed to determine the name of
+the \fI.changes\fR file to look for in the parent directory.
+.PP
+This utility is useful if a developer must build a package on one
+machine where it is unsafe to sign it; they need then only transfer
+the small \fI.dsc\fR and \fI.changes\fR files to a safe machine and
+then use the \fBdebsign\fR program to sign them before
+transferring them back. This program automates this process.
+.PP
+To do it the other way round, that is to connect to an unsafe machine
+to download the \fI.dsc\fR and \fI.changes\fR files, to sign them
+locally and then to transfer them back, see the \fBdebsign\fR(1)
+program, which can do this task.
+.SH OPTIONS
+.TP
+\fB\-S\fR
+Look for a source-only \fI.changes\fR file instead of a binary-build
+\fI.changes\fR file.
+.TP
+\fB\-a\fIdebian-architecture\fR, \fB\-t\fIGNU-system-type\fR
+See \fBdpkg-architecture\fR(1) for a description of these options.
+They affect the search for the \fI.changes\fR file. They are provided
+to mimic the behaviour of \fBdpkg-buildpackage\fR when determining the
+name of the \fI.changes\fR file.
+.TP
+\fB\-\-multi\fR
+Multiarch \fI.changes\fR mode: This signifies that \fBdebrsign\fR should
+use the most recent file with the name pattern
+\fIpackage_version_*+*.changes\fR as the \fI.changes\fR file, allowing for the
+\fI.changes\fR files produced by \fBdpkg-cross\fR.
+.TP
+\fB\-\-path \fIremote-path\fR
+Specify a path to the GPG binary on the remote host.
+.TP
+\fB\-\-help\fR, \fB\-\-version\fR
+Show help message and version information respectively.
+.TP
+\fBOther options\fR
+All other options are passed on to \fBdebsign\fR on the remote
+machine.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variables are:
+.TP
+.B DEBRSIGN_PGP_PATH
+Equivalent to passing \fB\-\-path\fR on the command line (see above.)
+.SH "SEE ALSO"
+.BR debsign (1),
+.BR dpkg-architecture (1),
+.BR ssh (1)
+.SH AUTHOR
+This program was written by Julian Gilbey <jdg@debian.org> and is
+copyright under the GPL, version 2 or later.
--- /dev/null
+#!/bin/bash
+
+# This program is used to REMOTELY sign a .dsc and .changes file
+# pair in the form needed for a legal Debian upload. It is based on
+# dpkg-buildpackage and debsign (which is also part of the devscripts
+# package).
+#
+# In order for this program to work, debsign must be installed
+# on the REMOTE machine which will be used to sign your package.
+# You should run this program from within the package directory on
+# the build machine.
+#
+
+# Debian GNU/Linux debrsign.
+# Copyright 1999 Mike Goldman, all rights reserved
+# Modifications copyright 1999 Julian Gilbey <jdg@debian.org>,
+# all rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+# Abort if anything goes wrong
+set -e
+
+PROGNAME=`basename $0`
+
+usage () {
+ echo \
+"Usage: debrsign [options] [username@]remotehost [changes or dsc]
+ Options:
+ -p<sign-command> The command to use for signing
+ -e<maintainer> Sign using key of <maintainer> (takes precedence over -m)
+ -m<maintainer> The same as -e
+ -k<keyid> The key to use for signing
+ -S Use changes file made for source-only upload
+ -a<arch> Use changes file made for Debian target architecture <arch>
+ -t<target> Use changes file made for GNU target architecture <target>
+ --multi Use most recent multiarch .changes file found
+ --path Specify directory GPG binary is located on remote host
+ --help Show this message
+ --version Show version and copyright information
+ If a changes or dscfile is specified, it is signed, otherwise
+ debian/changelog is parsed to find the changes file. The signing
+ is performed on remotehost using ssh and debsign."
+}
+
+version () {
+ echo \
+"This is debrsign, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1999 by Mike Goldman and Julian Gilbey,
+all rights reserved. This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later."
+}
+
+mustsetvar () {
+ if [ "x$2" = x ]
+ then
+ echo >&2 "$PROGNAME: unable to determine $3"
+ exit 1
+ else
+ # echo "$PROGNAME: $3 is $2"
+ eval "$1=\"\$2\""
+ fi
+}
+
+withecho () {
+ echo " $@"
+ "$@"
+}
+
+# --- main script
+
+# For partial security, even though we know it doesn't work :(
+# I guess maintainers will have to be careful, and there's no way around
+# this in a shell script.
+unset IFS
+PATH=/usr/local/bin:/usr/bin:/bin
+umask `perl -e 'printf "%03o\n", umask | 022'`
+
+eval $(
+ set +e
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+ for file in /etc/devscripts.conf ~/.devscripts; do
+ [ -r $file ] && . $file
+ done
+
+ set | egrep '^DEBRSIGN_')
+
+signargs=
+while [ $# != 0 ]
+do
+ value="`echo x\"$1\" | sed -e 's/^x-.//'`"
+ case "$1" in
+ -S) sourceonly="true" ;;
+ -a*) targetarch="$value" ;;
+ -t*) targetgnusystem="$value" ;;
+ --multi) multiarch="true" ;;
+ --help) usage; exit 0 ;;
+ --version)
+ version; exit 0 ;;
+ --path) DEBRSIGN_PGP_PATH="$value" ;;
+ -*) signargs="$signargs '$1'" ;;
+ *) break ;;
+ esac
+ shift
+done
+
+# Command line parameters are remote host (mandatory) and changes file
+# name (optional). If there is no changes file name, we must be at the
+# top level of a source tree and will figure out its name from
+# debian/changelog
+case $# in
+ 2) remotehost="$1"
+ case "$2" in
+ *.dsc)
+ changes=
+ dsc=$2
+ ;;
+ *.changes)
+ changes=$2
+ dsc=`echo $changes | \
+ perl -pe 's/\.changes$/.dsc/; s/(.*)_(.*)_(.*)\.dsc/\1_\2.dsc/'`
+ ;;
+ *) echo "$PROGNAME: Only a .changes or .dsc file is allowed as second argument!" >&2
+ exit 1 ;;
+ esac
+ ;;
+
+ 1) remotehost="$1"
+ case "$1" in
+ *.changes)
+ echo "$PROGNAME: You must pass the address of the signing host as as the first argument" >&2
+ exit 1
+ ;;
+ *)
+ # We have to parse debian/changelog to find the current version
+ if [ ! -r debian/changelog ]; then
+ echo "$PROGNAME: Must be run from top of source dir or a .changes file given as arg" >&2
+ exit 1
+ fi
+ ;;
+ esac
+
+
+ mustsetvar package "`dpkg-parsechangelog | sed -n 's/^Source: //p'`" \
+ "source package"
+ mustsetvar version "`dpkg-parsechangelog | sed -n 's/^Version: //p'`" \
+ "source version"
+
+ if [ "x$sourceonly" = x ]
+ then
+ if [ -n "$targetarch" ] && [ -n "$targetgnusystem" ]; then
+ mustsetvar arch "$(dpkg-architecture "-a${targetarch}" "-t${targetgnusystem}" -qDEB_HOST_ARCH)" "build architecture"
+ elif [ -n "$targetarch" ]; then
+ mustsetvar arch "$(dpkg-architecture "-a${targetarch}" -qDEB_HOST_ARCH)" "build architecture"
+ elif [ -n "$targetgnusystem" ]; then
+ mustsetvar arch "$(dpkg-architecture "-t${targetgnusystem}" -qDEB_HOST_ARCH)" "build architecture"
+ else
+ mustsetvar arch "$(dpkg-architecture -qDEB_HOST_ARCH)" "build architecture"
+ fi
+ else
+ arch=source
+ fi
+
+ sversion=`echo "$version" | perl -pe 's/^\d+://'`
+ pv="${package}_${sversion}"
+ pva="${package}_${sversion}${arch:+_${arch}}"
+ dsc="../$pv.dsc"
+ changes="../$pva.changes"
+ if [ -n "$multiarch" -o ! -r $changes ]; then
+ changes=$(ls "../${package}_${sversion}_*+*.changes" "../${package}_${sversion}_multi.changes" 2>/dev/null | head -1)
+ if [ -z "$multiarch" ]; then
+ if [ -n "$changes" ]; then
+ echo "$PROGNAME: could not find normal .changes file but found multiarch file:" >&2
+ echo " $changes" >&2
+ echo "Using this changes file instead." >&2
+ else
+ echo "$PROGNAME: Can't find or can't read changes file $changes!" >&2
+ exit 1
+ fi
+ elif [ -n "$multiarch" -a -z "$changes" ]; then
+ echo "$PROGNAME: could not find any multiarch .changes file with name" >&2
+ echo "../${package}_${sversion}_*.changes" >&2
+ exit 1
+ fi
+ fi
+ ;;
+
+ *) echo "Usage: $PROGNAME [options] [user@]remotehost [.changes or .dsc file]" >&2
+ exit 1 ;;
+esac
+
+if [ "x$remotehost" == "x" ]
+then
+ echo "No [user@]remotehost specified!" >&2
+ exit 1
+fi
+
+changesbase=`basename "$changes"`
+dscbase=`basename "$dsc"`
+
+if [ -n "$changes" ]
+then
+ if [ ! -f "$changes" -o ! -r "$changes" ]
+ then
+ echo "Can't find or can't read changes file $changes!" >&2
+ exit 1
+ fi
+
+ # Is there a dsc file listed in the changes file?
+ if grep -q "$dscbase" "$changes"
+ then
+ if [ ! -f "$dsc" -o ! -r "$dsc" ]
+ then
+ echo "Can't find or can't read dsc file $dsc!" >&2
+ exit 1
+ fi
+
+ # Now do the real work
+ withecho scp "$changes" "$dsc" "$remotehost:\$HOME"
+ withecho ssh -t "$remotehost" "debsign $signargs $changesbase"
+ withecho scp "$remotehost:\$HOME/$changesbase" "$changes"
+ withecho scp "$remotehost:\$HOME/$dscbase" "$dsc"
+ withecho ssh "$remotehost" "rm -f $changesbase $dscbase"
+ else
+ withecho scp "$changes" "$remotehost:\$HOME"
+ withecho ssh -t "$remotehost" "debsign $signargs $changesbase"
+ withecho scp "$remotehost:\$HOME/$changesbase" "$changes"
+ withecho ssh "$remotehost" "rm -f $changesbase"
+ fi
+
+ echo "Successfully signed changes file"
+else
+ if [ ! -f "$dsc" -o ! -r "$dsc" ]
+ then
+ echo "Can't find or can't read dsc file $dsc!" >&2
+ exit 1
+ fi
+
+ withecho scp "$dsc" "$remotehost:\$HOME"
+ withecho ssh -t "$remotehost" "${DEBRSIGN_PGP_PATH}debsign $signargs $dscbase"
+ withecho scp "$remotehost:\$HOME/$dscbase" "$dsc"
+ withecho ssh "$remotehost" "rm -f $dscbase"
+
+ echo "Successfully signed dsc file"
+fi
+exit 0
--- /dev/null
+.TH DEBSIGN 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+debsign \- sign a Debian .changes and .dsc file pair using GPG
+.SH SYNOPSIS
+\fBdebsign\fR [\fIoptions\fR] [\fIchanges-file\fR|\fIdsc-file\fR|\fIcommands-file\fR ...]
+.SH DESCRIPTION
+\fBdebsign\fR mimics the signing aspects (and bugs) of
+\fBdpkg-buildpackage\fR(1). It takes either an unsigned \fI.dsc\fR
+file or an unsigned \fI.changes\fR file (along with the associated
+unsigned \fI.dsc\fR file found by replacing the architecture name and
+\fI.changes\fR by \fI.dsc\fR if it appears in the \fI.changes\fR
+file), and signs them using the GNU Privacy Guard. It is
+careful to calculate the size and checksums of the newly signed
+\fI.dsc\fR file and replace the original values in the \fI.changes\fR
+file.
+.PP
+If a \fI.changes\fR, \fI.dsc\fR or \fI.commands\fR file is specified,
+it is signed, otherwise, \fIdebian/changelog\fR is parsed to determine
+the name of the \fI.changes\fR file to look for in the parent
+directory.
+.PP
+If a \fI.commands\fR file is specified it is first validated (see the
+details at \fIftp://ftp.upload.debian.org/pub/UploadQueue/README\fR),
+and the name specified in the Uploader field is used for signing.
+.PP
+This utility is useful if a developer must build a package on one
+machine where it is unsafe to sign it; they need then only transfer
+the small \fI.dsc\fR and \fI.changes\fR files to a safe machine and
+then use the \fBdebsign\fR program to sign them before
+transferring them back. This process can be automated in two ways.
+If the files to be signed live on the \fBremote\fR machine, the \fB\-r\fR
+option may be used to copy them to the local machine and back again
+after signing. If the files live on the \fBlocal\fR machine, then they may
+be transferred to the remote machine for signing using
+\fBdebrsign\fR(1).
+.PP
+This program can take default settings from the \fBdevscripts\fR
+configuration files, as described below.
+.SH OPTIONS
+.TP
+.B \-r \fR[\fIusername\fB@\fR]\fIremotehost\fR
+The \fI.changes\fR and \fI.dsc\fR files live on the specified remote
+host. In this case, a \fI.changes\fR file must be explicitly named,
+with an absolute directory or one relative to the remote home
+directory. \fBscp\fR will be used for the copying. The
+\fR[\fIusername\fB@\fR]\fIremotehost\fB:\fIchanges\fR syntax is
+permitted as an alternative. Wildcards (\fB*\fR etc.) are allowed.
+.TP
+.B \-p\fIprogname\fR
+When \fBdebsign\fR needs to execute GPG to sign it will run \fIprogname\fR
+(searching the \fBPATH\fR if necessary), instead of \fBgpg\fR.
+.TP
+.B \-m\fImaintainer\fR
+Specify the maintainer name to be used for signing. (See
+\fBdpkg-buildpackage\fR(1) for more information about the differences
+between \fB\-m\fR, \fB\-e\fR and \fB\-k\fR when building packages;
+\fBdebsign\fR makes no use of these distinctions except with respect
+to the precedence of the various options. These multiple options are
+provided so that the program will behave as expected when called by
+\fBdebuild\fR(1).)
+.TP
+.B \-e\fImaintainer\fR
+Same as \fB\-m\fR but takes precedence over it.
+.TP
+.B \-k\fIkeyid\fR
+Specify the key ID to be used for signing; overrides any \fB\-m\fR
+and \fB\-e\fR options.
+.TP
+\fB\-S\fR
+Look for a source-only \fI.changes\fR file instead of a binary-build
+\fI.changes\fR file.
+.TP
+\fB\-a\fIdebian-architecture\fR, \fB\-t\fIGNU-system-type\fR
+See \fBdpkg-architecture\fR(1) for a description of these options.
+They affect the search for the \fI.changes\fR file. They are provided
+to mimic the behaviour of \fBdpkg-buildpackage\fR when determining the
+name of the \fI.changes\fR file.
+.TP
+\fB\-\-multi\fR
+Multiarch \fI.changes\fR mode: This signifies that \fBdebsign\fR should
+use the most recent file with the name pattern
+\fIpackage_version_*+*.changes\fR as the \fI.changes\fR file, allowing for the
+\fI.changes\fR files produced by \fBdpkg-cross\fR.
+.TP
+\fB\-\-re\-sign\fR, \fB\-\-no\-re\-sign\fR
+Recreate signature, respectively use the existing signature, if the
+file has been signed already. If neither option is given and an already
+signed file is found the user is asked if he or she likes to use the
+current signature.
+.TP
+\fB\-\-debs\-dir\fR \fIDIR\fR
+Look for the \fI.changes\fR and \fI.dsc\fR files in directory
+\fIDIR\fR instead of the parent of the source directory. This should
+either be an absolute path or relative to the top of the source
+directory.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+.BR \-\-help ", " \-h
+Display a help message and exit successfully.
+.TP
+.B \-\-version
+Display version and copyright information and exit successfully.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variables are:
+.TP
+.B DEBSIGN_PROGRAM
+Setting this is equivalent to giving a \fB\-p\fR option.
+.TP
+.B DEBSIGN_MAINT
+This is the \fB\-m\fR option.
+.TP
+.B DEBSIGN_KEYID
+And this is the \fB\-k\fR option.
+.TP
+.B DEBSIGN_ALWAYS_RESIGN
+Always re-sign files even if they are already signed, without prompting.
+.TP
+.B DEBRELEASE_DEBS_DIR
+This specifies the directory in which to look for the \fI.changes\fR
+and \fI.dsc\fR files, and is either an absolute path or relative to
+the top of the source tree. This corresponds to the
+\fB\-\-debs\-dir\fR command line option. This directive could be
+used, for example, if you always use \fBpbuilder\fR or
+\fBsvn-buildpackage\fR to build your packages. Note that it also
+affects \fBdebrelease\fR(1) in the same way, hence the strange name of
+the option.
+.SH "SEE ALSO"
+.BR debrsign (1),
+.BR debuild (1),
+.BR dpkg-architecture (1),
+.BR dpkg-buildpackage (1),
+.BR gpg (1),
+.BR md5sum (1),
+.BR sha1sum (1),
+.BR sha256sum (1),
+.BR scp (1),
+.BR devscripts.conf (5)
+.SH AUTHOR
+This program was written by Julian Gilbey <jdg@debian.org> and is
+copyright under the GPL, version 2 or later.
--- /dev/null
+#!/bin/sh
+
+# This program is designed to GPG sign a .dsc and .changes file pair
+# in the form needed for a legal Debian upload. It is based in part
+# on dpkg-buildpackage. It takes one argument: the name of the
+# .changes file.
+
+# Debian GNU/Linux debsign. Copyright (C) 1999 Julian Gilbey.
+# Modifications to work with GPG by Joseph Carter and Julian Gilbey
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+# Abort if anything goes wrong
+set -e
+
+PRECIOUS_FILES=0
+PROGNAME=`basename $0`
+MODIFIED_CONF_MSG='Default settings modified by devscripts configuration files:'
+
+# Temporary directories
+signingdir=""
+remotefilesdir=""
+
+trap "cleanup_tmpdir" EXIT HUP INT QUIT KILL SEGV PIPE TERM
+
+# --- Functions
+
+mksigningdir () {
+ if [ -z "$signingdir" ]; then
+ signingdir="$(mktemp -dt debsign.XXXXXXXX)" || {
+ echo "$PROGNAME: Can't create temporary directory" >&2
+ echo "Aborting..." >&2
+ exit 1
+ }
+ fi
+}
+
+mkremotefilesdir () {
+ if [ -z "$remotefilesdir" ]; then
+ remotefilesdir="$(mktemp -dt debsign.XXXXXXXX)" || {
+ echo "$PROGNAME: Can't create temporary directory" >&2
+ echo "Aborting..." >&2
+ exit 1
+ }
+ fi
+}
+
+usage () {
+ echo \
+"Usage: debsign [options] [changes, dsc or commands file]
+ Options:
+ -r [username@]remotehost
+ The machine on which the changes/dsc files live.
+ A changes file with full pathname (or relative
+ to the remote home directory) must be given in
+ such a case
+ -k<keyid> The key to use for signing
+ -p<sign-command> The command to use for signing
+ -e<maintainer> Sign using key of <maintainer> (takes precedence over -m)
+ -m<maintainer> The same as -e
+ -S Use changes file made for source-only upload
+ -a<arch> Use changes file made for Debian target architecture <arch>
+ -t<target> Use changes file made for GNU target architecture <target>
+ --multi Use most recent multiarch .changes file found
+ --re-sign Re-sign if the file is already signed.
+ --no-re-sign Don't re-sign if the file is already signed.
+ --debs-dir <directory>
+ The location of the .changes / .dsc files when called from
+ within a source tree (default "..")
+ --no-conf, --noconf
+ Don't read devscripts config files;
+ must be the first option given
+ --help Show this message
+ --version Show version and copyright information
+ If a commands or dsc or changes file is specified, it and any .dsc files in
+ the changes file are signed, otherwise debian/changelog is parsed to find
+ the changes file.
+
+$MODIFIED_CONF_MSG"
+}
+
+version () {
+ echo \
+"This is debsign, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1999 by Julian Gilbey, all rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later."
+}
+
+temp_filename() {
+ local filename
+
+ if ! [ -w "$(dirname "$1")" ]; then
+ filename=`mktemp -t "$(basename "$1").$2.XXXXXXXXXX"` || {
+ echo "$PROGNAME: Unable to create temporary file; aborting" >&2
+ exit 1
+ }
+ else
+ filename="$1.$2"
+ fi
+
+ echo "$filename"
+}
+
+movefile() {
+ if [ -w "$(dirname "$2")" ]; then
+ mv -f -- "$1" "$2"
+ else
+ cat "$1" > "$2"
+ rm -f "$1"
+ fi
+}
+
+cleanup_tmpdir () {
+ if [ -n "$remotefilesdir" ] && [ -d "$remotefilesdir" ]; then
+ if [ "$PRECIOUS_FILES" -gt 0 ]; then
+ echo "$PROGNAME: aborting with $PRECIOUS_FILES signed files in $remotefilesdir" >&2
+ # Only produce the warning once...
+ PRECIOUS_FILES=0
+ else
+ cd ..
+ rm -rf "$remotefilesdir"
+ fi
+ fi
+
+ if [ -n "$signingdir" ] && [ -d "$signingdir" ]; then
+ rm -rf "$signingdir"
+ fi
+}
+
+mustsetvar () {
+ if [ "x$2" = x ]
+ then
+ echo >&2 "$PROGNAME: unable to determine $3"
+ exit 1
+ else
+ # echo "$PROGNAME: $3 is $2"
+ eval "$1=\"\$2\""
+ fi
+}
+
+# This takes two arguments: the name of the file to sign and the
+# key or maintainer name to use. NOTE: this usage differs from that
+# of dpkg-buildpackage, because we do not know all of the necessary
+# information when this function is read first.
+signfile () {
+ local savestty=$(stty -g 2>/dev/null) || true
+ mksigningdir
+ UNSIGNED_FILE="$signingdir/$(basename "$1")"
+ ASCII_SIGNED_FILE="${UNSIGNED_FILE}.asc"
+ (cat "$1" ; echo "") > "$UNSIGNED_FILE"
+
+ gpgversion=`$signcommand --version | head -n 1 | cut -d' ' -f3`
+ gpgmajorversion=`echo $gpgversion | cut -d. -f1`
+ gpgminorversion=`echo $gpgversion | cut -d. -f2`
+
+ if [ $gpgmajorversion -gt 1 -o $gpgminorversion -ge 4 ]
+ then
+ $signcommand --local-user "$2" --clearsign \
+ --list-options no-show-policy-urls \
+ --armor --textmode --output "$ASCII_SIGNED_FILE"\
+ "$UNSIGNED_FILE" || \
+ { SAVESTAT=$?
+ echo "$PROGNAME: $signcommand error occurred! Aborting...." >&2
+ stty $savestty 2>/dev/null || true
+ exit $SAVESTAT
+ }
+ else
+ $signcommand --local-user "$2" --clearsign \
+ --no-show-policy-url \
+ --armor --textmode --output "$ASCII_SIGNED_FILE" \
+ "$UNSIGNED_FILE" || \
+ { SAVESTAT=$?
+ echo "$PROGNAME: $signcommand error occurred! Aborting...." >&2
+ stty $savestty 2>/dev/null || true
+ exit $SAVESTAT
+ }
+ fi
+ stty $savestty 2>/dev/null || true
+ echo
+ PRECIOUS_FILES=$(($PRECIOUS_FILES + 1))
+ movefile "$ASCII_SIGNED_FILE" "$1"
+}
+
+withecho () {
+ echo " $@"
+ "$@"
+}
+
+# Has the dsc file already been signed, perhaps from a previous, partially
+# successful invocation of debsign? We give the user the option of
+# resigning the file or accepting it as is. Returns success if already
+# and failure if the file needs signing. Parameters: $1=filename,
+# $2=file description for message (dsc or changes)
+check_already_signed () {
+ [ "`head -n 1 \"$1\"`" = "-----BEGIN PGP SIGNED MESSAGE-----" ] || \
+ return 1
+
+ local resign
+ if [ "$opt_re_sign" = "true" ]; then
+ resign="true"
+ elif [ "$opt_re_sign" = "false" ]; then
+ resign="false"
+ else
+ response=n
+ if [ -z "$DEBSIGN_ALWAYS_RESIGN" ]; then
+ printf "The .$2 file is already signed.\nWould you like to use the current signature? [Yn]"
+ read response
+ fi
+ case $response in
+ [Nn]*) resign="true" ;;
+ *) resign="false" ;;
+ esac
+ fi
+
+ [ "$resign" = "true" ] || \
+ return 0
+
+ UNSIGNED_FILE="$(temp_filename "$1" "unsigned")"
+
+ sed -e '1,/^$/d; /^$/,$d' "$1" > "$UNSIGNED_FILE"
+ movefile "$UNSIGNED_FILE" "$1"
+ return 1
+}
+
+# --- main script
+
+# Unset GREP_OPTIONS for sanity
+unset GREP_OPTIONS
+
+# Boilerplate: set config variables
+DEFAULT_DEBSIGN_ALWAYS_RESIGN=
+DEFAULT_DEBSIGN_PROGRAM=
+DEFAULT_DEBSIGN_MAINT=
+DEFAULT_DEBSIGN_KEYID=
+DEFAULT_DEBRELEASE_DEBS_DIR=..
+VARS="DEBSIGN_ALWAYS_RESIGN DEBSIGN_PROGRAM DEBSIGN_MAINT"
+VARS="$VARS DEBSIGN_KEYID DEBRELEASE_DEBS_DIR"
+
+if [ "$1" = "--no-conf" -o "$1" = "--noconf" ]; then
+ shift
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (no configuration files read)"
+
+ # set defaults
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+else
+ # Run in a subshell for protection against accidental errors
+ # in the config files
+ eval $(
+ set +e
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+
+ for file in /etc/devscripts.conf ~/.devscripts
+ do
+ [ -r $file ] && . $file
+ done
+
+ set | egrep '^(DEBSIGN|DEBRELEASE|DEVSCRIPTS)_')
+
+ # We do not replace this with a default directory to avoid accidentally
+ # signing a broken package
+ DEBRELEASE_DEBS_DIR="$(echo "${DEBRELEASE_DEBS_DIR%/}" | sed -e 's%/\+%/%g')"
+
+ # set config message
+ MODIFIED_CONF=''
+ for var in $VARS; do
+ eval "if [ \"\$$var\" != \"\$DEFAULT_$var\" ]; then
+ MODIFIED_CONF_MSG=\"\$MODIFIED_CONF_MSG
+ $var=\$$var\";
+ MODIFIED_CONF=yes;
+ fi"
+ done
+
+ if [ -z "$MODIFIED_CONF" ]; then
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (none)"
+ fi
+fi
+
+maint="$DEBSIGN_MAINT"
+signkey="$DEBSIGN_KEYID"
+debsdir="$DEBRELEASE_DEBS_DIR"
+debsdir_warning="config file specified DEBRELEASE_DEBS_DIR directory $DEBRELEASE_DEBS_DIR does not exist!"
+
+signcommand=''
+if [ -n "$DEBSIGN_PROGRAM" ]; then
+ signcommand="$DEBSIGN_PROGRAM"
+else
+ if command -v gpg > /dev/null 2>&1; then
+ signcommand=gpg
+ fi
+fi
+
+TEMP=$(getopt -n "$PROGNAME" -o 'p:m:e:k:Sa:t:r:h' \
+ -l 'multi,re-sign,no-re-sign,debs-dir:' \
+ -l 'noconf,no-conf,help,version' \
+ -- "$@") || (rc=$?; usage >&2; exit $rc)
+
+eval set -- "$TEMP"
+
+while true
+do
+ case "$1" in
+ -p) signcommand="$2"; shift ;;
+ -m) maint="$2"; shift ;;
+ -e) maint="$2"; shift ;;
+ -k) signkey="$2"; shift ;;
+ -S) sourceonly="true" ;;
+ -a) targetarch="$2"; shift ;;
+ -t) targetgnusystem="$2"; shift ;;
+ --multi) multiarch="true" ;;
+ --re-sign) opt_re_sign="true" ;;
+ --no-re-sign) opt_re_sign="false" ;;
+ -r) remotehost=$2; shift
+ # Allow for the [user@]host:filename format
+ hostpart="${remotehost%:*}"
+ filepart="${remotehost#*:}"
+ if [ -n "$filepart" -a "$filepart" != "$remotehost" ]; then
+ remotehost="$hostpart"
+ set -- "$@" "$filepart"
+ fi
+ ;;
+ --debs-dir)
+ shift
+ opt_debsdir="$(echo "${1%/}" | sed -e 's%/\+%/%g')"
+ debsdir_warning="could not find directory $opt_debsdir!"
+ ;;
+ --no-conf|--noconf)
+ echo "$PROGNAME: $1 is only acceptable as the first command-line option!" >&2
+ exit 1 ;;
+ -h|--help)
+ usage; exit 0 ;;
+ --version)
+ version; exit 0 ;;
+ --) shift; break ;;
+ esac
+ shift
+done
+
+debsdir=${opt_debsdir:-$debsdir}
+
+if [ -z "$signcommand" ]; then
+ echo "Could not find a signing program!" >&2
+ exit 1
+fi
+
+dosigning() {
+ # Do we have to download the changes file?
+ if [ -n "$remotehost" ]
+ then
+ mkremotefilesdir
+ cd "$remotefilesdir"
+
+ remotechanges=$changes
+ remotedsc=$dsc
+ remotecommands=$commands
+ remotedir="`perl -e 'chomp($_="'"$dsc"'"); m%/% && s%/[^/]*$%% && print'`"
+ changes=`basename "$changes"`
+ dsc=`basename "$dsc"`
+ commands=`basename "$commands"`
+
+ if [ -n "$changes" ]
+ then
+ if [ ! -f "$changes" ]
+ then
+ withecho scp "$remotehost:$remotechanges" .
+ fi
+ elif [ -n "$dsc" ]
+ then withecho scp "$remotehost:$remotedsc" "$dsc"
+ else withecho scp "$remotehost:$remotecommands" "$commands"
+ fi
+
+ if [ -n "$changes" ] && echo "$changes" | egrep -q '[][*?]'
+ then
+ for changes in $changes
+ do
+ printf "\n"
+ dsc=`echo "${remotedir+$remotedir/}$changes" | \
+ perl -pe 's/\.changes$/.dsc/; s/(.*)_(.*)_(.*)\.dsc/\1_\2.dsc/'`
+ dosigning;
+ done
+ exit 0;
+ fi
+ fi
+
+ if [ -n "$changes" ]
+ then
+ if [ ! -f "$changes" -o ! -r "$changes" ]
+ then
+ echo "$PROGNAME: Can't find or can't read changes file $changes!" >&2
+ exit 1
+ fi
+
+ check_already_signed "$changes" "changes" && {
+ echo "Leaving current signature unchanged." >&2
+ return
+ }
+ if [ -n "$maint" ]
+ then maintainer="$maint"
+ # Try the "Changed-By:" field first
+ else maintainer=`sed -n 's/^Changed-By: //p' $changes`
+ fi
+ if [ -z "$maintainer" ]
+ then maintainer=`sed -n 's/^Maintainer: //p' $changes`
+ fi
+
+ signas="${signkey:-$maintainer}"
+
+ # Is there a dsc file listed in the changes file?
+ if grep -q `basename "$dsc"` "$changes"
+ then
+ if [ -n "$remotehost" ]
+ then
+ withecho scp "$remotehost:$remotedsc" "$dsc"
+ fi
+
+ if [ ! -f "$dsc" -o ! -r "$dsc" ]
+ then
+ echo "$PROGNAME: Can't find or can't read dsc file $dsc!" >&2
+ exit 1
+ fi
+ check_already_signed "$dsc" "dsc" || withecho signfile "$dsc" "$signas"
+ dsc_md5=`md5sum $dsc | cut -d' ' -f1`
+ dsc_sha1=`sha1sum $dsc | cut -d' ' -f1`
+ dsc_sha256=`sha256sum $dsc | cut -d' ' -f1`
+
+ temp_changes="$(temp_filename "$changes" "temp")"
+ cp "$changes" "$temp_changes"
+ if perl -i -pe 'BEGIN {
+ '" \$dsc_file=\"$dsc\"; \$dsc_md5=\"$dsc_md5\"; "'
+ '" \$dsc_sha1=\"$dsc_sha1\"; \$dsc_sha256=\"$dsc_sha256\"; "'
+ $dsc_size=(-s $dsc_file); ($dsc_base=$dsc_file) =~ s|.*/||;
+ $infiles=0; $insha1=0; $insha256=0; $format="";
+ }
+ if(/^Format:\s+(.*)/) {
+ $format=$1;
+ die "Unrecognised .changes format: $format\n"
+ unless $format =~ /^\d+(\.\d+)*$/;
+ ($major, $minor) = split(/\./, $format);
+ $major+=0;$minor+=0;
+ die "Unsupported .changes format: $format\n"
+ if($major!=1 or $minor > 8 or $minor < 7);
+ }
+ /^Files:/i && ($infiles=1,$insha1=0,$insha256=0);
+ if(/^Checksums-Sha1:/i) {$insha1=1;$infiles=0;$insha256=0;}
+ elsif(/^Checksums-Sha256:/i) {
+ $insha256=1;$infiles=0;$insha1=0;
+ } elsif(/^Checksums-.*?:/i) {
+ die "Unknown checksum format: $_\n";
+ }
+ /^\s*$/ && ($infiles=0,$insha1=0,$insha256=0);
+ if ($infiles &&
+ /^ (\S+) (\d+) (\S+) (\S+) \Q$dsc_base\E\s*$/) {
+ $_ = " $dsc_md5 $dsc_size $3 $4 $dsc_base\n";
+ $infiles=0;
+ }
+ if ($insha1 &&
+ /^ (\S+) (\d+) \Q$dsc_base\E\s*$/) {
+ $_ = " $dsc_sha1 $dsc_size $dsc_base\n";
+ $insha1=0;
+ }
+ if ($insha256 &&
+ /^ (\S+) (\d+) \Q$dsc_base\E\s*$/) {
+ $_ = " $dsc_sha256 $dsc_size $dsc_base\n";
+ $insha256=0;
+ }' "$temp_changes"
+ then
+ movefile "$temp_changes" "$changes"
+ else
+ rm "$temp_changes"
+ echo "$PROGNAME: Error processing .changes file (see above)" >&2
+ exit 1
+ fi
+
+ withecho signfile "$changes" "$signas"
+
+ if [ -n "$remotehost" ]
+ then
+ withecho scp "$changes" "$dsc" "$remotehost:$remotedir"
+ PRECIOUS_FILES=$(($PRECIOUS_FILES - 2))
+ fi
+
+ echo "Successfully signed dsc and changes files"
+ else
+ withecho signfile "$changes" "$signas"
+
+ if [ -n "$remotehost" ]
+ then
+ withecho scp "$changes" "$remotehost:$remotedir"
+ PRECIOUS_FILES=$(($PRECIOUS_FILES - 1))
+ fi
+
+ echo "Successfully signed changes file"
+ fi
+ elif [ -n "$commands" ] # sign .commands file
+ then
+ if [ ! -f "$commands" -o ! -r "$commands" ]
+ then
+ echo "$PROGNAME: Can't find or can't read commands file $commands!" >&2
+ exit 1
+ fi
+
+ check_already_signed "$commands" commands && {
+ echo "Leaving current signature unchanged." >&2
+ return
+ }
+
+ # simple validator for .commands files, see
+ # ftp://ftp.upload.debian.org/pub/UploadQueue/README
+ perl -ne 'BEGIN { $uploader = 0; $incommands = 0; }
+ END { exit $? if $?;
+ if ($uploader && $incommands) { exit 0; }
+ else { die ".commands file missing Uploader or Commands field\n"; }
+ }
+ sub checkcommands {
+ chomp($line=$_[0]);
+ if ($line =~ m%^\s*reschedule\s+[^\s/]+\.changes\s+[0-9]+-day\s*$%) { return 0; }
+ if ($line =~ m%^\s*cancel\s+[^\s/]+\.changes\s*$%) { return 0; }
+ if ($line =~ m%^\s*rm(\s+(?:DELAYED/[0-9]+-day/)?[^\s/]+)+\s*$%) { return 0; }
+ if ($line eq "") { return 0; }
+ die ".commands file has invalid Commands line: $line\n";
+ }
+ if (/^Uploader:/) {
+ if ($uploader) { die ".commands file has too many Uploader fields!\n"; }
+ $uploader++;
+ } elsif (! $incommands && s/^Commands:\s*//) {
+ $incommands=1; checkcommands($_);
+ } elsif ($incommands == 1) {
+ if (s/^\s+//) { checkcommands($_); }
+ elsif (/./) { die ".commands file: extra stuff after Commands field!\n"; }
+ else { $incommands = 2; }
+ } else {
+ next if /^\s*$/;
+ if (/./) { die ".commands file: extra stuff after Commands field!\n"; }
+ }' $commands || {
+ echo "$PROGNAME: .commands file appears to be invalid. see:
+ftp://ftp.upload.debian.org/pub/UploadQueue/README
+for valid format" >&2;
+ exit 1; }
+
+ if [ -n "$maint" ]
+ then maintainer="$maint"
+ else
+ maintainer=`sed -n 's/^Uploader: //p' $commands`
+ if [ -z "$maintainer" ]
+ then
+ echo "Unable to parse Uploader, .commands file invalid."
+ exit 1
+ fi
+ fi
+
+ signas="${signkey:-$maintainer}"
+
+ withecho signfile "$commands" "$signas"
+
+ if [ -n "$remotehost" ]
+ then
+ withecho scp "$commands" "$remotehost:$remotecommands"
+ PRECIOUS_FILES=$(($PRECIOUS_FILES - 1))
+ fi
+
+ echo "Successfully signed commands file"
+ else # only a dsc file to sign; much easier
+ if [ ! -f "$dsc" -o ! -r "$dsc" ]
+ then
+ echo "$PROGNAME: Can't find or can't read dsc file $dsc!" >&2
+ exit 1
+ fi
+
+ check_already_signed "$dsc" dsc && {
+ echo "Leaving current signature unchanged." >&2
+ return
+ }
+ if [ -n "$maint" ]
+ then maintainer="$maint"
+ # Try the new "Changed-By:" field first
+ else maintainer=`sed -n 's/^Changed-By: //p' $dsc`
+ fi
+ if [ -z "$maint" ]
+ then maintainer=`sed -n 's/^Maintainer: //p' $dsc`
+ fi
+
+ signas="${signkey:-$maintainer}"
+
+ withecho signfile "$dsc" "$signas"
+
+ if [ -n "$remotehost" ]
+ then
+ withecho scp "$dsc" "$remotehost:$remotedsc"
+ PRECIOUS_FILES=$(($PRECIOUS_FILES - 1))
+ fi
+
+ echo "Successfully signed dsc file"
+ fi
+}
+
+# If there is a command-line parameter, it is the name of a .changes file
+# If not, we must be at the top level of a source tree and will figure
+# out its name from debian/changelog
+case $# in
+ 0) # We have to parse debian/changelog to find the current version
+ # check sanity of debsdir
+ if ! [ -d "$debsdir" ]; then
+ echo "$PROGNAME: $debsdir_warning" >&2
+ exit 1
+ fi
+ if [ -n "$remotehost" ]; then
+ echo "$PROGNAME: Need to specify a .changes, .dsc or .commands file location with -r!" >&2
+ exit 1
+ fi
+ if [ ! -r debian/changelog ]; then
+ echo "$PROGNAME: Must be run from top of source dir or a .changes file given as arg" >&2
+ exit 1
+ fi
+
+ mustsetvar package "`dpkg-parsechangelog | sed -n 's/^Source: //p'`" \
+ "source package"
+ mustsetvar version "`dpkg-parsechangelog | sed -n 's/^Version: //p'`" \
+ "source version"
+
+ if [ "x$sourceonly" = x ]
+ then
+ if [ -n "$targetarch" ] && [ -n "$targetgnusystem" ]; then
+ mustsetvar arch "$(dpkg-architecture "-a${targetarch}" "-t${targetgnusystem}" -qDEB_HOST_ARCH)" "build architecture"
+ elif [ -n "$targetarch" ]; then
+ mustsetvar arch "$(dpkg-architecture "-a${targetarch}" -qDEB_HOST_ARCH)" "build architecture"
+ elif [ -n "$targetgnusystem" ]; then
+ mustsetvar arch "$(dpkg-architecture "-t${targetgnusystem}" -qDEB_HOST_ARCH)" "build architecture"
+ else
+ mustsetvar arch "$(dpkg-architecture -qDEB_HOST_ARCH)" "build architecture"
+ fi
+ else
+ arch=source
+ fi
+
+ sversion=`echo "$version" | perl -pe 's/^\d+://'`
+ pv="${package}_${sversion}"
+ pva="${package}_${sversion}_${arch}"
+ dsc="$debsdir/$pv.dsc"
+ changes="$debsdir/$pva.changes"
+ if [ -n "$multiarch" -o ! -r $changes ]; then
+ changes=$(ls "$debsdir/${package}_${sversion}_*+*.changes" "$debsdir/${package}_${sversion}_multi.changes" 2>/dev/null | head -1)
+ if [ -z "$multiarch" ]; then
+ if [ -n "$changes" ]; then
+ echo "$PROGNAME: could not find normal .changes file but found multiarch file:" >&2
+ echo " $changes" >&2
+ echo "Using this changes file instead." >&2
+ else
+ echo "$PROGNAME: Can't find or can't read changes file $changes!" >&2
+ exit 1
+ fi
+ elif [ -n "$multiarch" -a -z "$changes" ]; then
+ echo "$PROGNAME: could not find any multiarch .changes file with name" >&2
+ echo "$debsdir/${package}_${sversion}_*.changes" >&2
+ exit 1
+ fi
+ fi
+ dosigning;
+ ;;
+
+ *) while [ $# -gt 0 ]; do
+ case "$1" in
+ *.dsc)
+ changes=
+ dsc=$1
+ commands=
+ ;;
+ *.changes)
+ changes=$1
+ dsc=`echo $changes | \
+ perl -pe 's/\.changes$/.dsc/; s/(.*)_(.*)_(.*)\.dsc/\1_\2.dsc/'`
+ commands=
+ ;;
+ *.commands)
+ changes=
+ dsc=
+ commands=$1
+ ;;
+ *)
+ echo "$PROGNAME: Only a .changes, .dsc or .commands file is allowed as argument!" >&2
+ exit 1 ;;
+ esac
+ dosigning
+ shift
+ done
+ ;;
+esac
+
+exit 0
--- /dev/null
+.\" for manpage-specific macros, see man(7)
+.TH DEBSNAP 1 "July 3, 2010" "Debian devscripts" "DebSnap User Manual"
+.SH NAME
+debsnap \- retrieve old snapshots of Debian packages
+
+.SH SYNOPSIS
+.B debsnap
+.RI [ options ] " package " [ version ]
+
+.B debsnap
+.RB [ -h " | " \-\-help ] " " [ \-\-version ]
+
+
+.SH DESCRIPTION
+\fBdebsnap\fP is a tool to help with retrieving snapshots of old packages from
+a daily archive repository.
+
+The only publicly available snapshot archive is currently located at
+\fIhttp://snapshot.debian.org\fP
+
+By default, debsnap will download all the available versions for \fIpackage\fP
+that are found in the snapshot archive. If a \fIversion\fP is specified, only
+that particular version will be downloaded, if available.
+
+
+.SH OPTIONS
+The following options are available:
+
+.TP
+.BI -d " destination\fR,\fP " \-\-destdir " destination"
+Directory to place retrieved packages.
+
+.TP
+.BR \-f ", " \-\-force
+Force writing into an existing \fIdestination\fP. By default \fBdebsnap\fP will
+insist the destination directory does not exist yet unless it is explicitly
+specified to be '\fB.\fR' (the current working directory). This is to avoid files
+being accidentally overwritten by what is fetched from the archive and to
+provide a guarantee for other scripts that only the files fetched will be
+present there upon completion.
+
+.TP
+.BR \-v ", " \-\-verbose
+Report on the \fBdebsnap\fP configuration being used and progress during the
+download operation. Please always use this option when reporting bugs.
+
+.TP
+.BR \-\-binary
+Download binary packages instead of source packages.
+
+.TP
+.BR \-a ", " \-\-architecture
+Specify architecture of downloaded binary packages. Implies \fB\-\-binary\fP.
+This can be given multiple times in order to download binary packages for
+multiple architectures.
+
+.TP
+.BR \-h ", " \-\-help
+Show a summary of these options.
+
+.TP
+.B \-\-version
+Show the version of \fBdebsnap\fP.
+
+
+.SH CONFIGURATION OPTIONS
+\fBdebsnap\fP may also be configured through the use of the following options
+in the devscripts configuration files:
+
+.TP
+.B DEBSNAP_VERBOSE
+Same as the command line option \fB\-\-verbose\fP. Set to \fIyes\fP to enable.
+
+.TP
+.B DEBSNAP_DESTDIR
+Set a default path for the destination directory. If unset
+\fI./source\-<package_name>\fP will be used. The command line option
+\fB\-\-destdir\fP will override this.
+
+.TP
+.B DEBSNAP_BASE_URL
+The base url for the snapshots archive.
+
+If unset this defaults to \fIhttp://snapshot.debian.org\fP
+
+.SH EXIT STATUS
+\fBdebsnap\fP will return an exit status of 0 if all operations succeeded,
+1 if a fatal error occurred, and 2 if some packages failed to be downloaded
+but operations otherwise succeeded as expected. In some cases packages may
+fail to be downloaded because they are no longer available on the snapshot
+mirror, so any caller should expect this may occur in normal use.
+
+.SH EXAMPLES
+.TP
+.BR "debsnap -a amd64 xterm 256-1"
+Download the binary package of a specific xterm version for amd64 architecture.
+.TP
+.BR "debsnap -a armel xterm"
+Download binary packages for all versions of xterm for armel architecture.
+.TP
+.BR "debsnap --binary xterm 256-1"
+Download binary packages for a specific xterm version but for all architectures.
+.TP
+.BR "debsnap --binary xterm"
+Download binary packages for all versions of xterm for all architectures.
+.TP
+.BR "aptitude search '~i' -F '%p %V' | while read pkg ver; do debsnap -a $(dpkg-architecture -qDEB_HOST_ARCH) -a all $pkg $ver; done"
+Download binary packages of all packages that are installed on the system.
+
+.SH FILES
+.TP
+.I /etc/devscripts.conf
+Global devscripts configuration options. Will override hardcoded defaults.
+.TP
+.I ~/.devscripts
+Per\-user configuration options. Will override any global configuration.
+
+.SH SEE ALSO
+.BR devscripts (1),
+.BR devscripts.conf (5),
+.BR git-debimport (1)
+
+.SH AUTHORS
+David Paleino <dapal@debian.org>
+
+.SH COPYRIGHT
+Copyright \(co 2010 David Paleino
+
+Permission is granted to copy, distribute and/or modify this document under
+the terms of the GNU General Public License, Version 3 or (at your option)
+any later version published by the Free Software Foundation.
+
+On Debian systems, the complete text of the GNU General Public License can
+be found in \fI/usr/share/common\-licenses/GPL\fP.
+
+.SH BUGS
+.SS Reporting bugs
+The program is part of the devscripts package. Please report bugs using
+`\fBreportbug devscripts\fP`
+
--- /dev/null
+#!/usr/bin/perl
+
+# Copyright © 2010, David Paleino <d.paleino@gmail.com>,
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use strict;
+use warnings;
+
+use Getopt::Long qw(:config gnu_getopt);
+use File::Basename;
+use Cwd qw/cwd abs_path/;
+use File::Path qw/make_path/;
+use Dpkg::Version;
+
+my $progname = basename($0);
+
+eval {
+ require LWP::Simple;
+ require LWP::UserAgent;
+ no warnings;
+ $LWP::Simple::ua = LWP::UserAgent->new(agent => 'LWP::UserAgent/Devscripts/###VERSION###');
+};
+if ($@) {
+ if ($@ =~ m/Can\'t locate LWP/) {
+ die "$progname: Unable to run: the libwww-perl package is not installed";
+ } else {
+ die "$progname: Unable to run: Couldn't load LWP::Simple: $@";
+ }
+}
+
+eval {
+ require JSON;
+};
+if ($@) {
+ if ($@ =~ m/Can\'t locate JSON/) {
+ die "$progname: Unable to run: the libjson-perl package is not installed";
+ } else {
+ die "$progname: Unable to run: Couldn't load JSON: $@";
+ }
+}
+
+my $modified_conf_msg = '';
+my %config_vars = ();
+
+my %opt;
+my $package = '';
+my $pkgversion = '';
+my $warnings = 0;
+
+sub fatal($);
+sub verbose($);
+
+sub version
+{
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2010 by David Paleino <dapal\@debian.org>.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the GNU
+General Public License v3 or, at your option, any later version.
+EOF
+ exit 0;
+}
+
+sub usage
+{
+ my $rc = shift;
+ print <<"EOF";
+$progname [options] <package name> [package version]
+
+Automatically downloads packages from snapshot.debian.org
+
+The following options are supported:
+ -h, --help Shows this help message
+ --version Shows information about version
+ -v, --verbose Be verbose
+ -d <destination directory>,
+ --destdir=<destination directory> Directory for retrieved packages
+ Default is ./source-<package name>
+ -f, --force Force overwriting an existing
+ destdir
+ --binary Download binary packages instead of
+ source packages
+ -a <architecture>,
+ --architecture <architecture> Specify architecture of binary packages,
+ implies --binary. May be given multiple
+ times
+
+Default settings modified by devscripts configuration files or command-line
+options:
+$modified_conf_msg
+EOF
+ exit $rc;
+}
+
+sub fetch_json_page
+{
+ my ($json_url) = @_;
+
+ # download the json page:
+ verbose "Getting json $json_url\n";
+ my $content = LWP::Simple::get($json_url);
+ return unless defined $content;
+ my $json = JSON->new();
+
+ # these are some nice json options to relax restrictions a bit:
+ my $json_text = $json->allow_nonref->utf8->relaxed->decode($content);
+
+ return $json_text;
+}
+
+sub read_conf
+{
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ %config_vars = (
+ 'DEBSNAP_VERBOSE' => 'no',
+ 'DEBSNAP_DESTDIR' => '',
+ 'DEBSNAP_BASE_URL' => 'http://snapshot.debian.org',
+ );
+
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ $shell_cmd .= qq[unset `set | grep "^DEBSNAP_" | cut -d= -f1`;\n];
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ # Check validity
+ $config_vars{'DEBSNAP_VERBOSE'} =~ /^(yes|no)$/
+ or $config_vars{'DEBSNAP_VERBOSE'} = 'no';
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $opt{verbose} = $config_vars{DEBSNAP_VERBOSE} eq 'yes';
+ $opt{destdir} = $config_vars{DEBSNAP_DESTDIR};
+ $opt{baseurl} = $config_vars{DEBSNAP_BASE_URL};
+}
+
+sub have_file($$)
+{
+ my ($path, $hash) = @_;
+
+ if (-e $path) {
+ open(HASH, '-|', 'sha1sum', $path) || fatal "Can't run sha1sum: $!";
+ while (<HASH>) {
+ if (m/^([a-fA-F\d]{40}) /) {
+ close(HASH) || fatal "sha1sum problems: $! $?";
+ return $1 eq $hash;
+ }
+ }
+ }
+ return 0;
+}
+
+sub fatal($)
+{
+ my ($pack, $file, $line);
+ ($pack, $file, $line) = caller();
+ (my $msg = "$progname: fatal error at line $line:\n@_\n") =~ tr/\0//d;
+ $msg =~ s/\n\n$/\n/;
+ $! = 1;
+ die $msg;
+}
+
+sub verbose($)
+{
+ (my $msg = "@_\n") =~ tr/\0//d;
+ $msg =~ s/\n\n$/\n/;
+ print "$msg" if $opt{verbose};
+}
+
+###
+# Main program
+###
+read_conf(@ARGV);
+Getopt::Long::Configure('gnu_compat');
+Getopt::Long::Configure('no_ignore_case');
+GetOptions(\%opt, 'verbose|v', 'destdir|d=s', 'force|f', 'help|h', 'version', 'binary', 'architecture|a=s@') || usage(1);
+
+usage(0) if $opt{help};
+usage(1) unless @ARGV;
+$package = shift;
+if (@ARGV) {
+ my $version = shift;
+ $pkgversion = Dpkg::Version->new($version, check => 1);
+ fatal "Invalid version '$version'" unless $pkgversion;
+}
+
+$package eq '' && usage(1);
+
+$opt{binary} ||= $opt{architecture};
+
+my $baseurl;
+if ($opt{binary}) {
+ $opt{destdir} ||= "binary-$package";
+ $baseurl = "$opt{baseurl}/mr/binary/$package/";
+} else {
+ $opt{destdir} ||= "source-$package";
+ $baseurl = "$opt{baseurl}/mr/package/$package/";
+}
+
+if (-d $opt{destdir}) {
+ unless ($opt{force} || cwd() eq abs_path($opt{destdir})) {
+ fatal "Destination dir $opt{destdir} already exists.\nPlease (re)move it first, or use --force to overwrite.";
+ }
+}
+make_path($opt{destdir});
+
+my $json_text = fetch_json_page($baseurl);
+unless ($json_text && @{$json_text->{result}}) {
+ fatal "Unable to retrieve information for $package from $baseurl.";
+}
+
+if ($opt{binary}) {
+ foreach my $version (@{$json_text->{result}}) {
+ if ($pkgversion) {
+ next if ($version->{binary_version} <=> $pkgversion);
+ }
+
+ my $src_json = fetch_json_page("$opt{baseurl}/mr/package/$version->{source}/$version->{version}/binfiles/$version->{name}/$version->{binary_version}?fileinfo=1");
+
+ unless ($src_json) {
+ warn "$progname: No binary packages found for $package version $version->{binary_version}\n";
+ $warnings++;
+ }
+
+ foreach my $result (@{$src_json->{result}}) {
+ if ($opt{architecture} && @{$opt{architecture}}) {
+ next unless (grep { $_ eq $result->{architecture} } @{$opt{architecture}});
+ }
+ my $hash = $result->{hash};
+ my $fileinfo = @{$src_json->{fileinfo}{$hash}}[0];
+ my $file_url = "$opt{baseurl}/file/$hash";
+ my $file_name = basename($fileinfo->{name});
+ if (!have_file("$opt{destdir}/$file_name", $hash)) {
+ verbose "Getting file $file_name: $file_url";
+ LWP::Simple::getstore($file_url, "$opt{destdir}/$file_name");
+ }
+ }
+ }
+}
+else {
+ foreach my $version (@{$json_text->{result}}) {
+ if ($pkgversion) {
+ next if ($version->{version} <=> $pkgversion);
+ }
+
+ my $src_json = fetch_json_page("$baseurl/$version->{version}/srcfiles?fileinfo=1");
+ unless ($src_json) {
+ warn "$progname: No source files found for $package version $version->{version}\n";
+ $warnings++;
+ }
+
+ foreach my $hash (keys %{$src_json->{fileinfo}}) {
+ my $fileinfo = $src_json->{fileinfo}{$hash};
+ my $file_name;
+ # fileinfo may match multiple files (e.g., orig tarball for iceweasel 3.0.12)
+ foreach my $info (@$fileinfo) {
+ if ($info->{name} =~ m/^\Q${package}\E/) {
+ $file_name = $info->{name};
+ last;
+ }
+ }
+ unless ($file_name) {
+ warn "$progname: No files with hash $hash matched '${package}'\n";
+ $warnings++;
+ next;
+ }
+ my $file_url = "$opt{baseurl}/file/$hash";
+ $file_name = basename($file_name);
+ if (!have_file("$opt{destdir}/$file_name", $hash)) {
+ verbose "Getting file $file_name: $file_url";
+ LWP::Simple::getstore($file_url, "$opt{destdir}/$file_name");
+ }
+ }
+ }
+}
+
+if ($warnings) {
+ exit 2;
+}
+exit 0;
--- /dev/null
+.TH DEBUILD 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+debuild \- build a Debian package
+.SH SYNOPSIS
+\fBdebuild\fR [\fIdebuild options\fR] [\fIdpkg-buildpackage options\fR]
+[\fB\-\-lintian-opts\fR \fIlintian options\fR]
+.br
+\fBdebuild\fR [\fIdebuild options\fR]
+\fBbinary\fR|\fBbinary-arch\fR|\fBbinary-indep\fR|\fBclean\fR ...
+.SH DESCRIPTION
+\fBdebuild\fR creates all the files necessary for uploading a Debian
+package. It first runs \fBdpkg-buildpackage\fR, then runs
+\fBlintian\fR on the \fI.changes\fR file created
+(assuming that \fBlintian\fR is installed), and
+finally signs the \fI.changes\fR and/or \fI.dsc\fR files as
+appropriate (using \fBdebsign\fR(1) to do this instead of
+\fBdpkg-buildpackage\fR(1) itself; all relevant key-signing options
+are passed on). Parameters can be passed to \fBdpkg-buildpackage\fR
+and \fBlintian\fR, where the parameters to the latter are
+indicated with the \fB\-\-lintian-opts\fR option.
+The allowable options in this case are
+\fB\-\-lintian\fR and \fB\-\-no-lintian\fR to force or skip the
+\fBlintian\fR step, respectively. The default is to run
+\fBlintian\fR. There are also various options
+available for setting and preserving environment variables, as
+described below in the Environment Variables section. In this method
+of running \fBdebuild\fR, we also save a build log to the
+file \fI../<package>_<version>_<arch>.build\fR.
+.PP
+An alternative way of using \fBdebuild\fR is to use one or more of the
+parameters \fBbinary\fR, \fBbinary-arch\fR, \fBbinary-indep\fR and
+\fBclean\fR, in which case \fBdebuild\fR will attempt to gain root
+privileges and then run \fIdebian/rules\fR with the given parameters.
+A \fB\-\-rootcmd=\fIgain-root-command\fR or
+\fB\-r\fIgain-root-command\fR option may be used to specify a method
+of gaining root privileges. The \fIgain-root-command\fR is likely to
+be one of \fIfakeroot\fR, \fIsudo\fR or \fIsuper\fR. See below for
+further discussion of this point. Again, the environment preservation
+options may be used. In this case, \fBdebuild\fR will also attempt to
+run \fBdpkg-checkbuilddeps\fR first; this can be explicitly requested
+or switched off using the options \fB\-D\fR and \fB\-d\fR
+respectively. Note also that if either of these or a \fB\-r\fR option
+is specified in the configuration file option
+\fBDEBUILD_DPKG_BUILDPACKAGE_OPTS\fR, then it will be recognised even in
+this method of invocation of \fBdebuild\fR.
+.PP
+\fBdebuild\fR also reads the \fBdevscripts\fR configuration files as
+described below. This allows default options to be given.
+.SH "Directory name checking"
+In common with several other scripts in the \fBdevscripts\fR package,
+\fBdebuild\fR will climb the directory tree until it finds a
+\fIdebian/changelog\fR file before attempting to build the package.
+As a safeguard against stray files causing potential problems, it will
+examine the name of the parent directory once it finds the
+\fIdebian/changelog\fR file, and check that the directory name
+corresponds to the package name. Precisely how it does this is
+controlled by two configuration file variables
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR and \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR, and
+their corresponding command-line options \fB\-\-check-dirname-level\fR
+and \fB\-\-check-dirname-regex\fR.
+.PP
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR can take the following values:
+.TP
+.B 0
+Never check the directory name.
+.TP
+.B 1
+Only check the directory name if we have had to change directory in
+our search for \fIdebian/changelog\fR. This is the default behaviour.
+.TP
+.B 2
+Always check the directory name.
+.PP
+The directory name is checked by testing whether the current directory
+name (as determined by \fBpwd\fR(1)) matches the regex given by the
+configuration file option \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR or by the
+command line option \fB\-\-check-dirname-regex\fR \fIregex\fR. Here
+\fIregex\fR is a Perl regex (see \fBperlre\fR(3perl)), which will be
+anchored at the beginning and the end. If \fIregex\fR contains a '/',
+then it must match the full directory path. If not, then it must
+match the full directory name. If \fIregex\fR contains the string
+\'PACKAGE', this will be replaced by the source package name, as
+determined from the \fIchangelog\fR. The default value for the regex is:
+\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and
+PACKAGE-version.
+.SH ENVIRONMENT VARIABLES
+As environment variables can affect the building of a package, often
+unintentionally, \fBdebuild\fR sanitises the environment by removing
+all environment variables except for \fBTERM\fR, \fBHOME\fR, \fBLOGNAME\fR, \fBGNUPGHOME\fR,
+\fBPGPPATH\fR, \fBGPG_AGENT_INFO\fR, \fBFAKEROOTKEY\fR, \fBDEB_\fI*\fR, the
+(\fBC\fR, \fBCPP\fR, \fBCXX\fR, \fBLD\fR and \fBF\fR)\fBFLAGS\fR variables and their \fB_APPEND\fR counterparts
+and the locale variables \fBLANG\fR and \fBLC_\fI*\fR. \fBTERM\fR is set to `dumb' if it
+is unset, and \fBPATH\fR is set to "/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11".
+.PP
+If a particular environment variable is required to be passed through
+untouched to the build process, this may be specified by using a
+\fB\-\-preserve-envvar\fR \fIenvvar\fR (which can also be written as
+\fB\-e\fR \fIenvvar\fR option). The environment may be left untouched
+by using the \fB\-\-preserve-env\fR option. However, even in this
+case, the \fBPATH\fR will be set to the sane value described above. The
+\fBonly\fR way to prevent \fBPATH\fR from being reset is to specify a
+\fB\-\-preserve-envvar PATH\fR option. But you are warned that using
+programs from non-standard locations can easily result in the package
+being broken, as it will not be able to be built on standard systems.
+.PP
+Note that one may add directories to the beginning of the sanitised
+\fBPATH\fR, using the \fB\-\-prepend\-path\fR option. This is useful when
+one wishes to use tools such as \fBccache\fR or \fBdistcc\fR for building.
+.PP
+It is also possible to avoid having to type something like
+\fIFOO\fB=\fIbar \fBdebuild \-e \fIFOO\fR by writing \fBdebuild \-e
+\fIFOO\fB=\fIbar\fR or the long form \fBdebuild \-\-set\-envvar
+\fIFOO\fB=\fIbar\fR.
+.SH "SUPERUSER REQUIREMENTS"
+\fBdebuild\fR needs to be run as superuser to function properly.
+There are three fundamentally different ways to do this. The first,
+and preferable, method is to use some root-gaining command. The best
+one to use is probably \fBfakeroot\fR(1), since it does not involve
+granting any genuine privileges. \fBsuper\fR(1) and \fBsudo\fR(1) are
+also possibilities. If no \fB\-r\fR (or \fB\-\-rootcmd\fR) option is
+given (and recall that \fBdpkg-buildpackage\fR also accepts a \fB\-r\fR
+option) and neither of the following methods is used, then
+\fB\-rfakeroot\fR will silently be assumed.
+.PP
+The second method is to use some command such as \fBsu\fR(1) to become
+root, and then to do everything as root. Note, though, that
+\fBlintian\fR will abort if it is run as root or setuid root; this can
+be overcome using the \fB\-\-allow-root\fR option of \fBlintian\fR if
+you know what you are doing.
+.PP
+The third possible method is to have \fBdebuild\fR installed as setuid
+root. This is not the default method, and will have to be installed
+as such by the system administrator. It must also be realised that
+anyone who can run \fBdebuild\fR as root or setuid root has \fBfull
+access to the whole machine\fR. This method is therefore not
+recommended, but will work. \fBdebuild\fR could be installed with
+mode 4754, so that only members of the owning group could run it. A
+disadvantage of this method would be that other users would then not
+be able to use the program. There are many other variants of this
+option involving multiple copies of \fBdebuild\fR, or the use of
+programs such as \fBsudo\fR or \fBsuper\fR to grant root privileges to
+users selectively. If the sysadmin wishes to do this, she should use
+the \fBdpkg-statoverride\fR program to change the permissions of
+\fI/usr/bin/debuild\fR. This will ensure that these permissions are
+preserved across upgrades.
+.SH HOOKS
+\fBdebuild\fR supports a number of hooks when running
+\fBdpkg\-buildpackage\fR. Note that if any of the hooks from
+\fBclean-hook\fR to \fBfinal-clean\fR (inclusive) are used, \fBdebuild\fR
+will emulate some sections of the \fBdpkg-buildpackage\fR process
+rather than running them directly, as \fBdpkg-buildpackage\fR
+does not support hooks. The available hooks are as follows:
+.TP
+\fBdpkg-buildpackage-hook
+Run before \fBdpkg-buildpackage\fR begins by calling \fBdpkg-checkbuilddeps\fR.
+.TP
+\fBclean-hook
+Run before \fBdpkg-buildpackage\fR runs \fBdebian/rules clean\fR to clean the
+source tree. (Run even if the tree is not being cleaned because \fB\-nc\fR
+is used.)
+.TP
+\fBdpkg-source-hook
+Run after cleaning the tree and before running \fBdpkg-source\fR. (Run even
+if \fBdpkg-source\fR is not being called because \fB\-b\fR, \fB\-B\fR, or \fB\-A\fR is used.)
+.TP
+\fBdpkg-build-hook\fR
+Run after \fBdpkg-source\fR and before calling \fBdebian/rules build\fR. (Run
+even if this is a source-only build, so \fBdebian/rules build\fR is not
+being called.)
+.TP
+\fBdpkg-binary-hook
+Run between \fBdebian/rules build\fR and \fBdebian/rules binary\fR(\fB\-arch\fR). Run
+\fBonly\fR if a binary package is being built.
+.TP
+\fBdpkg-genchanges-hook
+Run after the binary package is built and before calling
+\fBdpkg-genchanges\fR.
+.TP
+\fBfinal-clean-hook
+Run after \fBdpkg-genchanges\fR and before the final \fBdebian/rules clean\fR.
+(Run even if we are not cleaning the tree post-build, which is the
+default.)
+.TP
+\fBlintian-hook
+Run (once) before calling \fBlintian\fR. (Run even if we are
+not calling \fBlintian\fR.)
+.TP
+\fBsigning-hook
+Run after calling \fBlintian\fR before any signing takes place.
+(Run even if we are not signing anything.)
+.TP
+\fBpost-dpkg-buildpackage-hook
+Run after everything has finished.
+.PP
+A hook command can be specified either in the configuration file as,
+for example, DEBUILD_SIGNING_HOOK='foo' (note the hyphens change into
+underscores!) or as a command line option \fB\-\-signing\-hook-foo\fR.
+The command will have certain percent substitutions made on it: \fB%%\fR
+will be replaced by a single \fB%\fR sign, \fB%p\fR will be replaced by the
+package name, \fB%v\fR by the package version number, \fB%s\fR by the source
+version number, \fB%u\fR by the upstream version number. Neither \fB%s\fR nor \fB%u\fR
+will contain an epoch. \fB%a\fR will be \fB1\fR if the immediately following
+action is to be performed and \fB0\fR if not (for example, in the
+\fBdpkg-source\fR hook, \fB%a\fR will become \fB1\fR if \fBdpkg-source\fR is to be run and \fB0\fR
+if not). Then it will be handed to the shell to deal with, so it can
+include redirections and stuff. For example, to only run the
+\fBdpkg-source\fR hook if \fBdpkg-source\fR is to be run, the hook could be
+something like: "if [ %a \-eq 1 ]; then ...; fi".
+.PP
+\fBPlease take care with hooks\fR, as misuse of them can lead to
+packages which FTBFS (fail to build from source). They can be useful
+for taking snapshots of things or the like.
+.PP
+Finally, only \fBdpkg-buildpackage-hook\fR and the hooks from \fBlintian-hook\fR
+onwards can be used if \fBdpkg-cross\fR is installed. (This is
+because internally, \fBdebuild\fR reimplements
+\fBdpkg\-buildpackage\fR, but it does not attempt to reimplement the
+\fBdpkg\-cross\fR replacement of this script.)
+.SH "OPTIONS"
+For details, see above.
+.TP
+.B \-\-no-conf\fR, \fB\-\-noconf
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+.BI \-\-rootcmd= "gain-root-command\fR, " \-r gain-root-command
+Command to gain root (or fake root) privileges.
+.TP
+.B \-\-preserve\-env
+Do not clean the environment, except for PATH.
+.TP
+.BI \-\-preserve\-envvar= "var\fR, " \-e var
+Do not clean the \fIvar\fR variable from the environment.
+.IP
+If \fIvar\fR ends in an asterisk ("*") then all variables with names
+that match the portion of \fIvar\fR before the asterisk will be
+preserved.
+.TP
+.BI \-\-set\-envvar= var = "value\fR, " \-e var = value
+Set the environment variable \fIvar\fR to \fIvalue\fR and do not
+remove it from the environment.
+.TP
+.BI \-\-prepend\-path= "value "
+Once the normalized PATH has been set, prepend \fIvalue\fR
+to it.
+.TP
+.B \-\-lintian
+Run \fBlintian\fR after \fBdpkg-buildpackage\fR. This is the default
+behaviour, and it overrides any configuration file directive to the
+contrary.
+.TP
+.B \-\-no\-lintian
+Do not run \fBlintian\fR after \fBdpkg-buildpackage\fR.
+.TP
+.B \-\-no\-tgz\-check
+Even if we're running \fBdpkg-buildpackage\fR and the version number
+has a Debian revision, do not check that the \fI.orig.tar.gz\fR file or \fI.orig\fR
+directory exists before starting the build.
+.TP
+.B \-\-tgz\-check
+If we're running \fBdpkg-buildpackage\fR and the version number has a
+Debian revision, check that the \fI.orig.tar.gz\fR file or \fI.orig\fR directory
+exists before starting the build. This is the default behaviour.
+.TP
+\fB\-\-username\fR \fIusername\fR
+When signing, use \fBdebrsign\fR instead of \fBdebsign\fR.
+\fIusername\fR specifies the credentials to be used.
+.TP
+\fB\-\-\fIfoo\fB\-hook\fR=\fIhook\fR
+Set a hook as described above. If \fIhook\fR is blank, this unsets
+the hook.
+.TP
+\fB\-\-clear\-hooks\fR
+Clears all hooks. They may be reinstated by later command line
+options.
+.TP
+\fB\-\-check-dirname-level\fR \fIN\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-\-check-dirname-regex\fR \fIregex\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-d\fR
+Do not run \fBdpkg-checkbuilddeps\fR to check build dependencies.
+.TP
+\fB\-D\fR
+Run \fBdpkg-checkbuilddeps\fR to check build dependencies.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced by a shell in that order to set
+configuration variables. Command line options can be used to override
+some of these configuration file settings, otherwise the
+\fB\-\-no\-conf\fR option can be used to prevent reading these files.
+Environment variable settings are ignored when these configuration
+files are read. The currently recognised variables are:
+.TP
+.B DEBUILD_PRESERVE_ENV
+If this is set to \fIyes\fR, then it is the same as the
+\fB\-\-preserve\-env\fR command line parameter being used.
+.TP
+.B DEBUILD_PRESERVE_ENVVARS
+Which environment variables to preserve. This should be a
+comma-separated list of variables. This corresponds to using possibly
+multiple \fB\-\-preserve\-envvar\fR or \fB\-e\fR options.
+.TP
+.BI DEBUILD_SET_ENVVAR_ var = value
+This corresponds to \fB\-\-set\-envvar=\fIvar\fB=\fIvalue\fR.
+.TP
+.B DEBUILD_PREPEND_PATH
+This corresponds to \fB\-\-prepend\-path\fR.
+.TP
+.B DEBUILD_ROOTCMD
+Setting this variable to \fIprog\fR is the equivalent of
+\fB\-r\fIprog\fR.
+.TP
+.B DEBUILD_TGZ_CHECK
+Setting this variable to \fIno\fR is the same as the
+\fB\-\-no\-tgz\-check\fR command line option.
+.TP
+.B DEBUILD_SIGNING_USERNAME
+Setting this variable is the same as using the \fB\-\-username\fR
+command line option.
+.TP
+.B DEBUILD_DPKG_BUILDPACKAGE_OPTS
+These are options which should be passed to the invocation of
+\fBdpkg-buildpackage\fR. They are given before any command-line
+options. Due to issues of shell quoting, if a word containing spaces
+is required as a single option, extra quotes will be required. For
+example, to ensure that your own GPG key is always used, even for
+sponsored uploads, the configuration file might contain the line:
+.IP
+.nf
+DEBUILD_DPKG_BUILDPACKAGE_OPTS="\-k'Julian Gilbey <jdg@debian.org>' \-sa"
+.fi
+.IP
+which gives precisely two options. Without the extra single quotes,
+\fBdpkg-buildpackage\fR would reasonably complain that \fIGilbey\fR is
+an unrecognised option (it doesn't start with a \fB\-\fR sign).
+.IP
+Also, if this option contains any \fB\-r\fR, \fB\-d\fR or \fB\-D\fR
+options, these will always be taken account of by \fBdebuild\fR. Note
+that a \fB\-r\fR option in this variable will override the setting in
+.BR DEBUILD_ROOTCMD .
+.TP
+\fBDEBUILD_\fIFOO\fB_HOOK
+The hook variable for the \fIfoo\fR hook. See the section on hooks
+above for more details. By default, this is empty.
+.TP
+.B DEBUILD_LINTIAN
+Should we run \fBlintian\fR? If this is set to \fIno\fR, then
+\fBlintian\fR will not be run.
+.TP
+.B DEBUILD_LINTIAN_OPTS
+These are options which should be passed to the invocation of
+\fBlintian\fR. They are given before any command-line options, and
+the usage of this variable is as described for the
+\fBDEBUILD_DPKG_BUILDPACKAGE_OPTS\fR variable.
+.TP
+.BR DEVSCRIPTS_CHECK_DIRNAME_LEVEL ", " DEVSCRIPTS_CHECK_DIRNAME_REGEX
+See the above section \fBDirectory name checking\fR for an explanation of
+these variables. Note that these are package-wide configuration
+variables, and will therefore affect all \fBdevscripts\fR scripts
+which check their value, as described in their respective manpages and
+in \fBdevscripts.conf\fR(5).
+.SH EXAMPLES
+To build your own package, simply run \fBdebuild\fR from inside the
+source tree. \fBdpkg-buildpackage\fR(1) options may be given on the
+command line.
+.PP
+The typical command line options to build only the binary package(s)
+without signing the .changes file (or the non-existent .dsc file):
+.IP
+.nf
+debuild \-i \-us \-uc \-b
+.fi
+.PP
+Change the \fB\-b\fR to \fB\-S\fR to build only a source package.
+.PP
+An example using \fBlintian\fR to check the
+resulting packages and passing options to it:
+.IP
+.nf
+debuild \-\-lintian-opts \-i
+.fi
+.PP
+Note the order of options here: the \fBdebuild\fR options come first,
+then the \fBdpkg-buildpackage\fR ones, then finally the checker
+options. (And \fBlintian\fR is called by default.) If you find
+yourself using the same \fBdpkg-buildpackage\fR options repeatedly,
+consider using the \fBDEBUILD_DPKG_BUILDPACKAGE_OPTS\fR configuration file
+option as described above.
+.PP
+To build a package for a sponsored upload, given
+\fIfoobar_1.0-1.dsc\fR and the respective source files, run something
+like the following commands:
+.IP
+.nf
+dpkg-source \-x foobar_1.0-1.dsc
+cd foobar-1.0
+debuild \-k0x12345678
+.fi
+.PP
+where 0x12345678 is replaced by your GPG key ID or other key
+identifier such as your email address. Again, you could also use the
+\fBDEBUILD_DPKG_BUILDPACKAGE_OPTS\fR configuration file option as described
+above to avoid having to type the \fB\-k\fR option each time you do a
+sponsored upload.
+.SH "SEE ALSO"
+.BR chmod (1),
+.BR debsign (1),
+.BR dpkg-buildpackage (1),
+.BR dpkg-checkbuilddeps (1),
+.BR fakeroot (1),
+.BR lintian (1),
+.BR su (1),
+.BR sudo (1),
+.BR super (1),
+.BR devscripts.conf (5),
+.BR dpkg-statoverride (8)
+.SH AUTHOR
+The original \fBdebuild\fR program was written by Christoph Lameter
+<clameter@debian.org>. The current version has been written by Julian
+Gilbey <jdg@debian.org>.
--- /dev/null
+#!/usr/bin/perl
+
+# Perl version of Christoph Lameter's build program, renamed debuild.
+# Written by Julian Gilbey, December 1998.
+
+# Copyright 1999-2003, Julian Gilbey <jdg@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+# We will do simple option processing. The calling syntax of this
+# program is:
+#
+# debuild [<debuild options>] binary|binary-arch|binary-indep|clean ...
+# or
+# debuild [<debuild options>] [<dpkg-buildpackage options>]
+# [--lintian-opts <lintian options>]
+#
+# In the first case, debuild will simply run debian/rules with the
+# given parameter. Available options are listed in usage() below.
+#
+# In the second case, the behaviour is to run dpkg-buildpackage and
+# then to run lintian on the resulting .changes file.
+# Lintian options may be specified after --lintian-opts; all following
+# options will be passed only to lintian.
+#
+# As this may be running setuid, we make sure to clean out the
+# environment before we perform the build, subject to any -e etc.
+# options. Also wise for building the packages, anyway.
+# We don't put /usr/local/bin in the PATH as Debian
+# programs will presumably be built without the use of any locally
+# installed programs. This could be changed, but in which case,
+# please add /usr/local/bin at the END so that you don't get any
+# unexpected behaviour.
+
+# We will try to preserve the locale variables, but if it turns out that
+# this harms the package building process, we will clean them out too.
+# Please file a bug report if this is the case!
+
+use strict;
+use warnings;
+use 5.008;
+use File::Basename;
+use filetest 'access';
+use Cwd;
+BEGIN { push @INC, '/usr/share/devscripts'; }
+use Devscripts::Compression;
+use Dpkg::IPC;
+use IO::Handle; # for flushing
+use vars qw(*BUILD *OLDOUT *OLDERR); # prevent a warning
+
+my $progname=basename($0);
+my $modified_conf_msg;
+my @warnings;
+
+my $compression_re = compression_get_file_extension_regex();
+
+# Predeclare functions
+sub system_withecho(@);
+sub run_hook ($$);
+sub fileomitted (\@$);
+sub fatal($);
+
+sub usage
+{
+ print <<"EOF";
+First usage method:
+ $progname [<debuild options>] binary|binary-arch|binary-indep|clean ...
+ to run debian/rules with given parameter(s). Options here are
+ --no-conf, --noconf Don\'t read devscripts config files;
+ must be the first option given
+ --rootcmd=<gain-root-command>, -r<gain-root-command>
+ Command used to become root if $progname
+ not setuid root; default=fakeroot
+
+ --preserve-envvar=<envvar>, -e<envvar>
+ Preserve environment variable <envvar>
+
+ --preserve-env Preserve all environment vars (except PATH)
+
+ --set-envvar=<envvar>=<value>, -e<envvar>=<value>
+ Set environment variable <envvar> to <value>
+
+ --prepend-path=<value> Prepend <value> to the sanitised PATH
+
+ -d Skip checking of build dependencies
+ -D Force checking of build dependencies (default)
+
+ --check-dirname-level N
+ How much to check directory names:
+ N=0 never
+ N=1 only if program changes directory (default)
+ N=2 always
+
+ --check-dirname-regex REGEX
+ What constitutes a matching directory name; REGEX is
+ a Perl regular expression; the string \`PACKAGE\' will
+ be replaced by the package name; see manpage for details
+ (default: 'PACKAGE(-.+)?')
+
+ --help, -h display this message
+
+ --version show version and copyright information
+
+Second usage method:
+ $progname [<debuild options>] [<dpkg-buildpackage options>]
+ [--lintian-opts <lintian options>]
+ to run dpkg-buildpackage and then run lintian on the resulting
+ .changes file.
+
+ Additional debuild options available in this case are:
+
+ --lintian Run lintian (default)
+ --no-lintian Do not run lintian
+ --[no-]tgz-check Do [not] check for an .orig.tar.gz before running
+ dpkg-buildpackage if we have a Debian revision
+ (Default: check)
+ --username Run debrsign instead of debsign, using the
+ supplied credentials
+
+ --dpkg-buildpackage-hook=HOOK
+ --clean-hook=HOOK
+ --dpkg-source-hook=HOOK
+ --build-hook=HOOK
+ --binary-hook=HOOK
+ --dpkg-genchanges-hook=HOOK
+ --final-clean-hook=HOOK
+ --lintian-hook=HOOK
+ --signing-hook=HOOK
+ --post-dpkg-buildpackage-hook=HOOK
+ These hooks run at the various stages of the
+ dpkg-buildpackage run. For details, see the
+ debuild manpage. They default to nothing, and
+ can be reset to nothing with --foo-hook=''
+ --clear-hooks Clear all hooks
+
+ For available dpkg-buildpackage and lintian options, see their
+ respective manpages.
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOF
+}
+
+sub version
+{
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1999-2003 by Julian Gilbey <jdg\@debian.org>,
+all rights reserved.
+Based on a shell-script program by Christoph Lameter.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+}
+
+# Start by reading configuration files and then command line
+# The next stuff is somewhat boilerplate and somewhat not.
+# It's complicated by the fact that the config files are in shell syntax,
+# and we don't want to have to write a general shell parser in Perl.
+# So we'll get the shell to do the work. Yuck.
+# We allow DEBUILD_PRESERVE_ENVVARS="VAR1,VAR2,VAR3"
+# and DEBUILD_SET_ENVVAR_VAR1=VAL1, DEBUILD_SET_ENVVAR_VAR2=VAR2.
+
+# Set default values before we start
+my $preserve_env=0;
+my %save_vars;
+my $root_command='';
+my $run_lintian=1;
+my $lintian_exists=0;
+my @dpkg_extra_opts=();
+my @lintian_extra_opts=();
+my @lintian_opts=();
+my $checkbuilddep=1;
+my $check_dirname_level = 1;
+my $check_dirname_regex = 'PACKAGE(-.+)?';
+my $logging=0;
+my $tgz_check=1;
+my $prepend_path='';
+my $username='';
+my $emulate_dpkgbp = 0;
+my @hooks = (qw(dpkg-buildpackage clean dpkg-source build binary dpkg-genchanges
+ final-clean lintian signing post-dpkg-buildpackage));
+my %hook;
+$hook{@hooks} = ('') x @hooks;
+
+
+# First handle private options from cvs-debuild
+my ($cvsdeb_file, $cvslin_file);
+if (@ARGV and $ARGV[0] eq '--cvs-debuild') {
+ shift;
+ $check_dirname_level=0; # no need to check dirnames if we're being
+ # called from cvs-debuild
+ if (@ARGV and $ARGV[0] eq '--cvs-debuild-deb') {
+ shift;
+ $cvsdeb_file=shift;
+ unless ($cvsdeb_file =~ m%^/dev/fd/\d+$%) {
+ fatal "--cvs-debuild-deb is an internal option and should not be used";
+ }
+ }
+ if (@ARGV and $ARGV[0] eq '--cvs-debuild-lin') {
+ shift;
+ $cvslin_file = shift;
+ unless ($cvslin_file =~ m%^/dev/fd/\d+$%) {
+ fatal "--cvs-debuild-lin is an internal option and should not be used";
+ }
+ }
+ if (defined $cvsdeb_file) {
+ local $/;
+ open DEBOPTS, $cvsdeb_file
+ or fatal "can't open cvs-debuild debuild options file: $!";
+ my $opts = <DEBOPTS>;
+ close DEBOPTS;
+
+ unshift @ARGV, split(/\0/,$opts,-1);
+ }
+ if (defined $cvslin_file) {
+ local $/;
+ open LINOPTS, $cvslin_file
+ or fatal "can't open cvs-debuild lin* options file: $!";
+ my $opts = <LINOPTS>;
+ close LINOPTS;
+
+ push @ARGV, split(/\0/,$opts,-1);
+ }
+}
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'DEBUILD_PRESERVE_ENV' => 'no',
+ 'DEBUILD_PRESERVE_ENVVARS' => '',
+ 'DEBUILD_LINTIAN' => 'yes',
+ 'DEBUILD_ROOTCMD' => 'fakeroot',
+ 'DEBUILD_TGZ_CHECK' => 'yes',
+ 'DEBUILD_DPKG_BUILDPACKAGE_HOOK' => '',
+ 'DEBUILD_CLEAN_HOOK' => '',
+ 'DEBUILD_DPKG_SOURCE_HOOK' => '',
+ 'DEBUILD_BUILD_HOOK' => '',
+ 'DEBUILD_BINARY_HOOK' => '',
+ 'DEBUILD_DPKG_GENCHANGES_HOOK' => '',
+ 'DEBUILD_FINAL_CLEAN_HOOK' => '',
+ 'DEBUILD_LINTIAN_HOOK' => '',
+ 'DEBUILD_SIGNING_HOOK' => '',
+ 'DEBUILD_PREPEND_PATH' => '',
+ 'DEBUILD_POST_DPKG_BUILDPACKAGE_HOOK' => '',
+ 'DEBUILD_SIGNING_USERNAME' => '',
+ 'DEVSCRIPTS_CHECK_DIRNAME_LEVEL' => 1,
+ 'DEVSCRIPTS_CHECK_DIRNAME_REGEX' => 'PACKAGE(-.+)?',
+ );
+ my %config_default = %config_vars;
+ my $dpkg_opts_var = 'DEBUILD_DPKG_BUILDPACKAGE_OPTS';
+ my $lintian_opts_var = 'DEBUILD_LINTIAN_OPTS';
+
+ my $shell_cmd;
+ # Set defaults
+ $shell_cmd .= qq[unset `set | grep "^DEBUILD_" | cut -d= -f1`;\n];
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+ }
+ foreach my $var ($dpkg_opts_var, $lintian_opts_var) {
+ $shell_cmd .= "$var='';\n";
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ foreach my $var ($dpkg_opts_var, $lintian_opts_var) {
+ $shell_cmd .= "eval set -- \$$var;\n";
+ $shell_cmd .= "echo \">>> $var BEGIN <<<\";\n";
+ $shell_cmd .= 'while [ $# -gt 0 ]; do printf "%s\n" "$1"; shift; done;' . "\n";
+ $shell_cmd .= "echo \">>> $var END <<<\";\n";
+ }
+ # Not totally efficient, but never mind
+ $shell_cmd .= 'for var in `set | grep "^DEBUILD_SET_ENVVAR_" | cut -d= -f1`; do ';
+ $shell_cmd .= 'eval echo $var=\$$var; done;' . "\n";
+ # print STDERR "Running shell command:\n$shell_cmd";
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ # print STDERR "Shell output:\n${shell_out}End shell output\n";
+ my @othervars;
+ (@config_vars{keys %config_vars}, @othervars) = split /\n/, $shell_out, -1;
+
+ # Check validity
+ $config_vars{'DEBUILD_PRESERVE_ENV'} =~ /^(yes|no)$/
+ or $config_vars{'DEBUILD_PRESERVE_ENV'}='no';
+ $config_vars{'DEBUILD_LINTIAN'} =~ /^(yes|no)$/
+ or $config_vars{'DEBUILD_LINTIAN'}='yes';
+ $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'} =~ /^[012]$/
+ or $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'}=1;
+ $config_vars{'DEBUILD_TGZ_CHECK'} =~ /^(yes|no)$/
+ or $config_vars{'DEBUILD_TGZ_CHECK'}='yes';
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+
+ # What did we find?
+ $preserve_env = $config_vars{'DEBUILD_PRESERVE_ENV'} eq 'yes' ? 1 : 0;
+ if ($config_vars{'DEBUILD_PRESERVE_ENVVARS'} ne '') {
+ my @preserve_vars = split /\s*,\s*/,
+ $config_vars{'DEBUILD_PRESERVE_ENVVARS'};
+ foreach my $index (0 .. $#preserve_vars) {
+ my $var = $preserve_vars[$index];
+ if ($var =~ /\*$/) {
+ $var =~ s/([^.])\*$/$1.\*/;
+ my @vars = grep /^$var$/, keys %ENV;
+ push @preserve_vars, @vars;
+ delete $preserve_vars[$index];
+ }
+ }
+ @preserve_vars = map {$_ if defined $_} @preserve_vars;
+ @save_vars{@preserve_vars} = (1) x scalar @preserve_vars;
+ }
+ $run_lintian = $config_vars{'DEBUILD_LINTIAN'} eq 'no' ? 0 : 1;
+ $root_command = $config_vars{'DEBUILD_ROOTCMD'};
+ $tgz_check = $config_vars{'DEBUILD_TGZ_CHECK'} eq 'yes' ? 1 : 0;
+ $prepend_path = $config_vars{'DEBUILD_PREPEND_PATH'};
+ $username = $config_vars{'DEBUILD_SIGNING_USERNAME'};
+ $check_dirname_level = $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'};
+ $check_dirname_regex = $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_REGEX'};
+ for my $hookname (@hooks) {
+ my $config_name = uc "debuild_${hookname}_hook";
+ $config_name =~ tr/-/_/;
+ $hook{$hookname} = $config_vars{$config_name};
+ }
+
+ # Now parse the opts lists
+ if (shift @othervars ne ">>> $dpkg_opts_var BEGIN <<<") {
+ fatal "internal error: dpkg opts list missing proper header";
+ }
+ while (($_ = shift @othervars) ne ">>> $dpkg_opts_var END <<<"
+ and @othervars) {
+ push @dpkg_extra_opts, $_;
+ }
+ if (! @othervars) {
+ fatal "internal error: dpkg opts list missing proper trailer";
+ }
+ if (@dpkg_extra_opts) {
+ $modified_conf_msg .= " $dpkg_opts_var='" . join(" ", @dpkg_extra_opts) . "'\n";
+ }
+
+ if (shift @othervars ne ">>> $lintian_opts_var BEGIN <<<") {
+ fatal "internal error: lintian opts list missing proper header";
+ }
+ while (($_ = shift @othervars) ne ">>> $lintian_opts_var END <<<"
+ and @othervars) {
+ push @lintian_extra_opts, $_;
+ }
+ if (! @othervars) {
+ fatal "internal error: lintian opts list missing proper trailer";
+ }
+ if (@lintian_extra_opts) {
+ $modified_conf_msg .= " $lintian_opts_var='" . join(" ", @lintian_extra_opts) . "'\n";
+ }
+
+ # And what is left should be any ENV settings
+ foreach my $envvar (@othervars) {
+ $envvar =~ /^DEBUILD_SET_ENVVAR_([^=]*)=(.*)$/ or next;
+ $ENV{$1}=$2;
+ $save_vars{$1}=1;
+ $modified_conf_msg .= " $1='$2'\n";
+ }
+
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+}
+
+
+# We first check @dpkg_extra_opts for options which may affect us;
+# these were set in a configuration file, so they have lower
+# precedence than command line settings. The options we care about
+# at this stage are: -r and those which affect the checkbuilddep setting
+
+foreach (@dpkg_extra_opts) {
+ /^-r(.*)$/ and $root_command=$1, next;
+ $_ eq '-d' and $checkbuilddep=0, next;
+ $_ eq '-D' and $checkbuilddep=1, next;
+ /^-a(.*)/ and $_ ne '-ap' and $checkbuilddep=0, next;
+ $_ eq '-S' and $checkbuilddep=0, next;
+}
+
+# Check @ARGV for debuild options.
+my @preserve_vars = qw(TERM HOME LOGNAME PGPPATH GNUPGHOME GPG_AGENT_INFO
+ GPG_TTY FAKEROOTKEY LANG DEBEMAIL);
+@save_vars{@preserve_vars} = (1) x scalar @preserve_vars;
+{
+ no locale;
+ while (my $arg=shift) {
+ my $savearg = $arg;
+ my $opt = '';
+
+ $arg =~ /^(-h|--help)$/ and usage(), exit 0;
+ $arg eq '--version' and version(), exit 0;
+
+ # Let's do the messy case first
+ if ($arg eq '--preserve-envvar') {
+ unless (defined ($opt = shift)) {
+ fatal "--preserve-envvar requires an argument,\nrun $progname --help for usage information";
+ }
+ $savearg .= " $opt";
+ }
+ elsif ($arg =~ /^--preserve-envvar=(.*)/) {
+ $arg = '--preserve-envvar';
+ $opt = $1;
+ }
+ elsif ($arg eq '--set-envvar') {
+ unless (defined ($opt = shift)) {
+ fatal "--set-envvar requires an argument,\nrun $progname --help for usage information";
+ }
+ $savearg .= " $opt";
+ }
+ elsif ($arg =~ /^--set-envvar=(.*)/) {
+ $arg = '--set-envvar';
+ $opt = $1;
+ }
+ # dpkg-buildpackage now has a -e option, so we have to be
+ # careful not to confuse the two; their option will always have
+ # the form -e<maintainer email> or similar
+ elsif ($arg eq '-e') {
+ unless (defined ($opt = shift)) {
+ fatal "-e requires an argument,\nrun $progname --help for usage information";
+ }
+ $savearg .= " $opt";
+ if ($opt =~ /^\w+\*?$/) { $arg = '--preserve-envvar'; }
+ else { $arg = '--set-envvar'; }
+ }
+ elsif ($arg =~ /^-e(\w+\*?)$/) {
+ $arg = '--preserve-envvar';
+ $opt = $1;
+ }
+ elsif ($arg =~ /^-e(\w+=.*)$/) {
+ $arg = '--set-envvar';
+ $opt = $1;
+ }
+ elsif ($arg =~ /^-e/) {
+ # seems like a dpkg-buildpackage option, so stop parsing
+ unshift @ARGV, $arg;
+ last;
+ }
+
+ if ($arg eq '--preserve-envvar') {
+ if ($opt =~ /^\w+$/) {
+ $save_vars{$opt}=1;
+ } elsif ($opt =~ /^\w+\*$/) {
+ $opt =~ s/([^.])\*$/$1.\*/;
+ my @vars = grep /^$opt$/, keys %ENV;
+ @save_vars{@vars} = (1) x scalar @vars;
+ } else {
+ push @warnings,
+ "Ignoring unrecognised/malformed option: $savearg";
+ }
+ next;
+ }
+ if ($arg eq '--set-envvar') {
+ if ($opt =~ /^(\w+)=(.*)$/) {
+ $ENV{$1}=$2;
+ $save_vars{$1}=1;
+ } else {
+ push @warnings,
+ "Ignoring unrecognised/malformed option: $savearg";
+ }
+ next;
+ }
+
+ $arg eq '--preserve-env' and $preserve_env=1, next;
+ if ($arg eq '-E') {
+ push @warnings,
+ "-E is deprecated in debuild, as dpkg-buildpackage now uses it.\nPlease use --preserve-env instead in future.\n";
+ $preserve_env=1;
+ next;
+ }
+ $arg eq '--no-lintian' and $run_lintian=0, next;
+ $arg eq '--lintian' and $run_lintian=1, next;
+ if ($arg eq '--rootcmd') {
+ unless (defined ($root_command = shift)) {
+ fatal "--rootcmd requires an argument,\nrun $progname --help for usage information";
+ }
+ next;
+ }
+ $arg =~ /^--rootcmd=(.*)/ and $root_command=$1, next;
+ if ($arg eq '-r') {
+ unless (defined ($opt = shift)) {
+ fatal "-r requires an argument,\nrun $progname --help for usage information";
+ }
+ $root_command=$opt;
+ next;
+ }
+ $arg eq '--tgz-check' and $tgz_check=1, next;
+ $arg =~ /^--no-?tgz-check$/ and $tgz_check=0, next;
+ $arg =~ /^-r(.*)/ and $root_command=$1, next;
+ if ($arg =~ /^--check-dirname-level=(.*)$/) {
+ $arg = '--check-dirname-level';
+ unshift @ARGV, $1;
+ } # fall through and let the next one handle it ;-)
+ if ($arg eq '--check-dirname-level') {
+ unless (defined ($opt = shift)) {
+ fatal "--check-dirname-level requires an argument,\nrun $progname --help for usage information";
+ }
+ if ($opt =~ /^[012]$/) { $check_dirname_level = $opt; }
+ else {
+ fatal "unrecognised --check-dirname-level value (allowed are 0,1,2)";
+ }
+ next;
+ }
+ if ($arg eq '--check-dirname-regex') {
+ unless (defined ($opt = shift)) {
+ fatal "--check-dirname-regex requires an argument,\nrun $progname --help for usage information";
+ }
+ $check_dirname_regex = $opt;
+ next;
+ }
+ if ($arg =~ /^--check-dirname-regex=(.*)$/) {
+ $check_dirname_regex = $1;
+ next;
+ }
+
+ if ($arg eq '--prepend-path') {
+ unless (defined ($opt = shift)) {
+ fatal "--prepend-path requires an argument,\nrun $progname --help for usage information";
+ }
+ $prepend_path = $opt;
+ next;
+ }
+ if ($arg =~ /^--prepend-path=(.*)$/) {
+ $prepend_path = $1;
+ next;
+ }
+
+ if ($arg eq '--username') {
+ unless (defined ($opt = shift)) {
+ fatal "--username requires an argument,\nrun $progname --help for usage information";
+ }
+ $username = $opt;
+ next;
+ }
+ if ($arg =~ /^--username=(.*)$/) {
+ $username = $1;
+ next;
+ }
+
+ if ($arg =~ /^--no-?conf$/) {
+ fatal "$arg is only acceptable as the first command-line option!";
+ }
+ $arg eq '-d' and $checkbuilddep=0, next;
+ $arg eq '-D' and $checkbuilddep=1, next;
+
+ # hooks...
+ if ($arg =~ /^--(.*)-hook$/) {
+ my $argkey = $1;
+ unless (exists $hook{$argkey}) {
+ fatal "unknown hook $arg,\nrun $progname --help for usage information";
+ }
+ unless (defined ($opt = shift)) {
+ fatal "$arg requires an argument,\nrun $progname --help for usage information";
+ }
+ $hook{$argkey} = $opt;
+ next;
+ }
+
+ if ($arg =~ /^--(.*?)-hook=(.*)/) {
+ my $argkey = $1;
+ my $opt = $2;
+
+ unless (exists $hook{$argkey}) {
+ fatal "unknown hook option $arg,\nrun $progname --help for usage information";
+ }
+
+ $hook{$argkey} = $opt;
+ next;
+ }
+
+ if ($arg eq '--clear-hooks') { $hook{@hooks} = ('') x @hooks; next; }
+
+ # Not a debuild option, so give up.
+ unshift @ARGV, $arg;
+ last;
+ }
+}
+
+if ($save_vars{'PATH'}) {
+ # Untaint PATH. Very dangerous in general, but anyone running this
+ # as root can do anything anyway.
+ $ENV{'PATH'} =~ /^(.*)$/;
+ $ENV{'PATH'} = $1;
+} else {
+ $ENV{'PATH'} = "/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11";
+ $ENV{'PATH'} = join(':', $prepend_path, $ENV{'PATH'}) if $prepend_path;
+}
+$save_vars{'PATH'}=1;
+$ENV{'TERM'}='dumb' unless exists $ENV{'TERM'};
+
+# Store a few variables for safe keeping.
+my %store_vars;
+foreach my $var (('DISPLAY', 'GNOME_KEYRING_SOCKET', 'GPG_AGENT_INFO', 'SSH_AUTH_SOCK', 'XAUTHORITY')) {
+ $store_vars{$var} = $ENV{$var} if defined $ENV{$var};
+}
+
+unless ($preserve_env) {
+ foreach my $var (keys %ENV) {
+ delete $ENV{$var} unless
+ $save_vars{$var} or $var =~ /^(LC|DEB(SIGN)?)_[A-Z_]+$/
+ or $var =~ /^(C(PP|XX)?|LD|F)FLAGS(_APPEND)?$/;
+ }
+}
+
+umask 022;
+
+# Start by duping STDOUT and STDERR
+open OLDOUT, ">&", \*STDOUT or fatal "can't dup stdout: $!\n";
+open OLDERR, ">&", \*STDERR or fatal "can't dup stderr: $!\n";
+
+# Look for the debian changelog
+my $chdir = 0;
+until (-r 'debian/changelog') {
+ $chdir = 1;
+ chdir '..' or fatal "can't chdir ..: $!";
+ if (cwd() eq '/') {
+ fatal "cannot find readable debian/changelog anywhere!\nAre you in the source code tree?";
+ }
+}
+
+# Find the source package name and version number
+my %changelog;
+my @parsed = grep {/^(Source|Version):/} `dpkg-parsechangelog`
+ or fatal "cannot execute dpkg-parsechangelog | grep: $!";
+foreach (@parsed) {
+ chomp;
+ if (/^(\S+):\s(.+?)\s*$/) { $changelog{$1}=$2; }
+ else {
+ fatal "don't understand dpkg-parsechangelog output: $_";
+ }
+}
+
+if ($?) { fatal "dpkg-parsechangelog | grep failed!" }
+
+fatal "no package name in changelog!"
+ unless exists $changelog{'Source'};
+my $pkg = $changelog{'Source'};
+fatal "no version number in changelog!"
+ unless exists $changelog{'Version'};
+my $version = $changelog{'Version'};
+(my $sversion=$version) =~ s/^\d+://;
+(my $uversion=$sversion) =~ s/-[a-z0-9+\.]+$//i;
+
+# Is the directory name acceptable?
+if ($check_dirname_level == 2 or
+ ($check_dirname_level == 1 and $chdir)) {
+ my $re = $check_dirname_regex;
+ $re =~ s/PACKAGE/\\Q$pkg\\E/g;
+ my $gooddir;
+ if ($re =~ m%/%) { $gooddir = eval "cwd() =~ /^$re\$/;"; }
+ else { $gooddir = eval "basename(cwd()) =~ /^$re\$/;"; }
+
+ if (! $gooddir) {
+ my $pwd = cwd();
+ die <<"EOF";
+$progname: found debian/changelog for package $pkg in the directory
+ $pwd
+but this directory name does not match the package name according to the
+regex $check_dirname_regex.
+
+To run $progname on this package, see the --check-dirname-level and
+--check-dirname-regex options; run $progname --help for more info.
+EOF
+ }
+}
+
+
+if (! -f "debian/rules")
+{
+ my $cwd = cwd();
+ fatal "found debian/changelog in directory\n $cwd\nbut there's no debian/rules there! Are you in the source code tree?";
+}
+
+if ( ! -x _ ) {
+ push @warnings, "Making debian/rules executable!\n";
+ chmod 0755, "debian/rules" or
+ fatal "couldn't make debian/rules executable: $!";
+}
+
+# Pick up superuser privileges if we are running set[ug]id root
+my $uid=$<;
+if ( $< != 0 && $> == 0 ) { $< = $> }
+my $gid=$(;
+if ( $( != 0 && $) == 0 ) { $( = $) }
+
+# Now let's look at our options, if any. The first task is to decide
+# which version of debuild we wish to run. The rule is as follows: we
+# want to run the first version (calling debian/rules explicitly) if
+# there is at most one initial -r... argument, and all of the others
+# are one of binary, binary-arch, binary-indep or clean. We run the
+# second version otherwise. Note that the -r option is the only one
+# stripped from the argument list.
+
+my $command_version='rules';
+
+if (@ARGV == 0) { $command_version='dpkg'; }
+else {
+ foreach (@ARGV) {
+ if ( ! /^(binary|binary-indep|binary-arch|clean)$/) {
+ $command_version='dpkg';
+ last;
+ }
+ }
+}
+
+if ($command_version eq 'dpkg') {
+ # We're going to emulate dpkg-buildpackage and possibly lintian.
+ # This will allow us to run hooks.
+ # However, if dpkg-cross is installed (as evidenced by the presence
+ # of /usr/bin/dpkg-cross), then we call the "real" dpkg-buildpackage,
+ # which is actually dpkg-cross's version. We lose the facility for
+ # hooks in this case, but we're not going to emulate dpkg-cross as well!
+
+ my $dpkg_cross = (-x '/usr/bin/dpkg-cross' ? 1 : 0);
+ if ($dpkg_cross) {
+ # check hooks
+ my @skip_hooks = ();
+ for my $hookname (qw(clean dpkg-source build binary dpkg-genchanges
+ final-clean)) {
+ if ($hook{$hookname}) { push @skip_hooks, $hookname; }
+ }
+ if (@skip_hooks) {
+ warn "$progname: dpkg-cross appears to be present on your system, and you have\nset up some hooks which will not be run (" .
+ join(", ", @skip_hooks) . ");\ndo you wish to continue? (y/n) ";
+ my $ans = <STDIN>;
+ exit 1 unless $ans =~ /^y/i;
+ }
+ } else {
+ # check hooks
+ my @skip_hooks = ();
+ for my $hookname (qw(clean dpkg-source build binary dpkg-genchanges
+ final-clean)) {
+ if ($hook{$hookname}) { push @skip_hooks, $hookname; }
+ }
+ if (@skip_hooks) {
+ $emulate_dpkgbp = 1;
+ warn "$progname: emulating dpkg-buildpackage as the following hooks were defined:\n"
+ . " " . join(", ", @skip_hooks) . "\n\n";
+ }
+ }
+
+ # Our first task is to parse the command line options.
+
+ # And before we get too excited, does lintian even exist?
+ if ($run_lintian) {
+ system("command -v lintian >/dev/null 2>&1") == 0
+ and $lintian_exists=1;
+ }
+
+ # dpkg-buildpackage variables explicitly initialised in dpkg-buildpackage
+ my $signsource=1;
+ my $signchanges=1;
+ my $cleansource=0;
+ my $binarytarget='binary';
+ my $sourcestyle='';
+ my $since='';
+ my $maint='';
+ my $desc='';
+ my $parallel='';
+ my $noclean=0;
+ my $usepause=0;
+ my $warnable_error=0; # OK, dpkg-buildpackage defines this but doesn't
+ # use it. We'll keep it around just in case it
+ # does one day...
+ my @passopts=();
+
+ # extra dpkg-buildpackage variables not initialised there
+ my $diffignore='';
+ my @tarignore=();
+ my $sourceonly='';
+ my $binaryonly='';
+ my $targetarch='';
+ my $targetgnusystem='';
+ my $changedby='';
+ my $compression='';
+ my $comp_level='';
+
+ my $dirn = basename(cwd());
+
+ # and one for us
+ my @debsign_opts = ();
+ # and one for dpkg-cross if needed
+ my @dpkg_opts = qw(-us -uc);
+
+ # Parse dpkg-buildpackage options
+ # First process @dpkg_extra_opts from above
+
+ foreach (@dpkg_extra_opts) {
+ $_ eq '-h' and
+ warn "You have a -h option in your configuration file! Ignoring.\n", next;
+ /^-r/ and next; # already been processed
+ /^-p/ and push(@debsign_opts, $_), next; # Key selection options
+ /^-k/ and push(@debsign_opts, $_), next; # Ditto
+ /^-[dD]$/ and next; # already been processed
+ /^-s(pgp|gpg)$/ and push(@debsign_opts, $_), next; # Key selection
+ $_ eq '-us' and $signsource=0, next;
+ $_ eq '-uc' and $signchanges=0, next;
+ $_ eq '-ap' and $usepause=1, next;
+ /^-a(.*)/ and $targetarch=$1, push(@dpkg_opts, $_), next;
+ # Explained below; no implied -d here, as already done
+ /^-s[iad]$/ and $sourcestyle=$_, push(@dpkg_opts, $_), next;
+ /^-i/ and $diffignore=$_, push(@dpkg_opts, $_), next;
+ /^-I/ and push(@tarignore, $_), push(@dpkg_opts, $_), next;
+ /^-Z/ and $compression=$_, push(@dpkg_opts, $_), next;
+ /^-z/ and $comp_level=$_, push(@dpkg_opts, $_), next;
+ $_ eq '-tc' and $cleansource=1, push(@dpkg_opts, $_), next;
+ /^-t(.*)/ and $targetgnusystem=$1, push(@dpkg_opts, $_), next; # Ditto
+ $_ eq '-nc' and $noclean=1, push(@dpkg_opts, $_),
+ next;
+ $_ eq '-b' and $binaryonly=$_, $binarytarget='binary',
+ push(@dpkg_opts, $_), next;
+ $_ eq '-B' and $binaryonly=$_, $binarytarget='binary-arch',
+ push(@dpkg_opts, $_), next;
+ $_ eq '-A' and $binaryonly=$_, $binarytarget='binary-indep',
+ push(@dpkg_opts, $_), next;
+ $_ eq '-S' and $sourceonly=$_, push(@dpkg_opts, $_), next;
+ # Explained below, no implied -d
+ /^-v(.*)/ and $since=$1, push(@dpkg_opts, $_), next;
+ /^-m(.*)/ and $maint=$1, push(@debsign_opts, $_), push(@dpkg_opts, $_),
+ next;
+ /^-e(.*)/ and $changedby=$1, push(@debsign_opts, $_),
+ push(@dpkg_opts, $_), next;
+ /^-C(.*)/ and $desc=$1, push(@dpkg_opts, $_), next;
+ /^-j(\d*)$/ and $parallel=($1 || '-1'), push(@dpkg_opts, $_), next;
+ $_ eq '-W' and $warnable_error=1, push(@passopts, $_),
+ push(@dpkg_opts, $_), next;
+ $_ eq '-E' and $warnable_error=0, push(@passopts, $_),
+ push(@dpkg_opts, $_), next;
+ # dpkg-cross specific option
+ if (/^-M/ and $dpkg_cross) { push(@dpkg_opts, $_), next; }
+ if ($emulate_dpkgbp) {
+ fatal "unknown dpkg-buildpackage option in configuration file: $_";
+ } else {
+ warn "$progname: unknown dpkg-buildpackage option in configuration file: $_\n";
+ push (@dpkg_opts, $_);
+ next;
+ }
+ }
+
+ while ($_=shift) {
+ $_ eq '-h' and usage(), exit 0;
+ /^-r(.*)/ and $root_command=$1, next;
+ /^-p/ and push(@debsign_opts, $_), next; # Key selection options
+ /^-k/ and push(@debsign_opts, $_), next; # Ditto
+ $_ eq '-d' and $checkbuilddep=0, next;
+ $_ eq '-D' and $checkbuilddep=1, next;
+ /^-s(pgp|gpg)$/ and push(@debsign_opts, $_), next; # Key selection
+ $_ eq '-us' and $signsource=0, next;
+ $_ eq '-uc' and $signchanges=0, next;
+ $_ eq '-ap' and $usepause=1, next;
+ /^-a(.*)/ and $targetarch=$1, $checkbuilddep=0, push(@dpkg_opts, $_),
+ next;
+ /^-s[iad]$/ and $sourcestyle=$_, push(@dpkg_opts, $_), next;
+ /^-i/ and $diffignore=$_, push(@dpkg_opts, $_), next;
+ /^-I/ and push(@tarignore, $_), push(@dpkg_opts, $_), next;
+ /^-Z/ and $compression=$_, push(@dpkg_opts, $_), next;
+ /^-z/ and $comp_level=$_, push(@dpkg_opts, $_), next;
+ $_ eq '-tc' and $cleansource=1, push(@dpkg_opts, $_), next;
+ /^-t(.*)/ and $targetgnusystem=$1, $checkbuilddep=0, next;
+ $_ eq '-nc' and $noclean=1, push(@dpkg_opts, $_),
+ next;
+ $_ eq '-b' and $binaryonly=$_, $binarytarget='binary',
+ push(@dpkg_opts, $_), next;
+ $_ eq '-B' and $binaryonly=$_, $binarytarget='binary-arch',
+ push(@dpkg_opts, $_), next;
+ $_ eq '-A' and $binaryonly=$_, $binarytarget='binary-indep',
+ push(@dpkg_opts, $_), next;
+ $_ eq '-S' and $sourceonly=$_, $checkbuilddep=0, push(@dpkg_opts, $_),
+ next;
+ /^-v(.*)/ and $since=$1, push(@dpkg_opts, $_), next;
+ /^-m(.*)/ and $maint=$1, push(@debsign_opts, $_), push(@dpkg_opts, $_),
+ next;
+ /^-e(.*)/ and $changedby=$1, push(@debsign_opts, $_),
+ push(@dpkg_opts, $_), next;
+ /^-C(.*)/ and $desc=$1, push(@dpkg_opts, $_), next;
+ /^-j(\d*)$/ and $parallel=($1 || '-1'), push(@dpkg_opts, $_), next;
+ $_ eq '-W' and $warnable_error=1, push(@passopts, $_),
+ push(@dpkg_opts, $_), next;
+ $_ eq '-E' and $warnable_error=0, push(@passopts, $_),
+ push(@dpkg_opts, $_), next;
+ # dpkg-cross specific option
+ if (/^-M/ and $dpkg_cross) { push(@dpkg_opts, $_), next; }
+
+ # these non-dpkg-buildpackage options make us stop
+ if ($_ eq '-L' or $_ eq '--lintian' or /^--lintian-opts$/) {
+ unshift @ARGV, $_;
+ last;
+ }
+ if ($emulate_dpkgbp) {
+ fatal "unknown dpkg-buildpackage/debuild option: $_";
+ } else {
+ warn "$progname: unknown dpkg-buildpackage/debuild option: $_\n";
+ push (@dpkg_opts, $_);
+ next;
+ }
+ }
+
+ if ($sourceonly and $binaryonly) {
+ fatal "cannot combine dpkg-buildpackage options $sourceonly and $binaryonly";
+ }
+
+ # Pick up lintian options if necessary
+ if ($run_lintian && @ARGV) {
+ # Check that option is sensible
+ LIN_OPTS:
+ while (@ARGV) {
+ my $whichlin = shift;
+ if ($whichlin eq '-L' or $whichlin eq '--lintian') {
+ push @warnings,
+ "the $whichlin option is deprecated for indicating the start\nof lintian options, please use --lintian-opts instead\n (I substituted -L with --lintian-opts this time)";
+ $whichlin = '--lintian-opts';
+ }
+ if ($whichlin eq '--lintian-opts') {
+ if (! $run_lintian) {
+ push @warnings,
+ "$whichlin option given but not running lintian!";
+ }
+ while ($_=shift) {
+ if (/^--lintian-opts$/) {
+ unshift @ARGV, $_;
+ next LIN_OPTS;
+ }
+ push @lintian_opts, $_;
+ }
+ }
+ }
+ }
+
+ if ($< != 0) {
+ $root_command ||= 'fakeroot';
+ # Only fakeroot is a default, so that's the only one we'll
+ # check for
+ if ($root_command eq 'fakeroot') {
+ system('fakeroot true 2>/dev/null');
+ if ($? >> 8 != 0) {
+ fatal "problem running fakeroot: either install the fakeroot package,\nuse a -r option to select another root command program to use or\nrun me as root!";
+ }
+ }
+ }
+
+ if ($signchanges==1 and $signsource==0) {
+ push @warnings,
+ "I will sign the .dsc file anyway as a signed .changes file was requested\n";
+ $signsource=1; # may not be strictly necessary, but for clarity!
+ }
+
+ # Next dpkg-buildpackage steps:
+ # mustsetvar package/version have been done above; we've called the
+ # results $pkg and $version
+ # mustsetvar maintainer is only needed for signing, so we leave that
+ # to debsign or dpkg-sig
+ # Call to dpkg-architecture to set DEB_{BUILD,HOST}_* environment
+ # variables
+ my @dpkgarch = 'dpkg-architecture';
+ if ($targetarch) {
+ push @dpkgarch, "-a${targetarch}";
+ }
+ if ($targetgnusystem) {
+ push @dpkgarch, "-t${targetgnusystem}";
+ }
+ push @dpkgarch, '-f';
+
+ my $archinfo;
+ spawn(exec => [@dpkgarch],
+ to_string => \$archinfo,
+ wait_child => 1);
+ foreach (split /\n/, $archinfo) {
+ /^(.*)=(.*)$/ and $ENV{$1} = $2;
+ }
+
+ # We need to do the arch, pv, pva stuff to figure out
+ # what the changes file will be called,
+ my ($arch, $dsc, $changes, $build);
+ if ($sourceonly) {
+ $arch = 'source';
+ } else {
+ $arch = $ENV{DEB_HOST_ARCH};
+ }
+
+ # Handle dpkg source format "3.0 (git)" packages (no tarballs)
+ if ( -r "debian/source/format" ) {
+ open FMT, "debian/source/format" or die $!;
+ my $srcfmt = <FMT>; close FMT; chomp $srcfmt;
+ if ( $srcfmt eq "3.0 (git)" ) { $tgz_check = 0; }
+ }
+
+ $dsc = "${pkg}_${sversion}.dsc";
+ my $orig_prefix = "${pkg}_${uversion}.orig.tar";
+ my $origdir = basename(cwd()) . ".orig";
+ if (! $binaryonly and $tgz_check and $uversion ne $sversion
+ and ! -f "../${orig_prefix}.bz2" and ! -f "../${orig_prefix}.lzma"
+ and ! -f "../${orig_prefix}.gz" and ! -f "../${orig_prefix}.xz"
+ and ! -d "../$origdir") {
+ print STDERR "This package has a Debian revision number but there does"
+ . " not seem to be\nan appropriate original tar file or .orig"
+ . " directory in the parent directory;\n(expected one of"
+ . " ${orig_prefix}.gz, ${orig_prefix}.bz2,\n${orig_prefix}.lzma, "
+ . " ${orig_prefix}.xz or $origdir)\ncontinue anyway? (y/n) ";
+ my $ans = <STDIN>;
+ exit 1 unless $ans =~ /^y/i;
+ }
+
+ # We'll need to be a bit cleverer to determine the changes file name;
+ # see below
+ $build="${pkg}_${sversion}_${arch}.build";
+ $changes="${pkg}_${sversion}_${arch}.changes";
+ open BUILD, "| tee ../$build" or fatal "couldn't open pipe to tee: $!";
+ $logging=1;
+ close STDOUT;
+ close STDERR;
+ open STDOUT, ">&BUILD" or fatal "can't reopen stdout: $!";
+ open STDERR, ">&BUILD" or fatal "can't reopen stderr: $!";
+
+ run_hook('dpkg-buildpackage', 1);
+
+ if ($dpkg_cross) {
+ unshift @dpkg_opts, ($checkbuilddep ? "-D" : "-d");
+ unshift @dpkg_opts, "-r$root_command" if $root_command;
+ system_withecho('dpkg-buildpackage', @dpkg_opts);
+
+ chdir '..' or fatal "can't chdir: $!";
+ # We're using dpkg-cross, we could now have foo_1.2_i386+sparc.changes
+ # so can't just set $changes = "${pkg}_${sversion}_${arch}.changes"
+ my @changes = glob("${pkg}_${sversion}_*.changes");
+ if (@changes == 0) {
+ fatal "couldn't find a .changes file!";
+ } elsif (@changes == 1) {
+ $changes = $changes[0];
+ } else {
+ # put newest first
+ @changes = sort { -M $a <=> -M $b } @changes;
+ $changes = $changes[0];
+ }
+ } elsif ($emulate_dpkgbp == 0) {
+ unshift @dpkg_opts, ($checkbuilddep ? "-D" : "-d");
+ unshift @dpkg_opts, "-r$root_command" if $root_command;
+ system_withecho('dpkg-buildpackage', @dpkg_opts);
+
+ chdir '..' or fatal "can't chdir: $!";
+ } else {
+ # Not using dpkg-cross, so we emulate dpkg-buildpackage ourselves
+ # We emulate the version found in dpkg-buildpackage-snapshot in
+ # the source package with the addition of -j and *FLAGS(_APPEND)
+ # support
+
+ my $build_opts = parsebuildopts();
+
+ # From dpkg-buildpackage 1.14.15
+ if ($parallel) {
+ $parallel = $build_opts->{parallel}
+ if (defined $build_opts->{parallel});
+ $ENV{MAKEFLAGS} ||= '';
+
+ if ($parallel eq '-1') {
+ $ENV{MAKEFLAGS} .= " -j";
+ } else {
+ $ENV{MAKEFLAGS} .= " -j$parallel";
+ }
+
+ $build_opts->{parallel} = $parallel;
+ setbuildopts($build_opts);
+ }
+
+ # From dpkg-buildpackage 1.14.18
+ # (with messages tweaked as we don't support localization)
+ my $default_flags = defined $build_opts->{noopt} ? "-g -O0" : "-g -O2";
+ my %flags = ( CPPFLAGS => '',
+ CFLAGS => $default_flags,
+ CXXFLAGS => $default_flags,
+ FFLAGS => $default_flags,
+ LDFLAGS => '',
+ );
+
+ foreach my $flag (keys %flags) {
+ if ($ENV{$flag}) {
+ print "$progname: using $flag from environment: $ENV{$flag}\n";
+ } else {
+ $ENV{$flag} = $flags{$flag};
+ print "$progname: set $flag to defailt value: $ENV{$flag}\n";
+ }
+ if ($ENV{"${flag}_APPEND"}) {
+ $ENV{$flag} .= " ".$ENV{"${flag}_APPEND"};
+ }
+ }
+
+ chdir '..' or fatal "can't chdir ..: $!";
+ system_withecho('dpkg-source', '--before-build', $dirn);
+ chdir $dirn or fatal "can't chdir $dirn: $!";
+
+ # First dpkg-buildpackage action: run dpkg-checkbuilddeps
+ if ($checkbuilddep) {
+ if ($binarytarget eq 'binary-arch') {
+ system('dpkg-checkbuilddeps -B');
+ } elsif ($binarytarget eq 'binary-indep') {
+ system('dpkg-checkbuilddeps -A');
+ } else {
+ system('dpkg-checkbuilddeps');
+ }
+ if ($?>>8) {
+ fatal <<"EOT";
+You do not appear to have all build dependencies properly met, aborting.
+(Use -d flag to override.)
+You can use mk-build-deps to generate a dummy package which Depends on all the
+required packages, or you can install them manually using dpkg or apt using
+the error messages just above this message.
+EOT
+ }
+ }
+
+ run_hook('clean', ! $noclean);
+
+ # Next dpkg-buildpackage action: clean
+ unless ($noclean) {
+ if ($< == 0) {
+ system_withecho('debian/rules', 'clean');
+ } else {
+ system_withecho($root_command, 'debian/rules', 'clean');
+ }
+ }
+
+ run_hook('dpkg-source', ! $binaryonly);
+
+ # Next dpkg-buildpackage action: dpkg-source
+ if (! $binaryonly) {
+ my @cmd = (qw(dpkg-source));
+ push @cmd, @passopts;
+ push @cmd, $diffignore if $diffignore;
+ push @cmd, $compression if $compression;
+ push @cmd, $comp_level if $comp_level;
+ push @cmd, @tarignore;
+ push @cmd, "-b", $dirn;
+ chdir '..' or fatal "can't chdir ..: $!";
+ system_withecho(@cmd);
+ chdir $dirn or fatal "can't chdir $dirn: $!";
+ }
+
+ run_hook('build', ! $sourceonly);
+
+ # Next dpkg-buildpackage action: build and binary targets
+ if (! $sourceonly) {
+ system_withecho('debian/rules', 'build');
+
+ run_hook('binary', 1);
+
+ if ($< == 0) {
+ system_withecho('debian/rules', $binarytarget);
+ } else {
+ system_withecho($root_command, 'debian/rules', $binarytarget);
+ }
+ } elsif ($hook{'binary'}) {
+ push @warnings, "$progname: not running binary hook '$hook{'binary'}' as -S option used\n";
+ }
+
+ # We defer the signing the .dsc file until after dpkg-genchanges has
+ # been run
+
+ run_hook('dpkg-genchanges', 1);
+
+ # Because of our messing around with STDOUT and wanting to pass
+ # arguments safely to dpkg-genchanges means that we're gonna have to
+ # do it manually :(
+ my @cmd = ('dpkg-genchanges');
+ foreach ($binaryonly, $sourceonly, $sourcestyle) {
+ push @cmd, $_ if $_;
+ }
+ push @cmd, "-m$maint" if $maint;
+ push @cmd, "-e$changedby" if $changedby;
+ push @cmd, "-v$since" if $since;
+ push @cmd, "-C$desc" if $desc;
+ print STDERR " ", join(" ", @cmd), "\n";
+
+ open GENCHANGES, "-|", @cmd or fatal "can't exec dpkg-genchanges: $!";
+ my @changefilecontents;
+ @changefilecontents = <GENCHANGES>;
+ close GENCHANGES
+ or warn "$progname: dpkg-genchanges failed!\n", exit ($?>>8);
+ open CHANGES, "> ../$changes"
+ or fatal "can't open ../$changes for writing: $!";
+ print CHANGES @changefilecontents;
+ close CHANGES
+ or fatal "problem writing to ../$changes: $!";
+
+ # check Ubuntu merge Policy: When merging with Debian, -v must be used
+ # and the remaining changes described
+ my $ch = join "\n", @changefilecontents;
+ if ($sourceonly && $version =~ /ubuntu1$/ && $ENV{'DEBEMAIL'} =~ /ubuntu/ &&
+ $ch =~ /(merge|sync).*Debian/i) {
+ push (@warnings, "Ubuntu merge policy: when merging Ubuntu packages with Debian, -v must be used") unless $since;
+ push (@warnings, "Ubuntu merge policy: when merging Ubuntu packages with Debian, changelog must describe the remaining Ubuntu changes")
+ unless $ch =~ /Changes:.*(remaining|Ubuntu)(.|\n )*(differen|changes)/is;
+ }
+
+ run_hook('final-clean', $cleansource);
+
+ # Final dpkg-buildpackage action: clean target again
+ if ($cleansource) {
+ if ($< == 0) {
+ system_withecho('debian/rules', 'clean');
+ } else {
+ system_withecho($root_command, 'debian/rules', 'clean');
+ }
+ }
+
+ chdir '..' or fatal "can't chdir ..: $!";
+ system_withecho('dpkg-source', '--after-build', $dirn);
+ chdir $dirn or fatal "can't chdir $dirn: $!";
+
+ # identify the files listed in $changes; this will be used for the
+ # emulation of the dpkg-buildpackage fileomitted() function
+
+ my @files;
+ my $infiles=0;
+ foreach (@changefilecontents) {
+ /^Files:/ and $infiles=1, next;
+ next unless $infiles;
+ last if /^[^ ]/; # no need to go further
+ # so we're looking at a filename with lots of info before it
+ / (\S+)$/ and push @files, $1;
+ }
+
+ my $srcmsg;
+
+ my $ext = $compression_re;
+ if (fileomitted @files, '\.deb') {
+ # source only upload
+ if (fileomitted @files, "\\.diff\\.$ext" and fileomitted @files, "\\.debian\\.tar\\.$ext") {
+ $srcmsg='source only upload: Debian-native package';
+ } elsif (fileomitted @files, "\\.orig\\.tar\\.$ext") {
+ $srcmsg='source only, diff-only upload (original source NOT included)';
+ } else {
+ $srcmsg='source only upload (original source is included)';
+ }
+ } else {
+ if (fileomitted @files, '\.dsc') {
+ $srcmsg='binary only upload (no source included)'
+ } elsif (fileomitted @files, "\\.diff\\.$ext" and fileomitted @files, "\\.debian\\.tar\\.$ext") {
+ $srcmsg='full upload; Debian-native package (full source is included)';
+ } elsif (fileomitted @files, "\\.orig\\.tar\\.$ext") {
+ $srcmsg='binary and diff upload (original source NOT included)';
+ } else {
+ $srcmsg='full upload (original source is included)';
+ }
+ }
+
+ print "dpkg-buildpackage (debuild emulation): $srcmsg\n";
+
+ chdir '..' or fatal "can't chdir: $!";
+ } # end of debuild dpkg-buildpackage emulation
+
+ run_hook('lintian', $run_lintian && $lintian_exists);
+
+ if ($run_lintian && $lintian_exists) {
+ $<=$>=$uid; # Give up on root privileges if we can
+ $(=$)=$gid;
+ print "Now running lintian...\n";
+ # The remaining items in @ARGV, if any, are lintian options
+ system('lintian', @lintian_extra_opts, @lintian_opts, $changes);
+ print "Finished running lintian.\n";
+ }
+
+ # They've insisted. Who knows why?!
+ if (($signchanges or $signsource) and $usepause) {
+ print "Press the return key to start signing process\n";
+ <STDIN>;
+ }
+
+ run_hook('signing', ($signchanges || (! $sourceonly and $signsource)) );
+
+ if ($signchanges) {
+ foreach my $var (keys %store_vars) {
+ $ENV{$var} = $store_vars{$var};
+ }
+ print "Now signing changes and any dsc files...\n";
+ if ($username) {
+ system('debrsign', @debsign_opts, $username, $changes) == 0
+ or fatal "running debrsign failed";
+ } else {
+ system('debsign', @debsign_opts, $changes) == 0
+ or fatal "running debsign failed";
+ }
+ }
+ elsif (! $sourceonly and $signsource) {
+ print "Now signing dsc file...\n";
+ if ($username) {
+ system('debrsign', @debsign_opts, $username, $dsc) == 0
+ or fatal "running debrsign failed";
+ } else {
+ system('debsign', @debsign_opts, $dsc) == 0
+ or fatal "running debsign failed";
+ }
+ }
+
+ run_hook('post-dpkg-buildpackage', 1);
+
+ # Any warnings?
+ if (@warnings) {
+ # Don't know why we need this, but seems that we do, otherwise,
+ # the warnings get muddled up with the other output.
+ IO::Handle::flush(\*STDOUT);
+
+ my $warns = @warnings > 1 ? "S" : "";
+ warn "\nWARNING$warns generated by $progname:\n" .
+ join("\n", @warnings) . "\n";
+ }
+ # close the logging process
+ close STDOUT;
+ close STDERR;
+ close BUILD;
+ open STDOUT, ">&", \*OLDOUT;
+ open STDERR, ">&", \*OLDERR;
+ exit 0;
+}
+else {
+ # Running debian/rules. Do dpkg-checkbuilddeps first
+ if ($checkbuilddep) {
+ if ($ARGV[0] eq 'binary-arch') {
+ system('dpkg-checkbuilddeps -B');
+ } elsif ($ARGV[0] eq 'binary-indep') {
+ system('dpkg-checkbuilddeps -A');
+ } else {
+ system('dpkg-checkbuilddeps');
+ }
+ if ($?>>8) {
+ fatal <<"EOT";
+You do not appear to have all build dependencies properly met.
+You can use mk-build-deps to generate a dummy package which
+Depends on all the required packages, or you can install them
+manually using dpkg or apt using the error messages just above
+this message.
+EOT
+ }
+ }
+
+ # Don't try to use the root command if we are already running as root
+ if ( $< == 0 ) {
+ system ('debian/rules', @ARGV) == 0
+ or fatal "couldn't exec debian/rules: $!";
+ }
+ else {
+ # So we'll use the selected or default root command
+ system ($root_command, 'debian/rules', @ARGV) == 0
+ or fatal "couldn't exec $root_command debian/rules: $!";
+ }
+
+ # Any warnings?
+ if (@warnings) {
+ my $warns = @warnings > 1 ? "s" : "";
+ warn "Warning$warns generated by debuild:\n" .
+ join("\n", @warnings) . "\n";
+ }
+ exit 0;
+}
+
+###### Subroutines
+
+sub system_withecho(@) {
+ print STDERR " ", join(" ", @_), "\n";
+ system(@_);
+ if ($?>>8) {
+ fatal "@_ failed";
+ }
+}
+
+sub fileomitted (\@$) {
+ my ($files, $pat) = @_;
+ return (scalar(grep { /$pat$/ } @$files) == 0);
+}
+
+sub run_hook ($$) {
+ my ($hook, $act) = @_;
+ return unless $hook{$hook};
+
+ print STDERR " Running $hook-hook\n";
+ my $hookcmd = $hook{$hook};
+ $act = $act ? 1 : 0;
+ my %per=("%"=>"%", "p"=>$pkg, "v"=>$version, "s"=>$sversion, "u"=>$uversion, "a"=>$act);
+ $hookcmd =~ s/\%(.)/exists $per{$1} ? $per{$1} :
+ (warn ("Unrecognised \% substitution in hook: \%$1\n"), "\%$1")/eg;
+
+ system_withecho($hookcmd);
+
+ if ($?>>8) {
+ warn "$progname: $hook-hook failed\n";
+ exit ($?>>8);
+ }
+}
+
+sub fatal($) {
+ my ($pack,$file,$line);
+ ($pack,$file,$line) = caller();
+ (my $msg = "$progname: fatal error at line $line:\n@_\n") =~ tr/\0//d;
+ $msg =~ s/\n\n$/\n/;
+ # redirect stderr before we die...
+ if ($logging) {
+ close STDOUT;
+ close STDERR;
+ close BUILD;
+ open STDOUT, ">&", \*OLDOUT;
+ open STDERR, ">&", \*OLDERR;
+ }
+ die $msg;
+}
+
+# Dpkg::BuildOptions::parse and ::set
+sub parsebuildopts {
+ my ($env) = @_;
+
+ $env ||= $ENV{DEB_BUILD_OPTIONS};
+
+ unless ($env) { return {}; }
+
+ my %opts;
+
+ foreach (split(/\s+/, $env)) {
+ unless (/^([a-z][a-z0-9_-]*)(=(\S*))?$/) {
+ warn("$progname: invalid flag in DEB_BUILD_OPTIONS: $_\n");
+ next;
+ }
+
+ my ($k, $v) = ($1, $3 || '');
+
+ # Sanity checks
+ if ($k =~ /^(noopt|nostrip|nocheck)$/ && length($v)) {
+ $v = '';
+ } elsif ($k eq 'parallel' && $v !~ /^-?\d+$/) {
+ next;
+ }
+
+ $opts{$k} = $v;
+ }
+
+ return \%opts;
+}
+
+sub setbuildopts {
+ my ($opts, $overwrite) = @_;
+ $overwrite = 1 if not defined($overwrite);
+
+ my $new = {};
+ $new = parsebuildopts() unless $overwrite;
+
+ while (my ($k, $v) = each %$opts) {
+ $new->{$k} = $v;
+ }
+
+ my $env = join(" ", map { $new->{$_} ? $_ . "=" . $new->{$_} : $_ } keys %$new);
+
+ $ENV{DEB_BUILD_OPTIONS} = $env;
+ return $env;
+}
--- /dev/null
+.TH DEP3CHANGELOG 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+dep3changelog \- generate a changelog entry from a DEP3-style patch header
+.SH SYNOPSIS
+\fBdep3changelog\fR \fIpatch\fR [\fIpatch\fR ...] [\fIoptions\fR] [\-\- [\fIdch_options\fR]]
+.SH DESCRIPTION
+\fBdep3changelog\fR extracts the DEP3 patch headers from the given \fIpatch\fR
+files and builds a changelog entry for each patch. If the patch author
+differs from the one detected from the \fBDEBEMAIL\fR, \fBNAME\fR,
+\fBDEBEMAIL\fR, or \fBEMAIL\fR environment variables, \*(lqThanks to
+\fIauthor\fR <\fIemail\fR>\*(rq is added to the changelog entry for that patch.
+Any \fBbug-debian\fR or \fBbug-ubuntu\fR fields are added as \*(lqCloses\*(rq to
+the changelog entry. The generated changelog entries are passed to
+\fBdebchange\fR as an argument along with the given \fIdch_options\fR.
+.SH OPTIONS
+.TP
+.BR \-\-help ", " \-h
+Display a help message and exit successfully.
+.TP
+.B \-\-version
+Display version and copyright information and exit successfully.
+.SH ENVIRONMENT
+.TP
+.BR DEBEMAIL ", " EMAIL ", " DEBFULLNAME ", " NAME
+See the above description of the use of these environment variables.
+.SH AUTHOR
+Steve Langasek <vorlon@debian.org>
+.SH "SEE ALSO"
+.BR debchange (1)
--- /dev/null
+#!/usr/bin/perl
+
+# dep3changelog: extract a DEP3 patch header from the named file and
+# automatically update debian/changelog with a suitable entry
+#
+# Copyright 2010 Steve Langasek <vorlon@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+# USA
+
+use 5.008; # We're using PerlIO layers
+use strict;
+use warnings;
+use open ':utf8'; # patch headers are required to be UTF-8
+
+# for checking whether user names are valid and making format() behave
+use Encode qw/decode_utf8 encode_utf8/;
+use Getopt::Long;
+use File::Basename;
+
+# And global variables
+my $progname = basename($0);
+my %env;
+
+sub usage () {
+ print <<"EOF";
+Usage: $progname patch [patch...] [options] [-- [dch options]]
+Options:
+ --help, -h
+ Display this help message and exit
+ --version
+ Display version information
+ Additional options specified after -- are passed to dch.
+EOF
+}
+
+sub version () {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2010 by Steve Langasek, all rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+}
+
+my ($opt_help, $opt_version);
+GetOptions("help|h" => \$opt_help,
+ "version" => \$opt_version,
+)
+or die "Usage: $progname patch [... patch] [-- [dch options]]\nRun $progname --help for more details\n";
+
+if ($opt_help) { usage; exit 0; }
+if ($opt_version) { version; exit 0; }
+
+my @patches;
+
+while (@ARGV && $ARGV[0] !~ /^-/) {
+ push(@patches,shift(@ARGV));
+}
+
+# Check, sanitise and decode these environment variables
+check_env_utf8('DEBFULLNAME');
+check_env_utf8('NAME');
+check_env_utf8('DEBEMAIL');
+check_env_utf8('EMAIL');
+
+if (exists $env{'DEBEMAIL'} and $env{'DEBEMAIL'} =~ /^(.*)\s+<(.*)>$/) {
+ $env{'DEBFULLNAME'} = $1 unless exists $env{'DEBFULLNAME'};
+ $env{'DEBEMAIL'} = $2;
+}
+if (! exists $env{'DEBEMAIL'} or ! exists $env{'DEBFULLNAME'}) {
+ if (exists $env{'EMAIL'} and $env{'EMAIL'} =~ /^(.*)\s+<(.*)>$/) {
+ $env{'DEBFULLNAME'} = $1 unless exists $env{'DEBFULLNAME'};
+ $env{'EMAIL'} = $2;
+ }
+}
+
+my $fullname = '';
+my $email = '';
+
+if (exists $env{'DEBFULLNAME'}) {
+ $fullname = $env{'DEBFULLNAME'};
+} elsif (exists $env{'NAME'}) {
+ $fullname = $env{'NAME'};
+} else {
+ my @pw = getpwuid $<;
+ if ($pw[6]) {
+ if (my $pw = decode_utf8($pw[6])) {
+ $pw =~ s/,.*//;
+ $fullname = $pw;
+ } else {
+ warn "$progname warning: passwd full name field for uid $<\nis not UTF-8 encoded; ignoring\n";
+ }
+ }
+}
+
+if (exists $env{'DEBEMAIL'}) {
+ $email = $env{'DEBEMAIL'};
+} elsif (exists $env{'EMAIL'}) {
+ $email = $env{'EMAIL'};
+}
+
+for my $patch (@patches) {
+ my $shebang = 0;
+ my $dpatch = 0;
+ # TODO: more than one debian or launchpad bug in a patch?
+ my ($description,$author,$debbug,$lpbug,$origin);
+
+ next unless (open PATCH, $patch);
+ while (<PATCH>) {
+ # first line only
+ if (!$shebang) {
+ $shebang = 1;
+ if (/^#!/) {
+ $dpatch = $shebang = 1;
+ next;
+ }
+ }
+ last if (/^---/ || /^\s*$/);
+ chomp;
+ # only if there was a shebang do we strip comment chars
+ s/^# // if ($dpatch);
+ # fixme: this should only apply to the description field.
+ next if (/^ /);
+
+ if (/^(Description|Subject):\s+(.*)\s*/) {
+ $description = $2;
+ } elsif (/^(Author|From):\s+(.*)\s*/) {
+ $author = $2;
+ } elsif (/^Origin:\s+(.*)\s*/) {
+ $origin = $1;
+ } elsif (/^bug-debian:\s+http:\/\/bugs\.debian\.org\/([0-9]+)\s*/i) {
+ $debbug = $1;
+ } elsif (/^bug-ubuntu:\s+https:\/\/.*launchpad\.net\/.*\/([0-9]+)\s*/i) {
+ $lpbug = $1;
+ }
+ }
+ close PATCH;
+ if (!$description || (!$origin && !$author)) {
+ warn "$patch: Invalid DEP3 header\n";
+ next;
+ }
+ my $changelog = "$patch: $description";
+ $changelog .= '.' unless ($changelog =~ /\.$/);
+ if ($author && $author ne $fullname && $author ne "$fullname <$email>")
+ {
+ $changelog .= " Thanks to $author.";
+ }
+ if ($debbug || $lpbug) {
+ $changelog .= ' Closes';
+ $changelog .= ": #$debbug" if ($debbug);
+ $changelog .= "," if ($debbug && $lpbug);
+ $changelog .= " LP: #$lpbug" if ($lpbug);
+ $changelog .= '.';
+ }
+ system('dch',$changelog,@ARGV);
+}
+
+# Is the environment variable valid or not?
+sub check_env_utf8 {
+ my $envvar = $_[0];
+
+ if (exists $ENV{$envvar} and $ENV{$envvar} ne '') {
+ if (! decode_utf8($ENV{$envvar})) {
+ warn "$progname warning: environment variable $envvar not UTF-8 encoded; ignoring\n";
+ } else {
+ $env{$envvar} = decode_utf8($ENV{$envvar});
+ }
+ }
+}
--- /dev/null
+#!/usr/bin/perl -w
+
+# desktop2menu: This program generates a skeleton menu file from a
+# freedesktop.org desktop file
+#
+# Written by Sune Vuorela <debian@pusling.com>
+# Modifications by Adam D. Barratt <adam@adam-barratt.org.uk>
+# Copyright 2007 Sune Vuorela <debian@pusling.com>
+# Modifications Copyright 2007 Adam D. Barratt <adam@adam-barratt.org.uk>
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+=head1 NAME
+
+desktop2menu - create a menu file skeleton from a desktop file
+
+=head1 SYNOPSIS
+
+B<desktop2menu> B<--help>|B<--version>
+
+B<desktop2menu> I<desktop file> [I<package name>]
+
+=head1 DESCRIPTION
+
+B<desktop2menu> generates a skeleton menu file from the supplied
+freedesktop.org desktop file.
+
+The package name to be used in the menu file may be passed as an additional
+argument. If it is not supplied then B<desktop2menu> will attempt to derive
+the package name from the data in the desktop file.
+
+=head1 LICENSE
+
+This program is Copyright (C) 2007 by Sune Vuorela <debian@pusling.com>. It
+was modified by Adam D. Barratt <adam@adam-barratt.org.uk> for the devscripts
+package.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the GNU
+General Public License, version 2 or later.
+
+=head1 AUTHOR
+
+Sune Vuorela <debian@pusling.com> with modifications by Adam D. Barratt
+<adam@adam-barratt.org.uk>
+
+=cut
+
+use warnings;
+use strict;
+use Getopt::Long qw(:config gnu_getopt);
+use File::Basename;
+
+my $progname = basename($0);
+
+BEGIN {
+ # Load the File::DesktopEntry module safely
+ eval { require File::DesktopEntry; };
+ if ($@) {
+ my $progname = basename $0;
+ if ($@ =~ /^Can\'t locate File\/DesktopEntry\.pm/) {
+ die "$progname: you must have the libfile-desktopentry-perl package installed\nto use this script\n";
+ }
+ die "$progname: problem loading the File::DesktopEntry module:\n $@\nHave you installed the libfile-desktopentry-perl package?\n";
+ }
+ import File::DesktopEntry;
+}
+
+use File::DesktopEntry;
+
+# Big generic mapping between fdo sections and menu sections
+my %mappings = (
+ "AudioVideo" => "Applications/Video",
+ "Audio" => "Applications/Sound",
+ "Video" => "Applications/Video",
+ "Development" => "Applications/Programming",
+ "Education" => "Applications/Education",
+ "Game" => "Games!WARN",
+ "Graphics" => "Applications/Graphics!WARN",
+ "Network" => "Applications/Network!WARN",
+ "Office" => "Applications/Office",
+ "System" => "Applications/System/Administration",
+ "Utility" => "Applications!WARN",
+ "Building" => "Applications/Programming",
+ "Debugger" => "Applications/Programming",
+ "IDE" => "Applications/Programming",
+ "Profiling" => "Applications/Programming",
+ "RevisionControl" => "Applications/Programming",
+ "Translation" => "Applications/Programming",
+ "Calendar" => "Applications/Data Management",
+ "ContactManagement" => "Applications/Data Management",
+ "Database" => "Applications/Data Management",
+ "Dictionary" => "Applications/Text",
+ "Chart" => "Applications/Office",
+ "Email" => "Applications/Network/Communication",
+ "Finance" => "Applications/Office",
+ "FlowChart" => "Applications/Office",
+ "PDA" => "Applications/Mobile Devices",
+ "ProjectManagement" => "Applications/Project Management",
+ "Presentation" => "Applications/Office",
+ "Spreadsheet" => "Applications/Office",
+ "Wordprocessor" => "Applications/Office",
+ "2DGraphics" => "Applications/Graphics",
+ "VectorGraphics" => "Applications/Graphics",
+ "RasterGraphics" => "Applications/Graphics",
+ "3DGraphics" => "Applications/Graphics",
+ "Scanning" => "Applications/Graphics",
+ "OCR" => "Applications/Text",
+ "Photography" => "Applications/Graphics",
+ "Publishing" => "Applications/Office",
+ "Viewer" => "Applications/Viewers",
+ "TextTools" => "Applications/Text",
+ "DesktopSettings" => "Applications/System/Administration",
+ "HardwareSettings" => "Applications/System/Hardware",
+ "Printing" => "Applications/System/Administration",
+ "PackageManager" => "Applications/System/Package Management",
+ "Dialup" => "Applications/System/Administration",
+ "InstantMesasging" => "Applications/Network/Communication",
+ "Chat" => "Applications/Network/Communication",
+ "IRCClient" => "Applications/Nework/Communication",
+ "FileTransfer" => "Applications/Network/File Transfer",
+ "HamRadio" => "Applications/Amateur Radio",
+ "News" => "Applicatiosn/Network/Web News",
+ "P2P" => "Applications/File Transfer",
+ "RemoteAccess" => "Applications/System/Administration",
+ "Telephony" => "Applications/Network/Communication",
+ "TelephonyTools" => "Applications/Network/Communication",
+ "VideoConference" => "Applications/Network/Communication",
+ "Midi" => "Applications/Sound",
+ "Mixer" => "Applications/Sound",
+ "Sequencer" => "Applications/Sound",
+ "Tuner" => "Applications/TV and Radio",
+ "TV" => "Applications/TV and Radio",
+ "AudioVideoEditing" => "Applications/Video!WARN",
+ "Player" => "Applications/Video!WARN",
+ "Recorder" => "Applications/Video!WARN",
+ "DiscBurning" => "Applications/File Management",
+ "ActionGame" => "Games/Action",
+ "AdventureGame" => "Games/Adventure",
+ "ArcadeGame" => "Games/Action",
+ "BoardGame" => "Games/Board",
+ "BlocksGame" => "Games/Blocks",
+ "CardGame" => "Games/Card",
+ "KidsGames" => "Games/Toys!WARN",
+ "LogicGames" => "Games/Puzzles",
+ "RolePlaying" => "Games/Adventure",
+ "Simulation" => "Games/Simulation",
+ "SportsGame" => "Games/Action",
+ "StrategyGame" => "Games/Strategy",
+ "Art" => "Applications/Education",
+ "Construction" => "Applications/Education",
+ "Music" => "Applications/Education",
+ "Languages" => "Applications/Education",
+ "Science" => "Applications/Science!WARN",
+ "ArtificialIntelligence" => "Applications/Science!WARN",
+ "Astronomy" => "Applications/Science/Astronomy",
+ "Biology" => "Applications/Science/Biology",
+ "Chemistry" => "Applications/Science/Chemistry",
+ "ComputerScience" => "Applications/Science/Electronics!WARN",
+ "DataVisualization" => "Applications/Science/Data Analysis",
+ "Economy" => "Applications/Office",
+ "Electricity" => "Applications/Science/Engineering",
+ "Geography" => "Applications/Science/Geoscience",
+ "Geology" => "Applications/Science/Geoscience",
+ "Geoscience" => "Applications/Science/Geoscience",
+ "History" => "Applications/Science/Social",
+ "ImageProcessing" => "Applications/Graphics",
+ "Literature" => "Applications/Data Management",
+ "Math" => "Applications/Science/Mathematics",
+ "NumericalAnalyzisis" => "Applications/Science/Mathematics",
+ "MedicalSoftware" => "Applications/Science/Medicine",
+ "Physics" => "Applications/Science/Physics",
+ "Robotics" => "Applications/Science/Engineering",
+ "Sports" => "Games/Tools!WARN",
+ "ParallelComputing" => "Applications/Science/Electronics!WARN",
+ "Amusement" => "Games/Toys",
+ "Archiving" => "Applications/File Management",
+ "Compression" => "Applications/File Management",
+ "Electronics" => "Applications/Science/Electronics",
+ "Emulator" => "Applications/Emulators",
+ "Engineering" => "Applications/Science/Engineering",
+ "FileTools" => "Applications/File Management",
+ "FileManager" => "Applications/File Management",
+ "TerminalEmulator" => "Applications/Shells",
+ "Filesystem" => "Applications/System/Administration",
+ "Monitor" => "Applications/System/Monitoring",
+ "Security" => "Applications/System/Security",
+ "Accessibility" => "Applications/Accessibility",
+ "Calculator" => "Applications/Science/Mathematics",
+ "Clock" => "Games/Toys",
+ "TextEditor" => "Applications/Editors",
+);
+
+#values mentioned in Categories we accept as valid hints.
+my %hintscategories = (
+ "KDE" => "true",
+ "Qt" => "true",
+ "GNOME" => "true",
+ "GTK" => "true",
+);
+
+my ($opt_help, $opt_version);
+
+GetOptions("help|h" => \$opt_help,
+ "version" => \$opt_version,
+ )
+ or die "Usage: $progname desktopfile packagename\nRun $progname --help for more details\n";
+
+if ($opt_help) { help(); exit 0; }
+if ($opt_version) { version(); exit 0; }
+
+if (@ARGV == 0) {
+ help();
+ exit 0;
+}
+
+my $section;
+my @hints;
+my $needs;
+my $warnings = 0;
+
+my $filename = shift @ARGV;
+my $file = File::DesktopEntry->new_from_file("$filename") ;
+
+# do menu files for non-applications make sense?
+die $file->get_value('Name') . " isn't an application\n"
+ unless $file->get_value('Type') eq 'Application';
+
+my $package = join(' ', @ARGV);
+if (!$package) {
+ # Bad guess, but... maybe icon name could be better?
+ $package = $file->get_value('Name');
+ print STDERR "WARNING: Package not specified. Guessing package as: $package\n";
+ $warnings++;
+}
+
+my $category = $file->get_value('Categories');
+
+my @categories = reverse split(";", $category);
+foreach (@categories ) {
+ if ($mappings{$_} && ! $section) {
+ $section = $mappings{$_};
+ }
+ if ($hintscategories{$_}) {
+ push(@hints,$_);
+ }
+}
+
+die "Desktop file has invalid categories" unless $section;
+
+# Not all mappings are completely accurate. Most are, but...
+if ($section =~ /!WARN/) {
+ print STDERR "WARNING: Section is highly inaccurate. Please check it manually\n";
+ $warnings++;
+}
+
+# Let's just pretend that the wm and the vc needs don't exist.
+if ($category =~ /ConsoleOnly/) {
+ $needs = "text";
+} else {
+ $needs = "X11";
+}
+
+print "\n" if $warnings > 0;
+print "?package(" . $package . "): \\\n";
+print "\tneeds=\"" . $needs . "\" \\\n";
+print "\tsection=\"" . $section . "\" \\\n";
+print "\ttitle=\"" . $file->get_value('Name') . "\" \\\n";
+print "\thints=\"" . join(",", @hints) . "\" \\\n" if @hints;
+print "\tcommand=\"" . $file->get_value('Exec') . "\" \\\n";
+print "\ticon=\"/usr/share/pixmaps/" . $file->get_value('Icon') . ".xpm\" \\\n";
+print "\n";
+
+# Unnecessary. but for clarity
+exit 0;
+
+sub help {
+ print <<"EOF";
+Usage: $progname [options] filename packagename
+
+Valid options are:
+ --help, -h Display this message
+ --version, -v Display version and copyright info
+EOF
+}
+
+sub version {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+Copyright (C) 2007 by Sune Vuorela <debian\@pusling.com>.
+Modifications copyright (C) 2007 by Adam D. Barratt <adam\@adam-barratt.org.uk>
+
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2, or (at your option) any
+later version.
+EOF
+}
--- /dev/null
+.TH DEVSCRIPTS 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+devscripts \- scripts to ease the lives of Debian developers
+.SH DESCRIPTION
+The \fBdevscripts\fR package provides a collection of scripts which
+may be of use to Debian developers and others wishing to build Debian
+packages. For a summary of the available scripts, please see the file
+\fI/usr/share/doc/devscripts/README.gz\fR, and for full details, please
+see the individual manpages. They are contributed by multiple
+developers; for details of the authors, please see the code or
+manpages.
+
+Also, the directory \fI/usr/share/doc/devscripts/examples\fR contains
+examples of \fBprocmail\fR and \fBexim\fR scripts for sorting mail
+arriving to Debian mailing lists.
+.SH ENVIRONMENT
+Several scripts of the devscripts suite use the following environment
+variables. Check the man pages of individual scripts for more details on how the
+variables are used.
+.IX Header "ENVIRONMENT"
+.IP "\s-1DEBEMAIL\s0" 4
+.IX Item "DEBEMAIL"
+Email of the person acting on a given Debian package via devscripts.
+.IP "\s-1DEBFULLNAME\s0" 4
+.IX Item "DEBFULLNAME"
+Full name (first + family) of the person acting on a given Debian package via
+devscripts.
+.SH SCRIPTS
+Here is the complete list of available devscripts. See their man pages
+for additional documentation.
--- /dev/null
+.TH DEVSCRIPTS.CONF 5 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+devscripts.conf \- configuration file for the devscripts package
+.SH DESCRIPTION
+The \fBdevscripts\fR package provides a collection of scripts which
+may be of use to Debian developers and others wishing to build Debian
+packages. Many of these have options which can be configured on a
+system-wide and per-user basis.
+.PP
+Every script in the \fBdevscripts\fR package which makes use of values
+from these configuration files describes the specific settings
+recognised in its own manpage. (For a list of the scripts, either see
+\fI/usr/share/doc/devscripts/README.gz\fR or look at the output of
+\fIdpkg \-L devscripts | grep /usr/bin\fR.)
+.PP
+The two configuration files are \fI/etc/devscripts.conf\fR for
+system-wide defaults and \fI~/.devscripts\fR for per-user settings.
+They are written with \fBbash\fR(1) syntax, but should only have
+comments and simple variable assignments in them; they are both
+sourced (if present) by many of the \fBdevscripts\fR scripts.
+Variables corresponding to simple switches should have one of the
+values \fIyes\fR and \fIno\fR; any other setting is regarded as
+equivalent to the default setting.
+.PP
+All variable names are written in uppercase, and begin with the script
+name. Package-wide variables begin with "DEVSCRIPTS", and are listed
+below, as well as in the relevant manpages.
+.PP
+For a list of all of the available options variables, along with their
+default settings, see the example configuration file
+\fI/usr/share/doc/devscripts/devscripts.conf.ex\fR. This is copied to
+\fI/etc/devscripts.conf\fR when the \fBdevscripts\fR package is first
+installed. Information about configuration options introduced in
+newer versions of the package will be appended to
+\fI/etc/devscripts.conf\fR when the package is upgraded.
+.PP
+Every script which reads the configuration files can be forced to
+ignore them by using \fB\-\-no-conf\fR as the \fIfirst\fR command-line
+option.
+.SH "PACKAGE-WIDE VARIABLES"
+The currently recognised package-wide variables are:
+.TP
+.BR DEVSCRIPTS_CHECK_DIRNAME_LEVEL ", " DEVSCRIPTS_CHECK_DIRNAME_REGEX
+These variables control scripts which change directory to find a
+\fIdebian/changelog\fR file or suchlike, and some other miscellaneous
+cases. In order to prevent unwanted, even possibly dangerous,
+behaviour, these variables control when actions will be performed.
+The scripts which currently make use of these variables are:
+\fBdebc\fR, \fBdebchange\fR/\fBdch\fR, \fBdebclean\fR, \fBdebi\fR,
+\fBdebrelease\fR, \fBdebuild\fR and \fBuscan\fR, but this list may
+change with time (and I may not remember to update this manpage).
+Please see the manpages of individual scripts for details of the
+specific behaviour for each script.
+.SH "SEE ALSO"
+.BR devscripts (1)
+and
+.IR /usr/share/doc/devscripts/README.gz.
+.SH AUTHOR
+This manpage was written for the \fBdevscripts\fR package by the
+package maintainer Julian Gilbey <jdg@debian.org>.
--- /dev/null
+# control.py - Represents a debian/control file
+#
+# Copyright (C) 2010, Benjamin Drung <bdrung@debian.org>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+"""This module implements facilities to deal with Debian control."""
+
+import os
+import sys
+
+from devscripts.logger import Logger
+
+try:
+ import debian.deb822
+except ImportError:
+ Logger.error("Please install 'python3-debian' in order to use this utility.")
+ sys.exit(1)
+
+def _insert_after(paragraph, item_before, new_item, new_value):
+ """Insert new_item into directly after item_before
+
+ New items added to a dictionary are appended."""
+ item_found = False
+ for item in paragraph:
+ if item_found:
+ value = paragraph.pop(item)
+ paragraph[item] = value
+ if item == item_before:
+ item_found = True
+ paragraph[new_item] = new_value
+ if not item_found:
+ paragraph[new_item] = new_value
+
+class Control(object):
+ """Represents a debian/control file"""
+
+ def __init__(self, filename):
+ assert os.path.isfile(filename), "%s does not exist." % (filename)
+ self.filename = filename
+ sequence = open(filename)
+ self.paragraphs = list()
+ for paragraph in debian.deb822.Deb822.iter_paragraphs(sequence):
+ self.paragraphs.append(paragraph)
+
+ def get_maintainer(self):
+ """Returns the value of the Maintainer field."""
+ return self.paragraphs[0].get("Maintainer")
+
+ def get_original_maintainer(self):
+ """Returns the value of the XSBC-Original-Maintainer field."""
+ return self.paragraphs[0].get("XSBC-Original-Maintainer")
+
+ def save(self, filename=None):
+ """Saves the control file."""
+ if filename:
+ self.filename = filename
+ content = "\n".join([x.dump() for x in self.paragraphs])
+ control_file = open(self.filename, "wb")
+ control_file.write(content.encode("utf-8"))
+ control_file.close()
+
+ def set_maintainer(self, maintainer):
+ """Sets the value of the Maintainer field."""
+ self.paragraphs[0]["Maintainer"] = maintainer
+
+ def set_original_maintainer(self, original_maintainer):
+ """Sets the value of the XSBC-Original-Maintainer field."""
+ if "XSBC-Original-Maintainer" in self.paragraphs[0]:
+ self.paragraphs[0]["XSBC-Original-Maintainer"] = original_maintainer
+ else:
+ _insert_after(self.paragraphs[0], "Maintainer",
+ "XSBC-Original-Maintainer", original_maintainer)
+
+ def strip_trailing_spaces(self):
+ """Strips all trailing spaces from the control file."""
+ for paragraph in self.paragraphs:
+ for item in paragraph:
+ lines = paragraph[item].split("\n")
+ paragraph[item] = "\n".join([l.rstrip() for l in lines])
--- /dev/null
+#
+# logger.py - A simple logging helper class
+#
+# Copyright (C) 2010, Benjamin Drung <bdrung@debian.org>
+#
+# Permission to use, copy, modify, and/or distribute this software
+# for any purpose with or without fee is hereby granted, provided
+# that the above copyright notice and this permission notice appear
+# in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
+# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+import os
+import sys
+
+
+def escape_arg(arg):
+ """Shell-escpae arg, if necessary.
+ Fairly simplistic, doesn't escape anything except whitespace.
+ """
+ if ' ' not in arg:
+ return arg
+ return '"%s"' % arg.replace('\\', r'\\').replace('"', r'\"')
+
+
+class Logger(object):
+ script_name = os.path.basename(sys.argv[0])
+ verbose = False
+
+ stdout = sys.stdout
+ stderr = sys.stderr
+
+ @classmethod
+ def _print(cls, format_, message, args=None, stderr=False):
+ if args:
+ message = message % args
+ stream = cls.stderr if stderr else cls.stdout
+ stream.write((format_ + "\n") % (cls.script_name, message))
+
+ @classmethod
+ def command(cls, cmd):
+ if cls.verbose:
+ cls._print("%s: I: %s", " ".join(escape_arg(arg) for arg in cmd))
+
+ @classmethod
+ def debug(cls, message, *args):
+ if cls.verbose:
+ cls._print("%s: D: %s", message, args, stderr=True)
+
+ @classmethod
+ def error(cls, message, *args):
+ cls._print("%s: Error: %s", message, args, stderr=True)
+
+ @classmethod
+ def warn(cls, message, *args):
+ cls._print("%s: Warning: %s", message, args, stderr=True)
+
+ @classmethod
+ def info(cls, message, *args):
+ if cls.verbose:
+ cls._print("%s: I: %s", message, args)
+
+ @classmethod
+ def normal(cls, message, *args):
+ cls._print("%s: %s", message, args)
+
+ @classmethod
+ def set_verbosity(cls, verbose):
+ cls.verbose = verbose
--- /dev/null
+# Test suite for devscripts
+#
+# Copyright (C) 2010, Stefano Rivera <stefanor@ubuntu.com>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+import os
+import sys
+
+if sys.version_info < (2, 7):
+ import unittest2 as unittest
+else:
+ import unittest
+
+def discover():
+ # import __main__ triggers code re-execution
+ __main__ = sys.modules['__main__']
+ setupDir = os.path.abspath(os.path.dirname(__main__.__file__))
+ return unittest.defaultTestLoader.discover(setupDir)
--- /dev/null
+[TYPECHECK]
+
+# List of classes names for which member attributes should not be checked
+# (useful for classes with attributes dynamically set).
+# lpapicache classes, urlparse
+ignored-classes=Launchpad,BaseWrapper,PersonTeam,Distribution,Consumer,Credentials,ParseResult
+
+[FORMAT]
+
+# Maximum number of characters on a single line.
+max-line-length=80
+
+# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
+# tab).
+indent-string=' '
+
+[BASIC]
+
+# Allow variables called e, f, lp
+good-names=i,j,k,ex,Run,_,e,f,lp
--- /dev/null
+# test_help.py - Ensure scripts can run --help.
+#
+# Copyright (C) 2010, Stefano Rivera <stefanor@ubuntu.com>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+import fcntl
+import os
+import select
+import signal
+import subprocess
+import time
+
+import setup
+from devscripts.test import unittest
+
+TIMEOUT = 5
+
+def load_tests(loader, tests, pattern):
+ "Give HelpTestCase a chance to populate before loading its test cases"
+ suite = unittest.TestSuite()
+ HelpTestCase.populate()
+ suite.addTests(loader.loadTestsFromTestCase(HelpTestCase))
+ return suite
+
+class HelpTestCase(unittest.TestCase):
+ @classmethod
+ def populate(cls):
+ for script in setup.scripts:
+ setattr(cls, 'test_' + script, cls.make_help_tester(script))
+
+ @classmethod
+ def make_help_tester(cls, script):
+ def tester(self):
+ with open('/dev/null', 'r') as null:
+ process = subprocess.Popen(['./' + script, '--help'],
+ close_fds=True, stdin=null,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ started = time.time()
+ out = []
+
+ fds = [process.stdout.fileno(), process.stderr.fileno()]
+ for fd in fds:
+ fcntl.fcntl(fd, fcntl.F_SETFL,
+ fcntl.fcntl(fd, fcntl.F_GETFL) | os.O_NONBLOCK)
+
+ while time.time() - started < TIMEOUT:
+ for fd in select.select(fds, [], fds, TIMEOUT)[0]:
+ out.append(os.read(fd, 1024))
+ if process.poll() is not None:
+ break
+
+ if process.poll() is None:
+ os.kill(process.pid, signal.SIGTERM)
+ time.sleep(1)
+ if process.poll() is None:
+ os.kill(process.pid, signal.SIGKILL)
+
+ self.assertEqual(process.poll(), 0,
+ "%s failed to return usage within %i seconds.\n"
+ "Output:\n%s"
+ % (script, TIMEOUT, ''.encode('ascii').join(out)))
+ return tester
--- /dev/null
+# test_logger.py - Test devscripts.logger.Logger.
+#
+# Copyright (C) 2012, Stefano Rivera <stefanor@debian.org>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+import io
+import sys
+
+from devscripts.logger import Logger
+from devscripts.test import unittest
+
+
+class LoggerTestCase(unittest.TestCase):
+ def setUp(self):
+ Logger.stdout = io.StringIO()
+ Logger.stderr = io.StringIO()
+ self._script_name = Logger.script_name
+ Logger.script_name = 'test'
+ self._verbose = Logger.verbose
+
+ def tearDown(self):
+ Logger.stdout = sys.stdout
+ Logger.stderr = sys.stderr
+ Logger.script_name = self._script_name
+ Logger.verbose = self._verbose
+
+ def testCommand(self):
+ Logger.command(('ls', 'a b'))
+ self.assertEqual(Logger.stdout.getvalue(), '')
+ Logger.set_verbosity(True)
+ Logger.command(('ls', 'a b'))
+ self.assertEqual(Logger.stdout.getvalue(), 'test: I: ls "a b"\n')
+ self.assertEqual(Logger.stderr.getvalue(), '')
+
+ def testNoArgs(self):
+ Logger.normal('hello %s')
+ self.assertEqual(Logger.stdout.getvalue(), 'test: hello %s\n')
+ self.assertEqual(Logger.stderr.getvalue(), '')
+
+ def testArgs(self):
+ Logger.normal('hello %s', 'world')
+ self.assertEqual(Logger.stdout.getvalue(), 'test: hello world\n')
+ self.assertEqual(Logger.stderr.getvalue(), '')
--- /dev/null
+# test_pylint.py - Run pylint in errors-only mode.
+#
+# Copyright (C) 2010, Stefano Rivera <stefanor@ubuntu.com>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+import re
+import subprocess
+
+import setup
+from devscripts.test import unittest
+
+WHITELIST = [re.compile(': %s$' % x) for x in (
+ # Wildcard import:
+ r"No name '\w+Error' in module 'launchpadlib\.errors'",
+ # https://www.logilab.org/ticket/51250:
+ r"Module 'hashlib' has no '(md5|sha(1|224|256|384|512))' member",
+ # mox:
+ r"Instance of '.+' has no '(WithSideEffects|MultipleTimes|AndReturn)' "
+ r"member",
+)]
+
+class PylintTestCase(unittest.TestCase):
+ def test_pylint(self):
+ "Test: Run pylint on Python source code"
+ files = ['devscripts']
+ for script in setup.scripts:
+ f = open(script, 'r', encoding='utf-8')
+ if 'python' in f.readline():
+ files.append(script)
+ f.close()
+ cmd = ['pylint', '--rcfile=devscripts/test/pylint.conf', '-E',
+ '--include-ids=y', '--'] + files
+ process = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE, close_fds=True)
+
+ out, err = process.communicate()
+ if err != '':
+ raise unittest.SkipTest('pylint crashed :/')
+
+ filtered_out = []
+ detected_in = ''
+ # pylint: disable=E1103
+ for line in out.splitlines():
+ # pylint: enable=E1103
+ if line.startswith('************* '):
+ detected_in = line
+ continue
+
+ for reg_exp in WHITELIST:
+ if reg_exp.search(line):
+ break
+ else:
+ filtered_out.append(detected_in)
+ filtered_out.append(line)
+
+ self.assertEqual(filtered_out, [],
+ "pylint found errors.\n"
+ "Filtered Output:\n" + '\n'.join(filtered_out))
--- /dev/null
+#!/usr/bin/perl -w
+# vim:sw=4:sta:
+
+# dget - Download Debian source and binary packages
+# Copyright (C) 2005-2013 Christoph Berg <myon@debian.org>
+# Modifications Copyright (C) 2005-06 Julian Gilbey <jdg@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+# 2005-10-04 cb: initial release
+# 2005-12-11 cb: -x option, update documentation
+# 2005-12-31 cb: -b, -q options, use getopt
+# 2006-01-10 cb: support new binnmu version scheme
+# 2006-11-12 cb: also look in other places in the local filesystem (e.g. pbuilder result dir)
+# Later modifications: see debian/changelog
+
+use strict;
+use Cwd qw(abs_path);
+use IO::Dir;
+use IO::File;
+use Digest::MD5;
+BEGIN { push @INC, '/usr/share/devscripts'; }
+use Devscripts::Compression;
+use Getopt::Long qw(:config gnu_getopt);
+use File::Basename;
+
+# global variables
+
+my $progname = basename($0,'.pl'); # the '.pl' is for when we're debugging
+my $found_dsc;
+my $wget;
+my $opt;
+my $backup_dir = "backup";
+my @dget_path = ("/var/cache/apt/archives");
+my $modified_conf_msg;
+
+my $compression_re = compression_get_file_extension_regex();
+
+# use curl if installed, wget otherwise
+if (system("command -v curl >/dev/null 2>&1") == 0) {
+ $wget = "curl";
+} elsif (system("command -v wget >/dev/null 2>&1") == 0) {
+ $wget = "wget";
+} else {
+ die "$progname: can't find either curl or wget; you need at least one of these\ninstalled to run me!\n";
+}
+
+# functions
+
+sub usage {
+ print <<"EOT";
+Usage: $progname [options] URL ...
+ $progname [options] [--all] package[=version] ...
+
+Downloads Debian packages (source and binary) from the specified URLs (first form),
+or using the mirror configured in /etc/apt/sources.list(.d) (second form).
+It is capable of downloading several packages at once.
+
+ -a, --all Package is a source package; download all binary packages
+ -b, --backup Move files that would be overwritten to ./backup
+ -q, --quiet Suppress wget/curl output
+ -d, --download-only
+ Do not extract downloaded source
+ -x, --extract Unpack downloaded source (default)
+ -u, --allow-unauthenticated
+ Do no attempt to verify source package signature
+ --build Build package with dpkg-buildpackage after download
+ --path DIR Check these directories in addition to the apt archive;
+ if DIR='' then clear current list (may be used multiple
+ times)
+ --insecure Do not check SSL certificates when downloading
+ --no-cache Disable server-side HTTP cache
+ --no-conf Don\'t read devscripts config files;
+ must be the first option given
+ -h, --help This message
+ -V, --version Version information
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOT
+}
+
+sub version {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2005-08 by Christoph Berg <myon\@debian.org>.
+Modifications copyright 2005-06 by Julian Gilbey <jdg\@debian.org>.
+All rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+}
+
+
+sub wget {
+ my ($file, $url) = @_;
+
+ # schemes not supported by all backends
+ if ($url =~ m!^(file|copy):(.+)!) {
+ my $path = abs_path($2);
+ unless ($path) {
+ warn "$progname: unable to resolve full path for $2: $!\n";
+ return 1;
+ }
+ if ($1 eq "copy" or not link($path, $file)) {
+ system 'cp', '-aL', $path, $file;
+ return $? >> 8;
+ }
+ return;
+ }
+
+ my @cmd = ($wget);
+ # curl does not follow document moved headers, and does not exit
+ # with a non-zero error code by default if a document is not found
+ push @cmd, "-f", "-L" if $wget eq "curl";
+ push @cmd, ($wget eq "wget" ? "-nv" : ("-s", "-S")) if $opt->{'quiet'};
+ push @cmd, ($wget eq "wget" ? "--no-check-certificate" : "--insecure") if $opt->{'insecure'};
+ push @cmd, ($wget eq "wget" ? "--no-cache" : ("--header", "Pragma: no-cache")) if $opt->{'no-cache'};
+ push @cmd, ($wget eq "wget" ? "-O" : "-o");
+ system @cmd, $file, $url;
+ return $? >> 8;
+}
+
+sub backup_or_unlink {
+ my $file = shift;
+ return unless -e $file;
+ if ($opt->{'backup'}) {
+ unless (-d $backup_dir) {
+ mkdir $backup_dir or die "mkdir $backup_dir: $!";
+ }
+ rename $file, "$backup_dir/$file" or die "rename $file $backup_dir/$file: $!";
+ } else {
+ unlink $file or die "unlink $file: $!";
+ }
+}
+
+# some files both are in .dsc and .changes, download only once
+my %seen;
+sub get_file {
+ my ($dir, $file, $md5sum) = @_;
+ return 1 if $seen{$file};
+
+ if ($md5sum eq "unlink") {
+ backup_or_unlink($file);
+ }
+
+ # check the existing file's md5sum
+ if (-e $file) {
+ my $md5 = Digest::MD5->new;
+ my $fh5 = new IO::File($file) or die "$file: $!";
+ my $md5sum_new = Digest::MD5->new->addfile($fh5)->hexdigest();
+ close $fh5;
+ if (not $md5sum or ($md5sum_new eq $md5sum)) {
+ print "$progname: using existing $file\n" unless $opt->{'quiet'};
+ } else {
+ print "$progname: removing $file (md5sum does not match)\n" unless $opt->{'quiet'};
+ backup_or_unlink($file);
+ }
+ }
+
+ # look for the file in other local directories
+ unless (-e $file) {
+ foreach my $path (@dget_path) {
+ next unless -e "$path/$file";
+
+ my $fh5 = new IO::File("$path/$file") or next;
+ my $md5 = Digest::MD5->new;
+ my $md5sum_new = Digest::MD5->new->addfile($fh5)->hexdigest();
+ close $fh5;
+
+ if ($md5sum_new eq $md5sum) {
+ if (link "$path/$file", $file) {
+ print "$progname: using $path/$file (hardlink)\n" unless $opt->{'quiet'};
+ } else {
+ print "$progname: using $path/$file (copy)\n" unless $opt->{'quiet'};
+ system 'cp', '-aL', "$path/$file", $file;
+ }
+ last;
+ }
+ }
+ }
+
+ # finally get it from the web
+ unless (-e $file) {
+ print "$progname: retrieving $dir/$file\n" unless $opt->{'quiet'};
+ if (wget($file, "$dir/$file")) {
+ warn "$progname: $wget $file $dir/$file failed\n";
+ unlink $file;
+ }
+ }
+
+ # try apt-get if it is still not there
+ my $ext = $compression_re;
+ if (not -e $file and $file =~ m!^([a-z0-9][a-z0-9.+-]+)_[^/]+\.(?:diff|tar)\.$ext$!) {
+ my @cmd = ('apt-get', 'source', '--print-uris', $1);
+ my $cmd = join ' ', @cmd;
+ open(my $apt, '-|', @cmd) or die "$cmd: $!";
+ while(<$apt>) {
+ if (/'(\S+)'\s+\S+\s+\d+\s+([\da-f]+)/i and $2 eq $md5sum) {
+ if (wget($file, $1)) {
+ warn "$progname: $wget $file $1 failed\n";
+ unlink $file;
+ }
+ }
+ }
+ close $apt;
+ }
+
+ # still not there, return
+ unless (-e $file) {
+ return 0;
+ }
+
+ $seen{$file} = 1;
+
+ if ($file =~ /\.(?:changes|dsc)$/) {
+ parse_file($dir, $file);
+ }
+ if ($file =~ /\.dsc$/) {
+ $found_dsc = $file;
+ }
+
+ return 1;
+}
+
+sub parse_file {
+ my ($dir, $file) = @_;
+
+ my $fh = new IO::File($file);
+ open $fh, $file or die "$file: $!";
+ while (<$fh>) {
+ if (/^ ([0-9a-f]{32}) (?:\S+ )*(\S+)$/) {
+ my ($_sum, $_file) = ($1, $2);
+ $_file !~ m,[/\x00],
+ or die "File name contains invalid characters: $_file";
+ get_file($dir, $_file, $_sum) or return;
+ }
+ }
+ close $fh;
+}
+
+sub quote_version {
+ my $version = shift;
+ $version = quotemeta($version);
+ $version =~ s/^([^:]+:)/(?:$1)?/; # Epochs are not part of the filename
+ $version =~ s/-([^.-]+)$/-$1(?:\\+b\\d+|\.0\.\\d+)?/; # BinNMU: -x -> -x.0.1 -x+by
+ $version =~ s/-([^.-]+\.[^.-]+)$/-$1(?:\\+b\\d+|\.\\d+)?/; # -x.y -> -x.y.1 -x.y+bz
+ return $version;
+}
+
+# we reinvent "apt-get -d install" here, without requiring root
+# (and we do not download dependencies)
+sub apt_get {
+ my ($package, $version) = @_;
+
+ my $qpackage = quotemeta($package);
+ my $qversion = quote_version($version) if $version;
+ my @hosts;
+
+ my $apt = new IO::File("LC_ALL=C apt-cache policy $package |") or die "$!";
+ OUTER: while (<$apt>) {
+ if (not $version and /^ Candidate: (.+)/) {
+ $version = $1;
+ $qversion = quote_version($version);
+ }
+ if ($qversion and /^ [ *]{3} ($qversion) 0/) {
+ while (<$apt>) {
+ last OUTER unless /^ *(?:\d+) (\S+)/;
+ (my $host = $1) =~ s@/$@@;
+ next if $host eq '/var/lib/dpkg/status';
+ push @hosts, $host;
+ }
+ }
+ }
+ close $apt;
+ unless ($version) {
+ die "$progname: $package has no installation candidate\n";
+ }
+ unless (@hosts) {
+ die "$progname: no hostnames in apt-cache policy $package for version $version found\n";
+ }
+
+ $apt = new IO::File("LC_ALL=C apt-cache show $package=$version |")
+ or die "$!";
+ my ($v, $p, $filename, $md5sum);
+ while (<$apt>) {
+ if (/^Package: $qpackage$/) {
+ $p = $package;
+ }
+ if (/^Version: $qversion$/) {
+ $v = $version;
+ }
+ if (/^Filename: (.*)/) {
+ $filename = $1;
+ }
+ if (/^MD5sum: (.*)/) {
+ $md5sum = $1;
+ }
+ if (/^Description:/) { # we assume this is the last field
+ if ($p and $v and $filename) {
+ last;
+ }
+ undef $p;
+ undef $v;
+ undef $filename;
+ undef $md5sum;
+ }
+ }
+ close $apt;
+
+ unless ($filename) {
+ die "$progname: no filename for $package ($version) found\n";
+ }
+
+ # find deb lines matching the hosts in the policy output
+ my %repositories;
+ # the regexp within the map below can be removed and replaced with only the quotemeta statement once bug #154868 is fixed
+ my $host_re = '(?:' . (join '|', map { my $host = quotemeta; $host =~ s@^(\w+\\:\\/\\/[^:/]+)\\/@$1(?::[0-9]+)?\\/@; $host; } @hosts) . ')';
+ if (-f "/etc/apt/sources.list") {
+ $apt = new IO::File("/etc/apt/sources.list") or die "/etc/apt/sources.list: $!";
+ while (<$apt>) {
+ if (/^\s*deb\s*($host_re\b)/) {
+ $repositories{$1} = 1;
+ }
+ }
+ close $apt;
+ }
+ my %dir;
+ tie %dir, "IO::Dir", "/etc/apt/sources.list.d";
+ foreach (keys %dir) {
+ next unless /\.list$/;
+ $_ = "/etc/apt/sources.list.d/$_";
+ $apt = new IO::File("$_") or die "$_: $!";
+ while (<$apt>) {
+ if (/^\s*deb\s*($host_re\b)/) {
+ $repositories{$1} = 1;
+ }
+ }
+ close $apt;
+ }
+ unless (%repositories) {
+ die "no repository found in /etc/apt/sources.list or sources.list.d";
+ }
+
+ # try each repository in turn
+ foreach my $repository (keys %repositories) {
+ my ($dir, $file) = ($repository, $filename);
+ if ($filename =~ /(.*)\/([^\/]*)$/) {
+ ($dir, $file) = ("$repository/$1", $2);
+ }
+
+ get_file($dir, $file, $md5sum) and return;
+ }
+ exit 1;
+}
+
+# main program
+
+# Now start by reading configuration files and then command line
+# The next stuff is boilerplate
+
+my ($dget_path, $dget_unpack, $dget_verify);
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'DGET_PATH' => '',
+ 'DGET_UNPACK' => 'yes',
+ 'DGET_VERIFY' => 'yes',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= "$var='$config_vars{$var}';\n";
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $dget_path = $config_vars{'DGET_PATH'};
+ $dget_unpack = $config_vars{'DGET_UNPACK'} =~ /^y/i;
+ $dget_verify = $config_vars{'DGET_VERIFY'} =~ /^y/i;
+}
+
+# handle options
+Getopt::Long::Configure('bundling');
+GetOptions(
+ "a|all" => \$opt->{'all'},
+ "b|backup" => \$opt->{'backup'},
+ "q|quiet" => \$opt->{'quiet'},
+ "build" => \$opt->{'build'},
+ "d|download-only"
+ => sub { $dget_unpack = 0 },
+ "x|extract" => sub { $dget_unpack = 1 },
+ "u|allow-unauthenticated"
+ => sub { $dget_verify = 0 },
+ "insecure" => \$opt->{'insecure'},
+ "no-cache" => \$opt->{'no-cache'},
+ "noconf|no-conf" => \$opt->{'no-conf'},
+ "path=s" => sub {
+ if ($_[1] eq '') { $dget_path=''; } else { $dget_path .= ":$_[1]"; } },
+ "h|help" => \$opt->{'help'},
+ "V|version" => \$opt->{'version'},
+)
+ or die "$progname: unrecognised option. Run $progname --help for more details.\n";
+
+if ($opt->{'help'}) { usage(); exit 0; }
+if ($opt->{'version'}) { version(); exit 0; }
+if ($opt->{'no-conf'}) {
+ die "$progname: --no-conf is only acceptable as the first command-line option!\n";
+}
+
+if ($dget_path) {
+ foreach my $p (split /:/, $dget_path) {
+ push @dget_path, $p if -d $p;
+ }
+}
+
+if (! @ARGV) {
+ die "Usage: $progname [options] URL|package[=version]\nRun $progname --help for more details.\n";
+}
+
+# handle arguments
+for my $arg (@ARGV) {
+ $found_dsc = "";
+
+ # case 1: URL
+ if ($arg =~ /^((?:copy|file|ftp|http|rsh|rsync|ssh|www).*)\/([^\/]+\.\w+)$/) {
+ get_file($1, $2, "unlink") or exit 1;
+ if ($found_dsc) {
+ if ($dget_verify) { # We are duplicating work here a bit as
+ # dpkg-source -x will also verify signatures. Still, we
+ # also want to barf with -d, and on unsigned packages.
+ system 'dscverify', $found_dsc;
+ exit $? >> 8 if $? >> 8 != 0;
+ }
+ my @cmd = qw(dpkg-source -x);
+ push @cmd, '--no-check' unless $dget_verify;
+ if ($opt->{'build'}) {
+ my @output = `LC_ALL=C @cmd $found_dsc`;
+ print @output unless $opt->{'quiet'};
+ foreach (@output) {
+ if ( /^dpkg-source: (?:info: )?extracting .* in (.*)/ ) {
+ chdir $1;
+ system 'dpkg-buildpackage', '-b', '-uc';
+ last;
+ }
+ }
+ } elsif ($dget_unpack) {
+ system @cmd, $found_dsc;
+ }
+ }
+
+ # case 2a: --all srcpackage[=version]
+ } elsif ($opt->{'all'} and $arg =~ /^([a-z0-9.+-]{2,})(?:=([a-zA-Z0-9.:~+-]+))?$/) {
+ my ($source, $version) = ($1, $2);
+ my $cmd = "apt-cache showsrc $source";
+ #$cmd .= "=$version" if ($version); # unfortunately =version doesn't work here
+ open A, '-|', $cmd;
+ while (<A>) {
+ next unless /^Binary: (.*)/;
+ my @packages = split (/, /, $1);
+ foreach my $package (@packages) {
+ eval { apt_get ($package, $version) } or print "$@";
+ }
+ last;
+ }
+ close A;
+
+ # case 2b: package[=version]
+ } elsif ($arg =~ /^([a-z0-9.+-]{2,})(?:=([a-zA-Z0-9.:~+-]+))?$/) {
+ apt_get($1, $2);
+
+ } else {
+ usage();
+ }
+}
+
+=head1 NAME
+
+dget -- Download Debian source and binary packages
+
+=head1 SYNOPSIS
+
+=over
+
+=item B<dget> [I<options>] I<URL> ...
+
+=item B<dget> [I<options>] [B<--all>] I<package>[B<=>I<version>] ...
+
+=back
+
+=head1 DESCRIPTION
+
+B<dget> downloads Debian packages. In the first form, B<dget> fetches
+the requested URLs. If this is a .dsc or .changes file, then B<dget>
+acts as a source-package aware form of B<wget>: it also fetches any
+files referenced in the .dsc/.changes file. The downloaded source is
+then checked with B<dscverify> and, if successful, unpacked by
+B<dpkg-source>.
+
+In the second form, B<dget> downloads a I<binary> package (i.e., a
+I<.deb> file) from the Debian mirror configured in
+/etc/apt/sources.list(.d). Unlike B<apt-get install -d>, it does not
+require root privileges, writes to the current directory, and does not
+download dependencies. If a version number is specified, this version
+of the package is requested. With B<--all>, the list of all binaries for the
+source package I<package> is extracted from the output of
+C<apt-cache showsrc package>.
+
+In both cases dget is capable of getting several packages and/or URLs
+at once.
+
+(Note that I<.udeb> packages used by debian-installer are located in separate
+packages files from I<.deb> packages. In order to use I<.udebs> with B<dget>,
+you will need to have configured B<apt> to use a packages file for
+I<component>/I<debian-installer>).
+
+Before downloading files listed in .dsc and .changes files, and before
+downloading binary packages, B<dget> checks to see whether any of
+these files already exist. If they do, then their md5sums are
+compared to avoid downloading them again unnecessarily. B<dget> also
+looks for matching files in I</var/cache/apt/archives> and directories
+given by the B<--path> option or specified in the configuration files
+(see below). Finally, if downloading (.orig).tar.gz or .diff.gz files
+fails, dget consults B<apt-get source --print-uris>. Download backends
+used are B<curl> and B<wget>, looked for in that order.
+
+B<dget> was written to make it easier to retrieve source packages from
+the web for sponsor uploads. For checking the package with
+B<debdiff>, the last binary version is available via B<dget>
+I<package>, the last source version via B<apt-get source> I<package>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-a>, B<--all>
+
+Interpret I<package> as a source package name, and download all binaries as
+found in the output of "apt-cache showsrc I<package>".
+
+=item B<-b>, B<--backup>
+
+Move files that would be overwritten to I<./backup>.
+
+=item B<-q>, B<--quiet>
+
+Suppress B<wget>/B<curl> non-error output.
+
+=item B<-d>, B<--download-only>
+
+Do not run B<dpkg-source -x> on the downloaded source package. This can
+only be used with the first method of calling B<dget>.
+
+=item B<-x>, B<--extract>
+
+Run B<dpkg-source -x> on the downloaded source package to unpack it.
+This option is the default and can only be used with the first method of
+calling B<dget>.
+
+=item B<-u>, B<--allow-unauthenticated>
+
+Do not attempt to verify the integrity of downloaded source packages
+using B<dscverify>.
+
+=item B<--build>
+
+Run B<dpkg-buildpackage -b -uc> on the downloaded source package.
+
+=item B<--path> I<DIR>[B<:>I<DIR> ...]
+
+In addition to I</var/cache/apt/archives>, B<dget> uses the
+colon-separated list given as argument to B<--path> to find files with
+a matching md5sum. For example: "--path
+/srv/pbuilder/result:/home/cb/UploadQueue". If DIR is empty (i.e.,
+"--path ''" is specified), then any previously listed directories
+or directories specified in the configuration files will be ignored.
+This option may be specified multiple times, and all of the
+directories listed will be searched; hence, the above example could
+have been written as: "--path /srv/pbuilder/result --path
+/home/cb/UploadQueue".
+
+=item B<--insecure>
+
+Allow SSL connections to untrusted hosts.
+
+=item B<--no-cache>
+
+Bypass server-side HTTP caches by sending a B<Pragma: no-cache> header.
+
+=item B<-h>, B<--help>
+
+Show a help message.
+
+=item B<-V>, B<--version>
+
+Show version information.
+
+=back
+
+=head1 CONFIGURATION VARIABLES
+
+The two configuration files F</etc/devscripts.conf> and
+F<~/.devscripts> are sourced by a shell in that order to set
+configuration variables. Command line options can be used to override
+configuration file settings. Environment variable settings are
+ignored for this purpose. The currently recognised variable is:
+
+=over 4
+
+=item B<DGET_PATH>
+
+This can be set to a colon-separated list of directories in which to
+search for files in addition to the default
+I</var/cache/apt/archives>. It has the same effect as the B<--path>
+command line option. It is not set by default.
+
+=item B<DGET_UNPACK>
+
+Set to 'no' to disable extracting downloaded source packages. Default
+is 'yes'.
+
+=item B<DGET_VERIFY>
+
+Set to 'no' to disable checking signatures of downloaded source
+packages. Default is 'yes'.
+
+=back
+
+=head1 EXAMPLES
+
+Download all I<.deb> files for the previous version of a package and run B<debdiff>
+on them:
+
+ dget --all mypackage=1.2-1
+ debdiff --from *_1.2-1_*.deb --to *_1.2-2_*.deb
+
+=head1 BUGS AND COMPATIBILITY
+
+B<dget> I<package> should be implemented in B<apt-get install -d>.
+
+Before devscripts version 2.10.17, the default was not to extract the
+downloaded source. Set DGET_UNPACK=no to revert to the old behaviour.
+
+=head1 AUTHOR
+
+This program is Copyright (C) 2005-2013 by Christoph Berg <myon@debian.org>.
+Modifications are Copyright (C) 2005-06 by Julian Gilbey <jdg@debian.org>.
+
+This program is licensed under the terms of the GPL, either version 2
+of the License, or (at your option) any later version.
+
+=head1 SEE ALSO
+
+B<apt-get>(1), B<curl>(1), B<debcheckout>(1), B<debdiff>(1), B<dpkg-source>(1),
+B<wget>(1)
--- /dev/null
+.TH "diff2patches" "1" "" "Raphael Geissert <atomo64@gmail.com>" ""
+.SH "NAME"
+.LP
+diff2patches \- Extract non\-debian/ patches from .diff.gz files
+.SH "SYNTAX"
+.LP
+\fBdiff2patches \fIfilename\fP
+.br
+\fBdiff2patches \-\-help\fR|\fB\-\-version\fP
+.SH "DESCRIPTION"
+.LP
+Extracts patches from .diff.gz which apply to files outside the
+\*(lqdebian/\*(rq directory scope. A patch is created for each modified file.
+Each patch is named according to the path of the modified file, with \*(lq/\*(rq
+replaced by \*(lq___\*(rq, and an extension of \*(lq.patch\*(rq.
+.SH "OPTIONS"
+.LP
+.TP 4
+\fB\fIfilename\fP\fR
+Extract patches from \fB\fIfilename\fP\fR which apply outside the
+\*(lqdebian/\*(rq directory.
+.TP
+\fB\-\-help\fR
+Output help information and exit.
+.TP
+\fB\-\-version\fR
+Output version information and exit.
+.SH "FILES"
+.TP
+\fIdebian/control\fP
+Existence of this file is tested before any patch is extracted.
+.TP
+\fIdebian/\fP
+.TQ
+\fIdebian/patches/\fP
+Patches are extracted to one of these directories. \*(lqdebian/patches/\*(rq is
+preferred, if it exists. If \fIDEB_PATCHES\fP is present in the environment,
+it will override this behavior (see \*(lqENVIRONMENT VARIABLES\*(rq section
+below).
+.SH "ENVIRONMENT VARIABLES"
+.TP
+\fBDEB_PATCHES\fP
+When defined and points to an existing directory, patches are extracted in that directory
+and not under \*(lqdebian/\*(rq nor \*(lqdebian/patches/\*(rq.
+.SH "SEE ALSO"
+.LP
+\fBcombinediff\fR(1)
+.SH "AUTHOR"
+.LP
+Raphael Geissert <atomo64@gmail.com>
--- /dev/null
+#!/bin/bash
+
+####################
+# Copyright (C) 2007, 2008 by Raphael Geissert <atomo64@gmail.com>
+#
+# This file is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this file If not, see <https://www.gnu.org/licenses/>.
+#
+# On Debian systems, the complete text of the GNU General
+# Public License 3 can be found in '/usr/share/common-licenses/GPL-3'.
+####################
+
+set -e
+
+PROGNAME=$(basename "$0")
+
+usage () {
+ echo \
+"Usage: $PROGNAME [options] FILE.diff.gz
+ Options:
+ --help Show this message
+ --version Show version and copyright information
+ debian/control must exist on the current path for this script to work
+ If debian/patches exists and is a directory, patches are extracted there,
+ otherwise they are extracted under debian/ (unless the environment variable
+ DEB_PATCHES is defined and points to a valid directory, in which case
+ patches are extracted there)."
+}
+
+version () {
+ echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2007, 2008 by Raphael Geissert, all rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 3 or later."
+}
+
+case "$1" in
+ --help) usage; exit 0 ;;
+ --version) version; exit 0 ;;
+esac
+
+if ! which lsdiff >/dev/null 2>&1; then
+ echo "lsdiff was not found in \$PATH, package patchutils probably not installed!"
+ exit 1
+fi
+
+diffgz="$1"
+
+if [ ! -f "$diffgz" ]; then
+ [ -z "$diffgz" ] && diffgz="an unspecified .diff.gz"
+ echo "Couldn't find $diffgz, aborting!"
+ exit 1
+fi
+
+if [ -x /usr/bin/dh_testdir ]; then
+ /usr/bin/dh_testdir || exit 1
+else
+ [ ! -f debian/control ] && echo "Couldn't find debian/control!" && exit 1
+fi
+
+if [ -z "$DEB_PATCHES" ] || [ ! -d "$DEB_PATCHES" ]; then
+ DEB_PATCHES=debian
+ [ -d debian/patches ] && DEB_PATCHES=debian/patches
+else
+ DEB_PATCHES="$(readlink -f "$DEB_PATCHES")"
+fi
+
+echo "Patches will be extracted under $DEB_PATCHES/"
+
+FILES=$(zcat "$diffgz" | lsdiff --strip 1 | egrep -v ^debian/) || \
+ echo "$(basename "$diffgz") doesn't contain any patch outside debian/"
+
+for file in $FILES; do
+ [ ! -z "$file" ] || continue
+ echo -n "Extracting $file..."
+ newFileName="$DEB_PATCHES/$(echo "$file" | sed 's#/#___#g').patch"
+ zcat "$diffgz" | filterdiff -i "$file" -p1 > "$newFileName"
+ echo "done"
+done
+
+exit
--- /dev/null
+#!/bin/sh
+
+set -e
+
+version="1.13.17"; # This line modified by Makefile
+
+progname="`basename \"$0\"`"
+usageversion () {
+ cat >&2 <<END
+Debian dpkg-buildpackage $version.
+Copyright (C) 1996 Ian Jackson.
+Copyright (C) 2000 Wichert Akkerman
+This is free software; see the GNU General Public Licence version 2
+or later for copying conditions. There is NO warranty.
+
+Usage: dpkg-buildpackage [options]
+Options: -r<gain-root-command>
+ -p<sign-command>
+ -d do not check build dependencies and conflicts
+ -D check build dependencies and conflicts
+ -k<keyid> the key to use for signing
+ -sgpg the sign-command is called like GPG
+ -spgp the sign-command is called like PGP
+ -us unsigned source
+ -uc unsigned changes
+ -a<arch> Debian architecture we build for (implies -d)
+ -b binary-only, do not build source } also passed to
+ -B binary-only, no arch-indep files } dpkg-genchanges
+ -S source only, no binary files }
+ -t<system> set GNU system type } passed to dpkg-architecture
+ -v<version> changes since version <version> }
+ -m<maint> maintainer for package is <maint> }
+ -e<maint> maintainer for release is <maint> } only passed
+ -C<descfile> changes are described in <descfile> } to dpkg-
+ -si (default) src includes orig for rev. 0 or 1 } genchanges
+ -sa uploaded src always includes orig }
+ -sd uploaded src is diff and .dsc only }
+ -nc do not clean source tree (implies -b)
+ -tc clean source tree when finished
+ -ap add pause before starting signature process
+ -h print this message
+ -W Turn certain errors into warnings. } passed to
+ -E When -W is turned on, -E turned it off. } dpkg-source
+ -i[<regex>] ignore diffs of files matching regex } only passed
+ -I<filename> filter out files when building tarballs } to dpkg-source
+END
+}
+
+rootcommand=''
+signcommand=""
+if (( [ -n "$GNUPGHOME" ] && [ -e "$GNUPGHOME" ] ) || [ -e "$HOME/.gnupg" ] ) && \
+ command -v gpg > /dev/null 2>&1; then
+ signcommand=gpg
+elif command -v pgp > /dev/null 2>&1 ; then
+ signcommand=pgp
+fi
+
+signsource='withecho signfile'
+signchanges='withecho signfile'
+cleansource=false
+checkbuilddep=true
+checkbuilddep_args=''
+binarytarget=binary
+sourcestyle=''
+version=''
+since=''
+maint=''
+desc=''
+noclean=false
+usepause=false
+warnable_error=0
+passopts=''
+
+while [ $# != 0 ]
+do
+ value="`echo x\"$1\" | sed -e 's/^x-.//'`"
+ case "$1" in
+ -h) usageversion; exit 0 ;;
+ -r*) rootcommand="$value" ;;
+ -p*) signcommand="$value" ;;
+ -k*) signkey="$value" ;;
+ -d) checkbuilddep=false ;;
+ -D) checkbuilddep=true ;;
+ -sgpg) forcesigninterface=gpg ;;
+ -spgp) forcesigninterface=pgp ;;
+ -us) signsource=: ;;
+ -uc) signchanges=: ;;
+ -ap) usepause="true";;
+ -a*) targetarch="$value"; checkbuilddep=false ;;
+ -si) sourcestyle=-si ;;
+ -sa) sourcestyle=-sa ;;
+ -sd) sourcestyle=-sd ;;
+ -i*) diffignore=$1;;
+ -I*) tarignore="$tarignore $1";;
+ -tc) cleansource=true ;;
+ -t*) targetgnusystem="$value" ;; # Order DOES matter!
+ -nc) noclean=true; if [ -z "$binaryonly" ]; then binaryonly=-b; fi ;;
+ -b) binaryonly=-b; [ "$sourceonly" ] && \
+ { echo >&2 "$progname: cannot combine $1 and -S" ; exit 2 ; } ;;
+ -B) binaryonly=-B; checkbuilddep_args=-B; binarytarget=binary-arch; [ "$sourceonly" ] && \
+ { echo >&2 "$progname: cannot combine $1 and -S" ; exit 2 ; } ;;
+ -S) sourceonly=-S; checkbuilddep=false; [ "$binaryonly" ] && \
+ { echo >&2 "$progname: cannot combine $binaryonly and $1" ; exit 2 ; } ;;
+ -v*) since="$value" ;;
+ -m*) maint="$value" ;;
+ -e*) changedby="$value" ;;
+ -C*) desc="$value" ;;
+ -W) warnable_error=1; passopts="$passopts -W";;
+ -E) warnable_error=0; passopts="$passopts -E";;
+ *) echo >&2 "$progname: unknown option or argument $1"
+ usageversion; exit 2 ;;
+ esac
+ shift
+done
+
+if [ -z "$signcommand" ] ; then
+ signsource=:
+ signchanges=:
+fi
+
+if test -n "$forcesigninterface" ; then
+ signinterface=$forcesigninterface
+if [ "$signinterface" != "gpg" ] && [ "$signinterface" != "pgp" ] ; then
+ echo >&2 "$progname: invalid sign interface specified"
+ exit 1
+fi
+else
+ signinterface=$signcommand
+fi
+
+
+mustsetvar () {
+ if [ "x$2" = x ]; then
+ echo >&2 "$progname: unable to determine $3" ; \
+ exit 1
+ else
+ echo "$progname: $3 $2" ; \
+ eval "$1=\"\$2\""
+ fi
+}
+
+curd="`pwd`"
+dirn="`basename \"$curd\"`"
+mustsetvar package "`dpkg-parsechangelog | sed -n 's/^Source: //p'`" "source package is"
+mustsetvar version "`dpkg-parsechangelog | sed -n 's/^Version: //p'`" "source version is"
+if [ -n "$changedby" ]; then maintainer="$changedby";
+elif [ -n "$maint" ]; then maintainer="$maint";
+else mustsetvar maintainer "`dpkg-parsechangelog | sed -n 's/^Maintainer: //p'`" "source changed by"; fi
+eval `dpkg-architecture -a${targetarch} -t${targetgnusystem} -s -f`
+
+if [ x$sourceonly = x ]; then
+ mustsetvar arch "`dpkg-architecture -a${targetarch} -t${targetgnusystem} -qDEB_HOST_ARCH`" "host architecture"
+else
+ arch=source
+fi
+sversion=`echo "$version" | perl -pe 's/^\d+://'`
+pv="${package}_${sversion}"
+pva="${package}_${sversion}_${arch}"
+
+signfile () {
+ if test "$signinterface" = "gpg" ; then
+ (cat "../$1" ; echo "") | \
+ $signcommand --local-user "${signkey:-$maintainer}" --clearsign --armor \
+ --textmode > "../$1.asc"
+ else
+ $signcommand -u "${signkey:-$maintainer}" +clearsig=on -fast <"../$1" \
+ >"../$1.asc"
+ fi
+ status=$?
+ if [ $status -eq 0 ]; then
+ mv -- "../$1.asc" "../$1"
+ else
+ /bin/rm -f "../$1.asc"
+ fi
+ echo
+ return $status
+}
+
+withecho () {
+ echo " $@" >&2
+ "$@"
+}
+
+if [ "$checkbuilddep" = "true" ]; then
+ if ! dpkg-checkbuilddeps $checkbuilddep_args; then
+ echo >&2 "$progname: Build dependencies/conflicts unsatisfied; aborting."
+ echo >&2 "$progname: (Use -d flag to override.)"
+ exit 3
+ fi
+fi
+
+set -- $binaryonly $sourceonly $sourcestyle
+if [ -n "$maint" ]; then set -- "$@" "-m$maint" ; fi
+if [ -n "$changedby" ]; then set -- "$@" "-e$changedby" ; fi
+if [ -n "$since" ]; then set -- "$@" "-v$since" ; fi
+if [ -n "$desc" ]; then set -- "$@" "-C$desc" ; fi
+
+if [ x$noclean != xtrue ]; then
+ withecho $rootcommand debian/rules clean
+fi
+if [ x$binaryonly = x ]; then
+ cd ..; withecho dpkg-source $passopts $diffignore $tarignore -b "$dirn"; cd "$dirn"
+fi
+if [ x$sourceonly = x ]; then
+ withecho debian/rules build
+ withecho $rootcommand debian/rules $binarytarget
+fi
+if [ "$usepause" = "true" ] && \
+ ( [ "$signchanges" != ":" ] || ( [ -z "$binaryonly" ] && [ "$signsource" != ":" ] ) ) ; then
+ echo Press the return key to start signing process
+ read dummy_stuff
+fi
+
+signerrors=
+if [ x$binaryonly = x ]; then
+ if ! $signsource "$pv.dsc"; then
+ signerrors="(WARNING: Failed to sign .dsc and .changes file)"
+ signchanges=:
+ fi
+fi
+chg=../"$pva.changes"
+withecho dpkg-genchanges "$@" >"$chg"
+
+fileomitted () {
+ set +e
+ test -z "`sed -n '/^Files:/,/^[^ ]/ s/'$1'$//p' <$chg`"
+ fir=$?
+ set -e
+ return $fir
+}
+
+
+if fileomitted '\.deb'; then
+ # source only upload
+ if fileomitted '\.diff\.gz'; then
+ srcmsg='source only upload: Debian-native package'
+ elif fileomitted '\.orig\.tar\.gz'; then
+ srcmsg='source only, diff-only upload (original source NOT included)'
+ else
+ srcmsg='source only upload (original source is included)'
+ fi
+else
+ srcmsg='full upload (original source is included)'
+ if fileomitted '\.dsc'; then
+ srcmsg='binary only upload (no source included)'
+ elif fileomitted '\.diff\.gz'; then
+ srcmsg='full upload; Debian-native package (full source is included)'
+ elif fileomitted '\.orig\.tar\.gz'; then
+ srcmsg='binary and diff upload (original source NOT included)'
+ else
+ srcmsg='full upload (original source is included)'
+ fi
+fi
+
+if ! $signchanges "$pva.changes"; then
+ signerrors="(WARNING: Failed to sign .changes file)"
+fi
+
+if $cleansource; then
+ withecho $rootcommand debian/rules clean
+fi
+
+echo "dpkg-buildpackage: $srcmsg"
+if [ -n "$signerrors" ]; then
+ echo >&2 $signerrors
+ exit 1
+fi
--- /dev/null
+.TH DPKG-DEPCHECK "1" "March 2002" "dpkg-depcheck" DEBIAN
+.SH NAME
+dpkg-depcheck \- determine packages used to execute a command
+.SH SYNOPSIS
+\fBdpkg-depcheck\fR [\fIoptions\fR] \fIcommand\fR
+.SH DESCRIPTION
+This program runs the specified command under \fBstrace\fR and then
+determines and outputs the packages used in the process. The list can
+be trimmed in various ways as described in the options below. A good
+example of this program would be the command \fBdpkg-depcheck \-b
+debian/rules build\fR, which would give a good first approximation to
+the Build-Depends line needed by a Debian package. Note, however,
+that this does \fInot\fR give any direct information on versions
+required or architecture-specific packages.
+.SH OPTIONS
+.TP
+.BR \-a ", " \-\-all
+Report all packages used to run \fIcommand\fR. This is the default
+behaviour. If used in conjunction with \fB\-b\fR, \fB\-d\fR or
+\fB\-m\fR, gives additional information on those packages skipped by
+these options.
+.TP
+.BR \-b ", " \-\-build-depends
+Do not report any build-essential or essential packages used, or any
+of their (direct or indirect) dependencies.
+.TP
+.BR \-d ", " \-\-ignore-dev-deps
+Do not show packages used which are direct dependencies of \fI\-dev\fR
+packages used. This implies \fB\-b\fR.
+.TP
+.BR \-m ", " \-\-min-deps
+Output a minimal set of packages needed, taking into account direct
+dependencies. Using \fB\-m\fR implies \fB\-d\fR and also \fB\-b\fR.
+.TP
+.BR \-C ", " \-\-C-locale
+Run \fIcommand\fR with the C locale.
+.TP
+.BR \-\-no-C-locale
+Don't change locale when running \fIcommand\fR.
+.TP
+.BR \-l ", " \-\-list-files
+Also report the list of files used in each package.
+.TP
+.BR \-\-no-list-files
+Do not report the files used in each package. Cancels a \fB\-l\fR
+option.
+.TP
+\fB\-o\fR, \fB\-\-output=\fIFILE\fR
+Output the package diagnostics to \fIFILE\fR instead of stdout.
+.TP
+\fB\-O\fR, \fB\-\-strace-output=\fIFILE\fR
+Write the \fBstrace\fR output to \fIFILE\fR when tracing \fIcommand\fR
+instead of using a temporary file.
+.TP
+\fB\-I\fR, \fB\-\-strace-input=\fIFILE\fR
+Get \fBstrace\fR output from \fIFILE\fR instead of tracing
+\fIcommand\fR; \fBstrace\fR must have be run with the \fB\-f \-q\fR
+options for this to work.
+.TP
+\fB\-f\fR, \fB\-\-features=\fILIST\fR
+Enable or disabled features given in the comma-separated \fILIST\fR as
+follows. A feature is enabled with \fI+feature\fR or just
+\fIfeature\fR and disabled with \fI\-feature\fR. The currently
+recognised features are:
+.PD 0
+.RS
+.TP
+.B warn\-local
+Warn if files in \fI/usr/local\fR or \fI/var/local\fR are used.
+Enabled by default.
+.TP
+.B discard-check-version
+Discards \fIexecve\fR when only a \fI\-\-version\fR argument is given
+to the program; this works around some configure scripts that check
+for binaries they don't actually use. Enabled by default.
+.TP
+.B trace-local
+Also try to identify files which are accessed in \fI/usr/local\fR and
+\fI/var/local\fR. Not usually very useful, as Debian does not place
+files in these directories. Disabled by default.
+.TP
+.B catch-alternatives
+Warn about access to files controlled by the Debian \fIalternatives\fR
+mechanism. Enabled by default.
+.TP
+.B discard-sgml-catalogs
+Discards access to SGML catalogs; some SGML tools read all the registered
+catalogs at startup. Files matching the regexp /usr/share/sgml/.*\\.cat are
+recognised as catalogs. Enabled by default.
+.PD
+.RE
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+.BR \-h ", " \-\-help
+Display usage information and exit.
+.TP
+.BR \-v ", " \-\-version
+Display version and copyright information and exit.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variable is:
+.TP
+.B DPKG_DEPCHECK_OPTIONS
+These are options which are parsed before the command-line options.
+For example,
+.IP
+DPKG_DEPCHECK_OPTIONS="\-b \-f-catch-alternatives"
+.IP
+which passes these options to \fBdpkg-depcheck\fR before any
+command-line options are processed. You are advised not to try tricky
+quoting, because of the vagaries of shell quoting!
+.SH "SEE ALSO"
+.BR dpkg (1),
+.BR strace (1),
+.BR devscripts.conf (5),
+.BR update-alternatives (8)
+.SH "COPYING"
+Copyright 2001 Bill Allombert <ballombe@debian.org>.
+Modifications copyright 2002,2003 Julian Gilbey <jdg@debian.org>.
+\fBdpkg-depcheck\fR is free software, covered by the GNU General
+Public License, version 2 or (at your option) any later version,
+and you are welcome to change it and/or distribute copies of it under
+certain conditions. There is absolutely no warranty for
+\fBdpkg-depcheck\fR.
--- /dev/null
+#!/usr/bin/perl -w
+
+# Copyright Bill Allombert <ballombe@debian.org> 2001.
+# Modifications copyright 2002-2005 Julian Gilbey <jdg@debian.org>
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use strict;
+use 5.006_000; # our() commands
+use Cwd;
+use File::Basename;
+use Getopt::Long;
+
+BEGIN { push @INC, '/usr/share/devscripts'; }
+use Devscripts::Set;
+use Devscripts::Packages;
+use Devscripts::PackageDeps;
+
+# Function prototypes
+sub process_features ($$);
+sub getusedfiles (@);
+sub filterfiles (@);
+
+# Global options
+our %opts;
+
+# libvfork is taken from dpkg-genbuilddeps, written by
+# Ben Collins <bcollins@debian.org>
+our $vforklib = "/usr/lib/devscripts/libvfork.so.0";
+
+# A list of files that do not belong to a Debian package but are known
+# to never create a dependency
+our @known_files = ($vforklib, "/etc/ld.so.cache", "/etc/dpkg/shlibs.default",
+ "/etc/dpkg/dpkg.cfg", "/etc/devscripts.conf");
+
+# This will be given information about features later on
+our (%feature, %default_feature);
+
+my $progname=basename($0);
+my $modified_conf_msg;
+
+sub usage ()
+{
+ my @ed=("disabled","enabled");
+ print <<"EOF";
+Usage:
+ $progname [options] <command>
+Run <command> and then output packages used to do this.
+Options:
+ Which packages to report:
+ -a, --all Report all packages used to run <command>
+ -b, --build-depends Do not report build-essential or essential packages
+ used or any of their (direct or indirect)
+ dependencies
+ -d, --ignore-dev-deps Do not show packages used which are direct
+ dependencies of -dev packages used
+ -m, --min-deps Output a minimal set of packages needed, taking
+ into account direct dependencies
+ -m implies -d and both imply -b; -a gives additional dependency information
+ if used in conjunction with -b, -d or -m
+
+ -C, --C-locale Run command with C locale
+ --no-C-locale Don\'t change locale
+ -l, --list-files Report list of files used in each package
+ --no-list-files Do not report list of files used in each package
+ -o, --output=FILE Output diagnostic to FILE instead of stdout
+ -O, --strace-output=FILE Write strace output to FILE when tracing <command>
+ instead of a temporary file
+ -I, --strace-input=FILE Get strace output from FILE instead of tracing
+ <command>; strace must be run with -f -q for this
+ to work
+
+ -f, --features=LIST Enable or disabled features given in
+ comma-separated LIST as follows:
+ +feature or feature enable feature
+ -feature disable feature
+
+ Known features and default setting:
+ warn-local ($ed[$default_feature{'warn-local'}]) warn if files in /usr/local are used
+ discard-check-version ($ed[$default_feature{'discard-check-version'}]) discard execve with only
+ --version argument; this works around some
+ configure scripts that check for binaries they
+ don\'t use
+ trace-local ($ed[$default_feature{'trace-local'}]) also try to identify file
+ accesses in /usr/local
+ catch-alternatives ($ed[$default_feature{'catch-alternatives'}]) catch access to alternatives
+ discard-sgml-catalogs ($ed[$default_feature{'discard-sgml-catalogs'}]) discard access to SGML
+ catalogs; some SGML tools read all the
+ registered catalogs at startup.
+
+ --no-conf, --noconf Don\'t read devscripts config files;
+ must be the first option given
+ -h, --help Display this help and exit
+ -v, --version Output version information and exit
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOF
+}
+
+
+sub version ()
+{
+ print <<'EOF';
+This is $progname, from the Debian devscripts package, version ###VERSION###
+Copyright Bill Allombert <ballombe@debian.org> 2001.
+Modifications copyright 2002, 2003 Julian Gilbey <jdg@debian.org>
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+}
+
+
+# Main program
+
+# Features:
+# This are heuristics used to speed up the process.
+# Since thay may be considered as "kludges" or worse "bugs"
+# by some, they can be deactivated
+# 0 disabled by default, 1 enabled by default.
+%feature=(
+ "warn-local"=>1, "discard-check-version"=>1,
+ "trace-local"=>0, "catch-alternatives"=>1,
+ "discard-sgml-catalogs"=>1,
+ );
+%default_feature = %feature;
+
+# First process configuration file options, then check for command-line
+# options. This is pretty much boilerplate.
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'DPKG_DEPCHECK_OPTIONS' => '',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ if ($config_vars{'DPKG_DEPCHECK_OPTIONS'} ne '') {
+ unshift @ARGV, split(' ', $config_vars{'DPKG_DEPCHECK_OPTIONS'});
+ }
+}
+
+# Default option:
+$opts{"pkgs"} = 'all';
+$opts{"allpkgs"} = 0;
+
+Getopt::Long::Configure('bundling','require_order');
+GetOptions("h|help" => sub { usage(); exit; },
+ "v|version" => sub { version(); exit; },
+ "a|all" => sub { $opts{"allpkgs"}=1; },
+ "b|build-depends" => sub { $opts{"pkgs"}='build'; },
+ "d|ignore-dev-deps" => sub { $opts{"pkgs"}='dev'; },
+ "m|min-deps" => sub { $opts{"pkgs"}='min'; },
+ "C|C-locale" => \$opts{"C"},
+ "no-C-locale|noC-locale" => sub { $opts{"C"}=0; },
+ "l|list-files" => \$opts{"l"},
+ "no-list-files|nolist-files" => sub { $opts{"l"}=0; },
+ "o|output=s" => \$opts{"o"},
+ "O|strace-output=s" => \$opts{"strace-output"},
+ "I|strace-input=s" => \$opts{"strace-input"},
+ "f|features=s" => \&process_features,
+ "no-conf" => \$opts{"noconf"},
+ "noconf" => \$opts{"noconf"},
+ ) or do { usage; exit 1; };
+
+if ($opts{"noconf"}) {
+ die "$progname: --no-conf is only acceptable as the first command-line option!\n";
+}
+
+if ($opts{"pkgs"} eq 'all') {
+ $opts{"allpkgs"} = 0;
+} else {
+ # We don't initialise the packages database before doing this check,
+ # as that takes quite some time
+ unless (system('dpkg -L build-essential >/dev/null 2>&1') >> 8 == 0) {
+ die "You must have the build-essential package installed or use the --all option\n";
+ }
+}
+
+
+@ARGV > 0 or $opts{"strace-input"} or
+ die "You need to specify a command! Run $progname --help for more info\n";
+
+# Run the command and trace it to see what's going on
+my @usedfiles = getusedfiles(@ARGV);
+
+if ($opts{"o"}) {
+ $opts{"o"} =~ s%^(\s)%./$1%;
+ open STDOUT,"> $opts{'o'}" or
+ warn "Cannot open $opts{'o'} for writing: $!\nTrying to use stdout instead\n";
+} else {
+ # Visual space
+ print "\n\n";
+ print '-' x 70, "\n";
+}
+
+# Get each file once only, and drop any we are not interested in.
+# Also, expand all symlinks so we get full pathnames of the real file accessed.
+@usedfiles = filterfiles(@usedfiles);
+
+# Forget about the few files we are expecting to see but can ignore
+@usedfiles = SetMinus(\@usedfiles, \@known_files);
+
+# For a message at the end
+my $number_files_used = scalar @usedfiles;
+
+# Initialise the packages database unless --all is given
+my $packagedeps;
+
+# @used_ess_files will contain those files used which are in essential packages
+my @used_ess_files;
+
+# Exclude essential and build-essential packages?
+if ($opts{"pkgs"} ne 'all')
+{
+ $packagedeps = new Devscripts::PackageDeps ('/var/lib/dpkg/status');
+ my @essential = PackagesMatch('^Essential: yes$');
+ my @essential_packages =
+ $packagedeps->full_dependencies('build-essential', @essential);
+ my @essential_files = PackagesToFiles(@essential_packages);
+ @used_ess_files = SetInter(\@usedfiles,\@essential_files);
+ @usedfiles = SetMinus(\@usedfiles,\@used_ess_files);
+}
+
+# Now let's find out which packages are used...
+my @ess_packages = FilesToPackages(@used_ess_files);
+my @packages = FilesToPackages(@usedfiles);
+my %dep_packages = (); # packages which are depended upon by others
+
+# ... and remove their files from the filelist
+if ($opts{"l"}) {
+ # Have to do it slowly :-(
+ if ($opts{"allpkgs"}) {
+ print "Files used in each of the needed build-essential or essential packages:\n";
+ foreach my $pkg (sort @ess_packages) {
+ my @pkgfiles = PackagesToFiles($pkg);
+ print "Files used in (build-)essential package $pkg:\n ",
+ join("\n ", SetInter(\@used_ess_files, \@pkgfiles)), "\n";
+ }
+ print "\n";
+ }
+ print "Files used in each of the needed packages:\n";
+ foreach my $pkg (sort @packages) {
+ my @pkgfiles = PackagesToFiles($pkg);
+ print "Files used in package $pkg:\n ",
+ join("\n ", SetInter(\@usedfiles, \@pkgfiles)), "\n";
+ # We take care to note any files used which
+ # do not appear in any package
+ @usedfiles = SetMinus(\@usedfiles, \@pkgfiles);
+ }
+ print "\n";
+} else {
+ # We take care to note any files used which
+ # do not appear in any package
+ my @pkgfiles = PackagesToFiles(@packages);
+ @usedfiles = SetMinus(\@usedfiles, \@pkgfiles);
+}
+
+if ($opts{"pkgs"} eq 'dev') {
+ # We also remove any direct dependencies of '-dev' packages
+ my %pkgs;
+ @pkgs{@packages} = (1) x @packages;
+
+ foreach my $pkg (@packages) {
+ next unless $pkg =~ /-dev$/;
+ my @deps = $packagedeps->dependencies($pkg);
+ foreach my $dep (@deps) {
+ $dep = $$dep[0] if ref $dep;
+ if (exists $pkgs{$dep}) {
+ $dep_packages{$dep} = $pkg;
+ delete $pkgs{$dep};
+ }
+ }
+ }
+
+ @packages = keys %pkgs;
+}
+elsif ($opts{"pkgs"} eq 'min') {
+ # Do a mindep job on the package list
+ my ($packages_ref,$dep_packages_ref) =
+ $packagedeps->min_dependencies(@packages);
+ @packages = @$packages_ref;
+ %dep_packages = %$dep_packages_ref;
+}
+
+print "Summary: $number_files_used files considered.\n" if $opts{"l"};
+# Ignore unrecognised /var/... files
+@usedfiles = grep ! /^\/var\//, @usedfiles;
+if (@usedfiles) {
+ warn "The following files did not appear to belong to any package:\n";
+ warn join("\n", @usedfiles) . "\n";
+}
+
+print "Packages ", ($opts{"pkgs"} eq 'all') ? "used" : "needed", ":\n ";
+print join("\n ", @packages), "\n";
+
+if ($opts{"allpkgs"}) {
+ if (@ess_packages) {
+ print "\n(Build-)Essential packages used:\n ";
+ print join("\n ", @ess_packages), "\n";
+ } else {
+ print "\nNo (Build-)Essential packages used\n";
+ }
+
+ if (scalar keys %dep_packages) {
+ print "\nOther packages used with depending packages listed:\n";
+ foreach my $pkg (sort keys %dep_packages) {
+ print " $pkg <= $dep_packages{$pkg}\n";
+ }
+ }
+}
+
+exit 0;
+
+
+### Subroutines
+
+# This sub is handed two arguments: f or feature, and the setting
+
+sub process_features ($$)
+{
+ foreach (split(',', $_[1])) {
+ my $state=1;
+ m/^-/ and $state=0;
+ s/^[-+]//;
+ if (exists $feature{$_}) {
+ $feature{$_}=$state;
+ } else {
+ die("Unknown feature $_\n");
+ }
+ }
+}
+
+
+# Get used files. This runs the requested command (given as parameters
+# to this sub) under strace and then parses the output, returning a list
+# of all absolute filenames successfully opened or execve'd.
+
+sub getusedfiles (@)
+{
+ my $file;
+ if ($opts{"strace-input"}) {
+ $file=$opts{"strace-input"};
+ }
+ else {
+ my $old_preload = $ENV{'LD_PRELOAD'} || undef;
+ my $old_locale = $ENV{'LC_ALL'} || undef;
+ my $trace_preload = defined $old_preload ?
+ "$old_preload $vforklib" : $vforklib;
+ $file = $opts{"strace-output"} || `tempfile -p depcheck`;
+ chomp $file;
+ $file =~ s%^(\s)%./$1%;
+ my @strace_cmd=('strace', '-e', 'trace=open,execve', '-f',
+ '-q', '-o', $file, @_);
+ $ENV{'LD_PRELOAD'} = $trace_preload;
+ $ENV{'LC_ALL'}="C" if $opts{"C"};
+ system(@strace_cmd);
+ $? >> 8 == 0 or
+ die "Running strace failed (command line:\n@strace_cmd\n";
+ if (defined $old_preload) { $ENV{'LD_PRELOAD'} = $old_preload; }
+ else { delete $ENV{'LD_PRELOAD'}; }
+ if (defined $old_locale) { $ENV{'LC_ALL'} = $old_locale; }
+ else { delete $ENV{'LC_ALL'}; }
+ }
+
+ my %openfiles=();
+ open FILE, $file or die "Cannot open $file for reading: $!\n";
+ while (<FILE>) {
+ # We only consider absolute filenames
+ m/^\d+\s+(\w+)\(\"(\/.*?)\",.*\) = (-?\d+)/ or next;
+ my ($syscall, $filename, $status) = ($1, $2, $3);
+ if ($syscall eq 'open') { next unless $status >= 0; }
+ elsif ($syscall eq 'execve') { next unless $status == 0; }
+ else { next; } # unrecognised syscall
+ next if $feature{"discard-check-version"} and
+ m/execve\(\"\Q$filename\E\", \[\"[^\"]+\", "--version"\], /;
+ # So it's a real file
+ $openfiles{$filename}=1;
+ }
+
+ unlink $file unless $opts{"strace-input"} or $opts{"strace-output"};
+
+ return keys %openfiles;
+}
+
+
+# Select those files which we are interested in, as determined by the
+# user-specified options
+
+sub filterfiles (@)
+{
+ my %files=();
+ my %local_files=();
+ my %alternatives=();
+ my $pwd=cwd();
+
+ foreach my $file (@_) {
+ next unless -f $file;
+ $file = Cwd::abs_path($file);
+
+ my @links=();
+ my $prevlink='';
+ foreach (ListSymlinks($file, $pwd)) {
+ if (m%^/(usr|var)/local(/|\z)%) {
+ $feature{"warn-local"} and $local_files{$_} = 1;
+ unless ($feature{"trace-local"}) {
+ $prevlink = $_;
+ next;
+ }
+ }
+ elsif ($feature{"discard-sgml-catalogs"} and
+ m%^/usr/share/(sgml/.*\.cat|.*/catalog)%) {
+ next;
+ }
+ elsif ($feature{"catch-alternatives"} and m%^/etc/alternatives/%) {
+ $alternatives{"$prevlink --> " . readlink($_)} = 1
+ if $prevlink;
+ }
+ $prevlink=$_;
+ # If it's not in one of these dirs, we skip it
+ next unless m%^/(bin|etc|lib|sbin|usr|var)%;
+ push @links, $_;
+ }
+
+ @files{@links} = (1) x @links;
+ }
+
+ if (keys %local_files) {
+ print "warning: files in /usr/local or /var/local used:\n",
+ join("\n", sort keys %local_files), "\n";
+ }
+ if (keys %alternatives) {
+ print "warning: alternatives used:\n",
+ join("\n", sort keys %alternatives), "\n";
+ }
+
+ return keys %files;
+}
+
+
+
+# The purpose here is to find out all the symlinks crossed by a file access.
+# We work from the end of the filename (basename) back towards the root of
+# the filename (solving bug#246006 where /usr is a symlink to another
+# filesystem), repeating this process until we end up with an absolute
+# filename with no symlinks in it. We return a list of all of the
+# full filenames encountered.
+# For example, if /usr -> /moved/usr, then
+# /usr/bin/X11/xapp would yield:
+# /usr/bin/X11/xapp, /usr/X11R6/bin/xapp, /moved/usr/X11R6/bin/xapp
+
+# input: file, pwd
+# output: if symlink found: (readlink-replaced file, prefix)
+# if not: (file, '')
+
+sub NextSymlink ($)
+{
+ my $file = shift;
+
+ my $filestart = $file;
+ my $fileend = '';
+
+ while ($filestart ne '/') {
+ if (-l $filestart) {
+ my $link = readlink($filestart);
+ my $parent = dirname $filestart;
+ if ($link =~ m%^/%) { # absolute symlink
+ return $link . $fileend;
+ }
+ while ($link =~ s%^\./%%) { }
+ # The following is not actually correct: if we have
+ # /usr -> /moved/usr and /usr/mylib -> ../mylibdir, then
+ # /usr/mylib should resolve to /moved/mylibdir, not /mylibdir
+ # But if we try to take this into account, we would need to
+ # use something like Cwd(), which would immediately resolve
+ # /usr -> /moved/usr, losing us the opportunity of recognising
+ # the filename we want. This is a bug we'll probably have to
+ # cope with.
+ # One way of doing this correctly would be to have a function
+ # resolvelink which would recursively resolve any initial ../ in
+ # symlinks, but no more than that. But I don't really want to
+ # implement this unless it really proves to be necessary:
+ # people shouldn't be having evil symlinks like that on their
+ # system!!
+ while ($link =~ s%^\.\./%%) { $parent = dirname $parent; }
+ return $parent . '/' . $link . $fileend;
+ }
+ else {
+ $fileend = '/' . basename($filestart) . $fileend;
+ $filestart = dirname($filestart);
+ }
+ }
+ return undef;
+}
+
+
+# input: file, pwd
+# output: list of full filenames encountered en route
+
+sub ListSymlinks ($$)
+{
+ my ($file, $path) = @_;
+
+ if ($file !~ m%^/%) { $file = "$path/$file"; }
+
+ my @fn = ($file);
+
+ while ($file = NextSymlink($file)) {
+ push @fn, $file;
+ }
+
+ return @fn;
+}
--- /dev/null
+.TH DPKG-GENBUILDDEPS 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+dpkg-genbuilddeps \- generate a list of packages used to build this package
+.SH SYNOPSIS
+\fBdpkg-genbuilddeps\fR [\fIarg\fR ...]
+.SH DESCRIPTION
+This program is a wrapper around \fBdpkg-depcheck\fR(1). It should be
+run from the top of a Debian build tree. It calls
+\fBdpkg-buildpackage\fR with any arguments given on the command line,
+and by tracing the execution of this, it determines which
+non-essential packages were used during the package building. This
+can be useful in determining what the \fIBuild-Depends\fR control
+fields should contain. It does not determine which packages were used
+for the arch independent parts of the build and which for the arch
+dependent parts, not does it attempt to determine which versions of
+packages are required. It should be able to run under \fBfakeroot\fR
+rather than being run as root, as \fBfakeroot dpkg-genbuilddeps\fR, or
+\fBdpkg-genbuilddeps \-rfakeroot\fR.
+.PP
+This program requires the build-essential package to be installed. If
+it is not, please use \fBdpkg-depcheck\fR directly, with a command
+such as
+.nf
+ dpkg-depcheck \-\-all dpkg-buildpackage \-us \-uc \-b \-rfakeroot ...
+.fi
+All this program itself does is essentially to run the command:
+.nf
+ dpkg-depcheck \-b dpkg-buildpackage \-us \-uc \-b \-rfakeroot [arg ...]
+.fi
+.SH "SEE ALSO"
+.BR dpkg-depcheck (1),
+.BR fakeroot (1)
+
+.B The Debian Policy Manual,
+sections on Build-Depends etc.
+.SH AUTHOR
+The original \fBdpkg-genbuilddeps\fR was written by Ben Collins
+<bcollins@debian.org>. The current version is a simple wrapper around
+\fBdpkg-depcheck\fR written by Bill Allombert <ballombe@debian.org>.
+This manual page was written by Julian Gilbey <jdg@debian.org>.
--- /dev/null
+#!/bin/bash
+set -e
+
+PROGNAME=`basename $0`
+
+if [ $# -gt 0 ]; then
+ case $1 in
+ -h|--help)
+ cat <<EOF
+Usage: $PROGNAME [options] [<arg> ...]
+Build package and generate build dependencies.
+All args are passed to dpkg-buildpackage.
+Options:
+ -h, --help This help
+ -v, --version Report version and exit
+EOF
+ exit 1
+ ;;
+ -v|--version)
+ echo "$PROGNAME wrapper for dpkg-depcheck:"
+ dpkg-depcheck --version
+ exit 1
+ ;;
+ esac
+fi
+
+if ! [ -x debian/rules ]; then
+ echo "$PROGNAME must be run in the source package directory" >&2
+ exit 1
+fi
+
+if ! dpkg -L build-essential >/dev/null 2>&1
+then
+ echo "You must have the build-essential package installed to use $PROGNAME" >&2
+ echo "You can try running the dpkg-depcheck program directly as:" >&2
+ echo "dpkg-depcheck --all dpkg-buildpackage -us -uc -b -rfakeroot $*" >&2
+ exit 1
+fi
+
+echo "Warning: if this program hangs, kill it and read the manpage!" >&2
+dpkg-depcheck -b dpkg-buildpackage -us -uc -b "$@"
--- /dev/null
+.TH DSCEXTRACT 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+dscextract \- extract a single file from a Debian source package
+.SH SYNOPSIS
+\fBdscextract\fR [\fIoptions\fR] \fIdscfile\fR \fIfile\fR
+.SH DESCRIPTION
+\fBdscextract\fR reads a single file from a Debian source package. The idea is
+to only look into \fI.diff.gz\fR files (source format 1.0) or \fI.debian.tar.gz/bz2\fR
+files (source format 3.0) where possible, hence avoiding to unpack large
+tarballs. It is most useful for files in the \fIdebian/\fR subdirectory.
+
+\fIfile\fP is relative to the first level directory contained in the package,
+i.e. with the first component stripped.
+.SH OPTIONS
+.TP
+.B \fB\-f
+"Fast" mode. For source format 1.0, avoid to fall back scanning the \fI.orig.tar.gz\fR
+file if \fIfile\fR was not found in the \fI.diff.gz\fR. (For 3.0 packages, it is
+assumed that \fIdebian/*\fR are exactly the contents of \fIdebian.tar.gz/bz2\fR.)
+.SH "EXIT STATUS"
+.TP
+0
+\fIfile\fR was extracted.
+.TP
+1
+\fIfile\fR was not found in the source package.
+.TP
+2
+An error occurred, like \fIdscfile\fR was not found.
+.SH EXAMPLE
+dscextract dds_2.1.1+ddd105-2.dsc debian/watch || test $? = 1
+.SH AUTHOR
+\fBdscextract\fR was written by Christoph Berg <myon@debian.org>.
--- /dev/null
+#!/bin/sh
+
+# dscextract.sh - Extract a single file from a Debian source package
+# Copyright (C) 2011 Christoph Berg <myon@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+set -eu
+
+die () {
+ echo "$*" >&2
+ exit 2
+}
+
+setzip () {
+ case $1 in
+ *.gz) ZIP=--gzip ;;
+ *.xz) ZIP=--xz ;;
+ *.lzma) ZIP=--lzma ;;
+ *.bz2) ZIP=--bzip2 ;;
+ esac
+}
+
+FAST=""
+while getopts "f" opt ; do
+ case $opt in
+ f) FAST=yes ;;
+ *) exit 2 ;;
+ esac
+done
+# shift away args
+shift $(($OPTIND - 1))
+
+[ $# = 2 ] || die "Usage: $(basename $0) <dsc> <file>"
+DSC="$1"
+test -e "$DSC" || die "$DSC not found"
+FILE="$2"
+
+DSCDIR=$(dirname "$DSC")
+WORKDIR=$(mktemp -d --tmpdir dscextract.XXXXXX)
+trap "rm -rf $WORKDIR" 0 2 3 15
+
+if DIFFGZ=$(egrep '^ [0-9a-f]{32,64} [0-9]+ [^ ]+\.diff\.(gz|xz|lzma|bz2)$' "$DSC") ; then
+ DIFFGZ=$(echo "$DIFFGZ" | cut -d ' ' -f 4 | head -n 1)
+ test -e "$DSCDIR/$DIFFGZ" || die "$DSCDIR/$DIFFGZ: not found"
+ filterdiff -p1 -i "$FILE" -z "$DSCDIR/$DIFFGZ" > "$WORKDIR/patch"
+ if test -s "$WORKDIR/patch" ; then
+ # case 1: file found in .diff.gz
+ if ! grep -q '^@@ -0,0 ' "$WORKDIR/patch" ; then
+ # case 1a: patch requires original file
+ ORIGTGZ=$(egrep '^ [0-9a-f]{32,64} [0-9]+ [^ ]+\.orig\.tar\.(gz|xz|lzma|bz2)$' "$DSC") || die "no orig.tar.* found in $DSC"
+ ORIGTGZ=$(echo "$ORIGTGZ" | cut -d ' ' -f 4 | head -n 1)
+ setzip $ORIGTGZ
+ test -e "$DSCDIR/$ORIGTGZ" || die "$DSCDIR/$ORIGTGZ not found"
+ tar --extract --to-stdout $ZIP --file "$DSCDIR/$ORIGTGZ" --wildcards "*/$FILE" > "$WORKDIR/output" 2>/dev/null || :
+ test -s "$WORKDIR/output" || die "$FILE not found in $DSCDIR/$ORIGTGZ, but required by patch"
+ fi
+ patch --silent "$WORKDIR/output" < "$WORKDIR/patch"
+ test -s "$WORKDIR/output" || die "patch $FILE did not produce any output"
+ cat "$WORKDIR/output"
+ exit 0
+ elif [ "$FAST" ] ; then
+ # in fast mode, don't bother looking into .orig.tar.gz
+ exit 1
+ fi
+fi
+
+if DEBIANTARGZ=$(egrep '^ [0-9a-f]{32,64} [0-9]+ [^ ]+\.debian\.tar\.(gz|xz|lzma|bz2)$' "$DSC") ; then
+ case $FILE in
+ debian/*)
+ DEBIANTARGZ=$(echo "$DEBIANTARGZ" | cut -d ' ' -f 4 | head -n 1)
+ test -e "$DSCDIR/$DEBIANTARGZ" || die "$DSCDIR/$DEBIANTARGZ not found"
+ setzip $DEBIANTARGZ
+ tar --extract --to-stdout $ZIP --file "$DSCDIR/$DEBIANTARGZ" "$FILE" > "$WORKDIR/output" 2>/dev/null || :
+ test -s "$WORKDIR/output" || exit 1
+ # case 2a: file found in .debian.tar.gz
+ cat "$WORKDIR/output"
+ exit 0
+ # for 3.0 format, no need to look in other places here
+ ;;
+ *)
+ ORIGTGZ=$(egrep '^ [0-9a-f]{32,64} [0-9]+ [^ ]+\.orig\.tar\.(gz|xz|lzma|bz2)$' "$DSC") || die "no orig.tar.gz found in $DSC"
+ ORIGTGZ=$(echo "$ORIGTGZ" | cut -d ' ' -f 4 | head -n 1)
+ test -e "$DSCDIR/$ORIGTGZ" || die "$DSCDIR/$ORIGTGZ not found"
+ setzip $ORIGTGZ
+ tar --extract --to-stdout $ZIP --file "$DSCDIR/$ORIGTGZ" --wildcards --no-wildcards-match-slash "*/$FILE" > "$WORKDIR/output" 2>/dev/null || :
+ test -s "$WORKDIR/output" || exit 1
+ # case 2b: file found in .orig.tar.gz
+ # TODO: apply patches from debian.tar.gz
+ cat "$WORKDIR/output"
+ exit 0
+ ;;
+ esac
+fi
+
+if TARGZ=$(egrep '^ [0-9a-f]{32,64} [0-9]+ [^ ]+\.tar\.(gz|xz|lzma|bz2)$' "$DSC") ; then
+ TARGZ=$(echo "$TARGZ" | cut -d ' ' -f 4 | head -n 1)
+ test -e "$DSCDIR/$TARGZ" || die "$DSCDIR/$TARGZ not found"
+ setzip $TARGZ
+ tar --extract --to-stdout $ZIP --file "$DSCDIR/$TARGZ" --wildcards --no-wildcards-match-slash "*/$FILE" > "$WORKDIR/output" 2>/dev/null || :
+ test -s "$WORKDIR/output" || exit 1
+ # case 3: file found in .tar.gz or .orig.tar.gz
+ cat "$WORKDIR/output"
+ exit 0
+fi
+
+exit 1
--- /dev/null
+.TH DSCVERIFY 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+dscverify \- verify the validity of a Debian package
+.SH SYNOPSIS
+\fBdscverify\fR [\fB\-\-keyring \fIkeyring\fR] ... \fIchanges_or_dsc_filename\fR ...
+.SH DESCRIPTION
+\fBdscverify\fR checks that the GPG signatures on the given
+\fI.changes\fR or \fI.dsc\fR files are good signatures made by keys in
+the current Debian keyrings, found in the \fIdebian-keyring\fR
+and \fIdebian-maintainers\fR
+packages. (Additional keyrings can be specified using the
+\fB--keyring\fR option any number of times.) It then checks that the
+other files listed in the \fI.changes\fR or \fI.dsc\fR files have the
+correct sizes and checksums (MD5 plus SHA1 and SHA256 if the latter are
+present). The exit status is 0 if there are no problems and non-zero
+otherwise.
+.SH OPTIONS
+.TP
+.BI \-\-keyring " " \fIkeyring\fR
+Add \fIkeyring\fR to the list of keyrings to be used.
+.TP
+\fB\-\-no-default-keyrings\fR
+Do not use the default set of keyrings.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+\fB\-\-nosigcheck\fR, \fB\-\-no\-sig\-check\fR, \fB-u\fR
+Skip the signature verification step. That is, only verify the sizes and
+checksums of the files listed in the \fI.changes\fR or \fI.dsc\fR files.
+.TP
+\fB\-\-verbose\fR
+Do not suppress GPG output.
+.TP
+.TP
+.BR \-\-help ", " \-h
+Display a help message and exit successfully.
+.TP
+.B \-\-version
+Display version and copyright information and exit successfully.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced by a shell in that order to set
+configuration variables. Environment variable settings are ignored
+for this purpose. If the first command line option given is
+\fB\-\-noconf\fR or \fB\-\-no-conf\fR, then these files will not be
+read. The currently recognised variable is:
+.TP
+.B DSCVERIFY_KEYRINGS
+This is a colon-separated list of extra keyrings to use in addition to
+any specified on the command line.
+.SH KEYRING
+Please note that the keyring provided by the debian-keyring package
+can be slightly out of date. The latest version can be obtained with
+rsync, as documented in the README that comes with debian-keyring.
+If you sync the keyring to a non-standard location (see below),
+you can use the possibilities to specify extra keyrings, by either
+using the above mentioned configuration option or the \-\-keyring option.
+
+Below is an example for an alias:
+
+alias dscverify='dscverify \-\-keyring ~/.gnupg/pubring.gpg'
+.SH STANDARD KEYRING LOCATIONS
+By default dscverify searches for the debian-keyring in the following
+locations:
+
+- ~/.gnupg/trustedkeys.gpg
+
+- /org/keyring.debian.org/keyrings/debian-keyring.gpg
+
+- /usr/share/keyrings/debian-keyring.gpg
+
+- /usr/share/keyrings/debian-maintainers.gpg
+.SH "SEE ALSO"
+.BR gpg (1),
+.BR devscripts.conf (5)
+
+.SH AUTHOR
+\fBdscverify\fR was written by Roderick Schertler <roderick@argon.org>
+and posted on the debian-devel@lists.debian.org mailing list,
+with several modifications by Julian Gilbey <jdg@debian.org>.
--- /dev/null
+#!/usr/bin/perl -w
+
+# This program takes .changes or .dsc files as arguments and verifies
+# that they're properly signed by a Debian developer, and that the local
+# copies of the files mentioned in them match the MD5 sums given.
+
+# Copyright 1998 Roderick Schertler <roderick@argon.org>
+# Modifications copyright 1999,2000,2002 Julian Gilbey <jdg@debian.org>
+# Drastically simplified to match katie's signature checking Feb 2002
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at
+# your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use 5.004; # correct pipe close behavior
+use strict;
+use Cwd;
+use Fcntl;
+use Dpkg::IPC;
+use File::Spec;
+use File::Temp;
+use File::Basename;
+use POSIX qw(:errno_h);
+use Getopt::Long qw(:config gnu_getopt);
+
+BEGIN {
+ eval { require Digest::MD5; };
+ if ($@) {
+ my $progname = basename $0;
+ if ($@ =~ /^Can\'t locate Digest\/MD5\.pm/) {
+ die "$progname: you must have the libdigest-md5-perl package installed\nto use this script\n";
+ }
+ die "$progname: problem loading the Digest::MD5 module:\n $@\nHave you installed the libdigest-md5-perl package?\n";
+ }
+}
+
+my $progname = basename $0;
+my $modified_conf_msg;
+my $Exit = 0;
+my $start_dir = cwd;
+my $verify_sigs = 1;
+my $use_default_keyrings = 1;
+my $verbose = 0;
+
+sub usage {
+ print <<"EOF";
+Usage: $progname [options] dsc-or-changes-file ...
+ Options: --help Display this message
+ --version Display version and copyright information
+ --keyring <keyring>
+ Add <keyring> to the list of keyrings used
+ --no-default-keyrings
+ Do not check against the default keyrings
+ --nosigcheck, --no-sig-check, -u
+ Do not verify the GPG signature
+ --no-conf, --noconf
+ Do not read the devscripts config file
+ --verbose
+ Do not suppress GPG output.
+
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOF
+}
+
+my $version = <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1998 Roderick Schertler <roderick\@argon.org>
+Modifications are copyright 1999, 2000, 2002 Julian Gilbey <jdg\@debian.org>
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+
+sub xwarndie_mess {
+ my @mess = ("$progname: ", @_);
+ $mess[$#mess] =~ s/:$/: $!\n/; # XXX loses if it's really /:\n/
+ return @mess;
+}
+
+sub xwarn {
+ warn xwarndie_mess @_;
+ $Exit ||= 1;
+}
+
+sub xdie {
+ die xwarndie_mess @_;
+}
+
+sub get_rings {
+ my @rings = @_;
+ my @keyrings = qw(/usr/share/keyrings/debian-keyring.gpg
+ /usr/share/keyrings/debian-maintainers.gpg);
+ if (defined $ENV{HOME} && -r "$ENV{HOME}/.gnupg/trustedkeys.gpg") {
+ unshift(@keyrings, "$ENV{HOME}/.gnupg/trustedkeys.gpg");
+ }
+ unshift(@keyrings, '/org/keyring.debian.org/keyrings/debian-keyring.gpg');
+ if (system('dpkg-vendor', '--derives-from', 'Ubuntu') == 0) {
+ unshift(@keyrings, qw(/usr/share/keyrings/ubuntu-master-keyring.gpg
+ /usr/share/keyrings/ubuntu-archive-keyring.gpg));
+ }
+ for (@keyrings) {
+ push @rings, $_ if -r;
+ }
+ return @rings if @rings;
+ xdie "can't find any system keyrings\n";
+}
+
+sub check_signature($\@;\$) {
+ my ($file, $rings, $outref) = @_;
+
+ my $fh = eval { File::Temp->new() }
+ or xdie "unable to open status file for gpg: $@\n";
+
+ # Allow the status file descriptor to pass on to the child process
+ my $flags = fcntl($fh, F_GETFD, 0);
+ fcntl($fh, F_SETFD, $flags & ~FD_CLOEXEC);
+
+ my $fd = fileno $fh;
+ my @cmd;
+ push @cmd, qw(gpg --status-fd), $fd,
+ qw(--batch --no-options --no-default-keyring --always-trust);
+ foreach (@$rings) { push @cmd, '--keyring'; push @cmd, $_; }
+
+ my ($out, $err) = ('', '');
+ eval {
+ spawn(exec => \@cmd,
+ from_file => $file,
+ to_string => \$out,
+ error_to_string => \$err,
+ wait_child => 1);
+ };
+
+ if ($@) {
+ print $out if ($verbose);
+ return $err || $@;
+ }
+
+ seek($fh, 0, SEEK_SET);
+ my $status;
+ $status .= $_ while <$fh>;
+ close $fh;
+
+ if ($status !~ m/^\[GNUPG:\] VALIDSIG/m) {
+ return $out;
+ }
+
+ if (defined $outref) {
+ $$outref = $out;
+ }
+
+ return '';
+}
+
+sub process_file {
+ my ($file, @rings) = @_;
+ my ($filedir, $filebase);
+ my $sigcheck;
+
+ print "$file:\n";
+
+ # Move to the directory in which the file appears to live
+ chdir $start_dir or xdie "can't chdir to original directory!\n";
+ if ($file =~ m-(.*)/([^/]+)-) {
+ $filedir = $1;
+ $filebase = $2;
+ unless (chdir $filedir) {
+ xwarn "can't chdir $filedir:";
+ return;
+ }
+ } else {
+ $filebase = $file;
+ }
+
+ my $out;
+ if ($verify_sigs) {
+ $sigcheck = check_signature $filebase, @rings, $out;
+ if ($sigcheck) {
+ xwarn "$file failed signature check:\n$sigcheck";
+ return;
+ } else {
+ print " Good signature found\n";
+ }
+ }
+ else {
+ if (!open SIGNED, '<', $filebase) {
+ xwarn "can't open $file:";
+ return;
+ }
+ $out = do { local $/; <SIGNED> };
+ if (!close SIGNED) {
+ xwarn "problem reading $file:";
+ return;
+ }
+ }
+
+ if ($file =~ /\.changes$/ and $out =~ /^Format:\s*(.*)$/mi) {
+ my $format = $1;
+ unless ($format =~ /^(\d+)\.(\d+)$/) {
+ xwarn "$file has an unrecognised format: $format\n";
+ return;
+ }
+ my ($major, $minor) = split /\./, $format;
+ $major += 0;
+ $minor += 0;
+ unless ($major == 1 and $minor <= 8) {
+ xwarn "$file is an unsupported format: $format\n";
+ return;
+ }
+ }
+
+ my @spec = map { split /\n/ } $out =~ /^Files:\s*\n((?:[ \t]+.*\n)+)/mgi;
+ unless (@spec) {
+ xwarn "no file spec lines in $file\n";
+ return;
+ }
+
+ my @checksums = map { split /\n/ } $out =~ /^Checksums-(\S+):\s*\n/mgi;
+ @checksums = grep {!/^Sha(1|256)$/i} @checksums;
+ if (@checksums) {
+ xwarn "$file contains unsupported checksums:\n"
+ . join (", ", @checksums) . "\n";
+ return;
+ }
+
+ my %sha1s = map { reverse split /(\S+)\s*$/m }
+ $out =~ /^Checksums-Sha1:\s*\n((?:[ \t]+.*\n)+)/mgi;
+ my %sha256s = map { reverse split /(\S+)\s*$/m }
+ $out =~ /^Checksums-Sha256:\s*\n((?:[ \t]+.*\n)+)/mgi;
+ my $md5o = Digest::MD5->new or xdie "can't initialize MD5\n";
+ my $any;
+ for (@spec) {
+ unless (/^\s+([0-9a-f]{32})\s+(\d+)\s+(?:\S+\s+\S+\s+)?(\S+)\s*$/) {
+ xwarn "invalid file spec in $file `$_'\n";
+ next;
+ }
+ my ($md5, $size, $filename) = ($1, $2, $3);
+ my ($sha1, $sha1size, $sha256, $sha256size);
+ $filename !~ m,[/\x00],
+ or xdie "File name contains invalid characters: $file";
+
+ if (keys %sha1s) {
+ $sha1 = $sha1s{$filename};
+ unless (defined $sha1) {
+ xwarn "no sha1 for `$filename' in $file\n";
+ next;
+ }
+ unless ($sha1 =~ /^\s+([0-9a-f]{40})\s+(\d+)\s*$/) {
+ xwarn "invalid sha1 spec in $file `$sha1'\n";
+ next;
+ }
+ ($sha1, $sha1size) = ($1, $2);
+ } else {
+ $sha1size = $size;
+ }
+
+ if (keys %sha256s) {
+ $sha256 = $sha256s{$filename};
+ unless (defined $sha256) {
+ xwarn "no sha256 for `$filename' in $file\n";
+ next;
+ }
+ unless ($sha256 =~ /^\s+([0-9a-f]{64})\s+(\d+)\s*$/) {
+ xwarn "invalid sha256 spec in $file `$sha256'\n";
+ next;
+ }
+ ($sha256, $sha256size) = ($1, $2);
+ } else {
+ $sha256size = $size;
+ }
+
+ unless (open FILE, '<', $filename) {
+ if ($! == ENOENT) {
+ print STDERR " skipping $filename (not present)\n";
+ }
+ else {
+ xwarn "can't read $filename:";
+ }
+ next;
+ }
+
+ $any = 1;
+ print " validating $filename\n";
+
+ # size
+ my $this_size = -s FILE;
+ unless (defined $this_size) {
+ xwarn "can't fstat $filename:";
+ next;
+ }
+ unless ($this_size == $size) {
+ xwarn "invalid file length for $filename (wanted $size got $this_size)\n";
+ next;
+ }
+ unless ($this_size == $sha1size) {
+ xwarn "invalid sha1 file length for $filename (wanted $sha1size got $this_size)\n";
+ next;
+ }
+ unless ($this_size == $sha256size) {
+ xwarn "invalid sha256 file length for $filename (wanted $sha256size got $this_size)\n";
+ next;
+ }
+
+ # MD5
+ $md5o->reset;
+ $md5o->addfile(*FILE);
+ my $this_md5 = $md5o->hexdigest;
+ unless ($this_md5 eq $md5) {
+ xwarn "MD5 mismatch for $filename (wanted $md5 got $this_md5)\n";
+ next;
+ }
+
+ my $this_sha1;
+ eval {
+ spawn(exec => ['sha1sum', $filename],
+ to_string => \$this_sha1,
+ wait_child => 1);
+ };
+ ($this_sha1) = split /\s/,$this_sha1,2;
+ $this_sha1 ||= '';
+ unless (! keys %sha1s or $this_sha1 eq $sha1) {
+ xwarn "SHA1 mismatch for $filename (wanted $sha1 got $this_sha1)\n";
+ next;
+ }
+
+ my $this_sha256;
+ eval {
+ spawn(exec => ['sha256sum', $filename],
+ to_string => \$this_sha256,
+ wait_child => 1);
+ };
+ ($this_sha256) = split /\s/,$this_sha256,2;
+ $this_sha256 ||= '';
+ unless (! keys %sha256s or $this_sha256 eq $sha256) {
+ xwarn "SHA256 mismatch for $filename (wanted $sha256 got $this_sha256)\n";
+ next;
+ }
+
+ close FILE;
+
+ if ($filename =~ /\.dsc$/ && $verify_sigs) {
+ $sigcheck = check_signature $filename, @rings;
+ if ($sigcheck) {
+ xwarn "$filename failed signature check:\n$sigcheck";
+ next;
+ } else {
+ print " Good signature found\n";
+ }
+ }
+ }
+
+ $any or
+ xwarn "$file didn't specify any files present locally\n";
+}
+
+sub main {
+ @ARGV or xdie "no .changes or .dsc files specified\n";
+
+ my @rings;
+
+ # Handle config file unless --no-conf or --noconf is specified
+ # The next stuff is boilerplate
+ if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift @ARGV;
+ } else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'DSCVERIFY_KEYRINGS' => '',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= "$var='$config_vars{$var}';\n";
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $config_vars{'DSCVERIFY_KEYRINGS'} =~ s/^\s*:\s*//;
+ $config_vars{'DSCVERIFY_KEYRINGS'} =~ s/\s*:\s*$//;
+ @rings = split /\s*:\s*/, $config_vars{'DSCVERIFY_KEYRINGS'};
+ }
+
+ GetOptions(
+ 'help' => sub { usage; exit 0; },
+ 'version' => sub { print $version; exit 0; },
+ 'sigcheck|sig-check!' => \$verify_sigs,
+ 'u' => sub { $verify_sigs = 0 },
+ 'noconf|no-conf' => sub {
+ die "--$_[0] is only acceptable as the first command-line option!\n";
+ },
+ 'default-keyrings!' => \$use_default_keyrings,
+ 'keyring=s@' => sub {
+ my $ring = $_[1];
+ if (-r $ring) { push @rings, $ring; }
+ else { die "Keyring $ring unreadable\n" }
+ },
+ 'verbose' => \$verbose,
+ ) or do { usage; exit 1 };
+
+ @ARGV or xdie "no .changes or .dsc files specified\n";
+
+ @rings = get_rings @rings if $use_default_keyrings and $verify_sigs;
+
+ for my $file (@ARGV) {
+ process_file $file, @rings;
+ }
+
+ return 0;
+}
+
+$Exit = main || $Exit;
+$Exit = 1 if $Exit and not $Exit % 256;
+if ($Exit) { print STDERR "Validation FAILED!!\n"; }
+else { print "All files validated successfully.\n"; }
+exit $Exit;
--- /dev/null
+#!/bin/sh
+#
+# Copyright (C) 2009 Canonical
+#
+# Authors:
+# Michael Vogt
+# Daniel Holbach
+# David Futcher
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; version 3.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+set -e
+
+
+PATCHSYSTEM="unknown"
+PATCHNAME="no-patch-name"
+PREFIX="debian/patches"
+
+PATCH_DESC=$(cat<<EOF
+## Description: add some description\
+\n## Origin/Author: add some origin or author\
+\n## Bug: bug URL
+EOF
+)
+
+fatal_error() {
+ echo "$@" >&2
+ exit 1
+}
+
+# check if the given binary is installed and give a error if not
+# arg1: binary
+# arg2: error message
+require_installed() {
+ if ! which "$1" >/dev/null; then
+ fatal_error "$2"
+ fi
+}
+
+ensure_debian_dir() {
+ if [ ! -e debian/control ] || [ ! -e debian/rules ]; then
+ fatal_error "Can not find debian/rules or debian/control. Not in a debian dir?"
+ fi
+
+}
+
+detect_patchsystem() {
+ CDBS_PATCHSYS="^[^#]*simple-patchsys.mk"
+
+ if grep -q "$CDBS_PATCHSYS" debian/rules; then
+ PATCHSYSTEM="cdbs"
+ require_installed cdbs-edit-patch "no cdbs-edit-patch found, is 'cdbs' installed?"
+ elif [ -e debian/patches/00list ]; then
+ PATCHSYSTEM="dpatch"
+ require_installed dpatch-edit-patch "no dpatch-edit-patch found, is 'dpatch' installed?"
+ elif [ -e debian/patches/series -o \
+ "$(cat debian/source/format 2> /dev/null)" = "3.0 (quilt)" ]; then
+ PATCHSYSTEM="quilt"
+ require_installed quilt "no quilt found, is 'quilt' installed?"
+ else
+ PATCHSYSTEM="none"
+ PREFIX="debian/applied-patches"
+ fi
+}
+
+# remove full path if given
+normalize_patch_path() {
+ PATCHNAME=${PATCHNAME##*/}
+ echo "Normalizing patch path to $PATCHNAME"
+}
+
+# ensure (for new patches) that:
+# - dpatch ends with .dpatch
+# - cdbs/quilt with .patch
+normalize_patch_extension() {
+ # check if we have a patch already
+ if [ -e $PREFIX/$PATCHNAME ]; then
+ echo "Patch $PATCHNAME exists, not normalizing"
+ return
+ fi
+
+ # normalize name for new patches
+ PATCHNAME=${PATCHNAME%.*}
+ if [ "$PATCHSYSTEM" = "quilt" ]; then
+ PATCHNAME="${PATCHNAME}.patch"
+ elif [ "$PATCHSYSTEM" = "cdbs" ]; then
+ PATCHNAME="${PATCHNAME}.patch"
+ elif [ "$PATCHSYSTEM" = "dpatch" ]; then
+ PATCHNAME="${PATCHNAME}.dpatch"
+ elif [ "$PATCHSYSTEM" = "none" ]; then
+ PATCHNAME="${PATCHNAME}.patch"
+ fi
+
+ echo "Normalizing patch name to $PATCHNAME"
+}
+
+edit_patch_cdbs() {
+ cdbs-edit-patch $PATCHNAME
+ vcs_add debian/patches/$1
+}
+
+edit_patch_dpatch() {
+ dpatch-edit-patch $PATCHNAME
+ # add if needed
+ if ! grep -q $1 $PREFIX/00list; then
+ echo "$1" >> $PREFIX/00list
+ fi
+ vcs_add $PREFIX/00list $PREFIX/$1
+}
+
+edit_patch_quilt() {
+ export QUILT_PATCHES=debian/patches
+ top_patch=$(quilt top)
+ echo "Top patch: $top_patch"
+ if [ -e $PREFIX/$1 ]; then
+ # if its a existing patch and we are at the end of the stack,
+ # go back at the beginning
+ if ! quilt unapplied; then
+ quilt pop -a
+ fi
+ quilt push $1
+ else
+ # if its a new patch make sure we are at the end of the stack
+ if quilt unapplied >/dev/null; then
+ quilt push -a
+ fi
+ quilt new $1
+ fi
+ # use a sub-shell
+ quilt shell
+ quilt refresh
+ echo "Reverting quilt back to $top_patch"
+ quilt pop $top_patch
+ vcs_add $PREFIX/$1 $PREFIX/series
+}
+
+edit_patch_none() {
+ # Dummy edit-patch function, just display a warning message
+ echo "No patchsystem could be found so the patch was applied inline and a copy \
+stored in debian/patches-applied. Please remember to mention this in your changelog."
+}
+
+add_patch_quilt() {
+ # $1 is the original patchfile, $2 the normalized name
+ # FIXME: use quilt import instead?
+ cp $1 $PREFIX/$2
+ if ! grep -q $2 $PREFIX/series; then
+ echo "$2" >> $PREFIX/series
+ fi
+ vcs_add $PREFIX/$2 $PREFIX/series
+}
+
+add_patch_cdbs() {
+ # $1 is the original patchfile, $2 the normalized name
+ cp $1 $PREFIX/$2
+ vcs_add $PREFIX/$2
+}
+
+add_patch_dpatch() {
+ # $1 is the original patchfile, $2 the normalized name
+ cp $1 $PREFIX
+ if ! grep -q $2 $PREFIX/00list; then
+ echo "$2" >> $PREFIX/00list
+ fi
+ vcs_add $PREFIX/$2 $PREFIX/00list
+}
+
+add_patch_none() {
+ # $1 is the original patchfile, $2 the normalized name
+ cp $1 $PREFIX/$2
+ vcs_add $PREFIX/$2
+}
+
+vcs_add() {
+ if [ -d .bzr ]; then
+ bzr add $@
+ elif [ -d .git ];then
+ git add $@
+ else
+ echo "Remember to add $@ to a VCS if you use one"
+ fi
+}
+
+vcs_commit() {
+ # check if debcommit is happy
+ if ! debcommit --noact 2>/dev/null; then
+ return
+ fi
+ # commit (if the user confirms)
+ debcommit --confirm
+}
+
+add_changelog() {
+ S="$PREFIX/$1: [DESCRIBE CHANGES HERE]"
+ if head -n1 debian/changelog|grep UNRELEASED; then
+ dch --append "$S"
+ else
+ dch --increment "$S"
+ fi
+ # let the user edit it
+ dch --edit
+}
+
+add_patch_tagging() {
+ # check if we have a description already
+ if grep "## Description:" $PREFIX/$1; then
+ return
+ fi
+ # if not, add one
+ RANGE=1,1
+ # make sure we keep the first line (for dpatch)
+ if head -n1 $PREFIX/$1|grep -q '^#'; then
+ RANGE=2,2
+ fi
+ sed -i ${RANGE}i"$PATCH_DESC" $PREFIX/$1
+}
+
+detect_patch_location() {
+ # Checks whether the specified patch exists in debian/patches or on the filesystem
+ FILENAME=${PATCHNAME##*/}
+
+ if [ -f "$PREFIX/$FILENAME" ]; then
+ PATCHTYPE="debian"
+ elif [ -f "$PATCHNAME" ]; then
+ PATCHTYPE="file"
+ PATCHORIG="$PATCHNAME"
+ else
+ if [ "$PATCHSYSTEM" = "none" ]; then
+ fatal_error "No patchsystem detected, cannot create new patch (no dpatch/quilt/cdbs?)"
+ else
+ PATCHTYPE="new"
+ fi
+ fi
+}
+
+handle_file_patch() {
+ if [ "$PATCHTYPE" = "file" ]; then
+ [ -f "$PATCHORIG" ] || fatal_error "No patch detected"
+
+ if [ "$PATCHSYSTEM" = "none" ]; then
+ # If we're supplied a file and there is no patchsys we apply it directly
+ # and store it in debian/applied patches
+ [ -d $PREFIX ] || mkdir $PREFIX
+
+ patch -p0 < "$PATCHORIG"
+ cp "$PATCHORIG" "$PREFIX/$PATCHNAME"
+ else
+ # Patch type is file but there is a patchsys present, so we add it
+ # correctly
+ cp "$PATCHORIG" "$PREFIX/$PATCHNAME"
+
+ if [ "$PATCHSYSTEM" = "quilt" ]; then
+ echo "$PATCHNAME" >> $PREFIX/series
+ elif [ "$PATCHSYSTEM" = "dpatch" ]; then
+ echo "$PATCHNAME" >> $PREFIX/00list
+
+ # Add the dpatch header to files that don't already have it
+ if ! grep -q "@DPATCH@" "$PREFIX/$PATCHNAME"; then
+ sed -i '1i#! /bin/sh /usr/share/dpatch/dpatch-run\n@DPATCH@' $PREFIX/$PATCHNAME
+ fi
+ fi
+
+ echo "Copying and applying new patch. You can now edit the patch or exit the subshell to save."
+ fi
+ fi
+}
+
+# TODO:
+# - edit-patch --remove implementieren
+# - dbs patch system
+
+main() {
+ # parse args
+ if [ $# -ne 1 ]; then
+ fatal_error "Need exactly one patch name"
+ fi
+ PATCHNAME="$1"
+ # do the work
+ ensure_debian_dir
+ detect_patchsystem
+ detect_patch_location
+ normalize_patch_path
+ normalize_patch_extension
+ handle_file_patch
+ if [ "$(basename $0 .sh)" = "edit-patch" ]; then
+ edit_patch_$PATCHSYSTEM $PATCHNAME
+ elif [ "$(basename $0 .sh)" = "add-patch" ]; then
+ add_patch_$PATCHSYSTEM $1 $PATCHNAME
+ else
+ fatal_error "Unknown script name: $0"
+ fi
+ add_patch_tagging $PATCHNAME
+ add_changelog $PATCHNAME
+ vcs_commit
+}
+
+main $@
--- /dev/null
+.TH GETBUILDLOG 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+getbuildlog \- download build logs from Debian auto\-builders
+.SH SYNOPSIS
+\fBgetbuildlog\fR \fIpackage\fR
+[\fIversion\-pattern\fR]
+[\fIarchitecture\-pattern\fR]
+.SH DESCRIPTION
+\fBgetbuildlog\fR downloads build logs of \fIpackage\fR from Debian
+auto\-builders. It downloads build logs of all versions and for all
+architectures if \fIversion\-pattern\fR and \fIarchitecture\-pattern\fR are
+not specified or empty, otherwise only build logs whose versions match
+\fIversion-pattern\fR and build logs whose architectures match
+\fIarchitecture-pattern\fR will be downloaded. The version and architecture
+patterns are interpreted as extended regular expressions as described in
+\fBgrep\fR(1).
+.PP
+If \fIversion-pattern\fR is "last" then only the logs for the most
+recent version of \fIpackage\fR found on buildd.debian.org will be
+downloaded.
+.PP
+If \fIversion-pattern\fR is "last-all" then the logs for the most recent
+version found on each build log index will be downloaded.
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Show usage information and examples.
+.TP
+\fB\-V\fR, \fB\-\-version\fR
+Show version and copyright information.
+.SH EXAMPLES
+.TP
+getbuildlog hello 2\\.2\-1 amd64
+Download amd64 build log for hello version 2.2\-1.
+.TP
+getbuildlog glibc "" mips.*
+Download mips(el) build logs of all glibc versions.
+.TP
+getbuildlog wesnoth .*bpo.*
+Download all build logs of backported wesnoth versions.
+.SH AUTHOR
+Written by Frank S. Thomas <fst@debian.org>.
--- /dev/null
+#!/bin/sh
+#
+# getbuildlog: download package build logs from Debian auto-builders
+#
+# Copyright © 2008 Frank S. Thomas <fst@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+set -e
+
+PROGNAME=`basename $0`
+
+usage() {
+ cat <<EOT
+Usage: $PROGNAME <package> [<version-pattern>] [<architecture-pattern>]
+ Downloads build logs of <package> from Debian auto-builders.
+ If <version-pattern> or <architecture-pattern> are given, only build logs
+ whose versions and architectures, respectively, matches the given patterns
+ are downloaded.
+
+ If <version-pattern> is "last" then only the logs for the most recent
+ version of <package> found on buildd.debian.org will be downloaded.
+
+ If <version-pattern> is "last-all" then the logs for the most recent
+ version found on each build log index will be downloaded.
+Options:
+ -h, --help Show this help message.
+ -V, --version Show version and copyright information.
+Examples:
+ # Download amd64 build log for hello version 2.2-1:
+ $PROGNAME hello 2\.2-1 amd64
+
+ # Download mips(el) build logs of all glibc versions:
+ $PROGNAME glibc "" mips.*
+
+ # Download all build logs of backported wesnoth versions:
+ $PROGNAME wesnoth .*bpo.*
+EOT
+}
+
+version() {
+ cat <<EOT
+This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2008 by Frank S. Thomas, all rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOT
+}
+
+[ "$1" = "-h" ] || [ "$1" = "--help" ] && usage && exit 0
+[ "$1" = "-V" ] || [ "$1" = "--version" ] && version && exit 0
+
+[ $# -ge 1 ] && [ $# -le 3 ] || { usage && exit 1; }
+
+if ! which wget >/dev/null 2>&1; then
+ echo "$PROGNAME: this program requires the wget package to be installed";
+ exit 1
+fi
+
+PACKAGE=$1
+VERSION=${2:-[:~+.[:alnum:]-]+}
+ARCH=${3:-[[:alnum:]-]+}
+ESCAPED_PACKAGE=`echo "$PACKAGE" | sed -e 's/\+/\\\+/g'`
+
+GET_LAST_VERSION=no
+if [ "$VERSION" = "last" ]; then
+ GET_LAST_VERSION=yes
+ VERSION=[:~+.[:alnum:]-]+
+elif [ "$VERSION" = "last-all" ]; then
+ GET_LAST_VERSION=all
+ VERSION=[:~+.[:alnum:]-]+
+fi
+
+PATTERN="fetch\.(cgi|php)\?pkg=$ESCAPED_PACKAGE&arch=$ARCH&ver=$VERSION&\
+stamp=[[:digit:]]+"
+
+getbuildlog() {
+ BASE=$1
+ ALL_LOGS=`mktemp`
+
+ trap "rm -f $ALL_LOGS" EXIT INT QUIT TERM
+
+ wget -q -O $ALL_LOGS "$BASE/status/logs.php?pkg=$PACKAGE"
+
+ # Put each href in $ALL_LOGS on a separate line so that $PATTERN
+ # matches only one href. This is required because grep is greedy.
+ sed -i -e "s/href=\"/\nhref=\"/g" $ALL_LOGS
+ # Quick-and-dirty unescaping
+ sed -i -e "s/&/\&/g" -e "s/%2B/\+/g" -e "s/%3A/:/g" -e "s/%7E/~/g" $ALL_LOGS
+
+ # If only the last version was requested, extract and sort
+ # the listed versions and determine the highest
+ if [ "$GET_LAST_VERSION" != "no" ]; then
+ LASTVERSION=$( \
+ for match in `grep -E -o "$PATTERN" $ALL_LOGS`; do
+ ver=${match##*ver=}
+ echo ${ver%%&*}
+ done | perl -e '
+ use lib "/usr/share/devscripts";
+ use Devscripts::Versort;
+ while (<>) { push @versions, [$_]; }
+ @versions = Devscripts::Versort::versort(@versions);
+ print $versions[0][0]; ' | sed -e "s/\+/\\\+/g"
+ )
+
+ NEWPATTERN="fetch\.(cgi|php)\?pkg=$ESCAPED_PACKAGE&\
+arch=$ARCH&ver=$LASTVERSION&stamp=[[:digit:]]+"
+ else
+ NEWPATTERN=$PATTERN
+ fi
+
+ for match in `grep -E -o "$NEWPATTERN" $ALL_LOGS`; do
+ ver=${match##*ver=}
+ ver=${ver%%&*}
+ arch=${match##*arch=}
+ arch=${arch%%&*}
+ match=`echo $match | sed -e 's/\+/%2B/g'`
+ # Mimick wget's behaviour, using a numerical suffix if needed,
+ # to support downloading several logs for a given tuple
+ # (unfortunately, -nc and -O means only the first file gets
+ # downloaded):
+ filename="${PACKAGE}_${ver}_${arch}.log"
+ if [ -f "$filename" ]; then
+ suffix=1
+ while [ -f "$filename.$suffix" ]; do suffix=$((suffix+1)); done
+ filename="$filename.$suffix"
+ fi
+ wget -O "$filename" "$BASE/status/$match&raw=1"
+ done
+
+ rm -f $ALL_LOGS
+
+ if [ "$GET_LAST_VERSION" = "yes" ]; then
+ PATTERN=$NEWPATTERN
+ GET_LAST_VERSION=no
+ fi
+}
+
+getbuildlog https://buildd.debian.org
+getbuildlog http://buildd.debian-ports.org
--- /dev/null
+.TH GREP-EXCUSES 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+grep-excuses \- search the testing excuses files for a specific maintainer
+.SH SYNOPSIS
+\fBgrep-excuses\fR [\fIoptions\fR] [\fImaintainer\fR|\fIpackage\fR]
+.SH DESCRIPTION
+\fBgrep-excuses\fR downloads the update_excuses.html file and greps it
+for the specified maintainer name. The \fBlibwww-perl\fR package is
+required for this script. If no name is given on the command line,
+first the environment variable \fBDEBFULLNAME\fR is used if it is
+defined, and failing that, the configuration variable described below
+is used.
+.SH OPTIONS
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+\fB\-\-wipnity\fR, \fB\-w\fR
+Get information from <https://release.debian.org/migration/>. A package name
+must be given when using this option.
+.TP
+.B \-\-help
+Show a brief usage message.
+.TP
+.B \-\-version
+Show version and copyright information.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variable is:
+.TP
+.B GREP_EXCUSES_MAINTAINER
+The default maintainer, email or package to grep for if none is
+specified on the command line.
+.SH "SEE ALSO"
+.BR devscripts.conf (5)
+.SH AUTHOR
+Joey Hess <joeyh@debian.org>;
+modifications by Julian Gilbey <jdg@debian.org>.
--- /dev/null
+#!/usr/bin/perl -w
+# Grep debian testing excuses file.
+#
+# Copyright 2002 Joey Hess <joeyh@debian.org>
+# Small mods Copyright 2002 Julian Gilbey <jdg@debian.org>
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use 5.006;
+use strict;
+use File::Basename;
+
+# Needed for --wipnity option
+
+my $term_size_broken;
+
+sub have_term_size {
+ return ($term_size_broken ? 0 : 1) if defined $term_size_broken;
+ # Load the Term::Size module safely
+ eval { require Term::Size; };
+ if ($@) {
+ if ($@ =~ /^Can\'t locate Term\/Size\.pm/) {
+ $term_size_broken="the libterm-size-perl package is not installed";
+ } else {
+ $term_size_broken="couldn't load Term::Size: $@";
+ }
+ } else {
+ $term_size_broken = 0;
+ }
+
+ return ($term_size_broken ? 0 : 1);
+}
+
+my $progname = basename($0);
+my $modified_conf_msg;
+
+my $url='https://release.debian.org/britney/update_excuses.html.gz';
+
+# No longer use these - see bug#309802
+my $cachedir = $ENV{'HOME'}."/.devscripts_cache/";
+my $cachefile = $cachedir . basename($url);
+unlink $cachefile if -f $cachefile;
+
+sub usage {
+ print <<"EOF";
+Usage: $progname [options] [<maintainer>|<package>]
+ Grep the Debian update_excuses file to find out about the packages
+ of <maintainer> or <package>. If neither are given, use the configuration
+ file setting or the environment variable DEBFULLNAME to determine the
+ maintainer name.
+Options:
+ --no-conf, --noconf Don\'t read devscripts config files;
+ must be the first option given
+ --wipnity, -w Check <https://release.debian.org/migration/>. A package
+ name must be given when using this option.
+ --help Show this help
+ --version Give version information
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOF
+}
+
+my $version = <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2002 by Joey Hess <joeyh\@debian.org>,
+and modifications are copyright 2002 by Julian Gilbey <jdg\@debian.org>
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+
+sub wipnity {
+die "$progname: Couldn't run wipnity: $term_size_broken\n" unless have_term_size();
+
+my $columns = Term::Size::chars();
+
+if (system("command -v w3m >/dev/null 2>&1") != 0) {
+ die "$progname: wipnity mode requires the w3m package to be installed\n";
+}
+
+while( my $package=shift ) {
+ my $dump = `w3m -dump -cols $columns "https://release.debian.org/migration/testing.pl?package=$package"`;
+ $dump =~ s/^.*?(?=Checking)//s;
+ $dump =~ s/^\[.*//ms;
+ print($dump);
+ }
+}
+
+# Now start by reading configuration files and then command line
+# The next stuff is boilerplate
+
+my $string;
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'GREP_EXCUSES_MAINTAINER' => '',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= "$var='$config_vars{$var}';\n";
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $string = $config_vars{'GREP_EXCUSES_MAINTAINER'};
+}
+
+while (@ARGV and $ARGV[0] =~ /^-/) {
+ if ($ARGV[0] eq '--wipnity' or $ARGV[0] eq '-w') {
+ if (@ARGV) {
+ shift;
+ $string=shift;
+ }
+ if (! $string or $string eq '') {
+ die "$progname: no package specified!\nTry $progname --help for help.\n";
+ }
+ if (@ARGV) {
+ die "$progname: too many arguments! Try $progname --help for help.\n";
+ } else { wipnity($string); exit 0; }
+ }
+ if ($ARGV[0] eq '--help') { usage(); exit 0; }
+ if ($ARGV[0] eq '--version') { print $version; exit 0; }
+ if ($ARGV[0] =~ /^--no-?conf$/) {
+ die "$progname: $ARGV[0] is only acceptable as the first command-line option!\n";
+ }
+ die "$progname: unrecognised option $ARGV[0]; try $progname --help for help\n";
+}
+
+if (! $string and exists $ENV{'DEBFULLNAME'}) {
+ $string = $ENV{'DEBFULLNAME'};
+}
+
+if (@ARGV) {
+ $string=shift;
+}
+if ($string eq '') {
+ die "$progname: no maintainer or package specified!\nTry $progname --help for help.\n";
+}
+if (@ARGV) {
+ die "$progname: too many arguments! Try $progname --help for help.\n";
+}
+
+if (system("command -v wget >/dev/null 2>&1") != 0) {
+ die "$progname: this program requires the wget package to be installed\n";
+}
+
+open EXCUSES, "wget -q -O - $url | zcat |" or
+ die "$progname: wget | zcat failed: $!\n";
+
+my $item='';
+my $mainlist=0;
+my $sublist=0;
+while (<EXCUSES>) {
+ if (! $mainlist) {
+ # Have we found the start of the actual content?
+ next unless /^\s*<ul>\s*$/;
+ $mainlist=1;
+ next;
+ }
+ # Have we reached the end?
+ if (! $sublist and m%</ul>%) {
+ $mainlist=0;
+ next;
+ }
+ next unless $mainlist;
+ # Strip hyperlinks
+ my $saveline=$_;
+ s%<a\s[^>]*>%%g;
+ s%</a>%%g;
+ s%>%>%g;
+ s%<%<%g;
+ # New item?
+ if (! $sublist and /^\s*<li>/) {
+ s%<li>%%;
+ $item = $_;
+ }
+ elsif (! $sublist and /^\s*<ul>/) {
+ $sublist=1;
+ }
+ elsif ($sublist and m%</ul>%) {
+ $sublist=0;
+ # Did the last item match?
+ if ($item=~/^-?\Q$string\E\s/ or
+ $item=~/^\s*Maintainer:\s[^\n]*\b\Q$string\E\b[^\n]*$/m) {
+ # In case there are embedded <li> tags
+ $item =~ s%<li>%\n %g;
+ print $item;
+ }
+ }
+ elsif ($sublist and /^\s*<li>/) {
+ s%<li>% %;
+ $item .= $_;
+ }
+ else {
+ warn "$progname: unrecognised line in update_excuses (line $.):\n$saveline";
+ }
+}
+close EXCUSES or die "$progname: read/zcat failed: $!\n";
+
+exit 0;
--- /dev/null
+#include <sys/types.h>
+#include <unistd.h>
+
+#undef vfork
+
+pid_t vfork(void){
+ return fork();
+}
--- /dev/null
+#!/usr/bin/perl
+# This script was originally based on the script of the same name from
+# the KDE SDK (by dfaure@kde.org)
+#
+# This version is
+# Copyright (C) 2007, 2008 Adam D. Barratt
+# Copyright (C) 2012 Francesco Poli
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program. If not, see <https://www.gnu.org/licenses/>.
+
+=head1 NAME
+
+licensecheck - simple license checker for source files
+
+=head1 SYNOPSIS
+
+B<licensecheck> B<--help>|B<--version>
+
+B<licensecheck> [B<--no-conf>] [B<--verbose>] [B<--copyright>]
+[B<-l>|B<--lines=>I<N>] [B<-i>|B<--ignore=>I<regex>] [B<-c>|B<--check=>I<regex>]
+[B<-m>|B<--machine>] [B<-r>|B<--recursive>]
+I<list of files and directories to check>
+
+=head1 DESCRIPTION
+
+B<licensecheck> attempts to determine the license that applies to each file
+passed to it, by searching the start of the file for text belonging to
+various licenses.
+
+If any of the arguments passed are directories, B<licensecheck> will add
+the files contained within to the list of files to process.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<--verbose>, B<--no-verbose>
+
+Specify whether to output the text being processed from each file before
+the corresponding license information.
+
+Default is to be quiet.
+
+=item B<-l=>I<N>, B<--lines=>I<N>
+
+Specify the number of lines of each file's header which should be parsed
+for license information. (Default is 60).
+
+=item B<-i=>I<regex>, B<--ignore=>I<regex>
+
+When processing the list of files and directories, the regular
+expression specified by this option will be used to indicate those which
+should not be considered (e.g. backup files, VCS metadata).
+
+=item B<-r>, B<--recursive>
+
+Specify that the contents of directories should be added
+recursively.
+
+=item B<-c=>I<regex>, B<--check=>I<regex>
+
+Specify a pattern against which filenames will be matched in order to
+decide which files to check the license of.
+
+The default includes common source files.
+
+=item B<--copyright>
+
+Also display copyright text found within the file
+
+=item B<-m>, B<--machine>
+
+Display the information in a machine readable way, i.e. in the form
+<file><tab><license>[<tab><copyright>] so that it can be easily sorted
+and/or filtered, e.g. with the B<awk> and B<sort> commands.
+Note that using the B<--verbose> option will kill the readability.
+
+=item B<--no-conf>, B<--noconf>
+
+Do not read any configuration files. This can only be used as the first
+option given on the command line.
+
+=back
+
+=head1 CONFIGURATION VARIABLES
+
+The two configuration files F</etc/devscripts.conf> and
+F<~/.devscripts> are sourced by a shell in that order to set
+configuration variables. Command line options can be used to override
+configuration file settings. Environment variable settings are
+ignored for this purpose. The currently recognised variables are:
+
+=over 4
+
+=item B<LICENSECHECK_VERBOSE>
+
+If this is set to I<yes>, then it is the same as the B<--verbose> command
+line parameter being used. The default is I<no>.
+
+=item B<LICENSECHECK_PARSELINES>
+
+If this is set to a positive number then the specified number of lines
+at the start of each file will be read whilst attempting to determine
+the license(s) in use. This is equivalent to the B<--lines> command line
+option.
+
+=back
+
+=head1 LICENSE
+
+This code is copyright by Adam D. Barratt <I<adam@adam-barratt.org.uk>>,
+all rights reserved; based on a script of the same name from the KDE
+SDK, which is copyright by <I<dfaure@kde.org>>.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the GNU
+General Public License, version 2 or later.
+
+=head1 AUTHOR
+
+Adam D. Barratt <adam@adam-barratt.org.uk>
+
+=cut
+
+use strict;
+use warnings;
+use Getopt::Long qw(:config gnu_getopt);
+use File::Basename;
+
+my $progname = basename($0);
+
+# From dpkg-source
+my $default_ignore_regex = '
+# Ignore general backup files
+(?:^|/).*~$|
+# Ignore emacs recovery files
+(?:^|/)\.#.*$|
+# Ignore vi swap files
+(?:^|/)\..*\.swp$|
+# Ignore baz-style junk files or directories
+(?:^|/),,.*(?:$|/.*$)|
+# File-names that should be ignored (never directories)
+(?:^|/)(?:DEADJOE|\.cvsignore|\.arch-inventory|\.bzrignore|\.gitignore)$|
+# File or directory names that should be ignored
+(?:^|/)(?:CVS|RCS|\.deps|\{arch\}|\.arch-ids|\.svn|\.hg|_darcs|\.git|
+\.shelf|_MTN|\.bzr(?:\.backup|tags)?)(?:$|/.*$)
+';
+
+# Take out comments and newlines
+$default_ignore_regex =~ s/^#.*$//mg;
+$default_ignore_regex =~ s/\n//sg;
+
+my $default_check_regex = '\.(c(c|pp|xx)?|h(h|pp|xx)?|f(77|90)?|go|p(l|m)|xs|sh|php|py(|x)|rb|java|js|vala|el|sc(i|e)|cs|pas|inc|dtd|xsl|mod|m|tex|mli?|(c|l)?hs)$';
+
+my $modified_conf_msg;
+
+my %OPT=(
+ verbose => '',
+ lines => '',
+ noconf => '',
+ ignore => '',
+ check => '',
+ recursive => 0,
+ copyright => 0,
+ machine => 0,
+);
+
+my $def_lines = 60;
+
+# Read configuration files and then command line
+# This is boilerplate
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'LICENSECHECK_VERBOSE' => 'no',
+ 'LICENSECHECK_PARSELINES' => $def_lines,
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+ }
+ $shell_cmd .= 'for file in ' . join(" ", @config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ # Check validity
+ $config_vars{'LICENSECHECK_VERBOSE'} =~ /^(yes|no)$/
+ or $config_vars{'LICENSECHECK_VERBOSE'} = 'no';
+ $config_vars{'LICENSECHECK_PARSELINES'} =~ /^[1-9][0-9]*$/
+ or $config_vars{'LICENSECHECK_PARSELINES'} = $def_lines;
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $OPT{'verbose'} = $config_vars{'LICENSECHECK_VERBOSE'} eq 'yes' ? 1 : 0;
+ $OPT{'lines'} = $config_vars{'LICENSECHECK_PARSELINES'};
+}
+
+GetOptions(\%OPT,
+ "help|h",
+ "check|c=s",
+ "copyright",
+ "ignore|i=s",
+ "lines|l=i",
+ "machine|m",
+ "noconf|no-conf",
+ "recursive|r",
+ "verbose!",
+ "version|v",
+) or die "Usage: $progname [options] filelist\nRun $progname --help for more details\n";
+
+$OPT{'lines'} = $def_lines if $OPT{'lines'} !~ /^[1-9][0-9]*$/;
+$OPT{'ignore'} = $default_ignore_regex if ! length $OPT{'ignore'};
+$OPT{'check'} = $default_check_regex if ! length $OPT{'check'};
+
+if ($OPT{'noconf'}) {
+ fatal("--no-conf is only acceptable as the first command-line option!");
+}
+if ($OPT{'help'}) { help(); exit 0; }
+if ($OPT{'version'}) { version(); exit 0; }
+
+die "Usage: $progname [options] filelist\nRun $progname --help for more details\n" unless @ARGV;
+
+$OPT{'lines'} = $def_lines if not defined $OPT{'lines'};
+
+my @files = ();
+my @find_args = ();
+my $files_count = @ARGV;
+
+push @find_args, qw(-maxdepth 1) unless $OPT{'recursive'};
+push @find_args, qw(-follow -type f -print);
+
+while (@ARGV) {
+ my $file = shift @ARGV;
+
+ if (-d $file) {
+ open my $FIND, '-|', 'find', $file, @find_args
+ or die "$progname: couldn't exec find: $!\n";
+
+ while (<$FIND>) {
+ chomp;
+ next unless m%$OPT{'check'}%;
+ # Skip empty files
+ next if (-z $_);
+ push @files, $_ unless m%$OPT{'ignore'}%;
+ }
+ close $FIND;
+ } else {
+ next unless ($files_count == 1) or $file =~ m%$OPT{'check'}%;
+ push @files, $file unless $file =~ m%$OPT{'ignore'}%;
+ }
+}
+
+while (@files) {
+ my $file = shift @files;
+ my $content = '';
+ my $copyright_match;
+ my $copyright = '';
+ my $license = '';
+ my %copyrights;
+
+ open (my $F, '<' ,$file) or die "Unable to access $file\n";
+ while (<$F>) {
+ last if ($. > $OPT{'lines'});
+ $content .= $_;
+ $copyright_match = parse_copyright($_);
+ if ($copyright_match) {
+ $copyrights{lc("$copyright_match")} = "$copyright_match";
+ }
+ }
+ close($F);
+
+ $copyright = join(" / ", values %copyrights);
+
+ print qq(----- $file header -----\n$content----- end header -----\n\n)
+ if $OPT{'verbose'};
+
+ $license = parselicense(clean_comments($content));
+
+ if ($OPT{'machine'}) {
+ print "$file\t$license";
+ print "\t" . ($copyright or "*No copyright*") if $OPT{'copyright'};
+ print "\n";
+ } else {
+ print "$file: ";
+ print "*No copyright* " unless $copyright;
+ print $license . "\n";
+ print " [Copyright: " . $copyright . "]\n"
+ if $copyright and $OPT{'copyright'};
+ print "\n" if $OPT{'copyright'};
+ }
+}
+
+sub parse_copyright {
+ my $copyright = '';
+ my $match;
+
+ my $copyright_indicator_regex = '
+ (?:copyright # The full word
+ |copr\. # Legally-valid abbreviation
+ |\x{00a9} # Unicode character COPYRIGHT SIGN
+ |\xc2\xa9 # Unicode copyright sign encoded in iso8859
+ |\(c\) # Legally-null representation of sign
+ )';
+ my $copyright_disindicator_regex = '
+ \b(?:info(?:rmation)? # Discussing copyright information
+ |(notice|statement|claim|string)s? # Discussing the notice
+ |and|or|is|in|to # Part of a sentence
+ |(holder|owner)s? # Part of a sentence
+ |ownership # Part of a sentence
+ )\b';
+ my $copyright_predisindicator_regex = '(
+ ^[#]define\s+.*\(c\) # #define foo(c) -- not copyright
+ )';
+
+ if ( ! m%$copyright_predisindicator_regex%ix) {
+
+ if (m%$copyright_indicator_regex(?::\s*|\s+)(\S.*)$%ix) {
+ $match = $1;
+
+ # Ignore lines matching "see foo for copyright information" etc.
+ if ($match !~ m%^\s*$copyright_disindicator_regex%ix) {
+ # De-cruft
+ $match =~ s/([,.])?\s*$//;
+ $match =~ s/$copyright_indicator_regex//igx;
+ $match =~ s/^\s+//;
+ $match =~ s/\s{2,}/ /g;
+ $match =~ s/\\@/@/g;
+ $copyright = $match;
+ }
+ }
+ }
+
+ return $copyright;
+}
+
+sub clean_comments {
+ local $_ = shift or return q{};
+
+ # Remove generic comments: look for 4 or more lines beginning with
+ # regular comment pattern and trim it. Fall back to old algorithm
+ # if no such pattern found.
+ my @matches = m/^\s*([^a-zA-Z0-9\s]{1,3})\s\w/mg;
+ if (@matches >= 4) {
+ my $comment_re = qr/\s*[\Q$matches[0]\E]{1,3}\s*/;
+ s/^$comment_re//mg;
+ }
+
+ # Remove Fortran comments
+ s/^[cC] //gm;
+ tr/\t\r\n/ /;
+
+ # Remove C / C++ comments
+ s#(\*/|/[/*])##g;
+ tr% A-Za-z.,@;0-9\(\)/-%%cd;
+ tr/ //s;
+
+ return $_;
+}
+
+sub help {
+ print <<"EOF";
+Usage: $progname [options] filename [filename ...]
+Valid options are:
+ --help, -h Display this message
+ --version, -v Display version and copyright info
+ --no-conf, --noconf Don't read devscripts config files; must be
+ the first option given
+ --verbose Display the header of each file before its
+ license information
+ --lines, -l Specify how many lines of the file header
+ should be parsed for license information
+ (Default: $def_lines)
+ --check, -c Specify a pattern indicating which files should
+ be checked
+ (Default: '$default_check_regex')
+ --machine, -m Display in a machine readable way (good for awk)
+ --recursive, -r Add the contents of directories recursively
+ --copyright Also display the file's copyright
+ --ignore, -i Specify that files / directories matching the
+ regular expression should be ignored when
+ checking files
+ (Default: '$default_ignore_regex')
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOF
+}
+
+sub version {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+Copyright (C) 2007, 2008 by Adam D. Barratt <adam\@adam-barratt.org.uk>; based
+on a script of the same name from the KDE SDK by <dfaure\@kde.org>.
+
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2, or (at your option) any
+later version.
+EOF
+}
+
+sub parselicense {
+ my ($licensetext) = @_;
+
+ my $gplver = "";
+ my $extrainfo = "";
+ my $license = "";
+
+ if ($licensetext =~ /version ([^, ]+?)[.,]? (?:\(?only\)?.? )?(?:of the GNU (Affero )?(Lesser |Library )?General Public License )?(as )?published by the Free Software Foundation/i or
+ $licensetext =~ /GNU (?:Affero )?(?:Lesser |Library )?General Public License (?:as )?published by the Free Software Foundation[;,] version ([^, ]+?)[.,]? /i) {
+
+ $gplver = " (v$1)";
+ } elsif ($licensetext =~ /GNU (?:Affero )?(?:Lesser |Library )?General Public License, version (\d+(?:\.\d+)?)[ \.]/) {
+ $gplver = " (v$1)";
+ } elsif ($licensetext =~ /either version ([^ ]+)(?: of the License)?, or \(at your option\) any later version/) {
+ $gplver = " (v$1 or later)";
+ }
+
+ if ($licensetext =~ /(?:675 Mass Ave|59 Temple Place|51 Franklin Steet|02139|02111-1307)/i) {
+ $extrainfo = " (with incorrect FSF address)$extrainfo";
+ }
+
+ if ($licensetext =~ /permission (?:is (also granted|given))? to link (the code of )?this program with (any edition of )?(Qt|the Qt library)/i) {
+ $extrainfo = " (with Qt exception)$extrainfo"
+ }
+
+ if ($licensetext =~ /(All changes made in this file will be lost|DO NOT (EDIT|delete this file)|Generated (automatically|by|from)|generated.*file)/i) {
+ $license = "GENERATED FILE";
+ }
+
+ if ($licensetext =~ /((is free software.? )?you can redistribute (it|them) and\/or modify (it|them)|is licensed) under the terms of (version [^ ]+ of )?the (GNU (Library |Lesser )General Public License|LGPL)/i) {
+ $license = "LGPL$gplver$extrainfo $license";
+ }
+
+ if ($licensetext =~ /is free software.? you can redistribute (it|them) and\/or modify (it|them) under the terms of the (GNU Affero General Public License|AGPL)/i) {
+ $license = "AGPL$gplver$extrainfo $license";
+ }
+
+ if ($licensetext =~ /(is free software.? )?you (can|may) redistribute (it|them) and\/or modify (it|them) under the terms of (?:version [^ ]+ (?:\(?only\)? )?of )?the GNU General Public License/i) {
+ $license = "GPL$gplver$extrainfo $license";
+ }
+
+ if ($licensetext =~ /is distributed under the terms of the GNU General Public License,/
+ and length $gplver) {
+ $license = "GPL$gplver$extrainfo $license";
+ }
+
+ if ($licensetext =~ /is distributed.*terms.*GPL/) {
+ $license = "GPL (unversioned/unknown version) $license";
+ }
+
+ if ($licensetext =~ /This file is part of the .*Qt GUI Toolkit. This file may be distributed under the terms of the Q Public License as defined/) {
+ $license = "QPL (part of Qt) $license";
+ } elsif ($licensetext =~ /may (be distributed|redistribute it) under the terms of the Q Public License/) {
+ $license = "QPL $license";
+ }
+
+ if ($licensetext =~ /opensource\.org\/licenses\/mit-license\.php/) {
+ $license = "MIT/X11 (BSD like) $license";
+ } elsif ($licensetext =~ /Permission is hereby granted, free of charge, to any person obtaining a copy of this software and(\/or)? associated documentation files \(the (Software|Materials)\), to deal in the (Software|Materials)/) {
+ $license = "MIT/X11 (BSD like) $license";
+ } elsif ($licensetext =~ /Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose/) {
+ $license = "MIT/X11 (BSD like) $license";
+ }
+
+ if ($licensetext =~ /Permission to use, copy, modify, and(\/or)? distribute this software for any purpose with or without fee is hereby granted, provided.*copyright notice.*permission notice.*all copies/) {
+ $license = "ISC $license";
+ }
+
+ if ($licensetext =~ /THIS SOFTWARE IS PROVIDED .*AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY/) {
+ if ($licensetext =~ /All advertising materials mentioning features or use of this software must display the following acknowledge?ment.*This product includes software developed by/i) {
+ $license = "BSD (4 clause) $license";
+ } elsif ($licensetext =~ /(The name(?:\(s\))? .*? may not|Neither the (names? .*?|authors?) nor the names of( (its|their|other|any))? contributors may) be used to endorse or promote products derived from this software/i) {
+ $license = "BSD (3 clause) $license";
+ } elsif ($licensetext =~ /Redistributions of source code must retain the above copyright notice/i) {
+ $license = "BSD (2 clause) $license";
+ } else {
+ $license = "BSD $license";
+ }
+ }
+
+ if ($licensetext =~ /Mozilla Public License,? (Version|v\.) (\d+(?:\.\d+)?)/) {
+ $license = "MPL (v$2) $license";
+ }
+
+ if ($licensetext =~ /Released under the terms of the Artistic License ([^ ]+)/) {
+ $license = "Artistic (v$1) $license";
+ }
+
+ if ($licensetext =~ /is free software under the Artistic [Ll]icense/) {
+ $license = "Artistic $license";
+ }
+
+ if ($licensetext =~ /This program is free software; you can redistribute it and\/or modify it under the same terms as Perl itself/) {
+ $license = "Perl $license";
+ }
+
+ if ($licensetext =~ /under the Apache License, Version ([^ ]+)/) {
+ $license = "Apache (v$1) $license";
+ }
+
+ if ($licensetext =~ /(THE BEER-WARE LICENSE)/i) {
+ $license = "Beerware $license";
+ }
+
+ if ($licensetext =~ /This source file is subject to version ([^ ]+) of the PHP license/) {
+ $license = "PHP (v$1) $license";
+ }
+
+ if ($licensetext =~ /under the terms of the CeCILL /) {
+ $license = "CeCILL $license";
+ }
+
+ if ($licensetext =~ /under the terms of the CeCILL-([^ ]+) /) {
+ $license = "CeCILL-$1 $license";
+ }
+
+ if ($licensetext =~ /under the SGI Free Software License B/) {
+ $license = "SGI Free Software License B $license";
+ }
+
+ if ($licensetext =~ /is in the public domain/i) {
+ $license = "Public domain $license";
+ }
+
+ if ($licensetext =~ /terms of the Common Development and Distribution License(, Version ([^(]+))? \(the License\)/) {
+ $license = "CDDL " . ($1 ? "(v$2) " : '') . $license;
+ }
+
+ if ($licensetext =~ /Microsoft Permissive License \(Ms-PL\)/) {
+ $license = "Ms-PL $license";
+ }
+
+ if ($licensetext =~ /Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license \(the \"Software\"\)/ or
+ $licensetext =~ /Boost Software License([ ,-]+Version ([^ ]+)?(\.))/i) {
+ $license = "BSL " . ($1 ? "(v$2) " : '') . $license;
+ }
+
+ if ($licensetext =~ /PYTHON SOFTWARE FOUNDATION LICENSE (VERSION ([^ ]+))/i) {
+ $license = "PSF " . ($1 ? "(v$2) " : '') . $license;
+ }
+
+ if ($licensetext =~ /The origin of this software must not be misrepresented.*Altered source versions must be plainly marked as such.*This notice may not be removed or altered from any source distribution/ or
+ $licensetext =~ /see copyright notice in zlib\.h/) {
+ $license = "zlib/libpng $license";
+ } elsif ($licensetext =~ /This code is released under the libpng license/) {
+ $license = "libpng $license";
+ }
+
+ if ($licensetext =~ /Do What The Fuck You Want To Public License, Version ([^, ]+)/i) {
+ $license = "WTFPL (v$1) $license";
+ }
+
+ if ($licensetext =~ /Do what The Fuck You Want To Public License/i) {
+ $license = "WTFPL $license";
+ }
+
+ if ($licensetext =~ /(License WTFPL|Under (the|a) WTFPL)/i) {
+ $license = "WTFPL $license";
+ }
+
+ $license = "UNKNOWN" if (!length($license));
+
+ # Remove trailing spaces.
+ $license =~ s/\s+$//;
+
+ return $license;
+}
+
+sub fatal {
+ my ($pack,$file,$line);
+ ($pack,$file,$line) = caller();
+ (my $msg = "$progname: fatal error at line $line:\n@_\n") =~ tr/\0//d;
+ $msg =~ s/\n\n$/\n/;
+ die $msg;
+}
--- /dev/null
+.TH LIST-UNRELEASED 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+list-unreleased \- display UNRELEASED packages
+.SH SYNOPSIS
+\fBlist-unreleased\fR [\fIarg\fR ...] [\fIpath\fR ...]
+.SH DESCRIPTION
+Searches for packages whose changelogs indicate there are pending changes
+(UNRELEASED) and either lists them or displays the relevant changelog entry.
+.PP
+By default it searches for packages under the current directory. If a path
+is specified it will look for packages under that directory instead.
+.SH OPTIONS
+.TP
+.B -c
+Display pending changes.
+.TP
+.B -R
+Don't recurse into subdirectories looking for packages.
+.SH "SEE ALSO"
+.BR debchange (1)
+.SH AUTHOR
+\fBlist-unreleased\fR was written by Frans Pop <elendil@planet.nl>.
+This manual page was written by Joey Hess <joeyh@debian.org>.
--- /dev/null
+#!/bin/bash
+
+# Script searches for packages with pending changes (UNRELEASED) and
+# either lists them or displays the relevant changelog entry.
+
+# Usage: list-unreleased [-cR]
+# -c : display pending changes
+# -R : don't recurse
+
+# Copyright: Frans Pop <elendil@planet.nl>, 2007
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+
+PATHS=""
+DO_CL=""
+RECURSE=1
+
+while true; do
+ case "$1" in
+ "")
+ break ;;
+ -c)
+ DO_CL=1
+ ;;
+ -R)
+ RECURSE=
+ ;;
+ -*)
+ echo "unrecognized argument '$1'"
+ exit 1
+ ;;
+ *)
+ PATHS="${PATHS:+$PATHS }$1"
+ ;;
+ esac
+ shift
+done
+
+[ "$PATHS" ] || PATHS=.
+
+vcs_dirs='(\.(svn|hg|git|bzr)|_darcs|_MTN|CVS)'
+get_list() {
+ local path="$1"
+
+ for dir in $(
+ if [ "$RECURSE" ]; then
+ find "$path" -type d | egrep -v "$vcs_dirs"
+ else
+ find "$path" -maxdepth 1 -type d | egrep -v "$vcs_dirs"
+ fi
+ ); do
+ changelog="$dir/debian/changelog"
+ if [ -f "$changelog" ] ; then
+ if head -n1 "$changelog" | grep -q UNRELEASED; then
+ echo $dir
+ fi
+ fi
+ done | sort
+}
+
+print_cl() {
+ local package="$1"
+ changelog="$package/debian/changelog"
+
+ # Check if more than one UNRELEASED entry at top of changelog
+ Ucount=$(grep "^[^ ]" $changelog | \
+ head -n2 | grep -c UNRELEASED)
+ if [ $Ucount -eq 1 ]; then
+ sed -n "1,/^ --/p" $changelog
+ else
+ echo "ERROR: changelog has more than one UNRELEASED entry!"
+ # Second sed is to add back a blank line between entries
+ sed -n "/^[^ ].*UNRELEASED/,/^ --/p" $changelog | \
+ sed '2,$s/^\([^ ]\)/\n\1/'
+ fi
+}
+
+first=""
+for path in $PATHS; do
+ if [ -z "$DO_CL" ]; then
+ echo "$(get_list "$path" | sed "s:^\./::")"
+ else
+ for package in $(get_list "$path"); do
+ [ -z "$first" ] || echo -e "\n====================\n"
+ first=1
+
+ print_cl "$package"
+ done
+ fi
+done
--- /dev/null
+.TH MANPAGE-ALERT 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+manpage-alert \- check for binaries without corresponding manpages
+.SH SYNOPSIS
+\fBmanpage-alert\fR [\fIpath list\fR]
+.br
+\fBmanpage-alert \-\-help\fR|\fB\-\-version\fR
+.SH DESCRIPTION
+\fBmanpage-alert\fR searches the given list of paths for binaries without
+corresponding manpages.
+.P
+If no paths are specified on the command line, the path list
+\fI/bin /sbin /usr/bin /usr/sbin /usr/games\fR will be assumed.
+.SH OPTIONS
+.BR \-\-help ", " \-h
+Show a summary of options.
+.TP
+.BR \-\-version ", " \-v
+Show version and copyright information.
+.SH AUTHOR
+\fBmanpage-alert\fR was written by Branden Robinson and modified by
+Julian Gilbey <jdg@debian.org> and Adam D. Barratt
+<debian\-bts@adam\-barratt.org.uk> (who also wrote this manpage) for the
+devscripts package.
+.P
+This manpage and the associated program are licensed under the terms of
+the GPL, version 2 or later.
+
--- /dev/null
+#!/bin/bash
+#
+# Copyright 2005 Branden Robinson
+# Changes copyright 2007 by their respective authors
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+usage() {
+ cat <<EOF
+Usage: manpage-alert [options | paths]
+ Options:
+ -h, --help This usage screen.
+ -V, --version Display the version and copyright information
+
+ This script will locate executables in the given paths for which no
+ manpage is available.
+
+ If no paths are specified on the command line, "/bin /sbin /usr/bin
+ /usr/sbin /usr/games" will be used by default.
+EOF
+}
+
+version() {
+ cat <<EOF
+This is manpage-alert, from the Debian devscripts package, version ###VERSION###
+This code is (C) 2005 by Branden Robinson, all rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+}
+
+case "$1" in
+ --help|-h) usage; exit 0;;
+ --version|-V) version; exit 0;;
+esac
+
+if [ $# -lt 1 ]; then
+ set -- /bin /sbin /usr/bin /usr/sbin /usr/games
+fi
+
+NUM_EXECUTABLES=0
+NUM_MANPAGES_FOUND=0
+NUM_MANPAGES_MISSING=0
+
+for DIR in "$@"; do
+ for F in "$DIR"/*; do
+ # Skip as it's a symlink to /usr/bin
+ if [ "$F" = "/usr/bin/X11" ]; then continue; fi
+
+ NUM_EXECUTABLES=$(( $NUM_EXECUTABLES + 1 ))
+
+ OUT=$(man -w -S 1:8:6 "${F##*/}" 2>&1 >/dev/null)
+ RET=$?
+ if [ $RET = "0" ]; then
+ NUM_MANPAGES_FOUND=$(( $NUM_MANPAGES_FOUND + 1 ))
+ else
+ echo "$OUT" | perl -ne "next if /^.*'man 7 undocumented'.*$/;" \
+ -e "s,(\W)\Q${F##*/}\E(?:\b|$),\1$F,; s,//,/,; print;"
+ NUM_MANPAGES_MISSING=$(( $NUM_MANPAGES_MISSING + 1 ))
+ fi
+ done
+done
+
+printf "Of %d commands, found manpages for %d (%d missing).\n" \
+ $NUM_EXECUTABLES \
+ $NUM_MANPAGES_FOUND \
+ $NUM_MANPAGES_MISSING
+
+# vim:set ai et sw=4 ts=4 tw=80:
--- /dev/null
+#!/usr/bin/perl -w
+
+# mass-bug: mass-file a bug report against a list of packages
+# For options, see the usage message below.
+#
+# Copyright 2006 by Joey Hess <joeyh@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+=head1 NAME
+
+mass-bug - mass-file a bug report against a list of packages
+
+=head1 SYNOPSIS
+
+B<mass-bug> [I<options>] B<--subject=">I<bug subject>B<"> I<template package-list>
+
+=head1 DESCRIPTION
+
+mass-bug assists in filing a mass bug report in the Debian BTS on a set of
+packages. For each package in the package-list file (which should list one
+package per line together with an optional version number separated
+from the package name by an underscore), it fills out the template, adds
+BTS pseudo-headers, and either displays or sends the bug report.
+
+Warning: Some care has been taken to avoid unpleasant and common mistakes,
+but this is still a power tool that can generate massive amounts of bug
+report mails. Use it with care, and read the documentation in the
+Developer's Reference about mass filing of bug reports first.
+
+=head1 TEMPLATE
+
+The template file is the body of the message that will be sent for each bug
+report, excluding the BTS pseudo-headers. In the template, #PACKAGE# is
+replaced with the name of the package. If a version was specified for
+the package, #VERSION# will be replaced by that version.
+
+The components of the version number may be specified using #EPOCH#,
+#UPSTREAM_VERSION# and #REVISION#. #EPOCH# includes the trailing colon and
+#REVISION# the leading dash so that #EPOCH#UPSTREAM_VERSION##REVISION# is
+always the same as #VERSION#.
+
+Note that text in the template will be automatically word-wrapped to 70
+columns, up to the start of a signature (indicated by S<'-- '> at the
+start of a line on its own). This is another reason to avoid including
+BTS pseudo-headers in your template.
+
+=head1 OPTIONS
+
+B<mass-bug> examines the B<devscripts> configuration files as described
+below. Command line options override the configuration file settings,
+though.
+
+=over 4
+
+=item B<--severity=>(B<wishlist>|B<minor>|B<normal>|B<important>|B<serious>|B<grave>|B<critical>)
+
+Specify the severity with which bugs should be filed. Default
+is B<normal>.
+
+=item B<--display>
+
+Fill out the templates for each package and display them all for
+verification. This is the default behavior.
+
+=item B<--send>
+
+Actually send the bug reports.
+
+=item B<--subject=">I<bug subject>B<">
+
+Specify the subject of the bug report. The subject will be automatically
+prefixed with the name of the package that the bug is filed against.
+
+=item B<--tags>
+
+Set the BTS pseudo-header for tags.
+
+=item B<--user>
+
+Set the BTS pseudo-header for a usertags' user.
+
+=item B<--usertags>
+
+Set the BTS pseudo-header for usertags.
+
+=item B<--source>
+
+Specify that package names refer to source packages rather than binary
+packages.
+
+=item B<--sendmail=>I<SENDMAILCMD>
+
+Specify the B<sendmail> command. The command will be split on white
+space and will not be passed to a shell. Default is F</usr/sbin/sendmail>.
+
+=item B<--no-wrap>
+
+Do not wrap the template to lines of 70 characters.
+
+=item B<--no-conf>, B<--noconf>
+
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+
+=item B<--help>
+
+Provide a usage message.
+
+=item B<--version>
+
+Display version information.
+
+=back
+
+=head1 ENVIRONMENT
+
+B<DEBEMAIL> and B<EMAIL> can be set in the environment to control the email
+address that the bugs are sent from.
+
+=head1 CONFIGURATION VARIABLES
+
+The two configuration files F</etc/devscripts.conf> and
+F<~/.devscripts> are sourced by a shell in that order to set
+configuration variables. Command line options can be used to override
+configuration file settings. Environment variable settings are
+ignored for this purpose. The currently recognised variables are:
+
+=over 4
+
+=item B<BTS_SENDMAIL_COMMAND>
+
+If this is set, specifies a B<sendmail> command to use instead of
+F</usr/sbin/sendmail>. Same as the B<--sendmail> command line option.
+
+=back
+
+=cut
+
+use strict;
+use Getopt::Long qw(:config gnu_getopt);
+use Text::Wrap;
+use File::Basename;
+use POSIX qw(locale_h strftime);
+
+setlocale(LC_TIME, "C"); # so that strftime is locale independent
+
+my $progname = basename($0);
+$Text::Wrap::columns=70;
+my $submission_email="maintonly\@bugs.debian.org";
+my $sendmailcmd='/usr/sbin/sendmail';
+my $modified_conf_msg;
+my %versions;
+
+sub usageerror {
+ die "Usage: $progname [options] --subject=\"bug subject\" <template> <package-list>\n";
+}
+
+sub usage {
+ print <<"EOT";
+Usage:
+ $progname [options] --subject="bug subject" <template> <package-list>
+
+Valid options are:
+ --display Display the messages but don\'t send them
+ --send Actually send the mass bug reports to the BTS
+ --subject="bug subject"
+ Text for email subject line (will be prefixed
+ with "package: ")
+ --severity=(wishlist|minor|normal|important|serious|grave|critical)
+ Specify the severity of the bugs to be filed
+ (default "normal")
+
+ --tags=tags Set the BTS pseudo-header for tags.
+ --user=user Set the BTS pseudo-header for a usertags' user
+ --usertags=usertags Set the BTS pseudo-header for usertags
+ --source Specify that package names refer to source packages
+
+ --sendmail=cmd Sendmail command to use (default /usr/sbin/sendmail)
+ --no-wrap Don't wrap the template to 70 chars.
+ --no-conf, --noconf Don\'t read devscripts config files;
+ must be the first option given
+ --help Display this message
+ --version Display version and copyright info
+
+ <template> File containing email template; #PACKAGE# will
+ be replaced by the package name and #VERSION#
+ with the corresponding version (or a blank
+ string if the version was not specified)
+ <package-list> File containing list of packages, one per line
+ in the format package(_version)
+
+ Ensure that you read the Developer\'s Reference on mass-filing bugs before
+ using this script!
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOT
+}
+
+sub version () {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2006 by Joey Hess, all rights reserved.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+}
+
+
+# Next, read read configuration files and then command line
+# The next stuff is boilerplate
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'BTS_SENDMAIL_COMMAND' => '/usr/sbin/sendmail',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ # Check validity
+ $config_vars{'BTS_SENDMAIL_COMMAND'} =~ /./
+ or $config_vars{'BTS_SENDMAIL_COMMAND'}='/usr/sbin/sendmail';
+
+ if ($config_vars{'BTS_SENDMAIL_COMMAND'} ne '/usr/sbin/sendmail') {
+ my $cmd = (split ' ', $config_vars{'BTS_SENDMAIL_COMMAND'})[0];
+ unless ($cmd =~ /^~?[A-Za-z0-9_\-\+\.\/]*$/) {
+ warn "BTS_SENDMAIL_COMMAND contained funny characters: $cmd\nReverting to default value /usr/sbin/sendmail\n";
+ $config_vars{'BTS_SENDMAIL_COMMAND'}='/usr/sbin/sendmail';
+ } elsif (system("command -v $cmd >/dev/null 2>&1") != 0) {
+ warn "BTS_SENDMAIL_COMMAND $cmd could not be executed.\nReverting to default value /usr/sbin/sendmail\n";
+ $config_vars{'BTS_SENDMAIL_COMMAND'}='/usr/sbin/sendmail';
+ }
+ }
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $sendmailcmd = $config_vars{'BTS_SENDMAIL_COMMAND'};
+}
+
+
+sub gen_subject {
+ my $subject=shift;
+ my $package=shift;
+
+ return "$package\: $subject";
+}
+
+sub gen_bug {
+ my $template_text=shift;
+ my $package=shift;
+ my $severity=shift;
+ my $tags=shift;
+ my $user=shift;
+ my $usertags=shift;
+ my $nowrap=shift;
+ my $type=shift;
+ my $version="";
+ my $bugtext;
+
+ $version = $versions{$package} || "";
+
+ my ($epoch, $upstream, $revision) = ($version =~ /^(\d+:)?(.+?)(-[^-]+)?$/);
+ $epoch ||= "";
+ $revision ||= "";
+
+ $template_text=~s/#PACKAGE#/$package/g;
+ $template_text=~s/#VERSION#/$version/g;
+ $template_text=~s/#EPOCH#/$epoch/g;
+ $template_text=~s/#UPSTREAM_VERSION#/$upstream/g;
+ $template_text=~s/#REVISION#/$revision/g;
+
+ $version = "Version: $version\n" if $version;
+
+ unless ($nowrap) {
+ if ($template_text =~ /\A(.*?)(^-- $)(.*)/ms) { # there's a sig involved
+ my ($presig, $sig) = ($1, $2 . $3);
+ $template_text=fill("", "", $presig) . "\n" . $sig;
+ } else {
+ $template_text=fill("", "", $template_text);
+ }
+ }
+ $bugtext = "$type: $package\n$version" . "Severity: $severity\n$tags$user$usertags\n$template_text";
+ return $bugtext;
+}
+
+sub div {
+ print +("-" x 79)."\n";
+}
+
+sub mailbts {
+ my ($subject, $body, $to, $from) = @_;
+
+ if (defined $from) {
+ my $date = strftime "%a, %d %b %Y %T %z", localtime;
+
+ my $pid = open(MAIL, "|-");
+ if (! defined $pid) {
+ die "$progname: Couldn't fork: $!\n";
+ }
+ $SIG{'PIPE'} = sub { die "$progname: pipe for $sendmailcmd broke\n"; };
+ if ($pid) {
+ # parent
+ print MAIL <<"EOM";
+From: $from
+To: $to
+Subject: $subject
+Date: $date
+X-Generator: mass-bug from devscripts ###VERSION###
+
+$body
+EOM
+ close MAIL or die "$progname: sendmail error: $!\n";
+ }
+ else {
+ # child
+ exec(split(' ', $sendmailcmd), "-t")
+ or die "$progname: error running sendmail: $!\n";
+ }
+ }
+ else { # No $from
+ unless (system("command -v mail >/dev/null 2>&1") == 0) {
+ die "$progname: You need to either specify an email address (say using DEBEMAIL)\n or have the mailx/mailutils package installed to send mail!\n";
+ }
+ my $pid = open(MAIL, "|-");
+ if (! defined $pid) {
+ die "$progname: Couldn't fork: $!\n";
+ }
+ $SIG{'PIPE'} = sub { die "$progname: pipe for mail broke\n"; };
+ if ($pid) {
+ # parent
+ print MAIL $body;
+ close MAIL or die "$progname: error running mail: $!\n";
+ }
+ else {
+ # child
+ exec("mail", "-s", $subject, $to)
+ or die "$progname: error running mail: $!\n";
+ }
+ }
+}
+
+my $mode="display";
+my $subject;
+my $severity="normal";
+my $tags="";
+my $user="";
+my $usertags="";
+my $type="Package";
+my $opt_sendmail;
+my $nowrap="";
+if (! GetOptions(
+ "display" => sub { $mode="display" },
+ "send" => sub { $mode="send" },
+ "subject=s" => \$subject,
+ "severity=s" => \$severity,
+ "tags=s" => \$tags,
+ "user=s" => \$user,
+ "usertags=s" => \$usertags,
+ "source" => sub { $type="Source"; },
+ "sendmail=s" => \$opt_sendmail,
+ "help" => sub { usage(); exit 0; },
+ "version" => sub { version(); exit 0; },
+ "no-wrap" => sub { $nowrap=1; },
+ )) {
+ usageerror();
+}
+
+if (! defined $subject || ! length $subject) {
+ print STDERR "$progname: You must specify a subject for the bug reports.\n";
+ usageerror();
+}
+
+unless ($severity =~ /^(wishlist|minor|normal|important|serious|grave|critical)$/) {
+ print STDERR "$progname: Severity must be one of wishlist, minor, normal, important, serious, grave or critical.\n";
+ usageerror();
+}
+
+if (@ARGV != 2) {
+ usageerror();
+}
+
+if ($tags) {
+ $tags = "Tags: $tags\n";
+}
+
+if ($user) {
+ $user = "User: $user\n";
+}
+
+if ($usertags) {
+ $usertags = "Usertags: $usertags\n";
+}
+
+if ($opt_sendmail) {
+ if ($opt_sendmail ne '/usr/sbin/sendmail'
+ and $opt_sendmail ne $sendmailcmd) {
+ my $cmd = (split ' ', $opt_sendmail)[0];
+ unless ($cmd =~ /^~?[A-Za-z0-9_\-\+\.\/]*$/) {
+ warn "--sendmail command contained funny characters: $cmd\nReverting to default value $sendmailcmd\n";
+ undef $opt_sendmail;
+ } elsif (system("command -v $cmd >/dev/null 2>&1") != 0) {
+ warn "--sendmail command $cmd could not be executed.\nReverting to default value $sendmailcmd\n";
+ undef $opt_sendmail;
+ }
+ }
+}
+$sendmailcmd = $opt_sendmail if $opt_sendmail;
+
+
+my $template=shift;
+my $package_list=shift;
+
+my $template_text;
+open (T, "$template") || die "$progname: error reading $template: $!\n";
+{
+ local $/=undef;
+ $template_text=<T>;
+}
+close T;
+if (! length $template_text) {
+ die "$progname: empty template\n";
+}
+
+my @packages;
+open (L, "$package_list") || die "$progname: error reading $package_list: $!\n";
+while (<L>) {
+ chomp;
+ if (! /^([-+\.a-z0-9]+)(?:_(.*))?$/) {
+ die "\"$_\" does not look like the name of a Debian package\n";
+ }
+ push @packages, $1;
+ $versions{$1} = $2 if $2;
+}
+close L;
+
+# Uses variables from above.
+sub showsample {
+ my $package=shift;
+
+ print "To: $submission_email\n";
+ print "Subject: ".gen_subject($subject, $package)."\n";
+ print "\n";
+ print gen_bug($template_text, $package, $severity, $tags, $user, $usertags, $nowrap, $type)."\n";
+}
+
+if ($mode eq 'display') {
+ print "Displaying all ".scalar(@packages)." bug reports..\n";
+ print "Run again with --send switch to send the bug reports.\n";
+ div();
+ foreach my $package (@packages) {
+ showsample($package);
+ div();
+ }
+}
+elsif ($mode eq 'send') {
+ my $from;
+ $from ||= $ENV{'DEBEMAIL'};
+ $from ||= $ENV{'EMAIL'};
+
+ print "Preparing to send ".scalar(@packages)." bug reports like this one:\n";
+ div();
+ showsample($packages[0]);
+ div();
+ $|=1;
+ print "Are you sure that you have read the Developer's Reference on mass-filing\nbug reports, have checked this case out on debian-devel, and really want to\nsend out these ".scalar(@packages)." bug reports? [yes/no] ";
+ my $ans = <STDIN>;
+ unless ($ans =~ /^yes$/i) {
+ print "OK, aborting.\n";
+ exit 0;
+ }
+ print "OK, going ahead then...\n";
+ foreach my $package (@packages) {
+ print "Sending bug for $package ...\n";
+ mailbts(gen_subject($subject, $package),
+ gen_bug($template_text, $package, $severity, $tags, $user, $usertags, $nowrap, $type),
+ $submission_email, $from);
+ }
+ print "All bugs sent.\n";
+}
+
+=head1 COPYRIGHT
+
+This program is Copyright (C) 2006 by Joey Hess <joeyh@debian.org>.
+
+It is licensed under the terms of the GPL, either version 2 of the
+License, or (at your option) any later version.
+
+=head1 AUTHOR
+
+Joey Hess <joeyh@debian.org>
+
+=cut
--- /dev/null
+.TH MERGECHANGES 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+mergechanges \- merge multiple changes files
+.SH SYNOPSIS
+\fBmergechanges\fR [\fB\-f\fR] \fIfile1 file2\fR [\fIfile\fR...]
+.SH DESCRIPTION
+\fBmergechanges\fR merges two or more \fI.changes\fR files, merging
+the Architecture, Description and Files (and Checksums-*, if present)
+fields of the two. There are checks made to ensure that the changes
+files are from the same source package and version and use the same
+changes file Format. The first changes file is used as the basis and
+the information from the later ones is merged into it.
+.PP
+The output is normally written to \fIstdout\fR. If the \fB\-f\fR
+option is given, the output is written to
+\fIpackage\fR_\fIversion\fR_multi.changes instead, in the same
+directory as the first changes file listed.
+.SH AUTHOR
+Gergely Nagy <algernon@debian.org>,
+modifications by Julian Gilbey <jdg@debian.org> and
+Adam D. Barratt <adam@adam-barratt.org.uk>.
--- /dev/null
+#!/bin/bash
+##
+## mergechanges -- merge Architecture: and Files: fields of a set of .changes
+## Copyright 2002 Gergely Nagy <algernon@debian.org>
+## Changes copyright 2002,2003 by Julian Gilbey <jdg@debian.org>
+##
+## $MadHouse: home/bin/mergechanges,v 1.1 2002/01/25 12:37:27 algernon Exp $
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+set -e
+
+PROGNAME=`basename $0`
+
+usage () {
+ echo \
+"Usage: $PROGNAME [-h|--help|--version] [-f] <file1> <file2> [<file> ...]
+ Merge the changes files <file1>, <file2>, .... Output on stdout
+ unless -f option given, in which case, output to
+ <package>_<version>_multi.changes in the same directory as <file1>."
+}
+
+version () {
+ echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is copyright (C) 2002 Gergely Nagy <algernon@debian.org>
+Changes copyright 2002 by Julian Gilbey <jdg@debian.org>
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later."
+}
+
+# Commandline parsing
+FILE=0
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ --version)
+ version
+ exit 0
+ ;;
+ -f)
+ FILE=1
+ shift
+ ;;
+ -*)
+ echo "Unrecognised option $1. Use $progname --help for help" >&2
+ exit 1
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+# Sanity check #0: Do we have enough parameters?
+if [ $# -lt 2 ]; then
+ echo "Not enough parameters." >&2
+ echo "Usage: mergechanges [--help|--version] [-f] <file1> <file2> [<file...>]" >&2
+ exit 1
+fi
+
+# Sanity check #1: Do the requested files exist?
+for f in "$@"; do
+ if ! test -r $f; then
+ echo "ERROR: Cannot read $f!" >&2
+ exit 1
+ fi
+done
+
+# Extract the Architecture: field from all .changes files,
+# and merge them, sorting out duplicates
+ARCHS=$(grep -h "^Architecture: " "$@" | sed -e "s,^Architecture: ,," | tr ' ' '\n' | sort -u | tr '\n' ' ' | sed 's/ $//')
+
+checksum_uniq() {
+ awk '{if(arr[$NF] != 1){arr[$NF] = 1; print;}}'
+}
+
+# Extract & merge the Version: field from all files..
+# Don't catch Version: GnuPG lines, though!
+VERSION=$(grep -h "^Version: [0-9]" "$@" | sed -e "s,^Version: ,," | sort -u)
+SVERSION=$(echo "$VERSION" | perl -pe 's/^\d+://')
+# Extract & merge the sources from all files
+SOURCE=$(grep -h "^Source: " "$@" | sed -e "s,^Source: ,," | sort -u)
+# Extract & merge the files from all files
+FILES=$(egrep -h "^ [0-9a-f]{32} [0-9]+" "$@" | checksum_uniq)
+# Extract & merge the sha1 checksums from all files
+SHA1S=$(egrep -h "^ [0-9a-f]{40} [0-9]+" "$@" | checksum_uniq)
+# Extract & merge the sha256 checksums from all files
+SHA256S=$(egrep -h "^ [0-9a-f]{64} [0-9]+" "$@" | checksum_uniq)
+# Extract & merge the description from all files
+DESCRIPTIONS=$(sed '/^Description:/,/^[^ ]/{/^ /p;d};d' "$@" | sort -u)
+# Extract & merge the Formats from all files
+FORMATS=$(grep -h "^Format: " "$@" | sed -e "s,^Format: ,," | sort -u)
+# Extract & merge the Checksums-* field names from all files
+CHECKSUMS=$(grep -h "^Checksums-.*:" "$@" | sort -u)
+UNSUPCHECKSUMS="$(echo "${CHECKSUMS}" | grep -v "^Checksums-Sha\(1\|256\):" || true)"
+
+# Sanity check #2: Versions must match
+if test $(echo "${VERSION}" | wc -l) -ne 1; then
+ echo "ERROR: Version numbers do not match:" >&2
+ grep "^Version: [0-9]" "$@" >&2
+ exit 1
+fi
+
+# Sanity check #3: Sources must match
+if test $(echo "${SOURCE}" | wc -l) -ne 1; then
+ echo "Error: Source packages do not match:" >&2
+ grep "^Source: " "$@" >&2
+ exit 1
+fi
+
+# Sanity check #4: Description for same binary must match
+if test $(echo "${DESCRIPTIONS}" | sed -e 's/ \+- .*$//' | uniq -d | wc -l) -ne 0; then
+ echo "Error: Descriptions do not match:" >&2
+ echo "${DESCRIPTIONS}" >&2
+ exit 1
+fi
+
+# Sanity check #5: Formats must match
+if test $(echo "${FORMATS}" | wc -l) -ne 1; then
+ if test "${FORMATS}" = "$(printf "1.7\n1.8\n")"; then
+ FORMATS="1.7"
+ CHECKSUMS=""
+ UNSUPCHECKSUMS=""
+ SHA1S=""
+ SHA256S=""
+ else
+ echo "Error: Changes files have different Format fields:" >&2
+ grep "^Format: " "$@" >&2
+ exit 1
+ fi
+fi
+
+# Sanity check #6: The Format must be one we understand
+case "$FORMATS" in
+ 1.7|1.8) # Supported
+ ;;
+ *)
+ echo "Error: Changes files use unknown Format:" >&2
+ echo "${FORMATS}" >&2
+ exit 1
+ ;;
+esac
+
+# Sanity check #7: Unknown checksum fields
+if test -n "${UNSUPCHECKSUMS}"; then
+ echo "Error: Unsupported checksum fields:" >&2
+ echo "${UNSUPCHECKSUMS}" >&2
+ exit 1
+fi
+
+if test ${FILE} = 1; then
+ DIR=`dirname "$1"`
+ REDIR1="> '${DIR}/${SOURCE}_${SVERSION}_multi.changes'"
+ REDIR2=">$REDIR1"
+fi
+
+# Temporary output
+OUTPUT=`tempfile`
+DESCFILE=`tempfile`
+trap "rm -f '${OUTPUT}' '${DESCFILE}'" 0 1 2 3 7 10 13 15
+
+if test $(echo "${DESCRIPTIONS}" | wc -l) -ne 0; then
+ echo "Description: " > "${DESCFILE}"
+ echo "${DESCRIPTIONS}" >> "${DESCFILE}"
+fi
+
+# Copy one of the files to ${OUTPUT}, nuking any PGP signature
+if $(grep -q "BEGIN PGP SIGNED MESSAGE" "$1"); then
+ perl -ne 'next if 1../^$/; next if /^$/..1; print' "$1" > ${OUTPUT}
+else
+ cp "$1" ${OUTPUT}
+fi
+
+# Replace the Architecture: field, nuke the value of Checksums-*: and Files:,
+# and insert the Description: field before the Changes: field
+eval "awk -- '/^[^ ]/{ deleting=0 }
+ /^ /{
+ if (!deleting) {
+ print
+ }
+ next
+ }
+ /^Architecture: /{printf \"%s ${ARCHS}\\n\", \$1; next}
+ /^Changes:/{
+ field=\$0
+ while ((getline < \"${DESCFILE}\") > 0) {
+ print
+ }
+ printf \"%s\\n\", field
+ next
+ }
+ /^Format: /{ printf \"%s ${FORMATS}\\n\", \$1; next}
+ /^(Checksums-.*|Files|Description):/{ deleting=1; next }
+ { print }' \
+ ${OUTPUT} ${REDIR1}"
+
+# Voodoo magic to get the merged file and checksum lists into the output
+if test -n "${SHA1S}"; then
+ eval "echo 'Checksums-Sha1: ' ${REDIR2}"
+ eval "echo '${SHA1S}' ${REDIR2}"
+fi
+if test -n "${SHA256S}"; then
+ eval "echo 'Checksums-Sha256: ' ${REDIR2}"
+ eval "echo '${SHA256S}' ${REDIR2}"
+fi
+eval "echo 'Files: ' ${REDIR2}"
+eval "echo '${FILES}' ${REDIR2}"
+
+exit 0
--- /dev/null
+#!/usr/bin/perl
+
+# mk-build-deps: make a dummy package to satisfy build-deps of a package
+# Copyright 2008 by Vincent Fourmond
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+# Changes:
+# * (Vincent Fourmond 4/4/2008): now take Build-Depends-Indep
+# into consideration
+
+=head1 NAME
+
+mk-build-deps - build a package satisfying a package's build-dependencies
+
+=head1 SYNOPSIS
+
+B<mk-build-deps> B<--help>|B<--version>
+
+B<mk-build-deps> [I<options>] I<control file> | I<package name> ...
+
+=head1 DESCRIPTION
+
+Given a I<package name> and/or I<control file>, B<mk-build-deps>
+will use B<equivs> to generate a binary package which may be installed to
+satisfy all the build dependencies of the given package.
+
+If B<--build-dep> and/or B<--build-indep> are given, then the resulting binary
+package(s) will depend solely on the Build-Depends/Build-Depends-Indep
+dependencies, respectively.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-i>, B<--install>
+
+Install the generated packages and its build-dependencies.
+
+=item B<-t>, B<--tool>
+
+When installing the generated package use the specified tool.
+(default: B<apt-get --no-install-recommends>)
+
+=item B<-r>, B<--remove>
+
+Remove the package file after installing it. Ignored if used without
+the B<--install> switch.
+
+=item B<-a> I<foo>, B<--arch> I<foo>
+
+If the source package has architecture-specific build dependencies, produce
+a package for architecture I<foo>, not for the system architecture. (If the
+source package does not have architecture-specific build dependencies,
+the package produced is always for the pseudo-architecture B<all>.)
+
+=item B<-B>, B<--build-dep>
+
+Generate a package which only depends on the source package's Build-Depends
+dependencies.
+
+=item B<-A>, B<--build-indep>
+
+Generate a package which only depends on the source package's
+Build-Depends-Indep dependencies.
+
+=item B<-h>, B<--help>
+
+Show a summary of options.
+
+=item B<-v>, B<--version>
+
+Show version and copyright information.
+
+=item B<-s>, B<--root-cmd>
+
+Use the specified tool to gain root privileges before installing.
+Ignored if used without the B<--install> switch.
+
+=back
+
+=head1 AUTHOR
+
+B<mk-build-deps> is copyright by Vincent Fourmond and was modified for the
+devscripts package by Adam D. Barratt <adam@adam-barratt.org.uk>.
+
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the GNU
+General Public License, version 2 or later.
+
+=cut
+
+use strict;
+use warnings;
+use Getopt::Long qw(:config gnu_getopt);
+use File::Basename;
+use Pod::Usage;
+use Dpkg::Control;
+use Dpkg::Version;
+use Dpkg::IPC;
+use FileHandle;
+use Text::ParseWords;
+
+my $progname = basename($0);
+my $opt_install;
+my $opt_remove=0;
+my ($opt_help, $opt_version, $opt_arch, $opt_dep, $opt_indep);
+my $control;
+my $install_tool;
+my $root_cmd;
+my @packages;
+
+my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+my %config_vars = (
+ 'MKBUILDDEPS_TOOL' => '/usr/bin/apt-get --no-install-recommends',
+ 'MKBUILDDEPS_REMOVE_AFTER_INSTALL' => 'no',
+ 'MKBUILDDEPS_ROOTCMD' => '',
+ );
+my %config_default = %config_vars;
+
+my $shell_cmd;
+# Set defaults
+foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+}
+$shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+$shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+# Read back values
+foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+my $shell_out = `/bin/bash -c '$shell_cmd'`;
+@config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+# Check validity
+$config_vars{'MKBUILDDEPS_TOOL'} =~ /./
+ or $config_vars{'MKBUILDDEPS_TOOL'}=$config_default{'MKBUILDDEPS_TOOL'};
+$config_vars{'MKBUILDDEPS_REMOVE_AFTER_INSTALL'} =~ /^(yes|no)$/
+ or $config_vars{'MKBUILDDEPS_REMOVE_AFTER_INSTALL'}=$config_default{'MKBUILDDEPS_REMOVE_AFTER_INSTALL'};
+$config_vars{'MKBUILDDEPS_ROOTCMD'} =~ /./
+ or $config_vars{'MKBUILDDEPS_ROOTCMD'}=$config_default{'MKBUILDDEPS_ROOTCMD'};
+
+$install_tool = $config_vars{'MKBUILDDEPS_TOOL'};
+
+if ($config_vars{'MKBUILDDEPS_REMOVE_AFTER_INSTALL'} =~ /yes/) {
+ $opt_remove=1;
+}
+
+sub usage {
+ my ($exitval) = @_;
+
+ my $verbose = $exitval ? 0 : 1;
+ pod2usage({ -exitval => 'NOEXIT', -verbose => $verbose });
+
+ if ($verbose) {
+ my $modified_conf_msg;
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+ print <<EOF;
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOF
+ }
+
+ exit $exitval;
+}
+
+GetOptions("help|h" => \$opt_help,
+ "version|v" => \$opt_version,
+ "install|i" => \$opt_install,
+ "remove|r" => \$opt_remove,
+ "tool|t=s" => \$install_tool,
+ "arch|a=s" => \$opt_arch,
+ "build-dep|B" => \$opt_dep,
+ "build-indep|A" => \$opt_indep,
+ "root-cmd|s=s" => \$root_cmd,
+ )
+ or usage(1);
+
+usage(0) if ($opt_help);
+
+if ($opt_version) { version(); exit 0; }
+
+if (!@ARGV) {
+ if (-r 'debian/control') {
+ push(@ARGV, 'debian/control');
+ }
+}
+
+usage(1) unless @ARGV;
+
+system("command -v equivs-build >/dev/null 2>&1");
+if ($?) {
+ die "$progname: You must have equivs installed to use this program.\n";
+}
+
+while ($control = shift) {
+ my ($name, $fh, $descr, $pid);
+ if (-r $control and -f $control) {
+ open $fh, $control;
+ unless (defined $fh) {
+ warn "Unable to open $control: $!\n";
+ next;
+ }
+ $name = 'Source';
+ $descr = "control file `$control'";
+ }
+ else {
+ $fh = FileHandle->new();
+ $pid = spawn(exec => ['apt-cache', 'showsrc', $control],
+ from_file => '/dev/null',
+ to_pipe => $fh);
+ unless (defined $pid) {
+ warn "Unable to run apt-cache: $!\n";
+ next;
+ }
+ $name = 'Package';
+ $descr = "`apt-cache showsrc $control'";
+ }
+
+ my (@pkgInfo, @versions);
+ until (eof $fh) {
+ my $ctrl = Dpkg::Control->new(allow_pgp => 1, type => CTRL_UNKNOWN);
+ # parse() dies if the file isn't syntactically valid and returns undef
+ # if there simply weren't any fields parsed
+ unless ($ctrl->parse($fh, $descr)) {
+ warn "$progname: Unable to find package name in $descr\n";
+ next;
+ }
+ unless (exists $ctrl->{$name}) {
+ next;
+ }
+ my $args = '';
+ my $arch = 'all';
+ my ($build_deps, $build_dep, $build_indep);
+ my ($build_conflicts, $conflict_arch, $conflict_indep);
+
+ if (exists $ctrl->{'Build-Depends'}) {
+ $build_dep = $ctrl->{'Build-Depends'};
+ $build_dep =~ s/\n/ /g;
+ $build_deps = $build_dep;
+ }
+ if (exists $ctrl->{'Build-Depends-Indep'}) {
+ $build_indep = $ctrl->{'Build-Depends-Indep'};
+ $build_indep =~ s/\n/ /g;
+ $build_deps .= ', ' if $build_deps;
+ $build_deps .= $build_indep;
+ }
+ if (exists $ctrl->{'Build-Conflicts'}) {
+ $conflict_arch = $ctrl->{'Build-Conflicts'};
+ $conflict_arch =~ s/\n/ /g;
+ $build_conflicts = $conflict_arch;
+ }
+ if (exists $ctrl->{'Build-Conflicts-Indep'}) {
+ $conflict_indep = $ctrl->{'Build-Conflicts-Indep'};
+ $conflict_indep =~ s/\n/ /g;
+ $build_conflicts .= ', ' if $build_conflicts;
+ $build_conflicts .= $conflict_indep;
+ }
+
+ die "$progname: Unable to find build-deps for $ctrl->{$name}\n" unless $build_deps;
+
+ if (exists $ctrl->{Version}) {
+ push(@versions, $ctrl->{Version});
+ }
+ elsif ($name eq 'Source') {
+ (my $changelog = $control) =~ s@control$@changelog@;
+ if (-f $changelog) {
+ require Dpkg::Changelog::Parse;
+ my $log = Dpkg::Changelog::Parse::changelog_parse(file => $changelog);
+ if ($ctrl->{$name} eq $log->{$name}) {
+ $ctrl->{Version} = $log->{Version};
+ push(@versions, $log->{Version});
+ }
+ }
+ }
+
+ # Only build a package with both B-D and B-D-I in Depends if the
+ # B-D/B-D-I specific packages weren't requested
+ if (!($opt_dep || $opt_indep)) {
+ push(@pkgInfo,
+ { depends => $build_deps,
+ conflicts => $build_conflicts,
+ name => $ctrl->{$name},
+ type => 'build-deps',
+ version => $ctrl->{Version} });
+ next;
+ }
+ if ($opt_dep) {
+ push(@pkgInfo,
+ { depends => $build_dep,
+ conflicts => $conflict_arch,
+ name => $ctrl->{$name},
+ type => 'build-deps-depends',
+ version => $ctrl->{Version} });
+ }
+ if ($opt_indep) {
+ push(@pkgInfo,
+ { depends => $build_indep,
+ conflicts => $conflict_indep,
+ name => $ctrl->{$name},
+ type => 'build-deps-indep',
+ version => $ctrl->{Version} });
+ }
+ }
+ wait_child($pid, nocheck => 1) if defined $pid;
+ # Only use the newest version. We'll only have this if processing showsrc
+ # output or a dsc file.
+ if (@versions) {
+ @versions = map { $_->[0] }
+ sort { $b->[1] <=> $a->[1] }
+ map { [$_, Dpkg::Version->new($_)] } @versions;
+ push(@packages, map { build_equiv($_) }
+ grep { $versions[0] eq $_->{version} } @pkgInfo);
+ }
+ elsif (@pkgInfo) {
+ push(@packages, build_equiv($pkgInfo[0]));
+ }
+ else {
+ die "$progname: Unable to find package name in $descr\n";
+ }
+}
+
+if ($opt_install) {
+ my @root;
+ if ($root_cmd) {
+ push(@root, shellwords($root_cmd));
+ }
+
+ my (@pkg_names, @deb_files, %uniq);
+ for my $package (@packages) {
+ if ($uniq{$package->{deb_file}}++ == 0) {
+ push @pkg_names, $package->{package};
+ push @deb_files, $package->{deb_file};
+ }
+ }
+
+ system @root, 'dpkg', '--unpack', @deb_files;
+ die("$progname: dpkg --unpack failed\n") if ( ($?>>8) != 0 );
+ system @root, shellwords($install_tool), '-f', 'install';
+ if ( ($?>>8) != 0 ) {
+ # Restore system to previous state, since apt wasn't able to resolve a
+ # proper way to get the build-dep packages installed
+ system @root, 'dpkg', '--remove', @pkg_names;
+ die("$progname: apt-get install call failed\n");
+ }
+
+ if ($opt_remove) {
+ foreach my $file (@deb_files) {
+ unlink $file;
+ }
+ }
+}
+
+sub version {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+Copyright (C) 2008 Vincent Fourmond
+
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2, or (at your option) any
+later version.
+EOF
+}
+
+sub build_equiv
+{
+ my ($opts) = @_;
+ my $args = '';
+ my $arch = 'all';
+
+ if (defined $opt_arch) {
+ $args = "--arch=$opt_arch ";
+ $arch = $opt_arch;
+ }
+ elsif ($opts->{depends} =~ m/\[|\]/) {
+ spawn(exec => ['dpkg-architecture', '-qDEB_HOST_ARCH'],
+ to_string => \$arch,
+ wait_child => 1);
+ chomp($arch);
+ }
+
+ my $readme = '/usr/share/devscripts/README.mk-build-deps';
+ open EQUIVS, "| equivs-build $args-"
+ or die "$progname: Failed to execute equivs-build: $!\n";
+ print EQUIVS "Section: devel\n" .
+ "Priority: optional\n".
+ "Standards-Version: 3.7.3\n\n".
+ "Package: $opts->{name}-$opts->{type}\n".
+ "Architecture: $arch\n".
+ "Depends: build-essential, $opts->{depends}\n";
+
+ print EQUIVS "Conflicts: $opts->{conflicts}\n" if $opts->{conflicts};
+
+ # Allow the file not to exist to ease testing
+ print EQUIVS "Readme: $readme\n" if -r $readme;
+
+ my $version = $opts->{version} || '1.0';
+ print EQUIVS "Version: $version\n";
+
+ print EQUIVS "Description: build-dependencies for $opts->{name}\n" .
+ " Depencency package to build the '$opts->{name}' package\n";
+
+ close EQUIVS;
+
+ my $v = Dpkg::Version->new($version);
+ # The version in the .deb filename will not contain the epoch
+ $version = $v->as_string(omit_epoch => 1);
+ my $package = "$opts->{name}-$opts->{type}";
+ my $deb_file = "${package}_${version}_${arch}.deb";
+ return {
+ package => $package,
+ deb_file => $deb_file
+ };
+}
--- /dev/null
+#!/usr/bin/perl
+#
+# mk-origtargz: Rename upstream tarball, optionally changing the compression
+# and removing unwanted files.
+# Copyright (C) 2014 Joachim Breitner <nomeata@debian.org>
+#
+# It contains code formerly found in uscan.
+# Copyright (C) 2002-2006, Julian Gilbey
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+
+=head1 NAME
+
+mk-origtargz - rename upstream tarball, optionally changing the compression and removing unwanted files
+
+=head1 SYNOPSIS
+
+=over
+
+=item B<mk-origtargz> [I<options>] F<foo-1.0.tar.gz>
+
+=item B<mk-origtargz> B<--help>
+
+=back
+
+=head1 DESCRIPTION
+
+B<mk-origtargz> renames the given file to match what is expected by
+B<dpkg-buildpackage>, based on the source package name and version in
+F<debian/changelog>. It can convert B<zip> to B<tar>, optionally change the
+compression scheme and remove files according to B<Files-Excluded> in
+F<debian/copyright>. The resulting file is placed in F<debian/../..>.
+
+If the package name is given via the B<--package> option, no information is
+read from F<debian/>, and the result file is placed in the current directory.
+
+B<mk-origtargz> is commonly called via B<uscan>, which first obtains the
+upstream tarball.
+
+=head1 OPTIONS
+
+=head2 Metadata options
+
+The following options extend or replace information taken from F<debian/>.
+
+=over
+
+=item B<--package> I<package>
+
+Use I<package> as the name of the Debian source package, and do not require or
+use a F<debian/> directory. This option can only be used together with
+B<--version>.
+
+The default is to use the package name of the first entry in F<debian/changelog>.
+
+=item B<-v>, B<--version> I<version>
+
+Use I<version> as the version of the package. This needs to be the upstream version portion of a full Debian version, i.e. no Debian revision, no epoch.
+
+The default is to use the upstream portion of the version of the first entry in F<debian/changelog>.
+
+=item B<--exclude-file> I<glob>
+
+Remove files matching the given I<glob> from the tarball, as if it was listed in
+B<Files-Excluded>.
+
+=item B<--copyright-file> I<filename>
+
+Remove files matching the patterns found in I<filename>, which should have the format of a Debian F<copyright> file (B<Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/> to be precise). Errors parsing that file are silently ignored, exactly as it is the case with F<debian/copyright>.
+
+Both the B<--exclude-file> and B<--copyright-file> options amend the list of
+patterns found in F<debian/copyright>. If you do not want to read that file,
+you will have to use B<--package>.
+
+=back
+
+=head2 Action options
+
+These options specify what exactly B<mk-origtargz> should do. The options
+B<--copy>, B<--rename> and B<--symlink> are mutually exclusive.
+
+=over
+
+=item B<--symlink>
+
+Make the resulting file a symlink to the given original file. (This is the
+default behaviour.)
+
+If the file has to be modified (because it is a B<zip> file, because of
+B<--repack> or B<Files-Excluded>), this option behaves like B<--copy>.
+
+=item B<--copy>
+
+Make the resulting file a copy of the original file (unless it has to be modified, of course).
+
+=item B<--rename>
+
+Rename the original file.
+
+If the file has to be modified (because it is a B<zip> file, because of B<--repack> or B<Files-Excluded>), this implies that the original file is deleted afterwards.
+
+=item B<--repack>
+
+If the given file is not compressed using the desired format (see
+B<--compression>), recompress it.
+
+=item B<-S>, B<--repack-suffix> I<suffix>
+
+If the file has to be modified, because of B<Files-Excluded>, append I<suffix> to the upstream version.
+
+=item B<--compression> [ B<gzip> | B<bzip2> | B<lzma> | B<xz> ]
+
+If B<--repack> is used, or if the given file is a B<zip> file, ensure that the resulting file is compressed using the given scheme. The default is B<gzip>.
+
+=item B<-C>, B<--directory> I<directory>
+
+Put the resulting file in the given directory.
+
+=back
+
+=cut
+
+#=head1 CONFIGURATION VARIABLES
+#
+#The two configuration files F</etc/devscripts.conf> and
+#F<~/.devscripts> are sourced by a shell in that order to set
+#configuration variables. Command line options can be used to override
+#configuration file settings. Environment variable settings are ignored
+#for this purpose. The currently recognised variables are:
+
+=head1 SEE ALSO
+
+B<uscan>(1), B<uupdate>(1)
+
+=head1 AUTHOR
+
+B<mk-origtargz> and this manpage have been written by Joachim Breitner
+<I<nomeata@debian.org>>.
+
+=cut
+
+
+use strict;
+use warnings;
+use File::Temp qw/tempdir/;
+use Getopt::Long qw(:config gnu_getopt);
+use Pod::Usage;
+
+use Dpkg::Changelog::Debian;
+use Dpkg::IPC;
+use Dpkg::Version;
+use File::Spec;
+
+BEGIN { push(@INC, '/usr/share/devscripts') } # append to @INC, so that -I . has precedence
+use Devscripts::Compression qw/compression_is_supported compression_guess_from_file compression_get_property/;
+use Cwd 'abs_path';
+use File::Copy;
+use Dpkg::Control::Hash;
+
+sub decompress_archive($$);
+sub compress_archive($$$);
+
+
+my $package = undef;
+my $version = undef;
+my @exclude_globs = ();
+my @copyright_files = ();
+
+my $destdir = undef;
+my $compression = "gzip";
+my $mode = undef; # can be symlink, rename or copy. Can internally be repacked if the file was repacked.
+my $repack = 0;
+my $suffix = '';
+
+my $upstream = undef;
+
+# option parsing
+
+sub die_opts ($) {
+ pod2usage({-exitval => 3, -verbose => 1, -msg => shift @_});
+}
+
+sub setmode {
+ my $newmode = shift @_;
+ if (defined $mode and $mode ne $newmode) {
+ die_opts (sprintf "--%s and --%s are mutually exclusive", $mode, $newmode);
+ }
+ $mode = $newmode;
+}
+
+GetOptions(
+ "package=s" => \$package,
+ "version|v=s" => \$version,
+ "exclude-file=s" => \@exclude_globs,
+ "copyright-file=s" => \@copyright_files,
+ "compression=s" => \$compression,
+ "symlink" => \&setmode,
+ "rename" => \&setmode,
+ "copy" => \&setmode,
+ "repack" => \$repack,
+ 'repack-suffix|S=s' => \$suffix,
+ "directory|C=s" => \$destdir,
+ "help|h" => sub { pod2usage({-exitval => 0, -verbose => 1}); },
+) or pod2usage({-exitval => 3, -verbose=>1});
+
+$mode ||= "symlink";
+
+# sanity checks
+unless (compression_is_supported($compression)) {
+ die_opts (sprintf "Unknown compression scheme %s", $compression);
+}
+
+if (defined $package and not defined $version) {
+ die_opts "If you use --package, you also have to specify --version."
+}
+
+if (@ARGV != 1) {
+ die_opts "Please specify original tarball."
+}
+$upstream = $ARGV[0];
+
+# get information from debian/
+
+unless (defined $package) {
+ # get package name
+ my $c = Dpkg::Changelog::Debian->new(range => { count => 1 });
+ $c->load('debian/changelog');
+ if (my $msg = $c->get_parse_errors()) {
+ die "could not parse debian/changelog:\n$msg";
+ }
+ my ($entry) = @{$c};
+ $package = $entry->get_source();
+
+ # get version number
+ unless (defined $version) {
+ my $debversion = Dpkg::Version->new($entry->get_version());
+ # In the following line, use $debversion->is_native() as soon as
+ # we need to depend on dpkg-dev >= 1.17.0 anyways
+ if ($debversion->{no_revision}) {
+ print "Package with native version number $debversion; mk-origtargz makes no sense for native packages.\n";
+ exit 0;
+ }
+ $version = $debversion->version();
+ }
+
+ unshift @copyright_files, "debian/copyright" if -r "debian/copyright";
+
+ # set destination directory
+ unless (defined $destdir) {
+ $destdir = "..";
+ }
+} else {
+ unless (defined $destdir) {
+ $destdir = ".";
+ }
+}
+
+for my $copyright_file (@copyright_files) {
+ # get files-excluded
+ my $data = Dpkg::Control::Hash->new();
+ my $okformat = qr'https?://www.debian.org/doc/packaging-manuals/copyright-format/[.\d]+';
+ eval {
+ $data->load($copyright_file);
+ 1;
+ } or do {
+ undef $data;
+ };
+ if (not -e $copyright_file) {
+ die "File $copyright_file not found.";
+ } elsif ( $data
+ && defined $data->{format}
+ && $data->{format} =~ m@^$okformat/?$@)
+ {
+ if ($data->{'files-excluded'}) {
+ push(@exclude_globs, grep { $_ } split(/\s+/, $data->{'files-excluded'}));
+ }
+ } else {
+ open my $file, '<', $copyright_file or die "Unable to read $copyright_file: $!\n";
+ while (my $line = <$file>) {
+ if ($line =~ m/\bFiles-Excluded:/i) {
+ warn "WARNING: The file $copyright_file mentions Files-Excluded, but its ".
+ "format is not recognized. Specify Format: ".
+ "https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ ".
+ "in order to remove files from the tarball with mk-origtargz.\n";
+ last;
+ }
+ }
+ close $file;
+ }
+}
+
+
+# Gather information about the upstream file.
+
+# This makes more sense in Dpkg:Compression
+my $tar_regex = qr/\.(tar\.gz |tgz
+ |tar\.bz2 |tbz2?
+ |tar\.lzma |tlz(?:ma?)?
+ |tar\.xz |txz
+ |tar\.Z
+ )$/x;
+
+unless (-e $upstream) {
+ die "Could not read $upstream: $!"
+}
+
+my $mime = compression_guess_from_file($upstream);
+
+my $is_zipfile = (defined $mime and $mime eq 'zip');
+my $is_tarfile = $upstream =~ $tar_regex;
+
+unless ($is_zipfile or $is_tarfile) {
+ # TODO: Should we ignore the name and only look at what file knows?
+ die "Parameter $upstream does not look like a tar archive or a zip file."
+}
+
+if ($is_tarfile and not $repack) {
+ # If we are not explicitly repacking, but need to generate a file
+ # (usually due to Files-Excluded), then we want to use the original
+ # compression scheme.
+ $compression = compression_guess_from_file ($upstream);
+
+ if (not defined $compression) {
+ die "Unknown or no compression used in $upstream."
+ }
+}
+
+
+# Now we know what the final filename will be
+my $destfilebase = sprintf "%s_%s.orig.tar", $package, $version;
+my $destfiletar = sprintf "%s/%s", $destdir, $destfilebase;
+my $destext = compression_get_property($compression, "file_ext");
+my $destfile = sprintf "%s.%s", $destfiletar, $destext;
+
+
+# $upstream_tar is $upstream, unless the latter was a zip file.
+my $upstream_tar = $upstream;
+
+# Remember this for the final report
+my $zipfile_deleted = 0;
+
+# If the file is a zipfile, we need to create a tarfile from it.
+if ($is_zipfile) {
+ system('command -v unzip >/dev/null 2>&1') >> 8 == 0
+ or die("unzip binary not found. You need to install the package unzip to be able to repack .zip upstream archives.\n");
+
+ my $tempdir = tempdir ("uscanXXXX", TMPDIR => 1, CLEANUP => 1);
+ # Parent of the target directory should be under our control
+ $tempdir .= '/repack';
+ mkdir $tempdir or die("Unable to mkdir($tempdir): $!\n");
+ system('unzip', '-q', '-a', '-d', $tempdir, $upstream_tar) == 0
+ or die("Repacking from zip or jar failed (could not unzip)\n");
+
+ # Figure out the top-level contents of the tarball.
+ # If we'd pass "." to tar we'd get the same contents, but the filenames would
+ # start with ./, which is confusing later.
+ # This should also be more reliable than, say, changing directories and globbing.
+ opendir(TMPDIR, $tempdir) || die("Can't open $tempdir $!\n");
+ my @files = grep {$_ ne "." && $_ ne ".."} readdir(TMPDIR);
+ close TMPDIR;
+
+ # tar it all up
+ spawn(exec => ['tar',
+ '--owner=root', '--group=root', '--mode=a+rX',
+ '--create', '--file', "$destfiletar",
+ '--directory', $tempdir,
+ @files],
+ wait_child => 1);
+ unless (-e "$destfiletar") {
+ die("Repacking from zip or jar to tar.$destext failed (could not create tarball)\n");
+ }
+ compress_archive($destfiletar, $destfile, $compression);
+
+ # rename means the user did not want this file to exist afterwards
+ if ($mode eq "rename") {
+ unlink $upstream_tar;
+ $zipfile_deleted++;
+ }
+
+ $mode = "repack";
+ $upstream_tar = $destfile;
+}
+
+# From now on, $upstream_tar is guaranteed to be a compressed tarball. It is always
+# a full (possibly relative) path, and distinct from $destfile.
+
+# Find out if we have to repack
+my $do_repack = 0;
+if ($repack) {
+ my $comp = compression_guess_from_file($upstream_tar);
+ unless ($comp) {
+ die("Cannot determine compression method of $upstream_tar");
+ }
+ $do_repack = $comp ne $compression;
+}
+
+# Removing files
+my $deletecount = 0;
+my @to_delete;
+
+if (@exclude_globs) {
+ my @files;
+ my $files;
+ spawn(exec => ['tar', '-t', '-a', '-f', $upstream_tar],
+ to_string => \$files,
+ wait_child => 1);
+ @files = split /^/, $files;
+ chomp @files;
+
+ # find out what to delete
+ my @exclude_info = map { { glob => $_, used => 0, regex => glob_to_regex($_) } } @exclude_globs;
+ for my $filename (@files) {
+ for my $info (@exclude_info) {
+ if ($filename =~ m@^(?:[^/]*/)? # Possible leading directory, ignore it
+ (?:$info->{regex}) # User pattern
+ (?:/.*)?$ # Possible trailing / for a directory
+ @x) {
+ push @to_delete, $filename;
+ $info->{used} = 1;
+ }
+ }
+ }
+
+ for my $info (@exclude_info) {
+ if (!$info->{used}) {
+ warn "No files matched excluded pattern: $info->{glob}\n";
+ }
+ }
+
+ # ensure files are mentioned before the directory they live in
+ # (otherwise tar complains)
+ @to_delete = sort {$b cmp $a} @to_delete;
+
+ $deletecount = scalar(@to_delete);
+}
+
+if ($deletecount) {
+ $destfilebase = sprintf "%s_%s%s.orig.tar", $package, $version, $suffix;
+ $destfiletar = sprintf "%s/%s", $destdir, $destfilebase;
+ $destfile = sprintf "%s.%s", $destfiletar, $destext;
+
+ # Zip -> tar process already created $destfile, so need to rename it
+ if ($is_zipfile) {
+ move $upstream_tar, $destfile;
+ $upstream_tar = $destfile;
+ }
+}
+
+# Actually do the unpack, remove, pack cycle
+if ($do_repack || $deletecount) {
+ decompress_archive($upstream_tar, $destfiletar);
+ unlink $upstream_tar if $mode eq "rename";
+ spawn(exec => ['tar', '--delete', '--file', $destfiletar, @to_delete ],
+ wait_child => 1) if scalar(@to_delete) > 0;
+ compress_archive($destfiletar, $destfile, $compression);
+
+ # Symlink no longer makes sense
+ $mode = "repack";
+ $upstream_tar = $destfile;
+}
+
+# Final step: symlink, copy or rename.
+
+my $same_name = abs_path($destfile) eq abs_path($upstream);
+unless ($same_name) {
+ if ($mode ne "repack") { die "Assertion failed" unless $upstream_tar eq $upstream; }
+
+ if ($mode eq "symlink") {
+ my $rel = File::Spec->abs2rel( $upstream_tar, $destdir );
+ symlink $rel, $destfile;
+ } elsif ($mode eq "copy") {
+ copy $upstream_tar, $destfile;
+ } elsif ($mode eq "rename") {
+ move $upstream_tar, $destfile;
+ }
+}
+
+# Final check: Is the tarball usable
+
+# We are lazy and rely on Dpkg::IPC to report an error message (spawn does not report back the error code).
+# We don't expect this to occur often anyways.
+my $ret = spawn(exec => ['tar', '--list', '--auto-compress', '--file', $destfile ],
+ wait_child => 1,
+ to_file => '/dev/null');
+
+# Tell the use what we did
+
+my $upstream_nice = File::Spec->canonpath($upstream);
+my $destfile_nice = File::Spec->canonpath($destfile);
+
+if ($same_name) {
+ print "Leaving $destfile_nice where it is";
+} else {
+ if ($is_zipfile or $do_repack or $deletecount) {
+ print "Successfully repacked $upstream_nice as $destfile_nice";
+ } elsif ($mode eq "symlink") {
+ print "Successfully symlinked $upstream_nice to $destfile_nice";
+ } elsif ($mode eq "copy") {
+ print "Successfully copied $upstream_nice to $destfile_nice";
+ } elsif ($mode eq "rename") {
+ print "Successfully renamed $upstream_nice to $destfile_nice";
+ } else {
+ die "Unknown mode $mode."
+ }
+}
+
+if ($deletecount) {
+ print ", deleting ${deletecount} files from it";
+}
+if ($zipfile_deleted) {
+ print ", and removed the original file"
+}
+print ".\n";
+
+exit 0;
+
+sub decompress_archive($$) {
+ my ($from_file, $to_file) = @_;
+ my $comp = compression_guess_from_file($from_file);
+ unless ($comp) {
+ die("Cannot determine compression method of $from_file");
+ }
+
+ my $cmd = compression_get_property($comp, 'decomp_prog');
+ spawn(exec => $cmd,
+ from_file => $from_file,
+ to_file => $to_file,
+ wait_child => 1);
+}
+
+sub compress_archive($$$) {
+ my ($from_file, $to_file, $comp) = @_;
+
+ my $cmd = compression_get_property($comp, 'comp_prog');
+ push(@{$cmd}, '-'.compression_get_property($comp, 'default_level'));
+ spawn(exec => $cmd,
+ from_file => $from_file,
+ to_file => $to_file,
+ wait_child => 1);
+ unlink $from_file;
+}
+
+# Adapted from Text::Glob::glob_to_regex_string
+sub glob_to_regex {
+ my ($glob) = @_;
+
+ if ($glob =~ m@/$@) {
+ warn "WARNING: Files-Excluded pattern ($glob) should not have a trailing /\n";
+ chop($glob);
+ }
+ if ($glob =~ m/(?<!\\)(?:\\{2})*\\(?![\\*?])/) {
+ die "Invalid Files-Excluded pattern ($glob), \\ can only escape \\, *, or ? characters\n";
+ }
+
+ my ($regex, $escaping);
+ for my $c ($glob =~ m/(.)/gs) {
+ if ($c eq '.' || $c eq '(' || $c eq ')' || $c eq '|' ||
+ $c eq '+' || $c eq '^' || $c eq '$' || $c eq '@' || $c eq '%' ||
+ $c eq '{' || $c eq '}' || $c eq '[' || $c eq ']' ||
+ # Escape '#' since we're using /x in the pattern match
+ $c eq '#') {
+ $regex .= "\\$c";
+ }
+ elsif ($c eq '*') {
+ $regex .= $escaping ? "\\*" : ".*";
+ }
+ elsif ($c eq '?') {
+ $regex .= $escaping ? "\\?" : ".";
+ }
+ elsif ($c eq "\\") {
+ if ($escaping) {
+ $regex .= "\\\\";
+ $escaping = 0;
+ }
+ else {
+ $escaping = 1;
+ }
+ next;
+ }
+ else {
+ $regex .= $c;
+ $escaping = 0;
+ }
+ $escaping = 0;
+ }
+
+ return $regex;
+}
--- /dev/null
+#!/usr/bin/perl -w
+
+=head1 NAME
+
+namecheck - Check project names are not already taken.
+
+=head1 ABOUT
+
+This is a simple tool to automate the testing of project names at the most
+common Open Source / Free Software hosting environments.
+
+Each new project requires a name, and those names are ideally unique. To come
+up with names is hard, and testing to ensure they're not already in use is
+time-consuming - unless you have a tool such as this one.
+
+=head1 CUSTOMIZATION
+
+The script, as is, contains a list of sites, and patterns, to test against.
+
+If those patterns aren't sufficient then you may create your own additions and
+add them to the script. If you wish to have your own version of the patterns
+you may save them into the file ~/.namecheckrc
+
+=head1 HOMEPAGE
+
+The most recent version of this script may be found here:
+
+http://mybin.repository.steve.org.uk/?raw-file/tip/namecheck
+
+=head1 AUTHOR
+
+Steve
+--
+http://www.steve.org.uk/
+
+=head1 LICENSE
+
+Copyright (c) 2008 by Steve Kemp. All rights reserved.
+
+This module is free software; you can redistribute it and/or modify it under
+the same terms as Perl itself.
+
+=cut
+
+
+
+#
+# Good practise.
+#
+use strict;
+use warnings;
+
+
+#
+# A module for fetching webpages.
+#
+use LWP::UserAgent;
+
+
+
+#
+# Get the name from the command line.
+#
+my $name = shift;
+if ( !defined($name) )
+{
+ print <<EOF;
+Usage: $0 name
+EOF
+ exit;
+}
+
+
+
+#
+# Get the patterns we're going to use for testing.
+#
+my @lines = loadPatterns();
+
+
+#
+# Assuming we have patterns use them.
+#
+testSites(@lines);
+
+
+#
+# NOT REACHED.
+#
+exit;
+
+
+
+#
+# Load the list of sites, and patterns, to test.
+#
+# By default these will come from the end of the script
+# itself. A user may create the file ~/.namecheckrc with
+# their own patterns if they prefer.
+#
+
+sub loadPatterns
+{
+ my $file = $ENV{ 'HOME' } . "/.namecheckrc";
+ my @lines = ();
+
+ if ( -e $file )
+ {
+ open( FILE, "<", $file )
+ or die "Failed to open $file - $!";
+ while (<FILE>)
+ {
+ push( @lines, $_ );
+ }
+ close(FILE);
+ }
+ else
+ {
+ while (<DATA>)
+ {
+ push( @lines, $_ );
+ }
+ }
+
+ return (@lines);
+}
+
+#
+# Test the given name against the patterns we've loaded from our
+# own script, or the users configuration file.
+#
+
+sub testSites
+{
+ my (@patterns) = (@_);
+
+ #
+ # Create and setup an agent for the downloading.
+ #
+ my $ua = LWP::UserAgent->new();
+ $ua->agent('Mozilla/5.0');
+ $ua->timeout(10);
+ $ua->env_proxy();
+
+ my $headers = HTTP::Headers->new();
+ $headers->header('Accept' => '*/*');
+
+ foreach my $entry (@patterns)
+ {
+
+ #
+ # Skip blank lines, and comments.
+ #
+ chomp($entry);
+ next if ( ( !$entry ) || ( !length($entry) ) );
+ next if ( $entry =~ /^#/ );
+
+
+ #
+ # Each line is an URL + a pattern, separated by a pipe.
+ #
+ my ( $url, $pattern ) = split( /\|/, $entry );
+
+ #
+ # Strip leading/trailing spaces.
+ #
+ $pattern =~ s/^\s+//;
+ $pattern =~ s/\s+$//;
+
+
+ #
+ # Interpolate the proposed project name in the string.
+ #
+ $url =~ s/\%s/$name/g if ( $url =~ /\%s/ );
+
+ #
+ # Find the hostname we're downloading; just to show the user
+ # something is happening.
+ #
+ my $urlname = $url;
+ if ( $urlname =~ /:\/\/([^\/]+)\// )
+ {
+ $urlname = $1;
+ }
+ print sprintf "Testing %20s", $urlname;
+
+
+ #
+ # Get the URL
+ #
+ my $request = HTTP::Request->new('GET', $url, $headers);
+ my $response = $ua->request($request);
+
+ #
+ # If success we look at the returned text.
+ #
+ if ( $response->is_success() )
+ {
+
+ #
+ # Get the page content - collapsing linefeeds.
+ #
+ my $c = $response->content();
+ $c =~ s/[\r\n]//g;
+
+ #
+ # Does the page have the pattern?
+ #
+ if ( $c !~ /\Q$pattern\E/i )
+ {
+ print " - In use\n";
+ print "Aborting - name '$name' is currently used.\n";
+ exit 0;
+ }
+ else
+ {
+ print " - Available\n";
+ }
+ }
+ else
+ {
+
+ #
+ # Otherwise we'll assume that 404 means that the
+ # project isn't taken.
+ #
+ my $c = $response->status_line();
+ if ( $c =~ /404/ )
+ {
+ print " - Available\n";
+ }
+ else
+ {
+
+ #
+ # Other errors we can't handle.
+ #
+ print "ERROR fetching $url - $c\n";
+ }
+ }
+
+ }
+
+
+ #
+ # If we got here the name is free.
+ #
+ print "\n\nThe name '$name' doesn't appear to be in use.\n";
+ exit 1;
+}
+
+
+__DATA__
+
+#
+# The default patterns.
+#
+# If you want to customise them either do so here, or create the
+# file ~/.namecheckrc with your own contents in the same format.
+#
+http://%s.tuxfamily.org/ | Not Found
+http://alioth.debian.org/projects/%s | Software Map
+http://freshmeat.net/projects/%s | We encounted an error
+http://launchpad.net/%s | no page with this address
+http://savannah.gnu.org/projects/%s | Invalid Group
+http://sourceforge.net/projects/%s | Invalid Project
+http://www.ohloh.net/projects/%s | Sorry, the page you are trying to view is not here
+https://gna.org/projects/%s | Invalid Group
+http://code.google.com/p/%s | Not Found
+http://projects.apache.org/projects/%s.html | Not Found
--- /dev/null
+.TH NMUDIFF 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+nmudiff \- email an NMU diff to the Debian BTS
+.SH SYNOPSIS
+\fBnmudiff\fR [\fIoptions\fR]
+.SH DESCRIPTION
+\fBnmudiff\fR should be run in the source tree of the package being
+NMUed, after the NMU is built. It assumes that the source packages
+(specifically, the \fI.dsc\fR and any corresponding \fItar\fR and \fIdiff\fR files) for
+both the previous version of the package and the newly built NMU
+version are in the parent directory. It then uses \fBdebdiff\fR to
+generate a diff between the previous version and the current NMU, and
+either runs mutt or an editor (using \fBsensible\-editor\fR) so that
+the mail message (including the diff) can be examined and modified;
+once you exit the editor the diff will be mailed to the Debian BTS.
+.PP
+The default behaviour is that if exactly one bug is closed by this NMU,
+then that bug will be mailed, otherwise a new bug will be submitted.
+This behaviour may be changed by command line options and
+configuration file options.
+.SH OPTIONS
+.TP
+.B \-\-new
+Instead of mailing the bug reports which are to be closed by this NMU,
+a new bug report is submitted directly to the BTS.
+.TP
+.B \-\-old
+Send the bug report to all of the bugs which are being closed by this
+NMU, rather than opening a new bug report. This option has no effect
+if no bugs are being closed by this NMU.
+.TP
+\fB\-\-mutt\fR
+Use \fBmutt\fR(1) for editing and sending the message to the BTS
+(default behaviour). This can be controlled using a configuration
+file option (see below).
+.TP
+\fB\-\-no\-mutt\fR
+Use \fBsensible\-editor\fR(1) to edit the message and then mail it
+directly using \fI/usr/bin/sendmail\fR. This can be controlled using
+a configuration file option (see below).
+.TP
+\fB\-\-sendmail\fR \fISENDMAILCMD\fR
+Specify the \fBsendmail\fR command. The command will be split on white
+space and will be interpreted by the shell. Default is
+\fI/usr/sbin/sendmail\fR. The \fB\-t\fR option will be automatically
+added if the command is \fI/usr/sbin/sendmail\fR or
+\fI/usr/sbin/exim*\fR. For other mailers, if they require a \fB\-t\fR
+option, this must be included in the \fISENDMAILCMD\fR, for example:
+\fB\-\-sendmail="/usr/sbin/mymailer \-t"\fR. This can also be set using the
+devscripts configuration files; see below.
+.TP
+\fB\-\-from\fR \fIEMAIL\fR
+If using the \fBsendmail\fR (\fB\-\-no\-mutt\fR) option, then the email to the
+BTS will be sent using the name and address in the environment
+variables \fBDEBEMAIL\fR and \fBDEBFULLNAME\fR. If these are not set, then the
+variables \fBEMAIL\fR and \fBNAME\fR will be used instead. These can be overridden
+using the \fB\-\-from\fR option. The program will not work in this case
+if an email address cannot be determined.
+.TP
+\fB\-\-delay\fR \fIDELAY\fR
+Indicate in the generated mail that the NMU has been uploaded to the
+DELAYED queue, with a delay of \fIDELAY\fR days. The default value is
+\fIXX\fR which adds a placeholder to the e-mail. A value of \fB0\fR indicates
+that the upload has not been sent to a delayed queue. This can also be set using the
+devscripts configuration files; see below.
+.TP
+\fB\-\-no\-delay\fR, \fB\-\-nodelay\fR
+Equivalent to \fB\-\-delay 0\fR.
+.TP
+\fB\-\-no\-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+.B \-\-help
+Display a help message and exit successfully.
+.TP
+.B \-\-version
+Display version and copyright information and exit successfully.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variables are:
+.TP
+.B NMUDIFF_DELAY
+If this is set to a number, e-mails generated by \fBnmudiff\fR will by
+default mention an upload to the DELAYED queue, delayed for the
+specified number of days. The value \fB0\fR indicates that the DELAYED
+queue has not been used.
+.TP
+.B NMUDIFF_MUTT
+Can be \fIyes\fR (default) or \fIno\fR, and specifies whether to use
+\fBmutt\fR to compose and send the message or not, as described
+above.
+.TP
+.B NMUDIFF_NEWREPORT
+This option controls whether a new bug report is made, or whether the
+diff is sent to the bugs closed by this NMU. Can be \fImaybe\fR
+(default), which sends to the existing bug reports if exactly one bug
+is being closed; \fIyes\fR, which always creates a new report, or \fIno\fR,
+which always sends to the reports of the bugs being closed (unless no
+bugs are being closed, in which case a new report is always made).
+.TP
+.B BTS_SENDMAIL_COMMAND
+If this is set, specifies a \fBsendmail\fR command to use instead of
+\fI/usr/sbin/sendmail\fR. Same as the \fB\-\-sendmail\fR command line option.
+.SH "SEE ALSO"
+.BR debdiff (1),
+.BR sensible-editor (1),
+.BR devscripts.conf (5)
+.SH AUTHOR
+\fBnmudiff\fR was written and is copyright 2006 by Steinar
+H. Gunderson and modified by Julian Gilbey <jdg@debian.org>. The
+software may be freely redistributed under the terms and conditions of
+the GNU General Public License, version 2.
--- /dev/null
+#!/bin/bash
+# Copyright 2006 by Steinar H. Gunderson
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of version 2 (only) of the GNU General Public License
+# as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+set -e
+
+PROGNAME=`basename $0`
+MODIFIED_CONF_MSG='Default settings modified by devscripts configuration files:'
+
+usage () {
+ echo \
+"Usage: $PROGNAME
+ Generate a diff for an NMU and mail it to the BTS.
+ $PROGNAME options:
+ --new Submit a new bug report rather than sending messages
+ to the fixed bugs (default if more than one bug being
+ closed or no bugs being closed)
+ --old Send reports to the bugs which are being closed rather
+ than submit a new bug (default if only one bug being
+ closed)
+ --sendmail=SENDMAILCMD
+ Use SENDMAILCMD instead of \"/usr/sbin/sendmail -t\"
+ --mutt Use mutt to mail the message (default)
+ --no-mutt Mail the message directly, don't use mutt
+ --from=EMAIL Use EMAIL address for message to BTS; defaults to
+ value of DEBEMAIL or EMAIL
+ --delay=DELAY Indicate that the NMU has been uploaded to the
+ DELAYED queue, with a delay of DELAY days; defaults
+ to a placeholder value of "XX". If DELAY is 0 then
+ no reference is made to the DELAYED queue.
+ --no-delay Equivalent to \"--delay=0\"
+ --no-conf, --noconf
+ Don't read devscripts config files;
+ must be the first option given
+ --help, -h Show this help information.
+ --version Show version and copyright information.
+
+$MODIFIED_CONF_MSG"
+}
+
+version () {
+ cat <<EOF
+This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2006 by Steinar H. Gunderson, with modifications
+copyright 2006 by Julian Gilbey <jdg@debian.org>.
+The software may be freely redistributed under the terms and conditions
+of the GNU General Public License, version 2.
+EOF
+}
+
+# Boilerplate: set config variables
+DEFAULT_NMUDIFF_DELAY="XX"
+DEFAULT_NMUDIFF_MUTT="yes"
+DEFAULT_NMUDIFF_NEWREPORT="maybe"
+DEFAULT_BTS_SENDMAIL_COMMAND="/usr/sbin/sendmail"
+VARS="NMUDIFF_DELAY NMUDIFF_MUTT NMUDIFF_NEWREPORT BTS_SENDMAIL_COMMAND"
+# Don't think it's worth including this stuff
+# DEFAULT_DEVSCRIPTS_CHECK_DIRNAME_LEVEL=1
+# DEFAULT_DEVSCRIPTS_CHECK_DIRNAME_REGEX='PACKAGE(-.+)?'
+# VARS="BTS_SENDMAIL_COMMAND DEVSCRIPTS_CHECK_DIRNAME_LEVEL DEVSCRIPTS_CHECK_DIRNAME_REGEX"
+
+if [ "$1" = "--no-conf" -o "$1" = "--noconf" ]; then
+ shift
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (no configuration files read)"
+
+ # set defaults
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+else
+ # Run in a subshell for protection against accidental errors
+ # in the config files
+ eval $(
+ set +e
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+
+ for file in /etc/devscripts.conf ~/.devscripts
+ do
+ [ -r $file ] && . $file
+ done
+
+ set | egrep '^(NMUDIFF|BTS|DEVSCRIPTS)_')
+
+ # check sanity
+ case "$BTS_SENDMAIL_COMMAND" in
+ "") BTS_SENDMAIL_COMMAND=/usr/sbin/sendmail ;;
+ *) ;;
+ esac
+ if [ "$NMUDIFF_DELAY" = "XX" ]; then
+ # Fine
+ :
+ else
+ if ! [ "$NMUDIFF_DELAY" -ge 0 ] 2>/dev/null; then
+ NMUDIFF_DELAY=XX
+ fi
+ fi
+ case "$NMUDIFF_MUTT" in
+ yes|no) ;;
+ *) NMUDIFF_MUTT=yes ;;
+ esac
+ case "$NMUDIFF_NEWREPORT" in
+ yes|no|maybe) ;;
+ *) NMUDIFF_NEWREPORT=maybe ;;
+ esac
+# case "$DEVSCRIPTS_CHECK_DIRNAME_LEVEL" in
+# 0|1|2) ;;
+# *) DEVSCRIPTS_CHECK_DIRNAME_LEVEL=1 ;;
+# esac
+
+ # set config message
+ MODIFIED_CONF=''
+ for var in $VARS; do
+ eval "if [ \"\$$var\" != \"\$DEFAULT_$var\" ]; then
+ MODIFIED_CONF_MSG=\"\$MODIFIED_CONF_MSG
+ $var=\$$var\";
+ MODIFIED_CONF=yes;
+ fi"
+ done
+
+ if [ -z "$MODIFIED_CONF" ]; then
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (none)"
+ fi
+fi
+
+# # synonyms
+# CHECK_DIRNAME_LEVEL="$DEVSCRIPTS_CHECK_DIRNAME_LEVEL"
+# CHECK_DIRNAME_REGEX="$DEVSCRIPTS_CHECK_DIRNAME_REGEX"
+
+# Need -o option to getopt or else it doesn't work
+# Removed: --long check-dirname-level:,check-dirname-regex: \
+TEMP=$(getopt -s bash -o "h" \
+ --long sendmail:,from:,new,old,mutt,no-mutt,nomutt \
+ --long delay:,no-delay,nodelay \
+ --long no-conf,noconf \
+ --long help,version -n "$PROGNAME" -- "$@") || (usage >&2; exit 1)
+
+eval set -- $TEMP
+
+# Process Parameters
+while [ "$1" ]; do
+ case $1 in
+# --check-dirname-level)
+# shift
+# case "$1" in
+# 0|1|2) CHECK_DIRNAME_LEVEL=$1 ;;
+# *) echo "$PROGNAME: unrecognised --check-dirname-level value (allowed are 0,1,2)" >&2
+# exit 1 ;;
+# esac
+# ;;
+# --check-dirname-regex)
+# shift; CHECK_DIRNAME_REGEX="$1" ;;
+ --delay)
+ shift
+ if [ "$1" = "XX" ]; then
+ # Fine
+ NMUDIFF_DELAY="$1"
+ else
+ if ! [ "$1" -ge 0 ] 2>/dev/null; then
+ NMUDIFF_DELAY=XX
+ else
+ NMUDIFF_DELAY="$1"
+ fi
+ fi
+ ;;
+ --nodelay|--no-delay)
+ NMUDIFF_DELAY=0 ;;
+ --mutt)
+ NMUDIFF_MUTT=yes ;;
+ --nomutt|--no-mutt)
+ NMUDIFF_MUTT=no ;;
+ --new)
+ NMUDIFF_NEWREPORT=yes ;;
+ --old)
+ NMUDIFF_NEWREPORT=no ;;
+ --sendmail)
+ shift
+ case "$1" in
+ "") echo "$PROGNAME: SENDMAIL command cannot be empty, using default" >&2
+ ;;
+ *) BTS_SENDMAIL_COMMAND="$1" ;;
+ esac
+ ;;
+ --from)
+ shift
+ FROM="$1"
+ ;;
+ --no-conf|--noconf)
+ echo "$PROGNAME: $1 is only acceptable as the first command-line option!" >&2
+ exit 1 ;;
+ --help|-h) usage; exit 0 ;;
+ --version) version; exit 0 ;;
+ --) shift; break ;;
+ *) echo "$PROGNAME: bug in option parser, sorry!" >&2 ; exit 1 ;;
+ esac
+ shift
+done
+
+# Still going?
+if [ $# -gt 0 ]; then
+ echo "$PROGNAME takes no non-option arguments;" >&2
+ echo "try $PROGNAME --help for usage information" >&2
+ exit 1
+fi
+
+if [ "$NMUDIFF_MUTT" = yes ] && ! command -v mutt > /dev/null 2>&1; then
+ echo "$PROGNAME: can't find mutt, falling back to sendmail instead" >&2
+ NMUDIFF_MUTT=no
+fi
+
+if [ "$NMUDIFF_MUTT" = no ]; then
+ if [ -z "$FROM" ]; then
+ : ${FROMNAME:="$DEBFULLNAME"}
+ : ${FROMNAME:="$NAME"}
+ fi
+ : ${FROM:="$DEBEMAIL"}
+ : ${FROM:="$EMAIL"}
+ if [ -z "$FROM" ]; then
+ echo "$PROGNAME: must set email address either with DEBEMAIL environment variable" >&2
+ echo "or EMAIL environment variable or using --from command line option." >&2
+ exit 1
+ fi
+ if [ -n "$FROMNAME" ]; then
+ # If $FROM looks like "Name <email@address>" then extract just the address
+ if [ "$FROM" = "$(echo "$FROM" | sed -ne '/^\(.*\) *<\(.*\)> *$/p')" ]; then
+ FROM="$(echo "$FROM" | sed -ne 's/^\(.*\) *<\(.*\)> *$/\2/p')"
+ fi
+ FROM="$FROMNAME <$FROM>"
+ fi
+fi
+
+if ! [ -f debian/changelog ]; then
+ echo "nmudiff: must be run from top of NMU build tree!" >&2
+ exit 1
+fi
+
+SOURCE=$(dpkg-parsechangelog | grep ^Source: | cut -d" " -f2)
+if [ -z "$SOURCE" ]; then
+ echo "nmudiff: could not determine source package name from changelog!" >&2
+ exit 1
+fi
+
+VERSION=$(dpkg-parsechangelog | grep ^Version: | cut -d" " -f2)
+if [ -z "$VERSION" ]; then
+ echo "nmudiff: could not determine source package version from changelog!" >&2
+ exit 1
+fi
+
+CLOSES=$(dpkg-parsechangelog | grep ^Closes: | cut -d" " -f2-)
+
+if [ -z "$CLOSES" ]; then
+ # no bug reports, so make a new report in any event
+ NMUDIFF_NEWREPORT=yes
+fi
+
+if [ "$NMUDIFF_NEWREPORT" = "maybe" ]; then
+ if $(expr match "$CLOSES" ".* " > /dev/null); then
+ # multiple bug reports, so make a new report
+ NMUDIFF_NEWREPORT=yes
+ else
+ NMUDIFF_NEWREPORT=no
+ fi
+fi
+
+OLDVERSION=$(dpkg-parsechangelog -o1 -c1 | grep ^Version: | cut -d" " -f2)
+if [ -z "$OLDVERSION" ]; then
+ echo "nmudiff: could not determine previous package version from changelog!" >&2
+ exit 1
+fi
+
+VERSION_NO_EPOCH=$(echo "$VERSION" | sed "s/^[0-9]\+://")
+OLDVERSION_NO_EPOCH=$(echo "$OLDVERSION" | sed "s/^[0-9]\+://")
+
+if [ ! -r ../${SOURCE}_${OLDVERSION_NO_EPOCH}.dsc ]; then
+ echo "nmudiff: could not read ../${SOURCE}_${OLDVERSION_NO_EPOCH}.dsc" >&2
+ exit 1
+fi
+if [ ! -r ../${SOURCE}_${VERSION_NO_EPOCH}.dsc ]; then
+ echo "nmudiff: could not read ../${SOURCE}_${VERSION_NO_EPOCH}.dsc" >&2
+ exit 1
+fi
+
+ret=0
+debdiff ../${SOURCE}_${OLDVERSION_NO_EPOCH}.dsc \
+ ../${SOURCE}_${VERSION_NO_EPOCH}.dsc \
+ > ../${SOURCE}-${VERSION_NO_EPOCH}-nmu.diff || ret=$?
+if [ $ret -ne 0 ] && [ $ret -ne 1 ]; then
+ echo "nmudiff: debdiff failed, aborting." >&2
+ rm -f ../${SOURCE}-${VERSION_NO_EPOCH}-nmu.diff
+ exit 1
+fi
+
+TO_ADDRESSES_SENDMAIL=""
+TO_ADDRESSES_MUTT=""
+BCC_ADDRESS_SENDMAIL=""
+BCC_ADDRESS_MUTT=""
+TAGS=""
+if [ "$NMUDIFF_NEWREPORT" = "yes" ]; then
+ TO_ADDRESSES_SENDMAIL="submit@bugs.debian.org"
+ TO_ADDRESSES_MUTT="submit@bugs.debian.org"
+ TAGS="Package: $SOURCE
+Version: $OLDVERSION
+Severity: normal
+Tags: patch pending"
+else
+ for b in $CLOSES; do
+ TO_ADDRESSES_SENDMAIL="$TO_ADDRESSES_SENDMAIL,
+ $b@bugs.debian.org"
+ TO_ADDRESSES_MUTT="$TO_ADDRESSES_MUTT $b@bugs.debian.org"
+ if [ "`bts select bugs:$b tag:patch`" != "$b" ]; then
+ TAGS="$TAGS
+Control: tags $b + patch"
+ fi
+ if [ "$NMUDIFF_DELAY" != "0" ] && [ "`bts select bugs:$b tag:pending`" != "$b" ]; then
+ TAGS="$TAGS
+Control: tags $b + pending"
+ fi
+ done
+ TO_ADDRESSES_SENDMAIL=$(echo "$TO_ADDRESSES_SENDMAIL" | tail -n +2)
+ if [ "$TAGS" != "" ]; then
+ TAGS=$(echo "$TAGS" | tail -n +2)
+ fi
+fi
+
+TMPNAM="$(tempfile)"
+
+if [ "$NMUDIFF_DELAY" = "XX" ]; then
+ DELAY_HEADER="
+[Replace XX with correct value]"
+fi
+
+if [ "$NMUDIFF_DELAY" = "0" ]; then
+ BODY="$(printf "%s\n%s\n" \
+"I've prepared an NMU for $SOURCE (versioned as $VERSION). The diff" \
+"is attached to this message.")"
+else
+ BODY="$(printf "%s\n%s\n%s\n" \
+"I've prepared an NMU for $SOURCE (versioned as $VERSION) and" \
+"uploaded it to DELAYED/$NMUDIFF_DELAY. Please feel free to tell me if I" \
+"should delay it longer.")"
+fi
+
+if [ "$NMUDIFF_MUTT" = no ]; then
+ cat <<EOF > "$TMPNAM"
+From: $FROM
+To: $TO_ADDRESSES_SENDMAIL
+Cc:
+Bcc: $BCC_ADDRESS_SENDMAIL
+Subject: $SOURCE: diff for NMU version $VERSION
+Date: `date -R`
+X-NMUDIFF-Version: ###VERSION###
+
+$TAGS
+$DELAY_HEADER
+Dear maintainer,
+
+$BODY
+
+Regards.
+EOF
+
+ cat ../${SOURCE}-${VERSION_NO_EPOCH}-nmu.diff >> "$TMPNAM"
+ sensible-editor "$TMPNAM"
+ if [ $? -ne 0 ]; then
+ echo "nmudiff: sensible-editor exited with error, aborting." >&2
+ rm -f ../${SOURCE}-${VERSION_NO_EPOCH}-nmu.diff "$TMPNAM"
+ exit 1
+ fi
+
+ while : ; do
+ echo -n "Do you want to go ahead and submit the bug report now? (y/n) "
+ read response
+ case "$response" in
+ y*) break;;
+ n*) echo "OK, then, aborting." >&2
+ rm -f ../${SOURCE}-${VERSION_NO_EPOCH}-nmu.diff "$TMPNAM"
+ exit 1
+ ;;
+ esac
+ done
+
+ case "$BTS_SENDMAIL_COMMAND" in
+ /usr/sbin/sendmail*|/usr/sbin/exim*)
+ BTS_SENDMAIL_COMMAND="$BTS_SENDMAIL_COMMAND -t" ;;
+ *) ;;
+ esac
+
+ $BTS_SENDMAIL_COMMAND < "$TMPNAM"
+
+else # NMUDIFF_MUTT=yes
+ cat <<EOF > "$TMPNAM"
+$TAGS
+$DELAY_HEADER
+Dear maintainer,
+
+$BODY
+
+Regards.
+EOF
+
+ mutt -s "$SOURCE: diff for NMU version $VERSION" -i "$TMPNAM" \
+ -e "my_hdr X-NMUDIFF-Version: ###VERSION###" \
+ -a ../${SOURCE}-${VERSION_NO_EPOCH}-nmu.diff $BCC_ADDRESS_MUTT \
+ -- $TO_ADDRESSES_MUTT
+
+fi
+
+rm -f ../${SOURCE}-${VERSION_NO_EPOCH}-nmu.diff "$TMPNAM"
--- /dev/null
+#!/usr/bin/perl
+#
+# origtargz: fetch the orig tarball of a Debian package from various sources,
+# and unpack it
+# Copyright (C) 2012-2013 Christoph Berg <myon@debian.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+=head1 NAME
+
+origtargz - fetch the orig tarball of a Debian package from various sources, and unpack it
+
+=head1 SYNOPSIS
+
+=over
+
+=item B<origtargz> [I<OPTIONS>] [B<--unpack>[=B<no>|B<once>|B<yes>]]
+
+=item B<origtargz> B<--help>
+
+=back
+
+=head1 DESCRIPTION
+
+B<origtargz> downloads the orig tarball of a Debian package, and optionally
+unpacks it into the current directory. The version number to be used is
+determined from F<debian/changelog>. The main use for B<origtargz> is with
+debian-dir-only repository checkouts. It should be invoked from the top level
+directory of an unpacked Debian source package.
+
+Various download locations are tried:
+
+=over 4
+
+=item *
+
+First, an existing file is looked for.
+
+=item *
+
+Directories given with B<--path> are searched.
+
+=item *
+
+B<pristine-tar> is tried.
+
+=item *
+
+B<apt-get source> is tried when B<apt-cache showsrc> reports a matching version.
+
+=item *
+
+Finally, B<uscan --download-current-version> is tried.
+
+=back
+
+When asked to unpack the orig tarball, B<origtargz> will remove all files and
+directories from the current directory, except the debian directory, and the
+VCS repository directories. Some files outside F<debian/> which are often stored
+in VCS even for debian-dir-only repositories are also preserved (F<.bzr-builddeb>,
+F<.gitignore>, F<.hgignore>). I<Note that this will drop all non-committed changes>
+for the patch system in use (e.g. source format "3.0 (quilt)"), and will even
+remove all patches from the package when no patch system is in use (the
+original "1.0" source format).
+
+The default behavior is to unpack the orig tarball on the first invocation of
+B<origtargz> in a debian-dir-only checkout.
+
+=head1 NOTES
+
+Despite B<origtargz> being called "targz", it will work with any compression
+scheme used for the tarball.
+
+A similar tool to unpack orig tarballs is B<uupdate>(1). B<uupdate> creates a
+new working directory, unpacks the tarball, and applies the Debian F<.diff.gz>
+changes. In contrast, B<origtargz> uses the current directory, keeping VCS
+metadata.
+
+For Debian package repositories that keep the full upstream source, other tools
+should be used to upgrade the repository from the new tarball. See
+B<git-import-orig>(1) and B<svn-upgrade>(1) for examples. B<origtargz> is still
+useful for downloading the current tarball.
+
+=head1 OPTIONS
+
+=over
+
+=item B<-p>, B<--path> I<directory>
+
+Add I<directory> to the list of locations to search for an existing tarball.
+When found, a hardlink is created if possible, otherwise a symlink.
+
+=item B<-u>, B<--unpack>[=B<no>|B<once>|B<yes>]
+
+Unpack the downloaded orig tarball to the current directory, replacing
+everything except the debian directory. Existing files are removed, except for
+F<debian/> and VCS files. Preserved are: F<.bzr>, F<.bzrignore>,
+F<.bzr-builddeb>, F<.git>, F<.gitignore>, F<.hg>, F<.hgignore>, F<_darcs> and
+F<.svn>.
+
+=over
+
+=item B<no>
+
+Do not unpack the orig tarball.
+
+=item B<once> (default when B<--unpack> is not used)
+
+If the current directory contains only a F<debian> directory (and possibly some
+dotfiles), unpack the orig tarball. This is the default behavior.
+
+=item B<yes> (default for B<--unpack> without argument)
+
+Always unpack the orig tarball.
+
+=back
+
+=item B<-d>, B<--download-only>
+
+Alias for B<--unpack=no>.
+
+=item B<-t>, B<--tar-only>
+
+When using B<apt-get source>, pass B<--tar-only> to it. The default is to
+download the full source package including F<.dsc> and F<.diff.gz> or
+F<.debian.tar.gz> components so B<debdiff> can be used to diff the last upload
+to the next one. With B<--tar-only>, only download the F<.orig.tar.*> file.
+
+=item B<--clean>
+
+Remove existing files as with B<--unpack>. Note that like B<--unpack>, this
+will remove upstream files even if they are stored in VCS.
+
+=back
+
+=cut
+
+#=head1 CONFIGURATION VARIABLES
+#
+#The two configuration files F</etc/devscripts.conf> and
+#F<~/.devscripts> are sourced by a shell in that order to set
+#configuration variables. Command line options can be used to override
+#configuration file settings. Environment variable settings are ignored
+#for this purpose. The currently recognised variables are:
+
+=head1 SEE ALSO
+
+B<debcheckout>(1), B<git-import-orig>(1), B<pristine-tar>(1), B<svn-upgrade>(1), B<uupdate>(1)
+
+=head1 AUTHOR
+
+B<origtargz> and this manpage have been written by Christoph Berg
+<I<myon@debian.org>>.
+
+=cut
+
+# option parsing
+
+use strict;
+use warnings;
+use File::Temp qw/tempdir/;
+use Getopt::Long qw(:config gnu_getopt);
+use Pod::Usage;
+
+my @dirs = ();
+my $tar_only = 0;
+my $unpack = 'once'; # default when --unpack is not used
+my $clean = 0;
+
+GetOptions(
+ "path|p=s" => \@dirs,
+ "download-only|d" => sub { $unpack = 'no' },
+ "help|h" => sub { pod2usage({-exitval => 0, -verbose => 1}); },
+ "tar-only|t" => \$tar_only,
+ "unpack|u:s" => \$unpack,
+ "clean" => \$clean,
+) or pod2usage({-exitval => 3});
+
+$unpack = 'yes' if (defined $unpack and $unpack eq ''); # default for --unpack without argument
+pod2usage({-exitval => 3}) if (@ARGV > 0 or $unpack !~ /^(no|once|yes)$/);
+
+# get package name and version number
+
+my ($package, $version, $origversion, $fileversion);
+
+open F, "debian/changelog" or die "debian/changelog: $!\n";
+my $line = <F>;
+close F;
+unless ($line =~ /^(\S+) \((\S+)\)/) {
+ die "could not parse debian/changelog:1: $line";
+}
+($package, $version) = ($1, $2);
+unless ($version =~ /-/) {
+ print "Package with native version number $version, skipping orig.tar.* download\n";
+ exit 0;
+}
+$origversion = $version;
+$origversion =~ s/(.*)-.*/$1/; # strip everything from the last dash
+$fileversion = $origversion;
+$fileversion =~ s/^\d+://; # strip epoch
+
+# functions
+
+sub download_origtar ()
+{
+ # look for an existing file
+
+ if (my @f = glob "../${package}_$fileversion.orig.tar.*") {
+ print "Using existing $f[0]\n";
+ return $f[0];
+ }
+
+ # try other directories
+
+ foreach my $dir (@dirs) {
+ $dir =~ s!/$!!;
+
+ if (my @f = glob "$dir/${package}_$fileversion.orig.tar.*") {
+ print "Using $f[0]\n";
+ my $basename = $f[0];
+ $basename =~ s!.*/!!;
+ link $f[0], "../$basename" or
+ symlink $f[0], "../$basename" or
+ die "symlink: $!";
+ return $f[0];
+ }
+ }
+
+ # try pristine-tar
+
+ my @files = grep { /^\Q${package}_$fileversion.orig.tar.\E/ }
+ map { chomp; $_; } # remove newlines
+ `pristine-tar list 2>&1`;
+ if (@files) {
+ system "pristine-tar checkout ../$files[0]";
+ }
+
+ if (my @f = glob "../${package}_$fileversion.orig.tar.*") {
+ return $f[0];
+ }
+
+ # try apt-get source
+
+ open S, "apt-cache showsrc '$package' |";
+ my @showsrc;
+ {
+ local $/ = ""; # slurp paragraphs
+ @showsrc = <S>;
+ }
+ close S;
+
+ my $bestsrcversion;
+ foreach my $src (@showsrc) {
+ $src =~ /^Package: (.*)/m or next;
+ next if ($1 ne $package); ; # should never trigger, but who knows
+ $src =~ /^Version: (.*)/m or next;
+ my $srcversion = $1;
+ my $srcorigversion = $srcversion;
+ $srcorigversion =~ s/(.*)-.*/$1/; # strip everything from the last dash
+
+ if ($srcorigversion eq $origversion) { # loop through all matching versions
+ $bestsrcversion = $srcversion;
+ last if ($srcversion eq $version); # break if exact match
+ }
+ }
+
+ if ($bestsrcversion) {
+ print "Trying apt-get source $package=$bestsrcversion ...\n";
+ my $t = $tar_only ? '--tar-only' : '';
+ system "cd .. && apt-get source --only-source --download-only $t '$package=$bestsrcversion'";
+ }
+
+ if (my @f = glob "../${package}_$fileversion.orig.tar.*") {
+ return $f[0];
+ }
+
+ # try uscan
+
+ if (-f "debian/watch") {
+ print "Trying uscan --download-current-version ...\n";
+ system "uscan --download-current-version --rename\n";
+ }
+
+ if (my @f = glob "../${package}_$fileversion.orig.tar.*") {
+ return $f[0];
+ }
+
+ print "Could not find any location for ${package}_$fileversion.orig.tar.*\n";
+ return undef;
+}
+
+sub clean_checkout ()
+{
+ # delete all files except debian/, our VCS checkout, and some files
+ # often in VCS outside debian/ even in debian-dir-only repositories
+ opendir DIR, '.' or die "opendir: $!";
+ my @rm;
+ while (my $file = readdir DIR) {
+ next if ($file eq '.' or $file eq '..');
+ next if ($file eq 'debian');
+ next if ($file =~ /^(\.bzr|\.git|\.hg|\.svn|CVS|_darcs)$/);
+ if ($file =~ /^(\.bzr(ignore|-builddeb)|\.gitignore|\.hgignore)$/) {
+ print "Notice: not deleting $file (likely to come from VCS checkout)\n";
+ next;
+ }
+ push @rm, $file;
+ }
+ close DIR;
+ system ('rm', '-rf', @rm);
+}
+
+sub unpack_tarball ($)
+{
+ my $origtar = shift;
+ my $tmpdir = File::Temp->newdir(DIR => ".", CLEANUP => 1);
+
+ print "Unpacking $origtar\n";
+
+ # unpack
+ chdir $tmpdir or die "chdir $tmpdir: $!";
+ system ('tar', 'xf', "../$origtar");
+ if ($? >> 8) {
+ print STDERR "tar xf $origtar failed\n";
+ return 0;
+ }
+ chdir '..';
+
+ # figure out which directory was created
+ my @dirs = glob "$tmpdir/*/";
+ unless (@dirs) {
+ print STDERR "tar xf $origtar did not create any directory\n";
+ return 0;
+ }
+ my $directory = $dirs[0];
+ chop $directory;
+
+ # move all files over, except the debian directory
+ opendir DIR, $directory or die "opendir $directory: $!";
+ foreach my $file (readdir DIR) {
+ if ($file eq 'debian') {
+ system ('rm', '-rf', "$directory/$file");
+ next;
+ } elsif ($file eq '.' or $file eq '..') {
+ next;
+ }
+ unless (rename "$directory/$file", "$file") {
+ print STDERR "rename $directory/$file $file: $!\n";
+ return 0;
+ }
+ }
+ closedir DIR;
+ rmdir $directory;
+
+ return 1;
+}
+
+# main
+
+if ($clean) {
+ clean_checkout;
+ exit 0;
+}
+
+my $origtar = download_origtar;
+exit 1 unless ($origtar);
+
+if ($unpack eq 'once') {
+ my @files = glob '*'; # ignores dotfiles
+ if (@files == 1) { # this is debian/, we have already opened debian/changelog
+ unpack_tarball ($origtar) or exit 1;
+ }
+} elsif ($unpack eq 'yes') {
+ clean_checkout;
+ unpack_tarball ($origtar) or exit 1;
+}
+
+exit 0;
--- /dev/null
+_pkg_names()
+{
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+
+ COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
+
+ return 0
+}
+
+_debc()
+{
+ local cur
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ COMPREPLY=($(compgen -f -X '!*.changes' -- "$cur"))
+ if echo "$cur" | grep -qs '^[a-z0-9+.-]*$'; then
+ COMPREPLY=(${COMPREPLY[@]} $(apt-cache pkgnames -- $cur 2> /dev/null))
+ fi
+ return 0
+}
+complete -F _pkg_names wnpp-alert wnpp-check mk-build-deps rmadison mass-bug debsnap dd-list build-rdeps who-uploads transition-check getbuildlog dcontrol grep-excuses rc-alert bts whodepends dget pts-subscribe debc pts-unsubscribe
+complete -o dirnames -F _debc debc
--- /dev/null
+.TH PLOTCHANGELOG 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+plotchangelog \- graph Debian changelogs
+.SH SYNOPSIS
+.B plotchangelog
+.I "\fR[\fPoptions\fR]\fP changelog \fR...\fP"
+.SH "DESCRIPTION"
+.BR plotchangelog
+is a tool to aid in visualizing a Debian \fIchangelog\fR. The changelogs are
+graphed with
+.BR gnuplot (1)
+, with the X axis of the graph denoting time of release and the Y axis
+denoting the Debian version number of the package. Each individual release
+of the package is represented by a point, and the points are color coded to
+indicate who released that version of the package. The upstream version
+number of the package can also be labeled on the graph.
+.PP
+Alternatively, the Y axis can be configured to display the size of the
+changelog entry for each new version. Or it can be configured to display
+approximately how many bugs were fixed for each new version.
+.PP
+Note that if the package is a Debian-specific package, the entire package
+version will be used for the Y axis. This does not always work perfectly.
+.PP
+.SH "READING THE GRAPH"
+The general outline of a package's
+graph is typically a series of peaks, starting at 1, going up to n, and then
+returning abruptly to 1. The higher the peaks, the more releases the
+maintainer made between new upstream versions of the package. If a package
+is Debian-only, it's graph will just grow upwards without ever falling
+(although a bug in this program may cause it to fall sometimes, if the
+version number goes from say, 0.9 to say, 0.10 - this is interpreted wrong...)
+.PP
+If the graph dips below 1, someone made a NMU of the package and upgraded it
+to a new upstream version, thus setting the Debian version to 0. NMU's in
+general appear as fractional points like 1.1, 2.1, etc. A NMU can also be
+easily detected by looking at the points that represent which maintainer
+uploaded the package -- a solitary point of a different type than the points
+before and after it is typically a NMU.
+.PP
+It's also easy to tell by looking at the points when a package changes
+maintainers.
+.SH OPTIONS
+.TP
+.B \-l\fR, \fP\-\-linecount
+Instead of using the Debian version number as the Y axis, use the number of
+lines in the changelog entry for each version. Cannot be used
+together with
+.BR \-\-bugcount .
+.TP
+.B \-b\fR, \fP\-\-bugcount
+Instead of using the Debian version number as the Y axis, use the number of
+bugs that were closed by each changelog entry. Note that this number is
+obtained by searching for "#dddd" in the changelog, and so it may be
+inaccurate. Cannot be used together with
+.BR \-\-linecount .
+.TP
+.B \-c\fR, \fP\-\-cumulative
+When used together with either
+.B \-\-bugcount
+or
+.BR \-\-linecount ,
+graphs the cumulative count rather than the count in each individual
+changelog entry.
+.TP
+.B \-v\fR, \fP\-\-no-version
+Do not show upstream version labels. Useful if the graph gets too crowded.
+.TP
+.B \-m, \-\-no-maint
+Do not differentiate between different maintainers of the package.
+.TP
+.B \-s file\fR, \fP\-\-save=\fIfile
+Save the graph to \fIfile\fR in PostScript format instead of immediately
+displaying it.
+.TP
+.B \-u\fR, \fP\-\-urgency
+Use larger points when displaying higher-urgency package uploads.
+.TP
+.B \-\-verbose
+Output the gnuplot script that is fed into gnuplot (for debugging purposes).
+.TP
+.B \-g\fIcommands\fR, \fB\-\-gnuplot=\fIcommands
+This allows you to insert
+.BR gnuplot (1)
+commands into the gnuplot script that is used to generate the graph. The
+commands are placed after all initialization but before the final \fBplot\fR
+command. This can be used to override the default look provided by this
+program in arbitrary ways. You can also use things like
+"set terminal png color"
+to change the output file type, which is useful in conjunction with
+the \-s option.
+.TP
+.B \-\-help
+Show a usage summary.
+.TP
+.B \-\-version
+Display version, author and copyright information.
+.TP
+.B \-\-noconf\fR, \fP\-\-no-conf
+Do not read any configuration files (see below).
+.TP
+.I changelog \fR...
+The \fIchangelog\fR files to graph. If multiple files are specified they will all
+be displayed on the same graph. The files may be compressed with gzip. Any
+text in them that is not in Debian changelog format will be ignored.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced by a shell in that order to set
+configuration variables. The \fB\-\-no\-conf\fR option can be used to
+prevent reading these files. Environment variable settings are
+ignored when these configuration files are read. The currently
+recognised variables are:
+.TP
+.B PLOTCHANGELOG_OPTIONS
+This is a space-separated list of options to always use, for example
+\fB\-l \-b\fP. Do not include \fB\-g\fP or \fB\-\-gnuplot\fP among this list as it
+may be ignored; see the next variable instead.
+.TP
+.B PLOTCHANGELOG_GNUPLOT
+These are
+.B gnuplot
+commands which will be prepended to any such commands given on the
+command line.
+.SH "SEE ALSO"
+.BR devscripts.conf (5)
+.SH AUTHOR
+Joey Hess <joey@kitenet.net>
--- /dev/null
+#!/usr/bin/perl
+#
+# Plot the history of a debian package from the changelog, displaying
+# when each release of the package occurred, and who made each release.
+# To make the graph a little more interesting, the debian revision of the
+# package is used as the y axis.
+#
+# Pass this program the changelog(s) you wish to be plotted.
+#
+# Copyright 1999 by Joey Hess <joey@kitenet.net>
+# Modifications copyright 2003 by Julian Gilbey <jdg@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use 5.006;
+use strict;
+use FileHandle;
+use File::Basename;
+use File::Temp qw/ tempfile /;
+use Fcntl;
+use Getopt::Long qw(:config gnu_getopt);
+
+BEGIN {
+ eval { require Date::Parse; import Date::Parse (); };
+ if ($@) {
+ my $progname = basename($0);
+ if ($@ =~ /^Can\'t locate Date\/Parse\.pm/) {
+ die "$progname: you must have the libtimedate-perl package installed\nto use this script\n";
+ } else {
+ die "$progname: problem loading the Date::Parse module:\n $@\nHave you installed the libtimedate-perl package?\n";
+ }
+ }
+}
+
+
+my $progname = basename($0);
+my $modified_conf_msg;
+
+sub usage {
+ print <<"EOF";
+Usage: plotchangelog [options] changelog ...
+ -v --no-version Do not show package version information.
+ -m --no-maint Do not show package maintainer information.
+ -u --urgency Use larger points for higher urgency uploads.
+ -l --linecount Make the Y axis be number of lines in the
+ changelog.
+ -b --bugcount Make the Y axis be number of bugs closed
+ in the changelog.
+ -c --cumulative With -l or -b, graph the cumulative number
+ of lines or bugs closed.
+ -g "commands" Pass "commands" on to gnuplot, they will be
+ --gnuplot="commands" added to the gnuplot script that is used to
+ generate the graph.
+ -s file --save=file Save the graph to the specified file in
+ postscript format.
+ -d --dump Dump gnuplot script to stdout.
+ --verbose Outputs the gnuplot script.
+ --help Show this message.
+ --version Display version and copyright information.
+ --noconf Don\'t read devscripts configuration files
+
+ At most one of -l and -b (or their long equivalents) may be used.
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOF
+}
+
+my $versioninfo = <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1999 by Joey Hess <joey\@kitenet.net>.
+Modifications copyright 1999-2003 by Julian Gilbey <jdg\@debian.org>
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+
+my ($no_version, $no_maintainer, $gnuplot_commands, $dump,
+ $save_filename, $verbose, $linecount, $bugcount, $cumulative,
+ $help, $showversion, $show_urgency, $noconf)="";
+
+# Handle config file unless --no-conf or --noconf is specified
+# The next stuff is boilerplate
+my $extra_gnuplot_commands='';
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'PLOTCHANGELOG_OPTIONS' => '',
+ 'PLOTCHANGELOG_GNUPLOT' => '',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= "$var='$config_vars{$var}';\n";
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ if ($config_vars{'PLOTCHANGELOG_OPTIONS'}) {
+ unshift @ARGV, split(' ', $config_vars{'PLOTCHANGELOG_OPTIONS'});
+ }
+ $extra_gnuplot_commands=$config_vars{'PLOTCHANGELOG_GNUPLOT'};
+}
+
+GetOptions(
+ "no-version|v", \$no_version,
+ "no-maint|m", \$no_maintainer,
+ "gnuplot|g=s", \$gnuplot_commands,
+ "save|s=s", \$save_filename,
+ "dump|d", \$dump,
+ "urgency|u", \$show_urgency,
+ "verbose", \$verbose,
+ "l|linecount", \$linecount,
+ "b|bugcount", \$bugcount,
+ "c|cumulative", \$cumulative,
+ "help", \$help,
+ "version", \$showversion,
+ "noconf" => \$noconf,
+ "no-conf" => \$noconf,
+ )
+ or die "Usage: $progname [options] changelog ...\nRun $progname --help for more details\n";
+
+if ($noconf) {
+ die "$progname: --no-conf is only acceptable as the first command-line option!\n";
+}
+
+if ($help) {
+ usage();
+ exit 0;
+}
+
+if ($showversion) {
+ print $versioninfo;
+ exit 0;
+}
+
+if ($bugcount && $linecount) {
+ die "$progname: can't use --bugcount and --linecount\nRun $progname --help for usage information.\n";
+}
+
+if ($cumulative && ! $bugcount && ! $linecount) {
+ warn "$progname: --cumulative without --bugcount or --linecount: ignoring\nRun $progname --help for usage information.\n";
+}
+
+if (! @ARGV) {
+ die "Usage: $progname [options] changelog ...\nRun $progname --help for more details\n";
+}
+
+my %data;
+my ($package, $version, $maintainer, $date, $urgency)=undef;
+my ($data_tmpfile, $script_tmpfile);
+my ($data_fh, $script_fh);
+
+if (! $dump) {
+ $data_fh = tempfile("plotdataXXXXXX", UNLINK => 1)
+ or die "cannot create temporary file: $!";
+ fcntl $data_fh, Fcntl::F_SETFD(), 0
+ or die "disabling close-on-exec for temporary file: $!";
+ $script_fh = tempfile("plotscriptXXXXXX", UNLINK => 1)
+ or die "cannot create temporary file: $!";
+ fcntl $script_fh, Fcntl::F_SETFD(), 0
+ or die "disabling close-on-exec for temporary file: $!";
+ $data_tmpfile='/dev/fd/'.fileno($data_fh);
+ $script_tmpfile='/dev/fd/'.fileno($script_fh);
+}
+else {
+ $data_tmpfile='-';
+}
+my %pkgcount;
+my $c;
+
+# Changelog parsing.
+foreach (@ARGV) {
+ if (/\.gz$/) {
+ open F,"zcat $_|" || die "$_: $!";
+ }
+ else {
+ open F,$_ || die "$_: $!";
+ }
+
+ while (<F>) {
+ chomp;
+ # Note that some really old changelogs use priority, not urgency.
+ if (/^(\w+.*?)\s+\((.*?)\)\s+.*?;\s+(?:urgency|priority)=(.*)/i) {
+ $package=lc($1);
+ $version=$2;
+ if ($show_urgency) {
+ $urgency=$3;
+ if ($urgency=~/high/i) {
+ $urgency=2;
+ }
+ elsif ($urgency=~/medium/i) {
+ $urgency=1.5;
+ }
+ else {
+ $urgency=1;
+ }
+ }
+ else {
+ $urgency=1;
+ }
+ undef $maintainer;
+ undef $date;
+ $c=0;
+ }
+ elsif (/^ -- (.*?) (.*)/) {
+ $maintainer=$1;
+ $date=str2time($2);
+
+ # Strip email address.
+ $maintainer=~s/<.*>//;
+ $maintainer=~s/\(.*\)//;
+ $maintainer=~s/\s+$//;
+ }
+ elsif (/^(\w+.*?)\s+\((.*?)\)\s+/) {
+ print STDERR qq[Parse error on "$_"\n];
+ }
+ elsif ($linecount && /^ /) {
+ $c++; # count changelog size.
+ }
+ elsif ($bugcount && /^ /) {
+ # count bugs that were said to be closed.
+ my @bugs=m/#\d+/g;
+ $c+=$#bugs+1;
+ }
+
+ if (defined $package && defined $version &&
+ defined $maintainer && defined $date && defined $urgency) {
+ $data{$package}{$pkgcount{$package}++}=
+ [$linecount || $bugcount ? $c : $version,
+ $maintainer, $date, $urgency];
+ undef $package;
+ undef $version;
+ undef $maintainer;
+ undef $date;
+ undef $urgency;
+ }
+ }
+
+ close F;
+}
+
+if ($cumulative) {
+ # have to massage the data; based on some code from later on
+ foreach $package (keys %data) {
+ my $total = 0;
+ # It's crucial the output is sorted by date.
+ foreach my $i (sort {$data{$package}{$a}[2] <=> $data{$package}{$b}[2]}
+ keys %{$data{$package}}) {
+ $total += $data{$package}{$i}[0];
+ $data{$package}{$i}[0] = $total;
+ }
+ }
+}
+
+my $header=q{
+set key below title "key" box
+set timefmt "%m/%d/%Y %H:%M"
+set xdata time
+set format x "%m/%y"
+set yrange [0 to *]
+};
+if ($linecount) {
+ if ($cumulative) { $header.="set ylabel 'Cumulative changelog length'\n"; }
+ else { $header.="set ylabel 'Changelog length'\n"; }
+}
+elsif ($bugcount) {
+ if ($cumulative) { $header.="set ylabel 'Cumulative bugs closed'\n"; }
+ else { $header.="set ylabel 'Bugs closed'\n"; }
+}
+else {
+ $header.="set ylabel 'Debian version'\n";
+}
+if ($save_filename) {
+ $header.="set terminal postscript color solid\n";
+ $header.="set output '$save_filename'\n";
+}
+my $script="plot ";
+my $data='';
+my $index=0;
+my %maintdata;
+
+# Note that "lines" is used if we are also showing maintainer info,
+# otherwise we use "linespoints" to make sure points show up for each
+# release anyway.
+my $style = $no_maintainer ? "linespoints" : "lines";
+
+foreach $package (keys %data) {
+ my $oldmaintainer="";
+ my $oldversion="";
+ # It's crucial the output is sorted by date.
+ foreach my $i (sort {$data{$package}{$a}[2] <=> $data{$package}{$b}[2]}
+ keys %{$data{$package}}) {
+ my $v=$data{$package}{$i}[0];
+ $maintainer=$data{$package}{$i}[1];
+ $date=$data{$package}{$i}[2];
+ $urgency=$data{$package}{$i}[3];
+
+ $maintainer=~s/"/\\"/g;
+
+ my $y;
+
+ # If it's got a debian revision, use that as the y coordinate.
+ if ($v=~m/(.*)-(.*)/) {
+ $y=$2;
+ $version=$1;
+ }
+ else {
+ $y=$v;
+ }
+
+ # Now make sure the version is a real number. This includes making
+ # sure it has no more than one decimal point in it, and getting rid of
+ # any nonnumeric stuff. Otherwise, the "set label" command below could
+ # fail. Luckily, perl's string -> num conversion is perfect for this job.
+ $y=$y+0;
+
+ if (lc($maintainer) ne lc($oldmaintainer)) {
+ $oldmaintainer=$maintainer;
+ }
+
+ my ($sec, $min, $hour, $mday, $mon, $year)=localtime($date);
+ my $x=($mon+1)."/$mday/".(1900+$year)." $hour:$min";
+ $data.="$x\t$y\n";
+ $maintdata{$oldmaintainer}{$urgency}.="$x\t$y\n";
+
+ if ($oldversion ne $version && ! $no_version) {
+ # Upstream version change. Label it.
+ $header.="set label '$version' at '$x',$y left\n";
+ $oldversion=$version;
+ }
+ }
+ $data.="\n\n"; # start new dataset
+ # Add to plot command.
+ $script.="'$data_tmpfile' index $index using 1:3 title '$package' with $style, ";
+ $index++;
+}
+
+# Add a title.
+my $title.="set title '";
+$title.=$#ARGV > 1 ? "Graphing Debian changelogs" :
+ "Graphing Debian changelog";
+$title.="'\n";
+
+if (! $no_maintainer) {
+ foreach $maintainer (sort keys %maintdata) {
+ foreach $urgency (sort keys %{$maintdata{$maintainer}}) {
+ $data.=$maintdata{$maintainer}{$urgency}."\n\n";
+ $script.="'$data_tmpfile' index $index using 1:3 title \"$maintainer\" with points pointsize ".(1.5 * $urgency).", ";
+ $index++;
+ }
+ }
+}
+
+$script=~s/, $/\n/;
+$script=qq{
+$header
+$title
+$extra_gnuplot_commands
+$gnuplot_commands
+$script
+};
+$script.="pause -1 'Press Return to continue.'\n"
+ unless $save_filename || $dump;
+
+if (! $dump) {
+ # Annoyingly, we have to use 2 temp files. I could just send everything to
+ # gnuplot on stdin, but then the pause -1 doesn't work.
+ open (DATA, ">$data_tmpfile") || die "$data_tmpfile: $!";
+ open (SCRIPT, ">$script_tmpfile") || die "$script_tmpfile: $!";
+}
+else {
+ open (DATA, ">&STDOUT");
+ open (SCRIPT, ">&STDOUT");
+}
+
+print SCRIPT $script;
+print $script if $verbose && ! $dump;
+print DATA $data;
+close SCRIPT;
+close DATA;
+
+if (! $dump) {
+ unless (system("gnuplot",$script_tmpfile) == 0) {
+ die "gnuplot program failed (is the gnuplot package installed?): $!\n";
+ }
+}
--- /dev/null
+.TH PTS-SUBSCRIBE 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+pts-subscribe \- time-limited subscription to the PTS
+.SH SYNOPSIS
+\fBpts-subscribe\fR [\fIoptions\fR] \fIpackage\fR
+.PP
+\fBpts-unsubscribe\fR [\fIoptions\fR] \fIpackage\fR
+.SH DESCRIPTION
+\fBpts-subscribe\fR sends a subscription request for \fIpackage\fR to
+the Package Tracking System at pts@qa.debian.org, and cancels the
+subscription 30 days later.
+.PP
+If called as \fBpts-unsubscribe\fR, send an unsubscription request
+for \fIpackage\fR to the Package Tracking System.
+.PP
+This utility is useful if a developer has made an NMU and wants to
+track the package for a limited period of time.
+.SH OPTIONS
+.TP
+\fB\-\-until \fItime\fR, \fB\-u\fR \fItime\fR
+When \fBat\fR(1) should cancel the subscription. \fItime\fR must be
+specified using \fBat\fR's syntax. Default is 'now + 30 days'. This
+option will probably require quoting!
+.TP
+.B \-\-forever
+Don't cancel the subscription automatically. This can also be
+specified as \fB\-\-until forever\fR.
+.TP
+.BR \-\-help ", " \-h
+Display a help message and exit successfully.
+.TP
+.B \-\-version
+Display version and copyright information and exit successfully.
+.SH "ENVIRONMENT VARIABLES"
+.TP
+.BR DEBEMAIL ", " EMAIL
+If one of these is set (with preference give to \fBDEBEMAIL\fR), then this
+will be used for the subscription address. If neither is set, then
+the email will be sent without a specified subscription address, and
+the email's From: line will be used to determine the sender's
+address. This will be determined by \fBmail\fR(1).
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variables are:
+.TP
+.B PTS_UNTIL
+Setting this is equivalent to giving a \fB\-\-until\fR option.
+.SH "SEE ALSO"
+.BR at (1),
+information about the Package Tracking System in the Developer's
+Reference at
+https://www.debian.org/doc/developers-reference/resources.html#pkg-tracking-system
+.SH AUTHOR
+This program was written by Julian Gilbey <jdg@debian.org> based on a
+public domain prototype by Raphael Hertzog <hertzog@debian.org> and is
+copyright under the GPL, version 2 or later.
--- /dev/null
+#!/bin/bash
+set -e
+
+# Subscribe to the PTS for a specified package for a limited length of time
+
+PROGNAME=`basename $0`
+MODIFIED_CONF_MSG='Default settings modified by devscripts configuration files:'
+
+usage () {
+ echo \
+"Usage: $PROGNAME [options] package
+ Subscribe to the PTS (Package Tracking System) for the specified package
+ for a limited length of time (30 days by default).
+
+ If called as 'pts-unsubscribe', unsubscribe from the PTS for the specified
+ package.
+
+ Options:
+ -u, --until UNTIL
+ When to unsubscribe; this is given as the command-line
+ argument to at (default: 'now + 30 days')
+
+ --until 0, --until forever are synonyms for --forever
+
+ --forever Do not set an at job for unsubscribing
+
+ --no-conf, --noconf
+ Don't read devscripts config files;
+ must be the first option given
+
+ --help Display this help message and exit
+
+ --version Display version information
+
+$MODIFIED_CONF_MSG"
+}
+
+version () {
+ echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2006 by Julian Gilbey, all rights reserved.
+Original public domain code by Raphael Hertzog.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later."
+}
+
+ACTION="subscribe"
+if [ "$PROGNAME" = "pts-unsubscribe" ]; then
+ ACTION="unsubscribe"
+fi
+
+# Boilerplate: set config variables
+DEFAULT_PTS_UNTIL='now + 30 days'
+VARS="PTS_UNTIL"
+
+if [ "$1" = "--no-conf" -o "$1" = "--noconf" ]; then
+ shift
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (no configuration files read)"
+
+ # set defaults
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+else
+ # Run in a subshell for protection against accidental errors
+ # in the config files
+ eval $(
+ set +e
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+
+ for file in /etc/devscripts.conf ~/.devscripts
+ do
+ [ -r $file ] && . $file
+ done
+
+ set | egrep '^PTS_')
+
+ # check sanity - nothing to do here (at will complain if it's illegal)
+
+ # set config message
+ MODIFIED_CONF=''
+ for var in $VARS; do
+ eval "if [ \"\$$var\" != \"\$DEFAULT_$var\" ]; then
+ MODIFIED_CONF_MSG=\"\$MODIFIED_CONF_MSG
+ $var=\$$var\";
+ MODIFIED_CONF=yes;
+ fi"
+ done
+
+ if [ -z "$MODIFIED_CONF" ]; then
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (none)"
+ fi
+fi
+
+# Will bomb out if there are unrecognised options
+TEMP=$(getopt -s bash -o "u:" \
+ --long until:,forever \
+ --long no-conf,noconf \
+ --long help,version -n "$PROGNAME" -- "$@") || (usage >&2; exit 1)
+
+eval set -- $TEMP
+
+# Process Parameters
+while [ "$1" ]; do
+ case $1 in
+ --until|-u)
+ shift
+ PTS_UNTIL="$1"
+ ;;
+ --forever)
+ PTS_UNTIL="forever" ;;
+ --no-conf|--noconf)
+ echo "$PROGNAME: $1 is only acceptable as the first command-line option!" >&2
+ exit 1 ;;
+ --help) usage; exit 0 ;;
+ --version) version; exit 0 ;;
+ --) shift; break ;;
+ *) echo "$PROGNAME: bug in option parser, sorry!" >&2 ; exit 1 ;;
+ esac
+ shift
+done
+
+# Still going?
+if [ $# -ne 1 ]; then
+ echo "$PROGNAME takes precisely one non-option argument: the package name;" >&2
+ echo "try $PROGNAME --help for usage information" >&2
+ exit 1
+fi
+
+# Check for a "mail" command
+if ! command -v mail >/dev/null 2>&1; then
+ echo "$PROGNAME: Could not find the \"mail\" command; you must have the" >&2
+ echo "bsd-mailx or mailutils package installed to run this script." >&2
+ exit 1
+fi
+
+pkg=$1
+
+if [ -z "$DEBEMAIL" ]; then
+ if [ -z "$EMAIL" ]; then
+ echo "$PROGNAME warning: \$DEBEMAIL is not set; attempting to $ACTION anyway" >&2
+ else
+ echo "$PROGNAME warning: \$DEBEMAIL is not set; using \$EMAIL instead" >&2
+ DEBEMAIL=$EMAIL
+ fi
+fi
+DEBEMAIL=$(echo $DEBEMAIL | sed -s 's/^.*[ ]<\(.*\)>.*/\1/')
+
+if [ "$ACTION" = "unsubscribe" ]; then
+ echo "$ACTION $pkg $DEBEMAIL" | mail pts@qa.debian.org
+else
+ # Check for an "at" command
+ if [ "$PTS_UNTIL" != forever -a "$PTS_UNTIL" != 0 ]; then
+ if ! command -v at >/dev/null 2>&1; then
+ echo "$PROGNAME: Could not find the \"at\" command; you must have the" >&2
+ echo "\"at\" package installed to run this script." >&2
+ exit 1
+ fi
+
+ cd /
+ TEMPFILE=$(mktemp) || { echo "$PROGNAME: Couldn't create tempfile!" >&2; exit 1; }
+ trap "rm -f '$TEMPFILE'" 0 1 2 3 7 10 13 15
+ echo "echo 'unsubscribe $pkg $DEBEMAIL' | mail pts@qa.debian.org" | \
+ at $PTS_UNTIL 2>$TEMPFILE
+ grep '^job ' $TEMPFILE | sed -e 's/^/Unsubscription will be sent by "at" as /'
+ else
+ echo "No unsubscription request will be sent"
+ fi
+
+ echo "$ACTION $pkg $DEBEMAIL" | mail pts@qa.debian.org
+fi
--- /dev/null
+.TH RC-ALERT 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+rc-alert \- check for installed packages with release-critical bugs
+.SH SYNOPSIS
+\fBrc\-alert\fR [\fIinclusion options\fR] [\fB\-\-debtags\fR [\fItag\fR[\fB,\fItag\fR ...]]] [\fB\-\-popcon\fR] [\fIpackage\fR ...]
+.br
+\fBrc\-alert \-\-help\fR|\fB\-\-version\fR
+.SH DESCRIPTION
+\fBrc\-alert\fR downloads the list of release-critical bugs from the
+Debian BTS webpages, and then outputs a list of packages installed on
+the system, or given on the command-line, which are in that list.
+.P
+If the directory \fI~/.devscripts_cache\fP exists or the
+\fB\-\-cache\fP option is given, then the (sizable) downloaded list
+will be cached, and will only be downloaded again on a second
+invocation if it has changed.
+.SH OPTIONS
+.TP
+.BR \-\-cache
+Force the creation of the \fI~/.devscripts_cache\fP cache directory.
+.TP
+.BR \-\-help ", " \-h
+Show a summary of options.
+.TP
+.BR \-\-version ", " \-v
+Show version and copyright information.
+.P
+It is also possible to filter the list of bugs reported based on the
+tags and distributions associated with the package. The filtering options
+are:
+.TP
+.BR \-\-include\-tags ", " \-f
+A list of tags which the bug must have, in the format used for output.
+For example, to include bugs tagged security or help wanted, use "SH".
+.TP
+.BR \-\-include\-tag\-op ", " \-t
+If set to \fIand\fP, a bug must have all of the tags specified by
+\fB\-\-include\-tags\fP.
+.TP
+.BR \-\-exclude\-tags
+A list of tags which the bug must not have, in the same format as
+\fB\-\-include\-tags\fP.
+.TP
+.BR \-\-exclude\-tag\-op
+If set to \fIand\fP, a bug must have none of the tags specified by
+\fB\-\-exclude\-tags\fP. By default, the bug will be excluded if any tag
+matches.
+.TP
+.BR \-\-include\-dists ", " \-d
+A list of distributions which the bug must apply to, in the format used for
+output. For example, to include bugs affecting testing or unstable, use "TU".
+.TP
+.BR \-\-include\-dist\-op ", " \-o
+If set to \fIand\fP, a bug must apply to all of the specified distributions in
+order to be included.
+.TP
+.BR \-\-exclude\-dists
+A list of distributions to which the bug must not apply, in the same format as
+\fB\-\-include\-dists\fP.
+.TP
+.BR \-\-exclude\-dist\-op
+If set to \fIand\fP, a bug must apply to all of the specified distributions
+in order to be excluded. By default the bug will be excluded if it applies
+to any of the listed distributions.
+.P
+It is also possible to only list bugs which have specific debtags set. Note
+that you need to have debtags installed and also that it's not mandatory for
+maintainers to set proper debtags. The produced list will thus probably be
+incomplete.
+.TP
+.BR \-\-debtags
+Match packages based on the listed tags. Each package is matched only if it has
+all the listed tags; in the case of multiple tags within the same facet, a
+package is matched if it has any of the listed tags within the facet.
+.TP
+.BR \-\-debtags\-database
+Use a non-standard debtags database. The default is
+\fI/var/lib/debtags/packages-tags\fP.
+.P
+Popularity-contest collects data about installation and usage of Debian
+packages. You can additionally sort the bugs by the popcon rank of the related
+packages.
+.TP
+.BR \-\-popcon
+Sort bugs by the popcon rank of the package the bug belongs to.
+.TP
+.BR \-\-pc\-vote
+By default, packages are sorted according to the number of people who have the
+package installed. This option enables sorting by the number of people
+regularly using the package instead. This option has no effect in combination
+with \-\-pc\-local.
+.TP
+.BR \-\-pc\-local
+Instead of requesting remote data the information from the last popcon run is
+used (\fI/var/log/popularity-contest\fP).
+.SH EXAMPLES
+.TP
+.BR \-\-include\-dists " OS"
+The bug must apply to at least one of oldstable or stable
+.TP
+.BR \-\-include\-dists " TU" " \-\-include\-dist\-op" " and"
+The bug must apply to both testing and unstable
+.TP
+.BR \-\-include\-dists " O" " \-\-include\-tags" " S" " \-\-exclude\-tags" " +"
+The bug must apply to oldstable and be tagged security but not patch
+.TP
+.BR \-\-exclude\-dists " SOT" " \-\-include\-tags" " R"
+The bug must apply to only unstable or experimental (or both) and be tagged
+unreproducible
+.TP
+.BR \-\-debtags " implemented-in::perl,role::plugin,implemented-in::python"
+The bug must apply to packages matching the specified debtags, i.e. the match
+will only include packages that have the 'role::plugin' tag and that have
+either of the tags 'implemented-in::perl' or 'implemented-in::python'.
+.TP
+.BR \-\-popcon " "\-\-pc\-local
+Read \fI/var/log/popularity-contest\fP and sort bugs by your personal popcon ranking
+(which is basically the atime of your packages' binaries).
+.SH BUGS
+It is not possible to say "does not apply only to unstable"
+.SH SEE ALSO
+.BR debtags(1)
+.BR popbugs(1)
+.BR popularity-contest(8)
+.SH AUTHOR
+\fBrc-alert\fR was written by Anthony DeRobertis and modified by
+Julian Gilbey <jdg@debian.org> and Adam D. Barratt <adam@adam-barratt.org.uk>
+for the devscripts package. Debtags and popcon functionality was added by Jan
+Hauke Rahm <info@jhr-online.de>.
--- /dev/null
+#!/usr/bin/perl
+
+# rc-alert - find RC bugs for programs on your system
+# Copyright (C) 2003 Anthony DeRobertis
+# Modifications Copyright 2003 Julian Gilbey <jdg@debian.org>
+# Modifications Copyright 2008 Adam D. Barratt <adam@adam-barratt.org.uk>
+# Modifications copyright 2009 by Jan Hauke Rahm <info@jhr-online.de>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use strict;
+use warnings;
+BEGIN { push @INC, '/usr/share/devscripts'; }
+use Devscripts::Packages;
+use File::Basename;
+use Getopt::Long qw(:config gnu_getopt);
+
+sub remove_duplicate_values($);
+sub store_if_relevant(%);
+sub human_flags($);
+sub unhtmlsanit($);
+sub dt_parse_request($);
+
+my $cachedir = $ENV{'HOME'}."/.devscripts_cache/";
+my $url = "http://bugs.debian.org/release-critical/other/all.html";
+my $cachefile = $cachedir . basename($url);
+my $forcecache = 0;
+my $usecache = 0;
+
+my @flags = (
+ [qr/P/ => 'pending'],
+ [qr/\+/ => 'patch'],
+ [qr/H/ => 'help [wanted]'],
+ [qr/M/ => 'moreinfo [needed]'],
+ [qr/R/ => 'unreproducible'],
+ [qr/S/ => 'security'],
+ [qr/U/ => 'upstream'],
+);
+# A little hacky but allows us to sort the list by length
+my @dists = (
+ [qr/O/ => 'oldstable'],
+ [qr/S/ => 'stable'],
+ [qr/T/ => 'testing'],
+ [qr/U/ => 'unstable'],
+ [qr/E/ => 'experimental'],
+);
+
+my $includetags = "";
+my $excludetags = "";
+
+my $includedists = "";
+my $excludedists = "";
+
+my $tagincoperation = "or";
+my $tagexcoperation = "or";
+my $distincoperation = "or";
+my $distexcoperation = "or";
+
+my $popcon = 0;
+my $popcon_by_vote = 0;
+my $popcon_local = 0;
+
+my $debtags = '';
+my $debtags_db = '/var/lib/debtags/package-tags';
+
+my $progname = basename($0);
+
+my $usage = <<"EOF";
+Usage: $progname [--help|--version|--cache] [package ...]
+ List all installed packages (or listed packages) with
+ release-critical bugs, as determined from the Debian
+ release-critical bugs list.
+
+ Options:
+ --cache Create ~/.devscripts_cache directory if it does not exist
+
+ Matching options: (see the manpage for further information)
+ --include-tags Set of tags to include
+ --include-tag-op Must all tags match for inclusion?
+ --exclude-tags Set of tags to exclude
+ --exclude-tag-op Must all tags match for exclusion?
+ --include-dists Set of distributions to include
+ --include-dist-op Must all distributions be matched for inclusion?
+ --exclude-dists Set of distributions to exclude
+ --exclude-dist-op Must all distributions be matched for exclusion?
+
+ Debtags options: (only list packages with matching debtags)
+ --debtags Comma separated list of tags
+ (e.g. implemented-in::perl,role::plugin)
+ --debtags-database Database file (default: /var/lib/debtags/package-tags)
+
+ Popcon options:
+ --popcon Sort bugs by package's popcon rank
+ --pc-vote Sort by_vote instead of by_inst
+ (see popularity-contest(8))
+ --pc-local Use local popcon data from last popcon run
+ (/var/log/popularity-contest)
+EOF
+
+my $version = <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2003 by Anthony DeRobertis
+Modifications copyright 2003 by Julian Gilbey <jdg\@debian.org>
+Modifications copyright 2008 by Adam D. Barratt <adam\@adam-barratt.org.uk>
+Modifications copyright 2009 by Jan Hauke Rahm <info\@jhr-online.de>
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2, or (at your option) any later version.
+EOF
+
+##
+## handle command-line options
+##
+
+my ($opt_help, $opt_version);
+GetOptions("help|h" => \$opt_help,
+ "version|v" => \$opt_version,
+ "cache" => \$forcecache,
+ "include-tags|f=s" => \$includetags,
+ "exclude-tags=s" => \$excludetags,
+ "include-tag-op|t=s" => \$tagincoperation,
+ "exclude-tag-op=s" => \$tagexcoperation,
+ "include-dists|d=s" => \$includedists,
+ "exclude-dists=s" => \$excludedists,
+ "include-dist-op|o=s" => \$distincoperation,
+ "exclude-dist-op=s" => \$distexcoperation,
+ "debtags=s" => \$debtags,
+ "debtags-database=s" => \$debtags_db,
+ "popcon" => \$popcon,
+ "pc-vote" => \$popcon_by_vote,
+ "pc-local" => \$popcon_local,
+ ) or do { print $usage; exit 1; };
+
+if ($opt_help) { print $usage; exit 0; }
+if ($opt_version) { print $version; exit 0; }
+
+$tagincoperation =~ /^(or|and)$/ or $tagincoperation = 'or';
+$distincoperation =~ /^(or|and)$/ or $distincoperation = 'or';
+$tagexcoperation =~ /^(or|and)$/ or $tagexcoperation = 'or';
+$distexcoperation =~ /^(or|and)$/ or $distexcoperation = 'or';
+$includetags =~ s/[^P+HMRSUI]//gi;
+$excludetags =~ s/[^P+HMRSUI]//gi;
+$includedists =~ s/[^OSTUE]//gi;
+$excludedists =~ s/[^OSTUE]//gi;
+$includetags = remove_duplicate_values(uc($includetags));
+$excludetags = remove_duplicate_values(uc($excludetags));
+$includedists = remove_duplicate_values(uc($includedists));
+$excludedists = remove_duplicate_values(uc($excludedists));
+
+## First download the RC bugs page
+
+my $curl_or_wget;
+my $getcommand;
+if (system("command -v wget >/dev/null 2>&1") == 0) {
+ $curl_or_wget = "wget";
+ $getcommand = "wget -q -O -";
+} elsif (system("command -v curl >/dev/null 2>&1") == 0) {
+ $curl_or_wget = "curl";
+ $getcommand = "curl -qfs";
+} else {
+ die "$progname: this program requires either the wget or curl package to be installed\n";
+}
+
+
+if (! -d $cachedir and $forcecache) {
+ mkdir $cachedir
+ or die "$progname: can't make cache directory $cachedir: $!\n";
+}
+
+if (-d $cachedir) {
+ chdir $cachedir or die "$progname: can't cd $cachedir: $!\n";
+
+ if ("$curl_or_wget" eq "wget") {
+ # Either use the cached version because the remote hasn't been
+ # updated (-N) or download a complete new copy (--no-continue)
+ if (system('wget', '-qN', '--no-continue', $url) != 0) {
+ die "$progname: wget failed!\n";
+ }
+ } elsif ("$curl_or_wget" eq "curl") {
+ if (system('curl', '-qfsR', $url) != 0) {
+ die "$progname: curl failed!\n";
+ }
+ } else {
+ die "$progname: Unknown download program $curl_or_wget!\n";
+ }
+ open BUGS, $cachefile or die "$progname: could not read $cachefile: $!\n";
+}
+else {
+ open BUGS, "$getcommand $url |" or
+ die "$progname: could not run $curl_or_wget: $!\n";
+}
+
+## Get list of installed packages (not source packages)
+my $package_list;
+if (@ARGV) {
+ my %tmp = map { $_ => 1 } @ARGV;
+ $package_list = \%tmp;
+}
+else {
+ $package_list = InstalledPackages(1);
+}
+
+## Get popcon information
+my %popcon;
+if ($popcon) {
+ my $pc_by = $popcon_by_vote ? 'vote' : 'inst';
+
+ my $pc_regex;
+ if ($popcon_local) {
+ open POPCON, "/var/log/popularity-contest"
+ or die "$progname: Unable to access popcon data: $!";
+ $pc_regex = '(\d+)\s\d+\s(\S+)';
+ } else {
+ open POPCON, "$getcommand http://popcon.debian.org/by_$pc_by.gz | gunzip -c |"
+ or die "$progname: Not able to receive remote popcon data!";
+ $pc_regex = '(\d+)\s+(\S+)\s+(\d+\s+){5}\(.*\)';
+ }
+
+ while (<POPCON>) {
+ next unless /$pc_regex/;
+ # rank $1 for package $2
+ if ($popcon_local) {
+ # negative for inverse sorting of atimes
+ $popcon{$2} = "-$1";
+ } else {
+ $popcon{$2} = $1;
+ }
+ }
+ close POPCON;
+}
+
+## Get debtags info
+my %dt_pkg;
+my @dt_requests;
+if ($debtags) {
+ ## read debtags database to %dt_pkg
+ open DEBTAGS, $debtags_db or die "$progname: could not read debtags database: $!\n";
+ while (<DEBTAGS>) {
+ next unless /^(.+?)(?::?\s*|:\s+(.+?)\s*)$/;
+ $dt_pkg{$1} = $2;
+ }
+ close DEBTAGS;
+
+ ## and parse the request string
+ @dt_requests = dt_parse_request($debtags);
+}
+
+## Read the list of bugs
+
+my $found_bugs_start;
+my ($current_package, $comment);
+
+my $html;
+{
+ local $/;
+ $html = <BUGS>;
+}
+
+my ($ignore) = $html =~ m%<strong>I</strong>: ([^<]*)%;
+push(@flags, [qr/I/ => $ignore]);
+
+my @stanzas = $html =~ m%<div class="package">(.*?)</div>%gs;
+my %pkg_store;
+foreach my $stanza (@stanzas) {
+ if ($stanza =~ m%<a name="([^\"]+)"><strong>Package:</strong></a> <a href="[^\"]+">%i) {
+ $current_package = $1;
+ $comment = '';
+ while ($stanza =~ m%<a name="(\d+)"></a>\s*<a href="[^\"]+">\d+</a> (\[[^\]]+\])( \[[^\]]+\])? ([^<]+)%igc) {
+ my ($num, $tags, $dists, $name) = ($1, $2, $3, $4);
+ chomp $name;
+ store_if_relevant(pkg => $current_package, num => $num, tags => $tags, dists => $dists, name => $name, comment => $comment);
+ }
+ }
+}
+for (sort {$a <=> $b } keys %pkg_store) { print $pkg_store{$_}; }
+
+close BUGS or die "$progname: could not close $cachefile: $!\n";
+
+exit 0;
+
+sub remove_duplicate_values($) {
+ my $in = shift || "";
+
+ $in = join( "", sort { $a cmp $b } split //, $in );
+
+ $in =~ s/(.)\1/$1/g while $in =~ /(.)\1/;
+
+ return $in;
+}
+
+sub store_if_relevant(%) {
+ my %args = @_;
+
+ my $pkgname = $args{pkg};
+ $args{pkg} =~ s/^src://;
+
+ if (exists($package_list->{$args{pkg}})
+ || exists($package_list->{$pkgname})) {
+ # potentially relevant
+ my ($flags, $flagsapply) = human_flags($args{tags});
+ my $distsapply = 1;
+ my $dists;
+ ($dists, $distsapply) = human_dists($args{dists}) if defined $args{dists};
+
+ return unless $flagsapply and $distsapply;
+
+ foreach (@dt_requests) {
+ ## the array should be empty if nothing requested
+ return unless ($dt_pkg{$args{pkg}} and
+ $dt_pkg{$args{pkg}} =~ /(\A|,\s*)$_(,|\z)/);
+ }
+
+ # yep, relevant
+ my $bug_string = "Package: $pkgname\n" .
+ $comment . # non-empty comments always contain the trailing \n
+ "Bug: $args{num}\n" .
+ "Title: " . unhtmlsanit($args{name}) . "\n" .
+ "Flags: " . $flags . "\n" .
+ (defined $args{dists} ? "Dists: " . $dists . "\n" : "") .
+ (defined $dt_pkg{$args{pkg}} ?
+ "Debtags: " . $dt_pkg{$args{pkg}} . "\n" : "");
+
+ unless ($popcon_local) {
+ $bug_string .= (defined $popcon{$args{pkg}} ?
+ "Popcon rank: " . $popcon{$args{pkg}} . "\n" : "");
+ }
+ $bug_string .= "\n";
+
+ if ($popcon) {
+ return unless $bug_string;
+ my $index = $popcon{$args{pkg}} ? $popcon{$args{pkg}} : 9999999;
+ $pkg_store{$index} .= $bug_string;
+ } else {
+ $pkg_store{1} .= $bug_string;
+ }
+ }
+}
+
+sub human_flags($) {
+ my $mrf = shift; # machine readable flags, for those of you wondering
+ my @hrf = (); # considering above, should be obvious
+ my $matchedflags = 0;
+ my $matchedexcludes = 0;
+ my $applies = 1;
+
+ foreach my $flagref (@flags) {
+ my ($flag, $desc) = @{$flagref};
+ if ($mrf =~ $flag) {
+ if ($excludetags =~ $flag) {
+ $matchedexcludes++;
+ } elsif ($includetags =~ $flag or ! $includetags) {
+ $matchedflags++;
+ }
+ push @hrf, $desc;
+ }
+ }
+ if ($excludetags and $tagexcoperation eq 'and' and
+ (length $excludetags == $matchedexcludes)) {
+ $applies = 0;
+ }
+ elsif ($matchedexcludes and $tagexcoperation eq 'or') {
+ $applies = 0;
+ }
+ elsif ($includetags and ! $matchedflags) {
+ $applies = 0;
+ } elsif ($includetags and $tagincoperation eq 'and' and
+ (length $includetags != $matchedflags)) {
+ $applies = 0;
+ }
+
+ if (@hrf) {
+ return ("$mrf (" . join(", ", @hrf) . ')', $applies);
+ } else {
+ return ("$mrf (none)", $applies);
+ }
+}
+
+sub human_dists($) {
+ my $mrf = shift; # machine readable flags, for those of you wondering
+ my @hrf = (); # considering above, should be obvious
+ my $matcheddists = 0;
+ my $matchedexcludes = 0;
+ my $applies = 1;
+
+ foreach my $distref (@dists) {
+ my ($dist, $desc) = @{$distref};
+ if ($mrf =~ $dist) {
+ if ($excludedists =~ $dist) {
+ $matchedexcludes++;
+ } elsif ($includedists =~ $dist or ! $includedists) {
+ $matcheddists++;
+ }
+ push @hrf, $desc;
+ }
+ }
+ if ($excludedists and $distexcoperation eq 'and' and
+ (length $excludedists == $matchedexcludes)) {
+ $applies = 0;
+ } elsif ($matchedexcludes and $distexcoperation eq 'or') {
+ $applies = 0;
+ } elsif ($includedists and ! $matcheddists) {
+ $applies = 0;
+ } elsif ($includedists and $distincoperation eq 'and' and
+ (length $includedists != $matcheddists)) {
+ $applies = 0;
+ }
+
+ if (@hrf) {
+ return ("$mrf (" . join(", ", @hrf) . ')', $applies);
+ } else {
+ return ('', $applies);
+ }
+}
+
+# Reverse of master.debian.org:/org/bugs.debian.org/cgi-bin/common.pl
+sub unhtmlsanit ($) {
+ my %saniarray = ('lt','<', 'gt','>', 'amp','&', 'quot', '"');
+ my $in = $_[0];
+ $in =~ s/&(lt|gt|amp|quot);/$saniarray{$1}/g;
+ return $in;
+}
+
+sub dt_parse_request($) {
+ my %dt_lookup;
+ foreach (split /,/, $_[0]) {
+ my ($d_key, $d_val) = split '::', $_;
+ die "$progname: A debtag must be of the form 'key::value'. See debtags(1) for details!"
+ unless ($d_key and $d_val);
+ if ($dt_lookup{$d_key}) {
+ $dt_lookup{$d_key} = "$dt_lookup{$d_key}|$d_val";
+ } else {
+ $dt_lookup{$d_key} = quotemeta($d_val);
+ }
+ }
+
+ my @out;
+ while (my ($dk, $dv) = each %dt_lookup) {
+ $dv = "($dv)" if ($dv =~ /\|/);
+ push @out, $dk . "::" . $dv;
+ }
+ return @out;
+}
--- /dev/null
+#!/usr/bin/perl -w
+# vim:sw=4:sta:
+
+# Copyright (C) 2006-2013 Christoph Berg <myon@debian.org>
+# (C) 2010 Uli Martens <uli@youam.net>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+use strict;
+use File::Basename;
+use Getopt::Long qw(:config gnu_getopt);
+
+BEGIN {
+ # Load the URI::Escape module safely
+ eval { require URI::Escape; };
+ if ($@) {
+ my $progname = basename $0;
+ if ($@ =~ /^Can\'t locate URI\/Escape\.pm/) {
+ die "$progname: you must have the liburi-perl package installed\nto use this script\n";
+ }
+ die "$progname: problem loading the URI::Escape module:\n $@\nHave you installed the liburi-perl package?\n";
+ }
+ import URI::Escape;
+}
+
+my $VERSION = '0.4';
+
+sub version($) {
+ my ($fd) = @_;
+ print $fd <<EOT;
+rmadison $VERSION (devscripts ###VERSION###)
+(C) 2006-2010 Christoph Berg <myon\@debian.org>
+(C) 2010 Uli Martens <uli\@youam.net>
+EOT
+}
+
+my %url_map = (
+ 'debian' => "https://qa.debian.org/madison.php",
+ 'qa' => "https://qa.debian.org/madison.php",
+ 'myon' => "https://qa.debian.org/~myon/madison.php",
+ 'debug' => "http://debug.debian.net/cgi-bin/madison.cgi",
+ 'ubuntu' => "http://people.canonical.com/~ubuntu-archive/madison.cgi",
+ 'udd' => 'https://qa.debian.org/cgi-bin/madison.cgi',
+ 'new' => 'https://qa.debian.org/cgi-bin/madison.cgi?table=new',
+);
+my $default_url = 'debian,new';
+if (system('dpkg-vendor', '--is', 'ubuntu') == 0) {
+ $default_url = 'ubuntu';
+}
+
+sub usage($$) {
+ my ($fd, $exit) = @_;
+ print <<EOT;
+Usage: rmadison [OPTION] PACKAGE[...]
+Display information about PACKAGE(s).
+
+ -a, --architecture=ARCH only show info for ARCH(s)
+ -b, --binary-type=TYPE only show info for binary TYPE
+ -c, --component=COMPONENT only show info for COMPONENT(s)
+ -g, --greaterorequal show buildd 'dep-wait pkg >= {highest version}' info
+ -G, --greaterthan show buildd 'dep-wait pkg >> {highest version}' info
+ -h, --help show this help and exit
+ -r, --regex treat PACKAGE as a regex [not supported everywhere]
+ -s, --suite=SUITE only show info for this suite
+ -S, --source-and-binary show info for the binary children of source pkgs
+ -t, --time show projectb snapshot date
+ -u, --url=URL use URL instead of $url_map{$default_url}
+
+ --noconf, --no-conf don\'t read devscripts configuration files
+
+ARCH, COMPONENT and SUITE can be comma (or space) separated lists, e.g.
+ --architecture=m68k,i386
+EOT
+ exit $exit;
+}
+
+my $params;
+my $default_arch;
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ shift;
+} else {
+ # We don't have any predefined variables, but allow any of the form
+ # RMADISON_URL_MAP_SHORTCODE=URL
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my @config_vars = ();
+
+ my $shell_cmd;
+ # Set defaults
+ $shell_cmd .= qq[unset `set | grep "^RMADISON_" | cut -d= -f1`;\n];
+ $shell_cmd .= 'for file in ' . join(" ", @config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ $shell_cmd .= 'for var in `set | grep "^RMADISON_" | cut -d= -f1`; do ';
+ $shell_cmd .= 'eval echo $var=\$$var; done;' . "\n";
+ # Read back values
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars = split /\n/, $shell_out, -1;
+
+ foreach my $envvar (@config_vars) {
+ if ($envvar =~ /^RMADISON_URL_MAP_([^=]*)=(.*)$/) {
+ $url_map{lc($1)}=$2;
+ } elsif ($envvar =~ /^RMADISON_DEFAULT_URL=(.*)$/) {
+ $default_url=$1;
+ } elsif ($envvar =~ /^RMADISON_ARCHITECTURE=(.*)$/) {
+ $default_arch=$1;
+ }
+ }
+}
+
+unless (GetOptions(
+ '-a=s' => \$params->{'architecture'},
+ '--architecture=s' => \$params->{'architecture'},
+ '-b=s' => \$params->{'binary-type'},
+ '--binary-type=s' => \$params->{'binary-type'},
+ '-c=s' => \$params->{'component'},
+ '--component=s' => \$params->{'component'},
+ '-g' => \$params->{'greaterorequal'},
+ '--greaterorequal' => \$params->{'greaterorequal'},
+ '-G' => \$params->{'greaterthan'},
+ '--greaterthan' => \$params->{'greaterthan'},
+ '-h' => \$params->{'help'},
+ '--help' => \$params->{'help'},
+ '-r' => \$params->{'regex'},
+ '--regex' => \$params->{'regex'},
+ '-s=s' => \$params->{'suite'},
+ '--suite=s' => \$params->{'suite'},
+ '-S' => \$params->{'source-and-binary'},
+ '--source-and-binary' => \$params->{'source-and-binary'},
+ '-t' => \$params->{'time'},
+ '--time' => \$params->{'time'},
+ '-u=s' => \$params->{'url'},
+ '--url=s' => \$params->{'url'},
+ '--version' => \$params->{'version'},
+)) {
+ usage(\*STDERR, 1);
+};
+
+if ($params->{help}) {
+ usage(\*STDOUT, 0);
+}
+if ($params->{version}) {
+ version(\*STDOUT);
+ exit 0;
+}
+
+unless (@ARGV) {
+ print STDERR "E: need at least one package name as an argument.\n";
+ exit 1;
+}
+if ($params->{greaterorequal} and $params->{greaterthan}) {
+ print STDERR "E: -g/--greaterorequal and -G/--greaterthan are mutually exclusive.\n";
+ exit 1;
+}
+
+my @args;
+
+if ( $params->{'architecture'} ) {
+ push @args, "a=$params->{'architecture'}";
+} elsif ( $default_arch ) {
+ push @args, "a=$default_arch";
+}
+push @args, "b=$params->{'binary-type'}" if $params->{'binary-type'};
+push @args, "c=$params->{'component'}" if $params->{'component'};
+push @args, "g" if $params->{'greaterorequal'};
+push @args, "G" if $params->{'greaterthan'};
+push @args, "r" if $params->{'regex'};
+push @args, "s=$params->{'suite'}" if $params->{'suite'};
+push @args, "S" if $params->{'source-and-binary'};
+push @args, "t" if $params->{'time'};
+
+my $url = $params->{'url'} ? $params->{'url'} : $default_url;
+my @url = split /,/, $url;
+
+my $status = 0;
+
+foreach my $url (@url) {
+ print "$url:\n" if @url > 1;
+ $url = $url_map{$url} if $url_map{$url};
+ my @cmd = -x "/usr/bin/curl" ? qw/curl -f -s -S -L/ : qw/wget -q -O -/;
+ system @cmd, $url . (($url =~ m/\?/)?'&':'?')."package=" . join("+", map { uri_escape($_) } @ARGV) . "&text=on&" . join ("&", @args);
+ $status = 1 if ($? >> 8 != 0);
+}
+
+exit $status;
+
+__END__
+
+=head1 NAME
+
+rmadison -- Remotely query the Debian archive database about packages
+
+=head1 SYNOPSIS
+
+=over
+
+=item B<rmadison> [I<OPTIONS>] I<PACKAGE> ...
+
+=back
+
+=head1 DESCRIPTION
+
+B<dak ls> queries the Debian archive database ("projectb") and
+displays which package version is registered per architecture/component/suite.
+The CGI at B<https://qa.debian.org/madison.php> provides that service without
+requiring SSH access to ftp-master.debian.org or the mirror on
+mirror.ftp-master.debian.org. This script, B<rmadison>, is a command line
+frontend to this CGI.
+
+=head1 OPTIONS
+
+=over
+
+=item B<-a>, B<--architecture=>I<ARCH>
+
+only show info for ARCH(s)
+
+=item B<-b>, B<--binary-type=>I<TYPE>
+
+only show info for binary TYPE
+
+=item B<-c>, B<--component=>I<COMPONENT>
+
+only show info for COMPONENT(s)
+
+=item B<-g>, B<--greaterorequal>
+
+show buildd 'dep-wait pkg >= {highest version}' info
+
+=item B<-G>, B<--greaterthan>
+
+show buildd 'dep-wait pkg >> {highest version}' info
+
+=item B<-h>, B<--help>
+
+show this help and exit
+
+=item B<-s>, B<--suite=>I<SUITE>
+
+only show info for this suite
+
+=item B<-s>, B<--regex>
+
+treat PACKAGE as a regex
+
+B<Note:> Since B<-r> can easily DoS the database ("-r ."), this option is not
+supported by the CGI on qa.debian.org and most other installations.
+
+=item B<-S>, B<--source-and-binary>
+
+show info for the binary children of source pkgs
+
+=item B<-t>, B<--time>
+
+show projectb snapshot and reload time (not supported by all archives)
+
+=item B<-u>, B<--url=>I<URL>[B<,>I<URL> ...]
+
+use I<URL> for the query. Supported shorthands are
+ B<debian> or B<qa> https://qa.debian.org/madison.php
+ B<debug> http://debug.debian.net/cgi-bin/madison.cgi
+ B<ubuntu> http://people.canonical.com/~ubuntu-archive/madison.cgi
+ B<udd> https://qa.debian.org/cgi-bin/madison.cgi
+ B<new> https://qa.debian.org/cgi-bin/madison.cgi?table=new
+
+See the B<RMADISON_URL_MAP_> variable below for a method to add
+new shorthands.
+
+=item B<--version>
+
+show version and exit
+
+=item B<--no-conf>, B<--noconf>
+
+don't read the devscripts configuration files
+
+=back
+
+ARCH, COMPONENT and SUITE can be comma (or space) separated lists, e.g.
+--architecture=m68k,i386
+
+=head1 CONFIGURATION VARIABLES
+
+The two configuration files F</etc/devscripts.conf> and
+F<~/.devscripts> are sourced by a shell in that order to set
+configuration variables. Command line options can be used to override
+configuration file settings. Environment variable settings are
+ignored for this purpose. The currently recognised variables are:
+
+=over 4
+
+=item B<RMADISON_URL_MAP_>I<SHORTHAND>=I<URL>
+
+Add an entry to the set of shorthand URLs listed above. I<SHORTHAND> should
+be replaced with the shorthand form to be used to refer to I<URL>.
+
+Multiple shorthand entries may be specified by using multiple
+B<RMADISON_URL_MAP_*> variables.
+
+=item B<RMADISON_DEFAULT_URL>=I<URL>
+
+Set the default URL to use unless overridden by a command line option.
+For Debian this defaults to debian,new. For Ubuntu this defaults to ubuntu.
+
+=item B<RMADISON_ARCHITECTURE>=I<ARCH>
+
+Set the default architecture to use unless overridden by a command line option.
+To run an unrestricted query when B<RMADISON_ARCHITECTURE> is set, use
+B<--architecture='*'>.
+
+=back
+
+=head1 NOTES
+
+B<dak ls> was formerly called B<madison>.
+
+The protocol used by rmadison is fairly simple, the CGI accepts query the
+parameters a, b, c, g, G, r, s, S, t, and package. The parameter text is passed to
+enable plain-text output.
+
+=head1 SEE ALSO
+
+B<dak>(1), B<madison-lite>(1)
+
+=head1 AUTHOR
+
+rmadison and https://qa.debian.org/madison.php were written by Christoph Berg
+<myon@debian.org>. dak was written by
+James Troup <james@nocrew.org>, Anthony Towns <ajt@debian.org>, and others.
+
+=cut
--- /dev/null
+#!/usr/bin/python3
+# encoding=UTF-8
+
+# Copyright © 2012, 2013, 2014 Jakub Wilk <jwilk@debian.org>
+
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+'''
+simple DEP-8 test runner
+'''
+
+import argparse
+import errno
+import gettext
+import os
+import queue as queuemod
+import re
+import shutil
+import stat
+import subprocess as ipc
+import sys
+import tempfile
+import threading
+
+import debian.deb822 as deb822
+
+def chmod_x(path):
+ '''
+ chmod a+X <path>
+ '''
+ old_mode = stat.S_IMODE(os.stat(path).st_mode)
+ new_mode = old_mode | ((old_mode & 0o444) >> 2)
+ if old_mode != new_mode:
+ os.chmod(path, new_mode)
+ return old_mode
+
+def annotate_output(child):
+ queue = queuemod.Queue()
+ def reader(fd, tag):
+ buf = b''
+ while True:
+ assert b'\n' not in buf
+ chunk = os.read(fd, 1024)
+ if chunk == b'':
+ break
+ lines = (buf + chunk).split(b'\n')
+ buf = lines.pop()
+ for line in lines:
+ queue.put((tag, line + b'\n'))
+ if buf != b'':
+ queue.put((tag, buf))
+ queue.put(None)
+ queue = queuemod.Queue()
+ threads = []
+ for pipe, tag in [(child.stdout, 'O'), (child.stderr, 'E')]:
+ thread = threading.Thread(target=reader, args=(pipe.fileno(), tag))
+ thread.start()
+ threads += [thread]
+ nthreads = len(threads)
+ while nthreads > 0:
+ item = queue.get()
+ if item is None:
+ nthreads -= 1
+ continue
+ yield item
+ for thread in threads:
+ thread.join()
+
+class Skip(Exception):
+ pass
+
+class Fail(Exception):
+ pass
+
+class Progress(object):
+
+ _hourglass = r'/-\|'
+
+ def __init__(self):
+ self._counter = 0
+ if sys.stdout.isatty():
+ self._back = '\b'
+ else:
+ self._back = ''
+
+ def _write(self, s):
+ sys.stdout.write(s)
+ sys.stdout.flush()
+
+ def ping(self):
+ if not self._back:
+ return
+ hourglass = self._hourglass
+ c = self._counter + 1
+ self._write(self._back + hourglass[c % len(hourglass)])
+ self._counter = c
+
+ def start(self, name):
+ pass
+
+ def skip(self, reason):
+ raise NotImplementedError
+
+ def fail(self, reason):
+ raise NotImplementedError
+
+ def ok(self):
+ raise NotImplementedError
+
+ def close(self):
+ pass
+
+class DefaultProgress(Progress):
+
+ def start(self, name):
+ if self._back:
+ self._write(' ')
+ self.ping()
+
+ def skip(self, reason):
+ self._write(self._back + 'S')
+
+ def fail(self, reason):
+ self._write(self._back + 'F')
+
+ def ok(self):
+ self._write(self._back + '.')
+
+ def close(self):
+ self._write('\n')
+
+class VerboseProgress(Progress):
+
+ def start(self, name):
+ self._write('{test} ... '.format(test=name) + (' ' if self._back else ''))
+ self.ping()
+
+ def skip(self, reason):
+ self._write(self._back + 'SKIP ({reason})\n'.format(reason=reason))
+
+ def fail(self, reason):
+ self._write(self._back + 'FAIL ({reason})\n'.format(reason=reason))
+
+ def ok(self):
+ self._write(self._back + 'ok\n')
+
+class TestGroup(object):
+
+ def __init__(self):
+ self.tests = []
+ self.restrictions = frozenset()
+ self.features = frozenset()
+ self.depends = '@'
+ self.tests_directory = 'debian/tests'
+ self._check_depends_cache = None
+
+ def __iter__(self):
+ return iter(self.tests)
+
+ def expand_depends(self, packages, build_depends):
+ if '@' not in self.depends:
+ return
+ or_clauses = []
+ # deb822 prints a warning on stderr: https://bugs.debian.org/712513
+ # We don't want the user to see the warning, because the unusual
+ # character in the relation is intentional.
+ orig_sys_stderr = sys.stderr
+ sys.stderr = open(os.devnull, 'wt', errors='ignore')
+ try:
+ parsed_depends = deb822.PkgRelation.parse_relations(self.depends)
+ finally:
+ try:
+ sys.stderr.close()
+ finally:
+ sys.stderr = orig_sys_stderr
+ for or_clause in parsed_depends:
+ if len(or_clause) == 1 and or_clause[0]['name'] == '@builddeps@':
+ or_clauses += build_depends
+ or_clauses += deb822.PkgRelation.parse_relations('make')
+ continue
+ stripped_or_clause = [r for r in or_clause if r['name'] != '@']
+ if len(stripped_or_clause) < len(or_clause):
+ for package in packages:
+ or_clauses += [
+ stripped_or_clause +
+ [dict(name=package, version=None, arch=None)]
+ ]
+ else:
+ or_clauses += [or_clause]
+ self.depends = deb822.PkgRelation.str(or_clauses)
+
+ def check_depends(self):
+ if self._check_depends_cache is not None:
+ if isinstance(self._depends_cache, Exception):
+ raise self._check_depends_cache
+ return
+ child = ipc.Popen(['dpkg-checkbuilddeps', '-d', self.depends],
+ stderr=ipc.PIPE,
+ env={}
+ )
+ error = child.stderr.read().decode('ASCII')
+ child.stderr.close()
+ if child.wait() != 0:
+ error = re.sub('^dpkg-checkbuilddeps: Unmet build dependencies', 'unmet dependencies', error)
+ error = error.rstrip()
+ skip = Skip(error)
+ self._depends_cache = skip
+ raise skip
+ else:
+ self._depends_cache = True
+
+ def check_restrictions(self, ignored_restrictions):
+ restrictions = self.restrictions - frozenset(ignored_restrictions)
+ class options:
+ rw_build_tree_needed = False
+ allow_stderr = False
+ for r in restrictions:
+ if r == 'rw-build-tree':
+ options.rw_build_tree_needed = True
+ elif r == 'needs-root':
+ if os.getuid() != 0:
+ raise Skip('this test needs root privileges')
+ elif r == 'breaks-testbed':
+ raise Skip('breaks-testbed restriction is not implemented; use adt-run')
+ elif r == 'build-needed':
+ raise Skip('source tree not built')
+ elif r == 'allow-stderr':
+ options.allow_stderr = True
+ else:
+ raise Skip('unknown restriction: {restr}'.format(restr=r))
+ return options
+
+ def check(self, ignored_restrictions=()):
+ options = self.check_restrictions(ignored_restrictions)
+ self.check_depends()
+ return options
+
+ def run(self, test, progress, ignored_restrictions=(), rw_build_tree=None, built_source_tree=None):
+ progress.start(test)
+ ignored_restrictions = set(ignored_restrictions)
+ if rw_build_tree:
+ ignored_restrictions.add('rw-build-tree')
+ if built_source_tree:
+ ignored_restrictions.add('build-needed')
+ try:
+ options = self.check(ignored_restrictions)
+ except Skip as exc:
+ progress.skip(str(exc))
+ raise
+ path = os.path.join(self.tests_directory, test)
+ original_mode = None
+ if rw_build_tree:
+ cwd = os.getcwd()
+ os.chdir(rw_build_tree)
+ chmod_x(path)
+ else:
+ cwd = None
+ if not os.access(path, os.X_OK):
+ try:
+ original_mode = chmod_x(path)
+ except OSError as exc:
+ progress.skip('{path} could not be made executable: {exc}'.format(path=path, exc=exc))
+ raise Skip
+ try:
+ self._run(test, progress, allow_stderr=options.allow_stderr)
+ finally:
+ if original_mode is not None:
+ os.chmod(path, original_mode)
+ if cwd is not None:
+ os.chdir(cwd)
+
+ def _run(self, test, progress, allow_stderr=False):
+ path = os.path.join(self.tests_directory, test)
+ tmpdir1 = tempfile.mkdtemp(prefix='sadt.')
+ tmpdir2 = tempfile.mkdtemp(prefix='sadt.')
+ environ = dict(os.environ)
+ environ['ADTTMP'] = tmpdir1
+ environ['TMPDIR'] = tmpdir2 # only for compatibility with old DEP-8 spec.
+ child = ipc.Popen([path],
+ stdout=ipc.PIPE,
+ stderr=ipc.PIPE,
+ env=environ,
+ )
+ output = []
+ stderr = False
+ for tag, line in annotate_output(child):
+ progress.ping()
+ if tag == 'E':
+ stderr = True
+ output += ['{tag}: {line}'.format(
+ tag=tag,
+ line=line.decode(sys.stdout.encoding, 'replace'),
+ )]
+ for fp in child.stdout, child.stderr:
+ fp.close()
+ rc = child.wait()
+ shutil.rmtree(tmpdir1)
+ shutil.rmtree(tmpdir2)
+ if rc == 0:
+ if stderr and not allow_stderr:
+ rc = -1
+ fail_reason = 'stderr non-empty'
+ progress.fail(fail_reason)
+ else:
+ progress.ok()
+ else:
+ fail_reason = 'exit code: {rc}'.format(rc=rc)
+ progress.fail(fail_reason)
+ if rc != 0:
+ raise Fail(fail_reason, ''.join(output))
+
+ def add_tests(self, tests):
+ tests = tests.split()
+ self.tests = frozenset(tests)
+
+ def add_restrictions(self, restrictions):
+ restrictions = restrictions.split()
+ self.restrictions = frozenset(restrictions)
+
+ def add_features(self, features):
+ features = features.split()
+ self.features = frozenset(features)
+
+ def add_depends(self, depends):
+ self.depends = depends
+
+ def add_tests_directory(self, path):
+ self.tests_directory = path
+
+def copy_build_tree():
+ rw_build_tree = tempfile.mkdtemp(prefix='sadt-rwbt.')
+ print('sadt: info: copying build tree to {tree}'.format(tree=rw_build_tree), file=sys.stderr)
+ ipc.check_call(['cp', '-a', '.', rw_build_tree])
+ return rw_build_tree
+
+def main():
+ for description in __doc__.splitlines():
+ if description: break
+ parser = argparse.ArgumentParser(description=description)
+ parser.add_argument('-v', '--verbose', action='store_true', help='verbose output')
+ parser.add_argument('-b', '--built-source-tree', action='store_true', help='assume built source tree')
+ parser.add_argument('--ignore-restrictions', metavar='<restr>[,<restr>...]', help='ignore specified restrictions', default='')
+ parser.add_argument('tests', metavar='<test-name>', nargs='*', help='tests to run')
+ options = parser.parse_args()
+ options.tests = frozenset(options.tests)
+ options.ignore_restrictions = frozenset(options.ignore_restrictions.split(','))
+ binary_packages = set()
+ build_depends = []
+ try:
+ file = open('debian/control', encoding='UTF-8')
+ except IOError as exc:
+ if exc.errno == errno.ENOENT:
+ print('sadt: error: cannot find debian/control', file=sys.stderr)
+ sys.exit(1)
+ raise
+ with file:
+ for n, para in enumerate(deb822.Packages.iter_paragraphs(file)):
+ if n == 0:
+ para['Source']
+ for field in 'Build-Depends', 'Build-Depends-Indep':
+ try:
+ build_depends += deb822.PkgRelation.parse_relations(para[field])
+ except KeyError:
+ continue
+ else:
+ binary_packages.add(para['Package'])
+ test_groups = []
+ try:
+ file = open('debian/tests/control', encoding='UTF-8')
+ except IOError as exc:
+ if exc.errno == errno.ENOENT:
+ print('sadt: error: cannot find debian/tests/control', file=sys.stderr)
+ sys.exit(1)
+ raise
+ with file:
+ for para in deb822.Packages.iter_paragraphs(file):
+ group = TestGroup()
+ for key, value in para.items():
+ lkey = key.lower().replace('-', '_')
+ try:
+ method = getattr(group, 'add_' + lkey)
+ except AttributeError:
+ print('sadt: warning: unknown field {field}, skipping the whole paragraph'.format(field=key), file=sys.stderr)
+ group = None
+ break
+ method(value)
+ if group is not None:
+ group.expand_depends(binary_packages, build_depends)
+ test_groups += [group]
+ failures = []
+ n_skip = n_ok = 0
+ progress = VerboseProgress() if options.verbose else DefaultProgress()
+ rw_build_tree = None
+ try:
+ for group in test_groups:
+ for name in group:
+ if options.tests and name not in options.tests:
+ continue
+ try:
+ if rw_build_tree is None:
+ try:
+ group_options = group.check()
+ except Skip:
+ pass
+ else:
+ if group_options.rw_build_tree_needed:
+ rw_build_tree = copy_build_tree()
+ assert rw_build_tree is not None
+ group.run(name,
+ progress=progress,
+ ignored_restrictions=options.ignore_restrictions,
+ rw_build_tree=rw_build_tree,
+ built_source_tree=options.built_source_tree
+ )
+ except Skip:
+ n_skip += 1
+ except Fail as exc:
+ failures += [(name, exc)]
+ else:
+ n_ok += 1
+ finally:
+ progress.close()
+ n_fail = len(failures)
+ n_test = n_fail + n_skip + n_ok
+ separator1 = '-' * 70
+ separator2 = '=' * 70
+ if failures:
+ for name, exception in failures:
+ print(separator2)
+ print('FAIL: {test}'.format(test=name))
+ print(separator1)
+ print(exception.args[1])
+ print(separator1)
+ print(gettext.ngettext('Ran {n} test', 'Ran {n} tests', n_test).format(n=n_test))
+ print()
+ extra_message = []
+ if n_skip > 0:
+ extra_message += ['skipped={n}'.format(n=n_skip)]
+ if n_fail > 0:
+ extra_message += ['failures={n}'.format(n=n_fail)]
+ if extra_message:
+ extra_message = ' ({msg})'.format(msg=', '.join(extra_message))
+ else:
+ extra_message = ''
+ message = ('OK' if n_fail == 0 else 'FAILED') + extra_message
+ print(message)
+ if rw_build_tree is not None:
+ shutil.rmtree(rw_build_tree)
+ sys.exit(n_fail > 0)
+
+if __name__ == '__main__':
+ main()
+
+# vim:ts=4 sw=4 et
--- /dev/null
+# Copyright © 2013 Jakub Wilk <jwilk@debian.org>
+
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+=encoding utf8
+
+=head1 NAME
+
+sadt - simple DEP-8 test runner
+
+=head1 SYNOPSIS
+
+B<sadt> [I<options>] [I<test-name>...]
+
+=head1 DESCRIPTION
+
+B<sadt> is a simple implementation of DEP-8 (“automatic as-installed package
+testing”) test runner.
+
+It is your responsibility to satisfy tests' dependencies. B<sadt> won't
+attempt to install any missing packages. If a test's dependencies cannot be
+satisfied by packages that are currently installed, the test will be skipped.
+
+B<sadt> won't build the package even if a test declares the B<build-needed>
+restriction. Instead, such a test will be skipped. However, you can build the
+package manually, and then tell B<sadt> to assume that the package is already
+built using the B<-b>/B<--built-source-tree>.
+
+B<sadt> doesn't implement any virtualisation arrangements, therefore it skips
+tests that declare the B<breaks-testbed> restriction.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-v>, B<--verbose>
+
+Make the output more verbose.
+
+=item B<-b>, B<--built-source-tree>
+
+Assume that the source tree is already built.
+This is equivalent to B<--ignore-restriction=build-needed>.
+
+=item B<--ignore-restriction>=I<restriction>
+
+Don't skip tests that declare the I<restriction>.
+
+=item B<-h>, B<--help>
+
+Show a help message and exit.
+
+=back
+
+=head1 CONFORMING TO
+
+README.package-tests shipped by autopkgtest 2.7.2
+
+=head1 SEE ALSO
+
+B<adt-run>(1)
--- /dev/null
+#!/usr/bin/python3
+
+from setuptools import setup
+import glob
+import os
+import re
+
+# look/set what version we have
+changelog = "../debian/changelog"
+if os.path.exists(changelog):
+ head = open(changelog, encoding="utf8").readline()
+ match = re.compile(".*\((.*)\).*").match(head)
+ if match:
+ version = match.group(1)
+
+scripts = ['sadt',
+ 'suspicious-source',
+ 'wrap-and-sort',
+ ]
+
+if __name__ == '__main__':
+ setup(name='devscripts',
+ version=version,
+ scripts=scripts,
+ packages=['devscripts',
+ 'devscripts/test',
+ ],
+ test_suite='devscripts.test.discover',
+ )
--- /dev/null
+#!/usr/bin/python3
+
+# Copyright (c) 2010-2014, Benjamin Drung <bdrung@debian.org>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+import optparse
+import os
+import sys
+
+from devscripts.logger import Logger
+
+try:
+ import magic
+except ImportError:
+ Logger.error("Please install 'python3-magic' in order to use this utility.")
+ sys.exit(1)
+
+DEFAULT_WHITELISTED_MIMETYPES = [
+ "application/pgp-keys",
+ "application/vnd.font-fontforge-sfd", # font source: fontforge
+ "application/x-elc",
+ "application/x-empty",
+ "application/x-font-otf", # font object and source
+ "application/x-font-ttf", # font object and source
+ "application/x-font-woff", # font object and source
+ "application/x-symlink",
+ "application/xml",
+ "audio/x-wav",
+ "font/otf", # font object and source
+ "font/ttf", # font object and source
+ "image/gif",
+ "image/jpeg",
+ "image/png",
+ "image/svg+xml",
+ "image/tiff",
+ "image/vnd.adobe.photoshop",
+ "image/x-icns",
+ "image/x-ico",
+ "image/x-icon",
+ "image/x-ms-bmp",
+ "image/x-portable-pixmap",
+ "image/x-xpmi",
+ "inode/symlink",
+ "inode/x-empty",
+ "message/rfc822",
+ "text/html",
+ "text/plain",
+ "text/rtf",
+ "text/troff",
+ "text/x-asm",
+ "text/x-c",
+ "text/x-c++",
+ "text/x-diff",
+ "text/x-fortran",
+ "text/x-java",
+ "text/x-lisp",
+ "text/x-m4",
+ "text/x-makefile",
+ "text/x-msdos-batch",
+ "text/x-pascal",
+ "text/x-perl",
+ "text/x-php",
+ "text/x-po",
+ "text/x-python",
+ "text/x-shellscript",
+ "text/x-tex",
+ "text/x-texinfo",
+]
+
+DEFAULT_WHITELISTED_EXTENSIONS = [
+ ".fea", # font source format: Adobe Font Development Kit for OpenType
+ ".fog", # font source format: Fontographer
+ ".g2n", # font source format: fontforge
+ ".gdh", # font source format: Graphite (headers)
+ ".gdl", # font source format: Graphite
+ ".glyph", # font source format: cross-toolkit UFO
+ ".gmo", # GNU Machine Object File (for translations with gettext)
+ ".icns", # Apple Icon Image format
+ ".java", # Java source files
+ ".plate", # font source format: Spiro
+ ".rsa",
+ ".sfd", # font source format: fontforge
+ ".sfdir", # font source format: fontforge
+ ".ttx", # font source format: fonttools
+ ".ufo", # font source format: cross-toolkit UFO
+ ".vfb" # font source format: FontLab
+ ".vtp", # font source format: OpenType (VOLT)
+ ".xgf", # font source format: Xgridfit
+]
+
+def suspicious_source(whitelisted_mimetypes, whitelisted_extensions, directory,
+ verbose=False):
+ magic_cookie = magic.open(magic.MAGIC_MIME_TYPE)
+ magic_cookie.load()
+
+ for root, dirs, files in os.walk(directory):
+ for f in files:
+ mimetype = magic_cookie.file(os.path.join(root, f))
+ if mimetype not in whitelisted_mimetypes:
+ if not [x for x in whitelisted_extensions
+ if f.lower().endswith(x)]:
+ output = os.path.join(root, f)
+ if verbose:
+ output += " (" + mimetype + ")"
+ print(output)
+ for vcs_dir in (".bzr", "CVS", ".git", ".svn", ".hg", "_darcs"):
+ if vcs_dir in dirs:
+ dirs.remove(vcs_dir)
+
+def main():
+ script_name = os.path.basename(sys.argv[0])
+ usage = "%s [options]" % (script_name)
+ epilog = "See %s(1) for more info." % (script_name)
+ parser = optparse.OptionParser(usage=usage, epilog=epilog)
+
+ parser.add_option("-v", "--verbose", help="print more information",
+ dest="verbose", action="store_true", default=False)
+ parser.add_option("-d", "--directory",
+ help="check the files in the specified directory",
+ dest="directory", default=".")
+ parser.add_option("-m", "--mimetype", metavar="MIMETYPE",
+ help="Add MIMETYPE to list of whitelisted mimetypes.",
+ dest="whitelisted_mimetypes", action="append",
+ default=DEFAULT_WHITELISTED_MIMETYPES)
+ parser.add_option("-e", "--extension", metavar="EXTENSION",
+ help="Add EXTENSION to list of whitelisted extensions.",
+ dest="whitelisted_extensions", action="append",
+ default=DEFAULT_WHITELISTED_EXTENSIONS)
+
+ (options, args) = parser.parse_args()
+
+ if len(args) != 0:
+ Logger.error("This script does not take any additional parameters.")
+ sys.exit(1)
+
+ whitelisted_extensions = [x.lower() for x in options.whitelisted_extensions]
+ suspicious_source(options.whitelisted_mimetypes, whitelisted_extensions,
+ options.directory, options.verbose)
+
+if __name__ == "__main__":
+ main()
--- /dev/null
+#!/usr/bin/perl
+
+=head1 NAME
+
+svnpath - output svn url with support for tags and branches
+
+=head1 SYNOPSIS
+
+B<svnpath>
+
+B<svnpath tags>
+
+B<svnpath branches>
+
+B<svnpath trunk>
+
+=head1 DESCRIPTION
+
+B<svnpath> is intended to be run in a Subversion working copy.
+
+In its simplest usage, B<svnpath> with no parameters outputs the svn url for
+the repository associated with the working copy.
+
+If a parameter is given, B<svnpath> attempts to instead output the url that
+would be used for the tags, branches, or trunk. This will only work if it's
+run in the top-level directory that is subject to tagging or branching.
+
+For example, if you want to tag what's checked into Subversion as version
+1.0, you could use a command like this:
+
+ svn cp $(svnpath) $(svnpath tags)/1.0
+
+That's much easier than using svn info to look up the repository url and
+manually modifying it to derive the url to use for the tag, and typing in
+something like this:
+
+ svn cp svn+ssh://my.server.example/svn/project/trunk svn+ssh://my.server.example/svn/project/tags/1.0
+
+svnpath uses a simple heuristic to convert between the trunk, tags, and
+branches paths. It replaces the first occurrence of B<trunk>, B<tags>, or
+B<branches> with the name of what you're looking for. This will work ok for
+most typical Subversion repository layouts.
+
+If you have an atypical layout and it does not work, you can add a
+F<~/.svnpath> file. This file is perl code, which can modify the path in $url.
+For example, the author uses this file:
+
+ #!/usr/bin/perl
+ # svnpath personal override file
+
+ # For d-i I sometimes work from a full d-i tree branch. Remove that from
+ # the path to get regular tags or branches directories.
+ $url=~s!d-i/(rc|beta)[0-9]+/!!;
+ $url=~s!d-i/sarge/!!;
+ 1
+
+=cut
+
+$ENV{LANG}="C";
+
+my $wanted=shift;
+my $path=shift;
+
+if (length $path) {
+ chdir $path || die "$path: unreadable\n";
+}
+
+our $url = `svn info . 2>/dev/null|grep -i ^URL: | cut -d ' ' -f 2`;
+if (! length $url) {
+ # Try svk instead.
+ $url = `svk info .| grep -i '^Depot Path:' | cut -d ' ' -f 3`;
+}
+
+if (! length $url) {
+ die "cannot get url";
+}
+
+if (length $wanted) {
+ # Now jut substitute into it.
+ $url=~s!/(?:trunk|branches|tags)($|/)!/$wanted$1!;
+
+ if (-e "$ENV{HOME}/.svnpath") {
+ require "$ENV{HOME}/.svnpath";
+ }
+}
+
+print $url;
+
+=head1 LICENSE
+
+GPL version 2 or later
+
+=head1 AUTHOR
+
+Joey Hess <joey@kitenet.net>
+
+=cut
--- /dev/null
+#!/usr/bin/perl -w
+#
+# tagpending: Parse a Debian changelog for a list of bugs closed
+# and tag any that are not already pending as such.
+#
+# The original shell version of tagpending was written by Joshua Kwan
+# and is Copyright 2004 Joshua Kwan <joshk@triplehelix.org>
+# with changes copyright 2004-07 by their respective authors.
+#
+# This version is
+# Copyright 2008 Adam D. Barratt
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use strict;
+use warnings;
+use Getopt::Long qw(:config gnu_getopt);
+use File::Basename;
+BEGIN { push @INC, '/usr/share/devscripts'; }
+use Devscripts::Debbugs;
+
+sub bugs_info;
+
+my $progname = basename($0);
+
+my ($opt_help, $opt_version, $opt_verbose, $opt_noact, $opt_silent);
+my ($opt_online, $opt_confirm, $opt_to, $opt_wnpp, $opt_comments);
+my $opt_interactive;
+
+# Default options
+$opt_silent = 0;
+$opt_verbose = 0;
+$opt_online = 1;
+$opt_noact = 0;
+$opt_confirm = 0;
+$opt_wnpp = 0;
+$opt_to = '';
+$opt_comments = 1;
+$opt_interactive = 0;
+
+GetOptions("help|h" => \$opt_help,
+ "version" => \$opt_version,
+ "verbose|v!" => \$opt_verbose,
+ "noact|n" => \$opt_noact,
+ "comments!" => \$opt_comments,
+ "silent|s" => \$opt_silent,
+ "force|f" => sub { $opt_online = 0; },
+ "confirm|c" => \$opt_confirm,
+ "to|t=s" => \$opt_to,
+ "wnpp|w" => \$opt_wnpp,
+ "interactive|i" => \$opt_interactive,
+ )
+ or die "Usage: $progname [options]\nRun $progname --help for more details\n";
+
+$opt_to = "-v$opt_to" if $opt_to;
+
+if ($opt_help) {
+ help(); exit 0;
+} elsif ($opt_version) {
+ version(); exit 0;
+}
+
+if ($opt_verbose and $opt_silent) {
+ die "$progname error: --silent and --verbose contradict each other\n";
+}
+
+=head1 NAME
+
+tagpending - tags bugs that are to be closed in the latest changelog as pending
+
+=head1 SYNOPSIS
+
+B<tagpending> [I<options>]
+
+=head1 DESCRIPTION
+
+B<tagpending> parses debian/changelog to determine
+which bugs would be closed if the package were uploaded. Each bug is
+then marked as pending, using B<bts>(1) if it is not already so.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-n>, B<--noact>
+
+Check whether any bugs require tagging, but do not actually do so.
+
+=item B<-s>, B<--silent>
+
+Do not output any messages.
+
+=item B<-v>, B<--verbose>
+
+List each bug checked and tagged in turn.
+
+=item B<-f>, B<--force>
+
+Do not query the BTS, but (re)tag all bugs closed in the changelog.
+
+=item B<--comments>
+
+Include the changelog header line and the entries relating to the tagged
+bugs as comments in the generated mail. This is the default.
+
+Note that when used in combination with B<--to>, the header line output
+will always be that of the most recent version.
+
+=item B<--no-comments>
+
+Do not include changelog entries in the generated mail.
+
+=item B<-c>, B<--confirm>
+
+Tag bugs as both confirmed and pending.
+
+=item B<-t>, B<--to> I<version>
+
+Parse changelogs for all versions strictly greater than I<version>.
+
+Equivalent to B<dpkg-parsechangelog>'s B<-v> option.
+
+=item B<-i>, B<--interactive>
+
+Display the message which would be sent to the BTS and, except when
+B<--noact> was used, prompt for confirmation before sending it.
+
+=item B<-w>, B<--wnpp>
+
+For each bug that does not appear to belong to the current package,
+check whether it is filed against wnpp. If so, tag it. This allows e.g.
+ITAs and ITPs closed in an upload to be tagged.
+
+=back
+
+=head1 SEE ALSO
+
+B<bts>(1) and B<dpkg-parsechangelog>(1)
+
+=cut
+
+my $source;
+my @closes;
+my $in_changes=0;
+my $changes='';
+my $header='';
+
+foreach my $file ("debian/changelog") {
+ if (! -f $file) {
+ die "$progname error: $file does not exist!\n";
+ }
+}
+
+open PARSED, "dpkg-parsechangelog $opt_to |";
+
+while (<PARSED>) {
+ if (/^Source: (.*)/) {
+ $source = $1;
+ } elsif (/^Closes: (.*)$/) {
+ @closes = split ' ', $1;
+ } elsif (/^Changes: /) {
+ $in_changes = 1;
+ } elsif ($in_changes) {
+ if ($header) {
+ next unless /^ {3}[^[]/;
+ $changes .= "\n" if $changes;
+ $changes .= $_;
+ } else {
+ $header = $_;
+ }
+ }
+}
+
+close PARSED;
+
+# Add a fake entry to the end of the recorded changes
+# This makes the parsing of the changes simpler
+$changes .= " *";
+
+my $pending;
+my $open;
+
+if ($opt_online) {
+ if (!Devscripts::Debbugs::have_soap()) {
+ die "$progname: The libsoap-lite-perl package is required for online operation; aborting.\n";
+ }
+
+ eval {
+ $pending = Devscripts::Debbugs::select( "src:$source", "status:open", "status:forwarded", "tag:pending" );
+ $open = Devscripts::Debbugs::select( "src:$source", "status:open", "status:forwarded" );
+ };
+
+ if ($@) {
+ die "$@\nUse --force to tag all bugs anyway.\n";
+ }
+}
+
+my %bugs = map { $_ => 1} @closes;
+if ($pending) {
+ %bugs = ( %bugs, map { $_ => 1} @{$pending} );
+}
+
+my $bug;
+my $message;
+my @to_tag = ();
+my @wnpp_to_tag = ();
+
+foreach $bug (keys %bugs) {
+ print "Checking bug #$bug: " if $opt_verbose;
+
+ if (grep /^$bug$/, @{$pending}) {
+ print "already marked pending\n" if $opt_verbose;
+ } else {
+ if (grep /^$bug$/, @{$open} or not $opt_online) {
+ print "needs tag\n" if $opt_verbose;
+ push (@to_tag, $bug);
+ } else {
+ if ($opt_wnpp) {
+ my $status = Devscripts::Debbugs::status($bug);
+ if ($status->{$bug}->{package} eq 'wnpp') {
+ if ($status->{$bug}->{tags} !~ /pending/) {
+ print "wnpp needs tag\n" if $opt_verbose;
+ push (@wnpp_to_tag, $bug);
+ } else {
+ print "wnpp already marked pending\n" if $opt_verbose;
+ }
+ } else {
+ $message = "is closed or does not belong to this package (check bug # or force)\n";
+
+ print "Warning: #$bug " if not $opt_verbose;
+ print "$message";
+ }
+ } else {
+ $message = "is closed or does not belong to this package (check bug # or force)\n";
+
+ print "Warning: #$bug " if not $opt_verbose;
+ print "$message";
+ }
+ }
+ }
+}
+
+if (!@to_tag and !@wnpp_to_tag) {
+ print "$progname info: Nothing to do, exiting.\n"
+ if $opt_verbose or !$opt_silent;
+ exit 0;
+}
+
+my @sourcepkgs = ();
+my @thiscloses = ();
+my $thischange = '';
+my $comments = '';
+
+if (@to_tag or @wnpp_to_tag) {
+ if ($opt_comments) {
+ foreach my $change (split /\n/, $changes) {
+ if ($change =~ /^ {3}\*(.*)/) {
+ # Adapted from dpkg-parsechangelog / Changelog.pm
+ while ($thischange && ($thischange =~
+ /closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*/sig)) {
+ push(@thiscloses, $& =~ /\#?\s?(\d+)/g);
+ }
+
+ foreach my $bug (@thiscloses) {
+ if ($bug and grep /^$bug$/, @to_tag or grep /^$bug$/, @wnpp_to_tag) {
+ $comments .= $thischange;
+ last;
+ }
+ }
+
+ @thiscloses = ();
+ $thischange = $change;
+ } else {
+ $thischange .= $change . "\n";
+ }
+ }
+
+ $comments = $header . "\n \n" . $comments . "\n \n"
+ if $comments;
+ }
+}
+
+my @bts_args = ("bts", "--toolname", $progname);
+
+if ($opt_noact and not $opt_interactive) {
+ bugs_info;
+ bugs_info "wnpp" if $opt_wnpp;
+} else {
+ if (!$opt_silent) {
+ bugs_info;
+ bugs_info "wnpp" if $opt_wnpp;
+ }
+
+ if ($opt_interactive) {
+ if ($opt_noact) {
+ push(@bts_args, "-n");
+ print "\nWould send this BTS mail:\n\n";
+ } else {
+ push(@bts_args, "-i");
+ }
+ }
+
+ if (@to_tag) {
+ push(@bts_args, "limit", "source:$source");
+
+ if ($comments) {
+ $comments =~ s/\n\n/\n/sg;
+ $comments =~ s/\n\n/\n/m;
+ $comments =~ s/^ /#/mg;
+ push(@bts_args, $comments);
+ # We don't want to add comments twice if there are
+ # both package and wnpp bugs
+ $comments = '';
+ }
+
+ foreach my $bug (@to_tag) {
+ push(@bts_args, ".", "tag", $bug, "+", "pending");
+ push(@bts_args, "confirmed") if $opt_confirm;
+ }
+ }
+ if (@wnpp_to_tag) {
+ push(@bts_args, ".") if scalar @bts_args > 1;
+ push(@bts_args, "package", "wnpp");
+
+ if ($comments) {
+ $comments =~ s/\n\n/\n/sg;
+ $comments =~ s/^ /#/mg;
+ push(@bts_args, $comments);
+ }
+
+ foreach my $wnpp_bug (@wnpp_to_tag) {
+ push(@bts_args, ".", "tag", $wnpp_bug, "+", "pending");
+ }
+ }
+
+ system @bts_args;
+}
+
+sub bugs_info {
+ my $type = shift || '';
+ my @bugs;
+
+ if ($type eq "wnpp") {
+ if (@wnpp_to_tag) {
+ @bugs = @wnpp_to_tag;
+ } else {
+ return;
+ }
+ } else {
+ @bugs = @to_tag;
+ }
+
+ print "$progname info: ";
+
+ if ($opt_noact) {
+ print "would tag";
+ } else {
+ print "tagging";
+ }
+
+ print " these";
+ print " wnpp" if $type eq "wnpp";
+ print " bugs pending";
+ print " and confirmed" if $opt_confirm and $type ne "wnpp";
+ print ":";
+
+ foreach my $bug (@bugs) {
+ print " $bug";
+ }
+
+ print "\n";
+}
+
+sub help {
+ print <<"EOF";
+Usage: $progname [options]
+
+Valid options are:
+ --help, -h Display this message
+ --version Display version and copyright info
+ -n, --noact Only simulate what would happen during this run;
+ do not tag any bugs.
+ -s, --silent Silent mode
+ -v, --verbose Verbose mode: List bugs checked/tagged.
+ NOTE: Verbose and silent mode can't be used together.
+ -f, --force Do not query the BTS; (re-)tag all bug reports.
+ --comments Add the changelog header line and entries relating
+ to the bugs to be tagged to the generated mail.
+ (Default)
+ --no-comments Do not add changelog entries to the mail
+ -c, --confirm Tag bugs as confirmed as well as pending
+ -t, --to <version> Use changelog information from all versions strictly
+ later than <version> (mimics dpkg-parsechangelog's
+ -v option.)
+ -i, --interactive Display the message which would be sent to the BTS
+ and, except if --noact was used, prompt for
+ confirmation before sending it.
+ -w, --wnpp For each potentially not owned bug, check whether
+ it is filed against wnpp and, if so, tag it. This
+ allows e.g. ITA or ITPs to be tagged.
+
+EOF
+}
+
+sub version {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+Copyright 2008 by Adam D. Barratt <adam\@adam-barratt.org.uk>; based
+on the shell script by Joshua Kwan <joshk\@triplehelix.org>.
+
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2, or (at your option) any
+later version.
+EOF
+}
+
+=head1 COPYRIGHT
+
+This program is Copyright 2008 by Adam D. Barratt
+<adam@adam-barratt.org.uk>.
+
+The shell script tagpending, on which this program is based, is
+Copyright 2004 by Joshua Kwan <joshk@triplehelix.org> with changes
+copyright 2004-7 by their respective authors.
+
+This program is licensed under the terms of the GPL, either version 2 of
+the License, or (at your option) any later version.
+
+=cut
--- /dev/null
+#!/usr/bin/perl -w
+
+# transition-check: Check whether a given source package is involved
+# in a current transition for which uploads have been blocked by the
+# Debian release team
+#
+# Copyright 2008 Adam D. Barratt
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+=head1 NAME
+
+transition-check - check a package list for involvement in transitions
+
+=head1 SYNOPSIS
+
+B<transition-check> B<--help>|B<--version>
+
+B<transition-check> [B<-f>|B<--filename=>I<FILENAME>] [I<source package list>]
+
+=head1 DESCRIPTION
+
+B<transition-check> checks whether any of the listed source packages
+are involved in a transition for which uploads to unstable are currently
+blocked.
+
+If neither a filename nor a list of packages is supplied, B<transition-check>
+will use the source package name from I<debian/control>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-f>, B<--filename=>I<filename>
+
+Read a source package name from I<filename>, which should be a Debian
+package control file or I<.changes> file, and add that package to the list
+of packages to check.
+
+=back
+
+=head1 EXIT STATUS
+
+The exit status indicates whether any of the packages examined were found to
+be involved in a transition.
+
+=over 4
+
+=item 0Z<>
+
+Either B<--help> or B<--version> was used, or none of the packages examined
+was involved in a transition.
+
+=item 1Z<>
+
+At least one package examined is involved in a current transition.
+
+=back
+
+=head1 LICENSE
+
+This code is copyright by Adam D. Barratt <I<adam@adam-barratt.org.uk>>,
+all rights reserved.
+
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the GNU
+General Public License, version 2 or later.
+
+=head1 AUTHOR
+
+Adam D. Barratt <I<adam@adam-barratt.org.uk>>
+
+=cut
+
+use warnings;
+use strict;
+use Getopt::Long qw(:config gnu_getopt);
+use File::Basename;
+
+my $progname = basename($0);
+
+my ($opt_help, $opt_version, @opt_filename);
+
+GetOptions("help|h" => \$opt_help,
+ "version|v" => \$opt_version,
+ "filename|f=s" => sub {push (@opt_filename, $_[1]);},
+ )
+ or die "Usage: $progname [options] source_package_list\nRun $progname --help for more details\n";
+
+if ($opt_help) { help(); exit 0; }
+if ($opt_version) { version(); exit 0; }
+
+my ($lwp_broken, $yaml_broken);
+my $ua;
+
+sub have_lwp() {
+ return ($lwp_broken ? 0 : 1) if defined $lwp_broken;
+ eval {
+ require LWP;
+ require LWP::UserAgent;
+ };
+
+ if ($@) {
+ if ($@ =~ m%^Can\'t locate LWP%) {
+ $lwp_broken="the libwww-perl package is not installed";
+ } else {
+ $lwp_broken="couldn't load LWP::UserAgent: $@";
+ }
+ }
+ else { $lwp_broken=''; }
+ return $lwp_broken ? 0 : 1;
+}
+
+sub have_yaml() {
+ return ($yaml_broken ? 0 : 1) if defined $yaml_broken;
+ eval {
+ require YAML::Syck;
+ };
+
+ if ($@) {
+ if ($@ =~ m%^Can\'t locate YAML%) {
+ $yaml_broken="the libyaml-syck-perl package is not installed";
+ } else {
+ $yaml_broken="couldn't load YAML::Syck: $@";
+ }
+ }
+ else { $yaml_broken=''; }
+ return $yaml_broken ? 0 : 1;
+}
+
+sub init_agent {
+ $ua = new LWP::UserAgent; # we create a global UserAgent object
+ $ua->agent("LWP::UserAgent/Devscripts");
+ $ua->env_proxy;
+}
+
+if (@opt_filename or ! @ARGV) {
+ @opt_filename = ("debian/control") unless @opt_filename;
+
+ foreach my $filename (@opt_filename) {
+ my $message;
+
+ if (! @ARGV) {
+ $message = "No package list supplied and unable";
+ } else {
+ $message = "Unable";
+ }
+
+ $message .= " to open $filename";
+ open FILE, $filename or die "$progname: $message: $!\n";
+ while (<FILE>) {
+ if (/^(?:Source): (.*)/) {
+ push (@ARGV, $1);
+ last;
+ }
+ }
+
+ close FILE;
+ }
+}
+
+die "$progname: Unable to retrieve transition information: $lwp_broken\n"
+ unless have_lwp;
+
+init_agent() unless $ua;
+my $request = HTTP::Request->new('GET', 'http://ftp-master.debian.org/testing/hints/transitions.yaml');
+my $response = $ua->request($request);
+if (!$response->is_success) {
+ die "$progname: Failed to retrieve transitions list: $!\n";
+}
+
+die "$progname: Unable to parse transition information: $yaml_broken\n"
+ unless have_yaml();
+
+my $yaml = YAML::Syck::Load($response->content);
+my $packagelist = join("|", map {qq/\Q$_\E/} @ARGV);
+my $found = 0;
+
+foreach my $transition(keys(%{$yaml})) {
+ my $data = $yaml->{$transition};
+
+ my @affected = grep /^($packagelist)$/, @{$data->{packages}};
+
+ if (@affected) {
+ print "\n\n" if $found;
+ $found = 1;
+ print "The following packages are involved in the $transition transition:\n";
+ print map {qq( - $_\n)} @affected;
+
+ print "\nDetails of this transition:\n"
+ . " - Reason: $data->{reason}\n"
+ . " - Release team contact: $data->{rm}\n";
+ }
+}
+
+if (!$found) {
+ print "$progname: No packages examined are currently blocked\n";
+}
+
+exit $found;
+
+sub help {
+ print <<"EOF";
+Usage: $progname [options] source_package_list
+Valid options are:
+ --help, -h Display this message
+ --version, -v Display version and copyright info
+ --filename, -f Read source package information from the specified
+ filename (which should be a Debian package control
+ file or changes file)
+EOF
+}
+
+sub version {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+Copyright (C) 2008 by Adam D. Barratt <adam\@adam-barratt.org.uk>,
+
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2, or (at your option) any
+later version.
+EOF
+}
+
--- /dev/null
+.TH USCAN 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+uscan \- scan/watch upstream sources for new releases of software
+.SH SYNOPSIS
+\fBuscan\fR [\fIoptions\fR] [\fIpath-to-debian-source-packages\fR ...]
+.SH DESCRIPTION
+\fBuscan\fR scans the given directories (or the current directory if
+none are specified) and all of their subdirectories for packages
+containing a control file \fIdebian/watch\fR. Parameters are then
+read from those control files and upstream ftp or http sites are
+inspected for newly available updates (as compared with the upstream
+version number retrieved from the \fIdebian/changelog\fR file in the
+same directory). The newest updates are retrieved (as determined by
+their version numbers) and if specified in the \fIwatch\fR file, a program
+may then be executed on the newly downloaded source.
+.PP
+The traditional \fIdebian/watch\fR files can still be used, but the
+current format offers both simpler and more flexible services. We do
+not describe the old format here; for their documentation, see the
+source code for \fRuscan\fR.
+
+.SH FORMAT of debian/watch files
+
+The following demonstrates the type of entries which can appear in a
+\fIdebian/watch\fR file. Obviously, not all of these would appear in
+one such file; usually, one would have one line for the current
+package.
+
+.PP
+.nf
+# format version number, currently 3; this line is compulsory!
+version=3
+
+# Line continuations are performed with \fB\e\fR
+
+# This is the format for an FTP site:
+# Full-site-with-pattern [Version [Action]]
+ftp://ftp.tex.ac.uk/tex-archive/web/c_cpp/cweb/cweb-(.+)\e.tar\e.gz \e
+ debian uupdate
+
+# This is the format for an FTP site with regex special characters in
+# the filename part
+ftp://ftp.worldforge.org/pub/worldforge/libs/Atlas-C++/transitional/Atlas-C\e+\e+-(.+)\e.tar\e.gz
+
+# This is the format for an FTP site with directory pattern matching
+ftp://ftp.nessus.org/pub/nessus/nessus-([\ed\e.]+)/src/nessus-core-([\ed\e.]+)\e.tar\e.gz
+
+# This can be used if you want to override the PASV setting
+# for a specific site
+# opts=pasv ftp://.../...
+
+# This is one format for an HTTP site, which is the same
+# as the FTP format. \fBuscan\fR starts by downloading the homepage,
+# obtained by removing the last component of the URL; in this case,
+# \fIhttp://www.cpan.org/modules/by-module/Text/\fR
+http://www.cpan.org/modules/by-module/Text/Text-CSV_XS-(.+)\e.tar\e.gz
+
+# This is a variant HTTP format which allows direct specification of
+# the homepage:
+# Homepage Pattern [Version [Action]]
+http://www.dataway.ch/~lukasl/amph/amph.html \e
+ files/amphetamine-([\ed\e.]*).tar.bz2
+
+# This one shows that recursive directory scanning works, in either of
+# two forms, as long as the website can handle requests of the form
+# \fIhttp://site/inter/mediate/dir/\fR
+http://tmrc.mit.edu/mirror/twisted/Twisted/(\ed\e.\ed)/ \e
+ Twisted-([\ed\e.]*)\e.tar\e.bz2
+http://tmrc.mit.edu/mirror/twisted/Twisted/(\ed\e.\ed)/Twisted-([\ed\e.]*)\e.tar\e.bz2
+
+# For maximum flexibility with upstream tarball formats, use this:
+http://example.com/example-(\ed[\ed\.]*)\e.(?:zip|tgz|tbz2|txz|tar\e.(?:gz|bz2|xz))
+
+# qa.debian.org runs a redirector which allows a simpler form of URL
+# for SourceForge based projects. The format below will automatically
+# be rewritten to use the redirector.
+http://sf.net/audacity/audacity-src-(.+)\e.tar\e.gz
+
+# For GitHub projects you can use the tags or releases page. Since the archive
+# URLs use only the version as the name, it is recommended to use a
+# filenamemangle to adjust the name of the downloaded file:
+opts="filenamemangle=s/(?:.*\/)?v?(\ed[\ed\e.]*)\e.tar\e.gz/<project>-$1.tar.gz/" \e
+ https://github.com/<user>/<project>/tags (?:.*/)?v?(\ed[\ed\e.]*)\e.tar\e.gz
+
+# For Google Code projects you should use the downloads page like this:
+https://code.google.com/p/<project>/downloads/list?can=1 \e
+ .*/<project>-(\ed[\ed.]*)\e.tar\e.gz
+
+# This is the format for a site which has funny version numbers;
+# the parenthesised groups will be joined with dots to make a
+# sanitised version number
+http://www.site.com/pub/foobar/foobar_v(\ed+)_(\ed+)\e.tar\e.gz
+
+# This is another way of handling site with funny version numbers,
+# this time using mangling. (Note that multiple groups will be
+# concatenated before mangling is performed, and that mangling will
+# only be performed on the basename version number, not any path
+# version numbers.)
+opts="uversionmangle=s/^/0.0./" \e
+ ftp://ftp.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-(.+)\e.tar\e.gz
+
+# Similarly, the upstream part of the Debian version number can be
+# mangled:
+opts=dversionmangle=s/\e+dfsg\ed*$// \e
+ http://some.site.org/some/path/foobar-(.+)\e.tar\e.gz
+
+# The filename is found by taking the last component of the URL and
+# removing everything after any '\fB?\fR'. If this would not make a usable
+# filename, use filenamemangle. For example,
+# <A href="http://foo.bar.org/download/?path=&download=foo-0.1.1.tar.gz">
+# could be handled as:
+# opts=filenamemangle=s/.*=(.*)/$1/ \e
+# http://foo.bar.org/download/\e?path=&download=foo-(.+)\e.tar\e.gz
+#
+# <A href="http://foo.bar.org/download/?path=&download_version=0.1.1">
+# could be handled as:
+# opts=filenamemangle=s/.*=(.*)/foo-$1\e.tar\e.gz/ \e
+# http://foo.bar.org/download/\e?path=&download_version=(.+)
+
+# The option downloadurlmangle can be used to mangle the URL of the file
+# to download. This can only be used with http:// URLs. This may be
+# necessary if the link given on the web page needs to be transformed in
+# some way into one which will work automatically, for example:
+# opts=downloadurlmangle=s/prdownload/download/ \e
+# http://developer.berlios.de/project/showfiles.php?group_id=2051 \e
+# http://prdownload.berlios.de/softdevice/vdr-softdevice-(.+).tgz
+
+.fi
+.PP
+Comment lines may be introduced with a `\fB#\fR' character. Continuation
+lines may be indicated by terminating a line with a backslash
+character.
+.PP
+The first (non-comment) line of the file must begin `version=3'. This
+allows for future extensions without having to change the name of the
+file.
+.PP
+There are two possibilities for the syntax of an HTTP \fIwatch\fR file line,
+and only one for an FTP line. We begin with the common (and simpler)
+format. We describe the optional opts=... first field below, and
+ignore it in what follows.
+.PP
+The first field gives the full pattern of URLs being searched for. In
+the case of an FTP site, the directory listing for the requested
+directory will be requested and this will be scanned for files
+matching the basename (everything after the trailing `\fB/\fR'). In the
+case of an HTTP site, the URL obtained by stripping everything after
+the trailing slash will be downloaded and searched for hrefs (links of
+the form <a href=...>) to either the full URL pattern given, or to the
+absolute part (everything without the http://host.name/ part), or to
+the basename (just the part after the final `\fB/\fR'). Everything up to
+the final slash is taken as a verbatim URL, as long as there are no
+parentheses (`\fB(\fR' and '\fB)\fR') in this part of the URL: if it does, the
+directory name will be matched in the same way as the final component
+of the URL as described below. (Note that regex metacharacters such
+as `\fB+\fR' are regarded literally unless they are in a path component
+containing parentheses; see the Atlas-C++ example above. Also, the
+parentheses must match within each path component.)
+.PP
+The pattern (after the final slash) is a Perl regexp (see
+\fBperlre\fR(1) for details of these). You need to make the pattern
+so tight that it matches only the upstream software you are interested
+in and nothing else. Also, the pattern will be anchored at the
+beginning and at the end, so it must match the full filename. (Note
+that for HTTP URLs, the href may include the absolute path or full
+site and path and still be accepted.) The pattern must contain at
+least one Perl group as explained in the next paragraph.
+.PP
+Having got a list of `files' matching the pattern, their version
+numbers are extracted by treating the part matching the Perl regexp
+groups, demarcated by `\fB(...)\fR', joining them with `\fB.\fR' as a separator,
+and using the result as the version number of the file. The version
+number will then be mangled if required by the uversionmangle option
+described below. Finally, the file versions are then compared to find
+the one with the greatest version number, as determined by \fBdpkg
+\-\-compare-versions\fR. Note that if you need Perl groups which are
+not to be used in the version number, either use `\fB(?:...)\fR' or use the
+uversionmangle option to clean up the mess!
+.PP
+The current (upstream) version can be specified as the second
+parameter in the \fIwatch\fR file line. If this is \fIdebian\fR or absent,
+then the current Debian version (as determined by
+\fIdebian/changelog\fR) is used to determine the current upstream
+version. The current upstream version may also be specified by the
+command-line option \fB\-\-upstream-version\fR, which specifies the
+upstream version number of the currently installed package (i.e., the
+Debian version number without epoch and Debian revision). The
+upstream version number will then be mangled using the dversionmangle
+option if one is specified, as described below. If the newest version
+available is newer than the current version, then it is downloaded
+into the parent directory, unless the \fB\-\-report\fR or
+\fB\-\-report-status\fR option has been used. Once the file has been
+downloaded, then a symlink to the file is made from
+\fI<package>_<version>.orig.tar.{gz|bz2|lzma|xz}\fR as described by the help
+for the \fB\-\-symlink\fR option.
+.PP
+Finally, if a third parameter (an action) is given in the \fIwatch\fR file
+line, this is taken as the name of a command, and the command
+.nf
+ \fIcommand \fB\-\-upstream-version\fI version filename\fR
+.fi
+is executed, using either the original file or the symlink name. A
+common such command would be \fBuupdate\fR(1). (Note that the calling
+syntax was slightly different when using \fIwatch\fR file without a
+`\fBversion=\fR...' line; there the command executed was `\fIcommand filename
+version\fR'.) If the command is \fBuupdate\fR, then the
+\fB\-\-no\-symlink\fR option is given to \fBuupdate\fR as a first
+option, since any requested symlinking will already be done by
+\fBuscan\fR.
+.PP
+The alternative version of the \fIwatch\fR file syntax for HTTP URLs is as
+follows. The first field is a homepage which should be downloaded and
+then searched for hrefs matching the pattern given in the second
+field. (Again, this pattern will be anchored at the beginning and the
+end, so it must match the whole href. If you want to match just the
+basename of the href, you can use a pattern like
+".*/name-(.+)\e.tar\e.gz" if you know that there is a full URL, or
+better still: "(?:.*/)?name-(.+)\e.tar\e.gz" if there may or may not
+be. Note the use of (?:...) to avoid making a backreference.) If any
+of the hrefs in the homepage which match the (anchored) pattern are
+relative URLs, they will be taken as being relative to the base URL of
+the homepage (i.e., with everything after the trailing slash removed),
+or relative to the base URL specified in the homepage itself with a
+<base href="..."> tag. The third and fourth fields are the version
+number and action fields as before.
+.SH "PER-SITE OPTIONS"
+A \fIwatch\fR file line may be prefixed with `\fBopts=\fIoptions\fR', where
+\fIoptions\fR is a comma-separated list of options. The whole
+\fIoptions\fR string may be enclosed in double quotes, which is
+necessary if \fIoptions\fR contains any spaces. The recognised
+options are as follows:
+.TP
+\fBactive\fR and \fBpassive\fR (or \fBpasv\fR)
+If used on an FTP line, these override the choice of whether to use
+PASV mode or not, and force the use of the specified mode for this
+site.
+.TP
+\fBuversionmangle=\fIrules\fR
+This is used to mangle the upstream version number as matched by the
+ftp://... or http:// rules as follows. First, the \fIrules\fR string
+is split into multiple rules at every `\fB;\fR'. Then the upstream version
+number is mangled by applying \fIrule\fR to the version, in a similar
+way to executing the Perl command:
+.nf
+ $version =~ \fIrule\fR;
+.fi
+for each rule. Thus, suitable rules might be `\fBs/^/0./\fR' to prepend
+`\fB0.\fR' to the version number and `\fBs/_/./g\fR' to change underscores into
+periods. Note that the \fIrule\fR string may not contain commas;
+this should not be a problem.
+
+\fIrule\fR may only use the '\fBs\fR', '\fBtr\fR' and '\fBy\fR' operations. When the '\fBs\fR'
+operation is used, only the '\fBg\fR', '\fBi\fR' and '\fBx\fR' flags are available and
+\fIrule\fR may not contain any expressions which have the potential to
+execute code (i.e. the (?{}) and (??{}) constructs are not supported).
+
+If the '\fBs\fR' operation is used, the replacement can contain
+backreferences to expressions within parenthesis in the matching regexp,
+like `\fBs/-alpha(\ed*)/.a$1/\fR'. These backreferences must use the
+`\fB$1\fR' syntax, as the `\fB\e1\fR' syntax is not supported.
+.TP
+\fBdversionmangle=\fIrules\fR
+This is used to mangle the Debian version number of the currently
+installed package in the same way as the \fBuversionmangle\fR option.
+Thus, a suitable rule might be `\fBs/\+dfsg\ed*$//\fR' to remove a
+`\fB+dfsg1\fR' suffix from the Debian version number, or to handle `\fB.pre6\fR'
+type version numbers. Again, the \fIrules\fR string may not contain
+commas; this should not be a problem.
+.TP
+\fBversionmangle=\fIrules\fR
+This is a syntactic shorthand for
+\fBuversionmangle=\fIrules\fB,dversionmangle=\fIrules\fR, applying the
+same rules to both the upstream and Debian version numbers.
+.TP
+\fBfilenamemangle=\fIrules\fR
+This is used to mangle the filename with which the downloaded file
+will be saved, and is parsed in the same way as the
+\fBuversionmangle\fR option. Examples of its use are given in the
+examples section above.
+.TP
+\fBdownloadurlmangle=\fIrules\fR
+This is used to mangle the URL to be used for the download. The URL
+is first computed based on the homepage downloaded and the pattern
+matched, then the version number is determined from this URL.
+Finally, any rules given by this option are applied before the actual
+download attempt is made. An example of its use is given in the
+examples section above.
+.TP
+\fBpgpsigurlmangle=\fIrules\fR
+If present, the supplied rules will be applied to the downloaded URL
+(after any downloadurlmangle rules, if present) to craft a new URL
+that will be used to fetch the detached OpenPGP signature file for the
+upstream tarball. Some common rules might be `\fBs/$/.asc/\fR' or
+`\fBs/$/.pgp/\fR' or `\fBs/$/.gpg/\fR'. This signature must be made
+by a key found in the keyring \fBdebian/upstream/signing-key.pgp\fR or
+the armored keyring \fBdebian/upstream/signing-key.asc\fR. If it is not
+valid, or not made by one of the listed keys, uscan will report an
+error.
+.TP
+\fBrepacksuffix=\fIsuffix\fR
+If the upstream sources are modified because \fIdebian/copyright\fR contains
+the \fBFiles-Excluded\fR field, \fIsuffix\fR will be appended to the upstream
+version of the repacked tar archive. Common suffixes might be \fB+dfsg1\fR to
+indicate the removal of non-DFSG code or \fB+ds1\fR to indicate the removal of
+embedded (DFSG) code copies.
+.SH "Directory name checking"
+Similarly to several other scripts in the \fBdevscripts\fR package,
+\fBuscan\fR explores the requested directory trees looking for
+\fIdebian/changelog\fR and \fIdebian/watch\fR files. As a safeguard
+against stray files causing potential problems, and in order to
+promote efficiency, it will examine the name of the parent directory
+once it finds the \fIdebian/changelog\fR file, and check that the
+directory name corresponds to the package name. It will only attempt
+to download newer versions of the package and then perform any
+requested action if the directory name matches the package name.
+Precisely how it does this is controlled by two configuration file
+variables \fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR and
+\fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR, and their corresponding command-line
+options \fB\-\-check-dirname-level\fR and
+\fB\-\-check-dirname-regex\fR.
+.PP
+\fBDEVSCRIPTS_CHECK_DIRNAME_LEVEL\fR can take the following values:
+.TP
+.B 0
+Never check the directory name.
+.TP
+.B 1
+Only check the directory name if we have had to change directory in
+our search for \fIdebian/changelog\fR, that is, the directory
+containing \fIdebian/changelog\fR is not the directory from which
+\fBuscan\fR was invoked. This is the default behaviour.
+.TP
+.B 2
+Always check the directory name.
+.PP
+The directory name is checked by testing whether the current directory
+name (as determined by \fBpwd\fR(1)) matches the regex given by the
+configuration file option \fBDEVSCRIPTS_CHECK_DIRNAME_REGEX\fR or by the
+command line option \fB\-\-check-dirname-regex\fR \fIregex\fR. Here
+\fIregex\fR is a Perl regex (see \fBperlre\fR(3perl)), which will be
+anchored at the beginning and the end. If \fIregex\fR contains a '/',
+then it must match the full directory path. If not, then it must
+match the full directory name. If \fIregex\fR contains the string
+\'PACKAGE', this will be replaced by the source package name, as
+determined from the \fIchangelog\fR. The default value for the regex is:
+\'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and
+PACKAGE-version.
+.SH EXAMPLE
+This script will perform a fully automatic upstream update.
+
+.nf
+#!/bin/sh \-e
+# called with '\-\-upstream-version' <version> <file>
+uupdate "$@"
+package=`dpkg\-parsechangelog | sed \-n 's/^Source: //p'`
+cd ../$package-$2
+debuild
+.fi
+
+Note that we don't call \fBdupload\fR or \fBdput\fR automatically, as
+the maintainer should perform sanity checks on the software before
+uploading it to Debian.
+.SH OPTIONS
+.TP
+.B \-\-report\fP, \fB\-\-no\-download
+Only report about available newer versions but do not download anything.
+.TP
+.B \-\-report\-status
+Report on the status of all packages, even those which are up-to-date,
+but do not download anything.
+.TP
+.B \-\-download
+Report and download. (This is the default behaviour.)
+.TP
+.B \-\-destdir
+Path of directory to which to download. If the specified path is not
+absolute, it will be relative to one of the current directory or, if directory
+scanning is enabled, the package's source directory.
+.TP
+.B \-\-force-download
+Download upstream even if up to date (will not overwrite local files, however)
+.TP
+.B \-\-pasv
+Force PASV mode for FTP connections.
+.TP
+.B \-\-no\-pasv
+Do not use PASV mode for FTP connections.
+.TP
+\fB\-\-timeout\fR \fIN\fR
+Set timeout to N seconds (default 20 seconds).
+.TP
+.B \-\-no\-symlink
+Do not call \fBmk\-origtargz\fR.
+.P
+The following options are passed to \fBmk\-origtargz\fR:
+.RS
+.TP
+.B \-\-symlink
+Make \fIorig.tar.gz\fR (with the appropriate extension) symlinks to the
+downloaded files.
+(This is the default behaviour.)
+.TP
+.B \-\-copy
+Instead of symlinking as described above, copy the downloaded files.
+.TP
+.B \-\-rename
+Instead of symlinking as described above, rename the downloaded files.
+.TP
+.B \-\-repack
+After having downloaded an lzma tar, xz tar, bzip tar or zip archive,
+repack it to a gzip tar archive, if required.
+The \fBunzip\fR package must be installed in order to repack .zip archives, the
+\fBxz-utils\fR package must be installed to repack lzma or xz tar archives.
+.TP
+\fB\-\-compression\fR [ \fBgzip\fR | \fBbzip2\fR | \fBlzma\fR | \fBxz\fR ]
+In the case where the upstream sources are repacked (either because
+\fB\-\-repack\fR option is given or \fIdebian/copyright\fR contains the
+field \fBFiles-Excluded\fR), it is possible to control the compression
+method via the parameter (defaults to \fBgzip\fR).
+.TP
+.B \-\-copyright\-file \fIcopyright-file\fR
+Exclude files mentioned in \fBFiles-Excluded\fR in the given copyright file.
+This is useful when running uscan not within a source package directory.
+.RE
+.TP
+.B \-\-dehs
+Use an XML format for output, as required by the DEHS system.
+.TP
+.B \-\-no-dehs
+Use the traditional uscan output format. (This is the default behaviour.)
+.TP
+\fB\-\-package\fR \fIpackage\fR
+Specify the name of the package to check for rather than examining
+\fIdebian/changelog\fR; this requires the \fB\-\-upstream-version\fR
+(unless a version is specified in the \fIwatch\fR file)
+and \fB\-\-watchfile\fR options as well. Furthermore, no directory
+scanning will be done and nothing will be downloaded. This option is
+probably most useful in conjunction with the DEHS system (and
+\fB\-\-dehs\fR).
+.TP
+\fB\-\-upstream-version\fR \fIupstream-version\fR
+Specify the current upstream version rather than examine the \fIwatch\fR file
+or \fIchangelog\fR to determine it. This is ignored if a directory scan is
+being performed and more than one \fIwatch\fR file is found.
+.TP
+\fB\-\-watchfile\fR \fIwatchfile\fR
+Specify the \fIwatchfile\fR rather than perform a directory scan to
+determine it. If this option is used without \fB\-\-package\fR, then
+\fBuscan\fR must be called from within the Debian package source tree
+(so that \fIdebian/changelog\fR can be found simply by stepping up
+through the tree).
+.TP
+\fB\-\-download\-version\fR \fIversion\fR
+Specify the version which the upstream release must match in order to be
+considered, rather than using the release with the highest version.
+.TP
+\fB\-\-download\-current\-version\fR
+Download the currently packaged version
+.TP
+.B \-\-verbose
+Give verbose output.
+.TP
+.B \-\-no\-verbose
+Don't give verbose output. (This is the default behaviour.)
+.TP
+.B \-\-no\-exclusion
+Do not automatically exclude files mentioned in
+\fIdebian/copyright\fR field \fBFiles-Excluded\fR
+.TP
+.B \-\-debug
+Dump the downloaded web pages to stdout for debugging your watch file.
+.TP
+\fB\-\-check-dirname-level\fR \fIN\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-\-check-dirname-regex\fR \fIregex\fR
+See the above section \fBDirectory name checking\fR for an explanation of
+this option.
+.TP
+\fB\-\-user-agent\fR, \fB\-\-useragent\fR
+Override the default user agent header.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+.B \-\-help
+Give brief usage information.
+.TP
+.B \-\-version
+Display version information.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced by a shell in that order to set
+configuration variables. These may be overridden by command line
+options. Environment variable settings are ignored for this purpose.
+If the first command line option given is \fB\-\-noconf\fR, then these
+files will not be read. The currently recognised variables are:
+.TP
+.B USCAN_DOWNLOAD
+If this is set to \fIno\fR, then newer upstream files will not be
+downloaded; this is equivalent to the \fB\-\-report\fR or
+\fB\-\-no\-download\fR options.
+.TP
+.B USCAN_PASV
+If this is set to \fIyes\fR or \fIno\fR, this will force FTP
+connections to use PASV mode or not to, respectively. If this is set
+to \fIdefault\fR, then \fBNet::FTP\fR(3) makes the choice (primarily based on
+the \fBFTP_PASSIVE\fR environment variable).
+.TP
+.B USCAN_TIMEOUT
+If set to a number \fIN\fR, then set the timeout to \fIN\fR seconds.
+This is equivalent to the \fB\-\-timeout\fR option.
+.TP
+.B USCAN_SYMLINK
+If this is set to \fIno\fR, then a pkg_version.orig.tar.{gz|bz2|lzma|xz}
+symlink will not be made (equivalent to the \fB\-\-no\-symlink\fR
+option). If it is set to \fIyes\fR or \fIsymlink\fR, then the
+symlinks will be made. If it is set to \fIrename\fR, then the files
+are renamed (equivalent to the \fB\-\-rename\fR option).
+.TP
+.B USCAN_DEHS_OUTPUT
+If this is set to \fIyes\fR, then DEHS-style output will be used.
+This is equivalent to the \fB\-\-dehs\fR option.
+.TP
+.B USCAN_VERBOSE
+If this is set to \fIyes\fR, then verbose output will be given. This
+is equivalent to the \fB\-\-verbose\fR option.
+.TP
+.B USCAN_USER_AGENT
+If set, the specified user agent string will be used in place of the
+default. This is equivalent to the \fB\-\-user-agent\fR option.
+.TP
+.B USCAN_DESTDIR
+If set, the downloaded files will be placed in this directory. This is
+equivalent to the \fB\-\-destdir\fR option.
+.TP
+.B USCAN_REPACK
+If this is set to \fIyes\fR, then after having downloaded a bzip tar,
+lzma tar, xz tar, or zip archive, \fBuscan\fR will repack it to a gzip tar.
+This is equivalent to the \fB\-\-repack\fR option.
+.TP
+.B USCAN_EXCLUSION
+If this is set to \fIno\fR, files mentioned in the field \fBFiles-Excluded\fR
+of \fIdebian/copyright\fR will be ignored and no exclusion of files will be
+tried. This is equivalent to the \fB\-\-no-exclusion\fR option.
+.SH "EXIT STATUS"
+The exit status gives some indication of whether a newer version was
+found or not; one is advised to read the output to determine exactly
+what happened and whether there were any warnings to be noted.
+.TP
+0
+Either \fB\-\-help\fR or \fB\-\-version\fR was used, or for some
+\fIwatch\fR file which was examined, a newer upstream version was located.
+.TP
+1
+No newer upstream versions were located for any of the \fIwatch\fR files
+examined.
+.SH "HISTORY AND UPGRADING"
+This section briefly describes the backwards-incompatible \fIwatch\fR file
+features which have been added in each \fIwatch\fR file version, and the
+first version of the \fBdevscripts\fR package which understood them.
+.TP
+.I Pre-version 2
+The \fIwatch\fR file syntax was significantly different in those days. Don't
+use it. If you are upgrading from a pre-version 2 \fIwatch\fR file, you are
+advised to read this manpage and to start from scratch.
+.TP
+.I Version 2
+devscripts version 2.6.90: The first incarnation of the current style
+of \fIwatch\fR files.
+.TP
+.I Version 3
+devscripts version 2.8.12: Introduced the following: correct handling
+of regex special characters in the path part, directory/path pattern
+matching, version number in several parts, version number mangling.
+Later versions have also introduced URL mangling.
+
+If you are upgrading from version 2, the key incompatibility is if you
+have multiple groups in the pattern part; whereas only the first one
+would be used in version 2, they will all be used in version 3. To
+avoid this behaviour, change the non-version-number groups to be
+(?:...) instead of a plain (...) group.
+.SH "SEE ALSO"
+.BR dpkg (1),
+.BR mk\-origtargz (1),
+.BR perlre (1),
+.BR uupdate (1),
+.BR devscripts.conf (5)
+.SH AUTHOR
+The original version of \fBuscan\fR was written by Christoph Lameter
+<clameter@debian.org>. Significant improvements, changes and bugfixes
+were made by Julian Gilbey <jdg@debian.org>. HTTP support was added
+by Piotr Roszatycki <dexter@debian.org>. The program was rewritten
+in Perl by Julian Gilbey.
--- /dev/null
+#!/usr/bin/perl -w
+# -*- tab-width: 8; indent-tabs-mode: t; cperl-indent-level: 4 -*-
+
+# uscan: This program looks for watchfiles and checks upstream ftp sites
+# for later versions of the software.
+#
+# Originally written by Christoph Lameter <clameter@debian.org> (I believe)
+# Modified by Julian Gilbey <jdg@debian.org>
+# HTTP support added by Piotr Roszatycki <dexter@debian.org>
+# Rewritten in Perl, Copyright 2002-2006, Julian Gilbey
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use 5.008; # uses 'our' variables and filetest
+use strict;
+use Cwd;
+use Cwd 'abs_path';
+use Dpkg::IPC;
+use File::Basename;
+use File::Copy;
+use File::Temp qw/tempfile tempdir/;
+use List::Util qw/first/;
+use filetest 'access';
+use Getopt::Long qw(:config gnu_getopt);
+BEGIN { push(@INC, '/usr/share/devscripts') } # append to @INC, so that -I . has precedence
+use Devscripts::Versort;
+use Text::ParseWords;
+BEGIN {
+ eval { require LWP::UserAgent; };
+ if ($@) {
+ my $progname = basename($0);
+ if ($@ =~ /^Can\'t locate LWP\/UserAgent\.pm/) {
+ die "$progname: you must have the libwww-perl package installed\nto use this script\n";
+ } else {
+ die "$progname: problem loading the LWP::UserAgent module:\n $@\nHave you installed the libwww-perl package?\n";
+ }
+ }
+}
+use Dpkg::Control::Hash;
+
+my $CURRENT_WATCHFILE_VERSION = 3;
+
+my $progname = basename($0);
+my $modified_conf_msg;
+my $opwd = cwd();
+
+my $haveSSL = 1;
+eval { require LWP::Protocol::https; };
+if ($@) {
+ $haveSSL = 0;
+}
+my $havegpgv = (-x '/usr/bin/gpgv');
+my $havegpg = first { -x $_ } qw(/usr/bin/gpg2 /usr/bin/gpg);
+
+# Did we find any new upstream versions on our wanderings?
+our $found = 0;
+
+sub process_watchline ($$$$$$);
+sub process_watchfile ($$$$);
+sub recursive_regex_dir ($$$);
+sub newest_dir ($$$$$);
+sub dehs_msg ($);
+sub uscan_warn (@);
+sub uscan_die (@);
+sub dehs_output ();
+sub quoted_regex_replace ($);
+sub safe_replace ($$);
+
+sub usage {
+ print <<"EOF";
+Usage: $progname [options] [dir ...]
+ Process watchfiles in all .../debian/ subdirs of those listed (or the
+ current directory if none listed) to check for upstream releases.
+Options:
+ --report Only report on newer or absent versions, do not download
+ --report-status
+ Report status of packages, but do not download
+ --debug Dump the downloaded web pages to stdout for debugging
+ your watch file.
+ --destdir Path of directory to which to download.
+ --download Report on newer and absent versions, and download (default)
+ --force-download
+ Always download the upstream release, even if up to date
+ --no-download Report on newer and absent versions, but don\'t download
+ --pasv Use PASV mode for FTP connections
+ --no-pasv Do not use PASV mode for FTP connections (default)
+ --timeout N Specifies how much time, in seconds, we give remote
+ servers to respond (default 20 seconds)
+ --no-symlink Do not call mk-origtargz
+ --verbose Give verbose output
+ --no-verbose Don\'t give verbose output (default)
+ --check-dirname-level N
+ How much to check directory names:
+ N=0 never
+ N=1 only when program changes directory (default)
+ N=2 always
+ --check-dirname-regex REGEX
+ What constitutes a matching directory name; REGEX is
+ a Perl regular expression; the string \`PACKAGE\' will
+ be replaced by the package name; see manpage for details
+ (default: 'PACKAGE(-.+)?')
+ --watchfile FILE
+ Specify the watchfile rather than using debian/watch;
+ no directory traversing will be done in this case
+ --upstream-version VERSION
+ Specify the current upstream version in use rather than
+ parsing debian/changelog to determine this
+ --download-version VERSION
+ Specify the version which the upstream release must
+ match in order to be considered, rather than using the
+ release with the highest version
+ --download-current-version
+ Download the currently packaged version
+ --package PACKAGE
+ Specify the package name rather than examining
+ debian/changelog; must use --upstream-version and
+ --watchfile with this option, no directory traversing
+ will be performed, no actions (even downloading) will be
+ carried out
+ --no-dehs Use traditional uscan output format (default)
+ --dehs Use DEHS style output (XML-type)
+ --user-agent, --useragent
+ Override the default user agent
+ --no-conf, --noconf
+ Don\'t read devscripts config files;
+ must be the first option given
+ --no-exclusion no automatic exclusion of files mentioned in
+ debian/copyright field Files-Excluded
+ --help Show this message
+ --version Show version information
+
+Options passed on to mk-origtargz:
+ --symlink Create a correctly named symlink to downloaded file (default)
+ --rename Rename instead of symlinking
+ --repack Repack downloaded archives to change compression
+ --compression [ gzip | bzip2 | lzma | xz ]
+ When the upstream sources are repacked, use compression COMP
+ for the resulting tarball (default: gzip)
+ --copyright-file FILE
+ Remove files matching the patterns found in FILE
+
+Default settings modified by devscripts configuration files:
+$modified_conf_msg
+EOF
+}
+
+sub version {
+ print <<"EOF";
+This is $progname, from the Debian devscripts package, version ###VERSION###
+This code is copyright 1999-2006 by Julian Gilbey, all rights reserved.
+Original code by Christoph Lameter.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later.
+EOF
+}
+
+# What is the default setting of $ENV{'FTP_PASSIVE'}?
+our $passive = 'default';
+
+# Now start by reading configuration files and then command line
+# The next stuff is boilerplate
+
+my $destdir = "..";
+my $download = 1;
+my $download_version;
+my $force_download = 0;
+my $report = 0; # report even on up-to-date packages?
+my $repack = 0; # repack .tar.bz2, .tar.lzma, .tar.xz or .zip to .tar.gz
+my $default_compression = 'gzip' ;
+my $repack_compression = $default_compression;
+my $copyright_file = undef;
+my $symlink = 'symlink';
+my $verbose = 0;
+my $check_dirname_level = 1;
+my $check_dirname_regex = 'PACKAGE(-.+)?';
+my $dehs = 0;
+my %dehs_tags;
+my $dehs_end_output = 0;
+my $dehs_start_output = 0;
+my $pkg_report_header = '';
+my $timeout = 20;
+my $user_agent_string = 'Debian uscan ###VERSION###';
+my $exclusion = 1;
+
+if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) {
+ $modified_conf_msg = " (no configuration files read)";
+ shift;
+} else {
+ my @config_files = ('/etc/devscripts.conf', '~/.devscripts');
+ my %config_vars = (
+ 'USCAN_TIMEOUT' => 20,
+ 'USCAN_DESTDIR' => '..',
+ 'USCAN_DOWNLOAD' => 'yes',
+ 'USCAN_PASV' => 'default',
+ 'USCAN_SYMLINK' => 'symlink',
+ 'USCAN_VERBOSE' => 'no',
+ 'USCAN_DEHS_OUTPUT' => 'no',
+ 'USCAN_USER_AGENT' => '',
+ 'USCAN_REPACK' => 'no',
+ 'USCAN_EXCLUSION' => 'yes',
+ 'DEVSCRIPTS_CHECK_DIRNAME_LEVEL' => 1,
+ 'DEVSCRIPTS_CHECK_DIRNAME_REGEX' => 'PACKAGE(-.+)?',
+ );
+ my %config_default = %config_vars;
+
+ my $shell_cmd;
+ # Set defaults
+ foreach my $var (keys %config_vars) {
+ $shell_cmd .= qq[$var="$config_vars{$var}";\n];
+ }
+ $shell_cmd .= 'for file in ' . join(" ",@config_files) . "; do\n";
+ $shell_cmd .= '[ -f $file ] && . $file; done;' . "\n";
+ # Read back values
+ foreach my $var (keys %config_vars) { $shell_cmd .= "echo \$$var;\n" }
+ my $shell_out = `/bin/bash -c '$shell_cmd'`;
+ @config_vars{keys %config_vars} = split /\n/, $shell_out, -1;
+
+ # Check validity
+ $config_vars{'USCAN_DESTDIR'} =~ /^\s*(\S+)\s*$/
+ or $config_vars{'USCAN_DESTDIR'}='..';
+ $config_vars{'USCAN_DOWNLOAD'} =~ /^(yes|no)$/
+ or $config_vars{'USCAN_DOWNLOAD'}='yes';
+ $config_vars{'USCAN_PASV'} =~ /^(yes|no|default)$/
+ or $config_vars{'USCAN_PASV'}='default';
+ $config_vars{'USCAN_TIMEOUT'} =~ m/^\d+$/
+ or $config_vars{'USCAN_TIMEOUT'}=20;
+ $config_vars{'USCAN_SYMLINK'} =~ /^(yes|no|symlinks?|rename)$/
+ or $config_vars{'USCAN_SYMLINK'}='yes';
+ $config_vars{'USCAN_SYMLINK'}='symlink'
+ if $config_vars{'USCAN_SYMLINK'} eq 'yes' or
+ $config_vars{'USCAN_SYMLINK'} =~ /^symlinks?$/;
+ $config_vars{'USCAN_VERBOSE'} =~ /^(yes|no)$/
+ or $config_vars{'USCAN_VERBOSE'}='no';
+ $config_vars{'USCAN_DEHS_OUTPUT'} =~ /^(yes|no)$/
+ or $config_vars{'USCAN_DEHS_OUTPUT'}='no';
+ $config_vars{'USCAN_REPACK'} =~ /^(yes|no)$/
+ or $config_vars{'USCAN_REPACK'}='no';
+ $config_vars{'USCAN_EXCLUSION'} =~ /^(yes|no)$/
+ or $config_vars{'USCAN_EXCLUSION'}='yes';
+ $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'} =~ /^[012]$/
+ or $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'}=1;
+
+ foreach my $var (sort keys %config_vars) {
+ if ($config_vars{$var} ne $config_default{$var}) {
+ $modified_conf_msg .= " $var=$config_vars{$var}\n";
+ }
+ }
+ $modified_conf_msg ||= " (none)\n";
+ chomp $modified_conf_msg;
+
+ $destdir = $config_vars{'USCAN_DESTDIR'}
+ if defined $config_vars{'USCAN_DESTDIR'};
+ $download = $config_vars{'USCAN_DOWNLOAD'} eq 'no' ? 0 : 1;
+ $passive = $config_vars{'USCAN_PASV'} eq 'yes' ? 1 :
+ $config_vars{'USCAN_PASV'} eq 'no' ? 0 : 'default';
+ $timeout = $config_vars{'USCAN_TIMEOUT'};
+ $symlink = $config_vars{'USCAN_SYMLINK'};
+ $verbose = $config_vars{'USCAN_VERBOSE'} eq 'yes' ? 1 : 0;
+ $dehs = $config_vars{'USCAN_DEHS_OUTPUT'} eq 'yes' ? 1 : 0;
+ $check_dirname_level = $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_LEVEL'};
+ $check_dirname_regex = $config_vars{'DEVSCRIPTS_CHECK_DIRNAME_REGEX'};
+ $user_agent_string = $config_vars{'USCAN_USER_AGENT'}
+ if $config_vars{'USCAN_USER_AGENT'};
+ $repack = $config_vars{'USCAN_REPACK'} eq 'yes' ? 1 : 0;
+ $exclusion = $config_vars{'USCAN_EXCLUSION'} eq 'yes' ? 1 : 0;
+}
+
+# Now read the command line arguments
+my $debug = 0;
+my ($opt_h, $opt_v, $opt_destdir, $opt_download, $opt_force_download,
+ $opt_report, $opt_passive, $opt_symlink, $opt_repack,
+ $opt_repack_compression, $opt_exclusion, $opt_copyright_file);
+my ($opt_verbose, $opt_level, $opt_regex, $opt_noconf);
+my ($opt_package, $opt_uversion, $opt_watchfile, $opt_dehs, $opt_timeout);
+my $opt_download_version;
+my $opt_user_agent;
+my $opt_download_current_version;
+
+GetOptions("help" => \$opt_h,
+ "version" => \$opt_v,
+ "destdir=s" => \$opt_destdir,
+ "download!" => \$opt_download,
+ "download-version=s" => \$opt_download_version,
+ "force-download" => \$opt_force_download,
+ "report" => sub { $opt_download = 0; },
+ "report-status" => sub { $opt_download = 0; $opt_report = 1; },
+ "passive|pasv!" => \$opt_passive,
+ "timeout=i" => \$opt_timeout,
+ "symlink!" => sub { $opt_symlink = $_[1] ? 'symlink' : 'no'; },
+ "rename" => sub { $opt_symlink = 'rename'; },
+ "repack" => sub { $opt_repack = 1; },
+ "compression=s" => \$opt_repack_compression,
+ "package=s" => \$opt_package,
+ "upstream-version=s" => \$opt_uversion,
+ "watchfile=s" => \$opt_watchfile,
+ "dehs!" => \$opt_dehs,
+ "verbose!" => \$opt_verbose,
+ "debug" => \$debug,
+ "check-dirname-level=s" => \$opt_level,
+ "check-dirname-regex=s" => \$opt_regex,
+ "user-agent=s" => \$opt_user_agent,
+ "useragent=s" => \$opt_user_agent,
+ "noconf" => \$opt_noconf,
+ "no-conf" => \$opt_noconf,
+ "exclusion!" => \$opt_exclusion,
+ "copyright-file=s" => \$opt_copyright_file,
+ "download-current-version" => \$opt_download_current_version,
+ )
+ or die "Usage: $progname [options] [directories]\nRun $progname --help for more details\n";
+
+if ($opt_noconf) {
+ die "$progname: --no-conf is only acceptable as the first command-line option!\n";
+}
+if ($opt_h) { usage(); exit 0; }
+if ($opt_v) { version(); exit 0; }
+
+# Now we can set the other variables according to the command line options
+
+$destdir = $opt_destdir if defined $opt_destdir;
+$download = $opt_download if defined $opt_download;
+$force_download = $opt_force_download if defined $opt_force_download;
+$report = $opt_report if defined $opt_report;
+$repack = $opt_repack if defined $opt_repack;
+$passive = $opt_passive if defined $opt_passive;
+$timeout = $opt_timeout if defined $opt_timeout;
+$timeout = 20 unless defined $timeout and $timeout > 0;
+$symlink = $opt_symlink if defined $opt_symlink;
+$verbose = $opt_verbose if defined $opt_verbose;
+if (defined $opt_repack_compression) {
+ # be liberal in what you accept...
+ my %opt2comp = (
+ gz => 'gzip',
+ gzip => 'gzip',
+ bz2 => 'bzip2',
+ bzip2 => 'bzip2',
+ lzma => 'lzma',
+ xz => 'xz',
+ );
+
+ # Normalize compression methods to the names used by Dpkg::Compression
+ if (exists $opt2comp{$opt_repack_compression}) {
+ $repack_compression = $opt2comp{$opt_repack_compression};
+ } else {
+ uscan_die "$progname: invalid compression $opt_repack_compression given.\n";
+ }
+}
+$dehs = $opt_dehs if defined $opt_dehs;
+$exclusion = $opt_exclusion if defined $opt_exclusion;
+$copyright_file = $opt_copyright_file if defined $opt_copyright_file;
+$user_agent_string = $opt_user_agent if defined $opt_user_agent;
+$download_version = $opt_download_version if defined $opt_download_version;
+
+if (defined $opt_level) {
+ if ($opt_level =~ /^[012]$/) { $check_dirname_level = $opt_level; }
+ else {
+ uscan_die "$progname: unrecognised --check-dirname-level value (allowed are 0,1,2)\n";
+ }
+}
+
+$check_dirname_regex = $opt_regex if defined $opt_regex;
+
+if (defined $opt_package) {
+ uscan_die "$progname: --package requires the use of --watchfile\nas well; run $progname --help for more details\n"
+ unless defined $opt_watchfile;
+ $download = -$download unless defined $opt_download;
+}
+
+uscan_die "$progname: Can't use --verbose if you're using --dehs!\n"
+ if $verbose and $dehs;
+
+uscan_die "$progname: Can't use --report-status if you're using --verbose!\n"
+ if $verbose and $report;
+
+uscan_die "$progname: Can't use --report-status if you're using --download!\n"
+ if $download and $report;
+
+uscan_warn "$progname: You're going to get strange (non-XML) output using --debug and --dehs together!\n"
+ if $debug and $dehs;
+
+# We'd better be verbose if we're debugging
+$verbose |= $debug;
+
+# Net::FTP understands this
+if ($passive ne 'default') {
+ $ENV{'FTP_PASSIVE'} = $passive;
+}
+elsif (exists $ENV{'FTP_PASSIVE'}) {
+ $passive = $ENV{'FTP_PASSIVE'};
+}
+else { $passive = undef; }
+# Now we can say
+# if (defined $passive) { $ENV{'FTP_PASSIVE'}=$passive; }
+# else { delete $ENV{'FTP_PASSIVE'}; }
+# to restore $ENV{'FTP_PASSIVE'} to what it was at this point
+
+# dummy subclass used to store all the redirections for later use
+package LWP::UserAgent::UscanCatchRedirections;
+
+use base 'LWP::UserAgent';
+
+my @uscan_redirections;
+
+sub redirect_ok {
+ my $self = shift;
+ my ($request) = @_;
+ if ($self->SUPER::redirect_ok(@_)) {
+ push @uscan_redirections, $request->uri;
+ return 1;
+ }
+ return 0;
+}
+
+sub get_redirections {
+ return \@uscan_redirections;
+}
+
+package main;
+
+my $user_agent = LWP::UserAgent::UscanCatchRedirections->new(env_proxy => 1);
+$user_agent->timeout($timeout);
+$user_agent->agent($user_agent_string);
+# Strip Referer header for the sf.net redirector to avoid SF sending back a
+# 200 OK with a <meta refresh=...> redirect
+$user_agent->add_handler(
+ 'request_prepare' => sub {
+ my ($request, $ua, $h) = @_;
+ $request->remove_header('Referer');
+ },
+ m_hostname => 'qa.debian.org',
+ m_path_prefix => '/watch/sf.php',
+);
+
+if (defined $opt_watchfile) {
+ uscan_die "Can't have directory arguments if using --watchfile" if @ARGV;
+
+ # no directory traversing then, and things are very simple
+ if (defined $opt_package) {
+ # no need to even look for a changelog!
+ process_watchfile(undef, $opt_package, $opt_uversion, $opt_watchfile);
+ } else {
+ # Check for debian/changelog file
+ until (-r 'debian/changelog') {
+ chdir '..' or uscan_die "$progname: can't chdir ..: $!\n";
+ if (cwd() eq '/') {
+ uscan_die "$progname: cannot find readable debian/changelog anywhere!\nAre you in the source code tree?\n";
+ }
+ }
+
+ # Figure out package info we need
+ my $changelog = `dpkg-parsechangelog`;
+ unless ($? == 0) {
+ uscan_die "$progname: Problems running dpkg-parsechangelog\n";
+ }
+
+ my ($package, $debversion, $uversion);
+ $changelog =~ /^Source: (.*?)$/m and $package=$1;
+ $changelog =~ /^Version: (.*?)$/m and $debversion=$1;
+ if (! defined $package || ! defined $debversion) {
+ uscan_die "$progname: Problems determining package name and/or version from\n debian/changelog\n";
+ }
+
+ # Check the directory is properly named for safety
+ my $good_dirname = 1;
+ if ($check_dirname_level == 2 or
+ ($check_dirname_level == 1 and cwd() ne $opwd)) {
+ my $re = $check_dirname_regex;
+ $re =~ s/PACKAGE/\Q$package\E/g;
+ if ($re =~ m%/%) {
+ $good_dirname = (cwd() =~ m%^$re$%);
+ } else {
+ $good_dirname = (basename(cwd()) =~ m%^$re$%);
+ }
+ }
+ if (! $good_dirname) {
+ uscan_die "$progname: not processing watchfile because this directory does not match the package name\n" .
+ " or the settings of the--check-dirname-level and --check-dirname-regex options if any.\n";
+ }
+
+ # Get current upstream version number
+ if (defined $opt_uversion) {
+ $uversion = $opt_uversion;
+ } else {
+ $uversion = $debversion;
+ $uversion =~ s/-[^-]+$//; # revision
+ $uversion =~ s/^\d+://; # epoch
+ }
+
+ process_watchfile(cwd(), $package, $uversion, $opt_watchfile);
+ }
+
+ # Are there any warnings to give if we're using dehs?
+ $dehs_end_output=1;
+ dehs_output if $dehs;
+ exit ($found ? 0 : 1);
+}
+
+# Otherwise we're scanning for watchfiles
+push @ARGV, '.' if ! @ARGV;
+print "-- Scanning for watchfiles in @ARGV\n" if $verbose;
+
+# Run find to find the directories. We will handle filenames with spaces
+# correctly, which makes this code a little messier than it would be
+# otherwise.
+my @dirs;
+open FIND, '-|', 'find', @ARGV, qw(-follow -type d -name debian -print)
+ or uscan_die "$progname: couldn't exec find: $!\n";
+
+while (<FIND>) {
+ chomp;
+ push @dirs, $_;
+}
+close FIND;
+
+uscan_die "$progname: No debian directories found\n" unless @dirs;
+
+my @debdirs = ();
+
+my $origdir = cwd;
+for my $dir (@dirs) {
+ unless (chdir $origdir) {
+ uscan_warn "$progname warning: Couldn't chdir back to $origdir, skipping: $!\n";
+ next;
+ }
+ $dir =~ s%/debian$%%;
+ unless (chdir $dir) {
+ uscan_warn "$progname warning: Couldn't chdir $dir, skipping: $!\n";
+ next;
+ }
+
+ # Check for debian/watch file
+ if (-r 'debian/watch' and -r 'debian/changelog') {
+ # Figure out package info we need
+ my $changelog = `dpkg-parsechangelog`;
+ unless ($? == 0) {
+ uscan_warn "$progname warning: Problems running dpkg-parsechangelog in $dir, skipping\n";
+ next;
+ }
+
+ my ($package, $debversion, $uversion);
+ $changelog =~ /^Source: (.*?)$/m and $package=$1;
+ $changelog =~ /^Version: (.*?)$/m and $debversion=$1;
+ if (! defined $package || ! defined $debversion) {
+ uscan_warn "$progname warning: Problems determining package name and/or version from\n $dir/debian/changelog, skipping\n";
+ next;
+ }
+
+ # Check the directory is properly named for safety
+ my $good_dirname = 1;
+ if ($check_dirname_level == 2 or
+ ($check_dirname_level == 1 and cwd() ne $opwd)) {
+ my $re = $check_dirname_regex;
+ $re =~ s/PACKAGE/\Q$package\E/g;
+ if ($re =~ m%/%) {
+ $good_dirname = (cwd() =~ m%^$re$%);
+ } else {
+ $good_dirname = (basename(cwd()) =~ m%^$re$%);
+ }
+ }
+ if ($good_dirname) {
+ print "-- Found watchfile in $dir/debian\n" if $verbose;
+ } else {
+ print "-- Skip watchfile in $dir/debian since it does not match the package name\n" .
+ " (or the settings of the --check-dirname-level and --check-dirname-regex options if any).\n"
+ if $verbose;
+ next;
+ }
+
+ # Get upstream version number
+ $uversion = $debversion;
+ $uversion =~ s/-[^-]+$//; # revision
+ $uversion =~ s/^\d+://; # epoch
+
+ push @debdirs, [$debversion, $dir, $package, $uversion];
+ }
+ elsif (-r 'debian/watch') {
+ uscan_warn "$progname warning: Found watchfile in $dir,\n but couldn't find/read changelog; skipping\n";
+ next;
+ }
+ elsif (-f 'debian/watch') {
+ uscan_warn "$progname warning: Found watchfile in $dir,\n but it is not readable; skipping\n";
+ next;
+ }
+}
+
+uscan_warn "$progname: no watch file found\n" if (@debdirs == 0 and $report);
+
+# Was there a --uversion option?
+if (defined $opt_uversion) {
+ if (@debdirs == 1) {
+ $debdirs[0][3] = $opt_uversion;
+ } else {
+ uscan_warn "$progname warning: ignoring --uversion as more than one debian/watch file found\n";
+ }
+}
+
+# Now sort the list of directories, so that we process the most recent
+# directories first, as determined by the package version numbers
+@debdirs = Devscripts::Versort::deb_versort(@debdirs);
+
+# Now process the watchfiles in order. If a directory d has subdirectories
+# d/sd1/debian and d/sd2/debian, which each contain watchfiles corresponding
+# to the same package, then we only process the watchfile in the package with
+# the latest version number.
+my %donepkgs;
+for my $debdir (@debdirs) {
+ shift @$debdir; # don't need the Debian version number any longer
+ my $dir = $$debdir[0];
+ my $parentdir = dirname($dir);
+ my $package = $$debdir[1];
+ my $version = $$debdir[2];
+
+ if (exists $donepkgs{$parentdir}{$package}) {
+ uscan_warn "$progname warning: Skipping $dir/debian/watch\n as this package has already been scanned successfully\n";
+ next;
+ }
+
+ unless (chdir $origdir) {
+ uscan_warn "$progname warning: Couldn't chdir back to $origdir, skipping: $!\n";
+ next;
+ }
+ unless (chdir $dir) {
+ uscan_warn "$progname warning: Couldn't chdir $dir, skipping: $!\n";
+ next;
+ }
+
+ if (process_watchfile($dir, $package, $version, "debian/watch")
+ == 0) {
+ $donepkgs{$parentdir}{$package} = 1;
+ }
+ # Are there any warnings to give if we're using dehs?
+ dehs_output if $dehs;
+}
+
+print "-- Scan finished\n" if $verbose;
+
+$dehs_end_output=1;
+dehs_output if $dehs;
+exit ($found ? 0 : 1);
+
+
+# This is the heart of the code: Process a single watch item
+#
+# watch_version=1: Lines have up to 5 parameters which are:
+#
+# $1 = Remote site
+# $2 = Directory on site
+# $3 = Pattern to match, with (...) around version number part
+# $4 = Last version we have (or 'debian' for the current Debian version)
+# $5 = Actions to take on successful retrieval
+#
+# watch_version=2:
+#
+# For ftp sites:
+# ftp://site.name/dir/path/pattern-(.+)\.tar\.gz [version [action]]
+#
+# For http sites:
+# http://site.name/dir/path/pattern-(.+)\.tar\.gz [version [action]]
+# or
+# http://site.name/dir/path/base pattern-(.+)\.tar\.gz [version [action]]
+#
+# Lines can be prefixed with opts=<opts>.
+#
+# Then the patterns matched will be checked to find the one with the
+# greatest version number (as determined by the (...) group), using the
+# Debian version number comparison algorithm described below.
+#
+# watch_version=3:
+#
+# Correct handling of regex special characters in the path part:
+# ftp://ftp.worldforge.org/pub/worldforge/libs/Atlas-C++/transitional/Atlas-C\+\+-(.+)\.tar\.gz
+#
+# Directory pattern matching:
+# ftp://ftp.nessus.org/pub/nessus/nessus-([\d\.]+)/src/nessus-core-([\d\.]+)\.tar\.gz
+#
+# The pattern in each part may contain several (...) groups and
+# the version number is determined by joining all groups together
+# using "." as separator. For example:
+# ftp://site/dir/path/pattern-(\d+)_(\d+)_(\d+)\.tar\.gz
+#
+# This is another way of handling site with funny version numbers,
+# this time using mangling. (Note that multiple groups will be
+# concatenated before mangling is performed, and that mangling will
+# only be performed on the basename version number, not any path version
+# numbers.)
+# opts=uversionmangle=s/^/0.0./ \
+# ftp://ftp.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-(.+)\.tar\.gz
+#
+# Similarly, the upstream part of the Debian version number can be
+# mangled:
+# opts=dversionmangle=s/\.dfsg\.\d+$// \
+# http://some.site.org/some/path/foobar-(.+)\.tar\.gz
+#
+# The versionmangle=... option is a shorthand for saying uversionmangle=...
+# and dversionmangle=... and applies to both upstream and Debian versions.
+#
+# The option filenamemangle can be used to mangle the name under which
+# the downloaded file will be saved:
+# href="http://foo.bar.org/download/?path=&download=foo-0.1.1.tar.gz"
+# could be handled as:
+# opts=filenamemangle=s/.*=(.*)/$1/ \
+# http://foo.bar.org/download/\?path=&download=foo-(.+)\.tar\.gz
+# and
+# href="http://foo.bar.org/download/?path=&download_version=0.1.1"
+# as:
+# opts=filenamemangle=s/.*=(.*)/foo-$1\.tar\.gz/ \
+# http://foo.bar.org/download/\?path=&download_version=(.+)
+#
+# The option downloadurlmangle can be used to mangle the URL of the file
+# to download. This can only be used with http:// URLs. This may be
+# necessary if the link given on the webpage needs to be transformed in
+# some way into one which will work automatically, for example:
+# opts=downloadurlmangle=s/prdownload/download/ \
+# http://developer.berlios.de/project/showfiles.php?group_id=2051 \
+# http://prdownload.berlios.de/softdevice/vdr-softdevice-(.+).tgz
+
+
+sub process_watchline ($$$$$$)
+{
+ my ($line, $watch_version, $pkg_dir, $pkg, $pkg_version, $watchfile) = @_;
+
+ my $origline = $line;
+ my ($base, $site, $dir, $filepattern, $pattern, $lastversion, $action);
+ my $basedir;
+ my (@patterns, @sites, @redirections, @basedirs);
+ my %options = ();
+
+ my ($request, $response);
+ my ($newfile, $newversion);
+ my $style='new';
+ my $urlbase;
+ my $headers = HTTP::Headers->new;
+ my ($keyring, $gpghome);
+
+ # Comma-separated list of features that sites being queried might
+ # want to be aware of
+ $headers->header('X-uscan-features' => 'enhanced-matching');
+ $headers->header('Accept' => '*/*');
+ %dehs_tags = ('package' => $pkg);
+
+ if ($watch_version == 1) {
+ ($site, $dir, $filepattern, $lastversion, $action) = split ' ', $line, 5;
+
+ if (! defined $lastversion or $site =~ /\(.*\)/ or $dir =~ /\(.*\)/) {
+ uscan_warn "$progname warning: there appears to be a version 2 format line in\n the version 1 watchfile $watchfile;\n Have you forgotten a 'version=2' line at the start, perhaps?\n Skipping the line: $line\n";
+ return 1;
+ }
+ if ($site !~ m%\w+://%) {
+ $site = "ftp://$site";
+ if ($filepattern !~ /\(.*\)/) {
+ # watch_version=1 and old style watchfile;
+ # pattern uses ? and * shell wildcards; everything from the
+ # first to last of these metachars is the pattern to match on
+ $filepattern =~ s/(\?|\*)/($1/;
+ $filepattern =~ s/(\?|\*)([^\?\*]*)$/$1)$2/;
+ $filepattern =~ s/\./\\./g;
+ $filepattern =~ s/\?/./g;
+ $filepattern =~ s/\*/.*/g;
+ $style='old';
+ uscan_warn "$progname warning: Using very old style of filename pattern in $watchfile\n (this might lead to incorrect results): $3\n";
+ }
+ }
+
+ # Merge site and dir
+ $base = "$site/$dir/";
+ $base =~ s%(?<!:)//%/%g;
+ $base =~ m%^(\w+://[^/]+)%;
+ $site = $1;
+ $pattern = $filepattern;
+ } else {
+ # version 2/3 watchfile
+ if ($line =~ s/^opt(?:ion)?s=//) {
+ my $opts;
+ if ($line =~ s/^"(.*?)"\s+//) {
+ $opts=$1;
+ } elsif ($line =~ s/^(\S+)\s+//) {
+ $opts=$1;
+ } else {
+ uscan_warn "$progname warning: malformed opts=... in watchfile, skipping line:\n$origline\n";
+ return 1;
+ }
+
+ my @opts = split /,/, $opts;
+ foreach my $opt (@opts) {
+ if ($opt eq 'pasv' or $opt eq 'passive') {
+ $options{'pasv'}=1;
+ }
+ elsif ($opt eq 'active' or $opt eq 'nopasv'
+ or $opt eq 'nopassive') {
+ $options{'pasv'}=0;
+ }
+ elsif ($opt =~ /^repacksuffix\s*=\s*(.+)/) {
+ $options{'repacksuffix'} = $1;
+ }
+ elsif ($opt =~ /^uversionmangle\s*=\s*(.+)/) {
+ @{$options{'uversionmangle'}} = split /;/, $1;
+ }
+ elsif ($opt =~ /^dversionmangle\s*=\s*(.+)/) {
+ @{$options{'dversionmangle'}} = split /;/, $1;
+ }
+ elsif ($opt =~ /^versionmangle\s*=\s*(.+)/) {
+ @{$options{'uversionmangle'}} = split /;/, $1;
+ @{$options{'dversionmangle'}} = split /;/, $1;
+ }
+ elsif ($opt =~ /^filenamemangle\s*=\s*(.+)/) {
+ @{$options{'filenamemangle'}} = split /;/, $1;
+ }
+ elsif ($opt =~ /^downloadurlmangle\s*=\s*(.+)/) {
+ @{$options{'downloadurlmangle'}} = split /;/, $1;
+ }
+ elsif ($opt =~ /^pgpsigurlmangle\s*=\s*(.+)/) {
+ @{$options{'pgpsigurlmangle'}} = split /;/, $1;
+ }
+ else {
+ uscan_warn "$progname warning: unrecognised option $opt\n";
+ }
+ }
+ }
+
+ ($base, $filepattern, $lastversion, $action) = split ' ', $line, 4;
+
+ if ($base =~ s%/([^/]*\([^/]*\)[^/]*)$%/%) {
+ # Last component of $base has a pair of parentheses, so no
+ # separate filepattern field; we remove the filepattern from the
+ # end of $base and rescan the rest of the line
+ $filepattern = $1;
+ (undef, $lastversion, $action) = split ' ', $line, 3;
+ }
+
+ if ((!$lastversion or $lastversion eq 'debian') and not defined $pkg_version) {
+ uscan_warn "$progname warning: Unable to determine current version\n in $watchfile, skipping:\n $line\n";
+ return 1;
+ }
+
+ # Check all's OK
+ if (not $filepattern or $filepattern !~ /\(.*\)/) {
+ uscan_warn "$progname warning: Filename pattern missing version delimiters ()\n in $watchfile, skipping:\n $line\n";
+ return 1;
+ }
+
+ # Check validity of options
+ if ($base =~ /^ftp:/ and exists $options{'downloadurlmangle'}) {
+ uscan_warn "$progname warning: downloadurlmangle option invalid for ftp sites,\n ignoring in $watchfile:\n $line\n";
+ }
+
+ # Check validity of options
+ if (exists $options{'pgpsigurlmangle'}) {
+ if (! $havegpgv) {
+ uscan_warn "$progname warning: pgpsigurlmangle option exists, but you must have gpgv installed to verify\n in $watchfile, skipping:\n $line\n";
+ return 1;
+ }
+ $keyring = first { -r $_ } qw(debian/upstream/signing-key.pgp debian/upstream/signing-key.asc debian/upstream-signing-key.pgp);
+ if (!defined $keyring) {
+ uscan_warn "$progname warning: pgpsigurlmangle option exists, but the upstream keyring does not exist\n in $watchfile, skipping:\n $line\n";
+ return 1;
+ }
+ if ($keyring =~ m/\.asc$/) {
+ if (!$havegpg) {
+ uscan_warn "$progname warning: $keyring is armored but gpg/gpg2 is not available to dearmor it\n in $watchfile, skipping:\n $line\n";
+ return 1;
+ }
+ # Need to convert an armored key to binary for use by gpgv
+ $gpghome = tempdir(CLEANUP => 1);
+ spawn(exec => [$havegpg, '--homedir', $gpghome, '--no-options', '-q', '--batch', '--no-default-keyring', '--import', $keyring],
+ wait_child => 1);
+ $keyring = "$gpghome/pubring.gpg";
+ }
+ }
+
+ # Handle sf.net addresses specially
+ if ($base =~ m%^http://sf\.net/%) {
+ $base =~ s%^http://sf\.net/%https://qa.debian.org/watch/sf.php/%;
+ $filepattern .= '(?:\?.*)?';
+ }
+ if ($base =~ m%^(\w+://[^/]+)%) {
+ $site = $1;
+ } else {
+ uscan_warn "$progname warning: Can't determine protocol and site in\n $watchfile, skipping:\n $line\n";
+ return 1;
+ }
+
+ # Find the path with the greatest version number matching the regex
+ $base = recursive_regex_dir($base, \%options, $watchfile);
+ if ($base eq '') { return 1; }
+
+ # We're going to make the pattern
+ # (?:(?:http://site.name)?/dir/path/)?base_pattern
+ # It's fine even for ftp sites
+ $basedir = $base;
+ $basedir =~ s%^\w+://[^/]+/%/%;
+ $pattern = "(?:(?:$site)?" . quotemeta($basedir) . ")?$filepattern";
+ }
+
+ if (! $lastversion or $lastversion eq 'debian') {
+ if (defined $pkg_version) {
+ $lastversion=$pkg_version;
+ } else {
+ uscan_warn "$progname warning: Unable to determine current version\n in $watchfile, skipping:\n $line\n";
+ return 1;
+ }
+ }
+ # And mangle it if requested
+ my $mangled_lastversion;
+ $mangled_lastversion = $lastversion;
+ foreach my $pat (@{$options{'dversionmangle'}}) {
+ if (! safe_replace(\$mangled_lastversion, $pat)) {
+ uscan_warn "$progname: In $watchfile, potentially"
+ . " unsafe or malformed dversionmangle"
+ . " pattern:\n '$pat'"
+ . " found. Skipping watchline\n"
+ . " $line\n";
+ return 1;
+ }
+ }
+ if($opt_download_current_version) {
+ $download_version = $mangled_lastversion;
+ $force_download = 1;
+ }
+
+ # Check all's OK
+ if ($pattern !~ /\(.*\)/) {
+ uscan_warn "$progname warning: Filename pattern missing version delimiters ()\n in $watchfile, skipping:\n $line\n";
+ return 1;
+ }
+
+ push @patterns, $pattern;
+ push @sites, $site;
+ push @basedirs, $basedir;
+
+ # What is the most recent file, based on the filenames?
+ # We first have to find the candidates, then we sort them using
+ # Devscripts::Versort::upstream_versort
+ if ($site =~ m%^http(s)?://%) {
+ if (defined($1) and !$haveSSL) {
+ uscan_die "$progname: you must have the liblwp-protocol-https-perl package installed\nto use https URLs\n";
+ }
+ print STDERR "$progname debug: requesting URL $base\n" if $debug;
+ $request = HTTP::Request->new('GET', $base, $headers);
+ $response = $user_agent->request($request);
+ if (! $response->is_success) {
+ uscan_warn "$progname warning: In watchfile $watchfile, reading webpage\n $base failed: " . $response->status_line . "\n";
+ return 1;
+ }
+
+ @redirections = @{$user_agent->get_redirections};
+
+ print STDERR "$progname debug: redirections: @redirections\n"
+ if $debug;
+
+ foreach my $_redir (@redirections) {
+ my $base_dir = $_redir;
+
+ $base_dir =~ s%^\w+://[^/]+/%/%;
+ if ($_redir =~ m%^(\w+://[^/]+)%) {
+ my $base_site = $1;
+
+ push @patterns, "(?:(?:$base_site)?" . quotemeta($base_dir) . ")?$filepattern";
+ push @sites, $base_site;
+ push @basedirs, $base_dir;
+
+ # remove the filename, if any
+ my $base_dir_orig = $base_dir;
+ $base_dir =~ s%/[^/]*$%/%;
+ if ($base_dir ne $base_dir_orig) {
+ push @patterns, "(?:(?:$base_site)?" . quotemeta($base_dir) . ")?$filepattern";
+ push @sites, $base_site;
+ push @basedirs, $base_dir;
+ }
+ }
+ }
+
+ my $content = $response->content;
+ print STDERR "$progname debug: received content:\n$content\[End of received content]\n"
+ if $debug;
+
+ if ($content =~ m%^<[?]xml%i &&
+ $content =~ m%xmlns="http://s3.amazonaws.com/doc/2006-03-01/"%) {
+ # this is an S3 bucket listing. Insert an 'a href' tag
+ # into the content for each 'Key', so that it looks like html (LP: #798293)
+ print STDERR "$progname debug: fixing s3 listing\n" if $debug;
+ $content =~ s%<Key>([^<]*)</Key>%<Key><a href="$1">$1</a></Key>%g
+ }
+
+ # We need this horrid stuff to handle href=foo type
+ # links. OK, bad HTML, but we have to handle it nonetheless.
+ # It's bug #89749.
+ $content =~ s/href\s*=\s*(?=[^\"\'])([^\s>]+)/href="$1"/ig;
+ # Strip comments
+ $content =~ s/<!-- .*?-->//sg;
+ # Is there a base URL given?
+ if ($content =~ /<\s*base\s+[^>]*href\s*=\s*([\"\'])(.*?)\1/i) {
+ # Ensure it ends with /
+ $urlbase = "$2/";
+ $urlbase =~ s%//$%/%;
+ } else {
+ # May have to strip a base filename
+ ($urlbase = $base) =~ s%/[^/]*$%/%;
+ }
+
+ print STDERR "$progname debug: matching pattern(s) @patterns\n" if $debug;
+ my @hrefs;
+ while ($content =~ m/<\s*a\s+[^>]*href\s*=\s*([\"\'])(.*?)\1/sgi) {
+ my $href = $2;
+ $href =~ s/\n//g;
+ foreach my $_pattern (@patterns) {
+ if ($href =~ m&^$_pattern$&) {
+ if ($watch_version == 2) {
+ # watch_version 2 only recognised one group; the code
+ # below will break version 2 watchfiles with a construction
+ # such as file-([\d\.]+(-\d+)?) (bug #327258)
+ push @hrefs, [$1, $href];
+ } else {
+ # need the map { ... } here to handle cases of (...)?
+ # which may match but then return undef values
+ my $mangled_version =
+ join(".", map { $_ if defined($_) }
+ $href =~ m&^$_pattern$&);
+ foreach my $pat (@{$options{'uversionmangle'}}) {
+ if (! safe_replace(\$mangled_version, $pat)) {
+ uscan_warn "$progname: In $watchfile, potentially"
+ . " unsafe or malformed uversionmangle"
+ . " pattern:\n '$pat'"
+ . " found. Skipping watchline\n"
+ . " $line\n";
+ return 1;
+ }
+ }
+ push @hrefs, [$mangled_version, $href];
+ }
+ }
+ }
+ }
+ if (@hrefs) {
+ if ($verbose) {
+ print "-- Found the following matching hrefs:\n";
+ foreach my $href (@hrefs) { print " $$href[1] ($$href[0])\n"; }
+ }
+ if (defined $download_version) {
+ my @vhrefs = grep { $$_[0] eq $download_version } @hrefs;
+ if (@vhrefs) {
+ ($newversion, $newfile) = @{$vhrefs[0]};
+ } else {
+ uscan_warn "$progname warning: In $watchfile no matching hrefs for version $download_version"
+ . " in watch line\n $line\n";
+ return 1;
+ }
+ } else {
+ @hrefs = Devscripts::Versort::upstream_versort(@hrefs);
+ ($newversion, $newfile) = @{$hrefs[0]};
+ }
+ } else {
+ uscan_warn "$progname warning: In $watchfile,\n no matching hrefs for watch line\n $line\n";
+ return 1;
+ }
+ }
+ else {
+ # Better be an FTP site
+ if ($site !~ m%^ftp://%) {
+ uscan_warn "$progname warning: Unknown protocol in $watchfile, skipping:\n $site\n";
+ return 1;
+ }
+
+ if (exists $options{'pasv'}) {
+ $ENV{'FTP_PASSIVE'}=$options{'pasv'};
+ }
+ print STDERR "$progname debug: requesting URL $base\n" if $debug;
+ $request = HTTP::Request->new('GET', $base);
+ $response = $user_agent->request($request);
+ if (exists $options{'pasv'}) {
+ if (defined $passive) { $ENV{'FTP_PASSIVE'}=$passive; }
+ else { delete $ENV{'FTP_PASSIVE'}; }
+ }
+ if (! $response->is_success) {
+ uscan_warn "$progname warning: In watchfile $watchfile, reading FTP directory\n $base failed: " . $response->status_line . "\n";
+ return 1;
+ }
+
+ my $content = $response->content;
+ print STDERR "$progname debug: received content:\n$content\[End of received content]\n"
+ if $debug;
+
+ # FTP directory listings either look like:
+ # info info ... info filename [ -> linkname]
+ # or they're HTMLised (if they've been through an HTTP proxy)
+ # so we may have to look for <a href="filename"> type patterns
+ print STDERR "$progname debug: matching pattern $pattern\n" if $debug;
+ my (@files);
+
+ # We separate out HTMLised listings from standard listings, so
+ # that we can target our search correctly
+ if ($content =~ /<\s*a\s+[^>]*href/i) {
+ while ($content =~
+ m/(?:<\s*a\s+[^>]*href\s*=\s*\")((?-i)$pattern)\"/gi) {
+ my $file = $1;
+ my $mangled_version = join(".", $file =~ m/^$pattern$/);
+ foreach my $pat (@{$options{'uversionmangle'}}) {
+ if (! safe_replace(\$mangled_version, $pat)) {
+ uscan_warn "$progname: In $watchfile, potentially"
+ . " unsafe or malformed uversionmangle"
+ . " pattern:\n '$pat'"
+ . " found. Skipping watchline\n"
+ . " $line\n";
+ return 1;
+ }
+ }
+ push @files, [$mangled_version, $file];
+ }
+ } else {
+ # they all look like:
+ # info info ... info filename [ -> linkname]
+ for my $ln (split(/\n/, $content)) {
+ if ($ln =~ m/\s($filepattern)(\s+->\s+\S+)?$/) {
+ my $file = $1;
+ my $mangled_version = join(".", $file =~ m/^$filepattern$/);
+ foreach my $pat (@{$options{'uversionmangle'}}) {
+ if (! safe_replace(\$mangled_version, $pat)) {
+ uscan_warn "$progname: In $watchfile, potentially"
+ . " unsafe or malformed uversionmangle"
+ . " pattern:\n '$pat'"
+ . " found. Skipping watchline\n"
+ . " $line\n";
+ return 1;
+ }
+ }
+ push @files, [$mangled_version, $file];
+ }
+ }
+ }
+
+ if (@files) {
+ if ($verbose) {
+ print "-- Found the following matching files:\n";
+ foreach my $file (@files) { print " $$file[1] ($$file[0])\n"; }
+ }
+ if (defined $download_version) {
+ my @vfiles = grep { $$_[0] eq $download_version } @files;
+ if (@vfiles) {
+ ($newversion, $newfile) = @{$vfiles[0]};
+ } else {
+ uscan_warn "$progname warning: In $watchfile no matching files for version $download_version"
+ . " in watch line\n $line\n";
+ return 1;
+ }
+ } else {
+ @files = Devscripts::Versort::upstream_versort(@files);
+ ($newversion, $newfile) = @{$files[0]};
+ }
+ } else {
+ uscan_warn "$progname warning: In $watchfile no matching files for watch line\n $line\n";
+ return 1;
+ }
+ }
+
+ # The original version of the code didn't use (...) in the watch
+ # file to delimit the version number; thus if there is no (...)
+ # in the pattern, we will use the old heuristics, otherwise we
+ # use the new.
+
+ if ($style eq 'old') {
+ # Old-style heuristics
+ if ($newversion =~ /^\D*(\d+\.(?:\d+\.)*\d+)\D*$/) {
+ $newversion = $1;
+ } else {
+ uscan_warn <<"EOF";
+$progname warning: In $watchfile, couldn\'t determine a
+ pure numeric version number from the file name for watch line
+ $line
+ and file name $newfile
+ Please use a new style watchfile instead!
+EOF
+ return 1;
+ }
+ }
+
+ my $newfile_base=basename($newfile);
+ if (exists $options{'filenamemangle'}) {
+ $newfile_base=$newfile;
+ }
+ foreach my $pat (@{$options{'filenamemangle'}}) {
+ if (! safe_replace(\$newfile_base, $pat)) {
+ uscan_warn "$progname: In $watchfile, potentially"
+ . " unsafe or malformed filenamemangle"
+ . " pattern:\n '$pat'"
+ . " found. Skipping watchline\n"
+ . " $line\n";
+ return 1;
+ }
+ }
+ # Remove HTTP header trash
+ if ($site =~ m%^https?://%) {
+ $newfile_base =~ s/\?.*$//;
+ # just in case this leaves us with nothing
+ if ($newfile_base eq '') {
+ $newfile_base = "$pkg-$newversion.download";
+ }
+ }
+
+ # So what have we got to report now?
+ my $upstream_url;
+ my $pgpsig_url;
+ # Upstream URL? Copying code from below - ugh.
+ if ($site =~ m%^https?://%) {
+ # absolute URL?
+ if ($newfile =~ m%^\w+://%) {
+ $upstream_url = $newfile;
+ }
+ elsif ($newfile =~ m%^//%) {
+ $upstream_url = $site;
+ $upstream_url =~ s/^(https?:).*/$1/;
+ $upstream_url .= $newfile;
+ }
+ # absolute filename?
+ elsif ($newfile =~ m%^/%) {
+ # Were there any redirections? If so try using those first
+ if ($#patterns > 0) {
+ # replace $site here with the one we were redirected to
+ foreach my $index (0 .. $#patterns) {
+ if ("$sites[$index]$newfile" =~ m&^$patterns[$index]$&) {
+ $upstream_url = "$sites[$index]$newfile";
+ last;
+ }
+ }
+ if (!defined($upstream_url)) {
+ if ($debug) {
+ uscan_warn "$progname warning: Unable to determine upstream url from redirections,\n" .
+ "defaulting to using site specified in watchfile\n";
+ }
+ $upstream_url = "$sites[0]$newfile";
+ }
+ } else {
+ $upstream_url = "$sites[0]$newfile";
+ }
+ }
+ # relative filename, we hope
+ else {
+ # Were there any redirections? If so try using those first
+ if ($#patterns > 0) {
+ # replace $site here with the one we were redirected to
+ foreach my $index (0 .. $#patterns) {
+ # skip unless the basedir looks like a directory
+ next unless $basedirs[$index] =~ m%/$%;
+ my $nf = "$basedirs[$index]$newfile";
+ if ("$sites[$index]$nf" =~ m&^$patterns[$index]$&) {
+ $upstream_url = "$sites[$index]$nf";
+ last;
+ }
+ }
+ if (!defined($upstream_url)) {
+ if ($debug) {
+ uscan_warn "$progname warning: Unable to determine upstream url from redirections,\n" .
+ "defaulting to using site specified in watchfile\n";
+ }
+ $upstream_url = "$urlbase$newfile";
+ }
+ } else {
+ $upstream_url = "$urlbase$newfile";
+ }
+ }
+
+ # mangle if necessary
+ $upstream_url =~ s/&/&/g;
+ if (exists $options{'downloadurlmangle'}) {
+ foreach my $pat (@{$options{'downloadurlmangle'}}) {
+ if (! safe_replace(\$upstream_url, $pat)) {
+ uscan_warn "$progname: In $watchfile, potentially"
+ . " unsafe or malformed downloadurlmangle"
+ . " pattern:\n '$pat'"
+ . " found. Skipping watchline\n"
+ . " $line\n";
+ return 1;
+ }
+ }
+ }
+ }
+ else {
+ # FTP site
+ $upstream_url = "$base$newfile";
+ }
+
+ if (exists $options{'pgpsigurlmangle'}) {
+ $pgpsig_url = $upstream_url;
+ foreach my $pat (@{$options{'pgpsigurlmangle'}}) {
+ if (! safe_replace(\$pgpsig_url, $pat)) {
+ uscan_warn "$progname: In $watchfile, potentially"
+ . " unsafe or malformed pgpsigurlmangle"
+ . " pattern:\n '$pat'"
+ . " found. Skipping watchline\n"
+ . " $line\n";
+ return 1;
+ }
+ }
+ }
+
+ $dehs_tags{'debian-uversion'} = $lastversion;
+ $dehs_tags{'debian-mangled-uversion'} = $mangled_lastversion;
+ $dehs_tags{'upstream-version'} = $newversion;
+ $dehs_tags{'upstream-url'} = $upstream_url;
+
+ # Can't just use $lastversion eq $newversion, as then 0.01 and 0.1
+ # compare different, whereas they are treated as equal by dpkg
+ if (system("dpkg", "--compare-versions", "1:${mangled_lastversion}-0", "eq", "1:${newversion}-0") == 0) {
+ if ($verbose or ($download == 0 and $report and ! $dehs)) {
+ print $pkg_report_header;
+ $pkg_report_header = '';
+ print "Newest version on remote site is $newversion, local version is $lastversion\n" .
+ ($mangled_lastversion eq $lastversion ? "" : " (mangled local version number $mangled_lastversion)\n");
+ print " => Package is up to date\n";
+ }
+ $dehs_tags{'status'} = "up to date";
+ if (! $force_download) {
+ return 0;
+ } else {
+ $download = 1;
+ }
+ }
+
+ # In all other cases, we'll want to report information even with --report
+ if ($verbose or ($download == 0 and ! $dehs)) {
+ print $pkg_report_header;
+ $pkg_report_header = '';
+ print "Newest version on remote site is $newversion, local version is $lastversion\n" .
+ ($mangled_lastversion eq $lastversion ? "" : " (mangled local version number $mangled_lastversion)\n");
+ }
+
+ # We use dpkg's rules to determine whether our current version
+ # is newer or older than the remote version.
+ if (!defined $download_version) {
+ if (system("dpkg", "--compare-versions", "1:${mangled_lastversion}-0", "gt", "1:${newversion}-0") == 0) {
+ if ($verbose) {
+ print " => remote site does not even have current version\n";
+ } elsif ($dehs) {
+ $dehs_tags{'status'} = "Debian version newer than remote site";
+ } else {
+ print "$pkg: remote site does not even have current version\n";
+ }
+ return 0;
+ } else {
+ # There's a newer upstream version available, which may already
+ # be on our system or may not be
+ $found++;
+ }
+ } else {
+ # Flag that we found a newer upstream version, so that the exit status
+ # is set correctly
+ $found++;
+ }
+
+ if (defined $pkg_dir) {
+ if (! -d "$destdir") {
+ print "Package directory '$destdir to store downloaded file is not existing\n";
+ return 1;
+ }
+ if (-f "$destdir/$newfile_base") {
+ print " => $newfile_base already in package directory\n"
+ if $verbose or ($download == 0 and ! $dehs);
+ return 0;
+ }
+ foreach my $suffix (qw(gz bz2 lzma xz)) {
+ if (-f "$destdir/${pkg}_${newversion}.orig.tar.$suffix") {
+ print " => ${pkg}_${newversion}.orig.tar.$suffix already in package directory '$destdir'\n"
+ if $verbose or ($download == 0 and ! $dehs);
+ return 0;
+ }
+ }
+ }
+
+ if ($force_download and $verbose) {
+ print " => Forcing download as requested\n";
+ } elsif ($verbose) {
+ print " => Newer version available from\n";
+ print " $upstream_url\n";
+ } elsif ($dehs) {
+ $dehs_tags{'status'} = "Newer version available";
+ } else {
+ my $msg_header = "$pkg: ";
+ $msg_header .= $force_download ? "Version" : "Newer version";
+ print "$msg_header ($newversion) available on remote site:\n $upstream_url\n (local version is $lastversion" .
+ ($mangled_lastversion eq $lastversion ? "" : ", mangled local version number $mangled_lastversion") .
+ ")\n";
+ }
+
+ if ($download < 0) {
+ my $msg = "Not downloading as --package was used. Use --download to force downloading.";
+ if ($dehs) {
+ dehs_msg($msg);
+ } else {
+ print "$msg\n";
+ }
+ return 0;
+ }
+ return 0 unless $download;
+
+ print "-- Downloading updated package $newfile_base\n" if $verbose;
+ if (! -d "$destdir") {
+ print "Package directory '$destdir to store downloaded file is not existing\n";
+ return 1;
+ }
+ my $downloader = sub {
+ my ($url, $fname) = @_;
+ if ($url =~ m%^http(s)?://%) {
+ if (defined($1) and !$haveSSL) {
+ uscan_die "$progname: you must have the liblwp-protocol-https-perl package installed\nto use https URLs\n";
+ }
+ # substitute HTML entities
+ # Is anything else than "&" required? I doubt it.
+ print STDERR "$progname debug: requesting URL $url\n" if $debug;
+ my $headers = HTTP::Headers->new;
+ $headers->header('Accept' => '*/*');
+ $headers->header('Referer' => $base);
+ $request = HTTP::Request->new('GET', $url, $headers);
+ $response = $user_agent->request($request, $fname);
+ if (! $response->is_success) {
+ if (defined $pkg_dir) {
+ uscan_warn "$progname warning: In directory $pkg_dir, downloading\n $url failed: " . $response->status_line . "\n";
+ } else {
+ uscan_warn "$progname warning: Downloading\n $url failed:\n" . $response->status_line . "\n";
+ }
+ return 0;
+ }
+ }
+ else {
+ # FTP site
+ if (exists $options{'pasv'}) {
+ $ENV{'FTP_PASSIVE'}=$options{'pasv'};
+ }
+ print STDERR "$progname debug: requesting URL $url\n" if $debug;
+ $request = HTTP::Request->new('GET', "$url");
+ $response = $user_agent->request($request, $fname);
+ if (exists $options{'pasv'}) {
+ if (defined $passive) { $ENV{'FTP_PASSIVE'}=$passive; }
+ else { delete $ENV{'FTP_PASSIVE'}; }
+ }
+ if (! $response->is_success) {
+ if (defined $pkg_dir) {
+ uscan_warn "$progname warning: In directory $pkg_dir, downloading\n $url failed: " . $response->status_line . "\n";
+ } else {
+ uscan_warn "$progname warning: Downloading\n $url failed:\n" . $response->status_line . "\n";
+ }
+ return 0;
+ }
+ }
+ return 1;
+ };
+ # Download newer package
+ if (!$downloader->($upstream_url, "$destdir/$newfile_base")) {
+ return 1;
+ }
+ # Check GPG
+ if (defined $pgpsig_url) {
+ print "-- Downloading OpenPGP signature for package as $newfile_base.pgp\n" if $verbose;
+ if (!$downloader->($pgpsig_url, "$destdir/$newfile_base.pgp")) {
+ return 1;
+ }
+
+ print "-- Verifying OpenPGP signature $newfile_base.pgp for $newfile_base\n" if $verbose;
+ system('/usr/bin/gpgv', '--homedir', '/dev/null',
+ '--keyring', $keyring,
+ "$destdir/$newfile_base.pgp", "$destdir/$newfile_base") >> 8 == 0
+ or uscan_die("$progname warning: OpenPGP signature did not verify.\n");
+ } else {
+ print "-- Checking for common possible upstream OpenPGP signatures\n" if $verbose;
+ foreach my $suffix (qw(asc gpg pgp sig)) {
+ my $sigrequest = HTTP::Request->new('HEAD' => "$upstream_url.$suffix");
+ my $sigresponse = $user_agent->request($sigrequest);
+ if ($sigresponse->is_success()) {
+ uscan_warn "$pkg: Possible OpenPGP signature found at:\n $upstream_url.$suffix.\n Please consider adding opts=pgpsigurlmangle=s/\$/.$suffix/\n to debian/watch. see uscan(1) for more details.\n";
+ last;
+ }
+ }
+ }
+
+ # Call mk-origtargz (renames, repacks, etc.)
+ my $mk_origtargz_out;
+ my $path = "$destdir/$newfile_base";
+ my $target = $newfile_base;
+ unless ($symlink eq "no") {
+ my @cmd = ("mk-origtargz");
+ push @cmd, "--package", $pkg;
+ push @cmd, "--version", $newversion;
+ push @cmd, '--repack-suffix', $options{repacksuffix} if defined $options{repacksuffix};
+ push @cmd, "--rename" if $symlink eq "rename";
+ push @cmd, "--copy" if $symlink eq "copy";
+ push @cmd, "--repack" if $repack;
+ push @cmd, "--compression", $repack_compression;
+ push @cmd, "--directory", $destdir;
+ push @cmd, "--copyright-file", "debian/copyright"
+ if ($exclusion && -e "debian/copyright");
+ push @cmd, "--copyright-file", $copyright_file
+ if ($exclusion && defined $copyright_file);
+ push @cmd, $path;
+
+ spawn(exec => \@cmd,
+ to_string => \$mk_origtargz_out,
+ wait_child => 1);
+ chomp($mk_origtargz_out);
+ $path = $1 if $mk_origtargz_out =~ /Successfully .* (?:to|as) ([^,]+)\.$/;
+ $path = $1 if $mk_origtargz_out =~ /Leaving (.*) where it is/;
+ $target = basename($path);
+ }
+
+ if ($dehs) {
+ my $msg = "Successfully downloaded updated package $newfile_base\n";
+ if (defined $mk_origtargz_out) {
+ $msg .= "$mk_origtargz_out\n";
+ }
+ $dehs_tags{target} = $target;
+ $dehs_tags{'target-path'} = $path;
+ dehs_msg($msg);
+ }
+ else {
+ my $prefix = $verbose ? "-- " : "";
+ print $prefix ."Successfully downloaded updated package $newfile_base\n";
+ if (defined $mk_origtargz_out) {
+ print $prefix ."$mk_origtargz_out\n";
+ }
+ }
+
+ # Do whatever the user wishes to do
+ if ($action) {
+ my @cmd = shellwords($action);
+
+ # Any symlink requests are already handled by uscan
+ if ($action =~ /^uupdate(\s|$)/) {
+ push @cmd, "--no-symlink";
+ }
+
+ if ($watch_version > 1) {
+ push @cmd, "--upstream-version", $newversion, $path;
+ } else {
+ push @cmd, $path, $newversion;
+ }
+ my $actioncmd = join(" ", @cmd);
+ print "-- Executing user specified script\n $actioncmd\n" if $verbose;
+ if ($dehs) {
+ my $msg = "Executing user specified script: $actioncmd; output:\n";
+ $msg .= `$actioncmd 2>&1`;
+ dehs_msg($msg);
+ } else {
+ system(@cmd);
+ }
+ }
+
+ return 0;
+}
+
+
+sub recursive_regex_dir ($$$) {
+ my ($base, $optref, $watchfile)=@_;
+
+ $base =~ m%^(\w+://[^/]+)/(.*)$%;
+ my $site = $1;
+ my @dirs = ();
+ if (defined $2) {
+ @dirs = split /(\/)/, $2;
+ }
+ my $dir = '/';
+
+ foreach my $dirpattern (@dirs) {
+ if ($dirpattern =~ /\(.*\)/) {
+ print STDERR "$progname debug: dir=>$dir dirpattern=>$dirpattern\n"
+ if $debug;
+ my $newest_dir =
+ newest_dir($site, $dir, $dirpattern, $optref, $watchfile);
+ print STDERR "$progname debug: newest_dir => '$newest_dir'\n"
+ if $debug;
+ if ($newest_dir ne '') {
+ $dir .= "$newest_dir";
+ }
+ else {
+ return '';
+ }
+ } else {
+ $dir .= "$dirpattern";
+ }
+ }
+ return $site . $dir;
+}
+
+
+# very similar to code above
+sub newest_dir ($$$$$) {
+ my ($site, $dir, $pattern, $optref, $watchfile) = @_;
+ my $base = $site.$dir;
+ my ($request, $response);
+
+ if ($site =~ m%^http(s)?://%) {
+ if (defined($1) and !$haveSSL) {
+ uscan_die "$progname: you must have the liblwp-protocol-https-perl package installed\nto use https URLs\n";
+ }
+ print STDERR "$progname debug: requesting URL $base\n" if $debug;
+ $request = HTTP::Request->new('GET', $base);
+ $response = $user_agent->request($request);
+ if (! $response->is_success) {
+ uscan_warn "$progname warning: In watchfile $watchfile, reading webpage\n $base failed: " . $response->status_line . "\n";
+ return 1;
+ }
+
+ my $content = $response->content;
+ print STDERR "$progname debug: received content:\n$content\[End of received content\]\n"
+ if $debug;
+ # We need this horrid stuff to handle href=foo type
+ # links. OK, bad HTML, but we have to handle it nonetheless.
+ # It's bug #89749.
+ $content =~ s/href\s*=\s*(?=[^\"\'])([^\s>]+)/href="$1"/ig;
+ # Strip comments
+ $content =~ s/<!-- .*?-->//sg;
+
+ my $dirpattern = "(?:(?:$site)?" . quotemeta($dir) . ")?$pattern";
+
+ print STDERR "$progname debug: matching pattern $dirpattern\n"
+ if $debug;
+ my @hrefs;
+ while ($content =~ m/<\s*a\s+[^>]*href\s*=\s*([\"\'])(.*?)\1/gi) {
+ my $href = $2;
+ if ($href =~ m&^$dirpattern/?$&) {
+ my $mangled_version = join(".", map { $_ || '' } $href =~ m&^$dirpattern/?$&);
+ push @hrefs, [$mangled_version, $href];
+ }
+ }
+ if (@hrefs) {
+ @hrefs = Devscripts::Versort::upstream_versort(@hrefs);
+ if ($debug) {
+ print "-- Found the following matching hrefs (newest first):\n";
+ foreach my $href (@hrefs) { print " $$href[1] ($$href[0])\n"; }
+ }
+ my $newdir = $hrefs[0][1];
+ # just give the final directory component
+ $newdir =~ s%/$%%;
+ $newdir =~ s%^.*/%%;
+ return $newdir;
+ } else {
+ uscan_warn "$progname warning: In $watchfile,\n no matching hrefs for pattern\n $site$dir$pattern";
+ return 1;
+ }
+ }
+ else {
+ # Better be an FTP site
+ if ($site !~ m%^ftp://%) {
+ return 1;
+ }
+
+ if (exists $$optref{'pasv'}) {
+ $ENV{'FTP_PASSIVE'}=$$optref{'pasv'};
+ }
+ print STDERR "$progname debug: requesting URL $base\n" if $debug;
+ $request = HTTP::Request->new('GET', $base);
+ $response = $user_agent->request($request);
+ if (exists $$optref{'pasv'}) {
+ if (defined $passive) { $ENV{'FTP_PASSIVE'}=$passive; }
+ else { delete $ENV{'FTP_PASSIVE'}; }
+ }
+ if (! $response->is_success) {
+ uscan_warn "$progname warning: In watchfile $watchfile, reading webpage\n $base failed: " . $response->status_line . "\n";
+ return '';
+ }
+
+ my $content = $response->content;
+ print STDERR "$progname debug: received content:\n$content\[End of received content]\n"
+ if $debug;
+
+ # FTP directory listings either look like:
+ # info info ... info filename [ -> linkname]
+ # or they're HTMLised (if they've been through an HTTP proxy)
+ # so we may have to look for <a href="filename"> type patterns
+ print STDERR "$progname debug: matching pattern $pattern\n" if $debug;
+ my (@dirs);
+
+ # We separate out HTMLised listings from standard listings, so
+ # that we can target our search correctly
+ if ($content =~ /<\s*a\s+[^>]*href/i) {
+ while ($content =~
+ m/(?:<\s*a\s+[^>]*href\s*=\s*\")((?-i)$pattern)\"/gi) {
+ my $dir = $1;
+ my $mangled_version = join(".", $dir =~ m/^$pattern$/);
+ push @dirs, [$mangled_version, $dir];
+ }
+ } else {
+ # they all look like:
+ # info info ... info filename [ -> linkname]
+ foreach my $ln (split(/\n/, $content)) {
+ if ($ln =~ m/($pattern)(\s+->\s+\S+)?$/) {
+ my $dir = $1;
+ my $mangled_version = join(".", $dir =~ m/^$pattern$/);
+ push @dirs, [$mangled_version, $dir];
+ }
+ }
+ }
+ if (@dirs) {
+ if ($debug) {
+ print STDERR "-- Found the following matching dirs:\n";
+ foreach my $dir (@dirs) { print STDERR " $$dir[1]\n"; }
+ }
+ @dirs = Devscripts::Versort::upstream_versort(@dirs);
+ my ($newversion, $newdir) = @{$dirs[0]};
+ return $newdir;
+ } else {
+ uscan_warn "$progname warning: In $watchfile no matching dirs for pattern\n $base$pattern\n";
+ return '';
+ }
+ }
+}
+
+
+# parameters are dir, package, upstream version, good dirname
+sub process_watchfile ($$$$)
+{
+ my ($dir, $package, $version, $watchfile) = @_;
+ my $watch_version=0;
+ my $status=0;
+ %dehs_tags = ();
+
+ unless (open WATCH, $watchfile) {
+ uscan_warn "$progname warning: could not open $watchfile: $!\n";
+ return 1;
+ }
+
+ while (<WATCH>) {
+ next if /^\s*\#/;
+ next if /^\s*$/;
+ s/^\s*//;
+
+ CHOMP:
+ chomp;
+ if (s/(?<!\\)\\$//) {
+ if (eof(WATCH)) {
+ uscan_warn "$progname warning: $watchfile ended with \\; skipping last line\n";
+ $status=1;
+ last;
+ }
+ $_ .= <WATCH>;
+ goto CHOMP;
+ }
+
+ if (! $watch_version) {
+ if (/^version\s*=\s*(\d+)(\s|$)/) {
+ $watch_version=$1;
+ if ($watch_version < 2 or
+ $watch_version > $CURRENT_WATCHFILE_VERSION) {
+ uscan_warn "$progname ERROR: $watchfile version number is unrecognised; skipping watchfile\n";
+ last;
+ }
+ next;
+ } else {
+ uscan_warn "$progname warning: $watchfile is an obsolete version 1 watchfile;\n please upgrade to a higher version\n (see uscan(1) for details).\n";
+ $watch_version=1;
+ }
+ }
+
+ # Are there any warnings from this part to give if we're using dehs?
+ dehs_output if $dehs;
+
+ # Handle shell \\ -> \
+ s/\\\\/\\/g if $watch_version==1;
+ if ($verbose) {
+ print "-- In $watchfile, processing watchfile line:\n $_\n";
+ } elsif ($download == 0 and ! $dehs) {
+ $pkg_report_header = "Processing watchfile line for package $package...\n";
+ }
+
+ $status +=
+ process_watchline($_, $watch_version, $dir, $package, $version,
+ $watchfile);
+ dehs_output if $dehs;
+ }
+
+ close WATCH or
+ $status=1, uscan_warn "$progname warning: problems reading $watchfile: $!\n";
+
+ return $status;
+}
+
+
+# Collect up messages for dehs output into a tag
+sub dehs_msg ($)
+{
+ my $msg = $_[0];
+ $msg =~ s/\s*$//;
+ push @{$dehs_tags{'messages'}}, $msg;
+}
+
+sub uscan_warn (@)
+{
+ if ($dehs) {
+ my $warning = $_[0];
+ $warning =~ s/\s*$//;
+ push @{$dehs_tags{'warnings'}}, $warning;
+ }
+ else {
+ warn @_;
+ }
+}
+
+sub uscan_die (@)
+{
+ if ($dehs) {
+ my $msg = $_[0];
+ $msg =~ s/\s*$//;
+ %dehs_tags = ('errors' => "$msg");
+ $dehs_end_output=1;
+ dehs_output;
+ exit 1;
+ }
+ else {
+ die @_;
+ }
+}
+
+sub dehs_output ()
+{
+ return unless $dehs;
+
+ if (! $dehs_start_output) {
+ print "<dehs>\n";
+ $dehs_start_output=1;
+ }
+
+ for my $tag (qw(package debian-uversion debian-mangled-uversion
+ upstream-version upstream-url
+ status target target-path messages warnings errors)) {
+ if (exists $dehs_tags{$tag}) {
+ if (ref $dehs_tags{$tag} eq "ARRAY") {
+ foreach my $entry (@{$dehs_tags{$tag}}) {
+ $entry =~ s/</</g;
+ $entry =~ s/>/>/g;
+ $entry =~ s/&/&/g;
+ print "<$tag>$entry</$tag>\n";
+ }
+ } else {
+ $dehs_tags{$tag} =~ s/</</g;
+ $dehs_tags{$tag} =~ s/>/>/g;
+ $dehs_tags{$tag} =~ s/&/&/g;
+ print "<$tag>$dehs_tags{$tag}</$tag>\n";
+ }
+ }
+ }
+ if ($dehs_end_output) {
+ print "</dehs>\n";
+ }
+
+ # Don't repeat output
+ %dehs_tags = ();
+}
+
+sub quoted_regex_parse($) {
+ my $pattern = shift;
+ my %closers = ('{', '}', '[', ']', '(', ')', '<', '>');
+
+ $pattern =~ /^(s|tr|y)(.)(.*)$/;
+ my ($sep, $rest) = ($2, $3 || '');
+ my $closer = $closers{$sep};
+
+ my $parsed_ok = 1;
+ my $regexp = '';
+ my $replacement = '';
+ my $flags = '';
+ my $open = 1;
+ my $last_was_escape = 0;
+ my $in_replacement = 0;
+
+ for my $char (split //, $rest) {
+ if ($char eq $sep and ! $last_was_escape) {
+ $open++;
+ if ($open == 1) {
+ if ($in_replacement) {
+ # Separator after end of replacement
+ $parsed_ok = 0;
+ last;
+ } else {
+ $in_replacement = 1;
+ }
+ } else {
+ if ($open > 1) {
+ if ($in_replacement) {
+ $replacement .= $char;
+ } else {
+ $regexp .= $char;
+ }
+ }
+ }
+ } elsif ($char eq $closer and ! $last_was_escape) {
+ $open--;
+ if ($open) {
+ if ($in_replacement) {
+ $replacement .= $char;
+ } else {
+ $regexp .= $char;
+ }
+ } elsif ($open < 0) {
+ $parsed_ok = 0;
+ last;
+ }
+ } else {
+ if ($in_replacement) {
+ if ($open) {
+ $replacement .= $char;
+ } else {
+ $flags .= $char;
+ }
+ } else {
+ $regexp .= $char;
+ }
+ }
+ # Don't treat \\ as an escape
+ $last_was_escape = ($char eq '\\' and ! $last_was_escape);
+ }
+
+ $parsed_ok = 0 unless $in_replacement and $open == 0;
+
+ return ($parsed_ok, $regexp, $replacement, $flags);
+}
+
+sub safe_replace($$) {
+ my ($in, $pat) = @_;
+ $pat =~ s/^\s*(.*?)\s*$/$1/;
+
+ $pat =~ /^(s|tr|y)(.)/;
+ my ($op, $sep) = ($1, $2 || '');
+ my $esc = "\Q$sep\E";
+ my ($parsed_ok, $regexp, $replacement, $flags);
+
+ if ($sep eq '{' or $sep eq '(' or $sep eq '[' or $sep eq '<') {
+ ($parsed_ok, $regexp, $replacement, $flags) = quoted_regex_parse($pat);
+
+ return 0 unless $parsed_ok;
+ } elsif ($pat !~ /^(?:s|tr|y)$esc((?:\\.|[^\\$esc])*)$esc((?:\\.|[^\\$esc])*)$esc([a-z]*)$/) {
+ return 0;
+ } else {
+ ($regexp, $replacement, $flags) = ($1, $2, $3);
+ }
+
+ my $safeflags = $flags;
+ if ($op eq 'tr' or $op eq 'y') {
+ $safeflags =~ tr/cds//cd;
+ return 0 if $safeflags ne $flags;
+
+ $regexp =~ s/\\(.)/$1/g;
+ $replacement =~ s/\\(.)/$1/g;
+
+ $regexp =~ s/([^-])/'\\x' . unpack 'H*', $1/ge;
+ $replacement =~ s/([^-])/'\\x' . unpack 'H*', $1/ge;
+
+ eval "\$\$in =~ tr<$regexp><$replacement>$flags;";
+
+ if ($@) {
+ return 0;
+ } else {
+ return 1;
+ }
+ } else {
+ $safeflags =~ tr/gix//cd;
+ return 0 if $safeflags ne $flags;
+
+ my $global = ($flags =~ s/g//);
+ $flags = "(?$flags)" if length $flags;
+
+ my $slashg;
+ if ($regexp =~ /(?<!\\)(\\\\)*\\G/) {
+ $slashg = 1;
+ # if it's not initial, it is too dangerous
+ return 0 if $regexp =~ /^.*[^\\](\\\\)*\\G/;
+ }
+
+ # Behave like Perl and treat e.g. "\." in replacement as "."
+ # We allow the case escape characters to remain and
+ # process them later
+ $replacement =~ s/(^|[^\\])\\([^luLUE])/$1$2/g;
+
+ # Unescape escaped separator characters
+ $replacement =~ s/\\\Q$sep\E/$sep/g;
+ # If bracketing quotes were used, also unescape the
+ # closing version
+ $replacement =~ s/\\\Q}\E/}/g if $sep eq '{';
+ $replacement =~ s/\\\Q]\E/]/g if $sep eq '[';
+ $replacement =~ s/\\\Q)\E/)/g if $sep eq '(';
+ $replacement =~ s/\\\Q>\E/>/g if $sep eq '<';
+
+ # The replacement below will modify $replacement so keep
+ # a copy. We'll need to restore it to the current value if
+ # the global flag was set on the input pattern.
+ my $orig_replacement = $replacement;
+
+ my ($first, $last, $pos, $zerowidth, $matched, @captures) = (0, -1, 0);
+ while (1) {
+ eval {
+ # handle errors due to unsafe constructs in $regexp
+ no re 'eval';
+
+ # restore position
+ pos($$in) = $pos if $pos;
+
+ if ($zerowidth) {
+ # previous match was a zero-width match, simulate it to set
+ # the internal flag that avoids the infinite loop
+ $$in =~ /()/g;
+ }
+ # Need to use /g to make it use and save pos()
+ $matched = ($$in =~ /$flags$regexp/g);
+
+ if ($matched) {
+ # save position and size of the match
+ my $oldpos = $pos;
+ $pos = pos($$in);
+ ($first, $last) = ($-[0], $+[0]);
+
+ if ($slashg) {
+ # \G in the match, weird things can happen
+ $zerowidth = ($pos == $oldpos);
+ # For example, matching without a match
+ $matched = 0 if (not defined $first
+ or not defined $last);
+ } else {
+ $zerowidth = ($last - $first == 0);
+ }
+ for my $i (0..$#-) {
+ $captures[$i] = substr $$in, $-[$i], $+[$i] - $-[$i];
+ }
+ }
+ };
+ return 0 if $@;
+
+ # No match; leave the original string untouched but return
+ # success as there was nothing wrong with the pattern
+ return 1 unless $matched;
+
+ # Replace $X
+ $replacement =~ s/[\$\\](\d)/defined $captures[$1] ? $captures[$1] : ''/ge;
+ $replacement =~ s/\$\{(\d)\}/defined $captures[$1] ? $captures[$1] : ''/ge;
+ $replacement =~ s/\$&/$captures[0]/g;
+
+ # Make \l etc escapes work
+ $replacement =~ s/\\l(.)/lc $1/e;
+ $replacement =~ s/\\L(.*?)(\\E|\z)/lc $1/e;
+ $replacement =~ s/\\u(.)/uc $1/e;
+ $replacement =~ s/\\U(.*?)(\\E|\z)/uc $1/e;
+
+ # Actually do the replacement
+ substr $$in, $first, $last - $first, $replacement;
+ # Update position
+ $pos += length($replacement) - ($last - $first);
+
+ if ($global) {
+ $replacement = $orig_replacement;
+ } else {
+ last;
+ }
+ }
+
+ return 1;
+ }
+}
--- /dev/null
+.TH UUPDATE 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+uupdate \- upgrade a source code package from an upstream revision
+.SH SYNOPSIS
+\fBuupdate\fR [\fIoptions\fR] \fInew_upstream_archive\fR [\fIversion\fR]
+.br
+\fBuupdate\fR [\fIoptions\fR] \fB\-\-patch\fR|\fB\-p\fR \fIpatch_file\fR
+.SH DESCRIPTION
+\fBuupdate\fR modifies an existing Debian source code archive to
+reflect an upstream update supplied as a patch or from a wholly new
+source code archive. The utility needs to be invoked from the top
+directory of the old source code directory, and if a relative name is
+given for the new archive or patch file, it will be looked for first
+relative to the execution directory and then relative to the parent of
+the source tree. (For example, if the changelog file is
+\fI/usr/local/src/foo/foo-1.1/debian/changelog\fR, then the archive or
+patch file will be looked for relative to \fI/usr/local/src/foo\fR.)
+Note that the patch file or archive cannot be within the source tree
+itself. The full details of what the code does are given below.
+.PP
+Currently supported source code file types are \fI.tar.gz\fR,
+\fI.tar.bz2\fR, \fI.tar.Z\fR, \fI.tgz\fR, \fI.tar\fR, \fI.tar.lzma\fR,
+\fI.tar.xz\fR, \fI.7z\fR and \fI.zip\fR
+archives. Also supported are already unpacked source code archives;
+simply give the path of the source code directory. Supported patch
+file types are \fBgzip\fR-compressed, \fBbzip2\fR-compressed,
+\fBlzma\fR-compressed, \fBxz\fR-compressed and
+uncompressed patch files. The file types are identified by the file
+names, so they must use the standard suffixes.
+.PP
+Usually \fBuupdate\fR will be able to deduce the version number from
+the source archive name (as long as it only contains digits and
+periods). If that fails, you need to specify the version number
+explicitly (without the Debian release number which will always be
+initially \*(lq1\*(rq, or \*(lq0ubuntu1\*(rq on Ubuntu-detected systems). This can be
+done with an initial \fB\-\-upstream-version\fR or \fB\-v\fR option, or
+in the case of an archive, with a version number after the filename.
+(The reason for the latter is so that \fBuupdate\fR can be called
+directly from \fBuscan\fR.)
+.PP
+Since \fBuupdate\fR uses \fBdebuild\fR to clean the current archive
+before trying to apply a patch file, it accepts a \fB\-\-rootcmd\fR or
+\fB\-r\fR option allowing the user to specify a gain-root command to be
+used. The default is to use \fBfakeroot\fR.
+.PP
+If an archive is being built, the pristine upstream source should be
+used to create the \fI.orig.tar.gz\fR file wherever possible. This
+means that MD5 sums or other similar methods can be used to easily
+compare the upstream source to Debian's copy of the upstream version.
+This is the default behaviour, and can be switched off using the
+\fB\-\-no\-pristine\fR option below.
+.SH OPTIONS
+This is a summary of what was explained above.
+.TP
+\fB\-\-upstream-version \fIversion\fR, \fB\-v \fIversion\fR
+Specify the version number of the upstream package explicitly.
+.TP
+\fB\-\-rootcmd \fIgain-root-command\fR, \fB\-r \fIgain-root-command\fR
+Specify the command to be used to become root to build the package and
+is passed onto \fBdebuild\fR(1) if it is specified.
+.TP
+\fB\-\-pristine\fR, \fB\-u\fR
+Treat the source as pristine upstream source and symlink to it from
+\fI<package>_<version>.orig.tar.gz\fR whenever possible. This option
+has no meaning for patches. This is the default behaviour.
+.TP
+\fB\-\-no\-pristine\fR
+Do not attempt to make a \fI<package>_<version>.orig.tar.gz\fR symlink.
+.TP
+\fB\-\-symlink\fR, \fB\-s\fR
+Simply create a symlink when moving a new upstream \fI.tar.gz\fR
+archive to the new \fI<package>_<version>.orig.tar.gz\fR location.
+This is the default behaviour.
+.TP
+\fB\-\-no\-symlink\fR
+Copy the upstream \fI.tar.gz\fR to the new location instead of making
+a symlink.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+.BR \-\-help ", " \-h
+Display a help message and exit successfully.
+.TP
+.B \-\-version
+Display version and copyright information and exit successfully.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variables are:
+.TP
+.B UUPDATE_PRISTINE
+If this is set to \fIno\fR, then it is the same as the
+\fB\-\-no\-pristine\fR command line parameter being used.
+.TP
+.B UUPDATE_SYMLINK_ORIG
+If this is set to \fIno\fR, then it is the same as the
+\fB\-\-no\-symlink\fR command line parameter being used.
+.TP
+.B UUPDATE_ROOTCMD
+This is equivalent to the \fB\-\-rootcmd\fR option.
+.SH "ACTIONS TAKEN ON AN ARCHIVE"
+.TP
+.B Figure out new version number
+Unless an explicit version number is provided, the archive name is
+analyzed for a sequence of digits separated by dots. If something
+like that is found, it is taken to be the new upstream version
+number. If not, processing is aborted.
+.TP
+.B Create the .orig.tar.gz archive
+If the \fB\-\-pristine\fR or \fB\-u\fR option is specified and the
+upstream archive is a \fI.tar.gz\fR or \fI.tgz\fR archive, then this
+will be copied directly to \fI<package>_<version>.orig.tar.gz\fR.
+.TP
+.B Unpacking
+The archive is unpacked and placed in a directory with the correct
+name according to Debian policy: package-upstream_version.orig.
+Processing is aborted if this directory already exists.
+.TP
+.B Patching
+The \fI.diffs.gz\fR from the current version are applied to the
+unpackaged archive. A non-zero exit status and warning message will
+occur if the patches did not apply cleanly or if no patch file was
+found. Also, the list of rejected patches will be shown. The
+file \fIdebian/rules\fR is made executable and all of the \fI.orig\fR
+files created by \fBpatch\fR are deleted.
+.TP
+.B Changelog update
+A changelog entry with the new version number is generated with the
+text \*(lqNew upstream release\*(rq.
+
+When used on Ubuntu systems, \fBdpkg-vendor\fR detection is used to set
+the Debian revision to \*(lq0ubuntu1\*(rq. You may change
+\fIdebian/changelog\fR manually afterwards.
+.SH "ACTIONS TAKEN ON A PATCH FILE"
+.TP
+.B Figure out new version number
+Unless an explicit version number is provided, the patch file name is
+analyzed for a sequence of digits separated by dots. If something
+like that is found, it is taken to be the new upstream version
+number. If not, processing is aborted.
+.TP
+.B Clean the current source tree
+The command \fBdebuild clean\fR is executed within the current Debian
+source archive to clean it. If a \fB\-r\fR option is given to
+\fBuupdate\fR, it is passed on to \fBdebuild\fR.
+.TP
+.B Patching
+The current source archive (\fI.orig.tar.gz\fR) is unpacked and the
+patch applied to the original sources. If this is successful, then
+the \fI.orig\fR directory is renamed to reflect the new version number
+and the current Debian source directory is copied to a directory with
+the new version number, otherwise processing is aborted. The patch is
+then applied to the new copy of the Debian source directory. The file
+\fIdebian/rules\fR is made executable and all of the \fI.orig\fR files
+created by \fBpatch\fR are deleted. If there was a problem with the
+patching, a warning is issued and the program will eventually exit
+with non-zero exit status.
+.TP
+.B Changelog update
+A changelog entry with the new version number is generated with the
+text \*(lqNew upstream release\*(rq.
+
+When used on Ubuntu systems, \fBdpkg-vendor\fR detection is used to set
+the Debian revision to \*(lq0ubuntu1\*(rq. You may change
+\fIdebian/changelog\fR manually afterwards.
+.SH "SEE ALSO"
+.BR debuild (1),
+.BR fakeroot (1),
+.BR patch (1),
+.BR devscripts.conf (5)
+
+.B The Debian Policy Manual
+.SH AUTHOR
+The original version of \fBuupdate\fR was written by Christoph Lameter
+<clameter@debian.org>. Several changes and improvements have been
+made by Julian Gilbey <jdg@debian.org>.
--- /dev/null
+#!/bin/bash
+#
+# Upgrade an existing package
+# Christoph Lameter, December 24, 1996
+# Many modifications by Julian Gilbey <jdg@debian.org> January 1999 onwards
+
+# Copyright 1999-2003, Julian Gilbey
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+
+# Command line syntax is one of:
+# For a new archive:
+# uupdate [-v <Version>] [-r <gain-root-command>] [-u] <new upstream archive>
+# or
+# uupdate [-r <gain-root-command>] [-u] <new upstream archive> <Version>
+# For a patch file:
+# uupdate [-v <Version>] [-r <gain-root-command>] -p <patch>.gz
+#
+# In the first case, the new version number may be specified explicitly,
+# either with the -v option before the archive name, or with a version
+# number after the archive file name. If both are given, the latter
+# takes precedence.
+#
+# The -u option requests that the new .orig.tar.{gz|bz2} archive be the
+# pristine source, although this only makes sense when the original
+# archive itself is a tar.gz or tgz archive.
+#
+# Has to be called from within the source archive
+
+PROGNAME=`basename $0`
+MODIFIED_CONF_MSG='Default settings modified by devscripts configuration files:'
+
+usage () {
+ echo \
+"Usage for a new archive:
+ $PROGNAME [options] <new upstream archive> [<version>]
+For a patch file:
+ $PROGNAME [options] --patch|-p <patch>[.gz|.bz2|.lzma|.xz]
+Options are:
+ --upstream-version <version>, -v <version>
+ specify version number of upstream package
+ --rootcmd <gain-root-command>, -r <gain-root-command>
+ which command to be used to become root
+ for package-building
+ --pristine, -u Source is pristine upstream source and should be
+ copied to <pkg>_<version>.orig.tar.{gz|bz2|lzma|xz}; not valid
+ for patches
+ --no-symlink Copy new upstream archive to new location
+ as <pkg>_<version>.orig.tar.{gz|bz2|lzma|xz} instead of making a
+ symlink
+ --no-conf, --noconf
+ Don't read devscripts config files;
+ must be the first option given
+
+$PROGNAME [--help|--version]
+ show this message or give version information.
+
+$MODIFIED_CONF_MSG"
+}
+
+version () {
+ echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+Copyright 1999-2003, Julian Gilbey <jdg@debian.org>, all rights reserved.
+Original code by Christoph Lameter.
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later."
+}
+
+mustsetvar () {
+ if [ "x$2" = x ]
+ then
+ echo >&2 "$PROGNAME: unable to determine $3"
+ exit 1
+ else
+ # echo "$PROGNAME: $3 is $2"
+ eval "$1=\"\$2\""
+ fi
+}
+
+# Match Pattern to extract a new version number from a given filename.
+# I already had to fiddle with this a couple of times so I better put it up
+# at front. It is now written as a Perl regexp to make it nicer. It only
+# matches things like: file.3.4 and file2-3.2; it will die on names such
+# as file3-2.7a, though.
+MPATTERN='^(?:[a-zA-Z][a-zA-Z0-9]*(?:-|_|\.))+(\d+\.(?:\d+\.)*\d+)$'
+
+STATUS=0
+
+# Boilerplate: set config variables
+DEFAULT_UUPDATE_ROOTCMD=
+DEFAULT_UUPDATE_PRISTINE=yes
+DEFAULT_UUPDATE_SYMLINK_ORIG=yes
+VARS="UUPDATE_ROOTCMD UUPDATE_PRISTINE UUPDATE_SYMLINK_ORIG"
+SUFFIX="1"
+
+if which dpkg-vendor >/dev/null 2>&1; then
+ case "$(dpkg-vendor --query Vendor 2>/dev/null)" in
+ "Ubuntu")
+ SUFFIX="0ubuntu1"
+ ;;
+ esac
+fi
+
+if [ "$1" = "--no-conf" -o "$1" = "--noconf" ]; then
+ shift
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (no configuration files read)"
+
+ # set defaults
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+else
+ # Run in a subshell for protection against accidental errors
+ # in the config files
+ eval $(
+ set +e
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+
+ for file in /etc/devscripts.conf ~/.devscripts
+ do
+ [ -r $file ] && . $file
+ done
+
+ set | egrep '^(UUPDATE|DEVSCRIPTS)_')
+
+ # check sanity
+ case "$UUPDATE_PRISTINE" in
+ yes|no) ;;
+ *) UUPDATE_PRISTINE=yes ;;
+ esac
+
+ case "$UUPDATE_SYMLINK_ORIG" in
+ yes|no) ;;
+ *) UUPDATE_SYMLINK_ORIG=yes ;;
+ esac
+
+ # set config message
+ MODIFIED_CONF=''
+ for var in $VARS; do
+ eval "if [ \"\$$var\" != \"\$DEFAULT_$var\" ]; then
+ MODIFIED_CONF_MSG=\"\$MODIFIED_CONF_MSG
+ $var=\$$var\";
+ MODIFIED_CONF=yes;
+ fi"
+ done
+
+ if [ -z "$MODIFIED_CONF" ]; then
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (none)"
+ fi
+fi
+
+
+TEMP=$(getopt -s bash -o v:p:r:ubs \
+ --long upstream-version:,patch:,rootcmd: \
+ --long pristine,no-pristine,nopristine \
+ --long symlink,no-symlink,nosymlink \
+ --long no-conf,noconf \
+ --long help,version -n "$PROGNAME" -- "$@") || (usage >&2; exit 1)
+
+eval set -- $TEMP
+
+# Process Parameters
+while [ "$1" ]; do
+ case $1 in
+ --upstream-version|-v)
+ shift; NEW_VERSION="$1" ;;
+ --patch|-p)
+ shift; PATCH="$1" ;;
+ --rootcmd|-r)
+ shift; UUPDATE_ROOTCMD="$1" ;;
+ --pristine|-u)
+ UUPDATE_PRISTINE=yes ;;
+ --no-pristine|--nopristine)
+ UUPDATE_PRISTINE=no ;;
+ --symlink|-s)
+ UUPDATE_SYMLINK_ORIG=yes ;;
+ --no-symlink|--nosymlink)
+ UUPDATE_SYMLINK_ORIG=no ;;
+ --no-conf|--noconf)
+ echo "$PROGNAME: $1 is only acceptable as the first command-line option!" >&2
+ exit 1 ;;
+ --help) usage; exit 0 ;;
+ --version) version; exit 0 ;;
+ --) shift; break ;;
+ *) echo "$PROGNAME: bug in option parser, sorry!" >&2 ; exit 1 ;;
+ esac
+ shift
+done
+
+if [ -n "$PATCH" ]; then
+ if [ $# -ne 0 ]; then
+ echo "$PROGNAME: additional archive name/version number is not allowed with --patch" >&2
+ echo "Run $PROGNAME --help for usage information" >&2
+ exit 1
+ fi
+else
+ case $# in
+ 0) echo "$PROGNAME: no archive given" >&2 ; exit 1 ;;
+ 1) ARCHIVE="$1" ;;
+ 2) ARCHIVE="$1"; NEW_VERSION="$2" ;;
+ *) echo "$PROGNAME: too many non-option arguments" >&2
+ echo "Run $PROGNAME --help for usage information" >&2
+ exit 1 ;;
+ esac
+fi
+
+# Get Parameters from current source archive
+
+if [ ! -f debian/changelog ]; then
+ echo "$PROGNAME: cannot find debian/changelog." >&2
+ echo "Are you in the top directory of the source tree?" >&2
+ exit 1
+fi
+
+# Figure out package info we need
+mustsetvar PACKAGE "`dpkg-parsechangelog | sed -n 's/^Source: //p'`" \
+ "source package"
+mustsetvar VERSION "`dpkg-parsechangelog | sed -n 's/^Version: //p'`" \
+ "source version"
+
+# Get epoch and upstream version
+eval `echo "$VERSION" | perl -ne '/^(?:(\d+):)?(.*)/; print "SVERSION=$2\nEPOCH=$1\n";'`
+
+UVERSION=`expr "$SVERSION" : '\(.*\)-[0-9a-zA-Z.+~]*$'` ||
+{
+ echo "$PROGNAME: a native Debian package cannot take upstream updates" >&2
+ exit 1
+}
+
+# Save pwd before we goes walkabout
+OPWD=`pwd`
+
+if [ "$PATCH" ]; then
+ if [ "$ARCHIVE" ]; then
+ echo "$PROGNAME: you can only specify a patch or a source code archive, not both!" >&2
+ exit 1
+ fi
+ # do the patching
+ X="${PATCH##*/}"
+ case "$PATCH" in
+ /*)
+ if [ ! -r "$PATCH" ]; then
+ echo "$PROGNAME: cannot read patch file $PATCH! Aborting." >&2
+ exit 1
+ fi
+ case "$PATCH" in
+ *.gz) CATPATCH="zcat $PATCH"; X=${X%.gz};;
+ *.bz2) CATPATCH="bzcat $PATCH"; X=${X%.bz2};;
+ *.lzma) CATPATCH="xz -F lzma -dc $PATCH"; X=${X%.lzma};;
+ *.xz) CATPATCH="xzcat $PATCH"; X=${X%.xz};;
+ *) CATPATCH="cat $PATCH";;
+ esac
+ ;;
+ *)
+ if [ ! -r "$OPWD/$PATCH" -a ! -r "../$PATCH" ]; then
+ echo "$PROGNAME: cannot read patch file $PATCH! Aborting." >&2
+ exit 1
+ fi
+ case "$PATCH" in
+ *.gz)
+ if [ -r "$OPWD/$PATCH" ]; then
+ CATPATCH="zcat $OPWD/$PATCH"
+ else
+ CATPATCH="zcat ../$PATCH"
+ fi
+ X=${X%.gz}
+ ;;
+ *.bz2)
+ if [ -r "$OPWD/$PATCH" ]; then
+ CATPATCH="bzcat $OPWD/$PATCH"
+ else
+ CATPATCH="bzcat ../$PATCH"
+ fi
+ X=${X%.bz2}
+ ;;
+ *.lzma)
+ if [ -r "$OPWD/$PATCH" ]; then
+ CATPATCH="xz -F lzma -dc $OPWD/$PATCH"
+ else
+ CATPATCH="xz -F lzma -dc ../$PATCH"
+ fi
+ X=${X%.lzma}
+ ;;
+ *.xz)
+ if [ -r "$OPWD/$PATCH" ]; then
+ CATPATCH="xzcat $OPWD/$PATCH"
+ else
+ CATPATCH="xzcat ../$PATCH"
+ fi
+ X=${X%.xz}
+ ;;
+ *)
+ if [ -r "$OPWD/$PATCH" ]; then
+ CATPATCH="cat $OPWD/$PATCH"
+ else
+ CATPATCH="cat ../$PATCH"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ if [ "$NEW_VERSION" = "" ]; then
+ # Figure out the new version; we may have to remove a trailing ".diff"
+ NEW_VERSION=`echo "$X" |
+ perl -ne 's/\.diff$//; /'"$MPATTERN"'/ && print $1'`
+ if [ -z "$NEW_VERSION" ]; then
+ echo "$PROGNAME: new version number not recognized from given filename" >&2
+ echo "Please run $PROGNAME with the -v option" >&2
+ exit 1
+ fi
+
+ if [ -n "$EPOCH" ]; then
+ echo "New Release will be $EPOCH:$NEW_VERSION-$SUFFIX."
+ else
+ echo "New Release will be $NEW_VERSION-$SUFFIX."
+ fi
+ fi
+
+ # Strip epoch number
+ SNEW_VERSION=`echo "$NEW_VERSION" | perl -pe 's/^\d+://'`
+ if [ $SNEW_VERSION = $NEW_VERSION -a -n "$EPOCH" ]; then
+ NEW_VERSION="$EPOCH:$NEW_VERSION"
+ fi
+
+ # Sanity check
+ if dpkg --compare-versions "$NEW_VERSION-$SUFFIX" le "$VERSION"; then
+ echo "$PROGNAME: new version $NEW_VERSION-$SUFFIX <= current version $VERSION; aborting!" >&2
+ exit 1
+ fi
+
+ if [ -e "../$PACKAGE-$SNEW_VERSION" ]; then
+ echo "$PROGNAME: $PACKAGE-$SNEW_VERSION already exists in the parent directory!" >&2
+ echo "Aborting...." >&2
+ exit 1
+ fi
+ if [ -e "../$PACKAGE-$SNEW_VERSION.orig" ]; then
+ echo "$PROGNAME: $PACKAGE-$SNEW_VERSION.orig already exists in the parent directory!" >&2
+ echo "Aborting...." >&2
+ exit 1
+ fi
+
+ # Is the old version a .tar.gz or .tar.bz2 file?
+ if [ -r "../${PACKAGE}_$UVERSION.orig.tar.gz" ]; then
+ OLDARCHIVE="${PACKAGE}_$UVERSION.orig.tar.gz"
+ OLDARCHIVETYPE=gz
+ elif [ -r "../${PACKAGE}_$UVERSION.orig.tar.bz2" ]; then
+ OLDARCHIVE="${PACKAGE}_$UVERSION.orig.tar.bz2"
+ OLDARCHIVETYPE=bz2
+ elif [ -r "../${PACKAGE}_$UVERSION.orig.tar.lzma" ]; then
+ OLDARCHIVE="${PACKAGE}_$UVERSION.orig.tar.lzma"
+ OLDARCHIVETYPE=lzma
+ elif [ -r "../${PACKAGE}_$UVERSION.orig.tar.xz" ]; then
+ OLDARCHIVE="${PACKAGE}_$UVERSION.orig.tar.xz"
+ OLDARCHIVETYPE=xz
+ else
+ echo "$PROGNAME: can't find/read ${PACKAGE}_$UVERSION.orig.tar.{gz|bz2|lzma|xz}" >&2
+ echo "in the parent directory!" >&2
+ echo "Aborting...." >&2
+ exit 1
+ fi
+
+ # Clean package
+ if [ -n "$UUPDATE_ROOTCMD" ]; then
+ debuild -r"$UUPDATE_ROOTCMD" clean || {
+ echo "$PROGNAME: couldn't run debuild -r$UUPDATE_ROOTCMD clean" >&2
+ echo "successfully. Why not?" >&2
+ echo "Aborting...." >&2
+ exit 1
+ }
+ else debuild clean || {
+ echo "$PROGNAME: couldn't run debuild -r$UUPDATE_ROOTCMD clean" >&2
+ echo "successfully. Why not?" >&2
+ echo "Aborting...." >&2
+ exit 1
+ }
+ fi
+
+ cd ..
+ rm -rf $PACKAGE-$UVERSION.orig
+
+ # Unpacking .orig.tar.gz is not quite trivial any longer ;-)
+ TEMP_DIR=$(mktemp -d uupdate.XXXXXXXX) || {
+ echo "$PROGNAME: can't create temporary directory;" >&2
+ echo "aborting..." >&2
+ exit 1
+ }
+ cd $TEMP_DIR
+ if [ "$OLDARCHIVETYPE" = gz ]; then
+ tar zxf ../$OLDARCHIVE || {
+ echo "$PROGNAME: can't untar $OLDARCHIVE;" >&2
+ echo "aborting..." >&2
+ exit 1
+ }
+ elif [ "$OLDARCHIVETYPE" = bz2 ]; then
+ tar --bzip2 -xf ../$OLDARCHIVE || {
+ echo "$PROGNAME: can't untar $OLDARCHIVE;" >&2
+ echo "aborting..." >&2
+ exit 1
+ }
+ elif [ "$OLDARCHIVETYPE" = lzma ]; then
+ tar --lzma -xf ../$OLDARCHIVE || {
+ echo "$PROGNAME: can't untar $OLDARCHIVE;" >&2
+ echo "aborting..." >&2
+ exit 1
+ }
+ elif [ "$OLDARCHIVETYPE" = xz ]; then
+ tar --xz -xf ../$OLDARCHIVE || {
+ echo "$PROGNAME: can't untar $OLDARCHIVE;" >&2
+ echo "aborting..." >&2
+ exit 1
+ }
+ else
+ echo "$PROGNAME: internal error: unknown OLDARCHIVETYPE: $OLDARCHIVETYPE" >&2
+ exit 1
+ fi
+
+ if [ `ls | wc -l` -eq 1 ] && [ -d "`ls`" ]; then
+ mv "`ls`" ../${PACKAGE}-$UVERSION.orig
+ else
+ mkdir ../$PACKAGE-$UVERSION.orig
+ mv * ../$PACKAGE-$UVERSION.orig
+ fi
+ cd ..
+ rm -rf $TEMP_DIR
+
+ cd $PACKAGE-$UVERSION.orig
+ if ! $CATPATCH > /dev/null; then
+ echo "$PROGNAME: can't run $CATPATCH;" >&2
+ echo "aborting..." >&2
+ exit 1
+ fi
+ if $CATPATCH | patch -sp1; then
+ cd ..
+ mv $PACKAGE-$UVERSION.orig $PACKAGE-$SNEW_VERSION.orig
+ echo "-- Originals could be successfully patched"
+ cp -a $PACKAGE-$UVERSION $PACKAGE-$SNEW_VERSION
+ cd $PACKAGE-$SNEW_VERSION
+ if $CATPATCH | patch -sp1; then
+ echo "Success. The supplied diffs worked fine on the Debian sources."
+ else
+ echo "$PROGNAME: the diffs supplied did not apply cleanly!" >&2
+ X=$(find . -name "*.rej" -printf "../$PACKAGE-$SNEW_VERSION/%P\n")
+ if [ -n "$X" ]; then
+ echo "Rejected diffs are in $X" >&2
+ fi
+ STATUS=1
+ fi
+ chmod a+x debian/rules
+ debchange -v "$NEW_VERSION-$SUFFIX" "New upstream release"
+ echo "Remember: Your current directory is the OLD sourcearchive!"
+ echo "Do a \"cd ../$PACKAGE-$SNEW_VERSION\" to see the new package"
+ exit
+ else
+ echo "$PROGNAME: patch failed to apply to original sources $UVERSION" >&2
+ cd ..
+ rm -rf $PACKAGE-$UVERSION.orig
+ exit 1
+ fi
+else
+# This is an original sourcearchive
+ if [ "$ARCHIVE" = "" ]; then
+ echo "$PROGNAME: upstream source archive not specified" >&2
+ exit 1
+ fi
+ case "$ARCHIVE" in
+ /*)
+ if [ ! -r "$ARCHIVE" ]; then
+ echo "$PROGNAME: cannot read archive file $ARCHIVE! Aborting." >&2
+ exit 1
+ fi
+ ARCHIVE_PATH="$ARCHIVE"
+ ;;
+ *)
+ if [ "$ARCHIVE" = "../${ARCHIVE#../}" -a -r "$ARCHIVE" ]; then
+ ARCHIVE_PATH="$ARCHIVE"
+ elif [ -r "../$ARCHIVE" ]; then
+ ARCHIVE_PATH="../$ARCHIVE"
+ elif [ -r "$OPWD/$ARCHIVE" ]; then
+ ARCHIVE_PATH="$OPWD/$ARCHIVE"
+ else
+ echo "$PROGNAME: cannot read archive file $ARCHIVE! Aborting." >&2
+ exit 1
+ fi
+
+ ;;
+ esac
+
+ # Figure out the type of archive
+ X="${ARCHIVE%%/}"
+ X="${X##*/}"
+ if [ ! -d "$ARCHIVE_PATH" ]; then
+ case "$X" in
+ *.orig.tar.gz) X="${X%.orig.tar.gz}"; UNPACK="tar zxf";
+ TYPE=gz ;;
+ *.orig.tar.bz2) X="${X%.orig.tar.bz2}"; UNPACK="tar --bzip -xf";
+ TYPE=bz2 ;;
+ *.orig.tar.lzma) X="${X%.orig.tar.lzma}"; UNPACK="tar --lzma -xf";
+ TYPE=lzma ;;
+ *.orig.tar.xz) X="${X%.orig.tar.xz}"; UNPACK="tar --xz -xf";
+ TYPE=xz ;;
+ *.tar.gz) X="${X%.tar.gz}"; UNPACK="tar zxf"; TYPE=gz ;;
+ *.tar.bz2) X="${X%.tar.bz2}"; UNPACK="tar --bzip -xf"; TYPE=bz2 ;;
+ *.tar.lzma) X="${X%.tar.lzma}"; UNPACK="tar --lzma -xf"; TYPE=lzma ;;
+ *.tar.xz) X="${X%.tar.xz}"; UNPACK="tar --xz -xf"; TYPE=xz ;;
+ *.tar.Z) X="${X%.tar.Z}"; UNPACK="tar zxf"; TYPE="" ;;
+ *.tgz) X="${X%.tgz}"; UNPACK="tar zxf"; TYPE=gz ;;
+ *.tar) X="${X%.tar}"; UNPACK="tar xf"; TYPE="" ;;
+ *.zip) X="${X%.zip}"; UNPACK="unzip"; TYPE="" ;;
+ *.7z) X="${X%.7z}"; UNPACK="7z x"; TYPE="" ;;
+ *)
+ echo "$PROGNAME: sorry: Unknown archive type" >&2
+ exit 1
+ esac
+ fi
+
+ if [ "$NEW_VERSION" = "" ]; then
+ # Figure out the new version
+ NEW_VERSION=`echo "$X" | perl -ne "/$MPATTERN/"' && print $1'`
+ if [ -z "$NEW_VERSION" ]; then
+ echo "$PROGNAME: new version number not recognized from given filename" >&2
+ echo "Please run $PROGNAME with the -v option" >&2
+ exit 1
+ fi
+ fi
+ if [ -n "$EPOCH" ]; then
+ echo "New Release will be $EPOCH:$NEW_VERSION-$SUFFIX."
+ else
+ echo "New Release will be $NEW_VERSION-$SUFFIX."
+ fi
+
+ # Strip epoch number
+ SNEW_VERSION=`echo "$NEW_VERSION" | perl -pe 's/^\d+://'`
+ if [ $SNEW_VERSION = $NEW_VERSION -a -n "$EPOCH" ]; then
+ NEW_VERSION="$EPOCH:$NEW_VERSION"
+ fi
+
+ # Sanity check
+ if dpkg --compare-versions "$NEW_VERSION-$SUFFIX" le "$VERSION"; then
+ echo "$PROGNAME: new version $NEW_VERSION-$SUFFIX <= current version $VERSION; aborting!" >&2
+ exit 1
+ fi
+
+ if [ -e "../$PACKAGE-$SNEW_VERSION.orig" ]; then
+ echo "$PROGNAME: original source tree already exists as $PACKAGE-$SNEW_VERSION.orig!" >&2
+ echo "Aborting...." >&2
+ exit 1
+ fi
+ if [ -e "../$PACKAGE-$SNEW_VERSION" ]; then
+ echo "$PROGNAME: source tree for new version already exists as $PACKAGE-$SNEW_VERSION!" >&2
+ echo "Aborting...." >&2
+ exit 1
+ fi
+
+ # Sanity checks
+ if [ -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.gz" ] && \
+ [ "$(md5sum "${ARCHIVE_PATH}" | cut -d" " -f1)" != \
+ "$(md5sum "../${PACKAGE}_$SNEW_VERSION.orig.tar.gz" | cut -d" " -f1)" ]
+ then
+ echo "$PROGNAME: a different ${PACKAGE}_$SNEW_VERSION.orig.tar.gz" >&2
+ echo "already exists in the parent dir;" >&2
+ echo "please check on the situation before trying $PROGNAME again." >&2
+ exit 1
+ elif [ -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.bz2" ] && \
+ [ "$(md5sum "${ARCHIVE_PATH}" | cut -d" " -f1)" != \
+ "$(md5sum "../${PACKAGE}_$SNEW_VERSION.orig.tar.bz2" | cut -d" " -f1)" ]
+ then
+ echo "$PROGNAME: a different ${PACKAGE}_$SNEW_VERSION.orig.tar.bz2" >&2
+ echo "already exists in the parent dir;" >&2
+ echo "please check on the situation before trying $PROGNAME again." >&2
+ exit 1
+ elif [ -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.lzma" ] && \
+ [ "$(md5sum "${ARCHIVE_PATH}" | cut -d" " -f1)" != \
+ "$(md5sum "../${PACKAGE}_$SNEW_VERSION.orig.tar.lzma" | cut -d" " -f1)" ]
+ then
+ echo "$PROGNAME: a different ${PACKAGE}_$SNEW_VERSION.orig.tar.lzma" >&2
+ echo "already exists in the parent dir;" >&2
+ echo "please check on the situation before trying $PROGNAME again." >&2
+ exit 1
+ elif [ -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.xz" ] && \
+ [ "$(md5sum "${ARCHIVE_PATH}" | cut -d" " -f1)" != \
+ "$(md5sum "../${PACKAGE}_$SNEW_VERSION.orig.tar.xz" | cut -d" " -f1)" ]
+ then
+ echo "$PROGNAME: a different ${PACKAGE}_$SNEW_VERSION.orig.tar.xz" >&2
+ echo "already exists in the parent dir;" >&2
+ echo "please check on the situation before trying $PROGNAME again." >&2
+ exit 1
+ fi
+
+ if [ $UUPDATE_PRISTINE = yes -a -n "$TYPE" -a \
+ ! -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.gz" -a \
+ ! -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.bz2" -a \
+ ! -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.lzma" -a \
+ ! -e "../${PACKAGE}_$SNEW_VERSION.orig.tar.xz" ]; then
+ if [ "$UUPDATE_SYMLINK_ORIG" = yes ]; then
+ echo "Symlinking to pristine source from ${PACKAGE}_$SNEW_VERSION.orig.tar.$TYPE..."
+ case $ARCHIVE_PATH in
+ /*) LINKARCHIVE="$ARCHIVE" ;;
+ ../*) LINKARCHIVE="${ARCHIVE#../}" ;;
+ esac
+ else
+ echo "Copying pristine source to ${PACKAGE}_$SNEW_VERSION.orig.tar.$TYPE..."
+ fi
+
+ case "$TYPE" in
+ gz)
+ if [ "$UUPDATE_SYMLINK_ORIG" = yes ]; then
+ ln -s "$LINKARCHIVE" "../${PACKAGE}_$SNEW_VERSION.orig.tar.gz"
+ else
+ cp "$ARCHIVE_PATH" "../${PACKAGE}_$SNEW_VERSION.orig.tar.gz"
+ fi
+ ;;
+ bz2)
+ if [ "$UUPDATE_SYMLINK_ORIG" = yes ]; then
+ ln -s "$LINKARCHIVE" "../${PACKAGE}_$SNEW_VERSION.orig.tar.bz2"
+ else
+ cp "$ARCHIVE_PATH" "../${PACKAGE}_$SNEW_VERSION.orig.tar.bz2"
+ fi
+ ;;
+ lzma)
+ if [ "$UUPDATE_SYMLINK_ORIG" = yes ]; then
+ ln -s "$LINKARCHIVE" "../${PACKAGE}_$SNEW_VERSION.orig.tar.lzma"
+ else
+ cp "$ARCHIVE_PATH" "../${PACKAGE}_$SNEW_VERSION.orig.tar.lzma"
+ fi
+ ;;
+ xz)
+ if [ "$UUPDATE_SYMLINK_ORIG" = yes ]; then
+ ln -s "$LINKARCHIVE" "../${PACKAGE}_$SNEW_VERSION.orig.tar.xz"
+ else
+ cp "$ARCHIVE_PATH" "../${PACKAGE}_$SNEW_VERSION.orig.tar.xz"
+ fi
+ ;;
+ *)
+ echo "$PROGNAME: can't preserve pristine sources from non .tar.{gz|bz2|lzma|xz} upstream archive!" >&2
+ echo "Continuing anyway..." >&2
+ ;;
+ esac
+ fi
+
+ cd ..
+ TEMP_DIR=$(mktemp -d uupdate.XXXXXXXX) || {
+ echo "$PROGNAME: can't create temporary directory;" >&2
+ echo "aborting..." >&2
+ exit 1
+ }
+ cd $TEMP_DIR
+ if [ ! -d "$ARCHIVE_PATH" ]; then
+ echo "-- Untarring the new sourcecode archive $ARCHIVE"
+ $UNPACK "$ARCHIVE_PATH" || {
+ echo "$PROGNAME: can't unpack: $UNPACK $ARCHIVE_PATH failed;" >&2
+ echo "aborting..." >&2
+ exit 1
+ }
+ else
+ tar -C "$ARCHIVE_PATH/../" -c $X | tar x || {
+ echo "$PROGNAME: tar -C \"$ARCHIVE_PATH/../\" -c $X | tar x failed;" >&2
+ echo "aborting..." >&2
+ exit 1
+ }
+ fi
+
+ cd ..
+ if [ `ls $TEMP_DIR | wc -l` -eq 1 ]; then
+ # The files are stored in the archive under a top directory, we presume
+ mv $TEMP_DIR/* $PACKAGE-$SNEW_VERSION
+ else
+ # Otherwise, we put them into a new directory
+ mkdir $PACKAGE-$SNEW_VERSION
+ mv $TEMP_DIR/* $PACKAGE-$SNEW_VERSION
+ if ls $TEMP_DIR/.[!.]* >/dev/null 2>&1 ; then
+ mv $TEMP_DIR/.[!.]* $PACKAGE-$SNEW_VERSION
+ fi
+ fi
+ rm -rf $TEMP_DIR
+ cp -a $PACKAGE-$SNEW_VERSION $PACKAGE-$SNEW_VERSION.orig
+ cd $PACKAGE-$SNEW_VERSION
+
+ if [ -r "../${PACKAGE}_$SVERSION.diff.gz" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.diff.gz"
+ DIFFTYPE=diff
+ DIFFCAT=zcat
+ elif [ -r "../${PACKAGE}_$SVERSION.diff.bz2" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.diff.bz2"
+ DIFFTYPE=diff
+ DIFFCAT=bzcat
+ elif [ -r "../${PACKAGE}_$SVERSION.diff.lzma" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.diff.lzma"
+ DIFFTYPE=diff
+ DIFFCAT="xz -F lzma -dc"
+ elif [ -r "../${PACKAGE}_$SVERSION.diff.xz" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.diff.xz"
+ DIFFTYPE=diff
+ DIFFCAT=xzcat
+ elif [ -r "../${PACKAGE}_$SVERSION.debian.tar.gz" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.debian.tar.gz"
+ DIFFTYPE=tar
+ DIFFUNPACK="tar zxf"
+ elif [ -r "../${PACKAGE}_$SVERSION.debian.tar.bz2" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.debian.tar.bz2"
+ DIFFTYPE=tar
+ DIFFUNPACK="tar --bzip2 -xf"
+ elif [ -r "../${PACKAGE}_$SVERSION.debian.tar.lzma" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.debian.tar.lzma"
+ DIFFTYPE=tar
+ DIFFUNPACK="tar --lzma -xf"
+ elif [ -r "../${PACKAGE}_$SVERSION.debian.tar.xz" ]; then
+ DIFF="../${PACKAGE}_$SVERSION.debian.tar.xz"
+ DIFFTYPE=tar
+ DIFFUNPACK="tar --xz -xf"
+ fi
+
+ if [ "$DIFFTYPE" = diff ]; then
+ # Check that any files added in diff do not now exist in
+ # upstream version
+ FILES=$($DIFFCAT $DIFF |
+ perl -nwe 'BEGIN { $status=""; }
+ chomp;
+ if (/^--- /) { $status = "-$."; }
+ if (/^\+\+\+ (.*)/ and $status eq ("-" . ($.-1))) {
+ $file = $1;
+ $file =~ s%^[^/]+/%%;
+ $status = "+$.";
+ }
+ if (/^@@ -([^ ]+) /) {
+ if ($1 eq "0,0" and $status eq ("+" . ($.-1))) {
+ print "$file\n";
+ }
+ }')
+
+ # Note that debian/changelog is usually in FILES, so FILES is
+ # usually non-null; however, if the upstream ships its own debian/
+ # directory, this may not be true, so must check for empty $FILES.
+ # Check anyway, even though it's not strictly necessary in bash.
+ if [ -n "$FILES" ]; then
+ for file in $FILES; do
+ if [ -e "$file" ]; then
+ echo "$PROGNAME warning: file $file was added in old diff, but is now in the upstream source." >&2
+ echo "Please check that the diff is applied correctly." >&2
+ echo "(This program will use the pristine upstream version and save the old .diff.gz" >&2
+ echo "version as $file.debdiff .)" >&2
+
+ if [ -e "$file.upstream" -o -e "$file.debdiff" ]; then
+ FILEEXISTERR=1
+ fi
+ fi
+ done
+
+ if [ -n "$FILEEXISTERR" ]; then
+ echo "$PROGNAME: please apply the diff by hand and take care with this." >&2
+ exit 1
+ fi
+
+ # Shift any files that are in the upstream tarball that are also in
+ # the old diff out of the way so the diff is more likely to apply
+ # cleanly, and remember the fact that we moved it
+ for file in $FILES; do
+ if [ -e "$file" ]; then
+ mv $file $file.upstream
+ MOVEDFILES=("${MOVEDFILES[@]}" "$file")
+ fi
+ done
+ fi
+
+ # Remove all existing symlinks before applying the patch. We'll
+ # restore them afterwards, but this avoids patch following symlinks,
+ # which may point outside of the source tree
+ declare -a LINKS
+ while IFS= read -d '' -r link; do
+ LINKS+=("$link")
+ done < <(find -type l -printf '%l\0%p\0' -delete)
+
+ if $DIFFCAT $DIFF | patch -sNp1 ; then
+ echo "Success! The diffs from version $VERSION worked fine."
+ else
+ echo "$PROGNAME: the diffs from version $VERSION did not apply cleanly!" >&2
+ X=$(find . -name "*.rej")
+ if [ -n "$X" ]; then
+ echo "Rejected diffs are in $X" >&2
+ fi
+ STATUS=1
+ fi
+
+ # Reinstate symlinks, warning for any which fail
+ for (( i=0; $i < ${#LINKS[@]}; i=$(($i+2)) )); do
+ target="${LINKS[$i]}"
+ link="${LINKS[$(($i+1))]}"
+ if ! ln -s -T "$target" "$link"; then
+ echo "$PROGNAME: warning: Unable to restore the '$link' -> '$target' symlink." >&2
+ STATUS=1
+ fi
+ done
+
+ for file in "${MOVEDFILES[@]}"; do
+ if [ -e "$file.upstream" ]; then
+ mv $file $file.debdiff
+ mv $file.upstream $file
+ fi
+ done
+
+ elif [ "$DIFFTYPE" = tar ]; then
+ if [ -d debian ]; then
+ echo "$PROGNAME warning: using a debian.tar.{gz|bz2|lzma|xz} file in old Debian source," >&2
+ echo "but upstream also contains a debian/ directory!" >&2
+ if [ -e "debian.upstream" ]; then
+ echo "Please apply the diff by hand and take care with this." >&2
+ exit 1
+ fi
+ echo "This program will move the upstream directory out of the way" >&2
+ echo "to debian.upstream/ and use the Debian version" >&2
+ mv debian debian.upstream
+ fi
+ if $DIFFUNPACK $DIFF; then
+ echo "Unpacking the debian/ directory from version $VERSION worked fine."
+ else
+ echo "$PROGNAME: failed to unpack the debian/ directory from version $VERSION!" >&2
+ exit 1
+ fi
+ else
+ echo "$PROGNAME: could not find {diff|debian.tar}.{gz|bz2|lzma|xz} from version $VERSION to apply!" >&2
+ exit 1
+ fi
+ chmod a+x debian/rules
+ debchange -v "$NEW_VERSION-$SUFFIX" New upstream release
+ echo "Remember: Your current directory is the OLD sourcearchive!"
+ echo "Do a \"cd ../$PACKAGE-$SNEW_VERSION\" to see the new package"
+fi
+
+if [ $STATUS -ne 0 ]; then
+ echo "(Did you see the warnings above?)" >&2
+fi
+
+exit $STATUS
--- /dev/null
+#!/bin/bash
+#
+# Copyright 2006-2008 (C) Kees Cook <kees@ubuntu.com>
+# Modified by Siegfried-A. Gevatter <rainct@ubuntu.com>
+# Modified by Daniel Hahler <ubuntu@thequod.de>
+#
+# ##################################################################
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 3
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# See file /usr/share/common-licenses/GPL for more details.
+#
+# ##################################################################
+#
+# By default only the name of the patch system is printed. Verbose mode can be
+# enabled with -v.
+
+if [ "$1" = "-h" ] || [ "$1" = "--help" ]
+then
+ cat <<EOM
+Usage: $0 [-v]
+
+Run this inside the source directory of a Debian package and it will detect
+the patch system that it uses.
+
+ -v: Enable verbose mode:
+ - Print a list of all those files outside the debian/ directory that have
+ been modified (if any).
+ - Report additional details about patch systems, if available.
+EOM
+ exit 0
+fi
+
+while [ ! -r debian/rules ];
+do
+ if [ "$PWD" = "/" ]; then
+ echo "Can't find debian/rules."
+ exit 1
+ fi
+ cd ..
+done
+
+VERBOSE=0
+if [ "$1" = "-v" ]
+then
+ VERBOSE=1
+fi
+
+if [ "$VERBOSE" -gt 0 ]; then
+ files=`lsdiff -z ../$(dpkg-parsechangelog | grep ^Source: | sed -e "s/^Source: //")_$(dpkg-parsechangelog | grep ^Version: | sed -e "s/^Version: //").diff.gz 2>/dev/null | grep -v 'debian/'`
+ if [ -n "$files" ]
+ then
+ echo "Following files were modified outside of the debian/ directory:"
+ echo "$files"
+ echo "--------------------"
+ echo
+ echo -n "Patch System: "
+ fi
+fi
+
+if fgrep -q quilt debian/source/format 2>/dev/null; then
+ echo "quilt"
+ exit 0
+fi
+
+# Do not change the output of existing checks by default, as there are build
+# tools that rely on the exisitng output. If changes in reporting is needed,
+# please check the "VERBOSE" flag (see below for examples). Feel free
+# to add new patchsystem detection and reporting.
+for filename in $(echo "debian/rules"; grep ^include debian/rules | fgrep -v '$(' | awk '{print $2}')
+do
+ fgrep patchsys.mk "$filename" | grep -q -v "^#" && {
+ if [ "$VERBOSE" -eq 0 ]; then
+ echo "cdbs"; exit 0;
+ else
+ echo "cdbs (patchsys.mk: see 'cdbs-edit-patch')"; exit 0;
+ fi
+ }
+ fgrep quilt "$filename" | grep -q -v "^#" && { echo "quilt"; exit 0; }
+ fgrep dbs-build.mk "$filename" | grep -q -v "^#" && {
+ if [ "$VERBOSE" -eq 0 ]; then
+ echo "dbs"; exit 0;
+ else
+ echo "dbs (see 'dbs-edit-patch')"; exit 0;
+ fi
+ }
+ fgrep dpatch "$filename" | grep -q -v "^#" && {
+ if [ "$VERBOSE" -eq 0 ]; then
+ echo "dpatch"; exit 0;
+ else
+ echo "dpatch (see 'patch-edit-patch')"; exit 0;
+ fi
+ }
+ fgrep '*.diff' "$filename" | grep -q -v "^#" && {
+ if [ "$VERBOSE" -eq 0 ]; then
+ echo "diff splash"; exit 0;
+ else
+ echo "diff splash (check debian/rules)"; exit 0;
+ fi
+ }
+done
+[ -d debian/patches ] || {
+ if [ "$VERBOSE" -eq 0 ]; then
+ echo "patchless?"; exit 0;
+ else
+ echo "patchless? (did not find debian/patches/)"; exit 0;
+ fi
+}
+if [ "$VERBOSE" -eq 0 ]; then
+ echo "unknown patch system"
+else
+ echo "unknown patch system (see debian/patches/ and debian/rules)"
+fi
--- /dev/null
+#!/usr/bin/perl
+
+# who-permits-upload - Retrieve permissions granted to Debian Maintainers (DM)
+# Copyright (C) 2012 Arno Töll <arno@debian.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+use strict;
+use Parse::DebControl;
+use LWP::UserAgent;
+use Encode::Locale;
+use Encode;
+use Getopt::Long;
+use constant {TYPE_PACKAGE => "package", TYPE_UID => "uid", TYPE_SPONSOR => "sponsor"};
+use constant {SPONSOR_FINGERPRINT => 0, SPONSOR_NAME => 1};
+
+our $DM_URL = "http://ftp-master.debian.org/dm.txt";
+our $KEYRING = "/usr/share/keyrings/debian-keyring.gpg:/usr/share/keyrings/debian-maintainers.gpg";
+our $TYPE = "package";
+our $GPG = "/usr/bin/gpg";
+our ($HELP, @ARGUMENTS, @DM_DATA, %GPG_CACHE);
+
+binmode STDIN, ':encoding(console_in)';
+binmode STDOUT, ':encoding(console_out)';
+binmode STDERR, ':encoding(console_out)';
+
+=encoding utf8
+
+=head1 NAME
+
+who-permits-upload - look-up Debian Maintainer access control lists
+
+=head1 SYNOPSIS
+
+B<who-permits-upload> [B<-h>] [B<-s> I<keyring>] [B<-d> I<dm_url>] [B<-s> I<search_type>] I<query> [I<query> ...]
+
+=head1 DESCRIPTION
+
+B<who-permits-upload> looks up the given Debian Maintainer (DM) upload permissions
+from ftp-master.debian.org and parses them in a human readable way. The tool can
+search by DM name, sponsor (the person who granted the permission) and by package.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<--dmfile=>I<dm_url>, B<-d> I<dm_url>
+
+Retrieve the DM permission file from the supplied URL. When this option is not
+present, the default value I<https://ftp-master.debian.org/dm.txt> is used.
+
+=item B<--help>, B<-h>
+
+Display an usage summary and exit.
+
+=item B<--keyring=>I<keyring>, B<-s> I<keyring>
+
+Use the supplied GnuPG keyrings to look-up GPG fingerprints from the DM permission
+file. When not present, the default Debian Developer and Maintainer keyrings are used
+(I</usr/share/keyrings/debian-keyring.gpg> and
+I</usr/share/keyrings/debian-maintainers.gpg>, installed by the I<debian-keyring>
+package).
+
+Separate keyrings with a colon ":".
+
+=item B<--search=>I<search_type>, B<-s> I<search_type>
+
+Modify the look-up behavior. This influences the
+interpretation of the I<query> argument. Supported search types are:
+
+=over 4
+
+=item B<package>
+
+Search for a source package name. This is also the default when B<--search> is omitted.
+Since package names are unique, this will return given ACLs - if any - for a
+single package.
+
+=item B<uid>
+
+Search for a Debian Maintainer. This should be (a fraction of) a name. It will
+return all ACLs assigned to matching maintainers.
+
+=item B<sponsor>
+
+Search for a sponsor (i.e. a Debian Developer) who granted DM permissions. This
+will return all ACLs given by the supplied developer.
+
+Note that this is an expensive operation which may take some time.
+
+=back
+
+=item I<query>
+
+A case sensitive argument to be looked up in the ACL permission file. The exact
+interpretation of this argument is dependent by the B<--search> argument.
+
+This argument can be repeated.
+
+=back
+
+=head1 EXIT VALUE
+
+=over 4
+
+=item 0Z<>
+
+Success
+
+=item 1Z<>
+
+An error occurred
+
+=item 2Z<>
+
+The command line was not understood
+
+=back
+
+=head1 EXAMPLES
+
+=over 4
+
+=item who-permits-upload --search=sponsor arno@debian.org
+
+Search for all DM upload permissions given by the UID "arno@debian.org". Note,
+that only primary UIDs will match.
+
+=item who-permits-upload -s=sponsor "Arno Töll"
+
+Same as above, but use a full name instead.
+
+=item who-permits-upload apache2
+
+Look up who gave upload permissions for the apache2 source package.
+
+=item who-permits-upload --search=uid "Paul Tagliamonte"
+
+Look up all DM upload permissions given to "Paul Tagliamonte".
+
+=back
+
+=head1 AUTHOR
+
+B<who-permits-upload> was written by Arno Töll <arno@debian.org> and is licensed
+under the terms of the General Public License (GPL) version 2 or later.
+
+=head1 SEE ALSO
+
+B<gpg>(1), B<who-uploads>(1)
+
+S<I<https://lists.debian.org/debian-devel-announce/2012/09/msg00008.html>>
+
+=cut
+
+
+GetOptions ("help|h" => \$HELP,
+ "keyring|k=s" => \$KEYRING,
+ "dmfile|d=s" => \$DM_URL,
+ "search|s=s" => \$TYPE,
+ );
+# pop positionals
+@ARGUMENTS = @ARGV;
+
+$TYPE = lc($TYPE);
+if ($TYPE eq 'package')
+{
+ $TYPE = TYPE_PACKAGE;
+}
+elsif ($TYPE eq 'uid')
+{
+ $TYPE = TYPE_UID;
+}
+elsif ($TYPE eq 'sponsor')
+{
+ $TYPE = TYPE_SPONSOR;
+}
+else
+{
+ usage();
+}
+
+if ($HELP)
+{
+ usage();
+}
+
+if (not @ARGUMENTS)
+{
+ usage();
+}
+
+sub usage
+{
+ print STDERR ("Usage: $0 [-h][-s KEYRING][-d DM_URL][-s SEARCH_TYPE] QUERY [QUERY ...]\n");
+ print STDERR "Retrieve permissions granted to Debian Maintainers (DM)\n";
+ print STDERR "\n";
+ print STDERR "-h, --help\n";
+ print STDERR "\t\t\tDisplay this usage summary and exit\n";
+ print STDERR "-k, --keyring=KEYRING\n";
+ print STDERR "\t\t\tUse the supplied keyring file(s) instead of the default\n";
+ print STDERR "\t\t\tkeyring. Separate arguments by a colon (\":\")\n";
+ print STDERR "-d, --dmfile=DM_URL\n";
+ print STDERR "\t\t\tRetrieve DM permissions from the supplied URL.\n";
+ print STDERR "\t\t\tDefault is https://ftp-master.debian.org/dm.txt\n";
+ print STDERR "-s, --search=SEARCH_TYPE\n";
+ print STDERR "\t\t\tSupplied QUERY arguments are interpreted as:\n";
+ print STDERR "\t\t\tpackage name when SEARCH_TYPE is \"package\" (default)\n";
+ print STDERR "\t\t\tDM user name id when SEARCH_TYPE is \"uid\"\n";
+ print STDERR "\t\t\tsponsor user id when SEARCH_TYPE is \"sponsor\"\n";
+ exit 2;
+}
+
+sub leave
+{
+ my $reason = shift;
+ chomp $reason;
+ print STDERR "$reason\n";
+ exit 1;
+}
+
+sub lookup_fingerprint
+{
+ my $fingerprint = shift;
+ my $uid = "";
+
+ if (exists $GPG_CACHE{$fingerprint})
+ {
+ return $GPG_CACHE{$fingerprint};
+ }
+
+ my @gpg_arguments;
+ foreach my $keyring (split(":", "$KEYRING"))
+ {
+ if (! -f $keyring)
+ {
+ leave("Keyring $keyring is not accessible");
+ }
+ push(@gpg_arguments, ("--keyring", $keyring));
+ }
+ push(@gpg_arguments, ("--no-options", "--no-auto-check-trustdb", "--no-default-keyring", "--list-key", "--with-colons", encode(locale => $fingerprint)));
+ open(CMD, '-|', $GPG, @gpg_arguments) || leave "$GPG: $!\n";
+ binmode CMD, ':utf8';
+ while (my $l = <CMD>)
+ {
+ if ($l =~ /^pub/)
+ {
+ $uid = $l;
+ # Consume the rest of the output to avoid a potential SIGPIPE when closing CMD
+ my @junk = <CMD>;
+ last;
+ }
+ }
+ my @fields = split(":", $uid);
+ $uid = $fields[9];
+ close(CMD) || leave("gpg returned an error looking for $fingerprint: $?");
+
+ $GPG_CACHE{$fingerprint} = $uid;
+
+ return $uid;
+}
+
+sub parse_data
+{
+ my $raw_data = shift;
+ my $parser = new Parse::DebControl;
+ my $parsed_dm_data = $parser->parse_mem($raw_data, { discardCase=>1 });
+ my @dm_data = ();
+
+ foreach my $stanza (@{$parsed_dm_data})
+ {
+ foreach my $package (split(/,/, $stanza->{'allow'}))
+ {
+ if ($package =~ m/([a-z0-9\+\-\.]+)\s+\((\w+)\)/s)
+ {
+ my @package_row = ($1, $stanza->{'fingerprint'}, $stanza->{'uid'}, $2, SPONSOR_FINGERPRINT);
+ push(@dm_data, \@package_row);
+ }
+ }
+ }
+ undef($parsed_dm_data);
+ return @dm_data;
+}
+
+
+sub find_matching_row
+{
+ my $pattern = shift;
+ my $type = shift;
+ my @return_rows;
+ foreach my $package (@DM_DATA)
+ {
+ # $package is an array ref in the format
+ # (package, dm_fingerprint, dm_uid, sponsor_fingerprint callback)
+ push(@return_rows, $package) if ($type eq TYPE_PACKAGE && $pattern eq $package->[0]);
+ push(@return_rows, $package) if ($type eq TYPE_UID && $package->[2] =~ m/$pattern/);
+ if ($type eq TYPE_SPONSOR)
+ {
+ # the sponsor function is a key id so far, mark we looked it up
+ # already
+ $package->[3] = lookup_fingerprint($package->[3]);
+ $package->[4] = SPONSOR_NAME;
+ if ($package->[3] =~ m/$pattern/)
+ {
+ push(@return_rows, $package);
+ }
+ }
+ }
+ return @return_rows;
+}
+
+my $http = LWP::UserAgent->new;
+$http->timeout(10);
+$http->env_proxy;
+
+my $response = $http->get($DM_URL);
+if ($response->is_success)
+{
+ @DM_DATA = parse_data($response->decoded_content);
+}
+else
+{
+ leave "Could not retrieve DM file: $DM_URL Server returned: " . $response->status_line;
+}
+
+foreach my $argument (@ARGUMENTS)
+{
+ $argument = decode(locale => $argument);
+ my @rows = find_matching_row($argument, $TYPE);
+ if (not @rows)
+ {
+ leave("No $TYPE matches $argument");
+ }
+ foreach my $row (@rows)
+ {
+ # $package is an array ref in the format
+ # (package, dm_fingerprint, dm_uid, sponsor_fingerprint, sponsor_type_flag)
+ my $sponsor = $row->[3];
+ if ($row->[4] != SPONSOR_NAME)
+ {
+ $row->[3] = lookup_fingerprint($row->[3]);
+ }
+ printf("Package: %s DM: %s Sponsor: %s\n", $row->[0], $row->[2], $row->[3] );
+ }
+}
--- /dev/null
+.TH WHO-UPLOADS 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+who-uploads \- identify the uploaders of Debian source packages
+.SH SYNOPSIS
+\fBwho\-uploads\fR [\fIoptions\fR] \fIsource_package\fR ...
+.SH DESCRIPTION
+\fBwho\-uploads\fR uses the Package Tracking System (PTS) to identify
+the uploaders of the three most recent versions of the given source
+packages. Note that the uploaders are identified using their
+\fBgpg\fR(1) keys; installing a recent version of the
+\fIdebian-keyring\fR package should provide most of the required keys.
+.PP
+Note that because the PTS uses source packages, you must give the
+source package names, not the binary package names.
+.SH OPTIONS
+.TP
+\fB\-M\fR, \fB\-\-max\-uploads=\fIN\fR
+Specify the maximum number of uploads to display for each package; the
+default is 3. Note that you may not see this many uploads if there
+are not this many recorded in the PTS.
+.TP
+\fB\-\-keyring \fIkeyring\fR
+Add \fIkeyring\fR to the list of keyrings to be searched for the
+uploader's GPG key.
+.TP
+\fB\-\-no\-default\-keyrings\fR
+By default, \fBwho\-uploads\fR uses the two Debian keyrings
+\fI/usr/share/keyrings/debian-keyring.gpg\fR and
+\fI/usr/share/keyrings/debian-maintainers.gpg\fR (although this
+default can be changed in the configuration file, see below).
+Specifying this option means that the default keyrings will not be
+examined. The \fB\-\-keyring\fR option overrides this one.
+.TP
+\fB\-\-date\fR
+Show the date of the upload alongside the uploader's details
+.TP
+.BR \-\-nodate ", " \-\-no\-date
+Do not show the date of the upload alongside the uploader's details.
+This is the default behaviour.
+.TP
+\fB\-\-no-conf\fR, \fB\-\-noconf\fR
+Do not read any configuration files. This can only be used as the
+first option given on the command-line.
+.TP
+.BR \-\-help ", " \-h
+Display a help message and exit successfully.
+.TP
+.B \-\-version
+Display version and copyright information and exit successfully.
+.SH "CONFIGURATION VARIABLES"
+The two configuration files \fI/etc/devscripts.conf\fR and
+\fI~/.devscripts\fR are sourced in that order to set configuration
+variables. Command line options can be used to override configuration
+file settings. Environment variable settings are ignored for this
+purpose. The currently recognised variables are:
+.TP
+.B WHOUPLOADS_DATE
+Show the date of the upload alongside the uploader's details. By
+default, this is "no".
+.TP
+.B WHOUPLOADS_MAXUPLOADS
+The maximum number of uploads to display for each package. By
+default, this is 3.
+.TP
+.B WHOUPLOADS_KEYRINGS
+This is a colon-separated list of the default keyrings to be used. By
+default, it is the two Debian keyrings
+\fI/usr/share/keyrings/debian-keyring.gpg\fR
+and
+\fI/usr/share/keyrings/debian-maintainers.gpg\fR.
+.SH AUTHOR
+The original version of \fBwho-uploads\fR was written by Adeodato Sim\['o]
+<dato@net.com.org.es>. The current version is by Julian Gilbey
+<jdg@debian.org>.
--- /dev/null
+#!/bin/bash
+
+# who-uploads sourcepkg [ sourcepkg ... ]
+# Tells you who made the latest uploads of a source package.
+# NB: I'm encoded in UTF-8!!
+
+# Written and copyright 2006 by Julian Gilbey <jdg@debian.org>
+# Based on an original script
+# copyright 2006 Adeodato Simó <dato@net.com.org.es>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+PROGNAME=`basename $0`
+MODIFIED_CONF_MSG='Default settings modified by devscripts configuration files:'
+
+usage () {
+ echo \
+"Usage: $PROGNAME [options] package ...
+ Display the most recent three uploaders of each package.
+ Packages should be source packages, not binary packages.
+
+ Options:
+ -M, --max-uploads=N
+ Display at most the N most recent uploads (default: 3)
+ --keyring KEYRING Add KEYRING as a GPG keyring for Debian Developers'
+ keys in addition to /usr/share/keyrings/debian-keyring.*
+ and /usr/share/keyrings/debian-maintainers.gpg;
+ this option may be given multiple times
+ --no-default-keyrings
+ Do not use the default keyrings
+ --no-conf, --noconf
+ Don't read devscripts config files;
+ must be the first option given
+ --date Display the date of the upload
+ --no-date, --nodate
+ Don't display the date of the upload (default)
+ --help Show this message
+ --version Show version and copyright information
+
+$MODIFIED_CONF_MSG"
+}
+
+version () {
+ echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is copyright 2006 by Julian Gilbey <jdg@debian.org>,
+all rights reserved.
+Based on original code copyright 2006 Adeodato Simó <dato@net.com.org.es>
+This program comes with ABSOLUTELY NO WARRANTY.
+You are free to redistribute this code under the terms of the
+GNU General Public License, version 2 or later."
+}
+
+
+# Boilerplate: set config variables
+DEFAULT_WHOUPLOADS_KEYRINGS=/usr/share/keyrings/debian-keyring.gpg:/usr/share/keyrings/debian-maintainers.gpg
+DEFAULT_WHOUPLOADS_MAXUPLOADS=3
+DEFAULT_WHOUPLOADS_DATE=no
+VARS="WHOUPLOADS_KEYRINGS WHOUPLOADS_MAXUPLOADS WHOUPLOADS_DATE"
+
+if [ "$1" = "--no-conf" -o "$1" = "--noconf" ]; then
+ shift
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (no configuration files read)"
+
+ # set defaults
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+else
+ # Run in a subshell for protection against accidental errors
+ # in the config files
+ eval $(
+ set +e
+ for var in $VARS; do
+ eval "$var=\$DEFAULT_$var"
+ done
+
+ for file in /etc/devscripts.conf ~/.devscripts
+ do
+ [ -r $file ] && . $file
+ done
+
+ set | grep "^WHOUPLOADS_")
+
+ # check sanity
+ if [ "$WHOUPLOADS_MAXUPLOADS" != \
+ "$(echo \"$WHOUPLOADS_MAXUPLOADS\" | tr -cd 0-9)" ]; then
+ WHOUPLOADS_MAXUPLOADS=3
+ fi
+
+ WHOUPLOADS_DATE="$(echo "$WHOUPLOADS_DATE" | tr A-Z a-z)"
+ if [ "$WHOUPLOADS_DATE" != "yes" ] && [ "$WHOUPLOADS_DATE" != "no" ]; then
+ WHOUPLOADS_DATE=no
+ fi
+
+ # don't check WHOUPLOADS_KEYRINGS here
+
+ # set config message
+ MODIFIED_CONF=''
+ for var in $VARS; do
+ eval "if [ \"\$$var\" != \"\$DEFAULT_$var\" ]; then
+ MODIFIED_CONF_MSG=\"\$MODIFIED_CONF_MSG
+ $var=\$$var\";
+ MODIFIED_CONF=yes;
+ fi"
+ done
+
+ if [ -z "$MODIFIED_CONF" ]; then
+ MODIFIED_CONF_MSG="$MODIFIED_CONF_MSG
+ (none)"
+ fi
+fi
+
+MAXUPLOADS=$WHOUPLOADS_MAXUPLOADS
+WANT_DATE=$WHOUPLOADS_DATE
+
+declare -a GPG_DEFAULT_KEYRINGS
+declare -a GPG_KEYRINGS
+
+# Command-line options
+TEMP=$(getopt -s bash -o 'h' \
+ --long max-uploads:,keyring:,no-default-keyrings \
+ --long no-conf,noconf \
+ --long date,nodate,no-date \
+ --long help,version \
+ --options M: \
+ -n "$PROGNAME" -- "$@") || (usage >&2; exit 1)
+
+eval set -- $TEMP
+
+# Process Parameters
+while [ "$1" ]; do
+ case $1 in
+ --max-uploads|-M)
+ shift
+ if [ "$1" = "$(echo \"$1\" | tr -cd 0-9)" ]; then
+ MAXUPLOADS=$1
+ fi
+ ;;
+ --keyring)
+ shift
+ if [ -f "$1" ]; then
+ GPG_KEYRINGS=("${GPG_KEYRINGS[@]}" "--keyring" "$1")
+ else
+ echo "Could not find keyring $1, skipping" >&2
+ fi
+ ;;
+ --no-default-keyrings)
+ WHOUPLOADS_KEYRINGS=
+ ;;
+ --no-conf|--noconf)
+ echo "$PROGNAME: $1 is only acceptable as the first command-line option!" >&2
+ exit 1 ;;
+ --date) WANT_DATE=yes ;;
+ --no-date|--nodate) WANT_DATE=no ;;
+ --help|-h) usage; exit 0 ;;
+ --version) version; exit 0 ;;
+ --) shift; break ;;
+ *) echo "$PROGNAME: bug in option parser, sorry!" >&2 ; exit 1 ;;
+ esac
+ shift
+done
+
+OIFS="$IFS"
+IFS=:
+
+for keyring in $WHOUPLOADS_KEYRINGS; do
+ if [ -f "$keyring" ]; then
+ GPG_DEFAULT_KEYRINGS=("${GPG_DEFAULT_KEYRINGS[@]}" "--keyring" "$keyring")
+ elif [ -n "$keyring" ]; then
+ echo "Could not find keyring $keyring, skipping it" >&2
+ fi
+done
+
+IFS="${OIFS:- }"
+
+# Some useful abbreviations for gpg options
+GPG_NO_KEYRING="--no-options --no-auto-check-trustdb --no-default-keyring --keyring /dev/null"
+GPG_OPTIONS="--no-options --no-auto-check-trustdb --no-default-keyring"
+
+if [ $# -eq 0 ]; then
+ usage;
+ exit 1
+fi
+
+# Now actually get the reports :)
+
+for package; do
+ echo "Uploads for $package:"
+
+ prefix=$(echo $package | sed -re 's/^((lib)?.).*$/\1/')
+ pkgurl="https://packages.qa.debian.org/${prefix}/${package}.html"
+ baseurl="https://packages.qa.debian.org/${prefix}/"
+
+ # only grab the actual "Accepted" news announcements; hopefully this
+ # won't pick up many false positives
+ WGETOPTS="-q -O - --timeout=30 "
+ count=0
+ for news in $(wget $WGETOPTS $pkgurl |
+ sed -ne 's%^.*<a href="\('$package'/news/[0-9A-Z]*\.html\)">Accepted .*%\1%p'); do
+ HTML_TEXT=$(wget $WGETOPTS "$baseurl$news")
+ GPG_TEXT=$(echo "$HTML_TEXT" |
+ sed -ne 's/^<pre>//; /-----BEGIN PGP SIGNED MESSAGE-----/,/-----END PGP SIGNATURE-----/p')
+
+ test -n "$GPG_TEXT" || continue
+
+ VERSION=$(echo "$GPG_TEXT" | awk '/^Version/ { print $2; exit }')
+ DISTRO=$(echo "$GPG_TEXT" | awk '/^Distribution/ { print $2; exit }')
+ if [ "$WANT_DATE" = "yes" ]; then
+ DATE=$(echo "$HTML_TEXT" | sed -ne 's%<li><em>Date</em>: \(.*\)</li>%\1%p')
+ fi
+
+ GPG_ID=$(echo "$GPG_TEXT" | LC_ALL=C gpg $GPG_NO_KEYRING --keyid-format long --verify 2>&1 |
+ sed -rne 's/using [^ ]* key ([0-9A-Z]+).*/\1/p')
+
+ UPLOADER=$(gpg $GPG_OPTIONS \
+ "${GPG_DEFAULT_KEYRINGS[@]}" "${GPG_KEYRINGS[@]}" \
+ --list-key --with-colons $GPG_ID 2>/dev/null |
+ awk -F: '/@debian\.org>/ { a = $10; exit} /^pub/ { a = $10 } END { print a }' )
+ if [ -z "$UPLOADER" ]; then UPLOADER="<unrecognised public key ($GPG_ID)>"; fi
+
+ output="$VERSION to $DISTRO: $UPLOADER"
+ [ "$WANT_DATE" = "yes" ] && output="$output on $DATE"
+ echo $output | iconv -c -f UTF-8
+
+ count=$(($count + 1))
+ [ $count -eq $MAXUPLOADS ] && break
+ done
+ test $# -eq 1 || echo
+done
+
+exit 0
--- /dev/null
+.TH WHODEPENDS 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+whodepends \- check which maintainers' packages depend on a package
+.SH SYNOPSIS
+\fBwhodepends\fP [\fIpackage\fR] [\fIoptions\fR]
+.SH DESCRIPTION
+\fBwhodepends\fR gives the names, e-mail addresses and the packages they
+maintain of all maintainers who have packages depending on the given
+package.
+.SH OPTIONS
+.TP
+.B \-\-help\fP, \fB\-h
+Show a brief usage message.
+.TP
+.B \-\-version\fP, \fB\-v
+Show version and copyright information.
+.SH BUGS
+\fBwhodepends\fR is not very efficient.
+.SH AUTHOR
+\fBwhodepends\fR has been written by Moshe Zadka <moshez@debian.org>.
--- /dev/null
+#!/bin/bash
+# whodepends - show maintainers a package depends upon
+# by Moshe Zadka <moshez@debian.org> and
+# modified by Joshua Kwan <joshk@triplehelix.org>
+# This script is in the public domain.
+
+set -e
+
+PROGNAME=`basename $0`
+
+usage () {
+ cat <<EOF
+Usage: $PROGNAME [package] [package] ... [options]
+ Check which maintainers a particular package depends on.
+ $PROGNAME options:
+ --source, -s Show source packages instead of binary ones.
+ --help, -h Show this help screen.
+ --version Show version and copyright information.
+EOF
+}
+
+version () {
+ cat <<EOF
+This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This code is by Moshe Zadka <moshez@debian.org>, and is in the public domain.
+EOF
+}
+
+if [ -z "$1" ]; then
+ usage
+ exit 1
+fi
+
+while [ -n "$1" ]; do
+ case "$1" in
+ -s | --source) source=true ;;
+ -h | --help) usage; exit 0 ;;
+ --version) version; exit 0 ;;
+ *)
+ echo "Dependent maintainers for $1:"
+ for package in `apt-cache showpkg $1 | sed -n '/Reverse Depends:/,/Dependencies/p' | grep '^ '|sed 's/,.*//'`; do
+ if [ $source ]; then
+ apt-cache showsrc $package |
+ awk '/^Maintainer:/ {maint=$0} /^Package:/ {pkg=$0} END {print maint, pkg}' |
+ sed 's/Maintainer: //;s/Package: //'
+ else
+ apt-cache show $package |
+ awk '/^Maintainer:/ {maint=$0} END {print maint, "'$package'"}' |
+ sed 's/Maintainer: //'
+ fi
+ done | sort -u | awk -F'>' '{ pack[$1]=pack[$1] $2 } END {for (val in pack) print val ">", "(" pack[val] ")"}' | sed 's/( /(/'
+ echo
+ ;;
+ esac
+ shift
+done
--- /dev/null
+.TH WNPP-ALERT 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+wnpp-alert \- check for installed packages up for adoption or orphaned
+.SH SYNOPSIS
+\fBwnpp-alert \fR[\fB\-\-diff\fR] [\fIpackage\fR ...]
+.br
+\fBwnpp-alert \-\-help\fR|\fB\-\-version\fR
+.SH DESCRIPTION
+\fBwnpp-alert\fR downloads the lists of packages which have been
+orphaned (O), are up for adoption (RFA), or the maintainer has asked
+for help (RFH) from the WNPP webpages, and then outputs a list of
+packages installed on the system, or matching the listed packages,
+which are in those lists.
+.PP
+Note that WNPP, and therefore \fBwnpp-alert\fR's output, is source
+package based.
+.SH OPTIONS
+.TP
+.BR \-\-diff ", " \-d
+If the \fI~/.devscripts_cache\fP directory exists, compare the output of
+\fBwnpp-alert\fR to the previous output (cached in the file
+\fIwnpp-diff\fR) and output the differences.
+.TP
+.BR \-\-help ", " \-h
+Show a summary of options.
+.TP
+.BR \-\-version ", " \-v
+Show version and copyright information.
+.SH SEE ALSO
+https://www.debian.org/devel/wnpp
+.SH AUTHOR
+\fBwnpp-alert\fR was written by Arthur Korn <arthur@korn.ch> and
+modified by Julian Gilbey <jdg@debian.org> for the devscripts
+package. It is in the public domain.
--- /dev/null
+#!/bin/bash
+
+# wnpp-alert -- check for installed packages which have been orphaned
+# or put up for adoption
+
+# This script is in the PUBLIC DOMAIN.
+# Authors:
+# Arthur Korn <arthur@korn.ch>
+
+# Arthur wrote:
+# Get a list of packages with bugnumbers. I tried with LDAP, but this
+# is _much_ faster.
+# And I (Julian) tried it with Perl's LWP, but this is _much_ faster
+# (startup time is huge). And even Perl with wget is slower by 50%....
+
+set -e
+
+PROGNAME="${0##*/}"
+CACHEDIR=~/.devscripts_cache
+CACHEDDIFF="${CACHEDIR}/wnpp-diff"
+CURLORWGET=""
+GETCOMMAND=""
+
+usage () { echo \
+"Usage: $PROGNAME [--help|-h|--version|-v|--diff|-d] [package ...]
+ List all installed (or listed) packages with Request for
+ Adoption (RFA), Request for Help (RHF), or Orphaned (O)
+ bugs against them, as determined from the WNPP website.
+ https://www.debian.org/devel/wnpp"
+}
+
+version () { echo \
+"This is $PROGNAME, from the Debian devscripts package, version ###VERSION###
+This script is in the PUBLIC DOMAIN.
+Authors: Arthur Korn <arthur@korn.ch>
+Modifications: Julian Gilbey <jdg@debian.org>"
+}
+
+wnppdiff () {
+ if [ ! -f "$CACHEDDIFF" ]; then
+ # First use
+ comm -12 $WNPP_PACKAGES $INSTALLED | sed -e 's/+/\\+/g' | \
+ xargs -i egrep '^[A-Z]+ [0-9]+ {} ' $WNPP | \
+ tee $CACHEDDIFF
+ else
+ comm -12 $WNPP_PACKAGES $INSTALLED | sed -e 's/+/\\+/g' | \
+ xargs -i egrep '^[A-Z]+ [0-9]+ {} ' $WNPP > $WNPP_DIFF
+ sort -o $CACHEDDIFF $CACHEDDIFF
+ sort -o $WNPP_DIFF $WNPP_DIFF
+ comm -3 $CACHEDDIFF $WNPP_DIFF | \
+ sed -e 's/\t/\+/g' -e 's/^\([^+]\)/-\1/g'
+ mv $WNPP_DIFF $CACHEDDIFF
+ fi
+}
+
+if [ "x$1" = "x--help" -o "x$1" = "x-h" ]; then usage; exit 0; fi
+if [ "x$1" = "x--version" -o "x$1" = "x-v" ]; then version; exit 0; fi
+
+if command -v wget >/dev/null 2>&1; then
+ CURLORWGET="wget"
+ GETCOMMAND="wget -q -O"
+elif command -v curl >/dev/null 2>&1; then
+ CURLORWGET="curl"
+ GETCOMMAND="curl -qfs -o"
+else
+ echo "$PROGNAME: need either the wget or curl package installed to run this" >&2
+ exit 1
+fi
+
+
+# Let's abandon this directory from now on, these files are so small
+# (see bug#309802)
+if [ -d "$CACHEDIR" ]; then
+ rm -f "$CACHEDIR"/orphaned "$CACHEDIR"/rfa_bypackage
+fi
+
+INSTALLED=`mktemp -t wnppalert-installed.XXXXXX`
+trap "rm -f '$INSTALLED'" 0 1 2 3 7 10 13 15
+WNPP=`mktemp -t wnppalert-wnpp.XXXXXX`
+WNPPTMP=`mktemp -t wnppalert-wnpp.XXXXXX`
+trap "rm -f '$INSTALLED' '$WNPP' '$WNPPTMP'" 0 1 2 3 7 10 13 15
+WNPP_PACKAGES=`mktemp -t wnppalert-wnpp_packages.XXXXXX`
+trap "rm -f '$INSTALLED' '$WNPP' '$WNPPTMP' '$WNPP_PACKAGES'" \
+ 0 1 2 3 7 10 13 15
+
+if [ "x$1" = "x--diff" ] || [ "x$1" = "x-d" ]; then
+ shift
+ WNPP_DIFF=`mktemp -t wnppalert-wnpp_diff.XXXXXX`
+ trap "rm -f '$INSTALLED' '$WNPP' '$WNPPTMP' '$WNPP_PACKAGES' '$WNPP_DIFF'" \
+ 0 1 2 3 7 10 13 15
+fi
+
+# Here's a really sly sed script. Rather than first grepping for
+# matching lines and then processing them, this attempts to sed
+# every line; those which succeed execute the 'p' command, those
+# which don't skip over it to the label 'd'
+$GETCOMMAND $WNPPTMP http://www.debian.org/devel/wnpp/orphaned || \
+ { echo "$PROGNAME: $CURLORWGET http://www.debian.org/devel/wnpp/orphaned failed" >&2; exit 1; }
+sed -ne 's/.*<li><a href="https\?:\/\/bugs.debian.org\/\([0-9]*\)">\([^:<]*\)[: ]*\([^<]*\)<\/a>.*/O \1 \2 -- \3/; T d; p; : d' $WNPPTMP > $WNPP
+
+$GETCOMMAND $WNPPTMP http://www.debian.org/devel/wnpp/rfa_bypackage || \
+ { echo "$PROGNAME: $CURLORWGET http://www.debian.org/devel/wnpp/rfa_bypackage" >&2; exit 1; }
+sed -ne 's/.*<li><a href="https\?:\/\/bugs.debian.org\/\([0-9]*\)">\([^:<]*\)[: ]*\([^<]*\)<\/a>.*/RFA \1 \2 -- \3/; T d; p; : d' $WNPPTMP >> $WNPP
+
+$GETCOMMAND $WNPPTMP http://www.debian.org/devel/wnpp/help_requested || \
+ { echo "$PROGNAME: $CURLORWGET http://www.debian.org/devel/wnpp/help_requested" >&2; exit 1; }
+sed -ne 's/.*<li><a href="https\?:\/\/bugs.debian.org\/\([0-9]*\)">\([^:<]*\)[: ]*\([^<]*\)<\/a>.*/RFH \1 \2 -- \3/; T d; p; : d' $WNPPTMP >> $WNPP
+
+cut -f3 -d' ' $WNPP | sort > $WNPP_PACKAGES
+
+# A list of installed files.
+
+if [ $# -gt 0 ]; then
+ echo $* | tr ' ' '\n' | sort -u > $INSTALLED
+else
+ dpkg-query -W -f '${Package} ${Status}\n${Source} ${Status}\n' | \
+ awk '/^[^ ].*install ok installed/{print $1}' | \
+ sort -u \
+ > $INSTALLED
+fi
+
+if [ -f "$WNPP_DIFF" ]; then
+ if [ -d "$CACHEDIR" ]; then
+ wnppdiff
+ exit 0
+ else
+ echo "$PROGNAME: Unable to create diff; displaying full output"
+ fi
+fi
+
+comm -12 $WNPP_PACKAGES $INSTALLED | sed -e 's/+/\\+/g' | \
+xargs -i egrep '^[A-Z]+ [0-9]+ {} ' $WNPP
--- /dev/null
+.TH WNPP-CHECK 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
+.SH NAME
+wnpp-check \- check if a package is being packaged or if this has been requested
+.SH SYNOPSIS
+\fBwnpp-check \fIpackage \fR...
+.br
+\fBwnpp-check \-\-help\fR|\fB\-\-version\fR
+.SH DESCRIPTION
+\fBwnpp-check\fR downloads the lists of packages which are listed as being
+packaged (ITPed) or for which a package has been requested (RFPed) from the
+WNPP website and lists any packages supplied on the command line which appear
+in those lists.
+.PP
+Note that WNPP, and therefore \fBwnpp-check\fR's output, is source
+package based.
+.SH OPTIONS
+.TP
+.BR \-\-help ", " \-h
+Show a summary of options.
+.TP
+.BR \-\-version ", " \-v
+Show version and copyright information.
+.SH SEE ALSO
+https://www.debian.org/devel/wnpp
+.SH EXIT STATUS
+.TP
+0
+None of the packages supplied has an open ITP or RFP
+.TP
+1
+Either an error occurred or at least one package supplied has an open ITP or
+RFP
+.SH AUTHOR
+\fBwnpp-check\fR was written by David Paleino <d.paleino@gmail.com>; this man
+page was written by Adam D. Barratt <adam@adam-barratt.org.uk> for the
+devscripts package.
+\fBwnpp-check\fR was originally based on \fBwnpp-alert\fR, which was written
+by Arthur Korn <arthur@korn.ch> and modified by Julian Gilbey <jdg@debian.org>
+for the devscripts package. Both scripts are in the public domain.
--- /dev/null
+#!/bin/bash
+
+# wnpp-check -- check for software being packaged or requested
+
+# This script is in the PUBLIC DOMAIN.
+# Authors:
+# David Paleino <d.paleino@gmail.com>
+#
+# Adapted from wnpp-alert, by Arthur Korn <arthur@korn.ch>
+
+set -e
+
+PACKAGES="$@"
+CURLORWGET=""
+GETCOMMAND=""
+
+usage () { echo \
+"Usage: ${0##*/} <package name> [...]
+ -h,--help Show this help message
+ -v,--version Show a version message
+
+ Check whether a package is listed as being packaged (ITPed) or has an
+ outstanding request for packaging (RFP) on the WNPP website
+ https://www.debian.org/devel/wnpp/"
+}
+
+version () { echo \
+"This is ${0##*/}, from the Debian devscripts package, version ###VERSION###
+This script is in the PUBLIC DOMAIN.
+Authors: David Paleino <d.paleino@gmail.com>
+Adapted from wnpp-alert, by Arthur Korn <arthur@korn.ch>,
+with modifications by Julian Gilbey <jdg@debian.org>"
+}
+
+if [ "x$1" = "x--help" -o "x$1" = "x-h" ]; then usage; exit 0; fi
+if [ "x$1" = "x--version" -o "x$1" = "x-v" ]; then version; exit 0; fi
+if [ "x$1" = "x" ]; then usage; exit 1; fi
+
+if command -v wget >/dev/null 2>&1; then
+ CURLORWGET="wget"
+ GETCOMMAND="wget -q -O"
+elif command -v curl >/dev/null 2>&1; then
+ CURLORWGET="curl"
+ GETCOMMAND="curl -qfs -o"
+else
+ echo "${0##*/}: need either the wget or curl package installed to run this" >&2
+ exit 1
+fi
+
+WNPP=`mktemp -t wnppcheck-wnpp.XXXXXX`
+WNPPTMP=`mktemp -t wnppcheck-wnpp.XXXXXX`
+trap "rm -f '$WNPP' '$WNPPTMP'" 0 1 2 3 7 10 13 15
+WNPP_PACKAGES=`mktemp -t wnppcheck-wnpp_packages.XXXXXX`
+trap "rm -f '$WNPP' '$WNPPTMP' '$WNPP_PACKAGES'" \
+ 0 1 2 3 7 10 13 15
+
+# Here's a really sly sed script. Rather than first grepping for
+# matching lines and then processing them, this attempts to sed
+# every line; those which succeed execute the 'p' command, those
+# which don't skip over it to the label 'd'
+
+$GETCOMMAND $WNPPTMP http://www.debian.org/devel/wnpp/being_packaged || \
+ { echo "${0##*/}: $CURLORWGET http://www.debian.org/devel/wnpp/being_packaged failed." >&2; exit 1; }
+sed -ne 's/.*<li><a href="https\?:\/\/bugs.debian.org\/\([0-9]*\)">\([^:<]*\)[: ]*\([^<]*\)<\/a>.*/ITP \1 \2 -- \3/; T d; p; : d' $WNPPTMP > $WNPP
+
+$GETCOMMAND $WNPPTMP http://www.debian.org/devel/wnpp/requested || \
+ { echo "${0##*/}: $CURLORWGET http://www.debian.org/devel/wnpp/requested failed." >&2; exit 1; }
+sed -ne 's/.*<li><a href="https\?:\/\/bugs.debian.org\/\([0-9]*\)">\([^:<]*\)[: ]*\([^<]*\)<\/a>.*/RFP \1 \2 -- \3/; T d; p; : d' $WNPPTMP >> $WNPP
+
+awk -F' ' '{print "("$1" - #"$2") http://bugs.debian.org/"$2" "$3}' $WNPP | sort -k 5 > $WNPP_PACKAGES
+
+FOUND=0
+for pkg in $PACKAGES
+do
+ grep $pkg $WNPP_PACKAGES && FOUND=1
+done
+
+exit $FOUND
--- /dev/null
+#!/usr/bin/python3
+#
+# Copyright (C) 2010-2014, Benjamin Drung <bdrung@debian.org>
+# 2010, Stefano Rivera <stefanor@ubuntu.com>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+import glob
+import optparse
+import os
+import re
+import sys
+
+from devscripts.control import Control
+
+CONTROL_LIST_FIELDS = (
+ "Breaks",
+ "Build-Conflicts",
+ "Build-Depends",
+ "Build-Depends-Indep",
+ "Conflicts",
+ "Depends",
+ "Enhances",
+ "Pre-Depends",
+ "Provides",
+ "Recommends",
+ "Replaces",
+ "Suggests",
+ "Xb-Npp-MimeType",
+)
+
+SUPPORTED_FILES = (
+ "control",
+ "control*.in",
+ "copyright",
+ "copyright.in",
+ "install",
+ "*.install",
+)
+
+
+class WrapAndSortControl(Control):
+ def __init__(self, filename, max_line_length):
+ super().__init__(filename)
+ self.max_line_length = max_line_length
+
+ def wrap_and_sort(self, wrap_always, short_indent, sort_paragraphs,
+ keep_first, trailing_comma):
+ for paragraph in self.paragraphs:
+ for field in CONTROL_LIST_FIELDS:
+ if field in paragraph:
+ self._wrap_field(paragraph, field, wrap_always,
+ short_indent, trailing_comma)
+ if "Uploaders" in paragraph:
+ self._wrap_field(paragraph, "Uploaders", wrap_always,
+ short_indent, trailing_comma, False)
+ if "Architecture" in paragraph:
+ archs = set(paragraph["Architecture"].split())
+ # Sort, with wildcard entries (such as linux-any) first:
+ archs = sorted(archs, key=lambda x: ("any" not in x, x))
+ paragraph["Architecture"] = " ".join(archs)
+
+ if sort_paragraphs:
+ first = self.paragraphs[:1 + int(keep_first)]
+ sortable = self.paragraphs[1 + int(keep_first):]
+ key = lambda x: x.get("Package")
+ self.paragraphs = first + sorted(sortable, key=key)
+
+ def _wrap_field(self, control, entry, wrap_always, short_indent,
+ trailing_comma, sort=True):
+ packages = [x.strip() for x in control[entry].split(",")]
+
+ # Sanitize alternative packages. E.g. "a|b |c" -> "a | b | c"
+ packages = [" | ".join([x.strip() for x in p.split("|")]) for p in packages]
+
+ if sort:
+ # Remove duplicate entries
+ packages = set(packages)
+ # Not explicitly disallowed by Policy but known to break QA tools:
+ if "" in packages:
+ packages.remove("")
+ packages = sort_list(packages)
+
+ length = len(entry) + sum([2 + len(package) for package in packages])
+ if wrap_always or length > self.max_line_length:
+ indentation = " "
+ if not short_indent:
+ indentation *= len(entry) + 2
+ packages_with_indention = [indentation + x for x in packages]
+ packages_with_indention = ",\n".join(packages_with_indention)
+ if trailing_comma:
+ packages_with_indention += ','
+ if short_indent:
+ control[entry] = "\n" + packages_with_indention
+ else:
+ control[entry] = packages_with_indention.strip()
+ else:
+ control[entry] = ", ".join(packages).strip()
+
+
+class Install(object):
+ def __init__(self, filename):
+ self.content = None
+ self.filename = None
+ self.open(filename)
+
+ def open(self, filename):
+ assert os.path.isfile(filename), "%s does not exist." % (filename)
+ self.filename = filename
+ self.content = [l.strip() for l in open(filename).readlines()]
+
+ def save(self, filename=None):
+ if filename:
+ self.filename = filename
+ install_file = open(self.filename, "w")
+ install_file.write("\n".join(self.content) + "\n")
+ install_file.close()
+
+ def sort(self):
+ self.content = sorted(self.content)
+
+
+def remove_trailing_whitespaces(filename):
+ assert os.path.isfile(filename), "%s does not exist." % (filename)
+ content = open(filename).read().rstrip() + "\n"
+ lines = content.split("\n")
+ lines = [l.rstrip() for l in lines]
+ new_content = "\n".join(lines)
+ f = open(filename, "w")
+ f.write(new_content)
+ f.close()
+
+
+def sort_list(unsorted_list):
+ packages = [x for x in unsorted_list if re.match("[a-z0-9]", x)]
+ special = [x for x in unsorted_list if not re.match("[a-z0-9]", x)]
+ return sorted(packages) + sorted(special)
+
+
+def wrap_and_sort(options):
+ control_files = [f for f in options.files if re.search("/control[^/]*$", f)]
+ for control_file in control_files:
+ if options.verbose:
+ print(control_file)
+ control = WrapAndSortControl(control_file, options.max_line_length)
+ if options.cleanup:
+ control.strip_trailing_spaces()
+ control.wrap_and_sort(options.wrap_always, options.short_indent,
+ options.sort_binary_packages, options.keep_first,
+ options.trailing_comma)
+ control.save()
+
+ copyright_files = [f for f in options.files
+ if re.search("/copyright[^/]*$", f)]
+ for copyright_file in copyright_files:
+ if options.verbose:
+ print(copyright_file)
+ remove_trailing_whitespaces(copyright_file)
+
+ install_files = [f for f in options.files if re.search("install$", f)]
+ for install_file in sorted(install_files):
+ if options.verbose:
+ print(install_file)
+ install = Install(install_file)
+ install.sort()
+ install.save()
+
+
+def get_files(debian_directory):
+ """Returns a list of files that should be wrapped and sorted."""
+ files = []
+ for supported_files in SUPPORTED_FILES:
+ file_pattern = os.path.join(debian_directory, supported_files)
+ files.extend(file_name for file_name in glob.glob(file_pattern)
+ if not os.access(file_name, os.X_OK))
+ return files
+
+
+def main():
+ script_name = os.path.basename(sys.argv[0])
+ usage = "%s [options]" % (script_name)
+ epilog = "See %s(1) for more info." % (script_name)
+ parser = optparse.OptionParser(usage=usage, epilog=epilog)
+
+ parser.add_option("-a", "--wrap-always", action="store_true", default=False,
+ help="wrap lists even if they do not exceed the line length limit")
+ parser.add_option("-s", "--short-indent", dest="short_indent",
+ help="only indent wrapped lines by one space (default is "
+ "in-line with the field name)",
+ action="store_true", default=False)
+ parser.add_option("-b", "--sort-binary-packages",
+ help="Sort binary package paragraphs by name",
+ dest="sort_binary_packages", action="store_true",
+ default=False)
+ parser.add_option("-k", "--keep-first",
+ help="When sorting binary package paragraphs, leave the "
+ "first one at the top. Unqualified debhelper "
+ "configuration files are applied to the first "
+ "package.",
+ dest="keep_first", action="store_true", default=False)
+ parser.add_option("-n", "--no-cleanup", help="don't cleanup whitespaces",
+ dest="cleanup", action="store_false", default=True)
+ parser.add_option("-t", "--trailing-comma", help="add trailing comma",
+ dest="trailing_comma", action="store_true",
+ default=False)
+ parser.add_option("-d", "--debian-directory", dest="debian_directory",
+ help="location of the 'debian' directory (default: "
+ "./debian)", metavar="PATH", default="debian")
+ parser.add_option("-f", "--file", metavar="FILE",
+ dest="files", action="append", default=list(),
+ help="Wrap and sort only the specified file.")
+ parser.add_option("-v", "--verbose",
+ help="print all files that are touched",
+ dest="verbose", action="store_true", default=False)
+ parser.add_option("--max-line-length", type='int', default=79,
+ help="set maximum allowed line length before wrapping (default: %default)")
+
+ (options, args) = parser.parse_args()
+
+ if len(args) != 0:
+ parser.error("Unsupported additional parameters specified: %s" %
+ ", ".join(args))
+
+ if not os.path.isdir(options.debian_directory):
+ parser.error('Debian directory not found, expecting "%s".' %
+ options.debian_directory)
+
+ not_found = [f for f in options.files if not os.path.isfile(f)]
+ if not_found:
+ parser.error('Specified files not found: %s' % ", ".join(not_found))
+
+ if not options.files:
+ options.files = get_files(options.debian_directory)
+
+ wrap_and_sort(options)
+
+if __name__ == "__main__":
+ main()
--- /dev/null
+test:
+ ./test_annotate-output
+ ./test_checkbashisms
+ ./test_dd-list
+ ./test_debchange
+ ./test_debdiff
+ ./test_licensecheck
+ ./test_uscan
+ ./test_mk-origtargz
+
+test-installed:
+ ./test_annotate-output --installed
+ ./test_checkbashisms --installed
+ ./test_dd-list --installed
+ ./test_debchange --installed
+ ./test_debdiff --installed
+ ./test_licensecheck --installed
+ ./test_uscan --installed
+ ./test_mk-origtargz --installed
+
+online-test:
+ ./test_uscan_online
+
+.PHONY: test test-installed online-test
--- /dev/null
+#!/bin/sh
+
+foo() {}
+
+foo \
+source something
--- /dev/null
+#!/usr/bin/make -f
+
+foo:
+ if [ "$$(< $(DEBIAN)/foo md5sum)" != "$$(cat $(DEBIAN)/foo.md5)" ] ; then \
+ echo moo; \
+ fi
--- /dev/null
+#!/bin/sh
+metric=0
+echo $((metric=metric+1))
+
+m=0
+n=2
+echo $((n-m++)) # BASHISM
+echo $((++m)) # BASHISM
+echo $(( m-- )) # BASHISM
+echo $((--m)) # BASHISM
+
+foo_bar=0
+echo $((foo_bar++)) # BASHISM
+echo $((foo_bar=foo_bar*2))
+echo $((foo_bar*3/6))
+
+echo $((2*n++)) # BASHISM
+
+echo $(($n*n++)) # BASHISM
+
+echo $((3**2)) # BASHISM
--- /dev/null
+possible bashism in bashisms/arith.sh line 7 ('$((n++))' should be '$n; $((n=n+1))'):
+echo $((n-m++)) # BASHISM
+possible bashism in bashisms/arith.sh line 8 ('$((++n))' should be '$((n=n+1))'):
+echo $((++m)) # BASHISM
+possible bashism in bashisms/arith.sh line 9 ('$((n--))' should be '$n; $((n=n-1))'):
+echo $(( m-- )) # BASHISM
+possible bashism in bashisms/arith.sh line 10 ('$((--n))' should be '$((n=n-1))'):
+echo $((--m)) # BASHISM
+possible bashism in bashisms/arith.sh line 13 ('$((n++))' should be '$n; $((n=n+1))'):
+echo $((foo_bar++)) # BASHISM
+possible bashism in bashisms/arith.sh line 17 ('$((n++))' should be '$n; $((n=n+1))'):
+echo $((2*n++)) # BASHISM
+possible bashism in bashisms/arith.sh line 19 ('$((n++))' should be '$n; $((n=n+1))'):
+echo $(($n*n++)) # BASHISM
+possible bashism in bashisms/arith.sh line 21 (exponentiation is not POSIX):
+echo $((3**2)) # BASHISM
--- /dev/null
+#!/bin/sh
+
+# This is a TO DO, but irrelevant to this test case:
+foo=(foo bar moo BASH ISM)
+
+n=1
+
+echo BASHISM ${foo[1]%r}
+echo BASHISM ${foo[$n]%r}
+echo BASHISM ${foo[*]%o}
+echo BASHISM ${foo[@]%o}
+
+echo BASHISM ${foo[1]%%r}
+echo BASHISM ${foo[$n]%%r}
+echo BASHISM ${foo[*]%%o}
+echo BASHISM ${foo[@]%%o}
+
+echo BASHISM ${foo[1]#*a}
+echo BASHISM ${foo[$n]#*a}
+echo BASHISM ${foo[*]#*o}
+echo BASHISM ${foo[@]#*o}
+
+echo BASHISM ${foo[1]##*a}
+echo BASHISM ${foo[$n]##*a}
+echo BASHISM ${foo[*]##*o}
+echo BASHISM ${foo[@]##*o}
+
+echo BASHISM ${#foo[1]}
+echo BASHISM ${#foo[$n]}
+echo BASHISM ${#foo[*]}
+echo BASHISM ${#foo[@]}
+
+# Technically, there are two bashisms here, but I'm happy if it at
+# least matches one. The regexes become more complex without real gain
+# otherwise. (hence the "BASH ISMS", with the extra space)
+
+echo BASHISM BASH ISMS ${foo[1]^*a}
+echo BASHISM BASH ISMS ${foo[$n]^*a}
+echo BASHISM BASH ISMS ${foo[*]^*o}
+echo BASHISM BASH ISMS ${foo[@]^*o}
+
+echo BASHISM BASH ISMS ${foo[1]^^*a}
+echo BASHISM BASH ISMS ${foo[$n]^^*a}
+echo BASHISM BASH ISMS ${foo[*]^^*o}
+echo BASHISM BASH ISMS ${foo[@]^^*o}
+
+echo BASHISM BASH ISMS ${foo[1],*a}
+echo BASHISM BASH ISMS ${foo[$n],*a}
+echo BASHISM BASH ISMS ${foo[*],*a}
+echo BASHISM BASH ISMS ${foo[@],*a}
+
+echo BASHISM BASH ISMS ${foo[1],,*a}
+echo BASHISM BASH ISMS ${foo[$n],,*a}
+echo BASHISM BASH ISMS ${foo[*],,*a}
+echo BASHISM BASH ISMS ${foo[@],,*a}
+
+echo BASHISM BASH ISMS ${foo[1]/a/R}
+echo BASHISM BASH ISMS ${foo[$n]/a/R}
+echo BASHISM BASH ISMS ${foo[*]/a/R}
+echo BASHISM BASH ISMS ${foo[@]/a/R}
--- /dev/null
+possible bashism in bashisms/array-expansion.sh line 8 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[1]%r}
+possible bashism in bashisms/array-expansion.sh line 9 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[$n]%r}
+possible bashism in bashisms/array-expansion.sh line 10 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[*]%o}
+possible bashism in bashisms/array-expansion.sh line 11 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[@]%o}
+possible bashism in bashisms/array-expansion.sh line 13 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[1]%%r}
+possible bashism in bashisms/array-expansion.sh line 14 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[$n]%%r}
+possible bashism in bashisms/array-expansion.sh line 15 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[*]%%o}
+possible bashism in bashisms/array-expansion.sh line 16 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[@]%%o}
+possible bashism in bashisms/array-expansion.sh line 18 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[1]#*a}
+possible bashism in bashisms/array-expansion.sh line 19 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[$n]#*a}
+possible bashism in bashisms/array-expansion.sh line 20 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[*]#*o}
+possible bashism in bashisms/array-expansion.sh line 21 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[@]#*o}
+possible bashism in bashisms/array-expansion.sh line 23 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[1]##*a}
+possible bashism in bashisms/array-expansion.sh line 24 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[$n]##*a}
+possible bashism in bashisms/array-expansion.sh line 25 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[*]##*o}
+possible bashism in bashisms/array-expansion.sh line 26 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${foo[@]##*o}
+possible bashism in bashisms/array-expansion.sh line 28 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${#foo[1]}
+possible bashism in bashisms/array-expansion.sh line 29 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${#foo[$n]}
+possible bashism in bashisms/array-expansion.sh line 30 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${#foo[*]}
+possible bashism in bashisms/array-expansion.sh line 31 (bash arrays, ${name[0|*|@]}):
+echo BASHISM ${#foo[@]}
+possible bashism in bashisms/array-expansion.sh line 37 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[1]^*a}
+possible bashism in bashisms/array-expansion.sh line 38 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[$n]^*a}
+possible bashism in bashisms/array-expansion.sh line 39 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[*]^*o}
+possible bashism in bashisms/array-expansion.sh line 40 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[@]^*o}
+possible bashism in bashisms/array-expansion.sh line 42 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[1]^^*a}
+possible bashism in bashisms/array-expansion.sh line 43 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[$n]^^*a}
+possible bashism in bashisms/array-expansion.sh line 44 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[*]^^*o}
+possible bashism in bashisms/array-expansion.sh line 45 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[@]^^*o}
+possible bashism in bashisms/array-expansion.sh line 47 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[1],*a}
+possible bashism in bashisms/array-expansion.sh line 48 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[$n],*a}
+possible bashism in bashisms/array-expansion.sh line 49 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[*],*a}
+possible bashism in bashisms/array-expansion.sh line 50 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[@],*a}
+possible bashism in bashisms/array-expansion.sh line 52 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[1],,*a}
+possible bashism in bashisms/array-expansion.sh line 53 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[$n],,*a}
+possible bashism in bashisms/array-expansion.sh line 54 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[*],,*a}
+possible bashism in bashisms/array-expansion.sh line 55 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[@],,*a}
+possible bashism in bashisms/array-expansion.sh line 57 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[1]/a/R}
+possible bashism in bashisms/array-expansion.sh line 58 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[$n]/a/R}
+possible bashism in bashisms/array-expansion.sh line 59 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[*]/a/R}
+possible bashism in bashisms/array-expansion.sh line 60 (bash arrays, ${name[0|*|@]}):
+echo BASHISM BASH ISMS ${foo[@]/a/R}
--- /dev/null
+#!/bin/sh
+
+setvar foo bar # BASHISM
+[ bar = "$foo" ]
--- /dev/null
+possible bashism in bashisms/ash-setvar.sh line 3 (setvar 'foo' 'bar' should be eval 'foo="'"$bar"'"'):
+setvar foo bar # BASHISM
--- /dev/null
+#!/usr/bin/make -f
+
+ override SHELL := bash
+
+test:
+ @echo -e foo
--- /dev/null
+#!/usr/bin/make -f
+
+SHELL := bash
+
+test:
+ echo -e foo
--- /dev/null
+#!/usr/bin/make -f
+
+# bug:
+overrideSHELL := bash
+
+test:
+ -echo -e "foo BASHISM"
+ @echo -e "bar BASHISM"
+ @-echo -e "bar BASHISM" && false
+ -@echo -e "bar BASHISM" && false
+ true
+
+dirs:
+source diff:
+source diff.gz::
+source file-stamp:
+caller %.so:
+ :
+
+foo: $(shell echo dir/BASHISM/{foo,bar})
+ :
--- /dev/null
+possible bashism in bashisms/basic.mk line 7 (echo -e):
+ -echo -e "foo BASHISM"
+possible bashism in bashisms/basic.mk line 8 (echo -e):
+ @echo -e "bar BASHISM"
+possible bashism in bashisms/basic.mk line 9 (echo -e):
+ @-echo -e "bar BASHISM" && false
+possible bashism in bashisms/basic.mk line 10 (echo -e):
+ -@echo -e "bar BASHISM" && false
+possible bashism in bashisms/basic.mk line 20 (brace expansion):
+foo: $(shell echo dir/BASHISM/{foo,bar})
--- /dev/null
+#!/bin/sh
+
+echo BASHISM{1..10}
+echo BASHISM{1..10..2}
+echo BASHISM{a..z}
+echo BASHISM{Z..a}
+echo BASHISM{a..z..2}
+echo {a.._}
+echo {a..9}
--- /dev/null
+possible bashism in bashisms/brace-expansion.sh line 3 (brace expansion, {a..b[..c]}should be $(seq a [c] b)):
+echo BASHISM{1..10}
+possible bashism in bashisms/brace-expansion.sh line 4 (brace expansion, {a..b[..c]}should be $(seq a [c] b)):
+echo BASHISM{1..10..2}
+possible bashism in bashisms/brace-expansion.sh line 5 (brace expansion):
+echo BASHISM{a..z}
+possible bashism in bashisms/brace-expansion.sh line 6 (brace expansion):
+echo BASHISM{Z..a}
+possible bashism in bashisms/brace-expansion.sh line 7 (brace expansion):
+echo BASHISM{a..z..2}
--- /dev/null
+#!/bin/sh
+
+foo=foo
+bar=BAR
+
+echo BASHISM: ${foo^f}
+echo BASHISM: ${foo^^o}
+echo BASHISM: ${bar,B}
+echo BASHISM: ${bar,,R}
+
+echo BASHISM: ${foo^}
+echo BASHISM: ${foo^^}
+echo BASHISM: ${bar,}
+echo BASHISM: ${bar,,}
+
+echo BASHISM: ${@^}
+echo BASHISM: ${*^^}
+echo BASHISM: ${@,}
+echo BASHISM: ${*,,}
--- /dev/null
+possible bashism in bashisms/case-modification.sh line 6 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${foo^f}
+possible bashism in bashisms/case-modification.sh line 7 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${foo^^o}
+possible bashism in bashisms/case-modification.sh line 8 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${bar,B}
+possible bashism in bashisms/case-modification.sh line 9 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${bar,,R}
+possible bashism in bashisms/case-modification.sh line 11 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${foo^}
+possible bashism in bashisms/case-modification.sh line 12 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${foo^^}
+possible bashism in bashisms/case-modification.sh line 13 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${bar,}
+possible bashism in bashisms/case-modification.sh line 14 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${bar,,}
+possible bashism in bashisms/case-modification.sh line 16 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${@^}
+possible bashism in bashisms/case-modification.sh line 17 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${*^^}
+possible bashism in bashisms/case-modification.sh line 18 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${@,}
+possible bashism in bashisms/case-modification.sh line 19 (${parm,[,][pat]} or ${parm^[^][pat]}):
+echo BASHISM: ${*,,}
--- /dev/null
+#!/bin/sh
+
+command test
+command -p test
+command -v test # BASHISM
+command -V test # BASHISM
--- /dev/null
+possible bashism in bashisms/command.sh line 5 ('command' with option other than -p):
+command -v test # BASHISM
+possible bashism in bashisms/command.sh line 6 ('command' with option other than -p):
+command -V test # BASHISM
--- /dev/null
+#!/bin/sh
+
+echo 's#/##g
+s# #/#'
+
+echo '
+' # foo() {} "
--- /dev/null
+#!/bin/sh
+
+echo "
+\" # " # foo() {} '
--- /dev/null
+#!/bin/sh
+
+echo $# ; echo -e BASHISM
--- /dev/null
+possible bashism in bashisms/comments-parsing-fns.sh line 3 (echo -e):
+echo $# ; echo -e BASHISM
--- /dev/null
+#!/bin/sh
+
+coproc true # BASHISM
--- /dev/null
+possible bashism in bashisms/coproc.sh line 3 (coproc):
+coproc true # BASHISM
--- /dev/null
+#!/bin/sh
+
+len=1
+f=foo
+
+echo "${f:1}" # BASHISM
+echo "${f:$len}" # BASHISM
+echo "${f:$len$len}" # BASHISM
+echo "${f:${len}}" # BASHISM
--- /dev/null
+possible bashism in bashisms/dynamic-length.sh line 6 (${foo:3[:1]}):
+echo "${f:1}" # BASHISM
+possible bashism in bashisms/dynamic-length.sh line 7 (${foo:3[:1]}):
+echo "${f:$len}" # BASHISM
+possible bashism in bashisms/dynamic-length.sh line 8 (${foo:3[:1]}):
+echo "${f:$len$len}" # BASHISM
+possible bashism in bashisms/dynamic-length.sh line 9 (${foo:3[:1]}):
+echo "${f:${len}}" # BASHISM
--- /dev/null
+#!/bin/sh
+
+# http://bugs.debian.org/687450
+exit -- 2 # BASHISM
+exit 255
+exit 256 # BASHISM
+exit -1 # BASHISM
--- /dev/null
+possible bashism in bashisms/exit-code.sh line 4 ('exit --' should be 'exit' (idem for return)):
+exit -- 2 # BASHISM
+possible bashism in bashisms/exit-code.sh line 6 (exit|return status code greater than 255):
+exit 256 # BASHISM
+possible bashism in bashisms/exit-code.sh line 7 (exit|return with negative status code):
+exit -1 # BASHISM
--- /dev/null
+#!/bin/sh
+
+eval $_INITSCRIPT force-reload ${HIDEOUTPUT:+\>/dev/null 2\>&1}
--- /dev/null
+#!/bin/sh
+
+echo -e "BASHISM" \
+ "something else \n"
+
+#exec ${loclibdir}/tkcon.tcl \
+# -eval "source ${loclibdir}/console.tcl" \
+# -slave "package require Tk; set argc $#; set argv [list $*]; \
+# source ${loclibdir}/xcircuit.tcl"
--- /dev/null
+possible bashism in bashisms/fps.sh line 4 (echo -e):
+echo -e "BASHISM" \
+ "something else \n"
--- /dev/null
+#!/bin/sh
+
+foo() {
+ :
+}
+
+_all_good () {
+ :
+}
+
+_all_good101_ ( ) {
+ :
+}
+
+function BASHISM() {
+ :
+}
+
+function BASHISM {
+ :
+}
+
+function BASHISM {
+ echo foo
+} &>/dev/null # BASHISM
+
+,() { # BASHISM
+ :
+}
+
+function foo:bar:BASHISM { # BASHISMS
+ :
+}
+
+function foo-bar-BASHISM() { # BASHISMS
+ :
+}
+
+foo-bar-BASHISM ( ) {
+ :
+}
+
+_ () {
+ :
+}
+
+function _ { #BASHISM
+ :
+}
+
+=() { #BASHISM
+ :
+}
+
+function BASHISM=() { #BASHISMS
+ :
+}
+
+function BASHISM= { #BASHISMS
+ :
+}
+
+# This doesn't work:
+#foo=() {
+# :
+#}
--- /dev/null
+possible bashism in bashisms/functions.sh line 15 ('function' is useless):
+function BASHISM() {
+possible bashism in bashisms/functions.sh line 19 ('function' is useless):
+function BASHISM {
+possible bashism in bashisms/functions.sh line 23 ('function' is useless):
+function BASHISM {
+possible bashism in bashisms/functions.sh line 25 (should be >word 2>&1):
+} &>/dev/null # BASHISM
+possible bashism in bashisms/functions.sh line 27 (function names should only contain [a-z0-9_]):
+,() { # BASHISM
+possible bashism in bashisms/functions.sh line 31 (function names should only contain [a-z0-9_]):
+function foo:bar:BASHISM { # BASHISMS
+possible bashism in bashisms/functions.sh line 31 ('function' is useless):
+function foo:bar:BASHISM { # BASHISMS
+possible bashism in bashisms/functions.sh line 35 (function names should only contain [a-z0-9_]):
+function foo-bar-BASHISM() { # BASHISMS
+possible bashism in bashisms/functions.sh line 35 ('function' is useless):
+function foo-bar-BASHISM() { # BASHISMS
+possible bashism in bashisms/functions.sh line 39 (function names should only contain [a-z0-9_]):
+foo-bar-BASHISM ( ) {
+possible bashism in bashisms/functions.sh line 47 ('function' is useless):
+function _ { #BASHISM
+possible bashism in bashisms/functions.sh line 51 (function names should only contain [a-z0-9_]):
+=() { #BASHISM
+possible bashism in bashisms/functions.sh line 55 (function names should only contain [a-z0-9_]):
+function BASHISM=() { #BASHISMS
+possible bashism in bashisms/functions.sh line 55 ('function' is useless):
+function BASHISM=() { #BASHISMS
+possible bashism in bashisms/functions.sh line 59 (function names should only contain [a-z0-9_]):
+function BASHISM= { #BASHISMS
+possible bashism in bashisms/functions.sh line 59 ('function' is useless):
+function BASHISM= { #BASHISMS
--- /dev/null
+#!/bin/sh
+
+echo $"hello world -- BASHISM"
+
+echo "foo ' bar moo'$"
--- /dev/null
+possible bashism in bashisms/gettext.sh line 3 ($"foo" should be eval_gettext "foo"):
+echo $"hello world -- BASHISM"
--- /dev/null
+#!/bin/sh
+
+GLOBIGNORE="run-tests.sh:BASHISM"
+echo *.sh | grep -q run-tests.sh || echo meh
--- /dev/null
+possible bashism in bashisms/glob-ignore.sh line 3 (GLOBIGNORE=):
+GLOBIGNORE="run-tests.sh:BASHISM"
--- /dev/null
+#!/bin/sh
+
+: BASHISM; hash
+hash which # BASHISM
+hash -r # BASHISM
--- /dev/null
+possible bashism in bashisms/hash.sh line 3 (hash):
+: BASHISM; hash
+possible bashism in bashisms/hash.sh line 4 (hash):
+hash which # BASHISM
+possible bashism in bashisms/hash.sh line 5 (hash):
+hash -r # BASHISM
--- /dev/null
+#!/bin/sh
+
+cat << -EOF1- 1>&2
+CLEAN
+-EOF1-
+
+cat << -EOF2 1>&2
+CLEAN
+-EOF2
+
+cat <<-EOF3 1>&2
+CLEAN
+ EOF3
+
+cat <<- EOF4 1>&2
+CLEAN
+ EOF4
+
+foo=bar
+
+cat << '-EOF1-' 1>&2
+CLEAN $foo
+-EOF1-
+
+cat << '-EOF2' 1>&2
+CLEAN $foo
+-EOF2
+
+cat <<-'EOF3' 1>&2
+CLEAN $foo
+ EOF3
+
+cat <<- 'EOF4' 1>&2
+CLEAN $foo
+ EOF4
--- /dev/null
+#!/bin/sh
+
+cat << =EOF1
+function CLEAN() {}
+=EOF1
+
+cat << :EOF2
+function CLEAN() {}
+:EOF2
+
+cat << ,EOF3
+function CLEAN() {}
+,EOF3
+
+cat << ?EOF4
+function CLEAN() {}
+?EOF4
+
+cat << E$OF5
+function CLEAN() {}
+E$OF5
+
+cat << $EOF6
+function CLEAN() {}
+$EOF6
+
+cat << EOF_7
+function CLEAN() {}
+EOF_7
+
+cat << EOF;:
+function CLEAN() {}
+EOF
+
+cat << EOF{}9
+function CLEAN() {}
+EOF{}9
+
+cat << EOF\ 10
+function CLEAN() {}
+EOF 10
+
+cat << EOF\;11
+function CLEAN() {}
+EOF;11
+
+cat << EOF\12
+function CLEAN() {}
+EOF12
+
+cat << EOF\\13
+function CLEAN() {}
+EOF\13
+
+cat << EOF\\1\\4
+function CLEAN() {}
+EOF\1\4
+
+cat << \<EOF15\>
+function CLEAN() {}
+<EOF15>
+
+cat << "E\OF16"
+function CLEAN() {}
+E\OF16
+
+cat << 'E\OF17'
+function CLEAN() {}
+E\OF17
+
+cat << EOF18|:
+function CLEAN() {}
+EOF18
+
+cat << EOF19>/dev/null
+echo -e CLEAN() {}
+EOF19
--- /dev/null
+#!/bin/sh
+
+cat <<- FOO
+ foo
+ bar
+ moo
+FOO
+
+echo -e moo # BASHISM
+
+foo() {
+ cat <<- FOO
+ foo
+ bar
+ moo
+ FOO
+ echo -e BASHISM
+}
+
+bar() {
+ cat <<- FOO
+ foo
+ bar
+ moo
+ FOO
+ echo -e nothing wrong here
+FOO
+ echo -e BASHISM
+}
+
+
+moo() {
+ cat << FOO
+ foo
+ bar
+ moo
+ FOO
+ echo -e nothing wrong here
+ FOO
+ echo -e still nothing wrong here
+FOO
+ echo -e BASHISM
+}
+
+baz() {
+ cat << EOF1
+EOF1
+ echo -e still inside the here doc
+EOF1 ; echo -e still inside...
+EOF1
+ echo -e BASHISM
+}
--- /dev/null
+possible bashism in bashisms/heredocs.sh line 9 (echo -e):
+echo -e moo # BASHISM
+possible bashism in bashisms/heredocs.sh line 17 (echo -e):
+ echo -e BASHISM
+possible bashism in bashisms/heredocs.sh line 28 (echo -e):
+ echo -e BASHISM
+possible bashism in bashisms/heredocs.sh line 42 (echo -e):
+ echo -e BASHISM
+possible bashism in bashisms/heredocs.sh line 51 (echo -e):
+ echo -e BASHISM
--- /dev/null
+#!/bin/sh
+
+# POSIX+UP:
+jobs # BASHISM
+jobs -l # BASHISM
+jobs -p # BASHISM
+
+# Non-POSIX at all:
+
+sleep 10 &
+j=$(jobs -p) # possible BASHISM (context changes because of subshell)
+jobs -r # BASHISM
+jobs -s # BASHISM
+jobs -n # BASHISM
+jobs -x # BASHISM
\ No newline at end of file
--- /dev/null
+possible bashism in bashisms/jobs.sh line 4 (jobs):
+jobs # BASHISM
+possible bashism in bashisms/jobs.sh line 5 (jobs):
+jobs -l # BASHISM
+possible bashism in bashisms/jobs.sh line 6 (jobs):
+jobs -p # BASHISM
+possible bashism in bashisms/jobs.sh line 11 (jobs):
+j=$(jobs -p) # possible BASHISM (context changes because of subshell)
+possible bashism in bashisms/jobs.sh line 12 (jobs):
+jobs -r # BASHISM
+possible bashism in bashisms/jobs.sh line 13 (jobs):
+jobs -s # BASHISM
+possible bashism in bashisms/jobs.sh line 14 (jobs):
+jobs -n # BASHISM
+possible bashism in bashisms/jobs.sh line 15 (jobs):
+jobs -x # BASHISM
--- /dev/null
+#!/bin/sh
+
+echo foo; \
+shopt something # BASHISM
+
+echo foo; echo \
+shopt something
+
+cat <<EOF \
+&>/dev/null #BASHISM
+bar
+moo
+EOF
+
+cat <<EOF
+foo\
+bar\
+moo
+EOF
--- /dev/null
+possible bashism in bashisms/line-continuation.sh line 4 (shopt):
+echo foo; \
+shopt something # BASHISM
+possible bashism in bashisms/line-continuation.sh line 10 (should be >word 2>&1):
+cat <<EOF \
+&>/dev/null #BASHISM
--- /dev/null
+#!/bin/sh
+
+case "moo" in
+ [^f]oo) # BASHISM
+ echo hey
+ ;;
+ [!f]oo)
+ echo hey
+ ;;
+esac
+
--- /dev/null
+possible bashism in bashisms/negations.sh line 4 ([^] should be [!]):
+ [^f]oo) # BASHISM
--- /dev/null
+#!/bin/sh
+
+test() {
+ echo $FUNCNAME BASHISM
+}
+
+test
+
+echo $DIRSTACK BASHISM
+echo $SECONDS BASHISM
+echo $TMOUT BASHISM
+echo $TIMEFORMAT BASHISM
+TMOUT=2 # BASHISM
+read REPLY
+TIMEFORMAT='' # BASHISM
--- /dev/null
+possible bashism in bashisms/other-vars.sh line 4 ($FUNCNAME):
+ echo $FUNCNAME BASHISM
+possible bashism in bashisms/other-vars.sh line 9 ($DIRSTACK):
+echo $DIRSTACK BASHISM
+possible bashism in bashisms/other-vars.sh line 10 ($SECONDS):
+echo $SECONDS BASHISM
+possible bashism in bashisms/other-vars.sh line 11 ($TMOUT):
+echo $TMOUT BASHISM
+possible bashism in bashisms/other-vars.sh line 12 ($TIMEFORMAT):
+echo $TIMEFORMAT BASHISM
+possible bashism in bashisms/other-vars.sh line 13 (TMOUT=):
+TMOUT=2 # BASHISM
+possible bashism in bashisms/other-vars.sh line 15 (TIMEFORMAT=):
+TIMEFORMAT='' # BASHISM
--- /dev/null
+#!/bin/sh
+
+printf -v some_var "this is a BASHISM"
+
+printf "the use of %q is bad\n" "BASHISMS" >/dev/null
+
+printf "this is another BASHISM: %b" "\n" >/dev/null
--- /dev/null
+possible bashism in bashisms/printf.sh line 3 ('printf -v var ...' should be var='$(printf ...)'):
+printf -v some_var "this is a BASHISM"
+possible bashism in bashisms/printf.sh line 5 (printf %q|%b):
+printf "the use of %q is bad\n" "BASHISMS" >/dev/null
+possible bashism in bashisms/printf.sh line 7 (printf %q|%b):
+printf "this is another BASHISM: %b" "\n" >/dev/null
--- /dev/null
+#!/bin/sh
+
+foo="
+echo -e nothing wrong here
+#crap"
+
+echo -e BASHISM
+
+foo="\
+#crap"
+
+echo -e BASHISM
+
+case foo in
+ *\'*)
+ echo -e BASHISM
+ ;;
+esac
+#'
+echo -e BASHISM
+
+case foo in
+ *\\"*")
+ echo -e BASHISM
+ ;;
+ *\\\"*)
+ echo -e BASHISM
+ ;;
+ *\"*)
+ echo -e BASHISM
+ ;;
+esac
+#"
+echo -e BASHISM
+
+foo='\'
+echo -e BASHISM
--- /dev/null
+possible bashism in bashisms/quoted-strings.sh line 7 (echo -e):
+echo -e BASHISM
+possible bashism in bashisms/quoted-strings.sh line 12 (echo -e):
+echo -e BASHISM
+possible bashism in bashisms/quoted-strings.sh line 16 (echo -e):
+ echo -e BASHISM
+possible bashism in bashisms/quoted-strings.sh line 20 (echo -e):
+echo -e BASHISM
+possible bashism in bashisms/quoted-strings.sh line 24 (echo -e):
+ echo -e BASHISM
+possible bashism in bashisms/quoted-strings.sh line 27 (echo -e):
+ echo -e BASHISM
+possible bashism in bashisms/quoted-strings.sh line 30 (echo -e):
+ echo -e BASHISM
+possible bashism in bashisms/quoted-strings.sh line 34 (echo -e):
+echo -e BASHISM
+possible bashism in bashisms/quoted-strings.sh line 37 (echo -e):
+echo -e BASHISM
--- /dev/null
+#!/bin/sh
+
+foo() {
+ return -- 1 # BASHISM
+}
+
+bar () {
+ return 256 # BASHISM
+}
+
+moo () {
+ return -1 # BASHISM
+}
--- /dev/null
+possible bashism in bashisms/return.sh line 4 ('exit --' should be 'exit' (idem for return)):
+ return -- 1 # BASHISM
+possible bashism in bashisms/return.sh line 8 (exit|return status code greater than 255):
+ return 256 # BASHISM
+possible bashism in bashisms/return.sh line 12 (exit|return with negative status code):
+ return -1 # BASHISM
--- /dev/null
+#!/usr/bin/make -f
+
+foo:
+ read foo bar | echo $$foo and $$bar
+ echo my pid: $$$$
--- /dev/null
+#!/bin/sh
+
+sleep 0.1 # BASHISM
+sleep 1s # BASHISM
+sleep 1d # BASHISM
+sleep -- 1 # BASHISM
+sleep 1.5s # BASHISM
+sleep 1 2 3 # BASHISM
--- /dev/null
+possible bashism in bashisms/sleep.sh line 3 (sleep only takes one integer):
+sleep 0.1 # BASHISM
+possible bashism in bashisms/sleep.sh line 4 (sleep only takes one integer):
+sleep 1s # BASHISM
+possible bashism in bashisms/sleep.sh line 5 (sleep only takes one integer):
+sleep 1d # BASHISM
+possible bashism in bashisms/sleep.sh line 6 (sleep only takes one integer):
+sleep -- 1 # BASHISM
+possible bashism in bashisms/sleep.sh line 7 (sleep only takes one integer):
+sleep 1.5s # BASHISM
+possible bashism in bashisms/sleep.sh line 8 (sleep only takes one integer):
+sleep 1 2 3 # BASHISM
--- /dev/null
+#!/bin/sh
+source foo.sh # BASHISM
--- /dev/null
+possible bashism in bashisms/source line 2 (should be '.', not 'source'):
+source foo.sh # BASHISM
--- /dev/null
+#!/bin/sh
+
+case "foo" in
+ foo)
+ echo once
+ ;& # BASHISM
+ moo)
+ echo twice
+ ;;& # BASHISM
+ foo)
+ echo foo again
+ ;;
+esac
--- /dev/null
+possible bashism in bashisms/special-case.sh line 6 (;;& and ;& special case operators):
+ ;& # BASHISM
+possible bashism in bashisms/special-case.sh line 9 (;;& and ;& special case operators):
+ ;;& # BASHISM
--- /dev/null
+#!/bin/sh
+
+set -- foo bar moo
+
+echo BASHISM: ${#@}
+echo BASHISM: ${#*}
+
+echo BASHISM: ${@%f*}
+echo BASHISM: ${*%f*}
+echo BASHISM: ${@%%f*}
+echo BASHISM: ${*%%f*}
+
+echo BASHISM: ${@#*o}
+echo BASHISM: ${*#*o}
+echo BASHISM: ${@##*o}
+echo BASHISM: ${*##*o}
+
+echo BASHISM: ${@/?/u}
+echo BASHISM: ${*/?/u}
+echo BASHISM: ${@/?/}
+echo BASHISM: ${*/?/}
+
+echo BASHISM: ${@:2}
+echo BASHISM: ${*:2}
+echo BASHISM: ${@:1:1}
+echo BASHISM: ${*:1:1}
--- /dev/null
+possible bashism in bashisms/special-expansions.sh line 5 (${#@} or ${#*}):
+echo BASHISM: ${#@}
+possible bashism in bashisms/special-expansions.sh line 6 (${#@} or ${#*}):
+echo BASHISM: ${#*}
+possible bashism in bashisms/special-expansions.sh line 8 (${[@|*]#[#]pat} or ${[@|*]%[%]pat}):
+echo BASHISM: ${@%f*}
+possible bashism in bashisms/special-expansions.sh line 9 (${[@|*]#[#]pat} or ${[@|*]%[%]pat}):
+echo BASHISM: ${*%f*}
+possible bashism in bashisms/special-expansions.sh line 10 (${[@|*]#[#]pat} or ${[@|*]%[%]pat}):
+echo BASHISM: ${@%%f*}
+possible bashism in bashisms/special-expansions.sh line 11 (${[@|*]#[#]pat} or ${[@|*]%[%]pat}):
+echo BASHISM: ${*%%f*}
+possible bashism in bashisms/special-expansions.sh line 13 (${[@|*]#[#]pat} or ${[@|*]%[%]pat}):
+echo BASHISM: ${@#*o}
+possible bashism in bashisms/special-expansions.sh line 14 (${[@|*]#[#]pat} or ${[@|*]%[%]pat}):
+echo BASHISM: ${*#*o}
+possible bashism in bashisms/special-expansions.sh line 15 (${[@|*]#[#]pat} or ${[@|*]%[%]pat}):
+echo BASHISM: ${@##*o}
+possible bashism in bashisms/special-expansions.sh line 16 (${[@|*]#[#]pat} or ${[@|*]%[%]pat}):
+echo BASHISM: ${*##*o}
+possible bashism in bashisms/special-expansions.sh line 18 (${parm/?/pat[/str]}):
+echo BASHISM: ${@/?/u}
+possible bashism in bashisms/special-expansions.sh line 19 (${parm/?/pat[/str]}):
+echo BASHISM: ${*/?/u}
+possible bashism in bashisms/special-expansions.sh line 20 (${parm/?/pat[/str]}):
+echo BASHISM: ${@/?/}
+possible bashism in bashisms/special-expansions.sh line 21 (${parm/?/pat[/str]}):
+echo BASHISM: ${*/?/}
+possible bashism in bashisms/special-expansions.sh line 23 (${foo:3[:1]}):
+echo BASHISM: ${@:2}
+possible bashism in bashisms/special-expansions.sh line 24 (${foo:3[:1]}):
+echo BASHISM: ${*:2}
+possible bashism in bashisms/special-expansions.sh line 25 (${foo:3[:1]}):
+echo BASHISM: ${@:1:1}
+possible bashism in bashisms/special-expansions.sh line 26 (${foo:3[:1]}):
+echo BASHISM: ${*:1:1}
--- /dev/null
+#!/bin/sh
+
+echo $((echo foo); echo bar)
--- /dev/null
+#!/bin/sh
+
+echo tilde alone: ~/
+echo tilde with name: ~root/
+
+cd ; cd - >/dev/null
+
+echo BASHISM: tilde plus: ~+
+echo BASHISM: tilde minus: ~-
+
+pushd ~ >/dev/null 2>&1 # BASHISM
+for i in $(seq 1 9); do
+ pushd / >/dev/null 2>&1 # BASHISM
+done
+
+echo BASHISM: tilde plus n: ~+1
+echo BASHISM: tilde implicit plus n: ~1
+echo BASHISM: tilde minus n: ~-1
+
+echo BASHISM: tilde plus 10: ~+10
+echo BASHISM: tilde implicit plus 10: ~10
+echo BASHISM: tilde minus 10: ~-10
+
+echo BASHISM=~-/bin
+echo BASHISM=/:~+/bin/
+BASHISM=~-/bin ; echo $BASHISM
+BASHISM=/:~+/bin/ ; echo $BASHISM
+
+echo nothing wrong here: ~+foo/
+echo nothing wrong here: ~-moo/
+echo nothing wrong here: ~+1foo/
+echo nothing wrong here: ~1foo/
+echo nothing wrong here: ~-1moo/
+
+# Again, but without the slash
+echo nothing wrong here: ~+foo
+echo nothing wrong here: ~-moo
+echo nothing wrong here: ~+1foo
+echo nothing wrong here: ~1foo
+echo nothing wrong here: ~-1moo
+
--- /dev/null
+possible bashism in bashisms/tilde-expansion.sh line 8 (non-standard tilde expansion):
+echo BASHISM: tilde plus: ~+
+possible bashism in bashisms/tilde-expansion.sh line 9 (non-standard tilde expansion):
+echo BASHISM: tilde minus: ~-
+possible bashism in bashisms/tilde-expansion.sh line 11 ((push|pop)d):
+pushd ~ >/dev/null 2>&1 # BASHISM
+possible bashism in bashisms/tilde-expansion.sh line 13 ((push|pop)d):
+ pushd / >/dev/null 2>&1 # BASHISM
+possible bashism in bashisms/tilde-expansion.sh line 16 (non-standard tilde expansion):
+echo BASHISM: tilde plus n: ~+1
+possible bashism in bashisms/tilde-expansion.sh line 17 (non-standard tilde expansion):
+echo BASHISM: tilde implicit plus n: ~1
+possible bashism in bashisms/tilde-expansion.sh line 18 (non-standard tilde expansion):
+echo BASHISM: tilde minus n: ~-1
+possible bashism in bashisms/tilde-expansion.sh line 20 (non-standard tilde expansion):
+echo BASHISM: tilde plus 10: ~+10
+possible bashism in bashisms/tilde-expansion.sh line 21 (non-standard tilde expansion):
+echo BASHISM: tilde implicit plus 10: ~10
+possible bashism in bashisms/tilde-expansion.sh line 22 (non-standard tilde expansion):
+echo BASHISM: tilde minus 10: ~-10
+possible bashism in bashisms/tilde-expansion.sh line 24 (non-standard tilde expansion):
+echo BASHISM=~-/bin
+possible bashism in bashisms/tilde-expansion.sh line 25 (non-standard tilde expansion):
+echo BASHISM=/:~+/bin/
+possible bashism in bashisms/tilde-expansion.sh line 26 (non-standard tilde expansion):
+BASHISM=~-/bin ; echo $BASHISM
+possible bashism in bashisms/tilde-expansion.sh line 27 (non-standard tilde expansion):
+BASHISM=/:~+/bin/ ; echo $BASHISM
--- /dev/null
+#!/bin/sh
+
+trap foo ERR # BASHISM
+trap foo RETURN # BASHISM
+trap foo DEBUG # BASHISM
+
+trap "echo BASHISM" ERR
+trap "echo BASHISM" RETURN
+trap "echo BASHISM" DEBUG
+
+foo() {
+ echo ": dummy function"
+}
+
+trap $(foo BASHISM) ERR
+trap "$(foo BASHISM)" RETURN
+trap "echo $foo BASHISM" DEBUG
--- /dev/null
+possible bashism in bashisms/traps.sh line 3 (trap with ERR|DEBUG|RETURN):
+trap foo ERR # BASHISM
+possible bashism in bashisms/traps.sh line 4 (trap with ERR|DEBUG|RETURN):
+trap foo RETURN # BASHISM
+possible bashism in bashisms/traps.sh line 5 (trap with ERR|DEBUG|RETURN):
+trap foo DEBUG # BASHISM
+possible bashism in bashisms/traps.sh line 7 (trap with ERR|DEBUG|RETURN):
+trap "echo BASHISM" ERR
+possible bashism in bashisms/traps.sh line 8 (trap with ERR|DEBUG|RETURN):
+trap "echo BASHISM" RETURN
+possible bashism in bashisms/traps.sh line 9 (trap with ERR|DEBUG|RETURN):
+trap "echo BASHISM" DEBUG
+possible bashism in bashisms/traps.sh line 15 (trap with ERR|DEBUG|RETURN):
+trap $(foo BASHISM) ERR
+possible bashism in bashisms/traps.sh line 16 (trap with ERR|DEBUG|RETURN):
+trap "$(foo BASHISM)" RETURN
+possible bashism in bashisms/traps.sh line 17 (trap with ERR|DEBUG|RETURN):
+trap "echo $foo BASHISM" DEBUG
--- /dev/null
+#!/bin/sh
+
+echo BASHISM $_
--- /dev/null
+possible bashism in bashisms/underscore-var.sh line 3 ($_):
+echo BASHISM $_
--- /dev/null
+#!/bin/sh
+
+################################################################################
+# #
+# Copyright (c) 2009 FUJITSU LIMITED #
+# #
+# This program is free software; you can redistribute it and#or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, but #
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY #
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License #
+# for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
+# #
+# Author: Miao Xie <miaox@cn.fujitsu.com> #
+# #
+################################################################################
+
+cd $LTPROOT/testcases/bin
+
+. ./cpuset_funcs.sh
+
+export TCID="cpuset01"
+export TST_TOTAL=97
+export TST_COUNT=1
+
+nr_cpus=$NR_CPUS
+nr_mems=$N_NODES
+
+cpus_all="$(seq -s, 0 $((nr_cpus-1)))"
+mems_all="$(seq -s, 0 $((nr_mems-1)))"
+
+exit_status=0
+
+cfile_name=
+
+# base_op_write_and_test <write_file_name> <write_string> <expect_string>
+base_op_write_and_test()
+{
+ local write_file="$1"
+ local write_string="$2"
+ local expect_string="$3"
+ local write_result=
+ local ret=0
+
+ mkdir -p "$(dirname $write_file)" || {
+ tst_brkm TFAIL "Failed to mkdir -p $(basename $write_file)"
+ return 1
+ }
+ [ "$write_string" = NULL ] && write_string=" "
+
+ /bin/echo "$write_string" > "$write_file" 2> $CPUSET_TMP/stderr
+ ret=$?
+ write_result="$(cat "$write_file")"
+
+ case "$expect_string" in
+ EMPTY)
+ test -z "$write_result" -a $ret = 0
+ ret=$?
+ ;;
+ WRITE_ERROR)
+ ret=$((!$ret))
+ ;;
+ *)
+ test "$expect_string" = "$write_result" -a $ret = 0
+ ret=$?
+ ;;
+ esac
+
+ if [ $ret -eq 0 ]; then
+ tst_resm TPASS "$cfile_name: Get the expected string"
+ else
+ tst_resm TFAIL "$cfile_name: Test result - $write_result Expected string - \"$expect_string\""
+ fi
+ return $ret
+}
+
+base_op_test()
+{
+ setup
+ if [ $? -ne 0 ]; then
+ exit_status=1
+ else
+ base_op_write_and_test "$@"
+ if [ $? -ne 0 ]; then
+ exit_status=1
+ fi
+
+ cleanup
+ if [ $? -ne 0 ]; then
+ exit_status=1
+ fi
+ fi
+ : $((TST_COUNT++)) #BASHISM
+}
+
+test_cpus()
+{
+ cfile_name="cpus"
+ while read cpus result
+ do
+ base_op_test "$CPUSET/1/cpus" "$cpus" "$result"
+ done <<- EOF
+ NULL EMPTY
+ 0 0
+ $nr_cpus WRITE_ERROR
+ $cpus_all 0-$((nr_cpus-1))
+ ${cpus_all}$nr_cpus WRITE_ERROR
+ 0,0 0
+ 0-0 0
+ 0-$((nr_cpus-1)) 0-$((nr_cpus-1))
+ -1 WRITE_ERROR
+ 0-$nr_cpus WRITE_ERROR
+ 0- WRITE_ERROR
+ 0--$((nr_cpus-1)) WRITE_ERROR
+ 0,1-$((nr_cpus-2)),$((nr_cpus-1)) 0-$((nr_cpus-1))
+ 0,1-$((nr_cpus-2)), 0-$((nr_cpus-2))
+ 0AAA WRITE_ERROR
+ AAA WRITE_ERROR
+ EOF
+ # while read cpus result
+}
+
+test_mems()
+{
+ cfile_name="mems"
+ while read mems result
+ do
+ base_op_test "$CPUSET/1/mems" "$mems" "$result"
+ done <<- EOF
+ NULL EMPTY
+ 0 0
+ $nr_mems WRITE_ERROR
+ $mems_all 0-$((nr_mems-1))
+ ${mems_all}$nr_mems WRITE_ERROR
+ 0,0 0
+ 0-0 0
+ 0-$((nr_mems-1)) 0-$((nr_mems-1))
+ -1 WRITE_ERROR
+ 0-$nr_mems WRITE_ERROR
+ 0- WRITE_ERROR
+ 0--$((nr_mems-1)) WRITE_ERROR
+ 0,1-$((nr_mems-2)),$((nr_mems-1)) 0-$((nr_mems-1))
+ 0,1-$((nr_mems-2)), 0-$((nr_mems-2))
+ 0AAA WRITE_ERROR
+ AAA WRITE_ERROR
+ EOF
+ # while read mems result
+}
+
+test_flags()
+{
+ for filename in cpu_exclusive mem_exclusive mem_hardwall \
+ memory_migrate memory_spread_page memory_spread_slab \
+ sched_load_balance memory_pressure_enabled
+ do
+ cfile_name="$filename"
+ while read flags result
+ do
+ base_op_test "$CPUSET/$filename" "$flags" "$result"
+ done <<- EOF
+ NULL 0
+ 0 0
+ 1 1
+ -1 WRITE_ERROR
+ A WRITE_ERROR
+ 2 1
+ EOF
+ # while read flags, result
+ done # for filename in flagfiles
+}
+
+test_domain()
+{
+ cfile_name="sched_relax_domain_level"
+ while read domain_level result
+ do
+ base_op_test "$CPUSET/sched_relax_domain_level" "$domain_level" "$result"
+ done <<- EOF
+ NULL 0
+ 0 0
+ 1 1
+ 2 2
+ 3 3
+ 4 4
+ 5 5
+ 6 WRITE_ERROR
+ -1 -1
+ -2 WRITE_ERROR
+ A WRITE_ERROR
+ EOF
+ # while read domain_level result
+}
+
+# attach_task_test <cpus> <mems> <expect>
+attach_task_test()
+{
+ local cpus=$1
+ local mems=$2
+ local expect=$3
+
+ local pid=
+ local ret=
+
+ setup
+ if [ $? -ne 0 ]; then
+ exit_status=1
+ cleanup
+ ((TST_COUNT++)) #BASHISM
+ return
+ fi
+
+ # create sub cpuset
+ mkdir "$CPUSET/sub_cpuset" > /dev/null
+ if [ $? -ne 0 ]; then
+ exit_status=1
+ cleanup
+ ((TST_COUNT++)) # BASHISM
+ return
+ fi
+
+ if [ "$cpus" != "NULL" ]; then
+ echo $cpus > "$CPUSET/sub_cpuset/cpus"
+ fi
+ if [ "$mems" != "NULL" ]; then
+ echo $mems > "$CPUSET/sub_cpuset/mems"
+ fi
+
+ cat /dev/zero > /dev/null &
+ pid=$!
+
+ # attach task into the cpuset group
+ echo $pid > "$CPUSET/sub_cpuset/tasks" 2> /dev/null
+ if [ $? -eq $expect ]; then
+ tst_resm TPASS "Attaching Task Test successed!!"
+ else
+ tst_resm TFAIL "Attaching Task Test failed!! cpus - \"$cpus\", mems - \"$mems\", Expect - \"$expect\", Fact - \"$ret\". (0 - Attach Success, 1 - Attach Fail)"
+ exit_status=1
+ fi
+
+ /bin/kill $pid &> /dev/null # BASHISM
+ cleanup
+ if [ $? -ne 0 ]; then
+ exit_status=1
+ fi
+ ((TST_COUNT++)) # BASHISM
+}
+
+
+test_attach_task()
+{
+ cfile_name="tasks"
+ while read cpus mems expect
+ do
+ attach_task_test "$cpus" "$mems" "$expect"
+ done <<- EOF
+ 0 NULL 1
+ 0 0 0
+ NULL 0 1
+ EOF
+ # while read cpus mems expect
+}
+
+test_readonly_cfiles()
+{
+ for filename in cpus mems memory_pressure
+ do
+ cfile_name="$filename(READONLY)"
+ base_op_test "$CPUSET/$filename" "0" "WRITE_ERROR"
+ done # for filename in readonly cfiles
+}
+
+# Case 1-3
+test_readonly_cfiles
+
+# Case 4-19
+test_cpus
+
+# Case 20-35
+test_mems
+
+# Case 36-83
+test_flags
+
+# Case 84-94
+test_domain
+
+# Case 95-97
+test_attach_task
+
+exit $exit_status
--- /dev/null
+possible bashism in bashisms/unknown-fns.sh line 100 ('$((n++))' should be '$n; $((n=n+1))'):
+ : $((TST_COUNT++)) #BASHISM
+possible bashism in bashisms/unknown-fns.sh line 215 ('((' should be '$(('):
+ ((TST_COUNT++)) #BASHISM
+possible bashism in bashisms/unknown-fns.sh line 224 ('((' should be '$(('):
+ ((TST_COUNT++)) # BASHISM
+possible bashism in bashisms/unknown-fns.sh line 247 (should be >word 2>&1):
+ /bin/kill $pid &> /dev/null # BASHISM
+possible bashism in bashisms/unknown-fns.sh line 252 ('((' should be '$(('):
+ ((TST_COUNT++)) # BASHISM
--- /dev/null
+#!/bin/sh
+
+CLEAN="'("'"c"'")'"
+echo "foo
+bar"
--- /dev/null
+#!/bin/sh
+
+CLEAN="("'"c"'")"
+echo "foo
+bar"
--- /dev/null
+Package: vim
+Binary: vim-common, vim-gui-common, vim-runtime, vim-doc, vim-tiny, vim, vim-dbg, vim-gtk, vim-nox, vim-athena, vim-lesstif, vim-gnome
+Version: 2:7.3.429-2
+Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
+Uploaders: James McCoy <jamessan@debian.org>
+Build-Depends: libacl1-dev, libgpmg1-dev [linux-any], debhelper (>= 7.2.3~), libtinfo-dev | libncurses5-dev, libselinux1-dev [linux-any], dpkg-dev (>= 1.15.1), libgtk2.0-dev, libxaw7-dev, libxt-dev, libxpm-dev, libgnomeui-dev [!m68k], libperl-dev, tcl-dev, python-dev, ruby1.8, ruby1.8-dev, lua5.1, liblua5.1-dev
+Build-Depends-Indep: docbook-xml, docbook-utils
+Architecture: any all
+Standards-Version: 3.9.2.0
+Format: 3.0 (quilt)
+Files:
+ c02fea331371614ac4ca4360e6fff789 1998 vim_7.3.429-2.dsc
+ 5e1b68e1d716e3e8a07775e7987b08c2 11009709 vim_7.3.429.orig.tar.gz
+ 6f58c13344d6cfbd3f62a2beb6c4147a 190039 vim_7.3.429-2.debian.tar.gz
+Vcs-Browser: http://hg.debian.org/hg/pkg-vim/vim
+Vcs-Hg: http://hg.debian.org/hg/pkg-vim/vim
+Checksums-Sha1:
+ a0dbb9cae1d926e6133c1293e8897570fa640eea 1998 vim_7.3.429-2.dsc
+ 984a42ad7f7e17c2e7543d1587e1f95500862587 11009709 vim_7.3.429.orig.tar.gz
+ bfe717bd260687098b230dcfa988d006662298a7 190039 vim_7.3.429-2.debian.tar.gz
+Checksums-Sha256:
+ dd4999aebb61e5c552b0495a155c25bc880da0bfd00a57db861890870dc1a693 1998 vim_7.3.429-2.dsc
+ 998bf2823a494d092b7c674d8499e2f94022fcac2ee7512a44a4d8b9409db077 11009709 vim_7.3.429.orig.tar.gz
+ ac3f78bfc56b8420de2d415c2288829abc5779305efd4a95079d4b5d2c960ae8 190039 vim_7.3.429-2.debian.tar.gz
+Homepage: http://www.vim.org/
+Directory: pool/main/v/vim
+Priority: source
+Section: editors
--- /dev/null
+/*
+ * Copyright (c) 2012 Devscripts developers
+ *
+ * "THE BEER-WARE LICENSE" (Revision 42):
+ * Benjamin Drung wrote this file. As long as you retain this notice you
+ * can do whatever you want with this stuff. If we meet some day, and you think
+ * this stuff is worth it, you can buy me a beer in return.
+ */
--- /dev/null
+/*
+Copyright (c) 2013, Devscripts developers
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+ * Neither the author nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
--- /dev/null
+/* Copyright (c) 2012, Devscripts developers
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the devscripts developers nor the
+ * names of other contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ABISOURCE CORPORATION B.V. AND OTHER
+ * CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ABISOURCE
+ * CORPORATION B.V OR OTHER CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
--- /dev/null
+c Copyright (c) 2012, Devscripts developers
+c
+c Redistribution and use in source and binary forms, with or without
+c modification, are permitted provided that the following conditions are
+c met:
+c
+c - Redistributions of source code must retain the above copyright
+c notice, this list of conditions and the following disclaimer.
+c
+c - Redistributions in binary form must reproduce the above copyright
+c notice, this list of conditions and the following disclaimer in the
+c documentation and/or other materials provided with the
+c distribution.
+c
+c THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+c IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+c TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+c PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+c HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+c SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+c LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+c DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+c THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+c (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+c OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--- /dev/null
+// Copyright (c) 2013 Devscripts developers.
+// All rights reserved.
+//
+// You can redistribute it and/or modify it under the terms of the GNU
+// General Public License as published by the Free Software Foundation,
+// either version 3 of the License, or (at your option) any later version.
+//
+// Licensees holding a valid commercial license may use this file in
+// accordance with the commercial license agreement provided with the software.
+//
+// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+int main() {
+ int return_value = 42
+ / 2
+ / 3;
+ return return_value;
+}
--- /dev/null
+# kitchen is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+.. seealso
--- /dev/null
+/*************************************************************************
+ * Copyright 2012 Devscripts developers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see http://www.gnu.org/licenses/.
+ *
+ * This file may incorporate work that is in the public domain and/or
+ * covered under the following copyright and permission notice:
+ *
+ * Written by devscripts developers and released to the public domain,
+ * as explained at http://creativecommons.org/publicdomain/zero/1.0/
+ ************************************************************************/
--- /dev/null
+/*
+ * Copyright (c) 2013 Devscripts developers
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * ...
+ * 3. Neither the name of the copyright holder nor the names of contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ * ...
+ * [The next bit comes from freeswitch/libs/apr/poll/unix/port.c:]
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * ...
+ * [this from freeswitch/libs/apr-util/include/apr_md5.h]
+ * The RSA copyright statement and Licence for that original material is
+ * included below. This is followed by the Apache copyright statement and
+ * ...
+ * [from freeswitch/libs/libzrtp/include/zrtp_legal.h and .../libzrtp/third_party/bnlib/legal.h]
+ * We want the copyright string accessable to the unix strings command in
+ * We want the copyright string to be accessable to the unix strings command
+ * [and .../libs/libwebsockets/win32port/zlib/deflate.c]
+ copyright string in the executable of your product.
+ * [from .../libs/sofia-sip/libsofia-sip-ua/su/su_md5.c ]
+ * 1993, no copyright is claimed. This code is in the public domain; do with
+ * copyright in any changes I have made; this code remains in the
+ * [from most of sqlite]
+** The author disclaims copyright to this source code. In place of
+ */
+
+# from freeswitch/libs/sofia-sip/libsofia-sip-ua/msg/msg_date.c
+#define is_digit(c) ((c) >= '0' && (c) <= '9')
--- /dev/null
+ Copyright (c) 2012 Devscripts developers
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 1, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
--- /dev/null
+# Copyright (c) 2012 Devscripts developers
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of version 2 of the GNU General Public
+# License as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
--- /dev/null
+ Copyright (c) 2012 Devscripts developers
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
--- /dev/null
+; Copyright (c) 2012 Devscripts developers
+;
+; This program is free software: you can redistribute it and/or modify
+; it under the terms of the GNU General Public License as published by
+; the Free Software Foundation, either version 2 of the License, or
+; (at your option) any later version.
+;
+; This package is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+; GNU General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with this program. If not, see <http://www.gnu.org/licenses/>.
--- /dev/null
+# Copyright (C) 2012 Devscripts developers
+#
+# This program is free software. you can redistribute it and/or modify
+# it under the terms of the GNU General Public License, version 2, as
+# published by the Free Software Foundation.
--- /dev/null
+ Copyright (c) 2012 Devscripts developers
+ .
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2
+ as published by the Free Software Foundation.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ The complete text of the GNU General Public License 2
+ can be found in "/usr/share/common-licenses/GPL-2".
+ .
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
--- /dev/null
+ Copyright (c) 2012 Devscripts developers
+ .
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
--- /dev/null
+;;; db-lemacs.el --- part of EDB, the Emacs database
+
+;; Copyright (C) 2004,2005,2006,2007,2008 Thien-Thi Nguyen
+
+;; This file is part of EDB.
+;;
+;; EDB is free software; you can redistribute it and/or modify it under
+;; the terms of the GNU General Public License as published by the Free
+;; Software Foundation; either version 3, or (at your option) any later
+;; version.
+;;
+;; EDB is distributed in the hope that it will be useful, but WITHOUT
+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+;; for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with EDB; see the file COPYING. If not, write to the Free
+;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+;; MA 02110-1301, USA.
--- /dev/null
+/*
+ * Copyright (C) 2012 Devscripts developers
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ */
--- /dev/null
+# Copyright (C) 2012 Devscripts developers
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; version 3.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
--- /dev/null
+// Copyright (c) 2013 Devscripts developers
+// All rights reserved.
+//
+// This file is part of Devscripts.
+// You can redistribute it and/or modify it under the terms of the GNU
+// General Public License as published by the Free Software Foundation,
+// either version 3 of the License, or (at your option) any later version.
+//
+// Licensees holding a valid commercial license may use this file in
+// accordance with the commercial license agreement provided with the software.
+//
+// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
--- /dev/null
+/*
+ * Copyright (c) 2012 Devscripts developers
+ *
+ * The devscripts library is licensed under the terms of the GNU
+ * Lesser General Public License, version 2.1. Please see the file
+ * COPYING.LGPL.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
--- /dev/null
+/*
+ * Copyright (c) 2012 Devscripts developers
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General
+ * Public License published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, <http://www.gnu.org/licenses/>.
+ */
--- /dev/null
+@ Copyright (C) 2012 Devscripts developers
+@
+@ This library is free software; you can redistribute it and/or
+@ modify it under the terms of the GNU Library General Public
+@ License as published by the Free Software Foundation;
+@ version 2 of the License.
+@
+@ This library is distributed in the hope that it will be useful,
+@ but WITHOUT ANY WARRANTY; without even the implied warranty of
+@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+@ Library General Public License for more details.
--- /dev/null
+// Copyright (c) 2013 Devscripts developers
+// All rights reserved.
+//
+// The files in this directory are part of the Devscripts Library.
+// You can redistribute them and/or modify them under the terms of the
+// GNU Lesser General Public License as published by the Free Software Foundation;
+// either version 3 of the License, or (at your option) any later version.
+//
+// Licensees holding a valid commercial license may use this file in
+// accordance with the commercial license agreement provided with the software.
+//
+// These files are provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
--- /dev/null
+// Copyright (c) 2013 Devscripts developers. All rights reserved.
+//
+// This file is part of Devscripts; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation; either version 3 of the License,
+// or (at your option) any later version.
+//
+// Licensees holding a valid commercial license may use this file in
+// accordance with the commercial license agreement provided with the software.
+//
+// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
--- /dev/null
+# The contents of this file are subject to the Mozilla Public License
+# Version 1.1 (the "License"); you may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+# License for the specific language governing rights and limitations
+# under the License.
+#
+# The Original Code is debian devscripts code.
+#
+# The Initial Developer of the Original Code is
+# devscripts developers.
+# Portions created by the Initial Developer are Copyright (C) 2012
+# the Initial Developer. All Rights Reserved.
--- /dev/null
+# Copyright devscripts developers
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
--- /dev/null
+# Copyright devscripts developers
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
--- /dev/null
+/*
+ * (c) 2013 Devscript Developers
+ *
+ * Initially seen in:
+ * freeswitch/libs/ldns/dnssec.c
+ * the line starting with equals gets seen as potential comment fodder
+ * but when the double-equals is put in the [] it breaks the regexp that is built
+ */
+if (foo
+ == bar
+ ) {
+ return baz;
+ }
+
+/* there are some other files where:
+
+ :: people have made their comments start like this
+ :: which bumps into the same issue.
+
+*/
--- /dev/null
+# Copyright (C) 2012, Benjamin Drung <bdrung@debian.org>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+runCommand() {
+ local param="$1"
+ local exp_stdout="$2"
+ local exp_stderr="$3"
+ local exp_retval=$4
+ local stdoutF="${SHUNIT_TMPDIR}/stdout"
+ local stderrF="${SHUNIT_TMPDIR}/stderr"
+ eval "${COMMAND} $param" > ${stdoutF} 2> ${stderrF}
+ retval=$?
+ assertEquals "standard output of ${COMMAND} $param\n" "$exp_stdout" "$(cat ${stdoutF})"
+ assertEquals "error output of ${COMMAND} $param\n" "$exp_stderr" "$(cat ${stderrF})"
+ assertEquals "return value of ${COMMAND} $param\n" $exp_retval $retval
+}
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2012, James McCoy <jamessan@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if test "$1" = --installed; then
+ COMMAND=annotate-output
+ shift
+else
+ COMMAND="../scripts/annotate-output.sh"
+fi
+
+WORKDIR="$(readlink -f "${0%/*}")"
+
+testSwallowedNewline() {
+ expected="% O: foo% I: Finished with exitcode 0"
+ actual="$($COMMAND +%% echo -n foo | grep O:)"
+ assertEquals 'incomplete line found' "${expected}" "${actual}"
+}
+
+testBackslashes() {
+ expected='% O: \f\o\o'
+ actual="$($COMMAND +%% printf '%s\n' '\f\o\o' | grep O:)"
+ assertEquals 'backslashes echoed' "${expected}" "${actual}"
+}
+
+testLeadingWhitespace() {
+ expected='% O: foo'
+ actual="$($COMMAND +%% printf '%s\n' ' foo' | grep O:)"
+ assertEquals 'leading whitespace preserved' "${expected}" "${actual}"
+}
+
+. shunit2
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2012, Benjamin Drung <bdrung@debian.org>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+if test "$1" = --installed; then
+ COMMAND=checkbashisms
+ shift
+else
+ COMMAND="../scripts/checkbashisms.pl"
+fi
+
+WORKDIR="$(readlink -f "${0%/*}")"
+
+. "${0%/*}/shunit2-helper-functions.sh"
+
+clean() {
+ cd "$WORKDIR"
+ runCommand "$1" "" "" 0
+}
+
+found() {
+ cd "$WORKDIR"
+ runCommand "$1" "" "$2" 1
+}
+
+test_531327() {
+ clean "bashisms/531327.sh"
+}
+
+test_535368() {
+ clean "-f bashisms/535368.mk"
+}
+
+test_arith() {
+ found "bashisms/arith.sh" "$(cat bashisms/arith.sh.out)"
+}
+
+test_array_expansion() {
+ found "bashisms/array-expansion.sh" "$(cat bashisms/array-expansion.sh.out)"
+}
+
+test_ash_setvar() {
+ found "bashisms/ash-setvar.sh" "$(cat bashisms/ash-setvar.sh.out)"
+}
+
+test_basic() {
+ found "-f bashisms/basic.mk" "$(cat bashisms/basic.mk.out)"
+}
+
+test_basic_bash() {
+ clean "-f bashisms/basic-bash.mk"
+}
+
+test_brace_expansion() {
+ found "-f bashisms/brace-expansion.sh" "$(cat bashisms/brace-expansion.sh.out)"
+}
+
+test_basic_bash_override() {
+ clean "-f bashisms/basic-bash-override.mk"
+}
+
+test_case_modification() {
+ found "-f bashisms/case-modification.sh" "$(cat bashisms/case-modification.sh.out)"
+}
+
+test_comments_in_quoted_strings1() {
+ clean "bashisms/comments-in-quoted-strings1.sh"
+}
+
+test_comments_in_quoted_strings2() {
+ clean "bashisms/comments-in-quoted-strings2.sh"
+}
+
+test_command() {
+ found "bashisms/command.sh" "$(cat bashisms/command.sh.out)"
+}
+
+test_comments_parsing_fns() {
+ found "bashisms/comments-parsing-fns.sh" "$(cat bashisms/comments-parsing-fns.sh.out)"
+}
+
+test_coproc() {
+ found "bashisms/coproc.sh" "$(cat bashisms/coproc.sh.out)"
+}
+
+test_dynamic_length() {
+ found "bashisms/dynamic-length.sh" "$(cat bashisms/dynamic-length.sh.out)"
+}
+
+test_exit_code() {
+ found "bashisms/exit-code.sh" "$(cat bashisms/exit-code.sh.out)"
+}
+
+test_fail2ban() {
+ clean "bashisms/fail2ban.sh"
+}
+
+test_fps() {
+ found "bashisms/fps.sh" "$(cat bashisms/fps.sh.out)"
+}
+
+test_functions() {
+ found "bashisms/functions.sh" "$(cat bashisms/functions.sh.out)"
+}
+
+test_gettext() {
+ found "bashisms/gettext.sh" "$(cat bashisms/gettext.sh.out)"
+}
+
+test_glob_ignore() {
+ found "bashisms/glob-ignore.sh" "$(cat bashisms/glob-ignore.sh.out)"
+}
+
+test_hash() {
+ found "bashisms/hash.sh" "$(cat bashisms/hash.sh.out)"
+}
+
+test_heredocs() {
+ found "bashisms/heredocs.sh" "$(cat bashisms/heredocs.sh.out)"
+}
+
+test_heredoc_with_dash() {
+ clean "bashisms/heredoc-with-dash.sh"
+}
+
+test_heredoc_with_others() {
+ clean "bashisms/heredoc-with-others.sh"
+}
+
+test_jobs() {
+ found "bashisms/jobs.sh" "$(cat bashisms/jobs.sh.out)"
+}
+
+test_line_continuation() {
+ found "bashisms/line-continuation.sh" "$(cat bashisms/line-continuation.sh.out)"
+}
+
+test_negations() {
+ found "bashisms/negations.sh" "$(cat bashisms/negations.sh.out)"
+}
+
+test_other_vars() {
+ found "bashisms/other-vars.sh" "$(cat bashisms/other-vars.sh.out)"
+}
+
+test_printf() {
+ found "bashisms/printf.sh" "$(cat bashisms/printf.sh.out)"
+}
+
+test_quoted_strings() {
+ found "bashisms/quoted-strings.sh" "$(cat bashisms/quoted-strings.sh.out)"
+}
+
+test_return() {
+ found "bashisms/return.sh" "$(cat bashisms/return.sh.out)"
+}
+
+test_shell_vars() {
+ clean "-f bashisms/shell-vars.mk"
+}
+
+test_sleep() {
+ found "bashisms/sleep.sh" "$(cat bashisms/sleep.sh.out)"
+}
+
+test_source() {
+ found "bashisms/source" "$(cat bashisms/source.out)"
+}
+
+test_special_case() {
+ found "bashisms/special-case.sh" "$(cat bashisms/special-case.sh.out)"
+}
+
+test_special_expansions() {
+ found "bashisms/special-expansions.sh" "$(cat bashisms/special-expansions.sh.out)"
+}
+
+test_subshell_no_arith() {
+ clean "bashisms/subshell-no-arith.sh"
+}
+
+test_tilde_expansion() {
+ found "bashisms/tilde-expansion.sh" "$(cat bashisms/tilde-expansion.sh.out)"
+}
+
+test_traps() {
+ found "bashisms/traps.sh" "$(cat bashisms/traps.sh.out)"
+}
+
+test_underscore_var() {
+ found "bashisms/underscore-var.sh" "$(cat bashisms/underscore-var.sh.out)"
+}
+
+test_unknown_fns() {
+ found "bashisms/unknown-fns.sh" "$(cat bashisms/unknown-fns.sh.out)"
+}
+
+test_unterminated_string() {
+ clean "bashisms/unterminated-string.sh"
+}
+
+test_unterminated_string2() {
+ clean "bashisms/unterminated-string2.sh"
+}
+
+. shunit2
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2012, James McCoy <jamessan@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if test "$1" = --installed; then
+ COMMAND=dd-list
+ shift
+else
+ COMMAND="../scripts/dd-list.pl"
+fi
+
+WORKDIR="$(readlink -f "${0%/*}")"
+
+testBinariesFromSameSource() {
+ $COMMAND -s ${WORKDIR}/dd-list/sources vim-gtk vim-nox 2>&1 >/dev/null
+ rc=$?
+ assertEquals 'packages found' 0 $rc
+}
+
+. shunit2
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2012, Benjamin Drung <bdrung@debian.org>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+if test "$1" = --installed; then
+ COMMAND="dch --no-conf"
+ shift
+else
+ COMMAND="perl -I ${0%/*}/.. ${0%/*}/../scripts/debchange.pl --no-conf"
+fi
+
+. "${0%/*}/shunit2-helper-functions.sh"
+
+setUp() {
+ CHANGELOG="${SHUNIT_TMPDIR}/changelog"
+ DEBFULLNAME="Raphaël Hertzog"
+ DEBEMAIL="hertzog@debian.org"
+ export DEBFULLNAME DEBEMAIL
+}
+
+tearDown() {
+ unset CHANGELOG DEBFULLNAME DEBEMAIL
+}
+
+runCommand2() {
+ local param="$1"
+ local exp_stdout="$2"
+ local exp_stderr="$3"
+ local exp_retval=$4
+ local stdoutF="${SHUNIT_TMPDIR}/stdout"
+ local stderrF="${SHUNIT_TMPDIR}/stderr"
+ eval "${COMMAND} $param" > ${stdoutF} 2> ${stderrF}
+ # Strip distribution data outdated warnings (caused by outdate distro-info-data).
+ cat $stderrF | \
+ grep -v "^Distribution data outdated. Please check for an update for distro-info-data. See /usr/share/doc/distro-info-data/README.Debian for details." | \
+ grep -v '^debchange[^ ]* warning: Unable to determine the current Ubuntu development release. Using UNRELEASED instead.$' > ${stderrF}.tmp
+ mv ${stderrF}.tmp ${stderrF}
+ retval=$?
+ assertEquals "standard output of ${COMMAND} $param\n" "$exp_stdout" "$(cat ${stdoutF})"
+ assertEquals "error output of ${COMMAND} $param\n" "$exp_stderr" "$(cat ${stderrF})"
+ assertEquals "return value of ${COMMAND} $param\n" $exp_retval $retval
+}
+
+success() {
+ runCommand2 "-c \"$CHANGELOG\" $1" "" "" 0
+}
+
+checkVersion() {
+ local start_param="$1"
+ local param="$2"
+ local start_version="$3"
+ local expected_version="$4"
+ rm -f "$CHANGELOG"
+ success "--create $start_param --package test-package -v $start_version \"Devscripts Test Suite.\""
+ success "$param \"Version test.\""
+ local version=$(dpkg-parsechangelog -l"$CHANGELOG" | sed -n 's/^Version: //p')
+ assertEquals "\"dch $param\" from version $start_version" "$expected_version" "$version"
+}
+
+checkDebianDistribution() {
+ checkVersion "--vendor Debian -D unstable" "--vendor Debian -i -D $1" "1.0-1" "1.0-2"
+}
+
+checkDebianVersion() {
+ checkVersion "--vendor Debian -D unstable" "--vendor Debian $1" "$2" "$3"
+}
+
+checkUbuntuVersion() {
+ checkVersion "--vendor Debian -D unstable" "--vendor Ubuntu $1" "$2" "$3"
+}
+
+testDebianDistributions() {
+ checkDebianDistribution "experimental"
+ checkDebianDistribution "oldstable"
+ checkDebianDistribution "oldstable-proposed-updates"
+ checkDebianDistribution "oldstable-security"
+ checkDebianDistribution "proposed-updates"
+ checkDebianDistribution "stable"
+ checkDebianDistribution "stable-proposed-updates"
+ checkDebianDistribution "stable-security"
+ checkDebianDistribution "testing"
+ checkDebianDistribution "testing-proposed-updates"
+ checkDebianDistribution "testing-security"
+ checkDebianDistribution "UNRELEASED"
+}
+
+testDebianIncrement() {
+ checkDebianVersion "-i" "1.0-1" "1.0-2"
+ checkDebianVersion "-i" "12" "13"
+}
+
+testUbuntuIncrement() {
+ checkUbuntuVersion "-i" "12" "12ubuntu1"
+ checkUbuntuVersion "-i" "3.4" "3.4ubuntu1"
+ checkUbuntuVersion "-i" "3.4.5" "3.4.5ubuntu1"
+ checkUbuntuVersion "-i" "5.6-7" "5.6-7ubuntu1"
+ checkUbuntuVersion "-i" "5.6-7.1" "5.6-7.1ubuntu1"
+ checkUbuntuVersion "-i" "5.6-7.1.8" "5.6-7.1.8ubuntu1"
+ checkUbuntuVersion "-i" "2.13-14build5" "2.13-14ubuntu1"
+ checkUbuntuVersion "-i" "0.45-2ubuntu3" "0.45-2ubuntu4"
+ checkUbuntuVersion "-i" "0.45-2ubuntu3.1" "0.45-2ubuntu3.2"
+ checkUbuntuVersion "-i" "0.45-2ubuntu3.1.0" "0.45-2ubuntu3.1.1"
+}
+
+testUbuntuRebuild() {
+ checkUbuntuVersion "-R" "3.4" "3.4build1"
+ checkUbuntuVersion "-R" "2.0-4" "2.0-4build1"
+ checkUbuntuVersion "-R" "1.42-4ubuntu5" "1.42-4ubuntu6"
+ checkUbuntuVersion "-R" "0.1-2build3" "0.1-2build4"
+}
+
+verifyMaintainer() {
+ local maintainer="$(dpkg-parsechangelog -l"$CHANGELOG" | sed -n 's/^Maintainer: //p')"
+ assertEquals "\"$1\"" "$DEBFULLNAME <$DEBEMAIL>" "$maintainer"
+}
+
+testEncoding() {
+ rm -f "$CHANGELOG"
+ success "--create -D unstable --package test-package -v 1.0-1 \"First upload\""
+ verifyMaintainer "dch --create"
+
+ success "-a \"Some change\""
+ verifyMaintainer "dch -a"
+
+ success "-i \"Second upload\""
+ verifyMaintainer "dch -i"
+
+ success "-e \"Another change\""
+ verifyMaintainer "dch -e"
+
+ success "-n NMU"
+ verifyMaintainer "dch -n"
+
+ success "-v 1.1-1 \"New upstream\""
+ verifyMaintainer "dch -v"
+
+ success "--bin-nmu \"Rebuild against libfoo\""
+ verifyMaintainer "dch --bin-nmu"
+
+ success "-q \"QA upload\""
+ verifyMaintainer "dch -q"
+
+ success "-s \"Security upload\""
+ verifyMaintainer "dch -s"
+
+ success "--bpo \"Backporrts upload\""
+ verifyMaintainer "dch --bpo"
+}
+
+. shunit2
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2013, James McCoy <jamessan@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+if test "$1" = --installed; then
+ COMMAND="debdiff --no-conf"
+ shift
+else
+ COMMAND="perl -I ${0%/*}/.. ${0%/*}/../scripts/debdiff.pl --no-conf"
+fi
+
+WORKDIR="$(readlink -f "${0%/*}")"
+
+test() {
+ $COMMAND ${WORKDIR}/debdiff/devscripts_2.13.0_any.deb ${WORKDIR}/debdiff/devscripts_2.13.1_any.deb >/dev/null 2>/dev/null
+ rc=$?
+ assertEquals 'difference found, no errors' 1 $rc
+}
+
+. shunit2
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2012, Benjamin Drung <bdrung@debian.org>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+if test "$1" = --installed; then
+ COMMAND="licensecheck --no-conf"
+ shift
+else
+ COMMAND="../scripts/licensecheck.pl --no-conf"
+fi
+
+WORKDIR="$(readlink -f "${0%/*}")"
+
+. "${0%/*}/shunit2-helper-functions.sh"
+
+license() {
+ cd "$WORKDIR"
+ runCommand "licensecheck/$1" "licensecheck/$1: $2" "" 0
+}
+
+license2() {
+ cd "$WORKDIR"
+ runCommand "$1 licensecheck/$2" "licensecheck/$2 $3" "" 0
+}
+
+testBeerware() {
+ license "beerware.cpp" "Beerware"
+}
+
+testBSD() {
+ license "bsd-3-clause.cpp" "BSD (3 clause)"
+ license "bsd-3-clause-authorsany.c" "BSD (3 clause)"
+}
+
+testLGPL() {
+ license "lgpl-2.1.c" "LGPL (v2.1)"
+ license "lgpl-2.1.h" "LGPL (v2.1)"
+ license "lgpl-2.s" "LGPL (v2)"
+ license "lgpl-3+.h" "LGPL (v3 or later)"
+ license "lgpl-variation.c" "LGPL (v3 or later)"
+}
+
+testGPL() {
+ license "gpl-1" "GPL (v1 or later)"
+ license "gpl-2" "GPL (v2)"
+ license "gpl-2+" "GPL (v2 or later)"
+ license "gpl-2+.scm" "GPL (v2 or later)"
+ license "gpl-2-comma.sh" "GPL (v2)"
+ license "gpl-2-incorrect-address" "GPL (v2) (with incorrect FSF address)"
+ license "gpl-3.sh" "GPL (v3)"
+ license "gpl-3+" "GPL (v3 or later)"
+ license "gpl-3-only.c" "GPL (v3)"
+ license "gpl-variation.c" "GPL (v3 or later)"
+ license "gpl-3+.el" "GPL (v3 or later)"
+}
+
+testDual() {
+ license "dual.c" "Public domain GPL (v3)"
+}
+
+testMPL() {
+ license "mpl-1.1.sh" "MPL (v1.1)"
+ license "mpl-2.0.sh" "MPL (v2.0)"
+ license "mpl-2.0-comma.sh" "MPL (v2.0)"
+}
+
+testMachine() {
+ license2 "-m" "beerware.cpp" "Beerware"
+ license2 "--machine" "lgpl-2.1.h" "LGPL (v2.1)"
+ license2 "-m --copyright" "gpl-2" "GPL (v2) 2012 Devscripts developers"
+}
+
+testFortranComments() {
+ license "bsd.f" "BSD (2 clause)"
+}
+
+testCommentsDetection() {
+ license "comments-detection.h" "GPL (v3 or later)"
+ license "comments-detection.txt" "*No copyright* LGPL (v2.1 or later)"
+}
+
+testFalsePositives() {
+ license2 "-m --copyright" "false-positives" "Public domain 2013 Devscripts developers"
+}
+
+testRegexpKiller() {
+ license "regexp-killer.c" "UNKNOWN"
+}
+
+. shunit2
--- /dev/null
+#!/bin/sh
+
+# Copyright 2014, Rafael Laboissiere <rafael@laboissiere.net>
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# On Debian systems, the complete text of the GNU General Public License
+# version 3 can be found in the /usr/share/common-licenses/GPL-3 file.
+
+if test "$1" = --installed; then
+ MK_ORIGTARGZ="mk-origtargz"
+ PROGNAME="mk-origtargz"
+ shift
+else
+ top_srcdir=$(readlink -f "${0%/*}/..")
+ MK_ORIGTARGZ="perl -I $top_srcdir $top_srcdir/scripts/mk-origtargz.pl"
+ PROGNAME="mk-origtargz.pl"
+fi
+
+cleanup(){
+ rm -rf $TMPDIR
+}
+
+setUp () {
+ TMPDIR=$(mktemp -d test_mk-origtargz.XXXX)
+}
+
+tearDown () {
+ cleanup
+}
+
+trap cleanup 1 2 3 13 15
+
+
+makeSubDir () {
+ dir=$1
+ shift
+
+ mkdir -p "$TMPDIR/foo-0.1/$dir"
+ touch "$TMPDIR/foo-0.1/$dir/a-file"
+ mkdir "$TMPDIR/foo-0.1/$dir/a-subdir"
+ touch "$TMPDIR/foo-0.1/$dir/a-subdir/a-file"
+}
+
+
+makeUpstreamFiles () {
+ mkdir -p "$TMPDIR/foo-0.1"
+ touch "$TMPDIR/foo-0.1/include-this-file"
+ touch "$TMPDIR/foo-0.1/exclude-this-file"
+ touch "$TMPDIR/foo-0.1/.include-this-hidden-file"
+ touch "$TMPDIR/foo-0.1/.exclude-this-hidden-file"
+
+ makeSubDir "include-this-dir"
+ makeSubDir "exclude-this-dir"
+ makeSubDir "exclude-dir1"
+ makeSubDir "exclude-dir2"
+ makeSubDir ".include-this-hidden-dir"
+ makeSubDir ".exclude-this-hidden-dir"
+ makeSubDir "a-dir/include-this-subdir"
+ # Expected not to be removed since exclusion is anchored to top-level
+ makeSubDir "a-dir/exclude-this-subdir"
+
+ touch "$TMPDIR/foo-0.1/; echo strange-file; #"
+
+}
+makeTarBall () {
+ comp="$1";
+ makeUpstreamFiles
+ tar --create --auto-compress --file "$TMPDIR/foo-0.1.tar.$comp" --directory "$TMPDIR" foo-0.1
+ rm -rf "$TMPDIR/foo-0.1"
+}
+makeBrokenTarBall () {
+ echo foo > foo.txt
+ tar cf - foo.txt | tr 6 7 | gzip > "$TMPDIR/foo-0.1.tar.gz"
+ rm -f foo.txt
+}
+
+makeZipFile () {
+ makeUpstreamFiles
+ (cd $TMPDIR; zip -q -r "foo-0.1.zip" foo-0.1 )
+ rm -rf "$TMPDIR/foo-0.1"
+}
+
+makeJarFile () {
+ makeUpstreamFiles
+ cat > "$TMPDIR/MANIFEST.MF" <<END
+Manifest-Version: 1.0
+Main-Class: foo.bar
+END
+ (cd $TMPDIR; jar cf "foo-0.1.jar" MANIFEST.MF foo-0.1 )
+ rm -rf "$TMPDIR/foo-0.1" "$TMPDIR/MANIFEST.MF"
+}
+
+makeDebianDir() {
+ mkdir -p $TMPDIR/foo/debian
+ cat <<END > $TMPDIR/foo/debian/changelog
+foo (0.1-1) unstable; urgency=low
+
+ * Initial release
+
+ -- Joe Developer <jd@debian.org> Mon, 02 Nov 2013 22:21:31 -0100
+END
+}
+
+makeDebianCopyright() {
+ cat <<'END' > $TMPDIR/foo/debian/copyright
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Files-Excluded: exclude-this*
+ .exclude-this*
+ exclude-dir1
+ exclude-dir2/
+ ;?echo?strange-file;?#
+END
+
+}
+
+makeWrongDebianCopyright() {
+ cat <<'END' > $TMPDIR/foo/debian/copyright
+Format: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=174
+Files-Excluded: exclude-this*
+ .exclude-this*
+ exclude-dir1
+ exclude-dir2/
+ ;?echo?strange-file;?#
+END
+
+}
+
+makeUnmatchedExcludeCopyright() {
+ cat <<'END' > $TMPDIR/foo/debian/copyright
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Files-Excluded: exclude-this*
+ .exclude-this*
+ exclude-dir1
+ exclude-dir2
+ ;?echo?strange-file;?#
+ nomatch
+END
+}
+
+expected_stderr_after_removal="WARNING: Files-Excluded pattern (exclude-dir2/) should not have a trailing /"
+
+expected_files_after_removal=$(sort <<END
+foo-0.1/
+foo-0.1/a-dir/
+foo-0.1/a-dir/exclude-this-subdir/
+foo-0.1/a-dir/exclude-this-subdir/a-file
+foo-0.1/a-dir/exclude-this-subdir/a-subdir/
+foo-0.1/a-dir/exclude-this-subdir/a-subdir/a-file
+foo-0.1/a-dir/include-this-subdir/
+foo-0.1/a-dir/include-this-subdir/a-file
+foo-0.1/a-dir/include-this-subdir/a-subdir/
+foo-0.1/a-dir/include-this-subdir/a-subdir/a-file
+foo-0.1/include-this-dir/
+foo-0.1/include-this-dir/a-file
+foo-0.1/include-this-dir/a-subdir/
+foo-0.1/include-this-dir/a-subdir/a-file
+foo-0.1/include-this-file
+foo-0.1/.include-this-hidden-dir/
+foo-0.1/.include-this-hidden-dir/a-file
+foo-0.1/.include-this-hidden-dir/a-subdir/
+foo-0.1/.include-this-hidden-dir/a-subdir/a-file
+foo-0.1/.include-this-hidden-file
+END
+)
+
+run_mk_origtargz() {
+ local dir="$1"
+ local exp_stderr="$2"
+ local exp_stdout="$3"
+ local stderrF="${SHUNIT_TMPDIR}/stderr"
+ shift
+ shift
+ shift
+ output="$( cd $TMPDIR/$dir; LANG=C $MK_ORIGTARGZ "$@" 2> $stderrF )"
+ stderr="$(cat $stderrF)"
+ retval=$?
+ assertEquals "standard output of mk-origtargz $*\n" "$exp_stdout" "$output"
+ assertEquals "error output of mk-origtargz $*\n" "$exp_stderr" "$stderr"
+ assertEquals "return valueof mk-origtargz $*\n" "0" "$retval"
+}
+
+assertType () {
+ mime="$1"
+ file="$2"
+ actual="$(file --brief --mime-type "$file" | sed -e 's,/x-,/,')"
+ assertEquals "filetype for $(basename "$file")" "$mime" "$actual"
+}
+
+
+testSymlink() {
+ makeTarBall gz
+ makeDebianDir
+ run_mk_origtargz foo "" \
+ "Successfully symlinked ../foo-0.1.tar.gz to ../foo_0.1.orig.tar.gz." \
+ ../foo-0.1.tar.gz
+ assertTrue "original tarball does not exist" "[ -e $TMPDIR/foo-0.1.tar.gz ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertTrue "result is not a symlink" "[ -L $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertTrue "result is not readable" "[ -r $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertEquals "final symlink" foo-0.1.tar.gz "$(readlink $TMPDIR/foo_0.1.orig.tar.gz)"
+}
+
+testCopy() {
+ makeTarBall gz
+ makeDebianDir
+ run_mk_origtargz foo "" \
+ "Successfully copied ../foo-0.1.tar.gz to ../foo_0.1.orig.tar.gz." \
+ --copy ../foo-0.1.tar.gz
+ assertTrue "original tarball does not exist" "[ -e $TMPDIR/foo-0.1.tar.gz ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertFalse "result is a symlink" "[ -L $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertTrue "result is not readable" "[ -r $TMPDIR/foo_0.1.orig.tar.gz ]"
+}
+
+testRename() {
+ makeTarBall gz
+ makeDebianDir
+ run_mk_origtargz foo "" \
+ "Successfully renamed ../foo-0.1.tar.gz to ../foo_0.1.orig.tar.gz." \
+ --rename ../foo-0.1.tar.gz
+ assertFalse "original tarball does exist" "[ -e $TMPDIR/foo-0.1.tar.gz ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertFalse "result is a symlink" "[ -L $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertTrue "result is not readable" "[ -r $TMPDIR/foo_0.1.orig.tar.gz ]"
+}
+
+testSymlinkExplicit() {
+ makeTarBall gz
+ run_mk_origtargz "" "" \
+ "Successfully symlinked foo-0.1.tar.gz to foo_0.1.orig.tar.gz." \
+ --package foo --version 0.1 foo-0.1.tar.gz
+ assertTrue "original tarball does not exist" "[ -e $TMPDIR/foo-0.1.tar.gz ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertTrue "result is not a symlink" "[ -L $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertTrue "result is not readable" "[ -r $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertEquals "final symlink" foo-0.1.tar.gz "$(readlink $TMPDIR/foo_0.1.orig.tar.gz)"
+}
+
+testCopyExplicit() {
+ makeTarBall gz
+ run_mk_origtargz "" "" \
+ "Successfully copied foo-0.1.tar.gz to foo_0.1.orig.tar.gz." \
+ --package foo --version 0.1 --copy foo-0.1.tar.gz
+ assertTrue "original tarball does not exist" "[ -e $TMPDIR/foo-0.1.tar.gz ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertFalse "result is a symlink" "[ -L $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertTrue "result is not readable" "[ -r $TMPDIR/foo_0.1.orig.tar.gz ]"
+}
+
+testRenameExplicit() {
+ makeTarBall gz
+ run_mk_origtargz "" "" \
+ "Successfully renamed foo-0.1.tar.gz to foo_0.1.orig.tar.gz." \
+ --package foo --version 0.1 --rename foo-0.1.tar.gz
+ assertFalse "original tarball does exist" "[ -e $TMPDIR/foo-0.1.tar.gz ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertFalse "result is a symlink" "[ -L $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertTrue "result is not readable" "[ -r $TMPDIR/foo_0.1.orig.tar.gz ]"
+}
+
+testSymlinkExplicitSubdir() {
+ makeTarBall gz
+ mkdir -p $TMPDIR/destdir
+ run_mk_origtargz "" "" \
+ "Successfully symlinked foo-0.1.tar.gz to destdir/foo_0.1.orig.tar.gz." \
+ --package foo --version 0.1 -C destdir foo-0.1.tar.gz
+ assertTrue "original tarball does not exist" "[ -e $TMPDIR/foo-0.1.tar.gz ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/destdir/foo_0.1.orig.tar.gz ]"
+ assertTrue "result is not a symlink" "[ -L $TMPDIR/destdir/foo_0.1.orig.tar.gz ]"
+ assertTrue "result is not readable" "[ -r $TMPDIR/destdir/foo_0.1.orig.tar.gz ]"
+ assertEquals "final symlink" ../foo-0.1.tar.gz "$(readlink $TMPDIR/destdir/foo_0.1.orig.tar.gz)"
+}
+
+testRepackGZ2GZ() {
+ makeTarBall gz
+ run_mk_origtargz "" "" \
+ "Successfully copied foo-0.1.tar.gz to foo_0.1.orig.tar.gz." \
+ --package foo --version 0.1 --copy foo-0.1.tar.gz --repack
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertType application/gzip $TMPDIR/foo_0.1.orig.tar.gz
+}
+
+testRepackGZ2XZ() {
+ makeTarBall gz
+ run_mk_origtargz "" ""\
+ "Successfully repacked foo-0.1.tar.gz as foo_0.1.orig.tar.xz." \
+ --package foo --version 0.1 --copy foo-0.1.tar.gz --repack --compression xz
+ assertFalse "wrong result does exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.xz ]"
+ assertType application/xz $TMPDIR/foo_0.1.orig.tar.xz
+}
+
+testRepackXZ2GZ() {
+ makeTarBall xz
+ run_mk_origtargz "" "" \
+ "Successfully repacked foo-0.1.tar.xz as foo_0.1.orig.tar.gz." \
+ --package foo --version 0.1 --copy foo-0.1.tar.xz --repack
+ assertFalse "wrong result does exist" "[ -e $TMPDIR/foo_0.1.orig.tar.xz ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertType application/gzip $TMPDIR/foo_0.1.orig.tar.gz
+}
+
+testRepackZip2GZ() {
+ makeZipFile
+ run_mk_origtargz "" "" \
+ "Successfully repacked foo-0.1.zip as foo_0.1.orig.tar.gz." \
+ --package foo --version 0.1 --copy foo-0.1.zip
+ assertTrue "original zip file does not exist" "[ -e $TMPDIR/foo-0.1.zip ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertType application/gzip $TMPDIR/foo_0.1.orig.tar.gz
+}
+
+testRepackJar2GZ() {
+ if ! which jar >/dev/null
+ then
+ # skip to avoid dependency on java-jdk
+ return
+ fi
+ makeJarFile
+ run_mk_origtargz "" "" \
+ "Successfully repacked foo-0.1.jar as foo_0.1.orig.tar.gz." \
+ --package foo --version 0.1 --copy foo-0.1.jar
+ assertTrue "original zip file does not exist" "[ -e $TMPDIR/foo-0.1.jar ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertType application/gzip $TMPDIR/foo_0.1.orig.tar.gz
+}
+
+testRepackZip2GZRename() {
+ makeZipFile
+ run_mk_origtargz "" "" \
+ "Successfully repacked foo-0.1.zip as foo_0.1.orig.tar.gz, and removed the original file." \
+ --package foo --version 0.1 --rename foo-0.1.zip
+ assertFalse "original zip file does exist" "[ -e $TMPDIR/foo-0.1.zip ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertType application/gzip $TMPDIR/foo_0.1.orig.tar.gz
+}
+
+testRepackZip2XZ() {
+ makeZipFile
+ run_mk_origtargz "" "" \
+ "Successfully repacked foo-0.1.zip as foo_0.1.orig.tar.xz." \
+ --package foo --version 0.1 foo-0.1.zip --compression xz
+ assertTrue "original zip file does not exist" "[ -e $TMPDIR/foo-0.1.zip ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.xz ]"
+ assertType application/xz $TMPDIR/foo_0.1.orig.tar.xz
+}
+
+testRepackXpi2XZ() {
+ makeZipFile
+ mv $TMPDIR/foo-0.1.zip $TMPDIR/foo-0.1.xpi
+ run_mk_origtargz "" "" \
+ "Successfully repacked foo-0.1.xpi as foo_0.1.orig.tar.xz." \
+ --package foo --version 0.1 foo-0.1.xpi --compression xz
+ assertTrue "original xpi file does not exist" "[ -e $TMPDIR/foo-0.1.xpi ]"
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.xz ]"
+ assertType application/xz $TMPDIR/foo_0.1.orig.tar.xz
+}
+
+testExclude() {
+ makeTarBall gz
+ makeDebianDir
+ makeDebianCopyright
+ run_mk_origtargz foo "$expected_stderr_after_removal" \
+ "Successfully repacked ../foo-0.1.tar.gz as ../foo_0.1.orig.tar.gz, deleting 19 files from it." \
+ ../foo-0.1.tar.gz
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertType application/gzip $TMPDIR/foo_0.1.orig.tar.gz
+ assertEquals "file contents" "$expected_files_after_removal" "$(tar taf $TMPDIR/foo_0.1.orig.tar.gz | sort)"
+}
+
+testExcludeXZ() {
+ makeTarBall xz
+ makeDebianDir
+ makeDebianCopyright
+ run_mk_origtargz foo "$expected_stderr_after_removal" \
+ "Successfully repacked ../foo-0.1.tar.xz as ../foo_0.1.orig.tar.xz, deleting 19 files from it." \
+ ../foo-0.1.tar.xz
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.xz ]"
+ assertType application/xz $TMPDIR/foo_0.1.orig.tar.xz
+ assertEquals "file contents" "$expected_files_after_removal" "$(tar taf $TMPDIR/foo_0.1.orig.tar.xz | sort)"
+}
+
+testExcludeZip() {
+ makeZipFile
+ makeDebianDir
+ makeDebianCopyright
+ run_mk_origtargz foo "$expected_stderr_after_removal" \
+ "Successfully repacked ../foo-0.1.zip as ../foo_0.1.orig.tar.xz, deleting 19 files from it." \
+ ../foo-0.1.zip --compression xz
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.xz ]"
+ assertType application/xz $TMPDIR/foo_0.1.orig.tar.xz
+ assertEquals "file contents" "$expected_files_after_removal" "$(tar taf $TMPDIR/foo_0.1.orig.tar.xz | sort)"
+}
+
+testSuffix() {
+ makeTarBall gz
+ makeDebianDir
+ makeDebianCopyright
+ run_mk_origtargz foo "$expected_stderr_after_removal" \
+ "Successfully repacked ../foo-0.1.tar.gz as ../foo_0.1+dfsg1.orig.tar.gz, deleting 19 files from it." \
+ ../foo-0.1.tar.gz --repack-suffix +dfsg1
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1+dfsg1.orig.tar.gz ]"
+ assertType application/gzip $TMPDIR/foo_0.1+dfsg1.orig.tar.gz
+ assertEquals "file contents" "$expected_files_after_removal" "$(tar taf $TMPDIR/foo_0.1+dfsg1.orig.tar.gz | sort)"
+}
+
+testSuffixXZ() {
+ makeTarBall xz
+ makeDebianDir
+ makeDebianCopyright
+ run_mk_origtargz foo "$expected_stderr_after_removal" \
+ "Successfully repacked ../foo-0.1.tar.xz as ../foo_0.1+dfsg1.orig.tar.xz, deleting 19 files from it." \
+ ../foo-0.1.tar.xz --repack-suffix +dfsg1
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1+dfsg1.orig.tar.xz ]"
+ assertType application/xz $TMPDIR/foo_0.1+dfsg1.orig.tar.xz
+ assertEquals "file contents" "$expected_files_after_removal" "$(tar taf $TMPDIR/foo_0.1+dfsg1.orig.tar.xz | sort)"
+}
+
+testSuffixZip() {
+ makeZipFile
+ makeDebianDir
+ makeDebianCopyright
+ run_mk_origtargz foo "$expected_stderr_after_removal" \
+ "Successfully repacked ../foo-0.1.zip as ../foo_0.1+dfsg1.orig.tar.xz, deleting 19 files from it." \
+ ../foo-0.1.zip --compression xz --repack-suffix +dfsg1
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1+dfsg1.orig.tar.xz ]"
+ assertType application/xz $TMPDIR/foo_0.1+dfsg1.orig.tar.xz
+ assertEquals "file contents" "$expected_files_after_removal" "$(tar taf $TMPDIR/foo_0.1+dfsg1.orig.tar.xz | sort)"
+}
+
+testSuffixNoExclusions() {
+ makeTarBall gz
+ makeDebianDir
+ run_mk_origtargz foo "" \
+ "Successfully renamed ../foo-0.1.tar.gz to ../foo_0.1.orig.tar.gz." \
+ ../foo-0.1.tar.gz --rename --repack-suffix +dfsg1
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+}
+
+testSameNameSymlink() {
+ makeTarBall gz
+ mv $TMPDIR/foo-0.1.tar.gz $TMPDIR/foo_0.1.orig.tar.gz
+ makeDebianDir
+ run_mk_origtargz foo "" \
+ "Leaving ../foo_0.1.orig.tar.gz where it is." \
+ --symlink ../foo_0.1.orig.tar.gz
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertFalse "result is a symlink" "[ -L $TMPDIR/foo_0.1.orig.tar.gz ]"
+}
+
+testSameNameCopy() {
+ makeTarBall gz
+ mv $TMPDIR/foo-0.1.tar.gz $TMPDIR/foo_0.1.orig.tar.gz
+ makeDebianDir
+ run_mk_origtargz foo "" \
+ "Leaving ../foo_0.1.orig.tar.gz where it is." \
+ --copy ../foo_0.1.orig.tar.gz
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertFalse "result is a symlink" "[ -L $TMPDIR/foo_0.1.orig.tar.gz ]"
+}
+
+testSameNameRename() {
+ makeTarBall gz
+ mv $TMPDIR/foo-0.1.tar.gz $TMPDIR/foo_0.1.orig.tar.gz
+ makeDebianDir
+ run_mk_origtargz foo "" \
+ "Leaving ../foo_0.1.orig.tar.gz where it is." \
+ --rename ../foo_0.1.orig.tar.gz
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertFalse "result is a symlink" "[ -L $TMPDIR/foo_0.1.orig.tar.gz ]"
+}
+
+testSameNameExclude() {
+ makeTarBall gz
+ mv $TMPDIR/foo-0.1.tar.gz $TMPDIR/foo_0.1.orig.tar.gz
+ makeDebianDir
+ makeDebianCopyright
+ run_mk_origtargz foo "$expected_stderr_after_removal" \
+ "Leaving ../foo_0.1.orig.tar.gz where it is, deleting 19 files from it." \
+ ../foo_0.1.orig.tar.gz
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertFalse "result is a symlink" "[ -L $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertEquals "file contents" "$expected_files_after_removal" "$(tar taf $TMPDIR/foo_0.1.orig.tar.gz | sort)"
+}
+
+testSameNameExcludeSymlink() {
+ makeTarBall gz
+ ln -s foo-0.1.tar.gz $TMPDIR/foo_0.1.orig.tar.gz
+ makeDebianDir
+ makeDebianCopyright
+ run_mk_origtargz foo "$expected_stderr_after_removal" \
+ "Leaving ../foo_0.1.orig.tar.gz where it is, deleting 19 files from it." \
+ ../foo_0.1.orig.tar.gz
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertTrue "result is not a symlink" "[ -L $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertEquals "file contents" "$expected_files_after_removal" "$(tar taf $TMPDIR/foo_0.1.orig.tar.gz | sort)"
+}
+
+testCopyrightFormatWarning() {
+ makeTarBall gz
+ makeDebianDir
+ makeWrongDebianCopyright
+ run_mk_origtargz foo \
+ "WARNING: The file debian/copyright mentions Files-Excluded, but its format is not recognized. Specify Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ in order to remove files from the tarball with mk-origtargz." \
+ "Successfully symlinked ../foo-0.1.tar.gz to ../foo_0.1.orig.tar.gz." \
+ ../foo-0.1.tar.gz
+
+}
+
+testBrokenTarWarning() {
+ makeBrokenTarBall
+ makeDebianDir
+ run_mk_origtargz foo \
+ "tar: This does not look like a tar archive
+tar: Skipping to next header
+tar: Exiting with failure status due to previous errors
+$PROGNAME: error: tar --list --auto-compress --file ../foo_0.1.orig.tar.xz gave error exit status 2" \
+ "" \
+ ../foo-0.1.tar.gz --repack --compression xz
+}
+
+testUnmatchedExclusion() {
+ makeTarBall gz
+ makeDebianDir
+ makeUnmatchedExcludeCopyright
+ run_mk_origtargz foo "No files matched excluded pattern: nomatch" \
+ "Successfully repacked ../foo-0.1.tar.gz as ../foo_0.1.orig.tar.gz, deleting 19 files from it." \
+ ../foo-0.1.tar.gz
+ assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]"
+ assertType application/gzip $TMPDIR/foo_0.1.orig.tar.gz
+ assertEquals "file contents" "$expected_files_after_removal" "$(tar taf $TMPDIR/foo_0.1.orig.tar.gz | sort)"
+}
+
+. shunit2
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2013, Rafael Laboissiere <rafael@laboissiere.net>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# On Debian systems, the complete text of the GNU General Public License
+# version 3 can be found in the /usr/share/common-licenses/GPL-3 file.
+
+if test "$1" = --installed; then
+ COMMAND="uscan --no-conf --compression=xz"
+ shift
+else
+ top_srcdir=$(readlink -f "${0%/*}/..")
+ if ! [ -x $top_srcdir/scripts/uscan -a -x $top_srcdir/scripts/mk-origtargz ]
+ then
+ echo "Please run make in scripts/"
+ exit 1
+ fi
+ PATH="$top_srcdir/scripts:$PATH"
+ PERLLIB="$top_srcdir"
+ export PERLLIB
+ COMMAND="uscan --no-conf --compression=xz"
+fi
+
+cleanup(){
+ kill -9 $(cat $TMPDIR/repo/pid)
+ rm -rf $TMPDIR
+}
+
+trap cleanup 1 2 3 13 15
+
+containsName(){
+ echo "$1" | fgrep -q "$2"
+ echo $?
+}
+
+. "${0%/*}/shunit2-helper-functions.sh"
+
+# The following tests do the following: (1) create a minimal Debian package
+# directory, containing minimal files debian/{changelog,watch,copyright},
+# (2) create a minimal repository, containing a tarball (built on the fly),
+# (3) start an HTTP server that works offline, using the SimpleHTTPServer
+# module of Python, and (4) run uscan inside that minimal universe.
+
+
+# The following function tests the --repack feature
+helperTestRepack() {
+ from_ext="$1"
+ to_comp="$2"
+ file_output="$3"
+
+ PKG=foo
+ PORT=8000
+ TMPDIR=$(mktemp -d)
+
+ mkdir -p $TMPDIR/$PKG/debian
+
+ cat <<END > $TMPDIR/$PKG/debian/watch
+version=3
+http://localhost:$PORT/$PKG-(\d).$from_ext
+END
+
+ cat <<END > $TMPDIR/$PKG/debian/changelog
+$PKG (0-1) unstable; urgency=low
+
+ * Initial release
+
+ -- Joe Developer <jd@debian.org> Mon, 02 Nov 2013 22:21:31 -0100
+END
+
+ mkdir -p $TMPDIR/repo/foo
+ touch $TMPDIR/repo/foo/content
+
+ ( cd $TMPDIR/repo ;
+ tar cfa $PKG-1.$from_ext * ;
+ python -m SimpleHTTPServer $PORT &
+ echo $! > pid )
+
+ OUTPUT=$( (cd $TMPDIR/$PKG ; $COMMAND --dehs --repack --compression=$to_comp) 2>&1 )
+
+ TARBALL=${PKG}_1.orig.tar.$to_comp
+ if [ "$from_ext" != "tar.$to_comp" ]
+ then
+ assertFalse 'unrepacked tarball still present' "[ -f $TMPDIR/${PKG}_1.orig.$from_ext ]"
+ fi
+ assertTrue 'pristine tarball is not created' "[ -f $TMPDIR/$TARBALL ]"
+ assertNotNull "pristine tarball is not $to_comp-compressed" \
+ "$( file -L $TMPDIR/$TARBALL | grep "$file_output" )"
+ CONTENTS="$(tar atf $TMPDIR/$TARBALL)"
+ assertTrue 'file contents missing' \
+ $(containsName "$CONTENTS" content)
+ assertTrue "malfored target in dehs output: $OUTPUT" \
+ $(containsName "$OUTPUT" "<target>$TARBALL</target>")
+
+ cleanup
+
+}
+
+testRepackGZ_XZ() { helperTestRepack "tar.gz" "xz" "XZ compressed data" ; }
+testRepackGZ_BZ2() { helperTestRepack "tar.gz" "bz2" "bzip2 compressed data" ; }
+testRepackBZ2_GZ() { helperTestRepack "tar.bz2" "gz" "gzip compressed data" ; }
+testRepackGZ_GZ() { helperTestRepack "tar.gz" "gz" "gzip compressed data" ; }
+testRepackXZ_XZ() { helperTestRepack "tar.xz" "xz" "XZ compressed data" ; }
+testRepackTGZ_XZ() { helperTestRepack "tgz" "xz" "XZ compressed data" ; }
+
+# The following function tests the --repack feature, with a zip file
+testRepackZip_XZ() {
+ to_comp=xz
+ file_output="XZ compressed data"
+
+ PKG=foo
+ PORT=8000
+ TMPDIR=$(mktemp -d)
+
+ mkdir -p $TMPDIR/$PKG/debian
+
+ cat <<END > $TMPDIR/$PKG/debian/watch
+version=3
+http://localhost:$PORT/$PKG-(\d).zip
+END
+
+ cat <<END > $TMPDIR/$PKG/debian/changelog
+$PKG (0-1) unstable; urgency=low
+
+ * Initial release
+
+ -- Joe Developer <jd@debian.org> Mon, 02 Nov 2013 22:21:31 -0100
+END
+
+ mkdir -p $TMPDIR/repo/foo
+ touch $TMPDIR/repo/foo/content
+
+ ( cd $TMPDIR/repo ;
+ zip -q -r $PKG-1.zip * ;
+ python -m SimpleHTTPServer $PORT &
+ echo $! > pid )
+
+ OUTPUT=$( (cd $TMPDIR/$PKG ; $COMMAND --dehs --repack --compression=$to_comp) )
+
+ TARBALL=${PKG}_1.orig.tar.$to_comp
+ assertTrue 'unrepacked zipfile present' "[ -f $TMPDIR/${PKG}-1.zip ]"
+ assertTrue 'pristine tarball is not created' "[ -f $TMPDIR/$TARBALL ]"
+ assertNotNull "pristine tarball is not $to_comp-compressed" \
+ "$( file -L $TMPDIR/$TARBALL | grep "$file_output" )"
+ CONTENTS="$(tar atf $TMPDIR/$TARBALL)"
+ assertTrue 'file contents missing' \
+ $(containsName "$CONTENTS" content)
+ assertTrue "malfored target in dehs output: $OUTPUT" \
+ $(containsName "$OUTPUT" "<target>$TARBALL</target>")
+
+ cleanup
+
+}
+
+
+
+# The following function tests the Files-Excluded feature of uscan, which
+# allows the selective exclusion of files from the upstream tarball before
+# repacking it.
+
+helperCreateRepo () {
+ mkdir -p $PKG/debian
+
+ cat <<END > $PKG/debian/watch
+version=3
+${OPTS}http://localhost:$PORT/$PKG-(\d).tar.gz
+END
+
+ cat <<END > $PKG/debian/changelog
+$PKG (0-1) unstable; urgency=low
+
+ * Initial release
+
+ -- Joe Developer <jd@debian.org> Mon, 02 Nov 2013 22:21:31 -0100
+END
+
+ cat <<'END' > $PKG/debian/copyright
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Files-Excluded: exclude-this
+ exclude-dir
+ .*
+ */js/jquery.js
+ ;?echo?baz;?#
+END
+
+ mkdir -p repo
+ touch repo/include-this
+ touch repo/exclude-this
+ touch repo/.hidden
+ mkdir -p "repo/; echo baz; #/"
+ mkdir -p repo/exclude-dir
+ touch repo/exclude-dir/file
+ mkdir -p repo/exclude-dir/subdir
+ touch repo/exclude-dir/subdir/file2
+ mkdir -p repo/docs/html/js/
+ touch repo/docs/html/js/jquery.js
+
+}
+
+helperTestContent() {
+ assertTrue 'file that must be present is excluded in the tarball' \
+ $(containsName "$CONTENTS" include-this)
+ assertFalse 'file that must be excluded is present in the tarball' \
+ $(containsName "$CONTENTS" exclude-this)
+ assertFalse "dir that must be excluded is present in the tarball" \
+ $(containsName "$CONTENTS" exclude-dir)
+ assertFalse "subdir that must be excluded is present in the tarball" \
+ $(containsName "$CONTENTS" subdir)
+ assertFalse "non-root-file that must be excluded is present in the tarball" \
+ $(containsName "$CONTENTS" jquery.js)
+ assertFalse "hidden file that must be excluded is present in the zip file" \
+ $(containsName "$CONTENTS" .hidden)
+ assertFalse "path with whitespace that must be excluded is present" \
+ $(containsName "$CONTENTS" "; echo baz; #/")
+}
+
+testFileExclusion() {
+
+ PKG=foo
+ PORT=8000
+ TMPDIR=$(mktemp -d)
+
+ (
+ cd $TMPDIR
+ OPTS="opts=repacksuffix=+dfsg1 "
+ helperCreateRepo
+ cd repo
+ tar cfz $PKG-1.tar.gz * .hidden
+ python -m SimpleHTTPServer $PORT &
+ echo $! > pid )
+
+ (cd $TMPDIR/$PKG ; $COMMAND)
+
+ TARBALL=${PKG}_1+dfsg1.orig.tar.gz
+ assertTrue 'downloaded tarfile not present' "[ -f $TMPDIR/${PKG}-1.tar.gz ]"
+ assertTrue 'pristine tarball is not created' "[ -f $TMPDIR/$TARBALL ]"
+ assertFalse 'pristine tarball is a symlink (nothing repacked?)' "[ -L $TMPDIR/$TARBALL ]"
+ assertNotNull 'pristine tarball is not gzip-compressed' \
+ "$( file $TMPDIR/$TARBALL | grep 'gzip compressed data' )"
+ CONTENTS="$(tar atf $TMPDIR/$TARBALL)"
+
+ helperTestContent
+
+ cleanup
+
+}
+
+# the same, but run from a separate directory
+testFileExclusionSeparateDir() {
+
+ PKG=foo
+ PORT=8000
+ TMPDIR=$(mktemp -d)
+
+ (
+ cd $TMPDIR
+ OPTS="opts=repacksuffix=+dfsg1 "
+ helperCreateRepo
+ cd repo
+ tar cfz $PKG-1.tar.gz * .hidden
+ python -m SimpleHTTPServer $PORT &
+ echo $! > pid )
+
+ mkdir $TMPDIR/otherdir
+ (
+ cd $TMPDIR/otherdir; $COMMAND --package $PKG --force-download --upstream-version 1 --watchfile ../$PKG/debian/watch --copyright-file ../$PKG/debian/copyright
+ )
+
+ TARBALL=${PKG}_1+dfsg1.orig.tar.gz
+ assertTrue 'downloaded tarfile not present' "[ -f $TMPDIR/${PKG}-1.tar.gz ]"
+ assertTrue 'pristine tarball is not created' "[ -f $TMPDIR/$TARBALL ]"
+ assertFalse 'pristine tarball is a symlink (nothing repacked?)' "[ -L $TMPDIR/$TARBALL ]"
+ assertNotNull 'pristine tarball is not gzip-compressed' \
+ "$( file $TMPDIR/$TARBALL | grep 'gzip compressed data' )"
+ CONTENTS="$(tar atf $TMPDIR/$TARBALL)"
+
+ helperTestContent
+
+ cleanup
+
+}
+
+# The same, for a zip file that is being repacked
+
+testFileExclusionZipToTar() {
+
+ PKG=foo
+ PORT=8000
+ TMPDIR=$(mktemp -d)
+
+ (
+ cd $TMPDIR
+ helperCreateRepo
+ cat <<END > $PKG/debian/watch
+version=3
+opts=repacksuffix=+dfsg1 http://localhost:$PORT/$PKG-(\d).zip
+END
+
+ cd repo
+ zip -q -r $PKG-1.zip * .hidden;
+ python -m SimpleHTTPServer $PORT &
+ echo $! > pid )
+
+ (cd $TMPDIR/$PKG ; $COMMAND --repack)
+
+ TARBALL=${PKG}_1+dfsg1.orig.tar.xz
+ assertTrue 'unrepacked zipfile not present' "[ -f $TMPDIR/${PKG}-1.zip ]"
+ assertTrue 'pristine tarball is not created' "[ -f $TMPDIR/$TARBALL ]"
+ assertNotNull 'pristine tarball is not xz-compressed' \
+ "$( file $TMPDIR/$TARBALL | grep 'XZ compressed data' )"
+ CONTENTS="$(tar atf $TMPDIR/$TARBALL)"
+ helperTestContent
+
+ cleanup
+
+}
+
+. shunit2
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2012, Benjamin Drung <bdrung@debian.org>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+COMMAND="${0%/*}/../scripts/uscan.pl --no-conf"
+
+. "${0%/*}/shunit2-helper-functions.sh"
+
+found() {
+ runCommand "--report --watchfile ${0%/*}/uscan/$1 --package $2 --upstream-version $3" "$4" "" 0
+}
+
+testS3Bucket() {
+ local latest=$(curl -s http://s3.amazonaws.com/rds-downloads | \
+ sed 's@\(</[A-Za-z]*>\)@\1\n@g' | grep '<Key>RDSCli-' | \
+ sed 's@.*<Key>RDSCli-\([-0-9.]*\)\.zip</Key>.*@\1@g' | \
+ sort -n | tail -n 1)
+ local result="Processing watchfile line for package rdscli...
+Newest version on remote site is ${latest}, local version is 1.4.007
+rdscli: Newer version (${latest}) available on remote site:
+ http://s3.amazonaws.com/rds-downloads/RDSCli-${latest}.zip
+ (local version is 1.4.007)"
+ found "s3bucket" "rdscli" "1.4.007" "$result"
+}
+
+. shunit2
--- /dev/null
+version=3
+http://s3.amazonaws.com/rds-downloads/RDSCli-([0-9].*).zip