diff --git a/.spelling b/.spelling index 9c3c046a12..fe3276e55b 100644 --- a/.spelling +++ b/.spelling @@ -597,9 +597,27 @@ sample-dotnet2 #region docs/installation/linux.md Overrides - docs/installation/linux.md +compat-openssl10 +dockerfile +libc6 libcurl +libcurl3 +libgcc1 +libgssapi-krb5-2 +libicu +libicu52 +libicu55 +libicu57 +liblttng-ust0 +libssl1.0.0 +libssl1.0.2 +libstdc +libunwind +libunwind8 +libuuid1 +openssl-libs OpenSUSE -TravisEz13 +zlib1g zypper #endregion diff --git a/README.md b/README.md index f8924d4b57..aff51bfe0a 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,15 @@ You can download and install a PowerShell package for any of the following platf | Many Linux distributions | [.AppImage][rl-ai] | [Instructions][in-appimage] | | macOS 10.12 | [.pkg][rl-macos] | [Instructions][in-macos] | | Docker | | [Instructions][in-docker] | -| Kali Linux | [.deb][rl-ubuntu16] | [Instructions][in-kali] +| Kali Linux | [.deb][rl-ubuntu16] | [Instructions][in-kali] | + +You can also download the PowerShell binary archives for Windows, macOS and Linux. + +| Platform | Downloads | How to Install | +| ------------ | ----------------------------------------------- | ------------------------------ | +| Windows | [32-bit][rl-winx86-zip]/[64-bit][rl-winx64-zip] | [Instructions][in-windows-zip] | +| macOS | [64-bit][rl-macos-tar] | [Instructions][in-tar] | +| Linux | [64-bit][rl-linux-tar] | [Instructions][in-tar] | [rl-windows-64]: https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-beta.8/PowerShell-6.0.0-beta.8-win-x64.msi [rl-windows-86]: https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-beta.8/PowerShell-6.0.0-beta.8-win-x86.msi @@ -55,6 +63,10 @@ You can download and install a PowerShell package for any of the following platf [rl-centos]: https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-beta.8/powershell-6.0.0_beta.8-1.rhel.7.x86_64.rpm [rl-ai]: https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-beta.8/PowerShell-6.0.0-beta.8-x86_64.AppImage [rl-macos]: https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-beta.8/powershell-6.0.0-beta.8-osx.10.12-x64.pkg +[rl-winx86-zip]: https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-beta.8/PowerShell-6.0.0-beta.8-win-x86.zip +[rl-winx64-zip]: https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-beta.8/PowerShell-6.0.0-beta.8-win-x64.zip +[rl-macos-tar]: TBD +[rl-linux-tar]: TBD [installation]: docs/installation [in-windows]: docs/installation/windows.md#msi @@ -73,6 +85,8 @@ You can download and install a PowerShell package for any of the following platf [in-macos]: docs/installation/linux.md#macos-1012 [in-docker]: docker [in-kali]: docs/installation/linux.md#kali +[in-windows-zip]: docs/installation/windows.md#zip +[in-tar]: docs/installation/linux.md#binary-archives To install a specific version, visit [releases](https://github.com/PowerShell/PowerShell/releases). diff --git a/docs/installation/linux.md b/docs/installation/linux.md index 857c047cd9..17adb68d64 100644 --- a/docs/installation/linux.md +++ b/docs/installation/linux.md @@ -2,19 +2,15 @@ Supports [Ubuntu 14.04][u14], [Ubuntu 16.04][u16], [Ubuntu 17.04][u17], [Debian 8][deb8], [Debian 9][deb9], [CentOS 7][cos], [Red Hat Enterprise Linux (RHEL) 7][rhel7], [OpenSUSE 42.2][opensuse], [Fedora 25][fed25], -[Fedora 26][fed26], [Arch Linux][arch], [many Linux distributions (AppImage)][lai], and [macOS 10.12][mac]. +[Fedora 26][fed26], [Arch Linux][arch], and [macOS 10.12][mac]. + +For Linux distributions that are not officially supported, +you can try using the [PowerShell AppImage][lai]. +You can also try deploying PowerShell binaries directly using the Linux [`tar.gz` archive][tar], +but you would need to set up the necessary dependencies based on the OS in separate steps. + All packages are available on our GitHub [releases][] page. - -All of these steps can be done automatically by the [`download.sh`][download] script. -You should *never* run a script without reading it first! - -Please **read the [download][] script first**, and then if you want to run it, use: - -```sh -bash <(curl -fsSL https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/download.sh) -``` - -Once the package is installed, run `powershell` from a terminal. +Once the package is installed, run `pwsh` from a terminal. [u14]: #ubuntu-1404 [u16]: #ubuntu-1604 @@ -29,7 +25,7 @@ Once the package is installed, run `powershell` from a terminal. [arch]: #arch-linux [lai]: #linux-appimage [mac]: #macos-1012 -[download]: https://github.com/PowerShell/PowerShell/blob/master/tools/download.sh +[tar]: #binary-archives ## Ubuntu 14.04 @@ -52,7 +48,7 @@ sudo apt-get update sudo apt-get install -y powershell # Start PowerShell -powershell +pwsh ``` After registering the Microsoft repository once as superuser, @@ -102,7 +98,7 @@ sudo apt-get update sudo apt-get install -y powershell # Start PowerShell -powershell +pwsh ``` After registering the Microsoft repository once as superuser, @@ -152,7 +148,7 @@ sudo apt-get update sudo apt-get install -y powershell # Start PowerShell -powershell +pwsh ``` After registering the Microsoft repository once as superuser, @@ -206,7 +202,7 @@ sudo apt-get update sudo apt-get install -y powershell # Start PowerShell -powershell +pwsh ``` After registering the Microsoft repository once as superuser, @@ -260,7 +256,7 @@ sudo apt-get update sudo apt-get install -y powershell # Start PowerShell -powershell +pwsh ``` After registering the Microsoft repository once as superuser, @@ -305,7 +301,7 @@ curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum. sudo yum install -y powershell # Start PowerShell -powershell +pwsh ``` After registering the Microsoft repository once as superuser, @@ -351,7 +347,7 @@ curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum. sudo yum install -y powershell # Start PowerShell -powershell +pwsh ``` After registering the Microsoft repository once as superuser, @@ -406,7 +402,7 @@ sudo zypper update sudo zypper install powershell # Start PowerShell -powershell +pwsh ``` ### Installation via Direct Download - OpenSUSE 42.2 @@ -452,7 +448,7 @@ sudo dnf update sudo dnf install -y powershell # Start PowerShell -powershell +pwsh ``` ### Installation via Direct Download - Fedora 25 @@ -502,7 +498,7 @@ sudo dnf install compat-openssl10 sudo dnf install -y powershell # Start PowerShell -powershell +pwsh ``` ### Installation via Direct Download - Fedora 26 @@ -630,7 +626,7 @@ If you installed PowerShell via direct download, PowerShell must be removed manually: ```sh -sudo rm -rf /usr/local/bin/powershell /usr/local/microsoft/powershell +sudo rm -rf /usr/local/bin/pwsh /usr/local/microsoft/powershell ``` To uninstall the additional PowerShell paths (such as the user profile path) @@ -640,50 +636,6 @@ and remove the desired the paths with `sudo rm`. [paths]:#paths -### OpenSSL on macOS - -On macOS, .NET Core requires Homebrew's OpenSSL -because the "OpenSSL" system libraries on macOS are not OpenSSL, -as Apple deprecated OpenSSL in favor of their own libraries. -This requirement is not a hard requirement for all of PowerShell. -However, most networking functions (such as `Invoke-WebRequest`) -do require OpenSSL to work properly. - -The PowerShell formula for Homebrew includes this OpenSSL as a dependency, -so you if you installed via Homebrew, you shouldn't run into these problems. - -If you installed via direct download (or through some means other than Homebrew), -the easiest fix for these issues is to install [Homebrew's OpenSSL][openssl]: - -```bash -brew install openssl -brew install curl --with-openssl -``` - -**Please ignore** .NET Core's installation instructions to manually link the OpenSSL libraries. -This is **not** required for PowerShell as we patch .NET Core's cryptography libraries to find Homebrew's OpenSSL in its installed location. -Again, **do not** run `brew link --force` nor `ln -s` for OpenSSL, regardless of other instructions. - -Homebrew previously allowed OpenSSL libraries to be linked to the system library location; -however, this created major security holes and is [no longer allowed][homebrew-patch]. -Because .NET Core's 1.0.0 release libraries still look in the prior system location for OpenSSL, -they will fail to work unless the libraries are manually placed there (security risk), -or their libraries are patched (which we do). -To patch .NET Core's cryptography libraries, we use `install_name_tool`: - -```bash -find ~/.nuget -name System.Security.Cryptography.Native.dylib | xargs sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib -find ~/.nuget -name System.Net.Http.Native.dylib | xargs sudo install_name_tool -change /usr/lib/libcurl.4.dylib /usr/local/opt/curl/lib/libcurl.4.dylib -``` - -This updates .NET Core's library to look in Homebrew's OpenSSL installation location instead of the system library location. -The PowerShell macOS package come with the necessary libraries patched, -and the build script patches the libraries on-the-fly when building from source. -You *can* run this command manually if you're having trouble with .NET Core's cryptography libraries. - -[openssl]: https://github.com/Homebrew/homebrew-core/blob/master/Formula/openssl.rb -[homebrew-patch]: https://github.com/Homebrew/brew/pull/597 - ## Kali ### Installation @@ -698,7 +650,7 @@ dpkg -i libssl1.0.0_1.0.1t-1+deb8u6_amd64.deb dpkg -i powershell_6.0.0-beta.8-1.ubuntu.16.04_amd64.deb # Start PowerShell -powershell +pwsh ``` ### Run PowerShell in latest Kali (Kali GNU/Linux Rolling) without installing it @@ -720,6 +672,83 @@ chmod a+x powershell-6.0.0-beta.8-x86_64.AppImage dpkg -r powershell_6.0.0-beta.8-1.ubuntu.16.04_amd64.deb ``` +## Binary Archives + +PowerShell binary `tar.gz` archives are provided for macOS and Linux platforms to enable advanced deployment scenarios. + +### Dependencies + +For Linux, PowerShell builds portable binaries for all Linux distributions. +But .NET Core runtime requires different dependencies on different distributions, +and hence PowerShell does the same. + +The following chart shows the .NET Core 2.0 dependencies on different Linux distributions that are officially supported. + +| OS | Dependencies | +| ------------------ | ------------ | +| Ubuntu 14.04 | libc6, libgcc1, libgssapi-krb5-2, liblttng-ust0, libstdc++6,
libcurl3, libunwind8, libuuid1, zlib1g, libssl1.0.0, libicu52 | +| Ubuntu 16.04 | libc6, libgcc1, libgssapi-krb5-2, liblttng-ust0, libstdc++6,
libcurl3, libunwind8, libuuid1, zlib1g, libssl1.0.0, libicu55 | +| Ubuntu 17.04 | libc6, libgcc1, libgssapi-krb5-2, liblttng-ust0, libstdc++6,
libcurl3, libunwind8, libuuid1, zlib1g, libssl1.0.0, libicu57 | +| Debian 8 (Jessie) | libc6, libgcc1, libgssapi-krb5-2, liblttng-ust0, libstdc++6,
libcurl3, libunwind8, libuuid1, zlib1g, libssl1.0.0, libicu52 | +| Debian 9 (Stretch) | libc6, libgcc1, libgssapi-krb5-2, liblttng-ust0, libstdc++6,
libcurl3, libunwind8, libuuid1, zlib1g, libssl1.0.2, libicu57 | +| CentOS 7
Oracle Linux 7
RHEL 7
OpenSUSE 42.2
Fedora 25 | libunwind, libcurl, openssl-libs, libicu | +| Fedora 26 | libunwind, libcurl, openssl-libs, libicu, compat-openssl10 | + +In order to deploy PowerShell binaries on Linux distributions that are not officially supported, +you would need to install the necessary dependencies for the target OS in separate steps. +For example, our [Amazon Linux dockerfile][amazon-dockerfile] installs dependencies first, +and then extracts the Linux `tar.gz` archive. + +[amazon-dockerfile]: https://github.com/PowerShell/PowerShell/blob/master/docker/community/amazonlinux/Dockerfile + +### Installation - Binary Archives + +#### Linux + +```sh +# Download the powershell '.tar.gz' archive +curl -L -o /tmp/powershell.tar.gz https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-beta.9/powershell-6.0.0-beta.9-linux-x64.tar.gz + +# Create the target folder where powershell will be placed +sudo mkdir -p /opt/microsoft/powershell/6.0.0-beta.9 + +# Expand powershell to the target folder +sudo tar zxf /tmp/powershell.tar.gz -C /opt/microsoft/powershell/6.0.0-beta.9 + +# Create the symbolic link that points to pwsh +sudo ln -s /opt/microsoft/powershell/6.0.0-beta.9/pwsh /usr/bin/pwsh +``` + +#### macOS + +```sh +# Download the powershell '.tar.gz' archive +curl -L -o /tmp/powershell.tar.gz https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-beta.9/powershell-6.0.0-beta.9-osx-x64.tar.gz + +# Create the target folder where powershell will be placed +sudo mkdir -p /usr/local/microsoft/powershell/6.0.0-beta.9 + +# Expand powershell to the target folder +sudo tar zxf /tmp/powershell.tar.gz -C /usr/local/microsoft/powershell/6.0.0-beta.9 + +# Create the symbolic link that points to pwsh +sudo ln -s /usr/local/microsoft/powershell/6.0.0-beta.9/pwsh /usr/local/bin/pwsh +``` + +### Uninstallation - Binary Archives + +#### Linux + +```sh +sudo rm -rf /usr/bin/pwsh /opt/microsoft/powershell +``` + +#### macOS + +```sh +sudo rm -rf /usr/local/bin/pwsh /usr/local/microsoft/powershell +``` + ## Paths * `$PSHOME` is `/opt/microsoft/powershell/6.0.0-beta.8/` @@ -738,7 +767,7 @@ On Linux and macOS, the [XDG Base Directory Specification][xdg-bds] is respected Note that because macOS is a derivation of BSD, instead of `/opt`, the prefix used is `/usr/local`. Thus, `$PSHOME` is `/usr/local/microsoft/powershell/6.0.0-beta.8/`, -and the symlink is placed at `/usr/local/bin/powershell`. +and the symlink is placed at `/usr/local/bin/pwsh`. [releases]: https://github.com/PowerShell/PowerShell/releases/latest [xdg-bds]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html diff --git a/docs/installation/windows.md b/docs/installation/windows.md index 47a307aae8..c26bcd32bd 100644 --- a/docs/installation/windows.md +++ b/docs/installation/windows.md @@ -10,7 +10,7 @@ Once downloaded, double-click the installer and follow the prompts. There is a shortcut placed in the Start Menu upon installation. * By default the package is installed to `$env:ProgramFiles\PowerShell\` -* You can launch PowerShell via the Start Menu or `$env:ProgramFiles\PowerShell\powershell.exe` +* You can launch PowerShell via the Start Menu or `$env:ProgramFiles\PowerShell\pwsh.exe` ### Prerequisites @@ -23,6 +23,13 @@ To enable PowerShell remoting over WinRM, the following prerequisites need to be or newer ([5.0](https://www.microsoft.com/download/details.aspx?id=50395), [5.1](https://www.microsoft.com/download/details.aspx?id=54616)) on Windows 7. +## ZIP + +PowerShell binary ZIP archives are provided to enable advanced deployment scenarios. +Be noted that when using the ZIP archive, you won't get the prerequisites check as in the MSI package. +So in order for remoting over WinRM to work properly on Windows versions prior to Windows 10, +you need to make sure the [prerequisites](#prerequisites) are met. + ## Deploying on Nano Server These instructions assume that Windows PowerShell is running on the Nano Server image and that it has been generated by the [Nano Server Image Builder](https://technet.microsoft.com/windows-server-docs/get-started/deploy-nano-server). @@ -142,4 +149,4 @@ We publish an archive with CoreCLR bits on every CI build with [AppVeyor][]. * Unblock zip file: right-click in File Explorer -> Properties -> check 'Unblock' box -> apply * Extract zip file to `bin` directory -* `./bin/powershell.exe` +* `./bin/pwsh.exe`