Conary:Collection Taxonomy
From rPath Wiki
| Conary Developer Community | Go to the community main page |
The following information describes the various collection mechanisms which Conary uses:
- Repositories contain troves and files
- Groups contain references to troves (anything except files)
- A group, package, component, or fileset is a trove. A file is not a trove.
- packages contain references to components
- components contain references to files.
- filesets contain references to files
Examples:
-
group-c-develis a group -
MAKEDEVis a package -
MAKEDEV:sourcesis a component -
devis a package (note: built fromMAKEDEV:sources) -
dev:runtimeis a component -
tmpwatchis a package -
tmpwatch:runtimeis a component -
fileset-minbootis a fileset
Files
- A file is content, permissions, mtime, flags, EAs, ACLs (analog of an inode)
- A file reference is path, fileId, version (analog of a directory entry in a versioning filesystem)
In respect to files, a repository is like a Unix filesystem with versioning added; it contains a set of files (inodes) plus a structured set of troves referencing the files (directory structure).
Repositories
A repository is a collection of versions of troves and files with the following properties:
- Self-referential integrity: Every reference within a repository to a version in that repository is satisfied within that repository.
- Nothing can be erased from a repository
A cache or mirror has similar functionality to a repository from the standpoint of installing software, but it has key differences:
- It does not necessarily contain every version of every item in it
- It may represent more than one repository
- Items may be erased
A mirror is populated programatically (replicating a whole repository, or a whole branch of a repository, or some other rule); a cache is populated as it is accessed. Actually, they are probably the same thing, configured differently; there might be many gradations of configuration between pure cache and pure mirror.
Neither exists at this time.
Databases
A database is specific to an individually-installed system, and contains the information about the system that cannot be inferred from the installed filesystem
- state of the locally-installed troves (including file references, but not files, except for config files)
- various indexes
The label local@local:LOCAL is reserved to mean the local database and filesystem of an installed system.
Summary
| Repository | Cache/Mirror | Installed System |
| All versions of troves and files | of multiple repositories | database |
| Cannot erase | demand/policy |
