Marco Nie - 包管理 https://blog.niekun.net/tag/%E5%8C%85%E7%AE%A1%E7%90%86/ zh-CN Mon, 08 Apr 2019 22:11:00 +0800 Mon, 08 Apr 2019 22:11:00 +0800 关于debian的apt/dpkg包管理相关 https://blog.niekun.net/archives/196.html https://blog.niekun.net/archives/196.html Mon, 08 Apr 2019 22:11:00 +0800 admin 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.list

List 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/+archivemirrors

unoffical php: https://launchpad.net/~ondrej/+archive/ubuntu/php
unoffical ffmpeg源:https://launchpad.net/~mc3man/+archive/ubuntu/trusty-media

dpkg

dpkg 是基于 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





]]>
0 https://blog.niekun.net/archives/196.html#comments https://blog.niekun.net/feed/tag/%E5%8C%85%E7%AE%A1%E7%90%86/archives/196.html