4.1 KiB
Packages
A package is the unit of installation on a Fuchsia system.
Anatomy
To be added...
Working with packages
The majority of these instructions rely on the pm tool which is available
in //tools.
This document describes the various steps to build and install a package:
For more details about each step, see pm's help messages.
Build a package
To build a package:
-
Create the package ID file:
Note:
$PACKAGE_DIRis a staging directory where the package is built.pm -o $PACKAGE_DIR -n $PACKAGE_NAME initThis generates the package ID file implicitly as
$PACKAGE_DIR/meta/package. Set$PACKAGE_ID_FILEaccordingly for use in subsequent steps:export PACKAGE_ID_FILE=${PACKAGE_DIR}/meta/package$PACKAGE_ID_FILEwill contain the following data:{ "name": "<package name>", "version": "<package version>" } -
Create the manifest file,
$MANIFEST_FILE, that provides the path to the package ID file. Each line of a manifest file maps a single file that is contained in the package and is in the form ofdestination=sourcewhere:destinationis the path to the file in the final packagesourceis the path to the file on the host machine
The manifest file must include at least one line for the package ID file like this:
meta/package=<package ID file> -
Generate the package metadata archive:
pm -o $PACKAGE_DIR -m $MANIFEST_FILE buildThis creates the metadata archive at
$PACKAGE_DIR/meta.far. -
Create the package archive
$PACKAGE_ARCHIVE:pm -o $PACKAGE_DIR -m $MANIFEST_FILE archiveThis command creates the package archive implicitly as
$PACKAGE_DIR/$PACKAGE_NAME-0.far. Set$PACKAGE_ARCHIVEaccordingly for use in subsequent steps:export PACKAGE_ARCHIVE=${PACKAGE_DIR}/${PACKAGE_NAME}-0.farIf the contents of the package change, you need to re-run the
pm -o $PACKAGE_DIR -m $MANIFEST_FILE archivecommand.
You have successfully built a package. You are now ready to publish the package.
Publish a package
To publish a package:
-
Initialize a directory,
$REPO, that serves as a packages repository:pm newrepo -repo $REPOThis creates a directory structure named
$REPOthat is ready for publishing packages. -
Publish packages to the repository
$REPO:pm publish -a -r $REPO -f $PACKAGE_ARCHIVEpm publishparses$PACKAGE_ARCHIVEand publishes the package in the provided$REPOdirectory. If you run this command multiple times with different package archives,pm publishpublishes the packages to the same repository. New versions of a same package can be published using the same command.
You have successfully published a package. You are now ready to install a package.
Install a package
To install a package:
-
Start the package server:
pm serve -repo $REPOBy default, this starts an amber server on the host machine at port
8083. -
(On the target device) Add the new repository as an update source with
amberctl:amberctl add_repo_cfg -n $REPO -f http://$HOST_ADDRESS:8083/config.jsonIf the component is not already on the system,
amberctlinstalls the package. If the package already exists,amberctlinstalls any package updates.
You have successfully installed or updated the package. You are now ready to run a component from the installed package.
Run a component from an installed package
To run a component published in a package:
- (On the target device) Run:
Note: $COMPONENT_URI is in this form
fuchsia-pkg://${REPO}/${PACKAGE_NAME}#meta/<component name>.cmx.
run $COMPONENT_URI
You have successfully run a component from the installed package.