Ubuntu 20X 版软件管理

Redhat系列与Debian系列的区别

Redhat系列 Debian系列 说明
yum clean all;yum makecache apt update 刷新存储库索引
yum list apt list 列出包含条件的包(已安装,可升级等)
yum provides apt-file search 查看文件来自于哪个包
yum install apt install 在线安装软件包
yum reinstall apt reinstall 重新安装软件包
yum remove apt remove 移除软件包
yum search apt search 搜索安装包
yum info apt show 查看某个安装包的详细信息
yum upgrade apt upgrade 通过安装/升级包的方式升级系统
yum autoremove apt autoremove 自动删除不需要的包
apt full-upgrade 通过删除/安装/升级包进行系统升级
apt edit-sources 编辑源列表
apt satisfy 满足依赖字符串
yum updateinfo 查看包的安全警报
yum upgrade-minimal 最小化升级
yum repolist 显示仓库列表
yum repoinfo 显示仓库详细信息
yum alias 列出或创建命令别名
yum history 显示执行命令的历史记录
yum check-update 检查可用升级
rpm -qa dpkg -l 列出当前已安装的包
rpm –qi dpkg -s 列出该包的状态,包括详细信息
rpm –ql dpkg -L 列出该包中所包含的文件
rpm –qf dpkg -S 搜索包含pattern的包
rpm –qpl package dpkg -c package.deb 列出 deb 包的内容

Ubuntu 软件管理

Debian软件包通常为预编译的二进制格式的扩展名".deb",类似rpm文件,因此安装快速,无需编译软件。包文件包括特定功能或软件所必需的文件、元数据和指令

  • dpkg:package manager for Debian,类似于rpm,dpkg是基于Debian的系统的包管理器。可以安装,删除和构建软件包,但无法自动下载和安装软件包或其依赖项

  • apt:Advanced Packaging Tool,功能强大的软件管理工具,甚至可升级整个Ubuntu的系统,基于客户/服务器架构,类似于yum

1. APT工作原理

在服务器上先复制所有 DEB 包,然后用 APT 的分析工具 genbasedir 根据每个 DEB 包的包头(Header) 信息对所有的 DEB 包进行分析,并将该分析结果记录在文件夹 base 内的一个 DEB 索引清单文件中,一旦 APT 服务器内的 DEB 有所变动,要使用 genbasedir 产生新的 DEB 索引清单。客户端在进行安装或升级 时先要查询 DEB 索引清单,从而获知所有具有依赖关系的软件包,并一同下载到客户端以便安装。当客 户端需要安装、升级或删除某个软件包时,客户端计算机取得 DEB 索引清单压缩文件后,会将其解压置放于 /var/cache/apt/,而客户端使用 apt-get install 或 apt-get upgrade 命令的时候,就会将这个文件夹 内的数据和客户端计算机内的 DEB 数据库比对,知道哪些 DEB 已安装、未安装或是可以升级的

2. dpkg 包管理器

帮助参看:man dpkg

dpkg 常见用法

# 安装包
dpkg -i package.deb

#删除包,不建议,不自动卸载依赖于它的包 
dpkg -r package

# 删除包(包括配置文件) 
dpkg -P package

# 列出当前已安装的包,类似rpm -qa 
dpkg -l

# 显示该包的简要说明 
dpkg -l package

# 列出该包的状态,包括详细信息,类似rpm –qi 
dpkg -s package

# 列出该包中所包含的文件,类似rpm –ql 
dpkg -L package

# 搜索包含pattern的包,类似rpm –qf 
dpkg -S <pattern>

# 配置包,-a 使用,配置所有没有配置的软件包 
dpkg --configure package

# 列出 deb 包的内容,类似rpm –qpl 
dpkg -c package.deb

# 解开 deb 包的内容
dpkg --unpack package.deb

示例

# 列出系统上安装的所有软件包 
root@ubuntu20:~# dpkg -l
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                         >
+++-==========================================-================================>
ii  accountsservice                            0.6.55-0ubuntu13.2              >
ii  acl                                        2.2.53-8                        >
ii  acpi-support                               0.143                           >
...省略部分...



# 列出软件包安装的文件
root@ubuntu20:~# dpkg -L bash
/.
/bin
/bin/bash
/etc
/etc/bash.bashrc
/etc/skel
/etc/skel/.bash_logout
/etc/skel/.bashrc
/etc/skel/.profile
...省略部分...


