火车开道
(@@) ( ) (@) ( ) @@ () @ O @ O @
( )
(@@@@)
( )
(@@@)
==== ________ ___________
_D _| |_______/ \__I_I_____===__|_________|
|(_)--- | H\________/ | | =|___ ___| _________________
/ | | H | | | | ||_| |_|| _| \_____A
| | | H |__--------------------| [___] | =| |
| ________|___H__/__|_____/[][]~\_______| | -| |
|/ | |-----------I_____I [][] [] D |=======|____|________________________|_
__/ =| o |=-~~\ /~~\ /~~\ /~~\ ____Y___________|__|__________________________|_
|/-=|___|= O=====O=====O=====O|_____/~\___/ |_D__D__D_| |_D__D__D_|
\_/ \__/ \__/ \__/ \__/ \_/ \_/ \_/ \_/ \_/
软件包
包的组成
二进制文件、库文件、配置文件、帮助文件
包的命名
- 源代码name-VERSION.tar.gz|bz2|xz
VERSION: major.minor.release - rpm包:name-VERSION-release.arch.rpm
- bash-4.2.46-19.e17.x86_64.rpm
- VERSION: major.minor.release
- release: release OS
- arch: x86, x86_64, ppc, s390, noarch
包的分类
- Application-VERSION-ARCH.rpm 主包
- Application-devel-VERSION-ARCH.rpm 开发子包
- Application-utils-VERSION-ARCH.rpm 其它子包
- Applicatio-libs-VERSION-ARCH.rpm 其它子包
库文件
- 查看二进制程序所依赖的库文件
ldd /path/to/binary_file - 管理及查看本机装载的库文件
- ldconfig 加载配置文件中指定的库文件
- ldconfig -p 显示本机已缓存的所有可用库文件名及文件路径映射关系
- 配置文件 /etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
- 缓存文件: /etc/ld.so.cache
rpm包
包文件组成
- rpm包内的文件
- rpm元数据:名称、版本、依赖性,描述等
- 安装或卸载时运行的脚本
包数据库 /var/lib/rpm
- 程序包名称及版本
- 依赖关系
- 功能说明
- 包安装后生成的各文件路径及校验码信息
rpm命令
安装
rpm -ivh [install-options] PACKAGE_FILE ...
- -v: verbose
- -h:以#显示程序包管理执行进度
[install-options] | comments |
---|---|
--test | 测试安装 |
--nodeps | 忽略依赖关系 |
--replacepkgs | 重新安装,缺失包时恢复安装 |
--replacefiles | 替换冲突文件 |
--nosignature | 不检查来源合法性 |
--nodigest | 不检查包的完整性 |
--noscripts | 不执行程序包脚本 |
升级
- rpm -U [INSTALL-OPTIONS] PACKAGE_FILE..
upgrade: 安装有旧版程序包,则“升级”;不存在旧版程序包,则“安装” - rpm -F [INSTALL-OPTIONS] PACKAGE_FILE...
freshen: 安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作 - rpm -Uvh PACKAGE_FILE ... or rpm -Fvh PACKAGE_FILE...
- --oldpackage 降级
- --force 强制安装
- note1:不要升级内核,直接安装新版内核
- note2: 升级时会保留老版本配置文件
查询
rpm -q [SELECT-OPTIONS] [QUERY-OPTIONS]
[select-options] | comments |
---|---|
-a | 所有包 |
-f | 查看指定的文件由哪个程序包安装生成 |
-p rpmfile | 针对尚未安装的程序包文件做查询操作 |
[query-options] | comments |
---|---|
--changelog | 查询rpm包的changelog |
-c | 查询程序的配置文件 |
-d | 查询程序的文档 |
-i | information |
-l | 查看指定的程序包安装后生成的所有文件 |
--script | 程序包自带的脚本 |
--provides | 列出指定程序包所提供的capability |
-R | 查询指定程序包所依赖的capability |
- 常用用法
command | comments |
---|---|
-qi PACKAGE | 查询package的具体信息 |
-qf FILE | 查看文件file是由哪个包提供的 |
-qc PACKAGE | 查询包的配置文件 |
-ql PACKAGE | 查询package安装好后生成的所有文件 |
-qd PACKAGE | 查询package程序文档 |
-qpi PACKAGE_FILE | 查询未安装的package信息,package要完整路径 |
-qpl PACKAGE_FILE | 查询未安装的package文件,package要完整路径 |
-qa | 显示所有包 |
# 查询程序是否安装
[root@test1_c1 Packages]#rpm -q tree
tree-1.6.0-10.el7.x86_64
# 查询已安装程序包的所有文件
[root@test1_c1 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@test1_c1 Packages]#rpm -qf /usr/bin/tree
tree-1.6.0-10.el7.x86_64
# 解压rpm包
[root@test1_c1 data]#rpm2cpio tree-1.6.0-10.el7.x86_64.rpm | cpio -tv
-rwxr-xr-x 1 root root 62768 Jun 10 2014 ./usr/bin/tree
drwxr-xr-x 2 root root 0 Jun 10 2014 ./usr/share/doc/tree-1.6.0
-rw-r--r-- 1 root root 18009 Aug 13 2004 ./usr/share/doc/tree-1.6.0/LICENSE
-rw-r--r-- 1 root root 4628 Jun 24 2011 ./usr/share/doc/tree-1.6.0/README
-rw-r--r-- 1 root root 4100 Jun 24 2011 ./usr/share/man/man1/tree.1.gz
177 blocks
[root@test1_c1 data]#rpm2cpio tree-1.6.0-10.el7.x86_64.rpm | cpio -idv ./usr/bin/tree
./usr/bin/tree
177 blocks
[root@test1_c1 data]#ls usr/bin/
tree
# 查询kernel相信信息
rpm -qi kernel
包卸载
rpm -e [--allmatches] [--nodeps][--noscripts][--notriggers][--test] PACKAGE_NAME...
- 包卸载时,对应的配置文件不会删除,以FILENMAE.rpmsave保留
校验
- rpm -V [SELECT-OPTIONS][VERIFY-OPTIONS]
- rpm -K rpmfile 检查包的完整性和签名
-
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
key file is in "/etc/pki/rpm-gpg/"
rpm数据库维护 /var/lib/rpm
- rpm --initdb 初始化
- rpm --rebuilddb 重建数据库
yum
yum 仓库
文件服务器:
http://
https://
ftp://
file://
- 元数据
repodata
yum配置文件
- 配置文件 /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
[base]
name=Base ISO repository
baseurl=file:///mnt/iso
enabled=1
gpgcheck=0
[epel]
name=Epel repository
baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
- yum仓库
- 配置文件中可用的变量
name | comments |
---|---|
$releaseserver | 当前OS的发行版的主版号 |
$arch | 平台,x86_64 |
$basearch | 基础平台,x86_64 |
$YUM0-YUM9 | 自定义变量 |
示例 | https://mirrors.aliyun.com/centos/$release/os/$basearch/ |
- yum 源
- 阿里云
name | url |
---|---|
base | https://mirrors.aliyun.com/centos/$release/os/$basearch/ |
epel | https://mirrors.aliyun.com/epel/$release/$basearch/ |
- 华为云
name | url |
---|---|
base | https://mirrors.huaweicloud.com/centos/$release/os/$basearch/ |
epel |
https://mirrors.huaweicloud.com/epel/ |
yum 命令
yum [optioms][command][package...]
commands | comments |
---|---|
yum repolist [all|enabled|disabled] | 显示仓库列表 |
yum list {available|installed|updates}[all |glob_exp1][...] | 显示程序包 |
yum {install|reinstall} package1 [...] | 安装或者重新安装 |
yum {update|downgrade} package1[...] | 升级或降级 |
yum check-update | 检查可用的升级 |
yum {remove|erase} package1[...] | 卸载程序包, 只卸载package,忽略依赖包 |
yum info [...] | 查看包information |
yum provides | whatprovides feature1 [...] | 查看某文件是由哪个包提供的 |
yum clear [pacakges|metadata|expire-cache|rmpdb|plugins|all] | 清除/varcache/yum/$basearch/$releasever缓存 |
yum makecache | 构建缓存 |
yum search string1 [...] | 以指定的关键字搜索包名 |
yum deplist package1 [...] | 查看指定包的依赖 |
yum history [info|list|summary|redo|undo|rollback|new|sync|stats] | |
yum history | 显示yum历史命令 |
yum history info 6 | 显示历史命令6详细信息 |
yum history undo 6 | 将yum 命令6执行过程撤销掉,如果时安装命令,就会完全删除 |
yum history redo | 将yum 命令6重做 |
/var/log/yum.log | 日志 |
yum localinstall|localupdate rpmfile1 [...] | |
yum group install|groop update|group list|group remove|group info group1 ...[] | 包组相关命令 |
options | comments |
---|---|
--nogpgcheck | 禁止进行gpg check |
-y | 自动回答为“yes” |
-q | 静默模式 |
--disablerepo=repoidglob | 临时禁用此处指定的repo |
--enablerepo=repoidglob | 临时启用此处指定的repo |
--noplugins | 禁用所有插件 |
系统光盘创建yum仓库
- 挂载光盘至某目录
mount /dev/cdrom /mnt/cdrom - 创建配置文件
[Centos7]
name=centos7 iso
baseurl=file:///mnt/cdrom/
gpgcheck=0
enabled=1
- 利用http创建yum仓库
(1) 安装http协议 yum install httpd, systemctl enable httpd, systemctl start httpd
(2)mkdir -pv /var/www/html/centos/{6,7}/os/x86_64/
tree /var/www/html/centos/{6,7}/os/x86_64/
(3)mount iso光盘到对应文件夹
dnf centos8上包管理器
- 配置文件 /etc/dnf/dnf.conf
- 仓库文件 /etc/yum.repos.d/*.repo
- 日志 /var/log/dnf.rpm.log
- 用法:与yum一致
编译安装
- 获取源代码
- 准备编译环境
- 开发工具和开发环境
(1) 开发工具:make,gcc
(2) 开发环境:开发库,头文件,glibc:标准库 - 通过包组
(1) Development Tools
(2) Server Platform Development - 基于最小化安装的系统
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
- 编译步骤
prestep:安装前查看INSTALL,README文件 - ./configure
通过选项传递参数,指定启用特性,安装路径;执行时会参考用户的设置及makefile.in文件生成makefile
选项 | comments |
---|---|
--help | 获取支持的使用选项 |
安装路径设定 | |
--prefix=/PATH | 设置默认安装位置,default是/usr/local |
--sysconfdir=/PATH | 配置文件的安装位置 |
System types | 支持交叉编译 |
可选特性 | |
--enable-FEATURE [ARG] | 启用特性 |
--disable-FEATURE | 禁用特性 |
可选包 | |
--with-PACKAGE[=ARG] | 依赖包 |
--without-PACKAGE | 禁用依赖关系 |
NOTE | 通常被编译操作依赖的程序包,需要安装此程序包的开发组件,其包名一般类似于name-devel-VERSION |
make
根据makefile文件,构建应用程序make install
复制文件到相应的路径安装后配置
- 二进制程序目录导入至PATH环境变量中
编辑文件/etc/profile.d/NAME.sh, then export PATH=/PATH/TO/BIN:$PATH -
导入帮助手册
编辑/etc/man.config/man_db.conf文件,添加一个MANPATH
软件包管理.png