分类 技术 下的文章

我们做了一次尝试,使 LibreOffice 套件看起来像微软 Office。能做到吗?让我们来看看。

LibreOffice 是一个自由开源的办公生产力套件,它向你提供了一套完整的应用程序集合。它包含文字处理器(Writer)、电子表格程序(Calc)、演示程序(Impress)和 绘图程序(Draw)。它还为你提供了一个独立的数据库系统(LibreOffice Base),以及 LibreOffice Math 是一个帮助学生、研究人员编写公式和方程的程序。

然而,广泛使用的 微软 Office 是一个付费的办公生产力套件,提供了优秀的程序来完成几乎所有的关于学习、办公和企业应用的任务。

这两组程序套件是不同的,但是它们在功能方面的目标是相同的。由于它的流行,微软 Office 被广泛的使用,并被使用者熟知。不过,这里有很多使用者更喜欢免费的 LibreOffice 来支撑他们的工作和活动。与微软 Office 相比,采用 LibreOffice 有时会很困难 —— 尽管大多数的菜单项和工具都是一样的。

尽管如此,如果你可以使 LibreOffice 看起来像微软 Office ,那么,对于初次使用 LibreOffice 的用户来说会更容易接纳,他们大多数是有使用微软 Office 的经历背景的用户。外观和感受在用户的头脑中起着重要的作用,也包含他们的肌肉记忆和对颜色、菜单项的熟悉度。

当然,你不可能使它完全像微软 Office,因为它们使用了不同的图标、字体等等。不过,你可以将其微调到一定程度。

使 LibreOffice 看起来像微软 Office

这篇指南是以 LibreOffice 7.2(开发版)版本为基础所编写的。

1、用户界面的变化

LibreOffice 有一个名为“标签栏” 的 “ 功能区 Ribbon ” 式工具栏。尽管它带有多种工具栏变体(如下)。但是,对于这篇指南,我使用 标签式 Tabbed 工具栏选项。

  • 打开 LibreOffice 并转到 “ 菜单 Menu > 视图 View > 用户界面 User Interface ”。
  • 从 UI 部分中选择 “ 标签式 Tabbed ” 。

tabbed bar option

  • 点击 “ 应用于全部 Apply to All ” 。LibreOffice 也提供一个选项,可以将特定的工具栏样式应用到 Writer 或 Calc。如果你想要一种不同的工具栏样式,你可以选择这种方法。但是,我推荐使用应用于全部来使其保持一致。
  • 现在,你已经有了微软 Office 样式的功能区。尽管它们并不是完全相同,但是你也能体会到它的感受。

2、适用于 LibreOffice 的微软 Office 图标

工具栏中的图标在你的工作流中起着重要的作用。LibreOffice 为你的工具栏提供一些漂亮的图标。其中最好的一些是:

  • Karasa Jaga
  • Colibre
  • Elementary

针对这篇指南,我们将使用 Office 2013 图标集,它是由一名作家开发的,可以在 Devian Art 中获得。

  • 转到下面的链接并下载 LibreOffice 扩展文件(*.oxt),对于 LibreOffice 的较新版本,你需要使用扩展文件来安装图标集。
