[Linux]Linux中安装软件的方式?
近日处理安全漏洞时,出现了这样一个问题: 判断某软件组件是通过何种方式安装的。
知道是何种方式安装,才方便做进一步的解决(升级/配置/卸载等操作)
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 installVSyum 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中安装软件的方式?的更多相关文章
- Linux系统中安装软件方法总结
Linux系统中安装软件方法总结 [1]Linux系统中安装软件的几种方式 [2] Linux配置yum源(本地源和网络源) [3] SuSE下zypper源配置 [4] SUSE zypper 本地 ...
- Linux系统中安装软件的几种方式
转载:https://blog.csdn.net/qq_36119192/article/details/82866329 好长时间没有静下心来学习一下linux了 最近对linux安装软件有了点小小 ...
- linux中安装软件的集中方法
一.rpm包安装方式步骤: 引用:1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录:2.打开一个终端,su -成root用户:3.cd soft.version.rpm所 ...
- Windows10系统的Linux子系统中安装MySQL数据库心得
后端开发童鞋们, 自己开发机用的是Windows系统电脑(台式机或笔记本), 而开发的程序和使用的数据库等要运行在Linux服务器上, 这种情况有木有? 提前声明: 本文并不讨论操作系统的比较, 以及 ...
- linux安装软件的几种方法----linux下编译安装软件的一般步骤
linux安装软件的几种方法: 一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd so ...
- Linux 下如何安装软件?
http://zhidao.baidu.com/link?url=OkQCOZtVMXhasC8x9zFTZOumsFKf0WW25Ckr2wBF1xO08EsjrBpnMaTBlIAUYdxZ408 ...
- 在 Linux 系统中安装Load Generator ,并在windows 调用方法
在 Linux 系统中安装Load Generator ,并在windows 调用 由于公司需要测试系统的最大用户承受能力,所以需要学习使用loadrunner.在安装的时候碰到了不少问题,所以写下此 ...
- Zabbix 4.0.2试用(七):在Linux主机中安装zabbix agent并添加该主机(yum源安装)
Zabbix 4.0.2试用(七):在Linux主机中安装zabbix agent并添加主机(yum源安装) 2018年12月20日, 上午6:42 之前介绍的是下载源安装包,编译安装的方式来安装ag ...
- 【Docker】在Linux系统中安装Docker虚拟机、启动停止重启查看Docker命令
安装Docker 文章目录 安装Docker Docker虚拟机架构 在Linux系统中安装Docker虚拟机 管理Docker虚拟机 参考资料 Docker虚拟机架构 Docker创建的所有虚拟实例 ...
- linux系统中安装MySQL
linux系统中安装MySQL 检查原来linux系统中安装的版本 rpm -qa | grep mysql 将其卸载掉 以 mysql-libs-5.1.71-1.el6.x86_64 版本为例 r ...
随机推荐
- Leetcode457
A very absurd description for this problem, but people can get the idea by looking at the examples.. ...
- 用bcftools将多个vcf文件合并成一个vcf文件 或将多个vcf和合并成的vcf文件拆分成单个样本的vcf文件
1. 软件的安装 a. bcftools 的安装 b. bgzip的安装: https://blog.csdn.net/weixin_30471065/article/details/95108525 ...
- GPS时钟之户外防水防雷细节
GPS时钟之户外防水防雷细节------专业LED时钟厂家![点击进入] GPS的脆弱性: 由于在GPS设计时,干扰环境下的工作能力不是优先考虑的因素,它只是作为一种导航的辅助工具,而不是用于精确制导 ...
- SSD目标检测网络解读(含网络结构和内容解读)
SSD实现思路 SSD具有如下主要特点: 从YOLO中继承了将detection转化为regression的思路,一次完成目标定位与分类 基于Faster RCNN中的Anchor,提出了相似的Pri ...
- Mongodb可参考的查询
条件AND 1 db.csr_log_info.find({$and:[{enterTime :{$regex:/2021-08-31 18:01/}},{enterTime :{$ne:" ...
- npm安装时加 --save和不加的区别
npm install xxx --save 命令是安装模块到项目node_modules目录下,会将模块依赖写入package.json文件中的dependencies{}下.如果将node_mod ...
- 01 docker容器技术基础入门
本章内容: 1.container是什么? 2.LXC技术介绍 3.namespaces-名称空间,实现资源隔离 4.容器的资源分配--Cgroup,实现资源分配 5.LXC与dockers ---- ...
- 不同页面的 body设置
由于SPA页面的特性,传统的设置 body 背景色的方法并不通用. 解决方案:利用组件内的路由实现 第一种方式 // 实例创建之前 beforeCreate(){ document.querySele ...
- Oracle查询优化经验
1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. (低效,执行时间156 ...
- NX二次开发 批量导出X_T(包括部件里的装配体)
VS2019 NX1946 UF_initialize(); string filepath = strDir + "\\";//拼接路径 //获取图层过滤 PropertyLis ...