TanmayPatil105 / procfetch

🎨 Yet another command-line system information utility written in C++
https://tanmaypatil105.github.io/procfetch/
GNU General Public License v3.0
23 stars 11 forks source link

Symlink error while installing using brew #126

Closed TanmayPatil105 closed 1 year ago

TanmayPatil105 commented 1 year ago

Error

==> ./configure --prefix=/home/linuxbrew/.linuxbrew/Cellar/procfetch/0.2.1
==> make install
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /home/linuxbrew/.linuxbrew
Could not symlink share/procfetch/ascii/arch.ascii
Target /home/linuxbrew/.linuxbrew/share/procfetch/ascii/arch.ascii
already exists. You may want to remove it:
  rm '/home/linuxbrew/.linuxbrew/share/procfetch/ascii/arch.ascii'
youpong commented 1 year ago

I tried to install and reinstall but could not reproduce. Please show me the steps to reproduce.

$ brew tap TanmayPatil105/tap
Running `brew update --auto-update`...
==> Tapping tanmaypatil105/tap
Cloning into '/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/tanmaypatil105/homebrew-tap'...
remote: Enumerating objects: 174, done.
remote: Counting objects: 100% (174/174), done.
remote: Compressing objects: 100% (120/120), done.
remote: Total 174 (delta 90), reused 117 (delta 44), pack-reused 0
Receiving objects: 100% (174/174), 23.25 KiB | 247.00 KiB/s, done.
Resolving deltas: 100% (90/90), done.
Tapped 3 formulae (18 files, 95.4KB).
$ brew install procfetch
==> Fetching tanmaypatil105/tap/procfetch
==> Downloading https://github.com/TanmayPatil105/procfetch/archive/refs/tags/v0.2.1.tar.gz
==> Downloading from https://codeload.github.com/TanmayPatil105/procfetch/tar.gz/refs/tags/v0.2.1
     #=O#-   #   #                                                            
==> Installing procfetch from tanmaypatil105/tap
==> ./configure
==> make
==> sudo mkdir -p /usr/share/procfetch/ascii
[sudo] password for youpong: 
==> sudo cp ascii/* /usr/share/procfetch/ascii/
🍺  /home/linuxbrew/.linuxbrew/Cellar/procfetch/0.2.1: 5 files, 210.5KB, built in 30 seconds
==> Running `brew cleanup procfetch`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /home/youpong/.cache/Homebrew/procfetch--0.2.0.tar.bz2... (347.1KB)
$ brew reinstall procfetch
==> Downloading https://formulae.brew.sh/api/formula.json
##O#-#                                                                        
==> Fetching tanmaypatil105/tap/procfetch
==> Downloading https://github.com/TanmayPatil105/procfetch/archive/refs/tags/v0.2.1.tar.gz
Already downloaded: /home/youpong/.cache/Homebrew/downloads/a8081e7544adfc95af3eee77a83b43c0f2ed7783bd5ae4e070646f25d4d17960--procfetch-0.2.1.tar.gz
==> Reinstalling tanmaypatil105/tap/procfetch 
==> ./configure
==> make
==> sudo mkdir -p /usr/share/procfetch/ascii
==> sudo cp ascii/* /usr/share/procfetch/ascii/
==> Downloading https://formulae.brew.sh/api/cask.json
##O#-#                                                                        
🍺  /home/linuxbrew/.linuxbrew/Cellar/procfetch/0.2.1: 5 files, 210.5KB, built in 13 seconds
==> Running `brew cleanup procfetch`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
TanmayPatil105 commented 1 year ago

Well I have reverted the commit since it was throwing an error! You can see in the above output it is running the old script

=> ./configure
==> make
==> sudo mkdir -p /usr/share/procfetch/ascii
==> sudo cp ascii/* /usr/share/procfetch/ascii/
youpong commented 1 year ago

I have done brew update and brew reinstall but could not reproduce.

$ brew update -v
Checking if we need to fetch /home/linuxbrew/.linuxbrew/Homebrew...
Checking if we need to fetch /home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/tanmaypatil105/homebrew-tap...
Fetching /home/linuxbrew/.linuxbrew/Homebrew...
Updating /home/linuxbrew/.linuxbrew/Homebrew...
Branch 'master' set up to track remote branch 'master' from 'origin'.
Switched to and reset branch 'master'
Your branch is up to date with 'origin/master'.
Switched to and reset branch 'stable'
Current branch stable is up to date.

Already up-to-date.
$ brew reinstall procfetch
==> Fetching tanmaypatil105/tap/procfetch
==> Downloading https://github.com/TanmayPatil105/procfetch/archive/refs/tags/v0.2.1.tar.gz
Already downloaded: /home/youpong/.cache/Homebrew/downloads/a8081e7544adfc95af3eee77a83b43c0f2ed7783bd5ae4e070646f25d4d17960--procfetch-0.2.1.tar.gz
==> Reinstalling tanmaypatil105/tap/procfetch 
==> ./configure
==> make
==> sudo mkdir -p /usr/share/procfetch/ascii
[sudo] password for youpong: 
==> sudo cp ascii/* /usr/share/procfetch/ascii/
🍺  /home/linuxbrew/.linuxbrew/Cellar/procfetch/0.2.1: 5 files, 210.5KB, built in 36 seconds
==> Running `brew cleanup procfetch`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
youpong commented 1 year ago

Here is a Dockerfile for Homebrew.

$ docker build -t homebrew .
$ docker run --rm -it homebrew /bin/bash --login

What instructions do reproduce it in this environment?

TanmayPatil105 commented 1 year ago

Try creating your tap youpong/homebrew-tap and go to commit. Then install. In the current tap there is no ./configure -C brew. I will change it once this gets fixed.

youpong commented 1 year ago

Now, The following is an excerpt from procfetch.rb in youpong/homebrew-tap:

    def install
        system "./configure", "--prefix=#{prefix}"
        system "make", "install"
    end

In the Docker environment, I have done brew install and brew reinstall but could not reproduce.

TanmayPatil105 commented 1 year ago

I uninstalled procfetch first then tried to install using your tap. Still the same error,

❯ brew install youpong/tap/procfetch
==> Fetching youpong/tap/procfetch
==> Downloading https://github.com/TanmayPatil105/procfetch/archive/refs/tags/v0
Already downloaded: /home/tanmay/.cache/Homebrew/downloads/a8081e7544adfc95af3eee77a83b43c0f2ed7783bd5ae4e070646f25d4d17960--procfetch-0.2.1.tar.gz
==> Installing procfetch from youpong/tap
==> ./configure --prefix=/home/linuxbrew/.linuxbrew/Cellar/procfetch/0.2.1
==> make install
-Error: The `brew link` step did not complete successfully
-The formula built, but is not symlinked into /home/linuxbrew/.linuxbrew
-Could not symlink share/procfetch/ascii/arch.ascii
-Target /home/linuxbrew/.linuxbrew/share/procfetch/ascii/arch.ascii
already exists. You may want to remove it:
  rm '/home/linuxbrew/.linuxbrew/share/procfetch/ascii/arch.ascii'

To force the link and overwrite all conflicting files:
  brew link --overwrite procfetch

To list all files that would be deleted:
  brew link --overwrite --dry-run procfetch

Possible conflicting files are:
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/arch.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/archcraft.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/asahi.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/blackarch.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/bodhilinux.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/centos.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/debian.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/deepin.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/elementaryos.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/endeavouros.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/fedora.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/garudalinux.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/gentoo.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/kali.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/kubuntu.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/linux.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/linuxlite.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/linuxmint.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/lubuntu.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/manjaro.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/mxlinux.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/navylinux.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/opensuse.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/parrot.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/peppermintos.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/pop!_os.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/redhat.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/rocky.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/slackware.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/steamos.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/ubuntu.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/xubuntu.ascii
/home/linuxbrew/.linuxbrew/share/procfetch/ascii/zorin.ascii
==> Summary
🍺  /home/linuxbrew/.linuxbrew/Cellar/procfetch/0.2.1: 38 files, 225KB, built in 12 seconds
==> Running `brew cleanup procfetch`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
youpong commented 1 year ago

Looks like you have a file(s) that is not expected to exist and is causing the symlink to fail. Could you install again with the -v option to get more details?

$ brew install -v youpong/tap/procfetch
TanmayPatil105 commented 1 year ago

It threw the same error. It was probably because /home/linuxbrew/.linuxbrew/share/procfetch/ascii/*.ascii already existed. Removed them and it worked. Let me try on TanmayPatil105/homebrew-tap.

TanmayPatil105 commented 1 year ago

Yupp, It is working now! Closing 👍🏻