« Previous | Next»

Debian reparieren

Posted by coldtobi | 28 May, 2007, 18:12

Ich ziehe gerade meine Plate um, und bin auf dabei auf dieses kleine Script gestossen, dass einem vielleicht eine Neuinstallation sparen kann, wenn man wichtige Dateien gelöscht hat, oder der dpkg cache zerschossen ist.

Die originale Quelle existiert leider nicht mehr, deshalb kein Link sondern "verbatim".  


Anzeige
 
#!/bin/sh
 # Recovering a Debian system without any backup of /var/lib/dpkg.
 # ref: http://www.linuxworld.com/2003/0113.petreley.html
 # (C) 2003, Karsten M. Self kmself@ix.netcom.com
 # (C) 2003, Osamu Aoki osamu@debian.org, (fixup)
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 # USA


export PATH=/usr/sbin:/usr/bin:/sbin:/bin


# Let's be verbose....
 set -v


# Test existence of any subdirs in /var. If they exist, exit, otherwise
 # risk destroying an active system. If they don't exist, the remainder
 # of this script is safe.


function create_new_dir () {
 if [ ! -f $1 && ! -d $1 ]
 then mkdir $1
 else
 echo "$1 exists, aborting" 1>&2
 exit 1
 fi
 }


for d in /var/log /var/cache/{debconf,apt/archives}
 /var/lib/dpkg/{info,parts,alternatives,methods,updates}
 do
 create_new_dir $d
 done


# Create a rudimentary status file
 cat <<-EOF>/var/lib/dpkg/status
 Package: libc6
 Status: install ok installed
 Version: 2.3.1-9
 EOF


# Update package cache
 apt-get update
 apt-get dist-upgrade


# Register as installed crucial packages.
 dpkg --clear-avail
 apt-get update
 apt-get dist-upgrade
 cd /var/cache/apt/archives
 dpkg -i libncurses*
 dpkg -i perl-base*
 dpkg -i libstdc++*
 dpkg -i dselect*
 dpkg -i dpkg*


# Reinstall libc to register it.
 apt-get install --reinstall libc6


# Reinstall base packages.
 apt-get dist-upgrade


# Generate list of installed packages to Re-register previously
 # installed packages as installed, using /usr/share/doc as a
 # fallback package registry.
 # ref: dpkg -l $( ls /usr/share/doc | grep -v [A-Z] ) >/dev/null


dpkg --set-selections $(
 ls /usr/share/doc |
 grep -v [A-Z] |
 grep -v '^texmf$' |
 grep -v '^debian$' |
 awk '{print $1 " install"}'
 )


# Re-register everything.
 apt-get dist-upgrade


<—&mdash Showing ERROR? Click here!


Linux / Debian | Comments (0) | Trackbacks (0)

Related Articles:

0 Comments | "Debian reparieren" »

Add comment

 

 This is the ReCaptcha Plugin for Lifetype

Due to German legislation, all comments are moderated. If you get NO error message, your comment is accepted by the system and will be released at the earliest opportunity. Sorry for the inconvenience this might cause.

Inappropiate comments might be edited or not accepted.