Buscar este blog

Aviso

El autor de éste blog no se hace responsable de los posibles daños o perdidas de información, que pudieran ocasionarse en su sistema o su vida por la aplicación de la información aquí contenida.

sábado, 24 de marzo de 2012

Instalar LAMP, Apache MySQL PHP en Fedora 16 verne para instalar Drupal

Hola a todos,
Me encontré con el problemita que a pesar de instalar los grupos de paquetes completos para servidor web, aún así no eran todas los paquetes que Drupal necesitaba de PHP, así que pongo como instalar LAMP y estos paquetes.

1. Ejecutar estos comandos para instalar los paquetes:

$ sudo yum groupinstall -y "Web Server"
$ sudo yum groupinstall -y "MySQL Database"
$ sudo yum install -y phpMyAdmin php-mysql php-xml php-pecl-apc php-cli php-pear php-pdo php-domxml-php4-php5 php-gd

2. Activar los servicios de apache y mysql.

$ sudo service httpd start
$ sudo service mysqld start

3. Establece la clave al usuario root de las bases de datos, donde el segundo "password" se cambia por la contraseña que desees poner.

$ sudo mysqladmin password password

4. Configurar mysql.

$ sudo mysql_secure_installation

5. Si se quiere ejecutar los servicios al inicio del sistema.

$ sudo systemctl enable httpd.service
$ sudo systemctl enable mysqld.service

Good luck!

Instalar qt-creator y hacer una aplicación qt con bienvenida y botón cerrar en Fedora.

Buen día.
Me propuse a hacer una aplicación con un mensaje y un botón cerrar y así fue que lo hice:
1. Instalar qt-creator en Fedora

$ sudo yum install -y qt-creator

2. Abrir Qt Creator y seleccionar en el menú

File > New File or Proyect

3. Se abre una ventana, en la sección Projects y se selecciona la plantilla Qt Widget Project y luego en Qt Gui Application y acepta los cambios presionando en Choose...

4. Cambiale el nombre al proyecto y dale a todo Next para no complicarnos.

5. En el panel izquierdo de herramientas y una vez estemos sobre la pestaña Edit
busca en la vista del proyecto y dale doble click sobre mainwindow.ui
que está en la carpeta Forms del proyecto; Se abrirá el archivo en la pestaña Design donde agregaremos un botón a la ventana arrastrando el elemento Push Button de la sección Buttons.

6. Ahora dale click derecho sobre el botón que pusimos en la ventana y pulsa en la opción Go to slot y selecciona la opción clicked() para agregarse ese evento al botón y luego pulsa OK

7. El pasó anterior abrió el fichero mainwindow.cpp donde se escribirá la acción del evento. Dentro de dicho archivo deberá registrarse el evento para cerrar ventana de la siguiente manera:

void MainWindow::on_pushButton_clicked()
{
    close();
}

8. Vuelve a la vista Design como lo hicimos anteriormente y agrega el elemento Label, dale click derecho y pulsa en la opción Change plain text cambiandole el texto por "Bienvenida" o lo que tu quieras, también puedes cambiar el texto del botón de forma similar, le puedes poner "Cerrar Ventana".

9. Ahora que ya está el proyecto completado, debemos presionar Ctrl+B para construir el proyecto y Ctrl+R para ejecutarlo.

10. Ya hemos terminado y solo queda por resaltar que el ejecutable está dentro de la carpeta del proyecto, búscala ;)

Buena suerte!!!

martes, 13 de marzo de 2012

Como hacer la traducción de un sitio a varios idiomas por medio de la funcion gettext de PHP

Buen día, vengo a explicar como hacer un sitio web multilenguaje y la recomendación de como estructurarlo.

Creo que es mi deber escribir acerca del método haciendo una introducción breve de las herramientas y comentar porque es recomendable para proyectos pequeños.

I. Explicación del método y el porque utilizarlo para pequeños proyectos.

El método consiste en no reformar mucho el código si solo hemos programado en HTML, al agregar algunos "<?php echo _(" ")?>" podemos realizar una traducción sin problemas claro que como el código es php se hizo necesario crear un .php para cada .html que habíamos creado antes, luego de esto el programa Poedit se encarga de leernos los tags php para crearnos un archivo de traducción .mo, el método con Poedit debería repetirse para cada idioma adicional que queramos agregar al sitio web.

