Linux 笔记 - 第九章 Linux 中软件的安装

博客地址:http://www.moonxy.com

一、前言

在 Linux 系统中,应用程序的软件包主要分为两种:
1)第一种是二进制的可执行软件包,也就是解开包后就可以直接运行。在 Windows 中几乎所有的软件包都是这种类型,类似于 exe ,安装完这个程序后就可以使用,但你看不到源代码,而且下载时要注意这个软件是否是你所使用的平台,否则将无法正常安装。
2)第二种是源代码软件包,解开包后,你还需要使用编译器将其编译成为可执行文件。这在 Windows 系统中几乎是没有的,因为 Windows 的思想是不开放源程序的。
通常,用 tar 打包的,大多是源代码软件包,简称源码包;而用 rpm、dpkg 打包的则常是可执行程序。一般来说,自己动手编译源代码能够更具灵活性,因为源代码包在编译时可以附加额外的选项,但也容易遇到各种问题。而相对来说,下载那些可执行程序包,反而是更容易完成软件的安装,当然那样灵活性就差多了。所以一般一个软件总会提供多种打包格式的安装程序的,你可以根据自己的情况来选择。

二、使用 RPM 工具管理 rpm 软件包

2.1 RPM 工具

RPM 是 RedHat Package Manager 的缩写,由 RedHat 公司开发。它是以一种数据库记录的方式来将我们所需要的套件安装到 Linux 主机的一套管理程序。也就是说,我们的 Linux 系统中存在着一个关于 RPM 的数据库,它记录了安装的包以及包与包之间的依赖关系。RPM 包是预先在 Linux 系统中编译并打包的文件,安装非常快捷。我们可以将 Linux 系统安装盘放入光驱,然后将光驱挂载到 /mnt/cdrom 目录下,然后进入 /mnt/cdrom/Packages 目录,即可查看到需要 .rpm 文件,这些就是 RPM 包。

[root@ryan ~]# ls /mnt/cdrom
CentOS_BuildTag  isolinux                  RPM-GPG-KEY-CentOS-Debug-6
EFI              Packages                  RPM-GPG-KEY-CentOS-Security-6
EULA             RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Testing-6
GPL              repodata                  TRANS.TBL
images           RPM-GPG-KEY-CentOS-6
[root@ryan ~]# ls /mnt/cdrom/Packages |head
389-ds-base-1.2.11.15-74.el6.x86_64.rpm
389-ds-base-libs-1.2.11.15-74.el6.x86_64.rpm
abrt-2.0.8-40.el6.centos.x86_64.rpm
abrt-addon-ccpp-2.0.8-40.el6.centos.x86_64.rpm
abrt-addon-kerneloops-2.0.8-40.el6.centos.x86_64.rpm
abrt-addon-python-2.0.8-40.el6.centos.x86_64.rpm
abrt-cli-2.0.8-40.el6.centos.x86_64.rpm
abrt-desktop-2.0.8-40.el6.centos.x86_64.rpm
abrt-gui-2.0.8-40.el6.centos.x86_64.rpm
abrt-libs-2.0.8-40.el6.centos.x86_64.rpm

每一个 rpm 包的名称都是由 "-" 和 "." 分成了若干部分。比如"abrt-cli-2.0.8-40.el6.centos.x86_64.rpm"包中,"abrt-cli-2.0.8-40.el6.centos.x86_64.rpm"为包全名,"abrt-cli"为软件名,"2.0.8"为版本号,"40.el6.centos"为发布版本号,"x86_64"为运行平台,"rpm"为软件包类型。常见的运行平台有 i386、i586、i686 和 x86_64。目前 CPU 分为32位和64位,i386、i586、i686 均为32位平台,x86_64 则为64位平台,如果平台号为 noarch,说明这个 rpm 包没有硬件平台限制。

2.2 安装 rpm 包(-ivh

# rpm -ivh <rpm package full name>

选项:
-i:--install,表示安装;
-v:显示指令执行过程;
-h:--hash,套件安装时列出标记,即显示安装进度;
有时候要安装的包里有一些文件可能会覆盖现有的文件,缺省时这样的情况下是无法正确安装的,可以用 # rpm --force -i 强制安装即可。

[root@ryan ~]# rpm -q urlview
package urlview is not installed
[root@ryan ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@ryan ~]# ls -l /mnt/cdrom/Packages |grep 'urlview'
-r--r--r--. 2 root root    24320 Jul  3  2011 urlview-0.9-7.el6.x86_64.rpm
[root@ryan ~]# rpm -ivh /mnt/cdrom/Packages/urlview-0.9-7.el6.x86_64.rpm
warning: /mnt/cdrom/Packages/urlview-0.9-7.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]1:urlview                ########################################### [100%]
[root@ryan ~]# rpm -q urlview
urlview-0.9-7.el6.x86_64

2.3 升级 rpm 包(-Uvh

# rpm -Uvh <rpm package full name>
-U:--Upgrade,升级指定套件;

2.4 卸载 rpm 包(-e
# rpm -e <rpm package software name>

选项:
-e:--erase,删除指定的套件;

[root@ryan ~]# rpm -e urlview

2.5 查询某个包是否被安装(-q

# rpm -q <rpm package full/software name>

[root@ryan ~]# rpm -q urlview
urlview-0.9-7.el6.x86_64
[root@ryan ~]# rpm -q urlview-0.9-7.el6.x86_64
urlview-0.9-7.el6.x86_64

2.6 列出所有已经安装的 rpm package(-qa

# rpm -qa

选项:
-q:使用询问模式;
-a:查询所有套件;

[root@ryan ~]# rpm -qa |head -5
dosfstools-3.0.9-4.el6.x86_64
ibus-gtk-1.3.4-9.el6.x86_64
xml-common-0.6.3-33.el6.noarch
nautilus-extensions-2.28.4-25.el6.x86_64
busybox-1.15.1-21.el6_6.x86_64

2.7 显示某个套件的相关信息(-qi

# rpm -qi <rpm package full/software name>

选项:
此处的 -i 选项表示显示套件的相关信息;

[root@ryan ~]# rpm -qi urlview
Name        : urlview                      Relocations: (not relocatable)
Version     : 0.9                               Vendor: CentOS
Release     : 7.el6                         Build Date: Tue 17 Aug 2010 04:55:28 AM CST
Install Date: Fri 23 Mar 2018 10:49:56 PM CST      Build Host: c6b1.bsys.dev.centos.org
Group       : Applications/Internet         Source RPM: urlview-0.9-7.el6.src.rpm
Size        : 43235                            License: GPLv2+
Signature   : RSA/8, Sun 03 Jul 2011 01:04:34 PM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : ftp://ftp.mutt.org/pub/mutt/contrib/urlview-0.9.README
Summary     : URL extractor/launcher
Description :
urlview is a screen oriented program for extracting URLs from text
files and displaying a menu from which you may launch a command to
view a specific item.

2.8 显示套件的文件列表,即安装文件(-ql

# rpm -ql <rpm package full/software name>

选项:
-l:--list,显示套件的文件列表;

[root@ryan ~]# rpm -ql urlview
/etc/urlview.conf
/usr/bin/url_handler.sh
/usr/bin/urlview
/usr/share/doc/urlview-0.9
/usr/share/doc/urlview-0.9/AUTHORS
/usr/share/doc/urlview-0.9/COPYING
/usr/share/doc/urlview-0.9/ChangeLog
/usr/share/doc/urlview-0.9/README
/usr/share/doc/urlview-0.9/sample.urlview
/usr/share/man/man1/urlview.1.gz
/usr/share/man/man5/urlview.conf.5.gz

2.9 列出某个文件属于哪个 rpm 包(-qf

# rpm -qf 文件的绝对路径

选项:
-f:--file,拥有指定文件的套件;

[root@ryan ~]# rpm -qf /usr/share/man/man1/urlview.1.gz
urlview-0.9-7.el6.x86_64

需要注意的是,卸载包的时候,后面使用的是软件名,而不是软件包全名。

例如,要安装 software-1.2.3-1.i386.rpm 这个包时,应执行:

# rpm –ivh software-1.2.3-1.i386.rpm

而当卸载时,则应执行:

# rpm –e software

三、使用 yum 工具管理 rpm 软件包

3.1 yum 工具

yum(Yellow dog Updater, Modified)是一个在 Fedora、RedHat、CentOS 以及 SUSE 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

RPM 包的安装有个很大的缺点就是文件的关联性太强,有时装一个软件要安装很多其他依赖的软件包,很麻烦。所以为此 RedHat 开发了 yum 工具,它可以彻底解决这个关联性的问题,很方便,只要配置两个文件即可安装,安装方法是:yum [-y] install < rpm package software name> 或 yum install [-y] < rpm package software name>。

CentOS 下执行 yum install xxx 后,系统会 从yum 源下载rpm,将 rpm 放置到缓存目录下:/var/cache/yum/,yum 源的不同则下载后存在的路径也有所不同,通常都是存放在 packages 目录下,如 /var/cache/yum/x86_64/6/base/packages,此处的 base 也可以是 updates、extras 等,表示来自不同的源。

工作机制:当用户要安装一个程序包管理器时,yum接收到用户的命令后,通过一个配置文件找到一个访问路径即 URL 指向远程文件服务器的内容;当 yum 客户端确认要安装程序包时,yum 服务端仓库会发来一个文件列表即元数据信息,存在本地的缓存区域 cache,读取要安装的程序包和分析依赖关系,查询本地已安装的程序包,再去文件服务器仓库下载没安装的程序包,下载完先缓存在本地,安装完后,自动删除已安装完的程序包;元数据一般不删除,元数据是文本文件,校验码可解决元数据的更新问题;文件服务器是 C/S 架构。

简单的说:rpm 只能安装已经下载到本地机器上的 rpm 包。而 yum 能在线下载并安装 rpm 包,能更新系统,且还能自动处理包与包之间的依赖问题,这个是 rpm 工具所不具备的。

3.2 yum 列出所有可用的 rpm(list

# yum list

[root@ryan ~]# yum list |head
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile* base: mirrors.nwsuaf.edu.cn* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
Installed Packages
ConsoleKit.x86_64                          0.4.1-6.el6                 @anaconda-CentOS-201605220104.x86_64/6.8
ConsoleKit-libs.x86_64                     0.4.1-6.el6                 @anaconda-CentOS-201605220104.x86_64/6.8
ConsoleKit-x11.x86_64                      0.4.1-6.el6                 @anaconda-CentOS-201605220104.x86_64/6.8
DeviceKit-power.x86_64                     014-3.el6                   @c6-mediaExiting on Broken Pipe

列表中最左侧是RPM包名,中间是版本信息,最右侧显示的是安装源,如果以@开头,表示已经安装(installed package),否则表示还未安装(availiable package)。

3.3 yum 搜索 rpm 包(search

# yum search <rpm package software name>

[root@ryan ~]# yum search 'urlview'
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile* base: mirrors.nwsuaf.edu.cn* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
========================================================== N/S Matched: urlview ==========================================================
urlview.x86_64 : URL extractor/launcherName and summary matches only, use "search all" for everything.
[root@ryan ~]# yum search 'urlview-0.9-7.el6.x86_64'
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile* base: mirrors.nwsuaf.edu.cn* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
Warning: No matches found for: urlview-0.9-7.el6.x86_64
No Matches found

注意,使用的是软件名,而不是软件包全名

# yum list |grep 'software name'

[root@ryan ~]# yum list |grep  'urlview'
urlview.x86_64                             0.9-7.el6                   base

3.4 yum 安装 rpm 包(install

# yum install [-y] <rpm package software name>

-y 选项表示系统不询问用户是否安装,即与用户不交互;

[root@ryan ~]# yum install -y urlview
Loaded plugins: fastestmirror, refresh-packagekit
Setting up Install Process
Loading mirror speeds from cached hostfile* base: mirrors.nwsuaf.edu.cn* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package urlview.x86_64 0:0.9-7.el6 will be installed
--> Finished Dependency ResolutionDependencies Resolved==========================================================================================================================================Package                          Arch                            Version                             Repository                     Size
==========================================================================================================================================
Installing:urlview                          x86_64                          0.9-7.el6                           base                           24 kTransaction Summary
==========================================================================================================================================
Install       1 Package(s)Total download size: 24 k
Installed size: 42 k
Downloading Packages:
urlview-0.9-7.el6.x86_64.rpm                                                                                       |  24 kB     00:00
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>Package: centos-release-6-8.el6.centos.12.3.x86_64 (@anaconda-CentOS-201605220104.x86_64/6.8)From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running TransactionInstalling : urlview-0.9-7.el6.x86_64                                                                                               1/1Verifying  : urlview-0.9-7.el6.x86_64                                                                                               1/1Installed:urlview.x86_64 0:0.9-7.el6Complete!

3.5 升级 rpm 包(update

# yum update [-y] <rpm package software name>

[root@ryan ~]# yum update -y urlview
Loaded plugins: fastestmirror, refresh-packagekit
Setting up Update Process
Loading mirror speeds from cached hostfile* base: mirrors.nwsuaf.edu.cn* extras: mirrors.aliyun.com* updates: mirrors.aliyun.com
No Packages marked for Update

此处显示没有对应的 urlview 的更新包。

3.6 卸载 rpm 包(remove

# yum remove [-y] <rpm package software name>

[root@ryan ~]# yum remove -y urlview
Loaded plugins: fastestmirror, refresh-packagekit
No such command: revome. Please use /usr/bin/yum --help
[root@ryan ~]# yum remove -y urlview
Loaded plugins: fastestmirror, refresh-packagekit
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package urlview.x86_64 0:0.9-7.el6 will be erased
--> Finished Dependency ResolutionDependencies Resolved==========================================================================================================================================Package                          Arch                            Version                            Repository                      Size
==========================================================================================================================================
Removing:urlview                          x86_64                          0.9-7.el6                          @base                           42 kTransaction Summary
==========================================================================================================================================
Remove        1 Package(s)Installed size: 42 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running TransactionErasing    : urlview-0.9-7.el6.x86_64                                                                                               1/1Verifying  : urlview-0.9-7.el6.x86_64                                                                                               1/1Removed:urlview.x86_64 0:0.9-7.el6Complete!

3.7 关于 yum 的其他功能点

1)yum工具安装rpm包时,首先得下在这个rpm包,然后再去安装,有时候可能只需要下载而并不安装。下载 rpm 包而不安装的命令为:--downloadonly

# yum install [y] <rpm package software name> --downloadonly

2)自定义下载目录的命令为:--downloaddir=/usr/local/src

# yum install [y] <rpm package software name> --downloaddir=/usr/local/src

3)对于已经安装过的rpm包,使用yum install [y] < rpm package software name> --downloadonly不起作用,根本就下载不下来,但是可以改为reinstall命令:reinstall

# yum reinstall [y] <rpm package software name> --downloadonly

3.8 制作本地光盘 yum 源

有时候,Linux 系统不能联网,此时就不能使用互联网上的 yum 源了,这时我们可以自己在 Linux 系统上使用光盘制作 yum 源。

1)挂载光盘到挂载点

# mount /dev/cdrom /mnt/cdrom

[root@ryan ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only

2)删除 /etc/yum.repos.d 目录下的.repo文件,最好先备份到其他目录,再删除

# cp -r /etc/yum.repos.d /etc/yum.repos.d_bak

# rm -rf /etc/yum.repos.d/*

3)创建新的源文件 dvd.repo,文件必须以 .repo 结尾

# vim /etc/yum.repos.d/dvd.repo
[c6-media]
name=dvd
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1

4)刷新元数据缓存

[root@ryan yum.repos.d]# yum makecache
Loaded plugins: fastestmirror, refresh-packagekit
Loading mirror speeds from cached hostfile
c6-media                                                                                                           | 4.0 kB     00:00 ...
c6-media/other_db                                                                                                  | 2.8 MB     00:00 ...
Metadata Cache Created

然后就可以使用 yum 命令安装需要的软件包了。

3.9 下载 yum 国内元数据配置

有时候系统自带的 yum 源下载速度很慢,可以配置成国内的镜像源地址。

比如当前系统是 CentOS7 :

1)进入元配置文件目录

# cd /etc/yum.repos.d/

2)备份 CentOS-Base.repo

# mv CentOS-Base.repo CentOS-Base.repo.bak

3)下载元配置文件

阿里云 yum 源文件
官方地址:http://mirrors.aliyun.com/
# wget http://mirrors.aliyun.com/repo/Centos-7.repo

网易 yum 源文件
官方地址:http://mirrors.163.com/
# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

4)更新缓存

# yum clean all
# yum makecache

3.10 关于 yum 缓存

1)关于 yum 缓存

默认情况下,当前版本的 yum 在成功下载和安装软件包后,会把下载的文件删掉。这样可以减少 yum 占用的磁盘空间。你可以打开缓存,这样 yum 将在缓存目录保留下载到的文件。

缓存带来很多好处:

yum 的性能可以提高;你可以离线运行 yum 操作,只使用缓存;你可以复制缓存中的软件包以备用。

默认情况下,yum 在 /var/cache/yum/ 目录保存临时文件,每个仓库都有自己的子目录。仓库目录中 packages 子目录包含了缓存的软件包。例如,目录 /var/cache/yum/*/xxx/*/packages/ 包含从 xxx 仓库下载的软件包。

/etc/yum.conf 文件可以设置下载缓存的目录:

cachedir=/var/cache/yum/$basearch/$releasever

2)启用 yum 缓存

