Installere alle Debian-pakker på nytt

Jeg drepte ved en feil en dpkg-prosess som kjørte i bakgrunnen, og jeg vil installere alle pakkene på nytt for å være sikker på at alt er i orden.

Først prøvde jeg å få en liste over alle pakkene og installere dem på nytt

dpkg --get-selections | grep -v deinstall | awk "{print $1}" > list.log apt-get install --reinstall $(cat list.log) 

Men det er meldinger som:

E: Couldn"t configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle. 

Jeg prøvde apt-get -f install, uten å lykkes.

Som en siste utvei installerte jeg alle programmene som ikke klarte å sjekksummer:

dpkg -l | grep ^ii | awk "{ print $2 }" | xargs debsums -s -a 

Hva skal jeg gjøre for å installere alt på nytt?

Rediger: Problem løst. Problemet var noe annet (se kommentarene). Jeg forstår at det er noe å unngå med Debian.

Kommentarer

  • Jeg fikk nylig et krasj mens jeg prøvde å installere en pakke. Da jeg startet om og prøvde å installere den pakken på nytt, jeg mottok meldingen, » E: dpkg ble avbrutt, du må kjøre ‘ dpkg –configure -a ‘ for å rette opp problemet. «. Å kjøre den kommandoen fjernet pakken og konfigurasjonsfilene. Da kunne jeg installere pakke fra bunnen av. Prøv å gi den kommandoen en prøve.
  • Den gjorde ikke ‘ t gjorde noe, så jeg antar at ingenting er ødelagt. Jeg vil prøve senere å sjekke om driverproblemene mine er løst.
  • Installere alle pakker på nytt == virkelig dårlig idé. (a) Det ‘ er nesten alltid unødvendig (b) det vil sannsynligvis mislykkes ( c) Hvis systemet ditt virkelig er ødelagt, er det bare å installere det på nytt. Løs bare problemene du faktisk ser.

Svar

Prøv dette, husk at jeg gjorde ikke test det:

dpkg --get-selections > selections sudo dpkg --clear-selections sudo dpkg --set-selections < selections sudo apt-get --reinstall dselect-upgrade 

Kilder:

Kommentarer

  • Problemet mitt var helt annerledes: Jeg startet ikke riktig kjerne (!). Jeg vil godta svaret ditt fordi det ser ut til å gjøre det jeg ønsket (men ikke testet også).
  • Dette vil ikke ‘ fungere, og vil ødelegge systemet fullstendig. Linje 3 vil avinstallere apt, så det vil ikke ‘ ikke være mulig å installere alt på nytt etterpå.
  • @rkjnsn: Jeg oppdaterte svaret, sjekk om det fungerer.
  • Prøver å gjøre dette blir ingenting installert på nytt, selv om valgfilen er fylt ut: pi @ prodpi ~ $ sudo apt-get – installer dselect-upgrade Lesepakke lister … Ferdig Bygge avhengighetstre Lesestatus informasjon … Ferdig 0 oppgradert, 0 nylig installert, 0 å fjerne og 0 ikke oppgradert. noen ide?
  • En grunn til at jeg tror koden din vant ‘ t fungerer, er fordi kommandoen dpkg --get-selections listen også avinstalleres pakker.

Svar

Når du bruker Aptitude, er det en enkel og rask måte å gjøre det på:

sudo aptitude reinstall "~i"

som vil installere alle installerte pakker på nytt.

Kommentarer

  • Hyggelig og kortfattet!

Svar

Bare i tilfelle, prøv å installere hver på nytt pakke :

for i in $(cat list.log); do apt-get install --reinstall "$i"; done 

Det kan også være lurt å legge til svar ja på alle spørsmålene.

Svar

I en av ressursene sitert av Lucas Malor fant jeg et skript kalt populator som ser ut til å være i nærheten av løsningen. Hvis du setter variabelen for valg av pakker til listen over alle pakkene dine

PKGLIST=$(dpkg --get-selections | grep -v deinstall| cut -f1)

, kan du kjøre skriptet og installere alle pakkene på nytt. men systemet vil sannsynligvis ha noen problemer. Det ville være bedre å teste det på en virtuell maskin først.

Her er en variant av skriptet fra lenken over:

