Abhishek Prakash 发布的文章

如何 在命令行中更新你的 Ubuntu 系统?你可以使用 apt update(刷新包缓存)和 apt upgrade 命令。

sudo apt update && sudo apt upgrade

它会更新所有可以立即升级的已安装 apt 包。这也包括 Linux 内核版本。

这似乎是一件好事,尤其是对于桌面用户。但对于运行关键 Web 服务的 Ubuntu 服务器用户而言,情况可能并非如此。

如果你想对更新有选择性,并且只想升级单个软件包,请使用以下命令:

sudo apt install --only-upgrade package_name

让我们更详细地了解一下。

使用 apt 命令升级单个包

第一步是更新本地包仓库缓存,以便你的系统知道有新版本的软件包可用。

sudo apt update

这是可选的。查看一下你要升级的软件包是否在 可升级软件包列表 中。

apt list --upgradable

如果所需的软件包有可用的新版本,你可以选择使用以下命令仅升级该单个软件包:

sudo apt install --only-upgrade package_name

如果你对已安装的软件包运行 apt install 命令,它将升级到下一个可用版本。

但如果该软件包尚未安装,apt 命令也会安装它。

这就是为什么 --only-upgrade 部分是必要的。使用该选项,apt 命令只会升级已安装的软件包。如果尚未安装,它将不会安装该软件包。

这不是最适合 Ubuntu 服务器用户的示例,但你仍然可以在下面的截图中看到我如何只升级了七个可升级包中的一个。

Update only a single package in Ubuntu

仅升级选定的软件包

如果要升级选定的几个软件包,那么不必一一更新。只需使用前面提到的命令提供包名称。

sudo apt install --only-upgrade package1 package2 package3

这是一个例子。

Upgrade selected packages in Ubuntu

总结

当你面临必须升级选定软件包的情况时,你可以使用带有 –only-upgrade 选项的 apt install 命令。

我建议阅读 如何更有效地使用 apt 命令


via: https://itsfoss.com/apt-upgrade-single-package/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

从 .deb 文件安装应用 非常简单。双击它,它会在软件中心中打开,然后从那里安装它。

但是如何在 Ubuntu 或 Debian 中卸载 deb 包呢?如何删除一段时间前安装的软件包呢。

虽然这有几个如果和但是,但删除 .deb 文件的最简单和最可靠的方法是使用 apt remove 命令。

sudo apt remove program_name

如你所见,你需要在这里知道确切的包名称。这可能并不总是显而易见的。例如,如果你在 Ubuntu 上安装 Google Chrome,则该程序在命令行中称为 “google-chrome-stable”。你已经知道了吗?我猜你不知道。

在本教程中,我将详细介绍如何找到确切的包名称,然后使用它来删除应用。我还将讨论使用图形方法删除 deb 包。

从 Ubuntu 中删除通过 .deb 文件安装的软件包

在我向你展示如何从命令行删除 deb 包之前,让我们在软件中心应用中快速查看它。

方法 1:检查应用是否可以从软件中心移除

Ubuntu 有软件中心 GUI 应用,允许搜索、安装和删除应用。

搜索时,软件中心可能不会显示已安装的应用。

Searching for installed applications may not show any results in Ubuntu Software Center

但是,如果向下滚动,你仍可能在“已安装”部分下找到它。外部应用通常不带徽标显示。

Some installed applications can be found in the ‘installed’ tab of the Software Center

如果找到它,你可以通过单击“垃圾桶”图标或“删除”按钮来删除该应用。

Removing applications from the Ubuntu software center

一句话:检查是否可以从软件中心删除应用。

方法 2:使用 apt 命令删除应用

我假设你不知道该应用命令的确切名称。你可能不知道 Google Chrome 安装为 google-chrome-stable 而 Edge 安装为 microsoft-edge-stable,这很正常。

如果你知道前几个字母,那么 tab 补全可能会有所帮助。否则,你可以 使用 apt 命令列出已安装的应用 并使用 grep 搜索应用程序名称:

apt list --installed | grep -i possible_package_name

例如,你可以智能地猜测 Google Chrome 包的名称中应该包含 chrome。你可以这样搜索:

apt list --installed | grep -i chrome

