列出在Debian Buster上手动安装的apt软件包

时间:2019-10-09 17:02:05

标签: debian apt

很高兴看到我使用 apt install 手动安装了哪些软件包。

因为我可以删除不再需要的软件包。

但是我找不到适用于apt版本1.8.2的在debian buster上运行的命令。

也许有人可以提供一个显示所有手动软件包的命令,而无需依赖它们。

我尝试了这些帖子中的命令:

41007182238917823

2 个答案:

答案 0 :(得分:1)

您可以通过grepping /var/log/apt/history.log*获得apt / apt-get已安装软件包的列表*

grep_apt_history.bash:

#!/usr/bin/env bash

# current apt history
grep "apt.* install" /var/log/apt/history.log | grep -v broken \
    | grep -Po 'install\s\K.*' | sort -u

# zipped apt history
gzip -cd $(find /var/log/apt -name "history.log.[0-9]*.gz") \
    | grep "apt.* install" | grep -v broken | grep -Po 'install\s\K.*' | sort -u

parse_apt_install.py:

#!/usr/bin/env python3
import sys

installed_packages = []
avoid = ['--no-install-recommends', '--yes', '-y', '--reinstall']

for line in sys.stdin:
    if ' ' in line:
        packages = line.split(' ')
        for package in packages:
            if not package in avoid:
                installed_packages.append(package.strip('\n'))
    else:
        stripped = line.strip('\n')
        if not './' in stripped:
            installed_packages.append(stripped)


for package in sorted(installed_packages):
    print(package)

python脚本将删除本地'./'安装的软件包

用法:
./grep_apt_history.bash | ./parse_apt_install.py

答案 1 :(得分:0)

此Bash命令将打印所有手动安装的软件包减去来自Debian安装的软件包(换句话说,您用apt install安装的软件包):

sudo grep -oP "Unpacking \K[^: ]+" /var/log/installer/syslog \
  | sort -u | comm -13 /dev/stdin <(apt-mark showmanual | sort)

在Debian 10(毁灭性)中测试。需要sudo来搜索/var/log/installer/syslog。如果您不想每次使用sudo,也可以将此安装程序软件包列表保存在其他位置。