• Bug#1104141: apt autoremove marks some packages as manual

    From inasprecali@21:1/5 to All on Fri Apr 25 23:40:01 2025
    Package: apt
    Version: 2.6.1
    Severity: normal
    X-Debbugs-Cc: inasprecali@disroot.org

    Dear Maintainer,

    Running apt autoremove (or autopurge) resulted in some packages being
    marked as manual afterwards, as shown by the output of apt-mark
    showmanual.

    Here is what happened in my particular situation.

    I run the full GNOME desktop environment, obtained by installing the
    "gnome" metapackage (not gnome-core). Some time later, I also
    installed the "libreoffice" metapackage.

    Afterwards, I noticed that the libreoffice metapackage also pulls in libreoffice-base and libreoffice-draw, which I am not using. Since I
    noticed that the gnome metapackage depends on the following packages:

    - libreoffice-writer
    - libreoffice-impress
    - libreoffice-draw
    - libreoffice-calc

    which are the only parts of the LibreOffice suite I use regularly, I
    decided to remove the libreoffice metapackage to tidy things up.

    To do so, I marked it as "automatically installed" by running
    "apt-mark auto libreoffice", then running "apt autoremove"

    As expected, packages that were now no longer required, including the libreoffice metapackage itself, were removed. To my surprise, the
    following packages were later marked as manual according to apt-mark.
    Here is the output of apt-mark showmanual | grep libreoffice right
    after autoremoval:

    libreoffice-calc
    libreoffice-core
    libreoffice-draw
    libreoffice-gtk3
    libreoffice-impress
    libreoffice-writer

    Before autoremoval, only libreoffice-gtk3 was listed, which was
    expected since I did install that package manually.

    Using autopurge instead of autoremove produces the same result.
    Interestingly enough, if I just run "apt autoremove libreoffice"
    directly instead of using apt-mark auto and _then_ running apt
    atoremove, the issue does not occur: autoremove does not mark any
    additional packages as manual.

    To summarize, the following commands should be sufficient to reproduce
    the issue:

    apt install gnome && apt install libreoffice && apt-mark auto libreoffice && apt autoremove

    After a brief interaction on the #debian channel on the IRC server irc.debian.org, another user was able to reproduce the issue on
    Trixie. This bug report specifically refers to Bookworm.

    The main question is: is this the expected behavior?

    If so, this should be described in detail in the official
    documentation, preferably in the manpage. I couldn't find anything
    about this anywhere in the documentation or the internet.

    Of course, if this behavior is not expected, it is a genuine bug that
    needs to be fixed.

    Thank you for your time.

    -- Package-specific info:

    -- apt-config dump --

    APT "";
    APT::Architecture "amd64";
    APT::Build-Essential "";
    APT::Build-Essential:: "build-essential";
    APT::Install-Recommends "0";
    APT::Install-Suggests "0";
    APT::Sandbox "";
    APT::Sandbox::User "_apt";
    APT::Authentication "";
    APT::Authentication::TrustCDROM "true";
    APT::NeverAutoRemove "";
    APT::NeverAutoRemove:: "^firmware-linux.*";
    APT::NeverAutoRemove:: "^linux-firmware$";
    APT::NeverAutoRemove:: "^linux-image-[a-z0-9]*$";
    APT::NeverAutoRemove:: "^linux-image-[a-z0-9]*-[a-z0-9]*$"; APT::VersionedKernelPackages "";
    APT::VersionedKernelPackages:: "linux-.*";
    APT::VersionedKernelPackages:: "kfreebsd-.*";
    APT::VersionedKernelPackages:: "gnumach-.*";
    APT::VersionedKernelPackages:: ".*-modules";
    APT::VersionedKernelPackages:: ".*-kernel";
    APT::Never-MarkAuto-Sections "";
    APT::Never-MarkAuto-Sections:: "metapackages";
    APT::Never-MarkAuto-Sections:: "tasks";
    APT::Move-Autobit-Sections "";
    APT::Move-Autobit-Sections:: "oldlibs";
    APT::Update "";
    APT::Update::Post-Invoke-Success "";
    APT::Update::Post-Invoke-Success:: "/usr/bin/test -e /usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service && /usr/bin/test -S /var/run/dbus/system_bus_socket && /usr/bin/gdbus call --system --dest org.freedesktop.PackageKit --object-path /
    org/freedesktop/PackageKit --timeout 4 --method org.freedesktop.PackageKit.StateHasChanged cache-update > /dev/null; /bin/echo > /dev/null";
    APT::Update::Post-Invoke-Success:: "if /usr/bin/test -w /var/cache/swcatalog -a -e /usr/bin/appstreamcli; then appstreamcli refresh --source=os > /dev/null || true; fi";
    APT::autoremove "";
    APT::autoremove::recommendsimportant "0";
    APT::autoremove::suggestsimportant "0";
    APT::Architectures "";
    APT::Architectures:: "amd64";
    APT::Architectures:: "i386";
    APT::Compressor "";
    APT::Compressor::. "";
    APT::Compressor::.::Name ".";
    APT::Compressor::.::Extension "";
    APT::Compressor::.::Binary "";
    APT::Compressor::.::Cost "0";
    APT::Compressor::zstd "";
    APT::Compressor::zstd::Name "zstd";
    APT::Compressor::zstd::Extension ".zst";
    APT::Compressor::zstd::Binary "zstd";
    APT::Compressor::zstd::Cost "60";
    APT::Compressor::zstd::CompressArg "";
    APT::Compressor::zstd::CompressArg:: "-19"; APT::Compressor::zstd::UncompressArg "";
    APT::Compressor::zstd::UncompressArg:: "-d";
    APT::Compressor::lz4 "";
    APT::Compressor::lz4::Name "lz4";
    APT::Compressor::lz4::Extension ".lz4";
    APT::Compressor::lz4::Binary "false";
    APT::Compressor::lz4::Cost "50";
    APT::Compressor::gzip "";
    APT::Compressor::gzip::Name "gzip";
    APT::Compressor::gzip::Extension ".gz";
    APT::Compressor::gzip::Binary "gzip";
    APT::Compressor::gzip::Cost "100";
    APT::Compressor::gzip::CompressArg "";
    APT::Compressor::gzip::CompressArg:: "-6n"; APT::Compressor::gzip::UncompressArg "";
    APT::Compressor::gzip::UncompressArg:: "-d";
    APT::Compressor::xz "";
    APT::Compressor::xz::Name "xz";
    APT::Compressor::xz::Extension ".xz";
    APT::Compressor::xz::Binary "xz";
    APT::Compressor::xz::Cost "200";
    APT::Compressor::xz::CompressArg "";
    APT::Compressor::xz::CompressArg:: "-6";
    APT::Compressor::xz::UncompressArg "";
    APT::Compressor::xz::UncompressArg:: "-d";
    APT::Compressor::bzip2 "";
    APT::Compressor::bzip2::Name "bzip2";
    APT::Compressor::bzip2::Extension ".bz2";
    APT::Compressor::bzip2::Binary "bzip2";
    APT::Compressor::bzip2::Cost "300";
    APT::Compressor::bzip2::CompressArg "";
    APT::Compressor::bzip2::CompressArg:: "-6"; APT::Compressor::bzip2::UncompressArg ""; APT::Compressor::bzip2::UncompressArg:: "-d";
    APT::Compressor::lzma "";
    APT::Compressor::lzma::Name "lzma";
    APT::Compressor::lzma::Extension ".lzma";
    APT::Compressor::lzma::Binary "xz";
    APT::Compressor::lzma::Cost "400";
    APT::Compressor::lzma::CompressArg "";
    APT::Compressor::lzma::CompressArg:: "--format=lzma"; APT::Compressor::lzma::CompressArg:: "-6";
    APT::Compressor::lzma::UncompressArg "";
    APT::Compressor::lzma::UncompressArg:: "--format=lzma"; APT::Compressor::lzma::UncompressArg:: "-d";
    Dir "/";
    Dir::State "var/lib/apt";
    Dir::State::lists "lists/";
    Dir::State::cdroms "cdroms.list";
    Dir::State::extended_states "extended_states";
    Dir::State::status "/var/lib/dpkg/status";
    Dir::Cache "var/cache/apt";
    Dir::Cache::archives "archives/";
    Dir::Cache::srcpkgcache "srcpkgcache.bin";
    Dir::Cache::pkgcache "pkgcache.bin";
    Dir::Etc "etc/apt";
    Dir::Etc::sourcelist "sources.list";
    Dir::Etc::sourceparts "sources.list.d";
    Dir::Etc::main "apt.conf";
    Dir::Etc::netrc "auth.conf";
    Dir::Etc::netrcparts "auth.conf.d";
    Dir::Etc::parts "apt.conf.d";
    Dir::Etc::preferences "preferences";
    Dir::Etc::preferencesparts "preferences.d";
    Dir::Etc::trusted "trusted.gpg";
    Dir::Etc::trustedparts "trusted.gpg.d";
    Dir::Etc::apt-listchanges-main "listchanges.conf"; Dir::Etc::apt-listchanges-parts "listchanges.conf.d";
    Dir::Etc::apt-file-main "apt-file.conf";
    Dir::Bin "";
    Dir::Bin::methods "/usr/lib/apt/methods";
    Dir::Bin::solvers "";
    Dir::Bin::solvers:: "/usr/lib/apt/solvers";
    Dir::Bin::planners "";
    Dir::Bin::planners:: "/usr/lib/apt/planners";
    Dir::Bin::dpkg "/usr/bin/dpkg";
    Dir::Bin::gzip "/bin/gzip";
    Dir::Bin::bzip2 "/bin/bzip2";
    Dir::Bin::xz "/usr/bin/xz";
    Dir::Bin::lz4 "/usr/bin/lz4";
    Dir::Bin::zstd "/usr/bin/zstd";
    Dir::Bin::lzma "/usr/bin/xz";
    Dir::Media "";
    Dir::Media::MountPath "/media/cdrom";
    Dir::Log "var/log/apt";
    Dir::Log::Terminal "term.log";
    Dir::Log::History "history.log";
    Dir::Log::Planner "eipp.log.xz";
    Dir::Ignore-Files-Silently "";
    Dir::Ignore-Files-Silently:: "~$";
    Dir::Ignore-Files-Silently:: "\.disabled$";
    Dir::Ignore-Files-Silently:: "\.bak$";
    Dir::Ignore-Files-Silently:: "\.dpkg-[a-z]+$";
    Dir::Ignore-Files-Silently:: "\.ucf-[a-z]+$";
    Dir::Ignore-Files-Silently:: "\.save$";
    Dir::Ignore-Files-Silently:: "\.orig$";
    Dir::Ignore-Files-Silently:: "\.distUpgrade$";
    Acquire "";
    Acquire::AllowInsecureRepositories "0";
    Acquire::AllowWeakRepositories "0"; Acquire::AllowDowngradeToInsecureRepositories "0";
    Acquire::cdrom "";
    Acquire::cdrom::mount "/media/cdrom";
    Acquire::IndexTargets "";
    Acquire::IndexTargets::deb "";
    Acquire::IndexTargets::deb::Packages ""; Acquire::IndexTargets::deb::Packages::MetaKey "$(COMPONENT)/binary-$(ARCHITECTURE)/Packages";
    Acquire::IndexTargets::deb::Packages::flatMetaKey "Packages"; Acquire::IndexTargets::deb::Packages::ShortDescription "Packages"; Acquire::IndexTargets::deb::Packages::Description "$(RELEASE)/$(COMPONENT) $(ARCHITECTURE) Packages";
    Acquire::IndexTargets::deb::Packages::flatDescription "$(RELEASE) Packages"; Acquire::IndexTargets::deb::Packages::Optional "0"; Acquire::IndexTargets::deb::Translations ""; Acquire::IndexTargets::deb::Translations::MetaKey "$(COMPONENT)/i18n/Translation-$(LANGUAGE)";
    Acquire::IndexTargets::deb::Translations::flatMetaKey "$(LANGUAGE)"; Acquire::IndexTargets::deb::Translations::ShortDescription "Translation-$(LANGUAGE)";
    Acquire::IndexTargets::deb::Translations::Description "$(RELEASE)/$(COMPONENT) Translation-$(LANGUAGE)";
    Acquire::IndexTargets::deb::Translations::flatDescription "$(RELEASE) Translation-$(LANGUAGE)";
    Acquire::IndexTargets::deb::DEP-11 ""; Acquire::IndexTargets::deb::DEP-11::MetaKey "$(COMPONENT)/dep11/Components-$(NATIVE_ARCHITECTURE).yml";
    Acquire::IndexTargets::deb::DEP-11::ShortDescription "Components-$(NATIVE_ARCHITECTURE)";
    Acquire::IndexTargets::deb::DEP-11::Description "$(RELEASE)/$(COMPONENT) $(NATIVE_ARCHITECTURE) DEP-11 Metadata";
    Acquire::IndexTargets::deb::DEP-11::KeepCompressed "true"; Acquire::IndexTargets::deb::DEP-11::KeepCompressedAs "gz"; Acquire::IndexTargets::deb::DEP-11-icons-small ""; Acquire::IndexTargets::deb::DEP-11-icons-small::MetaKey "$(COMPONENT)/dep11/icons-48x48.tar";
    Acquire::IndexTargets::deb::DEP-11-icons-small::ShortDescription "icons-48x48"; Acquire::IndexTargets::deb::DEP-11-icons-small::Description "$(RELEASE)/$(COMPONENT) DEP-11 48x48 Icons";
    Acquire::IndexTargets::deb::DEP-11-icons-small::KeepCompressed "true"; Acquire::IndexTargets::deb::DEP-11-icons-small::KeepCompressedAs "gz"; Acquire::IndexTargets::deb::DEP-11-icons-small::DefaultEnabled "true"; Acquire::IndexTargets::deb::DEP-11-icons ""; Acquire::IndexTargets::deb::DEP-11-icons::MetaKey "$(COMPONENT)/dep11/icons-64x64.tar";
    Acquire::IndexTargets::deb::DEP-11-icons::ShortDescription "icons-64x64"; Acquire::IndexTargets::deb::DEP-11-icons::Description "$(RELEASE)/$(COMPONENT) DEP-11 64x64 Icons";
    Acquire::IndexTargets::deb::DEP-11-icons::KeepCompressed "true"; Acquire::IndexTargets::deb::DEP-11-icons::KeepCompressedAs "gz"; Acquire::IndexTargets::deb::DEP-11-icons::DefaultEnabled "true"; Acquire::IndexTargets::deb::DEP-11-icons-hidpi ""; Acquire::IndexTargets::deb::DEP-11-icons-hidpi::MetaKey "$(COMPONENT)/dep11/icons-64x64@2.tar";
    Acquire::IndexTargets::deb::DEP-11-icons-hidpi::ShortDescription "icons-64x64@2";
    Acquire::IndexTargets::deb::DEP-11-icons-hidpi::Description "$(RELEASE)/$(COMPONENT) DEP-11 64x64@2 Icons";
    Acquire::IndexTargets::deb::DEP-11-icons-hidpi::KeepCompressed "true"; Acquire::IndexTargets::deb::DEP-11-icons-hidpi::KeepCompressedAs "gz"; Acquire::IndexTargets::deb::DEP-11-icons-hidpi::DefaultEnabled "false"; Acquire::IndexTargets::deb::DEP-11-icons-large ""; Acquire::IndexTargets::deb::DEP-11-icons-large::MetaKey "$(COMPONENT)/dep11/icons-128x128.tar";
    Acquire::IndexTargets::deb::DEP-11-icons-large::ShortDescription "icons-128x128";
    Acquire::IndexTargets::deb::DEP-11-icons-large::Description "$(RELEASE)/$(COMPONENT) DEP-11 128x128 Icons";
    Acquire::IndexTargets::deb::DEP-11-icons-large::KeepCompressed "true"; Acquire::IndexTargets::deb::DEP-11-icons-large::KeepCompressedAs "gz"; Acquire::IndexTargets::deb::DEP-11-icons-large::DefaultEnabled "false"; Acquire::IndexTargets::deb::DEP-11-icons-large-hidpi ""; Acquire::IndexTargets::deb::DEP-11-icons-large-hidpi::MetaKey "$(COMPONENT)/dep11/icons-128x128@2.tar";
    Acquire::IndexTargets::deb::DEP-11-icons-large-hidpi::ShortDescription "icons-128x128@2";
    Acquire::IndexTargets::deb::DEP-11-icons-large-hidpi::Description "$(RELEASE)/$(COMPONENT) DEP-11 128x128@2 Icons";
    Acquire::IndexTargets::deb::DEP-11-icons-large-hidpi::KeepCompressed "true"; Acquire::IndexTargets::deb::DEP-11-icons-large-hidpi::KeepCompressedAs "gz"; Acquire::IndexTargets::deb::DEP-11-icons-large-hidpi::DefaultEnabled "false"; Acquire::IndexTargets::deb::Contents-deb ""; Acquire::IndexTargets::deb::Contents-deb::MetaKey "$(COMPONENT)/Contents-$(ARCHITECTURE)";
    Acquire::IndexTargets::deb::Contents-deb::ShortDescription "Contents-$(ARCHITECTURE)";
    Acquire::IndexTargets::deb::Contents-deb::Description "$(RELEASE)/$(COMPONENT) $(ARCHITECTURE) Contents (deb)";
    Acquire::IndexTargets::deb::Contents-deb::flatMetaKey "Contents-$(ARCHITECTURE)";
    Acquire::IndexTargets::deb::Contents-deb::flatDescription "$(RELEASE) Contents (deb)";
    Acquire::IndexTargets::deb::Contents-deb::PDiffs "true"; Acquire::IndexTargets::deb::Contents-deb::KeepCompressed "true"; Acquire::IndexTargets::deb::Contents-udeb ""; Acquire::IndexTargets::deb::Contents-udeb::MetaKey "$(COMPONENT)/Contents-udeb-$(ARCHITECTURE)";
    Acquire::IndexTargets::deb::Contents-udeb::ShortDescription "Contents-udeb-$(ARCHITECTURE)";
    Acquire::IndexTargets::deb::Contents-udeb::Description "$(RELEASE)/$(COMPONENT) $(ARCHITECTURE) Contents (udeb)";
    Acquire::IndexTargets::deb::Contents-udeb::flatMetaKey "Contents-udeb-$(ARCHITECTURE)";
    Acquire::IndexTargets::deb::Contents-udeb::flatDescription "$(RELEASE) Contents (udeb)";
    Acquire::IndexTargets::deb::Contents-udeb::KeepCompressed "true"; Acquire::IndexTargets::deb::Contents-udeb::PDiffs "true"; Acquire::IndexTargets::deb::Contents-udeb::DefaultEnabled "false"; Acquire::IndexTargets::deb::Contents-deb-legacy ""; Acquire::IndexTargets::deb::Contents-deb-legacy::MetaKey "Contents-$(ARCHITECTURE)";
    Acquire::IndexTargets::deb::Contents-deb-legacy::ShortDescription "Contents-$(ARCHITECTURE)";
    Acquire::IndexTargets::deb::Contents-deb-legacy::Description "$(RELEASE) $(ARCHITECTURE) Contents (deb)";
    Acquire::IndexTargets::deb::Contents-deb-legacy::PDiffs "true"; Acquire::IndexTargets::deb::Contents-deb-legacy::KeepCompressed "true"; Acquire::IndexTargets::deb::Contents-deb-legacy::Fallback-Of "Contents-deb"; Acquire::IndexTargets::deb::Contents-deb-legacy::Identifier "Contents-deb"; Acquire::IndexTargets::deb-src "";
    Acquire::IndexTargets::deb-src::Sources ""; Acquire::IndexTargets::deb-src::Sources::MetaKey "$(COMPONENT)/source/Sources"; Acquire::IndexTargets::deb-src::Sources::flatMetaKey "Sources"; Acquire::IndexTargets::deb-src::Sources::ShortDescription "Sources"; Acquire::IndexTargets::deb-src::Sources::Description "$(RELEASE)/$(COMPONENT) Sources";
    Acquire::IndexTargets::deb-src::Sources::flatDescription "$(RELEASE) Sources"; Acquire::IndexTargets::deb-src::Sources::Optional "0"; Acquire::IndexTargets::deb-src::Contents-dsc ""; Acquire::IndexTargets::deb-src::Contents-dsc::MetaKey "$(COMPONENT)/Contents-source";
    Acquire::IndexTargets::deb-src::Contents-dsc::ShortDescription "Contents-source";
    Acquire::IndexTargets::deb-src::Contents-dsc::Description "$(RELEASE)/$(COMPONENT) source Contents (dsc)";
    Acquire::IndexTargets::deb-src::Contents-dsc::flatMetaKey "Contents-source"; Acquire::IndexTargets::deb-src::Contents-dsc::flatDescription "$(RELEASE) Contents (dsc)";
    Acquire::IndexTargets::deb-src::Contents-dsc::PDiffs "true"; Acquire::IndexTargets::deb-src::Contents-dsc::KeepCompressed "true"; Acquire::IndexTargets::deb-src::Contents-dsc::DefaultEnabled "false"; Acquire::Changelogs "";
    Acquire::Changelogs::URI "";
    Acquire::Changelogs::URI::Origin "";
    Acquire::Changelogs::URI::Origin::Debian "https://metadata.ftp-master.debian.org/changelogs/@CHANGEPATH@_changelog";
    Acquire::Changelogs::URI::Origin::Ubuntu "https://changelogs.ubuntu.com/changelogs/pool/@CHANGEPATH@/changelog";
    Acquire::Changelogs::AlwaysOnline "";
    Acquire::Changelogs::AlwaysOnline::Origin ""; Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu "1";
    Acquire::Languages "";
    Acquire::Languages:: "en";
    Acquire::Languages:: "none";
    Acquire::Languages:: "it";
    Acquire::CompressionTypes "";
    Acquire::CompressionTypes::xz "xz";
    Acquire::CompressionTypes::bz2 "bzip2";
    Acquire::CompressionTypes::lzma "lzma";
    Acquire::CompressionTypes::gz "gzip";
    Acquire::CompressionTypes::lz4 "lz4";
    Acquire::CompressionTypes::zst "zstd";
    DPkg "";
    DPkg::Path "/usr/sbin:/usr/bin:/sbin:/bin";
    DPkg::Pre-Install-Pkgs "";
    DPkg::Pre-Install-Pkgs:: "/usr/bin/apt-listchanges --apt || test $? -lt 10"; DPkg::Pre-Install-Pkgs:: "/usr/sbin/dpkg-preconfigure --apt || true"; DPkg::Tools "";
    DPkg::Tools::Options "";
    DPkg::Tools::Options::/usr/bin/apt-listchanges ""; DPkg::Tools::Options::/usr/bin/apt-listchanges::Version "2"; DPkg::Tools::Options::/usr/bin/apt-listchanges::InfoFD "20";
    DPkg::Post-Invoke "";
    DPkg::Post-Invoke:: "/usr/bin/test -e /usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service && /usr/bin/test -S /var/run/dbus/system_bus_socket && /usr/bin/gdbus call --system --dest org.freedesktop.PackageKit --object-path /org/
    freedesktop/PackageKit --timeout 4 --method org.freedesktop.PackageKit.StateHasChanged cache-update > /dev/null; /bin/echo > /dev/null";
    DPkg::Post-Invoke:: "if [ -x /usr/bin/rkhunter ] && grep -qsiE '^APT_AUTOGEN=.?(true|yes)' /etc/default/rkhunter; then if ! /usr/share/rkhunter/scripts/rkhupd.sh; then echo '(rkhunter was unable to update its property database)';fi;fi";
    DPkg::Post-Invoke:: "test -x /usr/lib/needrestart/apt-pinvoke && /usr/lib/needrestart/apt-pinvoke || true";
    apt-file "";
    apt-file::Index-Names "deb";
    apt-file::Parser "";
    apt-file::Parser::Check-For-Description-Header "false";
    Binary "apt-config";
    Binary::apt "";
    Binary::apt::APT "";
    Binary::apt::APT::Color "1";
    Binary::apt::APT::Cache "";
    Binary::apt::APT::Cache::Show "";
    Binary::apt::APT::Cache::Show::Version "2"; Binary::apt::APT::Cache::AllVersions "0";
    Binary::apt::APT::Cache::ShowVirtuals "1";
    Binary::apt::APT::Cache::Search "";
    Binary::apt::APT::Cache::Search::Version "2"; Binary::apt::APT::Cache::ShowDependencyType "1"; Binary::apt::APT::Cache::ShowVersion "1";
    Binary::apt::APT::Get "";
    Binary::apt::APT::Get::Upgrade-Allow-New "1";
    Binary::apt::APT::Get::Update ""; Binary::apt::APT::Get::Update::InteractiveReleaseInfoChanges "1"; Binary::apt::APT::Cmd "";
    Binary::apt::APT::Cmd::Show-Update-Stats "1"; Binary::apt::APT::Cmd::Pattern-Only "1"; Binary::apt::APT::Keep-Downloaded-Packages "0";
    Binary::apt::DPkg "";
    Binary::apt::DPkg::Progress-Fancy "1";
    Binary::apt::DPkg::Lock "";
    Binary::apt::DPkg::Lock::Timeout "-1";
    CommandLine "";
    CommandLine::AsString "apt-config dump";

    -- (no /etc/apt/preferences present) --


    -- (no /etc/apt/preferences.d/* present) --


    -- /etc/apt/sources.list --

    #deb cdrom:[Debian GNU/Linux 12.7.0 _Bookworm_ - Official amd64 NETINST with firmware 20240831-10:38]/ bookworm contrib main non-free-firmware

    deb http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free
    deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware contrib non-free

    deb http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free
    deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware contrib non-free

    # bookworm-updates, to get updates before a point release is made;
    # see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
    deb http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free
    deb-src http://deb.debian.org/debian/ bookworm-updates main non-free-firmware contrib non-free

    # This system was installed using small removable media
    # (e.g. netinst, live or single CD). The matching "deb cdrom"
    # entries were disabled at the end of the installation process.
    # For information about how to configure apt package sources,
    # see the sources.list(5) manual.

    -- (no /etc/apt/sources.list.d/* present) --


    -- System Information:
    Debian Release: 12.10
    APT prefers stable-updates
    APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
    Architecture: amd64 (x86_64)
    Foreign Architectures: i386

    Kernel: Linux 6.1.0-33-amd64 (SMP w/4 CPU threads; PREEMPT)
    Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8), LANGUAGE not set
    Shell: /bin/sh linked to /usr/bin/dash
    Init: systemd (via /run/systemd/system)
    LSM: AppArmor: enabled

    Versions of packages apt depends on:
    ii adduser 3.134
    ii debian-archive-keyring 2023.3+deb12u1
    ii gpgv 2.2.40-1.1
    ii libapt-pkg6.0 2.6.1
    ii libc6 2.36-9+deb12u10
    ii libgcc-s1 12.2.0-14
    ii libgnutls30 3.7.9-2+deb12u4
    ii libseccomp2 2.5.4-1+deb12u1
    ii libstdc++6 12.2.0-14
    ii libsystemd0 252.36-1~deb12u1

    Versions of packages apt recommends:
    ii ca-certificates 20230311

    Versions of packages apt suggests:
    ii apt-doc 2.6.1
    ii aptitude 0.8.13-5
    ii dpkg-dev 1.21.22
    ii gnupg 2.2.40-1.1
    pn powermgmt-base <none>

    -- no debconf information

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Julian Andres Klode@21:1/5 to inasprecali on Sat Apr 26 00:10:01 2025
    Control: tag -1 wontfix

    On Fri, Apr 25, 2025 at 11:37:33PM +0200, inasprecali wrote:
    Package: apt
    Version: 2.6.1
    Severity: normal
    X-Debbugs-Cc: inasprecali@disroot.org

    Dear Maintainer,

    Running apt autoremove (or autopurge) resulted in some packages being
    marked as manual afterwards, as shown by the output of apt-mark
    showmanual.

    Here is what happened in my particular situation.

    I run the full GNOME desktop environment, obtained by installing the
    "gnome" metapackage (not gnome-core). Some time later, I also
    installed the "libreoffice" metapackage.

    Afterwards, I noticed that the libreoffice metapackage also pulls in libreoffice-base and libreoffice-draw, which I am not using. Since I
    noticed that the gnome metapackage depends on the following packages:

    - libreoffice-writer
    - libreoffice-impress
    - libreoffice-draw
    - libreoffice-calc

    which are the only parts of the LibreOffice suite I use regularly, I
    decided to remove the libreoffice metapackage to tidy things up.

    To do so, I marked it as "automatically installed" by running
    "apt-mark auto libreoffice", then running "apt autoremove"

    As expected, packages that were now no longer required, including the libreoffice metapackage itself, were removed. To my surprise, the
    following packages were later marked as manual according to apt-mark.
    Here is the output of apt-mark showmanual | grep libreoffice right
    after autoremoval:

    libreoffice-calc
    libreoffice-core
    libreoffice-draw
    libreoffice-gtk3
    libreoffice-impress
    libreoffice-writer

    Before autoremoval, only libreoffice-gtk3 was listed, which was
    expected since I did install that package manually.

    Using autopurge instead of autoremove produces the same result.
    Interestingly enough, if I just run "apt autoremove libreoffice"
    directly instead of using apt-mark auto and _then_ running apt
    atoremove, the issue does not occur: autoremove does not mark any
    additional packages as manual.

    To summarize, the following commands should be sufficient to reproduce
    the issue:

    apt install gnome && apt install libreoffice && apt-mark auto libreoffice && apt autoremove

    After a brief interaction on the #debian channel on the IRC server irc.debian.org, another user was able to reproduce the issue on
    Trixie. This bug report specifically refers to Bookworm.

    The main question is: is this the expected behavior?

    Yes.


    If so, this should be described in detail in the official
    documentation, preferably in the manpage. I couldn't find anything
    about this anywhere in the documentation or the internet.

    This is an implementation detail of the solver to not remove entire
    desktops and cause systems to become inoperable when a metapackage is
    being removed.

    i.e. if you just run apt remove libreoffice-writer, it should not remove
    your entire gnome desktop, only the metapackage that pulls in libreoffice-writer and preserve the rest.

    I do not think we should be committing to this behavior to the extent
    of documenting it, it's a last resort safe guard and not a particularly
    good one at that, and we might want to improve on it.

    --
    debian developer - deb.li/jak | jak-linux.org - free software dev
    ubuntu core developer i speak de, en

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Julian Andres Klode@21:1/5 to Julian Andres Klode on Sat Apr 26 00:10:01 2025
    Control: severity -1 minor

    On Fri, Apr 25, 2025 at 11:59:50PM +0200, Julian Andres Klode wrote:
    Control: tag -1 wontfix

    On Fri, Apr 25, 2025 at 11:37:33PM +0200, inasprecali wrote:
    Package: apt
    Version: 2.6.1
    Severity: normal
    X-Debbugs-Cc: inasprecali@disroot.org

    Dear Maintainer,

    Running apt autoremove (or autopurge) resulted in some packages being marked as manual afterwards, as shown by the output of apt-mark
    showmanual.

    Here is what happened in my particular situation.

    I run the full GNOME desktop environment, obtained by installing the "gnome" metapackage (not gnome-core). Some time later, I also
    installed the "libreoffice" metapackage.

    Afterwards, I noticed that the libreoffice metapackage also pulls in libreoffice-base and libreoffice-draw, which I am not using. Since I noticed that the gnome metapackage depends on the following packages:

    - libreoffice-writer
    - libreoffice-impress
    - libreoffice-draw
    - libreoffice-calc

    which are the only parts of the LibreOffice suite I use regularly, I decided to remove the libreoffice metapackage to tidy things up.

    To do so, I marked it as "automatically installed" by running
    "apt-mark auto libreoffice", then running "apt autoremove"

    As expected, packages that were now no longer required, including the libreoffice metapackage itself, were removed. To my surprise, the following packages were later marked as manual according to apt-mark.
    Here is the output of apt-mark showmanual | grep libreoffice right
    after autoremoval:

    libreoffice-calc
    libreoffice-core
    libreoffice-draw
    libreoffice-gtk3
    libreoffice-impress
    libreoffice-writer

    Before autoremoval, only libreoffice-gtk3 was listed, which was
    expected since I did install that package manually.

    Using autopurge instead of autoremove produces the same result. Interestingly enough, if I just run "apt autoremove libreoffice"
    directly instead of using apt-mark auto and _then_ running apt
    atoremove, the issue does not occur: autoremove does not mark any additional packages as manual.

    To summarize, the following commands should be sufficient to reproduce
    the issue:

    apt install gnome && apt install libreoffice && apt-mark auto libreoffice && apt autoremove

    After a brief interaction on the #debian channel on the IRC server irc.debian.org, another user was able to reproduce the issue on
    Trixie. This bug report specifically refers to Bookworm.

    The main question is: is this the expected behavior?

    Yes.


    If so, this should be described in detail in the official
    documentation, preferably in the manpage. I couldn't find anything
    about this anywhere in the documentation or the internet.

    This is an implementation detail of the solver to not remove entire
    desktops and cause systems to become inoperable when a metapackage is
    being removed.

    i.e. if you just run apt remove libreoffice-writer, it should not remove
    your entire gnome desktop, only the metapackage that pulls in libreoffice-writer and preserve the rest.

    FWIW, if you run apt remove libreoffice, you get the behavior you
    were expecting (packages remain automatically installed), this is designed
    to be straightforward and feel natural.

    You want to remove the package? It will be removed and its dependencies
    too if unused.

    You want to remove something a metapackage depends on? Only the
    metapackage is removed.
    --
    debian developer - deb.li/jak | jak-linux.org - free software dev
    ubuntu core developer i speak de, en

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)