软件包管理
一、软件包管理简介
1、软件包分类
- 源码包
- 脚本安装包
- 二进制包(RPM包、系统默认包)
2、源码包
源码包优点:
- 开源,可以修改源代码
- 可以自由选择所需的功能
- 软件是编译安装,所以更加适合自己的系统,更加稳定也更高效
- 卸载方便
源码包的缺点:
- 安装过程步骤较多,尤其安装较大的软件集合时,容易出现拼写错误
- 编译过程时间较长,安装比二进制安装时间长
- 因为是编译安装,安装过程中一旦报错新手很难解决
3、RPM包
二进制包的优点:
- 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
- 安装速度比源码包安装的快
二进制包缺点:
- 经过编译,不再可以看到源代码
- 功能选择不如源码包灵活
- 依赖性
二、RPM包管理-rpm命令管理
2.1、命名与依赖
1、RPM包命名规则
包全名,如:httpd-2.2.15-15.e16.centos.1.i686.rpm
字符 | 含义 |
---|---|
httpd | 软件包名 |
2.2.15 | 软件版本 |
15 | 软件发布的次数 |
e16.centos | 适合的Linux平台 |
ie86 | 适合的硬件平台 |
rpm | rpm包扩展名 |
2、RPM包的依赖性
- 树形依赖: a->b->c
- 环形依赖: a->b->c->a
- 模块依赖: 模板依赖查询网站:http://www.rpmfind.net
2.2、RPM包安装、升级与卸载
1、包全名与包名
- 包全名:操作的包是没有安装的软件包时,使用包全名。要注意路径
- 包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm中的数据库
2、RPM包安装
rpm -ivh 包全名
选项:
-i(install) 安装
-v(verbose) 显示详细信息
-h(hash) 显示进度
–nodeps 不检测依赖性
3、RPM包升级
rpm -Uvh 包全名
选项:-U(upgrade)升级
4、卸载
rpm -e 包名
选项:
-e(erase) 卸载
–nodeps 不检查依赖性
2.3、查询rpm包
查询是否安装
rpm -q 包名
# 查询包是否安装
选项: -q 查询(query)
rpm -qa
#查询所有已经安装的RPM包
查询软件包详情信息
rpm -qi 包名
选项:
-i 查询软件信息(information)
-p 查询未安装包信息(package)
查询包中文件安装位置
rpm -ql 包名
选项:
-l 列表(list)
-p 查询未安装包信息(package)
查询系统文件属于哪个RPM包
rpm -qf 系统文件名
选项: -f 查询系统文件属于哪个软件包(file)
查询软件包的依赖性
rpm -qR 包名
选项:
-R 查询软件包的依赖性(requires)
-p 查询未安装包信息(package)
2.4、RPM包校验和文件提取
1、RPM包校验
rpm -V 已安装的包名
选项: -V 校验指定RPM包中的文件(verify)
验证内容中的8个信息的具体内容如下:
- S 文件大小是否改变
- M 文件的类型或文件的权限(rwx)是否被改变
- 5 文件MD5校验和是否改变(可以看成文件内容是否改变)
- D 设备从代码是否改变
- L 文件路径是否改变
- U 文件的属主(所有者)是否改变
- G 文件的属主(所有者)是否改变
- T 文件的修改时间是否改变
文件类型
- c 配置文件(config file)
- d 普通文档(documentation)
- g “鬼”文件(ghost file),很少见,该文件不应该被这个RPM包包含
- l 授权文件(license file)
- r 描述文件(read me)
2、RPM包中文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径
rpm2cpio # 将rpm包转换成cpio格式的命令
cpio #是一个标准工具,它用于创建软件档案文件和档案文件中提取文件
cpio选项 < [文件|设备]
选项:
-i:copy-in模式,还原
-d:还原时自动新建目录
-v:显示还原过程
示例:
#提取RPM包中ls命令到当前目录的/bin/ls下
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-37.el6.i686.rpm | >cpio -idv ./bin/ls
三、RPM包管理-yum在线管理
3.1、IP地址配置和网络yum源
setup #使用setup工具
vim /etc/sysconfig/network-scripts/ifcfg-eth0
# 把ONBOOT="no"该为ONBOOT="yes",启动网卡
service network restart #重启网络服务
2、网络yum源
vim /etc/yum.repos.d/CentOS-Base.repo
字符 | 说明 |
---|---|
[base] | 容器名称,一定要放在[]中 |
name | 容器说明,可以随便写 |
mirrorlist | 镜像站点,可以注释掉 |
baseurl | yum源服务器地址,默认是CentOS官方的yum源服务器,可以用,也可以改yum源地址 |
enabled | 此容器是否生效,如果不写或写成enable=1都是生效,写成enable=0是不生效 |
gpgcheck | 如果是1,指RPM的数字证书生效,如果是0则不生效 |
gpgkey | 数字证书的公钥文件保存位置,不用修改 |
3.2、yum命令
1、常用yum命令
1)查询
yum list #查询所有可用软件包列表
yum search 关键字 #搜索服务器上所有和关键字相关的包
2)安装
yum -y install 包名
选项:
install 安装
-y 自动回答yes
3)升级
yum -y update 包名
选项:
update 升级
-y 自动回答yes
4)卸载
yum -y remove 包名
选项:
remove 卸载
-y 自动回答yes
2、yum软件组管理
yum grouplist #列出所有可用的软件组列表
# 安装指定软件组,组名可以由grouplist查询出来
yum groupinstall 软件组名
#卸载指定软件组
yum groupremove 软件组名
3.3、光盘yum源搭建
1)挂载光盘
mount /dev/cdrom /mnt/cdrom/
````
2)让网络yum源文件失效
<div class="se-preview-section-delimiter"></div>
```shell
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-Debuginfo repo CentOs-Debuginfo.repo.bak
mv CentOS-Valut.repo CentOS-Value.repo.bak
3)修改光盘yum源文件
vim CentOS-Media.repo
name=CentOS-$releasever -Media
baseurl=file:///mnt/cdrom
#地址为光盘挂载地址
#注释这两个不存在的地址
gpgcheck=1
enabled=1
#把enabled=0改为enabled=1,让这个yum源配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
四、源码包管理
4.1、源码包和RPM包的区别
RPM包安装位置
路径 | RPM包默认安装路径 |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin | 可执行的命令安装目录 |
/usr/lib | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
源码包安装位置
安装在指定位置当中,一般是/usr/local/软件名/
安装位置不同带来的影响
RPM包安装的服务可以使用系统服务管理命令(service)来管理,如:RPM包安装的apache的启动方法是:
/etc/rc.d/init.d/httpd start #绝对路径启动
service httpd start #rehat专有
源码包安装的服务不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理。
4.2、源码包安装过程
1、安装准备
- 安装C语言编译器(gcc)
- 下载源码包http://mirror.bit.edu.cn/apache/httpd/
2、安装注意事项
- 源代码保存位置:/usr/local/src
- 软件安装位置:/usr/local/
- 如果确定安装过程报错:
- 安装过程停止
- 并出现error、warning或no的提示
3、源码包安装过程
- 下载源码包
- 解压缩下载的源码包
- 进入解压缩目录
- ./configure 软件配置与检查
- 定义需要的功能选项。
- 检测系统环境是否符合安装要求。
- 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑。
- make 编译
- make clean
- make install 编译安装
4、源码包的卸载
不需要卸载命令,直接删除安装目录即可,不会遗留任何垃圾文件。
五、脚本安装包与软件包选择
1、脚本安装包
- 脚本安装包并不是独立的软件包类型,常见安装的是源码包。
- 是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。
- 类似于Windows下软件的安装方式。
2、Webmin的作用
- Webmin是一个基于Web的Linux系统管理界面。可以通过图形化的方式设置用户账号、Apache、DNS、文件共享等服务。
3、Webmin安装过程
- 下载软件,http://sourceforge.net/projects/webadmin/files/webmin
- 解压缩,并进入解压缩目录
- 执行安装脚本
文件系统管理
一、分区和文件系统
1.1、分区类型
- 主分区:总共最多只能分4个
- 扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分为逻辑分区才能使用。
- 逻辑分区:逻辑分区是扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘Linux最多支持11个逻辑分区
名称 | 分区的设备文件名 |
---|---|
主分区1 | /dev/sda1 |
主分区2 | /dev/sda2 |
主分区3 | /dev/sda3 |
扩展分区 | /dev/sda4 |
逻辑分区1 | /dev/sda5 |
逻辑分区2 | /dev/sda6 |
逻辑分区3 | /dev/sda7 |
名称 | 分区的设备文件名 |
---|---|
主分区1 | /dev/sda1 |
扩展分区 | /dev/sda2 |
逻辑分区1 | /dev/sda5 |
逻辑分区2 | /dev/sda6 |
逻辑分区3 | /dev/sda7 |
2、文件系统
- ext2:是ext文件系统的升级版本,Red Hat Linux7.2版本以前的系统默认都是ext2文件系统。1993年发布,最大支持16TB的分区和最大2TB的文件。
- ext3:ext3文件系统是ext2文件系统的升级版本,最大的区别就是带日志功能,以在系统突然停止时提高文件系统的可靠性。支持最大16TB的分区和最大2TB的文件。
- ext4:它是ext3文件系统的升级版。ext4在性能、伸缩性和可靠性方面进行了大量改进。EXT4的变化比较大,比如向下兼容EXT3、最大1EB(1EB=1024PB=1024*1024TB)文件系统和16TB文件、无限数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等。是CentOS6.3的默认文件系统。
二、文件系统常用命令
2.1.1、文件系统查看命令df
df [选项][挂载点]
选项:
-a 显示所有的文件系统信息,包括特殊文件系统,比如/proc、/sysfs
-h 使用习惯单位显示容量,如KB,MB或GB等
-T 显示文件系统类型
-m 以MB为单位显示容量
-k 以KB为单位显示容量,默认是以KB为单位
2.1.2、统计目录或文件大小
du [选项][目录或文件名]
选项:
-a 显示每个子文件的磁盘占用量,默认只统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如KB,MB或GB等
-s 统计总占用量,而不列出子目录和子文件的占用量
du命令和df命令的区别
- df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)
- du命令是面向文件的,只会计算文件或目录占用的空间
2.1.3、文件系统修复命令fsck
fsck [选项] 分区设备文件名
选项:
-a:不用显示用户提示,自动修复文件系统
-y:自动修复,和-a作用一致,不过有些文件系统只支持-y
2.1.4、显示磁盘状态命令dumpe2fs
dumpe2fs 分区设备文件名
2.2.1、挂载命令
查询与自动挂载
mount [-l]
# 查询系统中已经挂载的设备,-l会显示卷标名称
mount -a
#依据配置文件/etc/fstab的内容,自动挂载
2.2.2挂载命令格式
mount [-t 文件系统][-L卷标名][-o 特殊选项] 设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
-L 卷标名: 挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项: 可以指定挂载的额外选项
参数 | 说明 |
---|---|
atime/noatime | 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新 |
async/sync | 异步/同步,默认时异步 |
auto/noauto | 自动/手动,mount -a 命令执行时,是否会自动安装/etc/fatab文件内容挂载,默认为自动 |
default | 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项 |
exec/moexec | 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认时exec允许 |
remount | 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限 |
wr/ro | 读写/只读,文件系统挂载时,一般用于指定修改特殊权限 |
suid/nosuid | 具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有 |
user/nouser | 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区 |
usrquota | 写入代表文件系统支持用户磁盘配额,默认不支持 |
grpquota | 写入代表文件系统支持组磁盘配额,默认不支持 |
mount -o remount,noexec /home
#重新挂载/boot分区,并使用noexec权限
cd /home
vim hello.sh
chmod 755 hello.sh
./hello.sh
mount -o remount,exec /home
#实验完,改回,不要影响系统启动
2.3挂载光盘与U盘
2.3.1、挂载光盘
mkdir /mnt/cdrom #建立挂载点
mount -t iso9660 /dev/cdrom /mnt/cdrom/ #挂载光盘
mount /dev/sr0/mnt/cdrom #与上名命令功能相同, /dev/cdrom是/dev/sr0的软链接
2.3.2卸载命令
umount 设备文件名或挂载点
umount /mnt/cdrom
2.3.3挂载U盘
fdisk -l #查看U盘设备文件名
mount -t vfat /dev/sdb1/mnt/usb
#注意:Linux默认是不支持NTFS文件系统的
2.3.4、卸载U盘
umount /dev/sdb1 #sdb1是通过fdisk -l查看到的,具体的要查看
2.4、支持NTFS文件系统
2.4.1、下载NTFS-3G插件
http://www.tuxera.com/community/stfs-3g-download/
2.4.2、安装NTFS-3G
tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz #解压
cd ntfs-3g_ntfsprogs-2013.1.13 #进入解压目录
./configure #编译器准备,没有指定安装目录,安装到默认位置中
make #编译
make install #编译安装
2.4.3、使用
mount -t ntfs-3g #分区设备文件名 挂载点
三、fdisk分区
3.1、fdisk命令分区过程
使用fdisk命令分区:fdisk /dev/sdb
命令 | 说明 |
---|---|
a | 设置可引导标记 |
b | 编辑bsd磁盘标签 |
c | 设置DOS操作系统兼容标记 |
d | 删除一个分区 |
l | 显示已知的文件系统类型。82为Linux swap分区,83为Linux分区 |
m | 显示帮助菜单 |
n | 新建分区 |
o | 建立空白DOS分区表 |
p | 显示分区列表 |
q | 不保存退出 |
s | 新建空白SUN磁盘标签 |
t | 改变一个分区的系统ID |
u | 改变显示记录单位 |
v | 验证分区表 |
w | 保存退出 |
x | 附加功能 |
p:主分区,e:扩展分区,l:逻辑分区
重新读取分区表信息:partprobe
格式化分区: mkfs -t ext4 /dev/sdb1
创建挂载点并挂载
mkdir /disk1
mount /dev/sdb1 /disk1/
3.2、分区自动挂载与fstab文件修复
1、/etc/fstab文件
- 第一字段:分区设备文件名或UUID(硬盘通用唯一识别码)
- 第二字段:挂载点
- 第三字段:文件系统名称
- 第四字段:挂载参数
- 第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
- 第六字段:指定分区是否被fsck检测,0代表不检测,其它数字代表检测的优先级,那么当然1的优先级比2高
2、分区自动挂载
vim /etc/fatab
#在文件中加入以下内容
/dev/sdb1 /disk1 ext4 defaults 1 2
3、/etc/fstab文件修复
mount -o remount,rw/
四、分配swap分区
4.1、free命令
free,查看内存与swap分区使用状况
- cached(缓存):指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程。
- buffer(缓冲):是指在写入数据时,先把分散的写入操作保存到内存当中,当达到一定程度再集中写入硬盘,减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程。
2、新建swap分区
[root@localhost ~]# fdisk /dev/sdb #给swap重新划分一个分区
#记得把分区ID改为82
[root@localhost ~]# partprobe #重新分配,如果不行进行重启
3、格式化
mkswap /dev/sdb6 #格式化swap分区
4、加入swap分区
[root@localhost ~]# swapon /dev/sdb6 #加入swap分区
[root@localhost ~]# swapoff /dev/sdb6 #取消分区
5、swap分区开机自动挂载
vim /etc/fstab
#在文件中写入以下配置
/dev/sdb6 swap swap defaults 0 0
#mount -a #重新挂载,看是否报错