热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

技巧:从源代码开始升级应用程序

文章标题:技巧:从源代码开始升级应用程序。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  升级也可以很简单
  从源代码开始升级软件也可以很简单,但您应该采取几个预防措施,当您初学编译源代码或者不太熟悉正要安装的源代码档案时尤其应该注意。下面列出了您应该密切注意的几点,但在大多数情况下,升级与最初的编译和安装步骤几乎相同。也就是说,这些步骤包括打开 tar 包、可选的 "./configure"、"make" 和 "make install"。如果您不熟悉这些术语,请首先查看 developerWorks 的 Compilingand installing software from sources 教程,然后再回头阅读本文。
  
  阅读 Changelog
  下载源代码以后,首先熟悉一下软件有哪些新变化 -- 这些变化通常在源代码主目录的 ChangeLog 或 README 文件中列出。您可能发现配置文件设置稍有变化,或者添加了一些新特性。最好在源代码的文档中弄清这些变化,而不要等到以后在这些地方犯了错误再补救。不进行这一步绝对是错误的 -- 另外,既然您花时间来安装这个软件包的新版本,了解一下它包括哪些新特性或修正了哪些错误不是一件好事吗?
  
  升级关键应用程序
  如果您正在升级对许多用户都有影响的应用程序(如繁忙的 Web 服务器上的 Apache),则倍加小心是值得的。如果可能,请首先在非生产机器上安装新版本源代码,并记下使新版本启动并运行所执行的每个步骤。这样,即使您在升级过程中遇到问题,也不会造成什么危害。而且,当您准备对您的生产机器进行升级时,您已经有了要执行的步骤的一个详细列表 -- 从而可以缩短高代价的停机时间。
  
  此外,如果您正在升级关键应用程序,则在非高峰时进行升级总是最佳选择。
  
  按相同的方式进行配置
  当升级应用程序时,人们容易犯的重大错误之一是在 "./configure" 行指定不同的、不兼容的选项,或者在 Makefile 配置中取消了不同行的注释标记。如果您希望执行简单的升级,则请确保软件新版本的配置与当前版本的配置完全相同。
  
  如果当前版本在 /etc 目录下查找它的配置文件,则将新版本配置为同样的方式是较好的选择。别草率从事;如果您在 "./configure" 命令行传递了不同的选项,其结果很可能是,新版本具有明显不同的功能,安装在错误的目录树中,或者在错误的位置查找它的配置文件或数据文件。如果您忘了原来所使用的配置选项或 Makefile 定义,则一定要在编译和安装新版本之前查清楚。为使升级顺利进行,您会希望一开始就获得这些设置。
  
  先备份原来的配置文件再进行安装
  对许多程序包而言,真正的挑战不在编译和安装阶段,而是在您键入 "make install" 之后设置应用程序以使它正常运行的过程中。这通常需要花好几个小时编辑应用程序的配置文件,配置文件通常在 /etc 目录下,并带有常用的 ".conf" 后缀。
  
  当您通过键入 "make install" 来安装程序包的新版本时,大多数 Makefile 不会覆盖磁盘上现有的配置文件 -- 但如果从安全方面来考虑的话,则应该庆幸这一点,而不是对此表示遗憾。如果您没有十分的把握,则一定要备份以前的配置文件!某些配置文件可能需要花几天的时间来重新构建,这随程序包的不同而有所不同。如果配置文件包含加密的口令,则重新构建相当耗时,或者干脆就不可能。
  
  如果您正在计划对您的 Linux 系统进行重大升级,则现在可能是执行全系统备份的好时机。如果您准备升级作为许多程序包正常工作基础的关键系统库或工具,这就显得尤为重要了。全系统备份本身就是很好的主意,我希望您不定期地对系统进行备份。
  
  手头准备好较旧的源代码
  我无意劝阻您将最喜欢的程序升级到最新版本 -- 但新版本的确可能无法工作。"./configure" 或 "make" 可能会崩溃。更糟糕的情况是,包括 "make install" 在内的每个环节都顺利通过,直到实际运行程序时才出现麻烦。多虫的源代码发行版确实存在,这就是之所以在手头保留较旧源代码(以及任何安装步骤)是个好主意的原因,以防较新的源代码不正常。
  
  测试!
  编译和安装是一回事,而确信新软件工作正常完全是另一回事。您一定希望确信您不是在根分区中安装了 500 KB 的垃圾。新版本的配置文件可能需要作少许修改,甚至可能需要大幅修改。如果您正在升级守护程序,请确保当重新启动时您的配置脚本成功地启动了这个新版本。您绝对不希望当您在两周以后重新启动服务器(而且您已经淡忘了该程序的配置细节)时发现任何问题。您可以按照本文中的建议进行操作,但是如果您不测试您的安装,则您正在漏掉最重要的步骤。
推荐阅读
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 解决MongoDB Compass远程连接问题
    本文记录了在使用阿里云服务器部署MongoDB后,通过MongoDB Compass进行远程连接时遇到的问题及解决方案。详细介绍了从防火墙配置到安全组设置的各个步骤,帮助读者顺利解决问题。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
author-avatar
上午劳动_951
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有