要配置 yum 保留已下载的文件而不是删除,设置 /etc/yum.conf 中的 keepcache 选项为 1:

keepcache=1

打开缓存后,每个 yum 操作都可能从仓库下载软件包数据。要保证缓存包含了软件包数据,在启用缓存后运行一个操作,例如 list 或 search 来下载软件包数据而不影响系统。

3)在只使用缓存的模式下使用 yum

要在没有网络的情况下执行 yum,只要启用了缓存,就可以用 -C 选项。这样 yum 就不会检查网络上的仓库,只使用缓存。在这个模式中,yum 只能安装已下载并缓存的软件包。

清除 yum 缓存的命令:

# yum clean

4)yum 配置文件

可以在 /etc/yum.conf 中定义 rpm 包的缓存目录(cachedir)和是否启用缓存(keepcache)等。

[root@ryan src]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever    # yum 下载的 rpm 包的缓存目录
keepcache=0    #缓存是否保存,1保存,0不保存
debuglevel=2    #调试级别(0-10),默认为2
logfile=/var/log/yum.log    #yum的日志文件所在的位置
exactarch=1    #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包
obsoletes=1    #这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包
gpgcheck=1    #是否检查GPG(GNU Private Guard),一种密钥方式签名
plugins=1    #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件
installonly_limit=5    #允许保留多少个内核包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release    # 指定一个软件包,yum会根据这个包判断你的发行版本,下载的时候只下载这种发行版本#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

