dnf — пакетный менеджер (вопросы по работе в консоли)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
algri14
Сообщения: 1113
ОС: Mageia 5.1 & 8 x86_64, KDE

dnf — пакетный менеджер

Сообщение algri14 »

Занялся изучением команд утилиты dnf, но не всё можно найти в справке или в руководстве, в инете тоже в основном стандартные ответы, без пояснения нюансов, поэтому обращаюсь сюда.
dnf repoquery gea* — выдаст NEVRA по-дефолту "{name}-{epoch}:{version}-{release}.{arch}"
всех доступных пакетов имена которых начинаются на " gea "
geany-0:1.37.1-1.mga8.x86_64 — один из выданных поиском утилиты
NEVRA это сокращение
N - name (имя) geany
E - epoch (эпоха) 0
V - version (версия) 1.37.1 (от автора)
R - release (релиз) 1.mga8 (от дистрибутива)
A - arch (архитектура) x86_64
но пакет в репозитории Mageia называется geany-1.37.1-1.mga8.x86_64 , т.е. без "эпохи", без "0",
в Росе попроще geany-1.38-1.x86_64 , но в принципе тоже самое
Что это за «эпоха» такая, почему по факту её нет в названии пакета, подробнее кто-то может сказать?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19763
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: dnf — пакетный менеджер

Сообщение Bizdelnick »

Эпоха опускается, если она равна 0 (в абсолютном большинстве случаев). Почему dnf считает нужным её указать и в этом случае — не знаю, но в принципе обе формы записи равнозначны.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
algri14
Сообщения: 1113
ОС: Mageia 5.1 & 8 x86_64, KDE

Re: dnf — пакетный менеджер

Сообщение algri14 »

Bizdelnick, спасибо, уже кое-что.
Но всё равно, имя, версия, релиз, архитектура — с ними всё понятно, но что такое «эпоха» в имени пакета, как она вообще туда попало?
Спасибо сказали:
Аватара пользователя
RusWolf
Сообщения: 486
ОС: Arch Linux x64 на BTRFS

Re: dnf — пакетный менеджер

Сообщение RusWolf »

algri14 писал:
16.10.2022 19:27
но что такое «эпоха» в имени пакета, как она вообще туда попало?
Также тут указан Epoch - это тоже касается версии. Просто иногда разработчики софта могут менять нумерацию версии, либо вести её каким-то нестандартным образом. Тогда пакетному менеджеру бывает сложно понять, а какая версия пакета новее, какая старее. И вот epoch номер спасает в таких ситуациях.
Спасибо сказали:
Аватара пользователя
algri14
Сообщения: 1113
ОС: Mageia 5.1 & 8 x86_64, KDE

Re: dnf — пакетный менеджер

Сообщение algri14 »

RusWolf писал:
16.10.2022 19:58
Просто иногда разработчики софта могут менять нумерацию версии, либо вести её каким-то нестандартным образом.
Спасибо, понял, это типа того как в каком-то дистрибутиве поменяли его нумерацию и начали её сначала.
В общем-то такое бывает редко, мне ещё не попадалось.

RusWolf, а откуда цитата? собираюсь статью для чайников писать, напишу пояснение.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19763
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: dnf — пакетный менеджер

Сообщение Bizdelnick »

algri14 писал:
16.10.2022 20:35
это типа того как в каком-то дистрибутиве поменяли его нумерацию и начали её сначала.
В дистрибутиве не меняют нумерацию пакетов. Поменять её может только апстрим. И обычно не с начала начинают, а просто переходят на другую схему. Например, вместо семантических версий x.y.z начинают нумеровать по дате выпуска, наподобие YY.MM. Если новая версия при прямом сравнении оказывается ниже предыдущей (22.10 < 31.2.0, скажем), то сопровождающий пакета инкрементирует номер эпохи, чтобы пакетный менеджер видел, что это обновление.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
RusWolf
Сообщения: 486
ОС: Arch Linux x64 на BTRFS

Re: dnf — пакетный менеджер

Сообщение RusWolf »

Спасибо сказали:
Аватара пользователя
algri14
Сообщения: 1113
ОС: Mageia 5.1 & 8 x86_64, KDE

Re: dnf — пакетный менеджер

Сообщение algri14 »

Помогите разобраться.
Даю команду в консоли (bash) dnf list *dnf*
в ROSA выдаёт список всех пакетов в названии которых есть " dnf " (начало/середина/конец)
в Mageia пакет — dnf.noarch версия 4.6.0-1.mga8 — команда не работает

Shell

dnf list *dnf*
Ошибка: Совпадений среди пакетов не найдено
Срабатывает регулярка только для пакетов
dnf list *dnf — названия которых окончиваются на " dnf "
или
dnf list dnf* — названия которых начинаются на " dnf "

Пакеты типа lib64dnf2 , так сказать выпадают из поиска

дистрибутивы родственные, в чём затык? не могу понять, по идее утилита "dnf" ни при чём, скорее дело в настройках bash, но каких?
Добавлено (08:58):
сработало вот так dnf list '*dnf*' , но почему в Росе работает и без кавычек dnf list *dnf* ???
Добавлено (09:08):
А с другим пакетом работает?

Shell

dnf list *coolreader*
Установленные пакеты
coolreader3.x86_64 3.2.29-4.mga8 @System
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19763
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: dnf — пакетный менеджер

Сообщение Bizdelnick »

Я Вам уже показывал ведь, почему так. Bash находит файл, соответствующий маске *dnf*, в текущем каталоге и подставляет в командную строку его имя. В итоге dnf ищет что-то совсем не то, чего Вы хотели. Чтобы такого не происходило, надо использовать кавычки или экранировать спецсимволы (в данном случае \*). Всегда. Независимо от того, запускаете ли Вы dnf или что-то другое.
Мне в этом плане нравится поведение zsh. Он, в отличие от bash, если видит шаблон и не находит совпадения, сразу выводит ошибку и не запускает команду. Очень полезно, чтобы приучить себя использовать кавычки.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 776
ОС: debian, fedora (i3-wm)

Re: dnf — пакетный менеджер

Сообщение olecya »

Bizdelnick писал:
23.01.2023 12:30
Мне в этом плане нравится поведение zsh. Он, в отличие от bash, если видит шаблон и не находит совпадения, сразу выводит ошибку и не запускает команду. Очень полезно, чтобы приучить себя использовать кавычки.
Дефолтное поведение в bash можно менять.
Включаем:

Код: Выделить всё

shopt -s failglob
И выключаем соответственно:

Код: Выделить всё

shopt -u failglob
Спасибо сказали:
Аватара пользователя
algri14
Сообщения: 1113
ОС: Mageia 5.1 & 8 x86_64, KDE

Re: dnf — пакетный менеджер

Сообщение algri14 »

Bizdelnick писал:
23.01.2023 12:30
Я Вам уже показывал ведь, почему так.
не усвоил, это ведь не моя профессия, но как-нибудь найду время поупражняться.
НО, мне непонятно почему в Росе срабатывает, а в Mageia — нет.
Или дело в том, о чём говорит olecya ?
olecya писала:
23.01.2023 17:26
Дефолтное поведение в bash можно менять.
Включаем:
shopt -s failglob

И выключаем соответственно:
shopt -u failglob
Тут даже не знаю куда лезть и что это означает — ссылочку бы, почитать :yes3:
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 776
ОС: debian, fedora (i3-wm)

Re: dnf — пакетный менеджер

Сообщение olecya »

algri14 писал:
23.01.2023 21:54
Тут даже не знаю куда лезть и что это означает — ссылочку бы, почитать

Код: Выделить всё

help shopt
shopt -p failglob

Shell

echo *lkdfjsldjf
*lkdfjsldjf
shopt -s failglob
echo *lkdfjsldjf
bash: no match: *lkdfjsldjf
shopt -u failglob
Имя опции выразительно failglob можно перевести как "ошибка при отсутствии совпадения по маске"
Добавлено (22:16):
Из той-же группы есть еще опция nullglob, то-есть ничего не выводится при отсутствии совпадения если задана маска.

Shell

shopt -s nullglob
echo *slkdjfslk

shopt -u nullglob
Добавлено (22:22):
Удобно посмотреть какие опции включены и какие выключены:

Код: Выделить всё

command shopt
Добавлено (22:30):
algri14 писал:
23.01.2023 21:54
Или дело в том, о чём говорит olecya ?
Как уже было сказано, возможно что в разных директориях откуда вы запускаете команду лежат файлы с разными именами.
Просто проверте от куда вы запускаете:

Код: Выделить всё

echo dnf *dnf*
В выводе вы получите полную команду после подстановки по маске
Последний раз редактировалось olecya 23.01.2023 22:45, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19763
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: dnf — пакетный менеджер

Сообщение Bizdelnick »

algri14 писал:
23.01.2023 21:54
мне непонятно почему в Росе срабатывает, а в Mageia — нет.
Это не зависит от дистрибутива, это зависит от содержимого текущего каталога.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
UnixNoob
Сообщения: 978
ОС: Slackware

Re: dnf — пакетный менеджер

Сообщение UnixNoob »

Bizdelnick
А .bashrc или что-нибудь конфигурирующего bash из коробки не может идти?
«Хорошо сформулированная проблема — наполовину решенная проблема».Чарлз Кеттеринг
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 776
ОС: debian, fedora (i3-wm)

Re: dnf — пакетный менеджер

Сообщение olecya »

UnixNoob писал:
23.01.2023 23:09
А .bashrc или что-нибудь конфигурирующего bash из коробки не может идти?
На сколько я знаю интерпретатор bash собирается с флагами по умолчанию, но можно конечно указать в .bashrc переключатель, только он будет работать в интерактивном режиме, а в скрипте его надо будет дублировать если что
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19763
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: dnf — пакетный менеджер

Сообщение Bizdelnick »

UnixNoob писал:
23.01.2023 23:09
Bizdelnick
А .bashrc или что-нибудь конфигурирующего bash из коробки не может идти?
Нет. Ошибка была бы другая. dnf не запустился бы, а тут он запустился, но не нашёл пакета.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
algri14
Сообщения: 1113
ОС: Mageia 5.1 & 8 x86_64, KDE

Re: dnf — пакетный менеджер

Сообщение algri14 »

olecya писала:
23.01.2023 22:09
echo dnf *dnf*
В выводе вы получите полную команду после подстановки по маске
Команду я запускаю из Домашней директории юзера, это по дефолту в обоих дистрибутивах(запуск консоли):

Shell

[algri@localhost ~]$ dnf list *dnf*
хотя конечно могу запустить из любого другого каталога

Shell

[algri@localhost ~]$ echo dnf *dnf*
dnf man_dnf_en.txt man_dnf_ru.txt
выдало то, что в хомяке есть два текстовых файла на en и ru языках, и больше ничего
command shopt

Shell

[algri@localhost ~]$ command shopt
autocd off
assoc_expand_once off
cdable_vars off
cdspell off
checkhash on
checkjobs off
checkwinsize on
cmdhist on
compat31 off
compat32 off
compat40 off
compat41 off
compat42 off
compat43 off
compat44 off
complete_fullquote on
direxpand off
dirspell off
dotglob off
execfail off
expand_aliases on
extdebug off
extglob on
extquote on
failglob off
force_fignore on
globasciiranges on
globstar off
gnu_errfmt off
histappend on
histreedit off
histverify off
hostcomplete off
huponexit off
inherit_errexit off
interactive_comments on
lastpipe off
lithist off
localvar_inherit off
localvar_unset off
login_shell off
mailwarn off
no_empty_cmd_completion on
nocaseglob off
nocasematch off
nullglob off
progcomp on
progcomp_alias off
promptvars on
restricted_shell off
shift_verbose off
sourcepath on
xpg_echo off
зы: на данный момент из Mageia
попозже посмотрю и в Росе
Добавлено (06:14):
Bizdelnick писал:
23.01.2023 22:40
Это не зависит от дистрибутива, это зависит от содержимого текущего каталога.
Действительно, перенёс на другой раздел текстовые файлы: dnf man_dnf_en.txt man_dnf_ru.txt

