Kaikkien Debian-pakettien uudelleenasentaminen

Tapasin vahingossa taustalla käynnissä olevan dpkg-prosessin ja haluaisin asentaa kaikki paketit uudelleen varmistaakseni, että kaikki on kunnossa.

Ensin yritin saada luettelon kaikista paketeista ja asentaa ne uudelleen

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

Mutta on viestejä, kuten:

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

Yritin apt-get -f install, epäonnistuneena.

Viimeisenä keinona asensin uudelleen kaikki ohjelmat, jotka epäonnistuivat tarkistussummat:

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

Mitä minun pitäisi tehdä asentaaksesi kaiken uudelleen?

Muokkaa: Ongelma ratkaistu. Asia oli jotain muuta (katso kommentit). Ymmärrän, että sitä on kuitenkin vältettävä Debianin kanssa.

Kommentit

  • Minulla oli äskettäin kaatuminen yrittäessäni asentaa pakettia. Kun käynnistin uudelleen ja yritin asentaa paketin uudelleen, sain viestin, ” E: dpkg keskeytettiin, sinun on suoritettava manuaalisesti ’ dpkg –configure -a ’ ongelman korjaamiseksi. ”. Komennon suorittaminen poisti mainitun paketin ja sen määritystiedostot. Pystyin sitten asentamaan paketti tyhjästä. Yritä antaa komento mennä.
  • Se ei tehnyt ’ t mitään, joten luulen, ettei mikään ole rikki. Yritän myöhemmin tarkistaa, ajurikysymykseni on ratkaistu.
  • Kaikkien pakettien uudelleenasennus == todella huono idea. (a) Se ’ on melkein aina tarpeetonta (b) se todennäköisesti epäonnistuu ( c) Jos järjestelmäsi on todella niin sekaisin, asenna se uudelleen. Korjaa vain näkemäsi ongelmat.

vastaus

Kokeile tätä muistamalla, että tein en testaa se:

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

Lähteet:

kommentit

  • Minun ongelmani oli täysin erilainen: En ollut käynnistämässä oikeaa ydintä (!). Hyväksyn vastauksesi, koska se näyttää tekevän mitä halusin (mutta myös kokeilematta).
  • Tämä ei voinut toimia ’ ja rikkoo järjestelmän kokonaan. Rivi 3 poistaa apt: n asennuksen, joten ’ ei voitu asentaa kaikkea jälkikäteen.
  • @rkjnsn: Päivitin vastauksen ja tarkista, toimiiko se.
  • Yritetään tehdä tämä mikään ei asenna uudelleen, vaikka valintatiedosto on täytetty: pi @ prodpi ~ $ sudo apt-get –reinstall dselect-upgrade Lukupakettiluettelot … Valmis Rakennetaan riippuvuuspuuta Lukutila tiedot … Valmis 0 päivitetty, 0 vasta asennettu, 0 poistettava ja 0 ei päivitetty. mitään ideoita?
  • Yksi syy mielestäni koodisi voittamiseen ’ ei johdu siitä, että komento dpkg --get-selections -luettelo myös poistaa paketteja.

Vastaa

Aptitude-palvelua käytettäessä on helppo ja nopea tapa tehdä se:

sudo aptitude reinstall "~i"

joka asentaa kaikki nykyiset asennetut paketit.

Kommentit

  • Hienoa ja ytimekästä!

Vastaa

Yritä vain asentaa kukin uudelleen paketti :

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

Voit myös lisätä vastauksen kyllä kaikkiin kysymyksiin.

Vastaa

yhdessä resursseista , joihin Lucas Malor viittasi, löysin komentosarjan nimeltä populator, joka näyttää olevan lähellä ratkaisua. Jos asetat pakettien valintamuuttujan kaikkien pakettiesi luetteloon

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

voit sitten suorittaa komentosarjan ja asentaa kaikki paketit uudelleen mutta järjestelmällä on todennäköisesti joitain ongelmia. Olisi parempi testata se ensin virtuaalikoneessa.

