解决 Debian GPG 错误

今天对一台新机器更换了源,进行apt-get update报错:

Err:3 http://mirrors.aliyun.com/debian buster-proposed-updates InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0E98404D386FA1D9 NO_PUBKEY 6ED0E7B82643E131
Err:4 http://mirrors.aliyun.com/debian buster-backports InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0E98404D386FA1D9 NO_PUBKEY 6ED0E7B82643E131
Reading package lists... Done
W: GPG error: http://mirrors.aliyun.com/debian buster-proposed-updates InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0E98404D386FA1D9 NO_PUBKEY 6ED0E7B82643E131
E: The repository 'http://mirrors.aliyun.com/debian buster-proposed-updates InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: http://mirrors.aliyun.com/debian buster-backports InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0E98404D386FA1D9 NO_PUBKEY 6ED0E7B82643E131
E: The repository 'http://mirrors.aliyun.com/debian buster-backports InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

这是缺少必要的 GPG 公钥导致的。这些公钥用于验证从 http://mirrors.aliyun.com/debian 这个源下载的软件包的完整性。

要解决这个问题,可以按照以下步骤来添加缺少的公钥:

  1. 先安装GnuPG

    E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation

    apt install gnupg
    
  2. 找到缺少的公钥的 16 进制指纹,它们在错误消息中可以找到。在这里,这两个指纹分别是 0E98404D386FA1D96ED0E7B82643E131

  3. 使用以下命令将公钥添加到系统中:

    apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0E98404D386FA1D9 6ED0E7B82643E131
    

    这个命令会从 Ubuntu 的公钥服务器下载并添加这两个公钥到你的系统中。

  4. 接下来,你需要更新软件包列表,以便使更改生效:

    apt update
    
  5. 现在,你应该能够正常地更新和安装软件包了。

使用 GPG 密钥来验证软件包的完整性还是有必要的,可以防止恶意软件注入到你的系统中。


Mac Raycast 使用备忘

最近在使用 raycast 这个工具,纪录一些常用的场景,也会不断更新这篇文章。

一、什么是 Raycast?

Raycast 是一个在 Mac 上的启动器,能够完全取代 Alfred 和系统内置的 Spotlight 功能,以改善工作流程,提高效率。

Raycast 能够快速打开 macOS 中的任何应用程序/文件、管理窗口、多功能计算/换算、访问书签、做笔记、查找日历和提醒事项,甚至可以运行 Python 和 Bash 脚本等。很适合我们IT 管理员、开发者,或者文字工作者、视频工作者等使用。

Raycast 还支持插件扩展,Raycast 的插件和一些脚本都是开源的,因此你可以根据自己的需求在插件市场脚本仓库中找到自己想要的插件和脚本;如果在插件/脚本市场中看了一圈,没有开源项目可以满足你需要的功能,也可以自己写一个插件或者通过一些脚本(Script)满足自己的要求。

RayCast 快捷键我喜欢双击 command 使用。也可以自定义设置。

二、安装

homebrew 安装非常简单:

brew install --cask raycast

image-20230913160247556

打开设置,我修改了自定义快捷键:

image-20230919185736301

打开后界面如下:

image-20230919185705349

三、默认场景

在默认情况下,使用 Raycast 执行搜索,类似于应用搜索会作为直接展示,而文件搜索、词典、联系人、剪贴板历史属于二级功能,包括很多第三方拓展都属于二级功能入口,当需要使用二级功能的搜索,需要先在 Raycast 中敲入二级功能关键字,找到对应的功能入口进入。

1. 搜索文件/应用

直接输入即可,跟 spotlight 一样。

image-20230919190127324

搜索后用 cmd + k 可以选择不同的操作方式:

image-20230919190410698

2. 剪切板历史

还是挺有用的,可以输入clip快速到达。

可以一次性把要复制的内容都复制下来,生成几条复制历史,然后到对应的APP中取粘贴。

image-20230919185705349

image-20230919190715756

3. 计算换算

直接输入即可。可惜这些计算不支持中文:

image-20230919191258996

image-20230919191736494

image-20230919191624071

image-20230919191447273

image-20230919193227822

更多操作可以参考原文

