dnf — пакетный менеджер (вопросы по работе в консоли)
Модератор: Bizdelnick
dnf — пакетный менеджер
Занялся изучением команд утилиты 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 , но в принципе тоже самое
Что это за «эпоха» такая, почему по факту её нет в названии пакета, подробнее кто-то может сказать?
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
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: dnf — пакетный менеджер
Эпоха опускается, если она равна 0 (в абсолютном большинстве случаев). Почему dnf считает нужным её указать и в этом случае — не знаю, но в принципе обе формы записи равнозначны.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: dnf — пакетный менеджер
Bizdelnick, спасибо, уже кое-что.
Но всё равно, имя, версия, релиз, архитектура — с ними всё понятно, но что такое «эпоха» в имени пакета, как она вообще туда попало?
Но всё равно, имя, версия, релиз, архитектура — с ними всё понятно, но что такое «эпоха» в имени пакета, как она вообще туда попало?
Re: dnf — пакетный менеджер
Также тут указан Epoch - это тоже касается версии. Просто иногда разработчики софта могут менять нумерацию версии, либо вести её каким-то нестандартным образом. Тогда пакетному менеджеру бывает сложно понять, а какая версия пакета новее, какая старее. И вот epoch номер спасает в таких ситуациях.
Спасибо сказали:
Re: dnf — пакетный менеджер
Спасибо, понял, это типа того как в каком-то дистрибутиве поменяли его нумерацию и начали её сначала.
В общем-то такое бывает редко, мне ещё не попадалось.
RusWolf, а откуда цитата? собираюсь статью для чайников писать, напишу пояснение.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: dnf — пакетный менеджер
В дистрибутиве не меняют нумерацию пакетов. Поменять её может только апстрим. И обычно не с начала начинают, а просто переходят на другую схему. Например, вместо семантических версий x.y.z начинают нумеровать по дате выпуска, наподобие YY.MM. Если новая версия при прямом сравнении оказывается ниже предыдущей (22.10 < 31.2.0, скажем), то сопровождающий пакета инкрементирует номер эпохи, чтобы пакетный менеджер видел, что это обновление.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: dnf — пакетный менеджер
Помогите разобраться.
Даю команду в консоли (bash) dnf list *dnf*
в ROSA выдаёт список всех пакетов в названии которых есть " dnf " (начало/середина/конец)
в Mageia пакет — dnf.noarch версия 4.6.0-1.mga8 — команда не работает
Срабатывает регулярка только для пакетов
dnf list *dnf — названия которых окончиваются на " dnf "
или
dnf list dnf* — названия которых начинаются на " dnf "
Пакеты типа lib64dnf2 , так сказать выпадают из поиска
дистрибутивы родственные, в чём затык? не могу понять, по идее утилита "dnf" ни при чём, скорее дело в настройках bash, но каких?
Даю команду в консоли (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
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: dnf — пакетный менеджер
Я Вам уже показывал ведь, почему так. Bash находит файл, соответствующий маске *dnf*, в текущем каталоге и подставляет в командную строку его имя. В итоге dnf ищет что-то совсем не то, чего Вы хотели. Чтобы такого не происходило, надо использовать кавычки или экранировать спецсимволы (в данном случае \*). Всегда. Независимо от того, запускаете ли Вы dnf или что-то другое.
Мне в этом плане нравится поведение zsh. Он, в отличие от bash, если видит шаблон и не находит совпадения, сразу выводит ошибку и не запускает команду. Очень полезно, чтобы приучить себя использовать кавычки.
Мне в этом плане нравится поведение zsh. Он, в отличие от bash, если видит шаблон и не находит совпадения, сразу выводит ошибку и не запускает команду. Очень полезно, чтобы приучить себя использовать кавычки.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: dnf — пакетный менеджер
Дефолтное поведение в bash можно менять.Bizdelnick писал: ↑23.01.2023 12:30Мне в этом плане нравится поведение zsh. Он, в отличие от bash, если видит шаблон и не находит совпадения, сразу выводит ошибку и не запускает команду. Очень полезно, чтобы приучить себя использовать кавычки.
Включаем:
Код: Выделить всё
shopt -s failglob
Код: Выделить всё
shopt -u failglob
Спасибо сказали:
Re: dnf — пакетный менеджер
не усвоил, это ведь не моя профессия, но как-нибудь найду время поупражняться.
НО, мне непонятно почему в Росе срабатывает, а в Mageia — нет.
Или дело в том, о чём говорит olecya ?
Тут даже не знаю куда лезть и что это означает — ссылочку бы, почитать
Re: dnf — пакетный менеджер
Код: Выделить всё
help shopt
shopt -p failglob
Shell
echo *lkdfjsldjf
*lkdfjsldjf
shopt -s failglob
echo *lkdfjsldjf
bash: no match: *lkdfjsldjf
shopt -u failglob
Добавлено (22:16):
Из той-же группы есть еще опция nullglob, то-есть ничего не выводится при отсутствии совпадения если задана маска.Shell
shopt -s nullglob
echo *slkdjfslk
shopt -u nullglob
Добавлено (22:22):
Удобно посмотреть какие опции включены и какие выключены:Код: Выделить всё
command shopt
Добавлено (22:30):
Как уже было сказано, возможно что в разных директориях откуда вы запускаете команду лежат файлы с разными именами.
Просто проверте от куда вы запускаете:
Код: Выделить всё
echo dnf *dnf*
Последний раз редактировалось olecya 23.01.2023 22:45, всего редактировалось 1 раз.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: dnf — пакетный менеджер
Это не зависит от дистрибутива, это зависит от содержимого текущего каталога.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: dnf — пакетный менеджер
Bizdelnick
А .bashrc или что-нибудь конфигурирующего bash из коробки не может идти?
А .bashrc или что-нибудь конфигурирующего bash из коробки не может идти?
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
Re: dnf — пакетный менеджер
На сколько я знаю интерпретатор bash собирается с флагами по умолчанию, но можно конечно указать в .bashrc переключатель, только он будет работать в интерактивном режиме, а в скрипте его надо будет дублировать если что
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: dnf — пакетный менеджер
Нет. Ошибка была бы другая. dnf не запустился бы, а тут он запустился, но не нашёл пакета.UnixNoob писал: ↑23.01.2023 23:09Bizdelnick
А .bashrc или что-нибудь конфигурирующего bash из коробки не может идти?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: dnf — пакетный менеджер
Команду я запускаю из Домашней директории юзера, это по дефолту в обоих дистрибутивах(запуск консоли):
Shell
[algri@localhost ~]$ dnf list *dnf*
Shell
[algri@localhost ~]$ echo dnf *dnf*
dnf man_dnf_en.txt man_dnf_ru.txt
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
попозже посмотрю и в Росе
Добавлено (06:14):
Действительно, перенёс на другой раздел текстовые файлы: dnf man_dnf_en.txt man_dnf_ru.txtBizdelnick писал: ↑23.01.2023 22:40Это не зависит от дистрибутива, это зависит от содержимого текущего каталога.
и команда dnf list *dnf* заработала, ну вот как во всём этом многообразии мелких нюансов разобраться простому чайнику
Да, надо всё таки изучать регулярку и соблюдать правила, ставить кавычки, не надеясь что сработает и без них.
Re: dnf — пакетный менеджер
Опечаталсь, забыла про list. Наверное могла запутать. Если присутствуют в передаваемых параметрах шаблоны и спец символы подстановки, которые оболочка сперва раскрывает, а только потом передает команде для выполнения:
Код: Выделить всё
* [abc] [!0-1] [^0-1] ? [[:punct:]] "$var" {a..z..5}$'\f'{,,} $'\x30\t\061'
echo dnf list *dnf*
При этом команда не выполняется и является по сути дебагером.
Добавлено (09:06):
$'...' Прошу заметить, экскейп последовательности здесь не обрабатываются драйвером терминала, а обрабатываются оболочкой, а уже оболочка выдает понятный код драйверу терминала:Shell
echo $'\a' | cat -vet
^G$
Re: dnf — пакетный менеджер
olecya, спасибо, но это для меня слишком сложно, далее попробую поизучать, если смогу осилить
с "list" или без него, пофиг:
Shell
[algri@localhost ~]$ echo dnf list *dnf*
dnf list man_dnf_en.txt man_dnf_ru.txt
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: dnf — пакетный менеджер
Да что сложного-то? Вы вводите команду dnf list *dnf*. Bash превращает её в dnf list man_dnf_en.txt man_dnf_ru.txt и запускает. Dnf пытается найти пакеты man_dnf_en.txt и man_dnf_ru.txt, не находит их и выдаёт сообщение об ошибке.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: dnf — пакетный менеджер
Это я понял, а почему bash выполняет команду dnf list '*dnf*' и ему текстовые файлы не помехаBizdelnick писал: ↑24.01.2023 14:34Dnf пытается найти пакеты man_dnf_en.txt и man_dnf_ru.txt, не находит их и выдаёт сообщение об ошибке.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: dnf — пакетный менеджер
Потому что находящееся внутри кавычек (двойных или одинарных) он не интерпретирует как шаблон. То есть он при преобразовании командной строки выкинет сами кавычки и этим ограничится.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали: