Recientemente ha salido una nueva versión del gestor de descarga directa Tucan.
Entre las novedades y mejoras que incluye la versión 0.3.9 se encuentra una que echaba especialmente de menos (también me gusta el soporte desde la linea de comandos o CLI) y no es otra que el apagado automático del equipo al finalizar las descargas que estuviesen programadas en la cola.
Aunque es fácil de hacer utilizando el comando shutdown requiere sacar la bola de cristal para adivinar el tiempo que tardará en finalizar (nada como contar con dicha funcionalidad de serie en el programa).
El problema es que en Linux no funciona correctamente y aquí quiero compartir cómo solucionarlo.
Modificando el código del programa
Resulta que tras probarlo tanto en Ubuntu 9.04 como en Debian Lenny encuentro que no funcionaba debido al uso incorrecto del comando shutdown.
Si observamos la línea 54 del fichero tucan-0.3.9/ui/gtk/shutdown.py observamos lo siguiente:
if subprocess.call([«sudo», «-n», «shutdown», «h», «now»], stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0:
cuando
- ni sudo admite el parámetro -n
- ni shutdown puede lanzarse sin poner delante del parámetro h un signo – (debería usarse como -h)
En definitiva, dicha línea 54 debe quedar del siguiente modo
if subprocess.call([«sudo», «shutdown», «-h», «now»], stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0:
Para aquellos que no quieran editar manualmente el código (y para el autor de Tucan) publico patch con los cambios realizados al fichero shutdown.py que puede ser utilizado tal y como explicamos en el artículo Crear y aplicar parches en Ubuntu Linux.
Explicando cómo habilitar el shutdown en Linux
Aunque en la web de Tucan explican someramente cómo hacerlo opto por describir el proceso para aquellos que no entiendan las explicaciones que ofrece el autor.
Tan sencillo como lanzar un
sudo visudo
y, al final del archivo añadir la línea
jasvazquez ALL=NOPASSWD: /sbin/shutdown
sustituyendo jasvazquez por vuestro nombre de usuario 😉
Yo personalmente he optado por incluirlo en la sección destinada para tal efecto en el archivo /etc/sudoers pero es cuestión de gustos 😉
Conclusión
A disfrutar de este fantástico programa (lo prefiero a otras alternativas como jDownloader por los pocos recursos que consume al no depender de la máquina virtual de Java).
Seguramente el fallo sera corregido en la próxima versión que publiquen (lo mismo hasta tienen en cuenta el parche que modestamente publico como solución ;)) pero, de momento, puede que le evite a más de uno algún que otro cabezazo (como los que me he dado yo).
Gracias por notificarlo. El problema se detectó a las pocas horas de salir la versión 0.3.9 y se solucionó ya en la versión de desarrollo, se puede ver con el comando:
$ svn diff -c 1272 https://forja.rediris.es/svn/cusl3-tucan/
Sin embargo al ser algo del «core» no estará disponible hasta la salida de la próxima versión. Ya nos hemos movido para que el problema no llegue a los paquetes oficiales de las distros.
Si alguien quiere Tucan en paquete .deb (y sin este problema) lo puede descargar del repositorio SVN oficial:
https://forja.rediris.es/svn/cusl3-tucan/trunk/packages/debian/tmp/tucan_0.3.9-1_all.deb
Me gustaMe gusta
Respecto al parámetro «-n»: sudo si admite ese parámetro y sirve para lo siguiente (man sudo):
-n The -n (non-interactive) option prevents sudo from prompting the user for a password. If a password is required for the command to run, sudo will display an error messages and exit.
Me gustaMe gusta
La falta de uso de dicho parámetro 😉 (no lo vi con sudo –help).
Mejor, que mejor. Lo único que faltaba era el simple «-» delante del parámetro (poca cosa).
Un saludo.
Me gustaMe gusta
Perdón, pero el problema no está resuelto del todo, para Debian y las basadas en RedHat se usa «su» en vez de «sudo».
Así que habría que hace un nuevo if en el fichero y lo de sudo visudo no funciona, ¿cómo sería con «su»?
Gracias
Me gustaMe gusta
Yo uso también Debian Lenny (la distribución no debería influir si realmente es Linux) y con su lo que haces es convertirte en cualquier usuario (normalmente root).
Si usas su deberás convertirte en root y LUEGO lanzar el comando shutdown pero no en la misma línea (de ahí que se recomiende el uso de sudo)
Me gustaMe gusta
Pero sudo no viene instalado en Mandriva y habría que ponerlo como dependencia en el rpm, además aun instalándolo hay que configurarlo después para que funcione, y eso no es algo que esté al alcance de nuevos usuarios en Linux, por eso debería de poder existir en Tucan una línea para «su», vamos creo 😉
Me gustaMe gusta
De todos modos @Cristobal ten en cuenta que el «estándar» es ceder derechos de administración a través de sudo (esté o no instalado en el sistema) en lugar de ofrecer a cualquier usuario la posibilidad de ser root.
Siempre podrías optar por usar el setuid pero dar la clave de root a cualquiera considero que es una barbaridad, ¿no te parece?
Un saludo
Me gustaMe gusta