11. 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

#显示该包的简要说明,类似rpm –qi
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

范例:

#列出系统上安装的所有软件包
dpkg -l

#列出软件包安装的文件
dpkg -L bash

#查看/bin/bash来自于哪个软件包
dpkg -S /bin/bash

#安装本地的 .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 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-cache search                                          搜索应用程序
apt show                                apt-cache show                                            显示安装细节

apt 特有的命令

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

APT包索引配置文件

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

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

参考链接:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.53322f70fghx56

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

/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列出仓库软件包,等于yum list
apt list

#搜索安装包
apt search nginx

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

#在线安装软件包
apt install apache2 

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

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

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

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

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

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

#编辑source源⽂件
apt edit-sources 

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

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

4. 软件管理案例

#显示系统安装包的统计信息,可以统计已经安装包的数量,大小,占用空间等
#apt-cache stats
[root@ubuntu1804 ~]#apt-cache stats
显示xxx包的信息,可以看到某个包的源、版本等信息
#apt-cache show xxx #更详细
#apt show xxx

root@u18:~# apt show keepalived
root@u18:~# apt-cache show keepalived
#查找文件属于哪个包
#dpkg -S filename :在当前安装的包里查找文件

oot@u18:~# dpkg -S /bin/ls
coreutils: /bin/ls
#在所有源包里查找文件。(包含未安装的包)
#apt-file search filename

root@u18:~# apt search /bin/tree
Sorting... Done
Full Text Search... Done

root@u18:~# apt -y install apt-file
root@u18:~# apt-file update
root@u18:~# root@u18:~# apt-file update
#查询软件xxx依赖哪些包
#apt   depends xxx
#apt-cache depends xxx

root@u18:~# apt depends keepalived
keepalived
  Depends: iproute2
    iproute2:i386
  Depends: libc6 (>= 2.27)
  Depends: libglib2.0-0 (>= 2.26.0)
  Depends: libip4tc0 (>= 1.6.0+snapshot20161117)
  Depends: libip6tc0 (>= 1.6.0+snapshot20161117)
  Depends: libnl-3-200 (>= 3.2.27)
  Depends: libnl-genl-3-200 (>= 3.2.7)
  Depends: libnl-route-3-200 (>= 3.2.7)
  Depends: libsnmp30 (>= 5.7.3+dfsg-1.8ubuntu3.6~dfsg)
  Depends: libssl1.1 (>= 1.1.0)
  Depends: libxtables12 (>= 1.6.0+snapshot20161117)
  Recommends: ipvsadm
#查询软件xxx被哪些包依赖
#apt rdepends xxx
#apt-cache rdepends xxx

root@u18:~# apt rdepends bash

5. Ubuntu1804常用包

[root@ubuntu1804 ~]#apt purge ufw lxd lxd-client lxcfs liblxc-common
[root@ubuntu1804 ~]#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

6. Ubuntu仓库管理

Ubuntu的apt配置文件可以存放在/etc/apt/sources.list文件内, 也可存放在/etc/apt/sources.list.d目录内的sources.list文件里

修改配置文件后, 需要执行apt update来刷新元数据

  • Ubuntu1804
root@u18:~# vim /etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

练习:
1、查询命令java来自于哪个rpm包 2、yum的配置和使用,包括yum仓库的创建
3、编写系统初始化脚本 reset.sh,包括别名,提示符颜色,yum仓库配置文件,安装tree,ftp,lftp,telnet等包
4、在CentOS 8上编译安装 apache 2.4.43 源码包,并启动此服务

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容