分类 技术 下的文章

你是一个喜欢每隔几天尝试 Linux 操作系统的新发行版的发行版收割机吗?如果是这样,我有一些东西对你有用。 尝试 Sysget,这是一个类 Unix 操作系统中的流行软件包管理器的前端。 你不需要学习每个包管理器来执行基本的操作,例如安装、更新、升级和删除包。 你只需要对每个运行在类 Unix 操作系统上的包管理器记住一种语法即可。 Sysget 是包管理器的包装脚本,它是用 C++ 编写的。 源代码可在 GitHub 上免费获得。

使用 Sysget,你可以执行各种基本的包管理操作,包括:

  • 安装包,
  • 更新包,
  • 升级包,
  • 搜索包,
  • 删除包,
  • 删除弃用包,
  • 更新数据库,
  • 升级系统,
  • 清除包管理器缓存。

给 Linux 学习者的一个重要提示:

Sysget 不会取代软件包管理器,绝对不适合所有人。如果你是经常切换到新 Linux 操作系统的新手,Sysget 可能会有所帮助。当在不同的 Linux 发行版中使用不同的软件包管理器时,就必须学习安装、更新、升级、搜索和删除软件包的新命令,这时 Sysget 就是帮助 发行版收割机 distro hopper (或新 Linux 用户)的包装脚本。

如果你是 Linux 管理员或想要学习 Linux 深层的爱好者,你应该坚持使用你的发行版的软件包管理器并学习如何使用它。

安装 Sysget

安装 Sysget 很简单。 转到发布页面并下载最新的 Sysget 二进制文件并按如下所示进行安装。 在编写本指南时,Sysget 最新版本为1.2。

$ sudo wget -O /usr/local/bin/sysget https://github.com/emilengler/sysget/releases/download/v1.2/sysget
$ sudo mkdir -p /usr/local/share/sysget
$ sudo chmod a+x /usr/local/bin/sysget

用法

Sysget 命令与 APT 包管理器大致相同,因此它应该适合新手使用。

当你第一次运行 Sysget 时,系统会要求你选择要使用的包管理器。 由于我在 Ubuntu,我选择了 apt-get。

你必须根据正在运行的发行版选择正确的包管理器。 例如,如果你使用的是 Arch Linux,请选择 pacman。 对于 CentOS,请选择 yum。 对于 FreeBSD,请选择 pkg。 当前支持的包管理器列表是:

  1. apt-get (Debian)
  2. xbps (Void)
  3. dnf (Fedora)
  4. yum (Enterprise Linux/Legacy Fedora)
  5. zypper (OpenSUSE)
  6. eopkg (Solus)
  7. pacman (Arch)
  8. emerge (Gentoo)
  9. pkg (FreeBSD)
  10. chromebrew (ChromeOS)
  11. homebrew (Mac OS)
  12. nix (Nix OS)
  13. snap (Independent)
  14. npm (Javascript, Global)

如果你分配了错误的包管理器,则可以使用以下命令设置新的包管理器:

$ sudo sysget set yum
Package manager changed to yum

只需确保你选择了本地包管理器。

现在,你可以像使用本机包管理器一样执行包管理操作。

要安装软件包,例如 Emacs,只需运行:

$ sudo sysget install emacs

上面的命令将调用本机包管理器(在我的例子中是 “apt-get”)并安装给定的包。

同样,要删除包,只需运行:

$ sudo sysget remove emacs

更新软件仓库(数据库):

$ sudo sysget update

搜索特定包:

$ sudo sysget search emacs

升级单个包:

$ sudo sysget upgrade emacs

升级所有包:

$ sudo sysget upgrade

移除废弃的包:

$ sudo sysget autoremove

清理包管理器的缓存:

$ sudo sysget clean

有关更多详细信息,请参阅帮助部分:

$ sysget help
Help of sysget
sysget [OPTION] [ARGUMENT]

search [query] search for a package in the resporitories
install [package] install a package from the repos
remove [package] removes a package
autoremove removes not needed packages (orphans)
update update the database
upgrade do a system upgrade
upgrade [package] upgrade a specific package
clean clean the download cache
set [NEW MANAGER] set a new package manager

请记住,不同 Linux 发行版中的所有包管理器的 Sysget 语法都是相同的。 你不需要记住每个包管理器的命令。

同样,我必须告诉你 Sysget 不是包管理器的替代品。 它只是类 Unix 系统中流行的包管理器的包装器,它只执行基本的包管理操作。

Sysget 对于不想去学习不同包管理器的新命令的新手和发行版收割机用户可能有些用处。 如果你有兴趣,试一试,看看它是否有帮助。

而且,这就是本次所有的内容了。 更多干货即将到来。 敬请关注!

祝快乐!


via: https://www.ostechnix.com/sysget-a-front-end-for-popular-package-managers/

作者:SK 选题:lujun9972 译者:Flowsnow 校对:wxy

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

把你的树莓派变成数据的安全之所。

在《树莓派自建 NAS 云盘》系列的 第一篇 文章中,我们讨论了建立 NAS 的一些基本步骤,添加了两块 1TB 的存储硬盘驱动(一个用于数据存储,一个用于数据备份),并且通过网络文件系统(NFS)将数据存储盘挂载到远程终端上。本文是此系列的第二篇文章,我们将探讨数据自动备份。数据自动备份保证了数据的安全,为硬件损坏后的数据恢复提供便利以及减少了文件误操作带来的不必要的麻烦。

备份策略

我们就从为小型 NAS 构想一个备份策略着手开始吧。我建议每天有时间节点、有计划的去备份数据,以防止干扰到我们正常的访问 NAS,比如备份时间点避开正在访问 NAS 并写入文件的时间点。举个例子,你可以每天凌晨 2 点去进行数据备份。

另外,你还得决定每天的备份需要被保留的时间长短,因为如果没有时间限制,存储空间很快就会被用完。一般每天的备份保留一周便可以,如果数据出了问题,你便可以很方便的从备份中恢复出来原数据。但是如果需要恢复数据到更久之前怎么办?可以将每周一的备份文件保留一个月、每个月的备份保留更长时间。让我们把每月的备份保留一年时间,每一年的备份保留更长时间、例如五年。

这样,五年内在备份盘上产生大量备份:

  • 每周 7 个日备份
  • 每月 4 个周备份
  • 每年 12 个月备份
  • 每五年 5 个年备份

你应该还记得,我们搭建的备份盘和数据盘大小相同(每个 1 TB)。如何将不止 10 个 1TB 数据的备份从数据盘存放到只有 1TB 大小的备份盘呢?如果你创建的是完整备份,这显然不可能。因此,你需要创建增量备份,它是每一份备份都基于上一份备份数据而创建的。增量备份方式不会每隔一天就成倍的去占用存储空间,它每天只会增加一点占用空间。

以下是我的情况:我的 NAS 自 2016 年 8 月开始运行,备份盘上有 20 个备份。目前,我在数据盘上存储了 406GB 的文件。我的备份盘用了 726GB。当然,备份盘空间使用率在很大程度上取决于数据的更改频率,但正如你所看到的,增量备份不会占用 20 个完整备份所需的空间。然而,随着时间的推移,1TB 空间也可能不足以进行备份。一旦数据增长接近 1TB 限制(或任何备份盘容量),应该选择更大的备份盘空间并将数据移动转移过去。

利用 rsync 进行数据备份

利用 rsync 命令行工具可以生成完整备份。

pi@raspberrypi:~ $ rsync -a /nas/data/ /nas/backup/2018-08-01

这段命令将挂载在 /nas/data/ 目录下的数据盘中的数据进行了完整的复制备份。备份文件保存在 /nas/backup/2018-08-01 目录下。-a 参数是以归档模式进行备份,这将会备份所有的元数据,例如文件的修改日期、权限、拥有者以及软连接文件。

现在,你已经在 8 月 1 日创建了完整的初始备份,你将在 8 月 2 日创建第一个增量备份。

pi@raspberrypi:~ $ rsync -a --link-dest /nas/backup/2018-08-01/ /nas/data/ /nas/backup/2018-08-02

上面这行代码又创建了一个关于 /nas/data 目录中数据的备份。备份路径是 /nas/backup/2018-08-02。这里的参数 --link-dest 指定了一个备份文件所在的路径。这样,这次备份会与 /nas/backup/2018-08-01 的备份进行比对,只备份已经修改过的文件,未做修改的文件将不会被复制,而是创建一个到上一个备份文件中它们的硬链接。

