软件运行和编译
ABI :Application Binary Interface 应用程序二进制接口
Windows和Linux不兼容
PE格式 ELF格式
库级别的虚拟化:
Linux:WINE
Windows:Cywin
API:Application Programming应用程序的开发接口
POSIX 通用
程序源代码–>预处理–>编译–>汇编–>链接
静态编译:.a
libxxx.a
把程序对应的依赖库复制一份到包
升级难,需要重新编译
占用空间较多,迁移容易
动态编译:.so
只把依赖加做一个动态链接
libxxx.so
占用空间较少,升级方便
包管理器
二进制应用程序的组成部分:
二进制文件、库文件、配置文件、帮助文件
程序包管理器:
debian:deb文件、dpkg包管理器
redhat:rpm文件、rpm包管理器
rpm:Redhat Package Manager
RPM Package Manager
包命名
源代码:name-VERSION.tar.gz|bz2|xz
rpm包命名方式:
name-VERSION-release.arch.rpm
例:bash-4.2.46-19.e17.x86_64.rpm
常见的arch:
x86 :i386 i486 i586 i686
x86_64
noarch
包:分类和拆包
Application-VERSION-ARCH.rpm:主包
Application-devel-VERSION-ARCH.rmp 开发子包
Application-utils-VERSION-ARHC.rpm 其他子包
Application-libs-VERSION-ARHC.rpm 其他子包
包之间:可能依赖,甚至循环依赖
解决依赖包管理工具:
yum:rpm包管理器的前端工具
apt-get:deb包管理器前端工具
zypper:suse上的rpm前段管理工具
dnf:Fedora 18+ rpm包管理器前端管理工具
库文件
查看二进制程序所依赖的库文件
ldd/PATH/TO/BINARY_FILE
管理及查看本机装载的库文件
idconfig
/sbin/ldconfig -p :显示本机已经缓存的所有可用库文件名及文件路径映射关系
配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache
包管理器
程序包管理器:
功能:将编译好的应用程序的各组文件打包一个或几个程序包文件,从而方便快捷的实现程序包的安装、卸载、查询、升级、和校验等管理操作
1、包文件组成(每个包独有)
RPM包内的文件
RPM的元数据,如名称,版本,依赖性,描述等安装或卸载时运行的脚本
2、数据库(公共):/var/lib/rpm
程序包名称及版本
依赖关系
功能说明
包安装后生成的各文件路径及校验码信息
程序包的来源
管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum,dnf
获取程序包的途径:
1.系统发版的光盘或官方的服务器:
CentOS镜像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
2.项目官方站点
3.第三方组织
Fedora-EPEL
Rpmforge :RHEL推荐,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
http://sourceforge.net/
4.自己制作
rpm包管理
CentOS系统上使用rpm命令管理程序包:
安装、卸载、升级、查询、校验、数据库维护
安装:
rpm{-i|–install}[install-options]PACKAGE_FILE
-v:verbose
-vv:
-h:显示执行进度
rpm -ivh 常用
[install-options]
–test:测试安装
–nodeps:忽略依赖关系
–replacepkgs| replacefiles 覆盖安装 | 替换安装
–nosignature:不检查数字签名
–nodigest:不检查包完整性
–noscripts:不执行程序包脚本
rpm包升级
rpm -U:安装有旧版本程序包,则“升级”,如果不存在旧版本程序包,则“安装”
rpm -F:安装有旧版本程序包,则“升级”,如果不存在旧版本程序包,则不执行升级操作
–oldpackage:降级
–force:强制安装
包查询
rpm2cpio 包文件|cpio itv 预览包内文件
rpm2cpio 包文件|cpio -id “.conf”释放包内文件
rpm -a 查询所有包
-f 查看指定的文件由哪个程序包安装shengc
-p 针对未安装的程序包文件做查询操作
–changelog 查询rpm包的changelog
-c 查询程序的配置文件
-d 查询程序的文档
-i information
-l 查看指定的程序包安装后生成的所有文件
–scripts 程序包自带的脚本
-R 查询指定的程序包所依赖的CAPABILITY
包校验
rpm -V 看是否更改过
S 大小
M 文件类型
5 哈希值
D 设备的主要和次要号码
L 链接
U 所有者
G 所属组
T m时间
数据库:/var/lib/rpm
yum
yum :rpm的前端程序,可解决软件包相关依赖性,可在多个仓库之间定位软件包,up2date的代替工具
yum repository:yum repo ,储存了众多rpm包,以及包的相关的元数据文件(放置特定目录repodata下)
文件服务器:
ftp://
http://
file://
yum配置文件
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
[仓库名称]
baseurl=地址
gpgcheck={1|0}
enabled={1|0}
常用的几项
yum源
阿里云repo文件:
http://mirrors.aliyun.com/repo/
CentOS系统yum源
阿里云:
http://mirrors.aliyun.com/centos/$releasever/os/x86_64/
教学环境:
http://172.16.0.1/cobbler/ks_mirror/$releasever/
Epel的yum源:
阿里云:
http://mirrors.aliyun.com/epel/$releasever/x86_64
教学环境:
http://172.16.0.1/cobbler/ks_mirror/$releasever/x86_64/
yum命令
yum repolist [all|enabled|disabled]显示仓库列表
yum list 显示程序包
yum install 安装程序包
yum reinstall 重新安装
yum update 升级程序包
yum downgrade 降级程序包
yum check-update 检查升级
yum remove 删除
yum info 查看包的信息
yum clean 清除缓存 在/var/cache/yum/$basearch/$releasever缓存
yum search 搜索指定相关的包
查看yum 事务历史:
yum history
yum history info 6 查看历史
yum history undo 6 撤销
在centos7实现光盘yum源
1安装
yum install autofs
2现在启动
systemctl start autofs
3开机启动
systemctl enable autofs
4 cat /etc/yum.repos.d/base.repo
[centos7]
name=centos7 repo
baseurl=file:///misc/cd
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
实验:实现yum 网络仓库
1 安装网络服务ftp为例
yum install vsftpd
2现在启动
systemctl start vsftpd centos7
service vsftpd start centos6
3开机启动
systemctl enable vsftpd centos7
chkconfig vsftpd on centos6
4 清除防火墙
iptables -F
systemctl disable firewalld.service centos7
chkconfig iptables off centos6
5复制rpm包文件到共享的网络目录
/var/ftp/pub/app/
6 创建yum metadata 生成repodata/
yum install createrepo
createrepo /var/ftp/pub/app/
7 客户端配置
[app]
baseurl=ftp://192.168.33.128/pub/app/
gpgcheck=0
实验:在centos7 编译安装httpd2.4.25
1安装源码包
download 源码包
tar xvf httpd-2.4.25.tar.bz2
2安装开发包组
yum groupinstall “Development tools”
3 cd /root/httpd-2.4.25
yum install apr-devel
yum install apr-util-devel
yum install pcre-devel
./configure –prefix=/app/httpd24 –sysconfdir=/etc/httpd24/
4 make
5 make install
6 软件使用
指定路径
cat /etc/profile.d/httpd24.sh
PATH=$PATH:/app/httpd24/bin
7 apachectl start|stop
netstat -tnl 查看端口
磁盘管理
机械硬盘结构:
head:磁头
track:磁道
cylinder:柱面
sector:扇区,512bytes
分区:
两种分区方式:MBR,GPT
MBR: 主要分区 1-4
扩展1-4
逻辑 5-
sector 512
GPT:
分区工具
fdisk 创建MBR分区
gdisk 创建GPT分区
parted 高级分区操作
fdisk /dev/sdb
gdisk /dev/sdb 类似fdisk
fdisk -p 分区列表
-t 更改分区类型
-n 创建新分区
-d 删除分区
-w 保持并退出
-q 不保存并退出
新加分区同步:partx -a /dev/..
删除分区同步:partx -d –nr M-N /dev/..
partprobe 同步磁盘
partde用法,实时生效
parted /dev/sdb mklabel gpt|msdos 建分区
parted /dev/sdb print 看分区
parted /dev/sdb mkpart primary 11000M
parted /dev/sdb rm 1 删除第一个分区
parted -l 查看所有硬盘分区
文件系统
linux文件系统:ext2,ext3,ext4,xfs,swap
日志型文件系统:ext3,ext4,xfs…
非日志型文件系统:ext2,vfat
mkfs命令:
mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
mkfs -L 设定卷标
blkid 查看块信息
blkid -U UUID 根据UUID来查找对应设备
findfs LABEL …根据卷标搜索
findfs UUID…根据UUID搜索
tune2fs -U UUID:修改UUID
uuidgen:取新的UUID
fsck -y :修复
挂载mount
挂载方法:moumt DEVICE MOUNT_POINT
mount -L:根据卷标挂载
mount -U:跟据UUID挂载
-t:指明文件系统
-n:隐藏挂载
-B: 文件挂载文件
-o remount:指定权限
cat /proc/mounts查看最全的挂载信息
findmnt MOUNT_POINT查看是否挂载
fuser -v … 查看访问文件的进程
fuser -km … 杀掉进程
umount … 取消挂载
mount -a 刷新挂载
swap 实现
1fdisk 分区
fdisk sdc1 t 82
2 mkswap /dev/sdc1 -L swap2 格式化
3 vim /etc/fstab 写入vim
/dev/sdc1 swap swap pri=100 0 0
4生效 swapon -a启用
5 swapon -s 查看
删除swap分区
1 swapoff /dev/sdc1禁用
2 free
3 vim /etc/fstab
4 fdisk /dev/sd删除分区
文件swap
dd if=/dev/zero of=/swapfile bs=1Mcount=2048
mkswap /swapfile
vim /etc/fstab
swapon -a
删除swap file
swapoff /swapfile
vim /etc/fstab
rm -f /swapfile
原创文章,作者:yaobinbin,如若转载,请注明出处:http://www.178linux.com/74111
评论列表(1条)
对linux下的软件包管理和磁盘管理进行了详细的介绍,内容写的很详细排版也很好,可以把实验的流程再加入进来,加油,加油!