시스템에서 영어 로케일 세트를 제한할 수 있습니까?

시스템에서 영어 로케일 세트를 제한할 수 있습니까?

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.

불행하게도 일부 업그레이드는 위의 두 파일을 덮어써서 내가 수정한 내용을 재설정한 것 같습니다.

대신 우리가 보고 싶은 것은 다음과 같습니다.

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

데비안의 경우

넌 할 수있어:

dpkg-reconfigure -plow locales

우분투 사용

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

확장된 세부정보여기.

관련 정보