--- title: Install on Linux titleSuffix: SQL Server 2019 Machine Learning Services description: "Learn how to install SQL Server 2019 Machine Learning Services on Linux: Red Hat, Ubuntu, and SUSE." author: WilliamDAssafMSFT ms.author: wiassaf manager: rothja ms.date: 05/24/2022 ms.topic: how-to ms.prod: sql ms.technology: machine-learning-services monikerRange: "=sql-server-ver15||=sql-server-linux-ver15" ms.custom: - intro-installation - event-tier1-build-2022 --- # Install SQL Server 2019 Machine Learning Services (Python and R) on Linux [!INCLUDE [SQL Server 2019 - Linux](../includes/applies-to-version/sqlserver2019-linux.md)] This article guides you in the installation of [SQL Server Machine Learning Services](../machine-learning//sql-server-machine-learning-services.md) on Linux. Python and R scripts can be executed in-database using Machine Learning Services. You can install Machine Learning Services on Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES), and Ubuntu. For more information, see [the Supported platforms section in the Installation guidance for SQL Server on Linux](sql-server-linux-setup.md#supportedplatforms). > [!IMPORTANT] > These instructions are specific to SQL Server 2019. For SQL Server 2022, where installation steps are different, refer to [Install SQL Server 2022 Machine Learning Services (Python and R) on Linux](sql-server-linux-setup-machine-learning-sql-2022.md). ## Pre-install checklist * [Install SQL Server on Linux](sql-server-linux-setup.md) and verify the installation. * Check the SQL Server Linux repositories for the Python and R extensions. If you already configured source repositories for the database engine install, you can run the **mssql-mlservices** package install commands using the same repo registration. * (R only) Microsoft R Open (MRO) provides the base R distribution for the R feature in SQL Server and is a prerequisite for using RevoScaleR, MicrosoftML, and other R packages installed with Machine Learning Services. * The required version is MRO 3.5.2. * Choose from the following two approaches to install MRO: * Download the MRO tarball from MRAN, unpack it, and run its install.sh script. You can follow the [installation instructions on MRAN](https://mran.microsoft.com/releases/3.5.2) if you want this approach. * Register the **packages.microsoft.com** repo as described below to install the MRO distribution: microsoft-r-open-mro and microsoft-r-open-mkl. * See the installation sections below for how to install MRO. * You should have a tool for running T-SQL commands. * You can use [Azure Data Studio](../azure-data-studio/download-azure-data-studio.md), a free database tool that runs on Linux, Windows, and macOS. ## Package list On an internet-connected device, packages are downloaded and installed independently of the database engine using the package installer for each operating system. The following table describes all available packages, but for R and Python, you specify packages that provide either the full feature installation or the minimum feature installation. Available installation packages: | Package name | Applies-to | Description | |--------------|----------|-------------| |mssql-server-extensibility | All | Extensibility framework used to run Python and R. | | microsoft-openmpi | Python, R | Message passing interface used by the Rev* libraries for parallelization on Linux. | | mssql-mlservices-python | Python | Open-source distribution of Anaconda and Python. | |mssql-mlservices-mlm-py | Python | *Full install*. Provides revoscalepy, microsoftml, pre-trained models for image featurization and text sentiment analysis.| |mssql-mlservices-packages-py | Python | *Minimum install*. Provides revoscalepy and microsoftml.
Excludes pre-trained models. | | [microsoft-r-open*](#mro) | R | Open-source distribution of R, composed of three packages. | |mssql-mlservices-mlm-r | R | *Full install*. Provides: RevoScaleR, MicrosoftML, sqlRUtils, olapR, pre-trained models for image featurization and text sentiment analysis.| |mssql-mlservices-packages-r | R | *Minimum install*. Provides RevoScaleR, sqlRUtils, MicrosoftML, olapR.
Excludes pre-trained models. | ## Install on RHEL Follow the steps below to install SQL Server Machine Learning Services on Red Hat Enterprise Linux (RHEL). ### Install MRO on RHEL The following commands register the repository providing MRO. Post-registration, the commands for installing other R packages, such as mssql-mlservices-mml-r, will automatically include MRO as a package dependency. ```bash # Import the Microsoft repository key sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc # Set the location of the package repo at the "prod" directory # The following command is for version 8.x # To get the version for 6.x or 7.x, replace 8 with 6 or 7, respectively. rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm # Update packages on your system (optional) yum update ``` Installation Options for Python and R: * Install language support based on your requirements (single or multiple languages). * The *full installation* provides all available features including pre-trained machine learning models. * The *minimal installation* excludes the models but still has all of the functionality. > [!Tip] > If possible, run `yum clean all` to refresh packages on the system prior to installation. ### Full installation Includes: * Open-source Python * Open-source R * Extensibility framework * Microsoft-openmpi * Extensions (Python, R) * Machine learning libraries * Pre-Trained models for Python and R ```bash # Install as root or sudo # Add everything (all R, Python) # Be sure to include -9.4.7* in mlsservices package names sudo yum install mssql-mlservices-mlm-py-9.4.7* sudo yum install mssql-mlservices-mlm-r-9.4.7* ``` ### Minimum installation Includes: * Open-source Python * Open-source R * Extensibility framework * Microsoft-openmpi * Core Revo* libraries * Machine learning libraries ```bash # Install as root or sudo # Minimum install of R, Python extensions # Be sure to include -9.4.6* in mlsservices package names sudo yum install mssql-mlservices-packages-py-9.4.7* sudo yum install mssql-mlservices-packages-r-9.4.7* ``` ## Install on Ubuntu Follow the steps below to install SQL Server Machine Learning Services on Ubuntu. ### Install MRO on Ubuntu The following commands register the repository providing MRO. Post-registration, the commands for installing other R packages, such as mssql-mlservices-mml-r, will automatically include MRO as a package dependency. ```bash # Install as root sudo su # Optionally, if your system does not have the https apt transport option apt-get install apt-transport-https # Set the location of the package repo the "prod" directory containing the distribution. # This example specifies 20.04. Replace with 16.04 or 14.04 if you want those versions. wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb # Register the repo dpkg -i packages-microsoft-prod.deb # Update packages on your system (required), including MRO installation sudo apt-get update ``` Installation Options for Python and R: * Install language support based on your requirements (single or multiple languages). * The *full installation* provides all available features the including pre-trained machine learning models. * The *minimal installation* excludes the models but still has all of the functionality. > [!Tip] > If possible, run `apt-get update` to refresh packages on the system prior to installation. ### Full installation Includes: * Open-source Python * Open-source R * Extensibility framework * Microsoft-openmpi * Python extensions * R extensions * Machine learning libraries * Pre-trained models for Python and R ```bash # Install as root or sudo # Add everything (all R, Python) # There is no asterisk in this full install sudo apt-get install mssql-mlservices-mlm-py sudo apt-get install mssql-mlservices-mlm-r ``` ### Minimum installation Includes: * Open-source Python * Open-source R * Extensibility framework * Microsoft-openmpi * Core Revo* libraries * Machine learning libraries ```bash # Install as root or sudo # Minimum install of R, Python # No asterisk sudo apt-get install mssql-mlservices-packages-py sudo apt-get install mssql-mlservices-packages-r ``` ## Install on SLES Follow the steps below to install SQL Server Machine Learning Services on SUSE Linux Enterprise Server (SLES). ### Install MRO on SLES The following commands register the repository providing MRO. Post-registration, the commands for installing other R packages, such as mssql-mlservices-mml-r, will automatically include MRO as a package dependency. ```bash # Install as root sudo su # Set the location of the package repo at the "prod" directory containing the distribution # This example is for SLES12 zypper ar -f https://packages.microsoft.com/sles/12/prod packages-microsoft-com # Update packages on your system (optional) zypper update ``` Installation Options for Python and R: * Install language support based on your requirements (single or multiple languages). * The *full installation* provides all available features the including pre-trained machine learning models. * The *minimal installation* excludes the models but still has all of the functionality. ### Full installation Includes: * Open-source Python * Open-source R * Extensibility framework * Microsoft-openmpi * Extensions for Python and R * Machine learning libraries * Pre-trained models for Python and R ```bash # Install as root or sudo # Add everything (all R, Python) sudo zypper install mssql-mlservices-mlm-py sudo zypper install mssql-mlservices-mlm-r ``` ### Minimum installation Includes: * Open-source Python * Open-source R * Extensibility framework * Microsoft-openmpi * Core Revo* libraries * Machine learning libraries ```bash # Install as root or sudo # Minimum install of R, Python extensions sudo zypper install mssql-mlservices-packages-py sudo zypper install mssql-mlservices-packages-r ``` ## Post-install config (required) Additional configuration is primarily through the [mssql-conf tool](sql-server-linux-configure-mssql-conf.md). 1. After the package installation finishes, run mssql-conf setup and follow the prompts to set the SA password and choose your edition. Perform this step only if you have not configured SQL Server on Linux yet. ```bash sudo /opt/mssql/bin/mssql-conf setup ``` 2. Accept the licensing agreements for open-source Python and R extensions. Use the following command: ```bash # Run as SUDO or root # Use set + EULA sudo /opt/mssql/bin/mssql-conf set EULA accepteulaml Y ``` Setup detects the mssql-mlservices packages and prompts for EULA acceptance (if not previously accepted) when `mssql-conf setup` is run. For more information about EULA parameters, see [Configure SQL Server with the mssql-conf tool](sql-server-linux-configure-mssql-conf.md#mlservices-eula). 3. Enable outbound network access. Outbound network access is disabled by default. To enable outbound requests, set the "outboundnetworkaccess" Boolean property using the mssql-conf tool. For more information, see [Configure SQL Server on Linux with mssql-conf](sql-server-linux-configure-mssql-conf.md#mlservices-outbound-access). ```bash # Run as SUDO or root # Enable outbound requests over the network sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1 ``` 4. For R feature integration only, set the **MKL_CBWR** environment variable to [ensure consistent output](https://software.intel.com/articles/introduction-to-the-conditional-numerical-reproducibility-cnr) from Intel Math Kernel Library (MKL) calculations. + Edit or create a file `.bash_profile` in your user home directory, adding the line `export MKL_CBWR="AUTO"` to the file. + Execute this file by typing `source .bash_profile` at a bash command prompt. 5. Restart the SQL Server Launchpad service and the database engine instance to read the updated values from the INI file. A notification message is displayed when an extensibility-related setting is modified. ```bash systemctl restart mssql-launchpadd systemctl restart mssql-server.service ``` 6. Enable external script execution using Azure Data Studio or another tool like SQL Server Management Studio (Windows only) that runs Transact-SQL. ```sql EXEC sp_configure 'external scripts enabled', 1 RECONFIGURE WITH OVERRIDE ``` 7. Restart the Launchpad service again. ## Verify installation R libraries (MicrosoftML, RevoScaleR, and others) can be found at `/opt/mssql/mlservices/libraries/RServer`. Python libraries (microsoftml and revoscalepy) can be found at `/opt/mssql/mlservices/libraries/PythonServer`. To validate installation: * Run a T-SQL script that executes a system stored procedure invoking Python or R using a query tool. * Execute the following SQL command to test R execution in SQL Server. Errors? Try a service restart, `sudo systemctl restart mssql-server.service`. ```sql EXEC sp_execute_external_script @language =N'R', @script=N' OutputDataSet <- InputDataSet', @input_data_1 =N'SELECT 1 AS hello' WITH RESULT SETS (([hello] int not null)); GO ``` * Execute the following SQL command to test Python execution in SQL Server. ```sql EXEC sp_execute_external_script @language =N'Python', @script=N' OutputDataSet = InputDataSet; ', @input_data_1 =N'SELECT 1 AS hello' WITH RESULT SETS (([hello] int not null)); GO ``` ## Unattended installation Using the [unattended install](sql-server-linux-setup.md#unattended) for the Database Engine, add the packages for mssql-mlservices and EULAs. Use one of the mlservices-specific EULA parameters for the open-source R and Python distributions: ```bash sudo /opt/mssql/bin/mssql-conf setup accept-eula-ml ``` The complete EULA is documented at [Configure SQL Server on Linux with the mssql-conf tool](sql-server-linux-configure-mssql-conf.md#mlservices-eula). ## Offline installation Follow the [Offline installation](sql-server-linux-setup.md#offline) instructions for steps on installing the packages. Find your download site, and then download specific packages using the package list below. > [!Tip] > Several of the package management tools provide commands that can help you determine package dependencies. For yum, use `sudo yum deplist [package]`. For Ubuntu, use `sudo apt-get install --reinstall --download-only [package name]` followed by `dpkg -I [package name].deb`. ### Download site Download packages from [https://packages.microsoft.com/](https://packages.microsoft.com/). All of the mlservices packages for Python and R are colocated with database engine package. Base version for the mlservices packages is 9.4.6. Recall that the microsoft-r-open packages are in a [different repository](#mro). ### RHEL/8 paths |Package|Download location| |--|----| | mssql/mlservices packages | [https://packages.microsoft.com/rhel/8/mssql-server-2019/](https://packages.microsoft.com/rhel/8/mssql-server-2019/) | | microsoft-r-open packages | [https://packages.microsoft.com/rhel/8/prod/](https://packages.microsoft.com/rhel/8/prod/) | ### Ubuntu/20.04 paths |Package|Download location| |--|----| | mssql/mlservices packages | [https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019/pool/main/m/](https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019/pool/main/m/) | | microsoft-r-open packages | [https://packages.microsoft.com/ubuntu/20.04/prod/pool/main/m/](https://packages.microsoft.com/ubuntu/20.04/prod/pool/main/m/) | ### SLES/12 paths |Package|Download location| |--|----| | mssql/mlservices packages | [https://packages.microsoft.com/sles/12/mssql-server-2019/](https://packages.microsoft.com/sles/12/mssql-server-2019/) | | microsoft-r-open packages | [https://packages.microsoft.com/sles/12/prod/](https://packages.microsoft.com/sles/12/prod/) | Select extensions you want to use and download the packages necessary for a specific language. The filenames include platform information in the suffix. ### Package list Depending on which extensions you want to use, download the packages necessary for a specific language. Exact filenames include platform information in the suffix, but the file names below should be close enough for you to determine which files to get. ``` # Core packages mssql-server-15.0.1000 mssql-server-extensibility-15.0.1000 # R microsoft-openmpi-3.0.0 microsoft-r-open-mkl-3.5.2 microsoft-r-open-mro-3.5.2 mssql-mlservices-packages-r-9.4.7.64 mssql-mlservices-mlm-r-9.4.7.64 # Python microsoft-openmpi-3.0.0 mssql-mlservices-python-9.4.7.64 mssql-mlservices-packages-py-9.4.7.64 mssql-mlservices-mlm-py-9.4.7.64 ``` ## Next steps Python developers can learn how to use Python with SQL Server by following these tutorials: + [Python tutorial: Predict ski rental with linear regression in SQL Server Machine Learning Services](../machine-learning/tutorials/python-ski-rental-linear-regression-deploy-model.md) + [Python tutorial: Categorizing customers using k-means clustering with SQL Server Machine Learning Services](../machine-learning/tutorials/python-clustering-model.md) R developers can get started with some simple examples, and learn the basics of how R works with SQL Server. For your next step, see the following links: + [Quickstart: Run R in T-SQL](../machine-learning/tutorials/quickstart-r-create-script.md) + [Tutorial: In-database analytics for R developers](../machine-learning/tutorials/r-taxi-classification-introduction.md)