安装软件

Posted 0x1e61

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装软件相关的知识,希望对你有一定的参考价值。

软件包管理基础

软件包管理系统使用数据库来记录下列内容。

·Linux系统中已安装的软件包。

·每个软件包安装了哪些文件。

·每个已安装的软件包的版本。

基于Debian的发行版(比如Ubuntu和Linux Mint)使用的是dpkg命令,该命令是其软件包管理系统的底层基础。

基于Red Hat的发行版(比如Fedora、CentOS和openSUSE)使用的是rpm命令,该命令是其软件包管理系统的底层基础。

基于Debian的系统

dpkg本身是一个底层的工具。上层的工具,如APT(advanced package tool)被用于从远程获取软件包以及处理复杂的软件包关系。 “dpkg”是“Debian Package”的简写。

·apt-cache
·apt-get
·apt

apt命令本质上是apt-cache命令和apt-get命令的前端。

apt命令的基本格式如下:

apt [options] command

使用apt管理软件包

apt list命令会显示仓库中所有可用的软件包,如果再加入--installed选项,就可以限制仅输出那些已安装在系统中的软件包:

apt list --installed

如果已经知道系统中的某个软件包,希望显示其详细信息,可以使用show命令来操作:

apt show package_name
└─# apt show zsh          
Package: zsh
Version: 5.9-4
Priority: optional
Section: shells
Maintainer: Debian Zsh Maintainers <pkg-zsh-devel@lists.alioth.debian.org>
Installed-Size: 2,519 kB
...

注意 apt show命令并不会指明软件包是否已经安装。它只根据软件仓库显示该软件包的详细信息。

有一个细节无法通过apt获得,即与特定软件包相关的所有文件。为此,需要使用dpkg命令:

dpkg -L package_name
└─# dpkg -L acl              
/.
/bin
/bin/chacl
/bin/getfacl
/bin/setfacl
/usr

也可以执行相反的操作,即找出特定的文件属于哪个软件包:

dpkg --search absolute_file_name

注意,文件要使用绝对路径:

└─# dpkg --search /bin/getfacl 

acl: /bin/getfacl

输出表明文件getfacl属于acl软件包。

使用apt安装软件包

该怎么查找特定的软件包呢?答案是同时使用apt命令与search命令:

apt search package_name

在默认情况下,search命令显示的是在名称或描述中包含搜索关键字的那些软件包,这有时候会产生误导。如果只想搜索软件包名称,可以加入--name-only选项:

chou@chou-virtual-machine:~$ apt search --names-only zsh
正在排序... 完成
全文搜索... 完成  
fizsh/focal,focal 1.0.9-1 all
  Friendly Interactive ZSHell

zsh/focal-updates,focal-security 5.8-3ubuntu1.1 amd64
  具有很多特性的 Shell
......

一旦找到待安装的软件包,就可以使用apt安装了,非常简单:

apt install package_name
sudo apt install zsh

注意 上面的例子中用到了sudo命令。sudo命令允许以root用户身份执行命令。像安装软件这类管理任务都需要使用sudo命令帮助完成。

用apt升级软件

upgrade命令可以使用仓库中的任何新版本安全地升级系统中所有的软件包:

apt upgrade

upgrade命令在升级过程中不会删除任何软件包。如果必须删除某个软件包才能完成升级,可以使用以下命令:

apt full-upgrade

使用apt卸载软件包

aptremove命令可以删除软件包,同时保留数据和配置文件。如果要将软件包以及相关的数据和配置文件全部删除,那么需要使用purge选项:

apt purge zsh

如果apt警告我们卸载的软件包存在依赖,不能自动删除,以免其他软件包还有需要。如果确定有依赖关系的软件包不会再有他用,可以使用autoremove命令将其删除:

apt autoremove 

autoremove命令会检查所有被标记为存在依赖关系且不再被需要的软件包。

apt仓库

apt默认的软件存储库位置是在安装Linux发行版时设置的。仓库位置保存在文件/etc/apt/sources.list中。

sources.list使用下列结构来指定仓库源:

deb (or deb-src) address  distribution_name  package_type_list

deb或deb-src指定了软件包的类型。deb表明这是一个已编译程序的仓库源,而deb-src表明这是一个源代码的仓库源。

address是软件仓库的网址。

distribution_name是该软件仓库的发行版的版本名称。

最后,package_type_list可能并不止一个单词,它还表明仓库里面有什么类型的软件包。

基于Red Hat的系统

·yum:用于Red Hat、CentOS和Fedora。
·zypper:用于openSUSE。
·dnf:yum的升级版,有一些新增的特性。

上述前端全部基于命令行工具rpm

列出已安装的软件包

yum list installed 

除了会给出软件包的详细描述,它还可以告诉你软件包是否已经安装:

[root@Wesuiliye ~]# yum list xterm
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
xterm.x86_64                        295-3.el7_9.1                        updates
[root@Wesuiliye ~]# yum list installed xterm
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Error: No matching Packages to list
[root@Wesuiliye ~]# yum list installed bash
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
bash.x86_64                       4.2.46-35.el7_9                       @updates
[root@Wesuiliye ~]# 

找出文件系统中的某个文件是由哪个软件包安装

yum install package_nam
[root@Wesuiliye ~]# yum provides bash
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
bash-4.2.46-34.el7.x86_64 : The GNU Bourne Again shell
Repo        : base



bash-4.2.46-35.el7_9.x86_64 : The GNU Bourne Again shell
Repo        : updates



bash-4.2.46-35.el7_9.x86_64 : The GNU Bourne Again shell
Repo        : @updates



[root@Wesuiliye ~]# 

使用yum安装软件

yum install package_name

使用yum升级软件

yum list updates 

没输出就是好事,因为这说明没什么可升级的!但如果你发现有需要升级的软件包,可以输入下列命令:

yum update

注意 yum工具的upgrade命令支持--skip-broken选项,可以跳过依赖关系损坏的软件包,同时仍尝试继续升级其他包

使用yum卸载软件

yum remove package_name

处理损坏的依赖关系

有时在安装多个软件包时,一个软件包的依赖关系可能会被另一个软件包搞乱。

这称为依赖关系损坏(broken dependency)。

如果系统出现了这种情况,可以先试试下列命令:

yum clean all

然后尝试使用yum命令的update选项。

RPM仓库

要想查看当前拉取软件的仓库,可以使用下列命令:

yum repolist 

如果发现其中没有所需的仓库,那就需要编辑配置文件了。

[root@Wesuiliye ~]# cd /etc/yum.repos.d/
[root@Wesuiliye yum.repos.d]# ll
total 16
-rw-r--r-- 1 root root  675 Mar  8 08:27 CentOS-Base.repo
-rw-r--r-- 1 root root  675 Mar  2 12:30 CentOS-Base.repo.bak
-rw-r--r-- 1 root root 2081 Apr  4 19:27 docker-ce.repo
-rw-r--r-- 1 root root  230 Mar  2 12:30 epel.repo
[root@Wesuiliye yum.repos.d]# 

使用容器管理软件

云计算带来了应用程序打包方式的一种新范式:应用程序容器(application container)。应用程序容器创建了一个环境,其中包含了应用程序运行所需的全部文件,包括运行时库文件。开发人员随后可以将应用程序容器作为单个软件包分发,保证能够在任何Linux系统中正常运行。

snap

Ubuntu Linux发行版的创建者Canonical开发了一种称为snap的应用程序容器格式。

使用snap version命令检查snap是否正在运行:

chou@chou-virtual-machine:~$ snap version
snap    2.58.2
snapd   2.58.2
series  16
ubuntu  20.04
kernel  5.15.0-72-generic
chou@chou-virtual-machine:~$ 

