# Gentoo entmüllen

## ChrisM87

Hi,

nachdem sich nun auch mein ReiserFS der magischen 90%-Grenze nähert, habe ich mich mal an das aufräumen gemacht. Dabei ist mir aber aufgefallen, dass es einem hier bei Gentoo sehr schwer gemacht wird.

Einige Beispiele:

1. /usr/portage/distfiles. Man hat nur die Möglichkeit, entweder radikal alles zu löschen (sehr schlecht) oder ein Script zu benutzen, das allerdings nur nach dem Dateinamen geht oder so alte Versionen erkennt. So wird dann z.B. GTK 1 gelöscht, aber uralte Sourcen, die man längst wieder deinstalliert hat, werden belassen.

2. Sonstiges Dateisystem "cruft", z.B. auch unter /etc/, wobei der Müll dort von der Größe her relativ wenig ausmacht. Hierzu gibt es zwei Scripte, einmal cruft und findcruft. cruft selbst wird anscheinend nicht mehr gepflegt, findcruft ist schon besser, aber auch nur ein eher kleines Script und kein "richtiges" Programm mit Web-Whitelist oder ähnlichen Features, die sehr wichtig wären.

Es gibt noch einige Beispiele mehr, aber gerade bei diesen wäre es doch leicht, ein Tool zu entwickeln, dass diese Aufgaben erfüllt, im Prinzip könnte man auch beides fest in Portage einbauen oder irre ich mich?

Oder habt ihr alle einen riesiges RAID-System und kauft euch ein neues, wenn es voll ist?  :Very Happy: 

ChrisM

----------

## pablo_supertux

Ich lösche regelmäßig /var/tmp/portage und /usr/portage/distfiles so bleibt mein System "sauber"

----------

## ChrisM87

Hi,

/var/tmp/portage kann man natürlich immer löschen, das bringt aber nur was, wenn auch emerge-Vorgänge vorher fehlgeschlagen sind.

Distfiles komplett zu leeren würde ich nicht gerne machen, es würde bei mir zwar 8GB bringen und ich habe ohnehin DSL 2000, aber trotzdem muss ich dann beim Neucompilieren wieder alles neu herunterladen und belaste die Mirrors unnötigerweise ein zweites Mal.

ChrisM

----------

## fuchur

hi

 *Quote:*   

> 
> 
> 1. /usr/portage/distfiles. Man hat nur die Möglichkeit, entweder radikal alles zu löschen (sehr schlecht) oder ein Script zu benutzen, das allerdings nur nach dem Dateinamen geht oder so alte Versionen erkennt. So wird dann z.B. GTK 1 gelöscht, aber uralte Sourcen, die man längst wieder deinstalliert hat, werden belassen. 
> 
> 

 

Hier kann ich dir weiterhelfen. Bei diesem Script must du 

zusätzlich ankreutzen welche von den nicht mehr benötigten 

distfiles du löschen möchtest. Läuft bei mir ca. ein Jahr 

ohne probleme übernehme aber keine garantie  :Wink: 

Scriptupdate 25.10.05 23:15 

```

#!/bin/sh

# /usr/local/bin/cleanportage: cleans distdir pkgdir

# Makes sure gentoolkit and dialog is installed 

#

DIALOG=/usr/bin/dialog

if [ ! -x $DIALOG ] ; then

   echo -e "\e[0m"

   echo -e "\e[01;31m * First emerge dialog"

   echo -e "\e[0m"

   exit 0

fi

# Where are the portage dirs ...

#

PORTAGEINFO=/usr/lib/portage/bin/portageq

PORTDIR=$($PORTAGEINFO portdir)

DISTDIR=$($PORTAGEINFO distdir)

PACKAGESDIR=$($PORTAGEINFO pkgdir)

PORTDIROVERLAY=$($PORTAGEINFO portdir_overlay)

# makes sure PORTDIR, PORTDIROVERLAY, DISTDIR, PACKAGESDIR exist

#

#if [ ! -d "$PORTDIR" ] || [ ! -d "$PORTDIROVERLAY" ] || [ ! -d "$DISTDIR" ] || [ ! -d "$PACKAGESDIR" ]; then

if [ ! -d "$PORTDIR" ] || [ ! -d "$DISTDIR" ] || [ ! -d "$PACKAGESDIR" ]; then

   echo -e "\e[0m"

   echo -e "\e[01;31m * Please verify the following settings in /etc/make.conf:"

   echo -e "\e[01;31m * PORTDIR, DISTDIR, PKGDIR, PORTDIR_OVERLAY"

   echo -e "\e[0m"

   exit 0

fi

# Possible dialog (gauge) bug ?

#

dialog --no-shadow --title "!!!!! ATTENTION !!!!!" --clear \

      --ok-label "Next" --msgbox "Don't resize the window/shell 

if this script is running !" 8 40

test $? = 255 && exit 0

function MAINDIALOG() {

   # clean distfiles folder except: 

   #

   VAR="lost+found .journal quota.user aquota.user quota.group aquota.group"

   # tempfiles

   #

   TMPFILE=/tmp/.sourcetmpfile

   TMPFILE_=/tmp/.sourcetmpfile_

   rm -f $TMPFILE $TMPFILE_

   touch $TMPFILE $TMPFILE_

   for T in $VAR; do

      echo $T >>$TMPFILE

   done

   VAR=""

   TMPVAR=""

   dialog --no-shadow --clear --title "Clean portage folders" --menu\

      "Select" 0 0 0 \

      "01" "Clean sourcefiles"\

      "02" "Clean binary packages"\

      2>/tmp/NP.$$

      RETVAL=$?

      NP=$(cat /tmp/NP.$$)

      rm -f /tmp/NP.$$

   case $RETVAL in

      0)  case "$NP" in

            "01" ) COMPARESOURCES;;

            "02" ) COMPAREBINARYS;;

         esac;;

      1)  rm -f $TMPFILE $TMPFILE_ && clear;;

      255)rm -f $TMPFILE $TMPFILE_ && clear;;

      *)  echo -e "\e[01;31m * Dialog Unexpected return code: $RETVAL"

         echo -e "\e[0m"

   esac

}

function RESETCONTERS() {

   CNTR=0

   CNTR_=0

   CNTR__=0

}

function CALCUCONTERS() {

   CNTR_=$(($CNTR_+1))

   CNTR__=$(($CNTR_ * 100 / $CNTR))

}

function COMPARESOURCES() {

   RESETCONTERS

   # find installed ebuilds and set counter

   #

   INSTALLEBS=$(find /var/db/pkg/ -iname "*.ebuild" | cut -d/ -f5,6)

   for TMPVAR in $INSTALLEBS; do

      CNTR=$(($CNTR+1))   

   done

   # compare installed ebuilds with sourcefiles in $DISTDIR

   #

   for INSTALLEB in $INSTALLEBS

   do

      echo $CNTR__

      CALCUCONTERS

   

      NOVERSIONS=$(echo $INSTALLEB | sed -e 's:-r[0-9]*$::; s:-[^-]*$::; /^$/d')

      for PORTFOLDER in $PORTDIR $PORTDIROVERLAY

      do

         if [ -d $PORTFOLDER/$NOVERSIONS/files ] ; then

            cd $PORTFOLDER/$NOVERSIONS/files

            for FILE in $INSTALLEB

            do

               DIGEST="digest-$(basename $FILE)"

               if [ -e $DIGEST ] ; then

#                  SOURCEFILES=$(cat $DIGEST | cut -d " " -f3)

                  SOURCEFILES=$(cat $DIGEST | awk '{print $3}')

                  for SOURCEFILE in $SOURCEFILES

                  do

                     SOURCES=$DISTDIR/$SOURCEFILE   

                     if [ -e $SOURCES ] ; then

                        for SOURCE in $SOURCEFILE

                        do

                           echo $SOURCE >>$TMPFILE

                        done

                     fi

                  done

               fi

            done

         fi

      done

   done | $DIALOG --no-shadow --clear --title "Please wait"\

         --gauge "Compare installed ebuilds with sourcefiles in $DISTDIR" 8 60 2

   CHECKSOURCES

}

function COMPAREBINARYS() {

   # remove quote .jornal ... in $TMPFILE we don't need it here

   #

   $(cat /dev/null >$TMPFILE)

   # counters

   #

   RESETCONTERS

   # find installed ebuilds and set counter

   #

   INSTALLEBS=$(find /var/db/pkg/ -iname "*.ebuild" | cut -d/ -f5,6)

   for TMPVAR in $INSTALLEBS

   do

      CNTR=$(($CNTR+1))   

   done

   TMPVAR=""

   # makes sure $PACKAGESDIR/All exist if not back to maindialog

   #

   if [ ! -d "$PACKAGESDIR/All" ]; then

      MAINDIALOG

   else

      cd $PACKAGESDIR/All

      # compare installed ebuilds with binaryfiles in $PACKAGESDIR

      #

      for INSTALLEB in $INSTALLEBS

      do

         echo $CNTR__

         CALCUCONTERS

         BINARYNAME="$(basename $INSTALLEB).tbz2"   

         if [ -e "$BINARYNAME" ]; then

            echo $BINARYNAME >>$TMPFILE

         fi

      done | $DIALOG --no-shadow --clear --title "Please wait"\

            --gauge "Compare installed ebuilds with binarys in $PACKAGESDIR/All" 8 60 2

      CHECKBINARYS

   fi

}

function CHECKSOURCES() {

   SOURCEDIR=$DISTDIR

   MSG="sourcefile(s)"

   SOURCESTMP

}

function CHECKBINARYS() {

   SOURCEDIR=$PACKAGESDIR/All

   MSG="binaryfile(s)"

   SOURCESTMP

}

function SOURCESTMP() {

   RESETCONTERS

   # change folder

   #

   cd $SOURCEDIR

   ALLFILES=$(ls)

   # set counter

   #

   for TMPVAR in $ALLFILES

   do

       CNTR=$(($CNTR+1))

   done

   # check for outdated files

   #

   for REMOVE in $ALLFILES

   do

      echo $CNTR__

      CALCUCONTERS

      ISNE=$(grep ^$REMOVE $TMPFILE)

      if (test -z "$ISNE"); then

         echo $REMOVE >>$TMPFILE_

      fi

   done | $DIALOG --no-shadow --clear --title "Please wait"\

         --gauge "Check for outdated $MSG" 7 60 2

   VERIFYREMOVE

}

function VERIFYREMOVE() {

   RESETCONTERS

   # Build checklist

   #

   VAR=""

   TMPVAR=""

    for SOURCES in $(cat $TMPFILE_)

    do

      CNTR=$(($CNTR+1))

      VAR="$VAR $SOURCES $CNTR off"

   done

    dialog --no-shadow --clear --title "Remove $MSG" --checklist\

       "This $MSG not needed. Select to remove" 0 0 0 \

        $VAR\

        2>/tmp/rsf.$$

        RETVAL=$?

        RSF=$(cat /tmp/rsf.$$ | sed 's/"//g')

        rm -f /tmp/rsf.$$

   case $RETVAL in

      0)   if (test ! -z "$RSF"); then

            CNTR=0

            for RR in $RSF

            do

               CNTR=$(($CNTR+1))

               TMPVAR="$TMPVAR $RR,"

            done

            "$DIALOG" --no-shadow --clear --title "Really remove" \

                    --yesno "$TMPVAR" 0 0

               case $? in

                  0)   # Makes sure we are in right dir

                     #

                     cd $SOURCEDIR

                  

                     # we need a clear tmpfile if we remove binarys 

                     #

                     $(cat /dev/null >$TMPFILE)

                     # remove files

                     #   

                     for R in $RSF

                     do

                        echo $CNTR__

                        CALCUCONTERS

                        echo $R >>$TMPFILE

                        rm -rf $R

                     done | $DIALOG --no-shadow --clear --title "Please wait"\

                           --gauge "Remove" 7 60 2

                     # if we have remove binarys also remove dead links etc ...

                     #

                     if [ "$SOURCEDIR" == "$PACKAGESDIR/All" ]; then

                        RESETCONTERS

                        for TTT in $(cat $TMPFILE)

                        do 

                           CNTR=$(($CNTR+1))

                        done

                        cd $PACKAGESDIR

                        FOLDERS=$(ls | grep -)

                        for R in $FOLDERS

                        do

                           echo $CNTR__

                           cd $PACKAGESDIR/$R

                           for RL in $(ls)

                              do

                              ISNE=$(grep ^$RL $TMPFILE)

                              if (test ! -z "$ISNE"); then

                                 CALCUCONTERS

                                 rm -rf $RL

                              fi

                           done

                        done | $DIALOG --no-shadow --clear --title "Please wait"\

                              --gauge "Remove dead links etc in $PACKAGESDIR ..." 7 60 2

                     fi

                  ;;

                  1)   

                  ;;

               esac

         fi

      ;;

      1)  

      ;;

      3)  

      ;;

      255)

      ;;

      *)  echo -e "\e[01;31m * Dialog Unexpected return code: $RETVAL"

         echo -e "\e[0m"

      ;;

   esac

   

   clear

   #MAINDIALOG

   exit 1

}

MAINDIALOG

```

mfgLast edited by fuchur on Tue Oct 25, 2005 9:52 pm; edited 2 times in total

----------

## Lenz

Das Skript distclean funktioniert doch wunderbar, um /usr/portage/distfiles aufzuräumen. Dann ab und zu /var/tmp/portage leeren, worldfile aufräumen, depclean, das ganze Programm halt.  :Very Happy: 

Was ist da nun das Problem?

----------

## slick

Also um die distfiles aufzuräumen exitieren hier im Forum diverse Scripte. Einen Ansatz habe ich aber bisher noch nicht gesehen was ich glaube den Vorstellungen von ChrisM87 am ehesten ensprechen würde.

ein "emerge -pfe world" und das Ergebnis mit den vorhandenen Dateien unter distfiles vergleichen und der Rest kann ins digitale Nirvana... vielleicht hat ja mal einer Lust zu scripten...  :Wink: 

----------

## NightDragon

Also ich räume meine distfiles regelmäßig mit einen einfachen schnelle und problemlosen rm /usr/portage/distfiles/ -R auf.

Im seltensten Fall benötige ich ein packet das ich schon mal runtergeladen habe.

Ausnahme sind sinstallationen die groß sind.

Also ich weiß nicht. Aber 8GB distfiles find ich heftig. Und ehrlich gesagt gibts selten abhängikeiten wo er ein sauber installiertes packet nochmals installieren will.

Was ich mache um die Mirrors zu schonen ist, das ich nach einem update die distfiles vom einen zum anderen rechner kopieren und dann dort nochmals aktualisiere. Damit läd er die packete die die rechner gemein aktualisieren nur einmal runter...

Aber ansonsten halte ich es für quatsch unmengen an distfiles aufzubehalten.

----------

## _hephaistos_

hi!

2 fragen dazu:

 /var/db/pkg/ = "registry" von portage >> NICHT LÖSCHEN

ABER: was ist mit /var/cache/edb/dep

hat immerhin 73MB

darf man das löschen?

thx

----------

## ChrisM87

Hi,

distclean ist mal super, das ist endlich ein richtiges Tool, danke für den Tipp!  :Smile: 

Das oben gepostete Script scheint leider nicht mit der aktuellen Portageversion kompatibel, zumindest bringt es bei mir Fehler, aber distclean ist echt super, echt!  :Smile: 

ChrisM

----------

## Mindphaser

 *hephaistos6 wrote:*   

> 
> 
> ABER: was ist mit /var/cache/edb/dep
> 
> hat immerhin 73MB
> ...

 

Darfst du, wird aber bei jeden sync neu generiert.

Dort lagert Portage die Metadaten (Portage Cache) zu den ganzen verfügbaren Paketen.

