Marco Nie - dpkg https://blog.niekun.net/tag/dpkg/ 关于debian的apt/dpkg包管理相关 https://blog.niekun.net/archives/196.html 2019-04-08T22:11:00+08:00 Debian 是一个致力于自由软件开发并宣扬自由软件基金会之理念的自愿者组织。Debian 计划创建于 1993 年。当时,Ian Murdock 发出一份公开信,邀请软件开发者们参与构建一个基于较新的 Linux 内核的完整而紧密的软件发行版。官网:https://www.debian.org/简单来说就是一个 Linux 的发行版,和 centos Ubuntu是一个类型的。但是其设计初衷为纯粹,更为干净。APT(advanced package tool)Debian 带来了数万个软件包。为了方便用户使用,这些软件包都已经被编译包装为一种方便的格式,开发人员把它叫做 deb 包。Debian 系统中,软件包管理可由多种工具协作进行,范围从最底层的 dpkg 命令直到图形界面的 Synaptic 工具。推荐在 Debian 系统中管理软件包的标准工具是 apt 工具集。使用 apt 安装软件,就不需要从源码开始编译了,可以有效节省时间。有两个主要命令:apt-get:用于安装,升级或清理软件包apt-cache:用户寻找新的软件包apt-get更新软件包元数据:apt-get update 升级所有已安装包:apt-get upgrade或者:apt-get dist-upgrade 升级特定软件包:apt-get upgrade <package_name> upgrade 和 dist-upgrade 的区别:upgrade 是一个更安全的模式,它不会尝试删除现有或安装一个新的软件包,而 dist-upgrade 会更加“聪明”的替你安装包,这个过程可能会删除或更改你现有的软件包,包括一些你不想进行更改的包,有潜在隐患。所以进行一次完整的升级:apt-get update && sudo apt-get upgrade -y 安装一个软件包:apt-get install <package_name> 重新安装一个已安装的软件包:apt-get install --reinstall <package_name> 同时安装多个包:apt-get install <package_1> <package_2> <package_3> 安装一个包的特定版本:apt-get install <package_name>=<version_number> 删除一个包:apt-get remove <package_name>或者:apt-get purge <package_name> apt-get remove 和 apt-get purge 的区别:remove 只会删除这个包本身,不会删除其配置文件等残留内容,这意味着如果你重新安装此包,会提示你要覆盖相关配置文件。purge 会删除此包的相关所有内容。清理本地缓存仓库文件:apt-get clean 清理本地过期缓存文件:apt-get autoclean 删除之前自动安装的不再需要的包:apt-get autoremove 安装其他包管理源:(注意不要添加不被信任的源,以免危险)add-apt-repository ppa:<some/source> apt-get update 如果添加一个第三方源后,执行 apt-get update 时提示:GPG error: http://ppa.launchpad.net trusty InRelease...这时需要先确定其 key 没有问题,这个可以访问这个源发布者页面查看其 key 比对命令行里出现的 key,如果一样的话需要手动加入 key 到 key管理器:apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY> 将 <PUBKEY> 替换为 key。删除自己安装的某个包管理源,可以安装 ppa-purge 来管理:apt-get install ppa-purge ppa-purge ppa:<some/source> apt-get update 已安装的第三方源在 /etc/apt/sources.list.d/ 目录下的 .list 文件。手动删除 .list 文件也可删除对应源,删除后执行 apt-get update。apt-cache搜索你想要的软件:apt-cache search <search term> 你不需要精确的包名字,它会自动匹配相近的内容。如果你知道确切的包名来搜索,可以这样:apt-cache pkgnames <search_term> 或者更精确的搜索到一个包的详细;apt-cache showpkg <package_name> sources.listList of configured APT data sources包管理数据源列表文件地址:/etc/apt/sources.list 和 /etc/apt/sources.list.d/ 目录下的所有 .list 文件。在 sources.list.d 下添加源文件,等同于使用上面的 add-apt-repository 命令。list 格式解释参考:http://manpages.ubuntu.com/manpages/trusty/man5/sources.list.5.html官方源列表:https://launchpad.net/ubuntu/+archivemirrorsunoffical php: https://launchpad.net/~ondrej/+archive/ubuntu/phpunoffical ffmpeg源:https://launchpad.net/~mc3man/+archive/ubuntu/trusty-mediadpkgdpkg 是基于 Debian 的 Linux 系统的包管理器,它可以 安装,删除,创建包,不同于 apt 等其他包管理器,它不可以自动的安装一些依赖文件。所有的安装操作都需要手动完成。apt 也是 dpkg 安装包形式的。所以 dpkg 可以管理 apt 安装的包常用命令:列出当前系统安装的所有包:dpkg -l 列出特定包的相关安装信息:dpkg -l | grep xxxx 列出安装某个包时创建的文件:dpkg -L nginx 查看某个文件是在那个包安装时创建的:dpkg -S file dpkg -S /etc/nginx/naxsi.rules nginx-common: /etc/nginx/naxsi.rules 安装一个 deb 包:dpkg -i xxx.deb 删除一个包:dpkg -r nginx 或者 dpkg -p nginx