[TOC]
Linux应用程序基础
查询RPM软件包信息
安装、升级、卸载、RPM软件包 yum仓库,就是程序的位置
源代码编译安装
(后期 学习 java se基础语言)
一:Linux应用程序基础
1.1:应用程序与系统命令的关系
方面 |
系统命令 |
应用程序 |
文件位置 |
一般在/bin和/bin目录中,或为Shell内部指令 |
通常在/usr/和/usr/local目录中 |
主要用途 |
完成对系统的基本管理工作,例如IP配置工具(ifconfig) |
完成相对独立的其他辅助任务,例如网页浏览器,腾讯QQ |
适用环境 |
一般只在字符操作界面中运行 |
根据实际需要,有些程序可在图形界面中运行 |
运行格式 |
一般包括命令字、命令选项和命令参数 |
通常没有固定的执行格式 |
关系 |
是独立的 |
相对独立,多个文件支撑一个任务应用程序 |
1.2:典型应用程序的目录结构


--prefix=" 自定义安装" 用手动编译安装
/var/log 日志文件是共享的
1.3:常见的软件包封装类型

rpm:自动安装包,把安装过程的各种操作编译封装到里面,适合新手使用
deb:在乌班图(ubuntu,是界面)系统中使用,不在centos中使用
题外话:1.LINUX家族,下面Redhat,红帽 三个认证(开源但是不是免费,基础服务免费)
2.因为红帽的这个原因,有人不爽,就由此产生了社区(系统开发者,都是大佬),他们设计了centos
服务器中用centos的多,政府不差钱,用的红帽的多
有一个面向客户端的linux系统的是ubuntu系统(最好用),开源,纯免费,特别适用于软件开发人群
全球中最好用,中国用不了,因为长城防火墙挡住了
3.debian,是linux的早期版本系统,是乌版图的前身,服务端和客户端都具备功能后来衍生出了乌版图和kaili
4.kaili是专用的工具,包括**
kaili占用资源很少,通常是安装在树莓派中
5.suse是德国的linux系统,被ISP运营商所使用(电信,移动,联通) 定制版
源代码软件包:原始代码,是人能看得懂的
jazz——————class,class看不懂,是机器能识别的
绿色免安装的软件包:解压后可以直接使用
1.4RPM包管理工具


yum可以解决RPM的依赖关系
红色是名字,版本号,发布次数

版本号第一个是大版本,第二个是小版本
i386,i686出现,就代表是32位系统
64位可以最大支持2t内存,瓶颈在于读写
现在已经有了内存数据库,redis
服务器只能插半高显卡
二:查询RPM软件包信息
2.1:查询已安装的RPM软件信息
rpm -q【子选项】 【软件名】
-q 查看基本信息,是否安装

常用选项
-qa 查看系统已安装的软件包
grep 过滤筛选

-qi 查看已安装的软件包的详细信息

-ql 查看软件包安装的所有的文件
-qf 根据指定的文件,去查看它属于哪个软件包

-qc 查看软件包的所有配置文件 (配置文件后缀 conf,cnf,ini;前两个看得多,PHP的文件是inin)

-qd 查看软件包的文档
2.2 查询未安装的RPM软件包文件中信息
rpm -qp 【子选项】RPM包文件
常用选项
-qpi 查看未安装的软件包的详细信息
-qpl 查看未安装软件包的所有文件
-qpc 查看未安装软件包的所有配置文件 (配置文件后缀 conf,cnf,ini;前两个看得多,PHP的文件是inin)
-qpd 查看未安装软件包的文档
三:安装、升级、卸载RPM软件包
3.1:安装或升级RPM软件包
安装或升级RPM软件
rpm 【选项】 RPM包文件
常用选项
-i install 安装
-U 更新
-F
3.2:卸载指定的RPM软件
rpm -e 软件名
-e 卸载
3.3 辅助选项
--force 强制执行
--nodeps 解决依赖性关系(但是基本上没啥用)
-h 友好显示(即以#号键显示安装进度条)
-v 显示详细过程信息

rpm -qd httpd 查看httpd的安装包的文档
yum remore httpd -y 重新安装httpd
rpm -ivh 安装
rpm -evh 卸载
windows做共享
1.用户和组配置
2.本地策略配置
开启来宾访问权限

安全选项,

3.高级共享设置

4.共享文件属性



smbclient -L //192.168.100.3/ 进入主机的共享中心

最后的步骤:mount.cifs //192.168.100.3/rhel6 /mnt,把共享文件夹rhel6挂载到mnt文件夹上


查看挂载:df -h

解除挂载:umount /mnt
3.4:维护RPM数据库

init 初始化的意思,rebuild重建 database,数据库
导入验证公共密钥 --import 导入的意思,仅作校验作用,没有其他作用
点开虚拟机,此时录视频,如何把镜像文件挂载进去,在右下角cd中,虚拟机设置,

有绿色亮点代表已经运行,接下来进行挂载
之前讲的是共享文件挂载
cd /dev/

mout 设备名称 挂载点(本地目录)
mount /dev/sr0 /mnt/

RPM-GPG-KEY-CentOS-7是公钥

packages 软件包
h友好显示读条

按两下tab,显示

bind是一个dns软件包


查看软件的配置文件


yum仓库可以解决这种依赖关系
yum仓库分两种,一种是私网仓库,公网仓库(自建仓库,官方仓库),在没有网的情况下,自己搭建
今天学习搭建私网仓库
yum list,在有网的情况查看公网仓库









免交互,就是提前同意

没网络下便搭建本地yum仓库


清空yum缓存 yum clean all
cd /etc
后缀是repo yum配置文件

新建一个bak目录,把公网yum数据放进去


重新建一个yum.repos.d文件,写入信息
【abc】 描述信息
name=test 名字叫做test
baseurl=file:///mnt 软件包所在路径
enabled=1 开启软件仓库,0就是不开启
gpgcheck=0 不检查验证密钥,1就是开启,如果开启的话还需要再写入公钥,为了省事就直接关闭就可以

保存退出
安装bind,yum install bind -y

安装httpd yum install httpd -y

出现错误,可能是本地映像文件的包并不太全,或者是之前安装过不同的版本


取消本地yum仓库,思路是把之前创建的文件删掉,放到bak的文件恢复原来路径

每切换一次仓库,就需要清空一次yum缓存 yum clean all
之后再连上网络的情况下,去看公网仓库,yum list

3.5解决软件包依赖关系方法
1)安装有依赖关系的多个软件时
-
被依赖的软件包需要先安装
- 可同时指定多个.rpm包文件进行安装
2)卸载有依赖关系的多个软件时
-
依赖其他程序的软件包需要先卸载
- 可同时指定多个软件名进行卸载
3)忽略依赖关系
重点记住:
四:源代码编译安装
4.1:源代码编译概述
1)使用源代码安装软件的优点
-
获得最新的软件版本,及时修复bug
- 根据用户需要,灵活定制软件功能
2)应用场合举例
-
安装较新版本的应用程序时
-
当前安装的程序无法满足需要时
- 需要为应用程序添加新的功能时
源代码安装模式可以视为iDIY模式,可以自定义自己的需要安装,依据官方发布的对应版本的软件手册操作
4.2:编译安装源代码包
1)Tarball封包
-
.tar.gz和.tar.bz2格式居多
- 软件素材参考:http://sourceforge.net
2)完整性校验

除此之外还有zip压缩包, unzip 解压命令 -d 指定解压为位置
unzip 软件包名 -d 解压至指定路径
挂载mount.cifs //192.168.100.3/rhel7 /abc

yum install gcc gcc-c++ 使用yum自动安装gcc gcc-c++ 编译器

4.3:编译安装过程


4.4 手工编译安装四步骤
(1) tar解包
1)习惯上将软件包释放到/usr/src/目录
2)解包后的软代码文件位置:
3)实例

(2)./configure 配置
1)使用源码目录中的configure脚本
2)执行“./configure 00help”可查看帮助
3)典型的配置选项
4)示例

(3)make编译(make是转编译的过程)
执行make命令
(4)make安装
执行make install 命令
示例

安装后的测试、应用、维护软件
使用前

启动Apa'che

运行lynx 127.0.0.1查看本机Apache运行状态
httpd.conf httpd 配置文件
apachectl start
手工编译安装步骤小结
先挂载,在宿主机共享目录内找到要安装的压缩包(把宿主机rhel6 挂载到abc文件夹内)




-
4:make编译

先安装环境包,即编译器等相关软件
pcre作用在网页当中的语言
zlib是网页压缩处理的图片传输


中间可能会出现一些报错问题:环境包问题,配置格式问题,功能性方面问题(软件版本,是否支持功能)


make install 命令

1:找到服务配置文件,修改功能 conf配置文件

修改IP地址(在这里每一行的前面若是有#键,则代表是注释行,不发挥功能,若要发挥功能,则要取消注释#键)


开启端口

查看对应80端口是否启用
关闭防火墙
htdocs 网页目录,包含首页index

打开之前输入的ip地址

中文显示不出来,是因为没有开启转换
2:找到服务启动脚本,启动服务 可以被systemctl或者service直接管理
例如:service network restart /etc/init.d/network
systemctl restart network.service /lib/systemd/system/network.service

