| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux系统离线安装包及其依赖的下载安装 -> 正文阅读 |
|
[系统运维]Linux系统离线安装包及其依赖的下载安装 |
一、概述??我们在Linux系统下进行项目开发时,经常会出现缺少某些依赖库或者开发包的情况,这时候一般会通过使用apt命令去联网下载。但在某些特殊情况下(例如终端硬件不支持网络连接,周边缺少有线与无线网络,或者需要批量安装程序到很多终端上时),就需要我们先将对应的依赖环境安装包下载下来,然后拷贝到对应终端上手动安装。以下就针对Linux系统下载与安装离线安装包以及依赖包的相关知识进行整理。 二、APT-Linux软件包管理工具??APT(Advanced Packaging Tool),是一个命令行实用程序,是工作于Debian, Ubuntu等相关linux发行版上的软件包管理系统。它提供了如自动检索、配置和安装软件包等功能来简化软件的管理。通过apt命令,能够从互联网的软件仓库中搜索、安装、升级、卸载软件等。大多数apt命令必须以具有sudo权限的用户身份运行。 从上面的表格可以知道,使用apt命令,我们可以不用关注在进行不同操作时需要使用apt-get还是apt-cache命令,简化了软件包命令操作。不过由于apt命令是专为终端用户设计,对于基础的软件包管理操作,在交互性上相对传统的 apt-xxx 命令有了一定的提升,但这是通过牺牲向后兼容性得到的,因此在脚本等场景下,应当使用更强调向后兼容性的传统 apt-xxx 命令。并且由于apt作为一个志在简化基础软件包管理操作的命令,对于许多高级操作,例如使用 apt-mark 固定软件包版本,是完全没有涉及的,因此在需要用到一些对软件包的高级操作时,应当使用apt-xxx命令。而在进行一些软件包基础操作时,使用apt命令即可。 1、语法
2、常用option
3、常用command
以下对常用的apt命令进行简要说明: 1)sudo apt update从远程仓库更新可用软件包列表到本地。如果长久不更新,那么新版本的软件包将不会被其他apt相关命令下载安装。 2)sudo apt upgrade [package_name]若指定包名,则升级指定软件包;若未指定包名,则升级所有可更新的软件包。(如果升级某个包需要卸载其他包则不做处理) 3)sudo apt [-y] [-d] install package_name1 [package_name2] …安装指定软件包,若安装多个包,则使用空格隔开,也可以用来安装本地deb文件。可以添加"-y"选项用来跳过安装过程中的确认步骤;可以添加"-d"选项用来下载对应的软件离线安装包,下载的软件包默认存放位置是/var/cache/apt/archives。 4)sudo apt remove package_name1 [package_name2] …卸载指定软件包,若卸载多个包,则使用空格隔开。使用remove会保留配置文件,使用purge可以完全移除软件包。 5)apt download package_name下载指定的软件包,存放位置为执行命令的窗口所在目录。 6)sudo apt list显示出所有可用的软件包。存在以下几种扩展用法:
7)apt search package_name用于搜索指定包。 8)sudo apt autoremove清理不再使用的依赖和库文件。 三、dpkg??“dpkg”是“Debian Packager ”的简写。为Debian专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自Debian的Linux发行版都使用dpkg,例如Ubuntu、Knoppix等。 1、语法
2、常用option
3、dpk命令常见用法1)sudo dpkg -i [–force-overwrite] package_name.deb安装指定的软件包文件,文件名需带有绝对路径或相对路径,若同时安装多个deb包,可以以空格隔开。添加 --force-overwrite 参数,可以进行强制覆盖安装,可以用来解决安装deb包时提示尝试覆盖部分库失败的问题。 2)sudo dpkg -r package_name卸载指定软件包。 3)dpkg -l [package_name]显示指定的已安装软件包的版本信息,若未指定软件包名,则显示所有已安装软件包列表信息。 4)dpkg -L package_name显示与软件包关联的文件,可以用来查看指定软件包都安装到了哪些目录下。 5)dpkg -c package_name.deb显示软件包文件内的文件列表,作用与 -L 类似,不过 -L是针对已安装软件的,而 -c 是针对软件包deb文件的。 6)dpkg -X package_name.deb xxx将指定deb包中的文件解压到指定的xxx目录中,并在命令行中打印出所有的目录与文件名。 四、安装包及其依赖的下载和安装以下在UOS系统1050版本上,进行build-essential安装包下载来举例说明。 1、获取当前系统安装build-essential软件所需的依赖软件包名称打开终端,输入 sudo apt install build-essential 命令,但不要同意安装,这样子就看到联网下载时会进行安装或升级的软件包名称。 从上图中可以看到,若我们通过apt命令联网安装build-essential软件包,此时一共会安装build-essential、g++、g+±8和libstdc+±8-dev这4个软件包。我们可以使用apt depends命令来查看对应软件包的依赖。 其中,build-essential是目标软件包,目前系统中缺少g++依赖,而g++又缺少了g+±8依赖,g+±8缺少了libstdc+±8-dev依赖。通过这种方式,我们就直接获取到了build-essential目前系统所缺少的依赖和依赖的依赖。 2、下载离线安装包通过apt download命令,将步骤1需要的软件包下载下来。 3、离线安装软件包可以简单写一个sh脚本,用来进行软件包及其依赖的安装,方便操作。脚本中实现的功能很简单,就是用一条dpkg命令来安装多个deb包,这样子可以不用关心这些deb包的依赖顺序。执行脚本前,记得使用ls -l命令查看sh脚本文件是否有执行权限,若没有,则使用chmod命令赋予执行权限。 额外说明如果我们仅安装build-essential的deb包,而不安装其依赖包,则会出现以下提示: 此时我们可以使用sudo apt -f install或sudo apt --fix-broken install命令来修复当前系统依赖存在问题的地方,从图上可以看出,也是提示缺少了g++、g+±8和libstdc+±8-dev这三个依赖软件包。 还可以参考下这篇文章(apt一键下载所有依赖的包),通过shell命令组合来一键下载所有所依赖的包。 参考 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 6:25:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |