静态和动态链接

  • 链接主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能 够正确地衔接,分为静态链接和动态链接
  • 静态链接
    • 把程序对应的依赖库复制一份到包
    • libxxx.a
    • 嵌入程序包
    • 升级难,需重新编译
    • 占用较多空间,迁移容易
  • 动态链接
    • 只把依赖加做一个动态链接
    • libxxx.so
    • 连接指向
    • 占用较少空间,升级方便

包和包管理器

包的组成

二进制文件、库文件、配置文件、帮助文件

程序包管理器

  • debian: deb文件, dpkg包管理器
  • redhat: rpm文件, rpm包管理器
    • rpm:Redhat Package Manager
      • RPM Package Manager

包命名

rpm包命名方式

  • name-VERSION-release.arch.rpm
  • 例:bash-4.2.46-19.el7.x86_64.rpm
    • VERSION: major.minor.release
    • release:release.OS
    • 常见的arch
      • x86: i386, i486, i586, i686
      • x86_64: x64, x86_64, amd64
      • powerpc: ppc
      • 跟平台无关:noarch

包命名和工具

包:分类和拆包
  • Application-VERSION-ARCH.rpm: 主包
  • Application-devel-VERSION-ARCH.rpm 开发子包
  • Application-utils-VERSION-ARHC.rpm 其它子包
  • Application-libs-VERSION-ARHC.rpm 其它子包
解决依赖包管理工具
  • yum:rpm包管理器的前端工具
  • apt:deb包管理器前端工具
  • zypper:suse上的rpm前端管理工具
  • dnf:Fedora 18+ rpm包管理器前端管理工具

库文件

  • 查看二进制程序所依赖的库文件
    • ldd /PATH/TO/BINARY_FILE
  • 管理及查看本机装载的库文件
    • ldconfig 加载配置文件中指定的库文件
    • /sbin/ldconfig –p 显示本机已经缓存的所有可用库文件名及文件路径
  • 映射关系
    • 配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
    • 缓存文件:/etc/ld.so.cache

包管理器

功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而 方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作

包文件组成 (每个包独有)

  • RPM包内的文件
  • RPM的元数据,如名称,版本,依赖性,描述等
  • 安装或卸载时运行的脚本

数据库(公共):/var/lib/rpm

  • 程序包名称及版本
  • 依赖关系
  • 功能说明
  • 包安装后生成的各文件路径及校验码信息

程序包的来源

管理程序包的方式
  • 使用包管理器:rpm
  • 使用前端工具:yum, dnf
获取程序包的途径
  • 系统发版的光盘或官方的服务器
  • 项目官方站点
  • 第三方组织
  • 自己制作

rpm包管理

CentOS系统上使用rpm命令管理程序包

  • 安装、卸载、升级、查询、校验、数据库维护
rpm包安装
  • rpm {-i–install} [install-options] PACKAGE_FILE…
    • -v: verbose
    • -h: 以#显示程序包管理执行进度
  • rpm -ivh PACKAGE_FILE …
    • --test: 测试安装,但不真正执行安装,即dry run模式
    • --nodeps:忽略依赖关系
    • --nosignature: 不检查来源合法性
    • --nodigest:不检查包完整性
rpm包升级

rpm {-U–upgrade} [install-options] PACKAGE_FILE…

rpm {-F–freshen} [install-options] PACKAGE_FILE…

  • upgrade:安装有旧版程序包,则“升级”
    • 如果不存在旧版程序包,则“安装”
  • freshen:安装有旧版程序包,则“升级”
    • 如果不存在旧版程序包,则不执行升级操作
  • rpm -Uvh PACKAGE_FILE …
  • rpm -Fvh PACKAGE_FILE …
    • --oldpackage:降级
    • --force: 强制安装
升级注意项

1、不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核

2、如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文 件不会直接覆盖老版本的配置文件,而把新版本文件重命(FILENAME.rpmnew)后 保留

rpm包查询

rpm {-q–query} [select-options] [query-options]

  • select-options

    • -a:所有包
    • -f:查看指定的文件由哪个程序包安装生成
    • -p rpmfile:针对尚未安装的程序包文件做查询操作
    • --changelog:查询rpm包的changelog
  • query-options

    • -c:查询程序的配置文件
    • -d:查询程序的文档
    • -i:information
    • -l:查看指定的程序包安装后生成的所有文件
    • --scripts:程序包自带的脚本
  • 常用查询用法

  • -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE

  • -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, …

  • -qa

rpm包卸载

