comparando un paquete .pkg.tar.xz (Arch), un .rpm (OpenSuse) y un .deb (Debian)

¿Qué tienen dentro los paquetes que instalamos desde los repositorios de nuestras distros linux?

No me apetecía buscar información teórica de esto por internet, quería investigarlo yo mismo, por lo que me he puesto manos a la obra y he elegido un paquete, en este caso el editor de texto simple Leafpad, he seleccionado mis tres distros favoritas (que en mi opinión son las 3 mejores distribuciones GNU/Linux que existen), he descargado la última versión del paquete “leafpad” que había en cada una (la 0.8.18.1) y aquí los tengo sobre la mesa de disección listos para ser destripados. ¡Bisturí!

Los tres paquetes obtenidos son archivos comprimidos, aunque cada uno lleve al final la extensión de su sistema de instalación pueden ser descomprimidos en una carpeta como si de un zip, un rar o un 7z se tratase.

No voy a hacer ningún análisis sesudo, dejo eso para gente con más formación en programación y paquetería linux que yo. Esto es una mera descripción de laboratorio. Una apertura de cajas chinas para linuxeros curiosos. Nada más. Empecemos:

 
paquete ARCHLINUX: leafpad-0.8.18.1-4-x86_64.pkg.tar.xz

descomprimimos el paquete y nos sale un directorio llamado leafpad-0.8.18.1-4-x86_64.pkg que contiene dentro una única carpeta:

paquete-arch
podemos ver que en el caso de ARCH todo es muy simple, tan sólo una carpeta usr que contiene dos subcarpetas, una bin con el binario (ejecutable) y otra share que contiene el típico archivo .destktop (para colocar el lanzador de la aplicación) así como los iconos y los locales de idioma. Será el poderoso pacman de ARCH quien se encargará de colocar cada cosa en su sitio y listo. Simple y perfecto, puro ArchLinux.

 
paquete OPENSUSE: leafpad-0.8.18.1-9.1.3.x86_64.rpm

como todo el mundo sabe, los paquetes de OpenSuse (así como los de Fedora, CentOS, Mageia, etc, etc) llevan la extensión .rpm. Es ese mundo de las distros Linux que yo llamo “rpm world” o mundo rpm. A diferencia del paquete de ARCH, que se descomprime sin problema alguno, el paquete .rpm he tenido que renombrarlo a .rar para poder descomprimirlo, hecho lo cual, sí que se descomprime y lo que tiene dentro es otro paquete comprimido con la extensión .cpio que si a su vez lo descomprimimos obtenemos como resultado una carpeta usr:

paquete-opensuse

tal y como podemos ver el contenido y organización es similar al paquete de ARCH, sólo que aquí también hay un subdirectorio doc dentro de share que contiene algunos documentos de texto simple descriptivos y de contenido legal del paquete. Excelentes programas de OpenSuse como yum o zypper, se encargarán de todo en la instalación.

 
paquete DEBIAN: leafpad_0.8.18.1-4_amd64.deb

supongo que los paquetes .deb son los archivos de instalación más famosos del mundo GNU/Linux. Debian, es tal vez la más grande distro que existe (para qué negarlo aunque algunos tengamos otras preferencias). La fuerza del mundo de paquetes deb reside no sólo en la misma Debian, sino en que es madre y abuela de otras grandes distribuciones muy conocidas, como UBUNTU y LinuxMint.
El paquete .deb se descomprime sin problemas dándonos el directorio leafpad_0.8.18.1-4_amd64 que contiene “cositas” diferentes a los paquetes anteriores, como podemos ver:

paquete-debian1
vemos que hay 3 archivos: un pequeño archivo de texto llamado debian-binary que tan sólo contiene un número de versión (2.0) y dos archivos comprimidos, data.tar.xz y control.tar.gz. Descomprimamos el primero a ver qué contiene:

paquete-debian2

vemos que data.tar.xz contiene el típico directorio usr, con los consabidos subdirectorios bin y share. En este caso share contiene aún más archivos que en OpenSuse, pues los chicos de Debian han incluido también las páginas man de Leafpad.

Descomprimamos finalmente control.tar.gz :

paquete-debian3contiene un directorio control dentro del cual hay scripts e información importante del paquete como por ejemplo sus dependencias. El superfamoso programa de instalación de Debian APT se encargará de leer este directorio de control para instalar correctamente el paquete.

 
Conclusión: 3 formas distintas de hacer un excelente trabajo, desde la simplicidad de ARCH hasta la exhaustividad de DEBIAN, con el punto medio del equilibrio y bien hacer de OPENSUSE. Hazlo como quieras, pero hazlo bien.

compilar e instalar zuluCrypt en ARCH, UBUNTU, DEBIAN y OpenSuse (y en Linux Mint, Elemetary, etc)

zulucrypt2

(este artículo ha sido actualizado en abril de 2015 a Zulucrypt 4.7.5 y compilado e instalado en Debian 8)

zuluCrypt es, simplemente, la mejor alternativa a Truecrypt para GNU/Linux. Se puede usar en consola/terminal, pero también mediante una interfaz gráfica muy fácil de usar. Los usuarios de ARCH e hijas (Manjaro, Antergos, etc) lo tienen muy fácil, pues está en AUR.

yaourt zulucrypt

y solucionado.

En Debian, hay algún paquete en el repositorio Siduction Experimental/Unstable pero no está actualizado a la última versión, por lo tanto es mejor bajarla desde la web oficial y compilarla e instalarla.

Yo he compilado e instalado con éxito zuluCrypt en UBUNTU 14.04 y Debian 8.

Bajamos el paquete comprimido desde aquí: http://mhogomchungu.github.io/zuluCrypt/

en mi caso he descargado la última versión que había: zuluCrypt-4.7.5.tar.bz2

Descomprimimos en un directorio.

Entramos en el directorio en el que hemos descomprimido y abrimos dentro una terminal.

Hay que instalar primero las dependencias que se necesitan.

En el documento del paquete comprimido BUILD_INSTRUCTIONS se citan los paquetes de dependencias generales. Como los nombres de paquetes cambian entre distros, yo me he encargado de buscar los nombres concretos de esos paquetes en Debian, de manera que un apt install los instalará todos con sus correspondientes dependencias:

sudo apt install libpwquality-dev libblkid-dev libqt4-dev gcc g++ libcryptsetup-dev cmake libtcplay-dev libgcrypt11-dev libsecret-1-dev pkg-config libdevmapper-dev uuid-dev libudev-dev chrpath bzip2 debhelper

creamos un directorio “buils” y entramos en él:

mkdir build

cd build

compilamos:

cmake -DCMAKE_INSTALL_PREFIX=/usr/ -DCMAKE_BUILD_TYPE=RELEASE . ..

make

e instalamos:

sudo make install

Y ya está, si todo ha ido bien (como en mi caso) y no hemos tenido errores de compilación, ya tenemos instalado zuluCrypt (y zuluMount).

Este mismo procedimiento, adaptando los nombres de los paquetes, debe de funcionar en otras distros. Especialmente similar será en la distros hijas de Ubuntu, como Linux Mint o Elemetary. Si lo intentas en otras distros (Mageia, Fedora, CentOS, etc) agradecería mucho que lo compartieses en los comentarios.

En OpenSuse es muy fácil pues hay paquetes de instalación automática en un clic aquí:

http://software.opensuse.org/package/zuluCrypt

conectar por SSH una máquina Arch y otra Debian

linux-sshSSH (Secure Shell) es un protocolo de red para compartir datos entre equipos a través de una conexión segura. Vamos a instalar, configurar y conectar una máquina con Archlinux y otra con Debian mediante OpenSSH.

 

 

Instalación.

sudo pacman -S openssh    (ARCH instalará todo con un único paquete)

sudo apt install ssh openssh-client openssh-server openssh-sftp-server    (DEBIAN instala por separado el protocolo, el cliente, el servidor y el servidor para SFTP)

_______________________________________________
Configuración del cliente (tanto en ARCH como en Debian).

el archivo de configuración del cliente es:

/etc/ssh/ssh_config

hacemos dos cambios:

descomentamos la línea:
ForwardX11 yes (lo que nos permitirá ejecutar aplicaciones gráficas mediante SSH).

y en la línea del Protocolo eliminamos el número 1, quedando así:
Protocol 2 (esto hace que sólo se use la versión 2 del protocolo SSH, que es más segura)

_______________________________________________
Configuración del servidor (tanto en ARCH como en Debian).

el archivo de configuración del servidor es:

/etc/ssh/sshd_config

cambios en el archivo del servidor:

el puerto por defecto para escuchar conexiones SSH es el 22. Por motivos evidentes de seguridad conviene cambiarlo:
#Port 22
Port XXXX (sustituye las “X” por el número de puerto que tú quieras).

descomentar la línea:
Protocol 2 (para que sólo se use la versión 2 del protocolo)

cambiar la línea:
#PermitRootLogin yes
por
PermitRootLogin no (esto es otra precaución de seguridad para no permitir conexiones de root, podremos hacer operaciones de administrador si el usuario con el que entremos tiene acceso a sudo).

estas líneas deben estar descomentadas y con estos valores:

AllowTcpForwarding yes
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

(esta configuración permitirá la ejecución de aplicaciones gráficas en remoto).

y finalmente podemos añadir al final del archivo 3 líneas más para mejorar la configuración de seguridad:

# Líneas añadidas por mí:

# usuarios permitidos: aquí puedes añadir los usuarios que podrán acceder al servidor por SSH,
# el formato es nombre_usuario@I.P_de_su_máquina.
AllowUsers juan@192.168.1.2 dario@192.168.1.7 ciro@41.167.123.54

# número de intentos que tiene el usuario remoto para hacer login:
MaxAuthTries 2

# el número máximo de usuarios conectados simultáneamente:
MaxStartups 3

_______________________________________________
arrancar/reiniciar el servidor SSHD.

en ARCH (systemd):
sudo systemctl start sshd

en DEBIAN (SysV):
sudo service ssh restart

_______________________________________________

Uso básico de SSH (en consola).

para lanzar una conexión SSH el equipo cliente no necesita correr el servidor, ejecutar el programa cliente será suficiente. En el equipo al que “llamamos”, lógicamente, sí que tiene que tener funcionado un servidor SSH, esperando peticiones por un puerto concreto.

la sintaxis de conexión es muy sencilla:

supongamos que me quiero conectar al equipo 192.168.1.7, con el usuario dario en el puerto 1069 (este es el puerto que tiene que estar configurado en el archivo sshd_config del servidor).

ssh -p 1069 dario@192.168.1.7 (si no se configura el puerto, ssh intenta por defecto conectar por el puerto 22)

me pide la contraseña de dario y si todo va bien podré ver el prompt de dario. Ya estoy dentro. Si hago un ls, veré sus archivos.

para salir de la conexión SSH tan sólo tecleo
exit (y volveré a ver mi prompt en mi equipo cliente)
_______________________________________________

copiar archivos mediante SSH:

puedo copiar archivos en consola con la versión de cp para SSH, que es scp, así:

scp -P 1069 /home/juan/Desktop/cancion.mp3 dario@192.168.1.7:/home/dario/Desktop/

(comando copiar “scp”, el puerto del servidor “-P 1069” [atención pues esta P es mayúscula], la ruta en la que está el archivo en el cliente, el usuario@I.P_del_servidor, dos puntos (:) y la ruta en la que quiero que copie el archivo en el servidor.

me pedirá la contraseña de dario, y copiará el archivo.

_______________________________________________
ejecutar aplicaciones gráficas en remoto mediante un túnel SSH.

como en los archivos de configuración tanto del cliente como del servidor hemos activado la capacidad para usar las X en SSH, podremos ejecutar aplicaciones gráficas en remoto. Así:

ssh -X -p 1069 dario@192.168.1.7 firefox

lo que nos arrancará Firefox en el servidor y lo ejecutará en el cliente, (mola, ¿no?) 😉

 
dos trucos para mejorar las conexiones gráficas en SSH:

ssh -Y -p 1069 dario@192.168.1.7 firefox   (el cambio de -X por -Y desactiva controles de X11 para facilitar la conexión)

ssh -C4c arcfour,blowfish-cbc -Y -p 1069 dario@192.168.1.7 firefox    (con menor demanda de recursos puede aumentar la velocidad de la CPU y que SSH en modo gráfico funcione más ligero).

_______________________________________________

conectar por SSH a través del gestor de archivos.

 
y para finalizar, puedo conectar por SSH mediante mi navegador de archivos (nautilus, nemo, thunar, dolphin, etc). Simplemente introduzco la dirección de la barra de búsqueda (puedo activarla con Control+L) así:

sftp://dario@192.168.1.7:1069 (el protocolo de FTP seguro, usuario@IP_del_servidor:puerto)

y tras pedirme la contraseña de dario, el navegador de archivos me mostrará sus archivos.

_____________________________________

 

ssh -p 1069 dario@192.168.1.7

dario@192.168.1.7 $ sudo poweroff

adios Dario, a dormir… zzzZZZ…

 
Los caminos del señor SSH son inescrutables.