apt包管理器
Ubuntu源
https://blog.youkuaiyun.com/omaidb/article/details/132295733
# Centos7安装lsb_release命令
yum install -y redhat-lsb
# 查看Linux的系统发行版本
lsb_release -a
# lsb_release已默认安装好
# 查看Ubuntu版本
lsb_release -a
每个 Ubuntu 版本都有自己的一组四
个官方存储库
:
Main
– Canonical 支持的自由开源软件Universe
– 社区维护的自由开源软件Restricted
– 设备的专有驱动程序Multiverse
– 受版权或法律问题限制的软件
apt常用命令
刷新源
# 刷新源,更新`/etc/apt/sources.list`里的链接地址
apt update
搜索软件包
# 搜索软件包
apt search packagename
查看软件包的策略和信息
# 显示有关 软件包的策略和信息
## 包括可用的候选版本、已安装的版本以及软件包的来源。
apt policy pkgname
安装软件包
# 安装软件包
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最佳卸载命令
卸载程序(包括配置文件)、卸载依赖、删除/var/cache/apt/archives
下所有安装包
# 卸载软件包并清理配置及残留
apt remove packagename --purge && apt autoremove --purge && apt clean
升级所有软件包
apt upgrade
不会改变原有配置。
apt dist-upgrade
会修改配置文件,并自动解决依赖关系。
# 升级所有程序
apt upgrade
# 升级程序(不包括依赖关系改变的)
## -u 完整显示列表
apt upgrade -u
最佳升级软件命令
# update刷新源,upgrade将所有软件升级到最新版
apt update && apt upgrade
升级系统版本—生产慎用
apt dist-upgrade
会修改配置文件,并自动解决依赖关系。
# 升级os版本
apt dist-upgrade
清理apt-cache
节约硬盘空间,下次安装需要重新下载包,软件包位置:/var/cache/apt/archives/
# 删除pkg的安装包
apt clean
# 删除已卸载pkg的安装包(Ubuntu14.04测试发现没起作用)
apt autoclean
apt查看某个命令属于哪个包
# 安装apt
apt install apt-file
# 刷新
apt-file
# 查看命令行属于哪个包
apt-file search /sbin/route
apt-mark常用命令
参数 | 释义 |
---|---|
auto | – 标记指定软件包为自动安装 |
manual | – 标记指定软件包为手动安装 |
minimize-manual | – 将元包(meta packages)的所有依赖项标记为自动安装 |
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
https://linux.cn/article-15815-1.html?utm_source=rss&utm_medium=rss
# 创建一个proxy配置
vim /etc/apt/apt.conf.d/proxy.conf
配置proxy
## http
Acquire::http::proxy "http://127.0.0.1:8000/";
Acquire::https::Proxy "http://proxy-IP-address:proxyport/";
Acquire::https::proxy "https://127.0.0.1:8000/";
## 带认证的配置
Acquire::http::Proxy "http://username:password@proxy-IP-address:proxyport";
Acquire::https::Proxy "http://username:password@proxy-IP-address:proxyport";
Acquire::socks::proxy "socks://127.0.0.1:1080/";
配置格式2
:
Acquire {
http::Proxy "http://username:password@proxy-IP-address:proxyport/";
https::Proxy "http://username:password@proxy-IP-address:proxyport/";
}
# 刷新源
apt update
apt只代理指定地址
socks5h
表示远程解析 dns
,如果直接写 socks5
是本地解析 dns
# 没有则新建
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";
Acquire::autoremove::keep-packages;
离线下载deb包
# 下载deb包
apt download 包名
# 查看依赖
apt depends tcpdump
# 确认包是否已经安装
dpkg -l |grep libc 、libpcap0.8、libssl1.1
# 拷贝到离线机器上,使用dpkg离线安装即可
dpkg -i 文件名.deb
apt永久保存deb包
默认情况下使用apt install 安装包
时,会自动下载安装包及其依赖包到/var/cache/apt/archieves
目录,可通过如下配置改变这一行为:
# 没有则新建
vim /etc/apt/apt.conf
# 保存deb包
Acquire::autoremove::keep-packages;
配置方法2:
vim /etc/apt/apt.conf.d/10apt-keep-downloads
# 禁止保存
Binary::apt::APT::Keep-Downloaded-Packages "0";
# 允许保存
Binary::apt::APT::Keep-Downloaded-Packages "1";
自动解决包依赖关系
# 自动解决包依赖关系
apt -y install -f
apt中断修复
例如,执行apt upgrade
过程中强行终止,会导致apt无法正常使用.
sudo dpkg --configure -a
apt-key管理GPG密钥
# 查看GPG 密钥列表
apt-key list
# 导入 GPG 密钥
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 12345678
# 删除已导入的 GPG 密钥
apt-key del 12345678
apt-add-repository第三方软件存储库
https://linux.cn/article-15985-1.html?utm_source=rss&utm_medium=rss
方法1:删除第三方软件存储库
# 列出添加的仓库
apt-add-repository --list
# 删除指定的三方仓库
apt-add-repository -r repo_name
# 示例:删除yarn仓库
add-apt-repository -r deb https://dl.yarnpkg.com/debian/ stable main
方法2:手动删除三方存储库文件
# 进入sources.list.d目录,并列出其内容
cd /etc/apt/sources.list.d/ && ls
一个仓库
将有两个文件
。一个带有 .list
扩展名,另一个带有 .save
扩展名。
.list
文件是3方
的软件仓库
文件,里面配置了该软件的源
。
当使用 apt-get update
命令更新软件包列表
时,会生成相应的 .save
文件。
.save
文件包含了更新前的软件包列表信息,以便在需要时进行回滚。
# 删除.list后缀的3方仓库文件
rm Repo_name.list
附加步骤:删除仓库后删除GPG 密钥
# 列出现有的 GPG 密钥
apt-key list
- GPG
密钥名称
在虚线(----)上方
公钥
在第二行
例如,以下是 Chrome GPG 密钥的相关数据:
# 删除指定 GPG 密钥
## 指定GPG密钥ID
apt-key del D38B4796
# 指定整个公钥
apt-key del "完整密钥ID"
apt-key del "72EC F46A 56B4 AD39 C907 BBB7 1646 B01B 86E5 0310"
dpkg包管理器
dpkg 包管理器是 Linux 系统中一个基本的软件包管理工具,用于安装、升级、卸载和查询软件包。它通常用于 Debian 系统和基于 Debian 的 Linux 发行版,如 Ubuntu 和 Linux Mint 等。
dpkg安装
# -i参数 安装软件包
dpkg -i 文件名.deb
递归安装
# -R参数表示安装一个目录下的所有软件包
dpkg -iR ./deb目录名
查看deb包的包名称
dpkg-deb -I xxx.deb
dpkg卸载
# 查看deb包文件的包名称
dpkg -I xxx.deb
# -r参数表示卸载软件包
## 相当于rpm的-e参数(extract)
dpkg -r 包名
# -P(大写)同--purge选项表示卸载的同时清除配置文件
## -r和-P是互斥的
dpkg -P 包名
dpkg查询
通常使用 “dpkg -l
” 命令查询已安装的软件包,可以列出软件包的名称、版本和状态等信息。
查看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
apt缓冲锁
Ubuntu
使用sudo apt install安装时,提示正在等待缓存锁
:无法获得锁 /var/lib/dpkg/lock-frontend
。
解决办法
这3个文件只有在遇到apt缓冲锁
的时候才会出现。
# 强制删除锁
sudo rm -rf /var/lib/dpkg/lock-frontend /var/cache/apt/archives/lock /var/lib/dpkg/lock
永久禁用apt缓存锁
# 编辑apt自动更新配置
vim /etc/apt/apt.conf.d/10periodic
配置内容如下
root@dev:~$cat /etc/apt/apt.conf.d/10periodic
# 更新软件包列表 1是启用,0是禁用
APT : :Periodic: : Update-Package-Lists "0";
# 自动下载更新包
APT : :Periodic: : Download-Upgradeable-Packages "0";
# 自动清除缓存
APT : :Periodic: :AutocleanInterval "0";
# 无人值守升级
APT : :Periodic: :Unattended-Upgrade "0";
Ubuntu校验软件包是否被更改
# 校验openssh包是否被篡改
# debsums 包名
debsums openssh-server
debsums -a # 配置文件的md5值也查
debsums -e # 只查配置文件的
debsums -s #仅报告错误
debsums -ca # 报告md5指改变过的
# 然后利用dpkg -S 查这个文件属于哪个包
dpkg -S 被篡改的文件
type定位命令行
# 定位dig命令
type -a dig