debian W: Possible missing firmware /lib/firmware/nvidia/gv100/sec2/sig.bin for module nouveau

W: Possible missing firmware /lib/firmware/nvidia/gv100/sec2/sig.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/sec2/image.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/sec2/desc.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/nvdec/scrubber.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/sw_method_init.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/sw_bundle_init.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/sw_nonctx.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/sw_ctx.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/gpccs_sig.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/gpccs_data.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/gpccs_inst.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/gpccs_bl.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/fecs_sig.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/fecs_data.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/fecs_inst.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/gr/fecs_bl.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/acr/ucode_unload.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/acr/ucode_load.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/acr/unload_bl.bin for module nouveau W: Possible missing firmware /lib/firmware/nvidia/gv100/acr/bl.bin for module nouveau 

The NVIDIA driver firmware problem has been solved, which has troubled me for a long time.

LEMP Stack Installation on Debian 9

This tutorial will show you how to install and configure the LEMP stack on your VPS/LowEndBox, running Debian 9.

LEMP stands for Linux Nginx MySQL PHP, and is a lightweight variation of the LAMP stack, which includes Apache instead of Nginx. You’ll notice that it’s not written as LNMP, and that’s due to the pronunciation of the word Nginx (Engine-X).

LEMP consumes far less resources than the LAMP stack, and is thus more sutiable for cheap VPS machines and Low End Boxes. It is 2.5 times faster under heavy load, according to benchmarks. Also, to speed up things even more, we are going to install MariaDB instead of MySQL as it is much faster, but still fully compatible with the original MySQL.

What We Are Going To Cover

  • Installing Nginx
  • Nginx configuration basics
  • Setting up a Firewall
  • Installing and configuring MariaDB
  • Installing latest PHP
  • Configuring Nginx to serve PHP files
  • Testing the installed stack
  • (With a domain) Securing the site with Let’s Encrypt certificates


We will install and set up the LEMP stack on Debian 9:

  • Starting with a clean VPS with
  • At least 512Mb of RAM
  • 15Gb of free disk space
  • You will need root user access
  • You must have DNS records for your domain ( in this tutorial) already set up to point to your VPS in order to install Let’s Encrypt certificates. If you don’t have one, access your IP address instead and skip the last step

Step 1: Install Nginx

Installation and Firewall Setup

First, log in to your server as root or as an another account with sudo privileges. Then, update your package manager’s cache:

sudo apt update 

Install Nginx by running the following command:

sudo apt install nginx -y 

Nginx is now installed. Go to your domain (or IP address if you don’t have one) in your browser. The default Nginx welcome page will be shown:

Nginx default page

This means that Nginx was installed successfully. Enable it via systemctl to start it at every server boot:

sudo systemctl enable nginx 

For maximum security, you’ll now install ufw (uncomplicated firewall) and configure it to allow HTTP, HTTPS, FTP and SSH connections, and to deny all others:

sudo apt install ufw -y sudo ufw allow 'Nginx Full' sudo ufw allow OpenSSH sudo ufw allow SSH sudo ufw allow ftp 

Enable it (make it active) by running:

sudo ufw enable 

Answer y when asked, and reload the site in your browser. If you still see the same welcome page, you have configured your firewall correctly. If it shows an error (such as Access Denied), disable the firewall:

sudo ufw disable 

and check its configuration:

sudo ufw status 

You’ll see a list of enabled profiles. If you don’t see the ones from above, rerun the commands and enable it again.

Configuration Directories

On Debian 9, Nginx stores its configuration files under /etc/nginx, and the default directory for serving static files is /usr/share/nginx/html. This will become important in the later steps, when we’ll need to change the configuration and add new files.

Step 2: Installing MariaDB

Install MariaDB (it is available to apt by default):

sudo apt install mysql-server  -y 

Start it when the installation finishes:

sudo systemctl start mysql 

To retain full compatibility with the original MySQL product, MariaDB responds to the mysql command.

After MariaDB installation, it is mandatory to run a script (called mysql_secure_installation) to secure the database:

sudo mysql_secure_installation 

When it asks you for the current root password, press Enter, because this is the first time you are configuring it. Then, enter a new password for the root user and answer y for anonymous user removal. If you don’t plan on accessing the database from outside the server, answer y to the next question, otherwise type in n. Enter y or press Enter for all questions that follow.

Try to connect to it by running:

sudo mysql -u root -p 

When prompted, enter the root password you just set.

You’ll see the mysql prompt:

mysql command prompt

meaning that MariaDB is working correctly and is properly secured. Type in exit to quit the console.

Step 3: Installing PHP

You’ll now install PHP 7.0, the version available by default on Debian 9.

To install PHP 7.0, run:

sudo apt install php-fpm php-mysql 

Then, install additional PHP extensions that you will most likely need:

sudo apt install php-mysql php-mbstring php-dev php-gd php-pear php-zip php-xml php-curl -y 

To set the version of PHP you just installed as the default one system-wide, run the following command:

sudo update-alternatives --set php /usr/bin/php7.0 

Now check the version of the available PHP:

sudo php --version 

You’ll see that the version is 7.0, as it should be.

PHP version output

Step 4: Configuring Nginx to Serve PHP Content

PHP is installed and working correctly, but we now have to configure Nginx to use it, because it won’t do so automatically (unlike Apache).

As noted in Step 1, Nginx stores its configuration files under /etc/nginx. Configuration that is currently enabled (which will be applied by Nginx) is stored in a folder named sites-enabled. Similarly, sites that are available, but are not enabled (and thus can not be accessed from the Internet), are stored in a folder named sites-available. We’ll edit the configuration of the default enabled site.

Delete the default config file, because we won’t be needing it:

rm /etc/nginx/sites-enabled/default 

A copy of the default site config can be found at /etc/nginx/sites-available/default.

Create a new config file for editing:

nano /etc/nginx/sites-enabled/default 

Add the following lines:

server {     listen 80 default_server;     listen [::]:80 default_server;      root /var/www/html;      index index.php index.html index.htm index.nginx-debian.html;      server_name _;      location / {             try_files $  uri $  uri/ =404;     }      location ~ \.php$   {            include snippets/fastcgi-php.conf;            fastcgi_pass unix:/run/php/php7.3-fpm.sock;     }      location ~ /\.ht {            deny all;     } } 

Save and close the file.

The first part of the above config specifies that Nginx should listen to the HTTP port 80 for requests. Then it sets the root folder for serving files to /var/www/html (which is where you’ll store your website files) and tells Nginx to first try to serve PHP files (instead of HTML).

The rest of the config shown tells Nginx how to call PHP when requested, and to deny access to .htaccess and similar files, which originate from the Apache web server. They are not used by Nginx, and should not be served to users because they might contain some sensitive info.

Restart Nginx for the changes to take effect:

sudo systemctl restart nginx 

Try reloading your site (or IP address) in your browser. You should see the same Nginx default welcome page as before.

To test if PHP rendering is working, create a PHP file in /var/www/html:

sudo nano /var/www/html/index.php 

Put the following into it:

<?php  phpinfo();  ?> 

Save and close the file.

The phpinfo() function outputs very detailed information about PHP installation.

Reload the site in your browser. This time, if all is well, you’ll see a page similar to this:

phpinfo() output

If you see a 502 Bad Gateway error, check the fastcgi_pass line in the above config (the PHP version may be different, though that is unlikely).

Be sure to remove the file immediately afterwards, because it reveals a lot of sensitive info:

rm /var/www/html/index.php 

Step 5: Securing Your Domain Using Let’s Encrypt

If you have a domain name, fully registered and pointed to your server, you can secure it using free Let’s Encrypt TLS certificates. The benefits of this are that you’ll have HTTPS access and a padlock will show next to your domain name in all browsers.

Let’s Encrypt certificates will be generated and configured using Certbot, a free program created for this purpose. Let’s Encrypt certificates expire after 90 days, and Certbot will automatically renew them when it decides it is time (every 60 days by default), so you don’t have to worry about them at all.

