MacPorts tidak berfungsi setelah pemadaman listrik selama pembangunan (kesalahan I / O disk sqlite)

1

Saya sedang membangun paket di MacPorts pada Mac Mini ketika listrik padam. Sekarang apapun yang saya coba lakukan dalam MacPorts ( install, clean, selfupdate) hasil dalam kesalahan berikut:

sqlite error: disk I/O error (3850) while executing query: ATTACH DATABASE '/opt/local/var/macports/registry/registry.db' AS registry
    while executing
"registry::open $db_path"
    (procedure "mportinit" line 610)
    invoked from within
"mportinit ui_options global_options global_variations"
Error: /opt/local/bin/port: Failed to initialize MacPorts, sqlite error: disk I/O error (3850) while executing query: ATTACH DATABASE '/opt/local/var/macports/registry/registry.db' AS registry

Bagaimana saya bisa memperbaikinya?

Brian McCutchon
sumber
Saya akan memulihkan dari cadangan karena fie rusak dan file itu tergantung pada pro yang telah Anda instal dan tidak dapat direproduksi dari instalasi baru
Mark
@ Mark Saya tidak punya cadangan untuk mesin ini. Ada ide lain?
Brian McCutchon
Cara untuk menginstal ulang macports adalah dengan memiliki daftar port yang Anda instal dan kemudian ulang - untuk mendapatkan daftar pro yang Anda butuhkan db. Jadi tidak - anggap saja ini sebagai momen pembelajaran dan sadari Anda membutuhkan cadangan. Anda dapat menginstal ulang macport dari awal jika Anda tahu mana yang Anda butuhkan
Tandai
@ Mark Keduanya port list installeddan port -qv installedmenghasilkan kesalahan yang sama. Apakah ada cara untuk mendapatkan daftar port yang diinstal di luar macports?
Brian McCutchon
Tidak karena daftar itu disimpan dalam basis data yang rusak.
Mark

Jawaban:

0

Perbaikan untuk ini sebenarnya cukup sederhana, dan disebutkan dalam masalah MacPorts ini . Dari komentar tentang masalah ini oleh "pixilla @…":

$ cd /opt/local/var/macports/registry
$ ls registry.db-journal                                                                                                                                                                             
$ sudo sqlite3 registry.db
sqlite> .tables
sqlite> SELECT id FROM ports;
sqlite> .quit

Berdasarkan komentar lain oleh "ecronin @ ...", saya menyimpulkan bahwa, jika saya menjalankan portperintah apa pun sebagai root, itu akan diperbaiki secara otomatis dan menyelamatkan saya dari semua masalah ini. Tapi saya selalu lupa menggunakan sudo...

EDIT Tunggu, saya sudah menjalankan portperintah sudo. Aneh. Oh, well, setidaknya itu berfungsi sekarang.

Brian McCutchon
sumber
Hal yang sama terjadi pada saya. Matikan selama instalasi. Saya mendapatkan kesalahan sqlite langsung, tetapi tidak ada file jurnal. sqlite error: database disk image is malformed (11).
Andrew Backer