Saltar a contenido

Ubuntu

Enlaces

Ficheros interesantes

Fichero Utilidad
/usr/lib/os-release Información sobre la distribución

Aplicaciones interesantes

Paquetes a instalar en Xubuntu

  • font-viewer: Visor/instalador de tipos de letra.
  • python3-pip: PIP instalado desde los repositorios (facilita la instalación de virtualenvwrapper).
  • python-is-python3: Abre Python3 ejecutando python.
  • android-file-transfer: Para transferir ficheros por MTP (hacia Android o las Oculus Quest).
  • qpdfview: Visor PDF.
  • thunar-archive-plugin: Crear archivadores y descomprimir desde Thunar.
  • gvfs gvfs-common gvfs-backends gvfs-fuse thunar-volman: Soporte MTP para Android.

Servicios interesantes

Problema con aplicaciones root en Wayland

Hay que ejecutar el comando:

1
xhost si:localuser:root

Se puede automatizar en el arranque añadiendo el comando en las Aplicaciones al incio (fuente).

Configuración de opción predeterminada en GRUB

Fuente

  1. Editar fichero /etc/default/grub y modificar el parámetro GRUB_DEFAULT dando el valor saved en lugar del valor numérico que encontraremos.
  2. Ejecutar sudo update-grub.
  3. Ejecutar sudo grub-set-default N siendo N la posición de la entrada del menú de GRUB que queremos que actúe como predeterminada (contando desde 0).

Problemas con GRUB

Reinstalar GRUB 2

Solución problemas wifi en 11.04 y 11.10

Help with Ubuntu: Fix slow WiFi in Ubuntu 11.04

Solución problema Wireshark en trusty y utopic

liboverlay-scrollbar hangs Wireshark

Actualización de Intrepid a Jaunty

Tras actualizar de Intrepid a Jaunty se observa un empobrecimiento del rendimiento gráfico en equipos con gráficas integradas Intel 945. En las siguientes páginas explican como hacer downgrade al controlador Intel que había en Intrepid:

Otro truco que también funcionó sin necesidad de hacer lo anterior fue reconfigurar xorg a la configuración por defecto y luego en la composición de múltiples monitores, situar uno debajo del otro en lugar de uno al lado del otro.

Actualización de raring a saucy

Apache cambia de versión de 2.2 a 2.4. Aquí encontré solución a los problemas que eso supuso.

Recursos gráficos

/usr/share/icons
/usr/share/app-install/icons
/usr/share/pixmaps
/usr/share/icons/gnome
/usr/share/icons/hicolor
/usr/share/icons/Human
/usr/share/icons/Humanity        <---
/usr/share/icons/oxygen
/usr/share/icons/default.kde4    <---

Convertir un video a formato 3GP (H263+AAC)

$ sudo -E wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update && sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && sudo apt-get --quiet update
  • Instalar el codificador y los codecs:
$ sudo aptitude install ffmpeg libavcodec-extra-53
  • Codificar el video:
$ ffmpeg -i EspacioMudejar.wmv -s qcif -vcodec h263 -acodec libfaac -ac 1 -ar 8000 -r 25 -ab 32 -strict experimental -y EspacioMudejar.3gp

Las opciones más importantes son:

  • ar: Frecuencia de audio
  • r: framerate
  • ab: Audio bitrate en kbps

Convertir APE a WAV

Los ficheros .ape con que se distribuyen algunos CD's se puede convertir a WAV para poder quemarlo a un CD (con un fichero .cue que normalmente acompaña al .ape se puede quemar directamente con el Burn del Mac por ejemplo) instalando el paquete ffmpeg y ejecutando el siguiente comando:

$ ffmpeg -i fichero.ape fichero.wav

Hay que acordarse de sustituir dentro del fichero .cue la referencia al fichero original .ape por el nuevo .wav.

Convertir FLAC a WAV

Los ficheros .flac con que se distribuyen algunos CD's se puede convertir a WAV para poder quemarlo a un CD (con un fichero .cue que normalmente acompaña al .flac se puede quemar directamente con el Burn del Mac por ejemplo) instalando el paquete flac y ejecutando el siguiente comando:

$ flac -d fichero.flac

Hay que acordarse de sustituir dentro del fichero .cue la referencia al fichero original .flac por el nuevo .wav.

Restaurar panel Gnome

(fuente 1; fuente 2)

$ gconftool --recursive-unset /apps/panel
$ rm -rf ~/.gconf/apps/panel
$ pkill gnome-panel

Concatenar PDF's

Con pdftk programa en linea de comando para procesar ficheros PDF. Está para casi todas las plataformas.

$ sudo aptitude search pdftk
i pdftk - A useful tool for manipulating PDF documents

$ sudo aptitude install pdftk

Concatenar todos los archivos facilmente que tengas en una carpeta:

$ pdftk carpeta_con_todos_ficheros/*.pdf cat output fichero_concatenado.pdf

Tiene muchas mas funcionalidades consultables con –help, pero si quieres, puedes echarle un vistazo a un articulo de Linux-Magazine “PDF a tope”.

APOD

Programa para descargar y ajustar como fondo de escritorio la imagen astronómica del día de la web APOD. Es necesario que se encuentre Python instalado en el sistema.

Instalar el siguiente script en algún lugar:

#!/usr/bin/python

#APOD in the GNOME desktop
#Author: Rodrigo Rivas Costa.
#Mail:  rodrigorivascosta@gmail.com
#Web:   http://rodrigo.dualnot.com/

# This program is in public domain, so do whatever you wish with it,
# although it'd be nice if you keep the above notice.
# Just don't blame me if it blows your computer.

import urllib
import gconf
import os

dir = os.getenv('HOME') + '/.apod'
try:
    os.mkdir(dir)
except:
    pass

try:
    execfile(dir + '/options.py')
except:
    pass

def DoAPOD():
    u = urllib.urlopen('http://apod.nasa.gov/apod/')
    KEY1 = 'href="'
    KEY2 = '"'
    image = None
    for line in u.readlines():
        pos1 = line.find(KEY1)
        if pos1 == -1:
            continue
        pos1 += len(KEY1)
        pos2 = line.find(KEY2, pos1)
        if pos2 == -1:
            continue
        href = line[pos1:pos2]
        hrefl = href.lower()
        if hrefl.endswith('.jpg') or hrefl.endswith('.png'):
            image = href
            break
    u.close()

    if not image:
        return

    image_base = os.path.split(image)[-1]
    image_base_ext = os.path.splitext(image_base)
    image_base = 'apod' + image_base_ext[-1]

    if not (image.startswith('http:') or image.startswith('ftp:')):
        if not image.startswith('/'):
            image = '/apod.nasa.gov/apod/' + image
        image = 'http:/' + image

    img = urllib.urlopen(image)
    d = img.read()
    img.close()

    try:
        os.unlink('apod.jpg')
    except:
        pass
    try:
        os.unlink('apod.png')
    except:
        pass

    name = dir + '/' + image_base
    f = file(name, 'wb')
    f.write(d)
    f.close()

    cli = gconf.client_get_default()
    cli.set_string('/desktop/gnome/background/picture_filename', name)
    cli.set_string('/desktop/gnome/background/picture_options', 'zoom')

if __name__ == '__main__':
    DoAPOD()

Por último programar una tarea en cron para ejecutar el script con el usuario al que queramos que se aplique el fondo de escritorio. Por ejemplo introduciendo la siguiente línea en /etc/crontab para que se ejecute a las 10 de la mañana:

00 10   * * *   edumoreno       /home/edumoreno/.apod/apod

En el ejemplo se ha puesto como ejemplo el usuario edumoreno así como su home.

Instalar Oracle Java

(Fuentes: 1 y 2)

Movemos la carpeta creada después de la instalación (llamada jre1.7.0_05 en este ejemplo) a una ruta más apropiada:

$ sudo mv jre1.7.0_05 /usr/lib/jvm

Establecemos el nuevo Java como una de las "alternativas de java":

$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jre1.7.0_05/bin/java" 1

Ahora establecemos la "nueva alternativa" como la real de Java. Este paso hace que la versión de Oracle sea la usada por defecto:

$ sudo update-alternatives --set java /usr/lib/jvm/jre1.7.0_05/bin/java

Para comprobar si tenemos la versión 1.7.0, tecleamos en la terminal:

$ java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)

Para ver cómo ha quedado el estado de las alternativas:

$ update-alternatives --config java

Para ver físicamente cómo han quedado las alternativas relativas a java:

$ ls -l /etc/alternatives/java*

Si nos interesa borrar alguna de las alternativas (por ejemplo una para java):

$ sudo update-alternatives --remove java /usr/lib/jvm/jdk1.8.0_20/bin/java

Hay un PPA para poder instalar el JDK más fácilmente. Se pueden ver las instrucciones aquí. Desafortunadamente dejó de funcionar a mediados de abril de 2019 por cambios en la política de distribución de Java por parte de Oracle. A partir de ahora instalar manualmente siguiendo estas instrucciones o instalar el JDK que se distribuye en forma de .deb.

Reparación del sistema de archivos cuando se pone en modo "sólo lectura"

$ sudo fsck

Descarga de un vídeo incrustado en un reproductor Flash

Fuente

Hacer captura Wireshark. Filtrar los paquetes RTMP con el filtro: "rtmpt". Localizar en los paquetes RTMP los comandos Handshake o Invoke la base de la url, lo que está en una propiedad llamada "tcUrl". Por ejemplo en un vídeo de Antena3 de F1 esta propiedad valía:

rtmp://antena3tvfs.fplive.net/antena3mediateca

Luego localizar el fichero en concreto. Suele estar en otro paquete y está relacionado con el comando "play". En el caso del ejemplo anterior salía:

mp4:mp_series1/f1cms/gestorf1/videos/517/VIDEOS_20130512_1315517.mp4

Unir las dos piezas para construir la URL completa:

rtmp://antena3tvfs.fplive.net/antena3mediateca/mp_series1/f1cms/gestorf1/videos/517/VIDEOS_20130512_1315517.mp4

Descargar el stream con el comando "rtmpdump":

$ rtmpdump -r "rtmp://antena3tvfs.fplive.net/antena3mediateca/mp_series1/f1cms/gestorf1/videos/517/VIDEOS_20130512_1315517.mp4" -o archivo.mp4

En ocasiones se produce el error siguiente:

WARNING: Received FLV packet before play()! Ignoring.

En estos casos utilizar el siguiente comando que separa las dos porciones de la URL:

$ rtmpdump -r "rtmp://alacarta.aragontelevision.es/vod" -y "mp4:/_archivos/videos/web/15288/15288.mp4" -o archivo.flv

Para vídeos de emisiones en vivo hay que añadir la opción -v. Por ejemplo, en una emisión de AragónTV, en la captura Wireshark se localizaron los siguientes elementos:

  • Paquete Handshake S2 => tcUrl = rtmp://aragontvlivefs.fplive.net/aragontvlive-live
  • Paquete play => valor = stream_normal_abt

Así pues la URL final será: rtmp://aragontvlivefs.fplive.net/aragontvlive-live/stream_normal_abt y el comando de descarga:

$ rtmpdump -v -r "rtmp://aragontvlivefs.fplive.net/aragontvlive-live/stream_normal_abt" -o archivo.mp4

Para descargar vídeos desde YouTube, last.fm, Google video, Dailymotion y Vimeo se puede utilizar el comando clive. Aquí comentan cómo se usa.

Descarga vídeo de A3Player

Enlaces

Las carreras de Formula1 últimamente son emitidas en el formato HLS. Para descargar una carrera empezar haciendo una captura con Wireshark desde el momento en que se le da al Play hasta que se empieza a ver parte del vídeo (esperando que terminen los anuncios). Luego filtrar en Wireshark con la siguiente expresión:

http.request.uri contains "playlist.m3u8"

Localizar la URL de descarga del fichero playlist.m3u8. Por ejemplo podría ser:

http://geodeswowa3player.antena3.com/vcg/_definst_/mp4:assets3/2013/10/26/E6941C5D-2A9F-414B-B3FF-01FAC33073C4/sigra.mp4/playlist.m3u8?pulse=assets3%2F2013%2F10%2F26%2FE6941C5D-2A9F-414B-B3FF-01FAC33073C4%2F%7C1382835190%7Cb23df1201096fc1cc490427e05307f70

Compresión batch de vídeos

Instalar el cliente de linea de comando de Handbrake.

Dependiendo de la extensión habrá que cambiar el ls inicial. Los vídeos de salida son MP4, por lo que si la extensión inicial no es esa, habrá que cambiarla en los ficheros finales.

$ mkdir comp
$ ls *.mp4 | awk '{print "HandBrakeCLI -Z Normal -i "$0" -o comp/"$0}' | sh

Resampleado de video con HandBrake

(Fuente)

On the Video tab use Avg Bitrate and use 2500 to 3000 depending if a big action movie(3000) or if less fast action/movement in the movie(2500). Make sure to click on 2-Pass Encoding and Turbo first pass.

Split de vídeos

(Fuente)

Con el siguiente comando:

$ ffmpeg -i archivo_original.mp4 -codec copy -ss 00:00:00 -t 00:04:09 archivo_recortado.mp4

Donde el valor de la opción -ss es el instante de inicio en hh:mm:ss y el valor de -t es la longitud en hh:mm:ss

Es importante respetar el orden de las opciones, sobre todo poner al principio la opción -i que indica el fichero de entrada. De no hacerlo así (se explica aquí) las opciones de codec no saben localizar bien los codecs del fichero de entrada.

Durante un tiempo en Ubuntu, ffmpeg no estuvo disponible. Su sustituto fue avconv, compatible la mayoría de las veces. No admitía sin embargo la opción de copiar el codec de audio y vídeo. Había que especificarlo. Una lista de encoders soportados se puede obtener ejecutando:

$ avconv -encoders

Un par de codecs comprobados que suelen dar buen resultados son h264 y aac:

ffmpeg -i archivo_original.mp4 -acodec aac -vcodec h264 -ss 01:07:38 -t 00:01:14 archivo_recortado.mp4

Crop en video

$ ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4

donde:

  • w: ancho final
  • h: alto final
  • x: coordenada x del punto superior izquierdo del recuadro
  • y: coordenada y del punto superior izquierdo del recuadro

Extraer frame de video

$ ffmpeg -i input.mp4 -ss 00:01:00 -frames:v 1 frame.png

donde el argumento -ss marca el instante del frame en hh:mm:ss

Redimensionado de imágenes en lote

Por ejemplo a 1080 de alto manteniendo el ratio dentro de un directorio llamado resized:

$ convert '*.jpg[x1080]' resized/%03d.jpg

En ocasiones, si hay varios miles de fotos, se puede llenar la memoria. En este caso hacer la conversión con el siguiente comando, que trata las imágenes una a una:

a=1
for i in *.jpg; do
  new=$(printf "%04d.jpg" ${a})
  convert ${i}[x1080] resized/${new}
  let a=a+1
done

Crop y resize de imágenes en lote

a=1
for i in *.jpg; do
  new=$(printf "%04d.jpg" ${a})
  convert ${i} -crop wxh+x+y -resize wsxhs -gravity Center ${new}
  let a=a+1
done

donde:

  • w: ancho del crop
  • h: alto del crop
  • x: posición horizontal esquina superior derecha del crop
  • y: posición vertical esquina superior derecha del crop
  • ws: ancho del reescalado final
  • hs: alto del reescalado final

Conversión de formato en lote

for file in *.jpg; do
  filename=$(basename "$file")
  fileid=${filename%%.*}
  convert ${filename} ${fileid}.png
done

Renombrado de archivos en lote

Por ejemplo una serie de archivos jpg:

a=1
for i in *.jpg; do
  new=$(printf "%04d.jpg" ${a})
  mv ${i} ${new}
  let a=a+1
done

Compresión de ficheros en lote

for file in *.col; do
  filename=$(basename "${file}")
  fileid=${filename%%.*}
  7z a "${fileid}.7z" "${filename}"
done

Sustitución de cadena en ficheros en lote

for file in *.cfg; do
  filename=$(basename "${file}")
  fileid=${filename%%.*}
  sed -i 's/ShowFps 1/ShowFps 0/' "${file}"
done

Montaje de vídeo StopMotion a partir de imágenes

A 10fps por ejemplo (Fuente):

$ ffmpeg -f image2 -r 10 -i %04d.jpg -vf scale=1440:1080 -r:v 10 -c:v libx264 -qp 0 -preset veryslow -an "video.mkv"

Montaje de gif a partir de imágenes

convert -delay n -loop 0 *.jpg output.gif

donde:

  • n: milisegundos entre cada frame.

Configurar Wireshark para poder capturar con usuarios no-root

Ejecutar lo siguiente:

$ sudo dpkg-reconfigure wireshark-common
$ sudo usermod -a -G wireshark <usuario>

Reiniciar la sesión.

Solucionar el problema con Wireshark en las últimas versiones de Ubuntu

Cuando se inicia una captura, se cuelga Wireshark, emitiendo una serie infinita de errores de GTK en consola. En esta página comentan varios workarrounds. Por ejemplo editando el fichero /usr/share/applications/wireshark.desktop y cambiando la línea de ejecución por:

Exec=env LIBOVERLAY_SCROLLBAR=0 wireshark %f

Ficheros implicados en arranque

  • /etc/rc.local: This script is executed at the end of each multiuser runlevel.

Montar imagen de disco o partición

(Fuente)

  1. Averiguar la estructura de las particiones:

    $ fdisk -l Rpi_8gb_wheezy_backup.img
    Disco Rpi_8gb_wheezy_backup.img: 7,5 GiB, 8068792320 bytes, 15759360 sectores
    Unidades: sectores de 1 * 512 = 512 bytes
    Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
    Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
    Tipo de etiqueta de disco: dos
    Identificador del disco: 0x000981cb
    
    Dispositivo                Inicio Comienzo    Final Sectores Tamaño Id Tipo
    Rpi_8gb_wheezy_backup.img1            8192   122879   114688    56M  c W95 FAT32 (LBA)
    Rpi_8gb_wheezy_backup.img2          122880 15759359 15636480   7,5G 83 Linux
    
  2. Calcular el offset multiplicando el sector de comienzo de la partición por el tamaño del sector:

    122880 * 512 = 62914560
    
  3. Montar:

    $ sudo mount -t ext4 -o loop,offset=62914560,ro,noexec Rpi_8gb_wheezy_backup.img mnt
    

Screencast

$ avconv -f x11grab -r 25 -s 910x550 -i :0.0 -vcodec huffyuv screencast.avi

Gestión de módulos

Añadir un módulo al kernel

$ sudo modprobe <modulo>

Si se quiere añadir de forma permanente, es decir, de forma automática en el arranque, se incorpora el nombre del módulo al fichero /etc/modules.

Cuando el módulo que se carga es un driver de un dispositivo, el kernel envía un evento al subsistema udev. La monitorización de estos mensajes se puede hacer teniendo abierto un terminal con el siguiente comando lanzado (fuente):

$ udevadm monitor --property

Listado de módulos

$ lsmod

Información de un módulo

$ modinfo <modulo>

Ficheros definición variables de entorno

Si se necesita definir una variable global se podrá hacer en los ficheros:

  • /etc/environment
  • /etc/profile
  • /etc/profile.d
  • /etc/bashrc o /etc/bash.bashrc

Si es a nivel de usuario se hará en:

  • ~/.bashrc
  • ~/.bash_profile

Poner barras de scroll normales

gsettings set com.canonical.desktop.interface scrollbar-mode normal

Skype en tray

Instalar los paquetes sni-qt y sni-qt:i386.

Workrave en tray

Fuente

gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"

Localización de ficheros .desktop

  • Los del usuario se encuentran en: ~/.local/share/applications
  • Los del sistema en: /usr/share/applications

Configuración de gedit

Al menos las últimas versiones de gedit no tienen un panel de ajustes para las opciones predeterminadas. Cada vez que arranca aparecen preajustados 8 espacios como anchura del tabulador y no sustituye por espacios. Puede sacarse una lista de todos los ajustes que se pueden cambiar con el siguiente comando:

gsettings list-recursively | grep -i gedit.preferences.editor

Los ajustes del tabulador mencionados antes, para pasar a 4 espacios, ejecutar:

gsettings set org.gnome.gedit.preferences.editor insert-spaces true
gsettings set org.gnome.gedit.preferences.editor tabs-size 4

Otro ajuste interesante es el del wrap mode. Se puede hacer con (puede valer 'none', 'word', 'char', o 'word-char'):

gsettings set org.gnome.gedit.preferences.editor wrap-mode 'word'

Localizar paquete que contiene un fichero

(Fuente)

  1. Instalar apt-file:

    $ sudo apt-get install apt-file
    
  2. Actualizar su base de datos:

    $ sudo apt-file update
    
  3. Hacer la búsqueda:

    $ apt-file search <fichero_con_ruta>
    

Configuración de idiomas del sistema (locales)

$ sudo dpkg-reconfigure locales

Configuración de SWAP en disco SSD

Siguiendo [esta página], añado lo siguiente al fichero /etc/sysctl.conf para bajar el 60% que usa Ubuntu por defecto a 10%:

vm.swappiness=10

Buscar paquetes

  • Encontrar un paquete por su nombre: apt-cache search 'cadena'
  • Encontrar un paquete que contiene un fichero: apt-file search 'fichero'

Limpieza de paquetes snap

Localizar los paquetes desactivados con:

$ snap list --all|fgrep desactivado

Y luego borrarlos con:

$ snap remove --revision XXX NOMBRE

Por ejemplo:

edumoreno@eduardo-HP-Folio-13:~$ snap list --all|fgrep desactivado
canonical-livepatch   9.7.3                       105    latest/stable    canonical*  desactivado
chromium              94.0.4606.81                1781   latest/stable    canonical*  desactivado
edumoreno@eduardo-HP-Folio-13:~$ snap remove --revision 105 canonical-livepatch
canonical-livepatch (revisión 105) eliminado
edumoreno@eduardo-HP-Folio-13:~$ snap remove --revision 1781 chromium
chromium (revisión 1781) eliminado

Montar ext4 para usuario

Normalmente al automontar una partición ext4 se respetarán los ID's de los propietarios:grupos de los ficheros. Para montar temporalmente con permisos ajustados para un usuario, utilizar bindfs de esta forma:

# El punto de partida es una partición automontada de esta forma:
# /dev/sdb1                                   306616440      64348   290907216   1% /media/edumoreno/47acea17-841f-42d3-85f2-886543f056db
sudo bindfs -u $(id -u) -g $(id -g) /media/edumoreno/47acea17-841f-42d3-85f2-886543f056db /home/edumoreno/mnt/

Cambiar ID de usuario

Por ejemplo para sincronizar con los IDs de un sistema de archivos montado por NFS y así no tener problemas de permisos. En el siguiente ejemplo se cambia el ID del usuario edumoreno a 1002:

sudo usermod -u 1002 edumoreno