Skip to content

# Assuming you have your linux CentOS 7-1804 environment correctly installed with networking enabled.

sudo yum update;sudo yum upgrade
sudo yum -y install
sudo yum update
sudo yum -y groupinstall "development tools"
sudo yum install vim
sudo yum -y install
sudo yum update
sudo yum -y install php72-php
sudo yum -y install php72 php-opcache
sudo yum -y install php72-php-mysqlnd
sudo yum -y install php72-php-mbstring
sudo yum -y install vim mlocate ntp ntpdate

# installing Apache Server 2.4.x, you can also try nginx if you like

sudo yum -y install httpd

# the below instructions are meant to install MariaDB

sudo touch /etc/yum.repos.d/mariadb.repo
--paste the next 7 lines of stuff into this repo files and save--

# MariaDB 10.2 CentOS repository list - created 2018-05-12 04:10 UTC
name = MariaDB
baseurl =

# We've chosen to install MariaDB instead of Mysql from Mysql Repo
# you can Choose to install Mysql-server, which is also easy to install
# grab that mysql-server repo and follow some simple instructions online then you
# are Golden.
# for MariaDB-server 10.2

sudo yum update
sudo yum install mariadb-server mariadb-client
sudo mysql_secure_installation


# there might need to be two additional items inorder to get php72 to function in your centOS server.

  1. Disable SElinux: vim /etc/sysconfig/selinux
  2. turn off firewalld: sudo service firewalld stop

# To Build:
# Ref:

# sudo yum -y install rpmdevtools && rpmdev-setuptree
# wget -O ~/rpmbuild/SOURCES/apache-tomcat-8.5.27-fulldocs.tar.gz
# cd ~/rpmbuild/SOURCES
# mkdir apache-tomcat-8.5.27-doc
# mkdir ./apache-tomcat-8.5.27-doc/docs
# tar xzvf apache-tomcat-8.5.27-fulldocs.tar.gz
# cp -pr ./tomcat-8.5-doc/ ./apache-tomcat-8.5.27-doc/docs
# tar czvf apache-tomcat-8.5.27-doc.tar.gz apache-tomcat-8.5.27-doc/
# rpmbuild -bb ~/rpmbuild/SPECS/tomcat8doc.spec
# this is kind of complicated, but i think more or less will work.

%define tomcat_home /usr/share/tomcat8
#%define _unpackaged_files_terminate_build 0

Summary: Apache Servlet/JSP Engine, RI for Servlet 2.4/JSP 2.0 API
Name: tomcat8
Version: 8.5.27
BuildArch: noarch
Release: 1
License: Apache Software License
Group: Networking/Daemons
Source0: apache-tomcat-%{version}-doc.tar.gz
Requires: java
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-docroot-%(%{__id_u} -n)

Tomcat is the servlet container that is used in the official Reference
Implementation for the Java Servlet and JavaServer Pages technologies.
The Java Servlet and JavaServer Pages specifications are developed by
Sun under the Java Community Process.

Tomcat is developed in an open and participatory environment and
released under the Apache Software License. Tomcat is intended to be
a collaboration of the best-of-breed developers from around the world.
We invite you to participate in this open development project. To
learn more about getting involved, click here.

This package contains the base tomcat installation that depends on Sun's JDK and not
on JPP packages.

%package fulldoc-webapp
Group: System Environment/Applications
Summary: The docs web application for Apache Tomcat
Requires: %{name} = %{version}-%{release}-doc

%description fulldoc-webapp
The docs web application for Apache Tomcat.

%setup -q -n apache-tomcat-%{version}-doc


install -d -m 755 %{buildroot}/%{tomcat_home}
cp -R * %{buildroot}/%{tomcat_home}

# Put docs in /var/lib and link back.
install -d -m 755 %{buildroot}/usr/share/doc/%{name}-%{version}
mv %{buildroot}/%{tomcat_home}/docs %{buildroot}/usr/share/doc/%{name}-%{version}
cd %{buildroot}/%{tomcat_home}/
ln -s /usr/share/doc/%{name}-%{version}/docs docs
cd -

rm -rf %{buildroot}

%files fulldoc-webapp




* Tue Feb 27 2018 Freeman Lo <>
- updated to 0.0.1

Solaris system disk nomenclature:

healthy disk indicated by ^++

There are two additional commands to discover if SAN, NAS disks are bad on your Storage system. "iostat -En" , "zpool status", "dmesg | grep -i error"

root@frodo:~$ hd -c -d -s


-----------------------------SunFire -------Rear-----------------
 3:    7:   11:   15:   19:   23:   27:   31:   35:   39:   43:   47:
