Abhishek Prakash 发布的文章

前几天我试图安装 massCode 应用。对于安装,它提供了一个 Snap 文件以供下载。

当我尝试从 Snap 文件安装应用程序时:

sudo snap install snap_file

它给了我以下错误:

error: cannot find signatures with metadata for snap "masscode_2.6.1_amd64.snap"

cannot find signature with metadata for snap

这很奇怪。在 Ubuntu 中添加外部仓库 时,你必须添加 GPG 密钥。但是这里的开发人员没有提供这样的东西。

“修复”简单易行。让我给你解释一下。

处理 “cannot find signatures with metadata for snap” 错误

这里其实不涉及签名。

发生的情况是你从第三方下载了 Snap 安装程序。 Ubuntu 中的 Snap 机制希望你从官方 Snap 商店获取 Snap 包。

由于它不是来自 Snap 商店,因此你会看到 “cannot find signatures with metadata for snap” 的错误消息。与大多数错误消息一样,这个错误消息不是描述性的。

那么,这里的解决方案是什么?

任何未通过 Snap 商店分发的 Snap 包都必须使用 --dangerous 选项进行安装。这就是规则。

sudo snap install --dangerous path_to_snap_file

这样,你告诉 Snap 包管理器显式安装 Snap 包。

在这里,我使用了这个选项并且能够成功地从它的 Snap 包中安装 massCode。

installing third party snap packages

以这种方式安装 Snap 包有多“危险”?几乎和下载并 安装 deb 格式安装包 相同。

在我看来,如果你是从项目开发者的网站上下载 Snap 包,你已经在信任该项目了。在这种情况下,你可以使用 --dangerous 选项安装它。

当然,你应该首先搜索该软件包是否在 Snap 商店中可用:

snap find package_name

我希望这个快速的小技巧可以帮助你修复 Snap 错误。如果你有任何问题或建议,请告诉我。如果你想了解更多信息,请参阅 这个使用 Snap 命令指南


via: https://itsfoss.com/snap-metadata-signature-error/

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

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

这篇面向初学者的文章探讨了在 Linux 中如何在普通视图中隐藏文件和文件夹。图形用户界面和命令行方法都有所涉猎。

有时你需要在 Linux 中隐藏文件。

不要误会,我不是指那些你不想让你的家人看到的“特殊文件”。尽管你可以隐藏这些特殊文件,但更好的办法还是用密码锁定它们以提供额外的保护。

回到隐藏文件的话题。名称以 . 开头的任何文件或文件夹在 Linux 中是“隐藏的”。

Linux 有很多这样的文件和文件夹,在普通视图中它们是隐藏的。这些主要是系统和程序所需的配置文件。

用户通常不需要理会它们,因此它们在普通视图中是隐藏的,这样一来你就不会被许多看起来很奇怪的而不是你所创建的文件所淹没。

下图展示了我的主目录中隐藏的文件和文件夹。

linux 普通视图

linux 显示隐藏文件

如果你使用的是桌面版 Linux,你可以通过在文件管理器中按 Ctrl+H 快捷键来轻松 查看隐藏文件。在终端中,你可以使用 ls -a 命令显示隐藏文件和普通文件。

那么,如何在 Linux 中创建隐藏文件呢?你只需用一个在命名的时候加一个 . 前缀。就是这样。

在桌面版 Linux 里创建隐藏文件和文件夹(GUI 方法)

如果你使用的是文件管理器,在文件或文件夹上右键并选择重命名选项。现在你所要做的就是在文件名的开头添加一个 .

当你以这种方式创建隐藏文件时,GNOME 的 Nautilus 文件管理器也会显示一个警告。

ubuntu linux 隐藏文件

你可以以相同的方式隐藏文件夹及其所有内容。

你可以按 Ctrl+H 键来显示隐藏文件。哦!我是多么的喜欢 Ubuntu 中的键盘快捷键 和我使用的任何其他程序或操作系统!

要使隐藏文件变回普通文件,只需再次重命名这些文件删掉文件名前缀的 . 即可。

在 Linux 终端创建隐藏文件和文件夹(CLI 方法)

如果你热衷于终端,你可以 使用 mv 命令 重命名文件。你只需在原始文件名的开头添加一个 .

mv filename .filename

你可以使用以下命令显示隐藏文件:

ls -la

你也可以使用 ls -lA。这条命令不会显示点文件(...)。

额外提示:用非重命名的方法隐藏文件和文件夹(仅适用于 GUI)

你刚刚学了在 Linux 中隐藏文件。问题是你必须重命名文件,而这种操作不适用于所有的场合。

例如,在 Ubuntu 中,你会在目录中看到一个名为 snap 的文件夹。你不会使用它,但如果重命名它,你的 Snap 应用程序将无法按预期工作。类似的情况是,在 Ubuntu 22.04(安装有 Snap 版本的 Firefox)的 Downloads 目录下有一个 firefox.tmp 文件夹。

有一个巧妙的技巧可以在 Linux 桌面中使用。它应该可以在 Nemo、Thunar、Dolphin 等各种文件管理器下工作,但我不能保证。它确实适用于 GNOME 的 Nautilus 文件管理器。

因此,你在这里所做的是在你想要隐藏的文件或文件所在的目录中创建一个名为 .hidden 的新文件。

在 Linux 中隐藏文件的另一种方法

Ctrl+H 显示隐藏文件并 打开 .hidden 文件 进行编辑。在单独的行中添加文件或文件夹的名称。注意不能使用绝对或相对路径。你想要隐藏的 文件和文件夹应与此特殊 .hidden 文件 位于同一路径下。

这是我以不重命名的方式隐藏 cpufetch 目录和 pcloud 文件的示例:

pcloud
cpufetch

Ctrl+H 以再次隐藏 .hidden 文件。

现在,关闭你的文件资源管理器并重新启动它。你将不会再看到 .hidden 文件中提到的文件和目录。

如果你想再次查看它们,请按 Ctrl+H 键。

如果你不想再隐藏文件,请从 .hidden 文件中删除其名称或完全删除 .hidden 文件。

额外琐事:隐藏文件“功能”实际上是一个 bug

你知道吗?在文件名的开头添加一个 . 来隐藏文件的“功能” 实际上是一个 bug

在早期的 UNIX 时代,当创建文件系统时,添加了 .(当前目录)和 ..(父目录)文件以方便导航。

由于这些特殊的 ... 文件中没有实际数据,因此给 ls 命令添加了一个新的“功能”:该功能是检查文件名的第一个字符,如果它是一个点(.),则不再使用 ls 命令显示它。

这对隐藏 ... 文件有效,但它引入了一个 “bug”:ls 命令的输出会隐藏任何文件名以 . 开头的文件。

这个 bug 变成了一个功能,因为程序员喜欢它来“隐藏”他们的配置文件。ls 命令可能是后来修改添加了一个显示隐藏点文件的选项。

Linux 遵循相同的约定,因为 Linux 是以 UNIX 为原型开发的。

结论

我讨论了如何从普通视图中创建隐藏文件。如果要创建让其他人无法访问的机密文件或文件夹,则应对其进行加密。我曾经写过 在 Linux 中使用密码锁定文件夹。这是一篇有点儿旧的文章,但它可能仍然有效。

我希望你喜欢这个简单的话题并学到新的东西。发布你的评论让我知道你的想法吧。


via: https://itsfoss.com/hide-files-folders-linux/

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

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

你可能已经知道如何在 Linux 中获得你的系统的 IP 地址。

但是你怎么知道你的路由器的 IP 地址呢?

我说的不是你可以通过连接到 “Show My IP” 这样的网站或简单地在 DuckDuckGo搜索“what is my ip” 获得的公网 IP。

我说的是默认网关 IP,你的 Linux 桌面所连接的地址。

你为什么需要它?嗯,如果你需要改变你的 Wi-Fi/网络的 SSID、密码或其他配置,你必须连接到它。简单的方法是在网页浏览器中输入路由器的 IP 地址,然后使用路由器的用户名和密码。