使用备份文件中的硬链接文件时,你一般不会注意到硬链接和初始拷贝之间的差别。它们表现的完全一样,如果删除其中一个硬链接或者文件,其他的依旧存在。你可以把它们看做是同一个文件的两个不同入口。下面就是一个例子:

左侧框是在进行了第二次备份后的原数据状态。中间的方块是昨天的备份。昨天的备份中只有图片 file1.jpg 并没有 file2.txt 。右侧的框反映了今天的增量备份。增量备份命令创建昨天不存在的 file2.txt。由于 file1.jpg 自昨天以来没有被修改,所以今天创建了一个硬链接,它不会额外占用磁盘上的空间。

自动化备份

你肯定也不想每天凌晨去输入命令进行数据备份吧。你可以创建一个任务定时去调用下面的脚本让它自动化备份。

#!/bin/bash

TODAY=$(date +%Y-%m-%d)
DATADIR=/nas/data/
BACKUPDIR=/nas/backup/
SCRIPTDIR=/nas/data/backup_scripts
LASTDAYPATH=${BACKUPDIR}/$(ls ${BACKUPDIR} | tail -n 1)
TODAYPATH=${BACKUPDIR}/${TODAY}
if [[ ! -e ${TODAYPATH} ]]; then
        mkdir -p ${TODAYPATH}
fi

rsync -a --link-dest ${LASTDAYPATH} ${DATADIR} ${TODAYPATH} $@

${SCRIPTDIR}/deleteOldBackups.sh

第一段代码指定了数据路径、备份路径、脚本路径以及昨天和今天的备份路径。第二段代码调用 rsync 命令。最后一段代码执行 deleteOldBackups.sh 脚本,它会清除一些过期的没有必要的备份数据。如果不想频繁的调用 deleteOldBackups.sh,你也可以手动去执行它。

下面是今天讨论的备份策略的一个简单完整的示例脚本。

#!/bin/bash
BACKUPDIR=/nas/backup/

function listYearlyBackups() {
        for i in 0 1 2 3 4 5
                do ls ${BACKUPDIR} | egrep "$(date +%Y -d "${i} year ago")-[0-9]{2}-[0-9]{2}" | sort -u | head -n 1
        done
}

function listMonthlyBackups() {
        for i in 0 1 2 3 4 5 6 7 8 9 10 11 12
                do ls ${BACKUPDIR} | egrep "$(date +%Y-%m -d "${i} month ago")-[0-9]{2}" | sort -u | head -n 1
        done
}

function listWeeklyBackups() {
        for i in 0 1 2 3 4
                do ls ${BACKUPDIR} | grep "$(date +%Y-%m-%d -d "last monday -${i} weeks")"
        done
}

function listDailyBackups() {
        for i in 0 1 2 3 4 5 6
                do ls ${BACKUPDIR} | grep "$(date +%Y-%m-%d -d "-${i} day")"
        done
}

function getAllBackups() {
        listYearlyBackups
        listMonthlyBackups
        listWeeklyBackups
        listDailyBackups
}

function listUniqueBackups() {
        getAllBackups | sort -u
}

function listBackupsToDelete() {
        ls ${BACKUPDIR} | grep -v -e "$(echo -n $(listUniqueBackups) |sed "s/ /\\\|/g")"
}

cd ${BACKUPDIR}
listBackupsToDelete | while read file_to_delete; do
        rm -rf ${file_to_delete}
done

这段脚本会首先根据你的备份策略列出所有需要保存的备份文件,然后它会删除那些再也不需要了的备份目录。

下面创建一个定时任务去执行上面这段代码。以 root 用户权限打开 crontab -e,输入以下这段命令,它将会创建一个每天凌晨 2 点去执行 /nas/data/backup_scripts/daily.sh 的定时任务。

0 2 * * * /nas/data/backup_scripts/daily.sh

有关创建定时任务请参考 cron 创建定时任务

  • 当没有备份任务时,卸载你的备份盘或者将它挂载为只读盘;
  • 利用远程服务器作为你的备份盘,这样就可以通过互联网同步数据

你也可用下面的方法来加强你的备份策略,以防止备份数据的误删除或者被破坏:

本文中备份策略示例是备份一些我觉得有价值的数据,你也可以根据个人需求去修改这些策略。

我将会在 《树莓派自建 NAS 云盘》 系列的第三篇文章中讨论 Nextcloud。Nextcloud 提供了更方便的方式去访问 NAS 云盘上的数据并且它还提供了离线操作,你还可以在客户端中同步你的数据。


via: https://opensource.com/article/18/8/automate-backups-raspberry-pi

作者:Manuel Dewald 选题:lujun9972 译者:jrg 校对:wxy

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

pip 是一个命令行工具,允许你安装 Python 编写的软件包。 学习如何在 Ubuntu 上安装 pip 以及如何使用它来安装 Python 应用程序。

有许多方法可以在 Ubuntu 上安装软件。 你可以从软件中心安装应用程序,也可以从下载的 DEB 文件、PPA(LCTT 译注:PPA 即 Personal Package Archives,个人软件包集)、Snap 软件包,也可以使用 Flatpak、使用 AppImage,甚至用旧的源代码安装方式。

还有一种方法可以在 Ubuntu 中安装软件包。 它被称为 pip,你可以使用它来安装基于 Python 的应用程序。

什么是 pip

pip) 代表 “pip Installs Packages”。 pip 是一个基于命令行的包管理系统。 用于安装和管理 Python 语言编写的软件。

你可以使用 pip 来安装 Python 包索引(PyPI)中列出的包。

作为软件开发人员,你可以使用 pip 为你自己的 Python 项目安装各种 Python 模块和包。

作为最终用户,你可能需要使用 pip 来安装一些 Python 开发的并且可以使用 pip 轻松安装的应用程序。 一个这样的例子是 Stress Terminal 应用程序,你可以使用 pip 轻松安装。

让我们看看如何在 Ubuntu 和其他基于 Ubuntu 的发行版上安装 pip

如何在 Ubuntu 上安装 pip

Install pip on Ubuntu Linux

默认情况下,pip 未安装在 Ubuntu 上。 你必须首先安装它才能使用。 在 Ubuntu 上安装 pip 非常简单。 我马上展示给你。

Ubuntu 18.04 默认安装了 Python 2 和 Python 3。 因此,你应该为两个 Python 版本安装 pip

pip,默认情况下是指 Python 2。pip3 代表 Python 3 中的 pip。

注意:我在本教程中使用的是 Ubuntu 18.04。 但是这里的教程应该适用于其他版本,如Ubuntu 16.04、18.10 等。你也可以在基于 Ubuntu 的其他 Linux 发行版上使用相同的命令,如 Linux Mint、Linux Lite、Xubuntu、Kubuntu 等。

为 Python 2 安装 pip

首先,确保已经安装了 Python 2。 在 Ubuntu 上,可以使用以下命令进行验证。

python2 --version

如果没有错误并且显示了 Python 版本的有效输出,则说明安装了 Python 2。 所以现在你可以使用这个命令为 Python 2 安装 pip

sudo apt install python-pip

这将安装 pip 和它的许多其他依赖项。 安装完成后,请确认你已正确安装了 pip

pip --version

它应该显示一个版本号,如下所示:

pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

这意味着你已经成功在 Ubuntu 上安装了 pip

为 Python 3 安装 pip

你必须确保在 Ubuntu 上安装了 Python 3。 可以使用以下命令检查一下:

python3 --version

如果显示了像 Python 3.6.6 这样的数字,则说明 Python 3 在你的 Linux 系统上安装好了。

现在,你可以使用以下命令安装 pip3

sudo apt install python3-pip

你应该使用以下命令验证 pip3 是否已正确安装:

pip3 --version

它应该显示一个这样的数字:

pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)

这意味着 pip3 已成功安装在你的系统上。

如何使用 pip 命令

现在你已经安装了 pip,让我们快速看一些基本的 pip 命令。 这些命令将帮助你使用 pip 命令来搜索、安装和删除 Python 包。

要从 Python 包索引 PyPI 中搜索包,可以使用以下 pip 命令:

pip search <search_string>

例如,如果你搜索“stress”这个词,将会显示名称或描述中包含字符串“stress”的所有包。

pip search stress
stress (1.0.0) - A trivial utility for consuming system resources.
s-tui (0.8.2) - Stress Terminal UI stress test and monitoring tool
stressypy (0.0.12) - A simple program for calling stress and/or stress-ng from python
fuzzing (0.3.2) - Tools for stress testing applications.
stressant (0.4.1) - Simple stress-test tool
stressberry (0.1.7) - Stress tests for the Raspberry Pi
mobbage (0.2) - A HTTP stress test and benchmark tool
stresser (0.2.1) - A large-scale stress testing framework.
cyanide (1.3.0) - Celery stress testing and integration test support.
pysle (1.5.7) - An interface to ISLEX, a pronunciation dictionary with stress markings.
ggf (0.3.2) - global geometric factors and corresponding stresses of the optical stretcher
pathod (0.17) - A pathological HTTP/S daemon for testing and stressing clients.
MatPy (1.0) - A toolbox for intelligent material design, and automatic yield stress determination
netblow (0.1.2) - Vendor agnostic network testing framework to stress network failures
russtress (0.1.3) - Package that helps you to put lexical stress in russian text
switchy (0.1.0a1) - A fast FreeSWITCH control library purpose-built on traffic theory and stress testing.
nx4_selenium_test (0.1) - Provides a Python class and apps which monitor and/or stress-test the NoMachine NX4 web interface
physical_dualism (1.0.0) - Python library that approximates the natural frequency from stress via physical dualism, and vice versa.
fsm_effective_stress (1.0.0) - Python library that uses the rheological-dynamical analogy (RDA) to compute damage and effective buckling stress in prismatic shell structures.
processpathway (0.3.11) - A nifty little toolkit to create stress-free, frustrationless image processing pathways from your webcam for computer vision experiments. Or observing your cat.

如果要使用 pip 安装应用程序,可以按以下方式使用它:

pip install <package_name>

pip 不支持使用 tab 键补全包名,因此包名称需要准确指定。 它将下载所有必需的文件并安装该软件包。

如果要删除通过 pip 安装的 Python 包,可以使用 pip 中的 uninstall 选项。

pip uninstall <installed_package_name>

你可以在上面的命令中使用 pip3 代替 pip

我希望这个快速提示可以帮助你在 Ubuntu 上安装 pip。 如果你有任何问题或建议,请在下面的评论部分告诉我。


via: https://itsfoss.com/install-pip-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:Flowsnow 校对:wxy

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

学习如何做出你的首个 Linux 内核贡献,以及在开始之前你应该知道什么。

Linux 内核是最大且变动最快的开源项目之一,它由大约 53,600 个文件和近 2,000 万行代码组成。在全世界范围内超过 15,600 位程序员为它贡献代码,Linux 内核项目的维护者使用了如下的协作模型。

本文中,为了便于在 Linux 内核中提交你的第一个贡献,我将为你提供一个必需的快速检查列表,以告诉你在提交补丁时,应该去查看和了解的内容。对于你贡献的第一个补丁的提交流程方面的更多内容,请阅读 KernelNewbies 的第一个内核补丁教程

为内核作贡献

第 1 步:准备你的系统。

本文开始之前,假设你的系统已经具备了如下的工具:

  • 文本编辑器
  • Email 客户端
  • 版本控制系统(例如:git)

第 2 步:下载 Linux 内核代码仓库。

git clone -b staging-testing
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git

复制你的当前配置:

cp /boot/config-`uname -r`* .config

第 3 步:构建/安装你的内核。

make -jX
sudo make modules_install install

第 4 步:创建一个分支并切换到该分支。

git checkout -b first-patch

第 5 步:更新你的内核并指向到最新的代码。

git fetch origin
git rebase origin/staging-testing

第 6 步:在最新的代码库上产生一个变更。

使用 make 命令重新编译,确保你的变更没有错误。

第 7 步:提交你的变更并创建一个补丁。

git add <file>
git commit -s -v
git format-patch -o /tmp/ HEAD^

主题是由冒号分隔的文件名组成,跟着是使用祈使语态来描述补丁做了什么。空行之后是强制的 signed off 标记,最后是你的补丁的 diff 信息。

下面是另外一个简单补丁的示例:

接下来,从命令行使用邮件(在本例子中使用的是 Mutt)发送这个补丁:

mutt -H /tmp/0001-<whatever your filename is>

使用 get\_maintainer.pl 脚本,去了解你的补丁应该发送给哪位维护者的列表。

提交你的第一个补丁之前,你应该知道的事情

  • Greg Kroah-Hartmanstaging tree 是提交你的 第一个补丁 的最好的地方,因为他更容易接受新贡献者的补丁。在你熟悉了补丁发送流程以后,你就可以去发送复杂度更高的子系统专用的补丁。
  • 你也可以从纠正代码中的编码风格开始。想学习更多关于这方面的内容,请阅读 Linux 内核编码风格文档
  • checkpatch.pl 脚本可以帮你检测编码风格方面的错误。例如,运行如下的命令:perl scripts/checkpatch.pl -f drivers/staging/android/* | less
  • 你可以去补全开发者留下的 TODO 注释中未完成的内容:find drivers/staging -name TODO
  • Coccinelle 是一个模式匹配的有用工具。
  • 阅读 归档的内核邮件
  • 为找到灵感,你可以去遍历 linux.git 日志去查看以前的作者的提交内容。
  • 注意:不要与你的补丁的审核者在邮件顶部交流!下面就是一个这样的例子:

错误的方式:

Chris,
Yes let’s schedule the meeting tomorrow, on the second floor.

> On Fri, Apr 26, 2013 at 9:25 AM, Chris wrote:
> Hey John, I had some questions:
> 1. Do you want to schedule the meeting tomorrow?
> 2. On which floor in the office?
> 3. What time is suitable to you?

(注意那最后一个问题,在回复中无意中落下了。)

正确的方式:

Chris,
See my answers below...

> On Fri, Apr 26, 2013 at 9:25 AM, Chris wrote:
> Hey John, I had some questions:
> 1. Do you want to schedule the meeting tomorrow?
Yes tomorrow is fine.
> 2. On which floor in the office?
Let's keep it on the second floor.
> 3. What time is suitable to you?
09:00 am would be alright.

(所有问题全部回复,并且这种方式还保存了阅读的时间。)

想学习更多内容,阅读 KernelNewbies 的第一个内核补丁教程。之后如果你还有任何问题,可以在 kernelnewbies 邮件列表 或者 #kernelnewbies IRC channel 中提问。


via: https://opensource.com/article/18/8/first-linux-kernel-patch

作者:Sayli Karnik 选题:lujun9972 译者:qhwdw 校对:wxy

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

一个我怀念的 Unity 功能(虽然只使用了一小段时间)是在 Web 浏览器中访问 YouTube 等网站时在 Ubuntu 声音指示器中自动出现播放器控件,因此你可以直接从顶部栏暂停或停止视频,以及浏览视频/歌曲信息和预览。

这个 Unity 功能已经消失很久了,但我正在为 Gnome Shell 寻找类似的东西,然后我遇到了 browser-mpris2,这是一个为 Google Chrome/Chromium 实现 MPRIS v2 接口的扩展,目前只支持 YouTube,我想可能会有一些读者会喜欢这个。

该扩展还适用于 Opera 和 Vivaldi 等基于 Chromium 的 Web 浏览器。

browser-mpris2 也支持 Firefox,但因为通过 about:debugging 加载扩展是临时的,而这是 browser-mpris2 所需要的,因此本文不包括 Firefox 的指导。开发人员打算将来将扩展提交到 Firefox 插件网站上。

使用此 Chrome 扩展,你可以在支持 MPRIS2 的 applets 中获得 YouTube 媒体播放器控件(播放、暂停、停止和查找
)。例如,如果你使用 Gnome Shell,你可将 YouTube 媒体播放器控件作为永久显示的控件,或者你可以使用 Media Player Indicator 之类的扩展来实现此目的。在 Cinnamon /Linux Mint with Cinnamon 中,它出现在声音 Applet 中。

我无法在 Unity 上用它,我不知道为什么。我没有在不同桌面环境(KDE、Xfce、MATE 等)中使用其他支持 MPRIS2 的 applet 尝试此扩展。如果你尝试过,请告诉我们它是否适用于你的桌面环境/支持 MPRIS2 的 applet。

以下是在使用 Gnome Shell 的 Ubuntu 18.04 并装有 Chromium 浏览器的媒体播放器指示器的截图,其中显示了有关当前正在播放的 YouTube 视频的信息及其控件(播放/暂停,停止和查找):

在 Linux Mint 19 Cinnamon 中使用其默认声音 applet 和 Chromium 浏览器的截图:

如何为 Google Chrom/Chromium安装 browser-mpris2

1、 如果你还没有安装 Git 就安装它

在 Debian/Ubuntu/Linux Mint 中,使用此命令安装 git:

sudo apt install git

2、 下载并安装 browser-mpris2 所需文件。

下面的命令克隆了 browser-mpris2 的 Git 仓库并将 chrome-mpris2 安装到 /usr/local/bin/(在一个你可以保存 browser-mpris2 文件夹的地方运行 git clone ... 命令,由于它会被 Chrome/Chromium 使用,你不能删除它):

git clone https://github.com/otommod/browser-mpris2
sudo install browser-mpris2/native/chrome-mpris2 /usr/local/bin/

3、 在基于 Chrome/Chromium 的 Web 浏览器中加载此扩展。

打开 Goog​​le Chrome、Chromium、Opera 或 Vivaldi 浏览器,进入 Extensions 页面(在 URL 栏中输入 chrome://extensions),在屏幕右上角切换到“开发者模式”。然后选择 “Load Unpacked” 并选择 chrome-mpris2 目录(确保没有选择子文件夹)。

复制扩展 ID 并保存它,因为你以后需要它(它类似于这样:emngjajgcmeiligomkgpngljimglhhii,但它会与你的不一样,因此确保使用你计算机中的 ID!)。

4、 运行 install-chrome.py(在 browser-mpris2/native 文件夹中),指定扩展 id 和 chrome-mpris2 路径。

在终端中使用此命令(将 REPLACE-THIS-WITH-EXTENSION-ID 替换为上一步中 chrome://extensions 下显示的 browser-mpris2 扩展 ID)安装此扩展:

browser-mpris2/native/install-chrome.py REPLACE-THIS-WITH-EXTENSION-ID /usr/local/bin/chrome-mpris2

你只需要运行此命令一次,无需将其添加到启动或其他类似的地方。你在 Google Chrome 或 Chromium 浏览器中播放的任何 YouTube 视频都应显示在你正在使用的任何 MPRISv2 applet 中。你无需重启 Web 浏览器。


via: https://www.linuxuprising.com/2018/08/add-youtube-player-controls-to-your.html

作者:Logix 选题:lujun9972 译者:geekpi 校对:wxy

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

自我更新 Arch Linux 桌面以来已经有一个月了。今天我试着更新我的 Arch Linux 系统,然后遇到一个错误 “error:failed to commit transaction (conflicting files) stfl:/usr/lib/libstfl.so.0 exists in filesystem”。看起来是 pacman 无法更新一个已经存在于文件系统上的库 (/usr/lib/libstfl.so.0)。如果你也遇到了同样的问题,下面是一个快速解决方案。

解决 Arch Linux 中出现的 “error:failed to commit transaction (conflicting files)”

有三种方法。

1。简单在升级时忽略导致问题的 stfl 库并尝试再次更新系统。请参阅此指南以了解 如何在更新时忽略软件包

2。使用命令覆盖这个包:

$ sudo pacman -Syu --overwrite /usr/lib/libstfl.so.0

3。手工删掉 stfl 库然后再次升级系统。请确保目标包不被其他任何重要的包所依赖。可以通过去 archlinux.org 查看是否有这种冲突。

$ sudo rm /usr/lib/libstfl.so.0

现在,尝试更新系统:

$ sudo pacman -Syu

我选择第三种方法,直接删除该文件然后升级 Arch Linux 系统。很有效!

希望本文对你有所帮助。还有更多好东西。敬请期待!

干杯!


via: https://www.ostechnix.com/how-to-solve-error-failed-to-commit-transaction-conflicting-files-in-arch-linux/

作者:SK 选题:lujun9972 译者:lujun9972 校对:wxy

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