¿Problemas con package-query al tratar de actualizar pacman en ArchLinux?

Ya estaba anunciado, y hace unas horas pacman 4.1 llegó al repo [core] de ArchLinux. Muchos han tenido conflictos al querer actualizar, y es por que tenermos yaourt instalado, el cual depende de package-query.

$ sudo pacman -Syyu
:: Los siguientes paquetes deben actualizarse primero:
    pacman
:: ¿Desea cancelar la operación actual
:: y actualizar estos paquetes ahora? [S/n]
resolviendo dependencias...
verificando conflictos...
error: error al preparar la transacción (no se pudieron satisfacer las dependencias)
:: package-query: necesita pacman<4.1

¿Qué hacer? Aquí la solución que funcionó conmigo, la cual espero les funcione también.

  1. Elimino yaourt y dependencias (incluyendo package-query):

    sudo pacman -Rs yaourt
  2. Actualizo al nuevo pacman:

    sudo pacman -Syu
  3. Uso el nuevo pacman.conf, ya que la directiva SyncFirst en la sección options ya no es reconocida (Allan McRae, declarado detractor de Manjaro, asegura que este cambio no fue deliberado para afectar a dicha distro):

    sudo mv /etc/pacman.conf /etc/pacman.conf.respaldo
    sudo mv /etc/pacman.conf.pacnew /etc/pacman.conf
  4. Agrego el repo de la comunidad francesa (el cual ya tenía en el viejo pacman.conf):

    sudo echo "[archlinuxfr]" >> /etc/pacman.conf
    sudo echo "Server = http://repo.archlinux.fr/$arch" >> /etc/pacman.conf
  5. Recargo mis repos e instalo yaourt (gracias al repo francés):

    sudo pacman -Syy yaourt
  6. Actualizo todo lo que me hace falta:

    sudo pacman -Su
  7. Ya pueden respirar tranquilos ;-)

¿Les funcionaron los pasos? ¿Hicieron algo diferente? ¡Comenten!

Share

¿Problemas con libgl al tratar de actualizar ArchLinux?

Hoy al encender mi equipo, quise actualizar mi querido ArchLinux

sudo pacman -Syyu

y me encuentro con ésto:

error: error al preparar la transacción (no se pudieron satisfacer las dependencias)
:: cairo: necesita libgl
:: compiz-core: necesita libgl
:: gnome-session: necesita libgl
:: lib32-cairo: necesita lib32-libgl
:: lib32-glu: necesita lib32-libgl
...
:: qt4: necesita libgl
:: xorg-server-xephyr: necesita libgl
:: xorg-xdriinfo: necesita libgl

Como pueden ver, hay problemas de dependencias con libgl (y con lib32-libgl). Luego de investigar un poco, descubrí que el motivo es la última actualización del driver de Nvidia (la versión 313.30).

La solución para el conflicto de libgl:

sudo pacman -Rdd nvidia-utils
sudo pacman -S nvidia-libgl

La solución para el conflicto de lib32-libgl:

sudo pacman -Rdd lib32-nvidia-utils
sudo pacman -S lib32-nvidia-libgl

Ahora si, ya pueden actualizar sin problemas:

sudo pacman -Su

Referencia: Foro de ArchLinux.

Share

Deshabilitar el Historial de Documentos Recientes en ArchLinux

¡Un pequeño tip! Si eres de los que odian el historial de los Documentos Recientes, hay una forma muy sencilla de deshabilitarlo por completo en ArchLinux.

Primero, debemos hacerlo para aplicaciones GNOME:

rm -f ~/.local/share/recently-used.xbel
touch ~/.local/share/recently-used.xbel
chmod 400 ~/.local/share/recently-used.xbel

Ahora, para aplicaciones KDE:

rm -f ~/.kde4/share/apps/RecentDocuments/*
chmod 500 ~/.kde4/share/apps/RecentDocuments

Este truco debería funcionar en cualquier distro, sólo verifiquen que las rutas sean las mismas (por ejemplo, en ArchLinux se usa ~/.kde4/ mientras que en otras distros es ~/.kde/).

Share

ArchLinux reemplaza qt por qt4, ¿qué hacer?

¡Cambios importantes en ArchLinux! El paquete qt ahora es reemplazado por qt4, ¿qué implica este cambio?

  • Los paquetes que dependan del “viejo qt” (ahora qt4) que tengas instalados desde los repositorios oficiales, de manera automática se actualizarán. En otras palabras, aquí no deberías tener ningún problema.

  • Muchos paquetes que dependan del “viejo qt” que tengas instalados desde AUR ocasionarán conflictos, y de entrada no te dejarán actualizar adecuadamente de qt a qt4. ¿Qué hacer?

    1. Desinstalar todos esos paquetes con sudo pacman -R <lista-de-paquetes>
    2. Efectuar la actualización con sudo pacman -Syu
    3. Volver a instalar los paquetes desde AUR, reemplazando qmake (en caso de que se uilice) con qmake4 en PKGBUILD para decirle al compilador que queremos usar Qt 4.x.
  • El nuevo Qt5 (ya en su rama estable) se puede instalar con el paquete qt5-base.

Espero lo anterior sea de ayuda de todos mis colegas archeros.

[Actualización] Ya hay anuncio oficial sobre el tema.

Share

¿Formateaste con Ext4 y la partición tiene 5% de espacio ocupado?

¿Formateaste con Ext4 y la partición tiene 5% de espacio ocupado?

Hoy me topé con algo raro y quisiera compartirlo con ustedes. Tuve la necesidad de eliminar el NTFS de fábrica de un disco duro externo de 1 TB para ponerle un flamante Ext4 (aquí las instrucciones para hacerlo), y cuál va siendo mi sorpresa que al verificar el espacio disponible, noté que tenía ocupado el 5%, ¡eso son casi 50 GB!

Investigando un poco (como siempre, la wiki de ArchLinux es mi primer punto de referencia), me entero que ese 5% se reserva para root de manera predeterminada. Para discos duros modernos de gran capacidad, ese 5% es demasiado, y totalmente innecesario si el disco en cuestión no será usado para archivos de sistema.

Para reducir ese porcentaje, basta usar el comando tune2fs:

sudo tune2fs -m 0.2 /dev/sdc1

La cantidad especificada con -m representa el porcentaje. Por ejemplo, yo usé 0.2 %, lo cual me redujo el espacio reservado de root de casi 50 GB a sólo 2 GB en mi disco duro externo de 1 TB. Si quieres ser más conservador, puedes usar 1.0 (el 1 %).

Cabe mencionar que en el ejemplo puse /dev/sdc1 como la partición de mi disco duro externo, la cual debes reemplazar por la tuya. Para identificar tus particiones, sus puntos de montaje, así como su porcentaje de uso, basta ejecutar el comando df:

df

Tip: Si son observadores, en la captura de pantalla al inicio de este post, usé el comando dfc (disponible en AUR para ArchLinux y en los repos de tu distro favorita), que proporciona una salida más cómoda en comparación del clásido df.

[Actualización] Por cierto, lo mismo aplica para Ext3 (duda que me preguntaron vía Twitter).

Share

ConsoleKit es reemplazado por systemd-logind en ArchLinux

¡Más cambios en ArchLinux! Hoy amanecimos con la tremenda noticia de que ConsoleKit ha sido eliminado de los repositorios oficiales, y que toda su funcionalidad ahora es responsabilidad de systemd-logind.

¡El pánico se apodera de todos los archeros del mundo! ¡Es el apocalipsis que los mayas predijeron! … Jajaja, nada más alejado de la realidad. Sin embargo, el anuncio es demasiado escueto y no proporciona mayores detalles sobre las implicaciones de este cambio, así que me puse a investigar de inmediato y a hacer varias pruebas. Aquí el resultado.

¿Qué rayos es eso de ConsoleKit y systemd-logind?

Por si no lo sabías, ConsoleKit era utilizado para dos cosas principalmente: Permitir a usuarios normales (no root) montar dispositivos removibles (como pendrives o memorias USB), así como permitir suspender, reiniciar y apagar el sistema. Incluso, es muy probable que en tu archivo ~/.xinitrc tengas algo como ésto:

exec ck-launch-session openbox-session

El “ck-launch-session” era lo que permitía que tu usuario pudiera hacer lo que mencioné previamente. Ahora el encargado de hacerlo es systemd-logind, y aunque este detalle no se menciona en el anuncio oficial, si podemos encontrarlo en una reciente modificación en la wiki de Arch, y cito textualmente:

All PolicyKit actions like suspending the system or mounting external drives will work out of the box.

¡Así que no hay nada que temer! Sólo hay un “pequeño” requisito… ¡ya estar usando systemd!

Como observación adicional, con logind las X (el entorno gráfico) se ejecutan en el mismo tty donde se inició sesión, mientras que con ck-launch-session se creaba una nueva sesión.

¿Qué implica que ConsoleKit ya no esté en los repositorios?

En instalaciones existentes, al actualizar el sistema no se eliminará ConsoleKit, o sea, que aún puede seguirse usando, aunque ya no tiene sentido.

En instalaciones nuevas, ya no podrá instalarse ConsoleKit (aunque parece que pronto estará disponible desde AUR, pero repito, no tiene sentido), lo cual implícitamente nos estará obligando a realizar una instalación basada en systemd.

¿Qué cambios debo hacer en mi sistema?

No mucho. Primero, ¡actualiza!

sudo pacman -Syu

Es muy importante actualizar, para que los últimos cambios se apliquen, pues incluyen paquetes a los cuales se les ha eliminado su respectiva dependencia con ConsoleKit.

Ahora, ya puedes eliminar ConsoleKit, no debes tener problemas de dependencias.

sudo pacman -R consolekit

En caso de ser necesario, no olvides eliminar “ck-launch-session” de tu archivo ~/.xinitrc.

Eso es todo, ya puedes reiniciar y verificar que todo funcione bien.

Adicionalmente, les recomiendo usar el siguiente comando para ver información sobre la sesión actual.

loginctl

Para información más detallada, pueden usar lo siguiente.

loginctl show-session $XDG_SESSION_ID

¿Eso es todo?

¡Si! Bye bye ConsoleKit :-)

Share

¿AUR caído? ¡Usa el respaldo AUR3! [ArchLinux]

Desde ayer viernes está no disponible (error 503) el repositorio comunitario AUR de nuestra querida distro ArchLinux. ¿Te urge mucho instalar o actualizar algo desde AUR? ¡No te preocupes! Existe un respaldo completo de AUR, llamado AUR3, el cual se actualiza diariamente (gracias a mi tocayo @yoyo308 por el aviso).

Veamos las instrucciones paso a paso para instalar un paquete desde AUR3:

  1. Descargamos el bash script (empaquetado y comprimido) de AUR3.

    wget http://aur3.org/mirror/aur3/aur3.tar.gz
  2. Descomprimimos y nos cambiamos a la carpeta correspondiente.

    tar xzf aur3.tar.gz && cd aur3
  3. Le damos permisos de ejecución al script.

    chmod u+x aur3.sh
  4. El script utiliza curl, jshon y gnupg, así que verifica si los tienes instalados.

    sudo pacman -S curl jshon gnupg
  5. Para buscar algún paquete usamos:

    ./aur3.sh -n <paquete_a_buscar>
  6. Para más información de un paquete específico:

    ./aur3.sh -i <paquete>
  7. Para descargar las especificaciones de un paquete:

    ./aur3.sh -g <paquete>
  8. Ya descargado, descomprimimos y nos cambiamos a la carpeta correspondiente:

    tar xzf <paquete>.tar.gz && cd <paquete>
  9. Creamos el paquete a instalar:

    makepkg
  10. Instalamos el paquete resultante:

    sudo pacman -U <paquete>-<version>.pkg.tar.xz

¡Eso es todo! :-)

Share

¿Tu navegador predeterminado es Firefox en Linux, pero tus enlaces se abren en Chrome / Chromium?

Firefox VS ChromeHace unos días me topé con algo raro. A pesar de tener a Firefox como navegador web predeterminado en Linux, al dar clic en enlaces en diversas aplicaciones (Pidgin y Hotot, entre otras), éstos se abrían en Chromium / Chrome. ¿Cómo solucionar este raro comportamiento? ¡Muy sencillo!

Varias aplicaciones (como las que acabo de mencionar), utilizan a XdgUtils como API para comunicarse con el escritorio. Por lo tanto, sólo tenemos que informarle sobre qué navegador web es el que deseamos se vincule con el protocolo HTTP (y HTTPS), y eso lo hacemos ejecutando los siguientes comando en la terminal:

xdg-mime default firefox.desktop x-scheme-handler/http
xdg-mime default firefox.desktop x-scheme-handler/https

¡Eso es todo!

Visto en StackExchange.

Share

Instalación y configuración del entorno LAMP (Apache + PHP + MySQL) en ArchLinux con systemd

ArchLinux systemd LAMP

Ahora que las nuevas instalaciones de ArchLinux usan systemd de manera predeterminada, algunas cosas han cambiado, entre ellas, ciertos detalles en la instalación y configuración del entorno LAMP (Linux + Apache + MySQL + PHP).

Aprovechando que hace unos días realicé una instalación limpia en mi equipo de producción, también lo hice con dicha instalación y configuración, misma que comparto con ustedes en el presente tutorial.

[Actualización 2014-03-10] ¡Ha llegado Apache 2.4 a ArchLinux! Es un cambio importante y requiere nuestra intervención manual para hacer que nuestro servidor LAMP vuelva a funcionar sin problemas.

Paso 1. Instalación de los paquetes necesarios

Antes que nada, instalemos los paquetes básicos que necesitaremos.

sudo pacman -S apache php php-apache mysql

Paso 2. Ejecutando Apache

Ejecutemos (vía systemd) nuestro servidor web Apache con las configuraciones predeterminadas:

sudo systemctl start httpd.service

Adicionalmente, para que Apache se ejecute de manera automática en los siguientes booteos, usa:

sudo systemctl enable httpd.service

Ahora bien, ¿cómo se llama tu servidor? Eso lo tienes establecido en dos archivos: /etc/hostname y /etc/hosts. Lo más común es que en ambos tengas localhost. Si no es así, reemplaza “localhost” por tu nombre de servidor en el resto del tutorial.

En tu navegador web favorito, entra a http://localhost/ o http://127.0.0.1/ donde veremos algo similar a la siguiente captura de pantalla.

Apache corriendo en ArchLinux con systemd

¡Muy feo! ¿verdad? Es porque localhost no tiene ningún contenido, ¡así que vamos a solucionarlo!.

Paso 3. Creando nuestro index.html

Antes de crear nuestro index.html, debemos tener en cuenta dos detalles que se encuentran establecidos en /etc/httpd/conf/httpd.conf (el archivo de configuración principal de Apache en ArchLinux):

  • Durante el booteo del sistema, el encargado de ejecutar Apache es root, pero por motivos de seguridad, de inmediato se cambia al usuario http (que a su vez pertenece al grupo http).

  • La carpeta predeterminada para el contenido de localhost es /srv/http, cuyo propietario es root de manera predeterminada.

Debido a lo anterior, debemos realizar algunas acciones para poder empezar a crear contenido en nuestro servidor web local.

  1. Primero, debemos agregar nuestro usuario al grupo http.

    sudo gpasswd -a miusuario http

    Debemos cerrar nuestra sesión actual y volver a loguearnos para que el cambio sea aplicado.

  2. Ahora, debemos ceder la propiedad de root a http (tanto para el usuario como para el grupo) de manera recursiva para /srv/http.

    sudo chown -R http:http /srv/http
  3. Debemos establecer permisos de escritura para el grupo http (al cual nos hemos agregado) para la misma carpeta (y todo su contenido).

    sudo chmod -R g+w /srv/http

Ahora si, ya podemos crear nuestro index.html, el cual puede ser desde una simple línea de texto …

echo 'Hola Mundo!' > /srv/http/index.html

… hasta algo más elaborado (usa tu editor preferido y guardalo como index.html en /srv/http/).

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
    <title>¡Bienvenidos a ArchLinux!</title>
    <style>
        body { margin: 0; font-family: Helvetica, Arial, sans-serif; }
        h1 { background: #ccc; margin: 0; padding: 10px; }
        #contenido { margin: 10px auto; padding: 10px; width: 500px; }
    </style>
</head>
<body>
<div id="contenido">
    <h1>¡Bienvenido!</h1>
    <p><strong>Apache</strong> corriendo bajo <strong>ArchLinux</strong> con <strong>systemd</strong>.</p>
</div>
</body>
</html>

index.html en funcionamiento

Paso 4. Configurando PHP

Este paso es el típico de siempre. Vamos a configurar Apache para que reconozca a PHP.

Primero, como root, abre el archivo /etc/httpd/conf/httpd.conf con tu editor favorito. Por ejemplo:

sudo vim /etc/httpd/conf/httpd.conf

Ahí, realiza los siguientes cambios:

  1. En la lista que tiene todos los “LoadModule“, y después de LoadModule dir_module modules/mod_dir.so, agrega la línea:

    LoadModule php5_module modules/libphp5.so
  2. Al final de la lista de todos los “Include“, agrega la línea:

    Include conf/extra/php5_module.conf
  3. Asegúrate que la siguiente línea no esté comentada (que no tenga “#” al inicio) en la sección :

    TypesConfig conf/mime.types
  4. Descomenta (elimina el “#” del inicio) la siguiente línea:

    MIMEMagicFile conf/magic

Ahora, como root, abre el archivo /etc/httpd/conf/mime.types con tu editor preferido (¡seguro que es vim!). Por ejemplo:

sudo vim /etc/httpd/conf/mime.types

Al final de dicho archivo agrega la línea:

application/x-httpd-php5            php php5

¡Listo! Reiniciemos Apache para aplicar los cambios:

sudo systemctl restart httpd.service

Para probar que Apache ya reconoce a PHP, vamos a crear el típico archivo de ejemplo:

echo '<?php phpinfo(); ?>' > /srv/http/info.php

Y finalmente, para verlo entra a tu navegador web, y entra a http://localhost/info.php

PHP reconocido por Apache

Paso 5. Configurando MySQL

Primero, vamos a ejecutar de inmediato el servidor de base de datos MySQL con:

sudo systemctl start mysqld.service

Para que se ejecute en cada booteo, usamos:

sudo systemctl enable mysqld.service

Y antes de que hagamos cualquier otra cosa, debemos establecer la contraseña del usuario “root” de MySQL (no es el mismo que el root del sistema). La forma más sencilla de hacerlo, es ejecutar la siguiente utilería:

mysql_secure_installation

Lo anterior nos preguntará primero la contraseña actual de root, la cual no existe, así que debemos dar [Enter], y entonces escribir (y confirmar) la nueva contraseña. Adicionalmente, la utilería nos preguntará algunos detalles adicionales, a los cuales se sugiere responder las opciones predeterminadas.

Ahora, tenemos que decirle a PHP de la existencia de MySQL. Vamos a abrir el archivo /etc/php/php.ini con tu editor favorito …

sudo vim /etc/php/php.ini

… y descomentar (eliminar el “;” al inicio) las siguientes líneas:

 extension=mysqli.so
 extension=mysql.so

Si deseas realizar alguna modificación en los parámetros de MySQL debes hacerlo editando el archivo /etc/mysql/my.cnf.

Finalmente, reiniciemos Apache y MySQL para aplicar los cambios realizados.

sudo systemctl restart httpd.service
sudo systemctl restart mysqld.service

Comentarios Adicionales

Aunque ya los mencioné, no olviden que los archivos de configuración son:

  • Apache: /etc/httpd/conf/httpd.conf
  • PHP: /etc/php/php.ini
  • MySQL: /etc/mysql/my.cnf

Tampoco olviden que bajo systemd, se utilizan los comandos:

  • Habilitar para cada booteo: sudo systemctl enable <servicio>
  • Ejecutar de inmediato: sudo systemctl start <servicio>
  • Detener de inmediato: sudo systemctl stop <servicio>
  • Reiniciar de inmediato: sudo systemctl restart <servicio>
  • Ver el estado del servicio: sudo systemctl status <servicio>

Donde <servicio> puede ser alguno de los siguientes:

  • Apache: httpd.service
  • MySQL: mysqld.service

Por último, no olviden consultar la documentación oficial para más información:

Share

Avisos de ArchLinux en nuestro Escritorio

Avisos de ArchLinux en nuestro Escritorio

Algo he notado los últimos meses: Muchos usuarios de ArchLinux presentan problemas luego de alguna actualización. Algunos ejemplos: La vez que el directorio /lib se convirtió en symlink y su contenido fue movido a /usr/lib, cambios en el archivo /etc/rc.conf debido a la migración a systemd y recientemente una actualización de fontconfig que requería eliminar previamente de manera manual algunos symlinks.

¿Por qué los usuarios tuvieron esos problemas? ¡Porque jamás se enteraron que dichas actualizaciones requerían de nuestra especial atención!

Como usuarios de ArchLinux somos responsables de lo que sucede en nuestro sistema, y siempre (déjenme repetirlo, ¡SIEMPRE!) debemos estar pendientes de los avisos oficiales de los desarrolladores de nuestra querida distro, precisamente para evitar contratiempos y dolores de cabeza.

Ahora bien, como yo sé que muchos no son afectos a diariamente leer feeds (como un servidor, que lo primero que hace por las mañanas es abrir Google Reader para enterarme de las principales noticias oficiales), aquí les dejo mi sugerencia: ¡Mostrar los avisos de ArchLinux en nuestro Escritorio!, así podemos enterarnos de cualquier cosa al momento de entrar a nuestro entorno gráfico. ¿Cómo hacerlo? Lo más sencillo es usando el muy conocido Conky (ver imagen al inicio de este post).

Gracias a que Conky soporta feeds nativamente, es muy fácil incorporar el RSS de ArchLinux:

${rss http://www.archlinux.org/feeds/news/ 1 item_titles 1 }

Lo anterior debe ser incluido en la sección TEXT del archivo ~/.conkyrc.

¡Tip! El último número indica la cantidad de anuncios a mostrar, 1 = sólo el último aviso.

¿Qué hacer entonces si vemos un aviso nuevo? ¡Ir de inmediato a leerlo a archlinux.org/news antes de realizar cualquier actualización con sudo pacman -Syu!

¡Extra! Y antes de que me pidan mi ~/.conkyrc completo, aquí lo tienen.

Share