Форум
Komodo Edit - самостоятельная сборка .deb-пакета

Нашёл в сети скрипт, который собирает вам .deb-пакет для Ubuntu или Debian из скачанного с оф. сафта инсталятора (Komodo-Edit-*.*.*-****-linux-x86.tar.gz).
Годится как для старой ветки (6.*), так и для новой (7.*).
Листинг:
#!/bin/bash
################################################################################
# #
# This script makes Komodo Edit package for Debian and Ubuntu #
# #
################################################################################
# backup IFS variable
OLD_IFS=$IFS
UMASK=`umask`
# the archive filename
archive_name=""
# Package version number
VERSION=""
# Installer version
I_VER=6
# Package revision number
REVISION=""
# package Architecture
ARCH=""
# Where we are now :)
FULL_PATH=`pwd`
# temporary subfolder
TEMP_PATH="temp-komodo-pkg"
# Full extract path
EXTR_PATH=$FULL_PATH/$TEMP_PATH
# Installation script
SCRIPT="install.sh"
# temporary installation path
TEMP_BUILD_PATH="$EXTR_PATH/temp-build"
# real installation path
BUILD_PATH="$EXTR_PATH/build"
# installation prefix
PREFIX=usr
# delete temporary files
opt_del_temp="1"
# Make submenu Komodo Edit in Development Menu
opt_submenu=""
# Size for Pixmaps Icon
pixmaps_size="48x48"
# show script usage
usage()
{
cat << EOF
Usage:
`basename $0` [options] [filename]
This script makes Debian/Ubuntu package for Komodo Edit.
The filename is Komodo Edit tar.gz-file.
Options:
-h | --help View this message
-u Make Ubuntu package (by default packaging for Debain)
-m Make menu subfolder entry
-s Save temporary files (temp-komodo-pkg folder)
EOF
}
# options parser for check_args function
option_parse()
{
# Unexpected argument?
arg=`expr match "$1" ".*\([^-hums]\)"`
if [ -n "$arg" ]; then
echo "There is unexpected option specified. Exit."
usage
exit 2
fi
# SHow help?
arg=`expr match "$1" ".*\([h]\)"`
if [ -n "$arg" ]; then
usage
exit 0
fi
# Save temprary?
arg=`expr match "$1" ".*\([s]\)"`
if [ -n "$arg" ]; then
opt_del_temp=""
fi
# Submenu for Komodo?
arg=`expr match "$1" ".*\([m]\)"`
if [ `expr match "$1" ".*\([m]\)"` ]; then
opt_submenu="1"
fi
# Ubuntu package?
arg=`expr match "$1" ".*\([u]\)"`
if [ -n "$arg" ]; then
PREFIX=usr/local
REVISION="-ubuntu0"
fi
}
# check input arguments
check_args()
{
if [ -z "$1" ]; then
echo "There is no arguments specified. Exit."
usage
exit 1
fi
for arg in $@
do
case $arg in
--help) option_parse -h;;
-[a-z]*) options=`expr match "$arg" "\(-[a-z]*\)"`
option_parse $options;;
*) options=`expr match "$arg" "\(.*\.tar\.gz\)"`
if [ -z "$options" ]; then
echo "There is unexpected argument \"$arg\" specified. Exit."
usage
exit 2
elif [ -f "$options" ]; then
if [ -n "$archive_name" ]; then
echo "Too many filenames specified. Exit."
usage
exit 3
fi
archive_name=$options
else
echo "The specified argument \"$options\" is not a file. Exit."
usage
exit 4
fi;;
esac
done
}
# check the system functionality
check_funcs()
{
CONVERTER=`which convert`
echo -n "Checking for image converter ..."
if [ -z "$CONVERTER" ]; then
echo "Error"
echo "Please install converter for images (can be found in package imagemagick). Exit."
exit 5
fi
echo "Found"
FAKEROOT=`which fakeroot`
echo -n "Checking for fakeroot ..."
if [ -z "$FAKEROOT" ]; then
echo "Error"
echo "Please install package fakeroot. Exit."
exit 5
fi
echo "Found"
}
# Package name parser
package_name_parse()
{
if [ -z "$1" ]; then
echo "There is no Komodo Edit archive file specified. Exit."
usage
exit 6
else
echo "The specified file \"$1\" found."
fi
name=`basename $1`
IFS="-"
name=( $name )
VERSION=${name[2]}
REVISION=${name[3]}$REVISION
IFS="."
VERSION_ARR=( $VERSION )
VERSION_ARR=${VERSION_ARR[0]}
if [ $VERSION_ARR -gt 6 ]; then
I_VER=7
fi
# get arch based on installer version
case "$I_VER" in
7) ARCH=${name[5]};;
*) ARCH=${name[6]};;
esac
IFS="."
ARCH=( $ARCH )
ARCH=${ARCH[0]}
# restore IFS variable
IFS=$OLD_IFS
if [ "$ARCH" == "x86" ]; then
ARCH="i386"
elif [ "$ARCH" == "x86_64" ]; then
ARCH="amd64"
fi
echo "Version: $VERSION"
echo "Revision: $REVISION"
echo "Architecture: $ARCH"
}
unpack_archive()
{
umask 022
echo -n "Clean old temporary files ..."
rm -rf $EXTR_PATH
mkdir $EXTR_PATH
echo "Done"
echo -n "Unpack Komodo Edit tarball file to $EXTR_PATH ..."
tar -xvf $1 -C $EXTR_PATH > /dev/null
if [ "$?" != 0 ]; then
umask $UMASK
exit 5
fi
echo "Done"
SCRIPT=$EXTR_PATH/`ls $EXTR_PATH`/$SCRIPT
mkdir "$TEMP_BUILD_PATH"
mkdir "$BUILD_PATH"
umask $UMASK
}
install_komodo()
{
umask 022
$SCRIPT -I "$TEMP_BUILD_PATH/$PREFIX" -s
umask $UMASK
}
# precompile some python scripts at lib/mozilla subfolder
# and change start komodo script
prepare_komodo()
{
umask 022
echo "Preparing Komodo scripts ..."
$TEMP_BUILD_PATH/$PREFIX/lib/python/bin/python -O -mcompileall $TEMP_BUILD_PATH/$PREFIX/lib/mozilla/
case "$I_VER" in
7) ;; #nothing to do in new algorithm
*) sed -i -e 's/$INSTALLDIR\/lib/$INSTALLDIR\/share\/komodo-edit\/lib/i' $TEMP_BUILD_PATH/$PREFIX/bin/komodo;;
esac
echo "Scripts preparing done."
umask $UMASK
}
mv_package_files()
{
umask 022
mkdir -p $BUILD_PATH/$PREFIX/bin
mkdir -p $BUILD_PATH/$PREFIX/share/komodo-edit/lib
mkdir -p $BUILD_PATH/$PREFIX/share/komodo-edit/doc
echo -n "Moving files for package. Please wait ..."
# Move main script
mv $TEMP_BUILD_PATH/$PREFIX/bin/* $BUILD_PATH/$PREFIX/bin/
case "$I_VER" in
7) # create new symlink
rm -f $BUILD_PATH/$PREFIX/bin/komodo
ln -s ../share/komodo-edit/lib/mozilla/komodo $BUILD_PATH/$PREFIX/bin/komodo
# move docs
mv $TEMP_BUILD_PATH/$PREFIX/share/doc $BUILD_PATH/$PREFIX/share/komodo-edit/doc/
;;
*) # move docs
mv $TEMP_BUILD_PATH/$PREFIX/share/doc/* $BUILD_PATH/$PREFIX/share/komodo-edit/doc/
mv $TEMP_BUILD_PATH/$PREFIX/share/doc/.css $BUILD_PATH/$PREFIX/share/komodo-edit/doc/
;;
esac
# Move all libs
mv $TEMP_BUILD_PATH/$PREFIX/lib/* $BUILD_PATH/$PREFIX/share/komodo-edit/lib/
echo "Done"
umask $UMASK
}
make_icons()
{
umask 022
echo -n "Creating icons ..."
SIZES="64x64 48x48 32x32 24x24 22x22 16x16"
mkdir -p $BUILD_PATH/$PREFIX/share/icons/hicolor/128x128/apps
cp -p $TEMP_BUILD_PATH/$PREFIX/share/icons/komodo128.png $BUILD_PATH/$PREFIX/share/icons/hicolor/128x128/apps/komodo.png
WORK_PATH=$BUILD_PATH/$PREFIX/share/icons/hicolor
for size in $SIZES
do
mkdir -p $WORK_PATH/$size/apps
$CONVERTER $WORK_PATH/128x128/apps/komodo.png -resize $size $WORK_PATH/$size/apps/komodo.png
done
mkdir -p $BUILD_PATH/usr/share/pixmaps
cp $BUILD_PATH/$PREFIX/share/icons/hicolor/$pixmaps_size/apps/komodo.png $BUILD_PATH/usr/share/pixmaps/
echo "Done"
umask $UMASK
}
make_menu_entries()
{
umask 022
echo -n "Make menu entries ..."
mkdir -p $BUILD_PATH/usr/share/menu
filename=$BUILD_PATH/usr/share/menu/komodo-edit
echo "?package(komodo-edit):needs=\"x11\" section=\"Apps/Programming\" \ " > $filename
echo " title=\"Komodo Edit\" command=\"/$PREFIX/bin/komodo %F\" \ " >> $filename
echo " icon=\"/usr/share/pixmaps/komodo.png\" " >> $filename
echo "" >> $filename
if [ -z "$opt_submenu" ]; then
echo "Done"
category="Development;"
depends=""
umask $UMASK
return
fi
category="Komodo;"
depends="xdg-utils"
mkdir -p $BUILD_PATH/etc/xdg/menus/applications-merged
filename=$BUILD_PATH/etc/xdg/menus/applications-merged/komodo-edit.menu
echo '<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"' > $filename
echo '"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">' >> $filename
echo '<Menu>' >> $filename
echo ' <Name>Applications</Name>' >> $filename
echo ' <Menu>' >> $filename
echo ' <Name>Development</Name>' >> $filename
echo ' <Menu>' >> $filename
echo ' <Name>Komodo</Name>' >> $filename
echo ' <Directory>komodoedit.directory</Directory>' >> $filename
echo ' <Include>' >> $filename
echo ' <Category>Komodo</Category>' >> $filename
echo ' </Include>' >> $filename
echo ' </Menu>' >> $filename
echo ' </Menu>' >> $filename
echo '</Menu>' >> $filename
mkdir -p $BUILD_PATH/usr/share/desktop-directories
filename=$BUILD_PATH/usr/share/desktop-directories/komodoedit.directory
echo '[Desktop Entry]' > $filename
echo 'Encoding=UTF-8' >> $filename
echo 'Type=Directory' >> $filename
echo 'Name=Komodo Edit' >> $filename
echo 'Icon=komodo' >> $filename
echo "Done"
umask $UMASK
}
make_desktop_files()
{
umask 022
echo -n "Make desktop files ..."
mkdir -p $BUILD_PATH/usr/share/applications
filename=$BUILD_PATH/usr/share/applications/komodo-edit.desktop
echo '[Desktop Entry]' > $filename
echo 'Type=Application' >> $filename
echo 'Name=Komodo Edit' >> $filename
echo 'Encoding=UTF-8' >> $filename
echo 'Icon=komodo' >> $filename
echo 'Exec=komodo %F' >> $filename
echo "Categories=$category" >> $filename
echo 'Terminal=false' >> $filename
echo 'Comment=Dynamic Languages Web-Editor' >> $filename
echo 'GenericName=Dynamic Web-pages Editor' >> $filename
if [ -z "$opt_submenu" ]; then
echo "Done"
umask $UMASK
return
fi
filename=$BUILD_PATH/usr/share/applications/komodo-license.desktop
echo '[Desktop Entry]' > $filename
echo 'Type=Application' >> $filename
echo 'Name=License' >> $filename
echo 'Encoding=UTF-8' >> $filename
echo 'Icon=txt' >> $filename
echo "Exec=xdg-open /$PREFIX/share/komodo-edit/doc/license.txt" >> $filename
echo "Categories=$category" >> $filename
echo 'Terminal=false' >> $filename
filename=$BUILD_PATH/usr/share/applications/komodo-relnotes.desktop
echo '[Desktop Entry]' > $filename
echo 'Type=Application' >> $filename
echo 'Name=Release Notes' >> $filename
echo 'Encoding=UTF-8' >> $filename
echo 'Icon=html' >> $filename
echo "Exec=xdg-open /$PREFIX/share/komodo-edit/doc/relnotes.html" >> $filename
echo "Categories=$category" >> $filename
echo 'Terminal=false' >> $filename
echo "Done"
umask $UMASK
}
make_control_file()
{
umask 022
echo -n "Make Debian control file ..."
mkdir -p $BUILD_PATH/DEBIAN
#calculate installed size
full_size=`du -s $BUILD_PATH/usr | awk '{print $1}'`
filename=$BUILD_PATH/DEBIAN/control
echo "Package: komodo-edit" > $filename
echo "Version: $VERSION-$REVISION" >> $filename
echo "Architecture: $ARCH" >> $filename
echo "Section: web" >> $filename
echo "Priority: optional" >> $filename
echo "Installed-Size: $full_size" >> $filename
if [ -n "$depends" ]; then
echo "Depends: $depends" >> $filename
fi
echo "Homepage: www.activestate.com" >> $filename
echo "Maintainer: KernelPanic :) <admin@localhost>" >> $filename
echo "Description: Komodo Edit is a free, open source editor from dynamic language experts." >> $filename
echo " Komodo Edit, based on the award-winning Komodo IDE, offers sophisticated support" >> $filename
echo " for all major scripting languages, including in-depth autocomplete and calltips, " >> $filename
echo " multi-language file support, syntax coloring and syntax checking, Vi emulation, " >> $filename
echo " Emacs key bindings." >> $filename
echo " It provides dynamic language expertise for Perl, PHP, Python, Ruby, and Tcl, plus JavaScript, " >> $filename
echo " CSS, HTML, and XML, and template languages like RHTML, Template-Toolkit, HTML-Smarty " >> $filename
echo " and Django." >> $filename
echo "Done"
umask $UMASK
}
make_package()
{
fakeroot dpkg-deb -b $BUILD_PATH ./
}
del_temporary()
{
if [ -n "$opt_del_temp" ]; then
echo -n "Delete temporary files and directories ..."
rm -rf $EXTR_PATH
echo "Done"
else
rm -rf $TEMP_BUILD_PATH
echo "Temporary files may be found at temp-komodo-pkg/ folder"
fi
}
check_args $@
package_name_parse $archive_name
check_funcs
unpack_archive $archive_name
install_komodo
prepare_komodo
mv_package_files
make_icons
make_menu_entries
make_desktop_files
make_control_file
make_package
del_temporary
echo "All Done. Package is ready :)"
exit 0Использование скрипта:
- качаете инсталятор в директорию со скриптом;
- запускаете скрипт примерно так:
./Upd.sh -u -m *gz(ключ -u означает сборку для Ubuntu; по умолчанию пакет собирается для Debian)
- устанавливаете полученный в итоге пакет любым удобным вам способом.
Да, разумеется, такие редакторы для программистов, а не для рядовых пользователей ) Конечно, в Линуксе есть выбор подобных программ, но когда начинаешь искать... Для одних ты недостаточный ещё программист, а другие столь ресурсоёмки, что и задач-то таких для них нет ) Ну и программирование... оно ведь тоже разное... Сколько разных языков... в.т. и скрипторые, и веб (HTML, CSS, JS и т.п. в разных связках - именно связках). Итого, критериев для выбора подходящего именно тебе редактора хватает ) Не vim-ом единым :)
Komodo Edit не такой требовательный к ресурсам, в то же время, им удобно пользоваться и функционал он имеет приличный.
Всё! Уговорил! Начал читать:

Хм.... ну раз пошла такая пьянка... (с)
Аз сам уж хз сколько лет (наверно с середины миллениума точно) всегда и везде, а для скриптового программирования в особенности, юзаю (кросплатформенный кстати) компатный (2-3 мб), но неимоверно мощно развитый (особенно с плагинами) geany. Он есть в бубнтовых репах.
К счастью, его многие майнтайнеры уже и в дистры включают -- он того стоит! :)
Почти везде напховывают одно и тоже, редко где можно увидеть оригинальный, отличный от "стандартно принятого" состав приложений, даже не учитывая привязку к конкретному окружению. А заинтересовать для "добавки в репу" какой либо безусловно полезной утилиты "подвиг Геракла", по себе знаю, даже уверение "сам буду актуализировать" нифига не прокатывает! Например за всё время существования Salix только пяток софин смог "осутинировать" для попадания в оф.репы. Вот и сейчас, лёгонько и ненавязчиво "проталкиваю" для включения:AMA:
больше шансов распространения хорошей весчи

Пока без малейшего шанса на успех! Слишком уж это длинная и иезуитски извращённая процедура, за%бывает процесс ещё на начальной стадии (почему и не удивляет меня большое количество форков и модов оригинальных дистров). Зато кучу уже давно морально и функционально устаревшего софта, почти всеми дистрами настырно таскается из релиза в релиз. Никем это не используется, но "по традиции" впихивают, такое происходит стоит даже какому то моду/форку чутка заматереть, про оригинальные дистры уж промолчу...
Ну естественно дело то не моё, кто я такой что бы кому то указывать! Но для меня "популярное" и "хорошая весчь" не всегда одно и тоже. Из "ширпотребных", распиареных приложений мне практически ничего не нравится, если чего и использую то редко, в основном что бы убедится что "это не моё" (естественно не учитывается безальтернативное, навроде Гимпа).
Думаю, добавляют в дистры истинные полезняшки тысызыть "независимые" майнтайнеры и дистрибуторы... типа авторов рунты или особливо коммунити паппика (вкл-но его русской ипостаси)... ну еше минт довольно творчески собран.
Зато офоциоз пингвиностроения озабочен иными весчами...
Так что ваши телодвижения последним... (епитеты замнём для политкорректности! ;))
Добавлено позже:
ЗЫ. ну а вообще-то навскидку -- ваши последние представленные тут инструменты представляются довольно специфическим спец.назначения инстрментарием... не каждому юзверю нужны, значится... :)
Лично мне то пофигу, я давно уже мальчик самостоятельный и пакетики себе сам умею собирать. Просто иногда, возникает желание поделится "интересностью", да и самому так было бы удобнее, но... Оказалось что проще скидывать собранное на флешку, или на облачко.AMA:
Так что ваши телодвижения последним... (епитеты замнём для политкорректности! ;))
А что в них такого уж сильно специального? Обычные стиратели, только консольные... К тому же, перед темами о ГУИ утилитах, надо бы упомянуть про то на чём они основаны, а то неаккуратненько как то получается! И специального плана у меня нет, на что курсор упал про то и темы делаются, да и в одной из последних тем я уже отписал... Смысл в том что "для всех милашкой не будешь", на вкус и цвет карамельки ведь отличаются от ирисок! :)))AMA:
спец.назначения инстрментарием... не каждому юзверю нужны, значится... :)
Ну дык к выводу, подобо Вашему, аз пришел еще в лохматых нулевых (ЕМНИС)...
Да и вообще, -- помните поговорку об "утопающих" и чьих-то "руках"? :)
А об утилитах аз гутарил тех, что у Вас тут на скриншотах: ManPageEdit -- етож редактор манов, если конечно верить табличке на вольере слона! (с) Крылов :) Кроме разрабов, кому такой редактор нужен?
Добавлено позже:
ЗЫ, что касается дележки инфой о полезняшках, так Вы на етом сайте етим и заняты, как ето видно на главной странице.
"Чего ж боле?" (с)
AMA:
geany. Он есть в бубнтовых репах.К счастью, его многие майнтайнеры уже и в дистры включают -- он того стоит! :)
Qt Linguist тоже не многим то нужен, а его наличие всеми имеется. Это к вопросу про ManPageEdit...AMA:
Кроме разрабов, кому такой редактор нужен?
Написать/подправить/перевести Man и отправить его разработчикам своего дистра много приятнее имея под рукой удобный инструмент, даже ленивому и имеющему мало времени! (таких вот, навроде меня) Тем более что делать маны "по старинке" сейчас не все авторы приложений умеют, оставляя информацию только в "README".
Приписывание в плюс софине "кросплатформенность", меня почему то всегда смешит! :)))AMA:
юзаю (кросплатформенный кстати) компатный (2-3 мб), но неимоверно мощно развитый