Ich benutze MySQL als DB-Backend für Portage (weil schneller), hab also alles was du in dieser Ordnerstrukur hast in einer MySQL Datenbank, und diese Datenbank ist rund 23MB gross.... viel grösser dürfte das ganze bei dir auch nicht sein, also probier mal folgendes: 

Den ganzen Kram löschen (zur Sicherheit vorher in ne tar.bz2 oder sowas sichern, wenn du willst), dann mit "emerge --metadata" ihn den ganzen Kram neu aufbauen lassen.

Nur ne Idee, wenn das garnichts bringt, ich hab mit der Sache nichts zu tun ....  :Smile: 

----------

## moe

 *NightDragon wrote:*   

> 
> 
> Im seltensten Fall benötige ich ein packet das ich schon mal runtergeladen habe.
> 
> Ausnahme sind sinstallationen die groß sind.
> ...

 

Diese Logik versteh ich nicht.  :Laughing: 

 *NightDragon wrote:*   

> 
> 
> Und ehrlich gesagt gibts selten abhängikeiten wo er ein sauber installiertes packet nochmals installieren will.
> 
> 

 

Das nicht, aber bei jedem Revisionsupdate also von foobar-r1 auf foobar-r2 benötigt er dieselbe Datei aus distfiles nochmal..

Meins ist übrigens 7GB gross, wird aber auch von 3+ Rechnern per NFS genutzt.

Gruss Maurice

----------

## bröggle

schau dir mal stale an... hab ich gerade im how to fly with gentoo tread gelesen... *Quote:*   

> 4- Stale
> 
> Interesting script that will help us to keep /usr/portage/distfiles with an optimal size. The script will search in that dir, and delete (when invoked with the --nopretend option) the old files, not the actual ones.
> 
> For example, if we have libtool-1.3.5.tar.gz and libtool-1.5.2.tar.gz, it would delete libtool-1.3.5.tar.gz
> ...

 

https://forums.gentoo.org/viewtopic.php?t=231170

----------

## c07

 *ChrisM87 wrote:*   

> 1. /usr/portage/distfiles. Man hat nur die Möglichkeit, entweder radikal alles zu löschen (sehr schlecht) oder ein Script zu benutzen, das allerdings nur nach dem Dateinamen geht oder so alte Versionen erkennt.

 

Ich hab ein sehr simples Skript, das in $SRC_URI von allen installierten Paketen sucht. Berücksichtigt allerdings keine USE-Flags und ist ziemlich langsam:

```
#! /bin/bash

. /etc/make.globals

. /etc/make.conf

prg="/^SRC_URI=/ {

  s/^SRC_URI=//

  s/^\\\$?'(.*)'\$/\\1/

  s/( |\\\\n|\\\\t)+/ /g

  s/(^| )([^ ]+\\?|\\()/ /g

  s/\\)( |\$)/ /g

  s/[^ ]+\\/([^/ ]+( |\$))/\\1/gp

  q}"

cd /var/db/pkg

need=

for pck in */*; do

  for file in `bzcat "$pck/environment.bz2" | sed -nr "$prg"`; do

    found=

    for item in $need; do

      if [[ $item == $file ]]; then found=1; break; fi

      done

    if [[ -z $found ]]; then need="$need $file"; fi

    done

  done

cd "$DISTDIR"

have=

for file in *; do

  if [[ ! -f $file ]]; then continue; fi

  found=; list=

  for item in $need; do

    if [[ $item == $file ]]; then found=1; else list="$list $item"; fi

    done

  need=$list

  if [[ -z $found ]]; then have="$have $file"; fi

  done

echo "### needed (maybe):"

for item in $need; do echo "$item"; done

echo "### not needed:"

for item in $have; do echo "$item"; done
```

