# [emerge] paquets ~masqués

## alctraz

Salut,

Ya une chose qui m'agace un peu avec la commande emerge lorsqu'on cherche a emerger un paquet ~masqué qui a de très nombreuses dépendances qui sont elles aussi ~masquées. On doit se taper un "emerge -vp" pour repérer chacune des dép une-à-une et les ajouter dans package.keywords a chaque étape.

Exemple:

```
root@gentoo-lap # emerge -vp kde

These are the packages that I would merge, in order:

Calculating dependencies -

!!! All ebuilds that could satisfy "~kde-base/kdeartwork-3.4.0" have been masked.

!!! One of the following masked packages is required to complete your request:

- kde-base/kdeartwork-3.4.0 (masked by: ~x86 keyword)

For more information, see MASKED PACKAGES section in the emerge man page or 

section 2.2 "Software Availability" in the Gentoo Handbook.

!!!    (dependency required by "kde-base/kde-3.4.0" [ebuild])
```

Ce qui indique qu'il faut ajouter kde-base/kdeartwork dans package.keywords. Puis il faut répéter l'operation jusqu'a épuiser ttes les dép. C'est très long...

Donc ma question est:

Est-ce que je suis passé a coté d'une option d'emerge qui permettrait d'obtenir directement la liste des paquet ~masqués qu'il faut ajouter dans package.keywords et pas ce message d'erreur? (pas question d'ACCEPT_KEYWORDS evidemment)

Si ce n'est pas le cas, je crois que je vais essayer de scripter un truc pour accomplir cette tache.

merci

----------

## lmarcini

