システムで英語のロケールセットを制限できますか?

システムで英語のロケールセットを制限できますか?

DebianとUbuntuで設定する必要があるロケールを制限できますか?

どのロケールが構成されているかを知って/var/lib/locales/supported.d/local管理/var/lib/locales/supported.d/enしますが、事後(つまり、後で)手動で変更するのがやや不足しており、目的のロケールapt-get dist-upgradeに制限する方法が見つかりませんでした。en_US.*

したがって、パッケージに触れるたびにlanguage-pack-enlanguage-pack-en-base私が見たばかりのものは通常同期的に更新されます)、次の結果が表示されます。

Setting up language-pack-en (1:14.04+20150219) ...
Setting up language-pack-en-base (1:14.04+20150219) ...
Generating locales...
  en_AG.UTF-8... done
  en_AU.UTF-8... done
  en_BW.UTF-8... done
  en_CA.UTF-8... done
  en_DK.UTF-8... done
  en_GB.UTF-8... done
  en_HK.UTF-8... done
  en_IE.UTF-8... done
  en_IN.UTF-8... done
  en_NG.UTF-8... done
  en_NZ.UTF-8... done
  en_PH.UTF-8... done
  en_SG.UTF-8... done
  en_US.UTF-8... up-to-date
  en_ZA.UTF-8... done
  en_ZM.UTF-8... done
  en_ZW.UTF-8... done
Generation complete.

残念ながら、いくつかのアップグレードは上記の2つのファイルを上書きして私が修正した内容をリセットしたようです。

代わりに私たちが見たいものは次のとおりです。

Setting up language-pack-en (1:14.04+20150219) ...
Setting up language-pack-en-base (1:14.04+20150219) ...
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

どうすればいいですか?

答え1

Debian の場合

あなたはできます:

dpkg-reconfigure -plow locales

Ubuntuの使用

Debian ソリューションは Ubuntu では動作しません。おそらくパッケージlocalesが。ただし、インストールするパッケージを選択できます。langpack-localesglibceglibclanguage-pack-*

/var/lib/locales/supported.dより詳細な設定を行うには、ディレクトリ(ベースの/var/lib/locales/supported.d/enロケールなど)の下のファイルを変更する必要がありますen。たとえば、不要なロケールに対応する行を削除できます。それからdpkg-reconfigure locales警告する:このファイルは構成ファイルdpkgこれは、パッケージのアップグレード中に変更を上書きできることを意味します。上書きを別のファイルに移動するように指示することで、dpkgこれを回避できます。

cp -a /var/lib/locales/supported.d/en /var/lib/locales/en.upstream
dpkg-divert --local --divert /var/lib/locales/en.upstream --add /var/lib/locales/supported.d/en

上記のトランスポートコードはsupported.dロケールシステムをマージするため、意図的に転送されたファイルをディレクトリの外部に配置します。みんなディレクトリ内のファイルsupported.d

あるいは、language-pack-*不要なロケールをインストールするパッケージを削除し、別のロケールを指定することもできます/var/lib/locales/supported.d/local(同じ形式を使用)。ロケール(再)生成に関するUbuntuヘルプより多くの情報を知りたいです。ただし、これらのlanguage-pack-*パッケージはロケールをコンパイルするだけでなく、ユーザーが見逃す可能性のある翻訳も提供します。

答え2

@vinc17の回答に追加:dpkgファイルへの変更を上書きしないようにするには、次のように/var/lib/locales/supported.d/en使用しますdpkg-divert

cp -a /var/lib/locales/supported.d/en /var/lib/locales/en.upstream
dpkg-divert --local --divert /var/lib/locales/en.upstream --add /var/lib/locales/supported.d/en

注:上記のコードは、supported.dロケールシステムがマージされたため、意図的に転送されたファイルをディレクトリの外部に配置します。みんなディレクトリ内のファイルsupported.d

答え3

解決策。変更を防ぐには、/var/lib/locales/supported.d/次のコマンドを使用してファイルを設定します。「不変(i)」属性。したがって、ファイルを削除する代わりにファイルを空にしてください。たとえば、(ルートアクセスの仮定):

cd /var/lib/locales/supported.d/
rm <code> && touch <code> # <code> has been emptied
lsattr <code>    # regular attributes
chattr +i <code> # adding (+) immutable
lsattr <code>    # checking attributes

拡張詳細ここ

関連情報