mirror of https://github.com/fspc/dswim
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
5.0 KiB
115 lines
5.0 KiB
24 years ago
|
Database Structure
|
||
|
|
||
|
note: what's below was written for readability, not to
|
||
|
indicate complex structures, all databases are normal hashes. stripped
|
||
|
implies that the control field was removed, but the data afterwards kept.
|
||
|
|
||
|
Structure of statusindex.deb
|
||
|
|
||
|
1). Initially made in SWIM::DB_Init::database
|
||
|
2). Updated in SWIM::DB::db
|
||
|
3). $sb(packagename) = qw(packagename_version group priority
|
||
|
status(separated with :));
|
||
|
All fields stripped
|
||
|
|
||
|
Structure of nstatusindex-arch-dists.deb
|
||
|
|
||
|
1). Initally made in SWIM::NDB_Init::not_installed
|
||
|
2). Updated in SWIM::NDB::update_packages_ndb
|
||
|
3). $nsb(packagename) = qw(packagename_version group priority);
|
||
|
$nsb{"/."} = qw(packagename_version ...);
|
||
|
All fields stripped
|
||
|
|
||
|
|
||
|
Structure of packages.deb
|
||
|
|
||
|
1). Initally made in SWIM::DB_Init::database
|
||
|
2). Updated in SWIM::DB::db
|
||
|
3). %db = [ @name => (packagename packagename_version ...),
|
||
|
@Tdescriptions => (packagename_version format_info ...),
|
||
|
@conf => (packagename_versionCONF
|
||
|
every_indented_line_after_Conffiles ...),
|
||
|
@REPLACE => (packagename_version(with PRE, DEP, REC, SUG,
|
||
|
CON, PRO, or REP appended)
|
||
|
package_relationship_field (unstripped) ...)
|
||
|
]
|
||
|
|
||
|
Structure of npackages-arch-dists.deb
|
||
|
|
||
|
1). Initially made in SWIM::NDB_Init::not_installed
|
||
|
2). Updated in SWIM::NDB::update_packages_ndb
|
||
|
3). %ndb = [ @name => (packagename packagename_version ...),
|
||
|
@Tdescriptions => (packagename_version format_info ...),
|
||
|
@conf => (empty),
|
||
|
@REPLACE => (packagename_version(with PRE, DEP, REC, SUG,
|
||
|
CON, PRO, REP, MD, and FN appended)
|
||
|
package_relationship_field (unstripped) ...),
|
||
|
@FILENAME => (packagename_versionFN Filename_field(stripped) ...),
|
||
|
@MD5SUM => (packagename_versionMD
|
||
|
package_MD5_checksum(stripped) ...),
|
||
|
@revision => (packagename_versionMD(this comes from the
|
||
|
Filename field) "packagename_versionMD REVISION"
|
||
|
(this time the version comes from the Version
|
||
|
field) ...)
|
||
|
]
|
||
|
|
||
|
The revision field is unusual and occurs in the experimental distribution.
|
||
|
The hash is used by -p so that the version can be figured out. (check
|
||
|
"revision: situation" in SWIM::Deb).
|
||
|
|
||
|
Structure of groupindex.deb
|
||
|
|
||
|
1). Initally made in SWIM::DB_Init::database
|
||
|
2). Updated in SWIM::DB::db
|
||
|
3). $gb(group) = qw(packagenames ......) group stripped from Section:
|
||
|
|
||
|
Structure of ngroupindex-arch-dists.deb
|
||
|
|
||
|
1). Initially made in SWIM::NDB_Init::not_installed
|
||
|
2). Updated in SWIM::NDB::update_packages_ndb
|
||
|
3). $ngb = qw(packagenames ......) group stripped from Section:
|
||
|
|
||
|
Structure of searchindex.deb and dirindex.deb
|
||
|
|
||
|
1). When SWIM::DB_Init::database finishes SWIM::DB_Init::md begins.
|
||
|
This writes @dpackage to transfer.deb, which is processed by either
|
||
|
fastswim (filedir -> big and long) or imswim (which is like longswim,
|
||
|
which produces one large file - filedir.deb), and slowswim (big and
|
||
|
long) into the two files big.debian and long.debian and then the
|
||
|
databases are finished by SWIM::MD::process_md().
|
||
|
2). Rebuilt by SWIM::DB::rebuildflatdb
|
||
|
3). searchindex.deb = /path/filename\n ...... (1 package)
|
||
|
dirindex.deb = /path/dir\n ...... (> 1 package)
|
||
|
|
||
|
Structure of nsearchindex-arch-dists.deb and ndirindex-arch-dists.deb
|
||
|
|
||
|
1). After SWIM::NDB_Init::initndb runs SWIM::NDB_Init::not_installed,
|
||
|
SWIM::NDB_Init::nmd runs longswim which produces
|
||
|
filedir.deb, then initndb runs slowswim producing big.debian and
|
||
|
long.debian. Then the database(s) are finished by
|
||
|
SWIM::MD::prcess_md.
|
||
|
2).
|
||
|
3). nsearchindex-arch-dists.deb = /path/filename\n ...... (1 package)
|
||
|
ndirindex-arch-dists.deb = /path/dir\n ...... (> 1 package)
|
||
|
Note: nsearch* includes elements which pertain to only one
|
||
|
package, this generally implies files, not directories, however
|
||
|
the ni often has more than one package sharing a file, so its
|
||
|
placed into ndir* (this would be rare with an i system).
|
||
|
SWIM::Search::search processes these two files differently,
|
||
|
which is more effecient for the much larger nsearch*, for this
|
||
|
reason you can't merge the two databases together.
|
||
|
|
||
|
Structure of ncontentsindex-arch-dists.deb.
|
||
|
|
||
|
1). A compressed Contents database, no alterations (originally the headers
|
||
|
were removed, but this is a waste of time.) If the FDB (flat database
|
||
|
option if given) SWIM::Library::compress_contents is called from
|
||
|
initndb(), otherwise longswim called from SWIM::NDB_Init::nmd
|
||
|
copies and compresses. The longswim method compresses, but
|
||
|
compress_contents does a cp (not -a). In both cases the header
|
||
|
removal has been depreciated. The important thing is that the utime
|
||
|
remains the same.
|
||
|
2). The new Contents database is copied (utime) and renamed via
|
||
|
compress_contents called from SWIM::NDB.
|
||
|
3). Contents format
|