RG 350 transferir archivos por USB desde Linux

Ayer me llegó la consolita desde China y, aunque se puede sacar la sdcard para transferir archivos, estuve trasteando para ver como acceder a ella desde mi PC. En mi caso estoy en Manjaro Linux con XFCE.

Conectaremos el dispositivo a nuestro PC por el USB2 (ya que por el USB1 no lo detecta). A continuación listaremos los dispositivos connectados por USB para comprobar que la detecta ejecutando:

lsusb

La salida será similar a esta:

Bus 002 Device 001: ...
Bus 001 Device 003: ...
Bus 001 Device 002: ...
Bus 001 Device 006: ID 0525:a4a2 Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget
Bus 001 Device 001: ...

La entrada que nos interesa es:

Bus 001 Device 006: ID 0525:a4a2 Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget

En el icono del panel donde se encuentran las conexiones de red veremos que ha aparecido una nueva conexión que apunta a este dispositivo. En mi caso se llama Wired connection 2. Haciendo click con el botón derecho seleccionaremos Edit connections… y haremos doble click sobre Wired connection 2 para editarla.

En la pestaña IPv4 Settings , en el desplegable Method seleccionaremos Link-local Only

En la pestaña IPv6 Settings seleccionaremos como método Ignore.

A continuación, en la consola, abriremos la aplicación Network y veremos que el dispositivo tiene la IP 10.1.1.2 (por lo menos en mi caso). También indica que el usuario root no tiene password. En un futuro supongo que será recomendable añadirle un password. Aunque yo todavía no lo he hecho.

A continuación abriremos el gestor de archivos (en mi caso Thunar) e introduciremos en la barra de direcciones:

sftp://root@10.1.1.2/

De esta forma ya podemos copiar ficheros a la sdcard sin tener que sacarla del dispositivo. Para ello accederemos a la ruta /media/sdcard.

Saludos y espero que os sirva

Manjaro skypeforlinux-stable-bin de AUR no arranca

En Manjaro he instalado el paquete skypeforlinux-stable-bin del AUR. Al lanzar el programa de forma gráfica no sucede nada.

En mi caso, la solución era cambiar los permisos a un fichero:

sudo chmod 4755 /usr/share/skypeforlinux/chrome-sandbox

Pasos que he seguido

Para saber que comando se está ejecutando. Edito el lanzador pulsando sobre el icono de skype con el botón derecho y seleccionando Edit Application... Dependiendo del escritorio que utilices este paso puede variar. Posiblemente el ejecutable sea el mismo.

Veo el comando que lanza y abro un terminal y lo ejecuto:

skypeforlinux

No sucede nada. No sale nada por pantalla. Tampoco ejecutando con el flag --help.

skypeforlinux --help

Utilizando el comando which puedo averiguar en qué carpeta se encuentra el programa.

which skypeforlinux 
/usr/bin/skypeforlinux

Utilizando el comando file puedo ver qué tipo de fichero es. En este caso se trata de un shell script ejecutable:

file /usr/bin/skypeforlinux
/usr/bin/skypeforlinux: POSIX shell script, ASCII text executable

Como se trata de un fichero de texto, con el comando cat puedo ver el contenido del mismo:

cat /usr/bin/skypeforlinux         
#!/bin/sh

SCRIPT=$(readlink -f "$0")
USR_DIRECTORY=$(readlink -f $(dirname $SCRIPT)/..)

SKYPE_PATH="$USR_DIRECTORY/share/skypeforlinux/skypeforlinux"
SKYPE_LOGS="$HOME/.config/skypeforlinux/logs"

mkdir -p $SKYPE_LOGS

nohup "$SKYPE_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$SKYPE_LOGS/skype-startup.log" 2>&1 &

Lo interesante de aquí es que veo que deja ficheros de log en el directorio $HOME/.config/skypeforlinux/logs.

Nuevamente, usando el comando cat, puedo ver el contenido del fichero skype-startup.log y así ver la raíz del problema:

