Version 7 of teacup remove

Updated 2011-06-10 06:26:56 by MHo

This is a teacup subcommand.

The teacup remove subcommand is used to remove packages from the local repository.


The teacup remove option has been extended so that invoking it without arguments proceeds to delete all items in the local repository.

If you provide the name of a package, all versions of that package that reside in the local repository are deleted.

If you provide the name of a package and a version, then all variations of that package and version are deleted.


MHo: A way to remove all packages (outdated) older than a given version would be nice. Or is it possible another way?


AK: Looking at my own local repository I saw that I had a lot of sqlite packages installed:

% teacup list --at-default|grep sqlite3
package sqlite3 3.6.17  linux-glibc2.3-ix86
package sqlite3 3.6.18  linux-glibc2.3-ix86
package sqlite3 3.6.19  linux-glibc2.3-ix86
package sqlite3 3.6.20  linux-glibc2.3-ix86
package sqlite3 3.6.21  linux-glibc2.3-ix86
package sqlite3 3.6.22  linux-glibc2.3-ix86
package sqlite3 3.6.23  linux-glibc2.3-ix86
package sqlite3 3.7.2   linux-glibc2.3-ix86
package sqlite3 3.7.3   linux-glibc2.3-ix86
package sqlite3 3.7.4   linux-glibc2.3-ix86
package sqlite3 3.7.5   linux-glibc2.3-ix86
package sqlite3 3.7.6.3 linux-glibc2.3-ix86

I decided to drop everything below version 3.7. First, just locate them, to make sure that I got the right ones

% teacup search --at-default eq name sqlite3 and lt version 3.7
entity  name    version platform
------- ------- ------- -------------------
package sqlite3 3.6.17  linux-glibc2.3-ix86
package sqlite3 3.6.18  linux-glibc2.3-ix86
package sqlite3 3.6.19  linux-glibc2.3-ix86
package sqlite3 3.6.20  linux-glibc2.3-ix86
package sqlite3 3.6.21  linux-glibc2.3-ix86
package sqlite3 3.6.22  linux-glibc2.3-ix86
package sqlite3 3.6.23  linux-glibc2.3-ix86
------- ------- ------- -------------------
7 entities found

Convert the output of the search into a script, which, when run, removes the unwanted packages...

% teacup search --at-default eq name sqlite3 and lt version 3.7|grep pack|sed -e 's|^|teacup remove --is |'
teacup remove --is package sqlite3 3.6.17  linux-glibc2.3-ix86
teacup remove --is package sqlite3 3.6.18  linux-glibc2.3-ix86
teacup remove --is package sqlite3 3.6.19  linux-glibc2.3-ix86
teacup remove --is package sqlite3 3.6.20  linux-glibc2.3-ix86
teacup remove --is package sqlite3 3.6.21  linux-glibc2.3-ix86
teacup remove --is package sqlite3 3.6.22  linux-glibc2.3-ix86
teacup remove --is package sqlite3 3.6.23  linux-glibc2.3-ix86

Now this can be either saved to a file and then run via sh or bash, or directly piped into it, like

% teacup search --at-default eq name sqlite3 and lt version 3.7|grep pack|sed -e 's|^|teacup remove --is |' | sh
 Removing instance package sqlite3 3.6.17 linux-glibc2.3-ix86
 Removing instance package sqlite3 3.6.18 linux-glibc2.3-ix86
 Removing instance package sqlite3 3.6.19 linux-glibc2.3-ix86
 Removing instance package sqlite3 3.6.20 linux-glibc2.3-ix86
 Removing instance package sqlite3 3.6.21 linux-glibc2.3-ix86
 Removing instance package sqlite3 3.6.22 linux-glibc2.3-ix86
 Removing instance package sqlite3 3.6.23 linux-glibc2.3-ix86

MHo Yes, I overlooked the capabilties of search... I'll have to modify this a bit so it works on MS Windows, but it should be possible anyway. I have to walk through all packages in such a way...