Help us understand the problem. What is going on with this article?

Gentooでlocale周りのエラーが出た場合

More than 5 years have passed since last update.

Gentooで /etc/env.d/02locale が正しく設定されてなくてlocale周りのエラーが出たので対処方法をメモ。


USEフラグの管理にはflaggieを使いますが、こんな感じのエラーを吐いてしまいました。

localhost ~ # flaggie -perl dev-vcs/git
Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.3/flaggie", line 25, in <module>
    sys.exit(main(sys.argv))
  File "/usr/lib64/python3.3/site-packages/flaggie/cli.py", line 80, in main
    locale.setlocale(locale.LC_ALL, '')
  File "/usr/lib64/python3.3/locale.py", line 541, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

さっそくlocale設定を確認。

localhost ~ # eselect locale list
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
Available targets for the LANG variable:
  [1]   C
  [2]   POSIX
  [3]   en_US
  [4]   en_US.iso88591
  [5]   en_US.utf8
  [6]   ja_JP
  [7]   ja_JP.eucjp
  [8]   ja_JP.ujis
  [9]   ja_JP.utf8
  [10]  japanese
  [11]  japanese.euc
  [ ]   (free form)

設定されてないですね。
ja_JP.utf8 にでも設定して、 env-update && source /etc/profice

localhost ~ # eselect locale set 9
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
Setting LANG to ja_JP.utf8 ...
Run ". /etc/profile" to update the variable in your shell.
localhost ~ # env-update 
>>> Regenerating /etc/ld.so.cache...
localhost ~ # source /etc/profile

しかし同じエラーが・・・。
なんか LC_ALL を読もうとして失敗してる…?

localhost ~ # flaggie 
Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.3/flaggie", line 25, in <module>
    sys.exit(main(sys.argv))
  File "/usr/lib64/python3.3/site-packages/flaggie/cli.py", line 80, in main
    locale.setlocale(locale.LC_ALL, '')
  File "/usr/lib64/python3.3/locale.py", line 541, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

eselect locale set で設定されるのは LANG だけのようなので、

localhost ~ # grep -E '^\s*[^#;]' /etc/env.d/02locale 
LANG="ja_JP.utf8"

LC_ALL を書いてみます。
再び env-update && source /etc/profice

localhost ~ # vi /etc/env.d/02locale 
localhost ~ # grep -E '^\s*[^#;]' /etc/env.d/02locale 
LC_ALL="ja_JP.utf8"
LANG="ja_JP.utf8"
localhost ~ # env-update 
>>> Regenerating /etc/ld.so.cache...
localhost ~ # source /etc/profile

こんどはうまくいきました♪
flaggie って色んなオプションあるんですね。

localhost ~ # flaggie 
Synopsis:
flaggie [<options>] [<global-actions>] [<packages> <actions>] [...]

Options:
    --quiet         Silence argument errors and warnings
    --strict        Abort if at least a single flag is invalid

    --drop-ineffective  Drop ineffective flags (those which are
                overriden by later declarations)
    --sort-entries      Sort package.* file entries by package
                (please note this will drop comments)
    --sort-flags        Sort package.* flags by name
    --sort          Shorthand for --sort-entries and --sort-flags
    --cleanup       Shorthand for --drop-ineffective and --sort

    --drop-unmatched-pkgs   Drop packages which no longer are available
                in portdb
    --drop-unmatched-flags  Drop flags which are not found in package's
                IUSE, KEYWORDS and/or LICENSE variables
    --destructive-cleanup   Shorthand for all of the above

    --migrate-files     Migrate the outdated files to newer variants
                (package.keywords -> package.accept_keywords)

Global actions are applied to the make.conf file. Actions are applied to
the package.* files, for the packages preceding them.

An action can be one of:
    +arg    explicitly enable arg
    -arg    explicitly disable arg
    %arg    reset arg to the default state (remove it from the file)
    ?arg    print the effective status of arg (due to the file)

The action argument must be either a USE flag, a keyword or a license name.
For the '%' and '?' actions, it can be also one of 'use::', 'kw::' or 'lic::'
in order to apply the action to all of the flags, keywords or licenses
respectively.

A package specification can be any atom acceptable for Portage (in the same
format as taken by emerge).
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした