linux操作系统学习笔记(四)软件安装

    Ubuntu系统中,软件通常以 deb 格式的包文件发布,它是一种预编译软件包。deb包中除了包含已编译的软件,通常还包括软件的拷贝路径、对其它软件包的依赖关系纪录、比较通用的配置文件以及软件的描述、版本、作者、类别、占用空间等信息。

使用 dpkg 命令来管理deb软件包:

dpkg -i | --install xxx.deb 安装deb软件包

dpkg -r | --remove xxx.deb 删除软件包

dpkg -r -P | --purge xxx.deb 连同配置文件一起删除

dpkg -I | -info xxx.deb 查看软件包信息

dpkg -L xxx.deb 查看包内文件

dpkg -l 查看系统中已安装软件包信息

dpkg-reconfigure xxx 重新配置软件包

    有些时候,您使用 dpkg 安装一个软件包,系统会提示您该软件包依赖其它软件包。这时,您先安装其它软件包,直到满足依赖关系为止。或者同时安装多个软件包

dpkg -i aaa.deb bbb.deb ccc.deb

    如果一个软件依赖关系过于复杂,使用 dpkg来安装它,并不是一个明智的选择,这个时候您就需要用到APT软件包管理系统。APT可以自动的检查依赖关系,通过您预设的方式来获得相关软件包,并自动安装配置它。事实上,在多数情况下,我们推荐您使用APT软件包管理系统。

    APT系统需要一个软件信息数据库和至少一个存放着大量deb包的软件仓库,我们称之为 源 。 源 可以是网络服务器,安装CD或者本地软件仓库。您需要修改 /etc/apt/sources.list 文件,使APT系统能够连接到源。

APT系统主要包括 apt-get 和 apt-cache 等命令。通常是复合命令,包含若干个子命令。

apt-get install xxx 安装xxx

-d仅下载-f强制安装

apt-get remove xxx 卸载xxx

apt-get update 更新软件信息数据库

apt-get upgrade 进行系统升级

apt-cache search 搜索软件包

说明:建议您经常使用 sudo apt-get update 命令来更新您的软件信息数据库

 

APT系统修复

    由于各种意外,APT系统可能会出现问题,使用如下命令,尝试进行修复:

apt-get -f install

 

源码包

    对于绝大多数软件,我们建议您使用APT系统来安装它。在少数情况下,例如某软件没有以deb包的格式发布,或者需要定制适合自己的软件,您可以通过编译源代码的方式安装它。

    首先需要下载软件的源码包,并且将它解包为一些源代码文件。并了便于管理,建议将下载的源码包移动到 /usr/local/src/ 目录下,并在这里解包。

sudo mv xxx.tar.gz /usr/local/src 移动源码包

cd /usr/local/src 进入“/usr/local/src/”目录

sudo tar -xzvf xxx.tar.gz 解包源码

cd xxx_ver/ 进行解包后的源码目录

源码目录中通常有一个 configure 脚本,用来配置即将开始的编译过程。您可以执行它

sudo ./configure [--prefix=/usr/loca/xxx ......]

它会自动检测软件的编译环境和依赖关系,并且生成 Makefile 文件。

    使用带参数的命令 ./configure --help ,或者阅读 INSTALL 文件,查看该脚本允许的参数。例如使用

--prefix=/usr/local/xxx 参数,将软件的安装目录设定为 /usr/local/xxx/

现在执行 make 命令,系统会根据 Makefile 文件中的设定,通过 make 工具调用编译器和所需资源文件,将源代码编译成目标文件。

sudo make

执行 make install 命令, make 工具会自动连接目标文件和库文件,将最终生成的文件拷贝到 Makefile 文件设定的路径中,并且完成更改文件的属性,删除残留文件等活动。

sudo make install

现在,编译安装已经完成,为了更方便的使用它,需要给程序的可执行文件作一个符号链接。

sudo ln -sf /usr/local/xxx/可执行文件 /usr/local/bin/可执行文件

Tip:为了顺利的进行编译,至少需要安装 build-essential 软件包。

sudo apt-get install build-essential

 

参考链接:https://www.jianshu.com/p/0ae245cfe1cf

你可能感兴趣的:(linux)