To install Certbot, you’ll first need to enable the Debian Backports repository by running:

secho "deb stretch-backports main" | sudo tee /etc/apt/sources.list.d/backports.list 

Update your package manager cache:

sudo apt update 

Then, install Certbot:

sudo apt install certbot python-certbot-nginx -t stretch-backports -y 

Once it is done, run Certbot:

sudo certbot --nginx --rsa-key-size 4096 

Enter an email address you know you’ll check, then agree to the terms of service by typing in A. Press Y if you want to subscribe to EFF’s newsletter, and then input your domain name. Certbot will then ask you if you wish to redirect all traffic to HTTPS – you do, so type in 2.

You’ll receive a congratulatory message, which means that your domain is now secured with free HTTPS certificates from Let’s Encrypt. Refresh your domain in your browser once more. A padlock will show to the left of your site address, meaning that the connection is encrypted. If you want, you can run your site through the SSL Server Test and see that you’ll get an A or better.

What You Can Do Next

You have now installed and configured a LEMP stack on your Debian 9 server. You can now host your PHP website(s) on it, and they will have access to the MariaDB database. For example, you can install WordPress, Joomla, Drupal, Moodle, or any other PHP application that may need to access the database, and it will work with sufficient further configuration.

Dusko Savic is a technical writer and programmer.

The post LEMP Stack Installation on Debian 9 appeared first on Low End Box.

Re-using home partition from Ubuntu after I wipe and reinstall Debian

I wanted to install debian but not loose any of my data, was wondering if I could retain the same username meta and the home folder and wipe only my OS partitions.

I know this works when installing ubuntu over ubuntu, just wondering if this could be achieved when switching to debian as well.

I have tried re installing ubuntu by wiping only the OS partitions and leaving the home dir intact.

P.S.: I intend to create the exact same user meta and machine meta to bypass any file ownership and permission issues.

Shared library built on Ubuntu with -ljpeg doesn’t work on Debian

I am making a shared library using C language. This lib has a dependencies from libjpeg and X api. I am building it on Ubuntu 18.04 OS and to build it I use the following command: gcc mycode.c -o --shared -lX11 -lXss -lXExt -ljpeg -fPIC. I want to use this library on debian based operating systems, for example Debian OS. When I call functions of this library on Debian 9.9, I receive an exception Unable to load a file or one of it's dependencies. But when I build this C code with the same command on Debian and further use it – all is working. I assume that the problem is in libjpeg because on Ubuntu I use library called libjpeg but there is no library with the same name on Debian and I use libjpeg-turbo.
Help me please to realize how to build my library in Ubuntu and then use it on other Debian based systems. Also, I want to mention that I am don’t have a am not expert at Linux distributions and difference between them, and if things that I want to do are impossible, sorry for time wasting.

Problemas con enrutamiento en Debian 9

Dispongo de 2 servidores en Debian 9. Uno hace de servidor firewall y el otro hace de servidor de contenidos.

El esquema de red es el siguiente:

Router —–> enp10s0 del servidor firewall

enp13s3 del servidor de seguridad ——> enp13s3 (servidor de contenido)

Es decir, el servidor de contenidos sale a través del servidor de seguridad con un cable directo (el cruce del cableado lo hacen las tarjetas de red)

La configuración que estoy usando es la siguiente:

Tabla de rutas

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface default         IPdelrouter         UG    0      0        0 enp10s0 IP_delrouter UH    0      0        0 enp10s0 IP_Seguridad UH    0      0        0 enp10s0 IP_Contenido UH    0      0        0 enp13s3 


/etc/network/interfaces  auto enp10s0 iface enp10s0 inet static address x.x.x.2 broadcast x.x.x.31 netmask network x.x.x.0 gateway x.x.x.1 ip_proxy_arp 1  auto enp13s3 iface enp13s3 inet static address x.x.x.2 broadcast x.x.x.31 netmask network x.x.x.0 up ip route del x.x.x.0/27 dev enp10s0 up ip route del x.x.x.0/27 dev enp13s3 up ip route add x.x.x.1 dev enp10s0 up ip route add x.x.x.19 dev enp13s3 ip_proxy_arp 1 


