Как получить список не-LTS пакетов, установленных эффективно?

Я хотел бы посмотреть, в какой степени моя система поддерживается LTS, с помощью каких пакетов поддерживается в течение 5 лет, а каких нет. Я мог бы игнорировать некоторые не поддерживаемые 5 лет пакеты, так как некоторые из них используются редко или очень маловероятно, чтобы попасть в проблемы (безопасности).

Я думаю, что это полезно, так как можно получить отчет и сделать вывод, например, "моя система на 100% LTS" , "из-за пакетов X, Y, Z, моя система на 99% LTS" , "из-за использования KDE моя система теперь на 50% LTS ".

Что касается моего ответа на вопрос Имеется ли в LLDE 12.04 LTS? , я опубликовал способ узнать, какие пакеты Ubuntu поддерживают пять лет. Например:

$ apt-cache show unity | grep ^Supported
Supported: 5y

$ apt-cache show lxde-core | grep ^Supported
<no output>

Я мог бы написать скрипт, чтобы получить всю информацию для всех пакетов, однако команды apt-cache ужасно медленные:

real    0m1.535s
user    0m1.484s
sys     0m0.036s

С установленными 2700+ пакетами Это займет примерно 70 минут (!).

Как мне ускорить процесс и получить отчет обо всех пакетах, не поддерживаемых 5-летним периодом, в моей системе?

Я бы предпочел простую команду оболочки apt-* для использовать в простом сценарии оболочки. Если это потребует более сложных сценариев, таких как переход на Python, это тоже хорошо. В конце концов, я хотел бы выпустить (маленький) скрипт для простого и быстрого создания отчета о системе.

Примечание: меня не интересует дискуссия о том, предоставляет ли конкретный вариант Ubuntu LTS или нет - это на самом деле просто пакеты. Вы можете просто смешивать пакеты LTS и не-LTS в системе.

5
задан 13 April 2017 в 15:23

2 ответа

Я не знаю о Вашей системе, но это - то, что я сделал:

time dpkg -l | grep 'ii' |  awk ' {print $2}' | xargs apt-cache show | grep '^Supported:' | grep -v '5y' | wc -l
158

real        0m27.549s
user        0m5.580s
sys         0m21.701s

так плохо не кажется правильным?

Общее количество пакетов:

dpkg -l | grep 'ii' | wc -l
2602

Я выполняю AMD электронный 350, который не является точно сверкающим быстрым CPU...

Править: максимальное количество аргументов xargs:

xargs --show-limits

...
POSIX upper limit on argument length (this system): 2091826
...
6
ответ дан 13 April 2017 в 15:23

Вот быстрый однострочник, чтобы получить список пакетов, которые поддерживаются для МЕНЬШЕ, чем полный период LTS в 5 лет, используя grep-dctrl (1):

sudo apt-get install dctrl-tools
dpkg -l | grep '^ii' |  awk ' {print $2}' | xargs apt-cache show | grep-dctrl -v -FSupported --exact-match -nsPackage 5y | sort | uniq

Вы можете легко измените его, чтобы искать разные периоды поддержки.

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: