apt和dpkg包管理器

apt命令

在这里插入图片描述


最佳卸载命令

卸载程序(包括配置文件)、卸载依赖、删除/var/cache/apt/archives下所有安装包

# 卸载软件包并清理配置及残留
apt remove packagename --purge && apt autoremove --purge && apt clean

最佳升级软件命令

# update刷新源,upgrade将所有软件升级到最新版
apt update && apt upgrade

apt常用命令


刷新源

# 刷新源,更新`/etc/apt/sources.list`里的链接地址
apt update 

搜索软件包

# 搜索软件包
apt search  packagename

安装


安装软件包

# 安装软件包
apt install packagename

重新安装软件包

# 重新安装软件包
apt install packagename --reinstall

apt锁定软件版本


查看源中的版本

# 查看源中的版本
apt-cache madison 软件名

安装指定版本

# 安装指定版本 
apt install 软件名=version
apt install package=version

apt锁定软件版本

# 锁定版本
sudo apt-mark hold kubelet kubeadm kubect

卸载


卸载软件包

# 卸载依赖并清除配置文件
apt autoremove --purge

# 卸载依赖的程序
apt autoremove

# 卸载包并自动卸载不需要的包
apt autoremove packagename

# 卸载包并删除配置文件和不需要的包
apt autoremove packagename --purge 

升级


升级所有软件包

# 升级所有程序/和apt dist-upgrade 一致
apt upgrade
apt dist-upgrade

# 升级程序(不包括依赖关系改变的) 
## -u 完整显示列表
apt upgrade -u

升级系统版本

# 升级os版本
apt dist-upgrade 升级系统(包括依赖关系改变的并且重新组织依赖关系)

清理


清理apt-cache

节约硬盘空间,下次安装需要重新下载包,软件包位置:/var/cache/apt/archives/

# 删除pkg的安装包
apt clean

# 删除已卸载pkg的安装包(Ubuntu14.04测试发现没起作用)
apt autoclean 

apt-mark常用命令

auto – 标记指定软件包为自动安装
manual – 标记指定软件包为手动安装
minimize-manual – Mark all dependencies of meta packages as automatically installed.
hold – 标记指定软件包为保留(held back),阻止软件自动更新
unhold – 取消指定软件包的保留(held back)标记,解除阻止自动更新
showauto – 列出所有自动安装的软件包
showmanual – 列出所有手动安装的软件包
showhold – 列出设为保留的软件包


apt-cache搜索包

参考: https://www.cnblogs.com/EasonJim/p/7144017.html

  • apt-cache search package 搜索包
  • apt-cache show packagename 获取包的相关信息,如说明、大小、版本等
  • apt-cache showpkg package 显示软件包信息,包括包的依赖关系,包的提供者
  • apt-cache pkgnames 打印软件包列表中所有包的名字
  • apt-cache dumpavail 打印软件包列表中所有包的简介信息
  • apt-cache depends packagename 了解使用依赖
  • apt-cache rdepends packagename 是查看该包被哪些包依赖

apt安装位置

  • 下载的软件存放位置/var/cache/apt/archives
  • 安装后软件默认位置/usr/share
  • 可执行文件位置/usr/bin
  • lib文件位置/usr/lib

apt配置源

# 默认仓库配置文件
/etc/apt/sources.list
# 仓库子配置文件目录

/etc/apt/sources.list.d/
## 你可以在/etc/apt/sources.list.d/目录下创建后缀名为list的软件仓库配置文件

# 每当你更改过仓库配置文件的时候,必须要使用apt update刷新下apt源

# 备份源
cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 安装完ubuntu操作系统之后默认的仓库源都配置为了国外的仓库,你可以自行修改
vim /etc/apt/sources.list

# 替换源地址为阿里云的地址
sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list
# 或
sed -i "s/cn.archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list

apt配置proxy

vim /etc/apt/apt.conf

