Загрузите локаль из / usr / local / share / locale в OS X

1

При импорте базы данных PostgreSQL в OS X 10.10 я получил сообщение об ошибке «Недопустимое имя локали: en_US.utf8». я пошел в /usr/share/locale и скопировал папку en_US.UTF-8 как en_US.utf8, Хорошо, проблема решена.

Но я знаю, что это решение не будет работать в OS X 10.11 из-за этого «безродного режима» Я не смогу изменить /usr/share/locale,

Есть ли способ загрузить эту папку из /usr/local/share/locale? Я пытался скопировать en_US.utf8 в этот каталог, и это не сработало.

Jan K. S.
источник
Вы отключили SiP (без рута)
At0mic
Нет, и я предпочитаю не делать этого, если нет другого пути. Защита целостности системы в целом хорошая.
Jan K. S.
Вы можете отключить, затем сделать свои вещи, а затем снова включить его.
At0mic
Я бы использовал это как последнее средство. Я не уверен, будет ли Apple сбрасывать / usr / share / locale в следующих обновлениях, заставляя меня повторить процесс.
Jan K. S.

Ответы:

1

Мое решение теперь состоит в том, чтобы просто заменить строку "en_US.utf8" на "en_US.UTF-8" в файле дампа. Поскольку этот файл сжат в моем случае (следовательно, в двоичном формате), необходимо было сохранить то же количество символов в исходной строке. Так что я удаляю пару пробелов, превращая

(...) LC_COLLATE = 'en_US.utf8' LC_CTYPE = 'en_US.utf8' (...)

в

(...) LC_COLLATE= 'en_US.UTF-8' LC_CTYPE= 'en_US.UTF-8' (...)

Команда Perl для этого в моем скрипте импорта была

perl -pi -e "s/LC_COLLATE = 'en_US.utf8'/LC_COLLATE= 'en_US.UTF-8'/g" myDumpFilePath
perl -pi -e "s/LC_CTYPE = 'en_US.utf8'/LC_CTYPE= 'en_US.UTF-8'/g" myDumpFilePath
Jan K. S.
источник
#taketheblowonthehead похожая проблема, но я пытался восстановить каталог PG_DATA 47 ГБ
Andrew Wolfe