[Решено] duplicity: UnicodeEncodeError: 'ascii' codec can't encode characters

При попытке запустить duplicity получаю:

~/Desktop/ duplicity new file:///home/share/Backup/new
Локальные и удалённые метаданные синхронизированы, синхронизация не требуется.
Время последней полной резервной копии: нету
Traceback (most recent call last):
  File "/usr/bin/duplicity", line 1489, in <module>
    with_tempdir(main)
  File "/usr/bin/duplicity", line 1483, in with_tempdir
    fn()
  File "/usr/bin/duplicity", line 1332, in main
    do_backup(action)
  File "/usr/bin/duplicity", line 1414, in do_backup
    globals.gpg_profile.passphrase = get_passphrase(1, action)
  File "/usr/bin/duplicity", line 168, in get_passphrase
    pass1 = getpass.getpass(_("GnuPG passphrase:")+" ")
  File "/usr/lib/python2.7/getpass.py", line 71, in unix_getpass
    passwd = _raw_input(prompt, stream, input=input)
  File "/usr/lib/python2.7/getpass.py", line 128, in _raw_input
    prompt = str(prompt)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)

однако, после
█▓▒░[email protected]█▓▒░ Пн фев 03 03:57:05
~/Desktop/ export LANG=en_US.UTF-8
█▓▒░[email protected]█▓▒░ Пн фев 03 03:57:19
~/Desktop/ export LC_ALL=en_US.UTF-8
...всё работает
█▓▒░[email protected]█▓▒░ Mon Feb 03 03:57:34pm
~/Desktop/ duplicity new file:///home/share/Backup/new
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
GnuPG passphrase:
Retype passphrase to confirm:
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1391432269.55 (Mon Feb  3 15:57:49 2014)
EndTime 1391432269.70 (Mon Feb  3 15:57:49 2014)
ElapsedTime 0.15 (0.15 seconds)
SourceFiles 101
SourceFileSize 4096 (4.00 KB)
NewFiles 101
NewFileSize 4096 (4.00 KB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 101
RawDeltaSize 0 (0 bytes)
TotalDestinationSizeChange 1036 (1.01 KB)
Errors 0
-------------------------------------------------
Нативная локаль какая?
PGP 0x31361F01
arcanisrepo
~/ locale
LANG=ru_RU.UTF-8
LC_CTYPE=ru_RU.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=
че т я поковырял сурцы, похоже на баг апстрима. 3 варианта.
1) запускать так
LC_ALL=en_US.UTF-8 duplicity
(можн через шеллрц алиас прописать)
2) привести 168 строку файла /usr/bin/duplicity к такому виду:
pass1 = getpass.getpass("GnuPG passphrase:")
(нужно делать после каждого обновления)
3) ждать пока само пройдет
PGP 0x31361F01
arcanisrepo
Спасибо, arcanis,

arcanis
че т я поковырял сурцы, похоже на баг апстрима. 3 варианта.
1) запускать так
LC_ALL=en_US.UTF-8 duplicity
(можн через шеллрц алиас прописать)
Что-то подобное я и делал.

arcanis
2) привести 168 строку файла /usr/bin/duplicity к такому виду:
pass1 = getpass.getpass("GnuPG passphrase:")
(нужно делать после каждого обновления)
А что в контексте Python'а делает эта замена?

arcanis
3) ждать пока само пройдет
Попробую их багзиллу «пнуть» ;)
конструкция такого типа:
_("GnuPG passphrase:")+" "
означает, что фраза между символами _(" и ") будет искаться в файлах перевода. Дальше к этой фразе еще в конце добавляется пробел. Я глянул сам файл перевода (/usr/share/locale/ru/LC_MESSAGES/duplicity.mo), вроде ничего предосудительного не нашел. В сурцах как бы тоже
PGP 0x31361F01
arcanisrepo
В их багзилле я не первый с подобной проблемой, но внятного решения я там не увидел (так как не программист), поэтому пока буду использовать алиас.
Lupo_Alberto
поэтому пока буду использовать алиас.
echo "alias duplicity='LC_ALL=en_US.UTF-8 duplicity'" > /etc/profile.d/duplicity.sh
chmod 755 /etc/profile.d/duplicity.sh
После сегодняшнего обновления duplicity начал «понимать по-русски».
 
Зарегистрироваться или войдите чтобы оставить сообщение.