26

I have 5 unused locales on my system. How can I remove them via command line? I have use localepurge but it didn't work.

Eonil
  • 2,021
  • 3
  • 18
  • 15

1 Answers1

31

You can list locales with

localedef --list-archive

or with

locale -a

Corresponding file size is given by

ls -lh /usr/lib/locale/locale-archive

To remove unused locales you can do

sudo locale-gen --purge it_IT.UTF-8 en_US.UTF-8 && echo 'Success!'

where it_IT.UTF-8 and en_US.UTF-8 are the only two locales I want. The && echo 'Success!' at end is useful because locale-gen does not report errors if an unavailable or wrong locale is passed on command line.

Artur Meinild
  • 21,605
  • 21
  • 56
  • 89
enzotib
  • 92,255
  • 11
  • 164
  • 178
  • The command for 12.04 is `localedef --list-archive` without `s` – anatoly techtonik Mar 24 '12 at 08:22
  • @techtonik: it is so also in 11.10, my errror :) – enzotib Mar 24 '12 at 09:49
  • Nice. Is there a way to remove just the locales that I don't need? I am not sure whichever of en_US locales are used - I prefer to leave them all and remove only the ones that I am absolutely sure have no use on my system, like de_*. – anatoly techtonik Mar 26 '12 at 13:05
  • 7
    On bash the exclamation mark in the `"Succes!"` string triggers the bash history expansion. To avoid this problem you have to include `'Success!'` into single quotes or (strangely!) remove the quotes. From [bash manual](http://www.gnu.org/software/bash/manual/bashref.html#History-Interaction): _History expansions are introduced by the appearance of the history expansion character, which is ‘!’ by default. Only `\ ` and `'` may be used to escape the history expansion character._ – Michele Feb 10 '14 at 10:26
  • 6
    --purge is not working in my case and is not documented... – Loenix Jul 28 '20 at 08:54
  • It did not work for me either – Ramon Suarez Oct 26 '20 at 08:23