在Linux平台下,软件包的类型可以划分为两类:源码包、二进制包。

源码包:

即程序软件的源代码(一般也叫Tarball,即将软件的源码以tar打包后再压缩的资源包)。

二进制包:

如 Red Hat发行版的.rpm包,Debian发行版的.deb包。

源码安装的主要步骤

1)获取源代码文件:一般为压缩包,并解压。

2)执行config: 一般在源代码目录中有install 或 readme等说明。

运行./config --prefix=PREFIX或者 ./config, config是一个可执行文件,其作用是检测操作系统,并生成makefile文件。其检测的内容有:系统中是否有合适的编译器来编译本软件,是否已经存在本软件所需要的函数库或其他相关软件,操作系统版本是否符合要求等。其中,PREFIX为安装位置。

曾经自己编译qt源码时,运行config时,其先生成了qmake,然后qmke根据.pro文件生成makefile文件。

3)执行make命令。

make根据makefile中指定的规则来将源代码编译成可执行文件。但是,这些可执行文件被放在当前目录下,不会安装到预定的安装目录中。

4)执行make install

make会根据makefile中关于install的选项,将上一步编译出来的东西(?)搞到指定的安装目录中。

-------------------------------------------------------

--prefix后面接的路径表示这个软件将要安装到哪个目录去,如果没有指定--prefix=/path这个参数,通常默认为/usr/local。推荐安装位置为 /usr/local/XXX,XXX为自己的实际目录,这样会方便以后的管理。

源码包安装方式的man文件默认保存在/usr/local/man或/usr/local/share/man中,如果你的安装路径自定义为如/usr/local/XXX,则man文件则一般是在/usr/local/XXX/share/man中。此时如果你想要通过man来查看你所安装软件的man手册,则需要自行修改man的路径配置文件(可能是man.config或者manpath.config)。需要在相应位置添加如下一行:

MANPATH    /usr/local/XXX/share/man

卸载

通过源码包安装的软件,当你想要卸载的时候,只需要把整个安装路径删除掉就行了,100%卸载,不会像windows那样经常会残留那多注册表之类的垃圾。

根据你的安装时候选择的安装路径,源码包的卸载又仓库两种情况:

如果你安装时候指定的路径为:

--prefix=/usr/local/XXX,那么卸载的时候只需要把XXX这个文件夹删除即可,因为该软件安装的所有文件都是放置在XXX这个文件夹。

但如果你进行源码包安装的时候没有指定位置(默认值一般为/usr/local/),或指定的位置为--prefix=/usr/local,则这时候你安装软件生成的文件将分别存储在/usr/local/里面的bin、lib或ect等目录中,这时候卸载起来就相对麻烦一点了。

源码包安装与二进制包的区别

源码包的优点:

1)开源,如果有能力可以修改源代码

2)可以自由选择所需的功能

3)软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高

4)卸载方便

源码包的缺点:

1)安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误

2)编译过程时间较长,安装比二进制安装时间长

3)因为是编译安装,安装过程中一旦报错新手解决

二进制包的优点:

1)包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载

2)安装速度比源码快得多

二进制包的缺点:

1)经过编译,不可以再看到源码

2)功能选择不如源码包灵活

3)依赖性

Linux软件安装管理---源码安装的更多相关文章

  1. linux操作之软件安装(二)(源码安装)

    源码安装 linux上的软件大部分都是c语言开发的 , 那么安装需要gcc编译程序才可以进行源码安装. yum install -y gcc #先安装gcc 安装源码需要三个步骤 1) ./confi ...

  2. linux下的wireshark最新版安装(源码安装)以及一些常见问题

    源码安装教程 http://www.cnblogs.com/littleTing/p/3765589.html 1.下载wireshark: 网址:http://www.wireshark.org/d ...

  3. Linux应用和系统库的2种安装方式---源码安装tarball和二进制rpm包

    一.应用程序和系统库从哪里来? 两种机制,源码安装和二进制安装. 二.源码安装 tarball 1.核心思想是:利用开源代码,自己编译生成应用程序或者库,要求系统上必须已安装TMG(tar, make ...

  4. CentOS Linux release 7.3源码安装zabbix

    CentOS Linux release 7.3安装zabbix 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 前言: 我去年用用centos6的环境搭建了一下 zabbix3.0 ...

  5. Linux 中mysql安装(源码安装方式)

    本文是介绍以源码安装的方式编译和安装Mysql 5.6(可以指定安装路径),也可以不采用源码安装方式,直接用安装包的方式. 源码安装方式慎用,容易报错. 1.卸载旧版本 rpm -qa | grep ...

  6. Zabbix的安装(源码安装)

    zabbix3.0完全安装 安装zabbix首先需要安装ltmp(lnmp),这里的t是指tengine(taobao的nginx版本),安装教程见 http://www.ltmp.cc 安装的时候P ...

  7. LAMP动静分离安装(源码安装)

    环境: 版本 IP地址 源码包版本 Centos7.5_mysql 192.168.111.3 mysql-5.7.24.tar.gz,cmake-3.13.1.tar.gz,boost_1_59_0 ...

  8. Nginx安装之源码安装

    nginx部署 1. 安装依赖 yum install gcc gccc++ pcre pcre-devel zlib zlib-devel openssl openssl-devel-y 2. 下载 ...

  9. linux下无root源码安装软件

    先进入源码文件夹下指定安装路径 ./configure --prefix=/public/home/ztu/usr/samtools 编译 make 安装 make install 写入环境变量 vi ...

随机推荐

  1. 对象(面向对象、创建对象方式、Json)

    一.面向对象 面向过程:凡事亲力亲为,每件事的具体过程都要知道,注重过程 面向对象:根据需求寻找对象,所有的事都用对象来做,注重结果 面向对象特性:封装.继承.多态(抽象性) js是一门基于对象的语言 ...

  2. bzoj 5206

    $n$ 点 $m$ 边图的有限制三元环个数 首先将所有左右端点并且属性相同的边的权值相加,合并为一条边 在这只之前得先排序排序之前得先判断是否需要交换左右端点的位置 T_T 然后统计三元环 补充说明按 ...

  3. 爬虫(十三):scrapy中pipeline的用法

    当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为, ...

  4. Codeforces 1175G Yet Another Partiton Problem [DP,李超线段树]

    Codeforces 思路 首先吐槽一句:partiton是个什么东西?我好像在百度翻译里面搜不到呀qwq 发现不了什么性质,那就直接上DP吧.注意到DP可以分层,所以设\(dp_i\)表示当前层,分 ...

  5. jsp 页面 javax.servlet.jsp.JspException cannot be resolved to a type 异常

    <dependencies><dependency><groupId>javax.servlet</groupId><artifactId> ...

  6. Spring Cloud Gateway(三):网关处理器

    1.Spring Cloud Gateway 源码解析概述 API网关作为后端服务的统一入口,可提供请求路由.协议转换.安全认证.服务鉴权.流量控制.日志监控等服务.那么当请求到达网关时,网关都做了哪 ...

  7. 针对于linux初学者的学习(摘自网络端)

    一. 选择适合自己的Linux发行版谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他 ...

  8. sqlmap环境搭建

    1.安装Python2.7.12 1.1.下载Python2.7.12地址:https://www.python.org/downloads/ 1.2.环境变量配置Python2.7.11 1.3.验 ...

  9. js回车键事件

    js回车键事件 一.总结 一句话总结: $("#focus").keypress(function(event){if(event.which === 13) { /*点击回车要执 ...

  10. TortoiseGit进行squash后冲突,如何撤销

    还没有commit之前,需要撤销. 最暴力的,直接用git reset --hard HEAD How to undo a git merge squash? If you run git merge ...