Your message dated Wed, 30 Nov 2011 10:47:14 +0000
with message-id <[email protected]>
and subject line Bug#602483: fixed in bash 4.2-1
has caused the Debian Bug report #602483,
regarding Please treat /bin/sh as a configuration file (remove /bin/sh from the 
bash package)
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
602483: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=602483
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: bash
Version: 4.1-3
Severity: important
Tags: patch

Hi,

Currently both dash and bash include /bin/sh in their files
list.  Thus one of the two has to always be diverting /bin/sh
to prevent file conflicts.

This is a nuisance because:
 - the system administrator may want a shell other than dash
   and bash
 - hardcoding this pair is kind of annoying
 - upgrades are a pain; see Bug#546528, #538822, and #540512.

Luckily ajt taught us a way out: bash can stop providing
/bin/sh without causing it to be removed, using some diversion
trickery[1].

Here's a try.  The main complication is that when we play with
diversions, any existing diversions have to be forgotten (or
remembered explicitly).  These patches cope with that by copping out
and just preserving the target of the /bin/sh link instead of
specific diversions.

My main complaint is the duplication of dash preinst code that
restores diversions in the postinst.  I think that's okay as a
temporary hack but would be happy to see the logic centralized or
eliminated (perhaps by getting dash to drop its copy of /bin/sh,
too, so there would be nothing to divert).

Patches apply on top of the patch from Bug#602456 (bash: please drop
dpkg assertion in preinst).  Attached since debbugs seems to deal
best with that.

What do you think?

Jonathan Nieder (2):
  bash.preinst: document
  Remove /bin/sh from the bash package

 debian/bash.postinst  |   50 +++++++++-
 debian/bash.preinst.c |  254 ++++++++++++++++++++++++++++++-------------------
 debian/changelog      |    4 +
 debian/rules          |    3 -
 4 files changed, 209 insertions(+), 102 deletions(-)

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=85;bug=34717
Subject: [PATCH 1/2] bash.preinst: document

Paraphrase as a shell script.
---
 debian/bash.preinst.c |   39 ++++++++++++++++++++++++++++++++-------
 1 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/debian/bash.preinst.c b/debian/bash.preinst.c
index 8eec85b..76a8aeb 100644
--- a/debian/bash.preinst.c
+++ b/debian/bash.preinst.c
@@ -5,6 +5,38 @@
  * You may freely use, distribute, and modify this program.
  */
 
+static const char msg[] =
+  "As bash for Debian is destined to provide a working /bin/sh (pointing to\n"
+  "/bin/bash) your link will be overwritten by a default link.\n\n"
+  "If you don't want further upgrades to overwrite your customization, 
please\n"
+  "read /usr/share/doc/bash/README.Debian.gz for a more permanent 
solution.\n\n"
+  "[Press RETURN to continue]";
+
+/* if ! target=$(readlink /bin/sh)
+ * then
+ *     # error reading link. Will be overwritten.
+ *     echo 'The bash upgrade discovered that something is wrong with your 
/bin/sh link.'
+ *     echo "$msg"
+ *     read answer
+ *     exit 0
+ * fi
+ * if test "$target" != bash && test "$target" != /bin/bash
+ * then
+ *     read diversion < <(/usr/sbin/dpkg-divert --list /bin/sh) ||
+ *             exit 1
+ *     if test -n "$diversion"
+ *     then
+ *             # link is diverted
+ *             exit 0
+ *     fi
+ *     echo 'The bash upgrade discovered that your /bin/sh link points to 
$target'
+ *     echo "$msg"
+ *     read answer
+ *     exit 0
+ * fi
+ * exit 0
+ */
+
 // Don't rely on /bin/sh and popen!
 
 #include <stdio.h>
@@ -70,13 +102,6 @@ char *check_diversion(void)
     return NULL;
 }
 
-const char *msg =
-  "As bash for Debian is destined to provide a working /bin/sh (pointing to\n"
-  "/bin/bash) your link will be overwritten by a default link.\n\n"
-  "If you don't want further upgrades to overwrite your customization, 
please\n"
-  "read /usr/share/doc/bash/README.Debian.gz for a more permanent 
solution.\n\n"
-  "[Press RETURN to continue]";
-
 int main(void) {
     int targetlen;
     char target[PATH_MAX+1], answer[1024], *fn;
-- 
1.7.2.3.557.gab647.dirty

Subject: [PATCH 2/2] Remove /bin/sh from the bash package

---
 debian/bash.postinst  |   50 +++++++++-
 debian/bash.preinst.c |  261 ++++++++++++++++++++++++++++---------------------
 debian/changelog      |    4 +
 debian/rules          |    3 -
 4 files changed, 200 insertions(+), 118 deletions(-)

diff --git a/debian/bash.postinst b/debian/bash.postinst
index 02b2302..8baf4f5 100644
--- a/debian/bash.postinst
+++ b/debian/bash.postinst
@@ -1,12 +1,58 @@
 #! /bin/bash
-
 set -e
 
-# the symlink is in the package now. So this should never happen ...
+set_diversions () {
+       if test "$(dpkg-divert --listpackage /bin/sh)" != "$1"
+       then
+               dpkg-divert --quiet --remove /bin/sh
+               dpkg-divert --package "$1" --divert /bin/sh.distrib --add 
/bin/sh
+       fi
+       if test "$(dpkg-divert --listpackage /usr/share/man/man1/sh.1.gz)" != 
"$1"
+       then
+               dpkg-divert --remove /usr/share/man/man1/sh.1.gz
+               dpkg-divert --package "$1" \
+                       --divert /usr/share/man/man1/sh.distrib.1.gz \
+                       --add /usr/share/man/man1/sh.1.gz
+       fi
+}
+
+divert_sh () {
+       shell=$(readlink /bin/sh)
+       shell=${shell#/bin/}
+
+       case "$shell" in
+       dash|bash|mksh|ksh|posh|pdksh|zsh)
+               set_diversions "$shell"
+               ;;
+       ksh93)
+               set_diversions ksh
+               ;;
+       mksh-static)
+               set_diversions mksh
+               ;;
+       zsh4|/usr/bin/zsh)
+               set_diversions zsh
+               ;;
+       *)
+               # Unknown shell.  Trust the existing diversion.
+               case "$(dpkg-divert --listpackage /bin/sh)" in
+               dash)
+                       echo >&2 \
+ "dash.preinst: Overwriting /bin/sh -> $shell link as requested by diversion"
+                       ;;
+               "")
+                       echo >&2 "dash.preinst: Overwriting /bin/sh -> $shell 
link."
+               esac
+       esac
+}
+
+# This should never happen ...
 if [ ! -e /bin/sh ]; then
     ln -s bash /bin/sh
 fi
 
+divert_sh
+
 update-alternatives --install \
     /usr/share/man/man7/builtins.7.gz \
     builtins.7.gz \
diff --git a/debian/bash.preinst.c b/debian/bash.preinst.c
index 76a8aeb..d7f0751 100644
--- a/debian/bash.preinst.c
+++ b/debian/bash.preinst.c
@@ -1,134 +1,169 @@
-/* Copyright (c) 1999 Anthony Towns
- * Copyright (c) 2000, 2002 Matthias Klose
- * Copyright (c) 2008 Canonical Ltd
+/*
+ * This file is in the public domain.
+ * You may freely use, modify, distribute, and relicense it.
  *
- * You may freely use, distribute, and modify this program.
+ * Don't rely on /bin/sh or popen()!
  */
 
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+
 static const char msg[] =
-  "As bash for Debian is destined to provide a working /bin/sh (pointing to\n"
-  "/bin/bash) your link will be overwritten by a default link.\n\n"
+  "The bash upgrade discovered that something is wrong with your /bin/sh 
link.\n"
+  "As bash for Debian is dedicated to maintaining a working /bin/sh\n"
+  "(pointing to /bin/bash or your shell of choice), your link will be 
replaced\n"
+  "by a link to /bin/bash.\n\n"
   "If you don't want further upgrades to overwrite your customization, 
please\n"
   "read /usr/share/doc/bash/README.Debian.gz for a more permanent 
solution.\n\n"
   "[Press RETURN to continue]";
 
-/* if ! target=$(readlink /bin/sh)
- * then
- *     # error reading link. Will be overwritten.
- *     echo 'The bash upgrade discovered that something is wrong with your 
/bin/sh link.'
- *     echo "$msg"
- *     read answer
- *     exit 0
- * fi
- * if test "$target" != bash && test "$target" != /bin/bash
- * then
- *     read diversion < <(/usr/sbin/dpkg-divert --list /bin/sh) ||
- *             exit 1
- *     if test -n "$diversion"
- *     then
- *             # link is diverted
- *             exit 0
- *     fi
- *     echo 'The bash upgrade discovered that your /bin/sh link points to 
$target'
- *     echo "$msg"
- *     read answer
- *     exit 0
- * fi
- * exit 0
- */
-
-// Don't rely on /bin/sh and popen!
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <limits.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-
-/* XXX: evil kludge, deal with arbitrary name lengths */
-#ifndef PATH_MAX
-#define PATH_MAX 4096
-#endif
+static void ensure_sh_is_symlink(void)
+{
+       struct stat buf;
+       char answer[256];
+       if (lstat("/bin/sh", &buf)) {
+               perror("bash.preinst: cannot stat /bin/sh");
+               exit(EXIT_FAILURE);
+       }
+       if (S_ISLNK(buf.st_mode))
+               return;
+       puts(msg);
+       fflush(stdout);
+       fgets(answer, sizeof(answer), stdin);
+       if (ferror(stdin)) {
+               perror("bash.preinst: cannot read reply");
+               exit(EXIT_FAILURE);
+       }
+       if (unlink("/bin/sh")) {
+               perror("bash.preinst: cannot unlink /bin/sh");
+               exit(EXIT_FAILURE);
+       }
+       if (symlink("bash", "/bin/sh")) {
+               perror("bash.preinst: cannot write new /bin/sh link");
+               exit(EXIT_FAILURE);
+       }
+}
 
-char *check_diversion(void)
+static pid_t fork_dpkg_divert(void)
 {
-    pid_t child;
-    int pipedes[2];
+       pid_t child = fork();
+       if (child == -1) {
+               perror("bash.preinst: cannot fork dpkg-divert");
+               exit(EXIT_FAILURE);
+       }
+       return child;
+}
 
-    if (pipe(pipedes))
-       return NULL;
+static void wait_on_dpkg_divert(pid_t pid)
+{
+       int status;
+       if (waitpid(pid, &status, 0) != pid) {
+               perror("bash.preinst: cannot wait on dpkg-divert");
+               exit(EXIT_FAILURE);
+       }
+       if (!WIFEXITED(status) || WEXITSTATUS(status)) {
+               fprintf(stderr, "bash.preinst: dpkg-divert failed\n");
+               exit(EXIT_FAILURE);
+       }
+}
 
+static void run_dpkg_divert(char *const *argv)
+{
+       pid_t child = fork_dpkg_divert();
+       if (!child)
+               execvp("dpkg-divert", argv);
+       wait_on_dpkg_divert(child);
+}
 
