просмотр категории
Случается что работая в консоли необходимо что-то запаковать / распаковать, а лишний раз вспоминать команды tar сильно лень, в силу этих причин появился небольшой скриптик который сильно облегчает работу.
pack
ключ | пример | описание |
---|---|---|
-f | pack -f /bla/bla | Упаковать файл либо каталог. Создается архив и его контрольная сумма. |
-u | pack -u bla.tar.gz | Распаковать архив tar.gz |
-i | ./pack -i | Установить скрипт, скрипт установится в /usr/local/bin/pack если папки нет, она создаться. |
-e | pack -e /bla/bla | Упаковать и зашифровать файл либо каталог. Создается зашифрованный архив и его контрольная сумма. |
-d | pack -d bla.tar.gz.enc bla.tar.gz | Распаковать и дешифровать зашифрованный архив. |
-n | pack -n | Проверить и установить последнею версию pack https://brigar.ru/upload/pack |
Скачать последнюю версию go.get
Я как человек ленивый до выполнения рутинных задач, и мне лень каждый раз ходить на https://golang.org/dl/ за новой версией и как-то отслеживать новую версию, потом еще производить манипуляции с установкой, сделал несложный скрипт который значительно для меня упрощает жизнь.
Что нужно знать о работе скрипта.
GOWORK_PATH
которая определяет где у вас лежит goфарш, она редактируемая, то есть вы смело ее можете изменить не нарушив тем самым работу скрипта.Мой profile
export GOROOT=$HOME/DEV/go-pack/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=$HOME/DEV/go-pack/Go
export PATH=$PATH:$GOPATH/bin
В заключение.
В моем случае все лежит в одной папке, где сам go и его plugins, тобишь оное не размазано по системе и имеет компактный вид, в моем случае все это хранится в Mercurial, да да не Git, сложилось так что я использую Mercurial :)
Даже если мне грозит снос системы, после свежей установки, мне достаточно стянуть репу и все готово к работе.
Актуальную версию скрипта всегда можно скачать по ссылке
Простенький и незатейливый скрипт позволяет быстро создать и уничтожить chroot окружение.
#!/bin/sh
# VERSION 0.0.1
# Script creted by Ryabinin Sergey Vladimirovich
# dev@brigar.ru
#
set -e
help(){
printf "Usage:
Create chroot
$0 -c your_name_chroot
Mount chroot
$0 -m your_name_chroot
Umount chroot
$0 -u your_name_chroot
Destroy chroot
$0 -r your_name_chroot
"
}
chroot_create(){
CHROOT_DIR="/chroot/$1"
mkdir -p ${CHROOT_DIR}
mkdir -p ${CHROOT_DIR}/dev
mkdir -p ${CHROOT_DIR}/bin
mkdir -p ${CHROOT_DIR}/libexec
mkdir -p ${CHROOT_DIR}/lib
mkdir -p ${CHROOT_DIR}/usr/lib
mkdir -p ${CHROOT_DIR}/usr/ports
mkdir -p ${CHROOT_DIR}/usr/bin
mkdir -p ${CHROOT_DIR}/usr/sbin
mkdir -p ${CHROOT_DIR}/usr/share
mount -t nullfs -o ro,nosuid,noexec /usr/ports/ ${CHROOT_DIR}/usr/ports
mount -t nullfs -o ro,nosuid /usr/lib/ ${CHROOT_DIR}/usr/lib
mount -t nullfs -o ro,nosuid /libexec/ ${CHROOT_DIR}/libexec
mount -t nullfs -o ro,nosuid /lib/ ${CHROOT_DIR}/lib
mount -t nullfs -o ro,nosuid /usr/sbin/ ${CHROOT_DIR}/usr/sbin
mount -t nullfs -o ro,nosuid /usr/bin/ ${CHROOT_DIR}/usr/bin
mount -t nullfs -o ro,nosuid /bin/ ${CHROOT_DIR}/bin
mount -t nullfs -o ro,nosuid /usr/share/ ${CHROOT_DIR}/usr/share
mount -t devfs devfs ${CHROOT_DIR}/dev
printf "Chroot created: ${CHROOT_DIR} and entered
"
chroot ${CHROOT_DIR}
}
chroot_destroy(){
CHROOT_DIR="/chroot/$1"
umount -f ${CHROOT_DIR}/usr/lib
umount -f ${CHROOT_DIR}/libexec
umount -f ${CHROOT_DIR}/lib
umount -f ${CHROOT_DIR}/usr/ports
umount -f ${CHROOT_DIR}/usr/sbin
umount -f ${CHROOT_DIR}/bin
umount -f ${CHROOT_DIR}/usr/bin
umount -f ${CHROOT_DIR}/dev
umount -f ${CHROOT_DIR}/usr/share
rm -rf ${CHROOT_DIR}
echo "Chroot destroy: ${CHROOT_DIR}"
}
chroot_umount(){
CHROOT_DIR="/chroot/$1"
umount -f ${CHROOT_DIR}/usr/lib
umount -f ${CHROOT_DIR}/libexec
umount -f ${CHROOT_DIR}/lib
umount -f ${CHROOT_DIR}/usr/ports
umount -f ${CHROOT_DIR}/usr/sbin
umount -f ${CHROOT_DIR}/usr/bin
umount -f ${CHROOT_DIR}/bin
umount -f ${CHROOT_DIR}/dev
umount -f ${CHROOT_DIR}/usr/share
echo "Chroot umount: ${CHROOT_DIR}"
}
chroot_mount(){
CHROOT_DIR="/chroot/$1"
mount -t nullfs -o ro,nosuid,noexec /usr/lib/ ${CHROOT_DIR}/usr/lib
mount -t nullfs -o ro,nosuid,noexec /libexec/ ${CHROOT_DIR}/libexec
mount -t nullfs -o ro,nosuid,noexec /lib/ ${CHROOT_DIR}/lib
mount -t nullfs -o ro,nosuid,noexec /usr/ports/ ${CHROOT_DIR}/usr/ports
mount -t nullfs -o ro,nosuid /usr/sbin/ ${CHROOT_DIR}/usr/sbin
mount -t nullfs -o ro,nosuid /usr/bin/ ${CHROOT_DIR}/usr/bin
mount -t nullfs -o ro,nosuid /bin/ ${CHROOT_DIR}/bin
mount -t nullfs -o ro,nosuid /usr/share/ ${CHROOT_DIR}/usr/share
mount -t devfs devfs ${CHROOT_DIR}/dev
echo "Chroot mount: ${CHROOT_DIR}"
}
if [ "${#1}" -eq 0 ] || [ "${#2}" -eq 0 ]; then
help
fi
if [ "${1}" = "-c" ] && [ "${#2}" -gt 0 ]; then
chroot_create $2
fi
if [ "${1}" = "-u" ] && [ "${#2}" -gt 0 ]; then
chroot_umount $2
fi
if [ "${1}" = "-r" ] && [ "${#2}" -gt 0 ]; then
chroot_destroy $2
fi
if [ "${1}" = "-m" ] && [ "${#2}" -gt 0 ]; then
chroot_mount $2
fi
Последнею версию всегда можно будет найти по ссылке chroot_cr