虽然我不能帮助你获得路由器的用户名和密码,但我肯定可以告诉你如何获得它的 IP。

一如既往,我将展示 GUI 和命令行两种方法。

方法 1:在 Linux 中使用 GUI 获取路由器的 IP 地址

这其实很简单。我在这里使用的是 Ubuntu 的 GNOME 桌面。如果你使用一些 其他桌面环境,截图可能会有所不同。

打开“ 系统设置 System Settings ”:

go to settings

现在进入 Wi-Fi 或“ 网络 Network ”(如果你使用的是有线的以太网连接)。在这里,点击你当前使用的网络旁边的小设置符号。

access network settings ubuntu

它将打开一个新窗口,里面有关于你的连接的一些细节,如 IP 地址、DNS 和 Mac 地址。你还可以在“ 安全 security ”标签下看到 保存的 Wi-Fi 密码

你还会看到一个名为“ 默认路由 Default Route ”的条目。这就是你要找的东西。你的路由器的 IP 地址。

default gateway ip ubuntu

你的系统和网络上的所有其他设备都使用这个 IP 地址连接到路由器。这就是大多数家庭的设置。

现在我已经展示了 GUI 的方法,让我们去看看终端的路线。

方法 2:在 Linux 命令行中获取路由器的 IP 地址

打开一个终端,使用以下命令:

ip route

它将显示几个条目。

~$ ip route
default via 192.168.1.1 dev wlp0s20f3 proto dhcp metric 600 
169.254.0.0/16 dev wlp0s20f3 scope link metric 1000 
192.168.1.0/24 dev wlp0s20f3 proto kernel scope link src 192.168.1.34 metric 600

第一行,以 default via 开头,给出了你网关的 IP。这是你的路由器的 IP 地址。

default route linux terminal

你可以看到,192.168.1.1 是我的路由器的 IP 地址。通常情况下,路由器的 IP 地址是子网的第一个数字。然而,这并不是一个硬性规定。我也见过有 x.y.z.30 地址的路由器。

额外技巧

正如 Samir 在评论中所分享的,你也可以(在 Debian 上)使用 ping 命令来获得网关 IP:

ping _gateway

ping gateway

以防你不知道,你必须 在 Linux 中使用 Ctrl+C 来停止一个正在运行的命令

我希望你在需要的时候能发现这个技巧是有用的。


via: https://itsfoss.com/router-ip-address-linux/

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

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

在 Ubuntu 中想安装一个软件包的一个特别指定的版本?你可以通过下面的方式来轻松地完成:

sudo apt install package_name=package_version

你如何知道某个软件包有哪些可用的版本?可以使用这个命令:

apt list --all-versions package_name

在下面的屏幕截屏中,你可以看到,我有两个可用的 VLC 版本,我使用命令来安装较旧的版本:

install specific versions apt ubuntu

听起来像一个简单的任务,对吧?但是事情并非看起来那么简单。这里有一些不确定是否会出现,但是可能会涉及的东西。

这篇教程将涵盖使用 aptapt-get 命令来安装一个具体指定的程序的版本的所有的重要的方面。

安装一个具体指定版本的程序需要知道的事

在基于 Ubuntu 和 Debian 发行版中,你需要知道一些关于 APT 和存储库是如何工作的知识。

同一个软件包源没有较旧的版本

Ubuntu 在其存储库中不保留较旧版本的软件包。在特殊的情况下,你可以暂时性地看到多个版本。例如,你运行 APT 更新(但不升级)时,可能会有一个可用的新版本。在 APT 缓存中,你可以看到同一个软件包的两个版本。但是,一旦软件包被升级到了新的版本,较旧版本的软件包将从 APT 缓存 和存储库中移除。

使用多个软件包源来使用不同的版本

为获取同一个的软件包的多个版本,你必须得添加多个软件包源。例如,VLC 是版本 3.x 系列。添加 VLC 每日构建 PPA 将会提供(不稳定的)版本 4.x 系列。

同样,你可以下载不同版本的 DEB 文件,并安装它

较高版本编号的版本通常有优先权

如果你有来自多个软件包源的相同名称的软件,默认情况下,Ubuntu 将安装可用的最高版本编号的版本。

在前面的示例中,如果我安装 VLC ,那么它将会安装 4.x 系列的版本,而不是 3.x 系列的版本。

较旧版本将升级到可用的较新版本

这是另外一个可能存在的问题。即使你安装较旧版本的软件包,它也会升级到较新的版本(如果存在可用的较新版本)。你必须 保留该软件包来防止其升级

依赖关系也需要安装

如果软件包有依赖关系,你也需要安装必要的依赖关系软件包。

现在,你已经知道一些可能存在的问题,让我们看看如何解决它们。

安装一个软件包的具体指定版本

在这篇教程中,我将以 VLC 为例。在 Ubuntu 的存储库中可获得 VLC 版本。我添加了每日构建 PPA ,它将向我提供 VLC 的 4.0 版本的候选版本。

如你所见,在现在的系统中,我有两个可用的 VLC 版本:

install specific versions apt ubuntu

~$ apt list -a vlc
Listing... Done
vlc/jammy 4.0.0~rc1~~git20220516+r92284+296~ubuntu22.04.1 amd64
vlc/jammy 3.0.16-1build7 amd64
vlc/jammy 3.0.16-1build7 i386

因为较高版本编号版本有优先权,使用 apt install vlc 命令将会导致安装 VLC 的 4.0 版本。但是,因为这篇教程的缘由,我想安装较旧的版本 3.0.16 。

sudo apt install vlc=3.0.16-1build7

但是,这里会有这样的事。VLC 软件包有一些依赖关系,并且这些依赖关系也需要具体指定的版本。因此,在 Ubuntu 为其尝试安装最新的版本时,你将会遇到经典的 你已保留残缺软件包 you have held broken packages 错误。

problem installing specific version apt ubuntu

为修复这个错误,你需要为其提供它所投诉的所有依赖关系的软件包的具体指定版本。因此,该命令会变成这样:

sudo apt install vlc=3.0.16-1build7 \
         vlc-bin=3.0.16-1build7 \
         vlc-plugin-base=3.0.16-1build7 \
         vlc-plugin-qt=3.0.16-1build7 \
         vlc-plugin-video-output=3.0.16-1build7 \
         vlc-l10n=3.0.16-1build7 \
         vlc-plugin-access-extra=3.0.16-1build7 \
         vlc-plugin-notify=3.0.16-1build7 \
         vlc-plugin-samba=3.0.16-1build7 \
         vlc-plugin-skins2=3.0.16-1build7 \
         vlc-plugin-video-splitter=3.0.16-1build7 \
         vlc-plugin-visualization=3.0.16-1build7

说明一下,每行结尾处的 \ 只是用来将多行命令来写入同一个命令的一种方式。

它有作用吗?在很多情况下,它是有作用的。 但是,我选择了一个复杂的 VLC 示例,它有很多依赖关系。甚至这些所涉及的依赖关系也依赖于其它的软件包。所以,它就变得令人难以处理。

一种替代的方法是在安装时指定软件包源。

替代方式,指定存储库

你已经添加多个软件包源,因此,你应该对这些软件包的来源有一些了解。

使用下面的命令来搜索存储库:

apt-cache policy | less

注意存储库名称后面的行:

500 http://security.ubuntu.com/ubuntu jammy-security/multiverse i386 Packages
     release v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=multiverse,b=i386
     origin security.ubuntu.com

你可以具体指定 ola 等参数。

在我原来的示例中,我想安装来自 Ubuntu 存储库的 VLC(获取版本 3.16),而不是安装来 PPA 的版本(它将向我提供版本 4)。

因此,下面的命令将安装 VLC 版本 3.16 及其所有的依赖关系:

sudo apt install -t "o=ubuntu" vlc

install from repository source

看起来令人满意?但是,当你必须更新系统时,问题就来了。它接下来会控诉找不到指定的软件包版本。

还能做什么?

为安装较旧的软件包版本,从你的系统中移除较新版本的软件包源(如果可能的话)。它将有助于逃脱这些依赖关系地狱。

如果不能这么做,检查你是否可以从其它一些软件包的打包格式来获取,像 Snap、Flatpak、AppImage 等等。事实上,Snap 和 Flatpak 也允许你从可用的版本中选择和安装。因为这些应用程序是沙盒模式的,所以它很容易管理不同版本的依赖关系。

保留软件包,防止升级

如果你完成安装一个指定的程序版本,你可能想避免意外地升级到较新的版本。实现这一点并不太复杂。

sudo apt-mark hold package_name

你可以免除保留软件包,以便它能稍后升级:

sudo apt-mark unhold package_name

注意,软件包的依赖关系不会自动地保留。它们需要单独地指明。

结论

如你所见,安装选定软件包版本有一定之规。只有当软件包有依赖关系时,那么事情就会变得复杂,然后,你就会进入依赖关系地狱。

我希望你在这篇教程中学到一些新的东西。如果你有问题或建议来改善它,请在评论区告诉我。


via: https://itsfoss.com/apt-install-specific-version-2/

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

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

有一大堆文件尺寸巨大的图片占用了太多的磁盘空间?或者你必须将图片上传到有文件大小限制的门户网站?

你可能有很多原因想要压缩图片。有大量的工具可以帮助你,我在这里说的不是命令行的工具。

你可以使用一个成熟的图像编辑器,如 GIMP。你也可以使用像 Squoosh 这样的网络工具,这是谷歌的一个开源项目。它甚至可以让你比较每个压缩级别的文件。

然而,所有这些工具都是针对单个图像工作的。如果你想批量压缩照片怎么办?Curtail 是一个能帮助你的应用。

Curtail: Linux 中用于图像压缩的灵巧工具

使用 Python 和 GTK3 构建的 Curtail 是一个简单的 GUI 应用,使用 OptiPNG、jpegoptim 等开源库来提供图像压缩功能。

它有一个 Flatpak 应用。请确保你的系统已启用 Flatpak 支持

首先添加 Flathub 仓库:

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

然后使用下面的命令来安装 Curtail:

flatpak install flathub com.github.huluti.Curtail

安装后,在你的 Linux 系统的菜单中寻找它,并从那里启动它。

curtail app

界面朴素而简单。你可以选择你想要无损压缩还是有损压缩。

有损压缩会有质量差的图像,但尺寸较小。无损压缩会有更好的质量,但尺寸可能不会比原来的小很多。

curtail app interface

你可以浏览图片,或者把它们拖到应用中。

是的,你可以用 Curtail 一键压缩多张图片。

事实上,你甚至不需要点击。只要你选择图片或拖放它们,它们就会被压缩,你会看到压缩过程的摘要。

curtail image compression summary

正如你在上面的图片中看到的,我的一张图片的尺寸减少了 35%,另外两张图片的尺寸减少了 3% 和 8%。这是在无损压缩的情况下。

这些图片以 -min 为后缀(默认),保存在与原始图片相同的目录中。

虽然它看起来很简约,但有几个选项可以配置 Curtail。点击菜单,你会看到一些设置选项。

curtail configuration options

你可以选择是将压缩文件保存为新文件还是替换现有文件。如果你选择新文件(默认行为),你也可以为压缩后的图像提供一个不同的后缀。保留文件属性的选项也在这里。

在下一个选项卡中,你可以配置有损压缩的设置。默认情况下,压缩级别为 90%。

curtail compression options

高级选项卡让你可以选择配置 PNG 和 WebP 文件的无损压缩级别。

curtain advanced options

总结

正如我前面所说,这不是一个突破性的工具。你可以用其他工具如 GIMP 做同样的事情。它只是使图像压缩的任务更简单,特别是对于批量图像压缩。

我很想看到在压缩时有转换图像文件格式的选项,就像我们在 Converseen 等工具中所拥有的那样。

