Directorio de inicio encriptado de Ubuntu | Errno 36 Nombre del archivo demasiado largo

Trabajando en un raspador / araña python y encontré una URL que supera el límite de caracteres con el IOError titulado. Al usar httplib2 y cuando bash recuperar la URL, recibo un error de nombre de archivo demasiado largo. Prefiero tener todos mis proyectos dentro del directorio de inicio ya que estoy usando Dropbox. ¿De todos modos, sobre este problema o debo configurar mi directorio de trabajo fuera de casa?

El hecho de que el nombre de archivo que es demasiado largo comience con '.cache/www.example.com' explica el problema.

httplib2 opcionalmente almacena en caché las solicitudes que realice. Has habilitado el almacenamiento en caché y le has dado .cache como el directorio del caché.

La solución fácil es poner el directorio de caché en otro lugar.

Sin ver su código, es imposible decirle cómo solucionarlo. Pero debería ser trivial. La documentación para FileCache muestra que toma un dir_name como primer parámetro.

O, alternativamente, puede pasar una función safe que le permite generar un nombre de archivo desde el URI, anulando el valor predeterminado. Eso le permitiría generar nombres de archivos que se ajusten al límite de 144 caracteres para fs cifrados con Ubuntu.

O, alternativamente, puede crear su propio objeto con la misma interfaz que FileCache y pasarlo al objeto Http para usarlo como caché. Por ejemplo, podría usar tempfile para crear nombres de archivos aleatorios y almacenar una asignación de URL a nombres de archivos en una base de datos anydbm o sqlite3 .

Una alternativa final es simplemente desactivar el almacenamiento en caché, por supuesto.

Probablemente esté llegando a la limitación del sistema de archivos encriptado, que permite hasta 143 caracteres en el nombre del archivo.

Aquí está el error: https://bugs.launchpad.net/ecryptfs/+bug/344878

La solución por ahora es usar cualquier otro directorio fuera de su directorio de inicio cifrado. Para volver a comprobar esto:

 mount | grep ecryptfs 

y ver si su directorio de casa está en la lista. Si ese es el caso, use algún otro directorio anterior o cree un nuevo directorio de inicio sin usar cifrado.

Como aparentemente ha pasado '.cache' al constructor httplib.Http , debe cambiar esto a algo más apropiado o deshabilitar el caché.