本章内容
▼软件运行和编译
1. ABI : Application Binary Interface
2. API : Application Programming Interface
▼静态和动态链接
- 静态链接
把程序对应的依赖库复制一份到包
- 动态链接
▼包和包管理器
- 包的组成:二进制文件、库文件、配置文件、帮助文件
- 程序包管理器:
debian:deb文件,dpkg包管理器
redhat:rpm文件,rpm包管理器
库文件
- 查看二进制程序所依赖的库文件
/ldd /PATH/TO/BINARY_FILE
- 管理及查看本机装载的库文件
lsconfig
加载配置文件中指定的库文件
/sbin/ldconfig -p
显示本机已经缓存的所有可用库文件名及文件路径 - 映射关系
/etc/ld.so.conf , /etc/ld.so.conf.d/*conf
配置文件
/etc/ls.so.cache
缓存文件
▼程序包的来源
CentOS镜像
https://www.centod.org/download/
http://miirors.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-options] | 用途 |
---|---|
--test |
测试安装 |
--nodeps |
忽略依赖关系 |
--replacepkgs |
不检查来源 |
--nodigest |
不检查完整性 |
--noscripts |
不执行程序包脚本 |
%pre |
安装前脚本 --nopre |
%post |
安装后脚本 --nopost |
%preun |
卸载前脚本 --nopreun |
%postun |
卸载后脚本 --nopostun |
rpm 包升级
有旧版,升级
rpm -U [install-option] PACKAGE_FILE
没有旧版,不升级
rpm -F [install-option] PACKAGE_FILE
示例
rpm -Uvh PACKAGE_FILE
[install-options]
--oldpackage
降级
--force
强制安装
rpm 包查询
命令
rpm -q [select-options] [query-options]
[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 数据库
- 数据库重建
/var/lib/rpm
rpm {--initdb| --rebuiddb}
initdb
初始化
rebuilddb
重建
rpm示例
rpm -ql httpd
▼yum仓库
▷yum 仓库
- 所有仓库公共配置
/etc/yum.conf
- 仓库指向提供配置
/etc/yum.repos.d/*.repo
- 日志文件
/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 |
--enablerepo = 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/$ 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源
搭建http的yum仓库
1. `安装httpd服务`
[root@CentOS7 cd]$yum install httpd.x86_64
2. `查询httpd安装后生成的文件`
[root@CentOS7 cd]$rpm -ql httpd
3. `启用httpd服务`
[root@CentOS7 cd]$systemctl enable httpd.service
[root@CentOS7 cd]$systemctl start httpd.service
4. `创建文件夹`
[root@CentOS7 html]$cd /var/www/html/
[root@CentOS7 html]$mkdir centos/{6,7}/os/x86_64 -pv
mkdir: created directory ‘centos’
mkdir: created directory ‘centos/6’
mkdir: created directory ‘centos/6/os’
mkdir: created directory ‘centos/6/os/x86_64’
mkdir: created directory ‘centos/7’
mkdir: created directory ‘centos/7/os’
mkdir: created directory ‘centos/7/os/x86_64’
5. `挂载`
[root@CentOS7 html]$mount /dev/sr0 centos/7/os/x86_64/
mount: /dev/sr0 is write-protected, mounting read-only
[root@CentOS7 html]$mount /dev/sr1 centos/6/os/x86_64/
mount: /dev/sr1 is write-protected, mounting read-only
6. `配置repo并使用`
1 [cdrom]
2 name=cdrom
3 baseurl=http://192.168.88.132/centos/7/os/x86_64/
4 gpgcheck=0
5 enable=1
7. `生成repodata`
[root@CentOS7 app]$ls
tree-1.6.0-10.el7.x86_64.rpm
[root@CentOS7 app]$createrepo .
Spawning worker 0 with 1 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
8. `查看repodata`
[root@CentOS7 app]$cd repodata/
[root@CentOS7 repodata]$ls
126a4254b443d131331b4b0690e9c0b6d21a2086439cafc91c06cef05a4d4d80-filelists.sqlite.bz2
13fdc6b363cf52e0a85e9c14a3c7542ff8aa1414059ed3e60e921abe39b608ca-filelists.xml.gz
7a3b13e0c3442e911847404ebcb6949af1631a3be1d30b65bc6e5af70e018b20-primary.sqlite.bz2
b466b726e2bed2fb4186bdcb74332cec08c47ab09dda9e910bd438c4e79d06f2-primary.xml.gz
bf7893674c749b8e5bb4688498d02e729c2ab4839cd6e3baeeeaa0c9d8aa24c7-other.xml.gz
de5be08c023c4647355eb21db734c14e07f61ddce7b3802e6a42867e4a46d45f-other.sqlite.bz2
repomd.xml