这是indexloc提供的服务,不要输入任何密码

Debian Bug report logs - #108587
dpkg: Conffiles that vanish across an upgrade can fool dpkg

version graph

Package: dpkg; Maintainer for dpkg is Dpkg Developers <debian-dpkg@lists.debian.org>; Source for dpkg is src:dpkg (PTS, buildd, popcon).

Reported by: Branden Robinson <branden@debian.org>

Date: Mon, 13 Aug 2001 10:03:01 UTC

Severity: normal

Merged with 182021, 264790, 330874

Found in versions 1.9.16, 1.9.18, 1.9.19

Blocking fix for 349582: zsh: /etc/skel/.zshrc remains after upgrade

Reply or subscribe to this bug.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, Wichert Akkerman <wakkerma@debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Branden Robinson <branden@debian.org>:
New Bug report received and forwarded. Copy sent to Wichert Akkerman <wakkerma@debian.org>. (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Branden Robinson <branden@debian.org>
To: submit@bugs.debian.org
Subject: dpkg: falsely thinks that conffiles have been changed by the user
Date: Mon, 13 Aug 2001 04:50:05 -0500
Package: dpkg
Version: 1.9.16
Severity: normal

--2B/JsCI69OhZNC5r
Content-Type: multipart/mixed; boundary="AhhlLboLdkugWU4S"
Content-Disposition: inline


--AhhlLboLdkugWU4S
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Package: dpkg
Version: 1.9.16
Severity: normal

Here's a potato->sid upgrade on an m68k box.  I got the
changed-local-conffile prompt on the following files:

Configuration file `/etc/X11/Xmodmap'
Configuration file `/etc/X11/app-defaults/XTerm'
Configuration file `/etc/X11/app-defaults/XTerm-color'
Configuration file `/etc/X11/fs/config'
Configuration file `/etc/X11/rgb.txt'
Configuration file `/etc/X11/rstart/config'
Configuration file `/etc/groff/man.local'
Configuration file `/etc/manpath.config'
Configuration file `/etc/pam.d/login'

The only one I modified locally was /etc/X11/Xmodmap.

Attached is a uuencoded, gzipped log of the entire upgrade.

-- System Information
Debian Release: testing/unstable
Architecture: i386
Kernel: Linux apocalypse 2.4.7 #1 Sun Jul 22 19:11:47 EST 2001 i686
Locale: LANG=3DC, LC_CTYPE=3Den_US.iso-8859-1

Versions of packages dpkg depends on:
ii  libc6                  2.2.3-10          GNU C Library: Shared librarie=
s an
ii  libncurses5            5.2.20010318-3    Shared libraries for terminal =
hand
ii  libstdc++2.10-glibc2.2 1:2.95.4-0.010810 The GNU stdc++ library

--=20
G. Branden Robinson                |      We either learn from history or,
Debian GNU/Linux                   |      uh, well, something bad will
branden@deadbeast.net              |      happen.
http://www.deadbeast.net/~branden/ |      -- Bob Church

--AhhlLboLdkugWU4S
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="dpkg-conffile-bug.gz.uu"

begin 644 dpkg-conffile-bug.gz
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
,]^1_`>SV`^^[-`$`
`
end

--AhhlLboLdkugWU4S--

--2B/JsCI69OhZNC5r
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iEYEARECAAYFAjt3YiEACgkQ6kxmHytGonx7mwCfRSBdl2NHDSG5B4QrQZ0X5b1n
PK8AniXFtvdx6FneNB+blI+22lcPDI5A
=UIiQ
-----END PGP SIGNATURE-----

--2B/JsCI69OhZNC5r--

----- End forwarded message -----

-- 
G. Branden Robinson                |      "To be is to do"   -- Plato
Debian GNU/Linux                   |      "To do is to be"   -- Aristotle
branden@debian.org                 |      "Do be do be do"   -- Sinatra
http://people.debian.org/~branden/ |



Message sent on to Branden Robinson <branden@debian.org>:
Bug#108587. (full text, mbox, link).


Message #8 received at 108587-submitter@bugs.debian.org (full text, mbox, reply):

From: Adam Heath <doogie@debian.org>
To: <108587-submitter@bugs.debian.org>
Subject: Re: #108587: dpkg: falsely thinks that conffiles have been changed by the user
Date: Sat, 15 Sep 2001 21:56:26 -0500 (CDT)
If you look at all the conffile prompting in the log, every single prompt
thinks you are overwriting an already existing file, that is not currently a
conffile.

 ==> File on system created by you or by a script.
 ==> File also in package provided by package maintainer.

This leads me to think that the Conffiles setting in status is getting
erased(likely) or corrupted(unlikely).




Tags added: Request was from Wichert Akkerman <wichert@wiggy.net> to control@bugs.debian.org. (full text, mbox, link).


Tags added: unreproducible Request was from Wichert Akkerman <wichert@wiggy.net> to control@bugs.debian.org. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to root <jlquinn@us.ibm.com>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org. (full text, mbox, link).


Message #17 received at 108587@bugs.debian.org (full text, mbox, reply):

From: root <jlquinn@us.ibm.com>
To: Debian Bug Tracking System <108587@bugs.debian.org>
Subject: dpkg: Upgrade of hotplug thinks conffiles are modified
Date: Fri, 08 Feb 2002 13:54:17 -0500
Package: dpkg
Version: 1.9.18

dpkg incorrectly thinks that /etc/hotplug/hotplug.functions was modified and asks
me to resolve diffs during upgrade from hotplug 0.0.20010919-10 to 
hotplug_0.0.20020114-4

-- System Information
Debian Release: 3.0
Architecture: i386
Kernel: Linux wyvern 2.4.17-686 #2 Sat Dec 22 21:58:49 EST 2001 i686
Locale: LANG=C, LC_CTYPE=

Versions of packages dpkg depends on:
ii  libc6                    2.2.4-7         GNU C Library: Shared libraries an
ii  libncurses5              5.2.20020112a-3 Shared libraries for terminal hand
ii  libstdc++2.10-glibc2.2   1:2.95.4-1      The GNU stdc++ library




Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Wichert Akkerman <wichert@wiggy.net>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org. (full text, mbox, link).


Message #22 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Wichert Akkerman <wichert@wiggy.net>
To: root <jlquinn@us.ibm.com>, 108587@bugs.debian.org
Subject: Re: Bug#108587: dpkg: Upgrade of hotplug thinks conffiles are modified
Date: Sat, 9 Feb 2002 17:35:57 +0100
Previously root wrote:
> dpkg incorrectly thinks that /etc/hotplug/hotplug.functions was modified and asks
> me to resolve diffs during upgrade from hotplug 0.0.20010919-10 to 
> hotplug_0.0.20020114-4

Can you reproduce that?

Wichert.

-- 
  _________________________________________________________________
 /wichert@wiggy.net         This space intentionally left occupied \
| wichert@deephackmode.org            http://www.liacs.nl/~wichert/ |
| 1024D/2FA3BC2D 576E 100B 518D 2F16 36B0  2805 3CB8 9250 2FA3 BC2D |



Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to "Jerome L Quinn" <jlquinn@us.ibm.com>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org. (full text, mbox, link).


Message #27 received at 108587@bugs.debian.org (full text, mbox, reply):

From: "Jerome L Quinn" <jlquinn@us.ibm.com>
To: Wichert Akkerman <wichert@wiggy.net>
Cc: 108587@bugs.debian.org
Subject: Re: Bug#108587: dpkg: Upgrade of hotplug thinks conffiles are modified
Date: Mon, 11 Feb 2002 10:30:32 -0500
[Message part 1 (text/plain, inline)]
How should I go about trying to reproduce it?

Jerry


Wichert Akkerman <wichert@wiggy.net> on 02/09/2002 11:35:57 AM

To:    Jerome L Quinn/Watson/IBM@IBMUS, 108587@bugs.debian.org
cc:
Subject:    Re: Bug#108587: dpkg: Upgrade of hotplug thinks conffiles are
       modified


Previously root wrote:
> dpkg incorrectly thinks that /etc/hotplug/hotplug.functions was modified
and asks
> me to resolve diffs during upgrade from hotplug 0.0.20010919-10 to
> hotplug_0.0.20020114-4

Can you reproduce that?

Wichert.

--
  _________________________________________________________________
 /wichert@wiggy.net         This space intentionally left occupied \
| wichert@deephackmode.org            http://www.liacs.nl/~wichert/ |
| 1024D/2FA3BC2D 576E 100B 518D 2F16 36B0  2805 3CB8 9250 2FA3 BC2D |


[Message part 2 (text/html, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to "Jerome L Quinn" <jlquinn@us.ibm.com>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org. (full text, mbox, link).


Message #32 received at 108587@bugs.debian.org (full text, mbox, reply):

From: "Jerome L Quinn" <jlquinn@us.ibm.com>
To: Wichert Akkerman <wichert@wiggy.net>
Cc: 108587@bugs.debian.org
Subject: Re: Bug#108587: dpkg: Upgrade of hotplug thinks conffiles are modified
Date: Tue, 12 Feb 2002 12:15:50 -0500
[Message part 1 (text/plain, inline)]
How would I go about reproducing it?

Jerry


Wichert Akkerman <wichert@wiggy.net> on 02/09/2002 11:35:57 AM

To:    Jerome L Quinn/Watson/IBM@IBMUS, 108587@bugs.debian.org
cc:
Subject:    Re: Bug#108587: dpkg: Upgrade of hotplug thinks conffiles are
       modified


Previously root wrote:
> dpkg incorrectly thinks that /etc/hotplug/hotplug.functions was modified
and asks
> me to resolve diffs during upgrade from hotplug 0.0.20010919-10 to
> hotplug_0.0.20020114-4

Can you reproduce that?

Wichert.

--
  _________________________________________________________________
 /wichert@wiggy.net         This space intentionally left occupied \
| wichert@deephackmode.org            http://www.liacs.nl/~wichert/ |
| 1024D/2FA3BC2D 576E 100B 518D 2F16 36B0  2805 3CB8 9250 2FA3 BC2D |


[Message part 2 (text/html, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to jlquinn@us.ibm.com:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org. (full text, mbox, link).


Message #37 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Jerry Quinn <jlquinn@optonline.net>
To: Debian Bug Tracking System <108587@bugs.debian.org>
Subject: dpkg: Same problem upgrading to tetex-bin_1.0.7+20011202-3.1
Date: Tue, 12 Feb 2002 19:57:44 -0500
Package: dpkg
Version: 1.9.18

dpkg thinks that /etc/texmf/texmf.cnf was modified and enters the
resolution dialog.

old version: tetex-bin 1.0.7+20011202-2
new version: tetex-bin_1.0.7+20011202-3.1_powerpc.deb

-- System Information
Debian Release: 3.0
Architecture: powerpc
Kernel: Linux dragon 2.4.17-rc1 #8 Sat Jan 12 22:16:34 EST 2002 ppc
Locale: LANG=C, LC_CTYPE=

Versions of packages dpkg depends on:
ii  libc6                    2.2.5-3         GNU C Library: Shared libraries an
ii  libncurses5              5.2.20020112a-3 Shared libraries for terminal hand
ii  libstdc++2.10-glibc2.2   1:2.95.4-1      The GNU stdc++ library




Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Junichi Uekawa <dancer@netfort.gr.jp>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org. (full text, mbox, link).


Message #42 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Junichi Uekawa <dancer@netfort.gr.jp>
To: jlquinn@us.ibm.com, 108587@bugs.debian.org
Subject: Re: Bug#108587: dpkg: Same problem upgrading to tetex-bin_1.0.7+20011202-3.1
Date: Thu, 14 Feb 2002 02:57:33 +0900
Jerry Quinn <jlquinn@optonline.net> cum veritate scripsit:

> Package: dpkg
> Version: 1.9.18
> 
> dpkg thinks that /etc/texmf/texmf.cnf was modified and enters the
> resolution dialog.

It is modified in tetex postinst.
This is a bug in tetex.

> 
> old version: tetex-bin 1.0.7+20011202-2
> new version: tetex-bin_1.0.7+20011202-3.1_powerpc.deb

-- 
dancer@debian.org : Junichi Uekawa   http://www.netfort.gr.jp/~dancer
GPG Fingerprint : 17D6 120E 4455 1832 9423  7447 3059 BF92 CD37 56F4



Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Jerry Quinn <jlquinn@us.ibm.com>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>, dpkg@packages.qa.debian.org. (full text, mbox, link).


Message #47 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Jerry Quinn <jlquinn@us.ibm.com>
To: Debian Bug Tracking System <108587@bugs.debian.org>
Subject: dpkg: same problem with viewcvs
Date: Wed, 13 Mar 2002 22:33:01 -0500
Package: dpkg
Version: 1.9.19

Upgrading from 0.9.2-2 to 0.9.2-3 claims that /etc/viewcvs/viewcvs.conf has
been changed and needs resolving with the new version.  That file
hasn't been touched by me.

-- System Information
Debian Release: 3.0
Architecture: i386
Kernel: Linux wyvern 2.4.17-686 #2 Sat Dec 22 21:58:49 EST 2001 i686
Locale: LANG=C, LC_CTYPE=

Versions of packages dpkg depends on:
ii  libc6                    2.2.5-3         GNU C Library: Shared libraries an
ii  libncurses5              5.2.20020112a-5 Shared libraries for terminal hand
ii  libstdc++2.10-glibc2.2   1:2.95.4-1      The GNU stdc++ library




Changed Bug title. Request was from Branden Robinson <branden@debian.org> to control@bugs.debian.org. (full text, mbox, link).


Information forwarded to dpkg@packages.qa.debian.org:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Branden Robinson <branden@debian.org>:
Extra info received and filed, but not forwarded. Copy sent to dpkg@packages.qa.debian.org. (full text, mbox, link).


Message #54 received at 108587-quiet@bugs.debian.org (full text, mbox, reply):

From: Branden Robinson <branden@debian.org>
To: control@bugs.debian.org
Cc: 108587-quiet@bugs.debian.org, 182021-quiet@bugs.debian.org, dpkg@packages.debian.org
Subject: merging and retitling
Date: Wed, 26 Feb 2003 17:05:27 -0500
[Message part 1 (text/plain, inline)]
retitle 108587 dpkg: a conffile that vanishes across an upgrade can fool dpkg
retitle 182021 dpkg: reappearing conffile that had vanished fools dpkg
reassign 182021
merge 108587 182021
thanks

Adam Heath and I have discussed this on IRC.

Quoting the logs of #182021:

  > /etc/X11/xkb/symbols/czsk is tagged as a configuration file, however it
  > contains a version string. Consequently, the user is prompted during
  > upgrade:
  [...]
  > Despite no changes having ever been made.

  That's not why you're being prompted.  You're being prompted because the
  file stopped being shipped as part of the package a while back, but now
  is being shipped again.  Vanishing conffiles are not deleted when a
  package is upgraded.  Therefore, dpkg thinks you're installing a new
  conffile on top of some non-packaged previously-existing version which
  you must have created.

  Dpkg is wrong, of course.

  Dpkg has no mechanism to handle conffiles disappearing across upgrades.

  > Is this just an implementation choice in dpkg, or is there
  > insufficient information in the existing .deb files to enable
  > dpkg to, say, remove unmodified configuration files when a
  > package is being deleted, even if it's not being purged?

  The latter.

  > (It is conceivable that someone, somewhere is depending upon
  > deletion-without-purging to leave even unmodified configuration
  > files intact, but I assume that the idea behind
  > deletion-without-purging is to preserve local _changes_, not
  > just local copies of a removed package's standard out-of-the-box
  > configuration.)

  There should probably be a prompt for disappearing conffiles, similar to
  the one that is used for changing conffiles.

-- 
G. Branden Robinson                |    Men use thought only to justify
Debian GNU/Linux                   |    their wrong doings, and speech only
branden@debian.org                 |    to conceal their thoughts.
http://people.debian.org/~branden/ |    -- Voltaire
[Message part 2 (application/pgp-signature, inline)]

Merged 108587 182021. Request was from Branden Robinson <branden@debian.org> to control@bugs.debian.org. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Thomas Hood <jdthood@yahoo.co.uk>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #61 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Thomas Hood <jdthood@yahoo.co.uk>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: 108587@bugs.debian.org, 108587-submitter@bugs.debian.org, doogie@debian.org, jlquinn@us.ibm.com, Wichert Akkerman <wichert@wiggy.net>, Junichi Uekawa <dancer@netfort.gr.jp>
Subject: Re: May packages rm -rf subdirectories of /etc/ ?
Date: 21 Jul 2003 16:35:35 +0200
Herbert Xu <herbert@gondor.apana.org.au> wrote (to debian-devel):
> Unfortunately dpkg does not handle the case where a conffile
> ceases to exist in a later version of a package.  The conffile
> will be left on the system even after purging.

Agreed, dpkg should do something reasonable when a package
is replaced and the new version doesn't list all the 
conffiles that the old one did.  I'd say that it should
rename such conffiles to $NAME.dpkg-old .  Would that be enough,
or should the user be asked about it?

I am cc:ing this to #108587 (and to people who commented on it)
which already asks for dpkg to handle disappearing conffiles
properly.

--
Thomas






Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Wichert Akkerman <wichert@wiggy.net>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #66 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Wichert Akkerman <wichert@wiggy.net>
To: Thomas Hood <jdthood@yahoo.co.uk>
Cc: Herbert Xu <herbert@gondor.apana.org.au>, 108587@bugs.debian.org, 108587-submitter@bugs.debian.org, doogie@debian.org, jlquinn@us.ibm.com, Junichi Uekawa <dancer@netfort.gr.jp>
Subject: Re: May packages rm -rf subdirectories of /etc/ ?
Date: Mon, 21 Jul 2003 16:39:08 +0200
Previously Thomas Hood wrote:
> Agreed, dpkg should do something reasonable when a package
> is replaced and the new version doesn't list all the 
> conffiles that the old one did.  I'd say that it should
> rename such conffiles to $NAME.dpkg-old .  Would that be enough,
> or should the user be asked about it?

That would be horrible since that extension is already used for a
different purpose and might silently remove useful data.

The real question is: what is reasonable behaviour? Keeping the file as
it is sounds reasonable to me: other (possibly modified) files might
refer to it and might suddenly break if a file is removed. An example
of this is upstream renaming or obsoleting conffiles that other tools
also happen to use (this is happening right now in freeradius).

Wichert.

-- 
Wichert Akkerman <wichert@wiggy.net>      It is simple to make things.
http://www.wiggy.net/                     It is hard to make things simple.




Message sent on to Branden Robinson <branden@debian.org>:
Bug#108587. (full text, mbox, link).


Message sent on to Branden Robinson <branden@debian.org>:
Bug#108587. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Thomas Hood <jdthood@yahoo.co.uk>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #77 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Thomas Hood <jdthood@yahoo.co.uk>
To: Wichert Akkerman <wichert@wiggy.net>
Cc: Herbert Xu <herbert@gondor.apana.org.au>, 108587@bugs.debian.org, 108587-submitter@bugs.debian.org, doogie@debian.org, jlquinn@us.ibm.com, Junichi Uekawa <dancer@netfort.gr.jp>
Subject: Re: May packages rm -rf subdirectories of /etc/ ?
Date: 21 Jul 2003 16:59:44 +0200
On Mon, 2003-07-21 at 16:39, Wichert Akkerman wrote:
> That would be horrible since that extension is already used for a
> different purpose and might silently remove useful data.

The scenario is: foo 1.0 (with conffile /etc/foo.conf) is replaced
by foo 2.0 (without that conffile).

The new package does not have a new copy of this file, so there is
no /etc/foo.conf.dpkg-old arising from the current upgrade.  If a
/etc/foo.conf.dpkg-old is overwritten, it is one left over from an
earlier upgrade; but that is acceptable, no?

The reason I suggested foo.dpkg-old is that .dpkg-old is an extention
that programs already ignore.  However, we could also use something
like ".dpkg-obsolete".

> The real question is: what is reasonable behaviour?

Yes.

>  Keeping the file as
> it is sounds reasonable to me: other (possibly modified) files might
> refer to it and might suddenly break if a file is removed. An example
> of this is upstream renaming or obsoleting conffiles that other tools
> also happen to use (this is happening right now in freeradius).

What you describe doesn't happen if packages are following policy.
According to policy, a package can only rely on a configuration
file that it owns or that belongs to a package upon which it
Depends.  In our scenario, the /etc/foo.conf has NO owner after
foo is upgraded.

Policy 10.7.4:
If two or more packages use the same configuration file and it is
reasonable for both to be installed at the same time, one of these
packages must be defined as owner of the configuration file, i.e.,
it will be the package which handles that file as a configuration
file. Other packages that use the configuration file must depend
on the owning package if they require the configuration file to
operate.

--
Thomas Hood




Message sent on to Branden Robinson <branden@debian.org>:
Bug#108587. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Wichert Akkerman <wichert@wiggy.net>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #85 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Wichert Akkerman <wichert@wiggy.net>
To: Thomas Hood <jdthood@yahoo.co.uk>
Cc: Herbert Xu <herbert@gondor.apana.org.au>, 108587@bugs.debian.org, 108587-submitter@bugs.debian.org, doogie@debian.org, jlquinn@us.ibm.com, Junichi Uekawa <dancer@netfort.gr.jp>
Subject: Re: May packages rm -rf subdirectories of /etc/ ?
Date: Mon, 21 Jul 2003 17:09:12 +0200
Previously Thomas Hood wrote:
> The new package does not have a new copy of this file, so there is
> no /etc/foo.conf.dpkg-old arising from the current upgrade.

A more likely scenario:

* package A has conffile /etc/A
* user modified /etc/A
* package A makes a change in conffile, so now we have /etc/A and
  /etc/A.dpkg-old
* package A no longer uses /etc/A or renames it

User upgrades A, dpkg overwrites /etc/A.dpkg-old without asking uses
since he didn't change the current version of the conffile and looses
his earlier customisation which was in /etc/A.dpkg-old. 

> What you describe doesn't happen if packages are following policy.
> According to policy, a package can only rely on a configuration
> file that it owns or that belongs to a package upon which it
> Depends.  In our scenario, the /etc/foo.conf has NO owner after
> foo is upgraded.

Debian policy isn't everything, dpkg is used in non-Debian environments
which do not use Debian policy. There are also many custom applications
that are not part of Debian that you have to take into account. 

Finally, the bit of policy you quote does not cover this situation: if
a package B depends on A since it uses a conffile from A it will still
break when A no longer ships that conffile. So in fact if you want to
prevent breakage from policy-complient packages it is important *not*
to rename or remove conffiles.

Wichert.

-- 
Wichert Akkerman <wichert@wiggy.net>      It is simple to make things.
http://www.wiggy.net/                     It is hard to make things simple.




Message sent on to Branden Robinson <branden@debian.org>:
Bug#108587. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Herbert Xu <herbert@gondor.apana.org.au>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #93 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Herbert Xu <herbert@gondor.apana.org.au>
To: Wichert Akkerman <wichert@wiggy.net>
Cc: Thomas Hood <jdthood@yahoo.co.uk>, 108587@bugs.debian.org, 108587-submitter@bugs.debian.org, doogie@debian.org, jlquinn@us.ibm.com, Junichi Uekawa <dancer@netfort.gr.jp>
Subject: Re: May packages rm -rf subdirectories of /etc/ ?
Date: Tue, 22 Jul 2003 07:21:04 +1000
On Mon, Jul 21, 2003 at 04:39:08PM +0200, Wichert Akkerman wrote:
> 
> The real question is: what is reasonable behaviour? Keeping the file as

What about this?

Treat the disappearence of a conffile the same way as you treat any
other changes.  Prompt the user as usual, if they answer yes, then
rename the file to .dpkg-old.  Otherwise do nothing.

Dpkg will still need to remember the .dpkg-old file so that later
on it can purge it.
-- 
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email:  Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



Message sent on to Branden Robinson <branden@debian.org>:
Bug#108587. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Branden Robinson <branden@debian.org>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #101 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Branden Robinson <branden@debian.org>
To: 108587@bugs.debian.org
Cc: Wichert Akkerman <wichert@wiggy.net>, Thomas Hood <jdthood@yahoo.co.uk>, Herbert Xu <herbert@gondor.apana.org.au>, doogie@debian.org, jlquinn@us.ibm.com, Junichi Uekawa <dancer@netfort.gr.jp>
Subject: Re: Bug#108587: May packages rm -rf subdirectories of /etc/ ?
Date: Mon, 21 Jul 2003 23:30:40 -0500
[Message part 1 (text/plain, inline)]
On Tue, Jul 22, 2003 at 07:21:04AM +1000, Herbert Xu wrote:
> On Mon, Jul 21, 2003 at 04:39:08PM +0200, Wichert Akkerman wrote:
> > 
> > The real question is: what is reasonable behaviour? Keeping the file as
> 
> What about this?
> 
> Treat the disappearence of a conffile the same way as you treat any
> other changes.  Prompt the user as usual, if they answer yes, then
> rename the file to .dpkg-old.  Otherwise do nothing.
> 
> Dpkg will still need to remember the .dpkg-old file so that later
> on it can purge it.

As much as I hate prompting, this is what I personally always had in
mind.

It's too hard to know what the right thing to do is.  Best to prompt.

-- 
G. Branden Robinson                |     It's not a matter of alienating
Debian GNU/Linux                   |     authors.  They have every right to
branden@debian.org                 |     license their software however we
http://people.debian.org/~branden/ |     like.  -- Craig Sanders
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Thomas Hood <jdthood@yahoo.co.uk>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #106 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Thomas Hood <jdthood@yahoo.co.uk>
To: Branden Robinson <branden@debian.org>
Cc: 108587@bugs.debian.org, Wichert Akkerman <wichert@wiggy.net>, Herbert Xu <herbert@gondor.apana.org.au>, doogie@debian.org, jlquinn@us.ibm.com, Junichi Uekawa <dancer@netfort.gr.jp>
Subject: Re: Bug#108587: May packages rm -rf subdirectories of /etc/ ?
Date: 22 Jul 2003 07:24:51 +0200
On Tue, 2003-07-22 at 06:30, Branden Robinson wrote:
> On Tue, Jul 22, 2003 at 07:21:04AM +1000, Herbert Xu wrote:
> > What about this?
> > 
> > Treat the disappearence of a conffile the same way as you treat any
> > other changes.  Prompt the user as usual, if they answer yes, then
> > rename the file to .dpkg-old.  Otherwise do nothing.
> > 
> > Dpkg will still need to remember the .dpkg-old file so that later
> > on it can purge it.
> 
> As much as I hate prompting, this is what I personally always had in
> mind.
> 
> It's too hard to know what the right thing to do is.  Best to prompt.

Wichert Akkerman made the point that in some cases you
have a package B that Depends on package A and uses /etc/A.conf .
A new A is released that no longer contains /etc/A.conf .  The
new situation is broken and policy-non-compliant no matter how
you look at it; but what is the safest thing to do?  Wichert
argues that the safest thing to do is to leave the file alone.

Now, the above proposal is that an offer be made to the admin to
rename A.conf to A.conf.dpkg-old .  In recognition of Wichert's
failure scenario, the prompt should at least warn the admin that
agreeing to rename the file _could_ break packages that Depend
on A.

--
Thomas




Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Branden Robinson <branden@debian.org>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #111 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Branden Robinson <branden@debian.org>
To: 108587@bugs.debian.org
Cc: Wichert Akkerman <wichert@wiggy.net>, Thomas Hood <jdthood@yahoo.co.uk>, Herbert Xu <herbert@gondor.apana.org.au>, doogie@debian.org, jlquinn@us.ibm.com, Junichi Uekawa <dancer@netfort.gr.jp>
Subject: Re: Bug#108587: May packages rm -rf subdirectories of /etc/ ?
Date: Tue, 22 Jul 2003 15:51:25 -0500
[Message part 1 (text/plain, inline)]
On Tue, Jul 22, 2003 at 07:24:51AM +0200, Thomas Hood wrote:
> Now, the above proposal is that an offer be made to the admin to
> rename A.conf to A.conf.dpkg-old .  In recognition of Wichert's
> failure scenario, the prompt should at least warn the admin that
> agreeing to rename the file _could_ break packages that Depend
> on A.

No objection.  If the admin is concerned he should be able to background
the prompt and investigate just as with the current
changed-conffile-overwrite prompt.

-- 
G. Branden Robinson                |     That's the saving grace of humor:
Debian GNU/Linux                   |     if you fail, no one is laughing at
branden@debian.org                 |     you.
http://people.debian.org/~branden/ |     -- A. Whitney Brown
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Wichert Akkerman <wichert@wiggy.net>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #116 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Wichert Akkerman <wichert@wiggy.net>
To: Branden Robinson <branden@debian.org>
Cc: 108587@bugs.debian.org, Thomas Hood <jdthood@yahoo.co.uk>, Herbert Xu <herbert@gondor.apana.org.au>, doogie@debian.org, jlquinn@us.ibm.com, Junichi Uekawa <dancer@netfort.gr.jp>
Subject: Re: Bug#108587: May packages rm -rf subdirectories of /etc/ ?
Date: Tue, 22 Jul 2003 22:53:31 +0200
Previously Branden Robinson wrote:
> No objection.  If the admin is concerned he should be able to background
> the prompt and investigate just as with the current
> changed-conffile-overwrite prompt.

I'll see if I can work that into the new conffile handling code.

Wichert.

-- 
Wichert Akkerman <wichert@wiggy.net>      It is simple to make things.
http://www.wiggy.net/                     It is hard to make things simple.




Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Thomas Hood <jdthood@yahoo.co.uk>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #121 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Thomas Hood <jdthood@yahoo.co.uk>
Cc: 108587@bugs.debian.org
Subject: Re: May packages rm -rf subdirectories of /etc/ ?
Date: 24 Jul 2003 13:12:58 +0200
On Thu, 2003-07-24 at 08:47, Andreas Metzler wrote:
> It really sucks to handle this if you want/need to get rid of it (if
> it is unmodified) not only on purge but on upgrades. - You'll need
> 
> if [ "$1" =  "configure" ] && \
>         dpkg --compare-versions "$2" le-nl "1.2.3" && \
>         [ -e /etc/foo ] && \
>         [ `md5sum /etc/foo | cut -d\  -f1` = "6bea09fbb18e4676012105fa5fc726c6" ]
> then
>         echo "Removing orphaned unmodified configfile /etc/foo" 1>&2
>         rm /etc/foo
> fi

In a discussion that followed from this thread off-list, some
people agreed that the administrator should be asked what
he or she wants to do with an obsolete conffile.  The conffile
should not be deleted silently because other packages may be
using the file.

Here is how I see it.  On install of the new version of foo
which lacks the former foo conffile /etc/foo.conf,

* dpkg informs the user that /etc/foo.conf is no longer a
  conffile of foo;
* dpkg says whether or not /etc/foo.conf was changed from the
  original;
* dpkg offers to display the file, to start a shell so that
  the user can check things out, or to do one of three things
  to the file:
  * leave the file as it is (= the current behavior),
  * delete the file (= the default if the file has not been changed),
  or,
  * rename the file to /etc/foo.conf.dpkg-old (= the default if
    the file has been changed)

--
Thomas




Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Thomas Hood <jdthood@yahoo.co.uk>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #126 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Thomas Hood <jdthood@yahoo.co.uk>
To: debian-devel@lists.debian.org
Cc: 108587@bugs.debian.org
Subject: Re: May packages rm -rf subdirectories of /etc/ ?
Date: 24 Jul 2003 14:07:35 +0200
On Thu, 2003-07-24 at 13:46, Stephen Frost wrote:
> I see this as totally bogus.  Either the conffile is shared or it isn't.
> If it's shared then the packages involved know this

Package foo which eliminates /etc/foo.conf doesn't "know"
that there is not some other package, bar, which Depends
on foo and uses /etc/foo.conf .  That's the problem.  See
#108587 for additional discussion.

--
Thomas




Tags removed: unreproducible Request was from Thomas Hood <jdthood@yahoo.co.uk> to control@bugs.debian.org. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Stephen Frost <sfrost@snowman.net>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #133 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Stephen Frost <sfrost@snowman.net>
To: Thomas Hood <jdthood@yahoo.co.uk>
Cc: debian-devel@lists.debian.org, 108587@bugs.debian.org
Subject: Re: May packages rm -rf subdirectories of /etc/ ?
Date: Thu, 24 Jul 2003 08:53:27 -0400
[Message part 1 (text/plain, inline)]
* Thomas Hood (jdthood@yahoo.co.uk) wrote:
> On Thu, 2003-07-24 at 13:46, Stephen Frost wrote:
> > I see this as totally bogus.  Either the conffile is shared or it isn't.
> > If it's shared then the packages involved know this
> 
> Package foo which eliminates /etc/foo.conf doesn't "know"
> that there is not some other package, bar, which Depends
> on foo and uses /etc/foo.conf .  That's the problem.  See
> #108587 for additional discussion.

The maintainer should really know.  The maintainer is more likely to
know than the user in many cases.  I think it would be worthwhile for
policy to be modified to require notification when a sharing of this
kind happens.  I know that I'd expect someone to tell me if they're
using a conffile from my package.

	Stephen
[Message part 2 (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Thomas Hood <jdthood@yahoo.co.uk>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #138 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Thomas Hood <jdthood@yahoo.co.uk>
To: debian-devel@lists.debian.org, 108587@bugs.debian.org
Subject: Re: May packages rm -rf subdirectories of /etc/ ?
Date: 24 Jul 2003 15:06:59 +0200
On Thu, 2003-07-24 at 14:53, Stephen Frost wrote:
> * Thomas Hood (jdthood@yahoo.co.uk) wrote:
> > Package foo which eliminates /etc/foo.conf doesn't "know"
> > that there is not some other package, bar, which Depends
> > on foo and uses /etc/foo.conf .  That's the problem.  See
> > #108587 for additional discussion.
> 
> The maintainer should really know.  The maintainer is more likely to
> know than the user in many cases.  I think it would be worthwhile for
> policy to be modified to require notification when a sharing of this
> kind happens.  I know that I'd expect someone to tell me if they're
> using a conffile from my package.

If this were required in policy, then there ought to be an easy
way to comply.  We could allow packages to list Conffiles that
are not shipped with the package; these would have to be included
in some package upon which the dependent package Depends.  That
would give dpkg the information it needs to decide whether it
is OK to delete the conffile when foo abandons it.  If bar listed
foo.conf as a conffile, then bar could inherit the file when foo
abandoned it.

Perhaps that could be made to work, but it would be complex,
and dpkg is already beyond the capacity of Debian to maintain
properly.

--
Thomas




Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Thomas Hood <jdthood@yahoo.co.uk>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #143 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Thomas Hood <jdthood@yahoo.co.uk>
To: debian-devel@lists.debian.org
Cc: 108587@bugs.debian.org
Subject: Re: May packages rm -rf subdirectories of /etc/ ?
Date: 25 Jul 2003 09:20:20 +0200
On Fri, 2003-07-25 at 07:59, Manoj Srivastava wrote:
> 	Umm. apt allows you to determine reverse depends.  From there
>  there is an easy hop to sending email to ask the develoeprsa in
>  question; or to exaimine a package to look at its conffiles. 

This doesn't solve the problem of the dependent package being
broken by the removal of the conffile upon which it has been
depending.  A _new_ version of the dependent package may have
been released to the archive, but this is not the version that
the victim has installed on his computer.

Nick Phillips made a good point, however, when he said that
conffiles are no different from other files in this respect.
If bar depends on foo, then bar might be broken if _any_ file
is removed from foo.  Yet we do not do anything special when
foo version 2.0 lacks an ordinary file that was contained in foo
version 1.0.  So we should not do anything special for conffiles
either but (as Manoj Srivastava says) we should rely on
communication among maintainers to avoid problems.

Conffiles are different in one respect, which that is that they
can be locally modified.  When a conffile is to be overwritten
and it has been modified, the user is asked for permission and
the old version is backed up as *.dpkg-old.  So when a conffile
is to be deleted and it has been modified, the user should be
asked for permission and the file renamed to *.dpkg-old
(or *.dpkg-orphaned).  Agree?

--
Thomas




Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Development <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Thomas Hood <jdthood@yahoo.co.uk>:
Extra info received and forwarded to list. Copy sent to Dpkg Development <debian-dpkg@lists.debian.org>. (full text, mbox, link).


Message #148 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Thomas Hood <jdthood@yahoo.co.uk>
To: 108587@bugs.debian.org
Subject: Summary
Date: 26 Jul 2003 21:09:59 +0200
I think we have heard all sides of this now (in debian-devel)
I conclude that dpkg should deal with an obsolete conffile in
the following way.

If the conffile has not been locally modified, delete it.
If the conffile has been locally modified, ask the user for
permission to eliminate the file; if permission is granted
then rename the file to *.dpkg-obsolete .

Thanks
--
Thomas




Changed Bug title. Request was from Adam Heath <doogie@brainfood.com> to control@bugs.debian.org. (full text, mbox, link).


Merged 108587 182021 264790. Request was from Josselin Mouette <joss@debian.org> to control@bugs.debian.org. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Scott James Remnant <scott@netsplit.com>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Ian Jackson <ian@davenant.greenend.org.uk>:
Extra info received and forwarded to list. Copy sent to Scott James Remnant <scott@netsplit.com>. (full text, mbox, link).


Message #157 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Ian Jackson <ian@davenant.greenend.org.uk>
To: 108587@bugs.debian.org
Subject: Disappearing conffiles
Date: Thu, 25 Aug 2005 18:07:52 +0100
This bug (the lack of proper handling of a disappeared conffile) also
causes a spurious conffile prompt in the following case:
  A version 1:  /etc/zork.conf, conffile
  A version 2:  no file
  B version 1:  no file
  B version 2:  /etc/zork.conf, conffile

Now if A is upgraded before B, then after A's upgrade the conffile is
left existing but dpkg has forgotten all about it.  Then when B is
upgrade it looks like the user wrote the conffile and you get a prompt.

I agree with Thomas Hood's specification of the correct behaviour,
except that I would say that .dpkg-old is a perfectly good name for
the obsolete file.

Ian.



Information forwarded to debian-bugs-dist@lists.debian.org, Scott James Remnant <scott@netsplit.com>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Ian Jackson <ian@davenant.greenend.org.uk>:
Extra info received and forwarded to list. Copy sent to Scott James Remnant <scott@netsplit.com>. (full text, mbox, link).


Message #162 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Ian Jackson <ian@davenant.greenend.org.uk>
To: 108587@bugs.debian.org
Subject: dpkg vanishing conffiles - more complex/complete specification
Date: Fri, 26 Aug 2005 17:17:51 +0100
This turns out to be somewhat harder than it looks.

dpkg does conffile processing during configuration.  If anything goes
wrong during conffile processing, it stops there; it does not
(currently) keep a record in the status file of which conffiles have
been processed and which are as yet undone.  Instead, the processing
of each individual conffile is made idempotent.  That way a second
dpkg run can tell if this file has already been processed.

The way this is done is that the new package's version of the file is
left in .dpkg-new from the unpack phase.  The processing renames it
away to a different name.  So an unprocessed conffile has a .dpkg-new
and a processed one does not.  However in the case of a disappearing
conffile there is no .dpkg-new, so it is not easy to tell what's going
on.

Also, since the file has been removed from the new package, currently,
once the new package has been unpacked, there is no record of it in
dpkg's databases.

I propose the following new arrangements:

 * Until the conffile is processed (during configuration), it remains
   owned by the package and listed in its .list file and Conffiles
   field even though the new version of the package doesn't contain
   the file.

 * However, we introduce a new syntax in the Conffiles status file
   field: optionally, after the md5sum, we add the annotation
   `disappearing'.  This annotation is there exactly in the case where
   the conffile is only listed as part of the package because it was
   in a _previous_ version of the package and we haven't completed the
   conffile processing yet.

 * During the end of unpack processing, while the old files (ones on
   the old but not the new package) are being removed from the file
   list, if the old file was a conffile, we retain its entry in the
   status file's Conffiles field, with the old original hash, and we
   retain its entry in the file list.  We add the `disappearing'
   annotation to the Conffiles entry.

 * During conffile processing, we check for the disappearing flag.  If
   so we don't treat the nonexistence of the .dpkg-new file as telling
   us that the file has already been processed.  Strictly, in this
   order, for each conffile:

    1. check for .dpkg-new and `disappearing':
      .dpkg-new nonexistent   not disappearing   already done, do nothing
      .dpkg-new nonexistent   disappearing       goto 2, new arrangements
      .dpkg-new exists        not disappearing   process as we used to
      .dpkg-new exists        disappearing       error

    2. check if locally modified; if not (or if file does not
       exist): delete it (if necessary) and goto 5.

    3. ask user what to do
    4. rename file to .dpkg-old if user says so, or just leave it
       (these two steps are where we do the algorithm Thomas Hood
        suggests, as modified by my followup).

    5. post update to <package>.list and status file (in that order) with
       all trace of this file removed.

 * When we take over a Conffile entry from one package to another,
   during unpack, we clear the disappearing flag.

Ian.



Information forwarded to debian-bugs-dist@lists.debian.org, Scott James Remnant <scott@netsplit.com>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Ian Jackson <ian@davenant.greenend.org.uk>:
Extra info received and forwarded to list. Copy sent to Scott James Remnant <scott@netsplit.com>. (full text, mbox, link).


Message #167 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Ian Jackson <ian@davenant.greenend.org.uk>
To: 108587@bugs.debian.org
Subject: Re: dpkg vanishing conffiles - more complex/complete specification
Date: Wed, 31 Aug 2005 18:26:40 +0100
Ian Jackson writes ("dpkg vanishing conffiles - more complex/complete specification"):
>  * During conffile processing, [...]

How does dpkg know whether the conffile is has been removed from the
package and its conffiles because it's obsolete (in which case the
user should be asked whether to remove it) and it's been removed
because it's changing from a conffile to a maintainer-script handled
config file ?

I don't think dpkg has any way to tell at the moment.  The package
maintainer would have to say.  And, for existing packages, something
approaching the current behaviour is sensible to avoid breaking stuff.

So, I'll rename "disappearing" to "obsolete" and not do any
configure-stage processing at all.  But we'll leave the file as part
of the package's files list and conffiles list, which will at least
make purge work properly and allow any new package which takes over
the file to get the full conffile record.

New scheme:

 * During unpack, when an existing conffile is not present in the new
   archive, it remains owned by the package and listed in its .list
   file and Conffiles field even though the new version of the package
   doesn't contain the file.

 * However, we introduce a new syntax in the Conffiles status file
   field: optionally, after the md5sum, we add the annotation
   `obsolete'.  This annotation is there exactly in the case where the
   conffile is only listed as part of the package because it was in a
   _previous_ version of the package.
 
 * During the end of unpack processing, while the old files (ones on
   the old but not the new package) are being removed from the file
   list, if the old file was a conffile, we retain its entry in the
   status file's Conffiles field, with the old original hash, and we
   retain its entry in the file list.  We add the `obsolete'
   annotation to the Conffiles entry.

 * During conffile processing, the disappeared conffile will never
   have a .dpkg-new so we will simply skip it.

 * When we take over a Conffile entry from one package to another,
   during unpack, we clear the disappearing flag.

 * Purge will automatically pick up the new entry and purge the old
   file.

Ian.



Information forwarded to debian-bugs-dist@lists.debian.org, Scott James Remnant <scott@netsplit.com>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Ian Jackson <ian@davenant.greenend.org.uk>:
Extra info received and forwarded to list. Copy sent to Scott James Remnant <scott@netsplit.com>. (full text, mbox, link).


Message #172 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Ian Jackson <ian@davenant.greenend.org.uk>
To: 108587@bugs.debian.org
Subject: Re: dpkg vanishing conffiles - more complex/complete specification
Date: Thu, 1 Sep 2005 16:33:09 +0100
[Message part 1 (text/plain, inline)]
Ian Jackson writes ("Re: dpkg vanishing conffiles - more complex/complete specification"):
> New scheme:
>  * During unpack, [...]

I have implemented this and tested it and it works for me.  It fixes
the spurious conffile prompt I was seeing and appears to work
otherwise.

Attached is a patch against 1.13.11 (which also applies to
1.13.10ubuntu2 although I haven't checked whether that latter result
compiles or works).

[dpkg-1.13.11-108587partialfix.diff (text/plain, inline)]
Only in dpkg-1.13.11: build-tree
diff -ru orig/dpkg-1.13.11/debian/changelog dpkg-1.13.11/debian/changelog
--- orig/dpkg-1.13.11/debian/changelog	2005-08-17 04:45:20.000000000 +0100
+++ dpkg-1.13.11/debian/changelog	2005-09-01 16:20:50.000000000 +0100
@@ -1,3 +1,10 @@
+dpkg (1.13.11.0.99.iwj.0) unstable; urgency=low
+
+  * Improve processing of disappearing conffiles.
+    This is part of the fix for Debian bug #108587.
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk>  Thu,  1 Sep 2005 16:20:50 +0100
+
 dpkg (1.13.11) unstable; urgency=low
   
   The "Good, clean fun" Release.
Only in dpkg-1.13.11/debian: dpkg
Only in dpkg-1.13.11/debian: dpkg-dev
Only in dpkg-1.13.11/debian: dpkg.substvars
Only in dpkg-1.13.11/debian: dselect
Only in dpkg-1.13.11/debian: dselect.substvars
Only in dpkg-1.13.11/debian: files
Only in dpkg-1.13.11/debian: tmp
diff -ru orig/dpkg-1.13.11/lib/dpkg-db.h dpkg-1.13.11/lib/dpkg-db.h
--- orig/dpkg-1.13.11/lib/dpkg-db.h	2005-06-10 10:28:24.000000000 +0100
+++ dpkg-1.13.11/lib/dpkg-db.h	2005-09-01 12:25:16.000000000 +0100
@@ -84,6 +84,7 @@
   struct conffile *next;
   const char *name;
   const char *hash;
+  int obsolete;
 };
 
 struct filedetails {
diff -ru orig/dpkg-1.13.11/lib/dump.c dpkg-1.13.11/lib/dump.c
--- orig/dpkg-1.13.11/lib/dump.c	2005-06-06 05:07:12.000000000 +0100
+++ dpkg-1.13.11/lib/dump.c	2005-09-01 12:25:16.000000000 +0100
@@ -233,6 +233,7 @@
     if (i!=pifp->conffiles) varbufaddc(vb,'\n');
     varbufaddc(vb,' '); varbufaddstr(vb,i->name); varbufaddc(vb,' ');
     varbufaddstr(vb,i->hash);
+    if (i->obsolete) varbufaddstr(vb," obsolete");
   }
   if (flags&fw_printheader)
     varbufaddc(vb,'\n');
diff -ru orig/dpkg-1.13.11/lib/fields.c dpkg-1.13.11/lib/fields.c
--- orig/dpkg-1.13.11/lib/fields.c	2005-06-06 05:07:12.000000000 +0100
+++ dpkg-1.13.11/lib/fields.c	2005-09-01 16:13:51.000000000 +0100
@@ -222,13 +222,38 @@
                      "in Config-Version string `%.250s': %.250s"),value,emsg);
 }
 
+void conffvalue_lastword(const char *value, const char *from,
+			 const char *endent,
+			 const char **word_start_r, int *word_len_r,
+			 const char **new_from_r,
+			 const char *filename, int lno,
+			 FILE *warnto, int *warncount, struct pkginfo *pigp) {
+  /* the code in f_conffiles ensures that value[-1]==' ', which is helpful */
+  const char *lastspc;
+  
+  if (from <= value+1) goto malformed;
+  for (lastspc= from-1; *lastspc != ' '; lastspc--);
+  if (lastspc <= value+1 || lastspc >= endent-1) goto malformed;
+
+  *new_from_r= lastspc;
+  *word_start_r= lastspc + 1;
+  *word_len_r= (int)(from - *word_start_r);
+  return;
+
+malformed:
+  parseerr(NULL,filename,lno, warnto,warncount,pigp,0,
+	   _("value for `conffiles' has malformatted line `%.*s'"),
+	   (int)(endent-value > 250 ? 250 : endent-value), value);
+}
+
 void f_conffiles(struct pkginfo *pigp, struct pkginfoperfile *pifp,
                  enum parsedbflags flags,
                  const char *filename, int lno, FILE *warnto, int *warncount,
                  const char *value, const struct fieldinfo *fip) {
+  static const char obsolete_str[]= "obsolete";
   struct conffile **lastp, *newlink;
-  const char *endent, *endfn;
-  int c, namelen, hashlen;
+  const char *endent, *endfn, *hashstart;
+  int c, namelen, hashlen, obsolete;
   char *newptr;
   
   lastp= &pifp->conffiles;
@@ -238,11 +263,15 @@
     if (c != ' ') parseerr(NULL,filename,lno, warnto,warncount,pigp,0, _("value for"
                            " `conffiles' has line starting with non-space `%c'"), c);
     for (endent= value; (c= *endent)!=0 && c != '\n'; endent++);
-    for (endfn= endent; *endfn != ' '; endfn--);
-    if (endfn <= value+1 || endfn >= endent-1)
-      parseerr(NULL,filename,lno, warnto,warncount,pigp,0,
-               _("value for `conffiles' has malformatted line `%.*s'"),
-               (int)(endent-value > 250 ? 250 : endent-value), value);
+    conffvalue_lastword(value, endent, endent,
+			&hashstart, &hashlen, &endfn,
+			filename,lno,warnto,warncount,pigp);
+    obsolete= (hashlen == sizeof(obsolete_str)-1 &&
+	       !memcmp(hashstart, obsolete_str, hashlen));
+    if (obsolete)
+      conffvalue_lastword(value, endfn, endent,
+			  &hashstart, &hashlen, &endfn,
+			  filename,lno,warnto,warncount,pigp);
     newlink= nfmalloc(sizeof(struct conffile));
     value= skip_slash_dotslash(value);
     namelen= (int)(endfn-value);
@@ -253,9 +282,10 @@
     memcpy(newptr+1,value,namelen);
     newptr[namelen+1]= 0;
     newlink->name= newptr;
-    hashlen= (int)(endent-endfn)-1; newptr= nfmalloc(hashlen+1);
-    memcpy(newptr,endfn+1,hashlen); newptr[hashlen]= 0;
+    newptr= nfmalloc(hashlen+1);
+    memcpy(newptr,hashstart,hashlen); newptr[hashlen]= 0;
     newlink->hash= newptr;
+    newlink->obsolete= obsolete;
     newlink->next =NULL;
     *lastp= newlink;
     lastp= &newlink->next;
diff -ru orig/dpkg-1.13.11/src/archives.c dpkg-1.13.11/src/archives.c
--- orig/dpkg-1.13.11/src/archives.c	2005-08-14 19:23:51.000000000 +0100
+++ dpkg-1.13.11/src/archives.c	2005-09-01 15:55:55.000000000 +0100
@@ -315,14 +315,25 @@
   errno= e; return r;
 }
 
+struct fileinlist *addfiletolist(struct tarcontext *tc,
+				 struct filenamenode *namenode) {
+  struct fileinlist *nifd;
+  
+  nifd= obstack_alloc(&tar_obs, sizeof(struct fileinlist));
+  nifd->namenode= namenode;
+  nifd->next= 0; *tc->newfilesp= nifd; tc->newfilesp= &nifd->next;
+  return nifd;
+}
+
 int tarobject(struct TarInfo *ti) {
   static struct varbuf conffderefn, hardlinkfn, symlinkfn;
   const char *usename;
-    
+
+  struct conffile *conff;
   struct tarcontext *tc= (struct tarcontext*)ti->UserData;
   int statr, fd, i, existingdirectory, keepexisting;
   size_t r;
-  struct stat stab, stabd;
+  struct stat stab, stabtmp;
   char databuf[TARBLKSZ];
   struct fileinlist *nifd, **oldnifd;
   struct pkginfo *divpkg, *otherpkg;
@@ -336,9 +347,7 @@
    * been stripped by TarExtractor (lib/tarfn.c).
    */
   oldnifd= tc->newfilesp;
-  nifd= obstack_alloc(&tar_obs, sizeof(struct fileinlist));
-  nifd->namenode= findnamenode(ti->Name, 0);
-  nifd->next= 0; *tc->newfilesp= nifd; tc->newfilesp= &nifd->next;
+  nifd= addfiletolist(tc, findnamenode(ti->Name, 0));
   nifd->namenode->flags |= fnnf_new_inarchive;
 
   debug(dbg_eachfile,
@@ -417,7 +426,7 @@
     break;
   case Directory:
     /* If it's already an existing directory, do nothing. */
-    if (!stat(fnamevb.buf,&stabd) && S_ISDIR(stabd.st_mode)) {
+    if (!stat(fnamevb.buf,&stabtmp) && S_ISDIR(stabtmp.st_mode)) {
       debug(dbg_eachfiledetail,"tarobject Directory exists");
       existingdirectory= 1;
     }
@@ -463,6 +472,29 @@
         if (otherpkg->status == stat_configfiles) continue;
         /* Perhaps we're removing a conflicting package ? */
         if (otherpkg->clientdata->istobe == itb_remove) continue;
+
+	/* Is the file an obsolete conffile in the other package
+	 * and a conffile in the new package ? */
+	if ((nifd->namenode->flags & fnnf_new_conff) &&
+	    !statr && S_ISREG(stab.st_mode)) {
+	  for (conff= otherpkg->installed.conffiles;
+	       conff;
+	       conff= conff->next) {
+	    if (!conff->obsolete)
+	      continue;
+	    if (stat(conff->name, &stabtmp))
+	      if (errno == ENOENT || errno == ENOTDIR || errno == ELOOP)
+		continue;
+	    if (stabtmp.st_dev == stab.st_dev &&
+		stabtmp.st_ino == stab.st_ino)
+	      break;
+	  }
+	  if (conff)
+	    debug(dbg_eachfiledetail,"tarobject other's obsolete conffile");
+	    /* processarc.c will have copied its hash already. */
+	    continue;
+	}
+
         if (does_replace(tc->pkg,&tc->pkg->available,otherpkg)) {
           printf(_("Replacing files in old package %s ...\n"),otherpkg->name);
           otherpkg->clientdata->replacingfilesandsaid= 1;
@@ -1103,5 +1135,17 @@
   }
 }
 
+struct fileinlist *newconff_append(struct fileinlist ***newconffileslastp_io,
+				   struct filenamenode *namenode) {
+  struct fileinlist *newconff;
+
+  newconff= m_malloc(sizeof(struct fileinlist));
+  newconff->next= 0;
+  newconff->namenode= namenode;
+  **newconffileslastp_io= newconff;
+  *newconffileslastp_io= &newconff->next;
+  return newconff;
+}
+
 /* vi: ts=8 sw=2
  */
diff -ru orig/dpkg-1.13.11/src/archives.h dpkg-1.13.11/src/archives.h
--- orig/dpkg-1.13.11/src/archives.h	2005-06-06 05:07:12.000000000 +0100
+++ dpkg-1.13.11/src/archives.h	2005-09-01 12:59:17.000000000 +0100
@@ -66,6 +66,9 @@
 void check_conflict(struct dependency *dep, struct pkginfo *pkg,
                     const char *pfilename);
 
+struct fileinlist *addfiletolist(struct tarcontext *tc,
+				 struct filenamenode *namenode);
+
 extern int cleanup_pkg_failed, cleanup_conflictor_failed;
 
 #endif /* ARCHIVES_H */
diff -ru orig/dpkg-1.13.11/src/filesdb.h dpkg-1.13.11/src/filesdb.h
--- orig/dpkg-1.13.11/src/filesdb.h	2005-08-14 19:23:51.000000000 +0100
+++ dpkg-1.13.11/src/filesdb.h	2005-09-01 12:50:29.000000000 +0100
@@ -65,6 +65,7 @@
     fnnf_new_conff=           000001, /* in the newconffiles list */
     fnnf_new_inarchive=       000002, /* in the new filesystem archive */
     fnnf_old_conff=           000004, /* in the old package's conffiles list */
+    fnnf_obs_conff=           000100, /* obsolete conffile */
     fnnf_elide_other_lists=   000010, /* must remove from other packages' lists */
     fnnf_no_atomic_overwrite= 000020, /* >=1 instance is a dir, cannot rename over */
     fnnf_placed_on_disk=      000040, /* new file has been placed on the disk */
diff -ru orig/dpkg-1.13.11/src/help.c dpkg-1.13.11/src/help.c
--- orig/dpkg-1.13.11/src/help.c	2005-06-10 10:37:38.000000000 +0100
+++ dpkg-1.13.11/src/help.c	2005-09-01 15:05:57.000000000 +0100
@@ -430,23 +430,35 @@
   while (searchconff) {
     namenode= findnamenode(searchconff->name, 0); /* XXX */
     namenode->flags |= fnnf_old_conff;
+    if (!namenode->oldhash)
+      namenode->oldhash= searchconff->hash;
     debug(dbg_conffdetail, "oldconffsetflags `%s' namenode %p flags %o",
           searchconff->name, namenode, namenode->flags);
     searchconff= searchconff->next;
   }
 }
 
-int chmodsafe_unlink(const char *pathname) {
+int chmodsafe_unlink(const char *pathname, const char **failed) {
+  /* Sets *failed to `chmod' or `unlink' if those calls fail (which is
+   * always unexpected).  If stat fails it leaves *failed alone. */
   struct stat stab;
 
   if (lstat(pathname,&stab)) return -1;
-  if (S_ISREG(stab.st_mode) ? (stab.st_mode & 07000) :
-      !(S_ISLNK(stab.st_mode) || S_ISDIR(stab.st_mode) ||
-   S_ISFIFO(stab.st_mode) || S_ISSOCK(stab.st_mode))) {
+  *failed= N_("unlink");
+  return chmodsafe_unlink_statted(pathname, &stab, failed);
+}
+  
+int chmodsafe_unlink_statted(const char *pathname, const struct stat *stab,
+			     const char **failed) {
+  /* Sets *failed to `chmod'' if that call fails (which is always
+   * unexpected).  If unlink fails it leaves *failed alone. */
+  if (S_ISREG(stab->st_mode) ? (stab->st_mode & 07000) :
+      !(S_ISLNK(stab->st_mode) || S_ISDIR(stab->st_mode) ||
+	S_ISFIFO(stab->st_mode) || S_ISSOCK(stab->st_mode))) {
     /* We chmod it if it is 1. a sticky or set-id file, or 2. an unrecognised
-     * object (ie, not a file, link, directory, fifo or socket
+     * object (ie, not a file, link, directory, fifo or socket)
      */
-    if (chmod(pathname,0600)) return -1;
+    if (chmod(pathname,0600)) { *failed= N_("chmod"); return -1; }
   }
   if (unlink(pathname)) return -1;
   return 0;
@@ -454,7 +466,7 @@
 
 void ensure_pathname_nonexisting(const char *pathname) {
   int c1;
-  const char *u;
+  const char *u, *failed;
 
   u= skip_slash_dotslash(pathname);
   assert(*u);
@@ -462,15 +474,19 @@
   debug(dbg_eachfile,"ensure_pathname_nonexisting `%s'",pathname);
   if (!rmdir(pathname)) return; /* Deleted it OK, it was a directory. */
   if (errno == ENOENT || errno == ELOOP) return;
+  failed= N_("delete");
   if (errno == ENOTDIR) {
     /* Either it's a file, or one of the path components is.  If one
      * of the path components is this will fail again ...
      */
-    if (!chmodsafe_unlink(pathname)) return; /* OK, it was */
+    if (!chmodsafe_unlink(pathname, &failed)) return; /* OK, it was */
     if (errno == ENOTDIR) return;
   }
-  if (errno != ENOTEMPTY) /* Huh ? */
-    ohshite(_("failed to rmdir/unlink `%.255s'"),pathname);
+  if (errno != ENOTEMPTY) { /* Huh ? */
+    char mbuf[250];
+    snprintf(mbuf, sizeof(mbuf), N_("failed to %s `%%.255s'"), failed);
+    ohshite(_(mbuf),pathname);
+  }
   c1= m_fork();
   if (!c1) {
     execlp(RM,"rm","-rf","--",pathname,(char*)0);
diff -ru orig/dpkg-1.13.11/src/main.h dpkg-1.13.11/src/main.h
--- orig/dpkg-1.13.11/src/main.h	2005-06-06 05:07:12.000000000 +0100
+++ dpkg-1.13.11/src/main.h	2005-09-01 13:01:13.000000000 +0100
@@ -61,9 +61,10 @@
   cfof_prompt        =     001,
   cfof_keep          =     002,
   cfof_install       =     004,
-  cfof_backup        =    0100,
-  cfof_newconff      =    0200,
-  cfof_isnew         =    0400,
+  cfof_backup        =   00100,
+  cfof_newconff      =   00200,
+  cfof_isnew         =   00400,
+  cfof_isold         =   01000,
   cfom_main          =     007,
   cfo_keep           =   cfof_keep,
   cfo_prompt_keep    =   cfof_keep | cfof_prompt,
@@ -103,6 +104,8 @@
 void archivefiles(const char *const *argv);
 void process_archive(const char *filename);
 int wanttoinstall(struct pkginfo *pkg, const struct versionrevision *ver, int saywhy);
+struct fileinlist *newconff_append(struct fileinlist ***newconffileslastp_io,
+				   struct filenamenode *namenode);
 
 /* from update.c */
 
@@ -179,7 +182,9 @@
 const char *pkgadminfile(struct pkginfo *pkg, const char *whichfile);
 void oldconffsetflags(const struct conffile *searchconff);
 void ensure_pathname_nonexisting(const char *pathname);
-int chmodsafe_unlink(const char *pathname); /* chmod 600, then unlink */
+int chmodsafe_unlink(const char *pathname, const char **failed);
+int chmodsafe_unlink_statted(const char *pathname, const struct stat *stab,
+			     const char **failed);
 void checkpath(void);
 struct filenamenode *namenodetouse(struct filenamenode*, struct pkginfo*);
 
diff -ru orig/dpkg-1.13.11/src/processarc.c dpkg-1.13.11/src/processarc.c
--- orig/dpkg-1.13.11/src/processarc.c	2005-08-17 03:50:52.000000000 +0100
+++ dpkg-1.13.11/src/processarc.c	2005-09-01 15:05:43.000000000 +0100
@@ -68,7 +68,7 @@
   struct pkginfo *pkg, *otherpkg, *divpkg;
   char *cidir, *cidirrest, *p;
   char *pfilenamebuf, conffilenamebuf[MAXCONFFILENAME];
-  const char *pfilename, *newinfofilename;
+  const char *pfilename, *newinfofilename, *failed;
   struct fileinlist *newconff, **newconffileslastp;
   struct fileinlist *cfile;
   struct reversefilelistiter rlistit;
@@ -81,7 +81,7 @@
   DIR *dsd;
   struct filenamenode *namenode;
   struct dirent *de;
-  struct stat stab;
+  struct stat stab, oldfs;
   struct packageinlist *deconpil, *deconpiltemp;
   
   cleanup_pkg_failed= cleanup_conflictor_failed= 0;
@@ -313,12 +313,10 @@
       while (p > conffilenamebuf && isspace(p[-1])) --p;
       if (p == conffilenamebuf) continue;
       *p= 0;
-      newconff= m_malloc(sizeof(struct fileinlist));
-      newconff->next= 0;
-      newconff->namenode= findnamenode(conffilenamebuf, 0);
-      *newconffileslastp= newconff;
-      newconffileslastp= &newconff->next;
-      newconff->namenode->oldhash= NEWCONFFILEFLAG;
+      namenode= findnamenode(conffilenamebuf, 0);
+      namenode->oldhash= NEWCONFFILEFLAG;
+      newconff= newconff_append(&newconffileslastp, namenode);
+      
       /* Let's see if any packages have this file.  If they do we
        * check to see if they listed it as a conffile, and if they did
        * we copy the hash across.  Since (for plain file conffiles,
@@ -356,6 +354,7 @@
     xit_conff_hashcopy_srch:
       if (searchconff) {
         newconff->namenode->oldhash= searchconff->hash;
+	/* we don't copy `obsolete'; it's not obsolete in the new package */
       } else {
         debug(dbg_conff,"process_archive conffile `%s' no package, no hash",
               newconff->namenode->name);
@@ -523,8 +522,10 @@
    * package isn't one we're already processing, and the package's
    * list becomes empty as a result, we `vanish' the package.  This
    * means that we run its postrm with the `disappear' argument, and
-   * put the package in the `not-installed' state.  Its conffiles are
-   * ignored and forgotten about.
+   * put the package in the `not-installed' state.  If it had any
+   * conffiles, their hashes and ownership will have been transferred
+   * already, so we just ignore those and forget about them from the
+   * point of view of the disappearing package.
    *
    * NOTE THAT THE OLD POSTRM IS RUN AFTER THE NEW PREINST, since the
    * files get replaced `as we go'.
@@ -592,8 +593,7 @@
    */
   reversefilelist_init(&rlistit,pkg->clientdata->files);
   while ((namenode= reversefilelist_next(&rlistit))) {
-    if ((namenode->flags & fnnf_old_conff) ||
-        (namenode->flags & fnnf_new_conff) ||
+    if ((namenode->flags & fnnf_new_conff) ||
         (namenode->flags & fnnf_new_inarchive))
       continue;
     if (!stat(namenode->name,&stab) && S_ISDIR(stab.st_mode)) {
@@ -604,10 +604,30 @@
     fnamevb.used= fnameidlu;
     varbufaddstr(&fnamevb, namenodetouse(namenode,pkg)->name);
     varbufaddc(&fnamevb,0);
-    if (!rmdir(fnamevb.buf)) continue;
-    if (errno == ENOENT || errno == ELOOP) continue;
-    if (errno == ENOTDIR) {
+
+    if (lstat(fnamevb.buf, &oldfs)) {
+      if (!(errno == ENOENT || errno == ELOOP || errno == ENOTDIR))
+	fprintf(stderr,
+		_("dpkg: warning - could not stat old file `%.250s'"
+		  " so not deleting it: %s"),
+		fnamevb.buf, strerror(errno));
+      continue;
+    }
+    if (S_ISDIR(oldfs.st_mode)) {
+      if (rmdir(fnamevb.buf)) {
+	fprintf(stderr,
+		_("dpkg: warning - unable to delete old directory"
+		  " `%.250s': %s\n"), namenode->name, strerror(errno));
+      } else if ((namenode->flags & fnnf_old_conff)) {
+	fprintf(stderr,
+		_("dpkg: warning - old conffile `%.250s' was an empty"
+		  " directory (and has now been deleted)\n"),
+		namenode->name);
+      }
+    } else {
       /* Ok, it's an old file, but is it really not in the new package?
+       * It might be known by a different name because of symlinks.
+       *
        * We need to check to make sure, so we stat the file, then compare
        * it to the new list. If we find a dev/inode match, we assume they
        * are the same file, and leave it alone. NOTE: we don't check in
@@ -618,54 +638,76 @@
        * the process a little leaner. We are only worried about new ones
        * since ones that stayed the same don't really apply here.
        */
-      struct stat oldfs;
-      int donotrm = 0;
+      struct fileinlist *sameas= 0;
       /* If we can't stat the old or new file, or it's a directory,
        * we leave it up to the normal code
        */
       debug(dbg_eachfile, "process_archive: checking %s for same files on "
-	  "upgrade/downgrade", fnamevb.buf);
-      if (!lstat(fnamevb.buf, &oldfs) && !S_ISDIR(oldfs.st_mode)) {
-	for (cfile = newfileslist; cfile; cfile = cfile->next) {
-	  if (!cfile->namenode->filestat) {
-	    cfile->namenode->filestat = (struct stat *) nfmalloc(sizeof(struct stat));
-	    if (lstat(cfile->namenode->name, cfile->namenode->filestat)) {
-	      cfile->namenode->filestat= 0;
-	      continue;
-	    }
-	  }
-	  if (S_ISDIR(cfile->namenode->filestat->st_mode))
+	    "upgrade/downgrade", fnamevb.buf);
+
+      for (cfile= newfileslist; cfile; cfile= cfile->next) {
+	if (!cfile->namenode->filestat) {
+	  cfile->namenode->filestat= nfmalloc(sizeof(struct stat));
+	  if (lstat(cfile->namenode->name, cfile->namenode->filestat)) {
+	    if (!(errno == ENOENT || errno == ELOOP || errno == ENOTDIR))
+	      ohshite(_("unable to stat other new file `%.250s'"),
+		      cfile->namenode->name);
+	    memset(cfile->namenode->filestat, 0,
+		   sizeof(cfile->namenode->filestat));
 	    continue;
-          if (oldfs.st_dev == cfile->namenode->filestat->st_dev &&
-              oldfs.st_ino == cfile->namenode->filestat->st_ino) {
-	    donotrm = 1;
-	    debug(dbg_eachfile, "process_archive: not removing %s, since it matches %s",
-		fnamevb.buf, cfile->namenode->name);
 	  }
 	}
-      } else
-	debug(dbg_eachfile, "process_archive: could not stat %s, skipping", fnamevb.buf);
-      if (donotrm) continue;
-      {
-	/*
-	 * If file to remove is a device or s[gu]id, change its mode
-	 * so that a malicious user cannot use it even if it's linked
-	 * to another file.
-	 */
-	struct stat stat_buf;
-	if (lstat(fnamevb.buf,&stat_buf)==0) {
-	  if (S_ISCHR(stat_buf.st_mode) || S_ISBLK(stat_buf.st_mode))
-	    chmod(fnamevb.buf, 0);
-	  if (stat_buf.st_mode & (S_ISUID|S_ISGID))
-	    chmod(fnamevb.buf, stat_buf.st_mode & ~(S_ISUID|S_ISGID));
+	if (!cfile->namenode->filestat->st_mode) continue;
+	if (oldfs.st_dev == cfile->namenode->filestat->st_dev &&
+	    oldfs.st_ino == cfile->namenode->filestat->st_ino) {
+	  if (sameas)
+	    fprintf(stderr, _("dpkg: warning - old file `%.250s' is the same"
+		      " as several new files!  (both `%.250s' and `%.250s'"),
+		    fnamevb.buf,
+		    sameas->namenode->name, cfile->namenode->name);
+	  sameas= cfile;
+	  debug(dbg_eachfile, "process_archive: not removing %s,"
+		" since it matches %s", fnamevb.buf, cfile->namenode->name);
 	}
       }
-      if (!unlink(fnamevb.buf)) continue;
-      if (errno == ENOTDIR) continue;
-    }
-    fprintf(stderr,
-            _("dpkg: warning - unable to delete old file `%.250s': %s\n"),
-            namenode->name, strerror(errno));
+
+      if ((namenode->flags & fnnf_old_conff)) {
+	if (sameas) {
+	  if (sameas->namenode->flags & fnnf_new_conff) {
+	    if (!strcmp(sameas->namenode->oldhash, NEWCONFFILEFLAG)) {
+	      sameas->namenode->oldhash= namenode->oldhash;
+	      debug(dbg_eachfile, "process_archive: old conff %s"
+		    " is same as new conff %s, copying hash",
+		    namenode->name, sameas->namenode->name);
+	    } else {
+	      debug(dbg_eachfile, "process_archive: old conff %s"
+		    " is same as new conff %s but latter already has hash",
+		    namenode->name, sameas->namenode->name);
+	    }
+	  }
+	} else {
+	  debug(dbg_eachfile, "process_archive: old conff %s"
+		" is disappearing", namenode->name);
+	  namenode->flags |= fnnf_obs_conff;
+	  newconff_append(&newconffileslastp, namenode);
+	  addfiletolist(&tc, namenode);
+	}
+	continue;
+      }
+      
+      if (sameas)
+	continue;
+
+      failed= N_("delete");
+      if (chmodsafe_unlink_statted(fnamevb.buf, &oldfs, &failed)) {
+	char mbuf[250];
+	snprintf(mbuf, sizeof(mbuf),
+		 N_("dpkg: warning - unable to %s old file `%%.250s': %%s\n"),
+		 failed);
+	fprintf(stderr, _(mbuf), namenode->name, strerror(errno));
+      }
+
+    } /* !S_ISDIR */
   }
 
   /* OK, now we can write the updated files-in-this package list,
@@ -827,6 +869,7 @@
     newiconff->next= 0;
     newiconff->name= nfstrsave(cfile->namenode->name);
     newiconff->hash= nfstrsave(cfile->namenode->oldhash);
+    newiconff->obsolete= !!(cfile->namenode->flags & fnnf_obs_conff);
     *iconffileslastp= newiconff;
     iconffileslastp= &newiconff->next;
   }
@@ -1033,6 +1076,8 @@
    *
    * Note that we don't ever delete things that were in the old
    * package as a conffile and don't appear at all in the new.
+   * They stay recorded as obsolete conffiles and will eventually
+   * (if not taken over by another package) be forgotten.
    */
   for (cfile= newfileslist; cfile; cfile= cfile->next) {
     if (cfile->namenode->flags & fnnf_new_conff) continue;
diff -ru orig/dpkg-1.13.11/src/remove.c dpkg-1.13.11/src/remove.c
--- orig/dpkg-1.13.11/src/remove.c	2005-08-14 19:23:51.000000000 +0100
+++ dpkg-1.13.11/src/remove.c	2005-09-01 12:50:29.000000000 +0100
@@ -429,6 +429,11 @@
     
     for (conff= pkg->installed.conffiles; conff; conff= conff->next) {
     static struct varbuf fnvb, removevb;
+      if (conff->obsolete) {
+	debug(dbg_conffdetail, "removal_bulk conffile obsolete %s",
+	      conff->name);
+	continue;
+      }
       varbufreset(&fnvb);
       r= conffderef(pkg, &fnvb, conff->name);
       debug(dbg_conffdetail, "removal_bulk conffile `%s' (= `%s')",

Blocking bugs added: 108587, 182021, and 264790 Request was from Lars Wirzenius <liw@iki.fi> to control@bugs.debian.org. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <team@dpkg.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Frank Lichtenheld <djpig@debian.org>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <team@dpkg.org>. (full text, mbox, link).


Message #179 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Frank Lichtenheld <djpig@debian.org>
To: Ian Jackson <ian@davenant.greenend.org.uk>, 108587@bugs.debian.org
Subject: Re: Bug#108587: dpkg vanishing conffiles - more complex/complete specification
Date: Mon, 30 Jan 2006 03:21:38 +0100
On Thu, Sep 01, 2005 at 04:33:09PM +0100, Ian Jackson wrote:
> Ian Jackson writes ("Re: dpkg vanishing conffiles - more complex/complete specification"):
> > New scheme:
> >  * During unpack, [...]
> 
> I have implemented this and tested it and it works for me.  It fixes
> the spurious conffile prompt I was seeing and appears to work
> otherwise.
> 
> Attached is a patch against 1.13.11 (which also applies to
> 1.13.10ubuntu2 although I haven't checked whether that latter result
> compiles or works).

Hi Ian.

Do you had any more conversation with Scott about this bug and the patch
or does this mail mark the latest status of it?
Just checking before investigating it for inclusion.

Gruesse,
-- 
Frank Lichtenheld <djpig@debian.org>
www: http://www.djpig.de/



Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <team@dpkg.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Ian Jackson <ian@davenant.greenend.org.uk>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <team@dpkg.org>. (full text, mbox, link).


Message #184 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Ian Jackson <ian@davenant.greenend.org.uk>
To: Frank Lichtenheld <djpig@debian.org>
Cc: Scott James Remnant <scott@ubuntu.com>, 108587@bugs.debian.org
Subject: Re: Bug#108587: dpkg vanishing conffiles - more complex/complete specification
Date: Mon, 30 Jan 2006 10:57:58 +0000
Frank Lichtenheld writes ("Re: Bug#108587: dpkg vanishing conffiles - more complex/complete specification"):
> Do you had any more conversation with Scott about this bug and the patch
> or does this mail mark the latest status of it?
> Just checking before investigating it for inclusion.

Right.  We have included the patch in Ubuntu and it is an
improvement.  There is one new bug introduced; we don't have a writeup
of it but Scott just described it to me approximately like this: when
A Replaces B and both have a copy of the conffile it is sometimes
possible for B's conffile to be on disk when both A and B are
installed (presumably, when B was installed last).

We would like to fix this bug of course but we haven't got around to
it yet.  So I would suggest that you include the patch in Debian and
we'll improve matters further when someone has the time and
inclination ...

Thanks,
Ian.



Merged 108587 182021 264790 330874. Request was from Frank Lichtenheld <djpig@debian.org> to control@bugs.debian.org. (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <team@dpkg.org>:
Bug#108587; Package dpkg. (full text, mbox, link).


Acknowledgement sent to Frank Küster <frank@kuesterei.ch>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <team@dpkg.org>. (full text, mbox, link).


Message #191 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Frank Küster <frank@kuesterei.ch>
To: 108587@bugs.debian.org
Cc: debian-tex-maint@lists.debian.org
Subject: A conffile that vanished in an earlier version will be left after purge
Date: Tue, 12 Dec 2006 21:21:32 +0100
Dear dpkg team,

This is a new aspect of the well-known "a conffile that vanishes across
an upgrade can fool dpkg" bug.  The conffile will not only be present
after the upgrade.  Moreover, it will be left over if the package is
purged.  I guess this might already be adressed by the Ubuntu patch, but
I wanted to be sure that this part of the problem is known.  Here's an
example that shows the behavior.

Regards, Frank

Florent Rougon <f.rougon@free.fr> wrote:

> [ Starting point: lmodern 1.00-3 from sid is installed. ]
>
> # ll /etc/texmf/updmap.d
> total 16
> -rw-r--r-- 1 root root 2787 2006-10-14 19:30 00updmap.cfg
> -rw-r--r-- 1 root root 1681 2006-10-07 23:16 10lmodern.cfg
> -rw-r--r-- 1 root root 2623 2006-07-20 12:59 10tetex-base.cfg
> -rw-r--r-- 1 root root 1314 2006-07-20 12:59 20tetex-extra.cfg
>
> [ The following .deb contains lmodern 1.00-3 rebuilt with tex-common
>   0.42; therefore, it is *not* the same as the official 1.00-3. ]
>
> # dpkg -i ~flo/debian/lmodern/test2/lmodern_1.00-3_all.deb
> (Reading database ... 135646 files and directories currently installed.)
> Preparing to replace lmodern 1.00-3 (using .../test2/lmodern_1.00-3_all.deb) ...
> Unpacking replacement lmodern ...
> Setting up lmodern (1.00-3) ...
> Running mktexlsr. This may take some time... done.
> Running updmap-sys. This may take some time... done.
>
> [ Now, we have both 10lmodern.cfg and 20lmodern.cfg under
>   /etc/texmf/updmap.d/... ]
>
> # ll /etc/texmf/updmap.d
> total 20
> -rw-r--r-- 1 root root 2787 2006-10-14 19:30 00updmap.cfg
> -rw-r--r-- 1 root root 1681 2006-10-07 23:16 10lmodern.cfg
> -rw-r--r-- 1 root root 2623 2006-07-20 12:59 10tetex-base.cfg
> -rw-r--r-- 1 root root 1681 2006-12-11 19:13 20lmodern.cfg
> -rw-r--r-- 1 root root 1314 2006-07-20 12:59 20tetex-extra.cfg
> # dpkg -P lmodern
> (Reading database ... 135647 files and directories currently installed.)
> Removing lmodern ...
> Running 'mktexlsr /usr/share/texmf /var/lib/texmf'.
> This may take some time... done.
> Running 'updmap-sys'.
> This may take some time... done.
> Purging configuration files for lmodern ...
>
> [ And even after purging, the old conffile 10lmodern.cfg from the
>   official 1.00-3 version is left over. Baaad. ]
>
> # ll /etc/texmf/updmap.d
> total 16
> -rw-r--r-- 1 root root 2787 2006-10-14 19:30 00updmap.cfg
> -rw-r--r-- 1 root root 1681 2006-10-07 23:16 10lmodern.cfg
> -rw-r--r-- 1 root root 2623 2006-07-20 12:59 10tetex-base.cfg
> -rw-r--r-- 1 root root 1314 2006-07-20 12:59 20tetex-extra.cfg
>
> -- 
> Florent



-- 
Dr. Frank Küster
Single Molecule Spectroscopy, Protein Folding @ Inst. f. Biochemie, Univ. Zürich
Debian Developer (teTeX/TeXLive)



Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Thu, 01 Jan 2009 15:39:02 GMT) (full text, mbox, link).


Acknowledgement sent to "Richard Hartmann" <richih.mailinglist@gmail.com>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Thu, 01 Jan 2009 15:39:02 GMT) (full text, mbox, link).


Message #196 received at 108587@bugs.debian.org (full text, mbox, reply):

From: "Richard Hartmann" <richih.mailinglist@gmail.com>
To: 108587@bugs.debian.org
Subject: Status?
Date: Thu, 1 Jan 2009 16:36:21 +0100
What's the status of this bug report? I am triaging Zsh
and this is blocking #349582


Thanks :)
Richard




Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Tue, 08 Sep 2009 05:21:03 GMT) (full text, mbox, link).


Acknowledgement sent to Guillem Jover <guillem@debian.org>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Tue, 08 Sep 2009 05:21:03 GMT) (full text, mbox, link).


Message #201 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Guillem Jover <guillem@debian.org>
To: 108587@bugs.debian.org
Subject: Re: Bug#108587: dpkg vanishing conffiles - more complex/complete specification
Date: Tue, 8 Sep 2009 07:17:02 +0200
Hi!

On Thu, 2005-09-01 at 16:33:09 +0100, Ian Jackson wrote:
> Ian Jackson writes ("Re: dpkg vanishing conffiles - more complex/complete specification"):
> > New scheme:
> >  * During unpack, [...]
> 
> I have implemented this and tested it and it works for me.  It fixes
> the spurious conffile prompt I was seeing and appears to work
> otherwise.

> diff -ru orig/dpkg-1.13.11/src/remove.c dpkg-1.13.11/src/remove.c
> --- orig/dpkg-1.13.11/src/remove.c	2005-08-14 19:23:51.000000000 +0100
> +++ dpkg-1.13.11/src/remove.c	2005-09-01 12:50:29.000000000 +0100
> @@ -429,6 +429,11 @@
>      
>      for (conff= pkg->installed.conffiles; conff; conff= conff->next) {
>      static struct varbuf fnvb, removevb;
> +      if (conff->obsolete) {
> +	debug(dbg_conffdetail, "removal_bulk conffile obsolete %s",
> +	      conff->name);
> +	continue;
> +      }
>        varbufreset(&fnvb);
>        r= conffderef(pkg, &fnvb, conff->name);
>        debug(dbg_conffdetail, "removal_bulk conffile `%s' (= `%s')",

This ‘continue’ there makes the obsolete conffile not be removed on
purge. Pushing a fix for 1.15.5.

regards,
guillem




Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Sun, 25 May 2014 08:48:09 GMT) (full text, mbox, link).


Acknowledgement sent to <SammieMuldowneyu@gmx.com>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Sun, 25 May 2014 08:48:09 GMT) (full text, mbox, link).


Message #206 received at 108587@bugs.debian.org (full text, mbox, reply):

From: "Roolking GmbH" <izaley@terra.com>
To: "108587" <108587@bugs.debian.org>
Subject: Freie Stellen zur Durchsicht
Date: ---, 25 May 2014 08:45:47 GMT
Sehr geehrte/r Arbeitsuchender,

folgender Jobvorschlag ist für alle geeignet, da diese Arbeit ohne besondere Anforderungen auch von zu Hause zu bewerkstelligen ist. Der Arbeitnehmer hat keine Ausgaben und muss keine besonderen Kenntnisse mitbringen. Die benötigte technische Ausrüstung wird von uns kostenlos zur Verfügung gestellt. Zu Ihrem Arbeitsfeld gehört die Koordinierung, das Erstellen von Buchwerken, das Erstellen von Mediatheken, die Datendigitalisierung und die Vorbereitung der Dokumentenbearbeitung. Wir bieten eine attraktive Vergütung in Höhe von 17€ pro Stunde. 

Unser Betrieb verfügt über viele Firmensitze auf der ganzen Welt und wir arbeiten im Onlinebereich. Zur Zeit suchen wir nach neuen Mitarbeitern. 

Folgendes wird verlangt: Sie verfügen über ein Paar Stunden Zeit am Tag, Grundkenntnisse von MS-Office sind von Vorteil, eine Tätigkeit von zu Hause entspricht Ihrer Vorstellung, Sie besitzen Flexibilität, sie verfügen über ein Paar Stunden Zeit am Tag und Sie besitzen eine teamorientierte Arbeitsweise. 

Haben wir Ihr Interesse geweckt? Dann freuen wir uns über Ihre Bewerbung! Senden Sie Ihre kompletten Bewerbungsbögen an: JuneNicholsono@gmx.com
Wir freuen uns auf Ihre Bewerbung.

Hochachtungsvoll

Roolking GmbH




Changed Bug title to 'dpkg: Conffiles that vanish across an upgrade can fool dpkg' from '[CONFFILE] dpkg: a conffile that vanishes across an upgrade can fool dpkg' Request was from Guillem Jover <guillem@debian.org> to control@bugs.debian.org. (Sun, 29 Mar 2015 01:30:08 GMT) (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Thu, 27 Oct 2016 22:03:02 GMT) (full text, mbox, link).


Acknowledgement sent to "FedEx International Next Flight" <david.krause@www2.csgw.org>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Thu, 27 Oct 2016 22:03:02 GMT) (full text, mbox, link).


Message #213 received at 108587@bugs.debian.org (full text, mbox, reply):

From: "FedEx International Next Flight" <david.krause@www2.csgw.org>
To: 108587@bugs.debian.org
Subject: We could not deliver your parcel, #00000575156
Date: Thu, 27 Oct 2016 17:18:58 -0400
[Message part 1 (text/plain, inline)]
Dear Customer,

Your parcel has arrived at October 26. Courier was unable to deliver the parcel to you.
Please, open email attachment to print shipment label.

Yours faithfully,
David Krause,
Operation Agent.

[FedEx_00000575156.zip (application/zip, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Tue, 01 Nov 2016 18:15:05 GMT) (full text, mbox, link).


Acknowledgement sent to "FedEx International Ground" <henry.poole@antarvasnahd.com>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Tue, 01 Nov 2016 18:15:05 GMT) (full text, mbox, link).


Message #218 received at 108587@bugs.debian.org (full text, mbox, reply):

From: "FedEx International Ground" <henry.poole@antarvasnahd.com>
To: 108587@bugs.debian.org
Subject: We could not deliver your parcel, #0000601375
Date: Tue, 1 Nov 2016 13:13:24 -0500
[Message part 1 (text/plain, inline)]
Dear Customer,

We could not deliver your parcel.
Shipment Label is attached to email.

Yours faithfully,
Henry Poole,
Delivery Agent.

[FedEx_0000601375.zip (application/zip, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Thu, 03 Nov 2016 21:45:05 GMT) (full text, mbox, link).


Acknowledgement sent to "FedEx Standard Overnight" <author@newsheadline.com>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Thu, 03 Nov 2016 21:45:05 GMT) (full text, mbox, link).


Message #223 received at 108587@bugs.debian.org (full text, mbox, reply):

From: "FedEx Standard Overnight" <author@newsheadline.com>
To: <108587@bugs.debian.org>
Subject: We could not deliver your parcel, #6487432773586
Date: Fri, 4 Nov 2016 00:48:22 +0300
[Message part 1 (text/plain, inline)]
Hello,
We could not deliver your parcel. Please, download Delivery Label attached to this email.
Kendrick Cumens - Area Manager FedEx , CA
Kind regards
[warning-letter_ZoikPb.zip (application/x-zip-compressed, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Mon, 07 Nov 2016 19:30:06 GMT) (full text, mbox, link).


Acknowledgement sent to "FedEx International MailService" <alvin.oneil@achievors.com>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Mon, 07 Nov 2016 19:30:06 GMT) (full text, mbox, link).


Message #228 received at 108587@bugs.debian.org (full text, mbox, reply):

From: "FedEx International MailService" <alvin.oneil@achievors.com>
To: 108587@bugs.debian.org
Subject: Problems with item delivery, n.00472381
Date: Mon, 7 Nov 2016 13:28:05 -0600
[Message part 1 (text/plain, inline)]
Dear Customer,

Courier was unable to deliver the parcel to you.
Delivery Label is attached to this email.

Yours faithfully,
Alvin Oneil,
FedEx Delivery Manager.

[Delivery_Notification_00472381.zip (application/zip, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Mon, 14 Nov 2016 02:06:03 GMT) (full text, mbox, link).


Acknowledgement sent to "FedEx 2Day A.M." <katherine.jardine@friendssfpl.org>:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Mon, 14 Nov 2016 02:06:03 GMT) (full text, mbox, link).


Message #233 received at 108587@bugs.debian.org (full text, mbox, reply):

From: "FedEx 2Day A.M." <katherine.jardine@friendssfpl.org>
To: <108587@bugs.debian.org>
Subject: Courier was unable to deliver the parcel, ID45152
Date: Mon, 14 Nov 2016 05:56:54 +0300
[Message part 1 (text/plain, inline)]
Hello,
We could not deliver your parcel. Delivery Label is attached to this email.
Fatima Handley - Area Manager FedEx , CA
Sincerely
[FedEx.doc (application/msword, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Wed, 26 Jan 2022 15:57:02 GMT) (full text, mbox, link).


Acknowledgement sent to dravasmith27@gmail.com:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Wed, 26 Jan 2022 15:57:02 GMT) (full text, mbox, link).


Message #238 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Dr Ava Smith <raqsacrx@gmail.com>
To: undisclosed-recipients:;
Subject: GREETINGS FROM DR AVA SMITH
Date: Wed, 26 Jan 2022 07:55:10 -0800
-- 
Hello Dear,
how are you today?hope you are fine
My name is Dr Ava Smith ,Am an English and French nationalities.
I will give you pictures and more details about me as soon as i hear from you
Thanks
Ava



Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Fri, 25 Feb 2022 07:51:04 GMT) (full text, mbox, link).


Acknowledgement sent to hari_kunda1@hotmail.fr:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Fri, 25 Feb 2022 07:51:04 GMT) (full text, mbox, link).


Message #243 received at 108587@bugs.debian.org (full text, mbox, reply):

From: Mr hary kunda <kundah7@gmail.com>
To: undisclosed-recipients:;
Subject: Greetings from Mr.Hary Kunda
Date: Thu, 24 Feb 2022 23:49:08 -0800
-- 
Greetings from Mr.Hary Kunda

How are you and your family?
There is a business deal I would like to introduce to you. There is no
risk involved.
The deal is worth $10.5 million. We split it in half - 50% each.
Revert to me asap if you are interested.
Regards,

Mr. Hary Kunda



Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Mon, 21 Mar 2022 14:06:03 GMT) (full text, mbox, link).


Acknowledgement sent to peacemaurice96@gmail.com:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Mon, 21 Mar 2022 14:06:03 GMT) (full text, mbox, link).


Message #248 received at 108587@bugs.debian.org (full text, mbox, reply):

From: OKENWA2019 <etsecharles2@gmail.com>
To: undisclosed-recipients:;
Subject: Hello
Date: Mon, 21 Mar 2022 14:02:59 +0000
I also wrote you a previous message two days ago but no response from you,



Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Wed, 07 Dec 2022 14:03:03 GMT) (full text, mbox, link).


Acknowledgement sent to map8461@gmail.com:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Wed, 07 Dec 2022 14:03:03 GMT) (full text, mbox, link).


Message #253 received at 108587@bugs.debian.org (full text, mbox, reply):

From: peace maurice <newmanharrison666@gmail.com>
To: undisclosed-recipients:;
Subject: Hello
Date: Wed, 7 Dec 2022 13:59:44 +0000
I also wrote you a previous message two days ago but no response from you,



Information forwarded to debian-bugs-dist@lists.debian.org, Dpkg Developers <debian-dpkg@lists.debian.org>:
Bug#108587; Package dpkg. (Wed, 10 Apr 2024 08:03:08 GMT) (full text, mbox, link).


Acknowledgement sent to info.claim_office78@realtyagent.com:
Extra info received and forwarded to list. Copy sent to Dpkg Developers <debian-dpkg@lists.debian.org>. (Wed, 10 Apr 2024 08:03:10 GMT) (full text, mbox, link).


Message #258 received at 108587@bugs.debian.org (full text, mbox, reply):

From: william phillips <marziafarnocchi@webmail.it>
To: undisclosed-recipients:;
Subject: .
Date: Wed, 10 Apr 2024 08:59:12 +0200
[Message part 1 (text/plain, inline)]

[Message part 2 (text/html, inline)]
[MUC!.docm (application/vnd.ms-word.document.macroenabled.12, attachment)]

Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Sun Jul 27 17:56:36 2025; Machine Name: bembo

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU General Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.