debian11にslackをインストールする

Linux版Slackはこちらからダウンロード可
Linux | ダウンロード | Slack

※本記事はSlack-desktop-4.26.1で検証しています。

■問題点
debian11にslack公式からダウロードしたdebファイルをインストールしようとすると、以下のエラーメッセージが表示されてインストールできない。

以下のパッケージには満たせない依存関係があります:
slack-desktop : 依存: libappindicator3-1 しかし、インストールすることができません
N: ディレクトリ '/etc/apt/sources.list.d/' の 'slack.list.backup' が無効なファイル名拡張子を持っているため、無視します
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

■解決方法
検索したところ、stack overflowにやり方が載っていました。
debian - Missing libappindicator3-1 installing Slack - Stack Overflow

この記事を見るとlibappindicator3-1を代替パッケージに置き換えたdebファイルを再生成すればよいみたいです
やり方は以下の通り

1.slack-desktop-4.26.1-amd64.debをunpackディレクトリを作成してそこに展開する
dpkg-deb -x slack-desktop-4.26.1-amd64.deb unpack
dpkg-deb --control slack-desktop-4.26.1-amd64.deb unpack/DEBIAN

2.controlファイルの編集
./unpack/DEBIAN/controlをエディタで開いてい libappindicator3-1 を libayatana-appindicator3-1に置換する

3.debファイルを作成する
dpkg -b unpack slack.deb

4.作ったdebファイルをインストールする
sudo apt install ./slack.deb

5.aptソースからslackソースを削除、apt updateしたときに毎回新バージョンのslackがあると表示されるため
/etc/apt/source.list.d/slack.listを削除する


以上

/以下のすべてのファイル所有者をrootに変更してシステム破壊して復旧した件

rootユーザで操作時にlsコマンドの色つけがないのが不便だったので、普段使いのユーザーアカウントfooから.configなどを/rootにコピーした。そのままだとファイル所有者がもとのユーザーのfooのままだったのでファイル所有者をrootに変更しようとした。
このときのコマンドが事件の発端だった。私は以下のコマンドを打ち込んでしまいました。

#cd /root
#chown -R root:root .*

↑これをやると「.*」は「..」も含まれるので「/root」の「..」は「/」となるので、つまり/以下のファイルすべてを再帰的に所有者rootにしてしまったのである。こうなるとデーモンやサービスのアカウントもログや設定ファイルにアクセスできなくなり大変なことになってしまいました。superuser以外システムを全く操作できなくなってしまいました。
もしやるとするなら


#cd /root
#chown -R root:root .[^\.]*

もしくは
#chown -R root:root /root



調べるとRedhatには、パッケージマネージャーの管理下にあるパッケージすべてをもとのファイルパーミッション、ファイル所有者に戻すコマンドがあるらしいです。私の使っているOSはdebianなので類似のコマンドがないか探したが見つかりませんでした。代わりに全パッケージを再インストールすれば同様の効果が得られることがわかりました。

以下のコマンドで全パッケージを再インストールしました。

dpkg --get-slections \* | awk '{print $1}' | xargs -l1 apt reinstall

これだけだと、一部ファイルのパーミッションがおかしいので以下も変更します。

■sudo
#chown root:root /usr/bin/sudo
#chmod 4755 /usr/bin/sudo
※4755の4000は「SUID」

■aptキャッシュ
sudo chown -R man:man /var/cache/man/
sudo chown -R man:man /var/cache/man/*

■sddmの設定ファイルパーミッション
sudo chown -R sddm:sddm /var/lib/sddm/.config


■これをしないとKDEスクリーンロックしたときに、正しいパスワードを入力してもロック解除できなくなる
sudo chmod 4755 /sbin/unix_chkpwd

これで一通り使えるようにはなったけど、今後もファイル所有者やパーミッション設定が間違っている箇所があれば追記していきます。

任意のユーザーがsudoコマンドを使えるようにする

sudoコマンドを使うには、sudoコマンドを使いたいユーザーがsudoグループに含まれている必要が有る
そのため、gpasswdコマンドを使って任意のユーザーをsudoグループに登録する。
やり方は以下のコマンドで

#gpasswd -a marin sudo

※marinがユーザー名でsudoがグループ名

fortune1

Ashleigh Brilliant

Your reasoning is excellent, it's only your basic assumptions that are wrong.

アシュレイ・ブリリアントの名言
en.wikipedia.org


日本語訳が見当たらなかったで、Deeplで翻訳

あなたの推論は素晴らしい。ただ、あなたの基本的な前提が間違っている。

どういう意味?
アシュレイ・ブリリアントさんはイギリスの人で皮肉の聞いた名言が多いらしいです。
そのままの意だと前提が変わってしまえば、どんな意見も正しいという事になる。
遠回しに”君の意見は基本的な前提が間違っているので、推論は全くダメだ”ということなんかな。

iphone→debianへ写真をUSB経由でコピーする

iphoneで撮った写真をdebianにUSBで接続してコピーしたいのにマウントできない問題につまづきました。
Androidだと簡単にマウントできるのですが、iphoneは認証が必要みたいです。

以下ブログにやり方が記載されていました。

https://matoken.org/blog/2019/10/26/mount-iphone-7-iso12-on-ubuntu-19-10-and-copy-data/

■やり方
1.以下のパッケージをインストールします。

apt install ifuse libimobiledevice-utils

・ifuse
iFuse は FUSE ファイルシステムドライバで、libiphone を使って iPhoneiPod Touch を脱獄せずに接続します。
iFuse は通常の USB ケーブルで Apple AFC のネイティブプロトコルを使ってデバイスのメディアファイルにアクセスします。
iFuse は現在動作可能な状態にありますが、まだ開発中であり、実験的であると考えるべきでしょう。

・libimobiledevice-utils
  iPhoneなどApple社製デバイスとの通信ユーティリティです。

2.idevicepair pairコマンドを実行

idevicepair pairコマンドを実行すると、iphoneの画面に「このコンピュータを信頼しますか?」のダイアログが表示されるので”信頼”を選択します。
もう一度、idevicepair pairコマンドを実行するとペアリング成功となり、iphoneをマウントを各種ファイラー等でマウントしてiphoneのカメラ画像データをdebianにコピーすることができます。

iphoneを接続し直す度に、毎回上記手順を実施する必要があるので結構めんどくさいです。