# 查看 /bin/bash 来自于哪个软件包
root@ubuntu20:~# dpkg -S /bin/bash
bash: /bin/bash
root@ubuntu20:~#

# 安装本地的 .deb 文件
dpkg -i /mnt/cdrom/pool/main/z/zip/zip_3.0-11build1_amd64.deb

# 卸载软件包 
dpkg -r zip

注意:一般建议不要使用dpkg卸载软件包。因为删除包时,其它依赖它的包不会卸载,并且可能无法再正常运行

3. apt

Debian 使用 apt 工具集来管理包系统,apt-get 是其中一个常用的命令行工具,另外一款较为流行的命 令行与 GUI 兼顾的工具是 aptitude ,之前最常用的 Linux 包管理命令都被分散在了 apt-get、apt- cache 和 apt-config 这三条命令中

在 2014 年 apt 命令发布第一个稳定版,Ubuntu 16.04 引入新特性之一便是 apt 命令,apt 命令解决了 命令过于分散的问题,它包括 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt- config 命令中很少用到的功能。在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt- config,提供管理软件包所需的必要选项

apt 相当于 apt-get、apt-cache 和 apt-config 中最常用命令选项的集合
apt 具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。此外,启用的几个特性也非常 有帮助。例如:可以在使用 apt 命令安装或删除程序时看到进度条,apt 还会在更新存储库数据库时提示 用户可升级的软件包个数

apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令,也即可用 apt 替换部分 apt-get 系列命令,但不是全部

3.1 apt 命令用法

Usage: apt [options] command

查看帮助:apt help

root@ubuntu20:~# apt help
apt 2.1.10ubuntu0.1 (amd64)
Usage: apt [options] command

apt is a commandline package manager and provides commands for
searching and managing as well as querying information about packages.
It provides the same functionality as the specialized APT tools,
like apt-get and apt-cache, but enables options more suitable for
interactive use by default.

Most used commands:
  list - list packages based on package names
  search - search in package descriptions
  show - show package details
  install - install packages
  reinstall - reinstall packages
  remove - remove packages
  autoremove - Remove automatically all unused packages
  update - update list of available packages
  upgrade - upgrade the system by installing/upgrading packages
  full-upgrade - upgrade the system by removing/installing/upgrading packages
  edit-sources - edit the source information file
  satisfy - satisfy dependency strings

See apt(8) for more information about the available commands.
Configuration options and syntax is detailed in apt.conf(5).
Information about how to configure sources can be found in sources.list(5).
Package and version choices can be expressed via apt_preferences(5).
Security details are available in apt-secure(8).
                                        This APT has Super Cow Powers.
root@ubuntu20:~#

3.2 apt 与 apt-get 命令对比

apt 命令 被取代的命令 命令的功能
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包
apt purge apt-get purge 移除软件包及配置文件
apt update apt-get update 刷新存储库索引
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt autoremove apt-get autoremove 自动删除不需要的包
apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
apt search apt-get search 搜索应用程序
apt show apt-get show 显示安装细节

3.3 apt 特有的命令

命令 解释
apt list 列出包含条件的包(已安装,可升级等)
apt edit-source 编辑源列表

3.4 APT包索引配置文件

/etc/apt/sources.list
/etc/apt/sources.list.d

可以修改上面文件为国内的安装源,提高速度

示例:修改阿里云的APT源为清华源

root@ubuntu2004:~# sed -i 's/mirrors.aliyun.com/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list

3.5 apt命令操作(如安装和删除软件包)日志文件

/var/log/dpkg.log

4 示例

# 安装包
apt install tree zip 

# 安装图形桌面
apt install ubuntu-desktop

# 在线安装软件包
apt install apache2

# 安装软件包的时候指定安装具体的版本
apt install nginx=1.14.0-0ubuntu1.6

# 删除包
apt remove tree zip
# 说明:apt remove中添加--purge选项会删除包配置文件,谨慎使用 

# 更新包索引,相当于 yum clean all;yum makecache
# 更新本地软件包列表索引,修改了apt仓库后必须执行
apt update

# 升级包:要升级系统,请首先更新软件包索引,再升级
# 升级所有已安装且可升级到新版本的软件包 
apt upgrade

# apt列出仓库软件包,等于yum list 
apt list

# 搜索安装包
apt search nginx 

# 查看某个安装包的详细信息
apt show apache2

# 卸载单个软件包但是保留配置文件 
apt remove apache2

# 删除安装包并解决依赖关系 
apt autoremove apache2

# 卸载单个软件包删除配置文件 
apt purge apache2

# 升级整个系统,必要时可以移除旧软件包。 
apt full-upgrade

# 编辑source源文件 
apt edit-sources

# 查看仓库中软件包有哪些版本可以安装 
apt-cache madison nginx

# 查看文件来自于哪个包,类似 redhat 中的 yum provides <filename>
apt-file search 'string'        # 默认是包含此字符串的文件
apt-file search -x '正则表达式'
apt-file search -F /path/file

5 软件管理案例

查看文件来自于哪个包

# dpkg -S filename :在当前安装的包里查找文件

root@ubuntu20:~# dpkg -S /bin/ls
coreutils: /bin/ls
root@ubuntu20:~#

查找不存在的文件存在于哪个包

root@ubuntu20:~# apt -y install apt-file
Reading package lists... Done
Building dependency tree
Reading state information... Done
apt-file is already the newest version (3.2.2).
0 upgraded, 0 newly installed, 0 to remove and 190 not upgraded.
root@ubuntu20:~# apt update
root@ubuntu20:~# apt-file search -x  '/sl$'


root@ubuntu20:~# apt-file search -F /usr/games/sl
sl: /usr/games/sl
root@ubuntu20:~#

查看包相关信息

# 显示系统安装包的统计信息,可以统计已经安装包的数量,大小,占用空间等 
# apt-cache stats

root@ubuntu20:~# apt-cache stats
Total package names: 102637 (2,874 k)
Total package structures: 98556 (4,336 k)
  Normal packages: 65579
  Pure virtual packages: 1681
  Single virtual packages: 17817
  Mixed virtual packages: 1908
  Missing: 11571
... 省略部分 ...
root@ubuntu20:~#


# 显示xxx包的信息,可以看到某个包的源、版本等信息 
# apt-cache show xxx      # 更详细
# apt show xxx

root@ubuntu20:~# apt show keepalived
Package: keepalived
Version: 1:2.0.19-2.1
Priority: optional
Section: admin
Origin: Ubuntu
Maintainer: Ubuntu Developers 
... 省略部分 ...
root@ubuntu20:~#

root@ubuntu20:~# apt-cache show keepalived
Package: keepalived
Architecture: amd64
Version: 1:2.0.19-2.1
Priority: optional
Section: admin
Origin: Ubuntu
... 省略部分 ...

root@ubuntu20:~#

查看仓库中的指定软件的所有版本

root@ubuntu20:~# apt-cache madison docker-ce

# 安装指定版本
root@ubuntu20:~# apt -y install docker-ce=5:19.03.13~3-0~ubuntu-bionic

查看文件的依赖

# 查询软件xxx依赖哪些包 
# apt depends xxx 
# apt-cache depends xxx

root@ubuntu20:~# apt depends keepalived
keepalived
  PreDepends: init-system-helpers (>= 1.54~)
  Depends: iproute2
    iproute2:i386
  Depends: libc6 (>= 2.28)
  Depends: libglib2.0-0 (>= 2.26.0)
  Depends: libmnl0 (>= 1.0.3-4~)
  Depends: libnftnl11 (>= 1.1.2)
  Depends: libnl-3-200 (>= 3.2.27)
  Depends: libnl-genl-3-200 (>= 3.2.7)
  Depends: libpcre2-8-0 (>= 10.22)
  Depends: libsnmp35 (>= 5.8+dfsg)
  Depends: libssl1.1 (>= 1.1.0)
  Recommends: ipvsadm
root@ubuntu20:~#


# 查询软件xxx被哪些包依赖 
# apt rdepends xxx 
# apt-cache rdepends xxx

root@ubuntu20:~# apt rdepends  bash

6 ubuntu 初始化建议安装的常用包

root@ubuntu20:~#  apt purge ufw lxd lxd-client lxcfs liblxc-common

root@ubuntu20:~# apt install iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server \
nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev gcc openssh-server iotop unzip zip
posted @ 2021-04-13 11:15  临江仙我亦是行人  阅读(147)  评论(0编辑  收藏  举报