近期公司产品须要添加一个功能,就是版本号自己主动更新。使用apt-get 实现。

apt-get 软件源配置的方法,參见本人资源里的共享。以下是代码中作为升级的一部分。 

	FILE *fp;
char buffer[256];
char source_ok[] = "Reading package lists..."; if(0 > system("mv -f /etc/apt/sources.list /etc/apt/sources.list.upgrade"))
printf("cldUp backup old source list error!\n"); fp=fopen("/etc/apt/sources.list","w+");
if(0 == fp)
goto update_done;
fprintf(fp,"deb http://%s/apt %s %s", source_addr, source_dir, source_ver);
printf("\ndeb http://%s/apt %s %s\n", source_addr, source_dir, source_ver);
fclose(fp);
fp=popen("apt-get update 2>&1","r");
while(!feof(fp)){
if(0 == fgets(buffer,sizeof(buffer),fp))
break;
printf("%s",buffer);
fflush(stdout);
if(strstr(buffer,"Failed")){
trace_log(buffer);
printf("scan failed and exit\n");
goto update_done;
}
if(strstr(buffer,source_ok)){
trace_log(buffer); printf("scan sourceok and exit\n");
break;
}
}
pclose(fp); fp=popen("apt-get -y --force-yes install ssh 2>&1","r");
while(!feof(fp)){
if(0 == fgets(buffer,sizeof(buffer),fp))
break; printf("%s",buffer);
if(strstr(buffer,"1 upgraded")){
//save the upgrade info
b_upgrade_success = true;
trace_log(buffer); }
}
pclose(fp);
if(b_upgrade_success)
{
b_upgrade_success = 0; }
update_done: if(0 > system("mv -f /etc/apt/sources.list.upgrade /etc/apt/sources.list"))
printf("restore source list error!\n");
初步測试没有什么问题。

UBUntu 软件 源配置方法的更多相关文章

  1. 更换ubuntu软件源的方法

    第一步:查看本系统Codename 输入lsb_release -a查看本系统Codename,我的codename是bionic,如图: 第二步:搜索与codename对应的镜像地址 我搜索到的是: ...

  2. [机器学习] Ubuntu 软件源更新(校园网)以及问题总结

    最近在折腾Linux,在校园网下怎么能够很好的获取软件很是让我头疼啊~~~ 总结一下吧!!! 首先是校园网的源地址: 清华大学:https://mirrors.tuna.tsinghua.edu.cn ...

  3. ubuntu修改软件源的方法

    最快方法--替换法 刚安装好的ubutun,打开source.list后,用vim替换的方法将所有的us提付出替换为 cn,然后保存退出,更新即可. # vim /etc/apt/source.lis ...

  4. linux ubuntu 本地镜像 软件源 制作方法

    1.配置当前软件源,镜像非常大,所以首先要配置一下载速度快的软件源http://fffo.blog.163.com/blog/static/2119130682014322104136601/2.安装 ...

  5. 解决安装rpm包依赖关系的烦恼 - yum工具介绍及本地源配置方法

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  6. ubuntu 软件安装配置使用总结(由xmind:Depends:java8-runtime but is not installed引出)

    ubuntu 软件安装总结(由xmind:Depends:java8-runtime but is not installed引出) 不知道抽什么风,这几天PC上又用起了linux操作系统.其实之前断 ...

  7. 《完美应用ubuntu》之全面管理ubuntu软件源

    2.全面管理ubuntu软件包 2.1 DEB软件包之间的基本关系: (1)软件仓库:由ubuntu软件包的维护者维护并公开发布的DEB软件包的集合:可位于网络,服务器,硬盘等各种存储介质. (2)软 ...

  8. 01_ubantu国内软件源配置

    查找自己版本对应的软件源 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 以下为19.10版本清华大学的,个人100M的带宽,平均安装速度在600K ...

  9. 树莓派学习路程No.1 树莓派系统安装与登录 更换软件源 配置wifi

    在官网下载raspbian系统镜像,用Win32DiskImager写入TF卡 Image File 选择系统镜像,Device 选择TF卡盘符,Write即可.这样系统就写好了.把内存卡插进树莓派里 ...

随机推荐

  1. seajs模块化加载框架使用

    seajs是模块化加载框架.seajs.org已经打不开了,seajs的github.seajs速查文档 <!--如果完成下面4步,则seajs掌握了80%js模块化1.引入seajs的库 :& ...

  2. 五、人生苦短,我用python【第五篇】

    Python基本数据类型 运算符 1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算: 5.成员运算: 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为 ...

  3. 面试准备——java设计模式

    1 总体来说,设计模式分为三大类: 设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案. 创建型模式(五种):工厂方法模式.抽象工厂模式.单例模式. ...

  4. java面向抽象编程样例

    import java.util.*; abstract class Geometry{    public abstract double getArea();    }  class Pillar ...

  5. JS 调用存储过程传递参数

    引用 #region 程序集 Newtonsoft.Json.dll, v4.5.0.0 // E:\Newtonsoft.Json.dll #endregion public DataTable R ...

  6. BZOJ 2882 工艺 ——后缀自动机 最小表示法

    先说后缀自动机的做法. 直接把S串复制一遍成SS,然后建立后缀自动机,go边相当于在当前字符的后面插入,而son边可以看作在字符串前面加一个字符. 所以贪心的走字典序最小的边即可,而且根据后缀自动机的 ...

  7. ElasticSearch索引自定义类型

    ES可以自动检测字段并设置映射类型.如果设置的索引类型不是我们所需要的,我们可以自行定义. Rest API设置自定义索引 首先通过ES自动映射一个IP地址的字段的类型: <pre name=& ...

  8. 星球大战 BZOJ 1015

    星球大战 [问题描述] 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...

  9. NOJ 1111 保险箱的密码 【大红】 [区间dp]

    传送门 保险箱的密码 [大红] 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte总提交 : 118            测 ...

  10. LR(1)文法分析器 //c++ 实现

    1.先读入终结符,非终结符,和所有产生式. 2.预处理:初始化:getpp()获得每个非终结符在产生式左边时的产生式编号, 记录在 string getp[]中(可以多个). 3.获得所有的符号的fi ...