Linux 依赖管理浅析
Linux 依赖管理浅析
软件依赖管理是Linux中极其重要的部分,本文浅要分析一下依赖管理中的相关内容
在debian系统中可以通过官网查所安装文件包的名称,可以在这个网站查看软件包列表;如果是电脑本地的,也可以通过命令来查找如apt search jre; apt remove 包名;apt purge 包名

archlinux也可以从官网上查看安装包名称,也可以从aur官网查看并安装
Linux安装卸载软件的方式
- 下载程序源代码编译安装
| 发行版名称 | 包管理工具 | 命令行示例 |
|---|---|---|
| CentOS/RedHat | yum | yum install xxx |
| Debian/Ubuntu | apt apt-get | apt-get install xxxx |
| Fedora | dnf | dnf install xxxx |
| FreeBSD | pkg | pkg install xxx |
| Alpine Linux | apk | apk add xxx |
为什么需要编译安装?
虽然有很多开源软件将软件打成包,供人们使用,但并不是所有源代码都打成包,如果想使用开源软件,可能需要自已下载源码,进行编译安装。另外即使提供了包,但是生产中需要用于软件的某些特性,仍然需要自行编译安装。但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具可以大大减少编译过程的复杂度。
源代码编译安装过程
利用编译工具,通常只需要三个大的步骤:
- ./configure
(1)通过选项传递参数,指定安装路径、启用特性等;执行时会参考用户的指定以及Makefile.in文件生成Makefile
(2)检查依赖到的外部环境,如依赖的软件包 - make根据Makefile文件,会检测依赖的环境,进行构建应用程序
- make install复制文件到相应路径
注:
编译安装后的配置
- 二进制程序自录导入至PATH环境变量中
编辑文件/etc/profile.d/NAME.sh - 相关用户及文件
有些开源软件编译完成后,还需要创建相关的用户及文件 - 导入帮助手册
编辑/etc/man.config|mandb.conf文件,添加一个MANPATH
编译安装示例
1、现在以源码安装tree为例,首先要获取tree的源码包;
yum info tree 查看源码包在哪里下载 apt info tree 查看源码包在哪里下载

2、打开上面的`http://mama.indstate.edu/users/ice/tree`,找到下载地址后右键复制链接;在linux窗口`wget http://mama.indstate.edu/users/ice/tree/src/tree-2.1.0.tgz`进行下载;

3、解压并进入下载下来的压缩包内;如果要修改版本可以在tree.c中进行修改;修改安装路径可以在`makefile`中修改。
4、安装完以后进行添加环境变量,否则的话系统是不能识别tree这个命令的
echo 'PATH=/apps/tree/bin:$PATH' > /etc/profile.d/tree.sh # $PATH原来就有的系统变量,在此基础上追加当前的tree系统变量; ./ect/profile.d/tree.sh # 执行一次系统变量 tree 此时tree命令就可以用了;
如下图所示,在安装的过程中缺少SDL2库,可以使用`apt search SDL2`,找到与这个库接近的库`libsdl2-dev`

然后使用`sudo apt install libsdl2-dev`进行安装;出现版本冲突的问题,哪些低了,哪些低了,哪些缺了;

可以使用`aptitude install libsdl2-dev`它的本质是读出依赖的问题并尝试解决;
对于 Linux 虚拟机,您可以从命令行手动安装 VMware Tools。对于 Linux 的较高发行版,请使用集成的 open-vm-tools 版本。
apt install open-vm-tools open-vm-tools-desktop -y
dpkg -l |grep open-vm-tools 查都安装了哪些包;

RedHat Package Manager包管理的基本使用方法【rpm包管理】

常见的包管理软件有apt, yum/dnf, pacman, zypper等
- 软件供应链的接入——–软件仓库源
- 依赖关系的自动解决
- 软件包的版本管理
- 软件包的升级管理
- 软件包的签名管理
下面以apt包管理器为例

rpm包相关的网站上可以下载软件包:rpmfind官站; phone官网;
rpm -ivh xxxx.rpm #rpm包的安装 rpm -qf `which zsh` #查zsh命令是由哪个包安装的; rpm -qpl /mnt/Packages #在软件没有安装之前查会产生哪些安装文件和命令; rpm -Uvh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm #对现有软件进行升级 rpm -e zsh #卸载软件;
源码包的安装
1、获得源码包 2、解压 tar -zxvf 3、配置、检测安装环境 #./configure 检测安装环境是否符合需求,如果没有问题,生成makefile文件; 4、编译 #make 5、安装 #make install 6、删除源码包 make uninstall,这样删除是不干净的,可以在configure时添加一个--prefix参数;删除时直接删除这个目录就可以了; 注:在linux中rz命令可以将远端文件上传到本地;在linux中sz命令可以将本地文件下载到远端;