在某些情况下,你可能会得到多个结果。

check if google chrome installed in ubuntu

如果你不确定这些软件包的作用,你可以随时通过以下方式获取它们的详细信息:

apt info exact_package_name

获得确切的软件包名称后,你可以使用 apt remove 命令将其删除。

sudo apt remove exact_package_name

你还可以使用 apt-get removedpkg uninstall 命令来删除。

Removing applications installed via .deb files using the apt command

方法 3:使用 Synaptic 包管理器删除 deb 应用

另一种方法是使用 Synaptic 包管理器。在 GNOME 以“软件中心”的形式创建其图形包管理器之前,Synaptic 是 Ubuntu 和许多其他发行版中的默认 GUI 包管理器。

它仍然是 Xfce 桌面环境 上的推荐工具。

首先安装它:

sudo apt install synaptic

打开 Synaptic 并搜索包名称。查找标记为绿色的已安装软件包。右键单击它们,然后单击“标记为删除”。之后点击应用。

Removing Deb packages using Synaptic package manager

对你有帮助吗?

我非常乐意使用 apt 命令删除从 .deb 文件中安装的软件包。但我可以理解,并不是每个人都喜欢使用命令行。

在删除从外部 .deb 文件安装的应用时,我发现软件中心中找不到它。软件中心还可以做的更好一些。

我希望你现在对删除 deb 包有更好的了解。如果你有任何问题,请告诉我。


via: https://itsfoss.com/uninstall-deb-ubuntu/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如何在 Linux 终端中运行一个 Python 程序?像这样,对吗?

python program.py

然而,如果你试图在 Ubuntu(和其他一些发行版)中使用 python 命令,它会抛出一个错误。

command ‘python’ not found, did you mean:
command ‘python3’ from deb python3
command ‘python’ from deb python-is-python3

如果你注意这个错误信息,它说明了很多东西。这里的 python 命令实际上是 python3

如果你不理解,不用担心。我将在这里详细解释。

为什么在 Ubuntu 上没有发现 python 命令?

这是因为 Python 语言不是以 python 的形式安装的,而是以 python3python2 的形式安装的(在一些老的 Ubuntu 版本中)。

在遥远的过去的某个时间点,Python 实际上是作为 python 包/可执行文件提供的。当 Python 发布第二版时,Ubuntu 和其他发行版不得不同时支持 Python 1.x 和 2.x 版本。

因此,他们将较新的 Python 版本命名为 python2,以区分这两个版本。其他应用或库也在其代码中指定 pythonpython2

最终,Python 1 版本被完全停用,但软件包继续被命名为 python2

类似地,当 Python 3 版本发布时,发行版开始同时提供 python2python3 包。

Python 2 不再被支持,Python 3.x 是你在 Ubuntu 上安装的版本。该软件包仍被命名为 python3

总结一下,你已经在 Ubuntu 上安装了 Python。它是以 python3 软件包方式使用的。

那么,当你 在 Ubuntu 上看到 “Python command not found” 的错误 时,你有什么选择?让我来介绍一下。

确保你的系统中已经安装了 Python

它应该已经安装了,但仔细检查一下也无妨。

Ubuntu 18.04 也有 Python 2,但 20.04 及更高版本只有 Python 3。不过,你有哪个版本:

type python python2 python3

正如你在下面的截图中看到的,我的系统上安装了 Python 3 版本。

Checking Python version in Ubuntu

如果你没有安装任何 Python 版本,你可以用以下命令安装 Python 3 版本。

sudo apt install python3

使用 python3 而不是 python

如果对你来说不是太麻烦,在需要的地方使用 python3 命令而不是 python

想检查已安装的 Python 版本吗?请这样输入:

python3 --version

然后你会在输出中得到版本的详细信息:

~$ python3 --version
Python 3.10.4

如果你必须运行一个 Python 程序,请像这样执行它:

python3 program.py

这在大多数情况下应该对你有用。但是,如果你使用的是一些(旧的)Python 应用,期望在其代码中运行 Python 可执行文件,你就会有问题。别担心,你也可以绕过它。

将 python3 链接为 python

你可以在你的 .bashrc 文件中创建一个永久别名,像这样:

