dpkg -S "`which cat`"

Автор icarus, 25 декабря 2022, 22:05:37

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

icarus

Да что же сегодня такое... Тычусь я в старую тему, ищу где написать, а там замочек уже почему-то... А я только что осознал проблему и теперь могу задать вопрос правильно

Вот смотрите что меня так обеспокоило:

lab@nb11:~$ which cat
/usr/bin/cat
lab@nb11:~$ dpkg -S /usr/bin/cat
dpkg-query: не найден путь, подходящий под шаблон /usr/bin/cat

хотя на самом деле всё работает
lab@nb11:~$ dpkg -S /bin/cat
coreutils: /bin/cat


но вот так уже не сделать:
lab@nb11:~$ dpkg -S "`which cat`"
dpkg-query: не найден путь, подходящий под шаблон /usr/bin/cat

а хочется...

lab@nb11:~$ dpkg -S "`which okular`"
okular: /usr/bin/okular
Получается, программы установленные по пути /usr/bin - так находятся, а через /bin - нет.
which ничего не знает про то по какому пути установлена программа, он находит где она на самом деле... Ии как заранее предугадать этот путь чтобы скормить его dpkg ? что-то у меня ноу гуд айдиа... Разве только проверять по обоим путям... 

Что думаете?




Linux -- 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64 GNU/Linux

icarus

А вот, взгляните на это
lab@nb11:~$ dpkg -S `which avidemux`
dpkg-query: не найден путь, подходящий под шаблон /usr/bin/avidemux
lab@nb11:~$ dpkg -S /bin/avidemux
dpkg-query: не найден путь, подходящий под шаблон /bin/avidemux
lab@nb11:~$ file /usr/bin/avidemux
/usr/bin/avidemux: symbolic link to /etc/alternatives/avidemux
lab@nb11:~$ file /etc/alternatives/avidemux
/etc/alternatives/avidemux: symbolic link to /usr/bin/avidemux3_qt5
lab@nb11:~$ file /usr/bin/avidemux3_qt5
/usr/bin/avidemux3_qt5: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=22d188e65c054a3f022502302fc9e2838f2300df, for GNU/Linux 3.2.0, stripped
lab@nb11:~$ dpkg -S /usr/bin/avidemux3_qt5
avidemux-qt: /usr/bin/avidemux3_qt5
lab@nb11:~$ echo ЭВРИКА!
ЭВРИКА!

Право не знаю зачем такой онанизм придуман, может кто знает?  Но пуще всего непонятно то что, если сам же dpkg раскладывает все эти файлики по директориям, в том числе и симлинки, то почему он ничего про них не помнит потом. То есть, ни dpkg -S /usr/bin/avidemux, ни dpkg -S /etc/alternatives/avidemux - не приводят к результату. Хотя все эти симлинки принадлежат пакету. (Это же не я их так уложил, это оно само при установке так легло).
Понимаю, что вопросы, видимо, риторические, но вот всё равно хочу поделиться впечатлениями.
Захотел я просто написать скриптик, который компактно должен выдавать инфу о команде (пакет, что ещё исполняемого есть в пакете итд). Не помню чтобы с rpm были хоть какие то проблемы в данном отношении, а вот тут постоянно натыкаюсь на какую-то херню, вроде изложенной выше.  ;D

Linux -- 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64 GNU/Linux

Susumo

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

ogost

Цитата: Susumo от 28 декабря 2022, 11:47:57Эта чехорда с /usr/bin и /bin пару релизов назад началась, одно время reboot и poweroff не работал, надо было весь путь до бинарника указывать.
Ничего подобного не припомню, всё всегда работало. Возможно вы имеете ввиду изменения в команде su, внесённые пару релизов назад: теперича su без дефиса не создаёт новое окружение, а использует текущее, как результат некоторые пути не прописываются в PATH.
Насколько помню, это дефолтное поведение su, которое раньше дебиановцы меняли, а теперь не меняют.

Цитата: icarus от 26 декабря 2022, 23:35:59Право не знаю зачем такой онанизм придуман, может кто знает?  Но пуще всего непонятно то что, если сам же dpkg раскладывает все эти файлики по директориям, в том числе и симлинки, то почему он ничего про них не помнит потом.
тыц

Susumo

#4
ЦитироватьНичего подобного не припомню, всё всегда работало.
С другим каталогом перепутал, они тогда в sbin переехали, а переменные по умолчанию не были настроены.
Либо systemctl reboot либо /sbin/reboot работали reboot не работал.