Comment puis-je savoir quels programmes contient un paquet apt-get?

17

Je voudrais savoir ce que certains packages spécifiques installent, par exemple, lors de l'installation ncurses, j'ai trouvé que la TABclé se développe:

sudo apt-get install ncurses-

montrer:

ncurses-base      ncurses-doc       ncurses-hexedit
ncurses-bin       ncurses-examples  ncurses-term

Comment pourrais-je savoir ce qui, disons, ncurses-terminstalle? Je m'intéresse principalement aux programmes, mais les bibliothèques et tout autre type de fichier pourraient également être utiles.

La méthode de ligne de commande , si possible, serait préférée ( toutes les autres acceptées aussi).

Sopalajo de Arrierez
la source
Quand vous dites «programmes», parlez-vous de binaires?
Braiam
Binaires et scripts, si possible, merci @Braiam.
Sopalajo de Arrierez

Réponses:

21

Voici quelques options, celles-ci répertorieront tous les fichiers installés par un package:

A. Liste de tous les fichiers inclus dans un package

  1. Pour les packages installés

    dpkg -L ncurses-term
    
  2. Pour tous les packages, installés ou non

    apt-file -F list ncurses-term
    

    Les -Ftours de correspondance de modèle afin que seuls les packages dont le nom exact correspond soient renvoyés. Vous devrez peut-être installer apt-fileavec sudo apt-get install apt-filepuis mettre à jour sa base de données avec sudo apt-file update.

B. Liste uniquement des fichiers exécutables inclus dans un package

  1. Pour les packages installés

    Installez simplement dlocate( sudo apt-get dlocate) et exécutez:

    dlocate -lsbin ncurses-term 
    

    Comme expliqué dans man dlocate:

    -lsbin Liste le chemin complet / les noms de fichiers des fichiers exécutables (le cas échéant) dans le package

    Si vous ne souhaitez pas installer de packages supplémentaires, vous pouvez le faire manuellement. Il suffit de rassembler la liste des fichiers et de trouver ceux parmi lesquels le bit exécutable est défini:

    apt-file -F list ncurses-term | cut -d ' ' -f 2 | 
        while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
    

    Le petit scriptlet ci-dessus imprimera le chemin uniquement ( cut -d ' ' -f 2), puis le passera à travers une whileboucle qui vérifie si le fichier est exécutable ( -x $file) et s'il s'agit d'un fichier normal, pas de répertoires ou de liens symboliques ( -f $file) et affiche son nom uniquement s'il réussit les deux tests .

  2. Pour tous les packages, installés ou non

    Je ne connais aucun moyen de répertorier uniquement les exécutables inclus dans un package désinstallé. Cependant, comme la plupart des exécutables sont installés dans des binrépertoires, vous pouvez en obtenir la plupart en analysant la sortie:

     apt-file -F list ncurses-term | grep -Ew "bin|sbin"
    

    L' -woption correspond à des mots entiers, de sorte que vous n'installez pas les choses, par exemple, trashbinou quoi que ce soit.


REMARQUE : aucune des commandes ci-dessus ne produira de sortie pour ncurses-termmais c'est parce que ce package n'installe aucun fichier exécutable. Les commandes fonctionnent néanmoins, essayez avec un package différent.

terdon
la source
Salut terdon, êtes-vous sûr que la commande devrait fonctionner sur les applications non installées? quand j'essaye, il propose simplement d'installer. Ce qui n'est pas si étrange, car le fichier .install est (probablement) téléchargé avec l'application?
Jacob Vlijm
@Jacob oui, je viens d'essayer avec un paquet que je sais n'est pas installé et j'ai apt-filerépertorié le contenu du paquet. Fonctionne sur les tests Debian et Ubuntu 13.10.
terdon
Aha, merci, cela fait sens, je viens de penser, car les dépendances sont également affichées sur les applications non installées.
Jacob Vlijm
4

Vous pouvez utiliser apt-file:

sudo apt-file update        
apt-file list package_name
Sylvain Pineau
la source
3
Si apt-filen'est pas installé, vous pouvez l'installer avec sudo apt-get install apt-file.
edwin
3

Il y a une possibilité en utilisant votre navigateur (donc pas besoin d'accéder à un système APT). Par exemple, pour répertorier le contenu du fichier du package "ncurses-term", tapez simplement

https://packages.debian.org/wheezy/all/ncurses-term/filelist

dans la barre d'adresse de votre navigateur (remplacez "wheezy" si nécessaire) pour Debian ou

http://packages.ubuntu.com/saucy/all/ncurses-term/filelist

pour Ubuntu (remplacez "saucy" si nécessaire).

Michael Kremser
la source
Une méthode intéressante. Cette liste est pour les paquets Debian, donc: est-elle censée être la même pour toute autre distribution comme Ubuntu ou Kali?
Sopalajo de Arrierez
1
@Sopalajo de Arrierez: Lisez précisément: J'ai également posté le lien pour le même package (ncurses-term dans cet exemple) pour Ubuntu. La liste des fichiers peut être la même si une version spécifique d'Ubuntu a la même version du paquet que l'un des ensembles Debian, mais ce n'est pas nécessairement. Ubuntu, Kali, Aptosid, CrunchBang et toutes les autres distributions basées sur Debian pourraient apporter des modifications aux paquets à leur guise (en particulier des fichiers comme "README" ou des fichiers de configuration pour le système init).
Michael Kremser
Je comprends, @MichaelKremser. Donc, comme je peux le voir, la recherche sur le Web du contenu d'un package est utile mais, de préférence, vous devez rechercher dans la liste officielle des packages de votre distribution spécifique.
Sopalajo de Arrierez
1
@Sopalajo de Arrierez: Oui, c'est vrai. Si vous êtes sur Debian Wheezy, utilisez la liste des paquets pour Debian Wheezy, si vous êtes sur des tests Debian, utilisez celle-ci, si vous êtes sur Ubuntu Precise, prenez sa liste. Il peut toujours y avoir des différences, même si par exemple Ubuntu prend beaucoup de paquets de Debian non modifiés. Cependant, cela peut changer à tout moment.
Michael Kremser