UB: Ubuntu 18.04 LTS Desktop VM Setup

VirtualBox Setup

  • Ubuntu 18.04 LTS Desktop
  • ISO: ubuntu-18.04-desktop-amd64.iso
  • OS: Linux_x64
  • Memory: 2G
  • Video: 128M
  • USB:3.0
  • HDD: 10G

Install net-tools

sudo apt install net-tools

Install OpenSSH server

https://help.ubuntu.com/lts/serverguide/openssh-server.html

sudo apt install openssh-server

sudo apt install openssh-client

Install firewall config tools

sudo apt install firewalld

gcc install

https://askubuntu.com/questions/1028601/install-gcc-8-only-on-ubuntu-18-04

Required for VBox Guest Additions

sudo apt install gcc

sudo apt install gcc-7

sudo apt install gcc-8

sudo apt install build-essential

sudo apt install make

sudo apt install perl

VirtualBox Guest Additions

Requires [gcc make perl]

Shutter ScreenCap

sudo apt-get install shutter

Create keyboard shortcuts

  • PrtScn
    • shutter -f
  • C-PrtScn
    • shutter -s
  • A-PrtScn
    • shutter –active / -a

JDK8 Installation

Check/Create JVM path

/usr/lib/jvm

Pull JDK8

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz"

Unpack

tar -xvzf jdk-8u171-linux-x64.tar.gz -C /usr/lib/jvm

Create Alternatives links

update-alternatives --install <link> <name> <path> <priority>

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_171/bin/java 1

 

update-alternatives --list java

/usr/lib/jvm/jdk1.8.0_171/bin/java

 

update-alternatives --config java

There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/jdk1.8.0_171/bin/java

Nothing to configure.

 

update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.8.0_171/bin/jar 1

update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_171/bin/javac 1

Setup Environment Variables

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_171

printenv JAVA_HOME

export PATH=$PATH:/usr/lib/jvm/jdk1.8.0_171/jre/bin

printenv PATH

Eclipse

Download Eclipse

https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/oxygen/3a/eclipse-jee-oxygen-3a-linux-gtk-x86_64.tar.gz&mirror_id=492

Extract to /usr/local/ & create symbolic link for easier system-wide access

tar -xvzf eclipse-jee-oxygen-3a-linux-gtk-x86_64.tar.gz -C /usr/local/

ln -s /usr/local/eclipse/eclipse /usr/bin/eclipse

sudo chmod 777 /usr/bin/eclipse

Create Desktop launcher

# nano /usr/share/applications/eclipse.desktop

 

Name=Eclipse
Comment=Eclipse IDE
Type=Application
Encoding=UTF-8
Exec=/usr/bin/eclipse
Icon=/usr/local/eclipse/icon.xpm
Categories=GNOME;Application;Development;
Terminal=false
StartupNotify=true

Eclipse: Subclipse 4.2.4

Eclipse was freezing on SVN repo due to missing JavaHL dependencies ( even when attempting to use Team > SVNKit )

JavaHL JNI

sudo apt install libsvn-java
sudo find / -name libsvnjavahl-1.so

Add library to eclipse.ini

/usr/local/eclipse/eclipse.ini
-Djava.library.path=/usr/lib/x86_64-linux-gnu/jni/


 


Remote Desktop

xRDP Installation

https://www.itzgeek.com/how-tos/linux/centos-how-tos/install-xrdp-on-centos-7-rhel-7.html

https://www.makeuseof.com/tag/how-to-establish-simple-remote-desktop-access-between-ubuntu-and-windows/

sudo apt-get install xrdp -y

netstat -antup | grep xrdp

netstat -ntlp | grep 3389

Enable xrdp at startup

etc/init.d/xrdp start

 

Configure Firewall

firewall-cmd --permanent --add-port=3389/tcp

firewall-cmd --reload

 


NPP under Wine

https://askubuntu.com/questions/8367/run-notepad-exe-from-terminal#8369

http://bur.st/~gunny/winehowto.html

https://notepad-plus-plus.org/download/v7.5.6.html

https://github.com/notepad-plus-plus/notepad-plus-plus/releases/tag/v7.5.6

https://askubuntu.com/questions/8367/run-notepad-exe-from-terminal

 

If the file you are trying to create or edit does not require root privilege, run this:

wine /home/jon/.wine/drive_c/Program\ Files/Notepad++/notepad++.exe

If it does require root permission at all, install the notepad++ with your root account after having been logged in as root (e.g. by executing sudo -s -H), log out, and run:

sudo wine /home/root/.wine/drive_c/Program\ Files/Notepad++/notepad++.exe

But usually, as has been pointed out, running wine applications as root is not recommended since wine apps rely on wine and the source code of wine apps may or may not be reviewed, meaning there is an increased amount of risk involved in doing so.

 


Install Notes

 

UB: Ubuntu 18.04 C++ gcc build-essentials

https://askubuntu.com/questions/1028601/install-gcc-8-only-on-ubuntu-18-04


 

gcc-7 and gcc-8 will happily co-live together.

I would suggest to let gcc-7 be installed, for satisfying build-essential and perhaps other dependent packages, and configure gcc-8 to be your default gcc installation.

Use update-alternatives for having gcc redirected automatically to gcc-8:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 700 --slave /usr/bin/g++ g++ /usr/bin/g++-7

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8

This will give you the convenience of gcc being at the latest version, and still you will be able to invoke gcc-7 or gcc-8 directly.

If you'll wish to change the default gcc version later on, run sudo update-alternatives --config gcc. It will bring a prompt similar to this, which lets you pick the version to be used:

There are 2 choices for the alternative gcc (providing /usr/bin/gcc).

Selection Path Priority Status

------------------------------------------------------------

* 0 /usr/bin/gcc-8 800 auto mode

1 /usr/bin/gcc-7 700 manual mode

2 /usr/bin/gcc-8 800 manual mode


 

Press <enter> to keep the current choice[*], or type selection number:


 

The higher priority is the one that is picked automatically by update-alternatives.

 


update-alternatives

update-alternatives --help

Usage: update-alternatives [<option> ...] <command>


Commands:

--install <link> <name> <path> <priority>

[--slave <link> <name> <path>] ...

add a group of alternatives to the system.

--remove <name> <path> remove <path> from the <name> group alternative.

--remove-all <name> remove <name> group from the alternatives system.

--auto <name> switch the master link <name> to automatic mode.

--display <name> display information about the <name> group.

--query <name> machine parseable version of --display <name>.

--list <name> display all targets of the <name> group.

--get-selections list master alternative names and their status.

--set-selections read alternative status from standard input.

--config <name> show alternatives for the <name> group and ask the

user to select which one to use.

--set <name> <path> set <path> as alternative for <name>.

--all call --config on all alternatives.


 

<link> is the symlink pointing to /etc/alternatives/<name>.

(e.g. /usr/bin/pager)

<name> is the master name for this link group.

(e.g. pager)

<path> is the location of one of the alternative target files.

(e.g. /usr/bin/less)

<priority> is an integer; options with higher numbers have higher priority in

automatic mode.


 

Options:

--altdir <directory> change the alternatives directory.

--admindir <directory> change the administrative directory.

--log <file> change the log file.

--force allow replacing files with alternative links.

--skip-auto skip prompt for alternatives correctly configured

in automatic mode (relevant for --config only)

--verbose verbose operation, more output.

--quiet quiet operation, minimal output.

--help show this help message.

--version show the version.

Tags