II. Conceptos Previos y aplicación del método

-PHP es un lenguaje para programar en la web, este lenguaje posee varias funciones muy interesantes que pueden hacer que tu vida como programador web sea muy sencilla si sabes como implementarlo. Los archivos .php que son ficheros que son ejecutados en el servidor (donde está guardada la página web) y le dan como respuesta al equipo cliente (a la computadora donde estas navegando) un código HTML y/o CSS que el navegador web te muestra renderizado.

-La función gettext de php busca en un fichero .mo la traducción del texto que está dentro de dicha función. Ejemplo:

<?php echo gettext("Este sitio web está en Español")?>
<?php echo _("Este sitio web está en Español")?>

Como vemos, dentro de la función gettext o de su alias _ que son equivalentes, se pondrá el texto que quieras que esté traducible en tu sitio web; Esto se hace en los ficheros .html o .htm.

-Para que el método gettext funcione es recomendable mover a una carpeta dentro del servidor para el caso usaré cod como la carpeta donde están todos los .html o .htm que hayas creado. En el directorio principal que yo denominaré /path tendrás que crear un .php por cada .html que moviste. Dichos .php llamarán el código HTML para presentarlo de acuerdo al idioma que le configuremos; Les mostraré el ejemplo de un .php y las explicaciones son los comentarios entre /* */:

<?php
/*$language es una variable que guarda el idioma en que se mostrará el sitio*/
$language="en_US";
/*putenv y setlocale se configuran con el lenguaje en que se desea mostrar el sitio
para el caso se configuran con lo que hayan en $language*/
putenv("LC_ALL=$language");
setlocale(LC_ALL, $language);
/*el domain es la dirección donde se va a encontrar el archivo .mo, para este caso
se va a encontrar en /path/locale/en_US/LC_MESSAGES/en.mo  "en" es el nombre del
archivo y, este se debe poner sin extensión tanto en bindtextdomain y en textdomain*/
bindtextdomain("en", "./locale");
textdomain("en");
/*acá le decimos que incluya el .html o .htm que corresponde .php que estamos creando*/
include ("cod/index.html");
?>

-Como vimos la estructura queda resumida de este modo:

/path Directorio raíz donde se aloja la página
/path/cod Directorio donde se guardan los .html que hemos creado
/path/locale/en_US/LC_MESSAGES Directorio donde se guarda el fichero .mo y .po
/path/locale/fr_FR/LC_MESSAGES Podemos crear otra traducción por ejemplo a Frances
/path/locale/en_GB/LC_MESSAGES O a Inglés Británico teniendo en cuenta el ISO-639 e ISO-3166 pueden encontrar una tabla de estos en esta página: http://frontaccounting.com/wb3/pages/download/language-definitions.php

-Uso del programa Poedit para la creación de los archivos .po y .mo. Estos archivos son los que almacenan la traducción del idioma original del sitio a otro. El archivo .mo es algo así como un binario que contiene la información de las traducciones y es el archivo que usa PHP para ejecutar la función gettext. El .po contiene el código de generación del .mo para que se pueda actualizar, agregar nuevas traducciones y éste es el archivo que reconoce el programa Poedit.
El uso del programa es muy sencillo y su instalación igual, en Fedora se puede hacer de este modo:

$ sudo yum install poedit

Ahora que está instalado abrimos el programa y accedemos a Archivo > Nuevo catálogo..., luego nos aparecerá una ventana con las opciones del catálogo; En Información de proyecto llenamos según nuestro proyecto y lo importante es que el Idioma y País que preguntan son los del idioma al que vamos a traducir y que el Juego de caracteres y el Juegos de caracteres del código fuente sean UTF-8
En la pestaña Carpetas de acuerdo al ejemplo se llenaría de la siguiente forma; El campo Directorio Raíz se llenaría con /path y al agregar en la sección lista de Carpetas un Nuevo elemento lo llenaríamos con cod que es el subdirectorio que me almacena los .html o .htm que anteriormente debimos haber transformado con la funcion gettext de PHP.

En la pestaña Palabras clave escogeremos la que usamos en la transformación del código html, yo utilicé la palabra alias de gettext _ ya que me pareció más legible en el código, las otras palabras tenemos la opción de borrarlas para que no se presente ningún conflicto con otra característica. A continuación click en Aceptar.
Tal vez no te halla detectado ninguna traducción, esto se debe a que por defecto esta aplicación no lee los ficheros con extensión .html o .htm, para agregar estas extensiones ve a Edición > Preferencias > Procesadores > PHP > Editar, la lista de extensiones debe quedar con *.php;*.html;*.htm y la línea de comandos debe quedar con xgettext --language=PHP --from-code=UTF-8 --forcepo -o %o %C %K %F; Dale enter y a continuación acepta todos los cambios.

Para Actualizar el catálogo bastaría con Catálogo > Actualizar desde fuentes tal vez te salga algún Poedit error es normal ya que por defecto las extensiones .html no son reconocidas, acepta todos los resultados de la actualización y luego verás nuevas entradas donde dice Texto original solo basta con llenar la Traducción y guardar los cambios en el directorio:

/path/locale/en_US/LC_MESSAGES/en.po

lunes, 5 de marzo de 2012

Realizar una transferencia de archivos por cable cruzado entre GNU/Linux Fedora

Buen día para todos. Esto en especial lo necesita un amigo así que sin más voy a explicar los pasos:

1. Instalar vsftpd en el servidor de origen.

$ sudo yum install vsftpd

2. Configurar vsftpd por medio del archivo vsftpd.conf

$ sudo nano /etc/vsftpd/vsftpd.conf

3. Modificamos las líneas.

anonymous_enable=YES

Cambiándole el YES por el NO como se aprecia en la línea siguiente.

anonymous_enable=NO

4. Descomentamos las líneas quitandoles el # que la antecede dejándola de la siguiente manera.

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

5. Creamos el archivo con la lista de los usuarios que queremos que se logueen y accedan a sus archivos por ftp.

$ sudo nano /etc/vsftpd/chroot_list

6. Agregamos una linea dentro del archivo con el nombre de usuario, por ejemplo si tu nombre de usuario es jinny dentro del fichero deberás escribir jinny.

7. Desactivamos el firewall o en su defecto liberar el trafico de salida y entrada por el puerto 22. Para desactivar el firewall puedes hacerlo gráficamente con el comando.

$ sudo system-config-firewall

Y luego clickeando en Inhabilitar y luego en Aplicar

8. Desactivamos SELINUX o en su defecto lo ponemos en modo permisivo para que nos acepte el acceso externo de los directorios. Para Desactivar SELINUX en fedora hay que modificar la línea SELINUX=enforcing por SELINUX=disable en el archivo /etc/selinux/config, si nunca has modificado esto puedes cambiarlo con el comando.

$ sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

Si no quieres desactivarlo del todo simplemente ponlo en modo permisivo.

$ sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

9. Instalamos filezilla en el servidor de destino con el comando.

$ sudo yum install filezilla

10. Ahora que tenemos todos los paquetes instalados y configurados es hora de crear una red punto a punto con el cable cruzado, para ello crearemos una nueva red cableada para cada host donde se ha de configurar manualmente los ajustes IPv4 con los siguientes datos.

-Host de origen

Dirección: 192.168.0.1, máscara de red:255.255.255.0, puerta de enlace: 192.168.0.2

-Host de destino

Dirección: 192.168.0.2, máscara de red:255.255.255.0, puerta de enlace: 192.168.0.1

11. Nos conectamos en los respectivos computadores con las redes que ya configuramos y tendremos una red punto a punto.

12. Abrimos filezilla en el servidor de destino y nos situamos en la barra de conexión rápida y escribiremos en servidor 192.168.0.2 y tu usuario y contraseña del equipo de origen en los otros campos y damos click en Conexión Rápida

13. Ahora situados en el árbol de directorio local y en el árbol de directorio remoto con las carpetas que queremos. Arrastraremos el directorio del arbol remoto al árbol local.

14. Para optimizar la transferencia podemos poner en el parámetro Transferencias simultaneas que está en el menú de opciones el número máximo de 10.

Buena suerte.

domingo, 26 de febrero de 2012

Solucionar problemas con las bases de datos y otros problemas de yum

Buen dia. Después de haber instalado kororaa en un portatil, me encontré con que no podía actualizar el sistema, ni instalar paquetes nuevos debido a unas dependencias que no tenían solución; Al ver un poco el problema noté que no lo podía resolver instalando, desinstalando o actualizando paquetería, así que opté por buscar en google, en un foro en ingles (no recuerdo cual era) exponían que podía ser que la base de datos de yum estaría dañada, después de un rato encontré como reconstruirla en este link cabe resaltar que puede funcionar para otros problemas donde yum muestre errores a la hora de ejecutarse.

Posteo los pasos que hice en dicho computador:

1. Hacer un backup de las bases de datos, por facilidad se hará con el comando tar que crea un fichero con todos estos datos y se le dirá que lo guarde en la carpeta personal.

$ tar cvzf ~/backup-rpm.tar.gz2 /var/lib/rpm

2. Borrar las bases de datos de yum

$ sudo rm -f /var/lib/rpm/__db*

3. Reconstruir las bases de datos con el comando rpm

$ sudo rpm --rebuilddb -vv

4. Borrar metadatos y caché

$ sudo yum clean all

5. Actualizar el sistema

$ sudo yum -y update

Con esto logré actualizar el sistema e instalar los paquetes que se necesitaban.Buena suerte.

Instalar Alacarte en Fedora 16 Verne

Buen día, me he puesto en la tarea de averiguar porque no sirve alacarte en fedora 15 y 16 con gnome 3, esta es una importante aplicación que permite organizar y crear lanzadores para nuestro menú de gnome.

Voy a mostrarles los comandos que usé para hacerlo funcionar con su respectiva explicación:

1. Primero instalamos alacarte que está en los repositorios.

$ sudo yum install alacarte

2. Creamos un directorio y accedemos a él para posteriormente guardarle unas descargas.

$ mkdir download-gm; cd download-gm

3. Descargamos el paquete gnome-menus de los repositorios de centos; Este paquete tiene el gmenu.so y el libgnome-menu.so.2 dos bibliotecas que necesita alacarte para ejecutarse:

-para 32 bits

$ wget ftp://rpmfind.net/linux/centos/6.2/os/x86_64/Packages/gnome-menus-2.28.0-4.el6.i686.rpm

-para 64 bits

$ wget ftp://rpmfind.net/linux/centos/6.2/os/x86_64/Packages/gnome-menus-2.28.0-4.el6.x86_64.rpm

4. Utilizamos un comando para extraer del .rpm todos los directorios y archivos que contiene.

$ rpm2cpio gnome-menus-* | cpio -idmv

5. Luego tipeamos estos comandos, para copiar los archivos antes descritos.

-para 32 bits

$ sudo cp usr/lib/python2.6/site-packages/gmenu.so /usr/lib/python2.7/site-packages/gmenu.so

$ sudo cp usr/lib/libgnome-menu.so.2.4.1 /usr/lib/libgnome-menu.so.2.4.1

$ sudo ln -s /usr/lib/libgnome-menu.so.2.4.1 /usr/lib/libgnome-menu.so.2

-para 64 bits

$ sudo cp usr/lib64/python2.6/site-packages/gmenu.so /usr/lib64/python2.7/site-packages/gmenu.so

$ sudo cp usr/lib64/libgnome-menu.so.2.4.1 /usr/lib64/libgnome-menu.so.2.4.1

$ sudo ln -s /usr/lib64/libgnome-menu.so.2.4.1 /usr/lib64/libgnome-menu.so.2

6. Borramos el directorio download-gm donde anteriormente guardamos las descargas.

cd ..; rm -rfv download-gm

7. Ejecutamos alacarte.

$ alacarte

Espero que les haya resultado de utilidad.

Script en bash para remover kernels viejos en Fedora GNU/Linux

