Microsoft anounces that PowerShell becomes open source. This article will describe building and installing PowerShell.
Table of Contents
1 Download and install PowerShell
PowerShell deb package is provided.
$ DL=https://github.com/PowerShell/PowerShell/releases/download/ $ wget ${DL}/v6.0.0-alpha.9/powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb $ sudo apt install -y libunwind8 libicu55 $ sudo dpkg -i powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb
2 Build and install PowerShell
Build and install PowerShell from source code..
2.1 Install dotnet
Install dotnet package with this.
$ sudo sh -c 'echo "deb [arch=amd64] \ https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" \ > /etc/apt/sources.list.d/dotnetdev.list' $ sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893 $ sudo apt update -y $ sudo apt install -y dotnet-dev-*
2.2 Install packages for building PowerShell
Install packages for building PowerShell with apt.
$ sudo apt install -y cmake make g++
2.3 Download PowerShell source code
Download PowerShell source code with git clone –recursive.
$ git clone --recursive https://github.com/PowerShell/PowerShell.git $ cd PowerShell
2.4 Build PowerShell
Build PowerShell with this.
$ cd src/libpsl-native $ cmake -DCMAKE_BUILD_TYPE=Debug . $ make $ cd ../.. $ dotnet restore $ cd src/ResGen $ dotnet run -c Linux $ cd ../TypeCatalogParser $ dotnet run -c Linux $ cd ../TypeCatalogGen $ dotnet run -c Linux \ ../Microsoft.PowerShell.CoreCLR.AssemblyLoadContext/CorePsTypeCatalog.cs \ powershell.inc $ cd ../powershell-unix $ dotnet build -c Linux
2.5 Install PowerShell
Install PowerShell binaries to /opt and create symbolic link to power shell command.
$ sudo cp -a bin/Linux/netcoreapp1.0/ubuntu.16.04-x64 /opt/powershell $ sudo ln -s /opt/powershell/powershell /usr/local/bin/
Run powershell command.
$ powershell PowerShell Copyright (C) 2016 Microsoft Corporation. All rights reserved. PS /home/hiroom2/src/PowerShell/src/powershell-unix> dir Directory: /home/hiroom2/src/PowerShell/src/powershell-unix Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 8/24/16 4:29 AM bin d----- 8/24/16 4:29 AM obj ------ 8/24/16 4:26 AM 42092 libgtest_main.a ------ 8/24/16 4:26 AM 2793922 libgtest.a ------ 8/24/16 4:26 AM 194760 libpsl-native.so ------ 8/24/16 4:25 AM 2338 project.json ------ 8/24/16 4:27 AM 1369383 project.lock.json PS /home/hiroom2/src/PowerShell/src/powershell-unix>