web-dev-qa-db-ja.com

18.04のdisper -lは、セグメンテーションエラーを生成します。代替手段はありますか?

どのモニターに接続されているか、およびvgaまたはhdmiのいずれかを備えた外部モニターが接続されているかどうかを判断するために、多くの世代のUbuntuでdisper -lを使用しました。 18.04にアップグレードすると、このコマンドがセグメンテーションフォールトを生成していることがわかりました。 このバグレポート で報告されているように、問題はしばらく続いているようですが、誰もそれについて何もしていないようです。同じ機能を持つ別のプログラムはありますか? xdpyinfoを見てきましたが、これには多くの情報がありますが、必要なものではありません。モニターを区別するのに十分な解像度情報に加えて、複数のモニターが接続されているかどうか、およびどの接続であるかについての情報です。

ありがとう!

4
Leo Simon

私はこれを確認することができます バグ1655275 、それはいくつかのアンチメルトダウンまたはアンチスペクターの修正(または CVE-2017-1000364 with Scilab )私のapport crash log in コメント#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を推奨できます。

4
N0rbert

バグも確認できます。

しかし、良いニュースです!これは非常に修正しやすいのようです。

パッチを適用したバージョンを生成しました(興味がある場合はGithubで入手可能)、

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

ただし、無条件にランダムソース(例:私)を信頼しないでください。

代わりに、これを自分で行う方法に関する完全なガイドについては、以下をお読みください!

CherryがAURを上流のDebianにピッキング

リモートのクローニングと追加

Debianソースのクローン(source here )、

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

追加 AURpstream リモートとして、

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)

はい、それらは異なるリポジトリです-単に異なるブランチではありません-しかし、このチェリーピッキングパッチの場合、驚くほど便利ですしばらくの間、ふりをしてください。

正当な理由がない限り、不要な混乱を引き起こさないように、ただマージしない「ブランチ」。

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

not includeここで最近のパッチ、

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つの新しいコミット! 2つ目は修正パッチです。

チェリーピッキング(欲しいもの)

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'

もちろん、マージの競合が予想されました...

しかし、あなたは本当にonlyREADMEであると本当に期待していましたか?それを修正しましょう!

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

READMEのNiceの新しいセクションにマージし、健全性をチェックし、変更されていないコミットメッセージを続行しました。

バージョンをバンプする

バージョンが保存されている場所を特定し、

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

タグまたは何かとバージョンバンプをお勧めします。未来への素敵なあなた。

ハッピーハッキング。

2
Yngman