alias python='python3'

这样,你可以运行 python 命令,而你的系统运行 python3

这在大多数情况下都会起作用,除非某些程序期望运行 /usr/bin/python。现在,你可以在 /usr/bin/python/usr/bin/python3 之间建立符号链接,但对于 Ubuntu 用户来说,存在一个更简单的选择。

对于 Ubuntu 20.04 和更高版本,如果你安装了 python-is-python3 软件包,你有一个软件包可以自动完成所有链接创建。这也是原始错误信息所提示的。

sudo apt install python-is-python3

install python is python3 ubuntu

你可以看到符号链接已经被创建,你可以使用 python 命令(实际上是运行 python3),没有任何问题。

checking python ubuntu

我希望这能澄清 Ubuntu 中 Python 软件包的问题。如果你有任何问题或建议,请告诉我。


via: https://itsfoss.com/python-not-found-ubuntu/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

apt 命令 用于 Debian 和 Ubuntu 中的包管理。虽然你可能已经熟悉安装和删除选项,但 apt 还提供了一些额外的功能。

其中之一是能够查看系统上所有可升级的软件包。要显示它们,你所要做的就是在终端中使用以下命令:

apt list --upgradable

如你所见,你甚至不需要使用 sudo 来列出可更新的包。它只是列出了可以更新的包,而不会更新它们。

实际上,当你运行 sudo apt update 命令更新本地包仓库缓存时,apt 命令会添加此提示。

Fetched 1,243 kB in 17s (71.4 kB/s)           
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
30 packages can be upgraded. Run 'apt list --upgradable' to see them.

我不记得在旧的 apt-get 命令中有任何类似的直接选项来列出所有可升级的包。这是 apt 在旧的 apt-get 命令之上添加的几个新功能之一。

让我们更详细地讨论一下。

列出所有可升级的包

你在这里应该知道的是你只能列出通过 APT 包管理器可用的更新。因此,如果你已将 PPA 或 外部仓库 添加到系统的 sources.list,你也将看到来自它们的更新。

但是你不会在这里获得 AppImage、Flatpak、Snap 或一些其他打包格式的更新。

换句话说,它只适用于 APT 包。

因此,要列出 Ubuntu 或 Debian 系统上的所有可升级包,你应该首先更新本地包缓存:

sudo apt update

然后你的系统将知道可用的软件包更新。apt 命令告诉你在 update 命令结束时可以升级多少个软件包:

The apt command shows the number of upgradable packages at the bottom of the apt update command output

要查看可以升级的软件包,请运行以下命令:

apt list --upgradable

你应该看到这样的输出:

~$ apt list --upgradable 
Listing... Done
apparmor/jammy-updates 3.0.4-2ubuntu2.1 amd64 [upgradable from: 3.0.4-2ubuntu2]
brave-browser/stable 1.40.113 amd64 [upgradable from: 1.40.107]
evolution-data-server-common/jammy-updates,jammy-updates 3.44.2-0ubuntu1 all [upgradable from: 3.44.1-0ubuntu2]
evolution-data-server/jammy-updates 3.44.2-0ubuntu1 amd64 [upgradable from: 3.44.1-0ubuntu2]

Listing all the upgradable packages

按字母顺序列出所有可升级的软件包以及有关当前安装版本和新可用软件包版本的信息。

brave-browser/stable 1.40.113 amd64 [upgradable from: 1.40.107]

例如,这显示我系统上安装了 Brave 浏览器,版本 1.40.107,并且版本 1.40.113 可用。

你能用这些信息做什么?让我分享一些我能想到的事情。

升级所有包

这可能是大多数普通 Ubuntu 用户所做的。你可以使用以下命令升级所有可升级包:

sudo apt upgrade

它列出了将要升级的软件包,然后要求按回车或 Y 确认升级。

Upgrade all packages

如果你确定要升级所有软件包,则可以通过在命令中添加 -y 来跳过 “Do you want to continue” 部分。

sudo apt upgrade -y

模拟升级(但不升级任何包)

这是人们在 apt list 命令之前所做的。使用模拟选项,你实际上不会进行任何更改。它仅显示运行升级时将安装或升级的软件包。

