Как работает `apt-cache`?

Пожалуйста, простите за глупость этого вопроса, поскольку я новичок в Linux / Ubuntu.

Я наткнулся на команду apt-cache search в другом вопросе , когда искал способы заставить пакет LaTeX href работать на моей виртуальной машине Ubuntu. .

Затем я попробовал apt-cache search href и получил следующий результат:

libio-dirent-perl - Perl module for accessing dirent structs returned by readdir
libclass-std-storable-perl - Support for creating serializable "inside-out" classes
libconfig-inihash-perl - Perl extension for reading and writing INI files
libdata-dumper-compact-perl - vertically compact width-limited data formatter
libdbix-abstract-perl - DBI SQL abstraction
libdigest-md5-file-perl - Perl extension for getting MD5 sums for files and urls
libhtml-html5-outline-perl - implementation of the HTML5 Outline algorithm
libhtml-microformats-perl - parse microformats in HTML
libjs-autolink - JavaScript methods converting text to links
libjson-hyper-perl - extract links from JSON via a schema
libjson-path-perl - search nested hashref/arrayref structures using JSONPath
libmoosex-arrayref-perl - blessed arrayrefs with Moose
libmoosex-oneargnew-perl - Moose role that extends class' constructor to accept single arguments
libmoosex-param-perl - simple Moose role providing a standard param method
libmoosex-singlearg-perl - module to instantiate Moose objects using a single argument
libmoosex-types-structured-perl - Moose extension for type constraints on structured types
libparams-validationcompiler-perl - module to build an optimized subroutine parameter validator
libpod-spell-perl - formatter to easily check the spelling of POD
libpostfix-parse-mailq-perl - module to parse the postfix mail queue
libtest-deep-unorderedpairs-perl - Test::Deep plugin for comparing lists as if they were hashes
libxml-atom-microformats-perl - parse microformats in Atom content
libxml-libxml-debugging-perl - get debugging information from XML::LibXML
node-url-to-options - Convert a WHATWG URL to an http(s).request options object
roffit - convert nroff manual pages into HTML
tea - graphical text editor with syntax highlighting
texlive-latex-extra - TeX Live: LaTeX additional packages

Строку href можно найти только в следующем пакете:

libjson-path -perl - поиск вложенных структур hashref / arrayref с использованием JSONPath

Насколько я понимаю, шаблон поиска apt-cache будет идентифицировать только пакеты, в которых найден шаблон .

Почему href не встречается в идентифицированных пакетах?

1
задан 25 June 2021 в 17:45

1 ответ

Обратите внимание, что https://www.ctan.org/pkg/href возвращает 404. Возможно, вы используете неправильное имя пакета. Но hyperref пакет существует.

Если вы прочитаете man apt-cache локально или онлайн, вы можете увидеть следующее:

search regex...
search выполняет полнотекстовый поиск по всем доступным спискам пакетов для заданного шаблона POSIX regex, см. regex(7). Он ищет в именах пакетов и их описаниях вхождения регулярного выражения и выводит имя пакета и краткое описание, включая имена виртуальных пакетов. Если задано --full то для каждого найденного пакета выводится вывод, идентичный show, а если задано --names-only то поиск длинного описания не производится, только имя пакета и предоставленные пакеты. Отдельные аргументы могут быть использованы для указания нескольких шаблонов поиска, которые объединяются вместе.

Поэтому вы можете попробовать использовать apt-cache search href latex или некоторые логические команды. Но на самом деле важно то, что apt-cache ничего не знает о содержимом пакета.
Пакеты LaTeX обычно имеют *.bst, *.sty файлы для своих определений.

Для поиска содержимого пакета, например, hyperref.sty необходимо использовать другие инструменты:

  • локально - использовать apt-file:

    sudo apt-get install apt-file
    sudo apt-file update
    

    чтобы получить что-то вроде

    $ sudo apt-file search hyperref.sty
    latexml: /usr/share/perl5/LaTeXML/Package/hyperref.sty.ltxml
    texlive-lang-arabic: /usr/share/texlive/texmf-dist/tex/xelatex/bidi/bidituftehyperref.sty
    texlive-latex-base: /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
    texlive-latex-base: /usr/share/texlive/texmf-dist/tex/latex/hyperref/nohyperref.sty
    texlive-latex-extra: /usr/share/texlive/texmf-dist/tex/latex/hobsub/hobsub-hyperref.sty
    texlive-latex-extra: /usr/share/texlive/texmf-dist/tex/latex/interfaces/interfaces-hyperref.sty
    texlive-latex-extra: /usr/share/texlive/texmf-dist/tex/latex/zref/zref-hyperref.sty
    texlive-latex-recommended: /usr/share/texlive/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
    

    или с синтаксисом regexp:

    $ sudo apt-file search --regexp hyperref.sty$
    texlive-lang-arabic: /usr/share/texlive/texmf-dist/tex/xelatex/bidi/bidituftehyperref.sty
    texlive-latex-base: /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
    texlive-latex-base: /usr/share/texlive/texmf-dist/tex/latex/hyperref/nohyperref.sty
    texlive-latex-extra: /usr/share/texlive/texmf-dist/tex/latex/hobsub/hobsub-hyperref.sty
    texlive-latex-extra: /usr/share/texlive/texmf-dist/tex/latex/interfaces/interfaces-hyperref.sty
    texlive-latex-extra: /usr/share/texlive/texmf-dist/tex/latex/zref/zref-hyperref.sty
    texlive-latex-recommended: /usr/share/texlive/texmf-dist/tex/latex/lwarp/lwarp-hyperref.sty
    
  • онлайн, посетив https://packages.ubuntu.com и поискав hyperref.sty - он содержится в texlive-latex-base пакете Ubuntu.

1
ответ дан 28 July 2021 в 11:25

Другие вопросы по тегам:

Похожие вопросы: