ivan-hc / ArchImage

Build AppImage packages for all distributions but including Arch Linux packages. Powered by JuNest.
GNU General Public License v3.0
106 stars 1 forks source link

Incorrect key if using Chaotic AUR #25

Closed kenderipa closed 3 days ago

kenderipa commented 3 days ago

Hi,

if Chaotic AUR is activated (from the initial script), the following errors can be seen in the logs:

==> ERROR: Remote key not fetched correctly from keyserver.
==> ERROR: 3056513887B78AEB could not be locally signed.
==> ERROR: The keyring file /usr/share/pacman/keyrings/chaotic.gpg does not exist.
warning: database file for 'multilib' does not exist (use '-Sy' to download)
gpg: directory '/home/kender/ArchImage/youtube-dlg/yt-dlg.AppDir/.gnupg' created
gpg: WARNING: server 'dirmngr' is older than us (2.2.43 < 2.4.5)
gpg: Note: Outdated servers may lack important security fixes.
gpg: Note: Use the command "gpgconf --kill all" to restart them.
gpg: keyserver receive failed: Server indicated a failure
 -> No AUR package found for binutils debugedit gzip
 there is nothing to do

It also started out of the blue, since I was able to build this image yesterday.

ivan-hc commented 3 days ago

Are them usig a different one?

EDIT: I can see that they have renewed the website https://aur.chaotic.cx/ , what else?

kenderipa commented 3 days ago

EDIT: I can see that they have renewed the website https://aur.chaotic.cx/ , what else?

That's all, I think.

ivan-hc commented 3 days ago

can I see your script?

kenderipa commented 3 days ago
#!/usr/bin/env bash

# NAME OF THE APP BY REPLACING "SAMPLE"
APP=yt-dlg
BIN="$APP" #CHANGE THIS IF THE NAME OF THE BINARY IS DIFFERENT FROM "$APP" (for example, the binary of "obs-studio" is "obs")
DEPENDENCES="ffmpeg"
BASICSTUFF="binutils debugedit gzip"
COMPILERS="base-devel"

# CREATE THE APPDIR (DON'T TOUCH THIS)...
if ! test -f ./appimagetool; then
        wget -q "$(wget -q https://api.github.com/repos/probonopd/go-appimage/releases -O - | sed 's/"/ /g; s/ /\n/g' | grep -o 'https.*continuous.*tool.*86_64.*mage$')" -O appimagetool
        chmod a+x appimagetool
fi
mkdir -p "$APP".AppDir

# ENTER THE APPDIR
cd "$APP".AppDir || return

# SET APPDIR AS A TEMPORARY $HOME DIRECTORY, THIS WILL DO ALL WORK INTO THE APPDIR
HOME="$(dirname "$(readlink -f $0)")"

# DOWNLOAD AND INSTALL JUNEST (DON'T TOUCH THIS)
if ! test -d "$HOME/.local/share/junest"; then
        git clone https://github.com/fsquillace/junest.git ./.local/share/junest
        if wget --version | head -1 | grep -q ' 1.'; then
                wget -q --show-progress https://github.com/ivan-hc/junest/releases/download/continuous/junest-x86_64.tar.gz
        else
                wget https://github.com/ivan-hc/junest/releases/download/continuous/junest-x86_64.tar.gz
        fi
        ./.local/share/junest/bin/junest setup -i junest-x86_64.tar.gz
        rm -f junest-x86_64.tar.gz

        # ENABLE MULTILIB (optional)
        echo -e "\n[multilib]\nInclude = /etc/pacman.d/mirrorlist" >> ./.junest/etc/pacman.conf

        # ENABLE LIBSELINUX FROM THIRD PARTY REPOSITORY
        if [[ "$DEPENDENCES" = *"libselinux"* ]]; then
                echo -e "\n[selinux]\nServer = https://github.com/archlinuxhardened/selinux/releases/download/ArchLinux-SELinux\nSigLevel = Never" >> ./.junest/etc/pacman.conf
        fi

        # ENABLE CHAOTIC-AUR
        function _enable_chaoticaur(){
                ./.local/share/junest/bin/junest -- sudo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
                ./.local/share/junest/bin/junest -- sudo pacman-key --lsign-key 3056513887B78AEB
                ./.local/share/junest/bin/junest -- sudo pacman-key --populate chaotic
                ./.local/share/junest/bin/junest -- sudo pacman --noconfirm -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
                echo -e "\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist" >> ./.junest/etc/pacman.conf
        }
        _enable_chaoticaur

        # CUSTOM MIRRORLIST, THIS SHOULD SPEEDUP THE INSTALLATION OF THE PACKAGES IN PACMAN (COMMENT EVERYTHING TO USE THE DEFAULT MIRROR)
        function _custom_mirrorlist(){
                #COUNTRY=$(curl -i ipinfo.io | grep country | cut -c 15- | cut -c -2)
                rm -R ./.junest/etc/pacman.d/mirrorlist
                wget -q https://archlinux.org/mirrorlist/all/ -O - | awk NR==2 RS= | sed 's/#Server/Server/g' >> ./.junest/etc/pacman.d/mirrorlist # ENABLES WORLDWIDE MIRRORS
                #wget -q https://archlinux.org/mirrorlist/?country="$(echo $COUNTRY)" -O - | sed 's/#Server/Server/g' >> ./.junest/etc/pacman.d/mirrorlist # ENABLES MIRRORS OF YOUR COUNTY
        }
        _custom_mirrorlist

        # BYPASS SIGNATURE CHECK LEVEL
        sed -i 's/#SigLevel/SigLevel/g' ./.junest/etc/pacman.conf
        sed -i 's/Required DatabaseOptional/Never/g' ./.junest/etc/pacman.conf

        # UPDATE ARCH LINUX IN JUNEST
        ./.local/share/junest/bin/junest -- sudo pacman -Syy
        ./.local/share/junest/bin/junest -- sudo pacman --noconfirm -Syu
else
        cd ..
        echo "-------------------------------------"
        echo " RESTORATION OF BACKUPS IN PROGRESS"
        echo "-------------------------------------"
        rsync -av ./junest-backups/* ./"$APP".AppDir/.junest/ | echo -e "\n◆ Restore the content of the Arch Linux container, please wait"
        rsync -av ./stock-cache/* ./"$APP".AppDir/.cache/ | echo "◆ Restore the content of JuNest's ~/.cache directory"
        rsync -av ./stock-local/* ./"$APP".AppDir/.local/ | echo -e "◆ Restore the content of JuNest's ~/.local directory\n"
        echo -e "-----------------------------------------------------------\n"
        cd ./"$APP".AppDir || return
fi

# INSTALL THE PROGRAM USING YAY
./.local/share/junest/bin/junest -- yay -Syy
./.local/share/junest/bin/junest -- gpg --keyserver keyserver.ubuntu.com --recv-key C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF # UNCOMMENT IF YOU USE THE AUR
if [ ! -z "$BASICSTUFF" ]; then
        ./.local/share/junest/bin/junest -- yay --noconfirm -S "$BASICSTUFF"
fi
if [ ! -z "$COMPILERS" ]; then
        ./.local/share/junest/bin/junest -- yay --noconfirm -S "$COMPILERS"
fi
if [ ! -z "$DEPENDENCES" ]; then
        ./.local/share/junest/bin/junest -- yay --noconfirm -S "$DEPENDENCES"
fi
if [ ! -z "$APP" ]; then
        ./.local/share/junest/bin/junest -- yay --noconfirm -S "$APP"
else
        echo "No app found, exiting" exit 0
fi

# DO A BACKUP OF THE CURRENT STATE OF JUNEST
cd ..
echo -e "\n-----------------------------------------------------------"
echo " BACKUP OF JUNEST FOR FURTHER APPIMAGE BUILDING ATTEMPTS"
echo "-----------------------------------------------------------"
mkdir -p ./junest-backups
mkdir -p ./stock-cache
mkdir -p ./stock-local
rsync -av --ignore-existing ./"$APP".AppDir/.junest/* ./junest-backups/ | echo -e "\n◆ Backup the content of the Arch Linux container, please wait"
rsync -av --ignore-existing ./"$APP".AppDir/.cache/* ./stock-cache/ | echo "◆ Backup the content of JuNest's ~/.cache directory"
rsync -av --ignore-existing ./"$APP".AppDir/.local/* ./stock-local/ | echo -e "◆ Backup the content of JuNest's ~/.local directory\n"
echo -e "-----------------------------------------------------------\n"
cd ./"$APP".AppDir || return

# SET THE LOCALE (DON'T TOUCH THIS)
#sed "s/# /#>/g" ./.junest/etc/locale.gen | sed "s/#//g" | sed "s/>/#/g" >> ./locale.gen # UNCOMMENT TO ENABLE ALL THE LANGUAGES
#sed "s/#$(echo $LANG)/$(echo $LANG)/g" ./.junest/etc/locale.gen >> ./locale.gen # ENABLE ONLY YOUR LANGUAGE, COMMENT IF YOU NEED MORE THAN ONE
#rm ./.junest/etc/locale.gen
#mv ./locale.gen ./.junest/etc/locale.gen
rm ./.junest/etc/locale.conf
#echo "LANG=$LANG" >> ./.junest/etc/locale.conf
sed -i 's/LANG=${LANG:-C}/LANG=$LANG/g' ./.junest/etc/profile.d/locale.sh
#./.local/share/junest/bin/junest -- sudo pacman --noconfirm -S glibc gzip
#./.local/share/junest/bin/junest -- sudo locale-gen

# ...ADD THE ICON AND THE DESKTOP FILE AT THE ROOT OF THE APPDIR...
rm -R -f ./*.desktop
LAUNCHER=$(grep -iRl $BIN ./.junest/usr/share/applications/* | grep ".desktop" | head -1)
cp -r "$LAUNCHER" ./
ICON=$(cat $LAUNCHER | grep "Icon=" | cut -c 6-)
cp -r ./.junest/usr/share/icons/*"$ICON"* ./ 2>/dev/null
cp -r ./.junest/usr/share/icons/hicolor/22x22/apps/*"$ICON"* ./ 2>/dev/null
cp -r ./.junest/usr/share/icons/hicolor/24x24/apps/*"$ICON"* ./ 2>/dev/null
cp -r ./.junest/usr/share/icons/hicolor/32x32/apps/*"$ICON"* ./ 2>/dev/null
cp -r ./.junest/usr/share/icons/hicolor/48x48/apps/*"$ICON"* ./ 2>/dev/null
cp -r ./.junest/usr/share/icons/hicolor/64x64/apps/*"$ICON"* ./ 2>/dev/null
cp -r ./.junest/usr/share/icons/hicolor/128x128/apps/*"$ICON"* ./ 2>/dev/null
cp -r ./.junest/usr/share/icons/hicolor/192x192/apps/*"$ICON"* ./ 2>/dev/null
cp -r ./.junest/usr/share/icons/hicolor/256x256/apps/*"$ICON"* ./ 2>/dev/null
cp -r ./.junest/usr/share/icons/hicolor/512x512/apps/*"$ICON"* ./ 2>/dev/null
cp -r ./.junest/usr/share/icons/hicolor/scalable/apps/*"$ICON"* ./ 2>/dev/null
cp -r ./.junest/usr/share/pixmaps/*"$ICON"* ./ 2>/dev/null

# TEST IF THE DESKTOP FILE AND THE ICON ARE IN THE ROOT OF THE FUTURE APPIMAGE (./*AppDir/*)
if test -f ./*.desktop; then
        echo -e "◆ The .desktop file is available in $APP.AppDir/\n"
elif test -f ./.junest/usr/bin/"$BIN"; then
        echo -e "◆ No .desktop file available for $APP, creating a new one...\n"
        cat <<-HEREDOC >> ./"$APP".desktop
        [Desktop Entry]
        Version=1.0
        Type=Application
        Name=$(echo "$APP" | tr a-z A-Z)
        Comment=
        Exec=$BIN
        Icon=tux
        Categories=Utility;
        Terminal=true
        StartupNotify=true
        HEREDOC
        wget https://raw.githubusercontent.com/Portable-Linux-Apps/Portable-Linux-Apps.github.io/main/favicon.ico -O ./tux.png
else
        echo "No binary in path... aborting all the processes."
        exit 0
fi

# ...AND FINALLY CREATE THE APPRUN, IE THE MAIN SCRIPT TO RUN THE APPIMAGE!
# EDIT THE FOLLOWING LINES IF YOU THINK SOME ENVIRONMENT VARIABLES ARE MISSING
rm -R -f ./AppRun
cat >> ./AppRun << 'EOF'
#!/bin/sh
HERE="$(dirname "$(readlink -f $0)")"
export UNION_PRELOAD=$HERE
export JUNEST_HOME=$HERE/.junest
export PATH=$PATH:$HERE/.local/share/junest/bin

if test -f /etc/resolv.conf; then ETC_RESOLV=' --bind /etc/resolv.conf /etc/resolv.conf '; fi
if test -d /media; then MNT_MEDIA_DIR=' --bind /media /media '; fi
if test -d /mnt; then MNT_DIR=' --bind /mnt /mnt '; fi
if test -d /opt; then OPT_DIR=' --bind /opt /opt '; fi
if test -d /run/user; then USR_LIB_LOCALE_DIR=' --bind /usr/lib/locale /usr/lib/locale '; fi
if test -d /usr/share/fonts; then USR_SHARE_FONTS_DIR=' --bind /usr/share/fonts /usr/share/fonts '; fi
if test -d /usr/share/themes; then USR_SHARE_THEMES_DIR=' --bind /usr/share/themes /usr/share/themes '; fi

BINDS=" $ETC_RESOLV $MNT_MEDIA_DIR $MNT_DIR $OPT_DIR $USR_LIB_LOCALE_DIR $USR_SHARE_FONTS_DIR $USR_SHARE_THEMES_DIR "

if test -f $JUNEST_HOME/usr/lib/libselinux.so; then export LD_LIBRARY_PATH=/lib/:/lib64/:/lib/x86_64-linux-gnu/:/usr/lib/:"${LD_LIBRARY_PATH}"; fi

EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2- | sed -e 's|%.||g')
$HERE/.local/share/junest/bin/junest -n -b "$BINDS" -- $EXEC "$@"
EOF
chmod a+x ./AppRun

# REMOVE "READ-ONLY FILE SYSTEM" ERRORS
sed -i 's#${JUNEST_HOME}/usr/bin/junest_wrapper#${HOME}/.cache/junest_wrapper.old#g' ./.local/share/junest/lib/core/wrappers.sh
sed -i 's/rm -f "${JUNEST_HOME}${bin_path}_wrappers/#rm -f "${JUNEST_HOME}${bin_path}_wrappers/g' ./.local/share/junest/lib/core/wrappers.sh
sed -i 's/ln/#ln/g' ./.local/share/junest/lib/core/wrappers.sh
sed -i 's#--bind "$HOME" "$HOME"#--bind /home /home --bind-try /run/user /run/user#g' .local/share/junest/lib/core/namespace.sh
sed -i 's/rm -f "$file"/test -f "$file"/g' ./.local/share/junest/lib/core/wrappers.sh

# EXIT THE APPDIR
cd ..

# EXTRACT PACKAGE CONTENT
echo "-----------------------------------------------------------"
echo " EXTRACTING DEPENDENCES"
echo -e "-----------------------------------------------------------\n"

mkdir -p base
rm -R -f ./base/*

tar fx "$(find ./"$APP".AppDir -name "$APP-[0-9]*zst" | head -1)" -C ./base/
VERSION=$(cat ./base/.PKGINFO | grep pkgver | cut -c 10- | sed 's@.*:@@')

mkdir -p deps
rm -R -f ./deps/*

function _download_missing_packages() {
        localpackage=$(find ./"$APP".AppDir -name "$arg-[0-9]*zst")
        if ! test -f "$localpackage"; then
                ./"$APP".AppDir/.local/share/junest/bin/junest -- yay --noconfirm -Sw "$arg"
        fi
}

function _extract_package() {
        _download_missing_packages &> /dev/null
        pkgname=$(find ./"$APP".AppDir -name "$arg-[0-9]*zst")
        if test -f "$pkgname"; then
                if ! grep -q "$(echo "$pkgname" | sed 's:.*/::')" ./packages 2>/dev/null;then
                        echo "◆ Extracting $(echo "$pkgname" | sed 's:.*/::')"
                        tar fx "$pkgname" -C ./deps/
                        echo "$(echo "$pkgname" | sed 's:.*/::')" >> ./packages
                else
                        tar fx "$pkgname" -C ./deps/
                        echo "$(echo "$pkgname" | sed 's:.*/::')" >> ./packages
                fi
        fi
}

ARGS=$(echo "$DEPENDENCES" | tr " " "\n")
for arg in $ARGS; do
        _extract_package
        cat ./deps/.PKGINFO 2>/dev/null | grep "depend = " | grep -v "makedepend = " | cut -c 10- | grep -v "=\|>\|<" > depdeps
        rm -f ./deps/.*
done

DEPS=$(cat ./base/.PKGINFO 2>/dev/null | grep "depend = " | grep -v "makedepend = " | cut -c 10- | grep -v "=\|>\|<")
for arg in $DEPS; do
        _extract_package
        cat ./deps/.PKGINFO 2>/dev/null | grep "depend = " | grep -v "makedepend = " | cut -c 10- | grep -v "=\|>\|<" > depdeps
        rm -f ./deps/.*
done

DEPS2=$(cat ./depdeps 2>/dev/null | uniq)
for arg in $DEPS2; do
        _extract_package
        cat ./deps/.PKGINFO 2>/dev/null | grep "depend = " | grep -v "makedepend = " | cut -c 10- | grep -v "=\|>\|<" > depdeps2
        rm -f ./deps/.*
done

DEPS3=$(cat ./depdeps2 2>/dev/null | uniq)
for arg in $DEPS3; do
        _extract_package
        cat ./deps/.PKGINFO 2>/dev/null | grep "depend = " | grep -v "makedepend = " | cut -c 10- | grep -v "=\|>\|<" > depdeps3
        rm -f ./deps/.*
done

DEPS4=$(cat ./depdeps3 2>/dev/null | uniq)
for arg in $DEPS4; do
        _extract_package
        cat ./deps/.PKGINFO 2>/dev/null | grep "depend = " | grep -v "makedepend = " | cut -c 10- | grep -v "=\|>\|<" > depdeps4
        rm -f ./deps/.*
done

rm -f ./packages

# REMOVE SOME BLOATWARES
echo Y | rm -R -f ./"$APP".AppDir/.cache/yay/*
find ./"$APP".AppDir/.junest/usr/share/doc/* -not -iname "*$BIN*" -a -not -name "." -delete #REMOVE ALL DOCUMENTATION NOT RELATED TO THE APP
find ./"$APP".AppDir/.junest/usr/share/locale/*/*/* -not -iname "*$BIN*" -a -not -name "." -delete #REMOVE ALL ADDITIONAL LOCALE FILES
rm -R -f ./"$APP".AppDir/.junest/etc/makepkg.conf
rm -R -f ./"$APP".AppDir/.junest/etc/pacman.conf
rm -R -f ./"$APP".AppDir/.junest/usr/include #FILES RELATED TO THE COMPILER
rm -R -f ./"$APP".AppDir/.junest/usr/man #APPIMAGES ARE NOT MENT TO HAVE MAN COMMAND
rm -R -f ./"$APP".AppDir/.junest/var/* #REMOVE ALL PACKAGES DOWNLOADED WITH THE PACKAGE MANAGER

echo -e "\n-----------------------------------------------------------"
echo " IMPLEMENTING NECESSARY LIBRARIES (MAY TAKE SEVERAL MINUTES)"
echo -e "-----------------------------------------------------------\n"

# SAVE FILES USING KEYWORDS
BINSAVED="SAVEBINSPLEASE" # Enter here keywords to find and save in /usr/bin
SHARESAVED="SAVESHAREPLEASE" # Enter here keywords or file/folder names to save in both /usr/share and /usr/lib
LIBSAVED="SAVELIBSPLEASE" # Enter here keywords or file/folder names to save in /usr/lib

# STEP 2, FUNCTION TO SAVE THE BINARIES IN /usr/bin THAT ARE NEEDED TO MADE JUNEST WORK, PLUS THE MAIN BINARY/BINARIES OF THE APP
# IF YOU NEED TO SAVE MORE BINARIES, LIST THEM IN THE "BINSAVED" VARIABLE. COMMENT THE LINE "_savebins" IF YOU ARE NOT SURE.
function _savebins(){
        mkdir save
        mv ./"$APP".AppDir/.junest/usr/bin/*$BIN* ./save/
        mv ./"$APP".AppDir/.junest/usr/bin/bash ./save/
        mv ./"$APP".AppDir/.junest/usr/bin/bwrap ./save/
        mv ./"$APP".AppDir/.junest/usr/bin/env ./save/
        mv ./"$APP".AppDir/.junest/usr/bin/sh ./save/
        mv ./"$APP".AppDir/.junest/usr/bin/tr ./save/
        mv ./"$APP".AppDir/.junest/usr/bin/tty ./save/
        for arg in $BINSAVED; do
                mv ./"$APP".AppDir/.junest/usr/bin/*"$arg"* ./save/
        done
        rm -R -f ./"$APP".AppDir/.junest/usr/bin/*
        mv ./save/* ./"$APP".AppDir/.junest/usr/bin/
        rmdir save
}
#_savebins 2> /dev/null

# STEP 3, MOVE UNNECESSARY LIBRARIES TO A BACKUP FOLDER (FOR TESTING PURPOSES)
mkdir save

function _binlibs(){
        readelf -d ./"$APP".AppDir/.junest/usr/bin/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        mv ./"$APP".AppDir/.junest/usr/lib/ld-linux-x86-64.so* ./save/
        mv ./"$APP".AppDir/.junest/usr/lib/*$APP* ./save/
        mv ./"$APP".AppDir/.junest/usr/lib/*$BIN* ./save/
        mv ./"$APP".AppDir/.junest/usr/lib/libdw* ./save/
        mv ./"$APP".AppDir/.junest/usr/lib/libelf* ./save/
        for arg in $SHARESAVED; do
                mv ./"$APP".AppDir/.junest/usr/lib/*"$arg"* ./save/
        done
        ARGS=$(tail -n +2 ./list | sort -u | uniq)
        for arg in $ARGS; do
                mv ./"$APP".AppDir/.junest/usr/lib/$arg* ./save/
                find ./"$APP".AppDir/.junest/usr/lib/ -name "$arg" -exec cp -r --parents -t save/ {} +
        done
        rm -R -f "$(find ./save/ | sort | grep ".AppDir" | head -1)"
        rm list
}

function _include_swrast_dri(){
        mkdir ./save/dri
        mv ./"$APP".AppDir/.junest/usr/lib/dri/swrast_dri.so ./save/dri/
}

function _libkeywords(){
        for arg in $LIBSAVED; do
                mv ./"$APP".AppDir/.junest/usr/lib/*"$arg"* ./save/
        done
}

function _liblibs(){
        readelf -d ./save/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./save/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./save/*/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./save/*/*/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./save/*/*/*/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./base/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./base/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./base/*/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./base/*/*/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./base/*/*/*/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./deps/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./deps/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./deps/*/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./deps/*/*/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        readelf -d ./deps/*/*/*/*/* | grep .so | sed 's:.* ::' | cut -c 2- | sed 's/\(^.*so\).*$/\1/' | uniq >> ./list
        ARGS=$(tail -n +2 ./list | sort -u | uniq)
        for arg in $ARGS; do
                mv ./"$APP".AppDir/.junest/usr/lib/"$arg"* ./save/
                find ./"$APP".AppDir/.junest/usr/lib/ -name "$arg" -exec cp -r --parents -t save/ {} +
        done
        rsync -av ./save/"$APP".AppDir/.junest/usr/lib/* ./save/
        rm -R -f "$(find ./save/ | sort | grep ".AppDir" | head -1)"
        rm list
}

function _mvlibs(){
        rm -R -f ./"$APP".AppDir/.junest/usr/lib/*
        mv ./save/* ./"$APP".AppDir/.junest/usr/lib/
}

#_binlibs 2> /dev/null

#_include_swrast_dri 2> /dev/null

#_libkeywords 2> /dev/null

#_liblibs 2> /dev/null
#_liblibs 2> /dev/null
#_liblibs 2> /dev/null
#_liblibs 2> /dev/null
#_liblibs 2> /dev/null

#_mvlibs 2> /dev/null

rmdir save

# STEP 4, SAVE ONLY SOME DIRECTORIES CONTAINED IN /usr/share
# IF YOU NEED TO SAVE MORE FOLDERS, LIST THEM IN THE "SHARESAVED" VARIABLE. COMMENT THE LINE "_saveshare" IF YOU ARE NOT SURE.
function _saveshare(){
        mkdir save
        mv ./"$APP".AppDir/.junest/usr/share/*$APP* ./save/
        mv ./"$APP".AppDir/.junest/usr/share/*$BIN* ./save/
        mv ./"$APP".AppDir/.junest/usr/share/fontconfig ./save/
        mv ./"$APP".AppDir/.junest/usr/share/glib-* ./save/
        mv ./"$APP".AppDir/.junest/usr/share/locale ./save/
        mv ./"$APP".AppDir/.junest/usr/share/mime ./save/
        mv ./"$APP".AppDir/.junest/usr/share/wayland ./save/
        mv ./"$APP".AppDir/.junest/usr/share/X11 ./save/
        for arg in $SHARESAVED; do
                mv ./"$APP".AppDir/.junest/usr/share/*"$arg"* ./save/
        done
        rm -R -f ./"$APP".AppDir/.junest/usr/share/*
        mv ./save/* ./"$APP".AppDir/.junest/usr/share/
        rmdir save
}
#_saveshare 2> /dev/null

# RSYNC THE CONTENT OF THE APP'S PACKAGE
echo -e "\n-----------------------------------------------------------"
rm -R -f ./base/.*
rsync -av ./base/* ./"$APP".AppDir/.junest/ | echo -e "◆ Rsync the content of the \"$APP\" package"

# RSYNC DEPENDENCES
rm -R -f ./deps/.*
rsync -av ./deps/* ./"$APP".AppDir/.junest/ | echo -e "◆ Rsync all dependeces, please wait..."
echo -e "-----------------------------------------------------------\n"

# ADDITIONAL REMOVALS
#rm -R -f ./"$APP".AppDir/.junest/usr/lib/libLLVM-* #INCLUDED IN THE COMPILATION PHASE, CAN SOMETIMES BE EXCLUDED FOR DAILY USE
rm -R -f ./"$APP".AppDir/.junest/usr/lib/python*/__pycache__/* #IF PYTHON IS INSTALLED, REMOVING THIS DIRECTORY CAN SAVE SEVERAL MEGABYTES

# REMOVE THE INBUILT HOME
rm -R -f ./"$APP".AppDir/.junest/home

# ENABLE MOUNTPOINTS
mkdir -p ./"$APP".AppDir/.junest/home
mkdir -p ./"$APP".AppDir/.junest/media
mkdir -p ./"$APP".AppDir/.junest/usr/lib/locale
mkdir -p ./"$APP".AppDir/.junest/usr/share/fonts
mkdir -p ./"$APP".AppDir/.junest/usr/share/themes
mkdir -p ./"$APP".AppDir/.junest/run/user

# CREATE THE APPIMAGE
if test -f ./*.AppImage; then
        rm -R -f ./*archimage*.AppImage
fi
ARCH=x86_64 VERSION=$(./appimagetool -v | grep -o '[[:digit:]]*') ./appimagetool -s ./"$APP".AppDir
mv ./*AppImage ./"$(cat ./"$APP".AppDir/*.desktop | grep 'Name=' | head -1 | cut -c 6- | sed 's/ /-/g')"_"$VERSION"-archimage3.4.2-x86_64.AppImage
ivan-hc commented 3 days ago

Just noticed that they added also a list of available packages https://aur.chaotic.cx/package-list

They have removed a lot of them.

What are you installing fron Chaotic? Their yt-dlg is yt-dlg-git

kenderipa commented 3 days ago

https://aur.archlinux.org/packages/yt-dlg

Edit: can it be that they've removed it yesterday? Like I said, it worked once.

ivan-hc commented 3 days ago

if you were installing it from AUR, yes, they removed it and replaced it with yt-dlg-git

kenderipa commented 3 days ago

Which is much older. Nice.

ivan-hc commented 3 days ago

just noticed that a standalone binary already exists

https://github.com/oleksis/youtube-dl-gui

fun fact, it is not (yet) listed in my package manager "AM"

ivan-hc commented 3 days ago

just noticed that a standalone binary already exists

https://github.com/oleksis/youtube-dl-gui

fun fact, it is not (yet) listed in my package manager "AM"

done https://github.com/ivan-hc/AM/commit/7fef0a06fcb8387408c8d47855d9453a8664718d thanks

kenderipa commented 3 days ago

Just so you know, it also needs ffmpeg, to download and mux high resolution videos.

kenderipa commented 3 days ago

Is there a way to use official AUR instead of Chaotic AUR?

ivan-hc commented 3 days ago

Is there a way to use official AUR instead of Chaotic AUR?

sure, comment _enable_chaoticaur, like this

#_enable_chaoticaur
ivan-hc commented 3 days ago

Just so you know, it also needs ffmpeg, to download and mux high resolution videos.

thanks, I think that once I distribute the official binary, it is shown in -f what it is

Istantanea_2024-07-04_19-44-05

in that case, its enough to launch the option -a to see the URL and contact the developer

Istantanea_2024-07-04_19-45-02

I only distribute what is portable, support for single apps is another thing.

This is because I keep versions of the same app, like this

Istantanea_2024-07-04_19-47-03

thanks for letting me know about the ffmpeg thing :+1:

kenderipa commented 3 days ago

_enable_chaoticaur

mount: /tmp/.mount_yt-dlgAoldjb: can't find in /etc/fstab.


Cannot mount AppImage, please check your FUSE setup.
You might still be able to extract the contents of this AppImage
if you run it with the --appimage-extract option.
See https://github.com/AppImage/AppImageKit/wiki/FUSE
for more information
open dir error: No such file or directory

:(

kenderipa commented 3 days ago

Just so you know, it also needs ffmpeg, to download and mux high resolution videos.

thanks, I think that once I distribute the official binary, it is shown in -f what it is

Istantanea_2024-07-04_19-44-05

in that case, its enough to launch the option -a to see the URL and contact the developer

Istantanea_2024-07-04_19-45-02

I only distribute what is portable, support for single apps is another thing.

This is because I keep versions of the same app, like this

Istantanea_2024-07-04_19-47-03

thanks for letting me know about the ffmpeg thing 👍

Well, maybe it's time for me to switsch AppImage managers (and standalone binaries, for that matter, I'm using bin). Zap seems abandoned. Can AM/AppMan integrate zipped AppImages?

ivan-hc commented 3 days ago

Well, maybe it's time for me to switsch AppImage managers (and standalone binaries, for that matter, I'm using bin). Zap seems abandoned. Can AM/AppMan integrate zipped AppImages?

sure, all those listed here https://portable-linux-apps.github.io/apps.html you can read the installation script in raw and blob mode, so you are aware on what the script does when the -i option is launched.

AppMan is AM, but uses patches to redirect all these scripts to a local and rootless installation, for example, by changing the destination path of the launchers.

See https://github.com/ivan-hc/AM for more information

ivan-hc commented 3 days ago

in case an existing portable app is missing, let me know, so I can add it to the database, as it is already happened today.

ivan-hc commented 3 days ago

_enable_chaoticaur

mount: /tmp/.mount_yt-dlgAoldjb: can't find in /etc/fstab.


Cannot mount AppImage, please check your FUSE setup.
You might still be able to extract the contents of this AppImage
if you run it with the --appimage-extract option.
See https://github.com/AppImage/AppImageKit/wiki/FUSE
for more information
open dir error: No such file or directory

:(

this seems to be a known issue, I use Type3 AppAmages, they don't require libfuse2, but fusemount must be at least a symlink to fusermount3 to made them work. I think Arch Linux have fusermount and fusermount3 as separated binaries in /usr/bin, also Debian have fusermount in /bin instead of /usr/bin

Type3 are still a work in progress, after all

EDIT: see https://github.com/ivan-hc/Chrome-appimage/issues/3

kenderipa commented 3 days ago

in case an existing portable app is missing, let me know, so I can add it to the database, as it is already happened today.

Here's a small list.

https://github.com/Pyrdacor/Ambermoon.net https://github.com/marcosnils/bin https://github.com/aeosynth/bk https://github.com/darkhz/bluetuith https://github.com/PaddiM8/kalker https://github.com/orhun/menyoki https://github.com/jarun/nnn https://github.com/chmln/sd https://github.com/skylersaleh/SkyEmu https://github.com/forkgram/tdesktop

ivan-hc commented 3 days ago

what should I install in nnn? https://github.com/jarun/nnn/releases there are several

kenderipa commented 3 days ago

what should I install in nnn? https://github.com/jarun/nnn/releases there are several

I'm using the one with the icons, but it's a personal preference, really. You could install all of them :)

ivan-hc commented 3 days ago

this instead have not a linux version https://github.com/forkgram/tdesktop/releases

kenderipa commented 3 days ago

this instead have not a linux version https://github.com/forkgram/tdesktop/releases

Not every release has a Linux version. The last one is https://github.com/forkgram/tdesktop/releases/tag/v4.14.12.

ivan-hc commented 3 days ago

I don't know what nnn is, what you suggest?

However, AM has also a --rollback option that allows you to choose what to install/downgrade

ivan-hc commented 3 days ago

this instead have not a linux version https://github.com/forkgram/tdesktop/releases

Not every release has a Linux version. The last one is https://github.com/forkgram/tdesktop/releases/tag/v4.14.12.

why not the official telegram client then?

kenderipa commented 3 days ago

this instead have not a linux version https://github.com/forkgram/tdesktop/releases

Not every release has a Linux version. The last one is https://github.com/forkgram/tdesktop/releases/tag/v4.14.12.

why not the official telegram client then?

It has a couple of neat functions AND a square icon and theme :)

kenderipa commented 3 days ago

However, AM has also a --rollback option that allows you to choose what to install/downgrade

I'd add all of them, then.

ivan-hc commented 3 days ago

done https://github.com/ivan-hc/AM/commit/28d18e9217783addcfa3b04dc520bf05ebb7b25a

from now on do all requests at https://github.com/ivan-hc/AM , ok?

Close this if you've solved

kenderipa commented 3 days ago

Right, thanks!