apt -s upgrade

你不需要使用 sudo(即使我在下面的截图中使用了它)。

Running an upgrade simulation with apt command

仅升级选定的包

如果你正在管理一个 Ubuntu 服务器,并且你不想升级所有软件包,而只想升级少数选定的软件包中的一个(如 MySQL/Ngnix),你可以使用 apt 命令轻松完成。

sudo apt --only-upgrade install package_name

实际上,如果你在已安装且有可用更新的软件包上运行 apt install 命令,它将升级该软件包。

使用 --only-upgrade 标志,你可以确保仅升级软件包(如果已安装)。如果尚未安装,它将不会安装给定的包。

你还可以通过提供名称来升级选定的几个包:

sudo apt --only-upgrade install package1 package2

你也可以做相反的事情,升级时保留选定的软件包

sudo apt-mark hold package_name

这样,当你升级所有系统包时,将不会升级给定的包。

你可以使用以下命令删除保留设置:

sudo apt-mark unhold package_name

是否显示内核升级?

这有点棘手。

当你运行 apt list –upgradable 命令时,它会显示所有可以升级的包。

但是如果有新的内核版本可用,它们可能不会显示,因为内核包名称以 linux-headers-x-y 开头。这是因为系统将它们视为新包,而不是对已安装的包 linux-headers-a-b 的升级。

但是,你仍然会在可升级包列表中看到 linux-generic-hwe 类型的包,因为该软件包将被升级(使用较新的内核)。

总结

列出可升级包的能力是 apt 命令为旧的 apt-get 命令带来的几个新功能之一。有关此主题的更多信息,你可以阅读我 解释 apt 和 apt-get 命令之间的区别 的文章。

作为桌面用户,我并不总是检查可以升级的软件包。我直接去升级。但是,当我管理服务器时,我更喜欢查看可用的更新,然后决定是否进行升级。

你呢?你觉得这个功能对你自己有用吗?


via: https://itsfoss.com/apt-list-upgradable/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这是一个可能的情景。你的系统收到了内核更新,但不知何故,事情不像以前那样顺利。

你意识到,如果你启动到较旧的内核(是的,你可以降级内核),一切都会恢复正常。

高兴之余你会觉得有点儿不爽。因为你不得不在每次启动时手动选择较旧的内核。

一位年长的读者遇到了这个问题。Linux Mint 中的新内核更新没有按预期工作。启动到较旧的内核“修复”了问题,但麻烦的是在每次启动时要去手动选择较旧的内核。

删除新内核而使用旧内核不是一个好主意,因为新内核将会在下一次系统更新时被安装使用。

因此,我建议设置成默认启动到较旧的 Linux 内核。怎么做?这就是我将在本教程中向你展示的内容。

启动至较旧的 Linux 内核

你可能不了解,你的 Linux 发行版会在你的系统上安装多个 Linux 内核。不信?使用以下命令 列出 Ubuntu 中已安装的内核

apt list --installed | grep linux-image

当你升级系统时会获得一个新版本的内核,这时你的系统会自动选择启动至最新的可用内核。

grub 屏幕中,你可以转到 高级选项 Advanced option (较旧的 Linux 版本):

ubuntu grub

在这里,你可以看到要启动的可用内核。选择较旧的(不带 恢复选项 recovery option 的条目):

grub 高级选项

你不会注意到任何显示的差异。你的文件和应用程序保持不变。

现在你已经启动到旧内核,是时候让你的系统自动启动到它了。

使旧内核成为默认启动项

如果你乐于使用 Linux 终端和命令,你可以修改 /etc/default/grub 文件并在其中添加以下行:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

然后使用如下命令 更新 GRUB

sudo update-grub

你在这里所做的是告诉你的系统将当前使用的启动项保存为将来运行 GRUB 的默认启动项。

然而,并不是每个人都善于使用命令行,因此我将专注于一个名为 Grub Customizer 的 GUI 工具。

安装 Grub Customizer

使用官方 PPA 在基于 Ubuntu 的发行版中安装 Grub Customizer

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt update
sudo apt install grub-customizer

对于其他发行版,请使用你的包管理器来安装此工具。

使用 Grub Customizer 更改默认启动项

当你运行 Grub Customizer 时,它会显示可用的启动项。

ubuntu 的 grub customizer

在这里你有两个选择。

选择一: 选择所需的内核项并使用箭头按钮(显示在顶部菜单上)将其向上移动。

在 Ubuntu grub 将旧内核向上移动

选择二: 先前的启动项 previously booted entry 设为 默认启动项 default entry

将当前启动项设为默认 Ubuntu 启动项

我建议使用第二个选择,因为即使有新的内核更新它也可以工作。

这样你就可以在 Ubuntu 或其他发行版中降级内核,甚至无需删除新内核版本。

请注意,像 Ubuntu 这样的发行版大部分一次只保留两个内核版本。因此,最终你首选的旧内核将在新的内核版本释出时被删除。

这个巧妙的技巧曾助我脱困。当时我 在 Ubuntu 中安装最新的 Linux 内核 ,由于某种原因它与我的音频系统有些兼容问题。

无论是什么原因,你现在都知道如何自动启动到旧内核。

如果有问题或建议,请在评论区留言。


via: https://itsfoss.com/boot-older-kernel-default/

作者:Abhishek Prakash 选题:lkxed 译者:hanszhao80 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我喜欢 在 Ubuntu 中使用深色模式。在我看来深色模式能够缓解视觉疲劳,让系统看起来更加的赏心悦目。

我发现了一个 gedit 文本编辑器的小麻烦,如果你在深色模式下使用它,你也许也会遇到。

默认情况下 gedit 高亮当前光标所在的行。这是一个非常有用的功能,但是如果你在 Linux 系统中开启了深色模式,那么你将会感到痛苦。为什么?因为被高亮的文本将不再变得可读。你自己看吧:

Text on the highlighted line is hardly visible

如果你选择文本,它将变得可读,但这并不是一个让人感到有多么愉快的阅读或者编辑体验。(LCTT 校注:在新的 Ubuntu 22.04 中,这一情况已经有所改善,“高亮当前行”已被取消勾选)

Selecting the text makes it better but that’s not a convenient thing to do for all lines

好消息是你不需要再忍受它。我将演示几个步骤让你能够同时享受 gedit 以及系统的深色模式。

让 gedit 在深色模式下阅读体验友好

你基本上有两个选择:

  1. 禁用高亮当前行,但也同时意味着你必须清楚地知道你在哪一行。
  2. 改变默认的颜色设置,但编辑器的颜色会变得稍微有些不同,而且如果你更改系统主题,它不会自动切换到浅色模式。

在 gedit 或者 GNOME 的开发者解决这个问题之前,这是你必须要做的应变和妥协。

选项1: 禁止高亮当前行

当你打开 gedit 后,点击汉堡菜单然后选择“ 首选项 Preferences ”。

Go to Preferences

在查看选项卡,你应该看到在 “ 高亮 Highlighting ” 区域的下方的 “ 高亮当前行 Highlight current line ” 选项。取消勾选这个选项,马上就可以看到效果。

Disable highlighting current line

“高亮当前行”是一个有用的功能,如果你想继续使用它,请选择第二个选项。

选项2: 更改编辑器的颜色主题

在“ 首选项 Preferences ”窗口,找到 “字体与颜色Font & Colors” 标签页,然后将颜色主题更改为 “Oblivion”、“Solarized Dark”,或者 “Cobalt”。

Change the color scheme

正如我前面所提到的,缺点就是当你把系统主题切换为浅色模式时,编辑器将不会自动切换到浅色模式。

开发者应该修复的一个 bug

这里 有几个 Linux 可用的文本编辑器 ,但是为了快速阅读或编辑文本文件,我更推荐使用 gedit。尽管如此,小烦恼仍旧是小烦恼。开发者应该在将来的版本中为这个很好的文本编辑器修复这个问题,让我们不再求助于这些应对办法。

你呢?你在你的系统上使用深色模式还是浅色模式?你注意到 gedit 的这个问题了吗?你有使用什么方法去解决它吗?欢迎分享你的经验。


via: https://itsfoss.com/gedit-dark-mode-problem/

作者:Abhishek Prakash 选题:lujun9972 译者:void-mori 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出