DebianとUbuntuで設定する必要があるロケールを制限できますか?
どのロケールが構成されているかを知って/var/lib/locales/supported.d/local
管理/var/lib/locales/supported.d/en
しますが、事後(つまり、後で)手動で変更するのがやや不足しており、目的のロケールapt-get dist-upgrade
に制限する方法が見つかりませんでした。en_US.*
したがって、パッケージに触れるたびにlanguage-pack-en
(language-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-locales
glibc
eglibc
language-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
拡張詳細ここ。