Bug 4685

Summary: copy filenames in Russian from smb:// produced wrong filenames
Product: Sisyphus Reporter: Vitaly A. Ostanin <vyt>
Component: gvfs-backend-smbAssignee: Alexey Rusakov <ktirf>
Status: CLOSED WONTFIX QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: ab, aris, dobr, mike
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 15403    

Description Vitaly A. Ostanin 2004-07-05 15:53:31 MSD
Копирование файлов с русскими именами с помощью nautilus с использованием схемы
smb:// создаёт файлы с испорченными именами, судя по всему, в unicode. Различные
вариации настроек кодировки в ~/.smb/smb.conf успеха не принесли.

Копирование с примонтированных smbmount ресурсов таких же файлов с помощью
/bin/cp даёт правильные имена файлов.

nautilus2-2.6.3-alt1
gnome-vfs2-2.6.1.1-alt1.1
gnome-full-sisyphus-2.6.0-alt1
Comment 1 Yuri N. Sedunov 2004-07-05 16:43:46 MSD
Да, на ФС с именами в юникоде все нормально.

2ab@
Александр, может что подскажете хотя бы в общем и целом? На что должна смотреть
gnome-vfs, если имена файлов не в юникод?
Comment 2 Alexander Bokovoy 2004-07-05 17:00:32 MSD
На unix charset в smb.conf, очевидно. Если этой опции в конфигурационном файле
нет, то она по умолчанию равна UTF8.
Comment 3 Yuri N. Sedunov 2004-07-21 13:54:52 MSD
Виталий, попробуй сделать ln -s /etc/samba/smb.conf ~/.smb/smb.conf
Comment 4 Vitaly A. Ostanin 2004-07-22 16:12:01 MSD
Сделал. Копирование работает странно:

Файл
МАШИНА.mp3
скопировался с правильным именем.

Файлы вида
Машина времени - Синяя птица.mp3
копируются с именами кашей.

Кстати, в адресной строке русские символы кодируются как
0%B5%D0

nautilus2-2.6.3-alt1
samba-client-3.0.3-alt1.1
gnome-full-sisyphus-2.6.0-alt1
Comment 5 Yuri N. Sedunov 2004-07-22 18:35:33 MSD
А "unix charset" в /etc/samba/smb.conf выставлен в кодировку твоей локали?

Если не трудно, протестируй на smb:// утилиты из 
$ rpm -ql gnome-vfs2-utils 
/usr/bin/gnomevfs-cat
/usr/bin/gnomevfs-copy
/usr/bin/gnomevfs-info
/usr/bin/gnomevfs-ls
/usr/bin/gnomevfs-mkdir
Comment 6 Vitaly A. Ostanin 2004-07-23 14:06:36 MSD
Да, unix charset = CP1251 - это правильно, у меня локаль ru_RU.CP1251, она же
системная.

gnomevfs-ls smb://pserver/old/mp3/
, запущенный из терминала, выдаёт вместо русских имён знаки вопроса.

Кстати, ещё пример копирования в nautilus:

01 - Инспектор по....mp3
ok

02 - Гномы-каннибалы.mp3
каша

samba-client-3.0.3-alt1.1
nautilus2-2.6.3-alt2
gnome-vfs2-utils-2.6.1.1-alt1.3

Comment 7 Yuri N. Sedunov 2004-07-27 16:21:55 MSD
Виталий, попробуй с новыми 
glib2-2.4.4-alt1.1
gnome-vfs2-2.6.1.1-alt1.4
Пока эти пакеты есть только в ftp://ftp.altlinux.ru/pub/people/aris/.
Comment 8 Vitaly A. Ostanin 2004-08-03 15:52:35 MSD
Без изменений, всё так же. nautilus2 копирует в имя с кашей, gnomevfs-ls выводит
русский в utf-8 вместо текущей локали.

gnome-vfs2-utils-2.6.1.1-alt1.4
glib2-2.4.5-alt1
gnome-vfs2-2.6.1.1-alt1.4
Comment 9 Alexey Rusakov 2006-07-14 01:51:04 MSD
А сейчас? (сорри, самому проверить не на чем)
Comment 10 Alexey Rusakov 2006-07-14 01:51:48 MSD
Да, это теперь мой баг.
Comment 11 Vitaly A. Ostanin 2006-07-21 13:12:49 MSD
Мне сейчас тоже проверить пока не на чем.
Comment 12 Alexey Rusakov 2006-12-29 12:33:07 MSK
А сейчас?
Comment 13 Michael Shigorin 2007-11-10 20:33:25 MSK
Андрюш, получается проверить?
Comment 14 Alexey Rusakov 2008-06-16 04:53:47 MSD
gnome-vfs устарел, вместо него теперь gvfs. Прошу подтвердить на современном Сизифе и, соответственно, при установленном gvfs-backends-smb.
Comment 15 Vitaly A. Ostanin 2008-06-28 16:10:03 MSD
Мне сейчас проверить не на чем. Как аврал спадёт, попробую проверить.
Comment 16 Alexey Rusakov 2008-08-20 00:28:36 MSD
Аврал спал? :)
Comment 17 Vitaly A. Ostanin 2008-08-27 19:23:05 MSD
$ nautilus
nautilus: symbol lookup error: /usr/lib64/gio/modules/libgiohal-volume-monitor.so: undefined symbol: dbus_watch_get_unix_fd