如果snap正在运行,可以使用snap list命令查看当前已安装的snap应用程序列表:

chou@chou-virtual-machine:~$ snap list 
名称                 版本                修订版本   追踪               发布者         注记
bare               1.0               5      latest/stable    canonical✓  base
core20             20230207          1828   latest/stable    canonical✓  base
gnome-3-38-2004    0+git.6f39565     119    latest/stable/…  canonical✓  -
gtk-common-themes  0.1-81-g442e511   1535   latest/stable/…  canonical✓  -
snap-store         41.3-66-gfe1e325  638    latest/stable/…  canonical✓  -
snapd              2.58.2            18357  latest/stable    canonical✓  snapd
chou@chou-virtual-machine:~$ 

snap find命令可以在snap仓库中搜索指定程序:

chou@chou-virtual-machine:~$ snap find solitaire
名称                      版本       发布者          注记   摘要
solitaire               1.1      1bsyl        -    usual Solitaire card game, as known as Patience or Klondike
solitaire-ultra         1.0.0    marisag1967  -    Solitaire game for Windows
......

snap info命令可以查看snap应用程序(简称为snap)的详细信息:

chou@chou-virtual-machine:~$ snap info solitaire
name:      solitaire
summary:   usual Solitaire card game, as known as Patience or Klondike
publisher: Sylvain Becker (1bsyl)
store-url: https://snapcraft.io/solitaire
contact:   sylvain.becker@gmail.com
license:   Proprietary
description: |
  This is the usual Solitaire card game. Also known as Patience or Klondike.
snap-id: 0rnkesZh4jFy9oovDTvL661qVTW4iDdE
channels:
  latest/stable:    1.1 2020-12-14 (5) 44MB -
  latest/candidate: 1.0 2017-05-17 (2) 11MB -
  latest/beta:      1.0 2017-05-17 (2) 11MB -
  latest/edge:      1.0 2017-05-17 (2) 11MB -
chou@chou-virtual-machine:~$ 

snap install命令可以安装新的snap:

$ sudo snap install solitaire
[sudo] password for rich:
solitaire 1.0 from Sylvain Becker (1bsyl) installed
$

如果需要删除某个snap,使用snap remove命令即可:

$ sudo snap remove solitaire
solitaire removed
$

注意 也可以通过禁用来代替删除。使用snap disable命令即可。要想重新恢复snap,可以使用snap enable命令。

flatpak

flatpak应用程序容器格式是作为一个独立的开源项目创建的,与任何特定的Linux发行版都没有直接联系。

使用flatpak list命令列出已安装的应用程序容器:

[root@Wesuiliye ~]# flatpak list 

[root@Wesuiliye ~]# 

flatpak search命令可以在flatpak仓库中搜索指定应用程序:

[root@Wesuiliye ~]# flatpak search solitaire
No matches found
[root@Wesuiliye ~]# 

使用容器时,必须使用其Application ID值,而不是名称。可以使用flatpak install命令安装应用程序:

flatpak install

可以使用flatpak uninstall命令删除应用程序容器:

flatpak uninstall

从源代码安装

在软件包管理系统和应用程序容器出现之前,开源软件开发人员只能以源代码形式分发软件,用户需要在系统中自行编译。源代码形式的软件包通常以tarball的形式发布。

经由tar命令创建出的归档文件通常称为tarball.参见维基百科条目"tar (computing)"

使用软件包sysstat作为示例。sysstat提供了各种系统监测工具,非常好用。

下载源代码:

git clone git://github.com/sysstat/sysstat

先使用cd命令进入新目录,然后列出目录内容:

[root@Wesuiliye data]# cd sysstat/
[root@Wesuiliye sysstat]# ls
activity.c    count.c   iostat.c           pcp_stats.h   rd_stats.h    sadf_misc.c          sysstat.sysconfig.in
BUG_REPORT    count.h   iostat.h           pidstat.c     README.md     sa.h                 systest.c
build         CREDITS   json_stats.c       pidstat.h     rndr_stats.c  sar.c                systest.h
CHANGES       cron      json_stats.h       pr_stats.c    rndr_stats.h  sa_wrap.c            tapestat.c
cifsiostat.c  do_test   Makefile.in        pr_stats.h    sa1.in        svg_stats.c          tapestat.h
cifsiostat.h  FAQ.md    man                pr_xstats.c   sa2.in        svg_stats.h          tests
common.c      format.c  mpstat.c           pr_xstats.h   sa_common.c   sysconfig.in         version.in
common.h      iconfig   mpstat.h           raw_stats.c   sa_conv.c     sysstat-12.7.2.lsm   xml
configure     images    nls                raw_stats.h   sa_conv.h     sysstat-12.7.2.spec  xml_stats.c
configure.ac  INSTALL   pcp_def_metrics.c  rd_sensors.c  sadc.c        sysstat.in           xml_stats.h
contrib       ioconf.c  pcp_def_metrics.h  rd_sensors.h  sadf.c        sysstat.ioconf
COPYING       ioconf.h  pcp_stats.c        rd_stats.c    sadf.h        sysstat.service.in
[root@Wesuiliye sysstat]# 

在目录的列表中,应该能看到README文件或INSTALL文件。务必阅读这些文件,其中写明了软件安装所需的操作步骤。

cat INSTALL 

按照INSTALL文件中的建议,下一步是运行configure工具,检查你的Linux,确保拥有合适的能够编译源代码的编译器,以及正确的库依赖关系:

 [root@Wesuiliye sysstat]# ./configure 
 ...
 ...
 config.status: creating man/cifsiostat.1
config.status: creating tests/variables
config.status: creating Makefile

   Sysstat version:             12.7.3
   Installation prefix:         /usr/local
   rc directory:                /etc/rc.d
   Init directory:              /etc/rc.d/init.d
   Systemd unit dir:            /usr/lib/systemd/system
   Systemd sleep dir:           /usr/lib/systemd/system-sleep
   Configuration file:          /etc/sysconfig/sysstat
   Man pages directory:         $datarootdir/man
   Compiler:                    gcc -std=gnu11
   Compiler flags:              -g -O2
   Linker flags:

如果有问题,则configure会显示错误消息,说明缺失了哪些东西。

注意 大多数Linux程序是用C或C++编程语言编写的。要在系统中编译这些源代码,需要安装gcc软件包和make软件包。

下一步是用make命令来构建各种二进制文件。make命令会编译源代码,然后由链接器生成最终的可执行文件。和configure命令一样,make命令会在编译和链接所有源代码文件的过程中产生大量的输出:

[root@Wesuiliye sysstat]# make 
gcc -std=gnu11 -o sadc.o -c -g -O2 -Wall -Wstrict-prototypes -pipe -O2 -fno-tree-slp-vectorize  -DSA_DIR=\\"/var/log/sa\\" -DSADC_PATH=\\"/usr/local/lib64/sa/sadc\\"    -DHAVE_SYS_SYSMACROS_H -DHAVE_LINUX_SCHED_H -DHAVE_SYS_PARAM_H -DUSE_NLS -DPACKAGE=\\"sysstat\\" -DLOCALEDIR=\\"/usr/local/share/locale\\" sadc.c

make命令结束后,可运行的sysstat程序就出现在目录中了。但是从这个目录中运行程序有点儿不方便。你希望将其安装在Linux系统的常用位置。为此,必须以root用户身份登录(或者使用sudo命令),然后使用make命令的install选项:

[root@Wesuiliye ~]# make install

查看一下sysstat版本看成功没有

[root@Wesuiliye ~]# sar -V
sysstat version 10.1.5
(C) Sebastien Godard (sysstat <at> orange.fr)
[root@Wesuiliye ~]# 

Linux软件安装——安装软件的命令

Linux软件安装——安装软件的命令

摘要:本文主要学习了如何在Linux系统中安装、更新、卸载软件。

rpm命令

rpm命令用来在Linux系统上进行软件的安装。

基本语法

安装命令:

1 [[email protected] ~]# rpm -ivh 包全名

如果没有安装则安装,如果已经安装则升级:

1 [[email protected] ~]# rpm -Uvh 包全名

如果没有安装则不安装,如果已经安装则升级:

1 [[email protected] ~]# rpm -Fvh 包全名

卸载命令:

1 [[email protected] ~]# rpm -e 包名

查询安装信息:

1 [[email protected] ~]# rpm [选项]

选项说明

关于软件安装的选项:

 1 -i:安装。
 2 -v:显示更详细的信息。
 3 -h:显示安装进度。
 4 -nodeps:不检测依赖性安装。软件安装时会检测依赖性,确定所需的底层软件是否安装,如果没有安装则会报错。如果不管依赖性,想强制安装,则可以使用这个选项。注意,这样不检测依赖性安装的软件基本上是不能使用的,所以不建议这样做。
 5 -replacefiles:替换文件安装。如果要安装软件包,但是包中的部分文件已经存在,那么在正常安装时会报“某个文件已经存在”的错误,从而导致软件无法安装。使用这个选项可以忽略这个报错而覆盖安装。
 6 -replacepkgs:替换软件包安装。如果软件包已经安装,那么此选项可以把软件包重复安装一遍。
 7 -force:强制安装。不管是否已经安装,都重新安装。也就是-replacefiles和-replacepkgs的综合。
 8 -test:测试安装。不会实际安装,只是检测一下依赖性。
 9 -prefix:指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。
10 -U:如果该软件没有安装则直接安装,如果安装过则升级至最新版本。
11 -F:如果该软件没有安装则不会安装,如果安装过则升级至最新版本。
12 -e:表示卸载。

关于查询软件安装信息的选项:

1 -q 包名:查询指定软件是否安装。
2 -qa:查询已经安装的所有软件。
3 -qi 包名:查询软件的详细信息,包含开发商、版本与说明等。
4 -ql 包名:查询安装软件的用到的文件和目录。
5 -qc 包名:查询软件的所有配置文件。
6 -qd 包名:查询软件的所有说明文件。
7 -qR 包名:查询软件包的依赖关系。
8 -qip 包全名:查询未安装的软件包信息。
9 -qf 系统文件名:命令查询系统文件属于什么软件。

yum命令

使用yum命令可以实现查询、安装、升级和卸载RPM包。

基本语法

查询命令:

1 [[email protected] ~]# yum [选项]

安装命令:

1 [[email protected] ~]# yum install -y 包名

升级命令:

1 [[email protected] ~]# yum update -y 包名

卸载命令:

使用yum卸载软件包时,会同时卸载所有与该包有依赖关系的其他软件包,即便有依赖包属于系统运行必备文件,也会被yum无情卸载,带来的直接后果就是使系统崩溃。

除非你能确定卸载此包以及它的所有依赖包不会对系统产生影响,否则不要使用yum卸载软件包。

1 [[email protected] ~]# yum remove 包名

选项说明

关于软件查询的选项:

1 list:查询所有已安装和可安装的软件包。
2 list 包名:查询执行软件包的安装情况。
3 search 关键字:从源服务器上查找与关键字相关的所有软件包。
4 info 包名:查询执行软件包的详细信息。
5 provides 系统文件名:查询提供指定内容的软件包。

以上是关于安装软件的主要内容,如果未能解决你的问题,请参考以下文章

五线谱Sibelius 7.5.1 打谱软件安装 ( 软件下载 | 软件安装 )

centos 软件安装

Linux安装杀毒软件和防火墙

速达软件的安装问题

速达软件怎么安装?

音频处理Melodyne 麦乐迪软件安装 ( 安装 Melodyne 软件 | Melodyne 软件汉化 )