-    switch(child = fork()) {
-      case -1:
-        /* fork failed */
-       close(pipedes[0]);
-       close(pipedes[1]);
-        return NULL;
+static void divert_sh(void)
+{
+       char *const remove_argv[] = {
+               "dpkg-divert", "--quiet", "--remove", "/bin/sh", NULL
+       };
+       char *const add_argv[] = {
+               "dpkg-divert", "--package", "dash",
+               "--divert", "/bin/sh.removed", "--add", "/bin/sh", NULL
+       };
+       run_dpkg_divert(remove_argv);
+       run_dpkg_divert(add_argv);
+}
 
-      case 0:
-        /* i'm the child */
-        {
-           if (dup2(pipedes[STDOUT_FILENO], STDOUT_FILENO) < 0)
-               _exit(127);
-           close(pipedes[STDIN_FILENO]);
-           close(pipedes[STDOUT_FILENO]);
-            execl( "/usr/sbin/dpkg-divert", "/usr/sbin/dpkg-divert",
-                   "--list", "/bin/sh", NULL );
-           _exit(127);
-        }
+static void listpackage_sh(int out)
+{
+       if (dup2(out, STDOUT_FILENO) < 0) {
+               perror("bash.preinst: cannot redirect");
+               _exit(2);
+       }
+       close(out);
+       execlp("dpkg-divert", "dpkg-divert", "--listpackage", "/bin/sh", NULL);
+       perror("bash.preinst: cannot run dpkg-divert");
+       _exit(2);
+}
 
-      default:
-        /* i'm the parent */
-        {
-           static char line[1024];
-           FILE *fd;
+static int sh_is_diverted(void)
+{
+       int fds[2];
+       FILE *output;
+       char package[256];
+       pid_t child;
 
-           close (pipedes[STDOUT_FILENO]);
-           fcntl (pipedes[STDIN_FILENO], F_SETFD, FD_CLOEXEC);
-           fd = fdopen (pipedes[STDIN_FILENO], "r");
+       if (pipe(fds)) {
+               perror("bash.preinst: cannot create pipe");
+               exit(EXIT_FAILURE);
+       }
+       child = fork_dpkg_divert();
+       if (!child) {
+               close(fds[0]);
+               listpackage_sh(fds[1]);
+       }
+       close(fds[1]);
+       output = fdopen(fds[0], "r");
+       if (!output) {
+               perror("bash.preinst: cannot open read end of pipe");
+               exit(EXIT_FAILURE);
+       }
+       package[fread(package, sizeof(package) - 1, 1, output)] = '\0';
+       if (fclose(output)) {
+               perror("bash.preinst: error reading from pipe");
+               exit(EXIT_FAILURE);
+       }
+       wait_on_dpkg_divert(child);
 
-           while (fgets(line, 1024, fd) != NULL) {
-               line[strlen(line)-1] = '\0';
-               break;
-           }
-           fclose(fd);
-           return line;
-        }
-    }
-    return NULL;
+       if (!package[0] || !strcmp(package, "bash\n"))
+               return 0;
+       return 1;
 }
 
-int main(void) {
-    int targetlen;
-    char target[PATH_MAX+1], answer[1024], *fn;
-
-    targetlen = readlink("/bin/sh", target, PATH_MAX);
-    if (targetlen == -1) {
-       // error reading link. Will be overwritten.
-       puts("The bash upgrade discovered that something is wrong with your 
/bin/sh link.");
-       puts(msg);
-       fgets(answer, 1024, stdin);
-       return EXIT_SUCCESS;
-    }
-    target[targetlen] = '\0';
-    if (strcmp(target, "bash") != 0 && strcmp(target, "/bin/bash") != 0) {
-       char *diversion = check_diversion();
-
-       if (diversion == NULL)
-           return EXIT_FAILURE;
-       // printf("diversion: /%s/\n", diversion);
-       if (strcmp(diversion, "") != 0)
-           // link is diverted
-           return EXIT_SUCCESS;
-       printf("The bash upgrade discovered that your /bin/sh link points to 
%s.\n", target);
-       puts(msg);
-       fgets(answer, 1024, stdin);
-       return EXIT_SUCCESS;
-    }
+int main(void)
+{
+       /*
+        * # Warn if /bin/sh is broken.
+        * if ! test -h /bin/sh
+        * then
+        *      echo "$msg"
+        *      read answer
+        *      ln -sf bash /bin/sh
+        * fi
+        */
+       ensure_sh_is_symlink();
 
-    return EXIT_SUCCESS;
+       /*
+        * # Ensure /bin/sh from bash is diverted so bash can remove it.
+        * # bash.postinst or dash.preinst will put the old diversion back
+        * # in place.
+        *
+        * diverter=$(dpkg-divert --listpackage /bin/sh)
+        * case "$diverter" in
+        * bash | "")
+        *      dpkg-divert --quiet --remove /bin/sh
+        *      dpkg-divert --package dash --divert /bin/sh.removed --add 
/bin/sh
+        * esac
+        */
+       if (!sh_is_diverted())
+               divert_sh();
+       return 0;
 }
diff --git a/debian/changelog b/debian/changelog
index 1fd7738..2770a1e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,10 @@ bash (4.1-3.1) local; urgency=low
       the upgrade to lenny.
     - Remove dead code for handling /etc/bash_completion.
     - Remove dpkg --assert-support-predepends check.
+  * Stop shipping /bin/sh: divert it in preinst so the actual
+    /bin/sh is not removed, re-add diversions based on the target of
+    the /bin/sh link in postinst, and stop creating a new /bin/sh
+    link in debian/rules.
 
  -- Jonathan Nieder <[email protected]>  Mon, 01 Nov 2010 17:41:40 -0500
 
diff --git a/debian/rules b/debian/rules
index d5cf8ff..6badfb3 100755
--- a/debian/rules
+++ b/debian/rules
@@ -221,9 +221,6 @@ endif
 
        : # extra links
        ln -sf bash $(d)/bin/rbash
-#      : # now shipped by dash
-       ln -sf bash $(d)/bin/sh
-       ln -sf bash.1 $(d)/usr/share/man/man1/sh.1
 
        : # skeleton files
        $(ID) debian/etc.bash.bashrc $(d)/etc/bash.bashrc
-- 
1.7.2.3.557.gab647.dirty


--- End Message ---
--- Begin Message ---
Source: bash
Source-Version: 4.2-1

We believe that the bug you reported is fixed in the latest version of
bash, which is due to be installed in the Debian FTP archive:

bash-builtins_4.2-1_i386.deb
  to main/b/bash/bash-builtins_4.2-1_i386.deb
bash-doc_4.2-1_all.deb
  to main/b/bash/bash-doc_4.2-1_all.deb
bash-static_4.2-1_i386.deb
  to main/b/bash/bash-static_4.2-1_i386.deb
bash_4.2-1.diff.gz
  to main/b/bash/bash_4.2-1.diff.gz
bash_4.2-1.dsc
  to main/b/bash/bash_4.2-1.dsc
bash_4.2-1_i386.deb
  to main/b/bash/bash_4.2-1_i386.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Matthias Klose <[email protected]> (supplier of updated bash package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.8
Date: Wed, 30 Nov 2011 07:29:05 +0100
Source: bash
Binary: bash bash-static bash-builtins bash-doc
Architecture: source all i386
Version: 4.2-1
Distribution: unstable
Urgency: low
Maintainer: Matthias Klose <[email protected]>
Changed-By: Matthias Klose <[email protected]>
Description: 
 bash       - GNU Bourne Again SHell
 bash-builtins - Bash loadable builtins - headers & examples
 bash-doc   - Documentation and examples for the The GNU Bourne Again SHell
 bash-static - GNU Bourne Again SHell (static version)
Closes: 587185 602159 602244 602456 602483 614815 629929 632177 641350 648578
Changes: 
 bash (4.2-1) unstable; urgency=low
 .
   [ Matthias Klose ]
   * New upstream version.
   * Apply upstream patches 001 - 020.
   * Fix parsing of double doublequotes. LP: #780441.
   * /etc/bash.bashrc:
     - Fix quoting issue calling command-not-found. LP: #754859. Closes: 
#587185.
   * Don't cache the value of brk between sbrk calls (Samuel Thibault).
     Closes: #614815.
   * Remove the bashdb and bash-completion packaging rules and files.
   * Just link with libtinfo instead of libncurses if available.
   * Make lintian happy.
   * Use quilt to apply patches.
   * Fix build error with -Werror=format-security (Pierre Chifflier).
     Closes: #641350.
   * Fix build for the binary target, without calling the build target.
     Closes: #602159.
   * Fix cross builds (Steve McIntyre). Closes: #629929.
 .
   [ Jonathan Nieder ]
   * Update copyright file. Many files that were GPL-2+ were relicensed
     under GPL-3+ in bash 4.0-rc1. Closes: #632177.
   * debian/rules: Use "rm -rf" instead of rmdir to remove usr/share/info
     directory in "with_gfdl = no" build. This prevents build failures when
     using the unmodified upstream tarball.
   * bash.preinst: Tidy up a little.
     - Remove codepath that would rename .bash_profile → .profile if .profile
       was unmodified from the gutsy → hardy transition. Closes: #602244
     - Remove commented experiment from bash-completion transition.
     - Remove misleading "dpkg --assert-support-predepends" check.
       Closes: #602456.
     - Move utility functions to a separate bash.preinst-lib.c and corresponding
       declarations to bash.preinst.h.
   * Remove /bin/sh symlink and /usr/share/man/man1/sh.1.gz from bash package
     contents. Closes: #602483.
     - debian/rules: Do not install /bin/sh and sh.1.gz symlinks.
     - bash.preinst:
       - Make sure /bin/sh is present and points to an executable, forcibly
         creating symlinks /bin/sh -> bash and /usr/share/man/man1/sh.1.gz ->
         bash.1.gz if not.
       - Divert /bin/sh and sh.1.gz on behalf of dash if we are upgrading from
         a bash version with /bin/sh in the files list and bash's copy of
         /bin/sh is not already diverted. This ensures unpacking bash will not
         cause /bin/sh to go missing.
   * bash.postinst: Simplify comment that contained an implementation detail
     about how /bin/sh is provided.
   * Use dpkg-buildflags to retrieve compiler options, including hardening 
flags.
     Build-Depends: dpkg-dev (>= 1.16.1) (Steve Langasek). Closes: #629929.
   * Pass --host to configure only when cross-compiling, --build always, as
     recommended in autotools documentation (Steve Langasek).
 .
   * Merge from Ubuntu (closes: #648578):
     - /etc/skel/.bashrc:
       - Don't set HISTCONTROL twice. Thanks to Kevin Knerr. LP: #465500.
       - Set HISTFILESIZE to 2000 and HISTSIZE to 1000. LP: #544542.
       - README.Debian: Remove obsolete entry "Why is bash configured
         with --disable-net-redirections?"
Checksums-Sha1: 
 367c1b283b0ae4cefd04df00d00a1676d5d0187c 1475 bash_4.2-1.dsc
 7846bf9f2f2878ad83db407c40858a230def03b9 2796351 bash_4.2.orig.tar.gz
 428944bc2f857ed9ff739c3ff6c1ff97c6d97b41 74773 bash_4.2-1.diff.gz
 36ab46bac93bb3aaf1736496334de12b7b6d69ef 697572 bash-doc_4.2-1_all.deb
 1d08b83a35b8c502d68559b7dac36a6de6c147eb 1471426 bash_4.2-1_i386.deb
 baae47e5c7e9858557477804403fd2de9e640319 112028 bash-builtins_4.2-1_i386.deb
 34b8787383017dbb358130f68f47151b8a747613 845820 bash-static_4.2-1_i386.deb
Checksums-Sha256: 
 87dfc0b8748f52a4579a437c24e6472d760fef151cae144cf300155af6d54dbb 1475 
bash_4.2-1.dsc
 70037fbd9c428207d9daec9267f30eb0f26f3ba82ef5a9b5c923542d00de14de 2796351 
bash_4.2.orig.tar.gz
 fcbd44a7fd036ad170cbcbd2d3234920bf6b05ae3f2d624c3111481f018dd036 74773 
bash_4.2-1.diff.gz
 a7e832956ff8225aabe5337e288c6bd26454dc9d9cbb267a437c0afc7ee10038 697572 
bash-doc_4.2-1_all.deb
 2adaa25450c64a9c689fd13cbc2020f48b260da48b437563d81e27b35a58c654 1471426 
bash_4.2-1_i386.deb
 649831ad05abc3754bdbfd28a60b5fb41dc93b111500bf9940c5a1e9b95624a1 112028 
bash-builtins_4.2-1_i386.deb
 be75a2b05888bc251ca71412a25d1436543e51ae0fb87a95222943b7f62ea517 845820 
bash-static_4.2-1_i386.deb
Files: 
 3589c06cbc82d0dbcd51bc4b0f7eee40 1475 base required bash_4.2-1.dsc
 02bed321ac495a42dee4b6ee1b24cb21 2796351 base required bash_4.2.orig.tar.gz
 f3a255c3ae38c612cefbe035853e8fbc 74773 base required bash_4.2-1.diff.gz
 ba454a71e97f97a72969761b86c96cc6 697572 doc optional bash-doc_4.2-1_all.deb
 4825b660d9af32102a6a8959a4576d41 1471426 shells required bash_4.2-1_i386.deb
 5758c6e244505d69f6cbc55de8f3822b 112028 utils optional 
bash-builtins_4.2-1_i386.deb
 b080b467071ece5f7a052cadc9be53e7 845820 shells optional 
bash-static_4.2-1_i386.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iEYEARECAAYFAk7WBkQACgkQStlRaw+TLJzgMwCcC6DeSNOos0VDeA+FdBwHQkEA
K8QAn2wZ/1tfe/xeZ5g62sRSfNhwK0XB
=/vvE
-----END PGP SIGNATURE-----



--- End Message ---

Reply via email to