gvfs-backend-smb-0.99.1-alt1
nautilus-2.22.5.1-alt1
dbus-1.0.2-alt4
hal-0.5.10-alt6
udev-108-alt2

Обновил dbus:

nautilus: symbol lookup error: /usr/lib64/gio/modules/libgiohal-volume-monitor.so: undefined symbol: libhal_get_all_devices_with_properties

Обновил hal - nautilus запустился. В меню Вид стоит галка возле "Показывать адресную строку", однако полей ввода никаких нет. В пунктах слева ничего про сеть нет:

Места
/home
Рабочий стол
Файловая система
Корзина

Запускал в сеансе под xfce, сейчас попробую новым пользователем под Gnome.


Система - несвежий Сизиф
Comment 18 Yuri N. Sedunov 2008-08-27 19:42:43 MSD
Виталий, сделай, пожалуйста себе свежий сизиф или попробуй с livecd: ftp://ftp.altlinux.org/pub/beta/desktop/20080822/altlinux-4.1.0-beta-20080822-gnome-i586-ru-livecd.iso
Comment 19 Vitaly A. Ostanin 2008-08-27 19:50:30 MSD
Да, получить рабочий Gnome оказалось для меня непосильной задачей. gnome-full не устанавливается из-за gnome-default. Точечные установки не проходят из-за неполных зависимостей, постоянно ошибки вида
/usr/bin/gnome-session: symbol lookup error: /usr/bin/gnome-session: undefined symbol: gnome_keyring_daemon_prepare_environment_sync

Когда это всё победил, не заработал логин из gdm в сессию Gnome под новым пользователем - что-то про exec line. Работает сессия Gnome failsafe, там наутилус запускается, но про сеть слева по прежнему ничего.

Свежий сизиф я себе сделал на работе и результат крайне не понравился - дома я пока такое не рискну. А samba, к сожалению, поднята именно дома. Короче, поставил livecd на закачку.
Comment 20 Vitaly A. Ostanin 2008-08-27 20:38:06 MSD
В этом livecd файлы видны и копируются нормально. Оказывается, сеть доступна в наутилусе через меню "Переход".

Попробовал на своей машине с локалью CP1251 - та же ошибка:

01 - Инспектор по....mp3 OK
02 - Гномы-каннибалы.mp3 Каша (02 - Гномы-каннибалы.mp3)
МАШИНА.mp3 OK
Машина времени - Синяя птица.mp3 Каша (Машина времени - РЎРёРЅСЏСЏ птица.mp3)

Кстати, замечания по livecd:
В заставке написано Altlinux 4.0 вместо 4.1
Ругань при монтировании /proc и /sys (похоже на забытый mtab)
Зачем-то пытается стартовать openvpn
Так сразу непонятно, что пользователя зовут altlinux
Из меню Gnome не запускается xterm и второй терминал с похожим названием.
Comment 21 Vitaly A. Ostanin 2008-08-28 19:35:24 MSD
Юрий, а можно сделать для эксперимента такой же livecd, только с локалью ru_RU.CP1251 ? Чтобы убедиться, что бага не в версиях моего софта, а действительно в перекодировке.
Comment 22 Yuri N. Sedunov 2008-08-28 19:47:35 MSD
(In reply to comment #21)
> Юрий, а можно сделать для эксперимента такой же livecd, только с локалью ru_RU.CP1251
> ? Чтобы убедиться, что бага не в версиях моего софта, а действительно в
> перекодировке.
> 

Виталий, ситуация с не-utf-локалями безнадежная, -- ошибки при открытии, сохранении файлов есть во многих приложениях, единолично с ними бороться я не смог и перешел с кои-8р на юникод, что и тебе рекомендую.

Comment 23 Michael Shigorin 2008-08-28 20:57:37 MSD
(In reply to comment #21)
> Юрий, а можно сделать для эксперимента такой же livecd, 
> только с локалью ru_RU.CP1251?
Чудак-человек, LC_ALL=ru_RU.CP1251 LANG=ru_RU.CP1251 nautilus не быстрее ли? :)

А gtk2 и gnome2 в области восьмибитки -- действительно, такие же кастраты, как и делавшие это архитектурное лишение :-(
Comment 24 Alexander Bokovoy 2008-08-28 21:20:12 MSD
Я бы не был столь злобным. Для начала, все приложения на основе GLib умеют корректно работать с разными кодировками в именах файлов: http://library.gnome.org/devel/glib/unstable/glib-running.html

Можно попробовать и G_FILENAME_ENCODING, и G_BROKEN_FILENAMES. Для начала, я бы попробовал G_FILENAME_ENCODING=@locale
Comment 25 Yuri N. Sedunov 2008-08-28 21:32:44 MSD
(In reply to comment #24)
> Я бы не был столь злобным. Для начала, все приложения на основе GLib умеют
> корректно работать с разными кодировками в именах файлов:
> http://library.gnome.org/devel/glib/unstable/glib-running.html
> 
> Можно попробовать и G_FILENAME_ENCODING, и G_BROKEN_FILENAMES. Для начала, я бы попробовал
> G_FILENAME_ENCODING=@locale

Не поможет.

$ cat /etc/profile.d/libglib2.sh 
## This causes GLib2 applications to convert filenames from
## locale encoding to UTF-8. If the locale encoding is already
## UTF-8 then it makes no difference.

export G_BROKEN_FILENAMES=1

# This causes GLib2 applications to convert filenames from
# G_FILENAME_ENCODING encoding to UTF-8.
# Any application can use G_FILENAME_ENCODING for this purposes
# or link natspec library

NATSPEC=/usr/bin/natspec
test -x $NATSPEC && export G_FILENAME_ENCODING=`natspec -f`
Comment 26 Vitaly A. Ostanin 2008-08-28 23:08:48 MSD
(In reply to comment #23)
> (In reply to comment #21)
> > Юрий, а можно сделать для эксперимента такой же livecd, 
> > только с локалью ru_RU.CP1251?
> Чудак-человек, LC_ALL=ru_RU.CP1251 LANG=ru_RU.CP1251 nautilus не быстрее ли? :)

В livecd nautilus уже запущен, и после kill pid запускается без учёта моего LANG. Впрочем, путём хака /etc/init.d/livecd-setlocale я выставил локаль ru_RU.CP1251, и каша с некоторыми именами воспроизвелась.

Интересно то, кто каша с именами видна только при обращении nautilus через smb, при просмотре этих файлов на локальной fs всё нормально (локаль ru_RU.CP1251).

> 
> А gtk2 и gnome2 в области восьмибитки -- действительно, такие же кастраты, как и
> делавшие это архитектурное лишение :-(
> 

Comment 27 Vitaly A. Ostanin 2008-08-28 23:13:16 MSD
(In reply to comment #22)
> (In reply to comment #21)
> > Юрий, а можно сделать для эксперимента такой же livecd, только с локалью ru_RU.CP1251
> > ? Чтобы убедиться, что бага не в версиях моего софта, а действительно в
> > перекодировке.
> > 
> 
> Виталий, ситуация с не-utf-локалями безнадежная, -- ошибки при открытии,
> сохранении файлов есть во многих приложениях, единолично с ними бороться я
> не смог и перешел с кои-8р на юникод, что и тебе рекомендую.

Ну зачем же единолично :) Можно собрать testcase и озадачить авторов. Почему-то мне кажется, что дело всё-таки не в локалях, а невоспроизводимость в UTF-8 - просто совпадение.

Но если мантейнеры решат, что Gnome уже 4 года как Unicode-only, я не буду против :)
Comment 28 Vitaly A. Ostanin 2008-08-28 23:15:34 MSD
Ещё кстати про этот livecd:
1. Терминал теперь запускается, почему не запускался при первой загрузке - непонятно.
2. Наличие локалей не *.UTF-8 на диске удивило - их без хака livecd-setlocale использовать невозможно, только место занимают.
Comment 29 Yuri N. Sedunov 2008-08-29 00:02:30 MSD
(In reply to comment #27)
<skip>
> 
> Ну зачем же единолично :) Можно собрать testcase и озадачить авторов. Почему-то
> мне кажется, что дело всё-таки не в локалях, а невоспроизводимость в UTF-8 -
> просто совпадение.

Не, не совпадение. 
aMule, еpiphany, gthumb, например, что-то еще, уже не помню, на что натыкался.

> Но если мантейнеры решат, что Gnome уже 4 года как Unicode-only, я не буду против :)

Ну, мантейнер Open Office уже давно просто посылает куда-подальше не-utf пользователей. А мы еще разговоры ведем пятый год :)
Comment 30 Michael Shigorin 2008-08-29 00:03:36 MSD
(In reply to comment #24)
> Я бы не был столь злобным.
Ну как тебе сказать.  Когда фиксил, скажем, file-roller, поглядывая в патчи lav@ и его же http://www.freesource.info/wiki/Lokalizacija/LokalizacijaProgramm&#h323-5 -- выражения в сторону семибитных существ были сильно менее мягкими.

(In reply to comment #27)
> Но если мантейнеры решат, что Gnome уже 4 года как Unicode-only,
> я не буду против :)
Майнтейнеры как раз иногда исправляют, а багу надо вешать всё-таки на ДНК апстрима, как бы ни избегал подобных формулировок.

Юникод -- это наше светлое будущее, привыкай.
Comment 31 Vitaly A. Ostanin 2008-08-29 15:45:57 MSD
Ну раз Миша велел привыкать, можете закрывать багу :) Так сложилось, что я уже не пользуюсь Gnome и samba.
Comment 32 Yuri N. Sedunov 2008-09-01 13:30:13 MSD
Закрываю.

Comment 33 Vitaly A. Ostanin 2008-09-01 16:51:14 MSD
Закрываю.