Linux系统上安装软件的方法和在windows上安装软件是有很大不同的,有时候Linux上安装软件碰到各种依赖不满足,是极为头疼的事情,下面盘点一下Linux上安装软件的几种方法,笔者基本上用的是ubuntu,所以主要讲Ubuntu上的软件安装方法,主要有以下几种方法:

(1)apt-get

(2)deb包安装

(3)源码编译安装

将分成独立的几个篇章来进行讲解。

方法一:成也萧何,败也萧何 的apt-get

要在ubuntu上安装软件,apt-get是一个很强大的工具,很多软件都可以使用该工具进行安装。但是Linux发行版本众多,apt-get的软件源更新没有跟上节奏,可能以前能装上的软件,后来就各种依赖不满足装不上了。我们先来看看apt-get的基本用法,再来看看如何解决依赖不满足的情况。

使用apt-get之前,需要配置软件源,软件源就是一个服务器地址列表,存储在/etc/apt/sources.list中,默认服务器是http://us.archive.ubuntu.com,你也可以网上查找一些国内Linux软件源服务器的地址,修改更新到/etc/apt/sources.list中,更改方法在网上可以查到很多文章。

配置好软件源之后,要进行sudo apt-get update,意思是从软件源服务器更新软件源信息,知道软件源上有哪些软件。做完这些后,apt-get就可以正式使用了,有如下常用的命令。

(1)安装或重装类操作

apt-get install <pkg>              # 安装软件包<pkg>,多个软件包用空格隔开

apt-get install --reinstall <pkg>  # 重新安装软件包<pkg>

apt-get install -f <pkg>           # 修复安装(破损的依赖关系)软件包<pkg>

(2)卸载

apt-get remove <pkg>  # 删除软件包<pkg>(不包括配置文件)

apt-get purge <pkg>   # 删除软件包<pkg>(包括配置文件)

(3)升级 —— 一定要慎用!一定要慎用!一定要慎用!

apt-get upgrade       # 更新所有已安装的包

apt-get dist-upgrade  # 发行版升级(如,从10.10到11.04)

更新到最新的软件包或发行版不一定是好事,可能导致你系统上安装的其他东西(各种库文件、代码、软件)都无法使用了

笔者从来没有使用过这两个命令,因为行为不可控、结果也不可控

要升级某个软件包的话,就使用apt-get install --reinstall <pkg>,pkg名字里指定版本号

(4)下载或清除

apt-get source <pkg>     # 下载pkg包的源代码到当前目录

apt-get download <pkg>   # 下载pkg包的二进制包到当前目录

apt-get source -d <pkg>  # 下载完源码包后,进行编译

apt-get build-dep <pkg>  # 构建pkg源码包的依赖环境(编译环境?)

apt-get clean            # 清除缓存(/var/cache/apt/archives/{,partial}下)中所有已下载的包

apt-get autoclean        # 类似于clean,但清除的是缓存中过期的包(即已不能下载或者是无用的包)

apt-get autoremove       # 删除因安装软件自动安装的依赖,而现在不需要的依赖包

(5)查询

apt-cache stats              # 显示系统软件包的统计信息

apt-cache search <pkg>       # 使用关键字pkg搜索软件包

apt-cache show   <pkg_name>  # 显示软件包pkg_name的详细信息

apt-cache depends <pkg>      # 查看pkg所依赖的软件包

apt-cache rdepends <pkg>     # 查看pkg被那些软件包所依赖

打开/var/log/apt/history.log,可以查看apt-get的软件安装记录

ubuntu上apt-get安装的软件包都缓存放在/var/cache/apt/archives,该目录里还会存放曾经下载过的deb安装包,但是这里的deb安装包不一定是完整可独立完整的,如果要使用deb包,还是通过正常方式下载完整的deb包进行安装更安全。

(6)apt-get intall报依赖关系不满足的解决办法

使用sudo apt-get intall xxx的时候,有时候会碰到错误提示:要安装的某个软件xxx依赖于另一个软件xxx-x.x.x,但是不会被安装,这类错误提示一般就是指被依赖软件已经被安装了,但是版本号对不上,其实绝大多数依赖关系不满足的情况就是由于版本号对不上导致的,可以通过以下步骤解决:

a) sudo apt-get update          # 更新软件源,软件安装不上,可能是有了更新

sudo apt-get -f install xxx  # -f选项表示以修复方式安装,先尝试这样方式,即使失败了也不影响

b) sudo apt-get --reinstall install xxx=xxx.1.2.3  # 根据错误提示,提示说依赖于哪个xxx.1.2.3,我们就重新装上那个软件包

如果以上方法还不行,可能是软件源配置不对,获取不到匹配的版本,需要修改/etc/apt/sources.list,这时候就需要上网查一下修改办法。

最后补充一下下,如果你使用的是带有桌面界面的Ubuntu系统,那么可以使用自带的Ubuntu软件中心进行软件的安装,也可以用Ubuntu软件中心安装一个新立得软件包管理器,新立得是图形化的apt-get管理工具。不管是Ubuntu软件中心还是新立得,还是可能会遇到依赖不满足的问题,还是得通过命令行的方式来解决依赖问题。个人认为,Linux毕竟是Linux,即使是Linux新手,也得减少对图形化操作界面的使用,毕竟最后很多事情还是要落到命令行界面上来解决。

作者:duqi

【华为云技术分享】Linux软件安装的几种方法 (一)—— apt-get相关推荐

  1. Linux软件安装的几种方法 (三)—— 源码安装

    [摘要] Linux系统上安装软件的方法和在windows上安装软件是有很大不同的,有时候Linux上安装软件碰到各种依赖不满足,是极为头疼的事情,下面盘点一下Linux上安装软件的几种方法,笔者基本 ...

  2. Linux软件安装的几种方法 (二)—— deb包安装

    [摘要] Linux系统上安装软件的方法,文末放一个福利,可搜索所有linux平台软件包的网址:https://pkgs.org/,非常.非常.非常强大!笔者发现这个网址的时候,激动到不能自已,妈妈再 ...

  3. Linux软件安装的几种方法 (一)—— apt-get

    [摘要] Linux系统上安装软件的方法和在windows上安装软件是有很大不同的,有时候Linux上安装软件碰到各种依赖不满足,是极为头疼的事情,下面盘点一下Linux上安装软件的几种方法,笔者基本 ...

  4. linux安装deb程序,Linux软件安装的几种方法 (二)—— deb包安装

    Linux系统上安装软件的方法和在windows上安装软件是有很大不同的,有时候Linux上安装软件碰到各种依赖不满足,是极为头疼的事情,下面盘点一下Linux上安装软件的几种方法,笔者基本上用的是u ...

  5. 【华为云技术分享】一文掌握5种常用的机器学习模型及其优缺点

    摘要:机器学习模型中有许多种不同方法可以用来解决分类和回归问题.在此尝试对每种模型的算法模式进行简要总结,希望能帮助你找着适合特定问题的解决方法. 机器学习模型中有许多种不同方法可以用来解决分类和回归 ...

  6. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 3

    4. 微观层面 4.1 个体动机 在开源软件发展之初, 商业组织的投入很少甚至没有, 完全是靠Richard Stallman 或者 linus Torvalds 这样的个人在努力推动开源软件艰难前行 ...

  7. 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 1

    前言 以互联网为代表的信息技术的迅猛发展对整个经济体系产生了巨大的影响.信息技术的发展一方面使知识的积累和传播更加迅速,知识爆炸性的增长:另一方面,使信息的获取变得越来越容易,信息交流的强度逐渐增加, ...

  8. 【华为云技术分享】三大前端技术(React,Vue,Angular)探密(下)

    [华为云技术分享]三大前端技术(React,Vue,Angular)探密(上) [Angular] Angular(通常被称为 "Angular 2+"或 "Angula ...

  9. 【华为云技术分享】直播回顾丨激发数据裂变新动能,HDC.Cloud云数据库前沿技术解读

    3月24日14:00-17:00,HDC.Cloud开发者沙龙系列云数据库专场直播线上开启,此次华为云数据库通过三场直播从NoSQL数据库新技术.数据库迁移.行业解决方案等方面对云端数据库进行深度解读 ...

最新文章

  1. 赠书 | 干货!用 Python 动手学强化学习
  2. 自动驾驶汽车测试在美惹争议,原因为何?
  3. 【干货】产品需求确定后,不要着急设计原型
  4. mysql show full_mysql: show full processlist 详解
  5. 前端技术分享:教你玩转vue-router命令视图
  6. jzoj1252,P5194-天平【dfs,set】
  7. Java EE体系概述
  8. nyoj------20吝啬的国度
  9. STM32——红外遥控器实验
  10. linux修改ip配置文件路径,Linux系统更改IP地址及连接XShell5
  11. 读《Jonathan von Neumann and EDVAC》
  12. html鼠标放上虚化背景图片,如何将网页CSS背景图高斯模糊且全屏显示
  13. CAD图纸显示不全?别慌,有浩辰CAD!
  14. win10下CUDA版本卸载与更新
  15. PID 控制器代码实现
  16. 中国大学 MOOC 课程Python语言程序设计 (第11期)测试答案(1-5周)
  17. warning ..\package.json: No license field
  18. 【渝粤教育】广东开放大学 现代企业管理 形成性考核 (51)
  19. 燃料电池汽车(FCV)动力传动系统的多域仿真
  20. php mysql 手机归属地_PHP手机号码归属地查询代码(API接口/mysql)

热门文章

  1. php ssh tab补全,bash的按TAB键自动补全(自动完成)的原理与扩展
  2. 有关java的参考软件_Java的相关的排序实现(参考软件设计师教程)
  3. 相干光通信系统的调制与解调
  4. python apscheduler 动态_基于Flask-APScheduler实现添加动态定时任务
  5. python paramiko并发_python学习笔记9--paramiko模块、多线程、锁机制
  6. php curl如何解决分页,一段PHP的分页程序,报错,该如何解决
  7. 非常有用的101道算法部分常见面试题
  8. [图形]图形API的两种模式
  9. Dubbo源码分析:ProxyFactory
  10. Redis 处理客户端连接的一些内部实现机制