yar229 / WebDavMailRuCloud

WebDAV cloud.mail.ru ...& Yandex.Disk | WebDAV Облако Mail.Ru Сетевой Диск
MIT License
485 stars 58 forks source link

ошибки на минте 18.2 #154

Closed admzzz closed 4 years ago

admzzz commented 5 years ago
~/WebDavMailRuCloud $ mono wdmrc.exe -p 881
  WebDAVCloudMailRu: WebDAV emulator for Cloud.mail.ru
  v.1.10.4.1
  yar229@yandex.ru
[1]: OS Version: Unix 4.15.0.46
[1]: CLR: Mono 4.2.1 (Debian 4.2.1.102+dfsg2-7ubuntu4)
[1]: User interactive: False
[1]: Version: 1.10.4.1
[1]: Max threads count: 5
[1]: Cloud protocol: WebM1Bin
[1]: Cache listings, sec: 30
[1]: List query folder depth: 1

Unhandled Exception:
System.Net.Sockets.SocketException: Access denied
  at System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) <0x4053bc60 + 0x000ef> in <filename unknown>:0 
  at System.Net.EndPointListener..ctor (System.Net.IPAddress addr, Int32 port, Boolean secure) <0x40538090 + 0x00147> in <filename unknown>:0 
  at System.Net.EndPointManager.GetEPListener (System.String host, Int32 port, System.Net.HttpListener listener, Boolean secure) <0x40537bf0 + 0x002d3> in <filename unknown>:0 
  at System.Net.EndPointManager.AddPrefixInternal (System.String p, System.Net.HttpListener listener) <0x40535f80 + 0x000c3> in <filename unknown>:0 
  at System.Net.EndPointManager.AddListener (System.Net.HttpListener listener) <0x405359d0 + 0x00147> in <filename unknown>:0 

Unhandled Exception:
System.Net.Sockets.SocketException: Access denied
  at System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) <0x4053bc60 + 0x000ef> in <filename unknown>:0 
  at System.Net.EndPointListener..ctor (System.Net.IPAddress addr, Int32 port, Boolean secure) <0x40538090 + 0x00147> in <filename unknown>:0 
  at System.Net.EndPointManager.GetEPListener (System.String host, Int32 port, System.Net.HttpListener listener, Boolean secure) <0x40537bf0 + 0x002d3> in <filename unknown>:0 
  at System.Net.EndPointManager.RemovePrefixInternal (System.String prefix, System.Net.HttpListener listener) <0x4053c9e0 + 0x000c3> in <filename unknown>:0 
  at System.Net.EndPointManager.RemoveListener (System.Net.HttpListener listener) <0x4053c8c0 + 0x0008b> in <filename unknown>:0 
  at System.Net.HttpListener.Close (Boolean force) <0x4053c870 + 0x0001f> in <filename unknown>:0 
  at System.Net.HttpListener.Stop () <0x4053c830 + 0x0001f> in <filename unknown>:0 
  at YaR.CloudMailRu.Console.Payload.Run (YaR.CloudMailRu.Console.CommandLineOptions options) <0x40512800 + 0x0074b> in <filename unknown>:0 
  at YaR.CloudMailRu.Console.Program+<>c.<Main>b__1_0 (YaR.CloudMailRu.Console.CommandLineOptions options) <0x404e5240 + 0x004cf> in <filename unknown>:0 
  at CommandLine.ParserResultExtensions.MapResult[TSource,TResult] (CommandLine.ParserResult`1 result, System.Func`2 parsedFunc, System.Func`2 notParsedFunc) <0x404e5160 + 0x0005f> in <filename unknown>:0 
  at YaR.CloudMailRu.Console.Program.Main (System.String[] args) <0x404b0f50 + 0x001bb> in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.Net.Sockets.SocketException: Access denied
  at System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) <0x4053bc60 + 0x000ef> in <filename unknown>:0 
  at System.Net.EndPointListener..ctor (System.Net.IPAddress addr, Int32 port, Boolean secure) <0x40538090 + 0x00147> in <filename unknown>:0 
  at System.Net.EndPointManager.GetEPListener (System.String host, Int32 port, System.Net.HttpListener listener, Boolean secure) <0x40537bf0 + 0x002d3> in <filename unknown>:0 
  at System.Net.EndPointManager.RemovePrefixInternal (System.String prefix, System.Net.HttpListener listener) <0x4053c9e0 + 0x000c3> in <filename unknown>:0 
  at System.Net.EndPointManager.RemoveListener (System.Net.HttpListener listener) <0x4053c8c0 + 0x0008b> in <filename unknown>:0 
  at System.Net.HttpListener.Close (Boolean force) <0x4053c870 + 0x0001f> in <filename unknown>:0 
  at System.Net.HttpListener.Stop () <0x4053c830 + 0x0001f> in <filename unknown>:0 
  at YaR.CloudMailRu.Console.Payload.Run (YaR.CloudMailRu.Console.CommandLineOptions options) <0x40512800 + 0x0074b> in <filename unknown>:0 
  at YaR.CloudMailRu.Console.Program+<>c.<Main>b__1_0 (YaR.CloudMailRu.Console.CommandLineOptions options) <0x404e5240 + 0x004cf> in <filename unknown>:0 
  at CommandLine.ParserResultExtensions.MapResult[TSource,TResult] (CommandLine.ParserResult`1 result, System.Func`2 parsedFunc, System.Func`2 notParsedFunc) <0x404e5160 + 0x0005f> in <filename unknown>:0 
  at YaR.CloudMailRu.Console.Program.Main (System.String[] args) <0x404b0f50 + 0x001bb> in <filename unknown>:0
admzzz commented 5 years ago

сам себе и отвечу: ошибка в инструкции, запускать надо через sudo

VADemon commented 5 years ago

Запускать пришлось через sudo, потому-что порт 884. Для портов <1024 нужны права рута на никсах (о чем лог и сказал). Лучше разрешить биндить без прав рута на этом порту, либо сделать проброс с iptables, чтобы не запускать без надобности с правами рута.

admzzz commented 5 years ago

VADemon, а можно попросить разжевать бинденье без рутовых прав?

перезапустил без рута на 1884 порту, приконнектился успешно из немо 3.6.5

т.е. вопросов 2: 1) как замаунтить приконнекченное в директорию? дело аналогично нагугленным примерам для яндекса, получаю отлуп

/sbin/mount.davfs: Mounting failed.
SSL handshake failed: SSL error: unknown protocol

2) как запустить синхронизацию /home/admz/Documents/mail.ru в облако (там более старые версии всех файлов, не обновлявшиеся с момента убиения линуксового клиента)?

VADemon commented 5 years ago

Честно, не ко мне. Я пользуюсь этим облаком в "режиме FTP" и пока ещё с винды.

1) SSL error: unknown protocol наверно проскакивает, потому что прокси слушает по http:// а не https:// с шифрованием. Так что пускай подключается без шифрования по URL.

2) Синхронизацию файлов разве что по времени последнего изменения можно провести, я уже говорил, что как FTP пользуюсь по Cyberduck - клиент не очень нравится, но сойдет для этого.

yar229 commented 5 years ago
  1. как замаунтить приконнекченное в директорию?

Что-то вроде sudo mount --rw -t davfs http://127.0.0.1:1884 /mnt/dav/ -o uid=local_user_name

