Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
84ec22f0bd | ||
|
b97f0337de | ||
|
27ec12f373 | ||
|
6dbb63378e |
95
README
95
README
@ -1,95 +0,0 @@
|
|||||||
+-----------------+
|
|
||||||
| [*] Glacier [*] |
|
|
||||||
+-----------------+
|
|
||||||
|
|
||||||
Manage packages on an Everest Linux system
|
|
||||||
|
|
||||||
+-----------------------+
|
|
||||||
| [?] About Glacier [?] |
|
|
||||||
+-----------------------+
|
|
||||||
|
|
||||||
Glacier's main goal is to combine the power of
|
|
||||||
source based packaging with the simplicity of
|
|
||||||
binary based packaging.
|
|
||||||
|
|
||||||
Glacier downloads source code from
|
|
||||||
https://git.everestlinux.org/EverestLinux/glacier-pkgs
|
|
||||||
and compiles it locally on your system.
|
|
||||||
|
|
||||||
+----------------------+
|
|
||||||
| [!] Dependencies [!] |
|
|
||||||
+----------------------+
|
|
||||||
|
|
||||||
Glacier requires the following programs to function:
|
|
||||||
|
|
||||||
- sh
|
|
||||||
- wget/curl (any program that can download files)
|
|
||||||
- tar
|
|
||||||
- make
|
|
||||||
- a c compiler (tested with gcc, although others should work)
|
|
||||||
- python (for integrity checking)
|
|
||||||
|
|
||||||
+----------------------------+
|
|
||||||
| [🠗] Installing Glacier [🠗] |
|
|
||||||
+----------------------------+
|
|
||||||
|
|
||||||
Obtain the source code:
|
|
||||||
|
|
||||||
$ git clone https://git.everestlinux.org/EverestLinux/glacier
|
|
||||||
$ cd glacier
|
|
||||||
|
|
||||||
Copy install.conf.def to install.conf
|
|
||||||
|
|
||||||
$ mv install.conf.def install.conf
|
|
||||||
|
|
||||||
Make necessary adjustments to install.conf, then run
|
|
||||||
build.sh as root.
|
|
||||||
|
|
||||||
# ./build.sh install # for first time installations
|
|
||||||
# ./build.sh update # for existing installations
|
|
||||||
|
|
||||||
+-----------------+
|
|
||||||
| [>_] Usage [>_] |
|
|
||||||
+-----------------+
|
|
||||||
|
|
||||||
# glacier install/-f
|
|
||||||
# glacier update/-u
|
|
||||||
# glacier remove/-x
|
|
||||||
$ glacier query/-q
|
|
||||||
# glacier cache/-c
|
|
||||||
# glacier cache-install/-ci
|
|
||||||
# glacier cache-clear/-cc
|
|
||||||
$ glacier --debuginfo
|
|
||||||
$ glacier -h/--help
|
|
||||||
$ glacier -v/--version
|
|
||||||
|
|
||||||
+------+
|
|
||||||
| News |
|
|
||||||
+------+
|
|
||||||
|
|
||||||
- 11/3/22 - Changing how packages are uninstalled
|
|
||||||
In Glacier's current state, it needs to download the package archive in order to remove it.
|
|
||||||
This is highly inefficient and presents its own risks.
|
|
||||||
In an upcoming update, the removal script will be retained on the system.
|
|
||||||
This method will be space efficient because:
|
|
||||||
a) Instruction scripts are mere kilobytes
|
|
||||||
b) For larger scripts, you will have the option of compressing them.
|
|
||||||
This feature is expected around 3.2.0.
|
|
||||||
|
|
||||||
+-----------+
|
|
||||||
| Licensing |
|
|
||||||
+-----------+
|
|
||||||
|
|
||||||
(C) 2021-2022 Everest Developers
|
|
||||||
This program is free software: you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by the
|
|
||||||
Free Software Foundation, either version 3 of the License, or (at your option)
|
|
||||||
any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
See the GNU General Public License for more details.
|
|
||||||
You should have received a copy of the GNU General Public License along with
|
|
||||||
this program.
|
|
||||||
If not, see <https://www.gnu.org/licenses/>.
|
|
3
README.md
Normal file
3
README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# glacier3
|
||||||
|
|
||||||
|
Glacier3 is a testing ground for the upcoming Glacier rewrite
|
6
TODO
Normal file
6
TODO
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
### TODO LIST ###
|
||||||
|
|
||||||
|
#- fix messages not printing (ASAP)
|
||||||
|
#- fix archives not downloading
|
||||||
|
# /usr/bin/gscripts: line 37: /nano.tar.gz: No such file or directory
|
||||||
|
#- Colors not printing
|
@ -1,72 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "must be run as root\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
WORKING_DIR=$(pwd)
|
|
||||||
SRC_DIR=$(pwd)/../src
|
|
||||||
|
|
||||||
printf "parsing install.conf\n"
|
|
||||||
source $WORKING_DIR/install.conf
|
|
||||||
if [ "$?" != 0 ]; then
|
|
||||||
printf "install.conf not found\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
install)
|
|
||||||
printf "installing executable\n"
|
|
||||||
mv -v $SRC_DIR/glacier $PREFIX/bin
|
|
||||||
if [ "$?" != 0 ]; then
|
|
||||||
mv -v $SRC_DIR/glacier $PREFIX
|
|
||||||
printf "directory $PREFIX/bin does not exist, moving to $PREFIX instead\n"
|
|
||||||
fi
|
|
||||||
$CC $SRC_DIR/int-check/main.c -o glacier-integrity-check
|
|
||||||
mv -v $SRC_DIR/int-check/glacier-integrity-check $PREFIX/bin
|
|
||||||
if [ "$?" != 0 ]; then
|
|
||||||
mv -v $SRC_DIR/int-check/glacier-integrity-check $PREFIX
|
|
||||||
printf "directory $PREFIX/bin does not exist, moving to $PREFIX instead.\n"
|
|
||||||
fi
|
|
||||||
printf "installing configuration files\n"
|
|
||||||
mv -v $SRC_DIR/glacier.conf $CONFDIR
|
|
||||||
if [ "$?" != 0 ]; then
|
|
||||||
printf "$CONFDIR does not exist\n"
|
|
||||||
printf "this can be corrected by running:\n"
|
|
||||||
printf "# mkdir -v -pv $CONFDIR\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -v /opt/glacier
|
|
||||||
mkdir -v /opt/glacier/workspace
|
|
||||||
mkdir -v /var/log/glacier
|
|
||||||
mkdir -v /var/cache/glacier
|
|
||||||
|
|
||||||
mkdir -v /etc/glacier
|
|
||||||
mkdir -v /etc/glacier/pkginfo
|
|
||||||
|
|
||||||
mv -v $SRC_DIR/hooks $CONFDIR/glacier
|
|
||||||
mv -v $SRC_DIR/post-hooks $CONFDIR/glacier
|
|
||||||
mv -v $SRC_DIR/pre-hooks $CONFDIR/glacier
|
|
||||||
mv -v $SRC_DIR/hooks.sh $CONFDIR/glacier
|
|
||||||
mv -v $SRC_DIR/make.conf $CONFDIR
|
|
||||||
mv -v $SRC_DIR/glacier-integrity-check $PREFIX/bin
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
mv -v $SRC_DIR/glacier-integrity-check $PREFIX
|
|
||||||
printf "directory $PREFIX/bin does not exist, moving to $PREFIX instead\n"
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "finished installation\n"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
update)
|
|
||||||
printf "updating executable\n"
|
|
||||||
rm -v $PREFIX/bin/glacier || rm -v $PREFIX/glacier
|
|
||||||
rm -v $PREFIX/bin/glacier-integrity-check || rm -v $PREFIX/glacier-integrity-check
|
|
||||||
mv -v $SRC_DIR/glacier $PREFIX/bin || mv -v $SRC_DIR/glacier $PREFIX
|
|
||||||
$CC $SRC_DIR/int-check/main.c -O2 -fstack-protector-strong -o $SRC_DIR/int-check/glacier-integrity-check
|
|
||||||
mv -v $SRC_DIR/int-check/glacier-integrity-check $PREFIX/bin || mv -v $SRC_DIR/int-check/glacier-integrity-check $PREFIX
|
|
||||||
printf "finished updating\n"
|
|
||||||
exit 0
|
|
||||||
esac
|
|
@ -1,13 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# install.conf
|
|
||||||
|
|
||||||
# Installation prefix
|
|
||||||
# On Everest, this should be /usr, because /bin, /sbin, and /lib are all symlinks to /usr
|
|
||||||
PREFIX="/usr"
|
|
||||||
|
|
||||||
# System config directory
|
|
||||||
# On almost all systems, this should be /etc
|
|
||||||
CONFDIR="/etc"
|
|
||||||
|
|
||||||
# C Compiler to use
|
|
||||||
CC="gcc"
|
|
24
install/install.sh
Executable file
24
install/install.sh
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||||
|
printf " [ * ] Installation Script must be run as root.\n"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create directories
|
||||||
|
mkdir /etc/glacier
|
||||||
|
mkdir /etc/glacier/pkginfo
|
||||||
|
mkdir /var/log/glacier
|
||||||
|
mkdir /var/cache/glacier
|
||||||
|
|
||||||
|
# Install Scripts
|
||||||
|
cd ../src
|
||||||
|
chmod +x *
|
||||||
|
cp glacier /usr/bin/glacier
|
||||||
|
cp glacier.conf /etc/glacier.conf
|
||||||
|
cp glacier_release /etc/glacier/glacier_release
|
||||||
|
cp gscripts /usr/bin/gscripts
|
||||||
|
cp messages /etc/glacier/messages
|
||||||
|
cp hooks /etc/glacier/hooks
|
||||||
|
|
||||||
|
printf "done\n"
|
9
src/INSTALL_LOCATIONS
Normal file
9
src/INSTALL_LOCATIONS
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
=== Executables ===
|
||||||
|
/usr/bin/glacier
|
||||||
|
/usr/bin/gscripts
|
||||||
|
|
||||||
|
=== Settings/Other files ===
|
||||||
|
/etc/glacier/glacier_release
|
||||||
|
/etc/glacier/hooks
|
||||||
|
/etc/glacier.conf
|
||||||
|
/etc/make.conf
|
741
src/glacier
741
src/glacier
@ -1,490 +1,289 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Glacier - manage installed packages on a Linux system
|
# Glacier - A simple package management system written in POSIX sh
|
||||||
|
# Copyright (C) 2022 Everest Linux Development Group
|
||||||
#
|
#
|
||||||
# This file is part of Glacier.
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# Glacier is free software: you can redistribute it
|
# This program is distributed in the hope that it will be useful,
|
||||||
# and/or modify it under the terms of the GNU General Public License
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
# as published by the Free Software Foundation, either version 3
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# of the License, or (at your option) any later version.
|
# GNU General Public License for more details.
|
||||||
#
|
#
|
||||||
# Glacier is distributed in the hope that it will be useful,
|
# You should have received a copy of the GNU General Public License
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
# Preloading
|
||||||
# along with Glacier. If not, see <https://www.gnu.org/licenses/>.
|
/usr/bin/gscripts preload
|
||||||
|
source $(pwd)/messages # this is here for the sole purpose of testing
|
||||||
|
source /etc/glacier/messages
|
||||||
|
input = ${2}
|
||||||
|
|
||||||
. /etc/glacier/hooks
|
# Main Script
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
get_pkg() {
|
case $1 in
|
||||||
printf "$blue[ i ]$reset Downloading archive for package '$2'...\n"
|
-h|--help)
|
||||||
for r in ${ALLOWED_REPOS[@]}; do
|
printf "$blue [ * ] Glacier - Manage packages on the system [ * ] $reset\n"
|
||||||
$GLACIER_DOWNLOAD_BACKEND $GREPO/${r}/$2.tar.gz
|
printf "$blue=== Information ====================================================================================$reset\n"
|
||||||
done
|
printf "$ glacier {-h --help} show this message and exit\n"
|
||||||
find $2.tar.gz
|
printf "$ glacier {--version} display the current Glacier version and exit\n"
|
||||||
if [ "$?" != "0" ]; then
|
printf "$blue=== Package Operations =============================================================================$reset\n"
|
||||||
printf "$red[ $error ]$reset Package '$2' not found.\n"
|
printf "# glacier {install -f} install a package to the system\n"
|
||||||
exit 1
|
printf "# glacier {update -u} update an installed package\n"
|
||||||
fi
|
printf "# glacier {remove -x} remove an installed package\n"
|
||||||
printf "$blue[ i ]$reset Downloading checksum for package '$2'...\n"
|
printf "$ glacier {query -q} query the information of an installed package\n"
|
||||||
for r in ${ALLOWED_REPOS[@]}; do
|
printf "# glacier {cache -c} cache a package from the repositories\n"
|
||||||
$GLACIER_DOWNLOAD_BACKEND $GREPO/${r}/$2.checksum
|
printf "# glacier {cache-install -ci} install a cached package\n"
|
||||||
done
|
printf "# glacier {cache-clear -cc} clear the package cache\n"
|
||||||
find $2.checksum
|
printf "$blue=== Debugging ======================================================================================$reset\n"
|
||||||
if [ "$?" != "0" ]; then
|
printf "$ glacier {--showDebugInfo} show debugging info\n"
|
||||||
printf "$red[ $error ]$reset Package checksum not found.\n"
|
printf "$blue=== Licensing ======================================================================================$reset\n"
|
||||||
exit 1
|
printf "This program is freely distributable under the terms of the\n"
|
||||||
fi
|
printf "GNU General Public License version 3 or later.\n"
|
||||||
}
|
printf "You should have recieved a copy of the GNU General Public License\n"
|
||||||
int_check() {
|
printf "along with this program. If not, see <https://www.gnu.org/licenses/>.\n"
|
||||||
if [ "$GLACIER_DO_INT_CHECK" = "true" ]; then
|
printf "$blue======================================================================================================\n"
|
||||||
printf "$blue[ i ]$reset Checking package integrity...\n"
|
exit 0
|
||||||
mv *.checksum local_sum
|
;;
|
||||||
sha256sum *.tar.gz > pkg_sum
|
--version)
|
||||||
/usr/bin/glacier-integrity-check local_sum pkg_sum
|
printf "$blue Glacier v$GLACIER_RELEASE $reset\n"
|
||||||
if [ "$?" != "0" ]; then
|
exit 0
|
||||||
printf "$red[ $error ]$reset Integrity check failed.\n"
|
;;
|
||||||
|
install|-f)
|
||||||
|
# Require script to be run as root
|
||||||
|
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||||
|
echo $GLACIER_ERROR_NO_ROOT
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
printf "$green[ $check ]$reset Integrity check passed.\n"
|
|
||||||
else
|
echo $GLACIER_STATUS_INSTALLING
|
||||||
printf "$yellow[ ! ]$reset Skipping integrity check...\n"
|
/usr/bin/gscripts download
|
||||||
fi
|
if [ "$?" != "0" ]; then
|
||||||
}
|
echo $GLACIER_ERROR_DOES_NOT_EXIST
|
||||||
|
exit 1
|
||||||
unpack_pkg() {
|
fi
|
||||||
printf "$blue[ i ]$reset Unpacking $2.tar.gz...\n"
|
echo $GLACIER_STATUS_INTEGRITY_CHECK
|
||||||
mkdir $2 && mv $2.tar.gz $2 && cd $2
|
mkdir $2 && mv $2.tar.gz $2 && cd $2
|
||||||
pv $2.tar.gz | tar -xz
|
/usr/bin/gscripts integrity-check
|
||||||
if [ "$?" != "0" ]; then
|
if [ "$?" != "0" ]; then
|
||||||
printf "$red[ $error ]$reset Could not unpack $2.tar.gz.\n"
|
exit 1
|
||||||
cd .. && rm -rf $2
|
fi
|
||||||
exit 1
|
echo $GLACIER_STATUS_UNPACKING
|
||||||
fi
|
tar -xvf $2.tar.gz
|
||||||
}
|
if [ "$?" != "0" ]; then
|
||||||
|
echo $GLACIER_ERROR_CANNOT_UNPACK
|
||||||
installpkg() {
|
exit 1
|
||||||
printf "$blue[ i ]$reset Installing $2...\n"
|
fi
|
||||||
sleep 1
|
chmod +x INSTALL.sh
|
||||||
chmod +x *
|
chmod +x $2.ts.sh
|
||||||
./INSTALL.sh
|
echo $GLACIER_STATUS_EXECUTING
|
||||||
if [ "$?" != "0" ]; then
|
./INSTALL.sh
|
||||||
printf "$red[ $error ]$reset Failed to update $2.\n"
|
if [ "$?" != "0" ]; then
|
||||||
cd .. && rm -rf $2
|
echo $GLACIER_ERROR_INSTRUCTIONS_CANNOT_EXECUTE
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
./$2.ts.sh
|
./$2.ts.sh
|
||||||
mv $2-pkginfo.json /etc/glacier/pkginfo
|
/usr/bin/gscripts post-install
|
||||||
}
|
echo $GLACIER_SUCCESS
|
||||||
|
|
||||||
updatepkg() {
|
|
||||||
printf "$blue[ i ]$reset Updating $2...\n"
|
|
||||||
sleep 1
|
|
||||||
chmod +x *
|
|
||||||
./UPDATE.sh
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Failed to update $2.\n"
|
|
||||||
cd .. && rm -rf $2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
./$2.ts.sh
|
|
||||||
}
|
|
||||||
|
|
||||||
removepkg() {
|
|
||||||
printf "$blue[ i ]$reset Removing $2...\n"
|
|
||||||
sleep 1
|
|
||||||
chmod +x *
|
|
||||||
/etc/glacier/pkginfo/$2.remove
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Failed to remove $2.\n"
|
|
||||||
cd .. && rm -rf $2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
rm /var/log/glacier/$2.timestamp
|
|
||||||
rm /etc/glacier/pkginfo/$2-pkginfo.json
|
|
||||||
}
|
|
||||||
|
|
||||||
installpkg_from_cache() {
|
|
||||||
printf "$blue[ i ]$reset Installing $2 from cache...\n"
|
|
||||||
sleep 1
|
|
||||||
cd /var/cache/glacier && cp $2.tar.gz /tmp && cd /tmp
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Package does not exist in cache.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
unpack_pkg
|
|
||||||
install_pkg
|
|
||||||
}
|
|
||||||
|
|
||||||
clear_cache() {
|
|
||||||
printf "$blue[ i ]$reset Clearing cache...\n"
|
|
||||||
sleep 1
|
|
||||||
cd /var/cache/glacier && rm -rvf *
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Some items could not be cleared.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Show Glacier debugging info
|
|
||||||
#
|
|
||||||
|
|
||||||
debug_info() {
|
|
||||||
printf "$blue>> Glacier v3.3.0$reset\n"
|
|
||||||
printf ">> Checking for valid download backend...\n"
|
|
||||||
whereis wget
|
|
||||||
whereis curl
|
|
||||||
whereis aria2c
|
|
||||||
printf ">> Checking which download backend is in use...\n"
|
|
||||||
echo $GLACIER_DOWNLOAD_BACKEND
|
|
||||||
printf ">> Checking if all Glacier files are present...\n"
|
|
||||||
whereis glacier glacier.conf make.conf
|
|
||||||
ls /var/log | grep glacier
|
|
||||||
ls /var/cache | grep glacier
|
|
||||||
printf ">> If any files are missing, Glacier will not behave properly.\n"
|
|
||||||
printf ">> Checking if terminal can output unicode symbols...\n"
|
|
||||||
printf "$check\n"
|
|
||||||
printf "$error\n"
|
|
||||||
printf "$warning\n"
|
|
||||||
printf "$question\n"
|
|
||||||
printf "$red Red.$reset\n"
|
|
||||||
printf "$green Green.$reset\n"
|
|
||||||
printf "$yellow Yellow.$reset\n"
|
|
||||||
printf "$blue Blue.$reset\n"
|
|
||||||
printf "NOTE: If you use a custom colorscheme, colors will not match.\n"
|
|
||||||
printf ">> Checking if repositories are valid...\n"
|
|
||||||
echo $GREPO1
|
|
||||||
echo $GREPO2
|
|
||||||
echo $GREPO3
|
|
||||||
echo $GREPO4
|
|
||||||
echo $GREPO5
|
|
||||||
echo $GREPO6
|
|
||||||
echo $GREPO7
|
|
||||||
echo $GREPO8
|
|
||||||
printf ">> Checking which shell is in use...\n"
|
|
||||||
which $SHELL
|
|
||||||
printf "NOTE: If you use zsh, a percentage symbol may appear after some lines.\n"
|
|
||||||
printf ">> Gathered debug information.\n"
|
|
||||||
printf ">> To save this information to a file, run:\n"
|
|
||||||
printf ">> $ glacier --debuginfo > glacier.debug\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Parses JSON from pkginfo files and outputs it
|
|
||||||
#
|
|
||||||
|
|
||||||
query() {
|
|
||||||
printf "$blue[ i ]$reset Showing information for package '$2'.\n"
|
|
||||||
printf "$blue>> Package name:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_name
|
|
||||||
printf "$blue>> Package version:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_version
|
|
||||||
printf "$blue>> Package description:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_description
|
|
||||||
printf "$blue>> Source tree size:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .src_tree_size
|
|
||||||
printf "$blue>> Size of installed files:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .exec_size
|
|
||||||
printf "$blue>> License:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .license
|
|
||||||
printf "$blue>> Installation date:$reset " && cat /var/log/glacier/$2.timestamp
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Will either keep removal script, update it with a new one, or delete it alltogether
|
|
||||||
#
|
|
||||||
|
|
||||||
cleanup_keep_rm () {
|
|
||||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
|
||||||
mv REMOVE.sh /etc/glacier/pkginfo/$2.remove
|
|
||||||
cd .. && rm -rf *.checksum *.tar.* $2
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup_update_rm () {
|
|
||||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
|
||||||
rm /etc/glacier/pkginfo/$2.remove
|
|
||||||
mv REMOVE.sh /etc/glacier/pkginfo/$2.remove
|
|
||||||
cd .. && rm -rf *.checksum *.tar.* $2
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup_del_rm () {
|
|
||||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
|
||||||
rm /etc/glacier/pkginfo/$2.remove
|
|
||||||
cd .. && rm -rf *.checksum *.tar.* $2
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Execute pre and posr hooks from files
|
|
||||||
#
|
|
||||||
|
|
||||||
pre_hooks() {
|
|
||||||
source /etc/glacier/hooks
|
|
||||||
}
|
|
||||||
|
|
||||||
pre_op_hooks() {
|
|
||||||
printf "$blue[ i ]$reset Executing pre-operation hooks...\n"
|
|
||||||
/etc/glacier/pre-hooks
|
|
||||||
}
|
|
||||||
|
|
||||||
post_hooks() {
|
|
||||||
printf "$blue[ i ]$reset Executing post-operation hooks...\n"
|
|
||||||
/etc/glacier/post-hooks
|
|
||||||
}
|
|
||||||
|
|
||||||
search_for_local_pkg() {
|
|
||||||
printf "$blue[ i ]$reset Searching working directory for package $2...\n"
|
|
||||||
find $2.tar.gz
|
|
||||||
if [ "$?" != 0 ]; then
|
|
||||||
printf "$red[ $error ]$reset Package $2 not found.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
-h|--help)
|
|
||||||
printf "$blue[ * ] Glacier - Manage installed packages on the system$reset\n"
|
|
||||||
printf "usage: glacier [-f] [-u] [-x] [-q] [-c] [-ci] [-cc] [-li] [--debuginfo]\n"
|
|
||||||
printf "\n"
|
|
||||||
printf "$blue=== Information ===$reset\n"
|
|
||||||
printf "glacier {-h/--help} - Show this message and exit\n"
|
|
||||||
printf "glacier {-v/--version} - Show the version and exit\n"
|
|
||||||
printf "\n"
|
|
||||||
printf "$blue=== Operations ===$reset\n"
|
|
||||||
printf "glacier {-f/install} - Install a new package\n"
|
|
||||||
printf "glacier {-u/update} - Update an installed package\n"
|
|
||||||
printf "glacier {-x/remove} - Remove an installed package\n"
|
|
||||||
printf "glacier {-q/query} - Query an installed package\n"
|
|
||||||
printf "glacier {-c/cache} - Download a package to the cache\n"
|
|
||||||
printf "glacier {-ci/cache-install} - Install a package from the cache\n"
|
|
||||||
printf "glacier {-cc/cache-clear} - Clear the cache\n"
|
|
||||||
printf "glacier {-li/local-install} - Install a package from a local directory\n"
|
|
||||||
printf "\n"
|
|
||||||
printf "$blue=== Debugging ===$reset\n"
|
|
||||||
printf "glacier {--debuginfo} - Show debugging information\n"
|
|
||||||
printf "\n"
|
|
||||||
printf "$blue=== Licensing ===$reset\n"
|
|
||||||
printf "This program is free software: you can redistribute it and/or modify it\n"
|
|
||||||
printf "under the terms of the GNU General Public License as published by the\n"
|
|
||||||
printf "Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-v|--version)
|
|
||||||
printf "${blue}Glacier v3.3.0${reset}\n"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-f|install)
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$2" == "" ]; then
|
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "$blue[ i ]$reset Installing package '$2'.\n"
|
|
||||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
||||||
cd /opt/glacier/workspace
|
|
||||||
printf "\n"
|
|
||||||
pre_hooks "$@"
|
|
||||||
get_pkg "$@"
|
|
||||||
int_check "$@"
|
|
||||||
unpack_pkg "$@"
|
|
||||||
pre_op_hooks "$@"
|
|
||||||
installpkg "$@"
|
|
||||||
post_hooks "$@"
|
|
||||||
cleanup_keep_rm "$@"
|
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
|
||||||
exit 0
|
exit 0
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
;;
|
||||||
printf "\n"
|
update|-u)
|
||||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
# Require script to be run as root
|
||||||
exit 1
|
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||||
fi
|
echo $GLACIER_ERROR_NO_ROOT
|
||||||
;;
|
exit 1
|
||||||
-u|update)
|
fi
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$2" == "" ]; then
|
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "$blue[ i ]$reset Updating package '$2'.\n"
|
echo $GLACIER_STATUS_UPDATING
|
||||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
/usr/bin/gscripts download
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
if [ "$?" != "0" ]; then
|
||||||
cd /opt/glacier/workspace
|
echo $GLACIER_ERROR_DOES_NOT_EXIST
|
||||||
printf "\n"
|
exit 1
|
||||||
pre_hooks "$@"
|
fi
|
||||||
get_pkg "$@"
|
echo $GLACIER_STATUS_INTEGRITY_CHECK
|
||||||
int_check "$@"
|
mkdir $2 && mv $2.tar.gz $2 && cd $2
|
||||||
unpack_pkg "$@"
|
/usr/bin/gscripts integrity-check
|
||||||
pre_op_hooks "$@"
|
if [ "$?" != "0" ]; then
|
||||||
updatepkg "$@"
|
exit 1
|
||||||
post_hooks "$@"
|
fi
|
||||||
cleanup_update_rm "$@"
|
echo $GLACIER_STATUS_UNPACKING
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
tar -xvf $2.tar.gz
|
||||||
|
if [ "$?" != "0" ]; then
|
||||||
|
echo $GLACIER_ERROR_CANNOT_UNPACK
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
chmod +x UPDATE.sh
|
||||||
|
chmod +x $2.ts.sh
|
||||||
|
echo $GLACIER_STATUS_EXECUTING
|
||||||
|
./UPDATE.sh
|
||||||
|
if [ "$?" != "0" ]; then
|
||||||
|
echo $GLACIER_ERROR_INSTRUCTIONS_CANNOT_EXECUTE
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
./$2.ts.sh
|
||||||
|
/usr/bin/gscripts post-install
|
||||||
|
echo $GLACIER_SUCCESS
|
||||||
exit 0
|
exit 0
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
;;
|
||||||
printf "\n"
|
remove|-x)
|
||||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
# Require script to be run as root
|
||||||
exit 1
|
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||||
fi
|
echo $GLACIER_ERROR_NO_ROOT
|
||||||
;;
|
exit 1
|
||||||
-x|remove)
|
fi
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$2" == "" ]; then
|
echo $GLACIER_STATUS_REMOVING
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
/usr/bin/gscripts download
|
||||||
exit 1
|
if [ "$?" != "0" ]; then
|
||||||
fi
|
echo $GLACIER_ERROR_DOES_NOT_EXIST
|
||||||
|
exit 1
|
||||||
printf "$blue[ i ]$reset Removing package '$2'.\n"
|
fi
|
||||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
echo $GLACIER_STATUS_INTEGRITY_CHECK
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
mkdir $2 && mv $2.tar.gz $2 && cd $2
|
||||||
cd /opt/glacier/workspace
|
/usr/bin/gscripts integrity-check
|
||||||
printf "\n"
|
if [ "$?" != "0" ]; then
|
||||||
pre_hooks "$@"
|
exit 1
|
||||||
removepkg "$@"
|
fi
|
||||||
post_hooks "$@"
|
echo $GLACIER_STATUS_UNPACKING
|
||||||
cleanup_del_rm "$@"
|
tar -xvf $2.tar.gz
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
if [ "$?" != "0" ]; then
|
||||||
|
echo $GLACIER_ERROR_CANNOT_UNPACK
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
chmod +x REMOVE.sh
|
||||||
|
chmod +x $2.ts.sh
|
||||||
|
echo $GLACIER_STATUS_EXECUTING
|
||||||
|
./REMOVE.sh
|
||||||
|
if [ "$?" != "0" ]; then
|
||||||
|
echo $GLACIER_ERROR_INSTRUCTIONS_CANNOT_EXECUTE
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
./$2.ts.sh
|
||||||
|
/usr/bin/gscripts post-install
|
||||||
|
echo $GLACIER_SUCCESS
|
||||||
exit 0
|
exit 0
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
;;
|
||||||
printf "\n"
|
query|-q)
|
||||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
cat /etc/glacier/pkginfo/$2-pkginfo.json
|
||||||
exit 1
|
cat /var/log/glacier/$2.timestamp
|
||||||
fi
|
if [ "$?" != "0" ]; then
|
||||||
;;
|
echo $GLACIER_ERROR_NOT_INSTALLED
|
||||||
-q|query)
|
exit 1
|
||||||
if [ "$2" == "" ]; then
|
fi
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
query "$@"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-c|cache)
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$2" == "" ]; then
|
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "$blue[ i ]$reset Caching package '$2'.\n"
|
|
||||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
||||||
cd /var/cache/glacier
|
|
||||||
printf "\n"
|
|
||||||
get_pkg "$@"
|
|
||||||
int_check "$@"
|
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
|
||||||
exit 0
|
exit 0
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
;;
|
||||||
printf "\n"
|
cache|-c)
|
||||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||||
exit 1
|
echo $GLACIER_ERROR_NO_ROOT
|
||||||
fi
|
exit 1
|
||||||
;;
|
fi
|
||||||
-ci|cache-install)
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$2" == "" ]; then
|
echo $GLACIER_STATUS_CACHING
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
/usr/bin/gscripts download
|
||||||
exit 1
|
if [ "$?" != "0" ]; then
|
||||||
fi
|
echo $GLACIER_ERROR_DOES_NOT_EXIST
|
||||||
|
exit 1
|
||||||
printf "$blue[ i ]$reset Installing package '$2' from cache.\n"
|
fi
|
||||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
echo $GLACIER_STATUS_INTEGRITY_CHECK
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
mv $2.tar.gz /var/cache/glacier && cd /var/cache/glacier
|
||||||
cd /var/cache/glacier
|
/usr/bin/gscripts integrity-check
|
||||||
mv $2.tar.gz /opt/glacier/workspace
|
if [ "$?" != "0" ]; then
|
||||||
cd /opt/glacier/workspace
|
exit 1
|
||||||
printf "\n"
|
fi
|
||||||
pre_hooks "$@"
|
echo $GLACIER_SUCCESS
|
||||||
unpack_pkg "$@"
|
|
||||||
pre_op_hooks "$@"
|
|
||||||
installpkg "$@"
|
|
||||||
post_hooks "$@"
|
|
||||||
cleanup_keep_rm "$@"
|
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
|
||||||
exit 0
|
exit 0
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
;;
|
||||||
printf "\n"
|
cache-install|-ci)
|
||||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
if [[ $(usr/bin/id -u) -ne 0 ]]; then
|
||||||
exit 1
|
echo $GLACIER_ERROR_NO_ROOT
|
||||||
fi
|
exit 1
|
||||||
;;
|
fi
|
||||||
-cc|cache-clear)
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
clear_cache "$@"
|
echo $GLACIER_STATUS_INSTALLING
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
cd /var/cache/glacier && cp $2.tar.gz /tmp && cd /tmp
|
||||||
exit 0
|
if [ "$?" != "0" ]; then
|
||||||
;;
|
echo $GLACIER_ERROR_NOT_IN_CACHE
|
||||||
-li|local-install)
|
exit 1
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
fi
|
||||||
printf "$red[ $error ]$reset Failed to commit to transaction - permission denied. Are you root?\n"
|
echo $GLACIER_STATUS_UNPACKING
|
||||||
exit 1
|
mkdir $2 && mv $2.tar.gz $2 && cd $2
|
||||||
fi
|
tar -xvf $2.tar.gz
|
||||||
|
if [ "$?" != "0" ]; then
|
||||||
if [ "$2" == "" ]; then
|
echo $GLACIER_ERROR_CANNOT_UNPACK
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
exit 1
|
||||||
exit 1
|
fi
|
||||||
fi
|
echo $GLACIER_STATUS_EXECUTING
|
||||||
|
chmod +x INSTALL.sh
|
||||||
search_for_local_pkg "$@"
|
chmod +x $2.ts.sh
|
||||||
|
./INSTALL.sh
|
||||||
printf "$blue[ i ]$reset Installing package '$2' from local file.\n"
|
if [ "$!" != "0" ]; then
|
||||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
echo $GLACIER_ERROR_INSTRUCTIONS_CANNOT_EXECUTE
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
exit 1
|
||||||
cp $2.tar.gz /opt/glacier/workspace
|
fi
|
||||||
cd /opt/glacier/workspace
|
./$2.ts.sh
|
||||||
printf "\n"
|
/usr/bin/gscripts post-install
|
||||||
pre_hooks "$@"
|
echo $GLACIER_SUCCESS
|
||||||
unpack_pkg "$@"
|
|
||||||
pre_op_hooks "$@"
|
|
||||||
installpkg "$@"
|
|
||||||
post_hooks "$@"
|
|
||||||
cleanup_keep_rm "$@"
|
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
|
||||||
exit 0
|
exit 0
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
;;
|
||||||
printf "\n"
|
cache-clear|-cc)
|
||||||
printf "$red[ $error ]$reset Aborting.\n"
|
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
||||||
exit 1
|
echo $GLACIER_ERROR_NO_ROOT
|
||||||
fi
|
exit 1
|
||||||
;;
|
fi
|
||||||
|
|
||||||
--debuginfo)
|
echo $GLACIER_STATUS_CLEARING
|
||||||
debug_info "$@"
|
cd /var/cache/glacier && rm -rf *
|
||||||
exit 0
|
echo $GLACIER_SUCCESS
|
||||||
;;
|
exit 0
|
||||||
-*|--*)
|
;;
|
||||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
--showDebugInfo)
|
||||||
exit 1
|
printf "$blue Glacier v$GLACIER_RELEASE $reset\n"
|
||||||
;;
|
printf ">> Checking for a viable download backend...\n"
|
||||||
*)
|
whereis wget
|
||||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
whereis curl
|
||||||
exit 1
|
whereis aria2c
|
||||||
;;
|
printf ">> Checking which download backend is in use...\n"
|
||||||
esac
|
echo $GLACIER_DOWNLOAD_BACKEND
|
||||||
|
printf ">> Checking if all Glacier directories and files are present...\n"
|
||||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
ls /etc | grep glacier
|
||||||
|
ls /etc/glacier
|
||||||
|
whereis make.conf
|
||||||
|
printf ">> If any files are missing, especially make.conf, Glacier will behave abnormally.\n"
|
||||||
|
printf ">> Checking if unicode symbols and colors display properly...\n"
|
||||||
|
printf "(NOTE): If you use a custom colorscheme, colors may vary.\n"
|
||||||
|
printf " For instance, the Dracula colorscheme turns blue into purple.\n"
|
||||||
|
printf "$check\n"
|
||||||
|
printf "$error\n"
|
||||||
|
printf "$warning\n"
|
||||||
|
printf "$question\n"
|
||||||
|
printf "$red Red.$reset\n"
|
||||||
|
printf "$green Green.$reset\n"
|
||||||
|
printf "$yellow Yellow.$reset\n"
|
||||||
|
printf "$blue Blue.$reset\n"
|
||||||
|
printf ">> Checking repositories...\n"
|
||||||
|
echo $GREPO1
|
||||||
|
echo $GREPO2
|
||||||
|
echo $GREPO3
|
||||||
|
echo $GREPO4
|
||||||
|
echo $GREPO5
|
||||||
|
echo $GREPO6
|
||||||
|
echo $GREPO7
|
||||||
|
echo $GREPO8
|
||||||
|
printf ">> Debug information has been gathered.\n"
|
||||||
|
printf ">> Run 'glacier --showDebugInfo > glacier.debug' to save this information to a file.\n"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-*|--*)
|
||||||
|
echo $GLACIER_ERROR_NO_SUCH_OPTION
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo $GLACIER_ERROR_NO_SUCH_OPTION
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
echo $GLACIER_ERROR_NO_SUCH_OPTION
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -1,185 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# glacier-mkimg - Generate a root filesystem image
|
|
||||||
#
|
|
||||||
# This file is part of Glacier.
|
|
||||||
#
|
|
||||||
# Glacier is free software: you can redistribute it
|
|
||||||
# and/or modify it under the terms of the GNU General Public License
|
|
||||||
# as published by the Free Software Foundation, either version 3
|
|
||||||
# of the License, or (at your option) any later version.
|
|
||||||
#
|
|
||||||
# Glacier is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
# See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Glacier. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
am_i_root() {
|
|
||||||
printf ">> Checking if user is root...\n"
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf ">> glacier-mkimg must be run as root.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
info() {
|
|
||||||
printf ">> Building root filesystem image with the following settings:\n"
|
|
||||||
printf "Image build location: /opt/everest\n"
|
|
||||||
printf "Packages to be installed:\n"
|
|
||||||
printf " - system-toolchain-bin\n"
|
|
||||||
printf " - busybox-base-bin\n"
|
|
||||||
printf " - glacier-base-bin\n"
|
|
||||||
printf " - make-base-bin\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
init-env() {
|
|
||||||
mkdir -v /opt/everest
|
|
||||||
mkdir -v /opt/everest/{sources,toolchain,targetfs}
|
|
||||||
cd /opt/everest
|
|
||||||
}
|
|
||||||
|
|
||||||
get_skel() {
|
|
||||||
printf ">> Creating directory layout in /opt/everest...\n"
|
|
||||||
ROOT=/opt/everest/targetfs
|
|
||||||
|
|
||||||
mkdir -v $ROOT/{boot,dev,etc,home,mnt,opt,proc,root,srv,sys,tmp,var}
|
|
||||||
mkdir -v $ROOT/usr
|
|
||||||
mkdir -v $ROOT/usr/{bin,sbin,include,lib,lib64,libexec,local,sbin,share,src}
|
|
||||||
mkdir -v $ROOT/var/{cache,lib,local,lock,log,opt,run,spool,tmp,www}
|
|
||||||
mkdir -v $ROOT/var/cache/glacier
|
|
||||||
mkdir -v $ROOT/var/log/glacier
|
|
||||||
mkdir -v $ROOT/etc/glacier
|
|
||||||
mkdir -v $ROOT/etc/glacier/pkginfo
|
|
||||||
ln -sv $ROOT/usr/bin $ROOT/bin
|
|
||||||
ln -sv $ROOT/usr/lib $ROOT/lib
|
|
||||||
lv -sv $ROOT/usr/sbin $ROOT/sbin
|
|
||||||
ln -sv $ROOT/usr/lib64 $ROOT/lib64
|
|
||||||
printf ">> Finished.\n"
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
prepare_for_pkg() {
|
|
||||||
printf ">> Preparing for package installation...\n"
|
|
||||||
glacier -c system-toolchain-bin
|
|
||||||
glacier -c busybox-base-bin
|
|
||||||
glacier -c glacier-base-bin
|
|
||||||
glacier -c make-base-bin
|
|
||||||
printf ">> Done.\n"
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
install_pkg() {
|
|
||||||
printf ">> Installing packages...\n"
|
|
||||||
glacier -ci system-toolchain-bin
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
glacier -ci busybox-base-bin
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
glacier -ci glacier-base-bin
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
glacier -ci make-base-bin
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
warn_about_cache() {
|
|
||||||
printf ">> WARNING: The cache was used for installing packages to the target.\n"
|
|
||||||
printf ">> It is recommended to run the following command to clean the cache:\n"
|
|
||||||
printf ">> glacier -cc\n"
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
change_ownership() {
|
|
||||||
printf ">> Ensuring file ownership is correct...\n"
|
|
||||||
chown -Rv root:root /opt/everest/targetfs
|
|
||||||
chgrp -v 13 /opt/everest/targetfs/var/log/lastlog
|
|
||||||
printf ">> Done.\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
create_img() {
|
|
||||||
printf ">> Creating filesystem image...\n"
|
|
||||||
install -dv /opt/everest/build
|
|
||||||
cd /opt/everest/targetfs
|
|
||||||
tar -cvf /opt/everest/build/everestlinux-RELEASE-img.tar *
|
|
||||||
zstd /opt/everest/build/everestlinux-RELEASE-img.tar
|
|
||||||
rm /opt/everest/build/everestlinux-${EVEREST_RELEASE}-img.tar
|
|
||||||
printf ">> Done.\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
finish() {
|
|
||||||
printf ">> Build has finished.\n"
|
|
||||||
printf ">> Filesystem image is located in the following directory:\n"
|
|
||||||
printf ">> /opt/everest/build\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
showhelp_big() {
|
|
||||||
printf "glacier-mkimg - easily compile an Everest Linux image\n"
|
|
||||||
printf "usage - glacier-mkimg [-h] [init] [-t] [-s] [-p] [-o] [-i]\n"
|
|
||||||
printf "\n"
|
|
||||||
printf "glacier-mkimg {init} initialize the environment\n"
|
|
||||||
printf "glacier-mkimg {-s} only download filesystem skeleton\n"
|
|
||||||
printf "glacier-mkimg {-p} only install packages to /opt/everest\n"
|
|
||||||
printf "glacier-mkimg {-o} only change ownership of /opt/everest\n"
|
|
||||||
printf "glacier-mkimg {-i} only create image\n"
|
|
||||||
printf "\n"
|
|
||||||
printf "If no option is passed, glacier-mkimg will perform all tasks\n"
|
|
||||||
printf "glacier-mkimg init must be run before anything else is done\n"
|
|
||||||
printf "\n"
|
|
||||||
printf "This program is free software.\n"
|
|
||||||
printf "See the GNU GPL version 3 for details.\n"
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
-h|--help)
|
|
||||||
showhelp_big
|
|
||||||
;;
|
|
||||||
init)
|
|
||||||
am_i_root "$@"
|
|
||||||
init_env "$@"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-s)
|
|
||||||
get_skel "$@"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-p)
|
|
||||||
prepare_for_pkg "$@"
|
|
||||||
install_pkg "$@"
|
|
||||||
warn_about_cache "$@"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-o)
|
|
||||||
change_ownership "$@"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-i)
|
|
||||||
create_img "$@"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-*)
|
|
||||||
printf "usage: glacier-mkimg [-h] [init] [-s] [-p] [-o] [-i]\n"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
get_skel "$@"
|
|
||||||
prepare_for_pkg "$@"
|
|
||||||
install_pkg "$@"
|
|
||||||
warn_about_cache "$@"
|
|
||||||
change_ownership "$@"
|
|
||||||
create_img "$@"
|
|
||||||
finish
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
printf "usage: glacier-mkimg [-h] [init] [-s] [-p] [-o] [-i]\n"
|
|
||||||
exit 1
|
|
@ -1,12 +1,45 @@
|
|||||||
|
#
|
||||||
# /etc/glacier.conf
|
# /etc/glacier.conf
|
||||||
# The settings stored in this file will be loaded when Glacier is called
|
# The settings stored in this file will be loaded when Glacier is called
|
||||||
# For more information on each of these options, see https://git.everest
|
# For more information on each of these options, see https://git.everest
|
||||||
#
|
#
|
||||||
|
|
||||||
# Repository Glacier will download programs from
|
# Repositories Glacier will use
|
||||||
|
|
||||||
export GREPO="https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main"
|
#[world]
|
||||||
export ALLOWED_REPOS=("world" "galaxy" "universe" "multiverse")
|
export GREPO1="https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/world" # System Software
|
||||||
|
|
||||||
|
#[galaxy]
|
||||||
|
export GREPO2="https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/galaxy" # GPL Only Software
|
||||||
|
|
||||||
|
#[universe]
|
||||||
|
export GREPO3="https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/universe" # All Open Source Software
|
||||||
|
|
||||||
|
#[multiverse]
|
||||||
|
#export GREPO4=https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/multiverse # Proprietary Software
|
||||||
|
|
||||||
|
#[world-testing]
|
||||||
|
#export GREPO5=https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/world-testing
|
||||||
|
|
||||||
|
#[galaxy-testing]
|
||||||
|
#export GREPO6=https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/galaxy-testing
|
||||||
|
|
||||||
|
#[universe-testing]
|
||||||
|
#export GREPO7=https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/universe-testing
|
||||||
|
|
||||||
|
#[multiverse-testing]
|
||||||
|
#export GREPO8=https://git.everestlinux.org/EverestLinux/glacier-pkgs/raw/branch/main/multiverse-testing
|
||||||
|
|
||||||
|
# Checksum locations
|
||||||
|
|
||||||
|
export WORLD_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/world"
|
||||||
|
export GALAXY_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/galaxy"
|
||||||
|
export UNIEVRSE_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/universe"
|
||||||
|
export MULTIVERSE_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/multiverse"
|
||||||
|
export WORLD_TESTING_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/world-testing"
|
||||||
|
export GALAXY_TESTING_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/galaxy-testing"
|
||||||
|
export UNIVERSE_TESTING_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/universe-testing"
|
||||||
|
export MULTIVERSE_TESTING_SUM="https://git.everestlinux.org/EverestLinux/glacier-pkgs/src/branch/main/multiverse-testing"
|
||||||
|
|
||||||
# Define colors and unicode symbols to be used
|
# Define colors and unicode symbols to be used
|
||||||
export red="\033[1;31m"
|
export red="\033[1;31m"
|
||||||
@ -22,16 +55,9 @@
|
|||||||
# Which backend Glacier will use to download files
|
# Which backend Glacier will use to download files
|
||||||
# Selecting more than one backend will cause breakage
|
# Selecting more than one backend will cause breakage
|
||||||
export GLACIER_DOWNLOAD_BACKEND="wget --quiet --show-progress"
|
export GLACIER_DOWNLOAD_BACKEND="wget --quiet --show-progress"
|
||||||
#export GLACIER_DOWNLOAD_BACKEND="curl --output $2.tar.gz"
|
#export GLACIER_DOWNLOAD_BACKEND="curl --output $input.tar.gz"
|
||||||
#export GLACIER_DOWNLOAD_BACKEND="aria2c"
|
#export GLACIER_DOWNLOAD_BACKEND="aria2c"
|
||||||
|
|
||||||
# Enable/disable package integrity checking
|
|
||||||
# WARNING: Keeping this enabled is strongly recommended.
|
|
||||||
# This option ensures all packages from the repositories are genuine.
|
|
||||||
|
|
||||||
export GLACIER_DO_INT_CHECK="true"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# end /etc/glacier.conf
|
# end /etc/glacier.conf
|
||||||
#
|
#
|
||||||
|
|
||||||
|
430
src/glacier.test
430
src/glacier.test
@ -1,430 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Glacier - manage installed packages on a Linux system
|
|
||||||
# This program is free software - you can distribute it
|
|
||||||
# under the terms of the GNU General Public License v3.0,
|
|
||||||
# or at your option, any later version.
|
|
||||||
|
|
||||||
# A copy of the GNU General Public License should have been
|
|
||||||
# recieved along with this program. If not, see
|
|
||||||
# <https://www.gnu.org/licenses>
|
|
||||||
|
|
||||||
source $(pwd)/glacier.conf
|
|
||||||
|
|
||||||
get_pkg() {
|
|
||||||
printf "$blue[ i ]$reset Downloading archive for package '$2'...\n"
|
|
||||||
$GLACIER_DOWNLOAD_BACKEND $GREPO1/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO2/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO3/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO4/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO5/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO6/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO7/$2.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO8/$2.tar.gz
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Package '$2' not found.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
$GLACIER_DOWNLOAD_BACKEND $GREPO1/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO2/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO3/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO4/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO5/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO6/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO7/$2.checksum || $GLACIER_DOWNLOAD_BACKEND $GREPO8/$2.tar.gz
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Package checksum not found.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
int_check() {
|
|
||||||
if [ "$GLACIER_DO_INT_CHECK" = "true" ]; then
|
|
||||||
printf "$blue[ i ]$reset Checking package integrity...\n"
|
|
||||||
/usr/bin/glacier-integrity-check
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Integrity check failed.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
printf "$green[ $check ]$reset Integrity check passed.\n"
|
|
||||||
else
|
|
||||||
printf "$yellow[ ! ]$reset Skipping integrity check...\n"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
unpack_pkg() {
|
|
||||||
printf "$blue[ i ]$reset Unpacking $2.tar.gz...\n"
|
|
||||||
mkdir $2 && mv $2.tar.gz $2 && cd $2
|
|
||||||
tar -xf $2.tar.gz
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Could not unpack $2.tar.gz.\n"
|
|
||||||
cd .. && rm -rf $2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
installpkg() {
|
|
||||||
printf "$blue[ i ]$reset Installing $2...\n"
|
|
||||||
sleep 1
|
|
||||||
chmod +x *
|
|
||||||
./INSTALL.sh
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Failed to update $2.\n"
|
|
||||||
cd .. && rm -rf $2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
./$2.ts.sh
|
|
||||||
mv $2-pkginfo.json /etc/glacier/pkginfo
|
|
||||||
}
|
|
||||||
|
|
||||||
updatepkg() {
|
|
||||||
printf "$blue[ i ]$reset Updating $2...\n"
|
|
||||||
sleep 1
|
|
||||||
chmod +x *
|
|
||||||
./UPDATE.sh
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Failed to update $2.\n"
|
|
||||||
cd .. && rm -rf $2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
./$2.ts.sh
|
|
||||||
}
|
|
||||||
|
|
||||||
removepkg() {
|
|
||||||
printf "$blue[ i ]$reset Removing $2...\n"
|
|
||||||
sleep 1
|
|
||||||
chmod +x *
|
|
||||||
/etc/glacier/pkginfo/$2.remove
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Failed to remove $2.\n"
|
|
||||||
cd .. && rm -rf $2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
rm /var/log/glacier/$2.timestamp
|
|
||||||
rm /etc/glacier/pkginfo/$2-pkginfo.json
|
|
||||||
}
|
|
||||||
|
|
||||||
installpkg_from_cache() {
|
|
||||||
printf "$blue[ i ]$reset Installing $2 from cache...\n"
|
|
||||||
sleep 1
|
|
||||||
cd /var/cache/glacier && cp $2.tar.gz /tmp && cd /tmp
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Package does not exist in cache.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
unpack_pkg
|
|
||||||
install_pkg
|
|
||||||
}
|
|
||||||
|
|
||||||
clear_cache() {
|
|
||||||
printf "$blue[ i ]$reset Clearing cache...\n"
|
|
||||||
sleep 1
|
|
||||||
cd /var/cache/glacier && rm -rvf *
|
|
||||||
if [ "$?" != "0" ]; then
|
|
||||||
printf "$red[ $error ]$reset Some items could not be cleared.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Show Glacier debugging info
|
|
||||||
#
|
|
||||||
|
|
||||||
debug_info() {
|
|
||||||
printf "$blue>> Glacier v3.2.0$reset\n"
|
|
||||||
printf ">> Checking for valid download backend...\n"
|
|
||||||
whereis wget
|
|
||||||
whereis curl
|
|
||||||
whereis aria2c
|
|
||||||
printf ">> Checking which download backend is in use...\n"
|
|
||||||
echo $GLACIER_DOWNLOAD_BACKEND
|
|
||||||
printf ">> Checking if all Glacier files are present...\n"
|
|
||||||
whereis glacier glacier.conf make.conf
|
|
||||||
ls /var/log | grep glacier
|
|
||||||
ls /var/cache | grep glacier
|
|
||||||
printf ">> If any files are missing, Glacier will not behave properly.\n"
|
|
||||||
printf ">> Checking if terminal can output unicode symbols...\n"
|
|
||||||
printf "$check\n"
|
|
||||||
printf "$error\n"
|
|
||||||
printf "$warning\n"
|
|
||||||
printf "$question\n"
|
|
||||||
printf "$red Red.$reset\n"
|
|
||||||
printf "$green Green.$reset\n"
|
|
||||||
printf "$yellow Yellow.$reset\n"
|
|
||||||
printf "$blue Blue.$reset\n"
|
|
||||||
printf "NOTE: If you use a custom colorscheme, colors will not match.\n"
|
|
||||||
printf ">> Checking if repositories are valid...\n"
|
|
||||||
echo $GREPO1
|
|
||||||
echo $GREPO2
|
|
||||||
echo $GREPO3
|
|
||||||
echo $GREPO4
|
|
||||||
echo $GREPO5
|
|
||||||
echo $GREPO6
|
|
||||||
echo $GREPO7
|
|
||||||
echo $GREPO8
|
|
||||||
printf ">> Checking which shell is in use...\n"
|
|
||||||
which $SHELL
|
|
||||||
printf "NOTE: If you use zsh, a percentage symbol may appear after some lines.\n"
|
|
||||||
printf ">> Gathered debug information.\n"
|
|
||||||
printf ">> To save this information to a file, run:\n"
|
|
||||||
printf ">> $ glacier --debuginfo > glacier.debug\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Parses JSON from pkginfo files and outputs it
|
|
||||||
#
|
|
||||||
|
|
||||||
query() {
|
|
||||||
printf "$blue[ i ]$reset Showing information for package '$2'.\n"
|
|
||||||
printf "$blue>> Package name:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_name
|
|
||||||
printf "$blue>> Package version:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_version
|
|
||||||
printf "$blue>> Package description:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .package_description
|
|
||||||
printf "$blue>> Source tree size:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .src_tree_size
|
|
||||||
printf "$blue>> Size of installed files:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .exec_size
|
|
||||||
printf "$blue>> License:$reset " && cat /etc/glacier/pkginfo/$2-pkginfo.json | jq .license
|
|
||||||
printf "$blue>> Installation date:$reset " && cat /var/log/glacier/$2.timestamp
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Will either keep removal script, update it with a new one, or delete it alltogether
|
|
||||||
#
|
|
||||||
|
|
||||||
cleanup_keep_rm () {
|
|
||||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
|
||||||
mv REMOVE.sh /etc/glacier/pkginfo/$2.remove
|
|
||||||
cd .. && rm -rf *.checksum *.tar.* $2
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup_update_rm () {
|
|
||||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
|
||||||
rm /etc/glacier/pkginfo/$2.remove
|
|
||||||
mv REMOVE.sh /etc/glacier/pkginfo/$2.remove
|
|
||||||
cd .. && rm -rf *.checksum *.tar.* $2
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup_del_rm () {
|
|
||||||
printf "$blue[ i ]$reset Cleaning up...\n"
|
|
||||||
rm /etc/glacier/pkginfo/$2.remove
|
|
||||||
cd .. && rm -rf *.checksum *.tar.* $2
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Execute pre and posr hooks from files
|
|
||||||
#
|
|
||||||
|
|
||||||
pre_hooks() {
|
|
||||||
source /etc/glacier/hooks
|
|
||||||
}
|
|
||||||
|
|
||||||
pre_op_hooks() {
|
|
||||||
printf "$blue[ i ]$reset Executing pre-operation hooks...\n"
|
|
||||||
/etc/glacier/pre-hooks
|
|
||||||
}
|
|
||||||
|
|
||||||
post_hooks () {
|
|
||||||
printf "$blue[ i ]$reset Executing post-operation hooks...\n"
|
|
||||||
/etc/glacier/post-hooks
|
|
||||||
}
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
-h|--help)
|
|
||||||
printf "$blue[ * ] Glacier - Manage installed packages on the system$reset\n"
|
|
||||||
printf "usage: glacier [-f] [-u] [-x] [-q] [-c] [-ci] [-cc] [--debuginfo]\n"
|
|
||||||
printf "\n"
|
|
||||||
printf "$blue=== Information ===$reset\n"
|
|
||||||
printf "glacier {-h/--help} - Show this message and exit\n"
|
|
||||||
printf "glacier {-v/--version} - Show the version and exit\n"
|
|
||||||
printf "\n"
|
|
||||||
printf "$blue=== Operations ===$reset\n"
|
|
||||||
printf "glacier {-f/install} - Install a new package\n"
|
|
||||||
printf "glacier {-u/update} - Update an installed package\n"
|
|
||||||
printf "glacier {-x/remove} - Remove an installed package\n"
|
|
||||||
printf "glacier {-q/query} - Query an installed package\n"
|
|
||||||
printf "glacier {-c/cache} - Download a package to the cache\n"
|
|
||||||
printf "glacier {-ci/cache-install} - Install a package from the cache\n"
|
|
||||||
printf "glacier {-cc/cache-clear} - Clear the cache\n"
|
|
||||||
printf "\n"
|
|
||||||
printf "$blue=== Debugging ===$reset\n"
|
|
||||||
printf "glacier {--debuginfo} - Show debugging information\n"
|
|
||||||
printf "\n"
|
|
||||||
printf "$blue=== Licensing ===$reset\n"
|
|
||||||
printf "This program is free software: you can redistribute it and/or modify it\n"
|
|
||||||
printf "under the terms of the GNU General Public License as published by the\n"
|
|
||||||
printf "Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-v|--version)
|
|
||||||
printf "${blue}Glacier v3.2.0${reset}\n"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-f|install)
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$2" == "" ]; then
|
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "$blue[ i ]$reset Installing package '$2'.\n"
|
|
||||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
||||||
cd /opt/glacier/workspace
|
|
||||||
printf "\n"
|
|
||||||
pre_hooks "$@"
|
|
||||||
get_pkg "$@"
|
|
||||||
int_check "$@"
|
|
||||||
unpack_pkg "$@"
|
|
||||||
pre_op_hooks "$@"
|
|
||||||
installpkg "$@"
|
|
||||||
post_hooks "$@"
|
|
||||||
cleanup_keep_rm "$@"
|
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
|
||||||
exit 0
|
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
|
||||||
printf "\n"
|
|
||||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
-u|update)
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$2" == "" ]; then
|
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "$blue[ i ]$reset Updating package '$2'.\n"
|
|
||||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
||||||
cd /opt/glacier/workspace
|
|
||||||
printf "\n"
|
|
||||||
pre_hooks "$@"
|
|
||||||
get_pkg "$@"
|
|
||||||
int_check "$@"
|
|
||||||
unpack_pkg "$@"
|
|
||||||
pre_op_hooks "$@"
|
|
||||||
updatepkg "$@"
|
|
||||||
post_hooks "$@"
|
|
||||||
cleanup_update_rm "$@"
|
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
|
||||||
exit 0
|
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
|
||||||
printf "\n"
|
|
||||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
-x|remove)
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$2" == "" ]; then
|
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "$blue[ i ]$reset Removing package '$2'.\n"
|
|
||||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
||||||
cd /opt/glacier/workspace
|
|
||||||
printf "\n"
|
|
||||||
pre_hooks "$@"
|
|
||||||
removepkg "$@"
|
|
||||||
post_hooks "$@"
|
|
||||||
cleanup_del_rm "$@"
|
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
|
||||||
exit 0
|
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
|
||||||
printf "\n"
|
|
||||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
-q|query)
|
|
||||||
if [ "$2" == "" ]; then
|
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
query "$@"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-c|cache)
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$2" == "" ]; then
|
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "$blue[ i ]$reset Caching package '$2'.\n"
|
|
||||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
||||||
cd /var/cache/glacier
|
|
||||||
printf "\n"
|
|
||||||
get_pkg "$@"
|
|
||||||
int_check "$@"
|
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
|
||||||
exit 0
|
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
|
||||||
printf "\n"
|
|
||||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
-ci|cache-install)
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$2" == "" ]; then
|
|
||||||
printf "$red[ $error ]$reset No package name was supplied.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "$blue[ i ]$reset Installing package '$2' from cache.\n"
|
|
||||||
read -p "$(printf "$blue[ ? ]$reset Proceed with this operation? (y/n) ")" -n 1 -r
|
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
||||||
cd /var/cache/glacier
|
|
||||||
mv $2.tar.gz /opt/glacier/workspace
|
|
||||||
cd /opt/glacier/workspace
|
|
||||||
printf "\n"
|
|
||||||
pre_hooks "$@"
|
|
||||||
unpack_pkg "$@"
|
|
||||||
pre_op_hooks "$@"
|
|
||||||
installpkg "$@"
|
|
||||||
post_hooks "$@"
|
|
||||||
cleanup_keep_rm "$@"
|
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
|
||||||
exit 0
|
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
|
||||||
printf "\n"
|
|
||||||
printf "${red}[ $error ]${reset} Aborting.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
-cc|cache-clear)
|
|
||||||
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
|
|
||||||
printf "$red[ $error ]$reset Please run Glacier as root.\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
clear_cache "$@"
|
|
||||||
printf "$green[ $check ]$reset Operation completed.\n"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
--debuginfo)
|
|
||||||
debug_info "$@"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-*|--*)
|
|
||||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
printf "$red[ $error ]$reset Unknown option, see 'glacier -h' for usage.\n"
|
|
||||||
exit 1
|
|
3
src/glacier_release
Executable file
3
src/glacier_release
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
export GLACIER_RELEASE="3.0.0 "
|
58
src/gscripts
Executable file
58
src/gscripts
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# gscripts - Scripts for Glacier operations
|
||||||
|
|
||||||
|
source /etc/glacier.conf
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
help)
|
||||||
|
printf "gscripts - backend for many Glacier functionalities since v3\n"
|
||||||
|
printf "gscripts {help} show this message\n"
|
||||||
|
printf "gscripts {integrity-check} verify package integrity\n"
|
||||||
|
printf "gscripts {download} download a package\n"
|
||||||
|
printf "gscripts {post-install} run post installation cleanup hooks\n"
|
||||||
|
printf "\n"
|
||||||
|
printf "this program can be distributed under the terms of the GNU General\n"
|
||||||
|
printf "Public License version 3 or higher\n"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
preload)
|
||||||
|
/etc/glacier/hooks
|
||||||
|
if [ "$?" != "0" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
integrity-check)
|
||||||
|
$GLACIER_DOWNLOAD_BACKEND $WORLD_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $GALAXY_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $UNIVERSE_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $MULTIVERSE_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $WORLD_TESTING_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $GALAXY_TESTING_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $UNIVERSE_TESTING_SUM/$input.checksum || $GLACIER_DOWNLOAD_BACKEND $MULTIVERSE_TESTING_SUM/$input.checksum
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
LOCAL_SUM=$(sha256sum $input.tar.gz)
|
||||||
|
|
||||||
|
if [ $input.checksum = $LOCAL_SUM ]; then
|
||||||
|
printf "$green [ $check ]$reset Integrity check passed.\n"
|
||||||
|
rm $input.checksum
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
printf "$red [ $error ]$reset Integrity check failed.\n"
|
||||||
|
rm $input.checksum
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
download)
|
||||||
|
$GLACIER_DOWNLOAD_BACKEND $GREPO1/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO2/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO3/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO4/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO5/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO6/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO7/$input.tar.gz || $GLACIER_DOWNLOAD_BACKEND $GREPO8/$input.tar.gz
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
post-install)
|
||||||
|
mv -vf -- $input-pkginfo.json /etc/glacier/pkginfo || printf "error in subprocess /usr/bin/gscripts: could not stat $input-pkginfo.json\n" && exit 1
|
||||||
|
cd ..
|
||||||
|
rm -rf $input || printf "error in subprocess /usr/bin/gscripts: could not remove package source\n" && exit 1
|
||||||
|
;;
|
||||||
|
-*|--*)
|
||||||
|
printf "gscripts - no valid option was passed, see 'help' for details\n"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "gscripts - no option was passed, see 'help' for details\n"
|
@ -3,3 +3,4 @@
|
|||||||
|
|
||||||
source /etc/make.conf
|
source /etc/make.conf
|
||||||
source /etc/glacier.conf
|
source /etc/glacier.conf
|
||||||
|
source /etc/glacier/glacier_release
|
||||||
|
@ -2,9 +2,7 @@
|
|||||||
# This file is meant to maintain legacy support.
|
# This file is meant to maintain legacy support.
|
||||||
|
|
||||||
printf "This package uses the legacy hooks file (/etc/glacier/hooks.sh).\n"
|
printf "This package uses the legacy hooks file (/etc/glacier/hooks.sh).\n"
|
||||||
printf ">>> This is not an error. <<<\n"
|
printf ">>> This is not an error. <<< There is no manual intervention needed.\n"
|
||||||
printf "If you are not the maintainer of this package, there is no manual intervention required.\n"
|
|
||||||
printf "If you are the maintainer of this package, please update your usrbuild.sh, usrupdate.sh, and usrremove.sh accordingly.\n"
|
printf "If you are the maintainer of this package, please update your usrbuild.sh, usrupdate.sh, and usrremove.sh accordingly.\n"
|
||||||
|
|
||||||
source /etc/glacier/hooks && /etc/glacier/hooks
|
source /etc/glacier/hooks && /etc/glacier/hooks
|
||||||
|
|
||||||
|
@ -1,72 +0,0 @@
|
|||||||
/* Copyright (C) 2022-2023 Everest Linux Developers
|
|
||||||
|
|
||||||
This file is part Glacier.
|
|
||||||
|
|
||||||
Glacier is free software: you can redistribute it
|
|
||||||
and/or modify it under the terms of the GNU General Public License
|
|
||||||
as published by the Free Software Foundation, either version 3
|
|
||||||
of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
Glacier is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with Glacier. If not, see <https://www.gnu.org/licenses/>. */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include<string.h>
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
|
||||||
FILE *fp1;
|
|
||||||
FILE *fp2;
|
|
||||||
|
|
||||||
int cnt1 = 0;
|
|
||||||
int cnt2 = 0;
|
|
||||||
int flg = 0;
|
|
||||||
|
|
||||||
if (argc < 3) {
|
|
||||||
printf("not enough arguments\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fp1 = fopen(argv[1],"r");
|
|
||||||
if (fp1 == NULL) {
|
|
||||||
printf("\n%s cannot open file \n",argv[1]);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fseek(fp1,0,SEEK_END);
|
|
||||||
cnt1 = ftell(fp1);
|
|
||||||
|
|
||||||
fp2 = fopen(argv[2],"r");
|
|
||||||
if (fp2 == NULL) {
|
|
||||||
printf("\n%s cannot open file \n",argv[2]);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fseek(fp2,0,SEEK_END);
|
|
||||||
cnt2 = ftell(fp2);
|
|
||||||
|
|
||||||
fseek(fp1,0,SEEK_SET);
|
|
||||||
fseek(fp2,0,SEEK_SET);
|
|
||||||
|
|
||||||
if (cnt1 != cnt2) {
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
while ( ! feof(fp1)) {
|
|
||||||
if (fgetc(fp1) != fgetc(fp2)) {
|
|
||||||
flg = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (flg) return 1;
|
|
||||||
else return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(fp1);
|
|
||||||
fclose(fp2);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
0
src/make.conf
Executable file → Normal file
0
src/make.conf
Executable file → Normal file
24
src/messages
Executable file
24
src/messages
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Glacier messages storage
|
||||||
|
|
||||||
|
source /etc/glacier.conf
|
||||||
|
|
||||||
|
# Errors
|
||||||
|
export GLACIER_ERROR_NO_ROOT=$(printf "$red [ $error ]$reset Please run Glacier as root.\n")
|
||||||
|
export GLACIER_ERROR_DOES_NOT_EXIST=$(printf "$red [ $error ]$reset Package $input either does not exist, or is in a repository that is not enabled.\n")
|
||||||
|
export GLACIER_ERROR_CANNOT_UNPACK=$(printf "$red [ $error ]$reset Package archive cannot be unpacked.\n")
|
||||||
|
export GLACIER_ERROR_INSTRUCTIONS_CANNOT_EXECUTE=$(printf "$red [ $error ]$reset Instructions were either unable to execute, or encountered an error while executing.\n")
|
||||||
|
export GLACIER_ERROR_NO_SUCH_OPTION=$(printf "$red [ $error ]$reset Unknown option, see 'glacier -h' for usage.\n")
|
||||||
|
|
||||||
|
# Status
|
||||||
|
export GLACIER_STATUS_INSTALLING=$(printf "$blue [ i ]$reset Installing $input...\n")
|
||||||
|
export GLACIER_STATUS_UPDATING=$(printf "$blue [ i ]$reset Updating $input...\n")
|
||||||
|
export GLACIER_STATUS_REMOVING=$(printf "$blue [ i ]$reset Removing $input...\n")
|
||||||
|
export GLACIER_STATUS_CACHING=$(printf "$blue [ i ]$reset Caching $input...\n")
|
||||||
|
export GLACIER_STATUS_UNPACKING=$(printf "$blue [ i ]$reset Unpacking $input.tar.gz...\n")
|
||||||
|
export GLACIER_STATUS_INTEGRITY_CHECK=$(printf "$blue [ i ]$reset Verifying integrity of package...\n")
|
||||||
|
export GLACIER_STATUS_EXECUTING=$(printf "$blue [ i ]$reset Executing instructions...\n")
|
||||||
|
export GLACIER_WHICH_PKG=$(printf "$blue [ $question ]$reset Enter package name: ")
|
||||||
|
|
||||||
|
# Success
|
||||||
|
export GLACIER_SUCCESS=$(printf "$green [ $check ]$reset Operation finished successfully.\n")
|
@ -1,5 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Glacier post-operation hooks
|
|
||||||
|
|
||||||
printf "No hooks to be executed.\n"
|
|
||||||
exit 1
|
|
@ -1,5 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Hooks to be executed before performing an operation on a package
|
|
||||||
|
|
||||||
printf "No hooks to be executed.\n"
|
|
||||||
exit 0
|
|
Loading…
Reference in New Issue
Block a user