有没有办法获取 Ubuntu 系统上所有用户安装的软件包的列表,即在默认安装的软件包之上安装的软件包?
(目的是获得一个完整的列表,可用于在干净的 Ubuntu 安装上安装相同的软件包)
答案1
看看这些文件,
- '
/var/log/installer/initial-status.gz
' – 你的主要安装- 这个文件日期就是你的安装日期(我认为)
- '
/var/log/dpkg.log
' 更新时间线(这就是你想要的) - '
/var/log/apt/term.log
' —apt
系统上更新的内容 - '
/var/cache/apt/archives/'
将包含deb
下载的安装包
更新:使用以下两个步骤获取新安装的精确列表:
- 执行:
grep -w install /var/log/dpkg.log > full-list.log
- 查看
/var/log/installer/initial-status.gz
时间戳以外的行
由于您想在另一个系统上使用这些软件包进行全新安装,您甚至可以将“deb”文件从“cache/apt/archives”路径复制到新安装的路径,并一次性安装它们(无需再次下载)。
答案2
只是为了好玩,我编写了一个单行代码(这里为了清晰起见分开了)来计算包手动已安装,但不包括最初安装的软件包和任何自动安装的软件包:
comm -13 \
<(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort) \
<(comm -23 \
<(dpkg-query -W -f='${Package}\n' | sed 1d | sort) \
<(apt-mark showauto | sort) \
)
这在bash
和 中都有效zsh
。
答案3
根据以上信息,我编写了一个简短的 Python 脚本来列出手动安装的软件包。请参阅此链接。
尽管我不承担任何责任,但请随意使用。不过,我们欢迎您提供反馈和建议。
答案4
假设您有一致的历史记录并使用 aptitude:
history | grep -e "^..... aptitude install"
只会列出你用 aptitude install 安装的软件包...呃