Re: debugging package breakage
summary: my questions are about
+ using Debian packaging and its tools (notably apt-*, aptitude)
+ fixing problems with same
*not*
- fixing broken functionality
- LMDE
- LMDE repositories
If there is a better place to ask end-user-level questions about Debian
packaging and its tools (vs dev- or builder-level), please point me to
it. Meanwhile, I'm interested in ways to make `aptitude` see as unbroken
packages that appear (notably, to `apt-get`) to be in fact unbroken. One
such way is proposed below (purging and re-installing `aptitude`), but
it appears problematic (more below).
details:
First, thanks to Darac Marjal for his detailed explanation of how to use
the ncurses-based `aptitude` TUI to fix the following:
original post @
http://lists.debian.org/debian-user/2011/08/msg01104.html
Tom Roche Thu, 18 Aug 2011 23:20:43 -0400
> me@it:~$ aptitude search ?broken
> > iB acl - Access control list utilities
> > iB coreutils - GNU core utilities
> > iB cups - Common UNIX Printing System(tm) - server
> > iB libacl1-dev - Access control list static libraries and headers
> > iB libarchive1 - Single library to read/write tar, cpio, pax, zip, iso9660, etc.
> > iB libgnomevfs2-0 - GNOME Virtual File System (runtime libraries)
> > iB libisofs6 - library to create ISO9660 images
> > iB ntfs-3g - read-write NTFS driver for FUSE
> > iB rsync - fast remote file copy program (like rcp)
> > iB samba - SMB/CIFS file, print, and login server for Unix
However, given the 5 facts below, ISTM the problem is with `aptitude`,
not the packages.
Scott Ferguson Fri, 19 Aug 2011 14:28:44 +1000
>> I understand that you're trying to illustrate what you think is not
>> working (ie. shown by Aptitude as broken.... but what is it that *is
>> not* working?
*Aptitude* appears (to me--ICBW) to be not working properly, based on
the following 5 facts:
F1 My LMDE box is not broken functionally (aside from last.fm audio,
which I'm assuming is unrelated to the above): only some packages
are, and only in aptitude (more on that below). Specifically, none of
the functionality that I would expect to be broken from the above
appears to be broken. Not that I've done exhaustive testing, but
certainly all the coreutils that I've used appear to work.
F2 I appreciate that, at some fundamental level, LMDE != Debian. However,
Marc Shapiro Thu, 18 Aug 2011 23:00:40 -0700
> Linux Mint Debian Edition is based directly on Testing, with a rolling
> release. [LMDE is *not* the same as Mint's] regular version which is
> based on Ubuntu with discrete releases. So LMDE does not use Ubuntu's
> 'instant potato mix', but it does mash its own. They *claim* to be
> 100% compatible with Debian and NOT compatible with Ubuntu.
See also
http://blog.linuxmint.com/?p=1527
(but note that LMDE 64-bit, which I'm using, has arrived since then).
In order of increasing Debianosity, Ubuntu < LMDE < Debian.
F3 LMDE has its own repositories.
> where is your /etc/apt/sources.list is pointing to?
me@it:~$ sudo cat /etc/apt/sources.list
> deb http://packages.linuxmint.com/ debian main upstream import
> deb http://debian.linuxmint.com/latest testing main contrib non-free
> deb http://security.debian.org/ testing/updates main contrib non-free
> deb http://www.debian-multimedia.org testing main non-free
> If it is pointing to Debian repositories LMDE may not be as 100%
> compatible as they say.
That's entirely possible, and if my package-breakage problem appears
to be due to problems with one or more of these repositories I will
certainly raise that issue with the LMDE folks. However, at this
point, the problem appears to be limited to my `aptitude`:
* There is no functional correlate to the aptitude package breakage
(see fact 1).
* The packages appear OK in `apt-get` (see next fact).
F4 My `apt-get` shows no breakage, but my `aptitude` does:
me@it:~$ sudo apt-get check | wc -l
> 3
me@it:~$ sudo apt-get check
> Reading package lists... Done
> Building dependency tree
> Reading state information... Done
me@it:~$ aptitude search ?broken
> iB acl - Access control list utilities
> iB coreutils - GNU core utilities
> iB cups - Common UNIX Printing System(tm) - server
> iB libacl1-dev - Access control list static libraries and headers
> iB libarchive1 - Single library to read/write tar, cpio, pax, zip, iso9660, etc.
> iB libgnomevfs2-0 - GNOME Virtual File System (runtime libraries)
> iB libisofs6 - library to create ISO9660 images
> iB ntfs-3g - read-write NTFS driver for FUSE
> iB rsync - fast remote file copy program (like rcp)
> iB samba - SMB/CIFS file, print, and login server for Unix
F5 While setting up this box, I first used `apt-get` then `aptitude`.
FWIW I've been doing this since I started using Ubuntu (few years/
releases), based on my reading of
http://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_literal_apt_get_literal_literal_apt_cache_literal_vs_literal_aptitude_literal
> The apt-get and apt-cache commands are the most basic package management tool.
...
> * apt-get is most suitable for the major system upgrade between releases, etc.
...
> The aptitude command is the most versatile package management tool.
> * aptitude offers the fullscreen interactive text user interface.
> * aptitude offers the commandline user interface, too.
> * aptitude is most suitable for the daily interactive package
> management such as inspecting installed packages and searching
> available packages.
So what I do is
* Immediately before install, copy my sources.list and sources.list.d/
to some ${PACKAGE_BACKUP_DIR}, and
`dpkg --get-selections > ${PACKAGE_BACKUP_FILE}`
(in that dir).
* Immediately after install, use apt-get for the initial `update` and
`dist-upgrade`.
* Try to restore my previous packages with (while sudo)
dpkg --set-selections < ${PACKAGE_BACKUP_FILE}
apt-get install -y dselect
dselect update
apt-get dselect-upgrade
After that's cleaned up,
* `aptitude update`
* Until the next upgrade (using LMDE, I'm hoping will be awhile :-) "for
the daily interactive package management," I use aptitude.
This approach has worked well for me ... until, I suspect, now.
>From those 5 facts, I'm drawing 2 conclusions:
C1 My `aptitude` db is corrupt, while my `apt-get` db is not. This seems
pretty clear from F4, no?
C2 This was caused by my using `aptitude` and `apt-get` "together." I'm
less sure of this conclusion, since I've used the approach detailed
in F5 several times without difficulty. However, I've read in several
places that one should not use `aptitude` and `apt-get` together.
Am I missing something? If not, my main question is,
Q1 How to fix my `aptitude`? Because I still prefer to use it for "daily
interactive package management."
My initial impulse was
Q2 Can I fix it by purging and re-installing `aptitude`? I'm guessing
that would remove its currently-bad database and re-generate it. Am I
missing something?
Presuming Q2 is correct (and feel free to deny that, and to propose
better alternatives), and presuming one doesn't want to try that with
`aptitude` itself, I tried
me@it:~$ sudo apt-get -s purge aptitude
...
> The following packages will be REMOVED:
> aptitude* mintsystem* tasksel* tasksel-data* wajig*
> 0 upgraded, 0 newly installed, 5 to remove and 1 not upgraded.
> Purg wajig [2.2]
> Purg tasksel [2.89] [tasksel-data:amd64 ]
> Purg tasksel-data [2.89]
> Purg mintsystem [7.7.9]
> Purg aptitude [0.6.3-4]
me@it:~$ aptitude -F "%p" search "?depends(aptitude)"
> aptitude-dbg
> aptitude-gtk
> mintsystem
> pkgsync
> tasksel
> wajig
raises a third question:
Q3 How to purge and re-install only `aptitude`?
TIA, Tom Roche <Tom_Roche@pobox.com>
Reply to: