码迷,mamicode.com
首页 > 系统相关 > 详细

Ubuntu 软件管理

时间:2021-04-13 12:54:26      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:table   apt源   cer   arch   命令   存在   sources   form   命令用法   

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 系列命令,但不是全部

apt 命令用法

查看帮助:apt help

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 显示安装细节

apt 特有的命令

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

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

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

/var/log/dpkg.log

示例

# 安装包
apt install tree zip 

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

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

# 更新包索引,相当于 yum clean all;yum makecache
apt update

# 升级包:要升级系统,请首先更新软件包索引,再升级
apt upgrade

# 升级所有已安装且可升级到新版本的软件包 
apt upgrade

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

# 搜索安装包
apt search nginx 

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

# 在线安装软件包
apt install apache2

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

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

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

# 更新本地软件包列表索引,修改了apt仓库后必须执行 
apt update

# 卸载单个软件包删除配置文件 
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

4 软件管理案例

4.1 案例1: 查看文件来自于哪个包

# 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:~#

4.2 案例2: 查看包相关信息

# 显示系统安装包的统计信息,可以统计已经安装包的数量,大小,占用空间等 
# 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:~#

4.3 案例3: 查看仓库中的指定软件的所有版本

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

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

4.4 案例4: 查看文件的依赖

# 查询软件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

5 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

Ubuntu 软件管理

标签:table   apt源   cer   arch   命令   存在   sources   form   命令用法   

原文地址:https://www.cnblogs.com/wysxr/p/14652313.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!