Opção não reconhecida de updatedb '--localpaths ='

3

Estou tentando atualizar um único diretório que criei. Estou usando updatedb para que ele seja encontrado pelo comando locate .

Comando usado:
updatedb --localpaths='/frodo/lib/modules/3.12.3-031203-generic/kernel'

Saída: updatedb: unrecognized option '--localpaths=/frodo/lib/modules/3.12.3-031203-generic/kernel'

O mesmo resultado com:

updatedb --localpaths=  
updatedb: unrecognized option '--localpaths='

De man updatedb :

   --localpaths='path1 path2...'
          Non-network directories to put in the database.  Default is /.

Por que esse erro ocorre quando --localpaths é claramente indicado como uma opção?

Informação do sistema:

updatedb --version
updatedb (mlocate) 0.26
Copyright (C) 2007 Red Hat, Inc. All rights reserved.
This software is distributed under the GPL v.2.

This program is provided with NO WARRANTY, to the extent permitted by law.

lsb_release -a
LSB Version:  core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:
core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-
noarch:core-4.0-amd64:core-4.0-noarch
Distributor ID:   Ubuntu
Description:  Ubuntu 13.10
Release:  13.10
Codename: saucy

uname -r
3.12.3-031203-generic

Editar: tive sucesso com updatedb -U /frodo/lib/modules/3.12.3-031203-generic/kernel , mas ainda gostaria de saber por que o --localpaths do manual não é reconhecido.

Esta opção alternativa não está no manual, mas foi encontrada com updatedb -h .

   -U, --database-root PATH       the subtree to store in database 
(default "/")
    
por iyrin 18.04.2015 / 15:54

1 resposta

4

Existem duas implementações populares de updatedb. Um deles é da GNU findutils . Outro é mlocate . Eles suportam diferentes opções de linha de comando e arquivos de configuração, especialmente para o programa updatedb .

Parece que o comando updatedb no seu sistema é o do mlocate, mas a página man é a do findutils. Normalmente, o Ubuntu tem um sistema (herdado do Debian) chamado alternativas , que garante que quando houver múltiplas implementações de um programa, a escolha de programa e a escolha da página do manual são consistentes. No entanto, nesse caso, a página updatedb man não está registrada na lista de alternativas, apenas o executável locate , a página locate man e o executável updatedb . Isso ocorre porque as páginas updatedb man estão em uma seção diferente: findutils a coloca na seção 1, mas mlocate a coloca na seção 8. Assim, man 1 updatedb mostra a página updatedb(1) man, porque é a única página updatedb man na seção 1. E man updatedb mostra a página man na seção 1 porque essa é a primeira seção com uma correspondência. Discutivelmente, isso é um erro de empacotamento em mlocate: os mantenedores do pacote findutils e mlocate devem concordar em colocar as man pages para updatedb na mesma seção, e mlocate deve declarar uma alternativa para sua página man; já que mlocate coloca updatedb em /usr/bin , sua página man deve estar na seção 1. Como as coisas estão, você pode ver a página man do mlocate updatedb com man 8 updatedb .

A implementação mlocate de updatedb não tem uma opção exatamente equivalente a --localpaths de findutils. Você pode criar um banco de dados separado e especificar qual subárvore ele contém com a opção --database-root ou executar updatedb --database-root / --database-root /frodo/lib/modules/3.12.3-031203-generic/kernel .

    
por 19.04.2015 / 00:34