Tässä on muunnelma komentosarjasta yllä olevasta linkistä:

#!/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 

Jos ilmenee virhe, että tiettyjä paketteja ei voida asentaa uudelleen, yritä uudelleen suorittamalla tämä komento:

sudo apt-get -y autoremove 

Vastaa

Kokeile tätä, koska se vie tuloksen ja tekee siitä yhden jättimäisen rivin, jossa on välilyöntejä tiedostonimien erottamiseksi.

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)

Ainoa muutos alkuperäiseen viestiisi on lisääminen toiseen awk-käskyyn, joka voidaan todennäköisesti tehdä heti ensimmäisenä luomalla haluamasi tiedosto.

Tämä muutos pakottaa apt- Lataa uudelleen paketit ja puuttuvat riippuvuudet, joita ei asennettu ensimmäistä kertaa, ja asenna ne uudelleen järjestyksessä

Jos teemme sen inline, uskon, että se näyttäisi tältä tältä:

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

Ja sitten varmista, että teet todella, että järjestelmässä on oikeat paketit (tai uusimmat), puhdista apt-välimuisti, päivitä se ja lataa sitten kaikki tiedostot uudelleen (voit ohittaa kaksi ensimmäistä vaihetta, jos haluat vain välimuistissa olevan) uudelleenasennettu):

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

Minulla oli yli 2 kt paketteja asennettuna päivitetyssä järjestelmässä, jossa oli hangup. Asennuksen dpkg –configure -a käyttö viimeisteli asennuksen (se oli viimeisessä vaiheessa). Suoritin sitten tämän, jotta kaikki asennettaisiin uudelleen oikein.

Tai kuten kohdassa https://superuser.com/questions/298912/reinstall-debian-while-keeping-installed-packages-and-data todettiin :

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

Varmista, että olet suorittanut ”init 2” -toiminnon ennen uudelleenasennusta, koska jotkin X: n tai suosikkiikkunanhallinta ei ehkä pidä uudelleenasennuksesta.

Kommentit

  • Ellet ’ ole muokannut IFS: ää , noteeraamaton $(cat file) tunnistaa missä tahansa välilyönnissä ja antaa täsmälleen saman tuloksen riippumatta siitä, onko tiedosto erotettu uudella rivillä vai välilyönneillä. --reinstall saattaa auttaa, mutta se annettiin jo kahdesti ennen tätä.

Vastaa

Tämän tekeminen apt -palvelun kautta on melko yksinkertaista:

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

apt list --installed osa tekee juuri sen, mitä voisi arvata. | -merkki ohjaa komennon apt vakiolähdön cut komento. cut --delimiter=/ -osa käskee cut -komennon käyttämään erottimena / ja --fields=1 käskee cut käyttämään ensimmäistä kenttää, ts. tekstiä, joka on ennen ensimmäistä /, joka näkyy komennon apt list --installed tulosteessa. Tällöin cut -komennon tulos on luettelo kaikista asennetuista paketeista ilman kaikkia lisätietoja, joita emme tarvita apt list --installed -komento.

Seuraava | lähettää cut -komennon vakiolähdön, luettelon kaikista asennetuista paketteja xargs -komennon vakiosisääntuloon, joka puolestaan kutsuu apt reinstall -y jokaiselle tällä hetkellä asennetulle paketille .

Huomaa : apt-kokoonpanostasi riippuen apt reinstall -y part saattaa asentaa päivityksiä nykyisiin paketteihisi nykyisten asentamiesi versioiden sijaan.

Vastaa

Käytettäessä RPM, jos aiheutat vioittumista pakettitietokannassa, on mahdollisuus rakentaa tämä tietokanta uudelleen estäen sinua käymästä b asically asenna uudelleen. Kuten yksi käyttäjä huomautti, tämän tekee Debianissa dpkg --configure -a.

Kommentit

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *