Mostrando entradas con la etiqueta debian. Mostrar todas las entradas
Mostrando entradas con la etiqueta debian. Mostrar todas las entradas

martes, 3 de octubre de 2017

Crear paquete deb con Checkinstall

  1. Instalar los requisitos mínimos para utilizar checkinstall
    sudo aptitude install build-essential checkinstall
  2. Descargar archivo TAR.GZ con el código fuente de la aplicación.
  3. Descomprimir el archivo TAR.GZ
    tar -xzvf paquete-versión.tar.gz
  4. Entrar en la carpeta descomprimida
    cd paquete-versión
  5. Configurar
    ./configure
  6. Instalamos las dependencias de compilación utilizando el comando:
    sudo aptitude install dependencia1 dependencia2 #etc 
  7. Compilar
    make
  8. Crear e instalar paquete
    sudo checkinstall -D --nodoc -y

Cambiar versión de VirtualBox de repositorio a ppa

Estaba trabajando en Ubuntu 14.04, con una versión antigua de VirtualBox y decidí actualizarla. Para ello agregué el repositorio oficial de Oracle, siguiendo las instrucciones indicadas.
Luego desinstalé la versión que tenía antigua, y reinstalé la versión más reciente. Sin embargo al intentar ejecutar cualquiera de las máquinas virtuales en el equipo se disparaba el error:
VirtualBox kernel modules do not match the version of VirtualBox
Inicialmente, intenté solucionar el problema infructuosamente desinstalando, reinstalando y reconfigurando el paquete. Luego de esto busqué en internet, y conseguí la solución en un foro.
En resumen:
  1. sudo rmmod vboxnetadp vboxnetflt vboxpci vboxdrv
  2. sudo rm  /lib/modules/*-generic/updates/dkms/vbox*
  3. sudo /sbin/rcvboxdrv setup
  4. sudo /etc/init.d/virtualbox restart

domingo, 22 de mayo de 2016

Compilar un paquete DEB a partir del código fuente

Me encontré en la situación de no tener un paquete DEB adecuado para instalar en el sistema, ya que no había portado a la versión estable todavía, pero sí tener acceso a las fuentes del paquete.

Lo primero es instalar  los paquetes básicos para la compilación de paquetes DEB
sudo aptitude install build-essential devscripts fakeroot
Luego buscamos el paquete deseado en la página de búsqueda de paquetes de Debian, y descargamos los archivos fuentes, los cuales suelen ser de la forma:
  • paquete_versión.dsc : Archivo de Control de Fuente Debian (Debian Source Control)
  • paquete_versión.orig.tar.gz : Código fuente original
  • paquete_versión.debian.tar.xz : Modificaciones realizadas para empaquetar la aplicación
Colocamos estos tres archivos en un directorio de trabajo propio, y descomprimimos el archivo tar.xz con el comando:
tar xf paquete_versión.debian.tar.xz
Creamos un directorio nuevo y movemos la carpeta debian recién descomprimida, allí. Esto, porque compilar el paquete se hace desde el directorio que contenga la carpeta debian, y el archivo paquete_versión.orig.tar.gz se busca en el directorio superior (..)
mkdir deb-src
mv debian deb-src/
Para instalar las dependencias de compilación del paquete, la opción sencilla es ejecutar el comando
sudo aptitude build-depends paquete
Pero esto sólo nos funcionará si el paquete ya se encuentra en los repositorios. De lo contrario, aptitude reportará que no conoce dicho paquete. En estos casos, debemos examinar el archivo paquete_versión.dsc o el archivo control que se encuentra dentro del directorio debian e instalar los paquetes indicados en la sección Build-Depends, utilizando el comando:
sudo aptitude install dependencia1 dependencia2 #etc 
La opción más recomendada para compilar el paquete es entrar en deb-src, y ejecutar debuild
cd deb-src
debuild
Sin embargo, esto produjo el siguiente error
dpkg-source: error: aborting due to unexpected upstream changes
Este artículo tiene más información sobre este error. Y una forma distinta de evitarlo.

Finalmente, logré compilar el paquete, sin tanta complicación, utilizando el siguiente comando
dpkg-buildpackage -b -uc
Con lo cual, obtuve el paquete paquete_versión.deb

Para instalarlo este paquete, ejecutamos:
cd ..
sudo dpkg -i paquete_versión.deb
En caso de que APT nos indique que hubo un error de dependencias con la instalación, procedemos a ejecutar
sudo apt-get install -f
Lo cual debería calcular cuáles dependencias es necesario instalar, intalarlas y culminar la instalación de nuestro paquete.

La estructura de los directorios es de la siguiente forma:
  • Directorio de trabajo/
    • paquete_versión.dsc
    • paquete_versión.orig.tar.gz
    • paquete_versión.debian.tar.xz
    • paquete_versión.deb
    • deb-src/
      • debian/

Instalar un paquete DEB no disponible en el repositorio de Bananian

Conseguí una aplicación que quería instalar en mi Banana Pi, pero sólo se encontraba en la rama de pruebas (testing), todavía no había pasado a estable.

Lo primero que hice fue intentar descargar el paquete DEB desde la página de búsqeda de paquetes de Debian, aunque estas instrucciones aplican a cualquier paquete DEB que se desee instalar.

Para instalar el paquete, ejecutamos el comando:
sudo dpkg -i archivo.deb
Lo cual arrojó un error de APT indicando que no se pudo terminar de configurar la aplicación ya que faltaban dependencias. Este mensaje de error es previsible ya que al instalar el paquete de esta forma, APT no descarga las dependencias necesarias automáticamente.

Para decargar estas dependencias, ejecuté el comando de APT que hace las instalaciones y desinstalaciones necesarias para resolver los conflictos de dependencias en el sistema de gestión de paquetes.
sudo apt-get install -f
Al ejecutar este comando, lo más común es que APT calcule las dependencias necesarias, y solicite una confirmación antes de instalar dichas dependencias y culminar la configuración de la aplicación que instalamos desde el archivo DEB. Sin embargo, en esta ocasión, sí me arrojó un error inesperado, pidiendo que confirmase deshacer  dicha instalación.

Entonces fui instalando una por una las dependencias faltantes utilizando el comando de costumbre
sudo aptitude install dependencia
Hasta que conseguí el problema: el paquete requería una versión más reciente de una de las dependencias que la disponible en el repositorio.

Dado que la aplicación que quería instalar no forma parte del núcleo de la distribución, ni tiene otras aplicaciones que dependan de ella, ni tampoco es particularmente vanguardista, decidí intentar compilar el paquete DEB a partir del código fuente.

viernes, 20 de mayo de 2016

Configurando SAMBA en Bananian

Para poder compartir archivos desde el Banana Pi a los terminales en mi red local, decidí crear una carpeta compartida por SMB.
# Crear carpeta donde se almacenarán los archivos
sudo mkdir /home/media

# Otorgar permiso de lectura y ejecución a todos los usuarios locales
sudo chmod 777  /home/media

# Crear sub-carpetas para clasificar los archivos
sudo mkdir /home/media/music
sudo mkdir /home/media/video
sudo mkdir /home/media/photos
sudo mkdir /home/media/ebook

# Instalar SAMBA
sudo aptitude install samba

# Respaldar archivo de configuración por defecto
sudo mv /etc/samba/smb.conf /etc/samba/smb.bak

# Crear nuevo archivo de configuración
sudo nano /etc/samba/smb.conf

# Reiniciar servicio samba
sudo service samba restart
#sudo service smbd restart

El archivo de configuración tiene el siguiente contenido
[global]
workgroup = workgroup
security = user
map to guest = Bad Password
share modes = yes
deadtime = 15
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536

[media]
path = /home/media/
public = yes
writable = no
comment = smb share
printable = no
guest ok = yes
 Esta configuración no incluye mediadas de autenticación, ya que la carpeta compartida está pensada para archivos sin riesgo de confidencialidad. Aún así, el acceso se limita a sólo lectura.

miércoles, 18 de mayo de 2016

Configurar un servidor DLNA en Bananian (Debian)

Como parte de mi interés de crear un centro de medios utilizando el Banana Pi, decidí configurar un servidor DLNA.
# Crear carpeta donde se almacenarán los archivos
sudo mkdir /home/media

# Otorgar permiso de lectura y ejecución a todos los usuarios locales
sudo chmod 755  /home/media

# Crear sub-carpetas para clasificar los archivos
sudo mkdir /home/media/music
sudo mkdir /home/media/video
sudo mkdir /home/media/photos

# Instalar minidlna
sudo aptitude install minidlna

# Modificar media_dir=/var/lib/minidlna
# Para que quede como media_dir=/home/media
sudo nano /etc/minidlna.conf

# Reiniciar servicio minidlna
sudo service minidlna restart

domingo, 15 de noviembre de 2015

Instalar Webmin y Usermin en Bananian (Debian)

Instalación

Para la administración de mi Banana Pi, me pareció interesante utilizar Webmin, una aplicación CGI que permite administrar computadores a través de una interfaz web.
Lo primero es agregar el repositorio de Webmin a las fuentes de de APT, ya que este paquete no se encuentra en los repositorios de Debian.
Para ello creamos el siguiente archivocon de texto:
/etc/apt/sources.list.d/webmin.list
Y le agregamos las siguientes líneas
deb http://download.webmin.com/download/repository sarge contrib
deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
Agregamos la clave pública con la cual están firmados los paquetes DEB de Webmin
wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -
Actualizamos la información de repositorios de APT y los paquetes instalados
sudo aptitude update && sudo aptitude full-upgrade -y
Instalamos Webmin y Usermin
sudo aptitude install webmin usermin 
Para acceder a Webmin debemos navegar a https://ejemplo.com:10000
Para acceder a Usermin debemos navegar a https://ejemplo.com:20000

Configuración de Webmin en Subdirectorio con HTTPS

Basándonos en las indicaciones para Webmin con Apache (no aptas para proxy con SSL).
Para poder acceder a estas aplicaciones a través de https://ejemplo.com/webmin/
Habilitamos el módulo proxy de Apache HTTPD con
sudo a2enmod proxysudo service apache2 restart
Modificar el archivo /etc/webmin/config, agregando las siguientes líneas
webprefix=/webmin
webprefixnoredir=1
referer=ejemplo.com
Modificar el archivo /etc/webmin/miniserv.conf, agregando la siguiente línea
cookiepath=/webmin
Reiniciar Webmin ejecutando
/etc/webmin/restart 
Y agregamos a dentro de VirtualHost en /etc/apache2/sites-available/default-ssl.conf
### Webmin ###
# Put this after the other LoadModule directives
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

# Put this in the main section of your configuration
# (or desired virtual host, if using Apache virtual hosts)

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
#ProxyRequests Off
#ProxyPreserveHost On

<Proxy *>
# Auth changes in 2.4 - see http://httpd.apache.org/docs/2.4/upgrading.html#run-time
Require all granted
</Proxy>

ProxyPass /webmin https://localhost:10000
ProxyPassReverse /webmin https://localhost:10000

<Location webmin="">
# Auth changes in 2.4 - see http://httpd.apache.org/docs/2.4/upgrading.html#run-time
Require all granted
</Location>
Esta configuración tiene carácter experimental. Un cambio deseable es que Webmin utilice un certificado SSL en el cual Apache HTTPD confíe, a fin de cambiar "SSLProxyVerify none"

lunes, 2 de noviembre de 2015

Configurar HTTPS en Banananian (Debian)

Ya configurado Apache HTTPD en mi Banana Pi, el siguiente paso paranoico lógico es configurar HTTPS para que el tráfico quede cifrado. De esta forma se protege la confidencialidad de cualquier información importante (como contraseñas) que tengan que viajar por la red.
Encontré un tutorial para Debian, bastante completo, en Digital Ocean.
En resumen, para asegurarnos de que estén instalados y actualizados tanto Apache HTTPD como OpenSSL, activar HTTPS y generar el certificado SSL:
sudo aptitude update
sudo aptitude full-upgrade
sudo aptitude install apache2 openssl
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 reload
sudo mkdir /etc/apache2/ssl

sudo openssl req -x509 -nodes -days 365 -newkey \
rsa:2048 -keyout /etc/apache2/ssl/apache.key -out \
/etc/apache2/ssl/apache.crt
sudo chmod 600 /etc/apache2/ssl/*
Luego es necesario editar el archivo de configuración del sitio web SSL con
sudo nano /etc/apache2/sites-enabled/default-ssl.conf
Allí debemos modificarlo para que quede de la siguiente manera:
<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        ServerName www.example.com:443
        DocumentRoot /var/www/html
        . . .
        SSLEngine on
        . . .
        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Reiniciamos el servicio Apache HTTPD
sudo service apache2 reload
En este punto el servicio Apache HTTPD está respondiendo peticiones por HTTP y por HTTPS. Para que todo el tráfico HTTP sea redirigido a HTTPS, editamos la configuración del sitio por defecto con
sudo nano /etc/apache2/sites-enabled/000-default.conf
Y modificamos el archivo de forma que quede así
<VirtualHost *:80>
    ServerName www.example.com
    Redirect / https://www.example.com/
</VirtualHost >
Finalmente, reiniciamos el servicio Apache HTTPD
sudo service apache2 reload

domingo, 1 de noviembre de 2015

Si la consola no autocompleta (2)

Hace un (largo) tiempo, tuve que modificar la configuración de bash en mi laptop (con Ubuntu) porque no podía autocompletar con la tecla de tabulación comandos como aptitude o apt-get. Me encontré con el mismo problema en mi Banana Pi, con Bananian, pero el problema no estaba en el archivo .bashrc, ya que éste ya tenía activa la opción para autocompletar.
Luego de algunas búsquedas en Internet, di con el tema: faltaba instalar el paquete bash-completion
sudo aptitude install bash-completion
Luego de recargar bash, comenzó a funcionar el autocompletado para aptitude y apt-get
bash 

sábado, 31 de octubre de 2015

Instalando Apache HTTPD en Bananian (Debian)

Lo primero que tengo que hacer para poder utilizar mi Banana Pi como un servidor de Intranet en mi casa es instalar el servidor web.
Empezamos con la instalación de Apache2 y los paquetes que recomienda.
sudo aptitude install apache2 -r
Luego viene la configuración de los módulos, en particular userdir, que permite que los usuarios del servidor puedan publicar sitios en html en la dirección servidor/~nombredeusuario, con tan solo guardarlos en el directorio public_html de su carpeta personal.
sudo a2enmod userdir.load
Luego unas medidas de seguridad sencillas: Desactivamos que indique su versión y el sistema operatico en las cabeceras HTTP y en el pie de página de algunas páginas por defecto. Es necesario editar el archivo /etc/apache2/conf-enabled/security.conf y fijar los siguientes valores
ServerTokens ProductOnlyServerSignature Off 
Finalmente, reiniciamos el servicio Apache2
sudo service apache2 restart
Ahora tenemos un servidor web en el Banana Pi.

Para deshacernos del siguiente mensaje:
apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.1.162. Set the 'ServerName' directive globally to suppress this message
Creamos el siguiente archivo
sudo nano /etc/apache2/conf-available/ServerName.conf 
Cuyo contenido debe ser
ServerName nombredelservidor
Activamos este archivo de configuración con
sudo a2enconf ServerName.conf
Y reiniciamos el servicio Apache2 nuevamente
sudo service apache2 restart

viernes, 30 de octubre de 2015

Primeros pasos con Bananian (Debian)

Luego de instalar Bananian Linux en la tarjeta Micro SD, como indiqué en el artículo anterior, llegó la hora de arrancar el sistema y ejecutar los pasos iniciales.
  1. Configuración inicial del sistema. Nombre del equipo, localización e idioma, zona horaria, etc.
  2. bananapi-config
  3. Actualizar el sistema. Descargar la información de los repositorios y actualizar las aplicaciones ya instaladas.
  4. aptitude update && aptitude full-upgrade -y
  5. Credenciales. Cambiar la contraseña del superusuario, crear mi usuario, y hacerlo administrador
  6. passwd
    adduser usuarionuevo
    aptitude install sudo
    adduser usuarionuevo sudo
Ahora tengo un sistema actualizado, puedo dejar de lado el superusuario y utilizar un usuario a mi medida.

jueves, 29 de octubre de 2015

Requsitos para utilizar una Banana Pi

Un poco tarde, pero estoy llegando a la tendencia de los pequeños computadores integrados, donde destacan los Raspberry Pi. Al analizar mis opciones, decidí irme por un clon, conocido como Banana Pi, que para mí, tenía un balance precio-desempeño más atractivo.
Lo primero fue comprar el Banana Pi, una tarjeta Micro-SD y un cargador Micro USB. En particular me decidí por una tarjeta Micro-SD clase 10 y de 32 GB que me permitiera tener cierta comodidad con el espacio en disco. En cuanto al cargador, me decanté por uno apto para tabletas (5V y 2A), en lugar de uno apto para celulares (5V y 1A).
Luego descargué Bananian Linux, una distribución ligera pensada para estos dispositivos, basada en Debian y lo grabé en la tarjeta Micro SD utilizando Win 32 Disk Imager.
Luego escribiré sobre la configuración inicial de Bananian.