shiro_usagi
@shiro_usagi (shiro usagi)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

stow でgrep と groff だけリンク作成が出来ない(未解決)

質問 stow で何故か grep と groff だけ/usr/local/binへのリンク作成が出来ません。どうすればいいでしょうか?

他のソフトウェアはリンク作成出来ています。
MacOSX 10.9.5
$ /usr/local/bin/stow -v
stow (GNU Stow) version 2.3.1

エラー内容

./configure --prefix=/usr/local/stow/〜 実行後、make && make install
stow -vv groff-1224
stow -vv -D groff-1224
又は
stow -vv -R groff-1224

/usr/local/binをみると、リンク作成が出来てません。

リンク削除時に groffならば、
bin/groff did not exist to be unstowed
と出てリンクが存在していないことが分かります。他のソフトウェアはリンク作成出来ているので
gで始まると、失敗しているように見えます。

行ったこと

上記以外で行ったことは
unalias -a
の後に
stow -vv groff-1224

以上

参考リンク
GNU Stow で 環境を汚さずに tarballのmake installでインストール・アンインストールする - Qiita
https://qiita.com/katoken-0215/items/dd4b309ecfc76cae0a76

追記 2020年08月17日15:00頃

/usr/local/binをstow以外空っぽにして試しました。
groff ggrepのみリンク作成不可となる、同じ結果でした。

書き忘れ
v5.16.2でもv5.32.0でも結果は同じでした。

追記 2020年08月20日

bash 環境にて stow 2.2.2で再試行しました。
結果は同じ。
groff ggrepのみリンク作成不可となる。
私の環境が悪いのかもしれませんが今の所全くの不明です。
stowのインスト先は全て /usr/local/bin/ 。

0

1Answer

stowコマンドでインストールする際に、すでにインストール先に同名のファイル(実際にはリンクですが)が存在するとリンク作成が失敗するはずです。

以下のページが詳しいです。
XStowでStowの代わりにパッケージ管理

重複するファイルに対してどのように対処するか(無視する/すでに存在する場合インストールしない/すでに存在した場合でも上書きしてしまう)をオプションで指定する方法があります。
その他、ファイルが両方共必要な場合、手作業になりますがあらかじめ重複するファイルをリネームしておいて両方インストールする方法もあります。

「man stow」より引用

--ignore=REGEX
Ignore files ending in this Perl regex.

--defer=REGEX
Don't stow files beginning with this Perl regex if the file is already stowed to another package.

--override=REGEX
Force stowing files beginning with this Perl regex if the file is already stowed to another package.

0Like

Comments

  1. @shiro_usagi

    Questioner

    local/binの下は重複ファイルはないです。

    他のアプリは今も出来てg〜だけは変なので考えたら
    perlが2012年頃のv5.16.2でした。これが問題かもしれません。
    もっともstowドキュメントからはperl versionの必要要件は見つけていません。
    他は最新版なのにperlだけ古いのは環境としてマズそうです。
    perlには古いバージョンを使いたいこだわりがないので最新版にしてみます。
  2. > local/binの下は重複ファイルはないです。

    念のため確認ですが、インストール対象にはbin以外にもshare,lib,etc…などが含まれるケースがあると思いますが、そちらの方(local/shareなど)も重複ファイルが無いということで合ってますか?(重複が無いというのがそういう意味で書いているのであればすみません。)

    あと試せることとして自分が思いつくのは…、
    ・あらかじめインストール対象ディレクトリの中を必要最低限のファイルにしてからstow出来るか試してみる。
    ・xstowを試す
    ・stowの旧版(2.2.2あたり?)を試してみる
    あたりでしょうか。
  3. @shiro_usagi

    Questioner

    いつも有り難う御座います。助かります。

    >そちらの方(local/shareなど)も重複ファイルが無いということで合ってますか?(重複が無いというのがそういう意味で書いているのであればすみません。)

    はい。gnu-grepはそうです。grepをアンインストールして試しています。
    groffは未確認です。

    古いバージョンは試す価値がありますね。時間のある時にstowバージョンダウンしてみます。
    xstowはcの知識がいると思われるので筆者はウン年前のC経験だけでは無理だと思います。

    >・あらかじめインストール対象ディレクトリの中を必要最低限のファイルにしてからstow出来るか試してみる。

    grepやgroffの問題が起きてから、vimやruby、openssl、readlineなど他は問題なくインストールできていますので、空にするかは関係ないと思われます。

    ちなみにgrepやgroff以外で重複する時はあります。infoデータベースです。
    この時、stowは「CONFLICT」のメッセージを出します。「CONFLICT」発生後も他のファイルはリンクを張っています。
    「CONFLICT」発生後も以降の処理を止めず最後まで行う仕様と思われます。

Your answer might help someone💌