LINUX.ORG.RU

plocate 1.1.24

 , , plocate, ,

plocate 1.1.24

0

2

13 января, после более годового перерыва, состоялся выпуск 1.1.24 набора консольных утилит plocate для поиска файлов, полностью заменяющих locate(1) гораздо более быстрым и компактным индексом.

plocate работает путём создания инвертированного индекса из триграмм (комбинаций из трёх байтов) поисковых строк, что позволяет быстро сузить набор кандидатов до очень небольшого списка, вместо линейного сканирования каждой записи. Утилита выполняет почти все операции ввода-вывода асинхронно, используя API io_uring, если он доступен (Linux 5.1+), что снижает влияние задержки поиска в системах без SSD. Как и mlocate и slocate, возвращаемый набор файлов зависит от прав пользователя, то есть, пользователь увидит файл только в том случае, если find(1) его отображает (все каталоги из корня имеют права +rx).

Утилиты написаны на языке C++ и распространяются по лицензии GNU GPL 2.

Список изменений:

  • Улучшена обработка ошибок при синхронном чтении.
  • Удалено условие ConditionACPower=true из юнита systemd для исправления проблемы, при которой определенные схемы зарядки аккумулятора не позволяли запускаться updatedb на ноутбуках.
  • Добавлена новая опция --config-file для изменения пути к updatedb.conf.

>>> Список изменений в файле NEWS архива

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

Ну хоть не на расте... :)

И если locate вынести и заменить его этим, то что-нибудь сломается?

gns ★★★★★
()
Ответ на: комментарий от gns

$ man plocate-build:

plocate-build(8)

NAME
       plocate-build - generate index for plocate

SYNOPSIS
       plocate-build [OPTION]...  MLOCATE_DB PLOCATE_DB

DESCRIPTION
       plocate-build  creates  an  index from plocate(1) from an index earlier generated by updatedb(8) from the mlocate(1) package. Most users would rather want to use plocate's own updatedb(8), which is more direct.  If PLOCATE_DB already exists, it will be overwritten (non-atomically). The file is created such that it is not  world-readable,  as  the  final  access check is done by plocate(1) during the search.
dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Это все понятно. Кто-то в системе явно на locate(1) рассчитывает. Если mlocate вынести, то что-то же сломаться может. А иметь две базы как-то не хочется.

gns ★★★★★
()
Ответ на: комментарий от gns

И если locate вынести и заменить его этим, то что-нибудь сломается?

А вы уверены, что у вас именно locate. Имхо его давно уже заменили. /usr/bin/locate это симлинк на plocate, если я правильно помню.

dmitry237 ★★★★★
()
Ответ на: комментарий от gns

Кто-то в системе явно на locate(1) рассчитывает.

Пусть сделают перерасчёт. :)

что-то же сломаться может

Может, да. Есть несовпадения в опциях.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dmitry237
$ ls -als /etc/alternatives/locate
0 lrwxrwxrwx 1 root root 16 авг 17  2024 /etc/alternatives/locate -> /usr/bin/plocate

Походу да, заменили. Ну и «ждем ебилдов» ©

gns ★★★★★
()
Ответ на: комментарий от dataman

Да вроде уже поменяли и в альтернативы вписали. Ну вышла версия, и спасибо :)

gns ★★★★★
()
Ответ на: комментарий от gns

Ну хоть не на расте… :)

Еще и под человечьей лицензией, а не всякие там апачи и т.п.))))

Sm0ke85
()
Ответ на: комментарий от UriZzz
Приходит как-то Микеланджело в Сикстинскую капеллу. Встречает папу Римского Юлия II и говорит:
- Здрасьте.
- Здрасьте, потолок покрасьте.
Dimez ★★★★★
()
Ответ на: комментарий от gns
$ ls -al /etc/alternatives/locate
ls: невозможно получить доступ к '/etc/alternatives/locate': Нет такого файла или каталога

Отмечу что ничего не сломалось.

firkax ★★★★★
()
Ответ на: комментарий от gns

А где оно нужно вообще реально? Я вот ни разу в жизни им не пользовался (кроме, возможно, проверки что это такое когда я первый раз эту штуку увидел). Поэтому отовсюду где вспоминаю его сношу (вместе с ежедневными ночными checksetuid и checkneggrp в фрибсд) чтобы не тратило зря скорость диска своими индексированиями и не мигало светодиодом.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Типичная звдача — а где лежит такой-то файл? Знаешь имя, не знаешь путь. причем показывает по части имени. Например:

gleb@raccoon:~/src/linux$ locate hosts
/etc/ghostscript
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/ImageMagick-6/type-ghostscript.xml
/etc/apparmor.d/abstractions/hosts_access
/etc/avahi/hosts
...
<И еще стопицот упоминаний ghostscript>

Ну пример от балды, но штука иногда полезная.

gns ★★★★★
()
Ответ на: комментарий от firkax

Я вот ни разу в жизни им не пользовался

живут же люди!

baja
()
Ответ на: комментарий от dataman

Новости 💯➕💯

Пол дня голову ломал, зачем ты это написал, думал может техническая какая запись, которую забыл удалить, потом думал может шифр какой к этой софтине, а потом увидел реакт и как понял!

Большое тебе спасибо! Без шуток: новости у тебя интересные, о софте в новостях я даже не слышал в 90% случаев, тем и интереснее! На следующую круглую дату я уже приготовил тебе некорректный ответ под -20 :D

XMPP ★★
()

Раньше пользовался, но есть большой минус, нет поиска в реальном времени, пока не проиндексируются новые файлы. По скорости fd незначительно уступает в скорости, поэтому удалил.

