Linux基础-基础命令和相关知识4
不同操作系统安装包及安装方法
安装包后缀 | 适用系统 | 安装方法 |
.rpm | 基于Redhat的Linux发行版,例如centos、redhat、fedora | rpm -i |
.deb | 基于Debian的Linux发行版,例如debian、ubuntu | dpkg -i |
.exe | windows操作系统的可执行程序格式 | 图形界面双击 |
源码包 | 程序员编写的源代码 | 通过远程登陆手段将本地源码包传送到远程服务器 |
java源码包如何在Linux操作系统中形成可执行的程序
编译器是一种计算机程序,它的作用是将一种编程语言转化为另一种编程语言的程序代码。
cd /
cp -a /usr/bin/ls /data
cat ls
得到编译器编译完成的shell语言
通过其他程序编写的源码包,比如java,c++等,在shell里用bash命令去读(bash hello.c(c++写出来的程序))是读不出来的,需要通过编译器将编程语言进行转换,例如gcc(常用)、make、cmake等。
将hello.c源码包变成像ls一样的可执行程序,需要经过5个步骤。
tips:源代码 ----- c++、java等程序编写的语言(高级语言)
汇编语言----- 本质是二进制,但用符号对复杂繁琐的二进制语言进行替代
二进制 ----- 低级语言,01010101.....
程序的本质:数据+执行代码,(实现某个特定任务的一串代码)
程序与函数的关系
1、函数是程序的组成单元,一个完整的程序通常由多个函数组成。
2、程序往往用于实现复杂的功能和需求,而函数的功能往往单一。
3、函数往往是为了实现特定单一功能而被编写出来的,具有可重用性,而程序往往需要实现复杂的任务,不具有可重用性。
step 1:预处理 (删除不需要的符号以及注释等)
step 2:编译(将经过预处理的文件进行一系列的词法、语法分析、语义分析和优化后,生成相应的汇编语言)
step 3:汇编(将汇编指令与机器指令进行对照,将汇编语言转化为机器可以执行的命令)
step 4:链接(通过调用链接器ld来链接程序运行所需要的一大堆文件,以及它所依赖的库文件(函数库等),左后生成可执行文件)
ldd usr/bin/ls ldd命令可用于查询可执行文件和共享库所依赖的动态链接库
gcc -E hello.c -o hello.i 将源码包hello.c进行预处理,生成hello.i预处理文件
gcc -s hello.i -o hello.s 将hello.i预处理文件进行编译,形成汇编文件hello.s
gcc -o hello.s -o hello.o 将汇编文件hello.s进行汇编,形成了目标文件hello.o
gcc hello.o -o hello 将目标文件hello.o进行链接,形成可执行文件hellogcc hello.c -o hello 将以上四步一步到位(预处理、编译、汇编、链接)
Linux安装包的发展历程
1、只能编译,安装源码包通过编译得到可执行程序。(✔)
2、红帽rpm软件,建立统一的数据库文件,支持离线,从本地获得rpm安装包,可以检测但无法解决依赖关系。
3、yum仓库,支持在线和离线两种方式,可以通过网络远程下载安装包到本地安装,也可以直接本地安装(需要搭建本地yum仓库),可以检测解决依赖关系。(✔)
Red Hat Package Manager
rpm,不仅仅是一个命令,也是一个数据库,记录了软件包安装、卸载等变化信息,自动分析软件包依赖关系。
软件素材参考:http://www.rpm.org
一般命名格式:软件包的名字+版本+发行次数+支持系统+cpu架构+后缀(.rpm)
rpm命令功能
1、查询、验证rpm包的相关信息
2、安装、升级、卸载rpm软件包
3、维护rpm数据库信息等综合管理操作
命令 | 作用 |
rpm -q 软件的名字 | 查询软件是否安装 |
rpm -qa | 查询安装的所有软件 |
rpm -ql 软件名 | 指定软件包在当前系统中安装的所有目录以及文件列表 |
rpm -qc 软件名 | 已安装的软件的配置文件 |
协议(依托协议) | 软件(协议的最终体现方式)名字 | 安装包名字 | 程序名字 |
dns | bind | named | |
http | apache | http/httpd | httpd |
ftp | vsftpd | vsftpd | vsftpd |
挂载安装软件包的过程
得到安装包的方式
1、网上下载
2、挂载
mount /dev/cdrom /opt/
cd /opt/packages
rpm -i (安装)
-v (显示过程/模式)
-h (详细进度)
rpm -e (卸载)
rpm -e httpd (可以写缩写)
验证
[root@localhost ~]# cd /etc/pki
[root@localhost pki]# ls
CA ca-trust fwupd fwupd-metadata java nssdb nss-legacy rpm-gpg rsyslog tls
[root@localhost pki]# ls rpm-gpg
RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Debug-7 RPM-GPG-KEY-CentOS-Testing-7
yum仓库
为了解决依赖关系才出现的技术
yum仓库的配置文件
[root@localhost pki]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo CentOS-x86_64-kernel.repo
cat CentOS-Base.repo
如何实现安装服务
元信息:软件包在yum仓库中的具体位置,以及依赖关系
元数据的文件夹:repodata(只有这一个名字)
成为yum仓库的必要条件,必须要有元数据以及软件包
Yum本地仓库的建立过程
mount /dev/sr0(cdrom) /opt
cd etc/yum.repos.dmkdir bak
mv *.repo ./bak/
vim cxk.repo
[cxk]
name=cxk
baseurl=http:///opt
gpgcheck=0yum clean all 清除元数据
yum makeacahe 生成新的元数据yum install httpd -y
yum remove httpd -yyum history
生成元数据的过程
cp -a opt/Packages /data/
cd /data/
createrepo /data/