Автор Тема: Как найти пакет в altlinux с неизвестным именем?  (Прочитано 105383 раз)

Оффлайн SUNNY

  • Завсегдатай
  • *
  • Сообщений: 61
    • Email
Re: поиск по файлу в репозитории
« Ответ #15 : 01.06.2015 10:48:16 »
Спасибо! Тоже попробую проверить.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: поиск по файлу в репозитории
« Ответ #16 : 01.06.2015 15:26:44 »
Наваял тут скрипт на shell'е для поиска по путям среди записей индексов. Используется просто (от пользователя, права root не требуются):
sh имя_скрипта.sh аргумент1 аргумент2...аргументNПри вызове без аргументов можно лишь обновить/закачать индексы (в зависимости от того, закачивались они ранее или нет). Для поиска скрипт требует: grep, apt-repo, sed, а для работы с файлами индексов (закачка или обновление локальной копии из репозитория) - wget.
Совпадение результата обрабатывается простым grep'ом, поэтому возможно наличие мусора в выводе (частичное совпадение, а не точное).

Если пользователь не в хомяке, то .../.contents_index/... создаётся в текущем каталоге
Сохранение в: «/home/user/Загрузки/.contents_index/1/i586/contents_index»


Лучше бы contents_index держать где-то в /var/cache общесистемно, иначе при трёх пользователях, contents_index'ы легко отожрут от хомяка гигабайт дискового, а это уже разбазаривание дискового
Длина: 109950860 (105M) [application/octet-stream]
Длина: 249505333 (238M) [application/octet-stream]
Но пока обкатать можно на хомяке.


Ну и краткая справка скрипту не помешает.


Про мусор:
Ну я бы не назвал это мусором, - необходимо более точно задавать модель для поиска, поскольку модель может быть любой частью пути.
Вторично погрепано чтобы не показывать простыни:
$ grep /boot /home/user/Загрузки/.contents_index/1/i586/contents_index | grep broken/boot/
/usr/src/linux-2.6.32-ovz-el-alt130/include/config/x86/reroute/for/broken/boot/irqs.h kernel-headers-modules-ovz-el
/usr/src/linux-3.14.29-sec-def-alt2/include/config/x86/reroute/for/broken/boot/irqs.h kernel-headers-modules-sec-def
/usr/src/linux-3.14.41-std-def-alt1/include/config/x86/reroute/for/broken/boot/irqs.h kernel-headers-modules-std-def
/usr/src/linux-3.14.41-std-pae-alt1/include/config/x86/reroute/for/broken/boot/irqs.h kernel-headers-modules-std-pae
/usr/src/linux-3.19.7-un-def-alt1/include/config/x86/reroute/for/broken/boot/irqs.h kernel-headers-modules-un-def
$ grep ^/boot /home/user/Загрузки/.contents_index/1/i586/contents_index | grep -i splash
/boot/splash/centaurus branding-altlinux-centaurus-bootloader
/boot/splash/centaurus/message branding-altlinux-centaurus-bootloader
/boot/splash/tablet branding-altlinux-tablet-bootloader
/boot/splash/tablet/message branding-altlinux-tablet-bootloader

$ grep boot /home/user/Загрузки/.contents_index/1/i586/contents_index | head -n 3
/bin/svscanboot daemontools
/boot filesystem
/boot/System.map-2.6.32-el-def-alt25 kernel-image-el-def
$ grep ^boot /home/user/Загрузки/.contents_index/1/i586/contents_index | head -n 3
$
$ grep boot$ /home/user/Загрузки/.contents_index/1/i586/contents_index | head -n 3
/etc/rc.d/rc.halt coldreboot
/etc/rc.d/rc.reboot coldreboot
/usr/lib/etherboot etherboot

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: поиск по файлу в репозитории
« Ответ #17 : 01.06.2015 17:55:43 »
Поиск в contents_index, файлов, каталогов и симлинков, которые находятся в конце строки пути к ним и оканчиваются в строке пути на boot (с обработкой табуляции как конца пути в строке формата: путь - табуляция - имя пакета)

# Model: boot and press ^v+Tab
$ grep "boot    " /home/user/Загрузки/.contents_index/1/i586/contents_index | head -n 3
/bin/svscanboot daemontools
/boot filesystem
/boot/boot extlinux
$ grep boot"$(printf '\t')" /home/user/Загрузки/.contents_index/1/i586/contents_index | head -n 3
/bin/svscanboot daemontools
/boot filesystem
/boot/boot extlinux
$ grep -P "boot\t" /home/user/Загрузки/.contents_index/1/i586/contents_index | head -n 3
/bin/svscanboot daemontools
/boot filesystem
/boot/boot extlinux
$ grep "$(printf 'boot\t')" /home/user/Загрузки/.contents_index/1/i586/contents_index | head -n 3
/bin/svscanboot daemontools
/boot filesystem
/boot/boot extlinux
$ rpm -qplv /tmp/1111/extlinux_4.05-alt3_i586.rpm|head -n 1
lrwxrwxrwx    1 root    root                1 сен 12  2012 /boot/boot -> .

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 9 001
Re: поиск по файлу в репозитории
« Ответ #18 : 01.06.2015 21:18:41 »
Скрипт улучшать/изменять не планирую. Если понимаете больше и используете (тем более многопользовательно и с многократным дополнительным фильтрованием), то вам и карты (скрипт) в руки. Я в такие глубины не забирался и максимум, что использовал, это поиск через веб морду. И то за всё время, пока линуксами пользовался (лет 5 как минимум), это было десяток раз, не больше.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: поиск по файлу в репозитории
« Ответ #19 : 02.06.2015 02:01:40 »
...

Хотел повысить точность поиска
contents=$basedir/$repocount/$i/$index
while read line
do
IFS=$'\t'
set $line
if echo $1 | grep -i $n >/dev/null
then echo $line
fi
done < $contents

но бросил:
перебирать циклом почти четыре с половиной миллиона строк слишком жёстко.

Оффлайн SUNNY

  • Завсегдатай
  • *
  • Сообщений: 61
    • Email
Re: поиск по файлу в репозитории
« Ответ #20 : 03.06.2015 01:25:18 »
Скрипт работает. Кстати может подсказать кто, как из вывода каждой строки оставить только то, что после первого пробела, а потом убрать повторы.

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 9 001
Re: поиск по файлу в репозитории
« Ответ #21 : 03.06.2015 07:25:28 »
как из вывода каждой строки оставить только то, что после первого пробела, а потом убрать повторы.
Дорабатывать часть скрипта, отвечающую непосредственно за сам поиск, изменение поведения grep или фильтрование иным способом, нежели тот, что в скрипте применён.
Сам скрипт сочинял на коленке в условиях ограничения времени (и цель ставилась просто получить результат без каких-либо нюансов или особых требований), поэтому он явно требует шлифовки и, скорее всего, доработки функционала.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 003
    • Домашняя страница
    • Email
Re: поиск по файлу в репозитории
« Ответ #22 : 03.06.2015 10:53:04 »
Скрипт работает. Кстати может подсказать кто, как из вывода каждой строки оставить только то, что после первого пробела, а потом убрать повторы.
cut -f2- -d' ' | sort -u
Андрей Черепанов (cas@)

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 9 001
Re: поиск по файлу в репозитории
« Ответ #23 : 03.06.2015 19:23:18 »
Скрипт работает. Кстати может подсказать кто, как из вывода каждой строки оставить только то, что после первого пробела, а потом убрать повторы.
cut -f2- -d' ' | sort -u
Поскольку там табуляция, то должно бытьcut -f2 | sort -u

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 9 001
Re: поиск по файлу в репозитории
« Ответ #24 : 13.06.2015 20:36:49 »
Кстати может подсказать кто, как из вывода каждой строки оставить только то, что после первого пробела, а потом убрать повторы.
Поскольку там табуляция, то должно быть
cut -f2 | sort -u
Второй вариант скрипта с учётом предложенного обстоятельства

Оффлайн kiav

  • Завсегдатай
  • *
  • Сообщений: 533
  • Стич-спасатель
    • Email
Re: поиск по файлу в репозитории
« Ответ #25 : 20.10.2015 22:44:40 »
Я делаю grep по base/contents_index на сервере с зеркалом.
Неужели через гланды это делается?! В yum, к примеру, это делается командой yum provides, а широко известную в сети apt-file в AltLinux я не нашел (тоже требуется apt-file).

А вот так не пойдет?
Для этого нужно знать где точно лежит файл (после установки). А если неизвестно?

Добавлено: Гланды нашел через другую тему по тому же вопросу.
« Последнее редактирование: 20.10.2015 23:12:08 от kiav »

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 674
Раньше пользовался неким сайтом, на котором поиском можно было найти как один и тот же пакет называется в разных дистрибутивах linux. Ссылку потерял.
Нужно узнать что в altlinux предоставляет "Apache Libcloud library"?

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Нужно узнать что в altlinux предоставляет "Apache Libcloud library"?

Если официальный сайт http://libcloud.apache.org/ то  python-module-libcloud
Собственно как вариант, можно на packages.altlinux.org вбивать в поиск ссылку на официальный сайт программы и искать по ней.

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 674
Эта библиотека мне нужна не в система, а для сборки пакета. Сайт был другой, и советовали мне его, вроде, на этом форуме. Но Ваш способ тоже сработал, спасибо.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 003
    • Домашняя страница
    • Email
Андрей Черепанов (cas@)