1,软件运行和编译
程序源代码 –> 预处理 –> 编译 –> 汇编 –> 链接
静态编译: .a
动态编译: .so
库文件
查看二进制程序所依赖的库文件 如:
ldd /bin/ls
管理及查看本机装载的库文件
ldconfig -p 显示本机已经缓存的所有可用库文件名及文件路径映射关系
配置文件: /etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
缓存文件: /etc/ld.so.cache
误删除了库文件可以进入救援模式修复。
救援模式:
如果某些重要文件被删除,导致系统某些重要功能失效出错,可以进入救援模式修复,首先挂载好光盘,
然后用光驱启动,选择救援模式进入,系统会变成由光盘加载的shell的小系统,可以执行各种命令。需要
注意的是,在救援模式下,系统的根目录/会变成/mnt/sysimage/。
在救援模式下建立软链接,必须考虑路径问题,推荐用相对路径,直接进入文件目录建立链接较好。
2,包管理器 RPM
二进制应用程序的组成部分:
二进制文件、库文件、配置文件、帮助文件
RPM包能解决软件安装的问题,但解决不了软件依赖性的问题。
RPM包格式:
ftp-0.17-54.el6.x86_64.rpm
ftp:软件名称
0:软件的主版本号
17:软件的次版本号
54:软件编译次数
x86_64:软件适合的硬件平台
rpm -options PACKAGE_FILE…
-i 就是install
-v 就是过程可视化
-h 就是#表示安装进度
–test:不执行真正安装,仅报告依赖关系和冲突信息等
–force :强制安装
–nodeps:忽略依赖关系安装
–replacepkgs:覆盖安装–重新安装并覆盖原有的文件
-U 升级或安装 不存在就安装
-F 升级 不存在则不安装
-e 卸载 package_name
-e –allmatches 如果一个程序包有多个版本,则一次全部卸载
(如果包配置文件曾经被修改,则删除时会被重命名(加后缀.rpmsave)后留存。
注意:
1.一定不要对内核执行升级;Linux允许多内核共存,如果需要可以直接安装不同版本内核!(如果确实要
新内核可以用安装的方法进行 RPM -ivh ,这样系统启动会有两个内核选择,在充分测试后确认新内核稳定
的情况下,再卸载旧内核)
2.如果程序包配置文件安装后曾被更改,升级时,新版本配置文件不会覆盖旧配置文件,而把新版本配置文
件重命名(加后缀.rpmnew)后保存。
包查询
rpm -q package_file 查询某些包是否已经安装
-qa 查询所有已经安装的包
-qf path/to/file 查询某个文件是由哪些包安装生成
-qpi filename 查尚未安装包文件的相关信息文件列表,跟的是文件名而不是包名
-qi package_file 查询某包简要信息,比较详细
-ql package_file 查询某包安装生成的文件列表
-qc package_file 查询某包安装生成的所有配置文件
-q –whatprovides Capability 查询指定的能力由哪个包所提供
-q –whatrequires Capability 查询指定的能力被哪些包所依赖
-q –scripts 查询脚本
常见用法
1.rpm -q vsftpd &> /dev/null || rpm -ivh /misc/cd/packages/vsftpd-2… &> /dev/null
2.rpm -qa | grep 你要找的包名
3.误删除了/usr/bin/tree 但是不知道这个文件来自于哪个安装包可以用命令
rpm -qf /usr/bin/tree
4.rpm2cpio 恢复文件方法
rpm2cpio /media/CentOS_6.9_Final/Packages/tree…..x86_64.rpm | cpio -tv 查看包包含哪些文件,要
恢复的是哪个文件。
rpm2cpio /media/CentOS_6.9_Final/Packages/tree…..x86_64.rpm | cpio -idv ./usr/bin/tree 解压需要
恢复的文件,注意是在当前目录。
然后再用cp或者mv命令把文件恢复到原路径位置即可
缺点:有可能会改变文件属性,例如所有者所属组和权限问题
包校验
rpm -V package_name 校验包安装之后生成的文件是否发生改变
(S M 5 D L U G T P)
rpm -K package_name 检查包的来源及完整型 后面跟的是包完整名字
要先导入合法的KEY文件:
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
或者直接只光盘里导 /run/media/root/Centos/……./x86_64/RPM-GPG-KEY-…
卸载密钥用
rpm -qa “gpg-pubkey*” 查询现有的key
rpm -e gpg-pubkey-…. 卸载现有的key
注意:以上功能都依赖rpm数据库,里面含有各种已经安装的rpm包信息,建议备份,否则连装了什么都
不知道,无法安装和卸载。
/var/lib/rpm
注意:如果删除了整个rpm命令文件怎么办??
例如: rpm -e rpm –nodeps
进入救援模式(光盘模式启动)
1,建一个临时的文件夹
mkdir /mnt/cdrom
2,挂光盘
mount /dev/sr0 /mnt/cdrom
3,安装rpm
rpm -ivh /mnt/cdrom/Packages/rpm-….. –root=/mnt/sysimage/
4,可以直接在救援模式下切换到根下测试下效果
chroot /mnt/sysimage/
5,rpm 可用则可以重启
3,YUM仓库的创建与管理
yum可以解决各软件的依赖关系问题,但底层依然是rpm,实际上是对rpm的二次封装。
yum cache 储存 meta data
yum安装完成文件后默认会删除安装包
缓存的默认路径可以在/etc/yum.conf里查看
/var/cache/yum….
yum cache 的信息过旧就必须清除
yum clean all 清除缓存
yum出故障一般是这2个问题
1) 配置文件格式或者参数写错
2) yum cache 数据过旧
配置yum
1)准备配置文件
主配置文件:
/etc/yum.conf
选项
keepcache=1 保留安装包
logfile=/var/log/yum.log yum使用记录
gpgcheck=0 不检查包的可靠性
配置自己的yum端:
一、光盘源:
1.移动默认到bak/目录下,没有则mkdir创建
2.在指定目录下创建.repo后缀的文件
/etc/yum.repos.d/*.repo
一般源为光盘默认叫base.repo
vim base.repo
[base] repoid 不要带空格
name=centos cdrom 描述信息
baseurl=file:///mnt/cdrom 源路径为repodata的父目录,其他看以下注意
gpgkey=file:///mnt/cdrom/RPM-GPG… 为了安全要校验,路径可以直接光盘导入
#gpgcheck=0 不校验签名,一般不推荐,可以删除
#enabled=0 禁用源,启用则用1
#failovermethod=priority 源为多路径时,按顺序访问,roundrobin随机
#cost= 默认1000 ,多仓库时,靠cost值判断优先级,越小越优先
注意:
1.仓库路径最好不要带空格,由于默认光盘目录repodata父目录有空格,所以最好不要用。用:
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
2.仓库路径为多路径时,可以把多路径写入一文件,例如:
创建文件baselist
baseurl=file:///mnt/cdrom
http://172.20.0.1/centos/7/
修改base.repo的baseurl为
mirrorlist=file:///root/baselist即可
二、网络源
例如添加epel源
内容可以直接在原文件base.repo下添加,或者另外建立新文件配置
[epel]
name =centos 7 epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/ 这里的是阿里的epel源
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7 阿里的key
#enabled=0 禁用源,启用则用1
如果做了上述操作后发现源没有更新,那么要清理缓存
yum clean all
彻底点可以直接执行
rm -rf /var/cache/yum
yum repolist 列出已经配置的所有启用仓库源
yum repolist all 列出所有仓库包括已经禁用的仓库源
yum repolist disable 只列禁用仓库
yum list
仓库里所有的包,读取的是缓存里的数据
yum list ‘*ftp*’
centos7下挂载光盘工具包
yum install autofs
systemctl start autofs
systemctl enable autofs
/misc/cd 可挂载光盘
另可用yum-config-manager 来直接生成repo文件
yum-config-manager –add-repo=//172.20.0.1/centos/7/
yum仓库管理
yum repolist 列出已经配置的所有可用仓库
yum clean all 清除缓存
yum install packagename 安装
yum remove packagename 卸载
yum reinstall packagename 重装,可以用于修复被损坏的功能
yum -y 自动回答yes
yum search 支持模糊搜索
yum info 查询信息
yum deplist 查询某个包所依赖的能力
yum –nogpgcheck 禁止进行gpg check
yum history 查看历史
yum history info 7
yum history undo 7 直接撤销 如果包含n个程序,也会一并删除
yum history redo 7 重做
注意:
1.只需要提供包名
2.如果某包由再不同仓库中有多个不同版本,则默认安装最新版本
3.如果要指定安装版本:install PACKAGE-VERSION
4.如果要删除某个带有依赖其他包的包,可以查询history,通过undo相关编号就可以实际删除包以及所依
赖的相关包。
包组
需要安装某些较多套件的包,例如安装图形界面,就必须涉及到包组
yum grouplist 查看包组清单
yum groupinstall 安装包组
yum groupremove 卸载包组
yum groupinfo 包组信息
注意:
1.安装包组名带空格的包要加引号
yum groupinstall “Development Tools”
2.静默并自动选择卸载httpd
yum -y -q remove httpd
创建自定义yum仓库
如生产环境中打包的新软件需要放上yum,则可在放rpm包目录下运行命令,例如把/data建成yum仓库
createrepo /data
创建yum数据,创建完后当前文件夹/data有repodata目录,只要建立或修改相应的repo文件下的baseurl添
加此路径就可以创建成功安装了。
创建yum仓库服务器
这里以7.4服务器做为6.9和7.4两个版本的yum仓库服务器
1.安装httpd
systemctl start httpd 启动httpd服务
systemctl enable httpd 设置开机自动启动
2.关闭防火墙
centos 6
service iptables stop
chkconfig iptables off
centos 7
systemctl stop firewalld
systemctl disable firewalld
3.打开浏览器,输入ip就可访问网页,同时在系统编辑内容
cd /var/www/html
echo welcome to Max Page > index.html
mkdir -p centos/{7,6}/os/x86_64/ 建立了2个目录
4.增加光驱,挂载光盘
在虚拟机软件增加光驱然后执行
echo ‘- – -‘ > /sys/class/scsi_host/host2/scan 执行磁盘扫描命令
不行则重启…..
挂载光盘
mount /dev/sr0 centos/7/os/x86_64/
mount /dev/sr1 centos/6/os/x86_64/
注意:
1,可能会显示错误,可以用mount命令检查是否成功
2, cat centos/7/os/x86_64/ 检查防止挂反了
4,记得修改原repo文件的baseurl路径
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96647