分类 视频脚本 下的文章

视频点此

Linux系统会为每一个用户建立一个home目录,其中有几个金刚路径,如桌面、文档、音乐、下载等等。通常来讲,在图形界面下使用这几个文件夹可能不会意识到什么问题,但如果使用终端的话,你也许会发现:在不同的发行版里,这几个金刚文件夹的实际名称可能是中文,可能是英文。也就是说虽然在图形界面下,文件夹名字显示为“桌面”,但实际上需要在终端中输入cd ~/Desktop才能进入桌面文件夹。这个是为什么呢?

这个问题——其实也不是问题。因为只是设置存在一些差异。

一、如果你是图形界面用户

以KDE为例,你可以发现在设置个性化-应用程序-位置项中可以随意定义这几个金刚文件夹的路径。因此如果想把中文路径调整为英文,直接输入即可。确定时按照提示,系统会自动完成文件夹的重命名操作。
另外,由于可以随意自定义,所以理论上如果你有长期挂载一个网盘当作本地扩容的分区,那么你也可以通过这个设置,把这个网盘当作某一个金刚文件夹对应的路径。

二、如果你是终端用户

这个文件夹映射关系保存在~/.config/user-dirs.dirs文件中,因此只需要修改对应的路径即可实现调整。但是需要注意,由于终端无法完成自动重命名,所以如果需要保留文件夹中的数据,需要在修改路径之后手工将原先的文件夹修改成对应的名称才能保证继续映射。

视频点此

不管是Windows还是Linux,又或者是macOS,都存在一个字符操作界面——终端,其中有很多直接输入便可使用的命令。那么这些命令都存在哪里了,又为什么可以直接调用呢?

这得益于一个所有操作系统都通用的一个概念:环境变量。终端下可以直接使用的命令都是由名为PATH的环境变量明确的。这个环境变量存储了很多路径信息,只要一个命令的可执行文件被放在了这些路径中,那么在终端中便可以直接通过输入这个可执行文件的文件名来实现直接使用,而无需通过输入绝对路径来调用。

如何知道哪些目录可以实现这一点呢?只需要查看PATH这个变量的值即可。

在Linux中,有很多方法可以实现查看环境变量信息。这里首先推荐一个比较好用的命令export。终端中直接输入即可查看当前用户下所有已经定义了的环境变量;使用export 变量名可以进行单独查看;使用export 变量名="变量值"则可以直接定义一个环境变量的内容。

对于PATH变量,一般来说会包括下面几个路径

  • /usr/bin
  • /usr/local/bin
  • /bin
  • /usr/games #这个是在使用Debian时候发现的。没想到竟然把游戏的可执行文件单独拿出来了…

那有没有办法自定义这个路径呢?

就像前面说的,直接定义即可。比如

export PATH=自定义的路径:$PATH 

这就是自定义PATH环境变量的基本写法。其中:

  • 使用冒号区分不同的路径
  • 路径写入的顺序区分了优先级。越靠前越优先检索使用
  • 一定在最前面或者最后面写上$PATH以保证原本的PATH信息不会被覆盖掉

自定义PATH是比较有用的。比如经常使用单独下载的程序,那么可以定义一个专门存放这些应用的路径,将其添加到PATH中。这样在终端下便可以直接输入程序启动命令来使用,而无需先进入到对应路径再执行,或者想方设法的将程序安装进系统了。而对于Windows,自定义路径可能不太常用,但如果有兴趣,你可以查一查安装python2.7的教程

视频点此

可以说unity桌面是我正经使用Linux后最早接触的桌面环境,也可以算是我最习惯使用的桌面环境之一。而关注unity或者ubuntu的朋友可能知道,ubuntu从18.04开始,其默认的桌面环境切换回了gnome。但在2020年出现了由一个印度小兄弟领导发布的ubuntu unity,旨在提供回原生的unity桌面体验。所以在我发现这个发行版之后,我便在unity的吸引下重新装回了放弃多年的ubuntu。但最终,我还是把ubuntu给换掉了,今天就来简单聊聊其中的原因。

一、优势

无论如何,ubuntu可能也是用户数量相当高的一个发行版,因此很多网上Debian系发行版的教程、可以搜索到的疑难解答实际上都是参照乌班图的软件仓库进行编写的,这样一来在日常使用过程中就可以有相当方便、快捷的网络支持体验。同样的,由于使用人数众多,如果一个软件想兼容Linux,那么一般来说最先得到官方适配的基本就是ubuntu无疑了。

此外,ubuntu背后有公司存在,且基于Debian衍生,所以在寿命、稳定性方面可以信任。除了LTS版本提供更长时间的支持之外,还可以加入ubuntu pro计划以获得更长的维护支持。且如果个人使用的话,这个还是免费的。

更多优势我就不说了,老生常谈。最主要的是我为什么最终换掉了它。

二、劣势

原因只有一个:snap。
Snap是ubuntu自己推出的一种软件包形式,且已经融合在ubuntu中。随着snap的逐渐完善,Ubuntu也在逐步降低对deb软件包的支持力度。而官方更是给出了将在23.10版本中加入snap商城,可能后续加入的应用程序会优先提供snap形式,再适时加入到apt仓库之中。
Snap的优势算是比较明显的,简单来讲就是类macOS组织形式,应用之间相互隔离,依赖版本冲突可以得到很好的解决。
但一个比较致命的问题:snap的服务器在国内没有镜像站点。
是的,即使不使用Linux的朋友都可以猜到个大概了:虽然可以建立连接,但速度太慢了。更不用说时不常的还需要检查并更新snap应用。这很难让人很难坚持下去。

此外,由于snap在程序启动时候相当于建立了一个虚拟的系统环境,这使得程序的启动速度相对传统的方式会减慢不少——当然,可能是因为我的Linux分区还是使用机械硬盘的缘故,如今固态硬盘这个影响可能已经不明显了。

但建立虚拟的程序环境意味着一个问题:系统所有的配置应该都可以映射过去,这样才能保证使用的过程中不会出现什么奇异的问题。但目前的snap分明没能完全顾全这一点。比如我的chrome下载文件默认的保存位置是一个轻易找不到的路径,我当时为了这个路径研究了半天文件夹之间的映射关系。如果是一个没有发现相关规律的用户使用的话,那对snap版本的chrome可能只有一个评价:这个chrome下载会把文件下丢。
另一个比较影响使用的情况:输入法。在我使用的这段时间中有两种经典情况:输入法候选列表不展示、根本无法唤醒中文输入法。这个不多解释,想想就能知道对于中文用户来说,这种程序在使用的时候会有多麻烦。

可能会有朋友说ubuntu还有其他的一些问题,比如版本号更新经常性的更坏掉、经常性的报告系统错误弹窗之类的。但这些是ubuntu在使用snap格式软件包之前就存在的一些问题。既然选择了ubuntu那么说明这些经典问题已经考虑过了,相较于unity,还是unity更香一些。但真的使用起来,发现snap异味完全覆盖过了unity的清新。

当然,snap这些问题可能也是因为unity没有完全适配好,官方版本不会出现。诚然,可能官方对snap的支持会更全面一些,但国内镜像站点不存在就是不存在,而且官方使用gnome桌面,我能有什么特殊的理由一定要选择ubuntu呢?

视频点此

一说到Linux,就一定会想到终端——无论把它看作优势还是劣势。那么这个终端相对于另外两大操作系统,有没有什么特别之处呢?

说到Linux终端的用处可以说很多,比如安装软件、更新系统、调整配置之类的。但一定程度上,另外两个操作系统的终端程序也可以拥有类似的功能。所以我一直认为Linux终端的优势在于可以快速查看程序出错的原因,这在另外两大操作系统中是比较难做到的。举一个Gnome设置崩溃的例子来看。

表现

点击gnome设置,图形界面会呈现程序启动的相关动画,但并不能展示出设置的窗口。这可以说是非常典型的启动即崩溃问题。通常在macOS和Windows中,对于这种点击后有运行迹象,但就是没有窗口的程序我们可能完全不清楚发生了什么。而对于Linux,我们可以通过终端来运行,快速查看程序到底发生了什么事。

查看原因

直接打开终端,启动gnome设置命令gnome-control-center——当然,如何找到这种启动命令可能也是一个小知识点,以后有机会的话会简单介绍一下。

此时,终端执行的优势就出来了,直接给出了错误信息:(gnome-control-center:15840): GLib-GIO-ERROR **: 13:41:26.403: Settings schema 'org.gnome.shell.app-switcher' is not installed

那么对症下药,补充这个模式就可以了。

但很不幸,这玩意儿貌似没有一个软件包或任何可以搜索到的来源包含这个玩意儿……此时终端的另一个有共识性的优势就体现出来了:直接修改配置。

gnome家族的软件多数都是用gsettings来调整配置的,图形化的软件可以参考dconf。

此时在终端中运行gsettings list-keys org.gnome.ControlCenter,可以看到其拥有的设置项,其中的last-panel,可能是记录了退出设置程序时打开的界面。联想到前一次正常打开时,是点击了多任务标签后直接崩溃的,因此推测由于last-panel记录了最后点击的标签页,再次打开设置时由于直接根据记录定位到了多任务,所以会再次漰溃进而无法启动。

为了验证,获取last-panel的值gsettings get org.gnome.ControlCenter last-panel
看到值为multitasking,确认了上述推测。因此将这个值复位应该即可解决:gsettings reset org.gnome.ControlCenter last-panel

再次打开设置,成功启动。

视频点此

如果你关注过一些国内的for Linux应用的话就会发现,它们之中很多都是通过网页版套壳实现的。对于一些有着非常完善的网页版应用来说,如此方法确实可以在很短时间内打造一款全平台兼容的本地化应用。对于这类操作,Linux下拥有一个小工具来实现——nativefier

这是一个纯粹的终端程序,一行指令即可将一个网页打包成一个全平台兼容的electron套壳应用。可以前往GitHub查看具体内容。这里只介绍基本用法。

一、安装