#!/bin/bash # # Script to pre-populate apt-get proxy for faster later downloads. # It uses apt-get and wget to pull all the specified packages. # # Make sure only root can run our script if [[ $EUID -ne 0 ]]; then echo "You"re not root, are you?" 1>&2 exit 1 fi # Specify wanted packages PKGLIST="exaile" # Clears out the local repository of retrieved package files apt-get clean # Resynchronize the package index files from their sources apt-get update # Re-install specified packages at the newest version. apt-get install --reinstall $PKGLIST 

Hvis det vises feil at spesifikke pakker ikke kan installeres på nytt, kjør denne kommandoen for å prøve igjen:

sudo apt-get -y autoremove 

Svar

Prøv dette i stedet, siden det tar utdataene dine og gjør det til en gigantisk linje med mellomrom som skiller filnavnene.

dpkg --get-selections | grep -v deinstall | awk "{print $1}" > list.log awk "$1=$1" ORS=" " list.log > newlist.log apt-get install --reinstall $(cat newlist.log)

Den eneste endringen i det opprinnelige innlegget ditt er å legge til i den andre awk-setningen, noe som sannsynligvis kan gjøres med den første som oppretter filen du vil ha.

Denne endringen vil tvinge apt- få riktig nedlasting av pakkene og eventuelle manglende avhengigheter som ikke ble installert første gang, og installer dem på nytt i rekkefølge.

Hvis vi gjør det integrert, tror jeg at det vil se slik ut da:

dpkg --get-selections | grep -v deinstall | awk "{print $1}" | awk "$1=$1" ORS=" " > list.log

Og sørg for at du virkelig gjør at systemet har riktige pakker (eller nyeste), rengjør apt-hurtigbufferen, oppdater den og last deretter ned alle filene på nytt (du kan hoppe over de to første trinnene hvis du bare vil ha det du har i hurtigbufferen reinstallert):

apt-get clean && apt-get update && apt-get install --reinstall $(cat list.log)

Jeg hadde over 2k pakker installert på et system jeg oppgraderte som hadde et hangup. Ved hjelp av dpkg –configure -a fullførte installasjonen (den var i sluttfasen). Jeg kjørte dette for å få alt til å installeres riktig.

Eller som sagt på https://superuser.com/questions/298912/reinstall-debian-while-keeping-installed-packages-and-data :

sudo apt-get install --reinstall $(dpkg --get-selections | grep -w "install$" | cut -f1)

Bare vær sikker på at du kjører en «init 2» først før du installerer på nytt, siden noen av komponentene i X eller din favorittvinduebehandler vil kanskje ikke like å bli installert på nytt.

Kommentarer

  • Med mindre du ‘ har endret IFS , ikke sitert $(cat file) symboliserer på hvilket som helst hvitt område og gir nøyaktig det samme resultatet om filen er avgrenset av nye linjer eller mellomrom. --reinstall kan hjelpe, men ble allerede gitt to ganger før dette.

Svar

Å gjøre dette via apt er ganske enkelt:

apt list --installed | cut --delimiter=/ --fields=1 | xargs apt reinstall -y

apt list --installed del gjør akkurat det man vil gjette. | -tegnet leder standardutgangen til apt -kommandoen til standardinngangen til cut kommando. cut --delimiter=/ -delen forteller cut -kommandoen om å bruke / som skilletegn, og --fields=1 forteller cut å bruke det første feltet, det vil si teksten før den første / vises i utgangen fra apt list --installed -kommandoen. I dette tilfellet er resultatet av cut -kommandoen en liste over alle installerte pakker uten all tilleggsinformasjonen vi ikke trenger fra apt list --installed kommando.

Neste | rør standardutgangen til cut kommandoen, listen over alle installerte pakker, til standardinngangen til xargs -kommandoen, som igjen påkaller apt reinstall -y for hver av pakkene som for øyeblikket er installert .

Merk : avhengig av din apt-konfigurasjon, er apt reinstall -y part kan installere oppdateringer til dine eksisterende pakker i stedet for de nøyaktige versjonene du har installert.

Svar

Når du bruker RPM, hvis du forårsaker korrupsjon i pakkedatabasen, er det et alternativ å gjenoppbygge denne databasen, og dermed forhindre at du trenger å gå gjennom b asisk en reinstall. Som en bruker her påpekte, gjøres dette i Debian av dpkg --configure -a.

Kommentarer

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *