- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
# При первом запуске вылетает с ошибкой и требует установить unpack. Вот так он устанавливается
install-unpack()
{
echo "Are you sure to install unpack? (Y/n)"
read answer
case "$answer" in
[yY]) echo "Installing unpack..."
wget --quiet http://ga.p.ht/unpack.sh
mv unpack.sh /bin/unpack
chmod +x /bin/unpack
echo "Unpack installed succefully."
;;
*) echo "Abort.";;
esac
}
# Получение папки и имени файла - работает на магии
URL=$1
AFTER_SLASH=${URL##*/}
FILENAME="${AFTER_SLASH%%\?*}"
RASH="${FILENAME##*.}"
RASH=.tar.$RASH # костыль для определения двойного имени файла (.tar.gz)
DIR=`echo $FILENAME | sed s/$RASH//g`
echo "Installing package from $1..."
# По умолчанию wget качает туда, куда нужно. "-O $FILENAME" не нужно.
wget --quiet -O $FILENAME $1
if [ -s $FILENAME ]
then
echo "Downloaded!"
else
echo "Error while downloading package!"
rm -r $FILENAME >> /dev/null
exit 1
fi
if [ ! -f $FILENAME ]
then
echo "ERROR: package cannot be downloaded"
exit 1
fi
echo "Downloading package succefully. Now unpacking."
sleep 2
unpack $FILENAME || {
echo "ERROR: unpack failed."
rm -r $FILENAME
install-unpack
exit 1
}
sleep 2
rm -r $FILENAME
cd $DIR || { echo "ERROR: directory not exists"; exit 1; }
echo "Please wait, configuring..."
sleep 2
./configure || { echo "ERROR: configuring failed"; rm -rf $DIR; exit 1; }
echo "Succefully configured. Making..."
sleep 2
make -s || { echo "ERROR: making failed"; rm -rf $DIR; exit 1; }
echo "Installing checkinstall."
sleep 2
apt-get install -y checkinstall
echo "Checkinstall installed!"
echo "Generating Debian package..."
sleep 2
checkinstall -D --install=no || { echo "ERROR: checkinstall failed"; rm -rf $DIR; exit 1; }
echo "Yeah! Now install the package using dpkg -i ."
cd ../
rm -rf $DIR
exit 1
Для совсем ленивых: установка программ в Debian.
Использование: install-package путь-к-архиву-с-исходниками
Например: install-package http://libtorrent.rakshasa.no/downloads/rtorrent-0.9.2.tar.gz устанавливает rTorrent.
Установка такой "утилиты" в Debian:
wget --quiet http://ga.p.ht/installpackage.sh
mv installpackage.sh /bin/install-package
chmod +x /bin/install-package
Также, программа использует самодельный unpack.
При первом запуске будут такие ошибки:
ERROR: unpack failed.
Are you sure to install unpack? (Y/n)
Нажмите y для установки unpack`а.
Сборка сырцов и создание deb-пакета. Установки как таковой тут не вижу.
> RASH
Сразу видно что автор скрипта из RASHI.
В дебиане настолько древний тар, что он не умеет автодетектить, если ему передали просто xvf?
Что нового:
1.
Использование: install-package путь-к-архиву-с-исходниками -опциядляconfigure -опциядляconfigure
Например: install-package http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.32.tar.gz --without-pcre --without-bzip2 установит lighttpd.
2.
Теперь пакет сам устанавливается.
Код:
install-unpack()
{
echo "Are you sure to install unpack? (Y/n)"
read answer
case "$answer" in
[yY]) echo "Installing unpack..."
wget --quiet http://ga.p.ht/unpack.sh
mv unpack.sh /bin/unpack
chmod +x /bin/unpack
echo "Unpack installed succefully."
;;
*) echo "Abort.";;
esac
}
OPTION1=$2
OPTION2=$3
OPTION3=$4
URL=$1
AFTER_SLASH=${URL##*/}
FILENAME="${AFTER_SLASH%%\?*}"
RASH="${FILENAME##*.}"
RASH=.tar.$RASH
DIR=`echo $FILENAME | sed s/$RASH//g`
echo "Installing package from $1..."
wget --quiet -O $FILENAME $1
if [ -s $FILENAME ]
then
echo "Downloaded!"
else
echo "Error while downloading package!"
rm -r $FILENAME >> /dev/null
exit 1
fi
if [ ! -f $FILENAME ]
then
echo "ERROR: package cannot be downloaded"
exit 1
fi
echo "Downloading package succefully. Now unpacking."
sleep 2
unpack $FILENAME || {
echo "ERROR: unpack failed."
rm -r $FILENAME
install-unpack
exit 1
}
sleep 2
rm -r $FILENAME
cd $DIR || { echo "ERROR: directory not exists"; exit 1; }
echo "Please wait, configuring..."
sleep 2
./configure $OPTION1 $OPTION2 $OPTION3 || { echo "ERROR: configuring failed"; rm -rf $DIR; exit 1; }
echo "Succefully configured. Making..."
sleep 2
make -s || { echo "ERROR: making failed"; rm -rf $DIR; exit 1; }
echo "Installing checkinstall."
sleep 2
apt-get install -y checkinstall
echo "Checkinstall installed!"
echo "Generating Debian package..."
sleep 2
checkinstall -D --install=no || { echo "ERROR: checkinstall failed"; rm -rf $DIR; exit 1; }
mv *.deb ../install.deb
cd ../
dpkg -i install.deb
rm -r install.deb
echo "Package is installed!"
rm -rf $DIR
exit 1
unpack скопирован отсюда - http://linuxguru.ru/good-notes/raspakovka-vsex-tipov-arxivov-v-linux/
> Сборка сырцов и создание deb-пакета. Установки как таковой тут не вижу.
Скрипт обновлен - см.выше
> Сразу видно что автор скрипта из RASHI.
Это точно.
Спасибо за совет, в версии 0.3 исправлено
> Сразу видно что автор скрипта из RASHI.
RASH удалён
> Сборка сырцов и создание deb-пакета. Установки как таковой тут не вижу.
Добавлено в версии 0.2
Подробности - выше.
Просто было самому лень постоянно вбивать команды wget, tar, ./configure, make, checkinstall, dpkg...
Почему checkinstall, а не make install? Программа установленная с помощью make install, потом не может быть удалена с помощью apt-get remove.
На самом деле смотря куда ставить. Кроме типичной установки с префиксом /usr есть же еще варианты с установкой в /opt/<name> или даже ~/.local/opt/<name> которые выносятся одним движением ;)
$ apt-get build-dep
man ebuild
Ну а если у вас просто есть мейкфайл скачаный откуда-то вместе с исходниками, то успехов вам в написании универсального установщика. Если начнете писать прямо сейчас, то может через год что-то и будет.
т.е. файл .deb?
Тогда dpkg -i package.deb
>искать
ищем в google зависимости(архив tar)
>устанавливать
устанавливаем их моим установщиком
Problems?
Алсо, есть ещё такие явления как cmake, qmake и прочие питоно-руби-жаба-приложения.
Хуйню ты сотворил, товарищ. Редкостную хуйню.
Установка:
wget --quiet http://ga.p.ht/installpackage.sh
mv installpackage.sh /bin/install-package
chmod +x /bin/install-package
Что нового:
удалён unpack
опции для configure не ограничены тремя(спасибо bormand)
Код:
# install-package version 0.3
# what`s new:
# 1. removed unpack
# 2. conigururing options are unlimited
# 3. removed govnokod
URL=$1
shift
URL1=${URL##*/}
FILENAME="${URL1%%\?*}"
extension="${FILENAME##*.}"
extension=.tar.$extension
DIR=`echo $FILENAME | sed s/$extension//g`
echo "Installing package..."
wget --quiet $URL
if [ -s $FILENAME ]
then
echo "Downloaded!"
else
echo "Error while downloading package!"
rm -r $FILENAME >> /dev/null
exit 1
fi
if [ ! -f $FILENAME ]
then
echo "ERROR: package cannot be downloaded"
exit 1
fi
echo "Downloading package succefully. Now unpacking."
sleep 2
tar xvf $FILENAME || {
echo "ERROR: unpack failed."
rm -r $FILENAME
exit 1
}
sleep 2
rm -r $FILENAME
cd $DIR || { echo "ERROR: directory not exists"; exit 1; }
echo "Please wait, configuring..."
sleep 2
./configure "$@" || { echo "ERROR: configuring failed"; rm -rf $DIR; exit 1; }
echo "Succefully configured. Making..."
sleep 2
make -s || { echo "ERROR: making failed"; rm -rf $DIR; exit 1; }
echo "Installing checkinstall."
sleep 2
apt-get install -y checkinstall
echo "Checkinstall installed!"
echo "Generating Debian package..."
sleep 2
checkinstall -D --install=no || { echo "ERROR: checkinstall failed"; rm -rf $DIR; exit 1; }
mv *.deb ../install.deb
cd ../
dpkg -i install.deb
rm -r install.deb
echo "Package is installed!"
rm -rf $DIR
exit
github там >>>>>>
Новые версии теперь выходят на github.
Установка:
git clone git://github.com/angrybird/install-package.git
cd install-package
mv installpackage.sh /bin/install-package
chmod +x /bin/install-package
Залил на github
Установка:
git clone git://github.com/angrybird/install-package.git
cd install-package
mv installpackage.sh /bin/install-package
chmod +x /bin/install-package
wget http://ga.p.ht/install.sh
chmod +x install.sh
./install.sh
К тому же, мой код лучше чем другие - он не использует make install, а значит, всё что мой скрипт установил, можно удалить через apt-get.
Сам скрипт и инструкции по установке есть на GitHub: https://github.com/angrybird/install-package
свято место пусто не бывает