Linux应用程序基础
Linux应用程序与命令的关系
文件位置
系统命令:一般在/bin和/sbin目录中,或为Shell内部指令
应用程序:通常在/usr/bin和/usr/sbin目录中
主要用途
系统命令:完成对系统的基本管理工作,例如IP配置工具
应用程序:完成相对独立的其他辅助任务,例如网页浏览器
适用环境
系统命令:一般只在字符操作界面中运行
应用程序:根据实际需要,有些程序可在图形界面中运行
运行格式
系统命令:一般包括命令字、命令选项和命令参数
应用程序:通常没有固定的执行格式
典型应用程序的目录结构
文件类型 | 保存目录 |
---|---|
普通执行程序文件 | /usr/bin |
服务器执行程序文件和管理程序文件 | /usr/sbin |
应用程序配置文件 | /etc |
日志文件 | /var/log |
应用程序文档文件 | /usr/share/doc |
应用程序手册页文件 | /usr/share/man |
Linux应用程序组成软件包管理概述
- 在Linux系统中,用户可以直接编译软件的源代码来安装软件,也可以使用软件包管理器来安装或管理软件,它与直接从源代码安装相比,软件包管理有着下面的优点:
- 易于更新已安装的软件包;
- 易于保护配置文件;
- 易于跟踪已安装文件
- RHEL7使用的软件包管理器一般有两个:
- 1、RPM包管理器;
- 2、YUM包管理器。
软件包的封装类型
封装类型 | 说明 |
---|---|
rpm软件包 | 扩展名为“.rpm” |
deb软件包 | 扩展名为“.deb” |
源代码软件包 | 一般为“.tar.gz”、“.tar.bz2”等格式的压缩包 包含程序的原始代码 |
提供安装程序的软件包 | 在压缩包内提供install.sh、setup等安装程序 或以“.bin”格式的单个执行文件提供 |
绿色免安装的软件包 | 在压缩包内提供已编译好的执行程序文件 解开压缩包后的文件即可直接使用 |
RPM包的管理
rpm包管理器的概述
- RPM全称是Red Hat Package Manager(Red Hat包管理器)。
- 在Linux操作系统中,软件包的安装其实是文件的拷贝,即把软件所用的各个文件拷贝到特定目录。当然RPM安装软件包,也不例外。但RPM更“先进”一些,因为它在安装前,还会执行检查软件包的依赖(Dependency)、检查软件包的冲突(Conflicts)。最后才将软件包里面的相关文件解出并存放到相应位置。
- rpm数据库:/var/lib/rpm
rpm软件的命名
- 在Redhat Linux中,其rpm包的命名规则为:
- 软件名-版本号-释出号.体系号.rpm
例: zsh-4.2.6-1.i386.rpm
zsh为软件名;
4.2.6为版本号 (4为主版本号、2为次版本号、6为修订版本号) ;
1为释出号(发布号);
rpm为扩展名
rpm包的安装
- 通过RPM来安装软件包的指令与语法如下:
- rpm <选项> <软件包名>
- 安装选项
- -i 安装一个以前从未安装过的软件包。
- 例如:rpm –i zsh-4.2.6-1.i386.rpm
- 其它配用选项
- -v 将安装过程打印在屏幕上;
- -vv: 更详细的过程
- -h 以hash字符“#”显示安装进度条;
- –nodeps: 忽略依赖关系;
- –replacepkgs: 重新安装,替换原有安装;
- –force: 强行安装,可以实现重装或降级;
[root@localhost ~]# rpm -ivh lynx-2.8.5-28.1.i386.rpm
warning: lynx-2.8.5-28.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:lynx ########################################### [100%]
rpm包的卸载
- 通过RPM来卸载软件包的指令与语法如下:
- rpm <选项> <软件名>
- 卸载选项
- -e 卸载一个已经安装过的软件包。
- 例如:rpm –e zsh
- 注意
- rpm对一个未安装的软件包进行操作,参数为软件包名。
- rpm对一个已经安装过的软件包进行操作,参数为软件名。
[root@localhost ~]# rpm -q lynx
lynx-2.8.5-28.1
[root@localhost ~]# rpm -e lynx
[root@localhost ~]# rpm -q lynx
package lynx is not installed
rpm包的升级
- 通过RPM来升级软件包的指令与语法如下:
- rpm <选项> <软件包名>
- 升级选项
- -U 对一个已经安装的旧版本软件包进行升级(如果以前没有安装过此包则安装它)。
- -F 对一个已经安装的旧版本软件包进行升级。
- 其它配用选项
- –force 强制执行,它与-Uvh组合使用可重新安装某个已经安装的软件包当中丢失的文件。
- –nodeps:安装、升级或卸载软件时,忽略依赖关系
[root@localhost ~]# rpm -i wget-1.10.2-3.2.1.i386.rpm
[root@localhost ~]# rpm -q wget
wget-1.10.2-3.2.1
[root@mail ~]# rpm -Uvh /media/cdrom/wget-1.10.2-7.el5.i386.rpm
warning: /media/cdrom/wget-1.10.2-7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:wget ########################################### [100%]
[root@localhost ~]# rpm -q wget
wget-1.10.2-7.el5
- 安装有依赖关系的多个软件时
- 被依赖的软件包需要先安装
- 同时指定多个.rpm包文件进行安装
- 卸载有依赖关系的多个软件时
- 依赖其他程序的软件包需要先卸载
- 同时指定多个软件名进行卸载
- 忽略依赖关系
- 结合“–nodeps”选项,但可能导致软件异常
rpm的查询
- 通过RPM来查询的指令与语法如下:
- rpm <选项> <软件名|软件包名|文件名>
- 查询选项
- –q 软件名:查询某一个RPM包是否已安装
- –qi 软件名:查询某一个RPM包的详细信息
- –ql 软件名:列出某RPM包中所包含的文件
- –qf 文件名:查询某文件属于哪一个RPM包
- –qa :列出当前系统所有已安装的包
- –qip 软件包:列出未安装RPM包的详细信息
- –qlp 软件包:列出未安装RPM包中的文件
- -q --scripts 软件包: 查询指定包中包含的脚本
#查询是否已安装有bash软件包
[root@localhost ~]# rpm -q bash
bash-3.1-16.1
[root@localhost ~]# rpm -qa | grep bash
bash-3.1-16.1
#查询vim是由哪个软件包安装的
[root@localhost ~]# rpm -qf /usr/bin/vim
vim-enhanced-7.0.109-3
#查询dhcp软件包安装的文件列表
[root@localhost ~]# rpm -ql dhcp
/etc/dhcpd.conf
/etc/rc.d/init.d/dhcpd
……
#查询lynx软件安装包的摘要信息
[root@localhost ~]# rpm -qpi lynx-2.8.5-28.1.i386.rpm
warning: lynx-2.8.5-28.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Name : lynx Relocations: (not relocatable)
Version : 2.8.5 Vendor: Red Hat, Inc.
Release : 28.1 Build Date: 2006年07月13日 星期四 14时10分20秒
……
#查询lynx安装包中的文件列表
[root@localhost Server]# rpm -qpl lynx-2.8.5-28.1.i386.rpm
/etc/lynx-site.cfg
/etc/lynx.cfg
……
rpm包的检查
- 从互联网上下载的软件包,我们应该对下载的软件包进行检查。
- 通过RPM来检查软件包的指令与语法如下:
- rpm <选项> <软件包名>
- 检查选项
- -K 检查RPM包的GPG签名
- 注意
- 在检查之前应该先导入红帽官方的GPG KEY文件。
- GPG KEY文件在官方的安装光盘上与系统中都有。
- rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
rpm的校验
- 当一个软件包被安装后,用户可以对其进行检验,以检测软件是否被用户修改过。
- 通过RPM来校验软件包的指令与语法如下:
- rpm <选项> <软件名>
- 校验选项
- -V 校验软件;-Va 校验所有软件
- 校验出被修改地方
- S 文件大小;M 文件权限与类型;5 MD5求和;U 文件的所属用户;G 文件的所属组;T 更改时间
rpm的重建数据库
- rpm
- –rebuilddb: 重建数据库,一定会重新建立;
- –initdb:初始化数据库,没有才建立,有就不用建立;
- rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: 导入密钥文件
普通软件源码包的编译安装方法
Linux 上面的套件几乎都是经过 GPL 的授权,所以每个套件几乎均提供原始程序代码,并且您可以自行修改该程序代码,以符合您个人的需求。
一个文件能不能被执行看的是有没有可执行的那个权限( 具有 x 权限 ),不过,Linux 系统上真正认识的可执行文件其实是二进制档案( binary file ) 。
使用文书处理器(例如vi) 来进行程序的撰写,写完的程序就是所谓的原始程序代码,这个程序代码档案其实就是一般的纯文字文件( text file )。在完成这个原始码档案的编写之后,再来就是要将这个档案『编译』成为操作系统看的懂得 binary file !而要编译自然就需要『编译器』来动作,经过编译器的编译之后,就会产生一支可以执行的 binary file 。
源程序编译执行简单方法–make
- make 的功能是可以简化编译过程里面所下达的指
令,同时还具有很多很方便的功能!make 会主动的去判断每个目标文件相关的原始码档案,并直接予以编译,最后再直接进行连结的动作!
例子
Tarball 安装的基本步骤:
1、将 tarball 档案在 /usr/local 目录下解压缩;
2、进入新建立的目录底下,去查阅 INSTALL 与 README 等相
关档案内容;
3、根据 INSTALL/README 的内容察看并安装好一些相依的套
件( 非必要 );
4、执行./configure 以自动侦测程序( configure 或 config )侦测
作业环境,并建立 Makefile 这个档案;
5、执行make,以 make 这个程序并使用该目录下的 Makefile 做
为他的参数设定档,来进行 make ( 编译或其它 )的动作;
6、执行make install以 make 这个程序,并以 Makefile 这个参
数设定档,依据 install 这个标的( target )的指定来安装到正
确的路径!
编译与安装
编译前配置
./configure 配置参数...
编译,将高级语言转换长二进制代码
make
安装应用程序二进制代码
make install
软件安装步骤
源代码安装
指将源代码文件在本机编译成二进制文件的安装过程
通常所具备的几个步骤为:
1 下载
以源代码方式发布的软件包通常是以.tar.gz、.tar.bz2 或 .tgz扩展名结尾的单个压缩文档
2 解包
tar -zxvf ==> *.tar.gz 、*.tgz
tar -jxvf ==> *.tar.bz2
unzip ==> *.zip
3 阅读必要的文档
解包源代码之后,可以进入解包的目录并检查其中的内容。最好是能找到所有与安装有关的文档。通常,这一信息可以在位于主源代码目录的 README 或 INSTALL 文件中找到。
另外,可以查找 README.platform 和 INSTALL.platform 文件,这里的 platform 通常是特定操作系统或计算机架构的名称。
4 配置
./configure
eg:
./configure --prefix=/usr/local/mysql
配置过程完成后,配置脚本将它所有的配置数据存储在一个名为 config.cache 的文件中。如果在更新系统配置后需要再次运行 ./configure,请确保您先执行 $rm config.cache 命令;否则配置脚本将只使用旧的设置而不重新检查系统。
5 编译并安装
make //编译
make check //检查
make install //安装,需要root权限
make clean //卸载
标准源码包安装
一、什么是标准的源码包呢?
就是解压后里面有两个文件:README 和Makefile
二、安装源码包
1 先解压 tar -jxvf mplayer-1.0.20060415.tar.bz2
2 然后进入该目录 执行:
./configure --prefix=/usr/local/程序名
3 编译: make
4 安装: make install
5 进入:/usr/local/程序名 就可以执行该程序
非标准源码包编译与安装
一:如果后缀是.bin则表示是二进制文件,直接可以执行,如果没有执行权限,这个时候就需要给一个权限chmod -u+x 包名。
二:为了执行方便 我们给程序建立一个快接方式:ln -s 程序的执行路径 /root/.gnome-desktop/
三:如果其他非标准的软件包,则需要根据安装说明来安装。
二进制包
- 在LInux系统中,扩展名为.bin的文件是二进制文件,它也是源程序经编译后得到的机器语言。有一些软件可以发布为以.bin为后缀的安装包。
- 安装很简单,将下载下来的*.bin文件加上可执行的权限,然后输入其路径便可以执行安装。
- 下面以流媒体播放器RealONE for Linux为例来安装二进制软件包。
- 下载二进制包:http://www.real.com/linux
- chmod 755 RealPlayer11GOLD.bin
- ./RealPlayer11GOLD.bin
- 下面以流媒体播放器RealONE for Linux为例来安装二进制软件包。
使用YUM来管理软件包
YUM概述
- yum是Yellow dog Updater Modified的简称
- yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以通过http或ftp共享出来,也可以是本地软件池。
- 在软件仓库中包括了所有RPM包的头信息(header)描述,比如依赖性等。
- 客户端在第一次安装的时候就会去下载header文件并加以分析,这样才能自动地从服务端下载相关软件,并一条龙地完成安装任务。
YUM客户端配置
- yum仓库中的元数据文件:
- primary.xml.gz
- 所有RPM包的列表;
- 依赖关系;
- 每个RPM安装生成的文件列表;
- filelists.xml.gz
- 当前仓库中所有RPM包的所有文件列表;
- other.xml.gz
- 额外信息,RPM包的修改日志;
- comps*.xml
- RPM包分组信息
- primary.xml.gz
repomd.xml
记录的是上面三个文件的时间戳和校验和;
- yum客户端的配置文件放在本地的/etc/yum.repos.d/*.repo
- 配置文件的格式为
[仓库名1]
name=仓库描述
baseurl=仓库位置
enabled=0/1(0:不激活配置;1:激活此配置)
gpgcheck=0/1(0:安装前不对RPM包检测1:返之进行检测)
gpgkey=GPG文件的位置
[BASE]
name=Red Hat Enterprise Linux Server
baseurl=ftp://192.168.0.254/pub/rhel6/dvd
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
制作本地yum源
首先确保自己的系统上安装了一下软件包
yum-3.2.19-18.el5
yum-security-1.1.16-13.el5
yum-updatesd-0.9-2.el5
yum-rhn-plugin-0.5.3-30.el5
yum-metadata-parser-1.1.2-2.el5
安装后会在在/etc/yum.repos.d/下生成一个rhel-debuginfo.repo文件
然后使用光盘或镜像
挂载到系统中
#mkdir /mnt/cdrom
#mount /dev/cdrom /mnt/cdrom
然后编辑一个配置文件
#vim /etc/yum.repos.d/local.repo添加一下内容
[base]
name=server
baseurl=file:///mnt/cdrom/Server
enabled=1
gpgcheck=0
YUM安装
- 通过yum来安装软件
- 语法:yum <选项> <软件名|组名>
- 安装选项
- install <软件名> 安装指定的安装包package
- localinstall <软件包> 本地安装软件包
- groupinstall <组名> 组安装
- -y 自动回答为yes
- 补充说明
- install是客户端从远程仓库中下载软件并安装
- localinstall 是安装一个本地已经下载来的的软件包。
- groupinstall 如果仓库为软件包分了组,则可以通过安装此组来完成安装这个组里面的所有软件包
YUM升级
- 通过yum来升级软件
- 语法:yum <选项> [软件包|软件名|组名]
- 升级选项
- update 更新全部可以更新的软件包
- update <软件名> 更新指定程序包package
- check-update 检查系统中可以被升级的软件包。
- groupupdate <组名> 升级组group1 里面的软件包
- update_to 升级为指定版本
YUM卸载
- 通过yum来卸载软件
- 语法:yum <选项> <软件名|组名>
- 卸载选项
- remove <软件名> : 卸载软件包package1
- erase <软件名> : 卸载软件包package1
- groupremove <组名> :卸载组group1里面所包括的软件包。YUM查询
YUM查询
-
语法:yum <选项> [软件包|软件名|组名]
-
查询选项
- info <软件名> :显示安装包信息
- list :显示所有已经安装和仓库中可以安装的程序包
- all
- available:可用的,仓库中有但尚未安装的
- installed: 已经安装的
- updates: 可用的升级
- list <软件名> :显示指定软件包安装情况
- grouplist :显示仓库中有哪些组
- deplist <软件名> :查看程序package1依赖情况
- groupinfo <组名> :显示程序组group1信息
- search <关键字>:查找软件包
- provides| whatprovides: 查看指定的文件或特性是由哪个包安装生成的;
YUM清理缓存
- clean: 清理缓存
- [ packages | headers | metadata | dbcache | all ]