![使用 Ubuntu 软件中心安装和命令行安装有什么区别?](https://linux22.com/image/1057364/%E4%BD%BF%E7%94%A8%20Ubuntu%20%E8%BD%AF%E4%BB%B6%E4%B8%AD%E5%BF%83%E5%AE%89%E8%A3%85%E5%92%8C%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%AE%89%E8%A3%85%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB%EF%BC%9F.png)
我的问题是:就软件安装而言,命令行和 Ubuntu 软件中心之间有什么关系?这个问题源于几个观察和不确定性:
- 搜索(按windows/ super)无法生成我通过命令行安装的一些软件包。
- 我注意到系统备份和恢复似乎破坏了一些通过命令行安装的软件(例如
subl
)。我想知道这是否是因为软件中心比 CLI 安装做得更好,因为它可以注册或保存相关的 $PATH 信息。 - 由于在软件中心列出似乎有一些优势(例如,用于搜索,用于恢复),我想知道是否可以编写安装命令,以便列出我安装的软件。
答案1
总结:有很多灰色区域,这取决于你正在做什么。大多数情况下,软件中心和命令行方法在.deb
软件包方面做类似的事情,但其他软件包可能需要不同的步骤。
实际情况是这样的:安装无非就是将软件包附带的文件放入适当的目录中。无论是通过命令行还是通过软件中心完成安装,它们的作用都是一样的——将文件放入各自的目录中。然而,重要的是软件包以及你如何处理它。在这里,我将介绍一些你可以在 Ubuntu 上处理的基本软件包。至于命令行和软件中心之间的区别,最基本的区别是,在软件中心中你单击按钮;在命令行中你输入命令。我知道软件中心使用了很多 python 代码,但在命令行中这取决于你使用的实用程序。软件中心可以删除多少文件(请阅读下文)
Ubuntu 的软件包有三种形式:.deb
文件、文件和压缩或存档.run
中的原始源代码。根据您所使用的方式,命令行安装可能会或多或少有点麻烦。对于新用户来说,这不是真正需要担心的事情,至少在使用 Linux 的第一年不需要担心。zip
tar
您将看到大部分.deb
文件 - 它们是预编译的软件包,可供使用。这些不太麻烦。它们还经常指定依赖项 - 没有这些软件,您的程序将无法运行。命令行实用程序(例如和)apt
将apt-get
自动为您安装依赖项。事实上,软件中心使用apt-get
作为后端,因此它也会自动安装依赖项。
.run
文件通常是专有的编码二进制文件。你无法真正看到它们在做什么。
使用原始源代码,您必须自己做所有事情 - 构建软件并安装依赖项。
还有一些方法可以安装来自其他发行版的软件包,例如.rpm
软件包,但这种情况很少见。
还有一类软件被称为容器。有docker和lxd
容器。最近,Ubuntu引入了一种称为snap
包的东西。这些有什么好处?它们可以在任何地方运行,安全地与主系统隔离,并且可以相当快速地安装/重新安装。这些类型的软件是不是可通过软件中心安装,通常适用于专业系统管理员或技术/高级用户。作为新用户,您不必担心这些,只要知道它们存在并且很棒 :)
最后,类似脚本(通常是单个文件)的东西也可以被视为应用程序,同样,安装只不过是将文件放到它所属或应该所属的位置。
搜索(按windows/ super)无法生成我通过命令行安装的一些软件包。
再次强调,这确实取决于软件包。如果软件开发人员决定将.desktop
文件包含在软件包中,您将能够在 Dash 中搜索它。.desktop
文件有点像 Windows 快捷方式,但它们的功能要多得多。.desktop
文件附带的命令行实用程序的一个很好的例子是 Byobu - 一个非常方便的程序,用于将终端拆分为额外的选项卡/窗口。
但是,您可以为每个程序创建自己的.desktop
文件并将其放入~/.local/share/applications/
文件夹中。
再次,这没有什么与应用程序是命令行还是 GUI 有关。这取决于应用程序开发人员的选择
我想知道是否可以编写安装命令,以便列出我安装的软件。
同样,这取决于你正在做什么。如果你正在从官方 Ubuntu 存储库安装软件,那么你可以简单地执行sudo apt-get install my-software
如果您正在安装.deb
软件包,则可以使用dpkg
命令或apt-get
。下面是我使用 apt-get 安装 google-chrome deb 软件包的示例。 笔记:安装时我与.deb
文件位于同一目录中,因此必须指定./
部分
$ sudo apt-get install ./google-chrome-stable_current_amd64.deb
[sudo] password for xieerqi:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'google-chrome-stable' instead of './google-chrome-stable_current_amd64.deb'
The following NEW packages will be installed:
google-chrome-stable
0 upgraded, 1 newly installed, 0 to remove and 54 not upgraded.
Need to get 0 B/50.0 MB of archives.
After this operation, 190 MB of additional disk space will be used.
Get:1 /home/xieerqi/下载/google-chrome-stable_current_amd64.deb google-chrome-stable amd64 53.0.2785.101-1 [50.0 MB]
Selecting previously unselected package google-chrome-stable.
(Reading database ... 476104 files and directories currently installed.)
Preparing to unpack .../google-chrome-stable_current_amd64.deb ...
Unpacking google-chrome-stable (53.0.2785.101-1) ...
Processing triggers for menu (2.1.47ubuntu1) ...
Processing triggers for bamfdaemon (0.5.3~bzr0+16.04.20160701-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for gnome-menus (3.13.3-6ubuntu3.1) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu5) ...
Processing triggers for mime-support (3.59ubuntu1) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up google-chrome-stable (53.0.2785.101-1) ...
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/x-www-browser (x-www-browser) in auto mode
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/gnome-www-browser (gnome-www-browser) in auto mode
update-alternatives: using /usr/bin/google-chrome-stable to provide /usr/bin/google-chrome (google-chrome) in auto mode
Processing triggers for menu (2.1.47ubuntu1) .
有什么好处apt-get
?它有--purge
一个选项,允许你删除一切与程序相关。例如,如果我直接使用sudo apt-get remove google-chrome-stable
或通过软件中心删除它,它可能会留下配置文件,这样当您重新安装软件时,它就可以像以前一样使用了。--purge
选项也会删除配置文件。如果您的软件坏了,您想完全重新安装它,这很方便。软件中心不会这样做,所以这是另一个区别。
如果你正在处理.run
文件,则需要使该文件可执行并运行它。像这样:
$ sudo chmod +x ./software.run
$ sudo ./software.run
我注意到系统备份和恢复似乎破坏了一些通过命令行安装的软件(例如
subl
)。
这取决于您执行的备份类型。如果您的备份包含了使它正常工作所需的所有文件subl
,那么它应该可以正常工作。也可能是您的备份发生在subl
安装之前。确保您正确配置了备份
我想知道是否是因为软件中心比 CLI 安装做得更好,以便注册或保存相关的 $PATH 信息。
该$PATH
变量与 shell(命令解释器,您在此处放置命令)相关。它与 Unity Dash 并不真正相关。$PATH
变量实际上是目录列表,shell 将在其中搜索具有可执行权限集的程序。Dash 实际上只关心.desktop
文件。例如,我可以让程序位于文件夹中,并能够通过命令行打开它,但 Dash 却不能,因为它/usr/bin
没有对应的文件。.desktop
如果您想找到有关 的更多资料$PATH
,请随便找一本有关 Linux shell 脚本的书。对于任何想要使用命令行的 Linux 用户来说,它都是基础知识之一。
一些结束语:Linux 软件安装的复杂性有时会让来自 Windows 或 Mac 世界的新用户感到震惊。实际上,这是同样的原则 - 把所有东西放在它应该在的地方,它就会工作。你找不到程序的快捷方式?创建一个 - 它只是一个文本文件!计算机是机器,它们是为了操作而存在的。Windows 的%PATH%
命令行也有变量,只是你不知道而已,因为 Windows 命令行不如 Linux 灵活且使用较少。简而言之,不要被你所看到的一切吓倒,因为在日常工作中,它都是最常用的命令或操作的 20%,它们让你完成了 80% 的工作。
答案2
没有区别如何软件安装完毕。但过去哪个15.10 之前版本无法安装软件。Trusty 中的 Ubuntu 软件中心以前允许用户通过它购买应用程序,而这些应用程序通常无法通过 进行安装apt-get
。
搜索(按windows/ super)无法生成我通过命令行安装的一些软件包。
我认为您指的是使用 Dash 进行搜索(使用超级键)。Dash 通常只显示带有图形用户界面并带有某种图标的程序(更具体地说是带有。桌面文件)。这些适合日常使用,并显示在 Dash 搜索中。但这些并不是您安装的所有应用程序;Ubuntu 有许多命令行应用程序不会出现在 Dash 中,因为这些不适合用作图形独立应用程序(并且因为它们通常不附带 .desktop 文件)。例如,您不会tar
在 Dash 中看到该程序。
因此,如果您安装了命令行应用程序,它通常不会出现在 Dash(Windows 键)搜索中。由于您没有指定哪个应用程序没有出现,这可能是一般答案。
笔记:正如 Serg 在评论中指出的那样,Dash 中图标的外观取决于 .desktop 文件。如果命令行应用程序带有 .desktop 文件,它也会出现于 dash 中。我同意他的观点。但确实,命令行应用程序通常不要带有。桌面文件。
我想知道是否可以编写安装命令,以便列出我安装的软件。
如前所述,没有命令可以从命令行安装软件并强制其出现在 Dash 搜索中。有些软件会自动出现,有些则不会。如果您通过命令行安装 atom-text-editor,它就会出现。如果您安装p7zip
软件包,它不会出现在 Dash 搜索中。这取决于软件的图形图标可用性(以及桌面环境中启动器图标的配置,例如 Unity、Xfce 等)。它不取决于您如何安装它们。
我注意到系统备份和恢复似乎破坏了一些通过命令行安装的软件(例如
subl
)。
这取决于您如何备份和恢复。subl
是 Sublime Text Editor 的程序名称。如果您尚未安装,请安装它。该subl
命令应该开始工作。
答案3
我猜你正在使用命令行。apt 是 GUI 软件中心依赖的包管理器。apt
例如apt-get
,假设你想安装包“gimp”。要通过命令行执行此操作,请使用
sudo apt install gimp
软件中心所做的就是,当您选择安装 GIMP 时,在后台运行该命令,这样您不必输入它。
要通过命令行搜索可安装程序,请使用以下命令:
apt search {search term}