+ [下载适用于 libreoffice 的 Office 2013 图标集](https://www.deviantart.com/users/outgoing?https://1drv.ms/u/s!ArgKmgFcmBYHhSQkPfyMZRnXX5LJ)
  • 在下载后,双击 .oxt 文件来将其打开。或者,按下 CTRL+ALT+E 组合按键来打开扩展管理器,并使用 “ 添加 Add ” 按钮来选择已下载的 .oxt 文件。在完成后关闭窗口。

Import icon sets in Extension Manager

  • 现在,转到 “ 工具 Tools > 选项 Options > 视图 View ”。从“ 图标样式 Icon Style ”中选择 “Office 2013” 。
  • 通过 “ 图标大小 Icon Size > 笔记本栏 Notebookbar > Large ” 来更改图标大小。如果你感觉图标有点小,你可以更改它们。不过,我觉得要使它更像 Office ,将图标设置的较大一点的效果会更好。

Change icons in Options

就这样,你的 LibreOffice 应该看起来像这样:

在 KDE Plasma 中让 LibreOffice 看起来像微软 Office

在 Windows 10 中让 LibreOffice 看起来像微软 Office

在 GNOME 中让 LibreOffice 看起来像微软 Office

注意,如果你正在使用 Ubuntu、KDE Plasma,或者任何 Linux 发行版,它们的外观可能会有所不同。但是,在我看来,在 KDE Plasma 中比在 GNOME 中看起来更像微软 Office 。LibreOffice 目前在基于 GTK 的系统中看起来并不太好。

不过,在 Windows 中,它看起来会更像,因为它使用同一个系统的字体和颜色面板。

这些是你可以使用的一些设置,不过,你可以随心所欲地自由调整更多的定制、图标和主题。如果你喜欢 LibreOffice 的深色模式,你可能想要阅读我们的教程 – 如何在 LibreOffice 中启用深色模式

结束语

微软 Office 毫无疑问是办公生产力领域的市场领导者。这是有原因的,它来自数十年的开发。它不是免费的产品,事实上,最新的 Office 365 家庭版本的价格大约是 7 美元/月,可以在 3 到 4 台设备上使用。在我看来,它有点小贵。

然而 LibreOffice 是免费的,由文档基金会领导的社区开发。因此,开发速度较慢、功能出现也较晚。它并不是要成为微软 Office ,而是要给数以百万计的用户、学校、非营利组织、高校、学生一个使用免费办公套件工作和学习的机会。

因此,如果它能够模仿基本的外观和感受,使其像微软 Office 一样,从而调高 LibreOffice 的使用率,那将是有益的。我希望这篇指南能在这个方向上能起到一点作用。


via: https://www.debugpoint.com/2021/06/libreoffice-like-microsoft-office/

作者:Arindam 选题:lujun9972 译者:robsean 校对:wxy

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

首先在 Java 中创建初始化一个整数列表,然后在 Groovy 中做同样的事。

 title=

我非常喜欢 Groovy 编程语言。我喜欢它是因为我喜欢 Java,尽管 Java 有时候感觉很笨拙。正因为我是那么喜欢 Java,其他运行在 JVM 上语言都不能吸引我。比方说 Kotlin、Scala 还有 Clojure 语言,它们感觉上就和 Java 不一样,因为它们对于什么是好的编程语言的理解不同。Groovy 和它们都不一样,在我看来,Groovy 是一个完美的选项,特别是对于一部分程序员来说,他们喜欢 Java,但是又需要一个更灵活、更紧凑,并且有时候更直接的语言。

列表 List 这种数据结构是一个很好的例子,它可以容纳一个无序的列表,列表中的元素可以是数字、字符串或者对象,程序员可以用某种方式高效地遍历这些元素,特别是对于编写和维护脚本的人来说,“高效”的关键就是要有简洁清晰的表达,而不需要一大堆“仪式”,把代码的意图都变模糊了。

安装 Java 和 Groovy

Groovy 是基于 Java 的,因此需要同时安装一个 Java 才行。你的 Linux 发行版的仓库中可能有最近的比较好的 Java 版本。或者,你也可以在根据 这些指导 来安装 Groovy。对于 Linux 用户来说,SDKMan 是一个不错的代替选项,你可以使用它来获取多个 Java 和 Groovy 版本,以及许多其他的相关工具。在这篇文章中,我使用的 SDK 发行版是:

  • Java: OpenJDK 11 的 11.0.12-open 版本
  • Groovy: 3.0.8 版本

言归正传

Java 中有很多方法可以实例化并初始化列表,从它最初被引入的时候就有了(我记得是在 Java 1.5 的时候,但请不要引用我的话)。在这些方法里,有两个有趣的方法,它们涉及到了 java.util.Arraysjava.util.List 这两个类。

使用 java.util.Arrays 类

java.util.Arrays 类定义了一个 asList() 静态方法,它可以被用来创建一个基于数组的列表,因此大小是不可变的,尽管其中的元素是可以被修改的。下面是它的使用方式:

var a1 = Arrays.asList(1,2,3,4,5,6,7,8,9,10); // immutable list of mutable elements

System.out.println("a1 = " + a1);
System.out.println("a1 is an instance of " + a1.getClass());

// output is
// a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// a1 is an instance of class java.util.Arrays$ArrayList

a1.set(0,0); // succeeds
System.out.println("a1 = " + a1); // output is
// a1 = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]

a1.add(11); // fails producing
// Exception in thread "main" java.lang.UnsupportedOperationException
System.out.println("a1 = " + a1); // not reached

使用 java.util.List 类

java.util.List 类定义了一个 of() 静态方法,它可以被用来创建一个不可变的列表,其中的元素是否可变要取决于它们本身是否支持修改。下面是它的使用方式:

var a2 = List.of(1,2,3,4,5,6,7,8,9,10);

System.out.println("a2 = " + a2);
System.out.println("a2 is an instance of " + a2.getClass());

// output is
// a2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// a2 is an instance of class java.util.ImmutableCollections$ListN

a2.set(0,0); // fails producing
// Exception in thread "main" java.lang.UnsupportedOperationException
System.out.println("a2 = " + a2); // not reached

a2.add(11); // also fails for same reason if above two lines commented out
System.out.println("a2 = " + a2); // not reached

因此,我可以使用 Arrays.asList(),也可以使用 List.of() 方法,前提是如果我想要的是一个大小不能改变、且不关心元素是否可变的列表。

如果我想要初始化一个可变的列表,我更倾向于把这些不可变的列表作为参数传给一个列表构造器,就像下面这样:

var a1 = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));

