Debian reparieren
Posted by coldtobi | 28 May, 2007, 18:12Ich 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:
- What NAS?
- Thecus N2100: Testing kernels
- Thecus N2100: Testing a new kernel. Or the Installer. Or Revert. Or Recover.
- Squirrelmail and lighttpd -- An Installation Guide --
- Thecus N2100: Testing a kernel prior flashing