¿Cómo actualizo las páginas del manual de Java con Homebrew?

Estoy usando Homebrew para instalar AdoptOpenJDK 11. Quiero ver la documentación a través de las páginas del manual.

Síntomas

Cuando ejecuto man java, veo documentación de 2004. En la parte inferior:

SEE ALSO
       javac(1), jdb(1), javah(1), jar(1),

       See (or search java.sun.com) for the following:

       The Java Extensions Framework @
         http://java.sun.com/j2se/1.5.0/docs/guide/extensions/index.html

       Security Features @
         http://java.sun.com/j2se/1.5.0/docs/guide/security/index.html

                                 23 June 2004                          java(1)

Cuando ejecuto man javac, veo documentación de 2002. En la parte inferior:

SEE ALSO
       jar(1), java(1), javadoc(1), javah(1), javap(1), jdb(1)

       See or search the Java web site for the following:

       The Java Extensions Mechanism @
                 http://java.sun.com/j2se/1.5/docs/guide/extensions/index.html

                                 05 March 2002                        javac(1)

Encuentro la ubicación del javamanual:

man -w java
# /usr/share/man/man1/java.1

Veo que Homebrew está almacenando manuales para otro software: /usr/local/share/man.

Basado en la fuente del barril, no veo las páginas de manual instaladas, pero no sé qué OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.pkgestá haciendo. Cuando ejecuto fswatch /usr/local/share/mientras reinstalo adoptopenjdk11, no veo ningún cambio.

brew cask cat adoptopenjdk11

# cask 'adoptopenjdk11' do
#   version '11.0.8,10'
#   sha256 'c9ce3e78a7ec7f8c23041af63a66bfe18bbf75c7bfa8f8a51148a098f3653699'
# 
#   url 'https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10/# OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.pkg'
#   appcast "https://github.com/AdoptOpenJDK/openjdk#{version.major}-binaries/releases/latest"
#   name 'AdoptOpenJDK 11'
#   homepage 'https://adoptopenjdk.net/'
#   pkg 'OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.pkg'
#   postflight do
#     system_command '/usr/sbin/pkgutil', args: ['--pkg-info', 'net.adoptopenjdk.11.jdk'], print_stdout: true
#   end
#   uninstall pkgutil: 'net.adoptopenjdk.11.jdk'
# end

lo que probé

Leí ¿Están desactualizadas mis páginas man de macOS? , pero no creo que la respuesta se aplique aquí, porque Java no es una herramienta antigua de Unix, y he instalado Java con Homebrew.

Verifiqué que tengo instalada la última versión de AdoptOpenJDK 11:

brew reinstall adoptopenjdk11
# ==> Downloading https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.8%2B10/OpenJDK11U-jdk_x64_mac_hotspot_11.
# Already downloaded: /Users/alex.ordonez/Library/Caches/Homebrew/# downloads/1d0d41e7cf8f14ebb4df0ff39fa16e0fe2a1ac85f05ae404c62841c6ff01d4c8--OpenJDK11U-jdk_x64_mac_hotspot_11.0.8_10.pkg
# ==> Verifying SHA-256 checksum for Cask 'adoptopenjdk11'.
# ==> Uninstalling Cask adoptopenjdk11
# ==> Uninstalling packages:
# net.adoptopenjdk.11.jdk
# ==> Purging files for version 11.0.8,10 of Cask adoptopenjdk11
# ==> Installing Cask adoptopenjdk11
# ==> Running installer for adoptopenjdk11; your password may be necessary.
# ==> Package installers may write to any location; options such as --appdir are ignored.
# installer: Package name is AdoptOpenJDK
# installer: Upgrading at base path /
# installer: The upgrade was successful.
# package-id: net.adoptopenjdk.11.jdk
# version: 11.0.8+10
# volume: /
# location: Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk# 

Puedo verificar que las versiones son correctas:

java -version
# openjdk version "11.0.8" 2020-07-14
# OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.8+10)
# OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.8+10, mixed mode)

javac -version
# javac 11.0.8

Además, puedo compilar y ejecutar código Java 11.

Información adicional: estoy usando macOS Catalina 10.15.6 (19G2021). Mi caparazón es Fish. También tengo instalado AdoptOpenJDK 8.

¿La fórmula homebrew proporciona páginas man? ¿Dónde los instala si lo hace?
@MarcWilson Creo que homebrew guarda las páginas man aquí: /usr/local/share/man. Veo páginas de manual que solo he instalado con homebrew allí.
Pregunté dónde se instalan las páginas man de la fórmula homebrew que intentas usar. Instala páginas de manual, ¿verdad ?
@MarcWilson si importa, adoptopenjdk11 es un barril, no una fórmula. Si instala páginas man en alguna parte o no, no lo sé. Lo ejecuté fswatch /usr/local/share/mientras reinstalaba adoptopenjdk11 y no vi ningún cambio. Veo las páginas del manual en /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/man, pero no en el manpath, a menos que use mi respuesta a continuación. Intenté investigar ayer, pero no pude encontrar cómo un barril Homebrew instalaría las páginas del manual.

Respuestas (1)

Tengo una solución, pero si alguien encuentra una solución más simple, la aceptaré. Aquí esta el mio.

Recuerda, estoy usando pescado.

~/.config/fish/functions/java8.fish

function java8
    if set --local idx (contains --index -- $JAVA_HOME $fish_user_paths)
        # Remove other JAVA_HOME from path
        # Otherwise it will take priority
       set --erase fish_user_paths[$idx]
    end

    set --export JAVA_HOME /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

    # We do not need JAVA_HOME on the path for the executables
    # We need it for the man pages, so man will search $JAVA_HOME/man
    # If we add $JAVA_HOME/bin to the path, then man erroneously searches $JAVA_HOME/bin/man
    set fish_user_paths $fish_user_paths $JAVA_HOME
end

Copié y ajusté este script para Java 11 (abreviado):

~/.config/fish/functions/java11.fish

function java11
    if set --local idx (contains --index -- $JAVA_HOME $fish_user_paths)
       set --erase fish_user_paths[$idx]
    end
    set --export JAVA_HOME /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
    set fish_user_paths $fish_user_paths $JAVA_HOME
end

Ahora mi fish_user_paths(y PATH) tiene JAVA_HOME:

echo $fish_user_paths
# /usr/local/sbin /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

echo $PATH
# /usr/local/sbin /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home /usr/local/bin /usr/bin /bin /usr/sbin /sbin

Esto significa manpathtambién tiene $JAVA_HOME/man(abreviado):

manpath
# /usr/local/share/man:/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/man:/usr/share/man

Y significa manlecturas del directorio correcto:

man --path java
# /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/man/man1/java.1

Y puedo cambiar a Java 8 y volver a Java 11:

java8
man --path java
# /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/man/man1/java.1

java11
man --path java
# /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/man/man1/java.1

Hay un problema aparte, que es que JDK 11 parece enviarse con la documentación de JDK 8.

man -M /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/man javac | tail -n 1
# JDK 8                            03 March 2015                        javac(1)
Solución más simple... Hace más de un año dejé Homebrew y lo reemplacé con MacPorts. Estoy mucho más feliz.
Entonces, ¿el problema real es que las páginas de manual de las que se quejaba no se están enviando realmente?
@MarcWilson, parece ser un problema aparte. AdoptOpenJDK 8 se envía con las páginas de manual correctas, pero no se encuentran a manmenos que use esta solución. AdoptOpenJDK 11, por otro lado, no se envía con las páginas de manual correctas y tampoco se encuentran a manmenos que use esta solución.