点击蓝色目录查找相应内容
- Linux应用程序简介
- 应用程序与系统命令的关系
- 典型应用程序的目录结构
- 常见的软件包封装类型
- RPM包管理工具
- 查询RPM软件包信息
- 查询已安装的RPM软件信息
- 查询未安装的RPM软件包文件中信息
- 安装、升级、卸载RPM软件包
- 安装或升级RPM软件包
- 卸载指定的RPM软件
- 辅助选项
- 解决软件包依赖关系方法
- 源代码编译安装
- 源代码编译概述
- 编译安装源代码包
- 编译安装过程
- 手工编译安装四步骤
- (1) tar解包
- (2)./configure 配置
- (3)make编译(make是转编译的过程)
- (4)make安装
- 手工编译安装步骤小结
Linux应用程序简介
应用程序与系统命令的关系
分项 | 系统命令 | 应用程序 |
---|---|---|
文件位置 | 一般在/bin和/bin目录中,或为Shell内部指令 | 通常在/usr/和/usr/local目录中 |
主要用途 | 完成对系统的基本管理工作,例如IP配置工具(ifconfig) | 完成相对独立的其广利程序他辅助任务,例如网页浏览器,腾讯QQ |
主要用途 | 一般只在字符操作界面中运行 | 根据实际需要,有些程序可在图形界面中运行 |
运行格式 | 一般包括命令字、命令选项和命令参数 | 通常没有固定的执行格式 |
关系 | 是独立的 | 相对独立,多个文件支撑一个任务应用程序 |
典型应用程序的目录结构
文件类型 | 保存目录 |
---|---|
普通执行文件 | /usr/bin |
服务器执行程序文件和管理员文件 | /usr/sbin |
应用程序配置文件 | /etc |
日志文件 | /vor/log |
应用程序文档文件 | /uer/share/doc |
应用程序手册页文件 | /usr/share/man |
–prefix=" 自定义安装" 用手动编译安装
/var/log 日志文件是共享的
常见的软件包封装类型
文件类型 | 保存目录 |
---|---|
rpm软件包 | 扩展名文.rpm |
deb软件包 | 扩展名为.deb |
源代码软件包 | 一般为“.tar.gz”、“.tar.bz2”等格式的压缩包,包含程序的原始代码 |
绿色免安装软件包 | 在压缩包内存在已编译好的执行程序文件,解开压缩包后可直接使用 |
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看不懂,是机器能识别的
绿色免安装的软件包:解压后可以直接使用
RPM包管理工具
yum可以解决RPM的依赖关系
红色是名字,版本号,发布次数
版本号第一个是大版本,第二个是小版本
i386,i686出现,就代表是32位系统
64位可以最大支持2t内存,瓶颈在于读写
现在已经有了内存数据库,redis
服务器只能插半高显卡
查询RPM软件包信息
查询已安装的RPM软件信息
rpm -q【子选项】 【软件名】
-q 查看基本信息,即是否安装
[root@localhost ~]# rpm -q httpd #查询httpd工具是否已安装
未安装软件包 httpd
常用选项
-qa 查看系统已安装的所有软件包
grep 过滤筛选
[root@localhost ~]# rpm -qa #查询当前系统已安装的所有软件包,显示过多,这里就不展示
[root@localhost ~]# rpm -qa | grep "mdadm" #后面加| grep筛选出想要查询的信息
mdadm-4.0-5.el7.x86_64
-qi 查看已安装的软件包的详细信息,-q已安装,-i(information),组合起来用
[root@localhost ~]# rpm -qi mdadm #查看mdadm的详细信息
Name : mdadm
Version : 4.0
Release : 5.el7
Architecture: x86_64
Install Date: 2019年10月23日 星期三 13时36分47秒
Group : System Environment/Base
Size : 1044798
License : GPLv2+
Signature : RSA/SHA256, 2017年08月11日 星期五 02时20分11秒, Key ID 24c6a8a7f4a80eb5
Source RPM : mdadm-4.0-5.el7.src.rpm
Build Date : 2017年08月05日 星期六 05时44分20秒
Build Host : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.kernel.org/pub/linux/utils/raid/mdadm/
Summary : The mdadm program controls Linux md devices (software RAID arrays)
Description :
The mdadm program is used to create, manage, and monitor Linux MD (software
RAID) devices. As such, it provides similar functionality to the raidtools
package. However, mdadm is a single program, and it can perform
almost all functions without a configuration file, though a configuration
file can be used to help with some common tasks.
-ql 查看软件包安装的所有的文件列表(list)
[root@localhost ~]# rpm -ql mdadm
/etc/cron.d/raid-check
/etc/libreport/events.d/mdadm_event.conf
/etc/sysconfig/raid-check
/usr/lib/systemd/system-shutdown/mdadm.shutdown
/usr/lib/systemd/system/mdadm-grow-continue@.service
/usr/lib/systemd/system/mdadm-last-resort@.service
/usr/lib/systemd/system/mdadm-last-resort@.timer
/usr/lib/systemd/system/mdmon@.service
/usr/lib/systemd/system/mdmonitor.service
/usr/lib/tmpfiles.d/mdadm.conf
/usr/lib/udev/rules.d/63-md-raid-arrays.rules
/usr/lib/udev/rules.d/65-md-incremental.rules
/usr/sbin/mdadm
/usr/sbin/mdmon
/usr/sbin/raid-check
/usr/share/doc/mdadm-4.0
/usr/share/doc/mdadm-4.0/COPYING
/usr/share/doc/mdadm-4.0/ChangeLog
/usr/share/doc/mdadm-4.0/TODO
/usr/share/doc/mdadm-4.0/mdadm.conf-example
/usr/share/doc/mdadm-4.0/mdcheck
/usr/share/doc/mdadm-4.0/syslog-events
/usr/share/man/man4/md.4.gz
/usr/share/man/man5/mdadm.conf.5.gz
/usr/share/man/man8/mdadm.8.gz
/usr/share/man/man8/mdmon.8.gz
/var/run/mdadm
-qf 根据已知的文件,去查看它属于哪个软件包,由哪个软件包所安装
[root@localhost ~]# rpm -qf /usr/sbin/mdmon
mdadm-4.0-5.el7.x86_64
-qc 查看软件包的所有配置文件 (配置文件后缀 conf,cnf,ini;前两个看得多,PHP的文件是inin)
[root@localhost ~]# rpm -qc mdadm
/etc/cron.d/raid-check
/etc/sysconfig/raid-check
/usr/lib/tmpfiles.d/mdadm.conf
-qd 查看软件包的文档有哪些(what),在哪些位置(where)
[root@localhost ~]# rpm -qd mdadm
/usr/share/doc/mdadm-4.0/COPYING
/usr/share/doc/mdadm-4.0/ChangeLog
/usr/share/doc/mdadm-4.0/TODO
/usr/share/doc/mdadm-4.0/mdadm.conf-example
/usr/share/doc/mdadm-4.0/mdcheck
/usr/share/doc/mdadm-4.0/syslog-events
/usr/share/man/man4/md.4.gz
/usr/share/man/man5/mdadm.conf.5.gz
/usr/share/man/man8/mdadm.8.gz
/usr/share/man/man8/mdmon.8.gz
查询未安装的RPM软件包文件中信息
rpm -qp 【子选项】RPM包文件
常用选项
-qpi 查看未安装的软件包的详细信息
-qpl 查看未安装软件包的所有文件
-qpc 查看未安装软件包的所有配置文件 (配置文件后缀 conf,cnf,ini;前两个看得多,PHP的文件是inin)
-qpd 查看未安装软件包的文档
小结:未安装的命令选项就是在已安装的命令选项上多一个p,没有-a,-f子选项
安装、升级、卸载RPM软件包
安装或升级RPM软件包
安装或升级RPM软件
rpm 【选项】 RPM包文件
常用选项
-i install 安装软件包
-U 更新软件包,若没有该软件包,则自动安装该软件
-F 检查更新软件包,若没有该软件包,不会自动安装该软件
卸载指定的RPM软件
rpm -e 软件名
-e 卸载
辅助选项
–force 强制执行
–nodeps 解决依赖性关系(但是基本上没啥用,因为这个命令的作用是忽略依赖关系,直接安装,治标不治本)
-h 友好显示(即以#号键显示安装进度条)
-v 显示详细过程信息
例如:rpm -qd httpd 查看httpd的安装包的文档
yum remore httpd -y 重新安装httpd
rpm -ivh 安装并显示进度和详细过程
rpm -evh 卸载并显示进度和详细过程
解决软件包依赖关系方法
1)安装有依赖关系的多个软件时
被依赖的软件包需要先安装
可同时指定多个.rpm包文件进行安装
2)卸载有依赖关系的多个软件时
依赖其他程序的软件包需要先卸载
可同时指定多个软件名进行卸载
3)忽略依赖关系
结合“–nodeps”选项,但可能导致软件异常
重点记住:
使用rpm命令查询RPM软件信息的常用选项
使用rpm命令安装、升级、卸载RPM软件包的常用选项
典型应用程序的目录结构
常见的软件包封装类型
源代码编译安装
源代码编译概述
1)使用源代码安装软件的优点
获得最新的软件版本,及时修复bug
根据用户需要,灵活定制软件功能
2)应用场合举例
安装较新版本的应用程序时
当前安装的程序无法满足需要时
需要为应用程序添加新的功能时
源代码安装模式可以视为iDIY模式,可以自定义自己的需要安装,依据官方发布的对应版本的软件手册操作
编译安装源代码包
1)Tarball封包
.tar.gz和.tar.bz2格式居多
软件素材参考:http://sourceforge.net
2)完整性校验
md5sum 校验工具命令
除此之外还有zip压缩包, unzip 解压命令 -d 指定解压为位置
unzip 软件包名 -d 解压至指定路径
mount.cifs //192.168.254.10/linuxs /abc 挂载
[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.254.10/linuxs /abc
Password for root@//192.168.254.10/linuxs:
[root@localhost /]# cd /abc
[root@localhost abc]# ls
apr-1.4.6.tar.gz apr-util-1.4.1.tar.gz httpd-2.4.2.tar.gz
解压三个gz压缩包
[root@localhost abc]# tar -xzvf apr-util-1.4.1.tar.gz -C /opt
'tar -x解压 -z指gzip格式 -v显示详细过程 -f 执行 压缩包 -C 指定解压目标路径'
[root@localhost abc]# tar -xzvf apr-1.4.6.tar.gz -C /opt
[root@localhost abc]# tar -xzvf httpd-2.4.2.tar.gz -C /opt
yum install gcc gcc-c++ 使用yum自动安装gcc gcc-c++ 编译器
[root@localhost abc]# yum install gcc gcc-c++
编译安装过程
手工编译安装四步骤
(1) tar解包
1)习惯上将软件包释放到/usr/src/目录
2)解包后的软代码文件位置:
/usr/stc/软件名-版本号/
(2)./configure 配置
1)使用源码目录中的configure脚本
2)执行“./configure 00help”可查看帮助
3)典型的配置选项
–prefix=软件安装目录
(3)make编译(make是转编译的过程)
执行make命令
(4)make安装
执行make install 命令
示例
安装后的测试、应用、维护软件
使用前
启动Apa’che
运行lynx 127.0.0.1查看本机Apache运行状态
(httpd.conf httpd 配置文件
apachectl start 启动apache)
手工编译安装步骤小结
1:找到源码包
先挂载,在宿主机共享目录内找到要安装的压缩包
[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.254.10/linuxs /abc
Password for root@//192.168.254.10/linuxs:
[root@localhost /]# cd /abc
[root@localhost abc]# ls
apr-1.4.6.tar.gz apr-util-1.4.1.tar.gz httpd-2.4.2.tar.gz
2:解压源码包到指定位置
[root@localhost abc]# tar -xzvf apr-util-1.4.1.tar.gz -C /opt
'tar -x解压 -z指gzip格式 -v显示详细过程 -f 执行 压缩包 -C 指定解压目标路径'
[root@localhost abc]# tar -xzvf apr-1.4.6.tar.gz -C /opt
[root@localhost abc]# tar -xzvf httpd-2.4.2.tar.gz -C /opt
接下来把apr-1.4.6和apr-until-1.4.1放入到httpd对应的目录内
[root@localhost abc]# cd /opt '切换到/opt'
[root@localhost opt]# ls
apr-1.4.6 apr-util-1.4.1 httpd-2.4.2 rh
[root@localhost opt]# mv apr-1.4.6/ httpd-2.4.2/srclib/apr
[root@localhost opt]# mv apr-util-1.4.1/ httpd-2.4.2/srclib/apr-until
[root@localhost opt]# cd httpd-2.4.2/srclib/
[root@localhost srclib]# ls
apr apr-until Makefile.in
[root@localhost srclib]# cd ../../
软件包整理完毕,接下来进行配置
3:configure配置
先提前安装下编译软件,先安装环境包,即编译器等相关软件
pcre作用在网页当中的语言
zlib是网页压缩处理的图片传输
[root@localhost opt]# yum install gcc gcc-c++ pcre pcre-devel zlib-devel -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.cn99.com
* updates: mirrors.163.com
软件包 gcc-4.8.5-39.el7.x86_64 已安装并且是最新版本
软件包 gcc-c++-4.8.5-39.el7.x86_64 已安装并且是最新版本
软件包 pcre-8.32-17.el7.x86_64 已安装并且是最新版本
正在解决依赖关系
--> 正在检查事务
---> 软件包 pcre-devel.x86_64.0.8.32-17.el7 将被 安装
---> 软件包 zlib-devel.x86_64.0.1.2.7-18.el7 将被 安装
--> 正在处理依赖关系 zlib = 1.2.7-18.el7,它被软件包 zlib-devel-1.2.7-18.el7.x86_64 需要
--> 正在检查事务
---> 软件包 zlib.x86_64.0.1.2.7-17.el7 将被 升级
---> 软件包 zlib.x86_64.0.1.2.7-18.el7 将被 更新
--> 解决依赖关系完成
依赖关系解决
========================================================================================
Package 架构 版本 源 大小
========================================================================================
正在安装:
pcre-devel x86_64 8.32-17.el7 base 480 k
zlib-devel x86_64 1.2.7-18.el7 base 50 k
为依赖而更新:
zlib x86_64 1.2.7-18.el7 base 90 k
事务概要
========================================================================================
安装 2 软件包
升级 ( 1 依赖软件包)
总下载量:619 k
Downloading packages:
No Presto metadata available for base
(1/3): zlib-devel-1.2.7-18.el7.x86_64.rpm | 50 kB 00:00:00
(2/3): pcre-devel-8.32-17.el7.x86_64.rpm | 480 kB 00:00:00
(3/3): zlib-1.2.7-18.el7.x86_64.rpm | 90 kB 00:00:00
----------------------------------------------------------------------------------------
总计 1.2 MB/s | 619 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在更新 : zlib-1.2.7-18.el7.x86_64 1/4
正在安装 : zlib-devel-1.2.7-18.el7.x86_64 2/4
正在安装 : pcre-devel-8.32-17.el7.x86_64 3/4
清理 : zlib-1.2.7-17.el7.x86_64 4/4
验证中 : pcre-devel-8.32-17.el7.x86_64 1/4
验证中 : zlib-1.2.7-18.el7.x86_64 2/4
验证中 : zlib-devel-1.2.7-18.el7.x86_64 3/4
验证中 : zlib-1.2.7-17.el7.x86_64 4/4
已安装:
pcre-devel.x86_64 0:8.32-17.el7 zlib-devel.x86_64 0:1.2.7-18.el7
作为依赖被升级:
zlib.x86_64 0:1.2.7-18.el7
完毕!
configure配置
[root@localhost httpd-2.4.2]# ./configure --prefix=/usr/local/httpd --enable-deflate --enable-so --enable-rewrite --enable-charset-lite -enable-cgi
4:make编译
[root@localhost httpd-2.4.2]# make '编译,进入目录'
/opt/httpd-2.4.2/srclib/apr/libtool --silent --mode=link gcc -std=gnu99 -g -O2 -pthread -o mod_alias.la -rpath /usr/local/httpd/modules -module -avoid-version mod_alias.lo
/opt/httpd-2.4.2/srclib/apr/libtool --silent --mode=compile gcc -std=gnu99 -g -O2 -pthread -D_REENTRANT -D_GNU_SOURCE -I. -I/opt/httpd-2.4.2/os/unix -I/opt/httpd-2.4.2/include -I/opt/httpd-2.4.2/srclib/apr/include -I/opt/httpd-2.4.2/srclib/apr-util/include -I/opt/httpd-2.4.2/srclib/apr-util/xml/expat/lib -I/opt/httpd-2.4.2/modules/aaa -I/opt/httpd-2.4.2/modules/cache -I/opt/httpd-2.4.2/modules/core -I/opt/httpd-2.4.2/modules/database -I/opt/httpd-2.4.2/modules/filters -I/opt/httpd-2.4.2/modules/ldap -I/opt/httpd-2.4.2/modules/loggers -I/opt/httpd-2.4.2/modules/lua -I/opt/httpd-2.4.2/modules/proxy -I/opt/httpd-2.4.2/modules/session -I/opt/httpd-2.4.2/modules/ssl -I/opt/httpd-2.4.2/modules/test -I/opt/httpd-2.4.2/server -I/opt/httpd-2.4.2/modules/arch/unix -I/opt/httpd-2.4.2/modules/dav/main -I/opt/httpd-2.4.2/modules/generators -I/opt/httpd-2.4.2/modules/mappers -prefer-pic -c mod_rewrite.c && touch mod_rewrite.slo
/opt/httpd-2.4.2/srclib/apr/libtool --silent --mode=link gcc -std=gnu99 -g -O2 -pthread -o mod_rewrite.la -rpath /usr/local/httpd/modules -module -avoid-version mod_rewrite.lo
make[4]: 离开目录“/opt/httpd-2.4.2/modules/mappers”
make[3]: 离开目录“/opt/httpd-2.4.2/modules/mappers”
make[2]: 离开目录“/opt/httpd-2.4.2/modules”
make[2]: 进入目录“/opt/httpd-2.4.2/support”
make[2]: 离开目录“/opt/httpd-2.4.2/support”
make[1]: 离开目录“/opt/httpd-2.4.2”
中间可能会出现一些报错问题:环境包问题,配置格式问题,功能性方面问题(软件版本,是否支持功能),这些就需要仔细排查,缺什么补什么
5:make安装
make install 命令
[root@localhost httpd-2.4.2]# make install '安装'
Installing icons
mkdir /usr/local/httpd/icons
mkdir /usr/local/httpd/logs
Installing CGIs
mkdir /usr/local/httpd/cgi-bin
Installing header files
Installing build system files
Installing man pages and online manual
mkdir /usr/local/httpd/man
mkdir /usr/local/httpd/man/man1
mkdir /usr/local/httpd/man/man8
mkdir /usr/local/httpd/manual
make[1]: 离开目录“/opt/httpd-2.4.2”
配置httpd的conf属性
[root@localhost httpd-2.4.2]# cd /usr/local '进入到安装路径'
[root@localhost local]# ls
bin etc games httpd include lib lib64 libexec sbin share src
[root@localhost local]# cd httpd/
[root@localhost httpd]# ls
bin cgi-bin error icons lib man modules
build conf htdocs include logs manual
[root@localhost httpd]# cd conf/
[root@localhost conf]# ls
extra httpd.conf magic mime.types original
安装完成后优化,即测试、应用维护软件
1:找到服务配置文件,修改功能 conf配置文件
[root@localhost conf]# vim httpd.conf '配置httpd。conf'
:set nu '显示行数'
/Listen ’查找Listen‘
46 # directive.
47 #
48 # Change this to Listen on specific IP addresses as shown below to
49 # prevent Apache from glomming onto all bound IP addresses.
50 #
51 #Listen 12.34.56.78:80
52 Listen 80
53
54 #
55 # Dynamic Shared Object (DSO) Support
56 #
修改IP地址(在这里每一行的前面若是有#键,则代表是注释行,不发挥功能,若要发挥功能,则要取消注释#键)
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
Listen 192.168.139.147:80 '去掉前面#号键,后面加端口号'
#Listen 80 '开启前面#号键'
#
# Dynamic Shared Object (DSO) Support
搜索Server
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80 '修改网址'
#
# Deny access to the entirety of your server's filesystem. You must
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName www.kgc.com:80 '关掉前面#号键'
#
# Deny access to the entirety of your server's filesystem. You must
:wq '保存退出'
查看对应80端口是否启用
关闭防火墙
[root@localhost bin]# ./apachectl start '开启apachctl'
[root@localhost bin]# netstat -ntap |grep 80
tcp 0 0 192.168.139.147:80 0.0.0.0:* LISTEN 73721/httpd
[root@localhost bin]# systemctl stop firewalld.service '关闭防火墙'
[root@localhost bin]# setenforce 0
[root@localhost bin]# cd ..
[root@localhost httpd]# ls
bin cgi-bin error icons lib man modules
build conf htdocs include logs manual
htdocs 网页目录,修改首页index配置
[root@localhost httpd]# cd htdocs/
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# vim index.html
vim index.html
<html><body><h1>this is test 自由发挥</h1></body></html>
~
~
~
打开之前输入的ip地址
中文显示不出来,是因为没有开启转换
2:找到服务启动脚本,启动服务 可以被systemctl或者service直接管理
例如:service network restart /etc/init.d/network
systemctl restart network.service /lib/systemd/system/network.service