linux的软件包管理,磁盘存储。
? 软件运行和编译 ABI:Application Binary Interface ? ? ? ? Windows与Linux不兼容 ? ? ? ? ? ? ? ? ? ? ELF(Executable and Linkable Format) ? ? ? ? ? ? ? ? ? ? ?PE(Portable Executable) ? ? ? ? ? ? ? ? 库级别的虚拟化: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Linux: WINE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??Windows: Cygwin API:Application Programming Interface ? ? ? ?POSIX:Portable OS 程序源代码-->预处理-->编译-->汇编-->链接 ? ? ? ? ? ? ? ?静态编译:.a ? ? ? ? ? ? ? ?动态编译:.so c程序编译过程: 静态和动态链接: 链接主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能 够正确地衔接,分为静态链接和动态链接 静态链接 把程序对应的依赖库复制一份到包 libxxx.a 嵌入程序包 升级难,需重新编译 占用较多空间,迁移容易 动态链接 只把依赖加做一个动态链接 libxxx.so 连接指向 占用较少空间,升级方便 静态和动态链接: ? c程序静态链接 ? ?包和包管理器: 最初只有.tar.gz的打包的源码文件,用户必须编译每个他想在GNU/Linux 上运行的软件。用户们急需系统提供一种方法来管理这些安装在机器上的 软件,当Debian诞生时,这样一个管理工具也就应运而生,它被命名为 dpkg。从而著名的“package”概念第一次出现在GNU/Linux系统中, 稍后Red Hat才开发自己的“rpm”包管理系统 包的组成: 二进制文件、库文件、配置文件、帮助文件 程序包管理器: debian: deb文件,dpkg包管理器 redhat: rpm文件,rpm包管理器 rpm:Redhat Package Manager RPM Package Manager ?rpm包管理: CentOS系统上使用rpm命令管理程序包: 安装、卸载、升级、查询、校验、数据库维护 安装: rpm {-i|--install} [install-options] PACKAGE_FILE… -v: verbose -vv: -h: 以#显示程序包管理执行进度 rpm -ivh PACKAGE_FILE ... rpm包安装: [install-options] --test: 测试安装,但不真正执行安装,即dry run模式 --nodeps:忽略依赖关系 --replacepkgs | replacefiles --nosignature: 不检查来源合法性 --nodigest:不检查包完整性 --noscripts:不执行程序包脚本 %pre: 安装前脚本 --nopre %post: 安装后脚本 --nopost %preun: 卸载前脚本 --nopreun %postun: 卸载后脚本 --nopostun rpm包升级: 升级: rpm {-U|--upgrade} [install-options] PACKAGE_FILE... rpm {-F|--freshen} [install-options] PACKAGE_FILE... upgrade:安装有旧版程序包,则“升级” 如果不存在旧版程序包,则“安装” freshen:安装有旧版程序包,则“升级” 如果不存在旧版程序包,则不执行升级操作 rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ... --oldpackage:降级 --force: 强制安装 yum: CentOS: yum,dnf YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具 yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下) 文件服务器: http:// https:// ftp:// file:// yum配置文件: yum客户端配置文件: /etc/yum.conf:为所有仓库提供公共配置 /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 enablegroups={1|0} failovermethod={roundrobin|priority} roundrobin:意为随机挑选,默认值 priority:按顺序访问 cost= 默认为1000 yum仓库: yum的repo配置文件中可用的变量: $releasever: 当前OS的发行版的主版本号 $arch: 平台,i386,i486,i586,x86_64等 $basearch:基础平台;i386,x86_64 $YUM0-$YUM9:自定义变量 示例: http://server/centos/$releasever/$basearch/ http://server/centos/7/x86_64 http://server/centos/6/i386 yum源: 阿里云repo文件 http://mirrors.aliyun.com/repo/ CentOS系统的yum源 阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/ 清华大学:https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/x86_64/ EPEL的yum源 阿里云:https://mirrors.aliyun.com/epel/$releasever/x86_64 阿里巴巴开源软件 https://opsx.alibaba.com/ yum命令: yum命令的用法: yum [options] [command] [package ...] 显示仓库列表: yum repolist [all|enabled|disabled] 显示程序包: yum list yum list [all | glob_exp1] [glob_exp2] [...] yum list {available|installed|updates} [glob_exp1] [...] 安装程序包: yum install package1 [package2] [...] yum reinstall package1 [package2] [...] (重新安装) ? ?升级程序包: 系统光盘yum仓库: 系统安装光盘作为本地yum仓库: (1) 挂载光盘至某目录,例如/mnt/cdrom mount /dev/cdrom /mnt/cdrom (2) 创建配置文件 [CentOS7] name= baseurl= gpgcheck= enabled= 创建yum仓库: createrepo [options] <directory> 设置文件: I/O Ports: I/O设备地址 一切皆文件:open(),read(),write(),close() 设备类型: 块设备:block,存取单位“块”,磁盘 字符设备:char,存取单位“字符”,键盘 设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信 设备号码: 主设备号:major number,标识设备类型 次设备号:minor number,标识同一类型下的不同设备 设备文件: 磁盘设备的设备文件命名:/dev/DEV_FILE SCSI,SATA,SAS,IDE,USB: /dev/sd 虚拟磁盘:/dev/vd 、/dev/xvd 不同磁盘标识:a-z,aa,ab… /dev/sda,/dev/sdb,... 同一设备上的不同分区:1,2,... /dev/sda1,/dev/sda5 硬盘存储术语 head:磁头 track:磁道 cylinder:柱面 sector:扇区,512bytes 文件系统类型: Linux文件系统: ext2(Extended file system) :适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分区 ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复。它通常被用作通用的文件系统 ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升 xfs:SGI,支持最大8EB的文件系统 btrfs(Oracle),reiserfs,jfs(AIX),swap 光盘:iso9660 Windows:FAT32,exFAT,NTFS Unix: FFS(fast),UFS(unix),JFS2 网络文件系统:NFS,CIFS 集群文件系统:GFS2,OCFS2(oracle) 分布式文件系统: fastdfs,ceph,moosefs,mogilefs,glusterfs,Lustre RAW:未经处理或者未经格式化产生的文件系统 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |