NAME
PAR::Repository::DBM - DBM tools for PAR::Repository
SYNOPSIS
use PAR::Repository;
DESCRIPTION
This module is for internal use only. It contains code for accessing the DBM files of a PAR repository.
EXPORT
None.
GLOBALS
This package has three constants:
MODULES_DBM_FILE, SYMLINKS_DBM_FILE, and SCRIPTS_DBM_FILE. They are accessible via PAR::Repository::DBM::..._DBM_FILE
. They indicate the file names of the DBM databases.
DATABASE STRUCTURE
This section outlines the structure of the DBM::Deep database files used by PAR::Repository.
If you need to care about this, you should be a PAR::Repository developer.
MODULES-DISTS DBM
The DBM file is a hash at top level.
It associates namespaces (keys) with a number of file names and versions. The values of the top level hash are hashes again. These contain file names as keys and corresponding versions as values.
Example:
{
'Math::Symbolic::Derivative' => {
'Math-Symbolic-0.502-x86_64-linux-gnu-thread-multi-5.8.7.par' => '0.502',
'Math-Symbolic-0.200-x86_64-linux-gnu-thread-multi-5.8.6.par' => '0.200',
},
}
This example means that the Math::Symbolic::Derivative
module can be found in the two listed distribution files in the repository with the listed versions. Note that the distribution version needs not be the same as the module version. The module version is the one separately indicated.
SYMLINKS DBM
The DBM file is a hash at top level.
It associates symlinks (keys) with a number of actual distribution files. The values of the top level hash are arrays of distribution file names. Note that unlike the modules dbm, filenames always include in-repository paths.
Example: (with some extra linebreaks to keep the text width down)
{
'x86_64-linux-gnu-thread-multi/5.8.7/Math-Symbolic-0.502-
x86_64-linux-gnu-thread-multi-5.8.7.par'
=> [
'any_arch/5.8.7/Math-Symbolic-0.502-any_arch-5.8.7.par',
'x86_64-linux-gnu-thread-multi/any_version/
Math-Symbolic-0.502-x86_64-linux-gnu-thread
-multi-any_version.par',
'any_arch/any_version/Math-Symbolic-0.502-
any_arch-any_version.par'
],
}
SCRIPTS-DISTS DBM
This DBM file is a hash at top level. It associates script (executable) names with distributions much like the modules_dists.dbm
file.
Example:
{
'parrepo' => {
'PAR-Repository-0.03-x86_64-any_arch-5.8.7.par' => '0.02',
'PAR-Repository-0.02-x86_64-any_arch-any_version.par' => '0.01',
},
}
METHODS
Following is a list of class and instance methods. (Instance methods until otherwise mentioned.)
There is no PAR::Repository::DBM
object. PAR::Repository inherits from this class.
modules_dbm
Opens the modules_dists.dbm.zip file in the repository and returns a tied hash reference to that file. Second return value is the file name.
If the file does not exist, it returns the empty list.
You should know what you are doing when you use this method.
symlinks_dbm
Opens the symlinks.dbm.zip file in the repository and returns a tied hash reference to that file. Second return value is the file name.
If the file does not exist, it returns the empty list.
You should know what you are doing when you use this method.
scripts_dbm
Opens the scripts_dists.dbm.zip file in the repository and returns a tied hash reference to that file. Second return value is the file name.
If the file does not exist, it returns the empty list.
You should know what you are doing when you use this method.
close_modules_dbm
Closes the modules_dists.dbm
file committing any changes and then zips it back into modules_dists.dbm.zip
.
This is called when the object is destroyed.
close_symlinks_dbm
The same as close_modules_dbm()
but for the file symlinks.dbm.zip
.
Also called on object destruction.
close_scripts_dbm
Closes the scripts_dists.dbm
file committing any changes and then zips it back into scripts_dists.dbm.zip
.
This is called when the object is destroyed.
_open_dbm
Opens the zipped dbm file given as first argument.
This is only for internal use.
AUTHOR
Steffen Müller, <smueller@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2006 by Steffen Müller
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.6 or, at your option, any later version of Perl 5 you may have available.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 372:
Non-ASCII character seen before =encoding in 'Müller,'. Assuming UTF-8