Gibt zwei Listen aus: Die Erste sind Dateien, die bei einem Re-Emerge fehlen könnten; die Zweite sind Dateien, die vorhanden sind, aber von keinem Paket mehr benötigt werden. Das Skript so anzupassen, dass Letztere automatisch gelöscht werden, ist ziemlich trivial (ich behalt manche davon trotzdem noch einige Zeit, falls ich downgraden muss, oder die Kernel, die man später als linux-headers recyclen kann).

 *hephaistos6 wrote:*   

> was ist mit /var/cache/edb/dep

 

Nach FHS muss man /var/cache immer problemlos löschen können, und seit 2.0.51 hat Portage zumindest eine rudimentäre FHS-Konformität. Bug 50200 ist allerdings nicht wirklich gefixt. Z.B. hat der Log-Counter nichts in /var/cache verloren. Aber /var/cache/edb/dep sollte man problemlos löschen können.

----------

## timbo2k

Hi,

zu dem Thema habe ich mal eine Grundsatzfrage. Ist es überhaupt möglich ein System komplett sauber zu halten?

Ich meine auf der einen Seite kann ich den ganzen Portage Kram (distfiles, etc.) von Hand und per Script prima sauber halten. Ich frage mich aber immer, ob auch wirklich alle zu einem Paket gehörigen Dateien beim löschen auch wirklich entfernt werden. Ich bin da immer sehr skeptisch und glaube immer, dass ich nach vielen vielen Update Vorgängen extrem viele Dateileichen auf meinem System habe. Wo merkt sich Protage beim installieren welche Dateien wo liegen? Ansonsten werden beim löschen die Configs auch behalten obwohl man hier auch angeben kann, dass diese mit gelöscht werden sollen. Mir war aber so, dass man gerade das nicht global einstellen konnte oder? Sonst habe ich aber bei Gentoo ein sehr gutes Gefühl weil ich es extrem transparent finde im Vergleich.

Gruß, Tim

----------

## NightDragon

Hm... Wäre ja cool wenn wir die ganzen Ideen und Punkte mal zusammenfassen oder so.

----------

## c07

 *timbo2k wrote:*   

> Wo merkt sich Protage beim installieren welche Dateien wo liegen?

 

In /var/db/pkg/*/*/CONTENTS mit Timestamp und MD5-Summe. Später veränderte Dateien (z.B. durch fix_libtool_files.sh) werden nie mehr deinstalliert.

----------

## NightDragon

Und wie wird man dann die Dateien los die das fixlibtools behandelt hat?

Ich denke nämlich, das ist ne ganze Reihe von Files.

----------

## Mindphaser

