Intereting Posts
Почему «A = 10 echo $ A» не печатает 10? Как сделать rsync удалять файлы, которые были удалены из исходной папки? apt-get в контейнере LXC очень медленный на сервере Ubuntu 12.04 Как вы проверяете скорость сети между двумя ящиками? Как установить Intellij IDEA 15 на Ubuntu 15.10 Bluetooth Speaker не делает A2DP Ubuntu Gnome 17.04 Что означает это сообщение об ошибке: lsof: WARNING: не может stat () fuse.gvfs-fuse-daemon файловая система /home/nes/.gvfs Собственный драйвер Nvidia зависает / замерзает / пустой экран при входе в систему 13.10 Добавить теги или аннотации в текстовые файлы Как сделать демона, который проверяет, работает ли программа (с регулярными интервалами) и запускает ее, если это не так? Как использовать команду «grep» для поиска текста, включая подкаталоги Скрытые части недавно удаленного программного обеспечения Не удается включить черный модуль ядра в Ubuntu 15.10 Установка Mercurial: начните с рабочего стола или сервера Ubuntu? Как установить и настроить DHCP-сервер?

Как сравнить два номера версии пакета

Я пишу скрипт на PHP, который должен сравнивать два номера версии пакета, чтобы определить, что является более новым.

PHP имеет удобную функцию, называемую version_compare() , но она действительно запуталась с некоторыми из более креативных номеров версий. Например, version_compare() считает, что 0.9.8g-16ubuntu3.1 новее 0.9.8o-1ubuntu4.4 .

Кто-нибудь знает, как я могу заставить это работать?

Я рад запускать любые сценарии командной строки, используя exec() .

взгляните на опцию dpkg –compare-versions , это позволит вам спросить dpkg, чтобы сделать сравнение 🙂

 dpkg --compare-versions 0.9.8g-16ubuntu3.1 lt 0.9.8o-1ubuntu4.4 

будет возвращать 0, то есть 0.9.8g-16ubuntu3.1 будет lt (меньше, <) до 0.9.8o-1ubuntu4.4