# Delucidazioni su depclean

## zar Marco

Ciao ragazzi, non riesco a capire come funziona riguardo ai symlink del Kernel, praticamente quelli selezionabili con eselect kernel list.

Se è improprio cancello. 

In pratica, io ho come kernel il 4.13.10, ed ho i sorgenti del 4.13.9 4.13.11 e 4.13.12.

Se do un depclean vuole cancellarmi tutti i sorgenti esclusi quelli dell'ultimo, ma così facendo in eselect non troverei più quello che uso. 

Magari non è importante ma vorrei capire

----------

## sabayonino

il depclean agisce sui pacchetti installati (oltre ad altre cosette)

tu stai utilizzando  4.13.10 , ma gli altri risultano installati a livello di pacchetto di database ? o sono stati rimossi 

inoltre l'"eselect kernel ..." , gioca sul symlink  /usr/src/linux che punta alla versione del kernel di cui ,un giorno se ne avrai nuovamente bisogno, vorrai ri-compilare oltre per l'installazione/ricompilazione di eventuali moduli esterni.

```
# eix -I gentoo-sources
```

----------

## fedeliallalinea

Se vuoi che una certa versione non venga eliminata la devi aggiungere nel world file con

```
# emerge --noreplace =sys-kernel/gentoo-sources-4.13.9
```

EDIT: questo succede perche' nel world file hai solo sys-kernel/gentoo-sources e depclean in questo caso elimina tutti gli slot che non dipendono da nulla (come nel caso del kernel che nessuno altro pacchetto ha bisogno come dipendenza il kernel) tranne l'ultimo

----------

## zar Marco

Grazie mille ad entrambi! Mi è un po' più chiara come cosa. Ma è importante quindi che non vada ad eliminare il Kernel che sto usando da eselect, quindi da /usr/src/Linux giusto?

Quindi se ho capito bene non c'è la possibilità per automatizzare il non depclean del Kernel che uso, cioè ora ho il 10, e do il comando noreplace, se domani passassi alla diciamo 15, dovrei ridare il comando, giusto?

----------

## fedeliallalinea

 *zar Marco wrote:*   

> Quindi se ho capito bene non c'è la possibilità per automatizzare il non depclean del Kernel che uso, cioè ora ho il 10, e do il comando noreplace, se domani passassi alla diciamo 15, dovrei ridare il comando, giusto?

 

Esatto o almeno che io sappia il noreplace e' l'unico modo che conosco.

Non so se genkernel ha qualche opzione per lanciare un hook alla fine per fare il noreplace ma poi l'utente dovrebbe ricordarsi di toglierlo anche

----------

## sabayonino

se utilizzi genkernel , con l'opzione --saveconfig , la configurazione viene automaticamente salvata in /etc/kernels e la puoi riutilizzare anche con altri kernel con 

supponendo che tu debba compilare l'ultimo kernel disponibile , puoi richiamare la configurazione del kernel (o altra) precedente anche se i sorgenti sono stati rimossi

```
# genkernel --savec-onfig --kernel-config=/etc/kernels/<configurazione> ...
```

i sorgenti li puoi anche rimuovere (se devi ricompilare basta riscaricarli) 

come scritto , eselect kernel , va solo a spostare il simlink che punta ai sorgenti del kernel che ti appresti a compilare e se non li hai puoi sempre riscaricarli

non vengono rimosse le immagini e l'initramfs in /boot

per far ciò occorre rimoverli manualmente o utilizzzare il tool "eclean-kernel" se c'è ancora il quale rimuove le immagini ed i moduli+sorgenti del kernel se questi non sono più presenti in portage o sono stati rimossi con "emerge -C" (dal database)

disisnstallare  gentoo-sources comporta solo la rimozione dei sorgenti. (emerge -C o con --depclean)

----------

## zar Marco

Ah ok, quindi anche se perdo il symlink, non è importante, grazie mille

----------

## fedeliallalinea

 *zar Marco wrote:*   

> Ah ok, quindi anche se perdo il symlink, non è importante, grazie mille

 

Il symlink non lo perdi perche depclean non cancella la cartella ma solo il contenuto (se non ricordo male)

----------

## sabayonino

 :Rolling Eyes:   è preoccupato per il symlink ... puoi anche rimuovere l'intera cartella /usr/src

i kernel ti restano , il sistema parte ancora anche se il symlink punta ad un kernel diverso o a nulla

ripeto , serve solo per selezionare il kernel giusto all'atto della sua compilazione.

```
# emerge -C gentoo-sources:<slot>
```

e le sue varìanti , elimina solo il pacchetto dal database. nulla di fisicamente

```
app-admin/eclean-kernel

     Available versions:  (~)0.4 (~)0.4.1 0.4.2 [M](~)1.99.3 [M]**9999 {PYTHON_TARGETS="pypy python2_7 python3_4"}

     Homepage:            https://github.com/mgorny/eclean-kernel2

     Description:         Clean up old and stale kernel files

```

se vuoi eliminare fisicamente un kernel (le immagini che stanno in /boot) ed i suoi moduli

devi , manualmente eliminare il kernel(ed initramfs se c'è) da /boot

ed eseguire 

```
# eclean-kernel
```

il quale si occuperà di rimuovere i moduli /lib/modules/<kernel>  e i sorgenti /usr/src/<versione>[/code]

ricordati di aggiornare grub...

...oppure mi sa che forse si sta sbagliando con :

```
# eselect bzimage ...
```

```
 bzimage                   Switch bzImage default kernel by updating /boot/bzImage symlink
```

----------

## fedeliallalinea

 *sabayonino wrote:*   

> i kernel ti restano , il sistema parte ancora anche se il symlink punta ad un kernel diverso o a nulla
> 
> ripeto , serve solo per selezionare il kernel giusto all'atto della sua compilazione.

 

In realta' la cartella ti serve anche per la compilazione di alcuni pacchetti che vanno a vedere il .config.

----------

## zar Marco

Diciamo che quella di eselect è solo una mia paranoia, solo che mi sembrava strano che un depclean cancellasse anche il kernel in uso, cioè i suoi sorgenti.

Credevo che andasse ad eliminare fisicamente il pacchetto, come se magari mi chiedesse se volessi cancellare p.e. chrome od un qualsiasi altro pacchetto

----------

## fedeliallalinea

Portage si comporta come qualsiasi altro pacchetto slottato (che puoi avere piu' di una versione per lo stesso pacchetto).

Se viene aggiornato e non specifichi che vuoi la verione vecchia con noreplache, portage mantiene solo la versione piu' recente

----------

## sabayonino

 *fedeliallalinea wrote:*   

>  *sabayonino wrote:*   i kernel ti restano , il sistema parte ancora anche se il symlink punta ad un kernel diverso o a nulla
> 
> ripeto , serve solo per selezionare il kernel giusto all'atto della sua compilazione. 
> 
> In realta' la cartella ti serve anche per la compilazione di alcuni pacchetti che vanno a vedere il .config.

 

dicevo in generale. ma male che vada se proprio necessario , si reisnstallano i sorgenti , si copia il config salavato da qualche parte (o quello in uso in /proc/config.gz) ) e morta là.

il "problema sollevato" credo fosse la "paura" di eliminare fisicamente le immagini del kernel (con o senza l'initramfs) in /boot alla rimozione dei sorgenti e di trovarsi appiedato . cosa che non è così.

----------

## Maxxx

Io utilizzo questa opzione su depclean

```
emerge --ask depclean --exclude=’sys-kernel/gentoo-sources’
```

e poi rimuovo i kernel più vecchi manualmente.

Lo faccio anche con gcc

```
emerge --ask depclean --exclude=’sys-kernel/gentoo-sources’ --exclude='sys-devel-gcc'
```

----------

## fedeliallalinea

Per conoscenza https://bugs.gentoo.org/637322

----------

## sabayonino

 *Quote:*   

> Portage does not look at tools from eselect, gcc-config, etc.  If a user wishes to hold a certain slot of a package, they should run, eg., 'emerge --noreplace sys-devel/gcc:5.4.0' to have it added to the world file so it will not be depcleaned.

 

per qualche motivo non sono inseriti nel world file ? e depclean se li porta via , un pò come succedeva qualche anno fa con "nano"  che si portava via mezzo sistema   :Shocked: 

----------

## fedeliallalinea

 *sabayonino wrote:*   

> per qualche motivo non sono inseriti nel world file ? e depclean se li porta via , un pò come succedeva qualche anno fa con "nano"  che si portava via mezzo sistema  

 

Lo trovo corretto, se un package slottato non viene richiesto da nessun altro programma depclean lo elimina. Sei tu che devi metterlo nel world file se ti serve.

Non capisco il dilemma mi pare un comportamento pulito e chiaro, no?

----------

## sabayonino

lo so come funziona il depclean   :Mr. Green: 

non è per me ...

----------