c1t3  c1t7  c2t3  c2t7  c3t3  c3t7  c4t3  c4t7  c5t3  c5t7  c6t3  c6t7
^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++
 2:    6:   10:   14:   18:   22:   26:   30:   34:   38:   42:   46:
c1t2  c1t6  c2t2  c2t6  c3t2  c3t6  c4t2  c4t6  c5t2  c5t6  c6t2  c6t6
^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++
 1:    5:    9:   13:   17:   21:   25:   29:   33:   37:   41:   45:
c1t1  c1t5  c2t1  c2t5  c3t1  c3t5  c4t1  c4t5  c5t1  c5t5  c6t1  c6t5
^b+   ^++   ^b+   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++
 0:    4:    8:   12:   16:   20:   24:   28:   32:   36:   40:   44:
c1t0  c1t4  c2t0  c2t4  c3t0  c3t4  c4t0  c4t4  c5t0  c5t4  c6t0  c6t4
^b+   ^++   ^b+   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++
-------*---------*-----------SunFire ---*---Front-----*-------*---
Broken Disk indicated by: ^--
-----------------------------SunFire -------Rear-----------------
 3:    7:   11:   15:   19:   23:   27:   31:   35:   39:   43:   47:
c1t3  c1t7  c2t3  c2t7  c3t3  c3t7  c4t3  c4t7  c5t3  c5t7  c6t3  c6t7
^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++
 2:    6:   10:   14:   18:   22:   26:   30:   34:   38:   42:   46:
c1t2  c1t6  c2t2  c2t6  c3t2  c3t6  c4t2  c4t6  c5t2  c5t6  c6t2  c6t6
^++   ^++   ^++   ^++   ^--   ^++   ^++   ^++   ^++   ^++   ^++   ^--
 1:    5:    9:   13:   17:   21:   25:   29:   33:   37:   41:   45:
c1t1  c1t5  c2t1  c2t5  c3t1  c3t5  c4t1  c4t5  c5t1  c5t5  c6t1  c6t5
^b+   ^++   ^b+   ^++   ^--   ^++   ^--   ^++   ^++   ^--   ^++   ^++
 0:    4:    8:   12:   16:   20:   24:   28:   32:   36:   40:   44:
c1t0  c1t4  c2t0  c2t4  c3t0  c3t4  c4t0  c4t4  c5t0  c5t4  c6t0  c6t4
^b+   ^++   ^b+   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++   ^++
-------*---------*-----------SunFire ---*---Front-----*-------*---

Solaris disk naming scheme is somewhat confusing until when one has cracked open a SUN SunFire server and seeing so many disks,  one shall at that very instance realize the reason  of solaris's madness with its logical disk nomenclature.

First of all, a DVD/CD disk loaded on the solaris system is identified as /dev/dsk/c0t0d0s0 aka cotodoso.

The reason why this was a logical method was that, on these large scale SUN systems, there were actually disk controllers available to control hard disks. In the above example, we could see that there were controllers.  one controller controlling each  two columns of drives.    'c' is translate into controller, so if there were a drive failed in either of the first two column. It would be located in the first controller. The next character is 't'. no clue what it means but in my own term, it is the value for type of disk or the range of disks in a given controller. sadly, 't' could not be translate into the row value as we can see it is listed as the number of disks in a controller.  Starting with 0 on the front panel and count up towards the rear. Kind of like the first slot in an array in terms of CS, all things in CS starts with 0.  next, we have 'd', it is the disk number. 't' and 'd' may have similar meaning.

Finally, 's' is the slice or the partition. So... if we had something categorized as such c6t3d3s5. This would be partition 5 disk 3 row 3 in controller 6.  Solaris does care for the exact location of disk in any multi-disk system. This was an straight forward approach in location disk for all large scale systems.  if we were to translate *c6t3d3s5 into linux jargon, we believed that it might be *sdd5, this means that your third {ssd||spinningDisk} connected to your mobo via sata cable partition 5 might be having an issue.  Overall, linux does provide an abstracted layer approach in disk orientation unlike Solaris, where it provided more of a logical approach in identifying each individual disk based on controller location.

* Correction, we had it sdc5, but disk in solaris starts with 0 so its actually the fourth disk in linux jargon. Linux's disk is based on solely with SATA cable orientations and depending on the number of SATA ports available on the MOBO. Starting with sda, which is the first SATA cable connected to SATA0 on MOBO unless this is a DVD/CD rom drive otherwise, we are claiming it to be HD. sda = firstHD, sdb = secondHD, sdc=thirdHD, sdd = fourthHD. A normal Desktop MOBOs might be able to insert 4 HDs. A super charge MOBO might be able to insert 8 HDs or more. the number after the sda is the partition value. For example sda3. This means the first HD or first SATA cable connected to the MOBO where partition 3 on this disk call sda. This is one perspective we have based on each individual controller controlling the 8 HDs. If you were to look at it from a large picture, then this drive is a part of the entire set of disks. In a second linux jargon, it might actually be sdar5 if you were to count from bottom left hand corner to this particular drive location. surely, its one confusing mess. Depending on how you look at it, one controller (tree) or the entire shebang (forest), its either drive 'sdd' or drive 'sdar'. we kind of enjoy looking at it at a tree perspective, so sdd will be.

