NixOS поддерживает откаты обновления, хотя, насколько я понимаю, это не так далеко, как хотелось бы: если вы обновите A, B и C за одну операцию, вы можете откатить всю эту операцию, но не только A и B. (Вам следует иметь возможность откатить A, B и C назад, а затем обновить C ...) Тем не менее, это имеет смысл с точки зрения транзакций.
Debian (в сочетании с архивом снимков , если у вас больше нет старых пакетов) позволит вам понизить версию B, и такие инструменты, как apt
или aptitude
] во многих случаях выяснит, что A также нужно понизить до более ранней версии (как только вы убедите их, что вы не хотите просто повышать B). Но, как вы говорите, это имеет тенденцию быть несколько беспорядочным, и понижение версии пакета в любом случае не поддерживается в Debian (что означает, что большую часть времени они работают, но если они ломаются, это не ошибка).
В debian вы можете запустить dpkg --list
Чтобы получить дополнительную информацию о запуске конкретного пакета:
dpkg -p <package_name>
или
dpkg -s <package_name>
например:
# dpkg -s gcc
Package: gcc
Status: install ok installed
Priority: optional
Section: devel
Installed-Size: 42
Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
Architecture: amd64
Source: gcc-defaults (1.136)
Version: 4:4.9.2-2
Provides: c-compiler
Depends: cpp (>= 4:4.9.2-2), gcc-4.9 (>= 4.9.2-1~)
Recommends: libc6-dev | libc-dev
Suggests: gcc-multilib, make, manpages-dev, autoconf, automake, libtool, flex, bison, gdb, gcc-doc
Conflicts: gcc-doc (<< 1:2.95.3)
Description: GNU C compiler
This is the GNU C compiler, a fairly portable optimizing compiler for C.
This is a dependency package providing the default GNU C compiler.
В дистрибутиве на основе RHEL вы можете запустить rpm -qa
В Debian, возможно, вы могли бы использовать параметр - showformat = format для dpkg-query .
В качестве примера:
dpkg-query --show --showformat='${binary:Package}\t${Version}\t${Architecture}\t${binary:Summary}\n' gcc
Здесь будут перечислены исходные пакеты и версии, соответствующие установленным двоичным пакетам:
dpkg-query --show -f '${source:Package} ${source:Version}\n' | sort -u
Это наиболее близкое соответствие с отдельными частями программного обеспечения, которые вы можете получить автоматически: вы увидите gcc-4.9
только один раз с соответствующей версией вместо всех соответствующих двоичных пакетов. Вы не можете легко получить информацию о "поставщике", вам нужно будет посмотреть детали пакета ( apt-cache show ...
) или информацию о лицензировании (в / usr / share / doc /
- он должен указывать на «исходный» проект, т.е. «поставщик»); не гарантируется, что это будет в машиночитаемом формате, поэтому будет задействован некоторый человеческий синтаксический анализ.
Вы по-прежнему найдете некоторые пакеты с исходным кодом, название которых содержит (основную) версию, например. gcc-4.9
, gcc-5
и т.д .; они неизбежны, когда пакеты разработаны таким образом, что основные версии можно устанавливать совместно, как в случае с GCC.
Эквивалентная команда оборотов
rpm --qf "%{SOURCERPM}\n" -qa | sort -u