Запросить все пути во всех пакетах/репозиториях без установки?

Запросить все пути во всех пакетах/репозиториях без установки?

Допустим, я хочу создать новый пакет, который устанавливает команду, т. е. добавляет новый файл в /bin или /usr/bin.

Но я еще не назвал команду. Так что если я столкнусь с конфликтами, я хочу узнать об этом как можно скорее.

Учитывая, что у меня есть несколько репозиториев (Fedora, RPM Fusion...), есть ли запрос, который поможет мне проверить, что определенный файл/команда не будет установлена ​​каким-либо другим доступным в настоящее время пакетом?

решение1

Не идите по пути простой проверки Fedora, потому что тогда вы столкнетесь с проблемой, когда захотите упаковать его в другое место, или Fedora добавит существующее приложение, название которого будет конфликтовать с вашим.

У меня был дистрибутивный упаковщик, который заставил меня изменить (короткое, емкое) имя команды в приложении, которое я написал, когда оно попало в официальные репозитории, потому что оно сталкивалось с каким-то древним, но все еще доступным хламом. Вы могли бы получить его прямо сейчас.

Начните с достаточно уникального имени иискать в сетииспользуя поисковую систему (или две). Также ищитепо меньшей мере sourceforgeигитхабнапрямую. Даже если что-то нацелено на совершенно другую ОС (Windows, IOS и т. д.), избегайте столкновения.

Если вы не можете выполнить поиск в сети, используя только имя команды (т. е. не ищите "linux mycommandname"), потому что он возвращает слишком много не связанных между собой вещей, то слово недостаточно уникально (сюда входят слова, которые, как оказалось, существуют на иностранном языке, названия поп-музыки из Австралии и т. д.). Вероятно, это означает не менее 5 символов; меньше этого на данном этапе просто умоляет о совпадении, а больше, вероятно, лучше. Лучше использовать длинное, описательное имя для команды ( superFooBar) и позволить людям создавать свои собственные короткие псевдонимы ( foo), если они хотят, чем создавать короткие, почти бессмысленные (аббревиатуры, слова с удаленными гласными и т. д.). Это не войдет в POSIX в ближайшее время, это непонятное, необязательное приложение и должно быть помечено для ясности, а не для удобства.


Если все, что вам нужно сделать, это выполнить поиск в репозиториях, доступных в определенной системе, вы можете использовать yum provides:

yum provides "*/superFooBar"

Обратите внимание на кавычки со звездочкой внутри; это предотвращает расширение оболочки, поэтому оно будет передано буквально в yum, который обрабатывает его как подстановочный знак таким же образом. Это будет искать полный путь всех файлов, установленных всеми пакетами во всех репозиториях, поэтому совпадения могут включать /usr/bin/superFooBarи /etc/default/superFooBarт. д.

Опять же, я не рекомендую этого делать, если вы собираетесь распространять это публично или в частном порядке в рамках организации. Если это только для вас и машин, за которые вы несете личную ответственность, хорошо -- в противном случае это недостаточно подробно.

Связанный контент