Often times, it is challenging to install OS such as any distributions of Linux, but installing Linux has come a long way when compared to RedHat versions 7.x in the olden days. We've experience installing various OSes in the past. The most difficult OSes to install would be the {net||open||free} BSDs from scratch. Bare in mind, Linux distributions had come a long way.  With its archaic menu driven installation process with complicated disk partitioning schemes, which perhaps drove some users away from using and learning Linux OS. It was actually worth using a disk utility to partition the disk first before popping in your favorite distro into the DVD drive.  Kudos to all Linux OS Communities, who came together and made the installation process simpler with prettified GUI installation steps for all non-hardware experts like myself.

Many of these installation processes for many *nis distros had all been simplified with a click of a button to choose packages, automatic partition your {SSD||spinningDisk}.  Many popular Linux distributions can be found here: Distrowatch *nix OSes

One interesting thing about one particular OS, where it has not changed much with its installation system. With its archaic menu installation driven steps and disk naming nomenclature, installing this particular OS is more or less climbing mount Everest.

Success in installing this the first try came in far and wide; second try, a long shot; third, so close......; fourth SUCCESS ! With all its ugliness,  we believed this OS is truly designed and made for certain types of hardware in mind.

By default, Solaris 10 is built with low maintenance, stability, long uptime in mind. Installation Solaris 10 or Solaris 11.3 on a typical desktop machine defeat its designed purpose. This OS should really be installed on one of the Sun SunFire server 4U servers.  If you are lucky enough to overcome all of the installation steps with the OS up and running. Congrats !

One issue could arise if networking is not chosen properly. There was one incident where DNS was not selected during an installation process and we found ourselves scratching our head as to the reason why 'ping' doesn't work. We then cooked coffee and decided to check a few files, if they existed after this installation process. Luckily, /etc/resolv.conf was missing.  We then added the following:



nameserver DNSSERVER1

nameserver DNSSERVER2

we then tried one last time to 'ping', still no luck. Make sure that /etc/defaultrouter has your gateway IP address. With more head scratching, we then poked at nsswitch.conf, looked correct at first glance, yet feeling something which was missing there. With some quick browsing, we came across one line where it needed help.  Also, there was this one other nsswitch file called, nsswitch.dns in solaris 10, which we would need it to overwrite nsswitch.conf.

The line was missing the word 'dns' at the end of this line.


hosts files


should be


hosts files dns


svcadm restart svc:/system/name-service-cache:default

ping is alive.

Success !

If you wish to try to install this OS on your desktop, the ISO can be obtained from the following link along with some documentations on how to install Solaris.

download: Solaris 10 Solaris Installation Guide


On linux there are a few different favors of Java. there are atleast two that we are aware of. One from Oracle and a second from opensource community which is called OpenJDK. For some reason, we like to do this old fashion way. Therefore, we will install JDK from oracle.

As of this writing, there is this release of JDK 1.8.91 and 1.8.92.

  1. download the latest JDk from oracle:
    1. JDK 1.8.92/91
    2. download either the *.*.91 or *.*.92 edition
    3. save it somewhere on your machine
    4. its weird how we do this but other software are doing this as well so we are following them.
    5. sudo cp jdk-8u92-linux-x64.tar.gz /opt
    6. cd /opt
    7. sudo tar xzvf jdk-8u92-linux-x64.tar.gz
    8. sudo chown -R root:root jdk1.8.0_92/
      1. you can make it own by your username which is fine too, root should be ok, otherwise,
      2. sudo chown -R yourusername:yourusername jdk1.8.0_92/
    9. cd /usr/bin
    10. sudo ln -s /opt/jdk1.8.0_92/bin/java java
    11. sudo ln -s /opt/jdk1.8.0_92/bin/javac javac
    12. DONE !

This one is pretty tricky due to the natur and difficulty in installing various components for the linux OS and Java. We assumed that you have installed *buntu 64 bit OS, it doesnt matter which favor you have installed as long as its 64 bit. If you have installed JDK and Android Studio but couldnt get it to work. This may or may not assist you in getting android studio onto your linux machine but may provide some incite to your issues. We believed this will work for users who have NOT initially installed Android Studio onto their system. Not 100% guaranteed that this will install properly the first time. If you are fed up with this, we recommend using windows instead. Point and click, the installation package will be much simpler.