и команда dnf list *dnf* заработала, ну вот как во всём этом многообразии мелких нюансов разобраться простому чайнику :crazy:

Да, надо всё таки изучать регулярку и соблюдать правила, ставить кавычки, не надеясь что сработает и без них.
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 776
ОС: debian, fedora (i3-wm)

Re: dnf — пакетный менеджер

Сообщение olecya »

olecya писала:
23.01.2023 22:09
echo dnf *dnf*
Опечаталсь, забыла про list. Наверное могла запутать. Если присутствуют в передаваемых параметрах шаблоны и спец символы подстановки, которые оболочка сперва раскрывает, а только потом передает команде для выполнения:

Код: Выделить всё

* [abc] [!0-1] [^0-1] ? [[:punct:]] "$var" {a..z..5}$'\f'{,,} $'\x30\t\061'
астериск, диапазон или набор символов, исключения из данной позиции диапазона или набора символов (два варианта), знак вопроса, классы символов, переменная, brace expantion(раскрыте скобок) или эскейп последовательности(в конструкции $'...'), то всегда можно проверить с помощью echo что будет передано команде в качестве параметров после подстановки оболочкой:
echo dnf list *dnf*
При этом команда не выполняется и является по сути дебагером.
Добавлено (09:06):
$'...' Прошу заметить, экскейп последовательности здесь не обрабатываются драйвером терминала, а обрабатываются оболочкой, а уже оболочка выдает понятный код драйверу терминала:

Shell

echo $'\a' | cat -vet
^G$
Спасибо сказали:
Аватара пользователя
algri14
Сообщения: 1113
ОС: Mageia 5.1 & 8 x86_64, KDE

Re: dnf — пакетный менеджер

Сообщение algri14 »

olecya писала:
24.01.2023 08:52
Опечаталсь, забыла про list. Наверное могла запутать. Если присут
olecya, спасибо, но это для меня слишком сложно, далее попробую поизучать, если смогу осилить :D
с "list" или без него, пофиг:

Shell

[algri@localhost ~]$ echo dnf list *dnf*
dnf list man_dnf_en.txt man_dnf_ru.txt
пока не перенёс из /home/algri/"Домашней папки"/ в /home/algri/Документы8/man_dnf/ терминал не срабатывал, пренёс эти текстовые файлы и команда работает. Но совет от Bizdelnick про кавычки принял к сведению (что лучше их ставить, иначе не всегда сработает)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19763
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: dnf — пакетный менеджер

Сообщение Bizdelnick »

algri14 писал:
24.01.2023 10:39
для меня слишком сложно
Да что сложного-то? Вы вводите команду dnf list *dnf*. Bash превращает её в dnf list man_dnf_en.txt man_dnf_ru.txt и запускает. Dnf пытается найти пакеты man_dnf_en.txt и man_dnf_ru.txt, не находит их и выдаёт сообщение об ошибке.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
algri14
Сообщения: 1113
ОС: Mageia 5.1 & 8 x86_64, KDE

Re: dnf — пакетный менеджер

Сообщение algri14 »

Bizdelnick писал:
24.01.2023 14:34
Dnf пытается найти пакеты man_dnf_en.txt и man_dnf_ru.txt, не находит их и выдаёт сообщение об ошибке.
Это я понял, а почему bash выполняет команду dnf list '*dnf*' и ему текстовые файлы не помеха
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19763
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: dnf — пакетный менеджер

Сообщение Bizdelnick »

algri14 писал:
24.01.2023 22:19
Это я понял, а почему bash выполняет команду dnf list '*dnf*' и ему текстовые файлы не помеха
Потому что находящееся внутри кавычек (двойных или одинарных) он не интерпретирует как шаблон. То есть он при преобразовании командной строки выкинет сами кавычки и этим ограничится.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: