源码包一般指C语言开发的源代码文件的一个压缩包(.tar.gz或.tar.bz2)。源码包的编译使用Linux系统里的编译器gcc,利用该编译器可以把源码包变成可执行的二进制文件。
创建一个源码包
[root@letty-02 Desktop]# vim hello.c
# include <stdio.h>
int main (void)
{
printf("Hello,world!\n");
}
安装gcc编译器
[root@letty-02 /]# mount /dev/cdrom /mnt --挂载光驱到/mnt目录下
mount: /dev/sr0 is write-protected, mounting read-only
[root@letty-02 /]# cd /mnt
[root@letty-02 mnt]# ls --进入/mnt可发现已成功挂载
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@letty-02 Desktop]# rpm -ivh /mnt/Packages/gcc-4.8.5-4.el7.x86_64.rpm --rpm安装gcc
warning: /mnt/Packages/gcc-4.8.5-4.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:gcc-4.8.5-4.el7 ################################# [100%]
编译执行源码包
[root@letty-02 Desktop]# gcc -c hello.c -- -c生成.o头文件,但不会生成执行文件
[root@letty-02 Desktop]# ll
total 8
-rw-r--r--. 1 root root 67 Apr 29 19:00 hello.c
-rw-r--r--. 1 root root 1496 Apr 29 19:19 hello.o
[root@letty-02 Desktop]# gcc -o hello hello.o -- -o生成执行文件,并制定执行文件名,生成的hello就是可执行文件
[root@letty-02 Desktop]# ll
total 20
-rwxr-xr-x. 1 root root 8503 Apr 29 19:19 hello
-rw-r--r--. 1 root root 67 Apr 29 19:00 hello.c
-rw-r--r--. 1 root root 1496 Apr 29 19:19 hello.o
[root@letty-02 Desktop]# ./hello -- 执行hello文件
Hello,world!
源码包的优点:
源码包的缺点:
不论是RPM包管理器还是DPKG包管理器,都存在软件包依赖问题,比如软件包A依赖软件包B,软件包B又依赖软件包C,即依赖关系是 “A -> B -> C”,那么就必须先安装C,在安装B,最后A才能安装成功。
为了解决这种依赖问题,Linux开发商都提供了在线安装机制,通过这种机制可以自动解决依赖关系,安装A时会自动安装B和C。
RPM包的优点:
RPM包的缺点:
安装命令:rpm -ivh 包全名
升级命令:rpm -Uvh 包全名
升级命令:rpm -Fvh 包全名
卸载命令:rpm -e 包名
查询软件包是否安装
rpm -q 包名
查询系统中所有的安装的软件包
rpm -qa
可以使用管道符查看所需内容 如rpm -qa | grep gcc,使用 “rpm -q 包名” 只能查看这个包是否安装,而 “rpm -qa | grep 包名” 可以将包含包名称的所有包都列出来。
[root@letty-02 Packages]# rpm -q gcc
gcc-4.8.5-4.el7.x86_64
[root@letty-02 Packages]# rpm -qa | grep gcc
gcc-4.8.5-4.el7.x86_64
libgcc-4.8.5-4.el7.x86_64
查询软件包的详细信息
rpm -qi 包名 :查询已安装的软件包详细信息
选项:
-i:查询软件信息(information)
rpm -qip 包全名 :查询未安装的软件包详细信息
选项:
-p:查询没有安装的软件包(package)
查询软件包中的文件列表
rpm -ql 包名:查询已经安装的软件包的文件列表和安装的完整目录
选项:
-l:列出软件包中的所有文件了列表和软件所安装的目录(list)
rpm -qlp 包全名:查询未安装的软件包中的文件列表和打算安装的位置
选项:
-p:查询没有安装的软件包(package)
查询系统文件属于哪个软件包
rpm -qf 系统文件名
选项:
-f:查询系统文件属于哪个软件包(file)
查询软件包所依赖的软件包
rpm -qR 包名:查询系统中和已经安装的软件包有依赖关系的软件包
选项:
-R:查询软件包的依赖性(requires)
rpm -qRp 包全名:查询未安装的软件包的依赖性
如果执行命令后无任何提示,表明没有做任何修改;如果执行命令后有内容输出,则软件包的文件被修改过。
[root@letty-02 Packages]# rpm -Va
....L.... c /etc/pam.d/fingerprint-auth
....L.... c /etc/pam.d/password-auth
....L.... c /etc/pam.d/postlogin
....L.... c /etc/pam.d/smartcard-auth
....L.... c /etc/pam.d/system-auth
.M....... c /etc/cups/subscriptions.conf
S.5....T. c /etc/plymouth/plymouthd.conf
S.5....T. c /etc/profile
S.5....T. c /etc/issue
S.5....T. c /etc/issue.net
S.5....T. c /var/lib/unbound/root.key
S.5....T. c /etc/sysconfig/authconfig
验证内容 文件类型 文件路径
验证内容共有8个信息内容:
文件类型:
rpm -V的校验方式只能对已经安装的RPM包中的文件进行校验。要在安装之前就对RPM进行校验需要使用数据证书验证:
数字证书可以在光盘中找到:
[root@letty-02 ~]# ll /mnt/RPM-GPG-KEY-CentOS-
RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7
默认也放在系统中:
[root@letty-02 ~]# ll /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-
RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Debug-7 RPM-GPG-KEY-CentOS-Testing-7
[root@letty-02 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
选项:
--import:导入数字证书
[root@letty-02 ~]# rpm -qa | grep gpg-pubkey --查询系统中安装好的数字证书
gpg-pubkey-f4a80eb5-53a7ff4b
yum软件仓库是为了进一步简化RPM管理软件的难度以及自动分析所需软件包及其依赖关系的技术。yum的关键之处是要有可靠的respository,它能够从指定服务器自动下载rpm包并安装。yum能够自动解决软件依赖性问题,一次性安装所有依赖的软件包。
yum源配置文件保存在/etc/yum.repos.d/目录中,文件的扩展名一定是".repo",及yum源配置文件只要扩展名是".repo"就会生效。
[root@letty-02 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
/etc/yum.repos.d/目录下的文件如上所示,默认情况下CentOS-Base.repo文件生效。
[root@letty-02 yum.repos.d]# vim CentOS-Base.repo --展示该文件中的base容器
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@letty-02 /]# mkdir /mnt/cdrom --创建挂载点
[root@letty-02 /]# mount /dev/cdrom /mnt/cdrom/ --挂载光盘到/mnt/cdrom目录下
mount: /dev/sr0 is write-protected, mounting read-only
[root@letty-02 yum.repos.d]# mkdir sys
[root@letty-02 yum.repos.d]# mv *.repo sys
[root@letty-02 yum.repos.d]# ls
sys
[root@letty-02 yum.repos.d]# vim centos7.repo
[centos7]
name=centos7
baseurl=file:///mnt/cdrom --地址设置为光盘挂载地址
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@letty-02 yum.repos.d]# yum list available
Loaded plugins: fastestmirror, langpacks
centos7 | 3.6 kB 00:00:00
(1/2): centos7/group_gz | 155 kB 00:00:00
(2/2): centos7/primary_db | 2.8 MB 00:00:00
Loading mirror speeds from cached hostfile
Available Packages
389-ds-base.x86_64 1.3.4.0-19.el7 centos7
389-ds-base-libs.x86_64 1.3.4.0-19.el7 centos7
ElectricFence.x86_64 2.2.2-39.el7 centos7
GeoIP.x86_64 1.5.0-9.el7 centos7
......
通过网易yum源进行优化:http://mirrors.163.com/.help/centos.html
点击CentOS 7直接下载repo文件,之后移动到Linux系统中。
右键点击CentOS 7并选择复制链接地址,在Linux系统中通过wget命令进行下载
[root@localhost Desktop]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
--2021-04-30 16:10:58-- http://mirrors.163.com/.help/CentOS7-Base-163.repo
Resolving mirrors.163.com (mirrors.163.com)... 111.2.178.103, 111.2.178.101, 111.2.178.102
Connecting to mirrors.163.com (mirrors.163.com)|111.2.178.103|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1572 (1.5K) [application/octet-stream]
Saving to: ‘CentOS7-Base-163.repo’
100%[===================================================>] 1,572 --.-K/s in 0s
2021-04-30 16:10:58 (261 MB/s) - ‘CentOS7-Base-163.repo’ saved [1572/1572]
[root@localhost Desktop]# mv CentOS7-Base-163.repo /etc/yum.repos.d/
[root@localhost Desktop]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS7-Base-163.repo centos7.repo sys
[root@localhost yum.repos.d]# mv centos7.repo sys
[root@localhost yum.repos.d]# ls
CentOS7-Base-163.repo sys
[root@localhost yum.repos.d]# yum repolist --检查可用的yum源信息
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
repo id repo name status
!base/7/x86_64 CentOS-7 - Base - 163.com 10,072
!extras/7/x86_64 CentOS-7 - Extras - 163.com 463
!updates/7/x86_64 CentOS-7 - Updates - 163.com 1,901
repolist: 12,436
yum 命令格式:yum [选项] COMMAND [软件包]
软件包:如果为包名,则默认为软件包的最新版本;如果要指定软件包版本,则需要使用包全名
注意:在进行升级操作的时候,yum源服务器中软件包的版本要比本机安装的软件包的版本高。
注意:除非确定要卸载的软件依赖包不会对系统产生影响,否则不要执行yum卸载。
yum list:查询yum源服务器上所有可安装的软件包列表
[root@letty-02 ~]# yum list | more
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages --已经安装的软件包
......
Available Packages --还可以安装的软件包
......
yum list 包名:查询yum源服务器中是否包含某个软件包
[root@letty-02 ~]# yum list httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
httpd.x86_64 2.4.6-40.el7.centos centos7
yum search 关键字:查询yum源服务器上所有和关键字相关的软件包(可用于确定某个软件在哪个相关包中)
[root@letty-02 ~]# yum search ifconfig
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
========================================== Matched: ifconfig ===========================================
net-tools.x86_64 : Basic networking tools
yum info 包名:查询指定软件包的信息
[root@letty-02 ~]# yum info httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages --未安装
Name : httpd --包名
Arch : x86_64 --适合的硬件平台
Version : 2.4.6 --版本
Release : 40.el7.centos --发布版本
Size : 2.7 M --大小
Repo : centos7 --光盘
......
默认情况下,通过yum成功安装软件后,会把下载的软件包删除。如果要保留下载的软件包,可以编辑/etc/yum.conf,把里面的参数keepcache改为1(默认keepcache=0)。这样每次通过yum安装软件时,会把下载的软件包缓存在/var/cache/yum/目录下,下次安装相同软件时,就可以从缓存中直接获取软件包,在没有网络的情况下也可以正常安装。
软件组指的是一组相关的软件包(并不是指依赖关系),通过yum命令可以对组内软件包批量管理。
注意:
通过源码包安装时如果指定了安装目录,如 “./configure --prefix=安装路径”,卸载时只需要删除整个安装目录就可以了 “rm -rf 安装路径”,而且是100%卸载,不会像windows那样经常会残留那多注册表之类的垃圾。
如果源码包安装时没有指定安装目录,那么安装软件生成的文件会分别存储在 /usr/local/ 下的 bin、lib、etc 等目录下,删除起来就比较麻烦一点了。所以建议源码包安装一定要指定安装目录,方便卸载。如果忘记指定安装目录,则可以把make install这个命令的执行过程保存下来,以备将来删除使用。
文章浏览阅读6.2k次,点赞12次,收藏26次。1、表格显示数据<el-table :data="tableData" style="width: 100%"> <el-table-column prop="battery_min" label="最小值" width="180"/> <el-table-colum..._el-table内打开el-dialog
文章浏览阅读2.5k次。ubuntu22.04 双系统 anaconda 磁盘空间分配_联系拯救者ubuntu22.04安装
文章浏览阅读1.2k次,点赞2次,收藏6次。1 简介在信息时代的今天,随着计算机技术的发展,条形码作为一种简单、方便、廉价、高速的信息保存和传输技术,在世界各地应用广泛,是商品进入国际市场的通行证。 本论文的研究基于一种全新的购物理念,即无需排队等待收银员,只需要将选购的商品放入"自助购物系统",便可自助购物买单。目前超市中广泛使用的条形码扫描器是基于光电识别原理制作的,虽然技术成熟、简单,但需收银员人工定位条形码区域,且对条形码质量要求严格,若条形码部分发生断裂、有污渍等现象,则不能正确识读条形码所携带的信息。更不能识读应用越来越广泛的二维条形_条形码识别代码
文章浏览阅读2.7k次,点赞2次,收藏13次。答案是否定的,因为不管什么样的产品,最终呈现给用户的是UI层的功能,所以产品才需要招聘大量的测试人员进行UI层的功能测试。这些形形色色的测试金字塔,都是传统的自动化测试金字塔模型,都是很棒的视觉隐喻,可以让人思考不同层次的测试,还会告诉我们在每个测试层要做多少测试。让机器做最擅长的重复性工作,让测试人员做一些有挑战的有意义的探索性测试。分析测试金字塔,讲的都是理论上的内容,实际的自动化测试实践,大多数情况都变成了倒着的测试金字塔,UI层成了我们投入最多的地方,依次是service层和unit层。_test automation 是什么
文章浏览阅读2.7k次。I/O接口I/O接口是主机(CPU)与被控对象进行信息交换的纽带。主机通过I/O接口与外部设备进行数据交换。目前,绝大部分I/O接口电路都是可编程的,即它们的工作方式可由程序进行控制。此外,由于计算机只能接收数字量,而一般的连续化生产过程被测参数大都为模拟量,如温度、压力、流量、液位、电压以及电流等。因此,为了实现计算机控制,还必须把模拟量转换成数字量,即A/D转换。同样外部执行机构的控制也多为模拟量,所以计算机计算出控制量之后,还必须把数字量变成模拟量,即D/A转换。检测元件及执行机构在计算机控制_数字输入输出接口设计
文章浏览阅读1.4k次。笔者当然也看了很多别的博客的解决办法,亲测不符合我这个问题,下图为笔者问题的报错,请大家注意,前面xxxx的pid文件:拒绝访问,笔者意识到可能是权限问题,没错,果然是权限问题笔者无论关闭开启都不行,其实就是应为在安装的时候使用了root权限,所以有些问题需要root才能访问,切换到root权限就好了,一切正常..._error! mysql is not running, but pid file exists
文章浏览阅读2.6k次。安装tomcat后,在浏览器中输入http://localhost:9090/(默认端口为8080,可根据自己情况更改)就能出现如下页面:该页面来自/home/apache-tomcat-7.0.40/webapps/ROOT/index.jsp在一般的JavaWeb程序开发中,我们通常使用localhost或者127.0.0.1来访问本机的Web服务,但是如果_tomcat修改localhost为10.0.2.2
文章浏览阅读199次。1.变量变量指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据.类型则是对变量的种类进行了划分, 不同的类型的变量具有不同的特性1.1 整型变量基本语法格式:int 变量名 = 初始值;代码示例:int num = 10; // 定义一个整型变量 System.out.println(num) ; 注意事项:int 表示变量的类型是一个整型变量名是变..._java变量和标识运算符实训结果
文章浏览阅读493次。Do not go gentle into that good night软件环境:SecureCRT v 5.0.3SecureCRT是在工作中使用的很频繁的工具之一,昨天安装好后发现查看日志文件有乱码; 遂查之;后来发现网上有一堆说什么需要修改服务端i18n配置文件,找了一圈发现文件的位置还不尽相同;后来仔细想后觉得不太靠谱,至少针对我遇到的问题不靠谱;原因如下:a.我看的测试环境是运行了很久..._linux查看日志时换行
文章浏览阅读5.1k次,点赞2次,收藏16次。参考例程u8text_buffer[512] = "hospital,bednumber,name,age,sex,\n";int tf_add_write_file(char *path){ FIL fsrc; // 文件描述符 UINT br; // File R/W count u8 count..._fatfs csv
文章浏览阅读1.9k次。点评:这种方法需要知道原char*长度,而且需要delete防止内存泄漏。点评:这种方法需要知道原char*长度,而且需要delete防止内存泄漏。//注意设置5报错,要算\0。//测试发现设置5也行。方法四:sprintf函数。_char*给char*赋值
文章浏览阅读801次,点赞16次,收藏23次。博主介绍:CSDN特邀作者、985计算机专业毕业、某互联网大厂高级全栈开发程序员、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序、前端、python等技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导、面试辅导、简历修改。精彩专栏 推荐订阅2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐。_微信小程序 vue spring boot