TODO:apk: Difference between revisions

From Alpine Linux
(→‎Plugable Layouts: Add example layouts)
Line 9: Line 9:


==Plugable Layouts==
==Plugable Layouts==
===Flat===
Existing layout with most binaries and libraries in common directories. Only a single version of a package may be installed and only one package providing a given file or facility may be installed.
===/pkg===
/pkg/apk-tools/3.0.0
/pkg/apk-tools/2.7.1
/pkg/apk-tools/default -> 3.0.0
Each package is installed in it's own versioned directory allowing different versions and of the same package and multiple packages which provide the same file to coexist and be selected between as needed.
===/app===
/app/webserver/20170406
/app/webserver/20170514
/app/webserver/production -> 20170406
/app/webserver/testing -> 20170514
A a complete set of packages and their dependencies needed to provide an application with a consistent environment for deployment. Generally specifies exact versions of every dependency and is updated as a unit.


==Manifests==
==Manifests==

Revision as of 02:06, 4 June 2017

TODO: apk

Documentation

  • Document current apk internals.
  • Define 'virtual', 'alternative', and their proper use.


Alternatives

Plugable Layouts

Flat

Existing layout with most binaries and libraries in common directories. Only a single version of a package may be installed and only one package providing a given file or facility may be installed.

/pkg

/pkg/apk-tools/3.0.0
/pkg/apk-tools/2.7.1
/pkg/apk-tools/default -> 3.0.0

Each package is installed in it's own versioned directory allowing different versions and of the same package and multiple packages which provide the same file to coexist and be selected between as needed.

/app

/app/webserver/20170406
/app/webserver/20170514
/app/webserver/production -> 20170406
/app/webserver/testing -> 20170514

A a complete set of packages and their dependencies needed to provide an application with a consistent environment for deployment. Generally specifies exact versions of every dependency and is updated as a unit.

Manifests

apk manifest [-v] (<pkg>|<.apk>)...

Generate a manifest of files contained within the specified package(s)/apk(s).

Current default format is: sumfunc:checksum path

With verbose flag: pkgname: sumfunc:checksum path

Proposed canonical format: pkg:arch/pkgname-pkgver\tmode\tuser:group\tsize\ttimestamp\tsumfunc:checksum\tpath

TODO Items:

  • Define a canonical default manifest format which contains all available metadata in a reliably parsable format.
  • Add ability to specify manifest format and fields in a manner similar to 'stat'.
  • Add ability to select a subset of files to display in a manner similar to tar. (i.e. 'etc/' or 'lib/*.so')
  • Add ability to generate manifest from a filesystem directory structure or path list.
  • (DONE - kaniini) Add ability to generate manifest for .apk file in addition to installed packages.

.apk Generator

apk gen --key-file=... --control-dir=... --data-dir=...

Generates a well-formed .apk from a key file and two filesystem directories -- one for the control portion and one for the data portion.

TODO Items:

  • Document current WIP (kaniini).
  • Add ability to use an archive as the source for control or data directories.
  • Add ability to use a pre-generated manifest as the source file list and provider of package's file meta-data.

pax Archive Tool

apk archive list -f file.apk [pattern list...]

apk archive extract -f file.apk [pattern list...]

apk archive create -f file.apk [file list...]

apk archive append -f file.apk [file list...]

Low-level tools to manipulate .apk archives directly.

TODO Items:

  • Define proper applet and command names.
  • Determine appropriate flags.
  • Provide ability to supply include/exclude file/pattern list on STDIN, on the command line, or listed in external files.