Reinstalando apenas pacotes com arquivos ausentes ou corrompidos em um sistema que não está em execução?

2

1º. Agradecemos antecipadamente.

Isso é um pouco como # 216697: Reinstalando pacotes com arquivos ausentes / corrompidos exceto na situação dessa pessoa, após a recuperação, o sistema ainda funcionava. O meu não. Não é possível iniciar o X, não há rede, o systemd não tem todos os requisitos necessários para que os serviços não sejam iniciados, etc. etc. O sistema, para usar o termo técnico, é escolhido. (Fedora 26 i686)

O DNF tem um comando --installroot e, se eu inicializar em um sistema operacional LiveUSB, posso montar minha partição do sistema de arquivos raiz e fazer dnf --installroot = / run / media / liveuser / sda6 / repolist e lista todos os meus repositórios configurados. Eu ainda tento dnf --installroot = / run / media / liveuser / sda6 / list --all e centenas de nomes de pacotes passam. Estou assumindo que o DNF db ou rpmdb ou o que quer que (eu realmente não sei, desculpe) pareça intacto.

Enquanto o DNF permite que eu trabalhe com o sistema não-em execução, não consigo descobrir como usar o RPM -V em um sistema não-em execução. Parece lidar apenas com o sistema operacional ao vivo. Eu suponho que eu posso chroot enganá-lo, mas não quero arriscar nada, por isso estou perguntando e googling loucamente, tentando encontrar uma solução para apenas verificar a instalação e apenas forçar a reinstalação dos pacotes corrompidos, mas estou chegando vazio .

Como último recurso, vou usar o dnf --installroot = {path} reinstalar * , mas isso terá muitas horas e muitos gigabytes serão descarregados desnecessariamente. Pelo menos isso pode acontecer sem supervisão. Alternativamente, eu poderia continuar usando o liveOS e esperar mais uma ou duas semanas e instalar o Fedora 27 no meu sistema desativado quando ele for lançado, mas isso parece tão difícil quanto forçar a reinstalação de cada pacote. Eu realmente adoraria aprender como fazer isso.

RPM Ninjas: AJUDA!

    
por Bob Loves You 27.09.2017 / 20:51

1 resposta

2

Parece que você está simplesmente procurando pela opção rpm --root , que é aproximadamente análoga a dnf --installroot . Isto está documentado na página de manual do RPM:

   --root DIRECTORY
          Use the file system tree rooted at DIRECTORY for all operations.
          Note that this means the database within DIRECTORY will be  used
          for  dependency  checks  and  any  scriptlet(s)  (e.g.  %post if
          installing, or %prep if building, a package) will be run after a
          chroot(2) to DIRECTORY.

Para verificar todos os pacotes instalados em um sistema de arquivos montado em /run/media/liveuser/sda6/ , execute algo como:

  rpm --root /run/media/liveuser/sda6/ -Va
    
por 27.09.2017 / 22:43