2011-10-09

[English] PHP: gd library > 2.0 (2.0.1 / 2.0.34) en Ubuntu

Foreword

I noticed that some English speaking people were reading and even making comments on the original (spanish) post. My first guess is: google translator but as good as it may be it is still an automatic translated document and I think I can do better than a blunt headed computer (at least when it comes to translating), also I though it might bring more people into reading the article. So here it is the English version of it:

Introduction

Ubuntu is a very popular operating system, in the last year its popularity has grown a lot because it is a stable and reliable operating system with regular updates. Its popularity has grown not only in desktops and laptops but also in web servers, however, one must admit that from time to time Canonical has some flaws, sometimes they leave very useful software packages out of their official repositories, sometimes they make mistakes when creating packages, create them in a weird way or leave out the latest updates for some software.

This is exactly the case with the gd library for PHP. The gd library is a graphics library that provides various functionalities like scaling, rotating, trimming, among others. Some plug-ins with advanced graphical effects like ImageFlow use this library to achieve those effects, like the reflections. Some CMS, like Drupal use this plug-in to create picture galleries.

ImageFlow in particular needs gd library version 2.0.1 to work and when it doesn't find it, it doesn't work at all, instead of images we get an error message like this one:

ImageFlow requires GD 2.0.1 or higher (2.0.28 recommended)

The problem is that in the Ubuntu systems, even in the last version (11.04) the gd library version that gets installed when you install the php5-gd package is 2.0 and no matter how many times you run apt-get update you never get an updated version of the library since Canonical (or the community member who maintains the package to be precise) haven't updated the library.

When searching through the network there is a lot of people asking how can they solve this issue, not only in Ubuntu forums but in other sites. There is, among the proposed solutions, one which consists in adding the Debian repositories to the sources.list file and then install php5-gd from there. The problem with this solution is that the dependencies in Debian repositories are not the same that in Ubuntu repositories and some times doing this results in things that stop working like the Plesk control panel, because when installing php5-gd other packages get changed too.

Also when trying to install from the Debian repositories some times another problem arise:

Dependency error:
 php5-gd depends on libjpeg > 15b but 15bubuntu1 will be installed
E: Broken packages

Obviously we have the right library version but the problem is that dpkg fails to compare the versions and so the installation can simply fail, and although we could force the installation from apt-get this could leave us to other problems. We could damage the local repositories or even end with a PHP installation that doesn't work at all.

I have found another solution that worked really well for me and I wanted to share it with the Ubuntu community. I really hope that It will work for you as good as it did for me, so, here we go:

Updating the gd library


Uninstalling the current version of php5-gd

The first thing we have to do is uninstall the current version of php5-gd, if we have one installed, that is, to check if there is a version currently installed we use this command:

dpkg --get-selections | grep php5-gd

We will get something like:

php5-gd      install

If the previous command doesn't show any output it means that there is no version of php5-gd installed so you can just go ahead with the following step "Installing Alien". If the library is installed you must remove it completely first, to do so use this command:

sudo apt-get --purge remove php5-gd

When uninstalling the library the system may tell you that there are some packages that were installed with it and that are no longer needed and will suggest you to use apt-get autoremove to get rid of them. PLEASE DON'T DO IT, leave the packages installed because in any case we are going to install another version of the gd library and so the packages will probably be needed again.

Installing Alien

Alien is an special utility that can be installed in the linux systems that use packages and lets you convert .deb (Debian Packages) to .rpm (RedHat and SuSe Packages) and vice versa. We are going to use this utility in the next step so we install it like so:

sudo apt-get install alien

Once we have Alien installed we are ready to go and search for an updated gd library

Get an updated version of the gd library

The CentOS operating system is a RedHat branch and it has the updated version of the gd library and so we are going to use this operating system's packages to bring an updated version of the library to our Ubuntu system. The fist thing we will need is the exact version of PHP we have installed, to get this information we execute this command:

sergio@fate:~$ php --version
PHP 5.3.2-1ubuntu4.8 with Suhosin-Patch (cli) (built: Apr 27 2011 05:07:22) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
sergio@fate:~$

We see here that the installed version of PHP is 5.3.2, now we are going to pay a visit to CentOS' Repositories and we are going to search for the correct gd library for our PHP 5 installation. We use the search to locate the right php5-gd package for our PHP version and architecture (32 or 64 bits) and we are going to download it, in my case that would be:

wget ftp://ftp.icm.edu.pl/vol/rzm1/linux-opensuse/distribution/11.3/repo/oss/suse/i586/php5-gd-5.3.2-1.31.i586.rpm

What we are going to get is a .rpm package. Now we have to use Alien to convert it to a .deb package, so we do:

sudo alien -d php5-gd-5.3.2-1.31.i586.rpm

Alien will process the package and convert it to a .deb package that we can install:

php5-gd_5.3.2-2.31_i386.deb generated

Now we have to install it like we do with any other Debian package:

sudo dpkg -i php5-gd_5.3.2-2.31_i386.deb

The location where Ubuntu stores the PHP 5 extensions is a bit weird and somewhat curious opposed to CentOS so we will have to move some files to make them available for our Ubuntu PHP 5 installation, we do so like this:

sergio@fate:~$ cd /usr/lib/php5
sergio@fate:/usr/lib/php5$ ls
20090626+lfs  extensions  libexec  maxlifetime
sergio@fate:/usr/lib/php5$ cd extensions
sergio@fate:/usr/lib/php5/extensions$ ls
gd.so
sergio@fate:/usr/lib/php5/extensions$ sudo mv gd.so ../20090626+lfs/gd.so

Basically what we are doing here is moving the library gd.so from the "extensions" directory to the "20090626+lfs" directory which is the directory where Ubuntu puts PHP extension (I told you it was weird) so that PHP can find it.

In your version of Ubuntu the name "20090626+lfs" may be a little different but you'll know which folder it is by the unusual name

Finishing the installation

Well, so we already have a recent version of the gd library, but, we are not done yet, that library is not totally functional, now we have to take care of some details that arise from using other operating system's packages

For the next step we have to make sure that PHP is logging it's error to a file that we can check, to do so we go to the /etc/php5/apache2 directory and open the php.ini file

There we search for a line like this one:

;error_log = php_errors.log

We remove the semicolon (;) at the beginning of the line and replace php_errors.log with the full path to the file we want PHP to log it's errors to, for example I used:

error_log = /var/log/php5/errors.log

We save the file, then we have to make sure that Apache can write on the PHP log file so use these commands to do so:

sergio@fate:/etc/php5/apache2$ cd /var/log
sergio@fate:/var/log$ sudo mkdir php5
sergio@fate:/var/log$ cd php5
sergio@fate:/var/log/php5$ sudo touch errors.log
sergio@fate:/var/log/php5$ sudo chmod o+w errors.log
sergio@fate:/var/log/php5$ 

Now we restart the Apache web server and check the PHP error log file:

sergio@fate:/var/log/php5$ sudo /etc/init.d/apache2 restart
 * Restarting web server apache2
 ... waiting                                                         [ OK ]

sergio@fate:/var/log/php5$ tail errors.log
[30-Apr-2011 22:19:44] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/gd.so' -
libpng14.so.14: cannot open shared object file: No such file or directory in Unknown on line 0
sergio@fate:/var/log/php5$ 

There we see that there is an error, PHP tells us that we are missing the libpng14.so.14 library, so we are going to look for it on the CentOS' repositories. There we use the search with the option that says Search for rpms which contain given file name (1) e.g. libhistory.so to locate the package with the library we need.

Once we locate the correct package for our architecture (32 or 64 bits) we are going to download the package like we did before:

wget ftp://mirror.switch.ch/pool/1/mirror/opensuse/distribution/11.4/repo/oss/suse/i586/libpng14-14-1.4.4-2.1.i586.rpm

We get the RPM package and once again we use Alien to conver it to a Debian package:

sudo alien -d libpng14-14-1.4.4-2.1.i586.rpm
...
libpng14-14_1.4.4-3.1_i386.deb generated

Then we install the library:

sudo dpkg -i libpng14-14_1.4.4-3.1_i386.deb

After installing the library we restart the Apache Web server and check the PHP error log file once again. If we encounter another missing library we will have to repeat the previous procedure to install it from the CentOS' repositories. When you see no more errors in the PHP error log then the installation is done

Verifying the installation

Now we check that the installation is working properly using the phpinfo function and checking that the installed gd library is version 2.0.34:

GD Supportenabled
GD Versionbundled (2.0.34 compatible)
FreeType Supportenabled
FreeType Linkagewith freetype
FreeType Version2.3.12
T1Lib Supportenabled
GIF Read Supportenabled
GIF Create Supportenabled
JPEG Supportenabled
libJPEG Versionunknown
PNG Supportenabled
libPNG Version1.4.3
WBMP Supportenabled
XPM Supportenabled
XBM Supportenabled

Conclusion

Using the Android utility we managed to update the gd library for PHP. Until Canonical updates the library version in the official Ubuntu repositories this is a good way around the problem.

I certainly hope that this post was useful to you. For me it meant an entire day working trying to find a way to update the library while keeping PHP, Plesk and the rest of the software installed on the server working.

2011-09-09

Apagar el equipo y hacer una captura de pantalla unos segundos antes

Bitelia publicó el día de hoy esta entrada [Descarga del día] AudioBookSleep, cuenta atrás para el cierre del sistema, un programa Windows que permite introducir un tiempo (en minutos) después del cual el sistema se apagará pero no sin antes dejar una captura de pantalla unos instantes antes de que ocurra el cierre del sistema.

