Как мне найти пакет, предоставляющий псевдоним?

Используя apt-file, я могу найти пакеты, предоставляющие определенные исполняемые файлы, например:

sudo apt-file search {/bin,/sbin,/usr/bin/,/usr/sbin}/wget

Ну, на самом деле:

sudo apt-file search {/bin,/sbin,/usr/bin/,/usr/sbin}/wget | grep "/wget$"

( Потому что в противном случае он просто вернул бы все пакеты, содержащие исполняемые файлы, начинающиеся с wget.)

Теперь я запускал:

EXEC_NAME="x86_64-w64-mingw32-g++"
sudo apt-file search {/bin,/sbin,/usr/bin/,/usr/sbin}/${EXEC_NAME} | grep "${EXEC_NAME}$"

И, что удивительно, он ничего не возвращает. Почему? Потому что ни один пакет не предоставляет файл с таким именем.

Если я запускаю:

EXEC_NAME="x86_64-w64-mingw32-g++"
sudo apt-file search {/bin,/sbin,/usr/bin/,/usr/sbin}/${EXEC_NAME}

я получаю следующий результат:

g++-mingw-w64-x86-64-posix: /usr/bin/x86_64-w64-mingw32-g++-posix
g++-mingw-w64-x86-64-win32: /usr/bin/x86_64-w64-mingw32-g++-win32

подразумевается, что нет пакета, предоставляющего x86_64-w64-mingw32-g++.

Но через некоторое время я обнаружил, что g++-mingw-w64-x86-64-posix не просто предоставляет исполняемый файл g++-mingw-w64-x86-64-posix, но также псевдоним или символическая ссылка с именем g++-mingw-w64-x86-64.

В этом случае это было легко выяснить, потому что пакет содержал другой двоичный файл с очень похожим именем. Теперь моя проблема в том, что мне нужно автоматизировать это таким образом, чтобы он работал для любого псевдонима/символической ссылки, даже для тех, которые имеют совершенно другое имя.

Как это сделать?

Редактировать:

Псевдоним создается в файле g++-mingw-w64-x86-64-posix.postinst из g++- Пакет mingw-w64-x86-64-posix, если это поможет:

update-alternatives --install /usr/bin/x86_64-w64-mingw32-g++ x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix 30 \
  --slave /usr/bin/x86_64-w64-mingw32-c++ x86_64-w64-mingw32-c++ /usr/bin/x86_64-w64-mingw32-c++-posix

Edit2: Возможно, есть способ поиска содержимого файлов всех пакетов .postinst файлы? Может быть, скачав все файлы .postinst в кеш? Может быть, это можно сделать, сначала загрузив заголовок файла каждого пакета, чтобы увидеть, в каких байтах в архивах расположены файлы .postinst, а затем использовать запросы диапазона HTTP для их загрузки?

Edit3:

Это не так. изменить что-нибудь, но я обнаружил, что вместо grep и cut вы можете просто использовать флаг -x и -l. Это делает команду немного короче:

sudo apt-file search -l -x "^/(bin|sbin|usr/bin|usr/sbin)/${EXEC_NAME}$" | head -1
2
задан 2 September 2021 в 15:03

0 ответов

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

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