打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Linux基础
userphoto

2022.05.19 北京

关注

讲师_@王晓春

本章内容

  • ▼软件运行和编译
  • ▼静态和动态链接
    • ▷开发语言
  • ▼包和包管理器
    • ▷包命名
    • ▷包命名和工具
    • ▷库文件
    • ▷包管理器
    • ▷程序包的来源
    • ▷rpm包管理
      • 1.rpm包安装
      • 2.rpm包升级
      • 3.包查询
      • 4.包卸载:
      • 5.包校验
      • 6.rpm数据库
    • ▷yum
      • 1.yum配置文件
      • 2.yum源
      • 3.yum配置管理
      • 4.yum命令
      • 5.系统光盘yum仓库
    • 配置yum服务器
  • ▼DNF (DaNdiFied)
    • ▷DNF 使用
  • ▼程序包编译
    • ▷编译安装步骤
    • ▷编译C源代码:
  • ▼Ubuntu 软件管理
    • ▷Ubuntu 软件管理
  • ▼练习
    • ▷练习答案

▼软件运行和编译

  • ABI:Application Binary Interface
    • Windows与Linux不兼容
      ELF(Executable and Linkable Format)
      PE(Portable Executable)
    • 库级别的虚拟化:
      Linux: WINE
      Windows: Cygwin
  • API:Application Programming Interface
    POSIX:Portable OS
  • 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接
    静态编译:.a
    动态编译:.so

▼静态和动态链接

  • 链接主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确地衔接,分为静态链接和动态链接

  • 静态链接

    1. 把程序对应的依赖库复制一份到包
    2. libxxx.a
    3. 嵌入程序包
    4. 升级难,需重新编译
    5. 占用较多空间,迁移容易
  • 动态链接

    1. 只把依赖加做一个动态链接
    2. libxxx.so
    3. 连接指向
    4. 占用较少空间,升级方便
  • 动态链接

  • C程序静态链接

  • Java程序运行

▷开发语言

  • 系统级开发
    C、C++
  • 应用级开发
    java、Python、go、php、perl、delphi、ruby

▼包和包管理器

最初只有.tar.gz的打包的源码文件,用户必须编译每个他想在GNU/Linux上运行的软件。用户们急需系统提供一种方法来管理这些安装在机器上的软件,当Debian诞生时,这样一个管理工具也就应运而生,它被命名为dpkg。从而著名的“package”概念第一次出现在GNU/Linux系统中,稍后Red Hat才开发自己的“rpm”包管理系统

  • 包的组成:
    二进制文件、库文件、配置文件、帮助文件
  • 程序包管理器:
    debian: deb文件, dpkg包管理器
    redhat: rpm文件, rpm包管理器
    rpm:Redhat Package Manager

▷包命名

  • 源代码:name-VERSION.tar.gz|bz2|xz
    VERSION: major.minor.release
  • rpm包命名方式:
    name-VERSION-release.arch.rpm
    例:-- m
    VERSION: major.minor.release
    release:release.OS
  • 常见的arch:
    x86: i386, i486, i586, i686
    x86_64: x64, x86_64, amd64
    powerpc: ppc
    跟平台无关:noarch

▷包命名和工具

  • 包:分类和拆包
    Application-VERSION-ARCH.rpm: 主包
    Application-devel-VERSION-ARCH.rpm 开发子包
    Application-utils-VERSION-ARHC.rpm 其它子包
    Application-libs-VERSION-ARHC.rpm 其它子包
  • 包之间:可能存在依赖关系,甚至循环依赖
  • 解决依赖包管理工具:
    yum:rpm包管理器的前端工具
    apt:deb包管理器前端工具
    zypper:suse上的rpm前端管理工具
    dnf:Fedora 18+ rpm包管理器前端管理工具

▷库文件

  • 查看二进制程序所依赖的库文件
    ldd /PATH/TO/BINARY_FILE
  • 管理及查看本机装载的库文件
    ldconfig 加载配置文件中指定的库文件
    /sbin/ldconfig –p 显示本机已经缓存的所有可用库文件名及文件路径映射关系
  • 配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
  • 缓存文件:/etc/ld.so.cache

▷包管理器

  • 程序包管理器:
    功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作
  • 包文件组成 (每个包独有)
    RPM包内的文件
    RPM的元数据,如名称,版本,依赖性,描述等
    安装或卸载时运行的脚本
  • 数据库(公共):/var/lib/rpm
    程序包名称及版本
    依赖关系
    功能说明
    包安装后生成的各文件路径及校验码信息

▷程序包的来源

▷rpm包管理

  • CentOS系统上使用rpm命令管理程序包:
    安装卸载升级查询校验数据库维护

安装:
rpm {-i|--install} [install-options] PACKAGE_FILE…

[OPTION]注释
-v显示过程
-h以#显示程序包管理执行进度
#安装+显示过程+以#显示程序包管理执行进度
rpm -ivh PACKAGE_FILE ...

1.rpm包安装

rpm -i [install-options] PACEAGE-FILE...

[install-options]注释
--test测试安装,但不真正执行安装,即dry run模式
--nodeps忽略依赖关系
--replacepkgs覆盖原有文件
--nosignature不检查来源合法性
--nodigest不检查包完整性
--noscripts不执行程序包脚本
%pre: 安装前脚本 --nopre
 %post: 安装后脚本 --nopost
  %preun: 卸载前脚本 --nopreun
   %postun: 卸载后脚本 --nopostun

2.rpm包升级

  • 升级:
    • rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
      upgrade:安装有旧版程序包,则“升级”
      如果不存在旧版程序包,则“安装”
    • rpm {-F|--freshen} [install-options] PACKAGE_FILE...
      freshen:安装有旧版程序包,则“升级”
      如果不存在旧版程序包,则不执行升级操作
[install-options]注释
--oldpackage降级
--force强制安装

示例

rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
  • 升级注意项
    注意:
    (1) 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核
    (2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后保留

3.包查询

rpm {-q|--query} [select-options] [query-options]

[select-options]注释
-a所有包
-f查看指定的文件由哪个程序包安装生成
-p rpmfile针对尚未安装的程序包文件做查询操作
--whatprovides CAPABILITY查询指定的CAPABILITY由哪个包所提供
--whatrequires CAPABILITY查询指定的CAPABILITY被哪个包所依赖
cpio –itv预览包内文件
cpio –id “*.conf”释放包内文件
[query-options]注释
--changelog查询rpm包的changelog
-c查询程序的配置文件
-d查询程序的文档
-i信息
-l查看指定的程序包安装后生成的所有文件
--scripts程序包自带的脚本
--provides列出指定程序包所提供的CAPABILITY
-R查询指定的程序包所依赖的CAPABILITY
  • 常用查询用法:
#查询命令由哪个程序包提供
rpm -qf /usr/sbin/ifconfig	

#查询包的信息
rpm -qi screen

#查询包的配置文件
rpm -qc screen

#查看指定的程序包安装后生成的所有文件
rpm -ql screen

#查询程序的文档
rpm -qd screen

#针对尚未安装的程序包文件做查询操作
-qpi PACKAGE_FILE
-qpl PACKAGE_FILE, ...

#对所有包
-qa

4.包卸载:

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留

5.包校验

rpm {-V|--verify} [select-options] [verify-options]

[root@centos7 /data/shellscript]$rpm -V setup
.......T.  c /etc/profile

S 文件大小不同
M 模式不同(包括权限和文件类型)
5 摘要(以前是MD5和)有所不同
D 设备主/副号码不匹配
L 指向路径不匹配
U 所有都不同
G 属组不同
T mtime不同
P 功能不同
  • 包来源的合法性验证及完整性验证
    完整性验证:SHA256
    来源合法性验证:RSA
  • 公钥加密
    对称加密:加密、解密使用同一密钥
    非对称加密:密钥是成对儿的
  • public key: 公钥,公开所有人
  • secret key: 私钥, 不能公开
  • 导入所需要公钥
    rpm -K|checksig rpmfile 检查包的完整性和签名
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7
    rpm -qa “gpg-pubkey*”

6.rpm数据库

  • 数据库重建:
    /var/lib/rpm
  • rpm {–initdb|–rebuilddb}
    ;初始化)rpm --initdb (如果事先不存在数据库,则新建之;否则,不执行任何操作
    ;重建已安装的包头的数据库索引目录)rpm --rebuilddb

▷yum

CentOS: yum, dnf

  • YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
  • yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
  • 文件服务器baseurl
    http://
    https://
    ftp://
    file://

1.yum配置文件

  • yum客户端配置文件:
    /etc/yum.conf:为所有仓库提供公共配置
    /etc/yum.repos.d/*.repo:为仓库的指向提供配置(*可以自定义)
  • 仓库配置的定义:
[仓库名或ID]
name=仓库名自定义
baseurl=http://url.com/
		file:///mnt/
enabled={1|0}	#启用/禁用
gpgcheck={1|0}  #gpg检验
gpgkey=URL		#gpg密钥链接
enablegroups={1|0}	#包组
failovermethod={roundrobin|priority}
roundrobin:    #意为随机挑选,默认值
priority:     	#按顺序访问
cost=    		#默认为1000
  • yum的repo配置文件中可用的变量:
    $releasever: 当前OS的发行版的主版本号
    $arch: 平台,i386,i486,i586,x86_64等
    $basearch:基础平台;i386, x86_64
    $YUM0-$YUM9:自定义变量

示例:
http://server/centos/ r e l e a s e v e r / releasever/ releasever/basearch/
http://server/centos/7/x86_64
http://server/centos/6/i386

2.yum源

3.yum配置管理

生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x86_64_.repo
yum-config-manager --add-repo= http://172.16.0.1/cobbler/ks_mirror/7/
yum-config-manager --disable “仓库名' 禁用仓库
yum-config-manager --enable “仓库名” 启用仓库
yum-config-manager

4.yum命令

  • yum命令的用法:
    yum [options] [command] [package ...]
[OPTION]注释
--nogpgcheck禁止进行gpg check
-y自动回答为“yes”
-q静默模式
--disablerepo=repoidglob临时禁用此处指定的repo
--enablerepo=repoidglob临时启用此处指定的repo
--noplugins禁用所有插件
注释[command]
显示仓库列表:yum repolist [all|enabled|disabled]
显示程序包:yum list
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]
安装程序包:yum install package1 [package2] [...]
(重新安装)yum reinstall package1 [package2] [...]
升级程序包:yum update [package1] [package2] [...]
(降级)yum downgrade package1 [package2] [...]
检查可用升级:yum check-update
卸载程序包:yum remove | erase package1 [package2] [...]
查看程序包信息:yum info [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供:yum provides|whatprovides feature1 [feature2] [...]
清理本地缓存:

清除/var/cache/yum/$basearch/$releasever缓存

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:yum makecache
搜索,以指定的关键字搜索程序包名及summary信息:yum search string1 [string2] [...]
查看指定包所依赖的capabilities:yum deplist package1 [package2] [...]
安装及升级本地程序包:(用install替代)yum localinstall rpmfile1 [rpmfile2] [...]
(用update替代)yum localupdate rpmfile1 [rpmfile2] [...]

查看yum事务历史:

yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

#查看安装历史
yum history
#查看安装历史信息
yum history info 6
#撤消安装
yum history undo 6
#重做历史
yum history redo 6

 日志 :/var/log/yum.log
  • 包组管理的相关命令:
yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]

5.系统光盘yum仓库

  • 系统安装光盘作为本地yum仓库:
  • (1) 挂载光盘至某目录,例如/mnt/cdrom
    mount /dev/cdrom /mnt/cdrom
  • (2) 创建配置文件
[CentOS7]
name=CD_ROM
baseurl=file:///
gpgcheck=0
enabled=1
  • 创建yum仓库:
    createrepo [options] <directory>

配置yum服务器

1. yum install httpd -y
2. systemctl start httpd ;systemctl enable httpd
3. cd /var/www/html
4. mkdir centos/{6,7}/os/x86_64
5. mount /dev/sr0 /var/www/html/centos/6/os/x86_64
6. mount /dev/sr1 /var/www/html/centos/7/ox/x86_64

▼DNF (DaNdiFied)

DNF 介绍:新一代的RPM软件包管理器。DNF 发行日期是2015年5月11日,DNF 包管理器采用Python 编写,发行许可为GPL v2,首先出现在Fedora 18 发行版中。在 RHEL 8.0 版本正式取代了 YUM,DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等

  • 安装所需软件包,依赖epel源
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//dnf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/python-dnf-0.6.4-2.sdl7.noarch.rpm
yum install python-dnf-0.6.4-2.sdl7.noarch.rpm dnf-0.6.4-2.sdl7.noarch.rpm dnf-conf-0.6.4-2.sdl7.noarch.rpm

(也可以安装EPEL源后,然后直接: yum install python-dnf dnf dnf-conf

配置文件:/etc/dnf/dnf.conf
仓库文件:/etc/yum.repos.d/ *.repo
日志: /var/log/dnf.rpm.log

▷DNF 使用

  • 帮助:man dnf
  • dnf 用法:与yum一致
    dnf [options] <command> [<arguments>...]
#安装软件包
dnf install PACKAGE

#重新安装特定软件包
dnf reinstall PACKAGE

#升级软件包
dnf update PACKAGE

#检查系统软件包的更新
dnf check-update

#升级所有系统软件包
dnf update 或 dnf upgrade

#删除软件包
dnf remove PACKAGE 或 # dnf erase PACKAGE

#查看安装在您系统中的 DNF 包管理器的版本
dnf --version

#删除无用孤立的软件包
dnf autoremove

#显示系统中可用的 DNF 软件库
dnf repolist

#列出用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
dnf list

#列出所有安装了的 RPM 包
dnf list installed

#列出来自所有可用软件库的可供安装的软件包
dnf list available

#查看软件包详情
dnf info nano

#删除缓存的无用软件包
dnf clean all

##创建缓存
dnf makecache

#搜索软件库中的 RPM 包
dnf search nano

#查找某一文件的提供者
dnf provides /bin/bash

#查看 DNF 命令的执行历史
dnf history

▼程序包编译

  • 程序包编译安装:
    Application-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装
  • 源代码–>预处理–>编译–>汇编–>链接–>执行
  • 源代码组织格式:
    多文件:文件中的代码之间,很可能存在跨文件依赖关系
    C、C++:make 项目管理器
    configure脚本 --> Makefile.in --> Makefile
    java: maven

▷编译安装步骤

  • C语言源代码编译安装三步骤:
    1、./configure
    (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成Makefile
    (2) 检查依赖到的外部环境,如依赖的软件包
    2、make 根据Makefile文件,构建应用程序
    3、make install 复制文件到相应路径

  • 开发工具:
    autoconf: 生成configure脚本
    automake生成Makefile.in
    注意:安装前查看INSTALL,README

  • 开源程序源代码的获取:

▷编译C源代码:

  • 准备:提供开发工具及开发环境
    开发工具:make, gcc等
    开发环境:开发库,头文件
    glibc:标准库
  • 实现:通过“包组”提供开发组件
    Development Tools
    Server Platform Development
  • 生产实践:(基于最小化安装的系统)
yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree screen lsof tcpdump wget ntpdate net-tools iotop bc zip unzip
  • 第一步:configure脚本
    选项:指定安装位置、指定启用的特性
    –help: 获取其支持使用的选项
    选项分类:
    安装路径设定:
    –prefix=/PATH:指定默认安装位置,默认为/usr/local/
    –sysconfdir=/PATH:配置文件安装位置
    System types:支持交叉编译

  • Optional Features: 可选特性
    –disable-FEATURE
    –enable-FEATURE[=ARG]
    Optional Packages: 可选包
    –with-PACKAGE[=ARG] 依赖包
    –without-PACKAGE 禁用依赖关系

  • 注意:通常被编译操作依赖的程序包,需要安装此程序包的“开发”组件,其包名一般类似于name-devel-VERSION

  • 第二步:make

  • 第三步:make install

  • 安装后的配置:
    (1) 二进制程序目录导入至PATH环境变量中
    编辑文件/etc/profile.d/NAME.sh
    export PATH=/PATH/TO/BIN:$PATH
    (2) 导入帮助手册
    编辑/etc/man.config|man_db.conf文件
    添加一个MANPATH

▼Ubuntu 软件管理

  • Debian软件包通常为预编译的二进制格式的扩展名“.deb”,类似rpm文件,因此安装快速,无需编译软件。包文件包括特定功能或软件所必需的文件、元数据和指令
  • dpkg:package manager for Debian,类似于rpm, dpkg是基于Debian的系统的包管理器。可以安装,删除和构建软件包,但无法自动下载和安装软件包或其依赖项
  • APT:Advanced Packaging Tool,功能强大的软件管理工具,甚至可升级整个Ubuntu的系统,基于C/S架构
  • APT工作原理:在服务器上先复制所有DEB包,然后用APT的分析工具genbasedir根据每个DEB 包的包头(Header)信息对所有的DEB包进行分析,并将该分析结果记录在文件夹base内的一个DEB 索引清单文件中,一旦APT 服务器内的DEB有所变动,要使用genbasedir产生新的DEB索引清单。客户端在进行安装或升级时先要查询DEB索引清单,从而获知所有具有依赖关系的软件包,并一同下载到客户端以便安装。当客户端需要安装、升级或删除某个软件包时,客户端计算机取得DEB索引清单压缩文件后,会将其解压置放于 /var/cache/apt/,而客户端使用apt-get install或apt-get upgrade命令的时候,就会将这个文件夹内的数据和客户端计算机内的DEB数据库比对,知道哪些DEB已安装、未安装或是可以升级的

▷Ubuntu 软件管理

dpkg常见用法:man dpkg

#安装包
dpkg -i package.deb 

#删除包,不建议,不自动卸载依赖于它的包
dpkg -r package 

#删除包(包括配置文件)
dpkg -P package 

#列出当前已安装的包,类似rpm -qa
dpkg -l 

#显示该包的简要说明,类似rpm –qi
dpkg -l package 

#列出该包中所包含的文件,类似rpm –ql
dpkg -L package 

#搜索包含pattern的包,类似rpm –qf
dpkg -S <pattern> 

#列出该包的状态,包括详细信息,类似rpm –qi
dpkg -s package 

#配置包,-a 使用,配置所有没有配置的软件包
dpkg --configure package 

#列出 deb 包的内容,类似rpm –qpl
dpkg -c package.deb 

#解开 deb 包的内容
dpkg --unpack package.deb 
  • Debian 使用APT工具来管理包系统,它与 apt 命令不同。在基于 Debian 的 Linux 发行版中,有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包。apt-get 是其中一个常用的命令行工具,另外一款较为流行的命令行与 GUI 兼顾的工具是 Aptitude ,之前最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config 这三条命令中

  • 在 2014 年apt 命令发布第一个稳定版,Ubuntu 16.04 引入新特性之一便是 apt 命令,apt 命令解决了命令过于分散的问题,它包括 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,提供管理软件包所需的必要选项

  • apt 相当于 apt-get、apt-cache 和 apt-config 中最常用命令选项的集合

  • apt 具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。此外,启用的几个特性也非常有帮助。例如,可以在使用 apt 命令安装或删除程序时看到进度条。apt 还会在更新存储库数据库时提示用户可升级的软件包个数

  • apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令,也即可用 apt 替换部分 apt-get 系列命令,但不是全部

  • 查看帮助:apt help

  • apt与apt-get命令对比

apt 命令被取代的命令命令的功能
apt installapt-get install安装软件包
apt removeapt-get remove移除软件包
apt purgeapt-get purge移除软件包及配置文件
apt updateapt-get update刷新存储库索引
apt upgradeapt-get upgrade升级所有可升级的软件包
apt autoremoveapt-get autoremove自动删除不需要的包
apt full-upgradeapt-get dist-upgrade在升级软件包时自动处理依赖关系
apt searchapt-cache search搜索应用程序
apt showapt-cache show显示安装细节
  • apt 特有的命令
    apt list 列出包含条件的包(已安装,可升级等)
    apt edit-sources 编辑源列表
    APT包索引来自/etc/apt/sources.list文件和/etc/apt/sources.list.d目录中定义的存储库的可用包的数据库。要使用存储库中所做的最新更改来更新本地程序包索引
    apt命令操作(如安装和删除软件包)记录在/var/log/dpkg.log日志文件中

  • apt示例:
    安装包:apt install tree zip
    删除包:apt remove tree zip
    说明:apt remove中添加–purge选项会删除包配置文件,谨慎使用
    更新包索引:apt update
    升级包:apt upgrade ,要升级系统,请首先更新软件包索引,再升级

▼练习

1、查询命令java来自于哪个rpm包
2、yum的配置和使用,包括yum仓库的创建
3、编写系统初始化脚本 reset.sh,包括别名,提示符颜色,yum仓库配置文件,安装tree,ftp,lftp,telnet等包
4、在CentOS 7上编译安装 apache 2.4.25 源码包,并启动此服务

▷练习答案

1、查询命令java来自于哪个rpm包(3个方法)

1. rpm -qf /usr/bin/java
2. 
3. dnf whatprovides /usr/bin/java
4. yum whatprovides /usr/bin/java

2、yum的配置和使用,包括yum仓库的创建

1.#创建*.repo文件
vim /etc/yum.repos.d/new.repo
...
[newrepo]			#仓库名
name='The new one of yum repo' 		#仓库描述
baseurl=file:///mnt   #仓库源
enabled=1		#是否启用
gpgcheck=0		#是否gpg检验
...
2.#删除原来的缓存
yum clean all
3.#重新构建缓存
yum makecache

3、编写系统初始化脚本 reset.sh,包括别名,提示符颜色,yum仓库配置文件,安装tree,ftp,lftp,telnet等包

CO_RED='\e[1;31m'
CO_GREEN='\e[1;32m'
LOR='\e[0m'

#configure yum of cd_rom
lsblk|grep '^sr[0-9]' > /dev/null
[ $? -eq 0 ]
cat >> /etc/yum.repos.d/cdrom.repo << EOF
[cdrom]
name=cdrom
baseusrl=file:///mnt
enabled=1
gpgcheck=0
EOF
[ $? -eq 0 ] && echo -e '${CO_GREEN}Configure yum of cdrom successful!${LOR}' || echo -e '${CO_RED}Configure yum of cdrom fail!${LOR}'

#install tree ftp lftp telnet
yum -y install tree
[ $? -eq 0 ] && echo -e '${CO_GREEN}install tree successful!${LOR}' || echo -e '${CO_RED}install tree fail!${LOR}'
yum -y install ftp
[ $? -eq 0 ] && echo -e '${CO_GREEN}install ftp successful!${LOR}' || echo -e '${CO_RED}install ftp fail!${LOR}'
yum -y install lftp
[ $? -eq 0 ] && echo -e '${CO_GREEN}install lftp successful!!${LOR}' || echo -e '${CO_RED}install lftp fail!${LOR}'
yum -y install telnet
[ $? -eq 0 ] && echo -e '${CO_GREEN}install telnet successful!!${LOR}' || echo -e '${CO_RED}install telnet fail!${LOR}'

4、在CentOS 7上编译安装 apache 2.4.25 源码包,并启动此服务

wget http://archive.apache.org/dist/httpd/httpd-2.4.39.tar.gz
cd hhtpd-2.4.39

#编译前检查你的编译环境
#yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree screen lsof tcpdump wget ntpdate net-tools iotop bc zip unzip
./configure --prefix=/usr/local/apache
make
make install
  • 编译apache出现的问题:
    configure: error: APR not found . Please read the documentation
    解决方法:
yum -y install apr.x86_64 apr-util.x86_64
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux系统之使用第三步 软件安装、卸载及更新
Linux程序包管理之yum
Linux最全软件包管理!看这个就对了!
如何在 Linux 上检查一个软件包的详细信息 | Linux 中国
Linux 平台上的软件包管理
Sublime Text 3.0 正式发布!提供 Linux 软件包仓库支持
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服