Chrome in Ubuntu

September 16, 2017 in software

Install Google Chrome in Ubuntu 17.04

chromeGo to official website of Google Chrome and click on the “Download now” button.
Select the “64 bit .deb (For Debian/Ubuntu)”, read the agreement and if you agree click on “Accept and Install” to download the installation package. Save the file to the default location ~/Downloads/.
the filename should look like that: “google-chrome-stable_current_amd64.deb”
after that open a terminal go to Downloads directory and try to install the package.

cd ~/Downloads/

sudo dpkg -i google-chrome-stable_current_amd64.deb

if you get an error like: “dpkg: dependency problems prevent configuration of google-chrome-stable:” it is because some dependancies are missing. To fix that enter the following command:

sudo apt-get -f install

Then you should be able to run Chrome. To run Google Chrome type in terminal “google-chrome” or click the icon in the menu.


The Linux Terminal

September 14, 2017 in shell (Command line)

Introduction To Linux Terminal


1.1.The magic of Linux Terminal.


The Linux shell exists since Linux invented and it is still one of the most powerful ways for a user to interact with a system. There are thousands of different Linux distributions out there but if you look all of them from the command line perspective you will find out that all of them are almost the same. The Linux Terminal is fast, light, fully customizable, can be accessed remotely and so much more.

For most of the user at the beginning Linux terminal is just a black window that seems a bit unfriendly but after you get used to it you will love it.


I use Ubuntu on all my examples presented here but the magic of Linux Terminal is that you can use your favorite Linux distribution and still be able to follow.

There are several terminal instances running at the same time in Linux O.S. and most of the times you can access them by using key combinations. In Ubuntu you can use ctrl+alt+F1 to access the first command line instance ctrl+alt+F2 for the second and so on until the 6th. with ctrl+alt+F7 you can access the Graphic User Interface. From there you can open as many terminal emulators as you wish. those terminals can be started from the menu of the O.S. or in Ubuntu you can use ctrl+alt+t.


At that point i assume that you already have a running system and that you are able to open a terminal. If not then now it’s a good time to install a Linux system. You can either use a physical machine or a virtual.


But let’s get started!

1.2.Who am I? Where am I? what time is it???


A Linux terminal emulator in Ubuntu is look like the image 1.1. Even without giving any commands you are still able to get some information out of this.

Image 1.1

This is what you get




user1: is the user-name of the current user

@: the at sign between user-name and computer-name

allaboutlinuxeu: is the computer-name or host-name

So altogether it says that user1 is connected to allaboutlinuxeu

the “:” indicates that the disk path is starting here.

the “~” indicates that I am currently in my home directory

the “$” indicates that I am logged in as normal user (if i logged in as root this symbol will change to “#”)

Note! This string user1@allaboutlinuxeu:~$ is not standard. Other Linux distribution might give less or more info. You can also customize that to fit your need but we will check that on a next chapter.

Let’s start with first question: Who am I?

At that point i want to mention that all text with gray background are commands or outputs from a terminal.

So now just type “whoami”


user1@allaboutlinuxeu:~$ whoami


After “$” you can type the command “whoami” and in the next line is coming the output of that command and then the Shell is going back to idle and it is just waiting for the next command. So I have successfully verify that I am “user1”.


But where am I? go ahead and type “pwd”


user1@allaboutlinuxeu:~$ pwd


pwd stands for: Print current/Working Directory. I will not go deep into the file structure on a Linux machine right now but I will explain that later. for now, I know that “I am at /home/user1”.


And what about time, date, year? for that just type “date”


user1@allaboutlinuxeu:~$ date
Tue Jul 11 23:18:09 UTC 2017


This output is pretty much self explained so i will not go any farther with that.


At any point you want to quit a terminal then you just need to type “exit”.

1.2.What is a Linux command?

A Linux command can be a single word following by some parameters some files or Directories or even some variable and inputs from user. We already went through some basic single word commands like whoami, pwd and date. But how can the O.S. understands what to do?

Most of the commands are actually small binaries (small programs) that was installed in your computer during the O.S. installation process. The binary whoami for example is in the directory /usr/bin . Normally in order to execute that binary you need to provide the full path. In that case /usr/bin/whoami . Try that:


user1@allaboutlinuxeu:~$ /usr/bin/whoami


As you can see the output is exactly the same since in both cases the same binary executed.

But how the system knows where to look for those binaries?


There are a few directories that contain binaries and and the O.S. is searching in those to check if a command provided in the terminal has a binary in those directories. If you want to see the list of those directories type the following command:


user1@allaboutlinuxeu:~$ echo $PATH


This is the full list of directories that the O.S. is looking for binaries for the current user.

Tip: The $PATH can also be modified to include or exclude some paths.

Since the /usr/bin is in that list the O.S. is executing binaries within that directory even without the /usr/bin so in that case only the command whoami is enough. This might be a bit confusing right now but it will be more clear later on.

1.3 The Main Linux Directories.


Linux have a hierarchical directory structure like the most Operating Systems. This system is a like a tree and it has a root directory that includes everything then there are some directories and files under that:

├── bin
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib
├── lib64
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var
   ├── backups
   ├── cache
   ├── crash
   ├── lib
   ├── local
   ├── lock -> /run/lock
   ├── log
   ├── mail
   ├── metrics
   ├── opt
   ├── run -> /run
   ├── spool
   └── tmp


In that example i have only expanded the subdirectories in /var and only in 1 level. There are  many more subdirectories but the list wouldn’t easily fit here.


Let’s take a brief look on the main directories in Ubuntu.

/bin this is the first in the list and contains binaries that system needs to boot but many of those are also usable by users like the date command we used before.

/boot that is maybe the most important directory in a linux system. it contains the kernel (this is the heart of a linux O.S.) and important information for booting the system.

/dev here is a list of devices that the O.S. can access like hard drives partitions cd roms serial ports etc.

/etc one of the core directories of the system since it contains all the configurations of the system, scripts that are running during the boot usernames groups almost everything you can imagine that can be configured in a system.

/home this contains the home directories for each user and users can store their files and directories here.

/lib this is the library directory that is used by programs

/lost+found In case of an abnormal shutdown or if something is going wrong into your file system the O.S. will try to recover files  and place them into that directory. Generally if this directory is empty is a good sign!

/media USB disks, USB sticks, CD-ROMS and other removable devices are mounted inside that directory. (that is not true for all Linux O.S.)

/mnt Generally that directory is empty but this is good place if you want to manually add shared/network directory or manually mount a device

/opt that is also kinda new in Linux and it is used to hold “optional Software” software that users install or anything that is not part of the main O.S. in the past that directory was under /usr/local and some programs are still prefer that directory.

/proc that is an interesting Directory since it hold files that used mainly by the system to identify hardware parts but in most cases those files are human readable and you can get some interesting information out of that.

/root that is the home directory for user root. This is a special user that have permissions to do anything in a Linux machine

/sbin this one is like /bin and hold some binaries that can be executed by root or any super user.

/tmp A temporary directory that programs are storing temporary info while programs executed in your system.

/usr This folder contains most of the binaries used by users and sometimes by system. There are many interesting subdirectories in this one.

/var That directory holds dynamically changed files like log files, databases and generally is the most active directory in the system.

1.4 Navigate into Linux File system.


the main command to jump from one directory to another is the “cd” and this one stands for “Change Directory”.  Let’s navigate to the root. This is the main directory that holds all others and it is represented by the “/” slash symbol.


user1@allaboutlinuxeu:~$ cd /


As you can see the “~” tilde symbol that represents the home directory of the user changed to “/”

Tip: at anytime if you want to check the path to the current working directory you can issue the “pwd” command.


Now that we are at the root of our file system we can navigate to any directory that we have permissions to read. We will talk about permissions in a later chapter. let’s go to “usr” directory and from there inside the “games” directory. This can be done step by step like:


user1@allaboutlinux:/$ cd usr
user1@allaboutlinux:/usr$ cd games

or with one command like:


user1@allaboutlinux:/$ cd usr/games


You may have already noticed that the directories are separated by “/” and also the command prompt string changed from “user1@allaboutlinux:/$” to “user1@allaboutlinux:/usr/games$” in that way you can always check the current working directory that starts after the “:”

In order to move back one directory then we can use the command “cd ..”:


user1@allaboutlinux:/usr/games$ cd ..


The “..” two dots are standing for the parent directory while the “.” one dot stands for the current directory there is no point to change to current directory but that is important on some other occasions.


1.4.1 Absolute path vs Relative path.


The absolute path.

Every directory or file in our file system have its own unique path. This address starts from “/” and ends at the directory or the file that we want to reach. For example if we want to play gnome-sudoku we need to know the path to that game.

Note! Ubuntu and some other debian based Linux are coming with that game. This may not be available in other Linux distributions.

The absolute path for that game is /usr/games/gnome-sudoku

As you can see that path starts with “/” following by some subdirectories and ends at the filename. Some other O.S. used to have an extension to every file and with that the file is identified. In Linux, extensions are not mandatory. So now if i want to play that game all i have to do is to provide the absolute path to that game and i can do that from any location. It doesn’t matter if i am in /var or in /home/user1. Since i am providing the absolute path the system will just go there and execute the file. that is the meaning of the absolute path.

let’s have some fun:

user1@allaboutlinux:/usr$ /usr/games/gnome-sudoku


At that point a new window will open and sudoku will run. Once you close the window the command line will become again available.


Relative path.

There is also another way to navigate through file system by providing the relative path. instead of starting from “/” you can start from any other location and that path will be relative to your current working directory. Right now you are at “/usr” and if you want to start again the same game that is in a subdirectory of usr then you need to provide the relative path from “/usr” to the executable. as we said before the “.” one dot stands for the current directory. So if i am in “/usr” and type “.” then in essence I am saying /usr/ and from there i can continue like “./games/gnome-sudoku” or if i was already inside the games directory (so my current working directory was /usr/games/) then i would be able to execute the same game by typing ./gnome-sudoku


It might sound a bit complicated at that point but we will see many examples of that later on and it will become much more clear. But for now just remember that when i’m providing the full path starting from root “/” to the file or directory i’m using the absolute path and when I am providing a path related to my current working directory I am using a Relative path. There is no right and wrong way to do something we just use whatever is more convenient.


1.5 List the contents of a directory “ls”


Let’s list the contents in the root directory. For that you will need the ls command.

ls stands for “list”


user1@allaboutlinuxeu:/$ ls
bin    dev   initrd.img      lib64       mnt   root  srv  usr      vmlinuz.old
boot   etc   initrd.img.old  lost+found  opt   run   sys  var
cdrom  home  lib             media       proc  sbin  tmp


Those 2 commands are the most basic in order to navigate to a directory  and list all the files in that directory. if we want for example to check the contents of /usr then we can first go inside /usr and then list the contents.


user1@allaboutlinux:/$ cd usr
user1@allaboutlinux:/usr$ ls
bin  games  include  lib  local  locale  sbin  share  src


“ls” by default is listing the contents of the current working directory but you can also provide the path of the directory that you want to list the contents and run the command from everywhere without going directly into the specific directory. In the same scenario where I am in root directory “/” and i was to check the contents of /usr instead of moving in i run directly the “ls” command and providing the absolute path of the directory.


user1@allaboutlinux:/$ ls /usr/
bin  games  include  lib  local  locale  sbin  share  src

In this directory you can see the full list of files and directories that you have in your Linux but as a normal user you do not have access to all of them. Every user have his own directory where he/she have full control to read write and execute. Now its time to go back to owr home directory and create a subdirectory and a file inside that directory. there are many ways to do that but the easiest is by typing “cd ~/” that is equal to “cd /home/user1” where user1 is the name of current user.


method 1:

user1@allaboutlinux:/$ cd ~/


method 2:

user1@allaboutlinux:/$ cd /home/user1/


1.6 Creating and deleting files and directories

Now we are in our Home directory. With the following command we can create a directory named “working_directory”


user1@allaboutlinux:~$ mkdir working_directory

Tip: By default this command will not return any output. in case that there is a problem during creating the directory an output will be generated and you will be able to check what went wrong. A common issue is when you are trying to create a sub-directory inside a directory that you don’t have write permission. We will talk about permissions in a next chapter.


Note you should not use “space” in files or directories names. the command “mkdir working directory” will actually create 2 directories one named “working” and one named “directory”


ok now that we have a test directory we can go in and create a file with name test_file. again here I am using an underscore otherwise the system will generate 2 file one named test and one named file. the command to create an empty file is the “touch”. so lets do that.


user1@allaboutlinuxeu:~$ cd working_directory/
user1@allaboutlinuxeu:~/working_directory$ touch test_file


now lets list the contents of this directory


user1@allaboutlinuxeu:~/working_directory$ ls

Great so we have our first file inside our first directory. Now lets move on and delete this file. The command that we need to use is the “rm” which stands for remove and it can be used for both files and directories. lets delete the file by issuing the “rm” followed by the file name and list the contents of directory to make sure that the file is deleted.


user1@allaboutlinuxeu:~/working_directory$ rm test_file 
user1@allaboutlinuxeu:~/working_directory$ ls


Note Linux will never ask by default for a confirmation when you are deleting a file and will not produce any output if the operation was successful. It will always assume that you know what are you doing. You also need to have in mind that the file is not going into a trash can or anything similar. So you should say good-bye to your file for good.


Now lets try to remove the directory that we created before. We will need to navigate to the parent directory and then issue the rm command again followed by the directory name. But since this is a directory we need to use the option “-d”. The -d is saying to rm to remove an empty directory. so lets do that.

user1@allaboutlinuxeu:~/working_directory$ cd ..
user1@allaboutlinuxeu:~$ rm -d working_directory/


now we need to mention 2 more parameters for the rm command is the -r that stands for Recursive and the -f that stands for Force.

if you combine those 2 together then you can remove a directory and its contents no matter how many sub directories and files are listed inside.

So the command will look like the following.

user1@allaboutlinuxeu:~$ rm -rf working_directory/


1.7. Users and Groups

In a Linux system you can create as many users as you need. Those users can be local or network users if you are running a NIS authentication. For now we will talk about local users.

Each user in  a Linux system has its own Directory where he/she has full permissions and as we already said the short path symbol for that is the “~”

so in order to navigate into this directory all you have to do is to issue the following command:

user1@allaboutlinuxeu:/$ cd ~

In there users can store their personal files and also change the configuration files so they can customize their terminals. those files are not visible by default since they are hidden. but you can see them if you type the “ls” command following by the -a parameter.

user1@allaboutlinuxeu:~$ ls -a
. .cache Downloads Music Videos
.. .config examples.desktop Pictures .Xauthority
.bash_history Desktop .gconf .profile .xsession-errors
.bash_logout .dmrc .ICEauthority Public
.bashrc Documents .local Templates

The names of all hidden files and directories starts with a “.”. lets check a few of the most interesting files.


in this file the system stores all the commands that you are typing in a terminal and this is a great source to check what you have done so far. this is a plain text file and you can check the contents of it by using the “cat” command.

user1@allaboutlinuxeu:~$ cat .bash_history 
ls ~
cd ~
ls ~
ls -a ~
ls -a

Another way to check your history is by simply issuing the “history” command that will give the same results.


This is a script that is running when a user is logging off from his/her account and by default it is clearing the screen to increase privacy. This files can be adjusted so you can perform some extra actions upon log off. One of my favorites is to back up some important directories to a share drive. We will talk about modifing those files in another chapter.


This is one is executed once the user is logging in and its a great place to define config files for your account. In Ubuntu for example it defines the basic account config file and the $PATH that we talked already in a previous Chapter.

And last but not least is the .bashrc file. This is maybe the most important config file for your account and we will spend a lot of time on that later on.


The usergroups in a Linux system are logical combinations of users. Users can be part of many groups. Basically this is a great way to categorize users and provide them permissions on specific directories or files. 


At the end we need to say a few words about “root” user. This user exists on all Linux machines and it is a special user that have permissions to access and modify everything in the system. You should avoid using this user for everyday work but when everything collapse then you know that you can count on this user. Normally in a production environment only the Linux administrators have access to this account. 


1.8 Permissions on Files and Directories 




To be continue…

Stay tuned 😉






Install Google Chrome in Debian 8

October 10, 2015 in software

Install Google Chrome in Linux Debian

chromeGo to official website of Google Chrome and click on the “Download now” button.
Select the “64 bit .deb (For Debian/Ubuntu)”, read the agreement and if you agree click on “Accept and Install” to download the installation package. Save the file to the default location ~/Downloads/.
the filename should look like that: “google-chrome-stable_current_amd64.deb”
after that open a terminal go to Downloads directory and try to install the package.

cd ~/Downloads/

sudo dpkg -i google-chrome-stable_current_amd64.deb

if you get an error like: “Errors were encountered while processing: google-chrome-stable” it is because some dependencies are missing. To fix that enter the following command:

sudo apt-get -f install

Then you should be able to run the installation without problems:

sudo dpkg -i google-chrome-stable_current_amd64.deb

To run Google Chrome type in terminal “google-chrome” or click the icon in the menu.

Install Skype in Debian

October 10, 2015 in software

Install Skype in Linux Debian

Skype is a simply way to make voice or video calls or chat with your friends with IM (instant messages). Go to official site of skype ( and click on “Download skype”. Select Debian from the dropdown menu of distribution selection. Save the file in your Downloads directory. the file should be something like skype-debian_4.3.0.37-1_i386.deb where the “” is the version of skype.

before we proceed with the installation if you are running a 64bit Debian we need to add 32bit compatibility in case that you dont have already.
open a terminal and type:

sudo dpkg –add-architecture i386

sudo apt-get update

sudo apt-get install lib32z1 lib32ncurses5

sudo apt-get update

Now move to Downloads and try to install the downloaded skype package:

cd ~/Downloads/

sudo dpkg -i skype-debian_4.3.0.37-1_i386.deb

At that point most likely the installation will fail due to some missing dependancies. to fix that issue the following command:

sudo apt-get -f install

Once that is finished then type again

sudo dpkg -i skype-debian_4.3.0.37-1_i386.deb

Now that all dependancies are there the installation will be able to finish normally.
In order to start skype either type in terminal “skype” or by clicking the skype icon in menu.

install latest Darktable in Debian 8

September 17, 2015 in software, Web Server

install Darktable in Debian 8

There is an easy way to install darktable in Debian by issuing the command “sudo apt-get install Darktable” but this one will install an old version of Darktable.
If you need the latest stable one then you need to follow those steps:
open a terminal and type:

sudo apt-get update

sudo apt-get build-dep darktable

sudo apt-get install libglew-dev libcanberra-gtk-module mesa-opencl-icd mesa-utils-extra

Now go to the official website and download Darktable. you should get a file with a name like darktable-x.x.x.tar.xz where x is the version of Darktable.

go to Downloads directory and extract that file.

cd ~/Downloads/

tar xvf darktable-1.6.8.tar.xz

now go into darktable directory and start the build process by typing:

cd darktable


Then issue the following command to install it.

Install vmware player in Debian 8

September 17, 2015 in Web Server

Install vmware player in Debian 8


Download the installation files from vmware official site .

Now you should have a file like VMware-Player-12.0.0-2985596.x86_64.bundle.

open a terminal and execute it:

cd ~/Downloads/

chmod +x VMware-Player-12.0.0-2985596.x86_64.bundle

sudo ./VMware-Player-12.0.0-2985596.x86_64.bundle

This will bring up the installation dialog

You need to accept the agreement in order to continue. Take a look before you accept it.

Install Filezilla in Debian 8

September 16, 2015 in Web Server

Install Filezilla in Debian 8

Lets begin by downloading Filezilla.

Visit the official Filezilla site and click on Download button.

This will download a file like FileZilla_x.xx.x_x86_64-linux-gnu.tar.bz2 where “x” is the current version of Filezilla.

Lets move that file in /usr directory.

sudo mv ~/Downloads/FileZilla_x.xx.x_x86_64-linux-gnu.tar.bz2 /usr

Go to /usr and decompress filezilla:

cd /usr

sudo tar xvf FileZilla_x.xx.x_x86_64-linux-gnu.tar.bz2

Remove the compressed file:

sudo rm FileZilla_x.xx.x_x86_64-linux-gnu.tar.bz2

lets create the launcher. Press the “Super Key” (this one is located on your keyboard between “ctrl” and “alt”. In windows world is also called “Windows Key”)

then type “main menu”


install Firefox in Debian 8

September 16, 2015 in software

Install Firefox in Debian 8

Lets begin by downloading Firefox.

Visit the official Firefox site and click on Download button.

This will download a file like firefox-xx.x.x.tar.bz2 where “x” is the current version of Firefox.

Lets move that file in /usr directory.

sudo mv ~/Downloads/firefox-xx.x.x.tar.bz2 /usr

Go to /usr and decompress firefox:

cd /usr

sudo tar xvf firefox-xx.x.x.tar.bz2

remove the compressed file:

sudo rm firefox-xx.x.x.tar.bz2

lets create the launcher. Press the “Super Key” (this one is located on your keyboard between “ctrl” and “alt”. In windows world is also called “Windows Key”)

then type “main menu”


Remove nouveau and install nvidia Driver in Ubuntu 15.04

July 6, 2015 in O.S.

Install Nvidia Drivers in Ubuntu 15.04


Lets remove first everything that point to any existing nvidia installation.

open a terminal (ctrr+alt+t) and type:

sudo apt-get remove nvidia*

sudo apt-get autoremove

update and download a few tools that we will need:

sudo apt-get update

sudo apt-get install dkms build-essential linux-headers-generic

Now its time to blacklist the nouveau driver.

sudo nano /etc/modprobe.d/blacklist-nouveau.conf

and add the following lines:

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

Disable the Kernel nouveau by typing the following commands:

echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf

sudo update-initramfs -u

Now go to and download the driver for your graphic card.

The file name should be something like that “” depends on the architecture of your machine and the version of the driver.

install Java in Ubuntu

October 20, 2013 in software

Install Java for firefox in Ubuntu

java_logoLets begin with verifying if Java is already installed in your computer.

Visit the official Java site and click on Do I Have Java?

If you don’t have please keep reading.

Lets download Java:

Go back to the official website and click on Free Java Download.

Now download the package fitting on your version of Linux (32 or 64 bit)

If you are not sure what kind of version you are running open a terminal and type:

uname -m

If the output is i686 it means that you are running on 32bit O.S. If you get x86_64 then you are running on a 64bit O.S.

Now that you have the correct package you need to extract the content into /usr/java. But first you need to create the folder. For that you will need root access

sudo mkdir -p /usr/java

Then move the java package into that folder

sudo mv ~/Downloads/jre-7u45-linux-i586.tar.gz /usr/java

Note. You need to change jre-7u45-linux-i586.tar.gz with the name of the package you download before

Now lets extract the package

cd /usr/java/

sudo tar xvf jre-7u45-linux-i586.tar.gz

Create a folder for firefox plugins

cd ~/.mozilla

mkdir plugins

At the end you need to create a symbolic link for the firefox plugins

for 32bit:

ln -s /usr/java/jre1.7.0_45/lib/i386/ ~/.mozilla/plugins/

or for 64bit

ln -s /opt/java/jre1.7.0_45/lib/amd64/ ~/.mozilla/plugins/

Note. You need to change jre1.7.0_45 with the directory name you create when you extract the package.

Restart Firefox and check again if java is working like you did on the beginning of this article.

A video tutorial is coming soon.