Yo me quedé pensando si no sería posible hacer lo mismo en Linux y pensé que tal vez con un script del shell se podría lograr, así que me di a la tarea y escribí un pequeño script de shell que permite apagar el sistema y hacer una captura de pantalla un segundo antes de que se lleve a cabo el cierre del sistema, aquí está:

#!/bin/bash
seconds=$[$1 * 60]
seconds_shot=$[$seconds - 2]
shutdown -P $1 &
sleep ${seconds_shot}s
shot_filename=$(date +'%Y-%m-%d %H.%M.%S').png
scrot "$shot_filename"

Basta con guardar este texto en un archivo llamado shutdown.sh, luego darle permisos de ejecución:

chmod u+x shutdown.sh

Y luego podremos usarlo así:

sudo ./shutdown.sh 60

Nota: Hay que llamar al script usando sudo por que el comando shutdown solo puede ser ejecutado por el root.

Damos el tiempo en minutos y un segundo antes de que se realice el shutdown el script del shell ejecutará el comando scrot que tomará un screenshot y lo guardará en un archivo cuyo nombre será la fecha y hora en la que fue tomado.

cool! :)

2011-05-01

PHP: gd library > 2.0 (2.0.1 / 2.0.34) en Ubuntu

Introducción

Ubuntu es un sistema operativo muy popular, en estos últimos años ha crecido muchísimo en popularidad por ser un sistema operativo estable confiable y con actualizaciones regulares. Su popularidad ha crecido mucho no solo en los sistemas de escritorios y portátiles sino también en los servidores Web, sin embargo, hay que admitir que a veces Canonical tiene algunas fallas, a veces dejan por fuera de sus repositorios software muy útil, otras veces empaquetan mal o de manera extraña y otras veces no ponen en sus repositorios las versiones más actualizadas del software.

Este es el caso de la librería gd para PHP. La librería gd es una librería gráfica que proporciona varias funciones como escalado, rotación, recortado y otras más. Algunos plug-ins con efectos especiales gráficos como el ImageFlow utilizan esta librería para lograr los efectos especiales, como el reflejo en las imágenes, adicionalmente, algunos CMS(s) como Drupal utilizan este plug-in para crear galerías fotográficas.

El ImageFlow necesita de la versión 2.0.1 de la librería gd para funcionar y cuando no la encuentra no funciona en lo absoluto, en lugar de imágenes recibimos un mensaje como este:

ImageFlow requires GD 2.0.1 or higher (2.0.28 recommended)

El problema es que en los sistemas Ubuntu, aún en la última versión (11.04) la librería gd que se instala al instalar el paquete php5-gd es la 2.0 y por más que corramos apt-get updrade nunca obtendremos una versión más actualizada de la librería ya que canonical no la ha actualizado.

Al buscar a través de la red hay un montón de personas que preguntan como pueden solucionar este problema, no solo en los foros de ubuntu sino en otros lugares. Hay por ahí algunas soluciones que consisten en agregar los repositorios de debian al sources.list e instalar php5-gd desde ahí. El problema es que las dependencias en los repositorios de debian no son iguales a las de los repositorios de ubuntu y a veces hacer eso resulta en cosas que dejan de funcionar, como el Plesk por que al instalar php5-gd se cambian otros paquetes.

Adicionalmente al instalar desde los repositorios de debian nos podemos encontrar con mensajes como este:

Problemas de dependencias:
 php5-gd depende de libjpeg > 15b pero 15bubuntu1 será instalada
E: Paquetes rotos

Obviamente tenemos una librería funcional pero el problema es que el dpkg falla al comparar las versiones y por eso la instalación puede simplemente fallar, y aunque podríamos forzar la instalación desde el apt-get esto podría llevarnos a tener problemas después. Podríamos tirarnos los repositorios o hasta terminar con un php que no funciona en absoluto.

Yo he encontrado una solución que funcionó muy bien para mi y por eso quiero compartirla con la comunidad ubuntu. Espero les funcione igual de bien que a mi, aquí vamos:

Actualizar la librería gd


 

Desinstalar la versión actual de php5-gd

Lo primero que haremos es desinstalar la versión actual de php5-gd, si ya tenemos alguna instalada, para saber si hay una instalada podemos usar este comando:

dpkg --get-selections | grep php5-gd

A lo que el sistema responderá con:

php5-gd      install

Si el comando anterior no muestra ninguna salida significa que no tienes instalada la librería php5-gd por lo que podrás continuar con el siguiente paso. Si está instalada deberás desinstalarla por completo haciendo uso del siguiente comando:

sudo apt-get --purge remove php5-gd

Cuando desinstales la librería el sistema te dirá que hay ciertos paquetes que se instalaron con ella y que ya no son necesarios y te sugerirá que corras apt-get autoremove para quitarlos, NO LO HAGAS, deja los paquetes ahí por que igual vamos a instalar luego la librería gd nuevamente así que probablemente serán necesarios.

Instalar Alien

Alien es una utilidad especial que se puede instalar en los sistemas linux que utilizan sistemas de paquetes y que permite convertir paquetes deb (de debian) a rpm (de RedHat y SuSe) y viceversa, vamos a emplear esta utilidad, así que la instalamos así:

sudo apt-get install alien

Una vez está instalado Alien estamos listos para ir a buscar la librería gd actualizada.

Obtener una versión actualizada de la librería gd:

El sistema operativo CentOS que es una ramificación de RedHat si tiene la versión actualizada de la librería gd por lo que usaremos los paquetes de este sistema operativo para traer una versión actualizada a la librería a nuestro ubuntu. Lo primero que necesitamos saber es que versión de php5 tenemos, para lo cual ejecutamos:

sergio@fate:~$ php --version
PHP 5.3.2-1ubuntu4.8 with Suhosin-Patch (cli) (built: Apr 27 2011 05:07:22) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
sergio@fate:~$

Vemos que es la 5.3.2, ahora vamos a ir a visitar el repositorio de paquetes de CentOS y vamos a buscar la librería gd adecuada para nuestra versión de php5. Usamos el search para localizar el paquete php5-gd correcto para nuestra versión de php5 y nuestra arquitectura (32 o 64 bits) y lo descargamos, en mi caso;

wget ftp://ftp.icm.edu.pl/vol/rzm1/linux-opensuse/distribution/11.3/repo/oss/suse/i586/php5-gd-5.3.2-1.31.i586.rpm

Lo que obtendremos será un paquete .rpm. Ahora debemos usar el alien para convertirlo a un paquete .deb, para lo cual:

sudo alien -d php5-gd-5.3.2-1.31.i586.rpm

Alien procesará el paquete y lo convertirá a un paquete .deb:

php5-gd_5.3.2-2.31_i386.deb generated
Ahora debemos instalarlo como cualquier paquete debian corriente:
sudo dpkg -i php5-gd_5.3.2-2.31_i386.deb

La organización de las extensiones de PHP 5 es un poco diferente entre ubuntu y CentOS, así que deberemos mover la librería al lugar correcto para que funcione con el PHP, lo hacemos así:

sergio@fate:~$ cd /usr/lib/php5
sergio@fate:/usr/lib/php5$ ls
20090626+lfs  extensions  libexec  maxlifetime
sergio@fate:/usr/lib/php5$ cd extensions
sergio@fate:/usr/lib/php5/extensions$ ls
gd.so
sergio@fate:/usr/lib/php5/extensions$ sudo mv gd.so ../20090626+lfs/gd.so

Básicamente, aquí lo que hemos hecho es mover la librería gd.so del directorio extensions al directorio 20090626+lfs que es donde ubuntu almacena las extensiones de php5

Terminar la instalación

Bien, ya tenemos instalada una versión reciente de la librería gd, pero aún no es totalmente funcional, ahora debemos encargarnos de algunos detalles que surgen como resultado de usar paquetes de otro sistema operativo.

Para el siguiente paso debemos asegurarnos de que PHP esté registrando los errores en un archivo de registro que podamos consultar, para ello, vamos a /etc/php5/apache2 y abrimos el archivo php.ini

Allí buscamos una línea como esta:
;error_log = php_errors.log
Le retiramos el punto y coma (;) al inicio de la línea y colocar allí la ruta a un archivo donde se escribirá el registro de los errores de PHP, por ejemplo:
error_log = /var/log/php5/errors.log

Guardamos el archivo, luego debemos asegurarnos de que el Apache pueda escribir en el archivo que hemos elegido:

sergio@fate:/etc/php5/apache2$ cd /var/log
sergio@fate:/var/log$ sudo mkdir php5
sergio@fate:/var/log$ cd php5
sergio@fate:/var/log/php5$ sudo touch errors.log
sergio@fate:/var/log/php5$ sudo chmod o+w errors.log
sergio@fate:/var/log/php5$ 

Ahora reiniciamos el apache y consultamos el archivo de registro de errores:

sergio@fate:/var/log/php5$ sudo /etc/init.d/apache2 restart
 * Restarting web server apache2
 ... waiting 
                                                                                                                                                                           [ OK ]

sergio@fate:/var/log/php5$ tail errors.log
[30-Apr-2011 22:19:44] PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/gd.so' - libpng14.so.14: cannot open shared object file: No such file or directory in Unknown on line 0
sergio@fate:/var/log/php5$ 

Allí vemos que hay un error, nos dice que nos hace falta la librería libpng14.so.14, vamos a ir a buscarla al repositorio de CentOS. Allí usamos el search con la opción Search for rpms which contain given file name (1) e.g. libhistory.so para localizar el paquete con la librería que necesitamos.

Una vez lo ubiquemos seleccionamos el paquete correcto para nuestra arquitectura (32 o 64 bits) y descargamos el paquete como antes:

wget ftp://mirror.switch.ch/pool/1/mirror/opensuse/distribution/11.4/repo/oss/suse/i586/libpng14-14-1.4.4-2.1.i586.rpm

Obtendremos el RPM y nuevamente usamos el Alien para convertirlo a un paquete de debian:

sudo alien -d libpng14-14-1.4.4-2.1.i586.rpm
...
libpng14-14_1.4.4-3.1_i386.deb generated
Luego instalamos la librería:
sudo dpkg -i libpng14-14_1.4.4-3.1_i386.deb

Luego de esto reiniciamos el apache y comprobamos nuevamente el archivo de errores del PHP. Si encontramos otra librería que haga falta tendremos que repetir el procedimiento anterior para instalarla. Cuando el PHP no presente más errores habremos terminado con la instalación.

Comprobar la instalación:

Ahora comprobamos la instalación usando la función phpinfo y verificamos que la librería gd instalada sea la 2.0.34:

GD Supportenabled
GD Versionbundled (2.0.34 compatible)
FreeType Supportenabled
FreeType Linkagewith freetype
FreeType Version2.3.12
T1Lib Supportenabled
GIF Read Supportenabled
GIF Create Supportenabled
JPEG Supportenabled
libJPEG Versionunknown
PNG Supportenabled
libPNG Version1.4.3
WBMP Supportenabled
XPM Supportenabled
XBM Supportenabled

 

Conclusión

Usando la utilidad Alien hemos logrado actualizar la librería gd para php. Hasta que canonical actualice la versión de los repositorios de ubuntu esta es una buena forma de quitarnos el problema de encima.

Espero que esta entrada les haya sido de mucha utilidad. Para mi significó un día entero de trabajo buscando la manera de actualizar la librería.

2011-04-25

What a good Mid-Rate Lineage II server should have

I've been playing Lineage II since C1 I started in this 1x server. Ever since then a lot has changed and I'm not talking about the game client only but about myself. I have moved to other servers and I have experienced Low rate, mid rate and high rate and the one I like the most without any doubt is Mid rate it has the best of the other two experiences.

The best mid-rate server I have ever played is Sieghart in Lineage II Teh Game. That server no longer exists because Lineage II Teh Game have been through a lot of changes and it doesn't have a Mid-rate server anymore, it only has the original Bartz low rate server and the high rate Aria server.

Without any doubt Sieghart taught me a lot it gave me more experience that all the other servers together, It was there where I first raided an Epic Boss, the first time I played olympiads and the first time I became hero. It was also the very first time I enjoyed being in a clan and playing with friends. Sadly the guys from Teh Game closed the server because they did a really bad update and they had no way to roll the server back to what it was before that shameful decision (that is my guess) but it doesn't change the fact that on it's peak that was without a doubt the best Mid-rate server ever made.

After Sieghart closed I moved on to Phoenix and I have to admit that I had a really good experience there although I think I ended up hating Greek people because they where so cocky and arrogant and in the top of that they were cheaters and made almost any kind of dirty tricks to prove that there was no one better than them... off course a lot of them where just bad players, curse them! but anyways, I had a good time playing in Phoenix. Sadly it was also wiped because the GMs did a poor job when it came to balance the server they did a lame job with landing rates and made sloppy work when it came to fix those faults also I think they wiped out the server because a lot of newbie guys where crying because they had no way to reach the level old players had attained, in the end I think it was all for nothing.

Now they opened Aria which is not a bad server just it doesn't have what I find fun about a server it is totally PvP driven and I don't like PvP that much, so I decided to leave.

Ever since I have been looking around the web trying to find a good Mid-rate server as close to Sieghart as possible but to no avail, nowadays It seems like any noob can create a Lineage II server and thus you see some things around that ¬.¬ there are no words to describe such failed servers.

There are guys around the web trying to create Mid-rate servers that are more like High-rate servers others trying to create Mid-rate servers with crafting which is a feature for low-rate servers. OMG What are they thinking? I can't believe they really think they will succeed with those crappy servers. And last but not least people who tries to force server balance with stupid mods like making Epic bosses accessible only through castles (yeah, like that is going to work -.- It's like they have never played in other servers before). I say, that is why your servers are boiling with peaks of 11 players on-line! Good job ¬.¬

Okay, so here is what I think a good Mid-rate server should have. If this description resembles Sieghart it is because that was a really good Mid-rate server. So here it goes:

  • First of all the rates. It is MID-RATE, that means above 30x and under 100x. Please don't make me loose my time going in your "mid-rate" server site to see that it is a 1000x server THAT IS NOT MID-RATE BY GOD'S SAKE!!!!
  • Crafting: We DON'T want to craft that is for low rates! We just want to buy our equipment from the NPC Shop as we level up. It is okay to make high level equipment and S/As hard to obtain but PLEASE, PLEASE don't make us craft it totally sucks!
  • Adena and XP balance: Please don't make me reach level 61 with D grade equipment that is something I hate about official L2, It totally sucks! Please, please, just take a character and level it up and adjust the adena drop rate or prices in the NPC shop accordingly. (I guess there are a lot of GMs who level up by command and don't even bother on testing the drop rates or adjusting the prices).
  • NPC Buffers: This is not so hard I don't know why so many servers fail with this. It is a Mid-rate server there should be a NPC buffer in towns we don't want to log 5 accounts just to level up and there are no big clans with a lot of support characters in Mid-rate servers. And please, by god's sake don't go over to the other end, please don't put Songs, Dances or Third class buffs in NPC buffers is mid-rate not high rate. If the server is starting it is okay but as the server grow up those buffs should be removed from NPC buffers. Is a mid-rate not high rate PvP server.
  • Farming zones: Please don't fuck everything up modding the mobs to drop special items to buy things from the NPC Shop it totally sucks! Don't restrict farming areas, some of us who have experience in the game have special areas to level up our characters depending on the class and we DON'T want to be restricted by noobs like you that think that all areas are provided equal.
  • Custom Currency: In a Mid-rate server it should be a custom currency with an appropriate exchange rate to Adena. Medals worked really well in Sieghart and obtaining them through events was a really cool feature. It was also a nice feature to make champions drop some of this custom currency but only on high levels (80 and above) to avoid low level bot characters farming for a lot of them.
  • High level equipment and S/As: Please, we don't want to level up a crystal to put acumen on our Sword of Miracles which we will be using for only an hour while we level up to 76. In a mid-rate servers weapons should be sold with S/A on them up to a certain grade after which you have to get it in the retail way (leveling up a crystal). In a Freya server for example I think you should be able to buy S/A weapons on the NPC Shop up to S grade, maybe S80.
  • Please avoid custom weapons and armors we don't want to play low rate but that doesn't mean we want to play a totally customized game, we don't want titanium or crystal or triumph sets, we are okay with the sets NCSoft made.
  • Features page: Please when making the server website add a feature page in which I can see what kind of game-play should I expect from the server. I care more about NPC Shop and Buffers and custom farming areas that the physical setting of the machine that runs the server.
  • Events: Please add events to the server. Good events, like those in Lineage II The Game, TvT, CTF, KoH, FOS not crappy events like races and chest events (those are good for a GM event not for automated events). Events are crucial in this kind of servers because we want to PvP from time to time.
  • Please don't customize Sub class and Noblesse quests. If you think your server doesn't have the population to allow players to do subclass quest then make it free. As for noblesse please don't customize this quest this quests are one of the things that I appreciate from low-rate and retail.

This is is for now. If I think of something else I will add it here. As I go around the web searching for a good Mid-rate server I will post my findings here (only the ones I make from now on). You never know what else can you find around and I would like to make fun of fail servers.

2011-04-07

MacOS X en VirtualBox -- Mi experiencia personal --

Bueno, primero que nada decir que esto no pretende ser un tutorial, lo que funcionó para mi puede no funcionar para nadie más, nada es seguro cuando se trata de hacer correr este sistema operativo en PCs y más aún sobre máquinas virtuales. Así pues esta es mi experiencia personal, puede que funcione para ustedes como puede que no


 

Que hace falta:

Antes de comenzar deben contar con lo siguiente:

  • Un procesador Intel de 64 bits que tenga la tecnología Intel VT (Puedes verificar si tu procesador cuenta con esta tecnología en la Lista de procesadores de Intel que la soportan)
  • Una tarjeta madre que soporte la tecnología Intel VT (Puedes verificar si tu tarjeta madre soporta la tecnología en la Lista de tarjatas madre Intel que la soportan)
  • Un sistema con un hardware razonablemente poderoso, 2 GB de RAM o más, procesador de doble núcleo de 2 Ghz o más rápido
  • VirtualBox 4.0 o posterior
  • Una copia del iBoot
  • Una copia (sin parchar) del MacOS X Snow Leopard [Si tienes una copia parchada este tutorial no te aplica]

 

Cómo empezar

Lo primero que necesitas es activar la tecnología Intel VT en tu tarjeta madre. La mía venía con esta característica desactivada y según he leído vienen por defecto así.

Para activar la tecnología Intel VT debes:

  1. Reiniciar tu equipo
  2. Cuando aparezca la pantalla de incio de la Board debes presiona F2 para ingresar a la utilidad de configuración de la BIOS
  3. En la opción de Seguridad (Security) localiza la opción y activa la tecnología Intel VT
  4. Si tu tarjeta madre cuenta con extensiones como VT-d, VT-i o VT-c no dudes en activarlas también ya que mejorarán muchísimo el desempeño de la máquina virtual.

  5. Guarda los cambios en la configuración y abandona la utilidad de configuración
  6. Apaga tu equipo y enciéndelo de nuevo. (OJO, esto es importante, debes apagar el equipo, no solo reiniciarlo, debes apagarlo completamente o los cambios no surtirán efecto)

Si estás preocupado por las repercuciones que activar la tecnología Intel VT podría tener en el desempeño normal de tu equipo en las tareas cotidianas no te preocupes, no tiene ningún impacto en aplicaciones que no estén relacionadas con Virtualización, en algunos lugares dice que puede reducir la velocidad de las máquinas virtuales en el VirtualBox pero la verdad yo no he visto tal comportamiento en mis máquinas virtuales.

Configurar la máquina virtual

  1. Ingresa al VirtualBox y crea una nueva máquina virtual
  2. Dale a la máquina virtual una buena cantidad de memoria, 1 GB o más
  3. Crea un nuevo disco duro para la máquina virtual. Dependiendo de lo que pretendas hacer en la máquina virtual y de la cantidad de espacio de la que dispongas selecciona un tamaño adecuado para el disco duro virtual.
  4. Listo, ya está lista la máquina Virtual

Configurar la máquina Virtual

Debes configurar la máquina Virtual pues la configuración predeterminada del VirtualBox no funcionará de entrada. Las configuraciones que debes alterar son:

  1. Fíjate que esté seleccionado el Chipset ICH9, que esté habilitado el I/O APIC y que esté deshabilitada la opción EFI:
  2. Únicamente debes darle una CPU a esta máquina virtual o te encontrarás con inestabilidades cuando esté corriendo.
  3. Luego en la pestaña de Aceleración asegúrate de marcar la opción Intel VT. [Según he leido la opción de Paginación Anidada solo funciona en los Intel Core i7 pero si la dejas activa y tu procesador no es compatible el VirtualBox no la toma en cuenta, yo la dejé activa en cualquier caso]
  4. Aumenta la memoria de vídeo que le das a la máquina virtual. Si quieres puedes activar la opción de Aceleración 3D y probar a ver que tal te va, si mejora el rendimiento puedes dejarla activada, si te causa problemas puedes retirarla.
  5. Finalmente deberás montar la imágen del iBoot en la unidad de CD de la máquina virtual, sin el iBoot no podrás arrancar el instalador del MacOS X

Un comentario sobre EFI

Un pequeño paréntesis en el procedimiento. EFI es un sistema de arranque desarrollado por Intel y es el que utilizan los Mac, entonces ¿por que no dejamos el EFI activado? La razón es que al tratar de arrancar la máquina virtual en modo EFI el Kernel del MacOS X hace una verificación de procesador y al no detectar un procesador conocido lanza un Kernel Panic y no continua arrancando, al menos eso me pasó a mi y por eso tuve que usar el iBoot.

Si alguien aquí logra arrancar en modo EFI sin que el MacOS lance el Kernel Panic por favor haga un comentario con el procesador que tiene y si tuvo que hacer alguna configuración adicional para poder arrancar.

Instalar MacOS X

  1. Arranca la máquina Virtual, lo primero que aparecerá será el iBoot:
  2. Mientras estás en el iBoot utiliza el menú de la máquina virtual para montar el CD del MacOS X y luego presiona F5 (en la máquina virtual), verás que aparecer el CD en el menú del iBoot. Luego presiona Entrar para arrancar el instalador
  3. Selecciona el idioma para el instalador:
  4. Haz clic en "Continuar" y acepta los términos de la licencia para iniciar el instalador
  5. El instalador te pedirá que selecciones un disco duro para instalar el sistema pero no verás ningún disco duro en la lista, haz clic en el menú utilidades y selecciona Utilidad de Discos
  6. En la utilidad de discos selecciona el disco duro en la lista de la izquierda, luego pásate a la pestaña "Borrar" y haz clic en el botón "Borrar" para borrar el disco duro, esto creará tabla de particiones, y partición nueva todo de forma automática.
  7. Una vez el disco haya sido borrado Haz clic en el menú Utilidad de Discos y selecciona "Salir de la Utilidad de Discos" u oprime Windows+Q para volver al instalador, ahora si verás el disco en la lista de discos duros:
  8. Selecciona el disco duro y haz clic en instalar para empezar la Instalación, la instalación tardará aproximadamente 30 minutos.

Cuando termine la instalación la máquina virtual se reiniciará (Si no se reinicia sino que ves un mensaje de error diciendo que debes apagar el equipo en varios idiomas reiníciala desde el menú de VirtualBox).

Al iniciar nuevamente la máquina virtual no arrancará, verás un mensaje que dice que no se han encontrado sectores de arranque. Debes entonces volver a montar el iBoot en la unidad de CD y reiniciar la máquina virtual, verás entonces lo siguiente en el iBoot:

Oprime la flecha derecha y selecciona la manzana, luego presiona Entrar para arrancar el sistema operativo.

Me ha ocurrido a veces que el sistema operativo no arranca sino que aparece ese odioso mensaje en varios idiomas diciéndome que debo apagar el equipo, en ese caso apago la máquina virtual desde el menú del VirtualBox y la vuelvo a arrancar y arranca bien, es un tanto caprichudo ese sistema operativo al estar corriendo en una máquina virtual.

Después de que la máquina virtual vuelva a arrancar deberás introducir información como tu nombre, correo electrónico y demás, nada del otro mundo, también deberás escoger una distribución de teclado. Por difícil que resulte creerlo el MacOS NO tiene la distribución de teclado latinoaméricano así que tendrás que conformarte con la distribución Español de España.

Actualizaciones del Sistema

Una vez instalado el MacOS X si quieres actualizar el sistema a la última versión debes tener en cuenta lo siguiente. Si actualizas el sistema seleccionando el menú de la manzana y luego haciendo clic en Actualizaciones de Software lo que sucederá es que al reiniciar el sistema luego de la instalación perderás el ratón. Por alguna razón al actualizar el sistema operativo la máquina virtual es incapaz de reconocer el ratón del host y créeme manejar un MacOS X sin el ratón es toda una odisea.

Así pues, si quieres actualizar el sistema te recomiendo que sigas estos pasos:

  1. Bájate el último Update Combo para el Snow Leopard de la página oficial de Apple. Al momento de escribir este post el último Update Combo era el 10.6.6
  2. Bájate el MultiBeast, que es un paquete para post-instalación que trae varias utilidades como Extensiones de Kernel para sonido, para tarjetas de red, un bootloader, etc.
  3. Instala el Combo update que bajaste de Apple. Cuando la instalación termine el instalador te pedirá que reinicies la máquina, NO LO HAGAS.
  4. Instala el MultiBeast y selecciona entre las opciones que te presenta una que se llama "EasyBeast", que es la más simple.
  5. Después de que se instale el MultiBeast ahí si podrás reiniciar la máquina y tendrás el Sistema Operativo actualizado y no habrás perdido el Mouse.

Luego de hacer el procedimiento anterior ahí si podrás utilizar la actualización de software del sistema para actualizar el iTunes y el resto del software.

iWork

Instalé iWork 09 pero no funcionó aunque el programa corre no veo lo que escribo en Pages, los otros programas ni me molesté en probarlos.

Corrí las Actualizaciones de Software y actualicé tanto el sistema operativo como el iWork y definitivamente no funcionó.

Open Office por el contrario funciona muy bien, mi consejo es, no usen iWork, usen Open Office, hace lo mismo y funciona mejor.

Comentarios finales

Algunos comentarios finales:

Antes que nada debes recordar que el MacOS está corriendo en una máquina virtual y por lo tanto tiene algunas cosas que no funcionan como funcionan en un Mac real, tiene glitches gráficos, o se puede congelar repentinamente.

Segundo, no tienes soporte para sonido, el sonido dentro de la máquina virtual es horrible, se oye cortadísimo y muy lento, si quieres puedes intentar instalar este kext para el sonido AC97, yo aún no lo he intentado

Otra cosa que no he podido hacer es hacer que el sistema operativo corra a más de 1024x768, hay una solución en la documentación del VirtualBox pero el problema es que solo funciona cuando el sistema arranca en modo EFI y como ya expliqué más arriba el sistema no está arrancando en modo EFI así que esa solución no funciona

Siempre que arranques el sistema debes tener el iBoot montado en la unidad de CD para poder bootearlo, pero una vez que el sistema arranca ya puedes cambiar la imagen de CD sin ningún problema.

Nunca podrás usar el sistema operativo para hacer cosas que requieran una gran exigencia gráfica, osea, si pretendías editar vídeo con Adobe Premiere olvídate, mejor anda y comprate un Mac real

A mi el sistema nunca me apaga, siempre que trato de apagarlo me sale el mensaje ese de los varios idiomas así que a la final tengo que forzar a la máquina virtual a apagarse. Tampoco puedo entrar al Diálogo "Acerca de este Mac" cuando trato de hacer eso la interfase gráfica muere. (Se parece mucho a cuando se reinicia el servidor X en Linux)

Conforme experimente más y vaya encontrando soluciones a los problemas que he descrito aquí postearé nuevas entradas al respecto. Por ahora espero que se diviertan experimentando con este sistema operativo, que por cierto es hermano de Linux =), Así es, también tiene un kernel Unix