[ PACMAN ] question fonctionnement

Mise à jour / Création /debug de paquetages
_alexmyself
Chu Ko Nu
Messages : 405
Inscription : lun. 18 sept. 2006, 16:21
Localisation : france, yvelines 78

[ PACMAN ] question fonctionnement

Message par _alexmyself »

salut,

je suis en train de jouer a scripter pacman et j'ai une question pour le moins vitale:

comment pacman sait ce qu'il y a d'installé sur le système ?

si j'ai bien compris il regarde simplement ce qu'il y a dans /var/lib/pacman/*
mais j'ai comme un gros doute et globalement je me sent pas joueur sur ce coup... :D

merci d'avance
_alexmyself
Chu Ko Nu
Messages : 405
Inscription : lun. 18 sept. 2006, 16:21
Localisation : france, yvelines 78

Message par _alexmyself »

là je vient de faire un: pacman -S --clean --clean

il a vidé /var/cache/pacman/*

par contre après il m'a demandé si je voulais supprimer les dépots inutilisés de: /var/lib/pacman/

je pense que je n'en avait pas, mais ca confirme mon doute
si il vire testing parceque je l'ai commenté dans pacman.conf, il fait comment pour savoir ce que j'ai pu installer depuis testing et qui est peut-etre toujours sur le système?
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Message par wain »

_alexmyself a écrit :si il vire testing parceque je l'ai commenté dans pacman.conf, il fait comment pour savoir ce que j'ai pu installer depuis testing et qui est peut-etre toujours sur le système?
Il sait pas, il pense que... :?
Une fois qu'un paquetage est installé (on le voit dans /var/lib/pacman/local/ pour répondre à ta question précédente), il n'est plus possible de savoir à coup sûr de quel dépôt il vient.

yaourt accède directement à la base de données /var/lib/pacman/. Tu trouveras plein d'exemples dans le code (en bash) à la rubrique "Package database".

exemple:
Pour savoir si un package est installé, j'ai créé cette fonction:

Code : Tout sélectionner

###################################
### Package database functions  ###
###################################
isinstalled(){
        if grep -qrl --include="desc" "^$1$" "$PACMANROOT/local"; then return 0; else return 1; fi
}
on l'appelle avec "isinstalled packagename". La fonction renvoie 0 si packagename est installé, sinon 1.
Répondre