echo 1 > /proc/sys/net/ipv4/ip_forward iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -A INPUT -j ACCEPT iptables -A FORWARD -j ACCEPT iptables -A OUTPUT -j ACCEPT iptables -t nat -A POSTROUTING -s x.x.x.0/27 -o enp13s3 #-j MASQUERADE iptables -t nat -A POSTROUTING -s x.x.x.0/27 -o enp10s0 #-j MASQUERADE iptables -A FORWARD -i enp13s3 -j ACCEPT iptables -A FORWARD -o enp13s3 -j ACCEPT 

Descartamos fallo hardware por que hemos probado con debian 6 y todo funciona correctamente


El servidor de contenido hace ping al servidor de seguridad y viceversa, pero no consigo que llegue al router

¿Que puede estar fallandome?

Un saludo

How To Create a DNS Server On Debian Stretch

The DNS or Domain Name System is the distributed database that allows zone records, such as IP addresses, to be associated with domain names. When a computer, such as your laptop or phone, needs to communicate with a remote computer, such as a web server, over the internet they use each others IP addresses. People are not very good at remembering IP addresses but they are good at remembering the words and phrases in domain names. The DNS system allows people to use domain names when they interface with computers whilst still allowing computers to use IP addresses when they communicate.

In this guide, we will examine how you can install and configure a DNS server that will be the authoritative DNS server for your domain names. This will allow you to have complete control over your DNS information and make immediate changes to your DNS records whenever you need to make them.


In order to follow this guide you will need:

  • A Debian Stretch server.
  • A domain name.
  • A non-root sudo enabled user on the server.

In order to begin this guide, you must log into your server as the non-root user.


The DNS server that we will use in this guide is BIND. BIND is the most deployed and one of the oldest DNS servers in use on the internet.

Before we install BIND you should ensure that your server up-to-date with the latest packages:

sudo apt update sudo apt upgrade 

BIND is available from the default Debian repositories and is installed with the following command:

sudo apt install bind9 bind9utils bind9-doc dnsutils 

BIND is now installed so we can move on to configuring it.

Global BIND Settings

Making BIND function as a DNS server falls into two parts. The first is setting the global parameters which will make BIND function in the manner we desire. The second is to create the domain-specific DNS information that BIND will serve. This information is known as “zone information” or “zone records”.

In this section, we will configure the global parameters.

The first configuration file that we will edit is located at /etc/bind/named.conf.options and configures how bind will operate. Open this file with your favorite text editor, here nano is used:

sudo nano /etc/bind/named.conf.options 

Edit named.conf.options so that it looks like the following:

options {         directory "/var/cache/bind";         auth-nxdomain no;         listen-on port 53 { any; };         recursion no; }; 

The options used here mean as follows:

  • directory – This sets a filesystem path variable. It does not need to be changed.
  • auth-nxdomain no – BIND will not answer authoritatively for domains that are not configured on this server.
  • listen-on port 53 { any; }; – This sets the port that BIND will listen on for incoming DNS requests. Port 53 is the default DNS port. The any options is used here instead of an IP address. This instructs BIND to attach to all available interfaces, private and public.
  • recursion no – This option configures BIND to only respond with information about domains that it has configuration files for. If this is set to yes then BIND will become a recursive DNS which means it will look up any request it receives a request for like Google’s recursive server at This should always be set to no when BIND is also configured to respond to requests from any IP as we have set it up above for security reasons. This is because it can be used for DNS amplification attacks or other nefarious purposes.

The second configuration file we will create sets which domains BIND is responsible for and where the files that contain their zone information are located. Open this file with a text editor:

sudo nano /etc/bind/named.conf.local 

Edit this file so that it looks like:

zone    ""   {         type master;         file    "/etc/bind/";  };  zone   ""  {        type master;        file    "/etc/bind/";  }; 

The lines in this file mean as follows:

  • zone – This is the domain name or IP address that BIND will answer requests for.
  • type master – BIND will read the zone information from the local storage and provides authoritative information for the domain listed on the zone line.
  • file – The file that contains the zone information.

As you can see there are two sections to this file that have the same syntax. The first section lists the domain ( and is the so-called, forward DNS record. This means that it will convert domain information to IP addresses.

The second is the reverse or PTR record of the server’s IP address. This converts in the opposite direction, i.e. IP addresses to domain names. The zone line for the reverse record looks a little strange because the IP address is in reverse. The IP address that this is the reverse record for is

Reverse records are important to have because many security systems such as spam filters will be less likely to accept mail sent from an IP address that has no reverse record.

Now that BIND’s global configuration is set we can create the zone files that will hold the forward and reverse DNS information.

Zone File Configuration

The first zone file that we will create is the forward information for the domain name. Open and create the file with a text editor:

sudo nano /etc/bind/ 

And use the following as your template:

$  TTL 1d @               IN      SOA (                 1        ; serial                 6h       ; refresh after 6 hours                 1h       ; retry after 1 hour                 1w       ; expire after 1 week                 1d )     ; minimum TTL of 1 day ; ; ;Name Server Information  @               IN      NS ns1             IN      A ; ; ;Mail Server Information    IN      MX      10 mail            IN      A ; ; ;Additional A Records:    www             IN      A site            IN      A ; ; ;Additional CNAME Records: slave           IN      CNAME 

The first configuration block beginning $ TTL 1d has only a single line that you need to edit by changing the domain to your domain:    IN      SOA ( 

This line means from left to right:

  • @ – This is replaced with the domain from the named.conf.local file i.e.
  • IN – The type of record, in this case, INternet records.
  • SOA – The record is the Start Of Authority record. This is the authoritative record for this domain.
  • – The nameserver where the DNS records are found.
  • – The email address of the administrator of the nameserver. The @ symbol is replaced with a dot.

The rest of the lines here set values such as Time To Live’s which you can copy from the example.

You should note the dots at end of the domains and hostnames e.g. This final dot stops the domain getting added automatically. We want this to happen with, for example, the www’s in the following line www IN A as this will resolve to the IP address.

The next section – Name Server Information – is mandatory and should be edited to use the hostname of this nameserver and its IP address. It is customary to label the first nameserver but you can choose any hostname you want.

The remaining sections are optional and are included as examples. The first of these, Mail Server Information, is an example of how an email will get sent to an email server at the IP MX records should always resolve to hostnames so the required A record for is included in the mail records section for ease of understanding.

The final two sections are further examples of A and CNAME records.

Next, we need to create a reverse zone file. Open and create the file with a text editor:

sudo nano /etc/bind/ 

Use the following example as your template:

$  TTL 1d @               IN      SOA (                 1        ; serial                 6h       ; refresh after 6 hours                 1h       ; retry after 1 hour                 1w       ; expire after 1 week                 1d )     ; minimum TTL of 1 day ; ; ;Name Server Information  @               IN      NS ns1             IN      A ; ; ;Reverse IP Information      IN      PTR      IN      PTR      IN      PTR 

The first two sections are the same as the forward zone file. The last section is where the reverse maps are configured.

The IP is set down in the backward format with the hostname you want it to resolve to at the end of the line. Here the reverse maps are set for all three IP addresses used in the forward zone file as examples.

Check Your Configuration For Errors

BIND provides a pair of tools to check that its configuration files do not contain any errors that would prevent BIND from starting.

The first checks the global configuration files and is used as follows:

sudo named-checkconf /etc/bind/named.conf.options sudo named-checkconf /etc/bind/named.conf.local 

The second tool will check the zone files and is used as follows:

sudo named-checkzone <DOMAIN-NAME> <ZONE-FILE> e.g. sudo named-checkzone /etc/bind/ 

When you have finished editing these files and they do not throw any errors when you check BIND must be restarted and enabled so that it starts on boot:

sudo systemctl enable bind9.service sudo systemctl restart bind9.service 

Configure Systemd To Keep BIND Running

When you start using your own nameservers for your domain it is critical that it keeps running. If it stops then anything that uses your domain e.g. email, website etc will stop working. Systemd is the program that, amongst other services, starts and stops programs like BIND on your server. In addition to starting and stopping it can be configured to ensures that a program is re-started if it stops for any reason.

First, make a copy of the BIND systemd service file that we will edit:

sudo cp /lib/systemd/system/bind9.service /etc/systemd/system/ 

This will ensure that the edits will not be lost in future system updates. Next, open the file in an editor:

sudo nano /etc/systemd/system/bind9.service 

And add the following two lines to the [Service] section:

Restart=always RestartSec=3 

Then prompt Systemd to reload all its service files:

sudo systemctl daemon-reload 

And restart BIND:

sudo systemctl restart bind9.service 

Now, if BIND stop running for any reason, systemd will restart it again automatically.

Testing The DNS Server

Before you begin using your new DNS server you need to test that it works correctly i.e. BIND serves the correct DNS information for your domain.

The DNS inspection tool dig was included with the packages we installed at the beginning of this guide. dig is one of the powerful and flexible DNS testing and investigation command line tools available on Linux and should be your goto tool for looking up DNS records.

dig has the ability to ignore the system configured resolvers (set in /etc/resolv.conf) and request DNS information directly from a nameserver i.e. the DNS server you have just created.

The syntax of a dig query is as follows:


If we replace this information with the details of the example server in this guide we get:

dig @ -t A 

This will return quite a bit of information. The result that we are interested in is always contained in the ANSWER SECTION e.g.:

;; ANSWER SECTION:         86400   IN      A 

We can also check the reverse map record by using the -x flag:

dig @ -x 

Which will produce the result:

;; ANSWER SECTION:      IN      PTR 

You can perform similar queries against all of the zone records you have created for your domain. When they all return the correct information you are ready to start using your DNS server.


You have now successfully installed, configured and tested your own DNS server you are now ready to start using it. In order to do this, you will need to transfer your domain to your DNS server. This is done with the company that registered your domain for you. When you log into their site you will find somewhere in their control panel an option to transfer the domain to new authoritative nameservers.

Some companies require that a domain has more than one authoritative nameserver. In this guide, we only created one, i.e. If an additional nameserver is required then you need to obtain a second virtual machine and copy the configuration substituting ns2 for ns1.

Alternatively, you can request a second IP address for your existing server and duplicate the ns1 records changing them to ns2.


The post How To Create a DNS Server On Debian Stretch appeared first on Low End Box.

After installing ssl certificate for django application on apache server with debian, I am getting Default test page only

Following are my configuration files

<VirtualHost *:80> Redirect permanent / ServerName localhost ServerAdmin  ErrorLog $  {APACHE_LOG_DIR}/error.log CustomLog $  {APACHE_LOG_DIR}/access.log combined </VirtualHost>  <VirtualHost *:443> ServerName localhost ServerAdmin  Alias /static /var/www/static-root <Directory /var/www/static-root>    Require all granted  </Directory>  Alias /media /var/www/media-root <Directory /var/www/media-root>    Require all granted </Directory>  <Directory /var/www/venv/src/mysite>     <Files>         Require all granted     </Files> </Directory>   ErrorLog $  {APACHE_LOG_DIR}/error.log CustomLog $  {APACHE_LOG_DIR}/access.log combined  SSLEngine on SSLCertificateFile /etc/ssl/piping_pro.crt SSLCertificateKeyFile /etc/ssl/private/PrivateKey.key SSLCertificateChainFile /etc/ssl/  </VirtualHost> 

Java installation error on Debian 8

I followed the instructions from this website:

When I install jre and jdk it says:

Reading package lists... Done Building dependency tree Reading state information... Done default-jdk is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. 

So I followed the instruction to the point:

sudo apt-get install oracle-java8-installer

After that it says:

    Building dependency tree      Reading state information... Done       E: Unable to locate package oracle-java8-installer 

And when I run java -version or javac -version

It says:

bash: java: command not found