?????? вместо русских букв при автомонтировании, hal, Xfce4, exo
nameloss 26 февраля, 2009 - 16:29
Проблема такая:
флешка монтируется нормально, но вместо русских букв знаки вопроса. Проблема, похоже, не в hal, но в exo. В сети можно найти хорошую инструкцию для ArchLinux(http://archlinux-ru.blogspot.com/2008/03/xfce-hal.html, но у меня проблемы только с exo), но мне не хватает знаний и опыта чтобы использовать её для Gentoo. Помогите. Чем подробнее помощь, тем лучше, но сильно не настаиваю.
»
- Для комментирования войдите или зарегистрируйтесь
Аналогичная проблема на
Аналогичная проблема на XFCE4. Решения пока так и не нашел
exo-0.3.4-r2.ebuild: #
exo-0.3.4-r2.ebuild:
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/xfce-extra/exo/exo-0.3.4-r1.ebuild,v 1.13 2008/11/20 16:44:51 ranger Exp $
inherit eutils xfce44 python multilib autotools
XFCE_VERSION=4.4.2
xfce44
xfce44_core_package
DESCRIPTION="Extensions, widgets and framework library with session management support"
KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 sparc x86 ~x86-fbsd"
IUSE="debug doc hal libnotify python"
RDEPEND=">=dev-lang/perl-5.6
dev-perl/URI
>=dev-libs/glib-2.6
>=x11-libs/gtk+-2.6
>=xfce-base/libxfce4util-${XFCE_MASTER_VERSION}
>=xfce-base/xfce-mcs-manager-${XFCE_MASTER_VERSION}
>=xfce-base/xfce-mcs-plugins-${XFCE_MASTER_VERSION}
libnotify? ( x11-libs/libnotify )
hal? ( >=sys-apps/hal-0.5.7.1 )
python? ( dev-python/pygtk )"
DEPEND="${RDEPEND}
dev-util/gtk-doc-am
dev-util/pkgconfig
dev-util/xfce4-dev-tools
doc? ( dev-util/gtk-doc )
dev-util/intltool"
DOCS="AUTHORS ChangeLog HACKING NEWS README THANKS TODO"
pkg_setup() {
XFCE_CONFIG="${XFCE_CONFIG} $(use_enable python)
$(use_enable libnotify notifications)
$(use_enable hal) --enable-mcs-plugin"
}
# See bug 166568 for reference
src_unpack() {
unpack ${A}
cd "${S}"
sed -i -e 's:-Werror::g' "${S}"/configure.in || die "sed failed"
epatch "${FILESDIR}"/${P}-eject.patch \
"${FILESDIR}"/${P}-remove-libmd5.patch \
"${FILESDIR}"/alt-exo-iocharset.patch
intltoolize --force --copy --automake || die "intltoolize failed."
AT_M4DIR=/usr/share/xfce4/dev-tools/m4macros eautoreconf
}
# See bug 164780 for reference
src_install() {
xfce44_src_install
rm -f "${D}"/usr/lib*/python*/site-packages/pyexo.py[co]
rm -f "${D}"/usr/lib*/python*/site-packages/${PN}-0.3/${PN}/__init__.py[co]
}
pkg_postinst() {
xfce44_pkg_postinst
python_version
python_mod_optimize /usr/$(get_libdir)/python${PYVER}/site-packages
}
pkg_postrm() {
xfce44_pkg_postrm
python_mod_cleanup
}
alt-exo-iocharset.patch:
diff --git a/exo-mount/exo-mount-hal.c b/exo-mount/exo-mount-hal.c
index 791a536..4b130c3 100644
--- a/exo-mount/exo-mount-hal.c
+++ b/exo-mount/exo-mount-hal.c
@@ -34,6 +34,8 @@
#include
#endif
+#include
+
#include
#include
@@ -616,6 +618,30 @@ oom: g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM, g_strerror (ENOMEM))
/**
+ * exo_mount_hal_iocharset:
+ *
+ * Determines the preferred iocharset for filesystems
+ * that support it.
+ *
+ * Return value: iocharset string or %NULL if none.
+ **/
+static const gchar*
+exo_mount_hal_iocharset ()
+{
+ const gchar* cs = g_getenv("EXO_MOUNT_IOCHARSET");
+ if (cs != NULL)
+ return cs;
+
+ const char* codeset = nl_langinfo (CODESET);
+ if (codeset && !strcmp (codeset, "UTF-8"))
+ return "utf8";
+
+ return NULL;
+}
+
+
+
+/**
* exo_mount_hal_device_mount:
* @device : an #ExoMountHalDevice.
* @error : return location for errors or %NULL.
@@ -676,6 +702,12 @@ exo_mount_hal_device_mount (ExoMountHalDevice *device,
/* however this one is FreeBSD specific */
options[n++] = g_strdup ("longnames");
}
+ else if (strcmp (device->fsoptions[m], "iocharset=") == 0)
+ {
+ const gchar* iocharset = exo_mount_hal_iocharset();
+ if (iocharset != NULL)
+ options[n++] = g_strdup_printf ("iocharset=%s", iocharset);
+ }
}
}
diff --git a/exo-mount/main.c b/exo-mount/main.c
index 80eae1d..f442019 100644
--- a/exo-mount/main.c
+++ b/exo-mount/main.c
@@ -39,6 +39,8 @@
#include
#endif
+#include
+
#include
#include
@@ -97,6 +99,8 @@ main (int argc, char **argv)
/* initialize the i18n support */
xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
+ setlocale(LC_CTYPE, "");
+
/* initialize GTK+ */
if (!gtk_init_with_args (&argc, &argv, "Xfce mount", entries, GETTEXT_PACKAGE, &err))
{
Кладем alt-exo-iocharset.patch в files. Дальше делаем ebuild exo-0.3.4-r2.ebuild digest и emerge exo. Все это естественно нужно делать в PORTDIR_OVERLAY
Прямо никуда не выложить
Прямо никуда не выложить было?
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Безграничная благодарность в разумных пределах
Спасибо за живую помощь, но я в Gentoo меньше недели, поэтому фраза про PORTDIR_OVERLAY мне ничего не говорит, и я не знаю где находится files. Не прошу писать подробно, хватит ссылки на популярное объяснение.
И ещё, в патче епоследние строки такие:
/* initialize GTK+ */
if (!gtk_init_with_args (&argc, &argv, "Xfce mount", entries, GETTEXT_PACKAGE, &err))
{
Я не утверждаю, что тут ошибка, просто возникает ощущение, что патч недозалит. Это только ощущение, но прошу его развеять. Ещё раз спасибо.
http://ru.gentoo-wiki.com/wik
http://ru.gentoo-wiki.com/wiki/HOWTO_%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_Portage
http://ru.gentoo-wiki.com/wiki/Portage_Overlay
Это да, товарищу сюда
Это да, товарищу сюда http://paste2.org/new-paste
http://paste2.org/p/155915 ht
http://paste2.org/p/155915
http://paste2.org/p/155917
Пожалуйста. Патч именно такой, какой я привел, по всем вопросам можно обращаться к создателю патча.
Вы не правы. Ошибки тут нет.
Вы не правы. Ошибки тут нет.
Спасибо.
Спасибо.
Значит ошибка где-то в моих действиях
1)создал /usr/local/portage/xfce-extra/exo/files/
2)в make.conf добавил строку PORTDIR_OVERLAY="/usr/local/portage/"
3)в /usr/local/portage/xfce-extra/exo/ добавил ebuild
4)в files/ положил файлы
alt-exo-iocharset.patch
exo-0.3.4-eject.patch (скопировал из папки с текущим exo)
exo-0.3.4-inline-functions.patch (скопировал из папки с текущим exo)
exo-0.3.4-remove-libmd5.patch (скопировал из папки с текущим exo)
exo-0.3.4.tar.bz2
5)ebuild exo-0.3.4-r2.ebuild digest
6)emerge exo
получил
* exo-0.3.4.tar.bz2 RMD160 SHA1 SHA256 size ;-) ... [ ok ]
* checking ebuild checksums ;-) ... [ ok ]
* checking auxfile checksums ;-) ... [ ok ]
* checking miscfile checksums ;-) ... [ ok ]
>>> Unpacking source...
>>> Unpacking exo-0.3.4.tar.bz2 to /var/tmp/portage/xfce-extra/exo-0.3.4-r2/work
* Applying exo-0.3.4-eject.patch ... [ ok ]
* Applying exo-0.3.4-remove-libmd5.patch ... [ ok ]
* Applying alt-exo-iocharset.patch ...
* Failed Patch: alt-exo-iocharset.patch !
* ( /usr/local/portage/xfce-extra/exo/files/alt-exo-iocharset.patch )
*
* Include in your bugreport the contents of:
*
* /var/tmp/portage/xfce-extra/exo-0.3.4-r2/temp/alt-exo-iocharset.patch-8349.out
текст лога:
***** alt-exo-iocharset.patch *****
===================================
PATCH COMMAND: patch -p0 -g0 -E --no-backup-if-mismatch < /usr/local/portage/xfce-extra/exo/files/alt-exo-iocharset.patch
===================================
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/exo-mount/exo-mount-hal.c b/exo-mount/exo-mount-hal.c
|index 791a536..4b130c3 100644
|--- a/exo-mount/exo-mount-hal.c
|+++ b/exo-mount/exo-mount-hal.c
--------------------------
No file to patch. Skipping patch.
patch: **** malformed patch at line 14: @@ -616,6 +618,30 @@ oom: g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM, g_strerror (ENOMEM))
===================================
PATCH COMMAND: patch -p1 -g0 -E --no-backup-if-mismatch < /usr/local/portage/xfce-extra/exo/files/alt-exo-iocharset.patch
===================================
patching file exo-mount/exo-mount-hal.c
patch: **** malformed patch at line 14: @@ -616,6 +618,30 @@ oom: g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM, g_strerror (ENOMEM))
===================================
PATCH COMMAND: patch -p2 -g0 -E --no-backup-if-mismatch < /usr/local/portage/xfce-extra/exo/files/alt-exo-iocharset.patch
===================================
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/exo-mount/exo-mount-hal.c b/exo-mount/exo-mount-hal.c
|index 791a536..4b130c3 100644
|--- a/exo-mount/exo-mount-hal.c
|+++ b/exo-mount/exo-mount-hal.c
--------------------------
No file to patch. Skipping patch.
patch: **** malformed patch at line 14: @@ -616,6 +618,30 @@ oom: g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM, g_strerror (ENOMEM))
===================================
PATCH COMMAND: patch -p3 -g0 -E --no-backup-if-mismatch < /usr/local/portage/xfce-extra/exo/files/alt-exo-iocharset.patch
===================================
missing header for unified diff at line 5 of patch
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/exo-mount/exo-mount-hal.c b/exo-mount/exo-mount-hal.c
|index 791a536..4b130c3 100644
|--- a/exo-mount/exo-mount-hal.c
|+++ b/exo-mount/exo-mount-hal.c
--------------------------
No file to patch. Skipping patch.
patch: **** malformed patch at line 14: @@ -616,6 +618,30 @@ oom: g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM, g_strerror (ENOMEM))
===================================
PATCH COMMAND: patch -p4 -g0 -E --no-backup-if-mismatch < /usr/local/portage/xfce-extra/exo/files/alt-exo-iocharset.patch
===================================
missing header for unified diff at line 5 of patch
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/exo-mount/exo-mount-hal.c b/exo-mount/exo-mount-hal.c
|index 791a536..4b130c3 100644
|--- a/exo-mount/exo-mount-hal.c
|+++ b/exo-mount/exo-mount-hal.c
--------------------------
No file to patch. Skipping patch.
patch: **** malformed patch at line 14: @@ -616,6 +618,30 @@ oom: g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOMEM, g_strerror (ENOMEM))
В xfce-extra/exo-0.3.100 та
В xfce-extra/exo-0.3.100 та же проблема. Патча пока нету, либо я его не нашел.
nameloss написал(а):Проблема
Я не знаю, что такое exo, мне и не интересно.
Прежде чем пользовать всякие кривые тулзы, попробуйте ВРУЧНУЮ подмонтировать флешку. В случае наблюдения всяких ???? вместо русских и прочих букв, в опции монтирования добавьте utf8. К примеру, в fstab это будет примерно так:
/dev/cdrom /mnt/cdrom auto user,noauto,utf8 0 0
Если подобное решит вашу проблему, то вы будете понимать, куда и где рыть в этом exo или ещё где-то дальше.
XFCE automount encoding
Можно попробовать следующий вариант:
Прописать /etc/xdg/xfce4/mount.rc что-то типа (в соотв-ие разделы):
[vfat]
uid=
shortname=winnt
codepage=866
noexec=true
showexec=true
utf8=true
umask=000
# FreeBSD specific option
longnames=true
[iso9660]
uid=
iocharset=utf8
#iocharset=cp1251
utf8=true
(Взято из http://unixforum.org/index.php?showtopic=44691)