Install .NET Core SDK on elementary OS

At this writing, I’m running elementary OS 0.4.1 Loki, which is based on Ubuntu 16.04.2 LTS. (It is important to know the Ubuntu version, since the .NET Core SDK distribution has different source list for different Linux distros and versions.)

.NET Core SDK version: v2.1.301

  1. Go to the All .NET Download site of Microsoft at https://www.microsoft.com/net/download/all.
  2. Click the link to the SDK version you want. For example, 2.1 SDK (v2.1.301) downloads.
  3. Choose the link of the Linux distro and version you are using. For example, since I’m running elementary OS, I click on the Ubuntu 14.04 Instructions link.
  4. Follow the instruction on the page to register Microsoft key and repository, and to follow steps to install .NET SDK.

    In my case, since my connection to the internet is behind a proxy server, I first make sure that wget is using proxy (see this post about [wget proxy setting]).

    Register Microsoft key and package source

    I type in the following wget command to get the .deb package from Microsoft.

    ~$ wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
    --2018-06-27 11:03:08--  https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
    Connecting to 10.0.2.2:3128... connected.
    Proxy request sent, awaiting response... 200 OK
    Length: 2452 (2.4K) [application/octet-stream]
    Saving to: ‘packages-microsoft-prod.deb’
    
    packages-microsoft-prod.deb                                 100%[==========================================================================================================================================>]   2.39K  --.-KB/s    in 0s      
    
    2018-06-27 11:03:09 (469 MB/s) - ‘packages-microsoft-prod.deb’ saved [2452/2452]
    

    I then install the downloaded package

    ~$ sudo dpkg -i packages-microsoft-prod.deb
    Selecting previously unselected package packages-microsoft-prod.
    (Reading database ... 173634 files and directories currently installed.)
    Preparing to unpack packages-microsoft-prod.deb ...
    Unpacking packages-microsoft-prod (1.0-3) ...
    Setting up packages-microsoft-prod (1.0-3) ...
    

    Which does three things: 1) adds the Microsoft packages information to the source list; 2) adds the Microsoft key to the trusted list; and 3) sets root as the owner of the two added files. See directory listing below:

    ~$ ls -l /etc/apt/sources.list.d/
    total 16
    -rw-r--r-- 1 root root  56 Feb 14 10:56 appcenter.list
    -rw-r--r-- 1 root root 144 Feb 14 10:56 elementary.list
    -rw-r--r-- 1 root root  78 Nov 27  2017 microsoft-prod.list
    -rw-r--r-- 1 root root 152 Feb 14 10:56 patches.list
    ~$ ls -l /etc/apt/trusted.gpg.d
    total 4
    -rw-r--r-- 1 root root 641 Jan 23  2017 microsoft-prod.gpg
    

    Install .NET Core SDK

    Make sure that https download transport for APT is installed and up to date.

    ~$ sudo apt-get install apt-transport-https

    downloads the package lists from the repositories and updates them to get information on the newest versions of packages and their dependencies.

    ~$ sudo apt-get update

    Install .NET SDK Core 2.1

    ~$ sudo apt-get -y install dotnet-sdk-2.1

    At the end of the installation, you will see the following information…

    This software may collect information about you and your use of the software, and send that to Microsoft.
    Please visit http://aka.ms/dotnet-cli-eula for more information.
    Welcome to .NET Core!
    ---------------------
    Learn more about .NET Core: https://aka.ms/dotnet-docs
    Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli-docs
    
    Telemetry
    ---------
    The .NET Core tools collect usage data in order to help us improve your experience. The data is anonymous and doesn't include command-line arguments. The data is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.
    
    Read more about .NET Core CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry
    
    Configuring...
    --------------
    A command is running to populate your local package cache to improve restore speed and enable offline access. This command takes up to one minute to complete and only runs once.
    

    Verify that .NET Core 2.1 is installed

    ~$ dotnet --version
    2.1.301
    

Getting pacman to work through proxy with Wget

  1. Configure pacman to use Wget

    Edit pacman.conf

    $ sudo nano /etc/pacman.conf

    Uncomment or add the following line

    XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u

    Save and exit.

  2. Set Wget proxies and set Wget to use proxy

    Edit wgetrc

    sudo nano /etc/wgetrc

    Find the following section in wgetrc regarding proxy settings.

    # You can set the default proxies for Wget to use for http, https, and ftp.
    # They will override the value in the environment.
    #https_proxy = http://proxy.yoyodyne.com:18023/
    #http_proxy = http://proxy.yoyodyne.com:18023/
    #ftp_proxy = http://proxy.yoyodyne.com:18023/
    
    # If you do not want to use proxy at all, set this to off.
    #use_proxy = on
    

    Uncomment and edit the default proxies, or add your own default proxies for Wget. For example,

    https_proxy = http://10.0.2.2:3128
    http_proxy = http://10.0.2.2:3128
    ftp_proxy = http://10.0.2.2:3128
    

    Uncomment, or add the following line to set Wget use_proxy on.

    use_proxy = on

Give /tmp more room

Sometimes when I do an update, or build an AUR install with yaourt, I get a “no space left on device” error.

I can temporarily increase the size of /tmp with:

sudo mount -o remount,exec,suid,size=2G,noatime /tmp

That will set /tmp to 2 Gb

Or, for a more long term solution, set the yaourt temporary directory to another location. For example, the following steps set the TMPDIR to the temp directory in my home directory.

$ cd ~
$ mkdir temp
$ sudo nano /etc/yaourtrc

Edit the line

#TMPDIR="/tmp"

to

TMPDIR="/home/<my user name>/temp"

Useful Unicodes

I often need to input Unicode symbols into documents.

  • In Linux, Ctrl + Shift + U following by the Unicode number.
  • In Microsoft Word, Unicode number then Alt + X.

Here are a few of my favorite Unicodes:

Name Symbol Number
Copyright sign © 00A9
Registered sign ® 00AE
Em Dash 2014
Dagger 2020
Bullet 2022
Therefore 2234
Because 2235
Black square 25A0
White square 25A1
White square with rounded corners 25A2
White square with black small square 25A3
Warning sign 26A0
Check mark 2713
Heavy check mark 2714
Ballot X 2717
Heavy ballot X 2718

Using Multiple Desktops in Raspbian Jessie

To set up multiple desktops:

  1. Click Menu
  2. Click Preferences
  3. Click Openbox Configuration Manager
    menu to Openbox Configuration Manager
    Menu to obconf

    If you do not see the Openbox Configuration Manager, install it by running:
    sudo apt-get install -y obconf

  4. Click on the Desktops tab, and select the desired Number of desktops.
    Desktop Settings
    Desktop Settings

You now have multiple desktops, use the keyboard shortcuts Ctrl + Alt + ⇨ or Ctrl + Alt + ⇦ to switch between the next and previous desktop.

If the shortcuts keys do not work, refer to the following post for Raspbian keyboard shortcuts to change your key-binding in Openbox.