0

I am trying to strip out all my IME packages, to do a fresh install of a different IME (fcitx). I tried this:

apt-get purge ibus-anthy anthy anthy-common libanthy0 \
  ibus-mozc mozc-data mozc-server mozc-utils-gui \
  ^ibus.+ gir1.2-ibus.+ im-config python-ibus libpyzy-1.0.0 \
  libsunpinyin3 sunpinyin-data

which gives the below output, ending in failure over unmet dependencies. Assuming that it should say "removing" when "installing", it still seems a weird complaint. I tried removing the explicit ibus-xxx packages from my above commandline (in case the duplication with the regex caused the problem), but no difference. What am I doing wrong?

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'ibus-libthai' for regex '^ibus.'
Note, selecting 'ibus-table' for regex '^ibus.'
Note, selecting 'ibus-doc' for regex '^ibus.'
Note, selecting 'ibus-table-cantonese' for regex '^ibus.'
Note, selecting 'ibus-table-ipa-x-sampa' for regex '^ibus.'
Note, selecting 'ibus-table-thai' for regex '^ibus.'
Note, selecting 'ibus-table-jyutping' for regex '^ibus.'
Note, selecting 'ibus-table-yawerty' for regex '^ibus.'
Note, selecting 'ibus-cangjie' for regex '^ibus.'
Note, selecting 'ibus-anthy-dev' for regex '^ibus.'
Note, selecting 'ibus-table-cangjie-big' for regex '^ibus.'
Note, selecting 'ibus-table-wubi' for regex '^ibus.'
Note, selecting 'ibus-table-translit' for regex '^ibus.'
Note, selecting 'ibus-sunpinyin' for regex '^ibus.'
Note, selecting 'ibus-el' for regex '^ibus.'
Note, selecting 'ibus-table-translit-ua' for regex '^ibus.'
Note, selecting 'ibus-table-scj6' for regex '^ibus.'
Note, selecting 'ibus-pinyin' for regex '^ibus.'
Note, selecting 'ibus-chewing' for regex '^ibus.'
Note, selecting 'ibus-table-cangjie' for regex '^ibus.'
Note, selecting 'ibus-table-yong' for regex '^ibus.'
Note, selecting 'ibus-table-cns11643' for regex '^ibus.'
Note, selecting 'ibus-table-extraphrase' for regex '^ibus.'
Note, selecting 'ibus-table-cantonhk' for regex '^ibus.'
Note, selecting 'ibus-table-emoji' for regex '^ibus.'
Note, selecting 'ibus-array' for regex '^ibus.'
Note, selecting 'ibus-tabel-erbi' for regex '^ibus.'
Note, selecting 'ibus-m17n' for regex '^ibus.'
Note, selecting 'ibus-mozc' for regex '^ibus.'
Note, selecting 'ibus-xkbc' for regex '^ibus.'
Note, selecting 'ibus-qt4' for regex '^ibus.'
Note, selecting 'ibus-gtk' for regex '^ibus.'
Note, selecting 'ibus-table-quick-classic' for regex '^ibus.'
Note, selecting 'ibus-chewing-dbg' for regex '^ibus.'
Note, selecting 'ibus-table-quick' for regex '^ibus.'
Note, selecting 'ibus-hangul' for regex '^ibus.'
Note, selecting 'ibus-table-easy' for regex '^ibus.'
Note, selecting 'ibus-table-rustrad' for regex '^ibus.'
Note, selecting 'ibus-table-wu' for regex '^ibus.'
Note, selecting 'ibus-anthy' for regex '^ibus.'
Note, selecting 'ibus-clutter' for regex '^ibus.'
Note, selecting 'ibus-table-cangjie3' for regex '^ibus.'
Note, selecting 'ibus-table-cangjie5' for regex '^ibus.'
Note, selecting 'ibus-table-stroke5' for regex '^ibus.'
Note, selecting 'ibus-table-easy-big' for regex '^ibus.'
Note, selecting 'ibus-table-quick3' for regex '^ibus.'
Note, selecting 'ibus-table-quick5' for regex '^ibus.'
Note, selecting 'ibus-input-pad' for regex '^ibus.'
Note, selecting 'ibus-rime' for regex '^ibus.'
Note, selecting 'ibus-table-array30' for regex '^ibus.'
Note, selecting 'ibus-table-erbi' for regex '^ibus.'
Note, selecting 'ibus-gtk3' for regex '^ibus.'
Note, selecting 'ibus-tegaki' for regex '^ibus.'
Note, selecting 'ibus-table-latex' for regex '^ibus.'
Note, selecting 'ibus-table-erbi-qs' for regex '^ibus.'
Note, selecting 'ibus-googlepinyin' for regex '^ibus.'
Note, selecting 'ibus-libpinyin' for regex '^ibus.'
Note, selecting 'ibus-table-viqr' for regex '^ibus.'
Note, selecting 'ibus-skk' for regex '^ibus.'
Note, selecting 'ibus-table-compose' for regex '^ibus.'
Note, selecting 'ibus-unikey' for regex '^ibus.'
Note, selecting 'gir1.2-ibus-1.0' for regex 'gir1.2-ibus.'
Note, selecting 'libpyzy-1.0-0' for regex 'libpyzy-1.0.0'
gir1.2-ibus-1.0 is already the newest version.
gir1.2-ibus-1.0 set to manually installed.
ibus-anthy is already the newest version.
ibus-pinyin is already the newest version.
ibus-sunpinyin is already the newest version.
ibus-table is already the newest version.
ibus-table set to manually installed.
ibus-table-wubi is already the newest version.
ibus-mozc is already the newest version.
ibus-table-translit is already the newest version.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 ibus-anthy : Depends: anthy but it is not going to be installed
              Depends: libanthy0 but it is not going to be installed
 ibus-anthy-dev : Depends: anthy but it is not going to be installed
 ibus-array : Depends: python-ibus but it is not going to be installed
 ibus-el : Depends: python-ibus but it is not going to be installed
 ibus-googlepinyin : Depends: python-ibus but it is not going to be installed
 ibus-mozc : Depends: mozc-data but it is not going to be installed
 ibus-pinyin : Depends: libpyzy-1.0-0 but it is not going to be installed
               Depends: python-ibus but it is not going to be installed
 ibus-sunpinyin : Depends: libsunpinyin3 but it is not going to be installed
                  Depends: sunpinyin-data but it is not going to be installed
 ibus-xkbc : Depends: python-ibus but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
1
apt-get purge ibus-anthy anthy anthy-common libanthy0 \
  ibus-mozc mozc-data mozc-server mozc-utils-gui \
  ^ibus.+ gir1.2-ibus.+ im-config python-ibus libpyzy-1.0.0 \
  libsunpinyin3 sunpinyin-data

Of course, because you are telling apt-get to install any package that starts with ibus and gir1.2-ibus. The + at the end of the package name tells apt-get to install such package, since apt-get don't treat + as part of the regular expression, which is evident when you see "Note, selecting 'ibus-table-viqr' for regex '^ibus.'". You should replace .+ for .* or .? or better yet, use $ instead.

The relevant part of the man page that describes the behavior is below:

If no package matches the given expression and the expression contains one of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and it is applied to all package names in the database. Any matches are then installed (or removed). Note that matching is done by substring so 'lo.*' matches 'how-lo' and 'lowest'. If this is undesired, anchor the regular expression with a '^' or '$' character, or create a more specific regular expression.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.