2017-06-26 3 views
1

J'ai une recette pour compiler un pilote d'imprimante et avoir quelques lignes simples à exécuter dans do_install.Pourquoi j'obtiens des conflits/etc/cups entre les tentatives d'installation dans Yocto?

do_install() { 
    install -d ${D}${libdir}/cups/filter 
    install -m 755 ${B}/src/rastertoprinter ${D}${libdir}/cups/filter/ 
    install -d ${D}${sysconfdir}/cups/ppd 
    install -m 755 ${B}/../rastertoprinter/printer_name.ppd ${D}${sysconfdir}/cups/ppd/ 
} 

Pour compiler les sources que j'ai sur des tasses et DÉPEND aussi un rdepends sur des tasses comme le système d'exploitation a besoin tasses installés pour imprimer bien sûr. Le pilote d'imprimante n'étant pas disponible publiquement, je l'ai renommé rastertoprinter et modifié mes noms de chemin d'accès. Essentiellement, je dois simplement créer ou m'assurer que le répertoire/usr/lib/cups/filter existe et copier le programme rastertoprinter à cet emplacement. Je dois également créer ou m'assurer que le répertoire/etc/cups/ppd existe et copier le fichier .ppd dans ce répertoire.

Les deux premières lignes fonctionnent très bien, mais le 3 plaids les erreurs suivantes:

file /etc/cups conflicts between attempted installs of printername-r0.corei7_64 and cups-2.2.2-r0.corei7_64 
file /etc/cups/ppd conflicts between attempted installs of printername-r0.corei7_64 and cups-2.2.2-r0.corei7_64 

Je ne comprends pas pourquoi les recettes ne peuvent pas créer ce répertoire et mettre des choses en elle? Bizarrement, je suis capable de faire le premier répertoire/usr/lib/cups/filter bien.

Répondre

1

Il s'avère que le problème est que chaque fichier à empaqueter dans Yocto génère également un %dir pour chaque parent de chaque fichier. Nous ne voulons pas posséder un répertoire qui appartient à un autre paquet, donc si vous ajoutez ceci à votre recette:

DIRFILES = "1" 

Il fera de votre package pour ne pas propres répertoires parents des fichiers package.

Cela générera un fichier de spécification RPM sans les entrées %dir.