Qué es SUDO y la paquetería en Ubuntu
Sudo, significa “super user do”. Como administrador de sistemas Linux o usuario avanzado, es uno de los comandos más importantes de tu arsenal.
¿Para qué sirve?
Entonces, ¿qué hace realmente sudo? Si prefijas “sudo” con cualquier comando de GNU/linux, ejecutará ese comando con privilegios de root o superusuario del sistema. Se requieren privilegios de sudo para realizar ciertas tareas administrativas. Algún día puede que quieras ejecutar un servidor LAMP (Linux Apache MySQL PHP) y tengas que editar manualmente tus archivos de configuración. También puede que tengas que reiniciar el servidor web Apache u otros demonios de servicio. Incluso necesitas privilegios sudo para instalar programas.
Si estás familiarizado con Windows, es muy similar al cuadro de diálogo que aparece cuando intentas hacer algo importante, pero no es exactamente lo mismo. En Windows, si intentas realizar una tarea administrativa, un cuadro de diálogo te pregunta si quieres continuar (“¿Está realmente seguro de que desea ejecutar el programa en el que acaba de hacer clic?”). A continuación, se realiza la tarea. En un Mac, aparece un cuadro de diálogo de seguridad en el que se te pedirá que introduzcas tu contraseña y hagas clic en Aceptar.
Es más bien una historia importante en GNU/Linux. Las cosas podrían comportarse de forma extraña sin los permisos adecuados. Es posible que el archivo de configuración importante que estabas editando no se guarde correctamente. Es posible que un programa que hayas instalado simplemente se niegue a ejecutarse. Ese increíble código fuente que descargaste y que necesitas compilar, al final no lo harás. Incluso puede que tengas un mensaje de error amistoso. Todos tus peores temores se han hecho realidad, pero todo lo que necesitabas hacer era pedir permiso. Y es que quizás no sepas que en los sistemas GNU/Linux como los demás UNIX existen dos espacios de trabajo, la del usuario y la del superusuario o root. El usuario no necesita permisos para trabajar en su espacio, que es en /home/usuario pero sólo está limitado a ese lugar. Para instalar o modificar algo en los espacios críticos, se necesita permiso sudo o root. Por ejemplo, en una terminal no podrás instalar nada escribiendo: apt install firefox si antes no antepones el sudo.
El archivo sudoers
Este archivo es el sórdido punto débil de sudo. Controla quién puede usar el comando sudo para obtener privilegios administrativos. Normalmente se encuentra en /etc/sudoers. La mejor y más segura manera de editar este archivo es usando el comando nano. Este comando iniciará el editor para que puedas editar el archivo y guardarlo. También pondrá un filelock en el archivo sudoers para que nadie más pueda editarlo. Una vez que hayas terminado de editarlo, se guardará con las teclas Ctrl + o y después Ctrl + x.
Este archivo contiene muchos parámetros. Puedes especificar qué usuarios de qué grupos pueden realizar qué comandos. Simplemente nos vamos a conceder acceso sudo añadiendo:
usuario ALL=(ALL) ALL //gives user "username" sudo access %wheel ALL=(ALL) ALL //Gives all users that belong to the wheel group sudo access
Ahora el nombre de usuario especificado podrá utilizar todos los privilegios de root. También puedes permitir que un usuario o grupo tenga acceso sudo sólo a servicios o servidores específicos en lugar del parámetro ALL.
Los paquetes
La gestión de paquetes es una de las ventajas fundamentales que proporcionan los sistemas GNU/Linux. El formato del paquete y las herramientas de gestión de la paquetería difieren de una distribución a otra, pero dos familias generales han surgido como las más comunes.
Para las distribuciones basadas en RHEL, el formato de embalaje RPM y las herramientas de embalaje como rpm y yum son comunes. La otra familia principal, utilizada por Debian, Ubuntu y distribuciones relacionadas, utiliza el formato de empaquetado .deb y herramientas como apt y dpkg. Este último grupo es la familia que hablaremos en esta entrega de esta guía.
En esta guía cubriremos algunas de las herramientas de gestión de paquetes más comunes que los administradores de sistemas utilizan en Ubuntu. Esto se puede utilizar como una referencia rápida cuando necesites saber cómo realizar una tarea de gestión de paquetes dentro de estos sistemas.
Aparte de los paquetes con extensión .deb, los más comunes en Ubuntu, Debian y distros basadas, y dejando aparte el software que se distribuye con el código fuente, trataremos los más modernos, como AppImage, Flatpak y Snaps.
Pero empezaremos con el gestor de paquetes APT, que es el que manejan las distribuciones basadas en Debian, como Ubuntu, Mint y centenares más.
El ecosistema Debian/Ubuntu emplea bastantes herramientas de gestión de paquetes diferentes para gestionar el software en el sistema.
La mayoría de estas herramientas están interrelacionadas y funcionan en las mismas bases de datos de paquetes. Algunas de estas herramientas intentan proporcionar interfaces de alto nivel al sistema de embalaje, mientras que otras se concentran en proporcionar funcionalidad de bajo nivel.
Ubuntu viene por defecto con su Tienda de Software pero puedes instalar otra aplicación llamada Synaptic en la cual vienen muchísimos más programas.
El comando APT
El comando apt es probablemente el miembro más utilizado del conjunto de herramientas de empaquetado. Su principal objetivo es interactuar con los repositorios remotos mantenidos por el equipo de empaquetado de la distribución y realizar acciones sobre los paquetes disponibles.
El gestor apt funciona en general extrayendo información de repositorios remotos a una caché mantenida en el sistema local. El comando apt se utiliza para actualizar la caché local. También se utiliza para modificar el estado de los paquetes, es decir, para instalar o eliminar un paquete del sistema.
En general, apt se utilizará para actualizar la caché local y para realizar modificaciones en el sistema activo.
El uso común para instalar un programa que se encuentre en los repositorios de software sería: sudo apt install nombre-del-paquete.
Apt-cache
Otro miembro importante de la suite apt es apt-cache. Esta utilidad utiliza la caché local para consultar información sobre los paquetes disponibles y sus propiedades.
Por ejemplo, en cualquier momento que quieras buscar un paquete específico o una herramienta que realice una determinada función, apt-cache es un buen punto de partida. También puede ser un buen informativo sobre la versión exacta del paquete a la que se dirigirá el procedimiento. La información de dependencias y dependencias inversas es otra área en la que apt-cache es útil.
Aptitude
El comando aptitude combina gran parte de la funcionalidad de los dos comandos anteriores. Tiene la ventaja de operar como una herramienta de línea de comandos, combinando la funcionalidad de las dos herramientas anteriores, y también puede operar usando una interfaz de menú basada en texto de ncurses.
Cuando se opera desde la línea de comandos, la mayoría de los comandos reflejan exactamente las capacidades de apt y apt-cache. Debido a esta superposición, no discutiremos ampliamente la aptitud en esta guía. A menudo se puede utilizar aptitude en lugar de apt o apt-cache si prefieres esta herramienta pero tiende a desaparecer.
Dpkg
Mientras que las herramientas anteriores se centraban en la gestión de paquetes mantenidos en repositorios, el comando dpkg también puede utilizarse para operar en paquetes .deb individuales. La herramienta dpkg es responsable de la mayor parte del trabajo entre bastidores de los comandos anteriores.
A diferencia de los comandos apt-*, dpkg no tiene la capacidad de resolver dependencias automáticamente. Su característica principal es la capacidad de trabajar fácilmente con paquetes .deb directamente, y su capacidad de diseccionar un paquete y averiguar más sobre su estructura.
Aunque puede recopilar alguna información sobre los paquetes instalados en el sistema, su propósito principal es a nivel de paquete individual.
El uso del comando dpkg sería: sudo dpkg -i nombre del archivo. deb
AppImage
En primer lugar, AppImage no es un gestor de paquetes ni un almacén de aplicaciones. AppImage es sólo un formato de empaquetamiento que permite a cualquiera que utilice una distribución GNU/Linux ejecutarla sin necesidad de instalarla (por “instalar” se refiere a la forma tradicional en que los paquetes se instalan en GNU/Linux). El usuario ni siquiera necesita tener permisos de administrador para hacerlo. Sólo tienes que dar los permisos de ejecución del archivo y ya está. Esto se hace haciendo clic con el botón derecho del ratón, Propiedades-Permisos-Permitir ejecutar como un programa.
En esencia, son archivos de imagen de disco autoportantes que ejecutan la aplicación que contienen. Fueron pensados pensando también en sistemas de archivos auto-montables.
Las principales ventajas de este formato son:
- Facilita el proceso de distribución de aplicaciones en GNU/Linux.
- Instalación súper fácil (en realidad no se instala).
- Muchos proveedores de aplicaciones han adoptado AppImage como su formato predeterminado.
Se ejecuta en la mayoría de las distribuciones (esto es demasiado bueno para un empaquetador de aplicaciones).
Opcionalmente, las aplicaciones pueden ejecutarse en un entorno de pruebas o sandbox.
El problema principal de los archivos AppImage es que suelen ser grandes y pesados.
Aquí hay un portal con aplicaciones AppImage y otras tantas las encontrarás en las páginas oficiales de algunas aplicaciones.
Flatpak
Flatpak (también conocido como xdg-app) fue diseñado con el concepto de tiempos de ejecución desde sus inicios. Por ejemplo, podría existir el tiempo de ejecución de GNOME, y las aplicaciones empaquetadas con ese tiempo de ejecución como destino pueden ejecutarse sobre él. Los tiempos de ejecución proporcionan algunas características agradables como el aislamiento entre aplicaciones y el acceso controlado de recursos a dispositivos de hardware. Flatpak se utiliza por defecto en Endless OS para gestionar las instalaciones de aplicaciones y realizar actualizaciones del sistema.
Es importante tener en cuenta que Flatpak requiere que la aplicación se ejecute mediante el comando flatpak [aplicación].
Como ya sabrás, el empaquetado de aplicaciones distribuidas para diferentes distribuciones de GNU/Linux consume mucho tiempo y es un proceso difícil. Cada aplicación distribuida tiene un conjunto diferente de bibliotecas y dependencias para varias distribuciones. Pero, Flatpak, el nuevo marco para aplicaciones de escritorio reduce por completo esta carga. Ahora, puedes compilar una sola aplicación Flatpak e instalarla en varios sistemas operativos. Qué bueno, ¿verdad?
Además, los usuarios no tienen que preocuparse por las bibliotecas y dependencias, todo está incluido dentro de la aplicación. Lo que es más importante, las aplicaciones de Flaptpak están aisladas del resto del sistema operativo host y de otras aplicaciones. Otra característica notable es que podemos instalar múltiples versiones de la misma aplicación al mismo tiempo en el mismo sistema. Por ejemplo, puedes instalar el reproductor VLC versión 2.1, 2.2 y 2.3 en el mismo sistema. Por lo tanto, los desarrolladores pueden probar diferentes versiones de la misma aplicación a la vez.
Sus principales características son:
- Aislamiento entre aplicaciones.
- Control sobre los recursos a los que la aplicación tiene acceso.
- Entornos estrechamente acoplados llamados runtimes, que reducen el consumo de ancho de banda durante las instalaciones/actualizaciones para aplicaciones que pertenecen a un runtime instalado actualmente.
En Ubuntu se instala de esta manera:
$ sudo add-apt-repository ppa:alexlarsson/flatpak
$ sudo apt update
$ sudo apt install flatpak
Hay muchas aplicaciones populares, como Gimp, Kdenlive, Steam, Spotify, Visual Studio code, etc., disponibles como flatpaks.
Veamos ahora el uso básico del comando flatpak.
Antes que nada, necesitamos agregar repositorios remotos.
Agregar repositorios remotos
Habilita el repositorio de Flathub:
Flathub no es más que un repositorio central donde todas las aplicaciones de flatpak están disponibles para los usuarios. Para habilitarlo, solo ejecuta:
$ sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Flathub es suficiente para instalar las aplicaciones más populares. En caso de que desees probar algunas aplicaciones de GNOME, agrega el repositorio de GNOME.
Activar el repositorio de GNOME:
El repositorio de GNOME contiene todas las aplicaciones centrales de GNOME. El repositorio de flatpak de GNOME se encuentra disponible en dos versiones, estable y de compilación diaria.
Para agregar el repositorio estable de GNOME, ejecuta los siguientes comandos:
$ wget https://sdk.gnome.org/keys/gnome-sdk.gpg
$ sudo flatpak remote-add --gpg-import=gnome-sdk.gpg --if-not-exists gnome-apps https://sdk.gnome.org/repo-apps/
Las aplicaciones en este repositorio requieren la versión 3.20 del runtime org.gnome.Platform.
Para instalar los tiempos de ejecución estables, ejecuta:
$ sudo flatpak remote-add --gpg-import=gnome-sdk.gpg gnome https://sdk.gnome.org/repo/
Para agregar el repositorio de aplicaciones de compilación diaria de GNOME, ejecuta:
$ wget https://sdk.gnome.org/nightly/keys/nightly.gpg
$ sudo flatpak remote-add --gpg-import=nightly.gpg --if-not-exists gnome-nightly-apps https://sdk.gnome.org/nightly/repo-apps/
Las aplicaciones en este repositorio requieren la versión nocturna de runtime org.gnome.Platform.
Para instalar los tiempos de ejecución nocturnos, ejecuta:
$ sudo flatpak remote-add --gpg-import=nightly.gpg gnome-nightly https://sdk.gnome.org/nightly/repo/
Listado de controles remotos
Para enumerar todos los repositorios remotos configurados, ejecuta:
$ flatpak remotes Name Options flathub system gnome system gnome-apps system gnome-nightly system gnome-nightly-apps system
Como puedes ver, el comando anterior enumera los controles remotos que has agregado en tu sistema. También enumera si el control remoto se ha agregado por usuario o por todo el sistema.
Quitar los controles remotos
Para eliminar un control remoto, por ejemplo flathub, simplemente hazlo:
$ sudo flatpak remote-delete flathub
Aquí flathub es un nombre remoto.
Instalación de aplicaciones Flatpak
En esta sección, veremos cómo instalar aplicaciones flatpak. Para instalar una aplicación flatpak
Para instalar una aplicación, simplemente hazlo:
$ sudo flatpak install flathub com.spotify.Client
Todas las aplicaciones en el repositorio estable de GNOME usan el nombre de la versión de “estable”.
Para instalar cualquier aplicación estable de GNOME, por ejemplo Evince, ejecuta:
$ sudo flatpak install gnome-apps org.gnome.Evince stable
Todas las aplicaciones en el repositorio nocturno de GNOME usan el nombre de la versión de “maestro”.
Por ejemplo, para instalar gedit, ejecuta:
$ sudo flatpak install gnome-nightly-apps org.gnome.gedit master
Si no quieres instalar aplicaciones en todo el sistema, también puedes instalar aplicaciones flatpak por usuario como se muestra a continuación.
$ flatpak install --user <nombre de la aplicación>
Todas las aplicaciones instaladas se almacenarán en $HOME/.var/app/.
$ ls $HOME/.var/app/ com.spotify.Client
Ejecución de aplicaciones Flatpak
Puedes iniciar las aplicaciones instaladas en cualquier momento desde el iniciador de aplicaciones. Desde la línea de comandos, puedes ejecutarlo, por ejemplo, usando el comando Spotify:
$ flatpak run com.spotify.Client
Para listar las aplicaciones instaladas, ejecuta:
$ flatpak list
Para ver solo las aplicaciones, no los tiempos de ejecución, utiliza este comando en su lugar:
$ flatpak list --app
También puedes ver la lista de aplicaciones y tiempos de ejecución disponibles desde todos los controles remotos mediante el comando:
$ flatpak remote-ls
Para enumerar solo las aplicaciones, no los tiempos de ejecución, ejecuta:
$ flatpak remote-ls --app
Para enumerar aplicaciones y tiempos de ejecución de un repositorio específico, por ejemplo gnome-apps, ejecuta:
$ flatpak remote-ls gnome-apps
Para enumerar solo las aplicaciones de un repositorio remoto, ejecuta:
$ flatpak remote-ls flathub --app
Snaps
Los Snaps se desarrollaron teniendo en cuenta los almacenes de aplicaciones y las interfaces.
Los Snaps son aplicaciones autónomas de sólo lectura que pueden ejecutarse en muchas distribuciones de GNU/Linux a través de snapd. El formato Snap es un sistema de archivos comprimido que se monta antes de ejecutar la aplicación que contiene (muy similar a lo que hace un AppImage). El Snap se ejecuta en un entorno aislado (como las aplicaciones Flatpak) y tiene un acceso limitado a los recursos, definidos por el usuario. Cada aplicación puede conectarse a otra sólo mediante el uso de interfaces bien definidas.
Algunas aplicaciones empaquetadas se pueden encontrar en la tienda de snapcraft.
Las características notables de este formato son:
- Contenido de sólo lectura y firmado, lo que significa que la aplicación no puede ser adulterada.
- Autónomo, que disocia la aplicación del sistema subyacente.
- Las aplicaciones sólo pueden comunicarse entre sí a través de interfaces.
Habilitar el soporte de Snap en distribuciones basadas en Debian y Ubuntu
Si deseas utilizar las aplicaciones Snap en Ubuntu y otras distribuciones basadas en Debian o Ubuntu, usa el siguiente comando:
sudo apt install snapd
Puedes buscar diferentes Snaps e instalarlos. Hay una Tienda Snap que contiene diferentes aplicaciones públicas y privadas para nubes, escritorios, dispositivos, etc.
Cualquiera puede publicar un paquete Snap en la tienda, sin embargo, solo verás los Snaps publicados en la versión estable y que se han revisado.
Instalando Snaps
Una vez que encuentres el Snap que estás buscando, puedes instalarlo con el siguiente comando:
sudo snap install <nombre de snap>
Enumerar los snaps instalados
Puedes usar el siguiente comando para ver los snaps que has instalado junto con sus versiones y el desarrollador:
snap list
Actualizar una aplicación snap instalada
Los ajustes se actualizan periódicamente a su última versión. En caso de que intentes hacerlo manualmente, escribe el siguiente comando en la terminal:
sudo snap refresh <nombre de snap>
Desinstalar un paquete snap
Para eliminar un snap:
sudo snap remove <nombre de snap>
Estas tres últimas tecnologías están siendo adoptadas en algunas distribuciones. Tenemos Ubuntu, por ejemplo, que utiliza snapd por defecto desde la versión 16.04. Flatpak se utiliza principalmente en Fedora (desde la versión 23) y en el entorno de escritorio GNOME. Tanto los snaps como los flatpaks tienen adaptaciones que se ejecutan al menos en Gentoo, Arch Linux, Mageia, Open SUSE Tumbleweed y Debian Jessie.
AppImages, por otro lado, está siendo soportado y utilizado por defecto en Nitrux. Hay un centro de software (AppImages no requiere esto, pero para proporcionar una mejor implementación, los desarrolladores decidieron construir el centro de software) desde el cual el usuario puede instalar aplicaciones empaquetadas como AppImages.
Entonces, ¿cuál es el mejor? Bueno, dependerá de lo que quieras conseguir. Los AppImages son la mejor opción para la distribución de contenido de usuario final y la computación orientada al escritorio. Flatpak brillará cuando utilice sólo un entorno de escritorio, mientras que Snappy es la mejor opción para los dispositivos en los que el proveedor debe asegurarse de que el dispositivo funcionará sin o con una pequeña interacción del usuario; y las actualizaciones automáticas se implementan mediante esos Snaps.
La 5ª entrega de este curso-guía para iniciados tratará sobre cómo personalizar la apariencia del entorno de escritorio GNOME en Ubuntu.
Fuente: maslinux