Показать полную графическую версию : Локаль бесится!
phashist
23-12-2004, 09:58
такая хрень, пытаюсь подмантировать виндовые разделы на удалённой машине в консоле, ну как пологается пишу , например:
mount_smbfs -I ip //user@server/share node
и тут выдаёт такую хрень
mount_smbfs: can't set locale ''
mount_smbfs: smb_lib_init: can't initialise locale
я в панике, почему локаль не цепляется... вроде все везде стоит KOI8-R
просто эту систему не я сам настраивал, один тип, который в ужасе ушёл с этой должности, и сам не чихлит что он там накрутил в своё время!
Вот и приходятся из-за всякого ломачья разбираться потом
подскажите где копать, господа!!!
А testparm никаких ошибок не находит?
Belansky
24-12-2004, 08:46
Может, что в /etc/samba/smb.conf напутано?
phashist
если честно, вообще лезть не хотелось. Ну не люблю, когда люди ругают кого-то ломаками и прочее :(
Возможные варианты разборок (для крутых неломаков ;)):
- закидываем find по исходникам в поисках этого отлупа. Мне было лень шарится по своиму диску, я попросила гугль.
Получила http://www.mit.edu/afs/sipb/project/darwin/src/modules/smb/lib/smb/subr.c
Соответственно, идете в src/modules/smb/lib/smb/subr.c и видите :
smb_lib_init(void)
{
int error;
#ifndef APPLE
int kv;
size_t kvlen = sizeof(kv);
#endif
if (smblib_initialized)
return 0;
#if __FreeBSD_version > 400000
error = sysctlbyname("net.smb.version", &kv, &kvlen, NULL, 0);
if (error) {
warnx("%s: can't find kernel module\n", __FUNCTION__);
return error;
}
if (NSMB_VERSION != kv) {
warnx("%s: kernel module version(%d) don't match library(%d).\n", __FUNCTION__, kv, NSMB_VERSION);
return EINVAL;
}
#endif
if ((error = nls_setlocale("")) != 0) {
warnx("%s: can't initialise locale\n", __FUNCTION__);
return error;
}
smblib_initialized++;
return 0;
}
соответственно, думаем, кто, где и когда мог вернуть nls_setlocale("")) Ищем дальше. И т.д.
phashist
24-12-2004, 15:46
не , мужики - самба не причём
тут модуль просто не хочет подключаться , который отвечает за локали при монтировании смб ресурсов удалённо
вот mar - точно меня поняла, тока я ваще потерялся , что и где дальше искать? я с таким просто никада не сталкивался ещё, всё ещё познаю эту систему у меня дистр 4.10 стоит
mar - подскажи как специалист, что нужно ещё посмортеть?
phashist
mar - подскажи как специалист, что нужно ещё посмортеть?
так я, как раз подсказываю, как НЕ специалист по самбе :). Просто раз есть ошибка, можно попытаться понять, откуда она идет. Если попытаетесь пройти дальше, распутывая это дело, то надо запустить поиск функции nls_setlocale. Смотрим там же, где нашли: http://www.mit.edu/afs/sipb/project/darwin/src/modules/smb/lib/smb/nls.c
int
nls_setlocale(const char *name)
{
int i;
if (setlocale(LC_CTYPE, name) == NULL) {
warnx("can't set locale '%s'\n", name);
#ifndef APPLE
#warning XXX setlocale broken - Radar 2705694
return EINVAL;
#endif
}
for (i = 0; i < 256; i++) {
nls_lower[i] = tolower(i);
nls_upper[i] = toupper(i);
}
return 0;
}
Так что упираемся в setlocale и возвращаемся к вопросу Belansky - что и как с локалями (в том числе с системными) у нас прописано? :)
Была у меня подобная проблема, когда при подключении smb - ресурса с включенным перекодированием система ругалась подобным образом, однако ресурс монтировала (без перекодировки ессно). Лечится по сей день следующим образом:
ln -fs /usr/local/lib/libiconv.so /usr/lib/libiconv.so.
Почему не ищет библиотеки в /usr/local до сих пор не могу понять, хотя все пути настроены и остальной софт работает без проблем :confused:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.