dmitry237 ★★★★★
()
Ответ на: комментарий от gns

Недавно искал все index.html, наверное plocate было бы быстрее, но и fd меньше секунды, повторил:

$ h -c 2                                 

  Id     Duration CommandLine
  --     -------- -----------
   2        0.257 fd 'index.htm?' /usr/
   3        0.108 fd 'index.htm?' /usr/ | wc -l   # 91 файл

Это история pwsh, в ней встроенный «time»

На самом деле поиском пользуюсь редко

dmitry237 ★★★★★
()

гораздо более быстрым и компактным индексом

Неужели кто-то жаловался на быстродействие locate? У меня всегда отрабатывал очень быстро.

sena ★★★
()
Ответ на: комментарий от gns

Что делает locate я знаю. Я не знаю когда вот эта ситуация «знаешь имя, не знаешь путь» может возникнуть. Пример с hosts тому только подтверждение, т.к. все и так знают где он лежит.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Мне трудно придумать реалистичный пример вот из головы. Но я точно эту штуку пользую иногда по делу. Как-то незаметно это происходит. Если какой юз-кейс возникнет, то напишу сюда, если топик не устареет.

gns ★★★★★
()

По беглому взгляду, серьезный и антихипстерский проект. Репа на своем хостинге на голом gitweb, C++17 с интринсиками, содержательные комменты, бито-байтомолотилка, нетривиальные алгоритмы, многопоточка, многопроцессность со скидыванием привилегий…

Не подумал бы, что *locate может быть таким замороченным. Респект норвежцу и соавторам.

unsigned ★★★★
()
Ответ на: комментарий от unsigned

git repository (requires IPv6)

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

ac130kz ★★★
()
Ответ на: комментарий от dmitry237

Наверное имелся ввиду алгоритм индексирования, т.е. работа updatedb

А это зачем ускорять? Он отрабатывает когда-то в фоне, не загружая ЦПУ. А здесь, небось, сделали многопоточку и будут грузить машину на 100%? Зачем? Оптимизация ради оптимизации? Путём значительного усложнения кода и риска создания условий для race condition?

Есть много мест, где можно и нужно оптимизировать, но как раз здесь всё работало отлично.

sena ★★★
()
Последнее исправление: sena (всего исправлений: 2)
Ответ на: комментарий от unsigned

нетривиальные алгоритмы, многопоточка, многопроцессность

Но ведь locate работает великолепно. Оптимизация ради оптимизации?

sena ★★★
()
Ответ на: комментарий от sena

locate уже давно нет в репах, если улучшают plocate, то это хорошо:

$ paru -Sl | grep 'locate'      
extra libwlocate 1:0.1-4
extra plocate 1.1.24-1
aur geolocate-git unknown-version
aur geolocate-rs unknown-version
aur mlocate-git unknown-version
aur perl-module-locate unknown-version
aur plocate-git unknown-version
aur plocate-gui-git unknown-version
dmitry237 ★★★★★
()
Ответ на: комментарий от dmitry237

Наверное имелся ввиду алгоритм индексирования, т.е. работа updatedb

Не только. Посмотрел исходники, io_uring и для поиска используется.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dmitry237

locate уже давно нет в репах

Смотря в чьих. :) Арч не показатель.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dmitry237

наверное plocate было бы быстрее, но и fd меньше секунды, повторил:

сразу видно, что в системе похоже только один ссд небольшой

посмотрел бы, я как ты на винтах в 50 тб поискал меньше секунды

baja
()
Ответ на: комментарий от baja

посмотрел бы, я как ты на винтах в 50 тб поискал меньше секунды

Я поэтому и удалил plocate, fd справляется без индексации. Ну а система действительно компактная:

$ df -h / /data
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme1n1p2  469G  6.9G  438G   2% /
/dev/nvme0n1p1  916G  191G  680G  22% /data
dmitry237 ★★★★★
()
Ответ на: комментарий от dataman

Потому что для всех напоминание, вместо того чтобы создавать N+1 реализацию уже существующего, лучше помогите уже существующему.

sena ★★★
()
Ответ на: комментарий от unsigned

Задержка в 20 секунд (пример со страницы проекта) - не то чтобы великолепно.

Что за пример? Ссылку можно? У меня отрабатывает мгновенно. Или речь про plocate?

sena ★★★
()
Последнее исправление: sena (всего исправлений: 1)
Ответ на: комментарий от sena

лучше помогите уже существующему

Да смысл, если они на разных ЯП? Автор какой знает, на том и написал.

dataman ★★★★★
() автор топика
Ответ на: комментарий от unsigned

Полагаю, у кого-то намного больше файлов.

Ну да, у них там в примере 27 миллионов, у меня всего 4. Может после какого-то размера у locate действительно тормоза начинаются. Надо проверять…

sena ★★★
()

Это вовсе не простой синтаксис, сможет ли понять его концепцию, обычная продавщица, бабушка, школьный учитель?) Нет, никогда. Раньше когда делали cp/m и уже потом всё подобное, не думали сделать всё простым для каждого)

REDDERa
()
Ответ на: комментарий от sena

А по мне так автор проги вправе сам решать чем ему интереснее заниматься. Главное чтобы не устраивал принудительную замену других реализаций на свою административными методами.

firkax ★★★★★
()
Ответ на: комментарий от REDDERa

Раньше когда делали cp/m и уже потом всё подобное, не думали сделать всё простым для каждого)

В те времена у «каждого» не было своего компьютера. Теперь — есть. :)

Somebody ★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.