一.链接文件的相关介绍:
链接文件分为硬链接文件和软链接文件
1.硬链接文件:所谓硬链接就是指同一分区不同目录中的文件指向的是同一个inode
创建硬链接的格式: ln [options] sourcefile destinationfile
如: ln init init2
注意:(1)硬链接不能跨分区存在,也不能对目录创建硬链接
(2)硬链接引用的是inode号,硬链接文件的inode号是一样的
(3)如果要删除硬链接,只是将硬链接的次数删除了,inode号不变,源文件不会删除
2.软链接文件:是一种特殊类型的文件,有箭头指向,是一个独立的文件,自身没有任何属性
它的大小只是引用路径的字符个数。
创建软链接文件格式:ln -s sourcefile destinationfile
注意:(1)软链接文件有自己的独立的inode号
(2)软链接可以跨分区存在,也可以对目录创建软链接
(3)软链接文件引用的是路径,不是inode号
(4)软链接文件的访问权限取决于源文件的权限,删除软链接文件,源文件不会被删除,
但是删除了源文件,软链接将不可使用,系统会使用红色闪动方式告诉你那是一个损坏的软链接文件。
(5)如果软链接的源文件被删除了,凑巧在源文件所在目录下又被创建了一个和源文件同名的文
件,那么被损坏的软链接就会转为正常,因为软链接引用的是路径,不是inode,只要路径在,就可用。
二.Linux软件包的安装
linux中的许多外围软件都是遵循GPL协定的,是开源的代码包,而将这些源代码包编译成二进制,并组织到一台计算机上
让它们运行起来,形成一个功能完善的操作系统,对大多数用户来说是很困难的。所以有很多发行商,在特定的平台上将这些
源码包编译成二进制形式,并提供相应的配置文件,帮助手册等,将它们打包成光盘,成为发行版。
Debian 是有名的linux发行商之一,这些发行商将这些源码包编译成二进制格式之后,提供一种管理工具,这种工具可以实现将
这些制作好的二进制格式的软件包以某种形式封装起来,这种封装起来的结构能实现对特定软件包的安装、卸载、查询、校验
升级等各种管理功能,这个管理工具就称为软件包管理器。
作为Linux发行商的Redhat提供的软件包管理工具rpm (Redhat Package Manager),有了这样一个软件包管理器,我们就可以
方便的使用一个命令来实现一个软件包的安装、卸载、查询、校验、升级,使软件包的安装在某种程度上变得很方便和简单,而一
个单独的rpm软件包的运行可能是独立的,也可能是和别的软件包有着依赖关系。这种依赖关系使得安装一个rpm包要同时安装其他
被rpm包所依赖的软件包,很费时费力,有时候甚至是循环依赖。rpm的依赖关系很让人头疼,阻碍了软件包管理的便捷性和发展。
后来陆续出现了一些前段工具,它们可以自动解决依赖关系,如yum
软件包的组成:二进制文件、配置文件、库文件、文档(包括man手册、info文档等等)
软件包的安装方式:
1.手动编译安装源代码,编译很困难,管理起来也很困难,对普通用户来说更是不太可能
2.使用专门的软件管理工具,二进制格式的软件包rpm,解压直接使用,但是制作和编译很困难
那么如何使用rpm来管理软件包,下面就开始介绍:
1.安装:
rpm -i /path/rpm_package 直接安装
rpm -ivh /path/rpm_package 显示详细安装信息
rpm -ivh --nodeps(此选项是忽略依赖关系) /path/rpm_package 忽略依赖关系来安装软件包
2.卸载:
rpm -e --nodeps rpm_packagename 忽略依赖关系强行卸载
3.升级:
rpm -Uvh /path/rpm_package
-U选项表示如果要升级的软件包老版本没有安装,就将其装上,如果老版本已经装上了,就升级
rpm -Fvh /path/rpm_package
-F选项表示在升级前老版本的软件包必须已经安装了,否则无法升级
4.查询:
rpm -q rpm_packagename 查询指定的软件包是否安装
rpm -qa 查询系统上所有安装的软件包 ,
-qa keyword(*,?) 如:rpm -qa *bash* 查询所有bash类的软件包
-qi rpm_packagename 显示软件包的摘要信息
-ql rpm_packagename 列出软件包生成列表信息
-qc rpm_packagename 只显示软件包安装后的配置文件
-qd rpm_packagename 显示软件包安装后的生成文档
-q --scripts rpm_packagename 显示软件包安装的时候执行了哪些脚本
-qf FILENAME 查询某个文件是由哪个软件包生成的
-q --changlog rpm_packagename 显示在制作过程中软件包发生了什么改变
也可以查询一个还没有安装的软件包的信息:
rpm -qpi /path/rpm_package 摘要信息
-qpl /path/rpm_package 生成列表信息
-qpc /path/rpm_package 配置文件信息
-qpd /path/rpm_package 生成文档信息
5.校验:
rpm -V rpm_packagename
当我们执行rpm -V rpm_packagename 后会出现一些"S......T"信息,这些信息所代表的意思:
S : 文件大小发生改变
M : 权限和文件类型发生了改变
5 : 表示MD5的校验值发生了改变
D : 设备文件的主设备号和次设备号发生了改变
L : readlink的路径不匹配
U : 文件的属主发生了改变
G : 文件的属组放生了改变
T : 最近一次的修改时间发生了改变
6.软件包的验证:
rpm -K packagename
如果验证通不过,说明还没有导入redhat官方的公钥,redhat官方的公钥在/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
路径下
导入公钥:
rpm --improt /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
此时如果再进行验证,就可以验证通过了。验证的签名有很多种,如dsa,sha1,md5,gpg等
如果不想验证信息摘要,可以这样:
rpm -K --nodigest packagename 此时会忽略sha1和md5
如果不想验证签名,可以这样:
rpm -K --nosignature packagename 此时会忽略dsa和gpg
三. yum :也是以一种软件包的安装工具,是rpm包的前端工具,能自动解决依赖关系,使用yum安装的软件包必须是rpm格式的。
1.yum客户端的配置文件由两部分组成:/etc/yum.conf 、 /etc/yum.repos.d/*.repo,以.repo结尾的,就是定义yum源指向的配置文件
通常只有一个。
使用格式:
yum install /path/to/rpm_file
需要注意的是,此时的这个软件包(rpm_file)已经下载到本地了,它会自动解决依赖关系。前提是yum源已经配置好了,并且指定到特殊
的yum库,它会自动找到所依赖的软件包。
2.使用yum localinstall 安装软件包
格式:yum localinstall /path/to/rpm_file
当我们去安装一个第三方提供的rpm软件包,这个rpm软件包不在光盘当中,但是这个第三方rpm包会依赖于我们光盘上的某些rpm包时,我
们把我们的yum源配置好,并且指向系统光盘上的所提供的基本rpm包,使用yum localinstall 安装下载的第三方软件包时,它会自动解决
依赖关系。所以使用rpm装不了的软件包,使用yum localinstall 可以安装
注意:当我们使用yum localinstall 来安装某个软件包时,默认yum会检测这个软件包的来源合法性(检验其签名和完整性)如果没有导入
(如何导入前面有介绍)这个软件包制作者的公钥信息,就无法完成安装。
遇到这种情况有两种解决办法:(1)导入这个软件制作者的公钥信息,检测其合法性(2) 使用yum --nogegcheck localinstall ,不检测其签名
3.创建本地yum源方法:
(1)事先创建一个目录,比如就是这个目录吧,/var/yum
(2)将要当做yum源的软件包复制到该目录之下
(3)然后使用createrepo path 创建yum源,当然此时应该是 createrepo /var/yum
需要说明的是:此时如果你的createrepo 软件包没有安装,就无法使用createrepo 创建yum源,要安装之后才能创建本地yum源,安装createrepo
软件包很容易,可以使用系统光盘上自带的软件包安装它,安装方法如下:
如果你的系统光盘已经挂载到某个目录下,如/media/cdrom下 ,进入到这个目录下的Server目录,createrepo文件就在这个目录之下,直接使用
rpm命令就可以安装它。rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm
(4)切换到/var/yum/ 目录下,此时repodata目录已经存在了,repodata目录下已经有了filelists.xml.gz、other.xml.gz、primary.xml、repomd.xml
四个必备文件。
(5)切换到/etc/yum.repos.d/目录下,创建一个以.repo结尾的文件(其中rhel-debuginfo.repo是默认有的,除此之外只能有一个以.repo结尾的文件)
然后使用vim编辑器打开这个以.repo结尾的文件,在里面写如下内容:
[localyum]
name=localyum
baseurl=file:///var/yum
gpgcheck=0
enabled=1
保存后退出。
其中 [localyum] 是yum源名称,([main]不能使用,其他都可以用);
name=localyum 是用来指定yum源的完整名称的;
baseurl=file:///var/yum 是本地yum源指向,一定是绝对路径(是repodata 所在的那个路径),如果不是本地yum源,它支持ftp和http协议
如:baseurl=ftp://172.16.0.1/yum/VT 、baseurl=http://172.16.0.1/yum/Server ,/yum/VT和/yum/Server是yum源所在路径.
gpgcheck=0 表示是检测签名的,0表示不检查,1表示检查
enabled=1 表示是否启用此yum源,1表示启用,0表示不启用
(6)然后使用yum repolist 命令,会显示所有已安装的yum源,localyum 就会出现了,表示本地yum源已经创建成功.就可以使用yum源安装软件了。