文章目录
软件运行和编译
ABI:Application Binary Interface
API:Application Programming Interface
程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接
静态编译:.a
动态编译:.so
动态链接和静态链接
动态链接
只把依赖加做一个动态链接
libxxx.so
连接指向
占用较少空间,升级方便
静态链接
把程序对应的依赖库复制一份到包
libxxx.a
嵌入程序包
升级难,需重新编译
占用较多空间,迁移容易
包和包管理器
1.包的组成:
二进制文件、库文件、配置文件、帮助文件
2.程序包管理器:
debian:deb文件,dpkg包管理器
redhat:rpm文件,rpm包管理器
库文件
1.查看二进制程序所依赖的库文件
/ldd /PATH/TO/BINNARY_FILE
2.管理及查看本机装载的库文件
lsconfig 加载配置文件中指定的库文件
/sbin/ldconfig -p显示本机已经缓存的所有可用库文件名及文件路径
3.映射关系
/etc/ld.so.conf , /etc/ld.so.conf.d/*conf 配置文件
/etc/ls.so.cache 缓存文件
程序包的来源
管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum,dnf
CentOS镜像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
Fedora-EPEL:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
注意:第三方包建议哟啊检查其合法性,来源合法性,程序包的完整性
rpm [OPTION] PACKAGE_FILE 包管理
[OPTION] | 用途 |
---|---|
-i | 安装 |
-v | 显示过程 |
-vv | |
-h | 以####显示进度 |
示例:rpm -ivh PACKAGE_FILE
rpm 包安装
[install-OPTION] | 用途 |
---|---|
–test | 测试安装 |
–nodeps | 忽略依赖关系 |
–replacepkgs | 不检查来源 |
–nodigest | 不检查完整性 |
–noscripts | 不执行程序包脚本 |
%pre | 安装前脚本–nopre |
%post | 安装后脚本–nopost |
%preun | 卸载前脚本–nopreun |
%postun | 卸载后脚本–nopostun |
rpm 包升级
1.有旧版本,升级
rpm -U [install -option] PACKAGE_FILE
2.没有旧版本,不升级
rpm -F [install -option] PACKAGE_FILE
示例:rpm -Uvh PACKAGE_FILE
[install -option]
–oldpackage 降级
–force 强制安装
包查询
命令:rpm -q [select-option] [query-option]
[select-options] | 用途 |
---|---|
-a | 所有包 |
-f | 指定的文件有哪个程序包生成 |
-p RPMFILE | 对安装的程序包查询 |
-whatprovides CAPABILITY | 查询指定CAPABILITY包由哪个包提供 |
-whatrequires CAPABILITY | 查询指定CAPABILITY包有哪个包依赖 |
[query-options] | 用途 |
---|---|
–changelog | 查询rpm包的changelog |
-c | 查询程序的配置文件 |
-d | 查询程序的文档 |
-i | 查询程序的详情 |
-I | 查看指定的包安装后生成的所有文件 |
–scripts | 程序包自带的脚本 |
–provides | 列出指定程序包所提供的CAPABILITY |
-R | 查询指定的程序包所依赖的CAPABILITY |
查看指定的包安装后生成的所有的文件
rpm -ql httpd
rpm 包卸载
rpm -e [OPTIONS] PACKAGE_FILE
rpm 包校验
rpm -v [select-option] [verify-options]
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
rpm 数据库
1.数据库重建
/var/lib/rpm
2.rpm {–initdb| --rebuiddb}
initdb 初始化
rebuilddb 重建
rpm 示例
rpm -ql httpd
yum 仓库
yum 仓库
1.所有仓库公共配置 /ect/yum.conf
2.仓库指向提供配置 /etc/yum.repos.d/*.repo
3.日志文件 /var/log/yum.log
.repo
[repositoryID]
name= STRING
baseurl = http://
https://
ftp://
file://
enabled={1|0}
gpgcheck={1|0}
gpgkey=url:// `当gpgcheck=1`
enablegroups={1|0}
failovermethod={roudrobin|priority}
roundrobin : 随机(默认)
priority : 按顺序
cost=1000(默认)
yum [OPTION] [COMMAND] [PACKAGE]
yum的选项
[OPTION] | 用途 |
---|---|
–nogpgcheck | 禁用gpg check |
-y | 自动回答 |
-q | 静默安装 |
–disablerepo = REPO | 临时禁用指定repo |
–disablerepo = REPO | 临时启用指定repo |
–noplugins | 禁用插件 |
查看yum仓库列表
yum repolist {all|enabled|disabled}
yum的程序包
1.显示安装好的程序包
yum list [all | golb_exp1]
yum list {available | installen | updates} [globj_exp1]
2.安装/升级程序包
yum install PACKAGE1 [PACKAGE2]
yum reinstall PACKAGE1 [PACKAGE2]重装
yum update rpmfile1升级
3.查看yum安装历史
yum history
yum history info NUM
yum history undo NUM
yum history redo NUM
4.查看程序包
yum info PACKAGE
5.查看指定的文件/特性是谁提供的
yum {provides | whatprovides} feature
6.清理本地文件/var/cache/yum/ b a s e a r c h / basearch/ basearch/releasever
yum clean [packages | metadata | expire-cache | rpmdb | plugins | all]
7.构建缓存
yum makecache
8.搜索包
yum search string1
9. 查看指定包所依赖的CAPABILITIES
yum deplist package1
10. 包组命令
yum groupinstall group1
yum groupdate group1
yum grouplist [HIDDEN] [groupwildcard]
yum groupremove group1
yum groupinfo group1
11. 创建yum仓库
createrepo [OPTION] DIR
yum源
阿里云repo文件
[阿里云](https://khan.github.io/KaTeX/http://mirrors.aliyun.com/repo/)
CentOS系统的yum源
[阿里云](https://khan.github.io/KaTeX/)
[清华大学](https://khan.github.io/KaTeX/)清华大学
EPEL的yum源
[阿里云](https://khan.github.io/KaTeX/)
阿里巴巴开源软件
[阿里巴巴](https://opsx.alibaba.com/)