Добавление локали ru_RU.CP1251 с через localedef
Однажды при работе с git репозиторием возникла проблема:
# git pull
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "ru_RU.CP1251",
LC_ALL = "ru_RU.CP1251",
LC_PAPER = "ru_RU.CP1251",
LC_ADDRESS = "ru_RU.CP1251",
LC_MONETARY = "ru_RU.CP1251",
LC_NUMERIC = "ru_RU.CP1251",
LC_TELEPHONE = "ru_RU.CP1251",
LC_IDENTIFICATION = "ru_RU.CP1251",
LC_MEASUREMENT = "ru_RU.CP1251",
LC_TIME = "ru_RU.CP1251",
LC_NAME = "ru_RU.CP1251",
LANG = "ru_RU.CP1251"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Already up-to-date.
Родной кодировкой проекта была cp1251. Но вот нечадача: данная локаль была установлена в системе (ubuntu).
После многочисленных тестов на разных осях выяснил,что и на debian-подобных,и на redhat-подобных системах возникает данный ворнинг.
После дебага с помощью strace пришел к выводу,что git (вернее gitolite) при пуллинге выполняет perl скрипты на самом сервере,где хранится репозиторий.
На сервере репозитория:
# locale -a | grep ru_RU
ru_RU
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
Не видим нужной локали,ставим:
localedef --no-archive -c -i ru_RU -f CP1251 ru_RU.CP1251
После этого perl перестает ругаться.
Так как не нашел должного описания,пишу сюда. Для экономии времени заглянувшего сюда читателя