On Fri, 20 Jan 2017, John Walker wrote:
> It reads the data records, ignoring any indexes, and creates a new
> database from scratch. While reading the data records, it discards
> those that fail basic sanity checks.
I'm new to rpm internals. When you say it reads the data records, which data records
do you mean? Records from the berkley database named "Packages?" Records from several
of the databases in the rpm database directory? Something else entirely?
Records from all files in the berkley database. Most ISAMs
(indexed sequential access method), keep the raw data records in a
simple sequential format. While interrupting updates may corrupt the
indexes, the data records are a dirt simple format like a text file
or psacct data. In other database formats, it is possible to read the
database files sequentially (using read(2), *not* using the db access
libraries), extracting raw records which are tagged in each block for
extraction independent of the indexing.
I feel like I'm misunderstanding something here, because if a rebuild must be able to
read records from the current database, it wouldn't do much good if the current database
is unreadable, however, I have found that rpm --rebuilddb does work when the
By "unreadable" do you mean that copying the database files with 'cp'
fails with an ioerr? Or just that libdbX is unable to open and/or
read the database files?
--
Stuart D. Gathman <stuart@xxxxxxxxxxx>
"Confutatis maledictis, flamis acribus addictis" - background song for
a Microsoft sponsored "Where do you want to go from here?" commercial.
_______________________________________________
Rpm-list mailing list
Rpm-list@xxxxxxxxxxxxx
http://lists.rpm.org/mailman/listinfo/rpm-list