Ich benutze für sowas das Script findcruft. Beim durchsehen der Liste tauchen leider sehr viele Dateien auf, die schon ihren Sinn und Zweck haben... von daher ist Handarbeit angesagt, Files die z.B. in /usr/bin oder /usr/lib als Müll identifiziert werden, kann man eigentlich immer löschen, ist eigentlich überall so, nur bei /var/* und /etc/* wär ich vorsichtig...

Ist vielleicht etwas Zeitaufwendig, dafür ist das System aber wieder sauberer...reicht auch wenn man das nur alle paar Monate macht.

----------

## schachti

 *Lenz wrote:*   

> 
> 
> Das Skript distclean funktioniert doch wunderbar, um /usr/portage/distfiles aufzuräumen.
> 
> 

 

Wo gibbet das denn?

```

kiste root # emerge -S distclean

Searching...

[ Results for search key : distclean ]

[ Applications found : 0 ]

```

----------

## ChrisM87

Hi,

hier im Forum....

Wie schon gesagt, wäre es aber mal eine Überlegung werd, ein größeres Cruft-Finding-Tool zu programmieren, das eine Onlinedatenbank verwendet. So gäbe es kaum noch Falschmeldung, wenn zumindest einige User den Datenbestand aktuell halten.

ChrisM

----------

## MaGPiE

 *schachti wrote:*   

>  *Lenz wrote:*   
> 
> Das Skript distclean funktioniert doch wunderbar, um /usr/portage/distfiles aufzuräumen.
> 
>  
> ...

 

Gibt es hier: http://www.stacken.kth.se/~foo/gentoo/files/.

Und hier ist der Forum Beitrag zu finden.

https://forums.gentoo.org/viewtopic.php?t=3011

----------

## flammenflitzer

 *fuchur wrote:*   

> hi
> 
>  *Quote:*   
> 
> 1. /usr/portage/distfiles. Man hat nur die Möglichkeit, entweder radikal alles zu löschen (sehr schlecht) oder ein Script zu benutzen, das allerdings nur nach dem Dateinamen geht oder so alte Versionen erkennt. So wird dann z.B. GTK 1 gelöscht, aber uralte Sourcen, die man längst wieder deinstalliert hat, werden belassen. 
> ...

 

Ich habe dieses Script unter clear gespeichert.

```

./clear

./clear: line 27: /usr/portage/distfiles: is a directory

 * Please verify the following settings in

/etc/make.conf:

 * PORTDIR, DISTDIR, PKGDIR, PORTDIR_OVERLAY

```

```

PORTDIR=/usr/portage

DISTDIR=/usr/portage/distfiles

PKGDIR=/usr/portage/packages

PORTDIR_OVERLAY="/usr/local/overlays/gentoo-de /usr/local/overlays/local /usr/local/overlays/bmg-main"

#PORTDIR_OVERLAY=/usr/local/overlays

```

Wo liegt der Fehler?

----------

## fuchur

@ flammenflitzer

 *Quote:*   

> 
> 
> ....
> 
> ....
> ...

 

Ich habe das script geschrieben als portage noch nicht mit mehreren einträgen in "PORTDIR_OVERLAY" umgehen konnte.

Daher bei dir die fehlermeldung denke ich.

Ich habe das script oben geändert solte nun funktionieren.

mfg

----------

## mrsteven

Ich habe einen Cronjob in /etc/cron.daily, der tmpwatch verwendet. Alle Distfiles, die seit 6 Monaten nicht mehr verändert wurden, werden entsorgt:

```
if [[ -d /usr/portage/distfiles ]]; then

   /usr/sbin/tmpwatch --mtime --fuser 4320 /usr/portage/distfiles

fi
```

----------

## Yonathan

hiho...

ich habe dieses skript da oben von fuchur in /usr/local/bin/cleanportage gespeichert. habe die rechte auf:

```
-rwxr-xr-x  1 root root 8432 30. Okt 22:25 cleanportage
```

aber wie kann ich es ausführen? .cleanportage oder einfach nur cleanportage funktionieren nicht  :Sad: 

lg. yona

----------

## mrsteven

 *Yonathan wrote:*   

> .cleanportage

 

```
./cleanportage
```

----------

## l3u

Also ich kann "Yet Another Cleaner" empfehlen: https://forums.gentoo.org/viewtopic-t-337074.html

----------

## Bitspyer

Um die Mirrorserver zu entlasten kann man ja deltup benutzen. Da wird nicht alles an Daten übertragen, sondern nur das Delta und die Datei dann erst auf Deinem Rechner generiert.

----------

## Bitspyer

 *Mindphaser wrote:*   

> 
> 
> Ich benutze MySQL als DB-Backend für Portage (weil schneller), hab also alles was du in dieser Ordnerstrukur hast in einer MySQL Datenbank, und diese Datenbank ist rund 23MB gross.... 

 

Welches Tool nutzt Du da? Was selbst gestricktes? Ich bin jetzt schon am suchen, finde aber nix für Portage und Mysql als Backend.....

See Ya

Bitspyer

----------

## Bitspyer

Oh, bin schon fündig geworden.....

HOWTO: Use MySQL as a DB backend to Portage

[HOWTO] Speeding up portage with cdb -- UPDATE

----------