Под davfs с некоторыми клиентами (см. #152) будет тормозить листинг больших каталогов, если столкнулись с такой ситуацией - при запуске wdmrc укажите ключ --cache-listing-depth 2 или даже 3

admzzz commented 5 years ago

тормозить ...хммм, это называется "висеть", вообще-то... ;-) даже при --cache-listing-depth 3 качает со скоростью 5 мб/сек более 15мин, а отрисовывает в файлменеджере только после убийства wdmrc... ...причём в идущем в терминале непрерывном выхлопе wdmrc видно, что застревает на 2хгигабайтных файлах бэкапа (бэкап был побит до загрузки в облако на куски по 1.95гб, чтоб не было отлупа по размеру), достаточно быстро проскакивая, например, 6тигигабайтную директорию с фотографиями и полуторагигабайтный фильм...

с некоторыми клиентами - от клиента, похоже, тормоза не зависят: перепробовал немо, миднайт коммандера, бийандкампээ - сэйм шит... ...а если не маунтить, всё мгновенно/летает...

ещё варианты ключей/действий есть? да, указанный в readme.md rclone к мэйлру нынче/ещё прикручиваем, или уже всё?

yar229 commented 5 years ago

хм. Даже и не знаю, что предположить. Если есть идеи, как воспроизвести - поделитесь

admzzz commented 5 years ago

yar229, с моей точки зрения, камень преткновения - именно нежмущиеся (из-за макс. компрессии - ключ Z22 у fsarchiver'а, статический бинарник последней ( у старых даже ключа такого нету, только z9 ;-) ) версии скачиваем с его сайта) файлы по 1.95гб

ls -lFa /home/admz/Documents/mail.ru/*.f*
-rw-r--r-- 1 root root 2097104301 Mar 13 09:39 /home/admz/Documents/mail.ru/mysystem.18.2.f01
-rw-r--r-- 1 root root  669442476 Mar 13 09:49 /home/admz/Documents/mail.ru/mysystem.18.2.f02
-rw-r--r-- 1 root root 2096938822 Mar 13 09:13 /home/admz/Documents/mail.ru/mysystem.18.2.fsa

до .f01 и f.02 дело не доходит - висит на *.fsa. попробуйте закинуть что-то подобное такого же размера на мэйлру, а потом примаунтить... ...Вы про rclone не ответили...

yar229 commented 5 years ago

Скорее всего на выходных попробую, но как-то странно...

rclone давно не проверял, но вроде как ничего не должно было поменяться. Вот тут обсуждали - #149

admzzz commented 5 years ago

прочтя указанную ссылку, полез искать ~/.rclone, не нашёл (но нашлась директория ~/.config/rclone/), шутки ради взглянул в /home/admz/.davfs2/cache/127.0.0.1+home-admz-davfs+admz и прифигел: там валяются скачанные копии файлов из облака... причина зависания теперь понятна - скачивались 1.95гб, я ни разу не дождался конца процесса...

это тотальное скачивание как-то отключаемо? ...по-хорошему так быть принципиально не должно...

апдейт: уже хочется матом, в /var/cache/davfs2/127.0.0.1+home-admz-davfs+admz/ те же самые файлы (т.к. иногда маунтил от рута, иногда через sudo)...

yar229 commented 5 years ago

У меня davfs2 только листинги кэшировал, сами файлы не тянул Варианты:

admzzz commented 5 years ago

за ссылку, конечно, фэнкс, но я это уже читал, прежде чем написать сюда, и уменьшать кэш пробовал - безмазняк. печальная констатация: https://www.linux.org.ru/forum/general/9139954?cid=9145749

единственное, что пока нагуглилось, - сменить davfs с neon'ом на davix (но я про него не читал ещё, а доки на этом сайте ведут в 403).

yar229 commented 5 years ago

Мда, печаль какая-то. А вот это не смотрели? https://github.com/pantheon-systems/fusedav

Стандартный fusedav старый, как мамонт, совместимость wdmrc с ним надо допиливать, к сожалению, даже таска есть #96, но, т.к. никому это не надо было, не стал доводить до рабочего варианта

admzzz commented 5 years ago

застрял со сборкой fusedav'a: несмотря на ~/build/leveldb/build $ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr .. && cmake --build . и

dpkg -L leveldb
/.
/usr
/usr/include
/usr/include/leveldb
/usr/include/leveldb/comparator.h
/usr/include/leveldb/c.h
/usr/include/leveldb/db.h
/usr/include/leveldb/iterator.h
/usr/include/leveldb/export.h
/usr/include/leveldb/cache.h
/usr/include/leveldb/filter_policy.h
/usr/include/leveldb/write_batch.h
/usr/include/leveldb/table_builder.h
/usr/include/leveldb/env.h
/usr/include/leveldb/options.h
/usr/include/leveldb/dumpfile.h
/usr/include/leveldb/status.h
/usr/include/leveldb/table.h
/usr/include/leveldb/slice.h
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/cmake
/usr/lib/x86_64-linux-gnu/cmake/leveldb
/usr/lib/x86_64-linux-gnu/cmake/leveldb/leveldbConfigVersion.cmake
/usr/lib/x86_64-linux-gnu/cmake/leveldb/leveldbConfig.cmake
/usr/lib/x86_64-linux-gnu/cmake/leveldb/leveldbTargets.cmake
/usr/lib/x86_64-linux-gnu/cmake/leveldb/leveldbTargets-release.cmake
/usr/lib/x86_64-linux-gnu/libleveldb.a

он ругается

~/build/fusedav $ ./configure CFLAGS='-g -O0' LEVELDB_LIBS=/usr/lib/x86_64-linux-gnu
......................................................................................................
checking pkg-config is at least version 0.9.0... yes
checking for SYSTEMD... yes
checking for LEVELDB... no
configure: error: Package requirements ( leveldb ) were not met:

No package 'leveldb' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables LEVELDB_CFLAGS
and LEVELDB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

причём в config.log написано, что он видит всё правильно: ac_cv_env_PKG_CONFIG_PATH_value=/opt/qt511/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig

admzzz commented 5 years ago

правильный метод - https://github.com/pantheon-systems/fusedav/issues/185#issuecomment-140834412 , после этого нормально наконец-то отконфигурилось, но:

/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libleveldb.a(db_impl.cc.o): undefined reference to symbol '_ZNSt18condition_variable10notify_oneEv@@GLIBCXX_3.4.11'
/usr/bin/ld: //usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:392: recipe for target 'fusedav' failed
make[2]: *** [fusedav] Error 1
make[2]: Leaving directory '/home/admz/build/fusedav/src'
Makefile:389: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/admz/build/fusedav'
Makefile:330: recipe for target 'all' failed
make: *** [all] Error 2

мне с таким не справиться, а разработчики в ответ на просьбу о prerequisits for debian отвечают, что поддерживают только федору.

VADemon commented 5 years ago

Судя по ошибке в интернете, старая версия libstdc++, Debian всегда выдерживает старые версии пакетов, чтобы без надобности не обновляться.

Попробуй как-нибудь установить/слинковаться с новой версией библиотеки, видимо новое добавили.

yar229 commented 5 years ago

Этот проект вроде как активно пишется, было бы здорово, если бы кто-нибудь таки опробовал его https://github.com/pantheon-systems/fusedav и отписался, сам я слишком тупой :)

admzzz commented 5 years ago

yar229, а нафига? ;-) "когда я слышу слова снэп, флэтпак или докер, рука сама выхватывает кольт"

yar229 commented 5 years ago

@admzzz , просто что-то печально всё. Оригинальный fusedav старый и кривой как сабля, с davfs2 и его игнорированием размера кэша тоже как-то не очень, чем ещё можно прилепить вебдав в фс?

admzzz commented 5 years ago

дурацкий вопрос: а sshfs осмысленно пробовать, или вообще не в ту степь подумалось?

...да, моя ошибка сборки (см. выше) DSO missing from command line чинится с помощью ./configure LIB='-pthread' (нарылось в процессе собирания OpenSSH_8.0p1 с LibreSSL 2.9.1)