近日处理安全漏洞时,出现了这样一个问题: 判断某软件组件是通过何种方式安装的。

知道是何种方式安装,才方便做进一步的解决(升级/配置/卸载等操作)

1 解压即用

例如: sublime_text、pycharm、mendeley、TauP、sac等

2 [包管理器+源] 官方源 / 第三方源

【包管理器】官方包管理器 / 非官方包管理器

CentOS 使用 rpm/yum ; Ubuntu 使用 apt/apt-get

官方:
源|在线安装: yum / apt-get
本地安装: rpm / apt 非官方: Linuxbrew、Gentoo Prefix、pkgsrc
sudo yum install PackageName

3 官方软件包 / 非官方软件包

例如: CentOS中的官方RPM包 / 非官方RPM包

3-1 [方式1] RPM方式安装

sudo rpm -i PackageName.rpm

sudo rpm -ivh PackageName.rpm

rpm参数: i表示安装,U表示升级(upgrade),v表示显示安装过程,h表示显示进度

3-2 [方式2] YUM方式安装

yum localinstall xxxpath/*.rpm

yum install VS yum localinstall

【yum localinstall】用来安装本地rpm包的命令,首先rpm包要先下载到本地,然后在本地目录执行yum localinstall *.rpm,yum会自动搜寻依赖关系并安装而rmp -i *.rpm不会自行解决依赖关系,缺少依赖就会报错

【yum install】会去yum仓库查找相应的软件并安装,仓库中的软件都是解决了依赖关系的

4 源码编译

4-1 编译源码——大型软件包

tar -xvf xxxx.tgz
./configure --prefix=/opt/xxxx
make
sudo make install

4-2 编译代码——专业性很强的小代码包的处理方式

mkdir ${HOME}/bin
echo 'export PATH=${HOME}/bin:$PATH'>> ~/.bashrc

【补充说明1】编译源码

前一节 “编译源码” 主要针对的是一些大型软件包,这一节 “编译代码” 指的是对一些 专业性很强的小代码包的处理方式。比如有些软件包编译之后实际需要的只是一个 二进制文件,这个时候就没有必要安装到 /opt 了,合适的方式是在自己的 HOME 下 建立 bin 目录,并将其路径加入到 .bashrc 中,然后将编译生成的二进制文件复制 到该目录下即可:

mkdir ${HOME}/bin echo 'export PATH=${HOME}/bin:$PATH'>> ~/.bashrc

比如我的 ${HOME}/bin 目录下有如下文件:

distaz :给出地球上两点经纬度,计算震中距和方位角 pssac :在 GMT 中绘制 SAC 文件 rdseed :SEED 格式转 SAC 格式 win2sac_32 、 catwin32 :Hi-net 网站提供的用于处理 Hi-net 数据的程序 st :sublime_text 被安装到 /opt 目录下,在此建立一个软链接,方便在命令行调用 sublime text wlt.pl :校内用于登陆网络通的脚本,在命令行修改网络端口,好 happy fk 、 fk.pl 、 syn 、 trav :Prof. Lupei Zhu 的用于计算合成地震图的程序,源代码有不少,实际需要用的也就这三个可执行文件和一个 perl 脚本。 matlab :指向 matlab 的一个软连接;

不要随便什么二进制文件都往 bin 里放,这里只应放一些常用的命令或很通用的工具。

【补充说明2】自成系统的软件

有一类软件,其拥有众多模块或包,为了管理这众多的模块,就需要拥有一个自己的模块 / 包管理器。
这其中以 TeX、Perl 和 Python 为代表。
对于这一类软件,其众多的模块是最大的优势,也是最值得利用的资源,因而我通常会选择手动安装它们,原因如下:
系统的源中不可能包含该软件的所有模块; 系统的源中该软件的模块的更新要远远滞后于最新版本; 当然,即便是使用系统自带的版本,也依然可以用该软件自带的包管理器来安装模块。但将导致: 部分模块用系统的 yum 管理,部分模块用软件自带的包管理器管理; yum 安装的模块一般版本较老,软件的包管理器要安装的大多是最新版本; 这一方面会导致模块管理的混乱,另一方面用软件自带的包管理其安装模块时,可能会依赖于其他模块的最新版本,若该模块是通过系统 yum 安装的较旧的版本,则可能导致模块的安装失败。 因而,对于这类软件,一般单独安装,并用各自的包管理器管理模块: TeXLive:通过 TeXLive iso 镜像文件安装,使用其自带的 tlmgr 管理包 Perl:通过 plenv 安装最新版本的 Perl,使用 plenv 自带的 cpanm 安装模块 Python:通过 pyenv 安装最新版本的 Python,使用 Python 自带的 pip 安装模块

5 小结

解压即安装
>包管理器安装(yum/apt-get; 系统源 优于 第三方源) 【 yum install -y <softwareName> 】
>软件成品包安装(rpm/apt; 系统包 优于 第三方包) 【 rpm -ivh xxx.rpm 】
>源码编译安装 【 tar -xvf xxxx.tgz | ./configure --prefix=/opt/xxxx | make | make install 】 解压即安装>系统源>第三方源>RPM包>第三方包管理器(Linuxbrew)>源码编译

X 参考文献

[Linux]Linux中安装软件的方式?的更多相关文章

  1. Linux系统中安装软件方法总结

    Linux系统中安装软件方法总结 [1]Linux系统中安装软件的几种方式 [2] Linux配置yum源(本地源和网络源) [3] SuSE下zypper源配置 [4] SUSE zypper 本地 ...

  2. Linux系统中安装软件的几种方式

    转载:https://blog.csdn.net/qq_36119192/article/details/82866329 好长时间没有静下心来学习一下linux了 最近对linux安装软件有了点小小 ...

  3. linux中安装软件的集中方法

    一.rpm包安装方式步骤: 引用:1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录:2.打开一个终端,su -成root用户:3.cd soft.version.rpm所 ...

  4. Windows10系统的Linux子系统中安装MySQL数据库心得

    后端开发童鞋们, 自己开发机用的是Windows系统电脑(台式机或笔记本), 而开发的程序和使用的数据库等要运行在Linux服务器上, 这种情况有木有? 提前声明: 本文并不讨论操作系统的比较, 以及 ...

  5. linux安装软件的几种方法----linux下编译安装软件的一般步骤

    linux安装软件的几种方法: 一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd so ...

  6. Linux 下如何安装软件?

    http://zhidao.baidu.com/link?url=OkQCOZtVMXhasC8x9zFTZOumsFKf0WW25Ckr2wBF1xO08EsjrBpnMaTBlIAUYdxZ408 ...

  7. 在 Linux 系统中安装Load Generator ,并在windows 调用方法

    在 Linux 系统中安装Load Generator ,并在windows 调用 由于公司需要测试系统的最大用户承受能力,所以需要学习使用loadrunner.在安装的时候碰到了不少问题,所以写下此 ...

  8. Zabbix 4.0.2试用(七):在Linux主机中安装zabbix agent并添加该主机(yum源安装)

    Zabbix 4.0.2试用(七):在Linux主机中安装zabbix agent并添加主机(yum源安装) 2018年12月20日, 上午6:42 之前介绍的是下载源安装包,编译安装的方式来安装ag ...

  9. 【Docker】在Linux系统中安装Docker虚拟机、启动停止重启查看Docker命令

    安装Docker 文章目录 安装Docker Docker虚拟机架构 在Linux系统中安装Docker虚拟机 管理Docker虚拟机 参考资料 Docker虚拟机架构 Docker创建的所有虚拟实例 ...

  10. linux系统中安装MySQL

    linux系统中安装MySQL 检查原来linux系统中安装的版本 rpm -qa | grep mysql 将其卸载掉 以 mysql-libs-5.1.71-1.el6.x86_64 版本为例 r ...

随机推荐

  1. Maven将项目包deploy到nexus私服

    maven配置 打开maven安装目录下面的settings.xml,在servers中添加配置.如下: pom配置 在pom文件中加入distributionManagement配置,注意:这里的i ...

  2. redis部署集群时出现的问题(redis 版本 6.2.5)

    配置 redis 集群时(redis 版本 6.2.5),我使用了同一个 server 端运行3个不同的配置文件. 配置文件中只修改了端口号并打开了 cluster-enable. 脚本运行后什么提示 ...

  3. 使用python的turtle库画一个冰墩墩

    目录 先看效果图 设置一个画布 画左手和手内 画轮廓和其他部分 画细节(眼睛.鼻子.嘴巴等) 画头部彩虹 画五环标志 最后(别忘记还有一个结束) 先看效果图 设置一个画布 点击查看代码 import ...

  4. Expression #1 of SELECT list is not in GROUP BY clause and contains nonag

    报错信息: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'a.rs ...

  5. 6vue分支循环

    分支v-if <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  6. sql server 计算时间差的一部分函数【转】

    在做Sql Server开发的时候有时需要获取表中今天.昨天.本周.上周.本月.上月等数据,这时候就需要使用DATEDIFF()函数及GetDate()函数了.DATEDIFF ( datepart ...

  7. java学习笔记(五)运算符

    ++ --   自增自减 a++ 执行完这行代码后,先给b赋值,再自增 ++a 执行完这行代码前,先自增,再给b赋值 Math类

  8. CH573 CH582 CH579蓝牙主机(Central)例程讲解一(主机工作流程)

    蓝牙主机,顾名思义,就是一个蓝牙主设备,与从机建立连接进行通信,可以接收从机通知,也可以给从机发送信息,可将Central例程和Peripheral例程结合使用. 蓝牙主机例程的工作流程大致如下: 一 ...

  9. TCP idle timeout 和TCP Keepalive 比较和分析

    TCP  idle timeout  和TCP Keepalive  是两个独立的功能. TCP  idle timeout  TCP  idle timeout  是系统TCP配置文件中的空闲超时设 ...

  10. 适用于 Linux 的 Windows 子系统使用 Visual Studio Code

    在WSL中使用VS Code,先在Windows中安装vscode,再通过功能扩展安装Vscode for wsl. VSCode 有system和user两个版本,默认下载链接为user版本.以下内 ...