Ubuntu软件包管理-APT-PPA-Dpkg-源代码安装

Linux软件安装基础

所谓软件包,是指将应用程序,配置文件以及数据等支持文件打包成一个文件.一般Linux发行版都支持特定格式的软件包,Ubuntu使用的软件包格式是Deb.使用软件包管理器可以方便的安装,卸载以及升级软件包

Linux软件包管理的发展

1. 从源代码安装软件

2. 使用软件包安装软件

目前主流的软件格式有两种:RPM和Deb
Deb是Debin Packager的缩写,是Debin和ubuntu系列发行版本上使用的软件包格式(后缀名是.deb),需要使用dpkg命令进行管理.dpkg是Debian Packager的简写,用于安装,更新,卸载Deb安装包,以及提供Deb安装包的相关信息

RPM 是RedHat Package Manager(软件包管理器)的缩写,是由红帽公司提出的一种软件包管理标准,文件名后缀为.rpm.这种文件格式虽然有rpm标识,但是其设计理念是开放性的,加之功能十分强大,是最主流的软件包格式之一.可以使用rpm工具管理RPM软件包

3. 高级软件管理工具

高级软件包安装工具能够通过Internet主动获取软件包,自动检查个修复软件包之间的依赖关系,实现软件的自动安装和更新升级,大大简化了Linux系统上安装,管理软件的过程.
这种工具需要通过Internet从后端的软件库下载软件,适合线上使用.目前主要的高级软件包管理工具主要有两种Yum和APT两种,另外有一些商业版的工具则由Linux开发商专门提供

  • Yum(Yellow dog Updater, Modified)是一个基于RPM包的软件包管理器,恩能够从指定的服务器自动下载RPM包并完成安装,可以处理依赖关系,并且一次安装所有依赖的软件包,无需用户繁琐的一次次下载,安装.Red Hat Enterprose Linux, Centos等Linux发行版均采用Yum
  • APT(Advanced Packaging Tools)可以译为高级软件包安装工具,是Debian以及派生发型版(如ubuntu)的软件包管理器.APT能够自动下载,配置,安装二进制或者源代码格式的软件包,甚至只需要一条命令就能够更新整个系统的所有软件
    APT最早被设计成dpkg工具的前段,用来处理Deb格式的软件包.现在经过APT-RPM组织修改,RPM版本的APT已经可以安装在使用RPM版本的Linux发行版

Ubuntu软件安装方式

作为主流的Linux桌面版,Ubuntu支持多种软件方式.Ubuntu主要使用Deb软件包,建议用户首先APT工具

1. Ubuntu软件中心

2. APT工具

APT工具是首选的ubuntu软件安装方式.Ubuntu分别针对命令行界面和图形界面提供了APT工具,命令行工具是apt,图形界面工具是新立得软件包管理器(Synaptic)

3. PPA安装

APT和Ubuntu软件安装中心都是软件源安装方式,通常从Ubuntu官方仓库中获取软件.但是Ubuntu官方仓库收录的软件版本相对滞后.对于没有收录到Ubuntu官方仓库的软件,可以通过PPA这种非正式的软件仓库提供
PPA是Personal Package Archive的缩写,可以译为个人软件包档案.使用PPA,软件制作者可以轻松发布软件,并且能够准确的对用户进行升级.Ubuntu用户可以使用PPA源在第一时间体验到最新版本的软件.APT和Ubuntu软件中心都可以添加PPA安装源

4. Dpkg工具

上述几种软件源安装都是需要在线操作,而获取Deb安装包后,可以直接使用dpkg命令工具进行离线安装,无需联网.这是Ubuntu传统的软件安装方式,最大的困难是自行处理软件的依赖性问题
对于RPM包,Ubuntu无法直接进行安装,需要使用alien工具将其转换为Deb包格式

5. 其他二进制安装

有些软件直接采用二进制包方式发布,常用的格式有bin和run,此类软件在命令行运行安装文件即可,或者在图形界面文件管理器双击该软件进行安装,前提是为该软件包赋予可以执行的权限

6. 源代码安装

上述安装方式基本都是属于预编译安装,提供现成的二进制文件,但是有时不得不采用最原始的源代码安装方式,下载软件源代码进行编译之后在进行安装.这种方法最为通用,但是安装过程最为复杂,难度最大,不过专业一点的Linux用户还是应当尽可能掌握

APT工具

Ubuntu软件安装首先APT工具,可以是命令行工具,也可以是图形界面的新立得,必要时可以考虑PPA非正式软件源

理解APT

1. 基本功能

  • 从Internet上的软件源下载最新的软件包元数据,二进制包或者源代码包.软件包元数据就是软件包的索引和摘要信息文件
  • 利用下载到本地的软件包元数据,完成软件包的搜索和系统更新
  • 安装卸载软件包时自动寻找最新版本,并自动解决依赖关系
    使用APT工具安装,卸载,更新,升级软件,实际上是通过调用底层dpkg来完成的

软件源

APT的软件源在Ubuntu安装的时候已经初始化设置,提供Ubuntu官方的网络安装来源.用户也可以使用系统安装光盘或者从非官方的软件源中下载非官方的软件.除了直接下载deb包之外,也支持下载源代码软件,自定编译,安装
Ubuntu的**/var/lib/apt/lists目录存放的是已经下载的各软件源的元数据(metadata),这些数据是系统更新和软件包查找工具的基础.
在这里插入图片描述
Ubuntu软件中心,APT(包括新立得软件包管理器)和软件更新器(Update Manager)等工具就是利用这些信息来更新和安装软件的.Ubuntu软件中心和APT安转和卸载软件的信息来源
/var/lib/dpkg/states(应该是status)**,查看软件的信息来源是/var/lib/apt/lists.软件更新器将系统已经安装的软件版本信息(存放在/var/lib/dpkg/status目录)与/var/lib/apt/lists/目录中的同名的软件版本进行比较,以[判断是否更新,然后将所有需要更新的软件在窗口中列出

3. 解决依赖关系

APT会从每一个软件源下载一个软件包的列表到本地,列表中提供有软件源所包含的可用软件包的信息.多数情况下,APT会安装最新的安装包,被安装的软件包所依赖的其他软件包也会安装,建议安装的软件包则会给出提示信息,但不会安装.
也有APT因依赖关系不能安装软件包的情况.例如某个软件包和系统中其他软件包冲突,或者该软件包依赖的软件包在任何软件源中均不存在或者没有符合要求的版本.遇到这种情况,APT会返回错误信息并且终止,需要用户自行解决软件依赖问题

4. 软件包更新

APT可以智能的从软件源下载最新版本的软件并且安装,无需安装后重新启动系统,除非更新Linux内核.所有的配置都可以得到保留,升级软件非常便捷
APT还支持Ubuntu从一个发行版本升级到另一个发行版本,可以升级绝大部分满足依赖关系的软件,但是也可能要卸载或者添加新的软件以满足依赖关系,这些都可以自动完成

APT命令行工具的使用

常用的APT命令行工具有两个,apt-get执行与软件包安装有关的所有操作.apt-cache用于查询软件包相关信息

1. 使用apt-cache命令查询软件包

apt-cache命令用于在APT的软件包缓存中搜索软件,收集软件包信息,获知哪些是可以在Ubuntu上安装的软件.由于支持模糊查询,apt-cache查询非常方便.该命令支持子命令,选项和参数,以下是基本用法

  • 执行pkgnames子命令列出当前所有可以的软件包
apt-cache pkgnames
  • 使用子命令search查找使用参数定义的软件包并列出该软件包的相关信息,参数可以使用正则表达式,最简单的是直接使用软件部分名字,将列出包含该名字的所有软件.
apt-cache search htop
  • 使用子命令show可以查看指定名称的软件包的详细信息
apt-cache show htop
  • 使用子命令depends可以查看软件包所依赖的软件包
apt-cache depends htop
  • 使用子命令rdepends可以查看软件被哪些软件依赖
apt-cache rdepends htop
  • 使用子命令showpkg查看软件包的依赖关系信息
apt-cache showpkg htop
  • 使用子命令显示软件包的安装状态和版本信息
apt-cache policy htop

2. 使用apt-get命令操作软件包

命令apt-get会自动帮助用户下载并且安装所需的程序包或代码.apt-get命令一般需要root权限执行,所以需要sudo命令

sudo apt-get [options] 子命令

apt-get的基本用法如下

在这里插入图片描述

3. 安装软件包

建议用户在每次安装和更新软件包之前先执行apt-get update更新系统中apt-get缓存
中的软件包信息

sudo apt-get update
  • 只有执行该命令才能保证获取最新的软件包.接下来师范安装软件,这里以安装经典的编辑器Emacs为例
sudo apt-get install emacs

在安装过程中,APT为用户提供了大量信息,自动分析并解决了软件包依赖问题

4. 卸载软件包

执行apt-get remove命令会卸载一个已经安装的软件包,但会保留软件包的配置文档.例如:

sudo apt-get remove emacs

在这里插入图片描述
如果要删除的更彻底可以执行一下命令

sudo apt-get autoremove 软件包名

这将删除该软件包及其所依赖的,不在使用的软件包

APT会将下载的Deb文件备份在硬盘上的目录/var/cache/apt/archives中,已经安装或者已经删除的软件包的Deb文件备份都在该目录下.为了释放被占用的空间,可以执行命令
apt-get clean来删除已经安装的软件包的备份,如果是要删除已经卸载的软件包的备份可以执行命令apt-get autoclean

5. 升级软件包

执行apt-get upgrade命令会升级本地已安装的所有安装包.如果已经安装的软件有最新版.则会进行升级,升级不会卸载已安装的软件,也不会安装额外的软件包.升级的最新版本来源于/etc/apt/sources.list列表给出的安装源,因此执行这个命令之前一定要执行apt-get update以确保软件包信息是最新的.APT会下载每个软件包的最新更新版本,然后以合理的此讯安装他们

  • 可以先使用-s来模拟升级软件包,这样可以便于查看那些软件会被更新,确认没有问题,在实际执行升级
  • 可以使用-u使得APT显示完整的可更新软件爱你列表
sudo apt-get upgrade -u -s 

如果只想对某一软件包进行升级,可以再执行安装软件爱你包命令时加上–reinstall选项

sudo apt-get --reinstall install 软件包名

配置APT源

Ubuntu使用文本文件/etc/apt/sources.list来保存软件包的安装和更新源的地址.另外与该文件功能相同的是/etc/apt/sources.list.d/目录下的.list文件,为在单独文件中写入安装源的地址提供了一种方式,通常用来安装第三方软件.执行apt-get update就是同步(更新)/etc/apt/sources.list和/etc/apt/sources.list.d/目录下的.list文件的软件源索引,以获取最新的软件包

/etc/apt/sources.list是一个可编辑的普通文本文件.这里给出部分内容
在这里插入图片描述
在这里插入图片描述
在浏览器中输入http://archive.ubuntu.com/ubuntu/,并进入dists目录,可以发现有5个目录和前述sources.list文件中的第三列字段相对应.任意一个目录进入,可以看到和sources.list后四列相对应的目录结构

  • 用户可以通过修改文件来更改apt源.首先执行一下命令备份源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

然后使用文本编辑器gedit打开

sudo gedit /etc/apt/sources.list

从列表中选择合适的源替换文件中所有的内容,保存编辑好的文件

阿里云配置软件源

PPA安装

APT和Ubuntu软件中心都可以添加PPA安装源.所有的PPA都寄存在launchpad.net网站上,供Ubuntu用户使用.该网站由Canonical公司架设,是一个提供维护,支援或联系Ubuntu开发者的平台.使用PPA的好处是Ubuntu系统中使用的PPA源的原件可以再第一时间体验到最新版本的软件.

1. 管理PPA源

PPA源的语法格式如下

ppa:user/ppa-name

具体软件包的标识可以到launchpad.net网站查看
添加PPA源的命令如下:

sudo add-apt-repository ppa:user:ppa-name

删除PPA源的命令如下:

sudo add-apt-repositroy -r ppa:user/ppa-name

也可以通过图形界面软件来删除或者添加PPA源.打开系统设置,单击系统区域的软件和更新按钮打开相应的界面,切换到其他软件选择卡,可以查看和管理其他软件安装源列表.如图
在这里插入图片描述

  • 查看系统版本:
lsb_release -a

添加或者删除PPA源之后还需要更新系统软件源(sudo apt-get update)

2.通过PPA源安装软件

有很多PPA软件提供多个版本,包括正式稳定版,每日创建版,开发板,测试版等
这里以inkscape为例
可以访问该网址查看PPA原格式.这里使用命令行工具添加该安装源,需要执行一下命令

#添加PPA源
sudo add-apt-repository ppa:inkscape.dev/stable
#执行更新系统软件源命令
sudo apt update
#然后在安装软件
sudo apt-get install inkscape
# 启动软件
inkscape
  • 效果:
    在这里插入图片描述

  • 如果不在需要PPA软件源,可以执行一下步骤删除

#首先执行命令删除PPA软件源
sudo add-apt-repository -r  ppa:inkscape.dev/stable
#可以不删除软件,就是我留着没用
sudo apt-get remove inkscape

然后进入/etc/apt/sources.list.d/目录,删除
在这里插入图片描述
最后执行相同的命令更新系统软件源

sudo apt-get update

因为PPA相对开放几乎所有人都可以上传软件包,所以应该尽量避免使用PPA.
如果必须使用,则选择可以信赖的,有固定团队维护的PPA

源代码安装的基本步骤

1.下载和解压软件包

Linux,Unix最新的软件通常是以源代码打包形式发布的,最常见的是tar.bz2和tar.gz这两个压缩包格式.这两种格式的区别在于前者比后者的压缩效率高,侯泽比前者压缩和解压话费时间少.同一个文件,压缩后.bz2文件比.gz文件更小,但是要以话费更多的时间为代价
两者都是使用tar工具打包和解压缩,解压缩命令有所不同

tar -jxvf file.tar.bz2
tar -zxvf file.tar.gz
  • 选项 -j指示具有bzip2的属性,即需要bzip2格式压缩或者解压缩
  • 选项-z指示具有gzip的属性,即需要gzip格式压缩或者解压缩
  • 选项-x用于解开一个压缩文件
  • 选项-v表示在压缩过程中显示文件
  • 选项-f表示使用压缩包文件名,注意在f之后要跟文件名,不要在添加其他选项或者参数

通常将以tar这个命令来压缩打包的文件称为Tarball,这是UNIX和Linux广泛使用的压缩包格式
下载源代码包文件之后,首先需要解压缩.Linux中一般将源代码复制到/usr/local/src中,但是Ubuntu默认禁止root账户,为了方便起见,可以将源代码包复制到主目录再压缩,这样访问权限不会受到太多限制.
完成解压缩之后,进入解压后的目录中,查阅INSTALL和README等相关帮助文档,了解该软件的安装要求,软件的工作项目,安装参数配置以及技巧等,这一步非常重要.安装文档也会说明要安装的依赖性软件.依赖性软件的安装很有必要,是成功安装源代码的前提

2. 执行configure生成编译配置文件Makefile

源代码需要编译成二进制代码再进行安装.自动编译需要Makefile文件,在源代码包使用configure命令生成.多数源代码包都提供一个名为configure的文件,它实际上是一个使用Bash脚本编写的程序
该脚本将扫描系统,以确保程序所需的库文件已经存在,并做好文件路径以及其他所需的设置工作并创建Makefile这个文件
为了方便根据用户的实际情况生成Makefile文件以指示make命令正确编译源代码,configure通常会提供若干选项供用户选择.每个源代码包中configure命令选项不完全相同,实际应用中可以执行命令./configure -help来查看.不过有些选项比较通用.

在这里插入图片描述
其中比较重要的就是–prefix选项,他后面给出的路径就是软件要安装到的那个目录,如果不用该选项,默认安装到/usr/local目录

3. 执行make命令编译源代码

make会根据Makefile文件中的设置对源代码进行编译并生成可执行的二进制文件.编译工作主要运行gcc将源代码编译成为可以执行的目标文件,但是这些目标文件通常还需要链接一些函数库才能产生一个完整的可执行文件.使用make就是要将源代码编译成为可执行文件,放置在目前所在的目录之下,此时还没有安装到指定目录中

4. 执行make install安装软件

make只是生成可执行文件,要将可执行文件安装到系统中,还需要执行make install命令
通常这就是最后的步骤了,make根据Makefile文件中关于install目标的设置,将上一步骤所编译完成的二进制文件,库,配置文件等安装到预定目录中

源代码包安装的三个步骤:configure,make,make install 依次执行,其中只要一个步骤无法成功,后续的步骤就无法进行.
另外执行make install安装的软件,通常可以执行make clean命令卸载

源代码安装示例-Apache服务器

  1. 安装apache
  • 下载源代码包文件
https://mirrors.bfsu.edu.cn/apache//httpd/httpd-2.4.43.tar.gz
  • 将源代码包文件复制到用户主目录的Downloads中,执行一下命令对其解压缩
tar zxvf httpd-2.4.43.tar.gz 

完成解压缩之后在当前目录下自动生成一个目录(根据压缩包文件名,本例中为httpd-2.4.43),并将所有文件释放到该目录中

  • 阅读其中的INSTALL文件,了解安装事项,给出INSTALL文档的部分内容

  APACHE INSTALLATION OVERVIEW

  Quick Start - Unix
  ------------------

  For complete installation documentation, see [ht]docs/manual/install.html or
  http://httpd.apache.org/docs/2.4/install.html

     $ ./configure --prefix=PREFIX
     $ make
     $ make install
     $ PREFIX/bin/apachectl start

     NOTES: * Replace PREFIX with the filesystem path under which 
              Apache should be installed.  A typical installation
              might use "/usr/local/apache2" for PREFIX (without the
              quotes).

            * Consider if you want to use a previously installed APR and
              APR-Util (such as those provided with many OSes) or if you
              need to use the APR and APR-Util from the apr.apache.org
              project. If the latter, download the latest versions and
              unpack them to ./srclib/apr and ./srclib/apr-util (no
              version numbers in the directory names) and use
              ./configure's --with-included-apr option. This is required
              if you don't have the compiler which the system APR was
              built with.  It can also be advantageous if you are a
              developer who will be linking your code with Apache or using
              a debugger to step through server code, as it removes the
              possibility of version or compile-option mismatches with APR
              and APR-Util code. As a convenience, prepackaged source-code
              bundles of APR and APR-Util are occasionally also provided
              as a httpd-2.X.X-deps.tar.gz download.

            * If you are a developer building Apache directly from
              Subversion, you will need to run ./buildconf before running
              configure. This script bootstraps the build environment and
              requires Python as well as GNU autoconf and libtool. If you
              build Apache from a release tarball, you don't have to run
              buildconf.

            * If you want to build a threaded MPM (for instance worker)
              on  FreeBSD, be aware that threads do not work well with
              Apache on FreeBSD versions before 5.4-RELEASE. If you wish
              to try a threaded Apache on an earlier version of FreeBSD,
              use the --enable-threads parameter to ./configure in
              addition to the --with-mpm parameter.

            * If you are building directly from Subversion on Mac OS X
              (Darwin), make sure to use GNU Libtool 1.4.2 or newer. All
              recent versions of the developer tools on this platform
              include a sufficiently recent version of GNU Libtool (named
              glibtool, but buildconf knows where to find it).

  For a short impression of what possibilities you have, here is a
  typical example which configures Apache for the installation tree
  /sw/pkg/apache with a particular compiler and flags plus the two
  additional modules mod_rewrite and mod_speling for later loading
  through the DSO mechanism:

     $ CC="pgcc" CFLAGS="-O2" \
     ./configure --prefix=/sw/pkg/apache \
     --enable-rewrite=shared \
     --enable-speling=shared 

  The easiest way to find all of the configuration flags for Apache 2.4
  is to run ./configure --help.


  Quick Start - Windows
  ---------------------

  For complete documentation, see manual/platform/windows.html.en or
  <http://httpd.apache.org/docs/2.4/platform/windows.html>


  Postscript
  ----------

  To obtain help with installation problems, please see the resources at
  <http://httpd.apache.org/support.html>

  Thanks for using the Apache HTTP Server, version 2.4.

                                     The Apache Software Foundation
                                     http://www.apache.org/

README文档提到要安装apr-util

  • 切换到httpd-2.4.43目录,执行configure脚本

执行一下命令:

./configure 

可以发现configure运行不正常,提示没有APR.经过查阅资料,APR是Apache Portable Runtime 的缩写,可以下载相应源代码包

https://mirrors.bfsu.edu.cn/apache//apr/apr-1.7.0.tar.gz
  • 下载APR源代码包,并且进行安装
    将其复制到~/Downloads/software目录下,依次执行一下命令完成ARP安装
./configure
make
sudo make install
  • 切换到http-2.4.13目录执行configure脚本,依然不成功,提示错误,缺少apr-util
  • 下载apr-util,安装方式和apr一致
https://mirrors.bfsu.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
  • 再次回到http-2.4.13目录执行configure脚本,依然不成功,提示

在这里插入图片描述
执行一下命令

./configure --with-apr=/usr/local/apr

其中/usr/local/apr是apr默认安装地址

  • 继续运行make命令,完成源代码编译,这一步时间比较长
  • 继续运行sudo make install 命令,完成安装

1.测试Apache

默认将Apache安装到/usr/local目录,切换到该目录的bin子目录尝试启动

sudo /usr/local/apache2/bin/apachectl start

启动成功
在这里插入图片描述

  • 关闭apache
sudo ./apachectl stop

安装软件包文件

Deb软件包管理

1.查看Deb软件包

dpkg -l 软件包名

如果不加软件包名,将显示所有已经安装的Deb包
然后结合管道操作查看某些软件包是否安装

在这里插入图片描述

  • 可以使用-s 查看软件包详细信息
    在这里插入图片描述

2.安装Deb安装包

使用选项-i安装Deb软件包,命令格式如下

sudo dpkg -i 软件包文件名

如果以前安装过相同的软件包,执行此命令会将原有的旧版本删除

3.卸载Deb软件包

  • 卸载软件包可以使用选项-r
sudo dpkg -r 软件包名

选项-r会保留配置信息,如果要删除配置信息则使用-P

sudo dpkg -P 软件包名

RPM软件包管理

RPM软件包的名称具有特定的格式,其格式如下

软件名称-版本号(包括主版本和次版本号).软件运行的硬件平台.rpm

例如 netconfig安装包的名称为netconfig-0.8.24-1.2:2.1.386.rpm

在支持RPM的发行版之中,通常使用rpm命令来安装和卸载软件,

1.安装rpm软件包:

rpm -ivh 软件包全路径名

2.卸载RPM软件包

rpm -e 软件包名

3.查询RPM软件包

rpm -q 软件包名

注意Ubuntu的格式是.deb,不应该直接安装RPM包.如果要安装RPM包,则要先用alien工具将.rpm转换成.deb格式.
####4. 安装alien

sudo apt-get install alien

5.将.rpm格式转换为.deb格式

使用alien将.rpm格式转换为.deb格式,完成后会生成一个同名的.deb格式

sudo alien 文件名.rpm

.run与.bin二进制软件包安装

在这里插入图片描述

©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页