Masimus77
Usuario (Paraguay)
Desde que Adobe Flash Player dejo de actualizar completamente para Gnu-linux y empezar a lanzar modificaciones de seguridad nada mas, comenzaron los problemas, que el vídeo se corta, que la pantalla aparece negra que tengo la pantalla en 3D distorsionada etc. Pero la mayoría de todos esos problemas para no decir en su totalidad sucede en el Firefox no encontré ningún problema en el Opera y muchos menos en el Google Chrome. Los problemas con el Flash Player ocurren al actualizar el Firefox como el núcleo por ejemplo reescribes la configuración del navegador pero no tus opciones de vídeo como por ejemplo las transparencias, lo que hace que el plugin falle al renderizar la imagen. La primera forma de solucionarlo es abrimos la terminal y vamos a editar la bin de firefox dijo:gksu gedit /usr/bin/firefox Debajo de la linea donde dice dijo:#!/bin/sh Añadir: dijo:export XLIB_SKIP_ARGB_VISUALS=1 Guardamos y Reiniciamos Lastimosamente esta opción la tendremos que hacer cada vez que el Firefox se actualice Para que no se pierda la linea que agregamos después de una actualización del Firefox vamos a crear un script #! /bin/sh export XLIB_SKIP_ARGB_VISUALS=1 exec firefox "$@" guardamos el script en el directorio /usr/bin ( por ejemplo con el nombre /usr/bin/script-firefox) ; le damos permisos de ejecución y listo cuando se actualice el Firefox no tendremos los mismos problemas con el Flash Player. La segunda opción es instalándole un complemento que sustituye el empotrado del vídeo, que hace que lo podamos ver desde otros programas directamente, el complemento se llama FlashVideoReplacer lo podemos añadir desde aca https://addons.mozilla.org/es/firefox/addon/flashvideoreplacer/ Ojala que Mozilla le encuentre una solución a sus actualizaciones con respecto a las opciones de preferencias de video
Secure Shell FileSystem (SSHFS) es un sistema de archivos para linux con una implementación Fuse, que opera sobre archivos en un equipo remoto usando un entorno seguro de acceso. Montamos el SSHFS en el equipo local , la implementación hace uso del módulo del kernel FUSE. Para que nos sirve para que el usuario final pueda interactuar con archivos remotos estando en un servidor SSH, viéndolos como si estuvieran en su equipo local. En el equipo remoto se utiliza el subsistema SFTP de SSH. 1. Instalando sshfs # pacman -S sshfs 2. Cargar el módulo Fuse # modprobe fuse 3. Comprobar si esta activado # systemctl list-units --all|grep fuse Debe devolver algo similar a: sys-module-fuse.device loaded active plugged /sys/module/fuse 4. Montar la carpeta remota usando sshfs user: nuestro usuario host: la dirección IP o dominio del equipo al que queremos conectarnos. Carpeta: el nombre de la carpeta que queremos compartir Sintaxis: $ mkdir ~/Carpeta $ sshfs USER@HOST:/tmp ~/Carpeta Ejemplo: $ mkdir ~/Pelis $ sshfs [email protected]:/tmp ~/Pelis El comando anterior hará que la carpeta /tmp en el servidor remoto sea montada como ~/Carpeta en el equipo local. La copia, modificación e eliminación de cualquier archivo en esta carpeta dará lugar a una copia transparente sobre la red, utilizando SFTP. Una vez finalizado el trabajo con el sistema de archivos remoto, podemos desmontar la carpeta remota mediante el siguiente comando: $ fusermount -u ~/Carpeta Si queremos montar un sistema de archivos remoto a través de /etc/fstab. Antes de esto, crearemos una clave SSH en el servidor: Pasos: 1. Creamos la clave en el servidor: ssh-keygen -t rsa -C "$(whoami)@$(hostname)-$(date -I)" 2. Ahora, desde el cliente, copiamos la clave: ssh-copy-id -i ~/.ssh/id_rsa.pub arch@mass 3. En el archivo /etc/fuse.conf, descomentar: user_allow_other 4. Añadimos en el /etc/fstab (en una sola línea): arch@mass:~/Vídeos ~/Pelis fuse.sshfs noauto,x-systemd.automount,_netdev,users,idmap=user,IdentityFile=/home/arch/.ssh/id_rsa,allow_other,reconnect 0 0 5. Montar y desmontar: $ mount ~/Pelis $ umount ~/Pelis Tras reiniciar, se montará automáticamente al acceder a la carpeta.

Los entornos de escritorio son uno de los temas más polémicos en el mundo del software libre, pero para ventaja nuestra, como usuarios de Arch Linux, no tenemos el problema de que nuestra distribución venga con un entorno específico instalado, somos nosotros quienes decidimos cual ponerle, sin afectar en nada al sistema, con dependencias, o problemas gráficos. En esta guía solo explicaré la instalación de los entornos más comunes, aclarando que la instalación de otros, cuya lista pueden ver en el artículo indicado de la wiki oficial, es muy similar y sencilla, lo cual sería una redundancia, este tutorial incluye: KDE GNOME Xfce LXDE Mate Unity Openbox Nota: si lo que quieren es un entorno totalmente funcional y tienen una buena máquina, mi recomendación es instalar solo los que están en los repositorios oficiales para obtener la máxima estabilidad posible, KDE y GNOME son los más completos, pero también está Xfce que es liviano y no exige tantos recursos de hardware. Ten en cuenta que para seguir estos pasos necesitas usar la cuenta "root" o si lo estás haciendo desde tu usuario, debes usar "sudo" al inicio de cada comando. Antes de instalar cada entorno, realiza una actualización del sistema, con el comando: pacman -Syu Como ultima recomendación, NO es ideal instalar varios entornos gráficos, elige mejor uno, instalar varios puede generar una enorme inestabilidad en el sistema. KDE La instalación es muy sencilla, desde aquí Arch ya empieza a ser más automatizado en todo lo que son instalaciones. Para hacer una instalación completa, solo hay que poner el "meta paquete" y la traducción (Sin la opción "--noconfirm" pide seleccionar los repositorios, para un mismo archivo, para ahorrarnos eso le añado al final): pacman -S kde-meta kde-l10n-es --noconfirm Si se va a usar redes wifi, se debe instalar el "networkmanager" y la GUI (interfáz gráfica) para KDE del mismo: pacman -S networkmanager kdeplasma-applets-networkmanagement Ahora se procede a activar el "gestor de sesiones" (Login gráfico), KDE instala el suyo propio, llamado "KDM": systemctl enable kdm.service Si instalaste el "networkmanager" porque usas wifi, y seguiste ese tutorial, eso significa que activaste la opción para auto-conectarse al wifi al encender el PC, debemos detener y desactivar ese servicio: systemctl stop net-auto-wireless.service systemctl disable net-auto-wireless.service Y activar el que acabamos de instalar: systemctl enable NetworkManager Ahora reiniciamos (Comando: reboot), y ya tendremos KDE totalmente instalado, como detalle, el entorno configura un teclado por defecto en ingles, para configurarlo solo debemos dar click al botón del menú principal "K", y en el recuadro para buscar escribir "Teclado" luego abrir la aplicación que lleva ese mismo nombre, y como subtitulo "preferencias de teclado", luego ir a la pestaña "distribuciones", ahí activar la opción "Configurar distribuciones", y ahí pueden eliminar la de ingles, y añadir la que prefieran "Español o Latino". GNOME Instalación completa: pacman -S gnome gnome-extra --noconfirm Si se va a usar redes wifi, se debe instalar el "networkmanager" y la GUI (interfáz gráfica) para GNOME del mismo: pacman -S networkmanager network-manager-applet Ahora se procede a activar el "gestor de sesiones" (Login gráfico), GNOME instala el suyo propio, llamado "GDM": systemctl enable gdm.service Si instalaste el "networkmanager" porque usas wifi, y seguiste ese tutorial, eso significa que activaste la opción para auto-conectarse al wifi al encender el PC, debemos detener y desactivar ese servicio: systemctl stop net-auto-wireless.service systemctl disable net-auto-wireless.service Y activar el que acabamos de instalar: systemctl enable NetworkManager Ahora reiniciamos (Comando: reboot), y ya tendremos GNOME totalmente instalado, como detalle, el entorno configura un teclado por defecto en ingles, para configurarlo solo debemos dar click en "Actividades", luego en "Teclear para buscar..." escribir: "Idioma", abrir la aplicación que sale como resultado "Región e idioma", una vez abierta vamos a la pestaña "Fuente de entrada", eliminamos la de ingles, o todas las que hayan si no son las que deseamos, y con el botón "+" añadimos la deseada. Xfce Instalación completa: pacman -S xfce4 xfce4-goodies --noconfirm Este entorno no trae gestor de sesiones, podemos instalar el mismo de Gnome, o cualquier otro de vuestra preferencia, la verdad cualquier debería funcionar correctamente: pacman -S gdm Procedemos a activarlo: systemctl enable gdm.service Si se va a usar redes wifi, se debe instalar el "networkmanager" y la GUI (interfáz gráfica) para GNOME (funciona la misma en Xfce) del mismo: pacman -S networkmanager network-manager-applet Si instalaste el "networkmanager" porque usas wifi, y seguiste ese tutorial, eso significa que activaste la opción para auto-conectarse al wifi al encender el PC, debemos detener y desactivar ese servicio: systemctl stop net-auto-wireless.service systemctl disable net-auto-wireless.service Y activar el que acabamos de instalar: systemctl enable NetworkManager Ahora reiniciamos (Comando: reboot), y ya tendremos Xfce totalmente instalado, te aparecerá la ventana de login, una vez seleccionado el nombre de usuario, antes de introducir tu contraseña, asegúrate de donde dice "GNOME" cambiarlo a "Sesión de Xfce" para que quede como predeterminado, al iniciar sesión te preguntará si quieres un panel vacío o uno predeterminado, recomiendo usar el predeterminado para que tengas un entorno totalmente funcional. Como en todos los demás el teclado queda configurado en ingles, para ponerlo según vuestra preferencia debéis dar click en "Menú de aplicaciones", luego "configuración" y por último "teclado", en la pestaña "Distribución" debéis desactivar la opción "Usar opciones predeterminadas del sistema", y luego dar click en "Añadir" para agregar el idioma, recomiendo borrar los demás una vez esté añadido. LXDE Instalación completa: pacman -S lxde --noconfirm Si se va a usar redes wifi, se debe instalar el "networkmanager" y la GUI (interfáz gráfica) para GNOME (funciona la misma en LXDE) del mismo: pacman -S networkmanager network-manager-applet Ahora se procede a activar el "gestor de sesiones" (Login gráfico), LXDE instala el suyo propio, llamado "LXDM": systemctl enable lxdm.service Si instalaste el "networkmanager" porque usas wifi, y seguiste ese tutorial, eso significa que activaste la opción para auto-conectarse al wifi al encender el PC, debemos detener y desactivar ese servicio: systemctl stop net-auto-wireless.service systemctl disable net-auto-wireless.service Y activar el que acabamos de instalar: systemctl enable NetworkManager Ahora reiniciamos (Comando: reboot), y ya tendremos LXDE totalmente instalado. NOTA: Hay un pequeño problema, desconozco como se configura el teclado en LXDE, si alguien tiene la respuesta y desea comentarla, estaría excelente, para dejar completa esta guía, nunca he usado este entorno. MATE El entorno no se encuentra en los repositorios oficiales, por lo cual debemos agregar el repositorio especial que lo contiene, editando la configuración de pacman (el gestor de paquetes de Arch Linux): nano /etc/pacman.conf Ve hasta el final y agrega lo siguiente: Server = http://repo.mate-desktop.org/archlinux/$arch Recuerda salir y guardar presionando "Ctrl + X". Ahora actualiza la lista de paquetes: pacman -Syy Realiza la instalación completa: pacman -S mate mate-extras Cuando pregunte "Introducir una selección, por defecto todos", no escriba nada, solo presione "Enter", es posible que consulte si desea omitir algunos archivos, dígale que si desea omitirlos, luego le pregunta que si desea continuar la instalación, le da que si, y la instalación iniciará sin problemas.este entorno trae gestor de sesiones pero da un error de compatibilidad con systemd, podemos instalar el mismo de Gnome, o cualquier otro de vuestra preferencia, la verdad cualquier debería funcionar correctamente (Como MATE es un fork de Gnome2, el GDM funcionará perfecto): pacman -S gdm Ahora si lo activamos: systemctl enable gdm.service Si se va a usar redes wifi, se debe instalar el "networkmanager" y la GUI (interfáz gráfica) para GNOME (funciona la misma en MATE) del mismo: pacman -S networkmanager network-manager-applet Si instalaste el "networkmanager" porque usas wifi, y seguiste ese tutorial, eso significa que activaste la opción para auto-conectarse al wifi al encender el PC, debemos detener y desactivar ese servicio: systemctl stop net-auto-wireless.service systemctl disable net-auto-wireless.service Y activar el que acabamos de instalar: systemctl enable NetworkManager Antes de reiniciar, advierto que MATE no es compatible con "systemd" por ahora (Al menos no lo será hasta su versión 1.6), por lo cual se deben hacer unas cosas extra, antes de reiniciar, para poder tener los botones de apagar, reiniciar, y cerrar sesión, lo primero es instalar: yaourt -S consolekit-git --noconfirm Luego activarlo: systemctl enable console-kit-daemon.service Re-instalar : systemd-sysvcompat pacman -S systemd-sysvcompat Si pide confirmación, selecciona "Si". Ahora reiniciamos (Comando: reboot), y ya tendremos MATE totalmente instalado, te aparecerá la ventana de login, una vez seleccionado el nombre de usuario, antes de introducir tu contraseña, asegúrate de donde dice "GNOME" cambiarlo a "MATE" para que quede como predeterminado, en Sistema > Preferencias > Teclado, podemos configurar la distribución de nuestro teclado de acuerdo a nuestro país, recomiendo eliminar las demás que hayan en la lista. Si escogiste MATE porque te gusta Linux Mint y deseas tener una experiencia similar, sobretodo por el "MintMenu", puedes instalarlo en Arch Linux, desde los repositorios comunitarios: yaourt -S mintmenu --noconfirm Cuando hablo de MintMenu me refiero a esto Para agregarlo al entorno, una vez instalado, debes primero reiniciar el equipo, luego en el panel dar click derecho, y seleccionar la opción "Añadir al panel", en la lista escoger el "MintMenu". Unity Este entorno no se encuentra en los repositorios oficiales, por lo cual debemos agregar el repositorio especial que lo contiene, editando la configuración de pacman (el gestor de paquetes de Arch Linux): nano /etc/pacman.conf Ve hasta el final y agrega lo siguiente: Server = http://unity.xe-xe.org/$arch [unity-extra] Server = http://unity.xe-xe.org/extra/$arch Recuerda salir y guardar presionando "Ctrl + X". Actualiza la lista de paquetes, con: pacman -Syy pacman -Suy Luego instala todo el repositorio "Unity": pacman -S $(pacman -Slq unity) Todos los archivos que pida reemplazar, deben confirmar. Ahora instala todo el repositorio "unity-extra" completo: pacman -S $(pacman -Slq unity-extra) Si pide confirmación en la instalación de "LibreOffice" es el idioma, selecciona el español, normalmente solo es teclear el número "27" (LibreOffice es), para las demás confirmaciones, poner las que seleccione por defecto, presionando enter sin escribir ningún número, luego confirmar todas las solicitudes de reemplazar paquetes que solicite. Nota: Instalando los 2 repositorios completos, queda el sistema con una amplia base de software que viene normalmente en Ubuntu por defecto, incluyendo Firefox, Thunderbird. entre otros, además instala todos los plugins de Unity, que por el contrario en el Ubuntu original no vienen pre-instalados. Ahora hay que activar el gestor de sesiones: systemctl enable lightdm.service Si usamos WiFi, Unity instala por defecto el NetworkManager, debemos detener y desactivar este demonio que se activó durante la instalación base: systemctl stop net-auto-wireless.service systemctl disable net-auto-wireless.service Y activar el que usa Unity: systemctl enable NetworkManager Recomiendo instalar una terminal, puede ser la de GNOME, que es compatible: pacman -S gnome-terminal Ahora reiniciamos (Comando: reboot), y ya tendremos Unity totalmente instalado, como detalle, el entorno configura un teclado por defecto en ingles, para configurarlo solo debemos dar click en "Configuración del sistema" de la barra izquierda, luego en "Región e idioma", una vez abierto vamos a la pestaña "Fuente de entrada", eliminamos la de ingles, o todas las que hayan si no son las que deseamos, y con el botón "+" añadimos la deseada. Openbox Openbox es un gestor de ventanas muy liviano y altamente configurable, con un excelente soporte para diversos estándares,cabe mencionar que el entorno de escritorio LXDE usa a Openbox, pero como todo en linux es configurable lo podemos tener como gestor de ventana independiente vendría a ser un entorno de escritorio muy liviano. Instalación de Openbox: sudo pacman -S openbox Como pudiste notar, la instalación de Openbox (tomando como referencia la última versión estable al momento de escribir este tutorial) ¡descarga menos de 5 MB! Al finalizar la instalación, observarás el siguiente mensaje: Para realizar lo que se menciona en dicho mensaje, ejecuta (sin sudo): mkdir -p ~/.config/openbox cp /etc/xdg/openbox/{rc.xml,menu.xml,autostart} ~/.config/openbox ¿Qué son esos archivos que acabamos de copiar? Son la configuración predeterminada de Openbox, la cual obviamente podemos (y debemos) modificar… lo cual haremos en los siguientes pasos, ¡no te desesperes! Preparativos antes de ejecutar(Opcional) El sistema de intercomunicación de procesos dbus se recomienda estar en ejecución. Si has seguido los tutoriales anteriores ya debes tenerlo instalado y en ejecución; en caso contrario, procede a su instalación: sudo pacman -S dbus Y ejecutamos dbus: sudo rc.d start dbus Para que inicie automáticamente al iniciar el sistema, agrega dbus al arreglo DAEMONS en el archivo de configuración /etc/rc.conf DAEMONS=(... dbus ...) Otro componente recomendado es Gamin (sistema de monitoreo de archivos y directorios), el cual se ejecutará automáticamente cuando sea necesario sudo pacman -S gamin Ejecutando Openbox Podemos ejecutar Openbox de varias maneras. Veamos un par de ellas. Via startx Crea o edita el archivo ~/.xinitrc para que su contenido sea: #!/bin/sh exec openbox-session Ahora ya puedes ejecutar Openbox con el comando: startx dbus es iniciado de forma automatica, ya no se necesario activarlo. systemctl enable servicio Luego puedes reiniciar tu sistema, o simplemente iniciarlo en ese momento: systemctl start servicio Dicha informacion esta en el wiki. Via SLiM Realmente se puede usar cualquier Login Manager (XDM, GDM, KDM, etc), pero una excelente alternativa muy liviana y configurable es SLiM. Para usarla, primero crea o edita el archivo ~/.xinitrc tal y como se menciona previamente (SLiM lee dicho archivo). Luego, instala SLiM con el comando: sudo pacman -S slim De manera adicional (y totalmente opcional), puedesinstalar diversos temaspara adaptar SLiM a tu gusto personal. Finalmente, debemos editar el archivo de configuración /etc/inittab y comentar (agregar “#” al inicio) las líneas: #id:3:initdefault: [...] #x:5:respawn:/usr/bin/xdm -nodaemon Y descomentar (eliminar el “#” al inicio) las líneas: id:5:initdefault: [...] x:5:respawn:/usr/bin/slim >& /dev/null Reinicia el sistema con reboot Ajustes post-instalación Instalación de Fuentes Básicas Algo básico es la instalación de algunas fuentes (tipos de letras): sudo pacman -S ttf-bitstream-vera ttf-dejavu ttf-droid ttf-freefont No olviden actualizar el caché de las fuentes: fc-cache -vf Creación de Carpetas Básicas No hay que perder de vista que de manera predeterminada ArchLinux no crea las típicas carpetas “Documentos”, “Imágenes”, “Música”, etc., lo cual es genial pues nos permite personalizarlas a nuestro gusto. Primero, instalemos el paquete necesario: sudo pacman -S xdg-user-dirs Y editemos su archivo de configuración base: sudo vim /etc/xdg/user-dirs.defaults En su contenido, podemos comentar (poner “#” al inicio) las líneas con las carpetas que no necesitemos (en mi caso, jamás uso “Templates” y “Public”) y especificar el nombre apropiado para nuestras carpetas. Un ejemplo sería: # Default settings for user directories # # The values are relative pathnames from the home directory and # will be translated on a per-path-element basis into the users locale DESKTOP=Desktop DOWNLOAD=Descargas #TEMPLATES=Templates #PUBLICSHARE=Public DOCUMENTS=Documentos MUSIC=Música PICTURES=Imágenes VIDEOS=Videos # Another alternative is: #MUSIC=Documents/Music #PICTURES=Documents/Pictures #VIDEOS=Documents/Videos Guarda los cambios realizados en dicho archivo, y ejecuta el siguiente comando para crear las carpetas: xdg-user-dirs-update Si posteriormente deseamos algún cambio en dichas carpetas, el archivo a modificar es otro: vim ~/.config/user-dirs.dirs Al ser un archivo de nuestro usuario, no se usa el “sudo” al inicio. No olvides ejecutar nuevamente xdg-user-dirs-update si haces algún cambio. Configurar Apariencia Para ajustar la apariencia de nuestro entorno gráfico, se recomienda la instalación de obconf, un administrador de configuración para Openbox: sudo pacman -S obconf Para instalar más temas, ejecuta: sudo pacman -S openbox-themes ¿No es suficiente? ¡Puedes crear tus propios temas! Sólo tienes que seguir los pasos indicados e instalar la utilería obtheme: sudo pacman -S obtheme Personalizar Menú de Aplicaciones El menú principal en Openbox se invoca con el botón secundario del mouse, y si eres observador notarás que hace referencia a aplicaciones que muy probablemente no tengas instaladas. ¿Cómo editar este menú? Hay varias formas de hacerlo. La forma manual: Editando el archivo ~/.config/openbox/menu.xml (¿recuerdan esos archivos que copiamos al final del paso 1?, este es uno de ellos). vim ~/.config/openbox/menu.xml Su sintaxis es bastante sencilla de comprender, así que no debes tener problemas para eliminar, editar o agregar opciones a tu menú de aplicaciones. <?xml version="1.0" encoding="UTF-8"?> <openbox_menu xmlns="http://openbox.org/3.4/menu"> <menu id="apps-accessories-menu" label="Accessories"> <item label="Calculator"> <action name="Execute"> <command>gnome-calculator</command> <startupnotify> <enabled>yes</enabled> </startupnotify> </action> </item> <item label="Character Map"> <action name="Execute"> <command>gnome-character-map</command> <startupnotify> <enabled>yes</enabled> </startupnotify> </action> </item> <item label="Ark File Archiver"> <action name="Execute"> <command>ark</command> <startupnotify> <enabled>yes</enabled> </startupnotify> </action> </item> </menu> [...] ¿No quieres hacerlo manualmente? Entonces, te recomiendo instalar la utilería obmenu: sudo pacman -S obmenu ¿Aún así te tiene podrido editar cada opción del menú ? Entonces, te recomiendo instalar la utilería MenuMaker: sudo pacman -S menumaker Una vez instalado, ejecuta lo siguiente para que MenuMaker busque las aplicaciones que tengas instaladas y te genere automáticamente el archivo ~/.config/openbox/menu.xml mmaker -vf OpenBox3 Para ver los cambios aplicados, ejecuta: openbox --reconfigure Te recomiendo verificar con mmaker --help todas las opciones de dicha utilería (puedes, por ejemplo, excluir las aplicaciones de algún entorno de escritorio, como KDE). Lanzador de Aplicaciones Existen muchos lanzadores de aplicaciones para Linux, pero como estamos apegándonos a la filosofía minimalista de Openbox, vamos a instalar uno extremadamente liviano, ¡y muy eficiente! Se llama dmenu y lo instalan con: sudo pacman -S dmenu Ahora, vamos a vincular dmenu con un atajo de teclado, específicamente + [Barra Espaciadora] (ustedes pueden elegir la combinación que prefieran). Para ello, vamos a editar el archivo ~/.config/openbox/rc.xml vim .config/openbox/rc.xml Dentro de la sección <keyboard> agreguen lo siguiente: <keybind key="W-space"> <action name="Execute"> <command>dmenu_run</command> </action> </keybind> Para probarlo, usen el atajo de teclado establecido, y observarán una barra en la parte superior de la pantalla, dónde lo que tienen que hace es empezar a escribir letra por letra la aplicación que deseas ejecutar, y dmenu mostrará la lista de aplicaciones concordantes. ¡Así de simple, rápido y eficaz! Establecer un Fondo de Pantalla o Wallpaper (Opción 1) Primero necesitamos algunas imágenes, si tienes algunas a la mano, ¡excelente!, si no, podemos instalar: sudo pacman -S archlinux-wallpaper Se instalarán varios wallpapers temáticos en la carpeta /usr/share/archlinux/wallpaper/ Ahora bien, Openbox no ofrece establecer de manera nativa el wallpaper, pero existen varias utilerías muy livianas que lo hacen. Mi preferida es hsetroot. Primero la instalamos: sudo pacman -S hsetroot Y luego, la ejecutamos. Ejemplo: hsetroot -center /usr/share/archlinux/wallpaper/archlinux-aftermath.jpg Te recomiendo ampliamente ver todas las opciones de hsetroot con: hsetroot --help Para que el wallpaper se visualice cada vez que entremos a Openbox, debemos editar el archivo ~/.config/openbox/autostart (otro más de los archivos que copiamos al final del paso 1): vim ~/.config/openbox/autostart Y añadir al final el comando hsetroot con la opción e imagen deseados. Ejemplo: hsetroot -center /usr/share/archlinux/wallpaper/archlinux-aftermath.jpg & Fíjate bien que al final de la línea se puso un ampersand (&, para que hsetroot se ejecute en el background y no interfiera con alguna otra aplicación que se ejecute posteriormente. Establecer un Fondo de Pantalla o Wallpaper (Opción 2) Otra forma de elegir nuestro wallpaper, es usar la utilería gráfica nitrogen. sudo pacman -S nitrogen Para elegir y establecer el wallpaper de tu elección, ejecuta (¡usa dmenu!): nitrogen ¿No aparece ningún wallpaper? Debes presionar el botón Preferences para establecer la(s) ruta(s) donde se encuentran las imágenes. Para que Openbox “recuerde” el wallpaper establecido cada vez que inicie sesión, debemos editar el archivo ~/.config/openbox/autostart … vim ~/.config/openbox/autostart … y añadir al final: nitrogen --restore & Establecer un Panel de Escritorio (Opción 1) Hay muchos tipos de panel a elegir para instalar en Openbox. Una primera opción, por su sencilla instalación y configuración, es PyPanel. sudo pacman -S pypanel Para ejecutarlo (y generar su archivo de configuración con las opciones predeterminadas): pypanel Para que se ejecute al iniciar Openbox, debemos editar el archivo ~/.config/openbox/autostart … vim ~/.config/openbox/autostart … y añadir al final: pypanel & Para configurarlo, basta con editar el archivo ~/.pypanelrc … vim ~/.config/openbox/rc.xml … y ajustarlo a nuestras necesidades. #------------------------------------------------------------------------------ # Colors: Format is hex triplet - 0xrrggbb #------------------------------------------------------------------------------ BG_COLOR = "0xd6d6d6" # Panel background and tinting color TASK_COLOR = "0x000000" # Normal task name color FOCUSED_COLOR = "0x1826de" # Focused task name color SHADED_COLOR = "0x808080" # Shaded task name color MINIMIZED_COLOR = "0x808080" # Minimized task name color DESKTOP_COLOR = "0x000000" # Desktop name color CLOCK_COLOR = "0x000000" # Clock text color LINE_COLOR = "0x606060" # Vertical line color # Text Shadow Colors TASK_SHADOW_COLOR = "0xffffff" FOCUSED_SHADOW_COLOR = "0xffffff" SHADED_SHADOW_COLOR = "0xffffff" MINIMIZED_SHADOW_COLOR = "0xffffff" DESKTOP_SHADOW_COLOR = "0xffffff" CLOCK_SHADOW_COLOR = "0xffffff" [...] Establecer un Panel de Escritorio (Opción 2) Otro panel liviano, que incluso puede configurarse a través de una interfaz gráfica, es tint2. sudo pacman -S tint2 Para ver el panel, ejecuta (¡usa dmenu!): tint2 Para configurar el panel, ejecuta (¡usa dmenu!): tint2conf Para que Openbox muentre el panel cada vez que inicie sesión, debemos editar el archivo ~/.config/openbox/autostart … vim ~/.config/openbox/autostart … y añadir al final: tint2 & Protector de Pantalla (Screensaver) ¿Deseas tener un protector de pantalla (screensaver) en Openbox? Instalemos Xscreensaver. sudo pacman -S xscreensaver Para que se cargue cada vez que inicies sesión en Openbox, edita el archivo ~/.config/openbox/autostart … vim ~/.config/openbox/autostart . y agrega al final lo siguiente: /usr/bin/xscreensaver -no-splash & Para elegir y configurar el protector de pantalla, ejecuta: xscreensaver-demo Si deseas invocar de inmediato el bloqueo de la pantalla a través de Xscreensaver, puedes hacerlo con: xscreensaver-command --lock Este comando puedes asignarlo a un atajo de teclado, por ejemplo a + [A L T ] + [ L ]. Para ello, vamos a editar nuevamente el archivo ~/.config/openbox/rc.xml … vim .config/openbox/rc.xml … y dentro de la sección <keyboard> agreguen lo siguiente: <keybind key="C-A-L"> <action name="Execute"> <command>xscreensaver-command --lock</command> </action> </keybind> Control de Volumen con el Teclado Es común que los teclados modernos (en desktops, laptops, etc) tengan botones para subir y bajar el volumen, así como el botón de silencio (mute). Para hacer que éstos funcionen en Openbox, debemos editar el archivo ~/.config/openbox/rc.xml (otro más de los archivos que copiamos al final del paso 1) … vim ~/.config/openbox/rc.xml … y agregamos lo siguiente a la sección <keyboard>: Si usamos ALSA: <keybind key="XF86AudioRaiseVolume"> <action name="Execute"> <command>amixer set Master 5%+ unmute</command> </action> </keybind> <keybind key="XF86AudioLowerVolume"> <action name="Execute"> <command>amixer set Master 5%- unmute</command> </action> </keybind> <keybind key="XF86AudioMute"> <action name="Execute"> <command>amixer set Master toggle</command> </action> </keybind> Si usamos PulseAudio: <keybind key="XF86AudioRaiseVolume"> <action name="Execute"> <command>amixer -D pulse set Master 5%+ unmute</command> </action> </keybind> <keybind key="XF86AudioLowerVolume"> <action name="Execute"> <command>amixer -D pulse set Master 5%- unmute</command> </action> </keybind> <keybind key="XF86AudioMute"> <action name="Execute"> <command>amixer set Master toggle</command> </action> </keybind> Instalación de Aplicaciones Ligeras Por último, de nada sirve un entorno gráfico si no tenemos aplicaciones instaladas para sacarle provecho. Mi recomendación, siguiendo la filosofía de Openbox, es instalar aplicaciones ligeras, y la lista propuesta en la wiki de ArchLinux cae como anillo al dedo. Configuraciones en la post-instalación del entorno de escritorio Si alguien lo notó, el audio viene por defecto silenciado (solo es activarlo) en algunos de los entornos instalados, eso es porque faltan unos paquetes: sudo pacman -S alsa-lib alsa-utils Si requieres usar el plugin "flash player", ya sea para ver vídeos en YouTube u otras cosas, puedes instalarlo con el siguiente comando: sudo pacman -S flashplugin Para usar java, puedes instalarlo con este comando: sudo pacman -S jre7-openjdk hsqldb-java Codecs multimedia: pacman -S gstreamer0.10-base gstreamer0.10-plugins ffmpeg a52dec faac faad2 flac jasper lame libdca libdv libmad libmpeg2 libtheora libvorbis libxv wavpack x264 xvidcore --noconfirm De los entornos usados en este tutorial, la gran mayoría usa librerías gráficas GTK+ (GNOME, Xfce, LXDE, MATE, Unity), por el contrario de KDE que usa librerías QT, las cuales tienen mejor aspecto visual. A veces se requiere usar aplicaciones QT en entornos GTK+ o viceversa, y la apariencia de las aplicaciones muestran una incompatibilidad visual notable, esto tiene solución. Para visualizar aplicaciones GTK+ con una apariencia no tan "fea", en KDE, debéis instalar esto desde los repositorios comunitarios: yaourt -S kde-gtk-config --noconfirm Y esto otro desde los repositorios oficiales: sudo pacman -S qtcurve-gtk2 qtcurve-kde3 qtcurve-kde4 gtk-kde4 gtk-qt-engine oxygen-gtk3 oxygen-gtk2 Lo que acabamos de instalar son configuraciones, opciones y temas para adaptar GTK+ a QT, daré una breve explicación, pero ya es cada quien el que decide como lo configurará: Todo se puede modificar en "Menú > Configuración del sistema > Apariencia de las aplicaciones" Donde en estilo se puede seleccionar "QtCurve" o "GTK",y también aparece una pestaña dedicada a "Configuración GTK", donde igual recomiendo usar "QtCurve" y "oxygen-gtk". Pero eso no es todo, tenemos más opciones de configurar las apariencias GTK, en "Menú > Configuración del sistema > Apariencia de las aplicaciones", al final, aparecerán 2 opciones: - Estilo GTK - GTK Styles and Fonts En el primero nos da la opción de 3 configuraciones generales, la cual debemos ajustar de acuerdo al tema de KDE que estemos usando, pero en la segunda hay una opción especial, además de ajustar los temas, se pueden instalar plugins a algunas aplicacinoes, por ejemplo, si tienes el navegador Firefox, o el cliente de correo Thunderbird instalados, te mostrará la opción para instalarles un "plugin", al instalarlo, quedará totalmente adaptada a KDE la aplicación seleccionada (Solo las que aparezcan ahí). Para que todos los cambios tengan efecto, se debe reiniciar el sistema. En el caso de que uses un entorno GTK+, por lo general al instalar una aplicación Qt, pacman instala todas las dependencias, y no hay que hacer nada, pues visualmente se adapta a la perfección. Si deseas más información sobre la apariencia de las aplicaciones GTK+, Qt, te recomiendo leer este artículo en la Wiki Oficial. Comandos, tips, recomendaciones, herramientas opcionales y explicaciones generales Desde aquí en adelante el usuario puede disfrutar de Arch Linux totalmente configurada, pero hay que tener en cuenta varias cosas, si bien la instalación de esta gran distribución es manual, y quizás algo demorada en comparación a otras con instalador gráfico, esto ofrece una mayor compatibilidad y configuración con nuestro sistema, además de mayor fluidez y personalización. A simple vista la instalación es "complicada" o "difícil", después de haberla realizado claramente eres testigo de que ello es un mito, pero si decimos que Arch es más difícil en la instalación que otras distribuciones, también se debería afirmar que Arch es más fácil de usar y mantener que otras distribuciones, debido a su modo Rolling Release, no tienes que andar resolviendo dependencias para instalar la nueva versión de algún software, ni añadiendo repositorios o "ppa", también olvídate de la típica reinstalación cada "X" meses para poder gozar de las ventajas de las nuevas ediciones de los paquetes y entornos gráficos. Pacman es el gestor de paquetes de Arch Linux, desde mi punto de vista es el más potente de todos, después de haber probado muchos, simplemente la capacidad de mantener el sistema estable, y actualizado, es algo admirable y envidiable para otras distribuciones. Si vienes de otras distribuciones, puedes ver este articulo de la wiki ,donde se explican las equivalencias a los comandos de otros gestores de paquetes. Antes de continuar recomiendo leer estos 2 artículos, para que queden bien claras las diferencias: Repositorios oficiales(pacman) Repositorios comunitarios (yaourt) Los comandos principales del gestor de paquetes pacman (repositorios oficiales) son: pacman -S: Instala un paquete. pacman -R: Desinstala un paquete. pacman -Ss: Permite buscar a un paquete específico, busca tanto en nombre como en la descripción. pacman -Sy: Sincroniza la base de datos con los repositorios. pacman -Su: Actualiza el sistema completo. pacman -Syu: La "combinación" de los 2 anteriores. pacman -Rs: Desinstala un paquete junto a las dependencias no utilizadas por otros paquetes. pacman -Rsc: Desinstala un paquete y todas sus dependencias y los paquetes que requieran esas dependencias pacman -Sw: Descarga el paquete pero no lo instala. pacman -Si: Muestra información sobre un paquete no instalado. pacman -Qi: Muestra información sobre un paquete ya instalado. pacman -Se: Instala solamente las dependencias del paquete. pacman -Ql: Muestra todos los archivos pertenecientes al paquete. pacman -Qu: Muestra los paquetes del sistema que pueden ser actualizados, pero no los instala. pacman -Q: Muestra una lista de todos los paquetes instalados en el sistema. pacman -Qo: Muestra a cual paquete pertenece un archivo en especial. pacman -Sc: Borra todos los paquetes antiguos guardados en la caché de pacman. pacman -Scc: Borra todos los paquetes en la cache de pacman en /var/cache/pacman/pkg. pacman -A: Instala un paquete guardado en una carpeta local. pacman -U: Instala un paquete local o remoto sin ser descargado del repositorio. De la anterior lista, realmente nunca los uso todos, con frecuencia uso el primero, el segundo, el tercero y el sexto. Pacman exige permisos de administrador, por lo cual se debe usar adjuntando al principio "sudo". Nota: En teoría, yaourt es el mismo que pacman, solo que funciona en los repositorios comunitarios, y funciona con los mismos comandos, sustituyendo "pacman" por "yaourt", ejemplo: "yaourt -S" En conclusión, repetiré un comando especial que se debe siempre tener en cuenta, el que sirve para actualizar el sistema: pacman -Syu ... pero este comando solo actualiza los paquetes que hayan sido instalados desde los repositorios oficiales (O los que se hayan añadido a la configuración de "pacman", pero no de AUR (Repositorios comunitarios). Para actualizar los paquetes instalados desde los repositorios comunitarios debes usar el siguiente comando: yaourt -Syu Nota: yaourt siempre pide varias configuraciones al usarse, sea editar configuracioens o cosas así, por lo general de ignoran, y luego se confirma la instalación. ... Pero... si lo que deseas es actualizar todos los repositorios, tanto oficiales como comunitarios con un solo comando, la solución es sencilla, se llama "packer", que simplemente es la combinación entre "pacman" y "yaourt", para instalarlo solo debemos ejecutar: yaourt -S packer --noconfirm Así ya podremos actualizar todo nuestro sistema, con el comando: packer -Syu Nota: Packer no es oficial de Arch, pero no da problemas conocidos tenerlo instalado. Si deseas buscar paquetes en los repositorios oficiales, debes ir a la página oficial, sección *Packages Si lo que quieres es buscar paquetes en los repositorios comunitarios, debes ir, en la página oficial a la sección *AUR En ambas secciones, lo que se hace es realizar una búsqueda, ya sea por el nombre o parte del nombre del paquete, o por algo que esté en la descripción, de ambas maneras tendremos resultados, si por ejemplo estamos buscando el cliente de "Steam" nos aparecerá en al ficha "nombre" exactamente "steam", eso significa que debemos ir a la terminal y poner "yaourt -S nombredelpaquete", en ese caso sería "yaourt -S steam". Hay una herramienta en AUR, que sirve para realizar búsquedas desde un entorno gráfico, quien quiera probarla puede hacerlo instalándola: yaourt -S pkgbrowser Vienes de una distro tipo Ubuntu, Mint, openSUSE, y extrañas el Centro de Software, Synaptic, el Gestor de Software (MintInstall), YaST, etc? Eso no es problema, aunque Arch Linux no tiene ninguna aplicación así de manera oficial, hay una herramienta en AUR que funciona a la perfección, por comodidad la uso a veces para realizar búsquedas, pero siempre prefiero usar la terminal con su debido comando para instalar las cosas, eso ya es la preferencia personal de cada quien, para instalar AppSet, solo debéis poner en terminal: yaourt -S appset-qt --noconfirm Nota: Recomiendo tener instalado "packer" para poder usarlo completamente, está hecho en librerías Qt, pero funciona perfectamente en todos los entornos. Como advertencia, todas las descripciones y nombres de los paquetes están en idioma ingles. La aplicación normalmente queda instalada en las "Herramientas del sistema" (Entornos GTK+), en KDE queda en la barra principal siempre activo, y con 3 opciones al darle click derecho: "Mostrar/ocultas AppSet", "Buscar actualizaciones" y "Salir", obviamente la primera es para maximizarlo o minimizarlo, buscar actualizaciones para actualizar el sistema, y salir para cerrar la aplicación completamente. La ventana principal se ve así: En esa primera pantalla tenemos lo siguiente: - Botón "Actualizar" para buscar las actualizaciones a los paquetes instalados en el sistema. - Secciones o categorías de los paquetes (Solo de los repositorios oficiales). - Abajo a la izquierda tenemos 3 pestañas, "Inicio" que es la de la captura, "Todo" (O la sección que tengamos seleccionada) para realizar búsquedas en los repositorios oficiales, y "AUR" para buscar paquetes en los repositorios comunitarios. En la pestaña de los repositorios oficiales, nos encontraremos con esta pantalla: En esta segunda ventana tenemos lo siguiente: - Opción de búsqueda, con un menú desplegable (Keys), con las opciones "Nombre", "Descripción" y "Todo", recomiendo usar la última para obtener mejores resultados en las búsquedas. - Opción de "filters", para ver, todos los paquetes, solo los que tienen actualizaciones pendientes, los instalados en el sistema, o los que no están instalados aún. - En la parte inferior tenemos 3 pestañas, la primera y que aparece abierta por defecto es "Página web", la cual muestra la web oficial del software que tenemos seleccionado (si tiene), la segunda pestaña, "Detalles" da una breve información técnica, y la tercera pestaña "Files Tree" una vez instalada la aplicación, nos muestra todos los archivos que usa o instaló el software, en los directorios de nuestro sistema. Actualización del sistema, usando esta GUI: Actualizar > Marcar todas las actualizaciones (#) > Revisar y aplicar > Confirmar Lo anterior es el proceso que se sigue, solo son clicks, en la segunda opción el "#" corresponde a que mostrará el número de paquetes que debes actualizar, si no muestra ninguno es porque todo está al día. Instalación de aplicaciones desde los repositorios oficiales: En el ejemplo de la imagen, he realizado la busqueda de la aplicación de diseño gráfico "Krita", para instalarla solo he rellenado el recuadro que está antes del nombre de la app, lo cual pone un símbolo "+" en verde. Luego proceso, en la parte de arriba, a dar click en "Revisar y aplicar" y por ultimo en confirmar, pide confirmación con contraseña de usuario root, y listo, inicia la descarga. Imagen de ejemplo: Instalación de aplicaciones desde AUR: Hay un pequeño problema en la aplicación actualmente para soportar AUR, al buscar un paquete muestra algunos resultados, y no siempre funciona, es posible que en pocos días, o simplemente en la próxima actualización de esta app, todo funcione correcto. Con los repositorios oficiales si funciona a la perfección. NOTA: Valga la redundancia, tanto yaourt, como packer, como esta especie de "Centro de Software" versión gráfica, no son oficiales de Arch Linux, mi mayor recomendación es usar la terminal y preferiblemente los repositorios oficiales, para tener mayor seguridad y estabilidad en el sistema, de esos trata Arch Linux y la filosofía KISS.

A veces es importante hacer pruebas locales antes de poner una nueva función en nuestro blog o actualizar una página web. También es válido si queremos experimentar diferentes plataformas web antes de elegir la mejor para nuestro proyecto o si, por otro lado, sólo queremos aprender nuevas cosas. Para ello debemos seguir estos simples pasos y en pocos minutos tendremos nuestro servidor funcionando y listo. Lo que instalaremos será un servidor LAMP (Linux, Apache, MySQL, PHP-PERL-PYTHON según corresponda) Primero que nada necesitamos instalar la herramienta tasksel que nos permitirá instalar software de servidor en nuestro Ubuntu desktop. Por omisión viene instalado en las versiones Server de Ubuntu, pero en las Desktop hay que instalarlo manualmente. Para ello lo buscamos en el Centro de Software con el nombre tasksel, nos pedirá nuestra cotraseña y se iniciará el proceso de instalación. Luego abrimos una terminal y ejecutamos el siguiente comando: sudo apt-get install lamp-server^ Tengan cuidado de escribir el caracter ^, es necesario. Se iniciará la instalación de nuestro servidor y después de unos minutos nos pedirá definir una contraseña para la base de datos en MySQL y luego reingresarla para la confirmación. Después de finalizada la instalación, tendremos un directorio llamado www en la carpeta /var, pero estará con privilegios administrativos por lo que no podremos colocar contenido. Para ello debemos cambiar los permisos de ejecución, lectura y edición de forma recursiva para que podamos trabajar con libertad en subdirectorios. Escribimos el siguiente comando en la terminal: sudo chmod 777 -R /var/www Explico un poco que hicimos: El 777 representa lectura, escritura y ejecución (en ese orden) para el directorio o archivo en su máximo nivel, es decir, el acceso total y natural para trabajar con nuestros archivos, el comando -R significa que tambien es recursivo, o sea, que los permisos también se aplican a archivos y subdirectorios. También lo podemos escribir de la siguiente forma: sudo chmod rwx -R /var/www Donde r es read o lectura, w es write o escritura y x es excecution o ejecución. Luego que tenemos nuestro directorio preparado y listo para trabajar podemos hacer más facil el acceso dejando un acceso directo en nuestra carpeta personal, para ello ingresamos el siguiente comando: ln -s /var/www /home/nombre-de-usuario/www Donde nombre-de-usuario lo reemplazamos por el nuestro. Hasta aqui tenemos un servidor funcional y preparado para trabajar, pero si además, queremos gestionar bases de datos para trabajar con nuestros proyectos es muy recomendable instalar el paquete para realizar este proceso vía web de manera más fácil. Lo hacemos con este comando: sudo apt-get install phpmyadmin Nos pedirá nuestra contraseña de usuario y dará comienzo a la instalación donde el asistente nos preguntará para qué tipo de servidor queremos instalar el servicio, seleccionamos Apache. Luego nos pedirá asociar la instalación de phpmyadmin a una base de datos. Como es la primera vez que estamos instalando le diremos que haga la asociación con las opciones más comunes y que cree la base de datos en el proceso, para ello seleccionamos la opcion <Si> Acto seguido nos preguntará por la contraseña de MySQL que definimos al comenzar la instalación de lamp-server, la ingresamos. Finalmente nos pedirá crear una contraseña de seguridad para phpmyadmin, que por comodidad puede ser la misma de MySQL, aunque por seguridad no está recomendado. Inmediatamente nos pedirá la confirmación y listo. Tendremos nuestro servidor y phpmyadmin corriendo en nuestro equipo. Para probar basta ingresar lo siguiente en un navegador: localhost Donde debemos obtener una pagina de respuesta con el siguiente mensaje: Para probar phpmyadmin, basta con ingresar lo siguiente: http://localhost/phpmyadmin Espero, que esta mini guia les sea de utilidad

Tribler es una "cross-platform" un programa bittorrent descentralizado, lo que significa que no requiere de ningún sitio web de torrent para buscar y descargar contenido. Otra característica interesante es que se puede ver vídeos directamente, sin tener que descargarlos completamente en primer lugar (sólo con VLC 1.1.x por ahora). A nosotros simplemente no nos gusta los servidores poco fiables. Con Tribler hemos logrado cero segundos el tiempo de inactividad durante los últimos seis años, y todo porque no nos apoyamos sobre una base inestable, como DNS, servidores web o portales de búsqueda. Tribler no es nuevo, pero un reciente artículo titulado TorrentFreak " Tribler Makes BitTorrent Impossible to Shut Down" lo hizo mucho más popular de lo que solía ser. Instale Tribler en Ubuntu mediante PPA El paquete oficial Tribler. Deb viene con la dependencia del VLC . Usando este paquete que viene en el PPA, VLC no es una dependencia estricta, pero sólo un paquete recomendado por lo que no está obligado a instalar VLC. VLC se utiliza para transmitir vídeos, pero esta característica sólo funciona con VLC 1.1.x sudo add-apt-repository ppa:webupd8team/tribler sudo apt-get update sudo apt-get install tribler Para descargarlo desde la pagina oficial, clic en la siguiente imagen
Cómo instalar FFmpeg, convertidor de videos en Ubuntu 10.04 Como convertir formatos de video o sonido en Ubuntu FFmpeg es una aplicación para convertir, grabar y transmitir audio y video, contiene también la biblioteca de codecs de audio y video libavcodec. Para su instalación seguiremos los siguientes pasos: 1. Añadir los repositorios de Medibuntu (necesarios) en terminal con: sudo wget http://www.medibuntu.org/sources.list.d/Lucid.list –output-document=/etc/apt/sources.list.d/medibuntu.list Nota: Cambiar “Lucid” por la versión que tengan (intrepid, jaunty,karmic…) 2. Añadir la clave GPG y actualizamos con: sudo apt-get update && sudo apt-get install medibuntu-keyring && sudo apt-get update 3.Instalamos FFmpeg con: sudo aptitude install ffmpeg 4. Instalamos la interfaz gráfica con: sudo aptitude install winff 5. Para poder trabajar con los formatos de video .ogg y .ogv instalamos Mencoder con: sudo aptitude install mencoder Ya lo tenemos todo instalado y la interfaz gráfica la tenemos en Aplicaciones / sonido y video / Video Converter (WinFF). Nota: Para poder trabajar con codecs privativos o con problemas de licencia instalar el paquete Ubuntu Restricted Extras (para mp3…) con: sudo aptitude install ubuntu-restricted-extras Si nos encontramos problemas para convertir a .avi es que nos falta el paquete libavcodec-unstripped-52. Lo instalamos ejecutando en una terminal el siguiente comando: sudo aptitude install libavcodec-unstripped-52 COMANDOS MAS UTILIZADOS: * La SINTAXIS BASICA es: ffmpeg -i archivo_original.extensión archivo_final.extensión ej: Para pasar un video flv que se llama video1 a un video avi que se llame video2: ffmpeg -i video1.flv video2.avi * Se puede controlar los ratios de compresión, resolución… (peso y calidad), por ejemplo: ffmpeg -i video.wmv -ab 56 -ar 22050 -r 15 -s 320×240 video.flv De este modo, pasamos de .wmv a .flv con algunas opciones: -ab: ratio de audio en (bit/s). Sería 56 -ar: frecuencia del audio. Sería 22050 (mono) -r: framerate (Hz). Seríq 15 -s: tamaño de la resolución. Sería 320×240 A modo de resumen, os dejo algunas ordenes básicas de algunos ejemplos con ffmpeg: * FORMATOS DE AUDIO: De .wma a .mp3: ffmpeg -i audio.wma -f mp3 -ab 192 audio.mp3 El bitrate del MP3 en este ejemplo es 192bit/s. De .mp3 a .amr: ffmpeg -i audio.mp3 -acodec amr_nb -ar 8000 -ac 1 -ab 32 audio.amr De .wav a .mp3 sería: ffmpeg -i audio.wav -acodec mp3 -ab 32 -ar 44100 audio.mp3 De .mpeg a .mp3: ffmpeg -i video.mpg -f mp3 audio.mp3 Extrae el audio de un fichero MPEG y lo pasa a MP3. * FORMATOS DE VIDEO: De .avi a .flv: ffmpeg -i video.avi -acodec mp3 -ar 11025 video.flv De .avi a .vcd: ffmpeg -i video.avi -target pal-vcd video.mpg Añadiendo la opción -hq usa alta calidad. De .mpeg a .flv: ffmpeg -i video.mpg -vcodec flv -y video.flv De .flv a .mpeg: ffmpeg -i video.flv video.mpeg De -flv a -avi: ffmpeg -i video.flv video.avi Ahora algunos comandos para convertir vídeos a formato de celulares con la interfaz táctil, para que se vea la pantalla completa estos celulares utilizan formatos Mp4 en el caso del Iphone y los Nokia donde cambia es en la resolucion de la pantalla.En el caso del Iphone utiliza una resolución de 480x320 y los Nokia utilizan una resolución de 640x480. En un Iphone seria así. ffmpeg -i origen.avi -r 25 -b 480K -f mp4 -s 480×320 -acodec libfaac -ar 22050 -ab 48k -ac 2 output.mp4 En un Nokia seria así. ffmpeg -i video_inicial.avi -b 750000 -vcodec mpeg4 -s 640×480 -acodec libfaac -ac 2 -ab 96000 video_final.mp4 Espero que les sea de mucha utilidad

Atraci es un nuevo reproductor de música de código abierto que utiliza a YouTube como fuente. Es la continuación de un programa que se llamaba HipHop, que estaba basado en la idea de Popcorn Time, el famoso reproductor P2P (que baja archivos torrent y los reproduce en tiempo real), pero en lugar de estar centrado en las películas, HipHop se centraba en la reproducción de archivos de música. el proyecto murió sin embargo,el script de instalación todavía funciona y refiere a un mirror del programa cuando estaba activo. Esto no es todo! El proyecto renació como Atraci, una versión mejorada desde el punto de vista legal, nuevo aspecto y con nuevas funcionalidades. Además agregaron videos. Ahora Atraci busca en Youtube el video de la canción que esté sonando y si queremos nos deja agrandarla. Realmente cómodo y muy útil. Como Atraci, aún está en sus primeras fases, entonces no esperen funciones avanzadas. La construcción de las playlists sigue siendo canción a canción. Si HipHop les pareció una buena alternativa para “buscar y escuchar música” en tonces Atraci no los va a desilusionar. Para usarlo, nada de cosas raras, metemos el artista (o artista – disco ) y play Dentro de las cosas que no me convencieron de la última versión, puedo decir que la interface hizo un retroceso enorme. Los colores y distribución del contenido no ayudan en la funcionalidad del software. También es bastante triste ver que no hay un lindo instalador para Linux, ni ícono tampoco. Podría ser infinitamente mejor. De hecho, está todo por mejorar. Pero lo que más me da pena es que la interface de hiphop no tenía estas falencias. El colmo de este rediseño son los botones de ventana, que están embebidos en la interfaz, y que parecen un botón de menú “muy grande”. Bueno, esos tres puntos pretenden ser un combo de control de ventana alla mac, tipo “min,max,close”. Una cagada a mi parecer. Instalar Atraci en tu distro Linux Se trata del instalador para HipHop que renace y se adhiere a esta nueva versión de Atraci. También va con ícono de yapa El script necesita permisos de super usuario para borrar installs previos y copiar los archivos de ejecución a /usr/bin y a /usr/share/applications, así como el ícono a la carpeta /usr/share/icons). 32 bits wget bit. ly/1mIEYBU -O install-atraci.sh && sh install-atraci.sh 64 bits wget bit. ly/1mrEXCO -O install-atraci.sh && sh install-atraci.sh Sacar el espacio del bit. ly Instalación manual Descargan el programa desde acá Descomprimen el archivo descargado Se meten en la carpeta resultante y le dan permisos de ejecución al archivo Atraci Ejecutan con ./Atraci desde una terminal (tienen que estar en la carpeta donde está el archivo Atraci)

Hoy podemos utilizar muchos servicios para tener nuestros archivos en la nube y compartirlos con quien necesitemos, basta con unos cuantos clicks y los servicios como Dropbox, Box, Google Drive, nos permiten alojarlos, pero ahora les hablaremos de algo diferente, de Curl.io. Curl.io es un servicio que nos permite alojar los archivos que queramos en su servidor para compartirlos, pero no se realiza la carga desde el sitio web, sino que desde nuestra terminal utilizando curl, ya sea en GNU/Linux o Mac OS X. Permite subir archivos de hasta 5 GB, que están disponibles por 4 horas. Tiene dos opciones para subir y compartir los archivos, la primera es de forma sencilla, permitiendo subir los archivos sin restricciones y la segunda nos permite agregar una contraseña. Para subir nuestro primer archivo, lo que tenemos que hacer es entrar al sitio: curl.io , escoger entre las dos opciones, copiar o escribir en la terminal los datos que nos proporciona, cambiar la ruta que esta después de file=@ y listo. Solo tenemos que escribir la ruta de nuestro archivo y listo. Al teclear enter podemos ver el proceso de subida directamente en el sitio web. Si escogimos la opción con contraseña, simplemente nos pedirá teclearla, para que a la hora de descargar el archivo se inicie la descarga después de utilizarla. Terminando de subir el archivo nos proporcionara la url de descarga.
Hay muchas versiones de Popcorn Time, creadas por diversos grupos que aseguran continuar con el legado de los creadores originales; por el momento hay una versión que está destacando por encima de las demás, de la que os hablamos no hace mucho, gracias a sus novedades como la reproducción de series de televisión además de películas, y una interfaz mejorada. Ahora los usuarios de Ubuntu y Debian tenemos unos repositorios no oficiales para instalar y actualizar fácilmente la aplicación. Instalación desde repositorios Para instalar Popcorn Time en Ubuntu y derivados solo tenemos que añadir los repositorios de la página webupd8 creados para la ocasión. En realidad el programa que instalamos lo que hace es buscar la última versión disponible en la página oficial y descargar e instalar el paquete, pero es suficiente si lo que queremos es instalar el programa de manera sencilla. Para ello abrimos una terminal y ejecutamos los siguientes comandos: sudo add-apt-repository ppa:webupd8team/popcorntime sudo apt-get update sudo apt-get install popcorn-time Si usamos Debian, tenemos que usar los siguientes comandos: su - echo “deb http://ppa.launchpad.net/webupd8team/popcorntime/ubuntu trusty main” | tee /etc/apt/sources.list.d/webupd8team-popcorntime.list echo “deb-src http://ppa.launchpad.net/webupd8team/popcorntime/ubuntu trusty main” | tee -a /etc/apt/sources.list.d/webupd8team-popcorntime.list apt-key adv –keyserver keyserver.ubuntu.com –recv-keys EEA14886 apt-get update apt-get install popcorn-time exit Al ejecutar el último comando veremos una pantalla en la que tendremos que aceptar los términos de uso de la aplicación (ya que no es legal en algunos países). Listo ya pueden ver sus Peliculas y Series a través de Popcorn Time
Creación de scripts en Linux Definición de Script: Un script es un archivo que incluye un conjunto de comandos. Son ejecutados desde la primera línea hasta la última (de forma secuencial). Que es el Shell Script Un Shell Script es un script para la shell de comandos (terminal). Para crear un script basta con editar un fichero nuevo y en el nombre poner .sh Ejemplo: HolaMundo.sh Un vez creado, empezamos a editarlo. Se puede utilizar un editor de textos gráfico como gedit o un editor en terminal como vim, nano o emacs. En la primera línea del script se debe indicar que shell que vas a usar ( /bin/bash/ , /usr/ bin/perl , etc ) Aunque da igual la que uses lo importante es el contenido: #! /bin/bash #! Se conoce con el nombre de Sha Bang. Se denomina “sha-bang” a la secuencia #! con la que se inician los scripts. Su función es indicarle al sistema que se trata de un conjunto de comandos para que sean interpretados. En realidad, es un número mágico de dos bytes. El número mágico es un marcador especial para indicar el tipo de archivo, en este caso, indica que se trata de un script de shell ejecutable. Para introducir comentarios se debe poner #. Por cada linea que deseéis poner un comentario, lo primero que debe tener es #. Es importante añadir comentarios comentando la utilidad del script o las variables que se crean. Como ejecutar un script Antes de poder ejecutarlo, debemos darle permisos de ejecución. (+x) por ello, haremos uso del comando chmod y damos permisos de ejecución, si se desea, se pueden dar a todos los usuarios y grupos. Para el usuario propietario chmod 755 /ruta_del_script Para cualquier usuario chmod 777 /ruta_del_script Una vez hecho todo lo anterior, usaremos: ./nombredelscript.sh Pero también podemos usar si es un shell script: sh nombredelscript.sh Codigo de un Script Ya tenemos el script creado, le hemos puesto la cabecera y le hemos cambiado los permisos, ya solo falta meter el código. Vamos a empezar desarrollando lo esencial para ir desarrollando estructuras más complejas: Lo primero es saber cómo dar valor a una variable. Es tan sencillo como poner: nombre_variable=valor Si deseas guardar la salida de un programa solo tienes que ponerlo entre tildes invertidas: nombre_variable=`comando` Tambien hay un comando que lee por teclado las variables ( read ). Para ponerlo es: read [ o p c i o n e s] nombre_variable1 nombre_variable2 nombre_variableN ejemplo: read - p “Introduce el nombre y los apellidos” nombre apellidos Tiene un montón de opciones pero estas son las más importantes y usadas: -n num_car : Número máximo de caracteres que puedes introducir por teclado -p “frase” : Te muestra por pantalla una frase para tu saber que debes introducir -d “delimitador” : Especificas cual va a ser el delimitador, es decir si dices que el delimitador sera “;” pues todo lo que venga antes de un “;” lo cogerá una variable y todo lo que venga después de ese delimitador hasta el próximo “;” lo cogerá otra variable. Cuando queremos utilizar el valor de una variable en el código, nos referiremos a éste como: $nombre_variable EJEMPLOS Estos son algunos de los ejemplos de esta primera parte. Para ejecutarlos sólo hay que crear un archivo .sh y copiar las letras negras, lo azul es la sugerencia para el nombre del script. A lo largo de los ejemplos se introducen algunos comandos básicos de Linux. HolaMundo.sh #! /bin/bash clear echo “Hola mundo ,este es mi primer script” ScriptUno.sh #! /bin/bash clear nombre=“Perico” apellidos=“Palotes” echo “Te llamas $nombre $apellidos” Fecha.sh #! /bin/bash clear fecha=`date | cut -d “ ” -f 1,2,3` hora=`date | cut -d “ ” -f 4` echo “Hoy es $fecha y son las $hora” OtroScript.sh #! /bin/bash clear # IFS es una variable de entorno que determina el delimitador de #campos # (que por defecto vale “ ”),en este script queremos # cambiarlo a “,” para escribir por teclado nombre,apellidos IFS=“,” read -p “Introduce el nombre,apellidos : ” nombre apellidos echo “El nombre es $nombre y los apellidos son $apellidos” Depuración Depuración de programas es el proceso de identificar y corregir errores de programación. En inglés se le conoce como debugging, ya que se asemeja a la eliminación de bichos (bugs), manera en que se conoce informalmente a los errores de programación. Se dice que el término bug proviene de la época de las computadoras de bulbos, en las cuales los problemas se generaban por los insectos que eran atraídos por las luces y estropeaban el equipo. Depurar el código sirve para ver como se ejecuta paso por paso el script, que valores toman sus variables, si has cometido un fallo saber en que parte del código ha sido, etc. No es algo que se deba hacer obligatoriamente por cada script realizado (sería demasiado pesado) pero te facilita mucho a la hora de buscar el problema que te surja. Para depurar un script de shell podemos usar la opción -x o -o xtrace de bash: muestra en la salida estándar trazas de cada comando y sus argumentos, después de que el comando se haya expandido pero antes de que se sea ejecutado $ bash -x cuentalineas3.sh Quijote.txt ++ wc -l Quijote.txt ++ cut -d ' ' -f 1 + count=36855 + echo 'El fichero Quijote.txt tiene 36855 líneas' El fichero Quijote.txt tiene 36855 líneas Es posible depurar sólo parte de un script: poner set -x o set -xv al inicio del trozo a depurar set +x o set +xv para cancelar $ cat cuentalineas3.sh #!/bin/bash set -x count=$(wc -l $1 | cut -d " "-f 1) set +x echo "El fichero $1 tiene $count líneas" $ $ bash cuentalineas3.sh Quijote.txt ++ wc -l Quijote.txt ++ cut -d ' '-f 1 + count=36855 + set +x El fichero Quijote.txt tiene 36855 líneas -x –> Te muestra las instrucciones antes de ejecutarlas por consola y sustituyendo las variables -v –> Te muestra todo pero sin sustituir las variables Estructura condicionales La estructura básica de una condición sería: if condición then comando1 ... ... else comando1 ... ... fi Como ven la condición si(if) se cierra con su correspondiente fi que al parecer un juego de palabras es fácil de recordar. Entonces si la condición se cumple entraría por el then, en caso de que no, por el else. Pero este es un método simple, luego tenemos uno más complejo con if anidados, sería: if condición then comando1 elif condición then comando elif condición then ... fi Ahora lo que hace es evaluar la condición, si es verdadera entra por el then, pero si no y se da el caso de otra condición entraría por el elif, los elif no se cierran, solamente el fi final corresponde a la apertura del if. La condición es cualquier cosa que de un return (que devuelva) algo que sea 0 o verdadero. Notese el uso del archivo /dev/null como archivo vacío para comprobar algunas condicionales. Vemos como podemos hacer un script para comprobar que realmente la ruta es un directorio. CompruebaDirectorio.sh #! /bin/bash clear if `cd /tmp/prueba/ >/dev/null` then echo “Pues si, es un directorio y contiene...” ls -l else echo “Pues va a ser que no es un directorio” fi Este script es un claro ejemplo de como comprobar si un usuario y un grupo existen en el sistema, vemos también el uso que se le da al elif. ExisteGrupoUsuario.sh #! /bin/bash clear read -p “Introduce usuario... ” user read -p “Introduce grupo... ” group if `grep -e “^$user:.*” /etc/passwd >/dev/null` then if `grep -e “^$group:.*” /etc/group >/dev/null` then echo “Usuario y grupo ya existen en el sistema” fi elif `grep -e “^$group:.*” /etc/group >/dev/null` then echo “usuario no existe, grupo si!!” else echo “Ni grupo ni usuario existen” fi Condicionales case Se estructuran de la siguiente forma: case expresion in caso1) comandos ;; caso2) comandos ;; *) comandos ;; esac Para aquellos que sepan de programación, funciona igual que los switch, esta estructura sirve para dependiendo de la expresión se cumple un determinado caso, es decir, según sea el valor de esa expresión se hará un caso u otro. Esto se ve mejor con un ejemplo: tecla.sh #! /bin/bash clear read -n 1 -p “Pulsa una tecla ” tecla case $tecla in [a-z,A-Z]) echo “Ha introducido una letra” ;; [0-9]) echo “Ha introducido un numero” ;; *) echo “Ha introducido un caracter especial” ;; esac Este script sirve para comprobar que tecla has pulsado, primero pide por teclado la tecla que será guardada en la variable tecla, y se usa en el case. Si la tecla es una letra se hará todos los comandos que hayan en el caso [ a-z,A-Z ]( ya que una letra puede ser cualquiera, hace falta abarcar a todas las posibilidades por eso se pone el intervalo de a-z y A-Z ), si la tecla es un número se hará todos los comandos que haya en el caso [0-9 ]( ya que puede ser cualquier número, hace falta abarcar a todas las posibilidades por eso se pone el intervalo de 0-9 ) y si la tecla no es un número ni una letra, se ejecutan todos los comandos del caso *. Se pone el * cuando no se va a cumplir el resto de casos. Es muy importante saber que las dobles comas ( ; ; )se pone obligatoriamente al final de cada caso ya que marcan el final de ese caso, sino el programa no funcionará. Cuando hagáis una condicional debéis poner al final el esac ya que es el cierre del case. Se suele utilizar mucho esta estructura para mostrar un menú al usuario. Ejemplo: ejmploMenu.sh #! /bin/bash clear echo “1.Ejemplo de menu uno” echo “2.Ejemplo de menu dos” read -n 1 -p “Introduce una opcion” opcion case $opcion in 1) exit 1 ;; 2) exit 2 ;; *) echo “No has introducido ni un dos ni un uno” ;; esac Tener que poner tantos echo es bastante molesto, por eso hay un comando que te ahorra hacer ese esfuerzo (select): select variable in “caso 1′′ “caso 2′′ “caso N” do break done case $variable in "caso 1" ) comandos ;; "caso 2" ) comandos ;; "caso N" ) comandos;; esac El break sirve para que solo te muestre una vez el menú. Cuando usas select no hace falta pedir que introduzcas nada, ya que eso lo hace automáticamente. El prompt que te muestra select es #? pero se puede cambiar, poniendo otro valor a PS3. Por último veamos el ejemplo anterior con select: [ejemploMenu.sh #! /bin/bash clear PS3=“Introduce una opcion” select opcion in “1.Ejemplo de menu uno” “2.Ejemplo de menu dos” do break done case $opcion in 1) exit 1 ;; 2) exit 2 ;; *) echo “No has introducido ni un dos ni un uno” ;; esac Operaciones Algebraicas En este post veremos el uso de expr el cual utilizaremos en multitud de ocasiones para hacer operaciones aritméticas, u operaciones con cadenas y un sinfín de cosas... expr operación_a_evaluar Operaciones numéricas: . expr num1 + num2 –> Devuelve la suma de num1 + num2 expr num1 - num2 –> Devuelve la resta de num1 - num2 expr num1 * num2 –> Devuelve el producto de num1 * num2 expr num1 / num2 –> Devuelve la división de num1 / num2 expr num1 >= num2 –> Devuelve 0(true) si num1 >= num2 expr num1 > num2 –> Devuelve 0(true) si num1 > num2 expr num1 <= num2 –> Devuelve 0(true) si num1 < num2 expr num1 < num2 –> Devuelve 0(true) si num1 < num2 expr num1 != num2 –> Devuelve 0(true) si num1 es distinto de num2 ExprEjemplo.sh #! /bin/bash clear PS3=“Introduce Opción: ” select opcion “suma” “resta” do break done read -p “Introduce dos números... ” num1 num2 case $opcion in suma) echo “La suma de $num1 y $num2 es ... `expr $num1 + $num2` ” ;; resta) echo “La resta de $num1 y $num2 es ... `expr $num1 - $num2` ” ;; esac Operaciones con cadenas: expr length cadena –> No de caracteres de esa cadena expr index cadena_donde_busca cadena_a_buscar –> Devuelve la posición donde encuentra los caracteres a buscar dentro de la cadena, si no, devuelve un 0. ExprEjemplo2.sh #! /bin/bash clear frase=“Buenos días, estamos aprendiendo a programar” echo “La longitud de la cadena es... `expr length $frase`” read -p “Introduce alguna cadena que buscar ” buscar if [ ! -z $buscar ] then echo “Los caracteres $buscar se encuentran en la pos `expr index $frase $buscar`” fi expr match cadena_donde_busca patrón_caracteres_buscar –> Funciona igual que el index pero los caracteres pueden ser una expresión regular ExprEjemplo3.sh #! /bin/bash clear frase=“Buenos días, estamos aprendiendo a programar” echo “La longitud de la cadena es... `expr length $frase`” read -p “Introduce alguna cadena que buscar ” buscar if [ ! -z $buscar ] then echo “Los caracteres $buscar se encuentran en la pos `expr match $frase [a-z,A-Z]*$buscar` de la frase” fi expr substr cadena posición n_caracteres –> Extrae de una cadena una subcadena de la cadena indicada a partir de esa posición y de longitud ese número de caracteres ExprEjemplo4.sh #! /bin/bash clear read -n 9 -p “Introduce tu NIF (FORMATO: 00000000A)... ” nif echo “El DNI de $nif es `expr substr $nif 1 8`” echo “La letra del $nif es `expr substr $nif 9 1`” Bucles For for variable in valor1 valor2 ... valorN do comando1 ... [ break | continue ] done El bucle se ejecuta para cada uno de los valores que toma la variable en esa lista. Break: Rompe el bucle y no da más opción a que la variable se ejecute. Continue: Salta al siguiente valor de la lista. Planetas.sh #! /bin/bash clear for planeta in “Jupiter 10′′ “Venus 30′′ “Saturno 15′′ “Mercurio 1′′ Luna Tierra do if [ “$planeta” = Tierra ] then break elif [ “$planeta” = Luna ] then continue else echo “El planeta $planeta 0.000.000 Km del Sol” fi done echo “fin del script” Y su ejecución sería: El planeta Júpiter 10 0.000.000 Km del Sol El planeta Venus 30 0.000.000 Km del Sol El planeta Saturno 15 0.000.000 Km del Sol El planeta Mercurio 1 0.000.000 Km del Sol fin del script En continue puedes especificar el bucle en el que quieres que la variable salte, hablo de bucles anidados. Por defecto, poner continue es como poner continue 1, la variable del actual bucle salta al siguiente valor, veamos un ejemplo de ello: PlanetasBacteria.sh #! /bin/bash clear for planeta in Venus Saturno Jupiter Tierra Luna Sol Marte do for bacterias in Pepito Anemo Coli Streptos do if [ “$planeta” = “Tierra” ] then exit 45 elif [ “$bacterias” = “Pepito” ] then continue 2 else echo “El planeta $planeta tiene la bacteria ..... $bacterias” fi done done El resultado de su ejecución sería: El planeta Venus tiene la bacteria ..... Pepito El planeta Saturno tiene la bacteria ..... Pepito El planeta Júpiter tiene la bacteria ..... Pepito Otra de las particularidades de este bucle es que puede ejecutarse a la forma de un bucle en java (( valores )) for(( variable=valor; condición; incremento )) do comando ... [ break | continue ] ... done Es igual que en java pero con doble paréntesis. Contador.sh #! /bin/bash clear read -p “Introduce un numero” numero for(( a=0; a <= $numero; a++ )) do echo -e “$a n” done HacerPing.sh #! /bin/bash clear read -p “¿Cual es el número de sunny(31,32,33,35,37)? ” aula if [ $aula -ne 31 -o $aula -ne 32 -o $aula -ne 35 -o $aula -ne 37 ] then echo “Valor incorrecto” exit 1 else for(( equipo=1; equipo <= 16; equipo++ )) do ping -c 1 192.168.$aula.$equipo | grep “0% lost” >/dev/null/ done fi Bucles While Antes de aprender a hacer un script utilizando los bucles while, debemos conocer el funcionamiento del comando test, pues es muy usado en este tipo de bucles. Comando test Este comando sirve para expresar condiciones y evaluarlas, si son correctas origina códigos de salida = 0 y si son falsas = 1 El comando pretende abreviar un poco en algunos casos, por eso se suele utilizar su forma corta: test expresiones —–> [ expresión ] Hay que tener en cuenta que la forma es: [(espacio)expresión(espacio)] Ya que si no se ponen los espacios en blanco daría lugar a error. Un ejemplo de su uso: test -f /home/alumno && echo “Existe directorio” La salida sera: Existe Directorio En la forma resumida se puede escribir: [ -f /home/albertjh/googleearth ] && echo “fichero existe...” fichero existe... Expresiones test Estas son algunas de las más comunes: Comprobación directorios: -f /ruta/nombre –> Comprueba si es un fichero normal -l /ruta/nombre –> Comprueba si es un enlace suave -d /ruta/ –> Comprueba que existe el directorio -x /ruta/nombre –> Comprueba si es un ejecutable -u /ruta/nombre –> Comprueba si tiene activados los permisos suid -g /ruta/nombre –> Comprueba si tiene activados los permisos sgid -s /ruta/nombre –> comprueba que su tamaño es mayor a 0 Comprobación de cadenas: “cadena” = “cadena2′′ –> Comprueba si son iguales -z cadena –> Comprueba si está vacía “cadena” != “cadena2′′ –> Comprueba que son diferentes Comprobación de expresiones numéricas: exp -eq exp2 –> Comprueba si son iguales exp -ge exp2 –> Comprueba si exp >= exp2 exp -ne exp2 –> Comprueba si exp distinto de exp2 exp -gt exp2 –> Comprueba si exp > exp2 exp -le exp2 –> Comprueba si exp <= exp2 exp -lt exp2 –> Comprueba si exp < exp2 Para concatenar expresiones a evaluar: -o = OR -a = AND ! = NOT Algunos ejemplos del uso de test: ]numeros.sh #! /bin/bash clear read -d “,” -p “Introduce dos números separados por comas ” num1 num2 if [ -z $num1 -o -z $num2 ] then echo “Debes introducir dos números, por favor” elif [ $num1 -eq $num2 ] then echo “Los números son iguales” elif [ $num1 -gt $num2 ] then echo “El $num1 > que $num2′′ fi BuscaFich.sh #! /bin/bash clear read -p “Introduce directorio a buscar... ” direct read -p “Nombre de fichero a buscar... ” nombre if [ ! -d "direct ] then echo “$direct no existe” else find $direct -name “*.$nombre” -exec ls -l ‘{}’ ; fi While El while se estructura de la siguiente forma: while condicion do break done While se usa para repetir un conjunto de comandos/instrucciones dependiendo de si se cumple o no la condición. La condiciones que se pueden poner en el while son con el comando test , poniendo un true ( poniendo un true en el while se crea un bucle infinito) o poner un comando con comillas invertidas. El break se pone solo si quieres salir bruscamente del bucle. Veamos tres ejemplos(el primero se podría haber echo con un select, por si alguien quiere probarlo): Calculadora.sh #! /bin/bash clear opcion=2 while [ $opcion -ne 5 ] do echo "1.suma" echo "2.resta" echo "3.multiplicación" echo "4.división" echo "5.salir" read -n 1 -p "Introduce una opcion " opcion case $opcion in 1) read -p "Introduce el 1 numero " numero1 read -p "Introduce el 2 numero " numero2 echo "El resultado es `expr $numero1 + $numero2`" ;; 2) read -p "Introduce el 1 numero " numero1 read -p "Introduce el 2 numero " numero2 echo "El resultado es `expr $numero1 - $numero2`" ;; 3) read -p "Introduce el 1 numero " numero1 read -p "Introduce el 2 numero " numero2 echo "El resultado es `expr $numero1 '*' $numero2`" ;; 4) read -p "Introduce el 1 numero " numero1 read -p "Introduce el 2 numero " numero2 echo "El resultado es `expr $numero1 '/' $numero2`" ;; esac done Este script funciona como una calculadora, posee 5 opciones ( suma, resta, multiplicación, división y salir ), nos interesa que podamos realizar tantas veces como queramos cualquier cálculo hasta que pulsemos un 5 por lo tanto es necesario una estructura repetitiva. El 5 es para salir por lo tanto el bucle se repetirá hasta que la variable opcion valga 5 ( es decir, cuando introduzcas por teclado un 5 ) por eso hay que usar el comando test ( [ $opcion -ne 5 ] ) , cuando eso ocurra ya no se cumple la condición del while y el programa finaliza. Si en el while vas a poner una variable, debe declararse antes ya que sino no entra, darle cualquier valor. Si no se le da valor antes, la variable no valdrá nada (en el ejemplo anterior hubiera fallado ya que estás diciendo que se hace el bucle mientras ” ” no sea igual a 5, sin embargo al dar valor a la variable opción antes del while, entra) BucleInfinito.sh #! /bin/bash clear while true do read -p "Introduce la palabra fin para salir del bucle " fin if [ "$fin" = "fin" ] then exit 2; fi done Este script es un ejemplo de como hacer un bucle infinito, hasta que no escribas un “fin“, no saldrá del programa. Con el while se puede leer línea por línea un fichero, para ello lo único que hay que hacer es poner un redireccionamiento de entrada en el done con la ruta del fichero que queremos leer ( esto es muy útil, ya que puedes crear usuarios a partir de un fichero, etc. Tan solo tenéis que poner done < /ruta_fichero ). LecturaFichero.sh #! /bin/bash clear numLinea=0 linea="nada" while [ ! -z "$linea" ] do read linea if [ ! -z "$linea" ] then numLinea=`expr $numLinea + 1` echo "$numLinea. $linea" fi done < /etc/passwd La función de este script es enumerar las lineas del fichero /etc/passwd, leerá línea por línea hasta que encuentre una línea que esté vacía, cuando la encuentre dejará de leer el fichero, a pesar de que haya o no más líneas después de la línea en blanco (aunque como es el fichero de los usuario registrados en el sistema, la única línea en blanco que habrá será la última del fichero ). Se debe tener en cuenta que antes del bucle se ha inicializado la variable línea. Until La estructura repetitiva until es de la siguiente forma: until condicion do break done La estructura until se usa para repetir un conjunto de comando hasta que se cumpla la condición, cuando se cumple el script sale del until. Las condiciones y el break es lo mismo que en el while, si se usa una variable en el until se debe declarar antes. Ejemplo: BorrarFicheros.sh #! /bin/bash clear directorio=malo until `cd $directorio 2> /dev/null` do clear read -p "Introduce un directorio " directorio done echo "borrado fichero" rm -i $directorio/* Este script comprueba si el directorio existe, si el directorio que introduces no existe te volverá a pedir la ruta, una vez introduzcas una ruta que existe, entonces saldrá del until y borrará todos los ficheros de su interior Parámetros Posicionales ¿Qué es un parámetro posicional? Son valores que se le pasan al script desde la línea de comandos cuando se ejecuta, se numeran en orden del 1 al 12. Pero a partir del 10 hay que encerrarlo entre llaves, ej. ${11} $ ./Script valor1 valor2 ... valorN ./Script = valor0 Para ver el contenido de las variables se utiliza el $NumParámetro El conjunto de todos los parámetros se puede recuperar de golpe con $* El número de parámetros que se le pasan al script esta definido como $# BorrarFicheroParametros.sh #! /bin/bash # Al ejecutar como 1o parámetro un directorio, 2o como fichero a borrar clear if [ $# -ne 2 ] then echo “Debes ejecutarlo así: $0 directorio nombreFichero”; exit 65 elif [ ! -d $1 ] then echo “El parámetro 1 no es un directorio!! “; exit 65 elif [ ! -f $1/$2 ] then echo “El parámetro 2 no es un fichero!; exit 65 else echo “Borrando el fichero... “ rm -fi $1/$2 fi Vamos comprobando poco a poco si es un directorio correcto, si lo es, pasamos a comprobar el fichero, y si lo es lo bBorramos. borrarFicheroParametrosBucle.sh #! /bin/bash clear [ ! -d $1 ] && (echo “Directorio no existe”; exit 65) || exit 65 for fichero in `ls $1` do [ -f $fichero ] && rm -f &fichero done Shift: Este comando desplaza elementos a la izquierda machacando el primero y se pierde, un ejemplo: ParametrosBucleShift.sh #! /bin/bash clear while [ “$1′′ != “” ] do echo “$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12}” shift done El resultado es curioso, sería el siguiente: ./ParametrosBucleShift.sh 1 dos tres 4 5 seis siete 8 nueve 10 11 doce 1 dos tres 4 5 seis siete 8 nueve 10 11 doce dos tres 4 5 seis siete 8 nueve 10 11 doce tres 4 5 seis siete 8 nueve 10 11 doce 4 5 seis siete 8 nueve 10 11 doce 5 seis siete 8 nueve 10 11 doce seis siete 8 nueve 10 11 doce siete 8 nueve 10 11 doce 8 nueve 10 11 doce nueve 10 11 doce 10 11 doce 11 doce doce Por último me queda hablar de set, aunque no tiene mucha utilidad a esta función. set [ –$ variable ] [`comando`] Si aparece cambia el valor de los parámetros posicionales o por el contenido de una variable o por el resultado de la ejecución de un comando. IFS Delimitador IFS= delimitador (Input File Separator) Sirve para cambiar el delimitador por defecto, que es “ ” , así puedes evitar decir: read -d “ ; ” Pero ojo, en todo el script se usará como separador un “;” si tu IFS=; así que cuidado Arrays Las arrays de los script funcionan de la misma forma que los arrays de cualquier lenguaje de programación. Una array es un conjunto o agrupación de valores cuyo acceso se realiza por índices, en un script se puede almacenar en un mismo array todo tipo de cosas, números, cadenas, caracteres, etc. En las arrays el primer elemento que se almacena lo hace en la posición 0 ( en el ejemplo seria Paco ). En los script no hace falta declarar el tamaño de la array, puedes insertar tantos valores como desees. Para declarar una array es: declare -a nombre_array declare -a nombres La opción -a sirve para decir que lo que vas a declarar es una array. Para darle valores se puede hacer de dos formas 1. Darle valores posición por posición. nombre_array=valor nombres[3]=Manolo 2.Darle todos los valores de golpe ( aunque también se puede decir la posición deseada en la que quieres guardar uno de los valores ). nombre_array=( valor1 valor2 valor3 =valor4 ...... valorN ) nombres=( Maria Alberto Rodrigo =Paco ) Para ver el contenido de la array en una posición: ${nombre_array} ${nombres[0]} Para saber cuantos elementos contiene la array: ${#nombre_array}${#nombres} Para recuperar todos los elementos de una array: ${nombre_array}${nombres}A continuación un ejemplo de arrays: arrays.sh #! /bin/bash clear contador=0 declare -a usuario=( Alberto John Roberto Laura Sergio Cristian Dani ) for valor in ${usuario}do echo "El usuario $contador vale $valor" contador=`expr $contador + 1` done Funciones En el ámbito de la programación, una función es un tipo subalgoritmo, es el término para describir una secuencia de órdenes que hacen una tarea específica de una aplicación más grande. Es la forma en la que más me gusta programar, modulando todo en partes pequeñas para después obtener una mayor, con lo cual el programar algo se hace fácil y divertido. function nombreFuncion (){ comando1 comando2 ... [ return codigoSalida ] } También se especifica sin poner function, pero puede llegar a dar problemas así que se recomienda ponerlo. El código de salida especificado por un return es el código de salida del resultado de la ejecución de todos los comandos en la función. Si no se especifica un return devolverá el de la última salida de esa función. Dentro de una función se pueden definir variables locales (solo reconocidas por esa función) y se especifican así: local nombreVariable Importante, las funciones se declaran al principio de los scripts! sumaFuncion.sh #! /bin/bash clear function suma() { local resultado read -p “Introduce el primer numero: ” num1 read -p “Introduce el segundo numero: ” num2 resultado=`expr $num1 + $num2` return $resultado } #——–Cuerpo del script——— echo “Llamo a la funcion suma” suma echo “El resultado es $?” En el paso de parámetros en una función no se pueden definir como en otros lenguajes las variables que le pasas dentro de los paréntesis, sino que se pasan los valores poniéndolos a continuación del nombre de la función: nombreFuncion valor1 valor2 valor 3 ... Dentro de una función esos valores se recogen como: valor1=$1 valor2=$2 ... sumaFuncionParametros.sh #! /bin/bash clear function suma() { local resultado resultado=`expr $1 + $2` return $resultado } #—–Cuerpo del script—— read -p “Introduce el primer numero: ” num1 read -p “Introduce el segundo numero: ” num2 echo “Llamo a la funcion suma” suma $num1 $num2 echo “El resultado es $?” Leer un Fichero Para leer un fichero es necesario un bucle en la primera línea mas un EOF (End Of File) y redireccionar la entrada para ese bucle: while condición do read linea comandos... done < /ruta/fichero Esto se verá mejor con un ejemplo: Tenemos el siguiente fichero en /tmp/ejemplo_texto y contiene: En un Lugar de la Mancha de cuyo nombre no quiero acordarme y mucho mas.... Vamos a hacer un pequeño script que nos cuente el número de líneas que tiene el fichero, como lo hace wc: LeerFichero.sh #! /bin/bash clear linea=”algo” while [ ! -z “$linea” ] do read linea num_linea=`expr $num_linea + 1` if [ ! -z “$linea” ] then echo “La linea numero: $num_linea del fichero es... $linea” fi done < /tmp/ejemplo_texto echo “Total lineas: `expr $num_linea - 1`” Y como resultado tendríamos: $ ./LeerFichero.sh La linea numero: 1 del fichero es... En un Lugar de la Mancha La linea numero: 2 del fichero es... de cuyo nombre no quiero acordarme La linea numero: 3 del fichero es... y mucho mas. Total lineas: 3 Creación de Demonios La verdad es que el echo de habilitar un demonio no tiene nada que ver con hacer un script, pero es muy útil saber como lanzarlo como demonio. Un proceso demonio es un proceso que lanza INIT (el padre de los procesos) al iniciar el pc en un determinado runlevel (es el nivel de ejecución del sistema) y lo lanza en segundo plano o BACKGROUND y esta siempre atento a la llamada del usuario (el usuario puede lanzar ese proceso cuando quiera y tantas veces quiera, para entenderlo mejor, son programas que al iniciarse el pc se ejecutan enseguida). En linux hay 6 niveles de ejecución del sistema, y según sea el nivel init lanza unos determinados programas que se encuentran en /etc/rcnúmero_ejecucion.d (Ej: /etc/ rc5.d) Los programas que hay dentro se llaman de la siguiente forma: SNúmeroNombrePrograma -----> S01AreaSwap La S significa START, son los que INIT lanzará y el número es la prioridad con que los lanzará. Si el número es muy pequeño, será de los primeros que se lancen, y si es muy grande, es de los últimos. Los niveles que hay son: 0 ---> Apagado sistema 1 ---> Monousuario, sin entorno gráfico, sin soporte de red 2 ---> Multiusuario, sin entorno gráfico, sin soporte de red 3 ---> Multiusuario, sin entorno gráfico, con soporte de red 4 ---> RESERVADO 5 ---> Multiusuario, con entorno gráfico, con soporte de red ( se lanza por defecto ) 6 ---> Reinicia sistema Los pasos para crear un demonio son: 1.Situarse en /etc/init.d y copiar en esa situación el archivo que haremos demonio. cd /etc/init.d cp /CreaDemonios.sh . 2. Situarte en /etc/rc5.d (no hay mucha gente que inicie el PC sin entorno gráfico ) y crear un enlace suave ( "soft link" ) con el nombre SnumeroPrioridadNombrePrograma, pero la prioridad debe ser una que no no esté repetida. cd /etc/rc5.d ln -s /etc/init.d/CreaDemonios.sh ./S09CreaDemonios 3.Por ultimo reiniciamos para aplicar los cambios init 6 El siguiente ejemplo ejecuta todos estos pasos 1.#! /bin/bash 2.clear 3.contador=0 4.declare -a arrayPrioridades 5.usuario=`whoami` 6.if [ "$usuario" = "root" ] 7.then 8.if [ -f /etc/rc5.d/README ] 9. then 10.rm -f /etc/rc5.d/README 11.fi 12. 13.read -p "Introduce la ruta del archivo: " archivo 14.if [ ! -f $archivo ] 15.then 16.echo "El fichero $archivo no existe" 17. exit 3 18.else 19.nombreArchivo=`basename $archivo|cut -d "." -f 1` 20. cd /etc/init.d 21. cp $archivo . 22.chmod 700 ./`basename $archivo` 23.cd /etc/rc5.d 24.for ficheros in `ls .` 25.do 26.nombreFichero=`basename $ficheros` 27.prioridad=`expr substr $ficheros 2 2` 28.arrayPrioridades[$contador]=$prioridad contador=`expr $contador + 1` 29.done 30.contador=1 31.for interiorArray in ${arrayPrioridades}32.do 33.if [ "$contador" != "${#arrayPrioridades}" ]34.then 35.condicion=`expr 36.${arrayPrioridades[$contador]} 37.--$interiorArray` if [ $condicion -gt 1 ] 38.then 39.if [ $interiorArray -lt 10 ] 40.then 41.prioridad=`expr $interiorArray + 1` 42.n -s /etc/init.d/`basename $archivo` ./S0$prioridad$nombreArchivo && echo "Se ha creado el demonio correctamente" 43.chmod 700 ./S0$prioridad$nombreArchivo 44.creado="DEMONIO" 45.break 46.else 47.prioridad=`expr $interiorArray + 1` 48.ln -s /etc/init.d/`basename $archivo` ./S$prioridad$nombreArchivo && echo "Se ha creado el demonio correctamente" 49.chmod 700 ./S0$prioridad$nombreArchivo 50.creado="DEMONIO" 51.break 52.fi 53.fi 54. 55.fi 56.contador=`expr $contador + 1` 57.done 58. 59. 60.fi 61.if [ "$creado" = "DEMONIO" ] 62.then 63.read -n 1 -p "¿Desea reiniciar el ordenador para aplicar los cambios <s/n>? " respuesta 64.if [ "$respuesta" = "s" ] 65.then 66.nit 6 67.fi 68.fi 69.else 70.echo "No eres el root,no puedes ejecutar este script" 71.fi Otra forma de crear un demonio: Esta vez solo se necesitan un par de líneas. 1.Tenemos nuestro script preparado y funcionado, en este ejemplo lo llamaremos demonio.sh 2.Le damos permisos 755 sudo chmod 755 demonio.sh 3.Lo movemos a /etc/init.d 4.Por último lo convertimos sudo update-rc.d demonio.sh defaults Esto es todo, más simple pero de la otra forma se puede ver lo que realmente hace este comando. update-rc.d actualiza automáticamente los enlaces a los scripts de init tipo System V que se encuentran en /etc/rc[nivel_de_ejecución].d/NNnombre y que apuntan a los script etc/init.d/nombre. Cuando se ejecuta con una o varias de las opciones defaults, start, o stop, update-rc.d crea los enlaces /etc/rc[nivel_de_ejecución].d/NNnombre apuntando al script /etc/init.d/nombre. Si se usa la opción defaults entonces update-rc.d creará enlaces para arrancar los servicios en los niveles de ejecución 2345 y parar los servicios en los niveles de ejecución 016.En vez de usar defaults, los niveles de ejecución en los que se arranca o se para un servicio pueden ser especificados explícitamente mediante un conjunto de argumentos: Cada uno de estos conjuntos empieza con un argumentostart o stop para especificar cuándo se van a crear enlaces para arrancar o parar el servicio. Ejecutar un demonio o script sin contraseña Muchas veces necesitamos ejecutar un script en el cual se requiere cambiar de usuario o ejecutarlo con derechos de sudo. Para ello, haremos lo siguiente: En el /etc/sudoers usuario ALL = NOPASSWD: /usr/local/bin/script1, Después, el usuario puede hacer sudo /usr/local/bin/script1 y va a correr como root. Uso de Cron Digamos que el cron se compone básicamente de dos "partes" el daemon y el fichero de configuración. El daemon se llama crond y es el encargado de leer el fichero de configuración /etc/crontab. Lo hace cada 60 segundos, en busca de cambios en dicho fichero e incorporar así tareas al sistema. Nosotros no vamos a entrar en el deamon, ya que bastará que lo marqueis para que se ejecute al iniciar vuestro sistema, esto lo podeis hacer con la herramienta que traiga vuestra distribución sino, siempre podeis recurrir al modo texto con: chkconfig. Bien, una vez editado dicho fichero encontraremos esto: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly El primer campo, como bien veis, es el entorno donde se ejecutarán las órdenes, podeis dejarlo así por defecto, a menos que useis otra shell. El segundo campo está claro, es el valor de la variable PATH, si las ordenes que ejecutará la tarea no se encuentran en dicho PATH, no teneis más que añadirlo. El tercero, manda los outputs del cron al root, o a quien queramos. Si queremos que no se envie nada sólo debemos dejar la variable así: MAILTO="". Los /etc/cron.hourly, daily...son fichero que usa cron para su gestión interna y los lanza cada día. Bien, ahora queremos agregar una tarea a nuestro sistema, ¿cómo se hace?. Debemos saber cómo funcionan los campos del /etc/crontab. El primer campo son los minutos. El segundo campo son las horas. El tercer campo es el día. El cuarto es el día de la semana. El quinto es la orden a ejecutar. Es decir, para el crontab el fichero es así: minute hour day month dayofweek command Hay que destacar que los minutos deben ser enteros de entre 0-59. Las horas, enteros de 0-23. Días, 1-31. (Para meses que los tengan, claro.) Meses, 1-12, también se pueden usar nombres cortos, (en inglés) jan, feb...(se aconseja usar números). Días de la semana, se usan enteros 1-7 (al igual que en los meses, se puede usar el nombre corto, pero tambien lo desaconsejamos, en favor de los números.) Y por último la orden, por ejemplo puede ser: ls -h > /home/manssson/ls.txt. Con esto ya deberíamos ser capaces de crear y hacer funcionar cualquier tarea, pero cron tiene alguna más utilidades que conviene saber. Por ejemplo, si ponemos un asterisco (*) en algún campo, por ejemplo el mes, esto hará que se ejecute la orden todos los meses, y luego respetará los demás valores, tales como el día o la hora. Si queremos indicar un rango de enteros, lo haremos con un guión (-). Si queremos indicar enteros separados, se harán con comas (,), por ejemplo: 1, 2, 3. Podemos concretar o excluir valores usan la barra (/), es decir, si queremos que una orden se ejecute durante los 0-59 minutos de una hora menos en el minuto 15, pues lo marcaremos haciendo:0-59/15. También podemos hacer que una orden que se ejecute en un determinado minuto, haciendo:*/25. Esto hará que nuestra tarea se ejecute siempre en el minuto 25. El uso de la barra (/) y el asterisco (*) puede emplearse en todos los campos. Si queremos que una tearea no sea ejecutada sólo debemos comentar esa linea al principio con la "almohadilla" (#): #30 18 8 * * root rm -f /var/cache/apt/archives/*.rpm. Otra opción es copiar el script en alguna de las carpetas por defecto cron.* Por ejemplo, si queremos una periodicidad diaria, lo copiaremos en /etc/cron.daily Con todo esto ya podremos incorporar tareas a nuestro sistema de forma automática. Espero les sea de mucha utilidad cuando uno empieza con el tema de los script ya no para