System.out.println("a1 = " + a1);
System.out.println("a1 is an instance of " + a1.getClass());

// output is
// a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// a1 is an instance of class java.util.ArrayList

a1.set(0,0);
System.out.println("a1 = " + a1);

//output is
// a1 = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]

a1.add(11);
System.out.println("a1 = " + a1);

// output is
// a1 = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

注意,这个 Arrays.asList() 方法是用来初始化这个新的 ArrayList<Integer>() 的,也就是说,它为这个传进来的列表创建了一个可变的拷贝。

现在,或许只有我这么想,但是这种方式确实看起来需要理解很多关于 java.util.Arraysjava.util.List 类的细节才行,而我只是想要创建并初始化一个数字列表而已(尽管真正使用到的语句并没有太多“仪式”)。下面是真正用到的那行代码,仅供参考:

var a1 = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5,6,7,8,9,10));

Groovy 是怎么做的

下面来看看在 Groovy 中如何实现上述需求:

def a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

println "a1 = $a1"
println "a1 is an instance of ${a1.getClass()}"

// output is
// a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// a1 is an instance of class java.util.ArrayList

a1[0] = 0
println "a1 = $a1"

// output is
// a1 = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]

a1 << 11
println "a1 = $a1"

// output is
// a1 = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

我们一眼就能发现,Groovy 使用了 def 关键字而不是 var 关键字。我还发现了,仅仅是把一系列的类型(在这个例子里是整数)放进括号里,我就得到了一个创建好的列表。此外,这样创建出来的列表完全就是我想要的:一个可变的 ArrayList 实例。

现在,或许再一次只有我这么想,但是上面的代码看起来要简单多得多 —— 不用记住 .of().asList() 返回的是“ 半不变 semi-mutable ”的结果,也不用为它们做一些补偿。另外一个好处是,我现在可以使用括号和下标来引用列表中的某个特定元素,而不用这个叫 set() 方法。另外,这个跟在列表后面的 << 操作符也很方便,我再也不用调用 add() 方法来添加元素啦。还有,你注意到代码中没有分号了吗?没错,在 Groovy 里,句末的分号并不是必须的。最后,我们来看看字符串插值,只要在字符串里用 $变量 或者 ${表达式} 就可以实现了哦!

在 Groovy 世界中还藏着许多“有待发掘”的东西。上面的列表定义其实是一个动态类型(Groovy 中默认)和 Java 中的静态类型的对比。在上面的 Groovy 代码定义的那一行,变量 a1 的类型是在运行的时候,根据等号右边的表达式的计算结果推断出来的。现在我们都知道,动态语言可以给我们带来强大的功能,有了强大的功能,我们有了很多机会去尝试不同的东西。对于那些不喜欢动态类型的程序员来说,Groovy 也支持静态类型。

Groovy 相关资源

Apache Groovy 网站上有非常多的文档。另一个很棒的 Groovy 资源是 Mr. Haki。学习 Groovy 还有一个很棒的原因,那就是可以接着学习 Grails,后者是一个优秀的、高效率的全栈 Web 框架,基于许多优秀组件构建而成,比如有 Hibernate、Spring Boot 和 Micronaut 等。


via: https://opensource.com/article/22/1/creating-lists-groovy-java

作者:Chris Hermansen 选题:lujun9972 译者:lkxed 校对:wxy

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

如果你问那些极客系统管理员,他们会肯定的说使用 rsync 或者 scp 命令在远程服务器和本地系统之间传输文件

然而,这些都是命令行方式,并不是每个人都能用起来感到舒适。

谢天谢地的是,有一些图形化工具能够让你从远程服务器来传输文件。

FileZilla 是一个流行的、跨平台的传输文件为目的开源软件。它支持使用通过 TLS 或者 SSL 加密的 FTP 协议(FTPS),也支持借助 SSH 的 FTP 协议,以及旧的 FTP 协议。

让我展示怎样在 Linux 上安装 FileZilla 然后用它来文件传输。

那么,让我们开始吧!

在 Ubuntu 和其他 Linux 发行版上安装 FileZilla

你可以使用源码来安装,但是还是建议使用你的发行版提供的软件包。因为它是一个热门软件,它应该在许多 Linux 发行版(即便不是全部)的软件仓库中可用。请使用你的发行版的软件中心和包管理器来安装。

在 Ubuntu 上,你可以从软件中心来安装它:

FileZilla is available in the Ubuntu Software Center

你也可以使用命令行的方式来安装它:

sudo apt install filezilla

如果你看到 软件包不存在的错误,你应该 开启 Universe 仓库

一旦安装成功,打开菜单(通过按 Super 键),键入 “FileZilla”来启动它。

Start FileZilla from the system menu

使用 FileZilla

第一次使用 FileZilla 时,你将会看到如下图所示的一个界面:

Screenshot of FileZilla running

左边窗口显示来自你本地系统的文件和目录。右边窗口显示目前是空的。当你连接到远程服务器时,来自你的远程系统的文件会显示在这里。

在我向你展示之前,让我分享一下关于理解 FileZilla 图形界面重要方面的一些细节。

了解 FileZilla 图形界面

下图总体上给你展示了 FileZilla 窗口布局的不同部分。

FileZilla Window Layout | image credit

图形界面由 6 个不同的区域/窗口来组成。让我简短的给你解释一下:

1、工具栏:它有许多选项,如打开站点管理器、刷新本地和远程目录文件和文件列表、开始处理当前的文件传输队列、停止正在传输的任务并取消队列中的文件,等等。

2、快速连接栏:顾名思义,它允许你快速连接到一个远程站点,除了主机名、用户名、密码和端口之外,不需要指定更多细节。

3、消息日志:它显示了一个日志,不论你连接成功与否。错误消息标记为红色,正常消息为白色,命令是蓝色。

4 & 5、本地窗口和远程窗口:这两个窗口非常相似,除了本地窗口显示本地目录内容,并且有用来上传文件的上下文菜单;而远程窗口显示的是远程目录的内容,并有从远程目录下载到本地文件的选项。

6、传输队列:最后,传输队列窗口显示正在传输的项目的状态和它们的传输速度,以及队列中的文件和传输历史(仅限当前实例)。

使用 FileZilla 连接到 SFTP 服务器

你需要知道远程服务器的用户名、密码和 IP 地址。远程服务器也应该被设置成能够接受以这些信息进行的连接。你还需要在目标文件夹有正确的权限设置。

要新增一个 SFTP 连接,你需要打开站点管理器。有两种方式可以打开它。

在菜单栏上的“ 文件 Files ”菜单选项下有一个“ 站点管理器 Site Manager ”。或者,你可以直接点击工具栏上的“站点管理器”图标。

the Site Manager button on the toolbar

一旦站点管理器对话框弹出,点击“ 新站点 New site ”按钮,并(可选地)重命名添加到条目中的新站点。我叫我的站点为“test8”。

screenshot of the Site Manager

在右侧的“ 常规 General ”标签下,确保所使用的协议与服务器管理员为你设置的相一致。在我的例子中,我设置了一个 SFTP 服务器( 借助 SSH 通道的 FTP FTP over SSH ),因此我选择了“ SFTP - SSH 文件传输协议 SFTP – SSH File Transfer Protocol ”。

下一个字段填写远程服务器的 IP 地址。

如果你没有设置“ 端口号 Port ”,FileZilla 将假定要使用的端口号为缺省的 SSH 协议的 22 端口。

登录类型 Logon Type ”下拉列表有几个选项。在“ 常规 Normal ”登录方式下,你只需要提供用户名和密码。

如果你设置了一对公钥和私钥来验证你的 SSH 用户连接,那么可以使用“ 密钥文件授权 Key file authentication ”方式。

一旦你为远程服务器和认证填写了所有适当的细节,就可以点击底部的“ 连接 Connect ”按钮连接到站点。别担心,你刚刚建立连接的新站点将会按“登录类型”保存起来。

Remote pane being populated after a successful connection

如果你看到一个 “连接到 <主机 IP 地址>” 的状态消息,并且最近的状态消息是 “目录列表 "/" 显示成功”,说明你已经成功的连接到了远程的 SFTP 服务器(使用 SSH 协议的 FTP)。

另一个 SFTP 连接成功的标志是,当连接成功建立的时候,远程目录窗口有了很多消息。

发送文件到远程系统

你必须 确保你位于要传输文件的目录里。传输文件非常简单,只需双击文件,无需指定指定目标位置。

如果你在左边窗口双击了一个文件,它立即传输到右边科技的目录里(或者有传输任务的话,加到队列中)。

同样,从右边窗口到左边窗口也是一样双击,即从远程服务器到本地。这就是为什么本地和远程系统都要在正确的位置是非常重要的原因

此外,你也可以鼠标右击文件上传它们(或者加它们到上传队列)。目标位置总是 FileZilla 界面中显示的目录。

Transfer queue pane showing the local file name, remote destination, transfer speed and an ETA

除了方便和快捷方面,这两种上传的文件方式没有什么不同。

下载远程系统中的文件

像上传文件一样,当从远程服务器传输文件到本地时也有两种方式,但不是“上传”而是“下载”。

下载的文件将放在本地目录窗口中,也就是你当前打开的本地窗口。

你将会注意到除了发送方和接收方不同之外,下载和上传文件的行为是一样的。除非连接数受到限制,否则文件传输将是并行进行的。

总结

厉害!有了这些基础知识,你应该能够在你的计算机和服务器之间传输文件。我希望你能够学到一些新东西 : )

如果你感到这些对你有帮助,随意在评论部分留下你的问题、建议或简单的一句 “thank you”。


via: https://itsfoss.com/filezilla-ubuntu/

作者:Pratham Patel 选题:lujun9972 译者:hwlife 校对:wxy

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

Penkesu 电脑:一个自制的复古式手持 Linux 电脑。

你是否曾希望有一台适合你手持的、带有键盘的 Linux 笔记本电脑?如果是这样,那么你幸运了。一位硬件设计师创造了这样一个设备,并将其设计开源,让任何人都可以在家里制作它。

它是什么?

Penkēsu 电脑(Penkēsu 是日语中“铅笔盒”的意思)是由 Penk Chen 设计的。如果这个名字听起来很熟悉,他就是 CutiePi 背后的设计师。

根据该网站称,Penk 创建这个项目是因为:

自从 CutiePi 平板电脑成功获得了资金并开始发货后,我觉得有必要干一个新的项目,一个我不需要太担心商业可行性、并提醒自己做手工的初衷的项目。可以说,这是一个“反弹”项目。

他还说,他目前没有任何大规模生产 Penkēsu 的计划,所以他把该规划开源了。“我想公布所有的设计和规划,这样就可以给任何有兴趣制作一个的人足够的信息。”

零件

Penk 围绕一个 7.9 英寸的触摸屏和一个定制键盘设计了 Penkēsu。内部结构由树莓派 Zero 2 W 和锂聚合物电池供电。树莓派 Zero 2 W 有一个 1GHz 的 ARM 四核 ARM Cortex-A53 处理器和 512MB 的内存。花上 15 美元,这块树莓派应该可以运行大多数为它设计的 Linux 发行版。

有趣的是,Penk 说,“我的 3D 打印机不够精确,无法打印出一个功能齐全的铰链锁”。因此,他决定使用来自任天堂 GBA SP 的替换铰链。

看起来最困难的部分是键盘,这涉及到一个定制的 PCB。Penk 确实注意到,“如果希望使用其他 40% 键盘来制作,可以通过编辑 CAD 文件和调整机箱中的隔间大小来完成”。

以下是所需零件的完整清单:

  • 显示器

    • 微雪 7.9 英寸电容式触摸屏
    • Adafruit DIY HDMI 电缆部件 - 直角适配器、Mini-HDMI 适配器和 20 厘米带状电缆
  • 外壳

    • GBA SP 替代铰链
    • 3D 打印部件(STL 文件和 STEP 文件)
  • 电子产品

    • 树莓派 Zero 2 W
    • 3.7V 606090(或类似尺寸)锂聚合物电池
    • Adafruit PowerBoost 1000C
  • 键盘

    • 凯华 Choc 矮轴 V1 x 48
    • MBK Choc 矮轴键帽 x 48
    • 1N4148 二极管 x 48
    • Arduino Pro Micro x 1
    • PCB x 1(gerber 文件和 QMK 固件)

详见 网站 的完整细节。

你用树莓派做了什么项目?请在下面的评论中分享。


via: https://news.itsfoss.com/penkesu-handheld-linux-pc/

作者:John Paul 选题:lujun9972 译者:geekpi 校对:wxy

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

不要急着丢弃那台旧树莓派,这个详细步骤的指南展示了我怎样用最小化设置来充分利用我珍贵的树莓派系统资源。

 title=

最近,我的 树莓派 上的 microSD 储存卡不工作了。它已经作为服务器持续使用将近两年了,这为我提供了一个开始探索和修正问题的好机会。在初始化安装完成以后,它开始出现一些磁盘方面的问题,并且官方的树莓派操作系统发布了一个有重大意义的更新(并从 Raspbian 更名为 树莓派操作系统 Raspberr Pi OS )。所以我买了一个新的储存卡并开始重装。

尽管树莓派 3B 不是最新的硬件,但对于运行多样化服务的最小化的服务器还是足够的。我认为我之前的安装使用了完整的安装镜像,包括了图形用户界面和许多其他的软件包是没有必要的。

这个详细步骤的指南展示了我怎样用最小化设置来充分利用我珍贵的树莓派系统资源。

开始

首先,要为树莓派创建一个新的系统驱动器。这需要两样东西:系统镜像文件和一张 microSD 储存卡。

下载树莓派系统镜像文件

虽然有好几种操作系统可供选择,但我坚持选择树莓派官方支持的系统。

第一步是从 树莓派操作系统 官方网站上下载最新的系统镜像文件到计算机,然后后写入储存卡。他们提供了三个不同的镜像,我选择了精简版。它是最小化的操作系统,只包含基本系统必要的文件,所以它占用最少的磁盘空间和系统内存。(当我下载系统的时候,发布日期是 2020 年 8 月 20 日,但是它现在肯定已经更新了。我觉得不会有什么巨大不同,但是我建议读一下发行说明。)

将树莓派系统镜像写到储存卡

第二步是写下载的系统镜像到储存卡。我的卡之前用过,当我把它插入我的 Linux 桌面计算机之后,它自动加载了两个存在的分区。在我卸载这两个分区前,我不能写入镜像。

要这样做,我必须得用下面的 lsblk 命令来确定它们的路径,经确定,该设备路径为 /dev/mmcblk0

# lsblk -p

我用 umount 命令卸载了这两个分区:

# umount /dev/mmcblk0p2
# umount /dev/mmcblk0p1

一旦分区被卸载,就可以将镜像文件写入到储存卡了。尽管有许多图形化的写入工具,我还是习惯是用古老的 dd 命令:

# dd bs=4M if=/home/alan/Downloads/raspios/2020-08-20-raspios-buster-armhf-lite.img of=/dev/mmcblk0 status=progress conv=fsync

启动树莓派

你只需要一个显示器、键盘、电源适配器来使用树莓派。我还有一个以太网网线用于网络连接,相比无线网络,我更喜欢通过网线来连接一个专用的服务器。

插入储存卡并打开树莓派的电源。一旦成功启动,用默认的缺省密码来进行登录:用户名 pi,密码raspberry

系统设置

按照以下步骤尽可能最小化设置磁盘空间、内存使用等。我建议尽可能的花时间研究每个配置,使之尽量正确。通常有几种应用配置的方法,有些配置文件和选项可能会被丢弃,所以要查看产品文档确保你没有应用过时的配置。

运行 raspi-config

树莓派系统的主设置程序叫做 raspi-config。登录以后立即运行它:

# raspi-config

 title=

它出现了一个扩展根文件系统的选项,可以利用储存卡上所有可利用的空间。选择这个选项之后,重启并重新登录。

df 命令来验证储存卡的总容量是否被完全使用:

# df -h

如果你需要设置其他选项,请再次运行 raspi-config。它们中的一些选项可以根据你的偏好和配置进行变化。仔细检查所有这些选项,确定没有任何遗漏。为了获得最佳性能,我建议做以下调整。(我跳过了一些我们没有做任何变化的选项。)

  • 系统选项 System options :在此你可以设置主机名,最好使用完全限定的域名(FQDN)。你也能在这里更改你的密码,这始终是强烈建议的。
  • 接口选项 Interface options :开启 SSH 服务。
  • 性能选项 Performance options :将 GPU 内存减少到最低值(16MB)。
  • 本地化选项 Localization options :选择你的时区、位置、键盘类型。
  • 高级选项 Advanced options :这个选项包括扩展根文件系统的选项。如果你在上面没扩展,一定要在这里做。这样你可以访问储存卡上的所有可用空间。
  • 更新 Update :进入更新选项会立即检查 raspi-config 工具是否有更新。如果更新可用,它将被下载并应用,raspi-config 将在几秒钟后重启。

一旦你在 raspi-config 中完成这些配置,选择“ 完成 Finish ”退出该工具。

手动配置

