Category Archives: GNU/Linux

CentOS “Error: php-mysql conflicts with php-mysqlnd” updating with PHP 7.0

If you get an error about a conflict between php-mysql and php-mysqlnd when updating CentOS packages after installing and activating the PHP 7.0 remi package source like this one:

# yum -y install php-mysql

...

--> Finished Dependency Resolution
Error: Package: php-mysql-5.4.45-7.el6.remi.x86_64 (remi)
           Requires: php-pdo(x86-64) = 5.4.45-7.el6.remi
           Removing: php-pdo-5.3.3-46.el6_7.1.x86_64 (@updates)
               php-pdo(x86-64) = 5.3.3-46.el6_7.1
           Updated By: php-pdo-7.0.5-1.el6.remi.x86_64 (remi-php70)
               php-pdo(x86-64) = 7.0.5-1.el6.remi
           Available: php-pdo-5.3.3-40.el6_6.x86_64 (base)
               php-pdo(x86-64) = 5.3.3-40.el6_6
           Available: php-pdo-5.3.3-46.el6_6.x86_64 (updates)
               php-pdo(x86-64) = 5.3.3-46.el6_6
           Available: php-pdo-5.4.45-5.el6.remi.x86_64 (remi)
               php-pdo(x86-64) = 5.4.45-5.el6.remi
           Available: php-pdo-5.4.45-7.el6.remi.x86_64 (remi)
               php-pdo(x86-64) = 5.4.45-7.el6.remi
           Available: php-pdo-7.0.4-1.el6.remi.x86_64 (remi-php70)
               php-pdo(x86-64) = 7.0.4-1.el6.remi
Error: php-mysql conflicts with php-mysqlnd-7.0.5-1.el6.remi.x86_64
Error: Package: php-mysql-5.4.45-5.el6.remi.x86_64 (remi)
           Requires: php-pdo(x86-64) = 5.4.45-5.el6.remi
           Removing: php-pdo-5.3.3-46.el6_7.1.x86_64 (@updates)
               php-pdo(x86-64) = 5.3.3-46.el6_7.1
           Updated By: php-pdo-7.0.5-1.el6.remi.x86_64 (remi-php70)
               php-pdo(x86-64) = 7.0.5-1.el6.remi
           Available: php-pdo-5.3.3-40.el6_6.x86_64 (base)
               php-pdo(x86-64) = 5.3.3-40.el6_6
           Available: php-pdo-5.3.3-46.el6_6.x86_64 (updates)
               php-pdo(x86-64) = 5.3.3-46.el6_6
           Available: php-pdo-5.4.45-5.el6.remi.x86_64 (remi)
               php-pdo(x86-64) = 5.4.45-5.el6.remi
           Available: php-pdo-5.4.45-7.el6.remi.x86_64 (remi)
               php-pdo(x86-64) = 5.4.45-7.el6.remi
           Available: php-pdo-7.0.4-1.el6.remi.x86_64 (remi-php70)
               php-pdo(x86-64) = 7.0.4-1.el6.remi
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

You can just remove the PHP 5.x version of php-mysql:

# yum remove php-mysql

Update all the packages:

# yum -y update

And finally just install php-mysql again but this time it will be from PHP 7.0:

# yum -y install php-mysql

Install MongoDB and the PHP driver in CentOS

Install MongoDB server

Create the /etc/yum.repos.d/mongodb-org-3.0.repo file with this content:

[mongodb-org-3.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1

Then install mongodb with this commando:

# yum install -y mongodb-org

This are the important files and folders for MongoDB in CentOS:

  • Configuration file: /etc/mongod.conf
  • Data files: /var/lib/mongo/
  • Logs files: /var/log/mongodb/

By default the used port is 27017 and also you can ONLY make connections to it within the localhost or 127.0.0.1. If you want to change that you have to edit the bind_ip option:

bind_ip=127.0.0.1

To start the server run this command:

# service mongod start

To stop the server run this command:

# service mongod stop

If you want the server to start on boot:

# chkconfig mongod on

Once the service is running we can connect to it with the mongo command:

$ mongo
MongoDB shell version: 3.0.6
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	http://docs.mongodb.org/
Questions? Try the support group
	http://groups.google.com/group/mongodb-user
>

Install the PHP driver

Install the required dependencies and the mongo PHP driver itself:

# yum -y install gcc openssl-devel php-devel php-cli php-pear
# pecl install mongo

Note: the library will be installed in /usr/lib64/php/modules/mongo.so

Activate it in /etc/php.ini or in it’s own file in /etc/php.d/30-mongo.ini:

extension=mongo.so

And finally restart httpd:

# service httpd restart

mongodb-logo

Ref: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/
http://docs.mongodb.org/ecosystem/drivers/php/

Install Android SDK and Tools with Eclipse in Ubuntu, Mac OS X and Windows

Here I’ll explain the process to install Android SDK and Tools. There are 4 things you have to install in order to develop Android applications:

  • Android SDK
  • Eclipse
  • Android Development Tools plugins for Eclipse (ADT)
  • Android Virtual Device (ADV)

Android SDK

You can download the latest version of the Android SDK for your OS at the official Android SDK web. Latest versions at the time of this writing are those:

Ubuntu android-sdk_r24.4.1-linux.tgz
Mac OS X android-sdk_r24.4.1-macosx.zip
Windows android-sdk_r24.4.1-windows.zip

Once downloaded uncompress it anywhere you like in your hard drive. It can be for example in your users home folder (/home/username/android-sdk-linux for Ubuntu, /Users/username/Applications/android-sdk-macosx for Mac OS X, C:\Documents and Settings\username\android-sdk-windows for Windows XP, C:\Users\username\android-sdk-windows for Windows Vista/7/8/10) or beside other applications (/usr/lib/android-sdk-linux for Ubuntu, /Applications/android-sdk-macosx for Mac OS X, C:\Program Files\android-sdk-windows for Windows).

Be sure you have configured the JAVA_HOME, ANDROID_HOME and PATH environment variables:

In Linux edit the ~/.bashrc file:

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:/bin/javac::")
export ANDROID_HOME=~/android-sdk-linux
export PATH=$PATH:~/android-sdk-linux/tools

For Mac OS X you should edit the ~/.bash_profile file:

export JAVA_HOME=$(/usr/libexec/java_home)
export ANDROID_HOME=~/Applications/android-sdk-macosx
export PATH=$PATH:~/Applications/android-sdk-macosx/tools

Eclipse

For Eclipse installation just go to https://eclipse.org/downloads/, download it and install it.

Android Development Tools

Open Eclipse and go to “Help→Install New Software”, click “Add…” and enter “ADT Plugin” for “Name” and “https://dl-ssl.google.com/android/eclipse/” for “Location”.

eclipse-add-new-software

eclipse-add-new-software-adt-plugin

Select that repository in “Work with:”, choose all the packages and proceed the installation. Click OK if you see a message saying that unsigned content is being installed . Once installed you have to restart Eclipse.

After the restart, Eclipse will ask you to configure the Android SDK location. Click “Open Preferences”, select “Use existing SDKs” and fill “Existing Location” with the path you used to decompress Android SDK. If you don’t configure it now you can configure it anytime in the Eclipse preferences under the Android options.

eclipse-preferences-android

After configuring the Android SDK location path you will be asked to install SDK Platform Tools. Click “Open SDK Manager” (or select “Window->Android SDK Manager”), select all the packages inside “Tools” and the version of Android of your choice (I used 4.2) and click “Install X packages…”. Don’t worry if you see “Stopping ADB server failed (code -1).” in the log messages, it’s OK.

Android Virtual Device

Now that everything is installed you have to create an Android Virtual Device (AVD) so you can use the emulator. Open the Java perspective (Window->Open Perspective->Java or click the icon with the yellow plus sign at the top right of the IDE and select Java). You will see 2 new icons with the Android symbol in the tools bar. Click the one on the right that looks like a phone (the other one opens the Android SDK Manager), click “New…” and give your Android Virtual Device a name, a device type, a target, etc. If you can’t select a target just restart Eclipse so it can load the newly installed SDK Platform Tools.

In Ubuntu for 64 bit systems you can get this error when creating an AVD:

Error: Failed to create the SD card.
Error: Failed to create sdcard in the AVD folder.

To solve it install the ia32-libs libraries (http://stackoverflow.com/questions/3878445/ubuntu-error-failed-to-create-the-sd-card). Beware that they are about 260MB:

sudo apt-get install ia32-libs

Your first Android Application

Now you are ready to create your first Android application. Create a new “Android Application Project” with all the default options, just fill a “Application Name” like “Hello World”. The default option uses a “BlankActivity” with a template that needs the the Adroid Support library. It will ask you to install it and is as simple as clicking the “Install/Upgrade” button showed in that dialog window.

And there you have a fresh new “Hello Word” Android application. If you make the mistake of clicking the “Run” button you will get an error like this:

Error in an XML file: aborting build

That’s because by default the opened file after creating this “Hello World” project is “activity_main.xml”. You can also notice that a new file called “activity_main.out.xml” has been created, and it even is marked with errors. Delete that newly created file and open the “MainActivity.java” file under “src” folder. Now you can click the “Run” button. Select “Android Application” in the “Run As” dialog window.

I had a problem in Mac OS X Lion after running the emulator several times. When I tried to run the application the emulator crashed every time. Searching on the Internet I found this page where it explains that if you run the emulator in a secondary monitor and close it while in that monitor, a value of the X position of the window is stored and next time that value is bigger that the first monitors resolution and chashes. Deleting the emulator-user.ini file from the /Users/username/.android/avd/device_name folder (executing open /Users/username/.android/avd/device_name from a terminal window) and running the emulator again solved the problem.

As a hint I always deselect “Project->Build Automatically” option because I prefer to build the code manually pressing Control+B or Command+B.

Sources: http://developer.android.com/sdk/installing/installing-adt.html
http://developer.android.com/sdk/installing/adding-packages.html

Adding PHP 7.0 support in Plesk

First thing you need to do is update to Plesk 12.5 (currently 12.5.30). For that you have to go to Server options, “Plesk->Updates and Upgrades” and then go to “Install or Upgrade Product”. You may get some warnings in case you installed third party modules so you should better remove them (it happended to me with mod_security) before doing the upgrade. As you can see I’ve already updated to 12.5.30 so I can’t show you the proper image but the options are just the same.

upgrade_plesk_product

Once you have Plesk updated the actual magic, in Linux systems, is done with this command (runned as root):

# plesk sbin autoinstaller --select-product-id plesk --select-release-current --install-component php7.0

Full PHP 7.0 install process log: http://pastebin.com/UjH9g4Ak

The nice thing about it is that you can just change the PHP version number to install another one, for example if you have a domain with an app that needs to run in a legacy PHP 5.2 version:

# plesk sbin autoinstaller --select-product-id plesk --select-release-current --install-component php5.2

Now you can select an specific PHP version for different domains by just setting it in the “PHP Settings” option. Before:

php_before

Changing the PHP version to 7.0:

php_70_change

After:

php_after

Ref: https://kb.odin.com/en/127701
https://kb.odin.com/en/125146

Remove old Linux kernels in Ubuntu

As time goes new kernel versions are released. After a kernel update old installed versions are not removed automatically, they are keep in case something goes wrong so you can boot again to a previous version.

linux-penguin-logo

But you may end up having lots of old versions you’ll never use. To remove them first you need to find all the installed versions:

$ dpkg -l | grep linux-image | grep -v extra | awk '{print $2}'
linux-image-3.16.0-30-generic
linux-image-3.16.0-31-generic
linux-image-3.16.0-34-generic
linux-image-3.16.0-37-generic
linux-image-3.16.0-43-generic
linux-image-generic-lts-utopic

Then remove all the unwanted versions using apt-get autoremove:

$ sudo apt-get autoremove linux-image-3.16.0-30-generic linux-image-3.16.0-31-generic linux-image-3.16.0-34-generic

You should probably leave at least the latests 2 versions just in case.

Ref: https://help.ubuntu.com/community/Lubuntu/Documentation/RemoveOldKernels