Disclaimer: **Experience and knowledge in linux admin/engineering and java installation subject matter came at a tremendous expense. Also, bare in mind that someone who has installed JDK/Android-Studio on this linux distro, which was just recently released is pretty dam good at what they do and skillful in understanding how to troubleshoot issues.**  Sadly, trial and error may not work in this case.

The interesting thing was that there were so many methods in installing this application onto a linux machine but some of the methods did not worked for us yet simple too. Our first method was simply to include a third party repo from here Android Repo but we found that openJDK not allow to write over itself for some reason. We then scrap this approach and use our judgement and to simply manually install Android Studio using a second method.

The installation from Android Website is slightly different than what we came up with.

First check to see if you have installed jre and jdk by doing the following:

flo@hashirama:~$ sudo dpkg -l | grep -i jdk
ii openjdk-9-jdk:amd64 9~b114-0ubuntu1 amd64 OpenJDK Development Kit (JDK)
ii openjdk-9-jdk-headless:amd64 9~b114-0ubuntu1 amd64 OpenJDK Development Kit (JDK) (headless)
ii openjdk-9-jre:amd64 9~b114-0ubuntu1 amd64 OpenJDK Java runtime, using Hotspot JIT
ii openjdk-9-jre-headless:amd64 9~b114-0ubuntu1 amd64 OpenJDK Java runtime, using Hotspot JIT (headless)

if you do have something like those already preinstalled, removing it will help but we are not 100% certain since all android-studio really is seeking was JDK. The problem for us was that the installation would not function without removing all of the preinstalled jre and jdk stuff. If you have a software dependency where some existing software required openJDK, perhaps you should consider stopping here and use window instead or you can try to continue and see, since we believed that the installation of openJDK may not seem to matter afterall. The first approach was highly complicated. The second approach may just be three commands then execute

so.. let us remove JRE and jdk
flo@hashirama:~$ sudo apt-get autoremove openjdk-9-jdk
flo@hashirama:~$ sudo apt-get purge openjdk-9-jdk
flo@hashirama:~$ sudo apt-get autoremove openjdk-9-jdk-headless
flo@hashirama:~$ sudo apt-get purge openjdk-9-jdk-headless
flo@hashirama:~$ sudo apt-get autoremove openjdk-9-jre
flo@hashirama:~$ sudo apt-get purge openjdk-9-jre
flo@hashirama:~$ sudo apt-get autoremove openjdk-9-jre-headless
flo@hashirama:~$ sudo apt-get purge openjdk-9-jre-headless
flo@hashirama:~$ cd /var/cache/apt/archives/
flo@hashirama:~$ sudo rm -f openjdk-9-*.deb

so.. updating and installing the required packages
flo@hashirama:~$ sudo apt-get update
flo@hashirama:~$ sudo apt-get install lib32z1 lib32ncurses5 libbz2-1.0:i386 lib32stdc++6 build-essential

Installation Process

flo@hashirama:~$ sudo apt-get install openjdk-9-jdk
flo@hashirama:~$ sudo dpkg --configure -a
flo@hashirama:~$ sudo dpkg -i --force-overwrite '/var/cache/apt/archives/openjdk-9-jdk_9~b114-0ubuntu1_amd64.deb'

so.. linking java and javac, this is the part where we believed makes all that stuff from above meaningless as long as you have
installed oracle JDk in /opt and the C libraries in that one line to install packages, Andorid-studio seem to be looking for the Clibs and Java mainly.

flo@hashirama:~$ cd /usr/bin
flo@hashirama:~$ sudo ln -s /opt/jdk1.8.0_92/bin/java java
flo@hashirama:~$ sudo ln -s /opt/jdk1.8.0_92/bin/javac javac

now download Android-Studio

so.. putting this application in /opt since it is a third party software
flo@hashirama:~/Downloads $ sudo cp /opt
flo@hashirama:~/Downloads $ cd /opt
flo@hashirama:/opt $ sudo unzip
flo@hashirama:/opt $ cd ./android-studio/bin
flo@hashirama:/opt/android-studio/bin $ ./studio &

Holy Cow ! If you see a screen popped up and its not your imagination, pat yourself on the back and go grab yourself a cheesecake.
we are Done !

It should be functional by now, just follow the screen instructions to continue with the rest of the Android internal packages.

# special section where it may just simply work, yet we dont know.
It might possibily be as easy as the following steps:
flo@hashirama:~$ sudo apt-get install lib32z1 lib32ncurses5 libbz2-1.0:i386 lib32stdc++6 build-essential
Read my other post in downloading and installing JDK from oracle
now download Android-Studio
Install this studio using the instructions from above.

--Happy Coding--