Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 3, 2009 12:47:51

Alhir
От:
Зарегистрирован: 2009-09-03
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка зависимостей пакетов через регулярные выражения

Доброго времени суток. Есть список установленных в системе пакетов. Есть зависимость вида: atk >= 1.23.5-i486-1, где atk - имя, 1.23.5 - версия, i486 - архитектура, под которую собран пакет, 1 - номер сборки. Необходимо определить, удовлетворена ли эта зависимость. На данный момент проблема решена поиском в системе пакета с указанным именем и сравнением его версии, архитектуры и т.д. с аналогичными аттрибутами, взятыми из зависимости. Т.е. этой зависимости будет удовлетворять пакет atk-1.23.5-i486-1 или atk-1.23.6-i486-1, а вот atk-1.22.5-i486-1 - уже не будет. Всё это занимает приблизительно 20-30 строк кода. Но есть смутное подозрение, что это можно реализовать через регулярное выражение, и соответственно 20-30 строк ужмутся до 2-3. Вот только никак не могу представить регулярное выражение, которое позволяло бы провести такую проверку. Можно ли впринципе решить поставленную задачу регулярным выражением и если да, то какой вид это выражение будет иметь?



Офлайн

#2 Сен. 3, 2009 13:34:19

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Проверка зависимостей пакетов через регулярные выражения

Проверку на “больше/меньше” регекспом не сделаешь. А вот разобрать версию на части, и проверить дальше - запросто.
Думаю сам регексп написать вы и сами справитесь.

Отредактировано (Сен. 3, 2009 13:36:28)

Офлайн

#3 Сен. 3, 2009 15:08:43

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка зависимостей пакетов через регулярные выражения

А версия каким образом определяется, дается переменная со строкой вышеуказанного вида?



Офлайн

#4 Сен. 3, 2009 18:11:39

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Проверка зависимостей пакетов через регулярные выражения

можно вот что-то типа такого

def test(t,m):
a,b = t.split('-'),m.split('-')
for i in xrange(len(b)):
if a[i]<b[i]: return 'no'
return 'yes'

# test , minimal
print test("1.23.5-i486-1","1.23.5-i486-1")

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version