La solution est dans le wiki (http://gentoo-wiki.com/HOWTO_Update_KDE_3.3_to_KDE_3.4)

----------

## alctraz

 *lmarcini wrote:*   

> La solution est dans le wiki (http://gentoo-wiki.com/HOWTO_Update_KDE_3.3_to_KDE_3.4)

 

Non je crois pas, ils parlent de 2 methodes: ou bien ACCEPT_KEYWORDS, ou bien package.keywords.

La premiere n'étant pas acceptable, ils proposent la methode que j'ai indiqué plus haut pour repérer toi meme les paquets a ajouter dans package.keywords.

----------

## Apsforps

Ben oui, à part que si tu vas un peu plus bas, ils te donnent le moyen de le faire automatiquement (avec une boucle for)

----------

## alctraz

 *Apsforps wrote:*   

> Ben oui, à part que si tu vas un peu plus bas, ils te donnent le moyen de le faire automatiquement (avec une boucle for)

 

Nan mais vous comprenez pas, je porte aucun interet a kde, c'est juste un exemple.

Leur truc avec la boucle for ca marche que pour kde, ca ira pas pour e-9999 par exemple.

Je veux un truc tt a fait general -> je vais devoir faire un script.

----------

## Enlight

Ah bah là t'es bon pour un truc récursif qui grep les depend et les rdepend...ou tu sed dans l'output d'emerge -pv. où alors tu passe en full ~x86 et tu te dis que c'est pas plus mal.

----------

## alctraz

voila le script 'tilde-emerge':

```
#!/usr/bin/perl

# Unmask the depedencies of a given package if necessary

# so that you can easily emerge without addind all these depedencies

# one-by-one in the package.keywords file yourself.

# USAGE: tilde-emerge <package>

use strict;

$ARGV[0] || die 'Please specify a package';

my (@emerge, @package);

open(KEYWORDS, '>>/etc/portage/package.keywords');

LABEL: {

        open(EMERGE, "-|", "emerge -vp $ARGV[0]");

        @emerge = <EMERGE>;

        close EMERGE;

        @package = @emerge[6] =~ /- (.*?)-[^-]+(?:-r\d*)? \(masked by: (\S*) keyword\)/ or last LABEL;

        print KEYWORDS "@package[0] @package[1]\n";

        print "Added '@package[0] @package[1]' to package.keywords...\n";

        redo LABEL;

}

close KEYWORDS;
```

et voila ce que ca donne pour e-9999 par exemple:

```
root@gentoo-lap # echo 'x11-wm/e -*' >> /etc/portage/package.keywords

root@gentoo-lap # emerge -vp e

These are the packages that I would merge, in order:

Calculating dependencies -

!!! All ebuilds that could satisfy "dev-libs/embryo" have been masked.

!!! One of the following masked packages is required to complete your request:

- dev-libs/embryo-9999 (masked by: -* keyword)

- dev-libs/embryo-0.9.1.004 (masked by: ~x86 keyword)

For more information, see MASKED PACKAGES section in the emerge man page or 

section 2.2 "Software Availability" in the Gentoo Handbook.

!!!    (dependency required by "x11-wm/e-9999" [ebuild])

root@gentoo-lap # tilde-emerge e

Added 'dev-libs/embryo -*' to package.keywords...

Added 'dev-libs/eet ~x86' to package.keywords...

Added 'x11-libs/ecore ~x86' to package.keywords...

Added 'x11-libs/evas ~x86' to package.keywords...

Added 'media-libs/edje ~x86' to package.keywords...

root@gentoo-lap # emerge -vp e

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild  N    ] dev-libs/embryo-9999  -doc +nls 0 kB 

[ebuild  N    ] dev-libs/eet-0.9.10.004  -doc +nls 0 kB 

[ebuild  N    ] dev-db/edb-1.0.5  -debug -doc +gtk +ncurses +nls 614 kB 

[ebuild  N    ] x11-libs/evas-0.9.9.004  +X -cairo -debug +directfb -doc +fbcon +jpeg -mmx +nls +opengl +png +sse 0 kB 

[ebuild  N    ] x11-libs/ecore-0.9.9.002  +X -doc +fbcon +nls +opengl 0 kB 

[ebuild  N    ] media-libs/edje-0.5.0.004  -doc +nls 0 kB 

[ebuild  N    ] x11-wm/e-9999  -doc +nls 0 kB 

Total size of downloads: 614 kB
```

J'ai aussi essayé avec kde, ca fonctionne, et on se rend compte que ca sert absolument a rien de demasquer tt ce qui se trouve dans kde-base et kde-extra, il suffit de qqs paquets seulement.

----------

## Apsforps

Ce script à l'air très bien, ça me servira sûrement (pour les -* puisque je suis en full ~x86)

Juste une petite remarque par contre, pour enlightenment, il démasque en fait les ~x86 alors que ce sont les -* (comme ça il va en live sur le cvs au lieu de prendre des snapshots) qu'il faudrait démasquer...

----------

## alctraz

 *Apsforps wrote:*   

> Ce script à l'air très bien, ça me servira sûrement (pour les -* puisque je suis en full ~x86)
> 
> Juste une petite remarque par contre, pour enlightenment, il démasque en fait les ~x86 alors que ce sont les -* (comme ça il va en live sur le cvs au lieu de prendre des snapshots) qu'il faudrait démasquer...

 

Ok, mais je peux helas rien faire pour ce cas particulier :(

Le script demasque les paquets comme portage le suggère.

----------

## SunMetis

salut je trouve ce post proche de mon probleme 

concerant la mise a jour de Xorg en faisant un petit eix xorg-x11 je trouve

 x11-base/xorg-x11

     Available versions:  6.8.0-r5 6.8.2-r1 [M]6.8.2-r2 [M]6.8.99.3 [M]6.8.99.5

     Installed:           6.8.2-r1

     Homepage:            http://xorg.freedesktop.org/

     Description:         An X11 implementation maintained by the X.Org Foundation

Je veux passer a la derniere version alors comme d'hab je vais dans /usr/portage/package.keywords.. rajoute une ligne 

x11-base/xorg-x11 ~x86 je refais un petit emerge xorg-x11 et la stupefaction il reste sur la meme version 

alors je le fais "plus manuel" : ACCEPT_KEYWORDS="~x86" emerge xorg-x11 et nan toujours la versio 6.8.2

comment je fais pour mettre ce xorg a jour je le guide sur le bon fichier au fusil a pompe

?

----------

## Dais

SunMetis: fais une recherche concernant les paquets "hard masked" et l'utilisation du fichier /etc/portage/package.unmask

----------

## loopx

Génial ce ptit script  :Surprised: 

 :Cool: 

----------

## she0gorath

Le script le marche pas chrz moi. Message d'erreur :

```

 Senilis ~ # ./tilde-emerge texlive

Unrecognized character \xC2; marked by <-- HERE after <-- HERE near column 1 at ./tilde-emerge line 16.

Senilis ~ # 
```

Je n'y connais pas grand-chose en perl, je ne sais pas trop ce que tout ça veut dire...

----------

## Poussin

Si ça ce n'est pas du bon déterrage!

Alors, ce paquet pourrait t'aider:

app-portage/autounmask

Ou si tu n'as pas froid aux oreilles, il y a un mécanisme équivalent (mais que je trouve "mieux") dans portage 2.2

----------

## netfab

 *Poussin wrote:*   

> 
> 
> Ou si tu n'as pas froid aux oreilles, il y a un mécanisme équivalent (mais que je trouve "mieux") dans portage 2.2

 

Dans portage stable aussi.  :Wink: 

----------