四、使用 dpkg 工具管理 deb 软件包

4.1 dpkg 工具

dpkg 是 Debian Linux 提供的一个包管理器,它与 RPM 工具十分类似。但由于 RPM 出现得更早,所以在各种发行版本的 Linux 中都很常见。而 debian 的包管理器 dpkg 则只出现在 Debian 系列的 Linux 中,比如 Ubuntu、Linux Mint 等版本中,其它 Linux 版本一般都没有。

4.2 安装 deb 包(-i

# dpkg –i <deb 的软件包名>

如:dpkg –i software-1.2.3-1.deb

4.3 卸载 deb 包(-e

# dpkg –e <软件名>

如:dpkg –e software

4.4 查询 deb 包(-l

查询当前系统安装的软件包:

# dpkg –l '*软件包名*'

如:dpkg –l '*software*'

五、使用 apt 工具安装 deb 软件包

5.1 apt 工具

apt(Advanced Packaging Tool)是 Linux 发行版 Debian 下的一款安装包管理工具,是一个 C/S 结构的工具。只要系统可以上网,只需要用 # apt-cache search 查找软件,用 # apt-get install 安装软件等。

5.2 apt 常用命令

apt-get 是 debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似;apt-get 命令一般需要 root 权限执行,所以一般跟着 sudo 命令例 sudo apt-get xxxx;
apt-get install softwarename:安装一个新软件包,下载以及所有依赖的包,同时进行包的安装或升级。如果某个包被设置了 hold (停止标志),就会被搁在一边(即不会被升级);
aptitude:详细查看已安装或可用的软件包等。与apt-get类似,aptitude 可以通过命令行方式调用,但仅限于某些命令——最常见的有安装和卸载命令。由于 aptitude 比 apt-get 了解更多信息,可以说它更适合用来进行安装和卸载;
apt-get remove softwarename:卸载一个已安装的软件包(保留配置文件),移除以及任何依赖这个包的其它包;
apt-get --purge remove softwarename:卸载一个已安装的软件包(删除配置文件);
dpkg --force-all --purge softwarename:有些软件很难卸载,而且还阻止了别的软件的应用,就可以用这个,不过有点冒险;
apt-get autoremove:因为apt会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件;
apt-get autoclean:定期运行这个命令来清除那些已经卸载的软件包的 .deb 文件。通过这种方式,可以释放大量的磁盘空间。如果需求十分迫切,可以使用 apt-get clean 以释放更多空间。这个命令会将已安装软件包裹的.deb文件一并删除;
apt-get clean:这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的;
apt-get update:更新源,升级来自 Debian 镜像的包列表,如果你想安装当天的任何软件,至少每天运行一次,而且每次修改了 /etc/apt/sources.list 后必须执行;
apt-get upgrade:更新所有已安装的软件包,升级所有已经安装的包为最新可用版本。不会安装新的或移除老的包;
apt-get dist-upgrade:将系统升级到新版本;
apt-cache search string:在软件包列表中搜索字符串;
apt-cache showpkg pkgs:显示软件包信息;
apt-cache stats:查看库里有多少软件;
apt-cache dumpavail:打印可用软件包列表;
apt-cache show pkgs:显示软件包记录,类似于 dpkg -print-avail;
apt-cache pkgnames:打印软件包列表中所有软件包的名称,需要定期运行这一命令以确保您的软件包列表是最新的;

注意:

aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具基于大名鼎鼎的APT机制, 整合了 dselect 和 apt-get 的所有功能, 并提供的更多特性,特别是在依赖关系处理上。与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。推荐使用 aptitude 命令来代替 apt-get,下载或者删除依赖包的时候 aptitude 要比 apt-get 更好。不过 aptitude 和 apt-get 不能混用,要不然互相都不知道对方做了什么操作。

简单的说: dpkg 只能安装已经下载到本地机器上的 deb 包。apt-get 能在线下载并安装 deb 包,能更新系统已安装的包,且还能自动处理包与包之间的依赖问题,这个是 dpkg 工具所不具备的。

六、安装源码包

安装源码包,首先需要我们把源代码编译成可执行的二进制文件。常见的源码包一般都是用 C 语言开发的,C 语言的编译器称为 gcc,利用 gcc 可以把 C 语言编译成可执行的二进制文件。

6.1 解压源码包

首先,将安装文件拷贝至自己的家目录中。例如,如果你是以 root 身份登录上的,就将软件拷贝至 /root 中。通常我们习惯于将源码包拷贝到 /usr/local/src 目录下,便于统一管理。

命令为:

# cp filename.tar.gz /usr/local/src

由于该文件是被压缩并打包的,所以需要对其解压缩。

命令为: 

# tar xvzf filename.tar.gz

执行该命令后,安装文件按路径,解压缩在当前目录下。用ls命令可以看到解压缩后的文件。通常在解压缩后产生的文件中,有名称为"INSTALL" 或 "README"的帮助文件,该文件为纯文本文件,详细讲述了该软件包的安装方法。

6.2 定制及依赖检查(./configure

对于多数需要编译的软件,其安装的方法大体相同。执行解压缩后产生的一个名为configure的可执行脚本程序。它是用于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息,为随后的编译工作做准备。

命令为: 

# ./configure --prefix=/usr/local/apache2

--prifix 表示自定义软件包安装目录。

6.3 编译(make

如果检查过程中,发现有错误,configure将给予提示,并停止检查。你可以跟据提示对系统进行配置。再重新执行该程序。检查通过后,将生成用于编译 的 Makefile 文件。此时,可以开始进行编译了。编译的过程视软件的规模和计算机的性能的不同,所耗费的时间也不同。

命令为: 

# make

6.4 安装(make install

成功编译后,键入如下的命令开始安装。

命令为:

# make install

每一步执行之后,可以输入命令 # echo $? 来验证是否执行成功,如果验证结果是 0,表示执行成功,可以继续执行下一步,否则查看报错信息或查看当前目录下的 config.log 来得到相关的信息。

[root@ryan ~]# echo $?
0

七、不需要安装的软件

比如在 Linux 机器上安装压缩程序 rar 和解压程序 unrar,此处的安装其实为下载后解压即可。由于要使用 wget 从服务器上下载 rar 的软件包,如果没有 wget 工具,先安装 wget。

1)安装 wget

wget 是一个从网络上自动下载文件的自由工具。它支持 HTTP,HTTPS 和 FTP 协议,可以使用 HTTP 代理。所谓的自动下载是指,wget 可以在用户退出系统之后在后台继续运行。这意味这你可以登录系统,启动一个 wget 下载任务,然后退出系统,wget 将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。

命令为:

# yum install -y wget

[root@ryan src]# wget https://www.rarlab.com/rar/rarlinux-x64-5.5.0.tar.gz
-bash: wget: command not found
[root@ryan src]# yum install -y wget

2)下载 rar 压缩包

命令为:

# wget https://www.rarlab.com/rar/rarlinux-x64-5.5.0.tar.gz

[root@ryan src]# wget https://www.rarlab.com/rar/rarlinux-x64-5.5.0.tar.gz
--2018-03-24 19:09:58--  https://www.rarlab.com/rar/rarlinux-x64-5.5.0.tar.gz
Resolving www.rarlab.com... 5.135.104.98
Connecting to www.rarlab.com|5.135.104.98|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 536028 (523K) [application/x-gzip]
Saving to: “rarlinux-x64-5.5.0.tar.gz”100%[====================================================================================================================>] 536,028     65.2K/s   in 8.1s2018-03-24 19:10:09 (64.6 KB/s) - “rarlinux-x64-5.5.0.tar.gz” saved [536028/536028]

3)解压包

命令为:

# tar -xzvf rarlinux-x64-5.5.0.tar.gz

[root@ryan src]# tar -xzvf rarlinux-x64-5.5.0.tar.gz
rar/
rar/order.htm
rar/acknow.txt
rar/readme.txt
rar/default.sfx
rar/license.txt
rar/rarfiles.lst
rar/whatsnew.txt
rar/makefile
rar/rar
rar/unrar
rar/rar.txt

4)创建软链接

[root@ryan src]# ln -s /usr/local/src/rar/rar /usr/local/bin/rar
[root@ryan src]# ln -s /usr/local/src/rar/unrar /usr/local/bin/unrar

此时,/usr/local/src/rar  下的 rar 命令和 unrar 命令就已经在 /usr/local/bin 下创建了软链接。

[root@ryan src]# ll /usr/local/bin/rar
lrwxrwxrwx. 1 root root 22 Mar 24 19:21 /usr/local/bin/rar -> /usr/local/src/rar/rar
[root@ryan src]# ll /usr/local/bin/unrar
lrwxrwxrwx. 1 root root 24 Mar 24 19:21 /usr/local/bin/unrar -> /usr/local/src/rar/unrar

之后就可以直接使用 rar 和 unrar 命令了。

附录

参考文章:

https://www.cnblogs.com/jdxn/p/6755136.html

https://blog.csdn.net/mrliqifeng/article/details/63255855

转载于:https://www.cnblogs.com/cnjavahome/p/8627474.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ae中心点重置工具_(精品)AE从小白到大神之路(七)-AE动画—动效常见的设计方法...

动画——动效常见的设计方法一&#xff0e;基础动画&#xff1a;1.通过物体本身的旋转/缩放/位移/不透明度等基本属性来做的一些动效属于最基础的动画效果。二&#xff0e;路径动画&#xff1a;&#xff08;1&#xff09;修剪路径动画&#xff08;前面系列案例——下载提示完成…

css 透明度_如何使用CSS实现精美视频片头制作

借助CSS所提供的动画效果&#xff0c;旋转效果除了能够制作动画及网页页面元素&#xff0c;如按钮之外&#xff0c;还可以使用CSS实现精美的动态片头的制作。本文主要介绍CSS与HTML实现精美的动画片头制作实例。如何使用CSS实现精美片头制作CSS动态片头设计实例本例设计使用烟雾…

重磅盘点:过去8年中深度学习最重要的想法

原文&#xff1a;Deep Learning’s Most Important Ideas[1]作者&#xff1a;Denny Britz&#xff08;ML 研究员&#xff0c;Google Brain 前成员&#xff09;译者&#xff1a;REN深度学习是一个瞬息万变的领域&#xff0c;层出不穷的论文和新思路可能会令人不知所措。即使是经…

ActiveMQ 发送和接收消息

一、添加 jar 包 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>5.11.2</version> </dependency> 二、消息传递的两种形式 1、点对点&#xff1a;发送的消息只能被一个消…

机器人 蓝buff 钩_机器人要在S赛登场了?Ming韩服练起来了,这是RNG黑科技?

随着S9全球总决赛日程的逼近&#xff0c;各大战队也纷纷结束了休假&#xff0c;投入到了紧张的训练之中。对于这次S9世界赛的版本&#xff0c;应该是上中野的版本&#xff0c;因为不少战士单带型上单得到了巨大加强&#xff0c;而且中路会有一些法师英雄回归&#xff0c;总体来…

java构造器_Java类加载的过程

阅读本文约需要8分钟 大家好&#xff0c;我是你们的导师&#xff0c;经常看我朋友圈的同学应该知道&#xff0c;我每天会在微信上给大家免费提供以下服务&#xff01;1、长期为你提供最优质的学习资源&#xff01;2、给你解决技术问题&#xff01;3、每天在朋友圈里分享优质的技…

再讲卷积的本质及物理意义,解释的真幽默!

来源&#xff1a;电子工程专辑编辑 ∑Gemini分三个部分来理解&#xff1a;1&#xff0e;信号的角度2&#xff0e;数学家的理解&#xff08;外行&#xff09;3&#xff0e;与多项式的关系>>>>卷积这个东东是“信号与系统”中论述系统对输入信号的响应而提出的。因为…

jdbcTemplate小用总结

一、queryForList重写 public List<Map<String, Object>> queryForList(String tablename, Map<String, String> param) {//TODO valid tablename is nullStringBuilder sql new StringBuilder("select sys_id from "); sql.append(tablename);s…

分区助手扩大c盘后自动修复_磁盘分区工具,这个好用;无论调整C盘还是系统迁移...

使用傲梅分区助手安全地对磁盘进行分区安全分区注意事项1.对于重要数据&#xff0c;最好习惯定期备份。 您可以使用免费备份软件- 傲梅轻松备份进行备份。2.当傲梅分区助手正在移动数据时&#xff0c;请不要轻易地结束过程或强制关闭程序。3.在分区过程中&#xff0c;请确保您的…

c语言转义字符_C语言啊中的转义符有什么含义?

其实所谓的换行符就是回车&#xff0c;在各类编程语言中换行符是很常见的&#xff0c;而转义字符是一种特殊的字符常量。转义字符以反斜线""开头&#xff0c;后跟一个或几个字符。转义字符具有特定的含义&#xff0c;不同于字符原有的意义&#xff0c;故称“转义”字…

matlab设置图片背景透明_Matlab ---- 有透明度的png图像的显示与图层叠加方法

需求和问题来源由于图形图像的语义分割工作中&#xff0c;需要对不同类型的区域&#xff0c;进行标示&#xff0c;但又不能完全覆盖背景图像。这产生了一个新的需求&#xff1a;产生一个带有透明度的图像&#xff1b;将带有透明度的图像&#xff0c;叠加在原始图像上。Matlab中…

python自己创建模块路径_python之本地模块/包使用和创建

image.png 模块 模块实质上就是一个python文件。 它是用来组织代码的&#xff0c;文件名其实就是模块名. 例如hello.py hello就是模块的名称. 包 包(package)&#xff0c;本质来说就是一个文件夹&#xff0c;但是其中有一个init.py文件。 包是从逻辑上来组织模块的&#xff0c;…

强化学习到底是什么,它如何运作?

强化学习是一种行为学习模型&#xff0c;由算法提供数据分析反馈&#xff0c;引导用户逐步获取最佳结果。来源丨Towards Data Science作者丨Jair Ribeiro编译丨科技行者强化学习属于机器学习中的一个子集&#xff0c;它使代理能够理解在特定环境中执行特定操作的相应结果。目前…

hihocoder1457

http://hihocoder.com/problemset/problem/1457 找不重复子串的和 topo序搞一搞&#xff0c;用父亲更新儿子节点的val&#xff0c;记得乘上节点数 //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("Ofast,no-stack-protector") //#…

科普天地|“GPS欺骗”如何误导自动驾驶汽车

文章来源&#xff1a;新华网&#xff0c;版权归原作者及刊载媒体所有。新华社北京11月2日电&#xff08;记者彭茜&#xff09;一辆正常行驶的自动驾驶汽车在30秒内径直蹭上了马路牙子&#xff0c;车载全球定位系统&#xff08;GPS&#xff09;、激光雷达等“高精尖”设备竟然全…

json里面的list数据取不出来_[工具]用kaggle API下载数据集

操作平台&#xff1a;colab由于是在colab&#xff0c;需要先mount google drivefrom google.colab import drive drive.mount(/content/gdrive)导到当前目录cd gdrive/My Drive/your path上传你的kaggle.json; kaggle.json下载方法&#xff1a;kaggle官网-->右上角My Accoun…

训练过程acc_AI 深度学习训练tricks总结(均有实验支撑)

↑↑↑↑↑点击上方蓝色字关注我们&#xff01;『运筹OR帷幄』转载作者&#xff1a;Jones知乎作者丨Jones知乎来源丨https://zhuanlan.zhihu.com/p/261999668编辑丨极市平台编者按 本文作者模拟复现了自己在深度学习训练过程中可能遇到的多种情况&#xff0c;并尝试解决这些问题…

python 内存_一行Python解决内存问题

原标题&#xff1a;一行Python解决内存问题 内存不足是项目开发过程中经常碰到的问题&#xff0c;我和我的团队在之前的一个项目中也遇到了这个问题&#xff0c;我们的项目需要存储和处理一个相当大的动态列表&#xff0c;测试人员经常向我抱怨内存不足。但是最终&#xff0c;我…

一文读懂机器学习“数据中毒”

作者 | Ben Dickson翻译 | 火火酱~出品 | AI科技大本营头图 | 付费下载于视觉中国在人类的眼中&#xff0c;下面的三张图片分别展示了三样不同的东西&#xff1a;一只鸟、一只狗和一匹马。但对于机器学习算法来说&#xff0c;这三者或许表示同样的东西:一个有黑边的白色小方框。…

excel模糊搜索_Excel进阶篇:星号*用法,学会这些功能的,都按时加班了

是的&#xff0c;你没看错&#xff0c;是按时加班&#xff0c;赚点加班费嘛&#xff01;星号"*"就是四则运算里的乘号"ⅹ"。在Excel中星号"*"可不仅仅是乘&#xff0c;还有逻辑运算、通配符等功能&#xff0c;可以在公式中与函数进行组合&#x…