链接文件和Linux中编译安装软件包简介

时间:2022-01-02 10:19:33

一.链接文件的相关介绍:

链接文件分为硬链接文件和软链接文件   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源安装软件了。      

本文出自 “知识体系” 博客,请务必保留此出处http://linuxg.blog.51cto.com/4410110/793547