Portál AbcLinuxu, 12. května 2025 22:08

Dotaz: Smazana databaze RPM

12.6.2006 10:21 MiHl | skóre: 9 | blog: Uvazovnik
Smazana databaze RPM
Přečteno: 136×
Odpovědět | Admin
Dobrý den, podařilo se mi omylem místo zkušební databáze smazat celý adresář /var/lib/rpm s databází rpm (vloudilo se / na začátek cesty). Zálohu bohužel nemám. Na googlu jsem nenašel žádný nápad a sám nevím, jestli by s tím šlo vůbec něco udělat.

Jedinou výhodou je možnost použití databáze z jiného počítače s nainstalovanými zhruba stejnými balíčky. Na mém počítači bylo asi o 15% více balíčků, na druhém je pro změnu asi 5% balíků, které nejsou u mě. Mám v plánu zkopírovat databázi z druhého počítače a pomocí skriptu verifikovat balíčky. Balíčky, kde mi to napíše v popisu souborů "missing", budu považovat za neexistující na mém počítači a odstraním je. Tím bych měl dosáhnout toho, že budu mít databázi, která bude obsahovat většinu skutečně nainstalovaných balíků. Měl by někdo nápad, co by se s tím dalo ještě udělat? Díky za všechny nápady
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Heron avatar 12.6.2006 10:25 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Smazana databaze RPM
Odpovědět | | Sbalit | Link | Blokovat | Admin
Není lepší to celé nainstalovat znovu?

Zálohujte konfiguráky atd a reinstalujte. To myslím bude rychlejší, než si hrát s cizí RPM DB a testovat, co všechno je / není installed.
Heron
12.6.2006 10:40 MiHl | skóre: 9 | blog: Uvazovnik
Rozbalit Rozbalit vše Re: Smazana databaze RPM
to mě také napadlo jako nejlepší dostupné řešení, ale mám jen oddíl / (využití na 95%), /boot a žádné jiné místo pro provedení záloh. Jediné, co mě napadá pro tento případ, je nabootovat z LiveCD (musel bych stáhnout), promazat všechno a konfigurace a data zkopírovat do adresáře /home, pak vše ostatní smazat a neformátovat disk při instalaci. To mi ale momentálně připadá jako složitější varianta
12.6.2006 10:34 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Smazana databaze RPM
Odpovědět | | Sbalit | Link | Blokovat | Admin

Kdysi se mi stalo něco podobného, nakonec jsem to nějak zprovoznil, ale nebylo to vůbec jednoduché, nejdříne je potřeba nahrát všechny RPM do jednoho adresáře na disku.

zde jsem našel tenkrát postup

ještě jsem na disku našel tento script, ale jak fungoval si už popravdě nepamatuji, už je to přeci jenom nějaký ten rok.


#!/bin/bash

pass1() {
    echo "looking for instaled files"
    find / -print | grep -v /home | sort > /root/rpmrebuild/dsk-contents

    echo "looking for RPMs"
    cd /home/Images/RPMS
    rm -f /root/rpmrebuild/rpm-contents.full
    for f in *.rpm ; do
        rpm -q -l -p $f \
        | awk -v pn=$f '{printf "%s:%s\n",pn,$0;}' >> /root/rpmrebuild/rpm-contents.full
    done
    echo "sorting RPMs"
    cat /root/rpmrebuild/rpm-contents.full | grep :/ > /root/rpmrebuild/rpm-contents
    sort -t: +1 -o /root/rpmrebuild/rpm-contents /root/rpmrebuild/rpm-contents
    return 0
}

pass2() {
    echo "comparing RPMs and installed apps"
    cd /root/rpmrebuild
    ./lgetvalue    --field-separator=: \
               --key-position=2 \
               --value-position=1 \
               /root/rpmrebuild/rpm-contents /root/rpmrebuild/dsk-contents \
    | sort -u > /root/rpmrebuild/rpm-installed
    return 0
}

pass3() {
    echo "finding dependencies"
    cd /home/Images/RPMS
    rpm -i -v --noscripts --notriggers --excludepath /  `cat /root/rpmrebuild/rpm-installed.ok` 2>/root/rpmrebuild/rpm-installed.err
    cd /root/rpmrebuild
    return 0
}

pass4() {
    echo "looking for deps"
    rm -f /root/rpmrebuild/rpm-installed.deps
    awk '$1 ~ /^/ {system ("grep "$1"$ /root/rpmrebuild/rpm-contents >> /root/rpmrebuild/rpm-installed.deps")}' /root/rpmrebuild/rpm-installed.err 2> /dev/null
    cut -d: -f1 rpm-installed.deps | sort -ut: -o /root/rpmrebuild/rpm-installed.deps

    echo "finding deps"
    cd /home/Images/RPMS
    rpm -i -v --noscripts --notriggers --excludepath /  `cat /root/rpmrebuild/rpm-installed.ok /root/rpmrebuild/rpm-installed.deps` 2>/root/rpmrebuild/rpm-installed.err2
    cd /root/rpmrebuild
    return 0
}


case "$1" in
  pass1)
        pass1
        ;;
  pass2)
        pass2
        ;;
  pass3)
        pass3
        ;;
  pass4)
        pass4
        ;;
  full)
        pass1
        pass2
        pass3
        pass4
        ;;
  *)
        echo $"Usage: $0 {pass1|pass2|pass3|pass4|full}"
        exit 1
esac

Strávil jsme tím tenkrát snad 2 dny, ale povedlo se, tak přeji hodně štěstí a ať se dílo podaří.

Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
12.6.2006 10:46 MiHl | skóre: 9 | blog: Uvazovnik
Rozbalit Rozbalit vše Re: Smazana databaze RPM
podobný nápad jsem dostal, z instalačních CD brát jedno rpm za druhým a kontrolovat existenci souborů, které obsahují. Pak provést jejich instalaci s --justdb. Tím bych dosáhl tak 98%, problém je se zbytkem získaným z různých repozitářů (mám Fedoru 5), což už by bylo poněkud nepraktické (brát jedno rpm za druhým)
13.6.2006 14:24 Pepíno | skóre: 20 | Trutnov
Rozbalit Rozbalit vše Re: Smazana databaze RPM
na starem RH7.3 byl nejaky rpm* log ve /var/log. Nevim, jestli ve FC stale je, ale mohl by pomoc
13.6.2006 14:33 MiHl | skóre: 9 | blog: Uvazovnik
Rozbalit Rozbalit vše Re: Smazana databaze RPM
To je ono! :)

ve FC existuje /var/log/rpmpkgs, který obsahuje kompletní seznam nainstalovaných balíků. Tak teď je jen stáhnout a rpm -ivh --justdb a mělo by být vyřešeno.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.