pkg sqlite error - Hilfe!

rakso

Well-Known Member
Hi zusammen,
ich habe ein blödes Problem, zu dem mir die google Treffer auch nicht weitergeholfen haben. Einer hat das "gelöst" durch eine Neuinstallation. Den Aufwand möchte ich mir hier gerne ersparen.



# pkg info
pkg: sqlite error while executing ALTER TABLE packages ADD licenselogic INTEGER NOT NULL DEFAULT(1); in file pkgdb.c:2407: no such table: packages

Der gleiche Fehler kommt auch bei pkg backup -r /var/backups/pkg.sql

Es geht also garnichtsmehr.
Und ich kann leider nicht sagen, wann/durch was das passiert ist.
Gestern habe ich freebsd-update gemacht, aber es ging davor auch schon nicht.

# freebsd-version -uk
11.1-RELEASE-p4
11.1-RELEASE-p6


Wie bekomme ich das weg?

Vielen Dank und Grüße!
 
Kannst du mal den Inhalt der Verzeichnisse zeigen? Verwendest du das FreeBSD Repo?
Code:
ls -l /var/db/pkg /var/backups
 
bitteschön: https://pastebin.com/tz8AefwW



root@nas2:~ # cat /etc/pkg/FreeBSD.conf
# $FreeBSD: releng/11.1/etc/pkg/FreeBSD.conf 320745 2017-07-06 17:22:33Z gjb $
#
# To disable this repository, instead of modifying or removing this file,
# create a /usr/local/etc/pkg/repos/FreeBSD.conf file:
#
# mkdir -p /usr/local/etc/pkg/repos
# echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf
#

FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
 
Zuerst Backup erstellen! Dann würde ich mal folgende Dateien vergleichen. Evtl. kannst du die Datei "pkg.sql.xz.1" wiederherstellen. Oben hast du ja die Datei "pkg.sql" versucht.
Code:
-rw-r--r--  1 root  wheel  4692402 Feb 15 06:22 pkg.sql
-rw-r--r--  1 root  wheel   885752 Feb  9 05:34 pkg.sql.xz.1
Die ".xz.1" musst du aber natürlich noch vorher entpacken. Daher eine Kopie erstellen und dann dort testen:
Code:
unxz pkg.sql.xz
Evtl. kann dir das Handbuch noch helfen [1]

[1] https://www.freebsd.org/doc/handbook/pkgng-intro.html
 
zum einen komme ich mit dem xz nicht klar, zum anderen besteht der fehler auch bei pkg backup ...


root@nas2:/var/backups # unxz pkg.sql.xz.6
unxz: pkg.sql.xz.6: Filename has an unknown suffix, skipping
root@nas2:/var/backups # pkg backup -r /var/backups/pkg.sql
pkg: sqlite error while executing ALTER TABLE packages ADD licenselogic INTEGER NOT NULL DEFAULT(1); in file pkgdb.c:2407: no such table: packages
 
Versuch folgendes: (in einem anderen Verzeichnis):
Code:
cp pkg.sql.xz.6 pkg.sql.xz
unxz pkg.sql.xz
 
das entpacken hat geklappt. dann schaut das unxz tatsächlich nach der endung... das ist ja bei unix eher ungewöhnlich.


root@nas2:/var/backups # mkdir tmp
root@nas2:/var/backups # cp pkg.sql.xz.6 tmp/pkg.sql.xz
root@nas2:/var/backups # cd tmp/
root@nas2:/var/backups/tmp # unxz pkg.sql.xz
root@nas2:/var/backups/tmp # pkg backup -r /var/backups/tmp/pkg.sql
pkg: sqlite error while executing ALTER TABLE packages ADD licenselogic INTEGER NOT NULL DEFAULT(1); in file pkgdb.c:2407: no such table: packages
 
Ich hab keine Idee mehr. Du kannst aber noch folgendes versuchen. Das ist dann aber der letzte Schritt und löscht dir alle Pakete und installiert sie wieder neu. Das ist der grosse Vorteil wegenüber Linux, da hier BASE und Ports getrennt sind. Zuerst wie immer ein Backup machen! Danach folgendes:

Eine Liste mit allen Paketen welche installiert worden sind:
Code:
pkg query -e %a=0 %n | sort > /root/pkg-installed.txt
Eine Liste mit allen Paketen erstellen (zur Sicherheit):
Code:
pkg query "%n" > /root/paketliste.txt > /root/pkg-all.txt
Versuchen mit pkg/pkg-static alles zu löschen:
Code:
pkg remove -af
pkg-static remove -af
Holzhammer auspacken:
Code:
rm -Rf /usr/local /usr/ports/ /var/db/ports/* /var/db/portsnap/* /var/db/pkg/*
Die Pakete wieder installieren:
Code:
pkg update -f
cat /root/pkg-installed.txt | xargs pkg install -y
Danach einfach noch die Konfigurationsdateien unter /usr/local/etc wiederherstellen (z.B. Samba - smb4.conf).
 
rob hat leider recht, da hier ziemlich grundlegen was zerschossen ist :(


root@nas2:/var/backups/tmp # pkg query -e %a=0 %n | sort > /root/pkg-installed.txt
pkg: sqlite error while executing ALTER TABLE packages ADD licenselogic INTEGER NOT NULL DEFAULT(1); in file pkgdb.c:2407: no such table: packages
root@nas2:/var/backups/tmp # pkg remove -af
pkg: sqlite error while executing ALTER TABLE packages ADD licenselogic INTEGER NOT NULL DEFAULT(1); in file pkgdb.c:2407: no such table: packages
 
Hmm,

versuch doch mal /var/db/pkg/local.sqlite zu löschen und dann pkg auszuführen - damit müsste die DB neu angelegt werden. Danach dann das Backup einspielen.

Rob
 
offenbar ist auch das backup kaputt?


root@nas2:/var/db/pkg # rm /var/db/pkg/local.sqlite
root@nas2:/var/db/pkg # pkg list
root@nas2:/var/db/pkg #

root@nas2:/var/db/pkg # pkg backup -r /var/backups/tmp/pkg.sql
Restoring database:
Restoring: 100%
root@nas2:/var/db/pkg # pkg list
pkg: sqlite error while executing ALTER TABLE packages ADD licenselogic INTEGER NOT NULL DEFAULT(1); in file pkgdb.c:2407: no such table: packages
 
habe jetzt die local.sqlite gelöscht, nun kann ich wieder ports installieren... jetzt dürften aber die alten dateien natürlich noch vorhanden sein ohne zuordnung zu einem port. kann man das wieder "in sync" bringen? ansonsten würde ich damit leben ... mit der zeit installiere ich ja eh wieder die gleichen.. allein durch unison sind nun 246 ports drin.
 
Schau mal in die Backup-Dateien, ob dort
Code:
CREATE TABLE packages
vorhanden ist.
Aktualisiere pkg auf die neueste Version und versuche nochmals den Weg übers Löschen der local.sqlite, Neuinitialisierung und Einspielen des Dumps. Vor und nach dem Einspielen bitte
Code:
pkg shell
aufrufen und den Befehl .tables absetzen - damit kannste dir die in der Sqlite-DB vorhandenen Tabellen auflisten lassen.

Dann Bugreport, falls nötig.

Rob
 
Zurück
Oben