# 配置proxy
Acquire::http::proxy "http://127.0.0.1:8000/";
Acquire::ftp::proxy "ftp://127.0.0.1:8000/";
Acquire::https::proxy "https://127.0.0.1:8000/";
Acquire::socks::proxy "socks://127.0.0.1:1080/";

# 刷新源
apt update

apt只代理指定地址

vim /etc/apt/apt.conf

#Acquire::http::Proxy::<repository URL> "socks5h://proxy-us.intel.com:1080";
Acquire::http::Proxy::download.docker.com "socks5h://proxy-us.ibm.com:1080";

dpkg包管理器


dpkg安装

# -i参数 安装软件包
dpkg -i 包名.deb

递归执行

# -R参数表示安装一个目录下的所有软件包

dpkg卸载

# -r参数表示卸载软件包
## 相当于rpm的-e参数(extract)
dpkg -r xxx.deb

# -p同--purge选项表示卸载的同时清除配置文件
dpkg -rp xxx.deb

apt中断修复

例如,执行apt upgrade过程中强行终止,会导致apt无法正常使用.

sudo dpkg --configure -a

dpkg查询


查看deb包内容(仅查看)

# 列出deb包的内容
## -c参数相当于rpm的-qpl参数(软件包未安装情况)
dpkg -c package.deb 

查看软件安装位置dpkg -L

#  查看软件安装位置
## -L参数相当于rpm的-ql参数(软件包已安装)
dpkg -L openssh-server

## 打印信息
/usr
/usr/lib
/usr/lib/openssh
/usr/lib/openssh/ssh-session-cleanup
/usr/sbin
/usr/sbin/sshd

列出当前已安装的包dpkg -l

# 列出当前已安装的包
## -l参数相当于rpm的-qa参数
dpkg -l

查询指定已安装软件dpkg -l pakname

# 查询指定已安装软件
root@u20:~# dpkg -l openssh-server
## 打印信息
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version            Architecture Description
+++-==============-==================-============-=======================================================>
ii  openssh-server 1:8.2p1-4ubuntu0.3 amd64        secure shell (SSH) server, for secure access from remot

查询文件属于哪个包dpkg -S filename

# 例如,我要查询ls这个命令属于哪个包
# -S参数相当于rpm的-qf参数
## 查询ls的文件位置
[chengdu-u20 root ~]# which ls
/usr/bin/ls

## 根据/bin/ls查询包名称
[chengdu-u20 root ~]# dpkg -S /bin/ls
coreutils: /bin/ls

## 查询包详情 dpks -S 包名
[chengdu-u20 root ~]# dpkg -S coreutils
language-pack-en-base: /usr/share/locale-langpack/en_GB/LC_MESSAGES/coreutils.mo
language-pack-en-base: /usr/share/locale-langpack/en_CA/LC_MESSAGES/coreutils.mo
coreutils: /usr/share/doc/coreutils/README.gz
coreutils: /usr/share/doc/coreutils/TODO.gz
language-pack-en-base: /usr/share/locale-langpack/en/LC_MESSAGES/coreutils.mo
coreutils: /usr/lib/x86_64-linux-gnu/coreutils
coreutils: /usr/share/doc/coreutils/changelog.Debian.gz
coreutils: /usr/share/doc/coreutils/THANKS.gz
coreutils: /usr/share/info/coreutils.info.gz
coreutils: /usr/share/doc/coreutils/NEWS.gz
coreutils: /usr/share/doc/coreutils
coreutils: /usr/share/doc/coreutils/copyright
coreutils: /usr/share/doc/coreutils/AUTHORS
language-pack-en-base: /usr/share/locale-langpack/en_AU/LC_MESSAGES/coreutils.mo
coreutils: /usr/share/doc/coreutils/README.Debian
coreutils: /usr/lib/x86_64-linux-gnu/coreutils/libstdbuf.so
coreutils: /usr/share/doc/coreutils/NEWS.Debian.gz

type定位命令行

# 定位dig命令
type -a dig

在这里插入图片描述