9.软件包管理
1.软件管理
1.1 软件的编译和运行
-
C语言的运行和编译
源文件`--预处理--`预处理文件`--编译--`汇编文件`--汇编--`目标文件`--链接--`可执行文件 #分步骤编译运行 gcc -E hello.c -o hello.i gcc -S hello.i -o hello.s gcc -c hello.s -o hello.o gcc hello.o -o hello #一步实现编译过程 gcc hello.c -o hello
1.2 统计文件个数及总行数
-
统计Linux内核文件个数
[root@centos linux-5.6.2]find -name "*.c" | wc -l 28271
-
统计Linux内核c文件总行数
[root@centos linux-5.6.2]cat `find -name "*.c"` | wc -l 19324149 # 错误统计,统计总行数准确 [root@centos linux-5.6.2]find -name "*.c" | xargs wc -l
1.3 库文件
-
查看命令所依赖的库文件
ldd /PATH/ZHILING
# 查看 [root@centos ~]# ldd /bin/cat #显示本机已经缓存的所有可用库文件名及文件路径映射关系 [root@centos ~]# /sbin/ldconfig -p
-
范例:查看指令所依赖的库文件
[root@centos ~]# ls /bin/cat /bin/cat [root@centos ~]# ls /bin/ls /bin/ls [root@centos ~]# ldd /bin/cat linux-vdso.so.1 => (0x00007ffd9f3f2000) libc.so.6 => /lib64/libc.so.6 (0x00007f01b62fa000) /lib64/ld-linux-x86-64.so.2 (0x000056035c985000) [root@centos ~]# ldd /bin/ls linux-vdso.so.1 => (0x00007ffd092aa000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fb8f8496000) libcap.so.2 => /lib64/libcap.so.2 (0x00007fb8f8291000) libacl.so.1 => /lib64/libacl.so.1 (0x00007fb8f8087000) libc.so.6 => /lib64/libc.so.6 (0x00007fb8f7cc4000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fb8f7a62000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fb8f785d000) /lib64/ld-linux-x86-64.so.2 (0x0000560becbdf000) libattr.so.1 => /lib64/libattr.so.1 (0x00007fb8f7658000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb8f743c000)
-
移动库文件后的回复操作
# 把库文件移动到其他目录 [root@centos ~]# mv /lib64/libc.so.6 /data # 移动该库文件后,该主机无法使用sftp传输文件,且无法接收其他主机scp传输的文件 1、重启主机,再进度条页面按Esc进入Boot Menu, 2、选择3 CD-ROM Drive 3、选择Troubleshooting 4、选择Rescue a CentOS Linux system 5、输入1回车continue 6、再次回车,把系统挂载到/mnt/sysimage下 7、此时的/mnt/sysimage就代表该主机的根目录 8、cp /mnt/sysimage/data/libc.so.6 /mnt/sysimage/lib64/ 9、重启即可
-
查看库文件大小
# 查看库文件大小 [root@centos ~]# du -sh /usr/lib* 368M /usr/lib 123M /usr/lib64 3.5M /usr/libexec # 查看二进制程序超链接大小 [root@centos ~]# du -sh /bin /sbin/ 0 /bin 37M /sbin/ # 超链接大小 [root@centos ~]# ll -d /bin /sbin lrwxrwxrwx. 1 root root 7 Aug 4 2020 /bin -> usr/bin lrwxrwxrwx. 1 root root 8 Aug 4 2020 /sbin -> usr/sbin # 二进制程序实际大小 [root@centos ~]# du -sh /usr/bin /usr/sbin/ 59M /usr/bin 37M /usr/sbin/
2. 软件包介绍
2.1 准备:挂载ISO盘
-
安装与启动autofs
# 安装autofs yum -y install autofs # 查看并没有misc目录 [root@centos ~]# ls / bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var # 启动autofs [root@centos ~]# systemctl start autofs # 查看已有misc目录 [root@centos ~]# ls / bin boot dev etc home lib lib64 media misc mnt net opt proc root run sbin srv sys tmp usr var # 由于没有ISO光盘,故没有挂载 [root@centos ~]# cd /misc/cd -bash: cd: /misc/cd: No such file or directory [root@centos ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 12568576 1141548 11427028 10% / devtmpfs 1013500 0 1013500 0% /dev tmpfs 1024372 0 1024372 0% /dev/shm tmpfs 1024372 8636 1015736 1% /run tmpfs 1024372 0 1024372 0% /sys/fs/cgroup /dev/sda2 1038336 127032 911304 13% /boot tmpfs 204876 0 204876 0% /run/user/0
-
虚拟机选择ISO光盘
-
查看是否自动挂载
# 查看是否挂载 [root@centos cd]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/centos-root 12568576 1141000 11427576 10% / devtmpfs 1013500 0 1013500 0% /dev tmpfs 1024372 0 1024372 0% /dev/shm tmpfs 1024372 8636 1015736 1% /run tmpfs 1024372 0 1024372 0% /sys/fs/cgroup /dev/sda2 1038336 127032 911304 13% /boot tmpfs 204876 0 204876 0% /run/user/0 /dev/sr0 4414592 4414592 0 100% /misc/cd [root@centos cd]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 15G 0 disk ├─sda1 8:1 0 2M 0 part ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 14G 0 part ├─centos-root 253:0 0 12G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sr0 11:0 1 4.2G 0 rom /misc/cd [root@centos ~]# cd /misc/cd [root@centos cd]# ls CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
-
范例:查看包数量与分类
# 查看数量 [root@centos Packages]# cd /misc/cd/Packages/ [root@centos Packages]# ls *.rpm |wc -l 3894 # 统计分类,方式一 [root@centos Packages]# ls *.rpm | sed -nr 's/.*\.(.*)\.rpm/\1/p' |sort |uniq -c 1348 noarch 2546 x86_64 # 统计分类,方式二 [root@centos Packages]# ls *.rpm |rev |cut -d '.' -f 2 |rev |sort |uniq -c 1348 noarch 2546 x86_64
2.2 软件包相关概念
-
软件保包中的文件
二进制文件 库文件 配置文件 帮助文件
-
源码包命名规则
格式:name-version.tar.gz 样例:nginx-1.16.1.tar.gz 包名:nginx 版本:1.16.1 注意:version=major.minor.release major:大版本更新 minor:小版本更新 release:一般指修复次数
-
rpm包命名规则
格式:name-version-release.arch.rpm 样例:authd-1.4.3-42.el7.x86_64.rpm 样例:autoconf-2.69-11.el7.noarch.rpm 包名name: autoconf 版本version: 1.4.3 打包次数release: 42 运行平台arch: el7.x86_64 常见运行平台 x86: i386, i486, i586, i686 x86_64: x64, x86_64, amd64 powerpc: ppc 跟平台无关:noarch
-
rpm包的拆分
# 样例 httpd-2.4.6-67.el7.centos.x86_64.rpm httpd-devel-2.4.6-67.el7.centos.x86_64.rpm httpd-manual-2.4.6-67.el7.centos.noarch.rpm httpd-tools-2.4.6-67.el7.centos.x86_64.rpm http-parser-2.7.1-1.el7.x86_64.rpm # 说明 http-version:主包 httpd-devel-verison:开发子包 httpd-manual-verison:安装手册子包 httpd-tools-verison:工具子包 http-parser-verison:库文件子包
-
包管理器分类
rpm 包管理器
:Redhat使用,管理rpm后缀文件dpkg 包管理器
:Debian使用,管理deb后缀文件 -
包管理器的前端工具
yum
:rpm包管理器的前端工具,可自动解决依赖问题apt
:dpkg包管理器的前端工具,可自动解决依赖问题 -
程序包管理器相关文件
1. 包文件组成 (每个包独有) 包内的文件 元数据,如:包的名称,版本,依赖性,描述等 可能会有包安装或卸载时运行的脚本 2. 数据库(公共):/var/lib/rpm 程序包名称及版本 依赖关系 功能说明 包安装后生成的各文件路径及校验码信息
-
利用 cpio工具查看包文件列表
rpm2cpio 包文件|cpio –itv 预览包内文件 rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件
-
常见包镜像网站
CentOS镜像: https://www.centos.org/download/ http://mirrors.aliyun.com http://mirrors.sohu.com http://mirrors.163.com Ubuntu 镜像: http://cdimage.ubuntu.com/releases/ http://releases.ubuntu.com
2.3 查看系统信息
-
查看操作系统版本
# 查看版本 [root@centos Packages]# cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7" # 查看Redhat具体版本 [root@centos Packages]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core)
-
查看内存
[root@centos Packages]# free -h total used free shared buff/cache available Mem: 2.0G 88M 1.6G 8.4M 316M 1.7G Swap: 2.0G 0B 2.0G
-
查看硬盘
[root@centos Packages]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 15G 0 disk ├─sda1 8:1 0 2M 0 part ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 14G 0 part ├─centos-root 253:0 0 12G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sr0 11:0 1 4.2G 0 rom /misc/cd
-
查看cpu
[root@centos Packages]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 158 Model name: Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz Stepping: 11 CPU MHz: 3599.945 BogoMIPS: 7199.89 Hypervisor vendor: Innotek GmbH Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 6144K NUMA node0 CPU(s): 0 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc pni pclmulqdq monitor ssse3 cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase avx2 invpcid rdseed clflushopt
3. rpm包管理器
3.1 查询
-
rpm -q name
:精确查找已安装包# 精确查找,包名不能拼写错误 [root@centos Packages]# rpm -q vsftpd vsftpd-3.0.2-22.el7.x86_64
-
rpm -qa "*name*"
:模糊查找已安装包# 列出所有已安装包 [root@centos Packages]# rpm -qa centos-release-7-4.1708.el7.centos.x86_64 irqbalance-1.0.7-10.el7.x86_64 [root@centos Packages]# rpm -qa | wc -l 338 # 模糊查找包 [root@centos Packages]# rpm -qa "vsft*" vsftpd-3.0.2-22.el7.x86_64 # 模糊查找包 [root@centos Packages]# rpm -qa |grep vsft vsftpd-3.0.2-22.el7.x86_64
-
rpm -ql name
:查看安装后文件列表# 查看已安装包生成的相关文件,不支持模糊包名 [root@centos Packages]# rpm -ql tree /usr/bin/tree /usr/share/doc/tree-1.6.0 /usr/share/doc/tree-1.6.0/LICENSE /usr/share/doc/tree-1.6.0/README /usr/share/man/man1/tree.1.gz
-
rpm -qpl name
:查看未安装的rpmfile安装后生成文件列表[root@centos Packages]# rpm -qpl tree-1.6.0-10.el7.x86_64.rpm /usr/bin/tree /usr/share/doc/tree-1.6.0 /usr/share/doc/tree-1.6.0/LICENSE /usr/share/doc/tree-1.6.0/README /usr/share/man/man1/tree.1.gz [root@centos Packages]# rpm -ql tree /usr/bin/tree /usr/share/doc/tree-1.6.0 /usr/share/doc/tree-1.6.0/LICENSE /usr/share/doc/tree-1.6.0/README /usr/share/man/man1/tree.1.gz [root@centos Packages]# rpm -e tree [root@centos Packages]# rpm -ql tree package tree is not installed
-
rpm -qf /path/file
:查看指定文件所属包# /etc/issue 文件时centos包安装后产生的 [root@centos Packages]# rpm -qf /etc/issue centos-release-7-4.1708.el7.centos.x86_64 [root@centos Packages]# rpm -qf /usr/share/doc/tree-1.6.0/README tree-1.6.0-10.el7.x86_64
-
rpm -qi name
:查看包信息[root@centos Packages]# rpm -qi tree Name : tree Version : 1.6.0 Release : 10.el7 Architecture: x86_64 Install Date: Sun 10 Jul 2022 11:43:27 PM CST Group : Applications/File Size : 89505 License : GPLv2+ Signature : RSA/SHA256, Fri 04 Jul 2014 01:36:46 PM CST, Key ID 24c6a8a7f4a80eb5 Source RPM : tree-1.6.0-10.el7.src.rpm Build Date : Tue 10 Jun 2014 03:28:53 AM CST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://mama.indstate.edu/users/ice/tree/ Summary : File system tree viewer Description : The tree utility recursively displays the contents of directories in a tree-like format. Tree is basically a UNIX port of the DOS tree utility.
-
rpm -qc name
:列出包的配置文件[root@centos Packages]# rpm -qc bash /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc
-
rpm -qd name
:列出包的帮助文件[root@centos Packages]# rpm -qd bash /usr/share/doc/bash-4.2.46/COPYING /usr/share/info/bash.info.gz /usr/share/man/man1/..1.gz /usr/share/man/man1/:.1.gz /usr/share/man/man1/[.1.gz /usr/share/man/man1/alias.1.gz
-
其他选项
--scripts:程序包自带的脚本 --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供 --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖 --changelog:查询rpm包的changelog --provides:列出指定程序包所提供的CAPABILITY -R:查询指定的程序包所依赖的CAPABILITY
3.2 安装
-
rpm -i name
:默认安装[root@centos Packages]# rpm -i vsftpd-3.0.2-22.el7.x86_64.rpm [root@centos Packages]#
-
rpm -iv name
:显示过程安装-v
:显示详细安装过程[root@centos Packages]# rpm -iv vsftpd-3.0.2-22.el7.x86_64.rpm Preparing packages... vsftpd-3.0.2-22.el7.x86_64 [root@centos Packages]#
-
rpm -ivh name
:显示过程和进度安装-h
:以#显示安装进度[root@centos Packages]# rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:vsftpd-3.0.2-22.el7 ################################# [100%] [root@centos Packages]#
-
范例:校验未安装时才进行安装
# 校验已安装,则不进行安装 [root@centos Packages]# rpm -q vsftpd > /dev/null || rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm # 卸载 [root@centos Packages]# rpm -e vsftpd # 校验未安装,则进行安装 [root@centos Packages]# rpm -q vsftpd > /dev/null || rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:vsftpd-3.0.2-22.el7 ################################# [100%] [root@centos Packages]#
-
--test
:测试安装,不进行实际安装[root@centos Packages]# rpm -qa vsftpd [root@centos Packages]# rpm -ivh --test vsftpd-3.0.2-22.el7.x86_64.rpm Preparing... ################################# [100%] [root@centos Packages]# rpm -qa vsftpd [root@centos Packages]# rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:vsftpd-3.0.2-22.el7 ################################# [100%] [root@centos Packages]# rpm -ivh --test vsftpd-3.0.2-22.el7.x86_64.rpm Preparing... ################################# [100%] package vsftpd-3.0.2-22.el7.x86_64 is already installed [root@centos Packages]# rpm -qa vsftpd vsftpd-3.0.2-22.el7.x86_64
-
--nodeps
:忽略依赖强制安装[root@centos Packages]# ls httpd* httpd-2.4.6-67.el7.centos.x86_64.rpm httpd-manual-2.4.6-67.el7.centos.noarch.rpm httpd-devel-2.4.6-67.el7.centos.x86_64.rpm httpd-tools-2.4.6-67.el7.centos.x86_64.rpm # 安装时有依赖报错 [root@centos Packages]# rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm error: Failed dependencies: /etc/mime.types is needed by httpd-2.4.6-67.el7.centos.x86_64 httpd-tools = 2.4.6-67.el7.centos is needed by httpd-2.4.6-67.el7.centos.x86_64 libapr-1.so.0()(64bit) is needed by httpd-2.4.6-67.el7.centos.x86_64 libaprutil-1.so.0()(64bit) is needed by httpd-2.4.6-67.el7.centos.x86_64 # 忽略依赖安装 [root@centos Packages]# rpm -ivh --nodeps httpd-2.4.6-67.el7.centos.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:httpd-2.4.6-67.el7.centos ################################# [100%] [root@centos Packages]# rpm -qa httpd httpd-2.4.6-67.el7.centos.x86_64 # 卸载 [root@centos Packages]# rpm -e httpd [root@centos Packages]# rpm -qa httpd
-
--replacepkgs
:覆盖原有包安装:--force
# 尝试安装发现已经安装 [root@centos Packages]# rpm -iv vsftpd-3.0.2-22.el7.x86_64.rpm package vsftpd-3.0.2-22.el7.x86_64 is already installed # 强制替换安装 [root@centos Packages]# rpm -ivh --replacepkgs vsftpd-3.0.2-22.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:vsftpd-3.0.2-22.el7 ################################# [100%] # 强制替换安装 [root@centos Packages]# rpm -ivh --force vsftpd-3.0.2-22.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:vsftpd-3.0.2-22.el7 ################################# [100%]
-
--replacefiles
:覆盖已有包文件安装[root@centos Packages]# rpm -ivh --replacefiles vsftpd-3.0.2-22.el7.x86_64.rpm
-
其他选项
--nosignature: 不检查来源合法性 --nodigest:不检查包完整性 --noscripts:不执行程序包脚本 %pre: 安装前脚本 --nopre %post: 安装后脚本 --nopost %preun: 卸载前脚本 --nopreun %postun: 卸载后脚本 --nopostun
3.3 升级
-
rpm -U name
:安装或升级(老版本不存在时直接安装) -
rpm -F name
:升级(老版本不存在时不进行安装)rpm -Uvh name rpm -Fvh name # --force,强制 rpm -Uvh --force name
3.4 卸载
-
rpm -e name
:卸载指定包# -e卸载时,不会删除配置文件 [root@centos Packages]# rpm -e vsftpd
-
rpm -e --nodeps name
:忽略依赖卸载[root@centos Packages]# rpm -e bash error: Failed dependencies: /bin/bash is needed by (installed) nss-softokn-freebl-3.28.3-6.el7.x86_64 /bin/bash is needed by (installed) iproute-3.10.0-87.el7.x86_64 /bin/bash is needed by (installed) grubby-8.28-23.el7.x86_64 [root@centos Packages]# rpm -e --nodeps bash [root@centos Packages]# rpm -q bash package bash is not installed [root@centos Packages]# rpm -ivh bash-4.2.46-28.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:bash-4.2.46-28.el7 ################################# [100%] [root@centos Packages]# rpm -q bash bash-4.2.46-28.el7.x86_64
3.5 包校验
-
在安装包时,系统也会检查包的来源是否是合法的
检查包的完整性和签名 rpm -K|checksig rpmfile
-
在检查包的来源和完整性前,必须导入所需要公钥
# 范例 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 rpm -qa “gpg-pubkey*”
-
元数据
软件在安装时,会记录包里的每个文件的元数据,可以用来检查包中的文件是否和当初安装时有所变化 元数据:大小,权限,所有者,时间等 rpm {-V|--verify} [select-options] [verify-options] S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs P capabilities differ
3.6 数据库
-
数据库路径
# pm包安装时生成的信息,都放在rpm数据库中 [root@centos Packages]# ls /var/lib/rpm Basenames __db.001 __db.003 Group Name Packages Requirename Sigmd5 Conflictname __db.002 Dirnames Installtid Obsoletename Providename Sha1header Triggername
-
重建数据库
rpm {--initdb|--rebuilddb} initdb: 初始化,如果事先不存在数据库,则新建之,否则,不执行任何操作 rebuilddb:重建已安装的包头的数据库索引目录
4. yum管理器
4.1 yum工作原理
-
yum是基于C/S 模式
服务端:rpm包、包的元数据库 客户端:访问yum服务器进行安装或查询等 yum服务器的仓库可以多种形式存在: file:// 本地路径 http:// https:// ftp://
4.2 yum客户端配置文件
-
/etc/yum.conf
:为所有仓库提供公共配置,客户端配置文件[root@localhost ~]# cat /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 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 # This is the default, if you make this bigger yum won't see if the metadata # is newer on the remote and so you'll "gain" the bandwidth of not having to # download the new metadata and "pay" for it by yum not having correct # information. # It is esp. important, to have correct metadata, for distributions like # Fedora which don't keep old packages around. If you don't like this checking # interupting your command line usage, it's much better to have something # manually check the metadata once an hour (yum-updatesd will do this). # metadata_expire=90m # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
-
/etc/yum.repos.d/*.repo
:为每个仓库的提供配置文件[repositoryID] name=Some name for this repository baseurl=url://path/to/repository/ enabled={1|0} gpgcheck={1|0} gpgkey=URL enablegroups={1|0} failovermethod={roundrobin|priority} roundrobin:意为随机挑选,默认值 priority:按顺序访问 cost= 默认为1000 例如: [base] name=CentOS-$releasever - Base - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
4.3 更改为阿里yum源
-
范例:更改为阿里Base源
cd /etc/yum.repos.d/ mkdir backup mv *.repo backup/ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 删除aliyuncs和cloud.aliyuncs,只保留mirrors.aliyun.com sed -i '/.aliyuncs./d' CentOS-Base.repo # 官方给出的删除语句 sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo # 重新生成缓存 yum clean all yum makecache [root@localhost yum.repos.d]# yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile repo id repo name status base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072 extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 512 updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 4,050 repolist: 14,634
-
范例:添加阿里epel源
cd /etc/yum.repos.d/ mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/backup curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum makecache [root@localhost yum.repos.d]# yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile repo id repo name status base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,757 extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 512 updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 4,050 repolist: 28,391
-
范例:更改为本机IOS光盘yum源
# 注意 repodata 的存放路径为/path/path/path/repodata [MyBase] name=MyBase failovermethod=priority baseurl=ftp:///path/path/path gpgcheck=0 #gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
4.4 yum安装卸载查询
4.4.1 显示仓库
-
yum repolist
:显示可用仓库# yum repolist 显示可用仓库列表 [root@localhost yum.repos.d]# yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile repo id repo name status base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,757 extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 512 updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 4,050 repolist: 28,391
-
yum repolist all
:显示所有仓库# yum repolist all 显示所有仓库列表 [root@localhost yum.repos.d]# yum repolist all Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile repo id repo name status base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com enabled: 10,072 centosplus/7/x86_64 CentOS-7 - Plus - mirrors.aliyun.com disabled contrib/7/x86_64 CentOS-7 - Contrib - mirrors.aliyun.com disabled epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 enabled: 13,757 epel-debuginfo/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 - Debug disabled epel-source Extra Packages for Enterprise Linux 7 - x86_64 - Source disabled extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com enabled: 512 updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com enabled: 4,050 repolist: 28,391 # yum grouplist 显示所有包组 [root@localhost ~]# yum grouplist Loaded plugins: fastestmirror Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast There is no installed groups file. Maybe run: yum groups mark convert (see man yum) Loading mirror speeds from cached hostfile Available Environment Groups: Minimal Install Compute Node Infrastructure Server File and Print Server Cinnamon Desktop MATE Desktop Basic Web Server Virtualization Host Server with GUI GNOME Desktop KDE Plasma Workspaces Development and Creative Workstation Available Groups: Cinnamon Compatibility Libraries Console Internet Tools Development Tools Educational Software Electronic Lab Fedora Packager General Purpose Desktop Graphical Administration Tools Haskell LXQt Desktop Legacy UNIX Compatibility MATE Milkymist Scientific Support Security Tools Smart Card Support System Administration Tools System Management TurboGears application framework Xfce Done
4.4.2 查找
-
yum list
:查找所有安装包# yum list: 显示所有安装包 # yum list all: 显示所有安装包 [root@localhost yum.repos.d]# yum list |wc -l 24765 [root@localhost yum.repos.d]# yum list all |wc -l 24765 # 说明:@anaconda说明操作系统安装,@repository表示从哪个仓库安装,没有@表示未安装 [root@localhost yum.repos.d]# yum list Installed Packages GeoIP.x86_64 1.5.0-11.el7 @anaconda gpm-libs.x86_64 1.20.7-6.el7 @base grep.x86_64 2.20-3.el7 @anaconda grub2.x86_64 firefox-noscript.noarch 11.0.3-3.el7 epel firewalld.noarch 0.6.3-13.el7_9 updates firstboot.x86_64 19.12-1.el7 base fish.x86_64 2.3.1-2.el7 epel
-
yum list "*name*"
:查找指定安装包# yum list "*name*" 查找指定安装包 # yum list |grep name 查找指定安装包,效率稍低 [root@localhost yum.repos.d]# yum list "vsft*" Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Available Packages vsftpd.x86_64 3.0.2-29.el7_9 updates vsftpd-sysvinit.x86_64 3.0.2-29.el7_9 updates [root@localhost yum.repos.d]# yum list |grep vsft vsftpd.x86_64 3.0.2-29.el7_9 updates vsftpd-sysvinit.x86_64 3.0.2-29.el7_9 updates
-
yum info name
:查询安装包详细信息[root@localhost yum.repos.d]# yum info httpd Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Available Packages Name : httpd Arch : x86_64 Version : 2.4.6 Release : 97.el7.centos.5 Size : 2.7 M Repo : updates/7/x86_64 Summary : Apache HTTP Server URL : http://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.
-
yum provides [feature]
:查找特性所属安装包# [feature] 可以是文件或其他安装包中的特性 [root@localhost yum.repos.d]# yum provides /etc/vsftpd/vsftpd.conf vsftpd-3.0.2-28.el7.x86_64 : Very Secure Ftp Daemon Repo : base Matched from: Filename : /etc/vsftpd/vsftpd.conf vsftpd-3.0.2-29.el7_9.x86_64 : Very Secure Ftp Daemon Repo : updates Matched from: Filename : /etc/vsftpd/vsftpd.conf
-
yum search [key]
:查找包含关键字的安装包或安装包描述# [key],包名、即使描述信息中包含关键字也会搜索出来 [root@localhost yum.repos.d]# yum search vsftp Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile ============================================= N/S matched: vsftp ============================================= vsftpd-sysvinit.x86_64 : SysV initscript for vsftpd daemon vsftpd.x86_64 : Very Secure Ftp Daemon Name and summary matches only, use "search all" for everything.
4.4.3 升级
-
yum升级
# yum check-update 检查可升级软件 [root@localhost 7]# yum check-update NetworkManager-wifi.x86_64 1:1.18.8-2.el7_9 updates acl.x86_64 2.2.51-15.el7 base alsa-lib.x86_64 1.1.8-1.el7 base # 升级指定软件 [root@localhost 7]# yum update dnsmasq # 升级全部 [root@localhost 7]# yum update
4.4.4 卸载
-
yum卸载
yum remove name
4.4.5 安装
-
yum install httpd
:默认安装# 默认安装,需要交互式确认 yum install httpd
-
-y
:无需确认安装yum install -y httpd
-
其他选项
-y: 自动回答为“yes” -q:静默模式 --nogpgcheck:禁止进行gpg check --enablerepo=repoidglob:临时启用此处指定的repo,支持通配符,如:”*“ --disablerepo=repoidglob:临时禁用此处指定的repo --noplugins:禁用所有插件
4.5 yum缓存
-
缓存的路径
# 缓存的路径配置在 /etc/yum.conf 文件中 cachedir=/var/cache/yum/$basearch/$releasever # 对应本机的实际路径为 /var/cache/yum/x86_64/7 [root@localhost 7]# ls base centosplus contrib epel epel-debuginfo epel-source extras timedhosts timedhosts.txt updates
-
缓存相关指令
# 清理缓存 yum clean all # 加载缓存 yum makecache
4.6 实现私有yum仓库
-
配置信息说明
################# 说明 ##################### # 使用光盘中的rpm来模拟镜像仓库 # 将光盘挂载到指定路径 # 指定路径格式参考阿里yum仓库路径 # 本地进配置BASE源 # 网络通讯方式使用http ################# 说明 ##################### # yum仓库主机IP 172.32.115.12 #yum仓库主机路径 #http://mirrors.aliyun.com/centos/7.4/os/x86_64/Packages/ #目前7.4路径下已经空了,所以使用7路径 http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/ #yum仓库所使用光盘, 4.2G CentOS-7-x86_64-DVD-1708.iso # 使用私有仓库的主机IP 172.32.115.11
-
实现私有yum仓库的光盘实现
# 安装http yum install -y httpd # 设置http立即启动且开机自启 systemctl enable --now httpd # 作用等同于 systemctl start httpd && systemctl enable httpd # 禁用防火墙,禁止开机自启 systemctl disable --now firewalld # 禁用SELinux [root@localhost yum.repos.d]# getenforce Enforcing [root@localhost yum.repos.d]# setenforce 0 [root@localhost yum.repos.d]# getenforce Permissive # 创建目录,为什么非得在/var/www/html/路径下,且浏览器访问时不用输入此路径,在哪里设置的默认 cd /var/www/html/ mkdir -pv centos/7/os/x86_64 # 确认vbox是否添加虚拟光盘,通过查看大小确认 # 添加前 [root@localhost html]# lsblk sr0 11:0 1 1024M 0 rom # 添加后 [root@localhost html]# lsblk sr0 11:0 1 4.2G 0 rom # 挂载光盘到指定路径,有提示信息但是挂载是成功的 [root@localhost html]# mount /dev/sr0 /var/www/html/centos/7/os/x86_64/ mount: /dev/sr0 is write-protected, mounting read-only [root@localhost html]# lsblk sr0 11:0 1 4.2G 0 rom /var/www/html/centos/7/os/x86_64 # 浏览器访问即可显示仓库镜像信息 http://172.32.115.12/centos/7/os/x86_64/ # 配置172.32.115.11主机的镜像源指向私有仓库 [12BASE] name=12BASE baseurl=http://172.32.115.12/centos/7/os/x86_64/ gpgcheck=0
-
实现私有yum源网络下载rpm包
# 实现私有yum源中的epel源,epel源在光盘中没有,可以从网络上下载,放到主机指定路径,下载后的含义repodata元数据文件夹 #CentOS 8 dnf 工具集成 dnf reposync --repoid=REPOID --download-metadata -p /path dnf reposync --help #查看帮助 #CentOS 7 以前版本,reposync工具来自于yum-utils包,需要先安装再执行以下命令 reposync --repoid=REPOID --download-metadata -p /path # 自己下载rpm包放到myrpm文件夹,手动生成repodata文件夹做成私有yum仓库 mv *.rpm /var/www/html/centos/myrpm createrepo /var/www/html/centos/myrpm ls /var/www/html/centos/myrpm/repodata
5. 源码编译安装
5.1 编译安装的优势
说明:编译安装使用的是make项目管理器,来编译C、C++源码项目
- 1、安装路径可配置
- 2、源码提供的功能特性可筛选
5.2 C源码编译原理与环境准备
-
编译原理
运行
./configure
命令参照Makefile.in
模板,生成Makefile
文件,模板只是大致参考,无需太多关注# 查看帮助 ./configure --help # 相关配置文件来源 autoconf: 生成configure脚本 automake:生成Makefile.in
-
环境准备
开发工具: gcc、make 开发环境:开发库(glibc:标准库),头文件,可安装开发包组 Development Tools 其他依赖:特定软件相关依赖包 建议安装以下包 yum install gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget net-tools iotop bc bzip2 zip unzip nfs-utils man-pages
5.3 C源码编译过程
-
./configure [option]
:指定路径或可选特性# 指定安装路径 --prefix=/PATH:指定默认安装位置,默认为/usr/local/ --sysconfdir=/PATH:配置文件安装位置 System types:支持交叉编译 # 指定相关特性 Optional Features: 可选特性 --disable-FEATURE --enable-FEATURE[=ARG] Optional Packages: 可选包 --with-PACKAGE[=ARG] 依赖包 --without-PACKAGE 禁用依赖关系
-
make
:根据Makefile文件,构建应用程序 -
make install
:复制文件到相应路径 -
安装后的其他可选配置
# 1. 添加环境变量 vim /etc/profile.d/NAME.sh export PATH=/PATH/TO/BIN:$PATH # 2. 相关用户及文件 有些开源软件编译完成后,还需要创建相关的用户及文件 # 3. 导入帮助手册 编辑/etc/man.config|man_db.conf文件,添加一个MANPATH
5.4 编译实例-tree
-
编译环境准备
# 验证是否安装gcc与make gcc --version make --version # 安装gcc与make [root@localhost tree-2.0.4]# yum install gcc [root@localhost tree-2.0.4]# yum install make # 查看版本 [root@localhost tree-2.0.4]# gcc --version gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44) [root@localhost tree-2.0.4]# make --version GNU Make 3.82
-
编译安装tree
# 上传源码包,并解压 [root@localhost ~]# cd /usr/local/src [root@localhost src]# tar -zxvf tree-2.0.4.tgz [root@localhost src]# cd tree-2.0.4 [root@localhost tree-2.0.4]# ls CHANGES doc filter.c html.c INSTALL LICENSE Makefile strverscmp.c tree.c unix.c color.c file.c hash.c info.c json.c list.c README TODO tree.h xml.c # 查看 README 与 INSTALL 参考安装方式 cat README cat INSTALL # 修改makefile文件(执行安装路径) [root@localhost tree-2.0.4]# vim Makefile PREFIX=/apps/tree # 重命名版本号 ## 查找版本号文件位置 [root@localhost tree-2.0.4]# grep -R 'v2\.0\.4' * tree.c:char *version ="$Version: $ tree v2.0.4 (c) 1996 - 2022 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro $"; tree.c:char *hversion="\t\t tree v2.0.4 %s 1996 - 2022 by Steve Baker and Thomas Moore <br>\n" ## 修改版本号 [root@localhost tree-2.0.4]# sed -n 's#v2\.0\.4#v2.00.40#p' tree.c char *version ="$Version: $ tree v2.00.40 (c) 1996 - 2022 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro $"; char *hversion="\t\t tree v2.00.40 %s 1996 - 2022 by Steve Baker and Thomas Moore <br>\n" [root@localhost tree-2.0.4]# sed -i 's#v2\.0\.4#v2.00.40#' tree.c ## 验证修改后的结果 [root@localhost tree-2.0.4]# grep -R 'v2\.00\.40' * tree.c:char *version ="$Version: $ tree v2.00.40 (c) 1996 - 2022 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro $"; tree.c:char *hversion="\t\t tree v2.00.40 %s 1996 - 2022 by Steve Baker and Thomas Moore <br>\n" # 编译,编译成功后会生成名为tree文件 [root@localhost tree-2.0.4]# make # 如果默认是c98编译,需要指定使用c99执行make命令 [root@localhost tree-2.0.4]# make CFLAGS="-std=c99" gcc -std=c99 -c -o tree.o tree.c gcc -std=c99 -c -o list.o list.c gcc -std=c99 -c -o hash.o hash.c gcc -std=c99 -c -o color.o color.c gcc -std=c99 -c -o file.o file.c gcc -std=c99 -c -o filter.o filter.c gcc -std=c99 -c -o info.o info.c gcc -std=c99 -c -o unix.o unix.c gcc -std=c99 -c -o xml.o xml.c gcc -std=c99 -c -o json.o json.c gcc -std=c99 -c -o html.o html.c gcc -std=c99 -c -o strverscmp.o strverscmp.c gcc -o tree tree.o list.o hash.o color.o file.o filter.o info.o unix.o xml.o json.o html.o strverscmp.o # 安装 [root@localhost tree-2.0.4]# make install install -d /apps/tree/bin install -d /apps/tree/man/man1 install tree /apps/tree/bin/tree; \ install -m 644 doc/tree.1 /apps/tree/man/man1/tree.1 # 修改环境变量 [root@localhost tree-2.0.4]# cd /root [root@localhost ~]# echo 'PATH=/apps/tree/bin:$PATH' > /etc/profile.d/tree.sh [root@localhost ~]# . /etc/profile.d/tree.sh [root@localhost ~]# echo $PATH /apps/tree/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin # 验证环境变量是否成功 tree --version
-
问题记录
# 使用make编译的时候,报错信息如下 tree.c:670:3: error: ‘for’ loop initial declarations are only allowed in C99 mode for(int i=0; i < ipattern; i++) # 报错分析 因为gcc是基于c89标准,不能直接在for循环中初始化增量。而C99标准可以在for循环内定义变量 # 解决方案一:执行make命令时,参数直接指定为c99 make CFLAGS="-std=c99" # 解决方案二:修改makefile文件 # make install安装之后,没有uninstall 要怎么卸载
5.5 编译实例-http
-
编译安装http
# 安装依赖包 yum install gcc make apr-devel apr-util-devel openssl-devel yum install pcre-devel # 上传源码包,并解压 [root@localhost ~]# cd /usr/local/src [root@localhost src]# tar -zxvf httpd-2.4.54.tar.gz [root@localhost src]# cd httpd-2.4.54 [root@localhost httpd-2.4.54]# ls ABOUT_APACHE BuildAll.dsp configure httpd.spec libhttpd.mak os srclib acinclude.m4 BuildBin.dsp configure.in include LICENSE README support Apache-apr2.dsw buildconf docs INSTALL Makefile.in README.CHANGES test Apache.dsw CHANGES emacs-style InstallBin.dsp Makefile.win README.cmake VERSIONING apache_probes.d changes-entries httpd.dep LAYOUT modules README.platforms ap.d CMakeLists.txt httpd.dsp libhttpd.dep NOTICE ROADMAP build config.layout httpd.mak libhttpd.dsp NWGNUmakefile server # 查看 README 与 INSTALL 参考安装方式 cat README cat INSTALL # 查看configure可选帮助 [root@localhost httpd-2.4.54]# sh configure --help [root@localhost httpd-2.4.54]# ./configure --help --prefix=PREFIX --sysconfdir=DIR --enable-so --enable-ssl --enable-http2 # 生成makefile文件:指定安装路径与配置文件路径,开启so和ssl [root@local httpd-2.4.54]# ./configure --prefix=/apps/httpd24 --sysconfdir=/apps/httpd24/myconfigs --enable-ssl --enable-so [root@local httpd-2.4.54]# ls Makefile* Makefile Makefile.in Makefile.win # 如果默认是c98编译,需要指定使用c99执行make命令 [root@localhost tree-2.0.4]# make CFLAGS="-std=c99" # 安装 [root@localhost tree-2.0.4]# make install # 修改httpd.conf配置文件 vim /apps/httpd24/myconfigs/httpd.conf # 放开该注释 ServerName www.example.com:80 # 启动(如果系统自带httpd服务,需要先停止,否则80端口已被占用) [root@rpm-manager bin]# /apps/httpd24/bin/apachectl start [root@rpm-manager bin]# ps -ef|grep httpd root 15680 1 0 21:34 ? 00:00:00 /apps/httpd24/bin/httpd -k start daemon 15681 15680 0 21:34 ? 00:00:00 /apps/httpd24/bin/httpd -k start daemon 15682 15680 0 21:34 ? 00:00:00 /apps/httpd24/bin/httpd -k start daemon 15683 15680 0 21:34 ? 00:00:00 /apps/httpd24/bin/httpd -k start root 15766 15584 0 21:34 pts/0 00:00:00 grep --color=auto httpd # 停止 [root@rpm-manager bin]# /apps/httpd24/bin/apachectl stop [root@rpm-manager bin]# ps -ef|grep httpd root 15771 15584 0 21:34 pts/0 00:00:00 grep --color=auto httpd # 修改启动用户 [root@rpm-manager bin]# vim /apps/httpd24/myconfigs/httpd.conf # 将以下两行 User daemon Group daemon # 修改为 User apache Group apache # 重新启动即可
-
报错问题记录
# ./configure生成makefile文件过程中报错 ###### 报错一:缺少APR依赖 ###### configure: error: APR not found. Please read the documentation. # 查找包 [root@localhost httpd-2.4.54]# yum list available "*apr*" apr-devel.x86_64 1.4.8-7.el7 base # 安装 [root@localhost httpd-2.4.54]# yum install apr-devel ####### 报错二:缺少APR-util依赖 ####### configure: error: APR-util not found. Please read the documentation. [root@localhost httpd-2.4.54]# yum list available "*apr-util*" apr-util-devel.x86_64 1.5.2-6.el7 base [root@localhost httpd-2.4.54]# yum install apr-util-devel ####### 报错三:缺少PCRE依赖 ####### configure: error: pcre(2)-config for libpcre not found. PCRE is required and available from http://pcre.org/ [root@localhost httpd-2.4.54]# yum list available "*pcre*" pcre-devel.x86_64 8.32-17.el7 base [root@localhost httpd-2.4.54]# yum install pcre-devel ###### 报错四:缺少OpenSSL依赖 ###### configure: WARNING: OpenSSL version is too old [root@localhost httpd-2.4.54]# yum list available "*openssl*" openssl-devel.i686 1:1.0.2k-25.el7_9 updates [root@localhost httpd-2.4.54]# yum install openssl-devel # 启动报错 # AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message # 修改httpd.conf配置文件 vim /apps/httpd24/myconfigs/httpd.conf # 放开该注释 ServerName www.example.com:80
6. Ubuntu软件管理
6.1 管理器介绍
Debian 软件包通常为预编译的二进制格式的扩展名“.deb”,类似于.rpm
- dpkg:类似于rpm, package manager for Debian,dpkg是基于Debian的系统的包管理器。
- apt:类似于yum,Advanced Packaging Tool,可以自动解决依赖
6.2 常用命令
-
dpkg 常见用法
#安装包 dpkg -i package.deb #删除包,不建议,不自动卸载依赖于它的包 dpkg -r package #删除包(包括配置文件) dpkg -P package #列出当前已安装的包,类似rpm -qa dpkg -l #显示该包的简要说明,类似rpm –qi dpkg -l package #列出该包中所包含的文件,类似rpm –ql dpkg -L package #搜索包含pattern的包,类似rpm –qf, 搜索文件来自哪个包 dpkg -S <pattern> # 查找/bin/bash来自哪个包 dpkg -S /bin/bash #列出该包的状态,包括详细信息,类似rpm –qi dpkg -s package #配置包,-a 使用,配置所有没有配置的软件包 dpkg --configure package #列出 deb 包的内容,类似rpm –qpl dpkg -c package.deb #解开 deb 包的内容 dpkg --unpack package.deb
-
apt常见用法
# 查找包 apt list apache* # 查找包 apt search apache # 安装包: apt install apache2 # 卸载包: apt remove apache2 # 卸载包并删除配置文件 apt remove --purge apache2 # 自动删除不需要的包 apt autoremove # 更新包索引 # 升级所有可升级的软件包 apt update apt upgrade # APT包索引配置文件 /etc/apt/sources.list /etc/apt/sources.list.d