马哥博客作业第四周 02

模块(库)文件
查看二进制程序所依赖的库文件
ldd /PATH/TO/BINARY_FILE

管理及查看本机装载的库文件
#加载配置文件中指定的库文件
ldconfig
#显示本机已经缓存的所有可用库文件名及文件路径映射关系
/sbin/ldconfig –p

配置文件:
/etc/ld.so.conf,
/etc/ld.so.conf.d/*.conf

缓存文件:
/etc/ld.so.cache
 

软件包中的文件分类
二进制文件
库文件
配置文件
帮助文件

范例:利用 cpio工具查看包文件列表
rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件

主流的程序包管理器
  redhat:rpm文件, rpm 包管理器,rpm:Redhat Package Manager,RPM Package Manager
  debian:deb文件, dpkg 包管理器

包管理器rpm

CentOS系统上使用rpm命令管理程序包
功能:
安装、卸载、升级、查询、校验、数据库维护
 
安装
格式:
rpm {-i|--install} [install-options] PACKAGE_FILE…

选项:
-v: verbose
-vv:
-h: 以#显示程序包管理执行进度

常用组合:
rpm -ivh PACKAGE_FILE ...
 

rpm包安装[install-options]
--test: 测试安装,但不真正执行安装,即dry run模式
--nodeps:忽略依赖关系
--replacepkgs | replacefiles
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本
            %pre: 安装前脚本 --nopre
            %post: 安装后脚本 --nopost
            %preun: 卸载前脚本 --nopreun
            %postun: 卸载后脚本 --nopostun

包查询
rpm {-q|--query} [select-options] [query-options]

[select-options]
-a:所有包
-f:查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作
[query-options]
--changelog:查询rpm包的changelog
-c:查询程序的配置文件
-d:查询程序的文档
-i:information
-l:查看指定的程序包安装后生成的所有文件
--scripts:程序包自带的脚本
 

#和CAPABILITY相关
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
--provides:列出指定程序包所提供的CAPABILITY
-R:查询指定的程序包所依赖的CAPABILITY
 

常用查询用法:
-qa
-q PACKAGE
-qi PACKAGE
-qc PACKAGE
-ql PACKAGE
-qd PACKAGE
-q --scripts PACKAGE
-qf FILE
-qpi PACKAGE_FILE
-qpl PACKAGE_FILE, ...

包卸载
格式:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test]
PACKAGE_NAME ...

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

包校验
在安装包时,系统也会检查包的来源是否是合法的
检查包的完整性和签名

rpm -K|--checksig rpmfile

在检查包的来源和完整性前,必须导入所需要公钥
范例:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
rpm -qa “gpg-pubkey*”

软件在安装时,会将包里的每个文件的元数据,如:大小,权限,所有者,时间等记录至rpm相关的数
据库中,可以用来检查包中的文件是否和当初安装时有所变化

数据库
rpm包安装时生成的信息,都放在rpm数据库中

/var/lib/rpm

可以重建数据库
rpm {--initdb|--rebuilddb}
initdb: 初始化,如果事先不存在数据库,则新建之,否则,不执行任何操作
rebuilddb:重建已安装的包头的数据库索引目录
 

yum和dnf

yum/dnf 是基于C/S 模式
yum 服务器存放rpm包和相关包的元数据库
yum 客户端访问yum服务器进行安装或查询等
yum 实现过程
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的
元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动
下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并
安装。
yum服务器的仓库可以多种形式存在:
fifile:// 本地路径
http://
https://
ftp://

注意:yum仓库指向的路径一定必须是repodata目录所在目录

yum客户端配置
yum客户端配置文件
/etc/yum.conf #为所有仓库提供公共配置
/etc/yum.repos.d/*.repo: #为每个仓库的提供配置文件

帮助参考: man 5 yum.conf

相关变量
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号,如:8,7,6
$arch: CPU架构,如:aarch64, i586, i686,x86_64等
$basearch:系统基础平台;i386, x86_64
$contentdir:表示目录,比如:centos-8,centos-7
$YUM0-$YUM9:自定义变量

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

baseurl指向的路径
阿里云提供了写好的CentOS和ubuntu的仓库文件下载链接
http://mirrors.aliyun.com/repo/

CentOS系统的yum源
#阿里云
https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
#华为云
https://mirrors.huaweicloud.com/
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/x86_64/
 

EPEL的yum源
#阿里云
https://mirrors.aliyun.com/epel/$releasever/x86_64

阿里巴巴开源软件
https://opsx.alibaba.com/
 

注意:与之前的版本不同,CentOS 8 系统有两个yum 源:BaseOS和AppStream ,需要分别设置两个
仓库

yum-confifig-manager命令
可以生成yum仓库的配置文件及启用或禁用仓库,来自于yum-utils包
格式:
#增加仓库
yum-config-manager --add-repo URL或file
#禁用仓库
yum-config-manager --disable “仓库名"
#启用仓库
yum-config-manager --enable “仓库名”
 

yum命令
yum命令的用法:
yum [options] [command] [package ...]
 
yum的命令行选项:
-y #自动回答为“yes”
-q #静默模式
--nogpgcheck #禁止进行gpg check
--enablerepo=repoidglob    #临时启用此处指定的repo,支持通配符,如:”*“
--disablerepo=repoidglob #临时禁用此处指定的repo,和上面语句同时使用,放在后面的生效</

显示仓库列表
yum repolist [all|enabled|disabled]
 

安装程序包
yum install package1 [package2] [...]
yum reinstall package1 [package2] [...] #重新安装

卸载程序包
yum remove | erase package1 [package2] [...]

升级和降级
yum update [package1] [package2] [...]
yum downgrade package1 [package2] [...] (降级)

检查可用升级:
yum check-update
 

查询
查看程序包information:
yum info [...]

查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] [...]

以指定的关键字搜索程序包名及summary信息
yum search string1 [string2] [...]

查看指定包所依赖的capabilities:
yum deplist package1 [package2] [...]
 

仓库缓存
清除目录/var/cache/yum/缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

构建缓存:
yum makecache
 

查看yum事务历史
yum 执行安装卸载命令会记录到相关日志中
日志 文件:
/var/log/yum.log
/var/log/dnf.log

日志命令
yum history [info|list|packages-list|packages-info|summary|addon
info|redo|undo|rollback|new|sync|stats]
 

安装及升级本地程序包
yum localinstall|install rpmfile1 [rpmfile2] [...]
yum localupdate|update rpmfile1 [rpmfile2] [...]

包组管理的相关命令
yum grouplist [hidden] [groupwildcard] [...]
yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]
 

实现私用 yum仓库
下载所有yum仓库的相关包和meta 数据
#CentOS 8 dnf 工具集成
dnf reposync --help #查看帮助
#默认只下载rpm包,不下载meta数据,需要指定--download-metadata 才能下载meta
dnf reposync  --repoid=REPOID --download-metadata -p /path
#CentOS 7 以前版本,reposync工具来自于yum-utils包
reposync --repoid=REPOID --download-metadata -p /path

创建私有yum仓库:
createrepo [options] <directory>
 

DNF 介绍
DNF,即DaNdiFied,是新一代的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
/var/log/dnf.log
v>
DNF 使用帮助:man dnf
dnf 用法与yum一致
 

yum Troubleshooting

yum 和 dnf 失败最主要原因:
yum的配置文件格式或路径错误
解决方法:检查/etc/yum.repos.d/*.repo文件格式
yum cache
解决方法:yum clean all
网络不通:
解决方法:网卡配置
 

编译安装
#1 安装相关的依赖包
yum install gcc make
#2 下载源码并解压
tar xvf tree-1.8.0.tgz
#3 进入解压缩的目录,README和INSTALL
cd tree-1.8.0/
cat README
cat INSTALL
#4 修改源码的版本号
sed -i 's#v1\.8\.0#v.18.0#' tree.c
#5 编译准备
vim Makefile
prefix = /apps/tree
#6 编译make
#7 安装
make install
#8 修改PATH变量
echo 'PATH=/apps/tree/bin:$PATH' > /etc/profile.d/tree.sh
. /etc/profile.d/tree.sh
#9 验证结果
tree --version
 

dpkg 包管理器
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>
#列出该包的状态,包括详细信息,类似rpm –qi
dpkg -s package
#配置包,-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
 
 

apt
查看帮助:apt help
apt与apt-get命令对比
 

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.53322f70fghx5
6
 
apt命令操作(如安装和删除软件包)日志文件
/var/log/dpkg.log
 

ubuntu建议安装的常用包
apt purge ufw lxd lxd-client lxcfs liblxc-common
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

猜你喜欢

转载自www.cnblogs.com/daiyuchun/p/12680912.html