我还建议几个其他更改,它们全都要求编辑某种配置文件来手动更改设置。

设置静态 IP 地址

一般来说,最好用静态 IP 地址设置服务器。通过 ip 命令来验证网络接口,并设置 IP 地址和你的缺省网关(路由器)和域名服务(DNS)地址:

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether b8:27:eb:48:3f:46 brd ff:ff:ff:ff:ff:ff

你还需要知道你的缺省网关和一个及以上的 DNS 服务器地址。将这些信息添加到 /etc/dhcpcd.conf 配置文件中(我强烈建议更改之前对这个文件做一个备份):

# cd /etc
# cp -a dhcpcd.conf dhcpcd.conf.original

按照以下来编辑文件:

# vi dhcpcd.conf

# static IP configuration:
interface eth0
static ip_address=192.168.1.5/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.3 192.168.1.4
关闭 IPv6 协议

除非你有特别需要使用 IPv6,否则你可能倾向于禁用它。为此,你可以创建两个新文件,其中包括一个单行指令,指示 Linux 内核不要使用 IPv6。

首先,创建 /etc/sysctl.d/disable-ipv6.conf 文件,其中包含一行指令:

# cd /etc/sysctl.d
# echo "net.ipv6.conf.all.disable_ipv6 = 1" > disable-ipv6.conf

然后创建 /etc/modprobe.d/blacklist-ipv6.conf 文件包含一行指令:

# cd /etc/modprobe.d
# echo "blacklist ipv6" > blacklist-ipv6.conf
关闭 Wi-Fi、蓝牙和音频

我的服务器的具体用途并不需要蓝牙和音频,同时,它用以太网连接,并不使用无线(Wi-Fi)。除非你计划用它们,否则按照以下步骤来关闭它们。

/boot/config.txt 这个文件做以下更改(再次强调,我建议为这个文件做个备份):

# cd /boot
# cp -a config.txt config.txt.original

加入以下两个指令到文件底部来禁用蓝牙和 Wi-Fi:

  • dtoverlay=disable-bt
  • dtoverlay=disable-wifi

这些 echo 命令就可以完成:

# cd /boot
# echo "dtoverlay=disable-bt" >> config.txt
# echo "dtoverlay=disable-wifi" >> config.txt

要关闭音频,更改 dtparam=audio 的参数为 off。你可以用一个简短的命令 sed 来完成:

# sed -i '/dtparam=audio/c dtparam=audio=off' config.txt

最后一步是禁用 Wi-Fi 服务,用 systemctl mask 命令来操作:

systemctl mask wpa_supplicant.service

如果你不需要其他服务的话,也可以禁用它们:

  • 禁用调制解调器服务:systemctl disable hciuart
  • 禁用 Avahi 守护进程:systemctl disable avahi-daemon.service

最后一步

检查你的内存使用量:

# free -h

我震惊了:我的系统只用了 30MB 的内存。

创建个人账户:建议为登录这台服务器的个人创建用户账户。你能分配他们到 sudo 组允许他们运行管理命令。举个例子,创建一个用户名为 George 的一个账户。

# adduser george
# usermod -a -G adm,sudo,users george 

进行更新:这是一个重要的步骤。应用更新来获取树莓派操作系统的最新修复。

# apt update
# apt full-upgrade

重启:重启你的新服务器是一个好主意:

# systemctl reboot`

安装 Cockpit:你可以在树莓派系统上安装著名的 Linux Web 控制台 Cockpit,它提供了一个基于 HTML 界面来远程管理和监控你的服务器。我最近写了一篇 Cockpit 入门 的文章。用这个命令来安装它

# apt install cockpit

现在我的树莓派服务器已经准备好托管服务器了,我能用它来做 网页服务器VPN 服务器Minetest 等游戏服务器,或者就像我做的基于 Pi-Hole 的广告屏蔽器

保持旧硬件的活力

不论你有什么硬件,仔细地精简并控制你的操作系统和软件包,可以使你的系统资源使用量保持在低水平,以便你获得最大收益。这还可以通过减少试图利用漏洞的潜在恶意行为者可用的服务和软件包数量,提高了安全性。

因此,在你丢弃旧硬件之前,考虑一下能够继续使用的各种可能性。


via: https://opensource.com/article/21/1/minimal-server-raspberry-pi

作者:Alan Formy-Duval 选题:lujun9972 译者:hwlife 校对:wxy

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

使用这个 Linux KDE 应用,将你的档案数字化。

 title=

虽然现在的世界已经大部分实现了数字化,但仍有一些时候,你还是需要打印一份表格,签字,然后把它扫描回来。有时候,我发现在手机上拍个快照就够了,但有些行业需要比草率的快照更好的复印件,因此平板扫描仪是必要的。KDE 项目提供了一个叫做 Skanlite 的应用程序,它可以帮助你导入在平板上扫描的文件,甚至是用联机相机扫描的文件。

在 Linux 上安装 Skanlite

你可以从你的软件库中安装 Skanlite。在 Fedora、Mageia 和类似的地方:

$ sudo dnf install skanlite

在 Elementary、Linux Mint 和其他基于 Debian 的发行版上:

$ sudo apt install skanlite

扫描仪驱动

市场上的大多数扫描仪都与 SANE 扫描仪 API 兼容。SANE 并不是一个真正的驱动,而是一个协议,可以接收来自图像采集设备的输入,并为希望围绕它建立一个应用的程序员提供选项。Skanlite 就是这样一个应用。

我还没有遇到过不与 SANE 接口兼容的扫描仪,但可能也有不与 SANE 接口兼容的扫描仪。在这些情况下,请在制造商的网站上寻找 SANE 或 TWAIN 的驱动,或者寻找它们专有的驱动和扫描仪接口。后者可能无法使用 Skanlite,但当你不确定你的扫描仪是否通过标准协议进行通信时,Skanlite 总是值得试试。我甚至遇到过打印机和扫描仪的二合一设备,尽管打印机需要一个额外的驱动,但扫描仪却能立即被识别。

使用 Skanlite

当你启动 Skanlite 时,它首先会在你的系统中搜索图像采集设备。在笔记本电脑上,Skanlite 通常会发现网络摄像头是一个有效的输入源(因为它是),但它也会找到连接到你机器上的平板扫描仪。选择你要使用的扫描仪,然后继续。

要看扫描的内容,点击应用程序右下角的“ 预览 Preview ”按钮。

 title=

这将在右面板上显示一个预览图像。没有任何东西被保存到你的硬盘上,这只是显示你的扫描仪上目前有什么。

选择一个扫描区域

如果你只需要扫描仪上的一部分内容,你可以选择一个你想保存的区域。要选择一个单一的区域,在你想保存的区域上点击并拖动你的鼠标。当有一个有效的选择时,当你点击“ 扫描 Scan ”按钮时,只有你选择的那部分会被保存。

你可以有一个以上的选区,当你需要扫描几个小图像或只扫描一个大文件的特定部分时,这特别有效。要添加一个选区,请点击出现在选区中心的 “+” 图标。

 title=

你可以通过点击 “-” 图标来删除选区,当你有多个活动选区时,该图标会出现。

扫描设置

图像采集设置位于左边的面板上。这些控件允许你导入彩色或灰度的图像,并对图像的亮度和对比度进行调整。这些选项是基于软件的,不影响你的扫描仪的行为方式,但它们是常见的调整,在这里做这些调整可以使你不必在 GIM 或 Gwenview 中对图像进行后期处理。

在许多情况下,你的扫描仪可能有可配置的设置,可在 Skanlite 窗口左侧的“ 扫描仪特定选项 Scanner Specific Options ”标签中找到。有些扫描仪允许你调整色温、亮度、饱和度和其他出现在固件中的属性。可用的选项根据设备和供应商的不同而不同,所以你有可能在这个面板上看到变化,这取决于你与哪种设备的对接。

扫描和保存

当你准备好导入图像(或图像的选定区域,如果你已经做了选择)时,点击 Skanlite 窗口右下角的“ 扫描 Scan ”按钮。根据你的设备,它可能需要一些时间来创建扫描,但当它完成后,会提示你保存或丢弃图像。如果你喜欢你所看到的,点击“ 保存 Save ”。

图像会被保存到你所配置的任何默认位置。要查看默认位置,点击窗口右下角的“ 设置 Settings ”按钮。在 “ Skanlite 设置 Skanlite Settings ”中,你可以设置默认保存位置、默认名称格式和图像分辨率。你还可以控制每次扫描后是否提示你保存或丢弃图像,或者你是否想要保存所有的东西并在以后进行分类。

Linux 上的扫描很容易

在 Linux 上扫描文件是如此简单,我很少考虑这个问题。通常不需要你去寻找和安装特殊的驱动或应用,因为像 Skanlite 这样的应用使用开放协议,使这个过程变得简单。下次你有一份需要数字化的拷贝时,用 Skanlite 导入它。


via: https://opensource.com/article/22/2/scan-documents-skanlite-linux-kde

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

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