[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#38838: 'whatis' doesn't work
From: |
Maxim Cournoyer |
Subject: |
bug#38838: 'whatis' doesn't work |
Date: |
Wed, 02 Mar 2022 00:26:13 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Hello,
zimoun <zimon.toutoune@gmail.com> writes:
> Dear,
>
> I confirm that something appears unexpected with the command 'whatis'.
>
> Below, using Guix 3a695c01d7ee18f30f22df53f3c44dfac04017f1, and running
> `guix environment --ad-hoc man-db man-pages --pure` then let output the
> internal debugging information (option '-d'). See below.
>
> Everything seems pointing to the correct path, so maybe it should come
> from the 'index.db' file.
[...]
> I do not know if this report helps and if the index is the culprit.
You were on the right path; the database file was indeed the culprit.
This is the database, in hex, generated by man-db for a single cat.1.gz
man page:
--8<---------------cut here---------------start------------->8---
2476 6572 7369 6f6e 2400 322e 352e 3000 $version$.2.5.0.
00003010: 6361 7400 2d09 3109 3109 3136 3436 3138 cat.-.1.1.164618
00003020: 3834 3934 0939 3333 3430 3030 3430 0941 8494.933400040.A
00003030: 092d 092d 0967 7a09 636f 6e63 6174 656e .-.-.gz.concaten
00003040: 6174 6520 6669 6c65 7320 616e 6420 7072 ate files and pr
00003050: 696e 7420 6f6e 2074 6865 2073 7461 6e64 int on the stand
00003060: 6172 6420 6f75 7470 7574 0000 0000 0000 ard output......
00003070:
--8<---------------cut here---------------end--------------->8---
while this is what Guix was generating:
--8<---------------cut here---------------start------------->8---
00000600: 2476 6572 7369 6f6e 2400 322e 352e 3000 $version$.2.5.0.
00000610: 2f74 6d70 2f67 7569 782f 6d61 6e2f 6d61 /tmp/guix/man/ma
00000620: 6e31 2f63 6174 2e31 2e67 7a00 6361 7409 n1/cat.1.gz.cat.
00000630: 3109 3109 3009 3009 4109 2d09 2d09 677a 1.1.0.0.A.-.-.gz
00000640: 0963 6f6e 6361 7465 6e61 7465 2066 696c .concatenate fil
00000650: 6573 2061 6e64 2070 7269 6e74 206f 6e20 es and print on
00000660: 7468 6520 7374 616e 6461 7264 206f 7574 the standard out
00000670: 7075 7400 0000 0000 0000 0000 0000 0000 put.............
--8<---------------cut here---------------end--------------->8---
The entry that comes right after the 2.5.0 version is the key. Guix was
using the file name, while man-db uses the name of the man page, such as
'cat'.
With the following change:
--8<---------------cut here---------------start------------->8---
modified guix/man-db.scm
@@ -110,7 +110,12 @@ (define (write-mandb-database file entries)
;; Write ENTRIES in sorted order so we get deterministic output.
(for-each (lambda (entry)
(gdbm-set! db
- (string-append (mandb-entry-file-name entry)
+ ;; For the 'whatis' tool to find anything, the key
+ ;; should match the name of the software,
+ ;; e.g. 'cat'. Derive it from the file name, as
+ ;; the name could technically be #f.
+ (string-append (abbreviate-file-name
+ (mandb-entry-file-name entry))
"\x00")
(entry->string entry)))
(sort entries mandb-entry<?))
--8<---------------cut here---------------end--------------->8---
I now get:
--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix shell --pure man-db coreutils -- whatis cat
[...]
building database for manual pages...
building profile with 2 packages...
cat (1) - concatenate files and print on the standard output
--8<---------------cut here---------------end--------------->8---
and apropos, man seem to continue working as expected.
Pushed as deaa322963.
Closing.
Thanks for the report!
Maxim
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug#38838: 'whatis' doesn't work,
Maxim Cournoyer <=