总的来说,对于图像压缩的具体目的来说,这是一个不错的小工具。


via: https://itsfoss.com/curtail-image-compress/

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

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

在 Linux 中运行一个 Python 程序只需要简单地在终端中执行 Python 文件就行。

但这对人们来说不是很方便,也不能帮助你调试你的程序。太原始了。

有几个 IDE 和文本编辑器可以用于 Python 开发。Linux 用户可以使用 PyCharm 社区版

我最近发现了另一个专门为 Python 初学者制作的 IDE。我喜欢这个应用的想法,因此我在这里与你分享。

Thonny 是一个跨平台、开源的 Python IDE,适合初学者使用

Thonny 在用户界面和用户体验方面,感觉就像 Python 版本的 Eclipse。考虑到大多数 C++ 和 Java 的初学者都是从 Eclipse 开始的,而且许多人后来一直使用它,这也不完全是一件坏事。

它不是一个新的工具。它已经出现好几年了。我没有用 Python 进行编码,所以直到最近才发现它。

Thonny 专注于 Python,提供了帮助 Python 初学者了解其程序行为的功能。让我们来看看这些功能。

即装即用

Thonny 自带 Python,所以你不需要为安装 Python 做额外的努力。这对 Linux 用户来说不是什么大事,因为大多数发行版都默认安装了 Python。

界面很简单。它给你一个编辑器,你可以写你的 Python 程序,然后点击运行按钮或使用 F5 键来运行程序。输出显示在底部。

thonny hello world

查看变量

在 “ 查看 View -> 变量 Variables ”,你可以看到所有变量的值。不需要将它们全部打印出来。

thonny variable pane

内置调试器

通过使用调试器一步步运行你的程序。你可以从顶部的菜单或使用 Ctrl + F5 键访问它。在这里你甚至不需要设置断点。你可以用 F6 进入大步骤,或用 F7 进入小步骤。

thonny step by step f6

在小步骤中,你可以看到 Python 是如何看待你的表达式的。这对新的程序员理解他们的程序为什么以某种方式表现非常有帮助。

thonny step by step f7

不止这样。对于函数调用,它会打开一个新的窗口,里面有独立的局部变量表和代码指针。超级酷!

语法错误高亮

初学者经常会犯一些简单的语法错误,如缺少小括号、引号等。Thonny 会在编辑器中立即指出来。

本地变量也可以从视觉上与全局变量区分开来。

自动补全

你不需要输入所有的东西。Thonny 支持自动补全代码,这有助于加快编码。

thonny auto complete

访问系统 shell

在工具中,你可以访问系统 shell。在这里你可以安装新的 Python 包或学习从命令行处理 Python。

thonny shell terminal

请注意,如果你使用 Flatpak 或 Snap,Thonny 可能无法访问系统 shell。

从 GUI 管理 Pip

进入工具和管理包。它会打开一个窗口,你可以从这个 GUI 中安装 Pip 软件包。

thonny manage packages

对于学习 Python 来说,功能足够好,对吗?让我们看看如何安装它。

在 Linux 上安装 Thonny

Thonny 是一个跨平台的应用。它可用于 Windows、macOS 和 Linux。

它是一个流行的应用,你可以在大多数 Linux 发行版的仓库中找到它。只要在你的系统的软件中心寻找它。

另外,你也可以随时使用你的 Linux 发行版的包管理器。

在 Debian 和基于 Ubuntu 的发行版上,你可以使用 apt 命令来安装它。

sudo apt install thonny

它会下载一堆依赖关系和大约 300MB 的软件包。

安装后,你可以在菜单中搜索它,并从那里安装它。

总结

Thonny 对于初级 Python 程序员来说是个不错的工具。不是说专家不能使用它,但它更适合在学校和学院使用。学生们会发现它有助于学习 Python 和理解他们的代码是如何以某种方式表现出来的。事实上,它最初是在爱沙尼亚的塔尔图大学开发的。

总的来说,对于 Python 学习者来说是一个很好的软件。


via: https://itsfoss.com/thonny-python-ide/

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

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