Hola a todos, en veces necesitamos eliminar kernels antiguos en nuestro Fedora, pero resulta tedioso hacerlo cada vez que actualizas y lo peor es que siempre son los mismos comandos, para eso existen los scripts que son lineas de código ejecutadas en bash o en dash donde se especifican los comandos y algoritmos que sirven para realizar una tarea en el sistema.

A continuación copiaré el código y vendrá brevemente explicado después del guión:

#!/bin/bash - elegimos el programa interprete de comandos en este caso bash.

echo "Bienvenido, debe ejecutar este script con permisos de Super Usuario o como root." - echo imprime con un espacio de linea el texto o variables que le indiquemos en consola.

echo - escribir "echo" solo imprime un espacio de linea o un enter por así decirlo.

version=`uname -r` - tenemos la variable "version" la cual es un string o una variable con texto en la cual almacenamos el nombre y la versión del kernel que se está usando, "uname -r" es el comando que nos devuelve esto.

echo "kernel actual: kernel-$version" - imprimimos en pantalla la version actual que el usuario tiene instalada.

versiones=`rpm -qa | grep -i kernel | grep -v devel | grep -v loop | grep -v headers | grep -v $version` - obtenemos por medio del programa rpm, los kernel que están instalados en el sistema menos el actual.

if test "$versiones" = ""; then - este if (condicional) nos dice que si no tienes kernels viejos te salgas del programa ejecutando antes lo que viene debajo.

echo "kernels antiguos: Ninguno"; echo; sleep 1 - le decimos al usuario que no tiene kernels antiguos.

echo "Al no tener kernels antiguos no se realizará ninguna acción."

else - si, sí tienes kernels antiguos se ejecutará lo que sigue.

echo "kernels antiguos: $versiones" - informa al usuario los kernel que desinstalara.

echo

echo "comando ejecutado \"sudo yum remove -y $versiones\"" - informa al usuario el comando que ejecuta para desinstalarlos.

echo "Se desinstalaran los kernels antiguos tenga paciencia..."; sleep 1

sudo yum remove -y $versiones - se ejecuta el comando que desinstalará los kernels antiguos.

echo

echo "Se han eliminado los kernels antiguos éxitosamente."
fi
- termina el condicional.

echo; echo "Gracias por usar este script.";echo "Escrito por: Jorge Ulises Useche Cuellar"

Ahora que he terminado de explicarlo les copiaré el código del script que tiene comentado como instalarlo si pensamos hacerlo:

#INSTRUCCIONES DE INSTALACIÓN
#1. Guarda el texto de este archivo en un fichero sin extensión, yo lo llamé rmoldkernels.
#2. Guardalo en la dirección /usr/bin/rmoldkernels, puedes hacerlo con nano u otro editor
#que te permita guardarlo con permisos de root por ejemplo: $ sudo nano /usr/bin/rmoldkernels
#y pegar el código con ctrl + shift + v.
#3. Dale permisos de ejecución con el comando: $ sudo chmod +x /usr/bin/rmoldkernels
#4. Ahora puedes ejecutar el script escribiendo desde una consola: $ sudo rmoldkernels
#
##COMIENZO DEL SCRIPT
#!/bin/bash
echo "Bienvenido, debe ejecutar este script con permisos de Super Usuario o como root."
echo
version=`uname -r`
echo "kernel actual: kernel-$version"
versiones=`rpm -qa | grep -i kernel | grep -v devel | grep -v loop | grep -v headers | grep -v $version`
if test "$versiones" = ""; then
echo "kernels antiguos: Ninguno"; echo; sleep 1
echo "Al no tener kernels antiguos no se realizará ninguna acción."
else
echo "kernels antiguos: $versiones"
echo
echo "comando ejecutado \"sudo yum remove -y $versiones\""
echo "Se desinstalaran los kernels antiguos tenga paciencia..."
sleep 1
sudo yum remove -y $versiones
echo
echo "Se han eliminado los kernels antiguos éxitosamente."
fi
echo; echo "Gracias por usar este script.";echo "Escrito por: Jorge Ulises Useche Cuellar"

Buena suerte.

Más populares

Archivo del blog