Version: Next

# Manage packages

tip

• For the latest and complete information about Pulsar admin, including commands, flags, descriptions, and more, see Pulsar admin doc.

• For the latest and complete information about REST API, including parameters, responses, samples, and more, see REST API doc.

• For the latest and complete information about Java admin API, including classes, methods, descriptions, and more, see Java admin API doc.

Package managers or package-management systems automatically manage packages in a consistent manner. These tools simplify the installation tasks, upgrade process, and deletion operations for users. A package is a minimal unit that a package manager deals with. In Pulsar, packages are organized at the tenant-level and namespace-level to manage Pulsar Functions and Pulsar IO connectors (i.e., source and sink).

## What is a package?​

A package is a set of elements that the user would like to reuse in later operations. In Pulsar, a package can be a group of functions, sources, and sinks. You can define a package according to your needs.

The package management system in Pulsar stores the data and metadata of each package (as shown in the table below) and tracks the package versions.

descriptionThe description of the package.
contactThe contact information of a package. For example, an email address of the developer team.
create_timeThe time when the package is created.
modification_timeThe time when the package is lastly modified.
propertiesA user-defined key/value map to store other information.

## How to use a package​

Packages can efficiently use the same set of functions and IO connectors. For example, you can use the same function, source, and sink in multiple namespaces. The main steps are:

1. Create a package in the package manager by providing the following information: type, tenant, namespace, package name, and version.

ComponentDescription
typeSpecify one of the supported package types: function, sink and source.
tenantSpecify the tenant where you want to create the package.
namespaceSpecify the namespace where you want to create the package.
nameSpecify the complete name of the package, using the format <tenant>/<namespace>/<package name>.
versionSpecify the version of the package using the format MajorVerion.MinorVersion in numerals.

The information you provide creates a URL for a package, in the format <type>://<tenant>/<namespace>/<package name>/<version>.

2. Upload the elements to the package, i.e., the functions, sources, and sinks that you want to use across namespaces.

3. Apply permissions to this package from various namespaces.

Now, you can use the elements you defined in the package by calling this package from within the package manager. The package manager locates it by the URL. For example,

sink://public/default/mysql-sink@1.0function://my-tenant/my-ns/my-function@0.1source://my-tenant/my-ns/mysql-cdc-source@2.3

## Package management in Pulsar​

You can use the command line tools, REST API, or the Java client to manage your package resources in Pulsar. More specifically, you can use these tools to upload, download, and delete a package, get the metadata and update the metadata of a package, get the versions of a package, and get all packages of a specific type under a namespace.

To use package management service, ensure that the package management service has been enabled in your cluster by setting the following properties in broker.conf.

note

Package management service is not enabled by default.

enablePackagesManagement=truepackagesManagementStorageProvider=org.apache.pulsar.packages.management.storage.bookkeeper.BookKeeperPackagesStorageProviderpackagesReplicas=1packagesManagementLedgerRootPath=/ledgers

You can use the following commands to upload a package.

bin/pulsar-admin packages upload function://public/default/example@v0.1 --path package-file --description package-description

bin/pulsar-admin packages download function://public/default/example@v0.1 --path package-file

### Delete a package​

You can use the following commands to delete a package.

The following command deletes a package of version 0.1.

bin/pulsar-admin packages delete functions://public/default/example@v0.1

### Get the metadata of a package​

You can use the following commands to get the metadata of a package.

bin/pulsar-admin packages get-metadata function://public/default/test@v1

### Update the metadata of a package​

You can use the following commands to update the metadata of a package.

bin/pulsar-admin packages update-metadata function://public/default/example@v0.1 --description update-description

### List all versions of a package​

You can use the following commands to list all versions of a package.

bin/pulsar-admin packages list-versions type://tenant/namespace/packageName

### List all packages of a specific type under a namespace​

You can use the following commands to list all packages of a specific type under a namespace.

bin/pulsar-admin packages list --type function public/default