저는 페도라 31을 사용하고 있습니다. dnf를 사용하여 무언가를 설치하려고 하면 계속 오류가 발생합니다. 예를 들어 실행하면 sudo dnf install -y balena-etcher-electron
다음과 같이 표시됩니다.
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Traceback (most recent call last):
File "/usr/bin/dnf", line 58, in <module>
main.user_main(sys.argv[1:], exit_code=True)
File "/usr/lib/python3.7/site-packages/dnf/cli/main.py", line 191, in user_main
errcode = main(args)
File "/usr/lib/python3.7/site-packages/dnf/cli/main.py", line 65, in main
return _main(base, args, cli_class, option_parser_class)
File "/usr/lib/python3.7/site-packages/dnf/cli/main.py", line 98, in _main
return cli_run(cli, base)
File "/usr/lib/python3.7/site-packages/dnf/cli/main.py", line 122, in cli_run
ret = resolving(cli, base)
File "/usr/lib/python3.7/site-packages/dnf/cli/main.py", line 166, in resolving
base.do_transaction(display=displays)
File "/usr/lib/python3.7/site-packages/dnf/cli/cli.py", line 243, in do_transaction
tid = super(BaseCli, self).do_transaction(display)
File "/usr/lib/python3.7/site-packages/dnf/base.py", line 882, in do_transaction
tid = self._run_transaction(cb=cb)
File "/usr/lib/python3.7/site-packages/dnf/base.py", line 954, in _run_transaction
tid = self.history.beg(rpmdbv, using_pkgs, [], cmdline)
File "/usr/lib/python3.7/site-packages/dnf/db/history.py", line 456, in beg
int(misc.getloginuid())
File "/usr/lib64/python3.7/site-packages/libdnf/transaction.py", line 641, in beginTransaction
return _transaction.Swdb_beginTransaction(self, dtBegin, rpmdbVersionBegin, cmdline, userId)
RuntimeError: Step: database disk image is malformed in
INSERT INTO rpm VALUES (2560, 'balena-etcher-electron', 0, '1.5.76', '1', 'x86_64')
이 문제의 원인과 해결 방법은 무엇입니까?
답변1
dnf upgrade
설치된 패키지와 설치할 패키지, 또는 설치할 패키지 사이에 충돌이 있어서 실패하는 경우가 대부분 입니다. 불만을 제기하는 파일을 확인하고 rpm -qf TheOffendingFile
해당 파일과 함께 (현재) 패키지를 제공하십시오. 수행할 작업, 삭제, --exclude
업그레이드 시 어떤 충돌이 발생하는지 확인하세요(몇 가지를 제외해야 할 수도 있음). 서로 다른 아키텍처(예: x86_64 및 i686)에 대한 동일한 패키지 간의 충돌은 흔히 발생합니다.
손상된 데이터베이스는 다음을 수행할 수 있습니다.자주rpm --rebuilddb
데이터베이스 자체를 지속적으로 파괴하는 대신 복구하는 데 사용할 수 있습니다 .