rpm {-e–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …

当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留

误卸载内核或者rpm,如何恢复
  1. 挂载系统镜像,进入维护模式
  2. 手工 rpm 安装相应rpm包至需要救援的系统的根目录
    1. rpm -ivh xxx.rpm –root=/mnt/sysimage
  3. 重启系统
rpm包校验
  • 包来源的合法性验证及完整性验证
    • 完整性验证:SHA256
    • 来源合法性验证:RSA
  • 公钥加密
    • 对称加密:加密、解密使用同一密钥
    • 非对称加密:密钥是成对儿的
      • public key: 公钥,公开所有人
      • secret key: 私钥, 不能公开
  • 导入所需要公钥
    • rpm -Kchecksig rpmfile 检查包的完整性和签名
    • rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 导入公钥
      • CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7
    • rpm -qa “gpg-pubkey*” 查看导入公钥信息
rpm数据库

/var/lib/rpm 目录非常重要,及时备份,删除后会使系统失去包管理能力,即使重新初始化数据库

yum前端程序

yum介绍

CentOS: yum, dnf

YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依 赖性,可在多个库之间定位软件包,up2date的替代工具

yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据 文件(放置于特定目录repodata下)

  • 文件服务器
    • http://
    • https://
    • ftp://
    • file://

yum配置文件

yum客户端配置文件

  • /etc/yum.conf:为所有仓库提供公共配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@CentOS-7 yum.repos.d]# cat /etc/yum.conf 
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
//为1时,启动缓存,yum安装时保留下载的安装软件包
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
  • /etc/yum.repos.d/*.repo:为仓库的指向提供配置

仓库指向的定义:

1
2
3
4
5
6
7
8
9
10
11
12
[repositoryID]
name=Some name for this repository
baseurl=url1://path/to/repository/
url2://path/to/repository/
enabled={10}
gpgcheck={10}
gpgkey=URL
enablegroups={10}
failovermethod={roundrobinpriority}
roundrobin:意为baseurl随机挑选,默认值
priority:按顺序访问
cost= 默认为1000

yum仓库

yum的repo配置文件中可用的变量

  • $releasever: 当前OS的发行版的主版本号
  • $arch: 平台,i386,i486,i586,x86_64等
  • $basearch:基础平台;i386, x86_64
  • $YUM0-$YUM9:自定义变量

示例:

yum命令

  • yum命令的用法:
    • yum [options] [command] [package …]
  • 显示仓库列表:
    • yum repolist [allenableddisabled]
      • 初次使用会生成元数据,保存至/var/cache/yum/$basearch/$releasever下
  • 显示程序包:
    • yum list
    • yum list {availableinstalledupdates} [glob_exp1] […]
  • 安装程序包:
    • yum install package1 [package2] […] 全新安装
    • yum reinstall package1 [package2] 重装
  • 升级程序包:
    • yum update [package1] [package2] […] 升级所有包同时也升级软件和系统内核,慎用
    • yum upgrade [package1] [package2] […] 只升级所有包,不升级软件和系统内核
    • yum downgrade package1 [package2] 降级
  • 检查可用升级:
    • yum check-update
  • 卸载程序包:
    • yum remove erase package1 [package2]
  • 查看程序包information:
    • yum info […]
  • 查看指定的特性(可以是某文件)是由哪个程序包所提供:
    • yum provides whatprovides feature1 [feature2] […]
    • yum provides cd //示例
  • 清理本地缓存:
    • yum clean [ packages metadata expire-cache rpmdb plugins all ] //清除/var/cache/yum/$basearch/$releasever缓存
  • 构建缓存:
    • yum makecache
  • 搜索:
    • :yum search string1 [string2]
      • 以指定的关键字搜索程序包名及summary信息
  • 查看指定包所依赖的capabilities
    • yum deplist package1 [package2]
  • 日志 :/var/log/yum.log
  • 安装及升级本地程序包:
    • yum localinstall rpmfile1 [rpmfile2] […]
    • yum localupdate rpmfile1 [rpmfile2] […]
  • 包组管理的相关命令:
    • yum groupinstall group1 [group2] […]
    • yum groupupdate group1 [group2] […]
    • ‘yum grouplist [hidden] [groupwildcard] […]
    • yum groupremove group1 [group2] […]
    • yum groupinfo group1 […]
  • yum的命令行选项:
    • --nogpgcheck:禁止进行gpg check
    • -y: 自动回答为“yes”
    • -q:静默模式
    • --disablerepo=repoidglob:临时禁用此处指定的repo
    • --enablerepo=repoidglob:临时启用此处指定的repo
    • --noplugins:禁用所有插件

系统光盘yum仓库

挂载光盘至某目录,例如/mnt/cdrom
1
mount /dev/cdrom /mnt/cdrom 
创建配置文件
1
2
3
4
5
6
7
8
[root@CentOS-7 packages]# cat /etc/yum.repos.d/CentOS-Base.repo
[Centos7]
name=CentOS-$releasever-local-baseurl
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7
#failovermethod=priority
创建yum仓库索引(更新源数据)—系统光盘可跳过此项
1
2
[root@CentOS-7 packages]# yum install createrepo -y //如果没有,需要手动至光盘Packages目录下,rpm -ivh 安装
[root@CentOS-7 packages]# createrepo /mnt/cdrom/
查看仓库列表
1
[root@CentOS-7 packages]# yum repolist

本地网络yum服务器同步外网yum源实现

本地网络yum服务器可以定期向外网yum请求更新,可以新建shell脚本,每天定时执行更新,脚本内容参考第3与第5小节。

修改yum源为阿里云
1
2
3
4
5
6
7
8
9
10
[root@CentOS-7 /]# tar -zcvf /etc/yum.repos.d/repos.tar.gz /etc/yum.repos.d/*

[root@CentOS-7 /]# cd /etc/yum.repos.d/
[root@CentOS-7 yum.repos.d]# rm -rf `ls grep -v repos.tar.gz`

[root@CentOS-7 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

[root@CentOS-7 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

[root@CentOS-7 yum.repos.d]# yum repolist
安装必要工具
1
yum install -y wget make cmake gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel createrepo yum-utils -y
根据源标识创建本地目录,同步拉取远端yum服务器rpm安装包
1
2
[root@CentOS-7 yum.repos.d]# mkdir -p /mirrors/centos/7/x86_64/
[root@CentOS-7 yum.repos.d]# reposync -p /mirrors/centos/7/x86_64/
拉取完成后,构建yum索引

为了快速完成实验,只拉取少量rpm包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@CentOS-7 mirrors]# createrepo /mirrors/centos/7/x86_64/base
Spawning worker 0 with 44 pkgs
Spawning worker 1 with 43 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

[root@CentOS-7 mirrors]# cd centos/7/x86_64/base/repodata/
[root@CentOS-7 repodata]# ls
078fe11daf657ce39393c1413f8a1c9cc5f5d85d99a9dfdfc46a87c5622d837d-primary.xml.gz
1aec1e4c4110b284caf881d2383f8968218dac60d6f72b876e30dd7fab3300cc-other.sqlite.bz2
61caaa936d875aa7623d9561a05a932b08036ac0e9cab2fce232914196a90a1c-primary.sqlite.bz2
d246634c37c65e7fd2071fb2c85462f8c2d34c26bc86c3894ecfcb59144d5f92-filelists.sqlite.bz2
e51701b5c69ce1a60d3f564ac8f2a3126cb5a8e713abfc0f500e4de007da18bf-other.xml.gz
e5ffee85a75f5ba17482cd779a8398c3418bde4b88ed2f1fba462ee5e9a0b78c-filelists.xml.gz
repomd.xml

[root@CentOS-7 mirrors]# createrepo /mirrors/centos/7/x86_64/extras/
[root@CentOS-7 mirrors]# createrepo /mirrors/centos/7/x86_64/updates/
[root@CentOS-7 mirrors]# createrepo /mirrors/centos/7/x86_64/epel/
更新索引

每次向阿里云同步数据后,均需要更新数据源,更新索引

1
2
3
4
5
6
7
[root@CentOS-7 mirrors]# createrepo --update /mirrors/centos/7/x86_64/base

[root@CentOS-7 mirrors]# createrepo --update /mirrors/centos/7/x86_64/extras/

[root@CentOS-7 mirrors]# createrepo --update /mirrors/centos/7/x86_64/updates/

[root@CentOS-7 mirrors]# createrepo --update /mirrors/centos/7/x86_64/epel/
拉取GPG-KEY文件
1
[root@CentOS-7 home]# wget -P /mirrors/centos/7/ http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
安装web服务
安装nginx
1
2
3
4
5
6
7
8
9
10
11
[root@CentOS-7 repodata]# cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=0
enabled=1
EOF

[root@CentOS-7 repodata]# yum repolist

[root@CentOS-7 repodata]# yum install nginx -y
简单配置nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cat > /etc/nginx/conf.d/default.conf <<EOF
server {
listen 80;
server_name localhost;
location / {
root /mirrors;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
charset utf-8,gbk;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
EOF
启动nginx
1
[root@CentOS-7 yum.repos.d]# systemctl start nginx.service
在服务端创建客户端repo配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@CentOS-7 /]# cat > /mirrors/centos/7/x86_64/Centos-Base.repo <<EOF
[base]
name=CentOS-\$releasever - Base - mirror.template.com
baseurl=http://172.16.100.11/centos/\$releasever/\$basearch/base
enabled=1
gpgcheck=1
gpgkey=http://172.16.100.11/centos/\$releasever/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-\$releasever - Updates - mirror.template.com
baseurl=http://172.16.100.11/centos/\$releasever/\$basearch/updates/
enabled=1
gpgcheck=1
gpgkey=http://172.16.100.11/centos/\$releasever/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-\$releasever - Extras - mirrors.template.com
baseurl=http://172.16.100.11/centos/\$releasever/\$basearch/extras/
enabled=1
gpgcheck=1
gpgkey=http://172.16.100.11/centos/\$releasever/RPM-GPG-KEY-CentOS-7
EOF

[root@CentOS-7 /]# cat > /mirrors/centos/7/x86_64/Centos-Epel.repo <<EOF
[epel]
name=CentOS-\$releasever - epel - mirrors.template.com
baseurl=http://172.16.100.11/centos/\$releasever/\$basearch/epel/
enabled=1
gpgcheck=1
gpgkey=http://172.16.100.11/centos/$releasever/RPM-GPG-KEY-CentOS-7
EOF
客户端配置
1
2
3
4
5
6
7
8
9
10
[root@CentOS-7 /]# tar -zcvf /etc/yum.repos.d/repos.tar.gz /etc/yum.repos.d/*

[root@CentOS-7 /]# cd /etc/yum.repos.d/
[root@CentOS-7 yum.repos.d]# rm -rf `ls grep -v repos.tar.gz`

[root@CentOS-7 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://172.16.100.11/centos/7/x86_64/Centos-Base

[root@CentOS-7 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://172.16.100.11/centos/7/x86_64/Centos-Epel

[root@CentOS-7 yum.repos.d]# yum repolist

DNF (DaNdiFied)软件包管理前台

DNF 介绍

新一代的RPM软件包管理器。DNF 发行日期是2015年5月11日,DNF 包管 理器采用Python 编写,发行许可为GPL v2,首先出现在Fedora 18 发行版中。在 RHEL 8.0 版本正式取代了 YUM,DNF包管理器克服了YUM包管理器的一些瓶颈,提升 了包括用户体验,内存占用,依赖分析,运行速度等

  • 配置文件:/etc/dnf/dnf.conf
  • 仓库文件:/etc/yum.repos.d/ *.repo
  • 日志: /var/log/dnf.rpm.log

DNF 使用

dnf 用法:与yum一致

编译安装

程序包编译安装过程

Application-VERSION-release.src.rpm –> 安装后,使用rpmbuild命令制作 成二进制格式的rpm包,而后再安装

源代码–>预处理–>编译–>汇编–>链接–>执行

  • 源代码组织格式
    • 多文件:文件中的代码之间,很可能存在跨文件依赖关系
    • C、C++:make 项目管理器
      • configure脚本 –> Makefile.in –> Makefile
    • java: maven

C语言源代码编译安装三步骤:

  • ./configure
    • ./configure –help
    • ./configure –prefix=/soft/xxx
    • 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的 指定以及Makefile.in文件生成Makefile
    • 检查依赖到的外部环境,如依赖的软件包
  • make 根据Makefile文件,构建应用程序
    •  make -j 4 //指定4线程运行编译
  • make install 复制文件到相应路径

编译环境准备

1
[root@CentOS-7 /]# yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl  openssl-devel systemd-devel zlib-devel  vim lrzsz tree screen  lsof tcpdump wget  ntpdate net-tools iotop bc  zip unzip nfs-utils -y

configure脚本

选项:指定安装位置、指定启用的特性

--help: 获取其支持使用的选项

  • 安装路径设定:
    • --prefix=/PATH:指定默认安装位置,默认为/usr/local/
    • --sysconfdir=/PATH:配置文件安装位置
    • System types:支持交叉编译

make

 make -j 4 //指定4线程运行编译

make install

安装后的配置

二进制程序目录导入至PATH环境变量中

编辑文件/etc/profile.d/NAME.sh

1
export PATH=/PATH/TO/BIN:$PATH
导入帮助手册

编辑/etc/man.configman_db.conf文件

添加一个MANPATH

编译安装示例

下载源码包,准备编译环境
1
[root@CentOS-7 /]# yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl  openssl-devel systemd-devel zlib-devel  vim lrzsz tree screen  lsof tcpdump wget  ntpdate net-tools iotop bc  zip unzip nfs-utils -y
解压源码包,查看帮助
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@CentOS-7 httpd-2.4.43]# ls
ABOUT_APACHE build config.layout httpd.dsp LAYOUT Makefile.win README.cmake test
acinclude.m4 BuildAll.dsp configure httpd.mak libhttpd.dep modules README.platforms VERSIONING
Apache-apr2.dsw BuildBin.dsp configure.in httpd.spec libhttpd.dsp NOTICE ROADMAP
Apache.dsw buildconf docs include libhttpd.mak NWGNUmakefile server
apache_probes.d CHANGES emacs-style INSTALL LICENSE os srclib
ap.d CMakeLists.txt httpd.dep InstallBin.dsp Makefile.in README support
[root@CentOS-7 httpd-2.4.43]# cat INSTALL

APACHE INSTALLATION OVERVIEW

Quick Start - Unix
------------------

For complete installation documentation, see [ht]docs/manual/install.html or
http://httpd.apache.org/docs/2.4/install.html

$ ./configure --prefix=PREFIX
$ make
$ make install
$ PREFIX/bin/apachectl start //启动程序方式

[root@CentOS-7 httpd-2.4.43]# ./configure --help
可以获取安装目录,模块启用与停用等功能,必看
configure脚本
1
2
3
4
[root@CentOS-7 httpd-2.4.43]# ./configure \
> --prefix=/application/httpd-2.4.43 \
> --enable-ssl \
> --enable-so
make

有时可能回出现make失败,再次make会有上次make的残留文件,可以使用mark clean 清理环境,或者删除目录,重新开始

1
2
3
4
5
6
7
8
9
[root@CentOS-7 httpd-2.4.43]# ls
ABOUT_APACHE BuildAll.dsp config.nice httpd.dsp libhttpd.dep modules README.platforms
acinclude.m4 BuildBin.dsp config.status httpd.mak libhttpd.dsp modules.c ROADMAP
Apache-apr2.dsw buildconf configure httpd.spec libhttpd.mak NOTICE server
Apache.dsw CHANGES configure.in include LICENSE NWGNUmakefile srclib
apache_probes.d CMakeLists.txt docs INSTALL Makefile os support
ap.d config.layout emacs-style InstallBin.dsp Makefile.in README test
build config.log httpd.dep LAYOUT Makefile.win README.cmake VERSIONING
[root@CentOS-7 httpd-2.4.43]# make -j 4
make install
1
[root@CentOS-7 httpd-2.4.43]# make install
添加全局变量,启动httpd
1
2
3
4
5
6
[root@CentOS-7 bin]# cat /etc/profile.d/env.sh 
export PATH=/application/httpd-2.4.43/bin:$PATH
[root@CentOS-7 bin]# source /etc/profile.d/env.sh
[root@CentOS-7 bin]# echo $PATH
/application/httpd-2.4.43/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@CentOS-7 conf]# apachectl start

Ubuntu 软件管理

  • dpkg:package manager for Debian,类似于rpm, dpkg是基于Debian的系统的包 管理器。可以安装,删除和构建软件包,但无法自动下载和安装软件包或其依赖项
  • APT:Advanced Packaging Tool,功能强大的软件管理工具,甚至可升级整个Ubuntu 的系统,基于客户/服务器架构

dpkg

dpkg常见用法: man dpkg

  • dpkg -i package.deb 安装包
  • dpkg -r package 删除包,不建议,不自动卸载依赖于它的包
    • :一般建议不要使用dpkg卸载软件包。因为删除包时,其它依赖它的包不 会卸载,并且可能无法再正常运行
  • dpkg -P package 删除包(包括配置文件)
  • dpkg -l 列出当前已安装的包,类似rpm -qa
  • dpkg -l package 显示该包的简要说明,类似rpm –qi
  • dpkg -L package 列出该包中所包含的文件,类似rpm –ql
  • dpkg -S 搜索包含pattern的包,类似rpm –qf
  • dpkg -s package 列出该包的状态,包括详细信息,类似rpm –qi

apt

apt 相当于 apt-get、apt-cache 和 apt-config 中最常用命令选项的集合