Encontre o pacote de software com maior número de páginas de manual do sistema

3

Eu quero mostrar o nome do pacote de software instalado que possui o maior número de páginas de manual do sistema. Existe um comando para fazer isso?

    
por Ramesh 02.09.2014 / 22:28

4 respostas

3

No meu comando gentoo box

qfile /usr/share/man/*/* | awk '{print $1}' | sort | uniq -c | sort -n

    864 sys-libs/ncurses
   1139 sys-apps/man-pages-posix
   1283 dev-libs/openssl
   2209 sys-apps/man-pages
   2246 x11-libs/libxcb

Mas depois de incluir todos subdiretórios com uma pequena ajuda de ** padrão

qfile /usr/share/man/**/* | awk '{print $1}' | sort | uniq -c | sort -n

man-pages vence:

    933 sys-libs/ncurses
   1142 sys-apps/man-pages-posix
   1352 dev-libs/openssl
   2254 x11-libs/libxcb
   2310 sys-apps/man-pages
    
por 02.09.2014 / 23:26
4

Para sistemas baseados em Debian, para obter o pacote com as páginas man mais instaladas :

dpkg -S '/usr/share/man/*.gz' | cut -d: -f1 | sort | uniq -c | sort -rn | head -1 | awk '{print $2}'

Para obter o pacote com as páginas man mais disponíveis (instaladas ou não):

apt-file search /usr/share/man | cut -d: -f1 | uniq -c | sort -rn | head -1 | awk '{print $2}'

No meu sistema, o pacote com as páginas de manual mais disponíveis é linux-manual-3.2 .

Explicação

Tomando o pipeline usado para criar pkg um passo de cada vez:

  • apt-file search /usr/share/man

    Isso retorna os nomes de pacotes e arquivos para todos os arquivos na hierarquia /usr/share/man .

  • cut -d: -f1

    Isso remove os nomes de arquivos da lista para que possamos ter apenas uma lista de pacotes.

  • uniq -c

    Isso conta o número de páginas man em cada pacote. (Muitas vezes, é preciso classificar antes de usar uniq -c , mas apt-find produz um pacote de saída de cada vez, tornando essa etapa desnecessária.)

  • sort -rn

    Isso faz uma classificação numérica em ordem decrescente para que o pacote com a maioria das páginas man esteja no topo e as que tenham menos estejam na parte inferior.

  • head -1

    Isto escolhe a primeira linha que é aquela com mais páginas man.

  • awk '{print $2}'

    Isto seleciona o nome do pacote daquela linha.

Achei interessante usar apenas uma parte desse pipeline:

apt-file search /usr/share/man | cut -d: -f1 | uniq -c | sort -rn | less

Isso exibe, via less , a lista de pacotes classificados em ordem decrescente pelo número de páginas man. No meu sistema, os cinco primeiros são:

   3453 linux-manual-3.2
   3384 liblapack-doc-man
   2350 freebsd-manpages
   1916 manpages-ja-dev
   1905 manpages-fr-dev
    
por 02.09.2014 / 22:44
3

Alternativa para Debian / Ubuntu / Mint ...

$ cd /var/lib/dpkg/info && 
  grep -c '^/usr/share/man/.*/' *.list | sort -t: -k2rn | less -XF

Dá para mim:

manpages-dev.list:1962
libssl-doc.list:1171
tcl8.6-doc.list:813
perl-doc.list:719
libdatetime-locale-perl.list:470
tcllib.list:407
    
por 02.09.2014 / 23:51
2

Esta solução funcionou nas máquinas CentOS e RHEL .

rpm -qf $(man -w $(compgen -ac)) | sort | uniq -c | sort -nr | head -1

Eu posso gerar a lista de todos os comandos que estão disponíveis no sistema usando compgen -ac . Agora, man -w pode informar a man page correspondente desse comando.

Eu dou esta página man como entrada para rpm -qf , o que me dará o pacote que possui. Agora, classifico a saída e, em seguida, localizo o total de ocorrências e, em seguida, obtenho a primeira linha que me fornecerá o nome do pacote com a contagem de páginas man correspondentes a esse pacote. Depois de executar o comando acima, a saída que recebo é

329 netpbm-progs-10.47.05-11.el6.x86_64

Portanto, a saída acima indica que eu tenho 329 entradas de página manual para os comandos fornecidos pelo pacote netpbm-progs-10.47.05-11.el6.x86_64 , que é o mais alto em meu sistema.

Referências

link

    
por 02.09.2014 / 22:28