At this time Managed Distributions are only available to Enterprise tier members.
The ActiveState Managed Distribution is a complete runtime environment (with installers) for all the OS platforms you need to deploy on. It is fully managed and maintained by ActiveState on behalf of the customer, ensuring the open-source components used are free of bugs and vulnerabilities. ActiveState’s expertise in legacy and emerging language tech stacks will help save valuable engineering time, that can then be spent on other value-producing tasks.
Managed Distributions use “dependency vendoring”, a strategy that checks third-party software source code directly into your product’s codebase before adopting dependencies into your source control system (rather than relying on a package manager to install dependencies on demand).
After identifying a vulnerability, your Managed Distribution
To find out more about Managed Distributions see the following
The process for creating a Managed Distribution from a new project is outlined below.
A note about Python package naming conventions
This process can save time and avoid miscommunications that can arise in email exchanges and will allow us to see and assess which packages your project needs.
After signing in to your ActiveState account go to your organization’s page and click the +Project button. Follow the steps here to create a new project.
Under the Configuration tab for your new project, use the interface to select your packages.
To add package(s) that are not currently on the Platform use the Import From File feature on your project’s Configuration tab. This will bring up the prompt shown below. Copy your requirements into the field provided and click Import to finish.
Managed Distributions allow you to request packages and versions which are not yet available on the Platform (these requests may result in an expected error message). If you are requesting packages or versions that are not currently available on the Platform you will receive an “Unable to Resolve Dependencies” message. This message can be ignored as this will be resolved during the build of your Managed Distribution.
The Platform allows you to choose a specific version– or range of versions– for your packages. The Auto option is selected by default, which allows the Platform to automatically select compatible package versions and dependencies.
If your testing or production environment requires a specific version of a package, ensure it is selected from the list. If the version is not on the list, please let us know using the methods described later in this document.
When you are satisfied with your selections click Save Changes Anyway.
If you have selected packages or versions that are not currently available on the Platform or require dependencies that are not currently available to build, your project’s dependencies will fail to resolve. This is to be expected and will be reviewed by our engineering team.
After saving the list of packages on the Configuration tab, let us know that you would like us to apply these changes to your Managed Distribution. Send an email to enterprise-support@activestate.com and include the link to the project in your message (copied from your web browser). We will work to resolve all dependencies and notify you when your Managed Distribution build is complete.
Our build engineering team will review your build and requirements, identifying any packages or issues that need specific attention. These will be summarized if needed and suggestions will be made to resolve them. In most cases, a short meeting will be scheduled to discuss these recommendations.
The first step to requesting a new package in an ActiveState Managed Distribution is to find the correct distribution name of the package. Some special considerations must be made for Python packages. The distribution name is the name of the package as it is listed in the package index. The central package index for Python is PyPi, and all Python packages on the ActiveState Platform mirror the distribution names on PyPi.
The name of a Python package listed on a package index (distribution name) is not necessarily the name you use to import the package. The distribution name is not the same as the import name. For example, you can use the pip package manager (which pulls packages from the PyPi index) to install the package with the distribution name “mysql-python”:
pip install mysql-python
When you try to import this package into your Python project you will get an error.
import mysql-python -> package not found error
import mySqlDb -> correct import
This can create confusion because some import names will actually be distribution names for other packages. Looking at your import statements alone it is impossible to determine which packages you actually need to provide ActiveState. If you used ActiveState runtimes during your development process this is not an issue as the correct distribution names will be listed in your project.
If you used pip or conda for development, generate a requirements.txt
file and use that to identify the distribution names of the package you provide to ActiveState.
Updating your ActiveState Managed Distribution to include new packages or versions can be done by creating and submitting a change request. The easiest and fastest way to capture your change request is to:
This can save time and avoid miscommunications that can arise in email exchanges, and will allow us to see exactly which changes you have made by examining the project history. Before making changes to a Python project please see our Note about Python package naming.
Create a fork of your Managed Distribution by going to your current distribution and clicking the Fork It button. Place the fork in the same organization as the current Managed Distribution and add the postfix “-Update-mm/dd/yy” to the default name to identify the change request. This fork will now be user changeable.
Managed Distributions allow you to add packages and versions which are not available on the Platform yet.
You can ignore the “Unable to Resolve Dependencies” message as this is expected, particularly when requesting packages that are not currently on the Platform.
When you are satisfied with your changes, leave a message for our team in the field under “Save your changes?” and click Save Changes Anyway. If you need more than 100 characters, make your changes in batches (in separate commits) and write a message for each commit.
All changes will be available for each commit in the distribution’s History tab. Using this, we can verify that the correct changes are made to the managed distribution.
If you have made a change that you are not happy with, simply update the fork with the correct information and save a new commit. We will make the final changes based on the state of your project at the latest commit.
When you are satisfied with the list of packages on the Configuration tab, let us know that you would like us to apply these changes to your build.
Send an email to enterprisesupport@activestate.com and include the link to your forked distribution in your message (copied from your web browser).
An important part of requesting a new package in an ActiveState Managed Distribution is to find the correct distribution name of the package, this is particularly important for Python packages.
The distribution name is the name of the package as it is listed in the package index. The central package index for Python is PyPi, and all Python packages on the ActiveState platform mirror the distribution names on PyPi.
The name of a Python package listed on a package index (distribution name) is not necessarily the name you use to import the package. The distribution name is not the same as the import name. . For example, you can use the pip package manager (which pulls packages from the PyPi index) to install the package with the distribution name “mysql-python”:
pip install mysql-python
When you try to import this package into your Python project you will get an error.
import mysql-python -> package not found error
import mySqlDb -> correct import
This can create confusion because some import names will actually be distribution names for other packages. Looking at your import statements alone, it is impossible to determine which packages you actually need to provide ActiveState. If you used ActiveState runtimes during your development process this is not an issue as the correct distribution names will be listed in your project.
If you used pip or Conda for development, generate a requirements.txt
file and use that to identify the distribution names of the packages provided to ActiveState.