首页 技术 正文
技术 2022年11月20日
0 收藏 835 点赞 2,623 浏览 16367 个字

Linux入门Linux系统管理:磁盘管理,文件系统管理RAID基础原理,LVM2网络管理:TCP/IP协议,Linux网络属性配置程序包管理:rpm,yum进程管理:htop,glance,tsar等sed和awkLinux系统开机流程内核管理基础知识:编译内核,模块Linux系统裁剪kernel+busybox课外作业:LFS回顾:find,特殊权限,if语句Linux磁盘管理:I/O Ports:I/O设备地址一切皆文件:open(),read(),write(),close()块设备:block,存取单位”块”,磁盘字符设备:char,存取单位”字符”,键盘设备文件:关联至一个设备驱动程序,进而能够跟与之对应的硬件设备进行通信设备号码:主设备号:major number,标识设备类型次设备号:minor number,标识同一类型下的不同设备硬盘接口类型:并行IDE:133MB/sSCSI:640MB/s串口SATA:6GbpsSAS:6GbpsUSB:480MB/srpm:rotations per minute/dev/DEV_FILE磁盘设备的设备文件命名:IDE:/dev/hdSCSI,STAT,SAS,USB:/dev/sd不同设备:a-z/dev/sda,/dev/sdb…同一设备上的不同分区:1,2,3…/dev/sda1,/dev/sda2机械式硬盘:track:磁道cylinder:柱面secotr:扇区512bytes如何分区:按柱面0磁道0扇区:512bytesMBR:Master Boot Record446bytes:boot loader64bytes:分区表16bytes:标识一个分区2bytes:55AA4个主分区:3主分区+1扩展(N个逻辑分区)问题:UEFI,GPT分区管理工具:fdisk,parted,sfdiskfidsk:对于一块硬盘来讲,最多只能管理15个分区fdisk -l [-u] [device…]fdisk device子命令:管理功能p:print,显示已有分区n:new,创建d:delete,删除w:write,写入磁盘并退出q:quit,放弃更新并退出m:获取帮助l:列表所分区idt:调整分区id查看内核是否已经识别新分区:cat /proc/partations通知内核重新读取硬盘分区表:partx -a /dev/DEVICE-n M:NM:Nkpartx -a /dev/DEVICE-f: forceCentOS 5:使用partprobepartprobe [/dev/DEVICE]Linux文件系统管理:Linux文件系统:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swapswap:交换分区光盘:ISO9660Windows:fat32,ntfsUnix:FFS,UFS,JFS2网络文件系统:NFS,CIFS集群文件系统:GFS2,OCFS2分布式文件系统:ceph,moosefs,mogilefs,glusterfs,lustre根据其是否支持’journal’功能:日志型文件系统:ext3,ext4,xfs…非日志型文件系统:ext2,vfat文件系统的组成部分:内核中的模块:ext4,xfs,vfat用户空间的管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfatLinux的虚拟文件系统:VFS创建文件系统:mkfs命令:1.mkfs.FS_TYPE /dev/DEVICEext4xfsbtrfsvfat2.mkfs -t FS_TYPE /dev/DEVICE-L ‘LABEL’:设定卷标mke2fs:ext系列文件系统专用管理工具-t {ext2|ext3|ext4}-b {1024|2048|4096}-L ‘LABEL’-j:相当于-t ext3mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3-i #:为数据空间中每多少个字节创建一个inode,此大小不应该小于block的大小-N #:为数据空间创建多少个iNode-m #:为管理人员预留的空间占据的百分比,默认5%-O FEATURE[,…]:启用指定特性-O ^FEATURE:关闭指定特性mkswap:创建交换分区mkswap [options] device-L ‘LABEL’前提:调整其分区的ID为82其他常用工具:blkid:块设备属性信息查看blkid [OPTION]… [DEVICE]-U UUID:根据指定的UUID来查找对应的设备-L LABEL:根据指定的LABEL来查找对应的设备e2label:管理ext系列文件系统的label信息e2label DEVICE [LABEL]tune2fs:重新设定ext系列文件系统可调整参数的值-l:查看指定文件系统超级块信息:super block-L ‘LABEL’:修改卷标-m #:修改预留给管理员的空间百分比-j:将ext2升级为ext3-O:文件系统属性启用或禁用-o:调整文件系统的默认挂载选项-U UUID:修改UUID号dumpe2fs:-h:查看超级块信息文件系统检测:fsck:file system checkfsck.FS_TYPEfsck -t FS_TYPE-a:自动修复错误-r:交互式修复错误注意:FS_TYPE一定要与分区上已有文件类型相同e2fsck:ext系列文件专用的检测修复工具-y:自动回答为yes-f:强制修复回顾:磁盘接口类型,磁盘分区,fdisk,mkfs,mke2fs,tune2fs,blkid,dumpe2fs,e2labelvfs:xfs,ext{2|3|4},btrfs文件系统管理:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录作为其他文件访问入口的行为,称之为挂载.解除此关联关系的过程称之为卸载设备挂载点:Mount Pointmount卸载时:可使用设备,也可以使用挂载点umount注意:挂载点下原有文件,在挂载完成后会被临时隐藏挂载方法:mount DEVICE MOUNT_POINTmount:通过查看/etc/mtab文件显示当前系统已挂载的所有设备mount [-fnrsvw] [-t vfstype] [-o options] device dirdevice:指明要挂载的设备1.设备文件,例如/dev/sda52.卷标:-L ‘LABEL’,例如-L ‘MYDATA’3.UUID,-U ‘UUID’4.伪文件系统名称:proc,sysfs,devtmpfs,configfsdir:挂载点事先存在:建议使用空目录进程正在使用中的设备无法被卸载常用选项:-t vsftype:指定要挂载的设备上的文件系统类型-r:readonly,只读挂载-w:read and write,读写挂载-n:不更新/etc/mtab-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有自动挂载功能)-L ‘LABEL’:以卷标指定挂载设备-U ‘UUID’:以UUID指定挂载设备-B,–bind:绑定目录到另一个目录上注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts-o options:(挂载文件系统的选项)async:异步模式sync:同步模式atime/noatime:包含目录和文件diratime/nodiratime:目录的访问时间戳auto/noauto:是否支持自动挂载exec/noexec:是否支持将文件系统上的应用程序运行为进程dev/nodev:是否支持在此文件系统上使用设备文件suid/nosuid:remount:重新挂载ro:rw:user/nouser:是否允许普通用户挂载此设备acl:启用此文件系统上的acl功能注意:上述选项可多个同时使用,彼此使用逗号分隔默认挂载选项:defaultsrw, suid, dev, exec, auto, nouser, async, and relatime卸载命令:umount DEVICEumount MOUNT_POINT查看正在访问指定文件系统的进程fuser -v MOUNT_POINT终止所有正在访问指定文件系统的进程:fuser -km MOUNT_POINT挂载交换分区:启用:swaponswapon [OPTION]… [DEVICE]-a:激活所有的交换分区-p PRIORITY:指定优先级禁用:swapoff [OPTION]… [DEVICE]内存空间使用状态:free [OPTION]-m:以MB为单位-g:以GB为单位文件系统空间占用等信息的查看工具:df:-h:human-readable-i:inodes instead of blocks-P,–portability:以posix兼容的格式输出查看某目录总体空间占用状态:du:du [OPTIONS]… DIR-h:human-readable-s:summary命令总结:mount,umount,free,df,du,swapon,swapoff,fuser文件挂载的配置文件:/etc/fstab每行定义一个要挂载的文件系统:要挂载的设备或伪文件系统    挂载点 文件系统类型挂载选项转储频率自检次序要挂载的设备或伪文件系统:设备文件,LABEL(LABEL=””),UUID(UUID=””),伪文件系统名称(proc,sysfs)挂载选项:defaults转储频率:0:不做备份1:每天转储2:每隔一天转储自检次序:0:不自检1:首先自检,一般只有rootfs才用1…文件系统上的其他概念:iNode:index node,索引节点地址指针:直接指针:间接指针:三级指针:inode bitmap:对位标识每个inode空闲与否的状态信息链接文件:硬链接:不能够对目录进行不能跨分区进行指向同一个inode的多个不同路径,创建文件的硬链接,即为为inode创建新的引用路径,因此会增加其引用计数符号链接:可以对目录进行而且可以跨分区指向的是另一个文件的路径,其大小为指向的路径字符串长度,不增加或减少模板文件inode的引用计数ln [-sv] SRC DEST-s:symbolic link-v:verbose,显示过程文件管理操作对文件的影响:文件删除:文件复制:文件移动:练习:1.创建一个20G的文件系统,块大小为2048,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/testing目录,且默认有acl挂载选项1.创建20G分区2.格式化mke2fs -t ext4 -b 2048 -L ‘TEST’ /dev/DEVICE3.编辑/etc/fstabLABEL=’TEST’ /testing ext4 defaults,acl 0 02.创建一个5G的文件系统,卷标HUGE,要求此分区开机自动挂载至/mogdata目录,文件系统类型为ext33.写一个脚本,完成如下功能:1.列出当前系统识别到的所有磁盘设备2.如果磁盘数量为1,则显示其空间使用信息,否则,则显示最后一个磁盘设备的空间使用信息bash脚本编程之用户交互:read [option]… [name …]-p ‘PROMPT’-t TIMEOUTbash -n /path/to/some_scripts检查脚本中的语法错误bash -x /path/to/some_scripts#!/bin/bashread -p “Enter a special file:” diskfile[ -z “$diskfile” ] && echo “Fool” && exit 1if fdisk -l | grep “^Disk $diskfile” &> /dev/null;then    fdisk -l $diskfileelse    echo “No such file.”    exit 2fiRAID:redundant arrays of inexpensive disksindependentBerkeley:A case for redundant arrays of inexpensive disks RAID提高IO能力:磁盘并行读写提高耐用性:磁盘冗余来实现级别:多块磁盘组织在一起的工作方式有所不同RAID实现的方式:外接式磁盘阵列:通过扩展卡提供适配能力内接式RAID:主板集成RAID控制器Software RAID:级别:levelRAID-0:0,条带卷,strip;RAID-1:1,镜像卷,mirror;RAID-2..RAID-5:RAID-6:RAID10:RAID01:RAID-0:读写性能提升可用空间:N*min(S1,S2..)无容错能力最小磁盘数:2RAID-1:读性能提升,写性能下降可用空间:1*min(S1,S2..)有冗余能力最少磁盘数:2RAID-4:RAID-5:读写性能提升可用空间:(N-1)*min(S1,S2…)有容错能力:1块磁盘最少磁盘数:3RAID-6:读写性能提升可用空间(N-2)*min(S1,S2…)有容错能力:2最少磁盘数:4混合类型:RAID10:读写性能提升可用空间:N*min(S1,S2…)/2有容错能力:每组镜像最多只能坏1块最少磁盘数:4RAID01:RAID50,RAID-7:JBOD:just a bunch of disks功能:将多块磁盘的空间合并一个大的连续空间使用可用空间:sum(S1,S2..)常用级别:RAID0,RAID1,RAID5,RAID10,RAID50,JBOD实现方式:硬件实现方式软件实现方式CentOS 6上的软件RAID的实现:结合内核中的md(multi devices)mdadm:模式化的工具命令的语法格式:mdadm [mode] <raiddevice> [OPTIONS] <component-device>支持的raid级别,linear,0,1,4,5,6,10模式:创建:-C装配:-A监控:-F管理:-f,-r,-a<raiddevice>:/dev/md#<component-devices>:任意块设备-C:创建模式-n #:使用#个块设备来创建RAID-l #:指明要创建的raid级别-a {yes|no}:自动创建目标raid设备的设备文件-c CHUNK_SIZE:指明块大小-x #:指明空闲盘的个数例如,创建一个10G可用空间的RAID5:-D:显示raid详细信息mdadm -D /dev/md#管理模式:-f:标记指定磁盘为损坏-a:添加磁盘-r:移除磁盘观察md的状态:cat /proc/mdstat停止md设备:mdadm -S /dev/md#watch命令:-n #:刷新间隔,单位是秒watch -n# ‘COMMAND’LVM2:LVM:logical volume manager,version 2dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块/dev/mapper/VG_NAME-LV_NAME/dev/mapper/vol0-root <– /dev/VG_NAME/LV_NAME (/dev/vol0/root)pv管理工具:pvs:简要pv信息显示pvdisplay:显示pv的详细信息pvcreate /dev/DEVICE :创建pvvg管理工具:vgsvgdisplayvgcreate  [-s#[kKmMgGtTpPeE]] VolumeGroupName  PhysicalDevicePath  [PhysicalDevicePath…]vgextend  VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]]vgreduce  VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]]先做pvmovevgremovelv管理工具:lvslvdisplaylvcreate -L #[mMgGtT] -n NAME  VolumeGrouplvremove /dev/VG_NAME/LV_NAME扩展逻辑卷:lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAMEresize2fs /dev/VG_NAME/LV_NAME缩减逻辑卷:umount /dev/VG_NAME/LV_NAMEe2fsck -F /dev/VG_NAME/LV_NAMEresize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAMEmount快照:snapshotlvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name文件系统挂载使用:挂载光盘设备:光盘设备文件:IDE:/dev/dhcSATA:/dev/sr0符号链接文件:/dev/cdrom/dev/cdrw/dev/dvd/dev/dvdrwmount -r /dev/cdrom /media/cdromumount /dev/cdromdd命令:covert and copy a file用法:dd if=/PATH/FROM/SRC of=/PATH/TO/DESTbs=#:block size,复制单元大小count=#:复制多少个bs磁盘拷贝:dd if=/dev/sda of=/dev/sdb备份MBR:dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1破坏MBR中的bootloader:dd if=/dev/zero of=/dev/sda bs=256 count =1 两个特殊设备:/dev/null:数据黑洞/dev/zero:吐零机btrfs文件系统:技术预览版Btrfs (B-tree,Buffer FS,Better FS),GPL,Oracle,2007,CoW核心特性:多物理卷支持:btrfs可由多个底层物理卷组成,支持RAID,以联机,移除,修改.写时复制更新机制(CoW):复制,更新及替换指针,而非就地更新数据及元数据校验码:checksum子卷:sub_volume快照:支持快照的快照透明压缩文件系统创建:mkfs.btrfs-L ‘LABEL’-d <type>:raid0 raid1 raid5 raid6 raid10 single-m <profile>:raid0 raid1 raid5 raid6 raid10 single dup-O <feature>-O list-all:列出支持的所有feature属性查看:btrfs filesystem show挂载文件系统:mount -t btrfs /dev/sdb MOUNT_POINT透明压缩机制:mount -o compress={lzo|zlib} DEVICE MOUNT_POINT子命令:filesystem,device,balance,subvolume压缩,解压缩及归档工具:compress/uncompress:.Zgzip/gunzip:.gzbzip2/bunzip2:.bz2xz/unxz:.xzzip/unzip:.ziptar,cpio1.gzip/gunzip:gzip [OPTION]… FILE…-d:解压缩,相当于gunzip-c:将结果输出至标准输出-#:1-9,指定压缩比zcat:不显示展开的前提下查看文本文件内容2.bzip2/bunzip2/bzcatbzip2 [OPTION]… FILE…-k:keep,保留原文件-d:解压缩-#:1-9,压缩比,默认6bzcat:不显示展开的前提下查看文本文件内容3.xz/unxz/xzcat:xz [OPTION]… FILE…-k:-d:-#:xzcat:不显示展开的前提下查看文本文件内容4.tartar [OPTION]… 1.创建归档:tar -c -f /PATH/TO/SOMEFILE.tar FILE…2.查看归档文件中的文件列表:tar -t -f /PATH/TO/SOMEFILE.tar3.展开归档tar -xf /PATH/TO/SOMEFILE.tartar -xf /PATH/TO/SOMEFILE.tar -C /PATH/TO/DIR-j:bzip2,-z:gzip-J:xzbash脚本编程:if语句,bash -n,bash -x循环:for,while,until循环体:要执行的代码,可能要执行N遍进入条件退出条件for循环:for 变量名 in 列表;do循环体done执行机制:依次将列表中的元素赋值给”变量名”;每次复制后既执行一次循环体;直到列表中的元素耗尽,循环结束列表生成方式:1.直接给出字符串列表2.整数列表1.{start..end}2.$(seq [start [step]] end)3.返回列表的命令:$(COMMAND)4.glob5.变量引用$@,$*Linux程序包管理:API:application programming interfacePOSIX:Protab OS程序源代码 –> 预处理 –> 编译 –> 汇编 –> 链接静态编译:共享编译:.soABI:application binary interfaceWindows与Linux不兼容:库级别的虚拟化:Linux:WINEWindows:cywin系统级开发:CC++应用级开发:JavaPythonPHP二进制应用程序的组成部分:二进制文件,库文件,配置文件,帮助文件程序包管理器:Debian:deb,dptRedhat:rpm:Redhat package managerRPM is package managerGentoo:Archlinux:源代码:name-VERSION.tar.gzVERSION:major.minor.releaserpm包命名方式:name-VERSION-ARCH.rpmVERSION:major.minor.releaserelease.arch:release:release.OS常见的arch:x86:i386,i486,i586,i686x86_64:x64,x86_64,amd64powerrpc:ppc跟平台无关:noarchtestaoo:拆包testapp-VERSION-ARCH.rpm 主包testapp-devel-VERSION-ARCH.rpm 支包testapp-testing-VERSION-ARCH.rpm 包之间:存在依赖关系yum:rpm包管理器的前端工具apt-get:deb包管理器前端工具zypper:suse上的rpm前端管理工具dnf:Fedora 22+ rpm包管理器前端管理工具查看二进制程序所依赖的库文件:ldd /PATH/TO/BINARY_FILE管理及查看本机装载的库文件:ldconfig/sbin/ldconfig -p:显示本机已经缓存的所有可用库文件名及文件路径映射关系配置文件为:/etc/ld.so.conf /etc/ld.so.conf.d/*.conf缓存文件:/etc/ld.so.cache程序包管理:功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷的实现程序包的安装,卸载,查询,升级和校验等管理操作1.程序的组成清单(每个包独有)文件清单安装或卸载时运行的脚本2.数据库(公共)程序包名称及版本依赖关系功能说明安装生成的个文件文件路径及校验码信息管理程序包的方式:使用包管理器:rpm使用前端工具:yum,dnf获取程序包的途径:1.系统发行版的光盘或官方服务器CentOS镜像:http://mirrors.aliyun.comhttp://mirrors.sohu.comhttp://mirrors.163.com2.项目官方站点3.第三方组织Fedora-EPEL搜索引擎:http://pkgs.orghttp://rpmfind.nethttp://rpm.pbone.net4.自己制作建议:检查其合法性来源合法性程序包的完整性CentOS系统上rpm命令管理程序包:安装,卸载,升级,查询,校验,数据维护安装:rpm {-i|–install} [install-options] PACKAGE_FILE …-v:verbose-vv:-h:以#显示程序包管理执行进度:每个#表示%2的进度rpm -ivh PACKAGE_FILE …[install-option]–test:测试安装,但不执行真正安装过程,dry run模式–nodeps:忽略依赖关系–replacepkgs:重新安装–nosignature:不检查来源合法性–nodigest:不检查包完整性–noscripts:不执行程序包脚本片断%pre:安装前脚本 –nopre%post:安装后 –nopost%preun:卸载前 –nopreun%postun:卸载后 –nopostun升级:rpm {-U|–upgrade} [install-options] PACKAGE_FILE …rpm {-U|–upgrade} [install-options] PACKAGE_FILE …upgrade:安装有旧版程序包,则升级,如果不存在旧版程序包,则安装freeshen:安装有旧版程序包,则升级,如果不存在,则不执行升级操作rpm -Uvh PACKAGE_FILE…rpm -Fvh PACKAGE_FILE…–oldpackage:降级–force:强制升级注意:1.不要对内核执行升级操作:Linux支持多内核版本并存,因此,对直接安装新版本内核2.如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留查询:rpm {-q|–query} [select-options] [query-options][select-options]-a:所有包-f:查询指定的文件由哪个程序包安装生成-p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件做查询操作–whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供–whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖[query-options]–changelog:查询rpm包的changlog-c:查询程序的配置文件-d:查询程序的帮助手册-i:information-l:查看指定程序包安装后生成的所有文件–scripts:程序包自带的脚本片断-R:查询指定的程序包所依赖的CAPABILITY–provices:列出指定程序包所提供的CAPABILITY用法:-qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE-qpi PACKAGE_FILE,-qpl PACKAGE_FILE-qa卸载:rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts]           [–notriggers] [–test] PACKAGE_NAME …    校验:    rpm {-V|–verify} [select-options] [verify-options]S file Size differsM Mode differs (includes permissions and file type)5 digest (formerly MD5 sum) differsD Device major/minor number mismatchL readLink(2) path mismatch U User ownership differsG Group ownership differsT mTime differsP caPabilities differ包来源合法性验证及完整性验证:完整性验证:SHA256来源合法性验证:RSA公钥加密:对称加密:加密,解密使用同一密钥非对称加密:密钥是成对的public key:公钥secret key:私钥导入所需的公钥:rpm –import /PATH/FORM/GPG-PUBKEY-FILECentOS 7 发行版光盘提供的密钥文件:RPM-GPG-KEY-CentOS-7数据库重建:rpm {–initdb|–rebuilddb}initdb:初始化如果不存在数据库,则新建rebuilddb:重建无论是否存在,直接重新创建数据库程序包管理2:CentOS:yum,dnfYUM:yellow dog,yellowdog update modifieryum repository:yum repo存储了众多rpm包,以及包的相关元数据文件(放置于特定目录:repodata)文件服务器:ftp://http://nfs://file:///yum客户端:配置文件:/etc/yum.conf:为所有仓库提供公共配置/etc/yum.repos.d/*.repo:为仓库的指向提供配置信息仓库指向的定义[repositoryid]name=Some name for this repositorybaseurl=url://server1/path/to/repository/url://server2/path/to/repository/url://server3/path/to/repository/enabled={1|0}gpgcheck={1|0}gpgkey=URLenablegroups={1|0}failovermethod={roundrobin|priority}默认为roundrobin,随机挑选cost=默认1000yum命令的用法:yum [options] [command] [package …]* install package1 [package2] […]* update [package1] [package2] […]* update-to [package1] [package2] […]* update-minimal [package1] [package2] […]* check-update* upgrade [package1] [package2] […]* upgrade-to [package1] [package2] […]* distribution-synchronization [package1] [package2] […]* remove | erase package1 [package2] […]* autoremove [package1] […]* list […]* info […]* provides | whatprovides feature1 [feature2] […]* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]* makecache [fast]* groups […]* search string1 [string2] […]* shell [filename]* resolvedep dep1 [dep2] […](maintained for legacy reasons only – use repoquery or yum provides)* localinstall rpmfile1 [rpmfile2] […](maintained for legacy reasons only – use install)* localupdate rpmfile1 [rpmfile2] […](maintained for legacy reasons only – use update)* reinstall package1 [package2] […]* downgrade package1 [package2] […]* deplist package1 [package2] […]* repolist [all|enabled|disabled]* repoinfo [all|enabled|disabled]* repository-packages <enabled-repoid> <install|remove|remove-or-reinstall|remove-or-distribution-synchronization> [package2] […]* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]* load-transaction [txfile]* updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all | check-running-kernel]* fssnapshot [summary | list | have-space | create | delete]* fs [filters | refilter | refilter-cleanup | du]* check* help [command]显示仓库列表:repolist [all|enabled|disabled]显示程序包:listyum list [all|glob_exp1] [glob_exp2] […]yum list {available|installed|updates} [glob_exp1] […]安装程序包:install pkg1 [pkg2] […]reinstall package1 [package2] […]  重新安装升级程序包:update [pkg1] [pkg2] […]downgrade package1 [package2] […] 降级检查可用升级:check-update卸载程序包:remove | erase pkg1 [pkg2] […]查看程序包information:info […]查看指定特性(可以是某文件)是由哪个程序包所提供:provides | whatprovides feature1 [feature2] […]清理本地缓存:clean [packages | metadata | expire-cache | rpmdb | plugins | all]构建缓存:makecache搜索:search string1 [string2] […]搜索程序包名及summary信息查看指定包所依赖的capabilitiesdeplist package1 [package2] […]查看yum事务历史:history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]安装及升级本地程序包:localinstall rpmfile1 [rpmfile2] […](maintained for legacy reasons only – use install)localupdate rpmfile1 [rpmfile2] […]包管理的相关命令:groupinstall group1 [group2] […]groupupdate group1 [group2] […]grouplist [hidden] [groupwildcard] […]groupremove group1 [group2] […]groupinfo group1 […]如何使用光盘作为本地yum仓库:1.挂载光盘至某目录,例如/media/cdrommount -r -t iso9660 /dev/cdrom /media/cdrom2.创建配置文件[base]name=CentOS 7 Release 7.2.1511baseurl=file:///mntenabled=1gpgcheck=0yum的命令行选项:–nogpgcheck:禁止进行gpg check-y:自动回答为yes-q:静默模式–disablerepo=repoidglob:临时禁用此处指定的repo–enablerepo=repoidglob:临时启用此处指定的repo–noplugins:禁用所有插件yum的repo配置文件中可用的变量:$releaserver:当前OS发行版的主版本号$arch:平台$basearch:基础平台$YUM0-$YUM9http://mirrors.magedu.com/centos/$releaserver/$basearch/os创建yum仓库:createrepo [options] <directory>程序包编译安装:testapp-VERSION-release.src.rpm –> 安装后使用rpmbuild命令制作成二进制格式的rpm包,而后再安装源代码 –> 预处理 –> 编译(gcc) –> 汇编 –> 链接 –> 执行源代码组织格式:多文件:文件中的代码之间,很可能存在跨文件依赖关系C,C++: make (configure –> Makefile.in –> makefile)java:maven编译安装:./configure1.通过选项传递参数,指定启用特性,安装路径等.执行时会参考用户的指定以及Makefile.in文件生成makefile2.检查依赖到的外部环境make根据makefile文件,构建应用程序make install开发工具:autoconf:生成configure脚本automake:生成Makefile.in建议:安装前查看INSTALL,README开源程序源代码的获取:官方自建站点:apache.org(ASF)mariadb.org代码托管:SourceForgeGithub.comcode.google.comc/c++:gcc (GNU C Complier)编译C源代码:前提:提供开发工具及开发环境开发工具:make,gcc等开发环境:开发库,头文件glibc:标准库通过”包组”提供开发组件1.configure脚本选项:指定安装位置,指定启用的特性–help:获取其支持使用的选项选项分类:安装路径设定:–prefix=/PATH/TO/SOMEWHERE:指定默认安装位置–sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装路径system types:optional features:可选特性–disable-FEATURE–enable-FEATURE[=ARG]optional packages:可选包–with-PACKAGE[=ARG]–without-PACKAGE2.make3.make install安装后的配置:1.导出二进制程序目录至PATH环境变量编辑文件/etc/profile.d/name.shexport PATH=/PATH/TO/BIN:$PATH2.导出库文件路径编辑/etc/ld.so.conf.d/NAME.conf添加新的库文件所在目录至此文件中让系统重新生成缓存:ldconfig [-v]3.导出头文件基于链接的方式实现:ln -sv 4.导出帮助手册:编辑/etc/man.config文件添加一个MANPATH练习:1.yum的配置和使用,包括yum repositroy的创建2.编译安装apache 2.2;启动此服务博客作业:程序包管理 rpm/yum/编译

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,893