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:
- http://www.linuxquestions.org/questions/linux-software-2/force-apt-get-to-redownload-and-reinstall-dependencies-as-well-873038/
- https://kura.io/2010/07/02/using-dpkg-selections-to-backup-and-install-packages/?ModPagespeed=noscript
-
man apt-get
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
- Rollen av
dpkg --configure -a
er å konfigurere alle pakkede og ikke-konfigurerte pakker. Se mansider avdpkg
ogdpkg-reconfigure
og også debian.org/doc/manuals /debian-faq/ch-pkg_basics.no.html