挑选 AUR 到 Debian 上游

挑选 AUR 到 Debian 上游

我已经使用了disper -l很多代 ubuntu 来确定我连接到哪个显示器,以及是否连接了带有 vga 或 hdmi 的外接显示器。现在升级到 18.04 后,我发现此命令正在生成分段错误。该问题似乎存在了一段时间,如报告的此错误报告但似乎没人对此采取任何措施。是否有其他具有相同功能的程序?我查看了xdpyinfo包含大量信息(但不是我需要的)的程序,这些信息足以区分显示器的分辨率信息,以及有关是否连接了多个显示器以及通过何种连接方式连接的信息。

谢谢!

答案1

我可以证实这一点错误 1655275,它似乎是由一些反 Meltdown 或反 Spectre 修复程序(或类似的东西)引起的Scilab 的 CVE-2017-1000364)因为我的apport崩溃日志评论#9包含奇怪的行:

SegvAnalysis:
 Segfault happened at: 0x7f1233f14add <XQueryExtension+45>: mov    0x968(%rdi),%rax
 PC (0x7f1233f14add) ok
 source "0x968(%rdi)" (0xffffffffd63a1188) not located in a known VMA region (needed readable region)!
 destination "%rax" ok
SegvReason: reading unknown VMA

我从未使用过disper,但我可以推荐xrandr作为替代品。

答案2

我也能确认这个错误。

但好消息!这似乎非常容易修复

我生成了一个修补版本(如果感兴趣的话可以在 Github 上找到),

git clone <URL>
cd disper
make all
sudo make install

但请不要无条件地相信随机源(例如我)。

请阅读下面的完整指南,了解如何自己完成此操作!

挑选 AUR 到 Debian 上游

克隆并添加远程

克隆 Debian 源代码(源这里),

git clone https://salsa.debian.org/python-team/applications/disper.git
cd disper

添加平均房颤 上游作为远程,

git remote add AUR https://github.com/apeyser/disper
git fetch --all
git remote -v

[输出]

AUR https://github.com/apeyser/disper (fetch)
AUR https://github.com/apeyser/disper (push)
origin  https://salsa.debian.org/python-team/applications/disper.git (fetch)
origin  https://salsa.debian.org/python-team/applications/disper.git (push)

是的不同的存储库—— 不仅仅是不同的分支 —— 但对于这个 cherry-picking 补丁来说,令人惊讶的是方便的只是假装一会儿。

只是不要合并除非你有充分的理由,否则不要删除这些“分支”,以免造成不必要的混乱。

检查master一下

“重命名”(创建新的分支)各自的master(为您自己的记录),

git checkout -b AUR-master AUR/master
git checkout -b debian-master debian/master

[输出]

Branch 'AUR-master' set up to track remote branch 'master' from 'AUR'.
Switched to a new branch 'AUR-master'
Switched to a new branch 'debian-master'

对此进行理智检查,

git branch -vv

[输出]

  AUR-master    4c36710 [AUR/master] Update README
* debian-master e3ca840 d/control: Remove ancient X-Python-Version field
  debian/master e3ca840 [origin/debian/master] d/control: Remove ancient X-Python-Version field

看起来不错

你可以像这样探索和查看差异,

git log --graph --decorate --oneline debian-master
git log --graph --decorate --oneline AUR-master
git diff debian-master AUR-master

识别新的提交

我们感兴趣的是,

git log debian-master -1

[输出]

commit e3ca840a48208a79a5c96da1bd9f6f1b845f5773 (HEAD -> debian-master, origin/debian/master, origin/HEAD, debian/master)
Author: Ondřej Nový <[email protected]>
Date:   Mon May 14 08:10:02 2018 +0200

    d/control: Remove ancient X-Python-Version field

不包括最近的补丁在这里,

git log AUR-master -4

[输出]

commit 4c367108b370d57ce178863fed7640bb846d3186 (AUR/master, AUR-master)
Author: Alexander Peyser <[email protected]>
Date:   Thu Aug 23 17:16:42 2018 +0200

    Update README

commit 4c635d65244bcb2a86a9da86d00007de96a23626 (tag: disper-0.3.1.1)
Author: Alexander Peyser <[email protected]>
Date:   Thu Aug 23 16:02:23 2018 +0200

    apply XOpenDisplay return type patch

commit 01132563030b9230e8f007794c3269dd913c3052
Author: Alexander Peyser <[email protected]>
Date:   Thu Aug 23 16:17:07 2018 +0200

    Update INSTALL and README

commit d0498b7892b36d183d09b3d905296ee7456ff24d (tag: disper-0.3.1)
Author: [email protected] <>
Date:   Tue Apr 23 12:01:43 2013 +0200

    also update Debian version number

三 (3) 个新提交!第二个是修复补丁。

挑选(我们想要的)

切换到debian-master本地版本并进行分支(不要将合并与上游混淆),

git checkout debian-master
git checkout -b local
git cherry-pick 0113256..4c36710

[输出]

[local d05e2bd] apply XOpenDisplay return type patch
 Author: Alexander Peyser <[email protected]>
 Date: Thu Aug 23 16:02:23 2018 +0200
 1 file changed, 12 insertions(+), 2 deletions(-)
error: could not apply 4c36710... Update README
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

当然,我们预计会发生合并冲突......

但你真的期望它仅有的 README?让我们修复它!

git mergetool  # or, vimdiff README (or whatever)
diff -NaurbB README* --color
git cherry-pick --continue
rm README.orig

我合并了新的部分README并进行了健全性检查,然后继续使用不变的提交消息。

升级版本

确定版本的保存位置,

rg 0.3.1  # or, grep -rn 0.3.1 (or whatever)
git blame debian/changelog

因此,您可以添加虚拟发布部分debian/changelog(供您自己的记录),也可以不添加。

vim debian/changelog
git add debian/changelog

我复制0.3.1-3到了新的0.3.1-4部分并写了一些字。

测试一下!

它有用吗?

make <Tab>
make all -n
make install -n

我觉得不错。让我们安装,

make all
sudo make install
~~

Confirm that it works,

~~~bash
disper -l

让我们提交并标记它(以供将来参考),

git commit -v
git tag local/0.3.1-4 -a

我真的建议使用标签或其他东西以及版本升级。这对未来的你来说很好。

祝您黑客愉快。

答案3

Disper 不再存在于 Debian 中,并且可能很快就会从 Ubuntu 中消失。

我写了一个非常非常简单的替代品并将其发布在这里:https://github.com/fidergo-stephane-gourichon/simplest_external_screen_config

这是它的自述文件:

对于称为“X”或“X11”的窗口系统来说,非常简单的外部显示管理。

确实如此不是处理一般情况。

预期用例:将屏幕插入到机器的输出中。调用此脚本,可选地使用一个词来说明预期用途:

  • 镜像使两个显示器覆盖(大致)相同的可可视化视频内存区域
  • 左、右、上、下,覆盖主显示屏外相对定位的区域

例如:

simplest_external_screen_config
simplest_external_screen_config mirror
simplest_external_screen_config left
simplest_external_screen_config right
simplest_external_screen_config above
simplest_external_screen_config below

我已将非开发人员的安装说明放到了 README.me 中。

相关内容