2022年6月

在 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中国 荣誉推出

GitHub Copilot 来了,它能帮助程序员,为他们提供人工智能的编码建议,不过,它是否会让事情变得更糟呢?

GitHub

在 2021 年,我曾花了好几个小时来翻阅 GitHub Copilot 文档,试图弄清楚如何能够加入它的技术预览计划。还好,这一切都得到了回报,我成功加入了预览计划。

而现在,它终于可供所有人使用啦!

如果你还不知道的话,GitHub Copilot 是一个 AI 助手,可帮助你更快、更高效地编写代码。

我能想到的最类似的东西,就是你手机上的(输入法的)自动完成功能。不过,与自动完成功能不同,GitHub Copilot 编写代码,就相当于是在完成整段的句子。

Copilot 现已可供大众使用

正如我在前面提到的,Copilot 已经处于技术预览阶段将近一年了。这意味着,GitHub 只允许非常有限数量的开发者免费使用它,以换取同意 GitHub 监控他们的使用情况,从而改进程序的最终版本。

看起来 GitHub 终于满意地向公众发布了它。现在,任何拥有 GitHub 帐户的人都应该能够使用它,尽管需要付出一定的代价(我很快就会在下面提到)。

公告 中提到:

直到不久前,人工智能都没有能够帮助改进代码,开发软件的过程几乎完全是手动的。现在,这种情况正在改变。今天,我很高兴地宣布,我们正在向所有个人开发者提供 GitHub Copilot。你的 AI 配对程序员来啦。

—— Thomas Dohmke,GitHub CEO

Copilot 作为免费的编辑器扩展,已经帮助数百万开发者加快了他们的编程速度。然而,它确实是有代价的,无论是直接的还是间接的。

GitHub Copilot 定价

与几乎所有令人兴奋的新技术一样,Copilot 对某些人来说可能过于昂贵。它将花费你 10 美元/月或 100 美元/年。

如果你是开源项目维护者或经过验证的学生,那么你可以免费使用它。

GitHub Copilot 不道德吗?

围绕 GitHub Copilot 产品的争议巨大且令人担忧。从技术上讲,这个人工智能是使用大家托管在 GitHub 上的代码来进行训练的。

因此,基本上,GitHub 是通过使用你的代码来提供一个新产品(如果你愿意的话,还可以加点料)。而且,关于 Copilot,可别忘了,自由软件基金会(FSF)也 建议 不要在 GitHub 上托管代码。

我们知道,企业总是喜欢利用事物,但有些人认为这应该不会直接损害托管在 GitHub 上的项目/代码。

但是,是这样吗?

简而言之,在 Copilot 发布后,许多开发者都分享说,他们发现 GitHub Copilot 生成了受版权保护的代码:

我试了下 GitHub Copilot,这是一项付费服务​​,来看看它是否会使用带有限制性许可证的存储库的代码。我检查了它,看看它是否有我在之前雇主那里编写的代码,该代码有一个许可证,只允许其用于免费游戏,并且需要附加许可证。是的,它确实有。

图源:推特上的 Chris Green

当然,如果我们查看 GitHub Copilot 的常见问题解答(FAQ),其中提到:

GitHub 不拥有 GitHub Copilot 生成的建议。您在 GitHub Copilot 的帮助下编写的代码属于您自己,由您自己负责。

所以说,你为一项服务付了费,最终却为你的项目增加了不便和更多的工作?

在我看来,就简化开发者的任务而言,这听起来一点儿也不令人兴奋。

你对此有什么想法?请在下面的评论区中分享一下吧!


via: https://news.itsfoss.com/github-copilot/

作者:Jacob Crume 选题:lkxed 译者:lkxed 校对:校对者ID

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

GeckoLinux 创建者推出了一个基于 Debian 的新 Linux 发行版,专注于简单性和可用性。

Linux 螺旋

GeckoLinux 改进了的 openSUSE 体验,它的创建者一直保持匿名。

我不会评论这是好事还是坏事,但现在,开发者又带着另一个基于 Debian 的类似项目回来了。

SpiralLinux,这是一个基于 Debian 的发行版,旨在使 Debian 适合最终用户使用。

SpiralLinux:基于 Debian 构建的发行版

SpiralLinux

毫不奇怪,大多数用户友好的 Linux 发行版都将 Debian 作为其原始基础。Ubuntu 就是在此基础上进行了大量改进,从而提供了良好的桌面体验,即使对于没有 Linux 经验的用户也是如此。

那么,这个发行版有什么不同呢?

嗯,它的创建者说,这个项目旨在帮助你获得 Debian 的所有核心优势,而无需定制很多东西。

如果你想在桌面上使用 Debian,SpiralLinux 是一种接近原版的体验。你还可以根据需要升级到最新的稳定 Debian 版本(或不稳定/测试版),而不会丢失方便易用的自定义设置。

换句话说,SpiralLinux 使 Debian 适合桌面使用,而最终用户只需付出最小的努力。

为了实现这一点,SpiralLinux 使用了 Debian 官方软件包存储库,并提供了现场安装方式,让你能够定制自己的 Debian 系统。

此外,SpiralLinux 还具有以下功能:

  • 开箱即用的 VirtualBox 支持
  • 预装了专有的媒体编解码器和非自由软件包存储库
  • 预装了专有固件
  • 打印机支持
  • 通过 GUI(软件中心)支持 Flatpak
  • 默认启用 zRAM 交换
  • 多种桌面环境(Cinnamon、XFCE、Gnome、Plasma、MATE、Budgie、LXQt)

Debian 始终坚持使用开源和自由软件包,最终用户必须自己搞定编解码器、驱动程序和其他软件包,才能使许多功能正常工作,获得令他们满意的桌面体验。

而 SpiralLinux 似乎可以作为 Debian 的一个有用的替代品,就像 GeckoLinux 之于 openSUSE 一样。

下载 SpiralLinux

如果你一直想尝试 Debian,但又不想在初始配置上费尽心思,你可以尝试 SpiralLinux。

你可以前往其托管在 GitHub 上的官网以了解更多信息,链接如下:

SpiralLinux

via: https://news.itsfoss.com/debian-remix-spiral-linux/

作者:Ankush Das 选题:lkxed 译者:lkxed 校对:wxy

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

火星快车号上 Windows 98 时期的软件得到了更新

欧洲航天局于 2003 年发射的火星快车号已经运行了近 20 年,火星快车号包括两个部份:火星快车号卫星与小猎犬 2 号登陆器,不过小猎犬 2 号后来失去联系。卫星上的火星地下和电离层探测高级雷达(MARSIS)是 2018 年在火星上发现巨大的地下液态水层的关键,该软件使用的是基于 Windows 98 的开发环境。欧洲航天局正在升级该软件,新的软件将使 MARSIS 开启的时间延长五倍,并在每次通过时探索更大的区域。这就像是“发射近 20 年后,火星快车号上有了一个全新的仪器一样。”

消息来源:The Verge
老王点评:看来 Windows 98 一直运行的也挺好。那么,微软为啥让大家一直升级呢?

ARM 最初的操作系统 35 年后仍在更新

1987 年 6 月,Acron 推出了起价 800 英镑的 Archimedes A305 / A310 计算机。在那个年代,其产品性能设计相当先进,且提供了当时名为 Arthur 的新操作系统。两年后,它被更名为 RISC OS。如今,RISC OS 的一个分支,仍然支持 Acron 时代独特的 26 位模式,当然,目前只能运行在模拟器中。另一个分支是为 32 位的 ARM 芯片设计的,并于 2018 年开源。如今,它还在继续维护更新,近日发布了一个源自 OpenBSD 的新 TCP/IP 栈,带来了对 IPv6 的支持。但它目前还不支持 Wi-Fi,以及不支持多核处理器技术 SMP。

消息来源:The Register
老王点评:这么古老的操作系统,是操作系统发展历史上一块块纪念碑,更多只是回味。

“首个桌面操作系统根社区” openKylin 发布

昨日,麒麟软件联合普华、中科方德、麒麟信安、中兴新支点、先进操作系统创新中心等发起了中国“首个桌面操作系统根社区” openKylin 社区。所谓根社区,是指基于 Linux 内核和其他开源组件而构建,不依赖上游发行版的社区。在视频发布会上,邀请了若干院士发表了致辞,并呼吁更多的行业伙伴加入,携手打造“产业主导、平台自主、技术先进、生态丰富”的桌面操作系统根社区。

消息来源:openKylin
老王点评:看来国产根社区的春天到了,这又是一家。似乎“根社区”这个说法是从开放原子开源基金会开始出现的?

如果你准备放下爆米花,想从各个角度体验游戏的话,那么就在 Linux 下打开游戏吧!

 title=

如今,人们有更多喜欢 Linux 的理由。在这个系列里,我将分享 21 个使用 Linux 的理由。今天,我将从游戏开始。

我过去认为“游戏玩家”是一种非常特殊的生物,要由科学家们在数年的研究和测试之后严谨地认定才行。我从来没有把自己归类为游戏玩家,因为我所玩过的游戏要么是桌面游戏(棋盘类游戏和纸笔角色扮演游戏),要么是 NetHack、俄罗斯方块。现在,在移动设备、游戏机、电脑和电视机上都有游戏,我觉得现在的承认有各种形式的游戏玩家们了。如果你想自称为游戏玩家,你就可以是,不需任何资格认定。你不用必须在心里熟记那些“上上下下左右左右BA”的科乐美秘籍(你甚至可以不知道这是什么);你也不用必须买过和玩过 3A 级游戏。如果你时不时地玩游戏,你就完全可以自称为玩家。如果你想成为一名玩家,那么现在使用 Linux 正当其时。

欢迎来到游戏世界

剥除光鲜的广告,在其下面,你肯定会发现一个欣欣向荣的游戏世界。在人们相信不是电子表格也不是练习打字一类的软件能挣钱以前,新兴的游戏市场已经开始发展起来了。 独立游戏 indie game 已经在流行文化上以各种方式打上了自己的烙印(或许你不相信,《我的世界》尽管不是开源的,但一开始就是一款独立游戏),这也证实了,在玩家眼里,可玩性高于产品价值。

独立开发者和开源开发者之间有很多交集。没有什么比带着你的 Linux 笔记本电脑,浏览 itch.io 或你的发行版的软件库,寻找鲜为人知但珍贵的开源游戏宝藏更有意义了。

有各种各样的开源游戏,包括大量的第一视角射击游戏、Nodulus 之类的益智游戏、运输大亨之类的策略经营游戏、Jethook 之类的竞速游戏、Sauerbraten 之类的竞速逃生游戏,以及很多未提到的(多亏了像 Open Jam 这样伟大的活动,每年都有新增的游戏)。

Jethook game screenshot

总的来说,探索开源游戏的世界的体验,和购买大型游戏工作室的产品带来的即时满足感有很大的不同。大型游戏工作室生产的游戏提供大量的视听刺激、知名演员、和长达 60 小时以上的游戏时长。而独立和开源游戏不能与之相提并论。但是话又说回来,大型游戏工作室无法提供的是,当你发现一款别人未曾听说过的游戏时的产生的发现感和与个人相关的感受。当你意识到别人都非常想知道你刚玩过的哪个出色游戏时,大型工作室也并不能提供这种紧迫感。(LCTT 校注:此处大概的意思是指大型工作室的作品已被人熟知,没有什么挖掘的新鲜感)

花点时间找出你最喜欢的游戏,然后浏览下你的发行商的软件仓库、Flathub、开源的游戏仓库,看看你能发现什么,如果发现你很喜欢的游戏,就帮忙推广一下吧。

Proton 和 WINE

Linux 上的游戏并没有止步于开源,但是从开源开始的。数年前 Valve 软件公司通过发行 Linux 版的 Steam 客户端把 Linux 重新带入游戏市场时,人们希望这可以推动游戏工作室能编写原生的 Linux 游戏。一些工作室这样做了,但 Valve 公司并没有成功的把 Linux 推为主要的平台,即使是 Valve 品牌的游戏电脑。并且大多数游戏工作室又转回仅在 Windows 平台上开发游戏的旧方式。

有趣的是,最终的结果是产生了更多的开源代码。Valve 公司为 Linux 兼容创建了 Proton 工程,一个可以转换 Windows 游戏到 Linux 的兼容层。在 Proton 的内核层面,它使用了WINE(Wine Is Not an Emulator) —— 以开源的方式极好地重新实现了主要的 Windows 库。

游戏市场的成果,如今已经变成了开源世界的宝藏。今天,来自大型工作室的大多数游戏都可以在 Linux 上像原生游戏一样运行。

当然,如果你是必须要在发行日就玩上最新版游戏的这类玩家,你可能会遇到一些令人不愉快的“惊喜”。尽管那不是惊喜,很少有大型游戏在发行时毫无漏洞,一周后才补上补丁。这些游戏在 Proton 和 WINE 上运行时遇到这些错误可能更糟糕,因此 Linux 玩家通过避免尽早上车而避免这些问题。这种妥协可能是值得的。我玩过一些游戏,它们在 Proton 平台运行完美,后来从愤怒的论坛帖子中发现,它在最新版的 Windows 上运行显然充满了致命的错误。总之,似乎来自大型工作室的游戏并不完美,但你可能在 Linux 上遇到相似但不同的问题,正如你在 Windows 上遇到的。

Flatpak

Linux 近来历史上最令人激动的发展就是 Flatpak 了,它是本地容器和打包的结合,它和游戏无关(或者它和游戏息息相关),它使得 Linux 应用基本上能被分发到任意的 Linux 发行版上。这也适用于游戏,因为在游戏中使用了相当多的前沿技术,而对发行版维护者来说,要跟上任何特定游戏所需的所有最新版本可能是相当苛刻的。

Flapak 通过为应用程序库抽象出一种通用的 Flatpak 特定的层,而将其从发行版中抽象出来。Flatpak 软件包的发行者知道,如果一个库不在 Flatpak SDK 中,那么它必须要包含在 Flatpak 软件包中,简单而直接。

多亏了 Flatpak,Steam 客户端可以运行在像 Fedora 这样的常用发行版上,也可以运行在 RHEL、Slackware 等从传统角度看并不面向游戏市场的操作系统上。

Lutris

如果你并不急于在 Steam 上注册账号,那么可以用我比较偏爱的游戏客户端 Lutris 。表面上看,Lutris 是一个简单的游戏启动器,当你想玩游戏但还没决定玩什么的时候,你可以到这这里找找。有了 Lutris,你可以将系统上的所有游戏添加到你的游戏库,然后从 Lutris 界面启动并立即玩起来。更好的是,Lutris 贡献者(像我一样)会定期发布安装脚本,使你可以轻松安装自己的游戏。这并不是必须的,但它可以是一个很好的捷径,可以绕过一些繁琐的配置。

Lutris 也可以借助运行器或子系统,来运行那些不能从应用菜单直接启动的游戏。比如你想玩开源的《 魔兽塔防 Warcraft Tower Defense 》这样的游戏机游戏,你必须运行模拟器。如果你已经安装过模拟器的话,Lutris 可以帮你处理这一切。除此以外,如果你有一个 GOG.com 游戏账号,Lutris 可以访问它,并可以把游戏导入你的游戏库中。

没有比这更容易的管理你的游戏的方式了。

去玩游戏吧

Linux 游戏是一种充实且给人力量的体验。我过去避免玩电脑游戏,因为我不觉得我有太多的选择。似乎昂贵的游戏总是在不断发布,并且不可避免的获得好或者不好的极端体验,然后很快又转向下一个。另一方面,开源游戏把我引入了游戏的圈子。我见到过其他玩家和开发者。我见到过艺术家和音乐家、粉丝以及推广者。我玩过各种各样的我从来不知道的游戏。其中一些甚至不够我玩一下午,而其他的却让我长久的着迷于游戏、修改、关卡设计和乐趣。

如果你准备好放下爆米花,从各个角度体验下游戏的话,那就在 Linux 上开始游戏吧。


via: https://opensource.com/article/21/2/linux-gaming

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

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

2022 年 6 月 16 日,微软更新了其应用商店的策略。其中一项禁止了发布者对开源或免费的软件收取费用,另一项则针对的是商店使用的不合理高价。如果你在过去几年中访问过微软应用商店,你可能已经注意到,它正在成为越来越多的开源和免费产品的所在地。如果原始开发者将应用程序和游戏上传到商店,这将是有益的,但情况并非如此,因为它们是由第三方上传的。

更糟糕的是,其中许多程序仅作为付费应用提供,而不是免费下载。换句话说,微软的客户必须付费才能购买应用商店的版本,而它们在其他地方是免费的!在应用商店中,免费版和付费版有时并存。为免费应用付费已经够糟糕的了,但这并不是用户在购买时可能遇到的唯一问题。更新也可能是一个问题,因为山寨应用可能不会像源头应用程序那样频繁或快速地更新。

在更新的微软商店政策中,微软在 10.8.7 节下指出:

在您决定产品或应用内购买的定价时,您的数字产品或服务的所有定价(包括销售或折扣)必须:

遵守所有适用的法律、法规和监管要求,包括联邦贸易委员会的《反欺骗性定价指南》。您不得试图从开源软件或其他可免费获得的软件中获利,您的产品也不应提供一个(与它提供的特性和功能相比)过高的不合理定价。

这个新策略在更新部分中得到了确认。如果开源和免费产品普遍免费提供,则它们不得在微软应用商店上出售,发布者也不得对其产品收取不合理的高价。开源和免费应用的开发者可以在微软应用商店上为其产品收费。例如,Paint.net 的开发者就是这样做的。如果微软强制执行这些策略,许多应用将从应用商店中删除。以前,开发者可以向微软报告应用程序,但在新策略下,微软可以直接控制应用的列出和提交。


via: https://www.opensourceforu.com/2022/06/microsoft-to-charge-for-available-open-source-software-in-microsoft-store/

作者:Laveesh Kocher 选题:lkxed 译者:lkxed 校对:wxy

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