程序的安装——软件安装包的制作、软件源的使用

news2025/1/16 17:37:41

读书笔记 —— 《嵌入式C语言自我修养》

软件安装

linux

安装包的制作

编译

软件安装包路径

使用dpkg命令来制作安装包   及   安装包的卸载

软件仓库

更新源

查看具体需要更新的软件包     更新软件包


软件安装

软件安装的过程其实就是将一个可执行文件安装到ROM的过程。ROM中存储的数据断电后不会消失,常用来保存程序的指令和数据,但ROM不支持随机存取,因此程序运行时,会首先将指令和数据从ROM加载到RAM,然后CPU到RAM中取指令就可以了。

下载的软件安装包里包含了可以在计算机上运行的可执行文件,开发者为了方便用户使用,将可执行文件、程序运行时需要的动态共享库、安装使用文档等打包压缩,生成可运行的自解压安装包格式。

使用安装包安装软件就是将包中的可执行文件解压出来,然后将可执行文件和动态共享库复制到指定的安装目录,并把这些安装信息告诉操作系统。当用户要运行这个软件时,操作系统就会从安装目录找到这个可执行文件,把它加载到内存执行。

在Linux环境下,一般将可执行文件直接复制到系统的官方路径/bin、/sbin、/usr/bin下,程序运行时直接从这些系统默认的路径下去查找可执行文件,将其加载到内存运行。

linux

安装包的制作

Linux操作系统一般可分为两派:Redhat系和Debian系。Redhat系使用RPM包管理机制,而Debian系,像Debian、Ubuntu等操作系统则使用deb包管理机制。

在制作deb包时,除了可执行文件,还需要一些控制信息来描述这个安装包,如软件的版本、作者、安装包要安装的路径等,这些控制信息放在一个叫作control的文件里。下面我们就写一个简单的helloworld程序,并为它制作一个deb包。

helloworld.c

#include <stdio.h>
int main(void)
{
    int j,j,count=0;
    printf("this is my first program!\n");
    while(1)
    {
        printf("hello  world!\n");
        for(i=0;i<20000;i++)
            for(j=0;j<20000;j++)
                ;
    }
    return 0;
}

编译

gcc -o helloworld helloworld.c

软件安装包路径

创建一个helloworld同名目录,然后进入该目录,分别创建DEBIAN、usr/local/bin/目录,并在DEBIAN目录下创建control文件,将可执行文件helloworld复制到usr/local/bin/目录下,操作完成后helloworld的目录结构如下所示制作一个软件安装

usr/local/bin/表示deb包的默认安装路径 

control文件用来记录安装包的安装信息

package:helloword
version:1.0
architecture:i386
maintainer:wit
description:deb package demo

使用dpkg命令来制作安装包   及   安装包的卸载

# dpkg -b helloworld/ helloword_1.0_i385.deb
//安装
# dpkg -i helloword_1.0_i385.deb
//卸载程序及配置文件
# dpkg -P helloworld  
//卸载程序
dpkg -r helloworld  

软件仓库

因为每个人都可以编译、制作deb包,并随意发布到网上,这就很容易造成混乱软件包鱼龙混杂,质量得不到保证,Ubuntu操作系统采用一个软件仓库来管理这些deb包,第三方开发者发布的软件和工具首先要通过官方验证,然后把这些包放到一个官方网站服务器上,提供给用户下载使用。当用户使用apt-get命令安装软件时,只能到这个服务器下载。考虑到全球各个地方的网络环境差异,官方网站一般会在全球各地配置多个镜像服务器,Ubuntu用户可以根据自己的网络状况,到网速最快的服务器上去下载和安装deb包。这些服务器我们也称为软件源(repository),简称为“源”。这些服务器的网络地址保存在/etc/apt/source.list文件中。当用户使用apt-get install安装软件时,apt-get工具就会根据这个source.list文件中的服务器地址去下载对应的软件包。

访问国外的网站速度可能会慢很多,选择一个国内镜像源,如阿里云软件源、中科大软件源等服务器地址,添加到/etc/apt/source.list文件中,修改后,需要更新源。

更新源

#apt-get update

这个命令的作用是访问/etc/apt/source.list文件中的每一个服务器,读取可以支持下载的软件列表,并保存到本地计算机中(/var/lib/apt/lists)。当你要安装的软件不在软件列表中时,很可能就会安装失败。另一个作用是本地已经安装的软件如果和软件列表中的版本不一致,则系统就会提示软件需要更新。

查看具体需要更新的软件包     更新软件包

# apt-get list --upgradable
# apt-get update

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全狗云原生安全从1.X到2.X的演变之路(1)

随着云计算技术的蓬勃发展&#xff0c;传统上云实践中的应用升级缓慢、架构臃肿、无法快速迭代等“痛点”日益明显。能够有效解决这些“痛点”的云原生技术正蓬勃发展&#xff0c;成为赋能业务创新的重要推动力&#xff0c;并已经应用到企业核心业务。然而&#xff0c;云原生技…

大型数据中心分层分布式谐波治理方案设计与效果分析

摘要&#xff1a;数据中心行业在国民经济中起到了不可替代的作用,但其繁多的非线性电力负载,如通讯系统、大型计算机、网络控制设备、变频空调、各种数码办公设备、灯光调控系统、UPS、监控系统等给其供电系统带来了严重的谐波干扰,对大型数据中心的运行安全造成了较大的威胁,为…

200:vue+openlayers 添加删除多边形,modify feature,双向互动颜色显示

第200个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayers项目中添加删除多边形,每绘制一个,左侧列表出一个信息。 hover左侧文字,右边地图上红色显示图形,点击选中右侧地图上某feature,变成蓝色高亮,同时左侧也会蓝色显示,做到双向互动。 高亮显示某feature,…

如何删除图片数据中的重复数据

我们在工作中经常这种情况&#xff0c;leader给你一堆数据&#xff0c;让你用这些没有清洗过的数据完成项目。痛苦的是&#xff0c;这批数据居然存在很多重复的样本。那如何删除这些冗余数据呢&#xff1f;imagehash库非常好用。 github地址&#xff1a;https://github.com/ch…

络达开发----如何开启DMIC

芯片型号&#xff1a;AB1565 功能模块&#xff1a;数字MIC接口的使用 AB1656评估板上支持两路数字MIC&#xff0c;分别为DMIC0和DMIC1&#xff0c;如果图1所示&#xff0c;分别 可以由GPIO_2/3/4/5/13/14/15/16来当数字MIC的接口。 图1&#xff1a;支持DMIC的IO口但是评估板上…

MAC M1使用Rosetta安装python3.6

在使用网上提到的brew和pyenv安装的时候&#xff0c;我的电脑总会报BUILD FAILED错误。 找了一天才找到解决办法&#xff0c;真的十分痛苦&#xff0c;特此记录一下&#xff0c;让别的小伙伴也不再迷茫。 解决办法参考网址&#xff1a;click here&#xff08;需要VPN&#xff…

html跑马灯走马灯效果

演示 <marquee width"100%" scrollamount"5"> <a href"http://www.taobaojp5.tk"><font face"楷体_GB2312" color"#ff0000" size"3"></font><strong>带有超链接的跑马灯!点我试试&…

uwsgi 快速入门

文章目录uwsgi 快速入门一、 概述1、 简单介绍2、 环境配置二、 第一个 WSGI 应用1、 运行2、 添加并发三、 结合 Web 服务器使用1、 Flask2、 Django3、 Nginx配置uwsgi 快速入门 一、 概述 1、 简单介绍 WSGI&#xff08;Web Server Gateway Interface&#xff09;&#x…

FPGA知识汇集-ASIC移植中的FPGA芯片划分

通常&#xff0c;FPGA单芯片难以容纳下整个ASIC设计&#xff0c;因此需要将整个系统划分到多颗FPGA芯片中运行&#xff08;见图1&#xff09;&#xff0c;工程师往往需要借助原型验证平台来实现这样的目标。多芯片的划分绝不是简单的将不同的模板放置到不同的FPGA中那么简单&am…

算法训练营 day16 二叉树 二叉树的最大深度 二叉树的最小深度 完全二叉树的节点个数

算法训练营 day16 二叉树 二叉树的最大深度 二叉树的最小深度 完全二叉树的节点个数 二叉树的最大深度 104. 二叉树的最大深度 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树&#xff0c;找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点…

(JVM) 沙箱安全机制

沙箱安全机制 沙箱安全机制 保证程序安全 保护Java原生的JDK代码 Java安全模型的核心就是Java沙箱&#xff08;sandbox&#xff09;。什么是沙箱&#xff1f;沙箱是一个限制程序运行的环境。 沙箱机制就是将Java代码限定在虚拟机&#xff08;JVM&#xff09;特定的运行范围…

Javaweb+Vue开发中常见的问题-1

1.Vue乱码问题 Vue2 修改打包文件的编码格式&#xff08;webpack-encoding-plugin&#xff09;_一碗单炒饭的博客-CSDN博客_vue如何设置打包文件的编码格式 怎么把命令行改成utf_8 - 沿途百知 设置命令行的编码格式&#xff1a;chcp 65001 https://bbs.csdn.net/topics/3935426…

基于微信小程序云开发的职业学校招生报名小程序源码,职业学校招生报名微信小程序源码 ,职业学校招生报名小程序源码

功能介绍 这是一个以报名为核心的职业学校招生小程序&#xff0c;目的是方便想要系统学习技能&#xff0c;入门某项技能或者领域的初高中毕业生&#xff0c;了解该学校的基本情况及各个专业&#xff0c;并提供报名路径&#xff0c;致力于技能型人才培养。本程序前后端代码完整…

ikun运球新姿势-- 反弹shell

目录 反弹Shell 反弹shell的概述 正向连接 反向连接 为什么需要反弹shell 利用netcat反弹shell 利用Bash反弹shell curl配合Bash反弹shell 将反弹shell的命令写入定时任务 将反弹shell的命令写入/etc/profile文件 python脚本反弹shell 反弹Shell 反弹shell的概述 …

免费的移动硬盘数据恢复软件EasyRcovery15

在日常工作中&#xff0c;移动硬盘可以帮助用户存储重要的文件资料&#xff0c;作为可移动的存储设备&#xff0c;在外出工作时携带起来也比较的方便&#xff0c;而且它的存储空间大&#xff0c;不会出现数据文件过大而无法储存的情况。今天小编就来和大家分享一下&#xff0c;…

算能杯|全国大学生集成电路创新创业大赛开启报名!

第七届全国大学生集成电路创新创业大赛正式开幕&#xff0c;“算能杯”主题是基于TPU芯片的边缘计算系统设计&#xff0c;算能为参赛选手提供了超强算力的开发板、无人机、人工智能小车等硬件资源&#xff0c;欢迎各大高校的开发者报名参与&#xff01; 近几年&#xff0c;边缘…

4-选择题练手

1.在Java中&#xff0c;以下关于方法重载和方法重写描述正确的是A. 方法重载和方法的重写实现的功能相同 B. 方法重载出现在父子关系中&#xff0c;方法重写是在同一类中 C. 方法重载的返回值类型必须一致&#xff0c;参数项必须不同D.方法重写的返回值类型必须相同或相容答&am…

05.rocketmq源码分析后的一些整理

经过近3年的打磨&#xff0c;我们自研的企业基础应用框架基本成型&#xff0c;并且在多家规模企业中全面落地&#xff0c;从最新的统计数据来看&#xff0c;经过一年的上线应用&#xff0c;某省港集团在平台中管理的运营流程接近600/审批事项接近73w&#xff0c;业务消息量就更…

SSM02 Spring 注解开发 AOP Spring整合-事务

19-注解开发定义bean3.2 注解开发定义bean在上述环境的基础上&#xff0c;我们来学一学Spring是如何通过注解实现bean的定义开发?步骤1:删除原XML配置将配置文件中的<bean id"bookDao" class"com.itheima.dao.impl.BookDaoImpl"/>标签删除掉步骤2:D…

麒麟操作系统iso文件中的img文件的解压与压缩

近日考虑到要制作适用PXE的引导麒麟系统&#xff0c;所以需要对iso中的img文件做适当调整。本文将介绍如何解压压缩麒麟系统的img文件。 一、了解vmlinuz和initrd.img文件 vmlinuz&#xff1a;系统内核文件&#xff0c;编译而成。initrd.img&#xff1a;是一个小的文件系统&a…