在很多发行版中都可以直接通过源来安装。对于openSUSE,直接通过opi nativefier即可搜索到对应的OBS源,添加安装即可。

对于源中没有这个软件的,或者Windows、macOS来说,由于此工具由nodejs编辑,直接使用npm install -g nativefier安装即可。

二、基本使用

在安装完成后,便可以直接使用了。

基础命令为:nativefier -n <打包后的应用名称> -p <程序兼容的平台> —-arch <架构> —- weight <窗口宽度> —-height <窗口高度> <网页URL>

如打包微信网页版:nativefier -n WeChat -p Linux ——arch x64 ——width 1024 ——height 768 https://wx.qq.com/

  • 如果想让程序可以后台运行,可以增加参数——tray
  • 如果不想在使用时可以调出chrome的开发者工具,可以增加参数——disable-dev-tools
  • 如果想控制程序在同一时间只能运行一个实例,则增加参数——single-instance

设置好参数后回车,第一次运行会自动获取一个electron的依赖,然后自动开始打包。打包完成的程序会放置在~/<应用名称>-<兼容平台>-<架构>/文件夹下。你可以直接在这个文件夹下执行二进制文件以启动程序,或自己编辑一个desktop文件,将这个打包好的程序“安装”到系统中运行了。

视频点此

深度更新了Deepin15.5版本之后,增加了面容识别功能。对于其他发行版,有没有可能拥有呢?这就是今天要介绍的开源程序:howdy。

如果你在深度论坛中大概浏览过的话就会发现,有些人认为深度的人脸识别功能就是将howdy内置到系统中实现的。具体怎么做的我在这里就不深究了,不过我们可以通过howdy在其他发行版中增加人脸识别这一功能。

安装在大多数发行版中都是十分简单的,我们可以参照howdy的GitHub介绍来完成:

  • 对于Ubuntu系:添加ppa源,然后通过apt安装即可
  • 对于Debian系:从GitHub的release界面下载deb包安装即可
  • 对于Arch系:通过aur安装即可
  • 对于Fedora:启用CPOR源,然后通过dnf安装即可
  • 对于openSUSE:通过opi,自动添加OBS源并安装即可

但是在实际安装过程中,我的openSUSE15.3出现了一些依赖问题,所以对于这个系统,需要进行一些额外的补充。

缺少的依赖是python3-opencv3,我们选择忽略依赖继续,将howdy包先装好。此时,howdy的部分功能是可以使用的,但最核心的识别功能不可用,所以还是需要对依赖进行补全,直接通过opi来安装即可。推荐在查询结果中选择science这个官方性质的OBS源使用,避免后期不必要的问题。

接下来就是对howdy进行配置,让howdy知道这台电脑的人脸识别设备——也就是摄像头——是哪一个。

  1. 使用文本编辑器打开/etc/lib64/security/howdy/config.ini
  2. 查找device_path一行,将等号后面的none更改为摄像头设备的路径
    a. 安装v4l-utils,这个包可以直接安装
    b. 使用命令v4l2-ctl --list-devices查看设备
    c. 记录摄像头名称对应的路径,填入配置文件即可
  3. 保存

现在,就可以尝试添加一个面容数据了。

  1. 使用命令sudo howdy add
  2. 根据提示随便输入一个模型名称(不能超过24个字符)
  3. 面向摄像头,让它认识你
  4. 你会看到“Added a new model to 你的用户名”,这就代表完成了

这时,通过sudo howdy list就可以看到刚刚录入的脸部模型了。当然,howdy也提供一些管理模型的参数,具体可以查询GitHub的介绍。

最后,就是将人脸识别加入到密码认证的步骤当中了。对于openSUSE来说,虽然不是howdy要求的依赖,但必须安装一个叫pam-python的包才能将howdy与认证联系起来。但在openSUSE15.3中,又不存在这个包,所以需要手工安装一下。

  1. 进入openSUSE官方的包搜索工具
  2. 搜索pam-python,选择ALL Distributions
  3. 进入搜索结果中,找到openSUSE Leap 15.2,点击official release中的Expert Download
  4. 打开的页面中,点击Grab binary packages directly,下载不带.src的一项
  5. 双击下载的文件安装

到此,这个负责认证的包就安装好了。接下来,就是将人脸认证接入。

相关文件全部在/etc/pam.d中,根据需要增加语句即可。这里以使用sudo命令时进行人脸认证为例。其他命令使用人脸的方法一样,只是调整一下编辑的文件即可

  1. root权限打开sudu文件
  2. 在文件最开始增加人脸认证语句
    auth sufficient pam_python.so /usr/lib64/security/howdy/pam.py
  3. 保存

此时,当使用sudo命令时,摄像头便会启动,尝试识别人脸。如认证通过,则正常执行命令,否则弹出密码输入要求,我们可以通过密码来进行认证。

不过对于openSUSE来说,使用sudo时候默认请求的是root账户密码,因此人脸也是请求的root账户的人脸。但刚刚howdy录入的人脸是我们这个账户的人脸,所以我们可以通过howdy指定用户录入功能录入root人脸信息,也可以通过修改sudoer文件,将请求的密码改成当前账户即可。