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

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: