Intereting Posts
Команда Mac OS для разрешения имен хостов, таких как «getent» в Linux Раскладка клавиатуры изменилась. Как и почему? Возможно ли назначить отдельный IP-адрес для обслуживания / демон? Есть ли простой способ заменить дубликаты файлов на hardlinks? Как запустить автозаполнение без клавиши табуляции? получить командную строку agrument переменной в сценарии оболочки Как получить информацию с тем, что у меня есть сейчас? Невозможно найти объяснения о настройке «fanX_div» (lm-sensor) Сделать awk и получить столбцы chroot: не удалось запустить команду '/ bin / bash': разрешение отклонено Как обновить магнитное состояние на дисках с помощью резервных копий? Ubuntu Не удалось очистить пакет Как скриптировать эту функцию массового переименования? Почему выдача одной и той же команды создает больше выходных данных в tty, чем в pts / gnome-terminal? Какую команду вы бы использовали, если вы хотите удалить пароль, назначенный группе

«ValueError: _system не инициализируется» при использовании apt.VersionCompare

Я написал сценарий bash, который должен сравнить две строки версии, чтобы решить загрузить новую версию или нет. Тест основан на скрипте Python, который делает apt.VersionCompare() , который делает сравнение версий способом apt .

 #!/usr/bin/env python import sys, apt res = apt.VersionCompare(sys.argv[1], sys.argv[2]) if res < 0: sys.exit(-1) if res > 0: sys.exit(1) sys.exit(0) 

С обновлением до Ubuntu 14.4 это перестало работать.

Я попытался изменить сценарий, следующий за https://stackoverflow.com/questions/4957514/, как показано ниже:

 #!/usr/bin/env python import sys, apt_pkg res = apt_pkg.version_compare(sys.argv[1], sys.argv[2]) if res < 0: sys.exit(-1) if res > 0: sys.exit(1) sys.exit(0) 

но это дает мне ValueError: _system not initialized . Как решить, или есть лучший способ сравнить версии, такие как apt ?

Странно код работает, когда я запускаю его из интерактивной подсказки Python. Во всяком случае, этот отчет об ошибке указывает на решение (?) 1 :

Добавьте вызов apt_pkg.init_system() как apt_pkg.init_system() здесь (или также import apt ):

 #!/usr/bin/env python import sys, apt_pkg apt_pkg.init_system() res = apt_pkg.version_compare(sys.argv[1], sys.argv[2]) if res < 0: sys.exit(-1) if res > 0: sys.exit(1) sys.exit(0) 

1 По- InitSystem имя функции InitSystem также изменилось, от CamelCase до использования подчеркивания.