APT相关命令

从仓库出发的命令

  • 查询仓库
显示所有仓库
apt-cache policy

apt 仓库没有可用不可用概念,只要写上就可用
  • 查询所有软件包
查询已经安装的所有软件包
dpkg -l
查询仓库中的所有软件包
apt list
查询仓库中的已经安装的所有包
无
查询仓库中的可安装还没安装的所有包
无
查询仓库中的可安装还没安装的更新包
无

从软件包出发的命令

  • 从软件包名出发查询其他信息
查询对应的安装包(acl)有什么文件
dpkg -L acl
查询对应的安装包(acl)的信息
dpkg -s acl // 查询已安装的
apt show ruby-chunky-png // 查询仓库中有的
查询对应的安装包(acl)的依赖
apt-cache depends acl
查询对应的安装包(acl)的反向依赖
apt-cache rdepends acl
查询软件包是否在仓库中存在
apt search ruby-chunky-png
查询未安装且在仓库中的包有什么文件
apt-file list libdssialsacompat-dev
下载source代码
apt-get source xxx
  • 从软件包实体(xxx.deb)查询其他信息
查询对应的安装包(acl)有什么文件
dpkg  -c xxx.deb
查询对应的安装包(acl)的信息
无
查询对应的安装包(acl)的依赖
无
https://pkgs.org/

从文件出发相关的命令

查询已经安装的文件属于什么包
$ dpkg -S /bin/ls
coreutils: /bin/ls

查询一个未安装的文件属于什么包
$ apt-file search alsa/asoundlib.h
libasound2-dev: /usr/include/alsa/asoundlib.h
libdssialsacompat-dev: /usr/include/dssi/alsa/asoundlib.h

本地数据库相关

  • 安装卸载包
为安装包时安装包/ 已安装包时升级包
apt install xxx 
重新安装包
apt-get  --reinstall install xxx
不完全卸载包
apt-get remove xxx
完全卸载包
apt-get --purge remove
将所有软件包(包括内核)升级到最高版本
apt-get upgrade
安装中途退出后继续安装
apt-get -f install
  • 缓存
修改仓库配置后重新构建缓存
apt-get update
清理本地缓存
apt-get  clean
清空重复的低版本的软件包
apt-get  autoclean

  • 本地数据库文件
/var/lib/dpkg
/var/lib/apt

/var/cache/apt/archives 下载后的deb文件存放位置

APT仓库配置

  • 客户端配置
/etc/apt/sources.list   文件
/etc/apt/sources.list.d 目录中的文件
  • 客户端配置内容
  5 deb http://us.archive.ubuntu.com/ubuntu/ xenial main restricted                  
  6 deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main restricted

每一行 格式如下  : {
    
    必选} [可选]
{
    
    deb/deb-src} {
    
    URL} {
    
    发行版代号及扩展} {
    
    分类1} [分类2] [分类3] [分类4]
每一个字段解释如下
{
    
    deb/deb-src} : deb 表示二进制可执行文件 deb-src 表示包的源代码
{
    
    URL} 		  : 仓库地址
{
    
    发行版代号及扩展}    :  
				发行版代号: 16.04为 xenial  12.04为focal
				另外还有 扩展 xenial-security xenial-updates xenial-proposed xenial-backports
{
    
    分类1} 		  : 和分类2 分类3 分类4 一样
				从 main restricted universe multiverse 中41
				main 包是免费的/开源的,并受 ubuntu 官方的支持
				restricted 包含各种设备的专用驱动程序
				universe 包是免费的/开源的,由社区支持
				multiverse 由于法律/版权问题,这些软件包受到限制
		
分类1...分类4 在 apt update 过程中是怎么被解析的?
apt 将 软件分类4(main restricted universe multiverse)
如果一行中只有一类,那么意思是只包括该类的软件包
如果一行中只有4,那么意思是包括所有类的软件包
http://us.archive.ubuntu.com/ubuntu/indices/ 中 有 一些文件
每个文件描述了一类软件包
 
在这些文件中
override.xenial.main 对应 deb http://us.archive.ubuntu.com/ubuntu/ xenial main 
override.xenial.restricted 对应 deb http://us.archive.ubuntu.com/ubuntu/ xenial  restricted

override.xenial.main.src 对应 deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main 
override.xenial.restricted.src 对应 deb-src http://us.archive.ubuntu.com/ubuntu/ xenial restricted

自由软件 非自由软件
官方支持的 Main Restricted
非官方支持的 Universe Multiverse
  • 服务器仓库内容
可以这么说,apt 只有一个仓库,但是 仓库 按级别分类
	1.1级别(xxxx yyyy zzzz 分别为不同版本的发行版代号)
		xxxx
		yyyy
		zzzz
	2.2级别
		deb
		deb-src
	3.3级别 (xxxx为发行版代号)
		xxxx
		xxxx-security
		xxxx-updates
		xxxx-proposed
		xxxx-backports
	4.4级别
		main
		restricted
		universe
		multiverse
所以一个发行版共 1*2*5*4=40个类

在 http://us.archive.ubuntu.com/ubuntu/indices/  中 xenial 发行版相关的文件共80个
	其中 5(3级别的类数目)*4(每个第3级别类由4个文件描述) = 20 个文件
	其中 5(3级别的类数目)*4(4级别的类数目)*3(2级别的类数目+1(1为debian-installer))= 60 个文件
  • 新建一个服务器
http://us.archive.ubuntu.com/ubuntu/ 针对每一个ubuntu发行版做了80个文件(表明deb类)及文件对应的deb包
只要有 类似的网站 针对 每一个ubuntu发行版做了80个文件(表明deb类)及文件对应的deb包 ,就可以被称为 ubuntu 的apt仓库
  • 客户端更改仓库配置
一般来说我们只更改 链接就行,不需要更改其他内容
sudo sed -i 's/us.archive.ubuntu/mirrors.aliyun/' /etc/apt/sources.list
ubuntu可选的 配置 : https://wiki.ubuntu.org.cn/模板:16.04source
// 阿里云的镜像站点攘括了很多 镜像 , 网址: https://developer.aliyun.com/mirror/

猜你喜欢

转载自blog.csdn.net/u011011827/article/details/111972364
今日推荐