Tilbagekald en apt-upgrade, hvis noget går galt på Debian / Ubuntu Linux

Rulning tilbage til den forrige version kan løse problemet eller frigøre diskplads. Begge CentOS / RHEL support rollback funktion, men jeg lærte hårdt, at både Debian og Ubuntu ikke understøtter rollback-funktion endnu.

Kend problemet, før du vælger løsningen

Jeg administrerer eksternt en Ubuntu 14.04.3 LTS-server i en af ​​disse snavs billige skyer, og jeg vil regelmæssigt bruge apt-get kommando at installere pakker eller gøre opgraderinger. Jeg ønskede at oprette "Planet Venus" (en fleksibel feed aggregator) software på mit system. Af en eller anden mærkelig grund sprang jeg:
$ sudo apt-get -y -installere-foreslår installere planet-venus
Jeg skulle have stoppet installationen. Men jeg var for træt og overarbejde den dag. Resultatet var en katastrofe. Jeg løb tør for diskplads, og det installerede 1764-pakker på systemet. Min planet-venus-installation brød også ned. Det var en af ​​de dage, hvor jeg lavede fejl og glemte at tage snapshot / backups. Kort fortalt:

Jeg kneppede op :(

Relaterede: Dette er ikke første gang, jeg fikket op. Se mine 10 Unix kommandolinjer fejl.

Løsning

Jeg prøvede Google og fundet denne wiki side ikke så hjælpsom. Et par postlister og forumindlæg hjalp slet ikke. Endelig kommer et tip fra Twitter:

Sådan tilbagekaldes en apt-get-opgradering fra kommandolinjen?

Jeg løb hurtigt:
# grep -A 2 'Startdato: 2016-01-17 07: 56: 42' /var/log/apt/history.log
Prøveudgang (fuld dump her):

Fig.01: history.log for at redde

Fig.01: history.log for at redde

Tilbagekald / fortryd en kommandoen apt-get install

Hvil var let.

Opret listen:

grep -A 2 'Startdato: 2016-01-17 07: 56: 42' /var/log/apt/history.log | hale -1> /tmp/packages.txt

Rediger filen /tmp/packages.txt og slet Installer: word:

vi /tmp/packages.txt

OR

sed -i 's / Installer: //' /tmp/packages.txt

Endelig skal jeg rydde op et par ting:

tr ',' 'n' </ tmp/packages.txt | sed '/ automatisk) / d' | awk '{print $ 1}'> /tmp/final.packages.txt wc -l /tmp/final.packages.txt

Prøveudgange:

1764 /tmp/final.packages.txt

Slet pakkerne

Nu har jeg en hel liste over alle pakker installeret på den utrolige dag

#  mindre /tmp/final.packages.txt 
libmaa3:amd64
ant:amd64
libmimic0:amd64
dc:amd64
libparse-yapp-perl:amd64
gir1.2-clutter-1.0:amd64
libjna-java:amd64
python-egenix-mxbeebase:amd64
libxkbcommon-x11-0:amd64
libmpeg2-4:amd64
libopencv-core2.4:amd64
libdvdread4:amd64
libhunspell-1.3-0:amd64
fonts-lobster:amd64
libtotem-plparser18:amd64
libodbcinstq4-1:amd64
jed-common:amd64
....
..
...
xfonts-cyrillic:amd64
postgresql:amd64
db5.3-util:amd64
libopencore-amrnb0:amd64
firebird2.5-examples:amd64
libboost-random1.54-dev:amd64
libtbb2:amd64
libwxgtk2.8-0:amd64
libc6-x32:amd64
magicfilter:amd64

Bare afinstaller det:

# Kør som root # Opbevar pakker navn i $ pp = "$ (</ tmp / final.packages.txt)" # Nuke det apt-get --purge fjern $ p #clears ud det lokale arkiv af hentede pakkefiler apt- få ren # Bare i tilfælde ... apt-get autoremove # Bekræft diskplads df -H

Konklusion

For at hjælpe dig selv skal du være dig selv. Vær det bedste, du kan være. Når du laver en fejl, lærer du det, vælger dig selv og fortsætter. -Dave Pelzer

Jeg lærte det:

  1. Den bedste tid til backup er, før du gør store ting på serveren.
  2. Tænk dig om. Hit indtast en gang.
  3. Fortæl aldrig blindt apt-get eller nogen kommando, der har en mulighed.
  4. Sørg altid for øjeblikket. Desværre bruger denne boks stadig ext4. Der er ingen mulighed for at indstille mit filsystem til BTRFS / ZFS (Linux på ZFS) med denne cloud server udbyder. Så jeg sidder fast med ext4 for nu.

Giv en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.