cat $HOME/.config/skypeforlinux/logs/skype-startup.log
[18808:0821/073145.392216:FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /usr/share/skypeforlinux/chrome-sandbox is owned by root and has mode 4755.

Cambio los permisos al fichero tal y como se indica.

sudo chmod 4755 /usr/share/skypeforlinux/chrome-sandbox

Con esto se soluciona y ya arranca normalmente.

Manjaro. Gestor de paquetes no funciona. Mensaje «Synchronizing package databases»

Al actualizar Manjaro llevaba un par de días que se me quedaba colgado con el mensaje «Synchronizing package databases».

Esto significa que la réplica (mirror) de los servidores que estás utilizando no está funcionando adecuadamente.

Técnicamente este es el comando que selecciona el mirror más rápido y sincroniza el sistema:

sudo pacman-mirrors --fasttrack && sudo pacman -Syyu

En mi caso siempre me estaba seleccionando el mismo servidor que ya tenía por lo que el problema persistía. Con lo que he decidido cambiar por los de otro país (Alemania):

sudo pacman-mirrors --country Germany && sudo pacman -Syyu

Con esto ya puedo actualizar.

Una forma de organizar la configuración de la shell

A medida que voy instalando herramientas de desarrollo como por ejemplo SDKMAN!, Anaconda, Node Version Manager, el fichero .zshrc va aumentando en tamaño y complejidad.

Para mantener cada una de estas configuraciones de forma independiente y poder compartirlas entre varios equipos lo que hago es tener un directorio ~/.aliases donde voy añadiendo un fichero *.aliases para cada configuración. Hay que remarcar que no hay problema en aplicar esta solución si en lugar de zsh usamos bash.

Este directorio lo tengo sincronizado entre varios equipos a través de git y gitlab.com.

En el fichero ~/.zshrc, al final de todo, he añadido las siguientes líneas. Estas línea le indican a la shell que ejecute todos los scripts con extensión *.aliases que se encuentran en el directorio ~/.aliases:

for file in $(ls -1 ~/.aliases/*.aliases | sort); do
	source $file
done

Además los scripts se ejecutan de forma ordenada por nombre.

Estos son los ficheros que tengo dentro de la carpeta ~/.aliases actualmente.

ls -1 .aliases/*
.aliases/android.aliases
.aliases/conda.aliases
.aliases/custom.aliases
.aliases/nvm.aliases
.aliases/sdkman.aliases
.aliases/tilix.aliases
.aliases/venv.aliases

En los siguientes apartados se muestra el contenido de los diferentes ficheros de configuración:

sdkman.aliases

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"

conda.aliases

# added by Anaconda3 2018.12 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/opt/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/opt/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base
    else
        \export PATH="/opt/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda init <<<

conda deactivate

nvm.aliases

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

tilix.aliases

if [ $TILIX_ID ] || [ $VTE_VERSION ]; then
        source /etc/profile.d/vte.sh
fi

android.aliases

export PATH=$PATH:$HOME/Android/Sdk/tools:$HOME/Android/Sdk/platform-tools

venv.aliases

venv-activate() {
        if [ ! -f "$HOME/.virtualenvs/$1/bin/activate" ]; then
                echo "virtual environment '$1' doesn't exists"
                return 1
        fi
        source $HOME/.virtualenvs/$1/bin/activate
}

custom.aliases

source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh

alias src="cd $HOME/Src"
alias doc="cd $HOME/Qsync/Documents"

Almacenar las credenciales de docker registry de forma más segura

Cuando haces login en un docker registry por defecto almacena las credenciales (basic auth) en un fichero de texto sin encriptar en $HOME/.docker/config.json.

Para que no almacene las credenciales ahí y utilice el almacen del sistema (por ejemplo gnome-keyring):

Descargar una release de este proyecto:

https://github.com/docker/docker-credential-helpers/

En este momento la versión es 0.6.0 y puede ser descargada de aquí:

https://github.com/docker/docker-credential-helpers/releases/download/v0.6.0/docker-credential-secretservice-v0.6.0-amd64.tar.gz

Extraer el fichero docker-credential-secretservice y colocarlo en algún sitio en el $PATH.

Hacer logout de los registry a los que estés logado actualmente:

$ docker logout docker.registry.url

Modificar $HOME/.docker/config.json añadiendo la clave credStore con el valor secretservice.

{
  "auths": {
    "docker.registry.url": {}
  },
  "HttpHeaders": {
    "User-Agent": "Docker-Client/18.09.1 (linux)"
  },
  "credsStore": "secretservice"
}

Esto es para GNU/Linux, para el resto de sistemas ver el siguiente enlace ya que no lo he probado:

https://docs.docker.com/engine/reference/commandline/login/#credentials-store