4. 系统功能

最常用的就是锁屏了:

image-20230919191857714

image-20230919193732302

更多命令参考 原文.

5. 窗口操作

比较有用的:

  1. 占半屏: left halfright half
  2. 快速全屏: Maximize

image-20230919193304748

更多命令参考 原文

6. 管理日程、待办事项

Raycast 对接了不少第三方应用的功能服务,也包括 macOS 系统自带的日程查看以及待办事项管理,这些所能实现的操作在设置中都可以直接看到,可手动选择关闭。

给创建事项设置了一个alias叫todo

image-20230919200832104

7. 悬浮便签

image-20230920090056033

可以调色

image-20230920090243078

8. 应用卸载

image-20230921120742245

image-20230921120751709

四、配置界面

打开 raycast 后,cmd+,可以快速打开配置:

image-20230919194050502

导出配置

非pro用户可以导出配置:

image-20230920090528458

快捷键

image-20230921114504217

五、插件

输入store,输入插件名称回车进入详情,回车安装。

image-20230920165338742

六、自定义

自定义快速链接

这里做一个简单的快捷配置,我基于 google 创建一个我 blog 的搜索链接:

image-20230919195201064

link内容为:

https://google.com/search?q=site:blog.kelu.org+{Query}

搜索界面:

image-20230919195256109

还有快速打开文件夹等:

image-20230926153006669

自定义脚本

可以参考这篇文章,有详细说明:《极具潜力的效率启动器 App,Raycast 脚本功能详解》

1. 创建脚本

image-20230921121615983

image-20230921130329890

Mode(运行模式)的话分为4种:

  • fullOutput:命令在单独的视图中打印整个输出。
  • compact:命令在 Raycast 窗口下方运行并打印结果。
  • silent: 命令关闭 Raycast 窗口并在后台运行。
  • inline:将脚本设置为以刷新仪表板的方式显示,支持配置参数 refreshTime。

我选择了常用的 compact。新建好脚本后,直接在脚本上修改即可。

2. 修改脚本

我写了一个 Jekyll 常用的脚本,将英文句子的大写转成小写,再用-代替空格,然后把句子输出到剪切板里去,这样一个脚本。如下:

#!/bin/bash

# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title lower case with separator
# @raycast.mode compact

# Optional parameters:
# @raycast.icon 🤖
# @raycast.argument1 { "type": "text", "placeholder": "请输入英文句子" }

# Documentation:
# @raycast.description 大写转小写 和 - 分隔符
# @raycast.author kelvinbloodzz
# @raycast.authorURL https://raycast.com/kelvinbloodzz

# echo $1 | pbcopy
#

# 去掉换行回车
cleaned_sentence=$(echo "$1" | tr -s '\n' ' ')
# cleaned_sentence=$(echo "$input_sentence" | tr -d '\n\r')

# 去掉首尾多个空格
cleaned_sentence=$(echo "$cleaned_sentence" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')

# 将句子转换为小写并替换空格为破折号
formatted_sentence=$(echo "$cleaned_sentence" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')

# 输出结果
echo $formatted_sentence

echo $formatted_sentence | tr -s '\n' ' ' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | pbcopy

3. 运行命令

image-20230921131357488

image-20230921131333363

六、参考资料

七、年度总结

这个界面还蛮好看的!喜欢。

image-20231214173720612

image-20231214173734446

image-20231214173820343

image-20231214173828530


将 iPad 设置为 Mac studio 的唯一显示器

最近拿着我的 Mac studio 移动办公。是的,移动办公2333333。 手头上有两台iPad pro 12.9,实在没必要整便携屏了。这篇记录如何完成。

真的希望MacOS和iPadOS可以原生支持iPad外接当唯一显示器呀。

本方法在我目前 MacOS 13下OK,全免费。

1. Mac打开远程管理

设置 -> 通用 -> 共享:

image-20230914150625343

打开远程管理:

image-20230914150841689

类似如下配置,不用修改。

image-20230914150914310

2. iPad/iPhone 使用 vnc 访问局域网Mac

下载 vnc 软件

image-20230914151319042

查看局域网的Mac。如果有iPhone手机就比较方便,iPhone 可以给 Mac 共享网络,iPhone 上的vnc的Bonjour上一定有Mac studio的vnc的连接。

image-20230914151156159

点击进入,输入账号密码。登录。

其实到这里已经可以使用了。但是由于使用的是网络🛜通讯,所以效果并不太好。如果是5G的Wi-Fi还是可以接受,2.4G的话就确实有点卡了。最好的办法还是通过有线的方式。所以引出了第二个软件:

3. duet

Mac下和iPad下都需要下载 duet

Mac下:

image-20230913193327973

iOS下:

image-20230914152152400

进行一次typec插拔,连接上后就自动完成了,

image-20230914152259001

最后效果如下:

1011694676370.pic

有一个注意事项,就是使用 iPad 官方的 Magic Keyboard 无法输入中文。

我猜测是iPad使用了什么不标准的输入方式,而 Duet 没有适配这种输入方式。最后换回了传统的 Magic keyboard 直连 Mac studio,iPad 纯粹作为显示屏。


Mac 访问 局域网内的 Windows 7 共享文件夹

网上搜出来的大多是 smb 共享之类的。而我这台 Windows 7 比较古老,系统没有SMB支持。这里简单记录下共享办法:

  1. 进入【控制面板】-【网络和共享中心】-【高级共享设置】

    image-20230926122038065

    image-20230926122046357

  2. 启用网络发现

  3. 启用文件和打印机共享

  4. 选择要共享的文件或文件夹,点击【共享】-【特定用户】

  5. 选择Windows7当前登录的用户,点击【共享】

    image-20230926122114561

    image-20230926122121982

在 MacOS上

  1. 打开Finder

  2. 点击左侧【网络】

  3. 在列表中可以发现已经共享的Windows7主机名字

    image-20230926122343022

    如果刚刚配置还没有,就再等等看~~~ 我这里等了将近10分钟才有显示,不确定是什么原因。

  4. 主机名进入,然后点击右上角【连接身份】

  5. 按提示输入Windows7用户的用户名密码登录即可

  6. 连接成功后可以看到Windows7用户的主目录以及共享的目录

    image-20230926122243829

参考资料


Windows 局域网内共享文件夹

  1. 右键单击要共享的文件夹,选择“属性”

  2. 切换到“共享”选项卡,然后单击“高级共享”选项。

    打开文件高级共享

  3. 勾选“共享此文件夹”,然后单击“权限”授权.

    选择共享并设置权限

  4. 点击“添加”,选择本机的某个用户,只要输入用户对象名称并点击“确定”。可以选择“完全控制”“更改”“读取”

    设置用户权限

  5. 在目标电脑上,在文件管理器的地址栏目输入\\+计算机名或源计算机的IP地址,例如\\192.168.0.55。按回车。

    也可以在“文件资源管理器” > “网络”中找到。

    如果有诸如“网络发现已关闭”之类的错误消息,单击“网络发现已关闭”横幅,然后选择“启用网络发现和文件共享”

    image-20230913191231659

    image-20230913193240219

  6. 脱机使用

    找到共享文件夹,右键单击并选择“始终脱机可用”

    image-20230913193327972

  7. 端口打开(非必需)

    我在上述成功的基础上,由于网络发生了一些变化,其中一台电脑挪到了路由器的后边,另一台仍在原来的局域网里,尝试按照下面的方式去做,没有成功。这里只做个记录。

    如果使用了路由器,需要打开这些端口:

    • tcp:135,445
    • udp: 137,138

    image-20230926100925713

    image-20230926100959320

    查了网上的资料,还有136,139端口。

    但我发现好像都不行。我猜测是默认的共享IP有问题。需要自定义监听IP的估计要用SMB?随他去了,目前暂时还不需要了。


Mac 共享网络给iPad

办公室的Wi-Fi总是不太稳定,因为经常用typec连着Mac充电,所以可以直接让iPad使用Mac的网络:

  1. 设置 -通用-共享

    image-20230926153117292

  2. 点击互联网共享的❕:

    选择Wi-Fi,下边选择iPad USB。当然也可以选择其他需要共享的端口。

    image-20230926153304961

  3. 打开开关,关掉iPad的Wi-Fi,就完成了。