Exemplo de shell script para criar imagem de disco de cache do APT
Pessoal! Fiz esse pequeno script que me atende muito bem para criar um disco com pacotes para instalação sem conexão com a internet. Espero que ajude quem precisa porquê 3g no PC dos outros é refresco!
#!/bin/bash DISTRIBUICAO=`lsb_release -a 2> /dev/null | grep Distributor | cut -f 2` CODINOME=`lsb_release -a 2> /dev/null | grep Codename | cut -f 2` ARQUITETURA=`uname -a | cut -d ' ' -f 12` DATA=`date "+%Y-%m-%d %R"`</em> <em>echo "Pode fazer o favor de atualizar seu sistema?[y/N]" read ATUALIZAR</em> <em>echo "Pode ser que você tenha feito a besteira de apagar algum pacote da cache que está instalado no sistema. Deseja baixars TODOS os pacotes que estão instalados nesta máquina?[y/N]" read BAIXARTODOS</em> <em>echo "Excluir pacotes de versões antigas?[y/N]" read EXCLUIRANTIGA</em> <em>if [ "$ATUALIZAR" == "y" ] then apt-get update apt-get dist-upgrade -y apt-get autoremove -y fi</em> <em>if [ "$BAIXARTODOS" == "y" ] then for package in `dpkg --get-selections | grep install | cut -f 1` do apt-get install $package -d done fi</em> <em>if [ "$EXCLUIRANTIGA" == "y" ] then apt-get autoclean fi</em> <em>echo "Copiando pacotes..." mkdir packages cp -v /var/cache/apt/archives/*.deb packages/ echo "Pacotes copiados!"</em> <em>echo "Você quer gravar o cache em CD (700Mb) ou DVD (4000Mb)? [Cd/Dvd]" read TAMANHO if [ "$TAMANHO" == "C" ] then TAMANHO=650M fi if [ "$TAMANHO" == "D" ] then TAMANHO=4400M fi</em> <em>echo "Dividindo os pacotes em volumes" dirsplit -s $TAMANHO -m -p cache_ packages/ rm -r packages/ echo "Pacotes divididos em volumes!"</em> <em>i=0</em> <em>#for DISCO in `ls cache_* | grep : | cut -d ':' -f 1 ` for DISCO in `find . -iname cache_*` do i=$(($i+1)) echo "Criando imagem do disco $i" cd $DISCO touch tmp mkdir packages mv *.deb packages/ echo "Criando índice de pacotes..." dpkg-scanpackages packages tmp | gzip > Packages.gz echo "Índice de pacotes criado!" rm tmp echo "Criando arquivo de definições do disco..." echo "#define DISKNAME MyRepository for $DISTRIBUICAO $CODINOME - $ARQUITETURA ($DATA) #define TYPE binary #define TYPEbinary CD$i #define ARCH $ARQUITETURA #define ARCH$ARQUITETURA CD$i #define DISKNUM CD$i #define DISKNUMCD$i CD$i #define TOTALNUM CD$i #define TOTALNUMCD1 CD$i" > README.diskdefines echo "Arquivo de definições de disco criado" echo "Criando informações do disco..." echo "distribution: $DISTRIBUICAO codename: $CODINOME architecture: $ARQUITETURA date: $DATA" > disk.info echo "Informações criadas!" echo "Criando arquivo de imagem no formato ISO-9660..." cd .. mkisofs -V "$DISCO" -r -joliet-long -o $DISCO.iso $DISCO/ rm -rf $DISCO/ echo "Arquivo de imagens foi criado!" done



















[...] View full post on Planeta Ubuntu Brasil [...]
@Paulo Estou usando um ubuntu instalado por método "minimal install" só com o lxde, nem "lubuntu-desktop" foi instalado.
Estranhas essas dependencias… pra mim sò dava muita dependencia quando tentei instalar numa Lubuntu, que tem o Lxde em vez do Gnome… mas nao entendo porque na tua lista aparecem dependencias do kde…
root@camelot:/home/geowany# apt-get install aptoncd
Lendo listas de pacotes… Pronto
Construindo árvore de dependências
Lendo informação de estado… Pronto
Os pacotes extra a seguir serão instalados:
app-install-data cdparanoia cdrdao dvd+rw-tools exiv2 gdebi-core
gdebi-kde genisoimage gnome-doc-utils gnome-user-guide icoutils
install-package k3b k3b-data kdebase-runtime kdebase-runtime-data
kdelibs-bin kdelibs5 kdelibs5-data kdepimlibs-data kdepimlibs5
kdesudo kpackagekit kubuntu-debug-installer libaa1
libakonadiprivate1 libao2 libattica0 libaudio2
libboost-program-options1.40.0 libcaca0 libcdparanoia0
libclucene0ldbl libdbusmenu-qt2 libexiv2-6 libflac++6 libgif4
libgpgme11 libical0 libiodbc2 libk3b6 libkcddb4 libmng1
libmodplug0c2 libmpcdec3 libmusicbrainz4c2a libmysqlclient16
libnm-glib2 libnm-util1 libpackagekit-glib2-12 libpackagekit-qt-12
libphonon4 libplasma3 libpolkit-qt-1-0 libpth20 libqca2
libqt4-assistant libqt4-dbus libqt4-designer libqt4-help
libqt4-network libqt4-opengl libqt4-qt3support libqt4-script
libqt4-scripttools libqt4-sql libqt4-sql-mysql libqt4-svg
libqt4-test libqt4-webkit libqt4-xml libqt4-xmlpatterns libqtcore4
libqtgui4 libraptor1 librasqal2 librdf0 libsdl1.2debian
libsdl1.2debian-alsa libsoprano4 libspeex1 libssh-4
libstreamanalyzer0 libstreams0 libtag1-vanilla libtag1c2a
libtheora0 libwavpack1 libxcb-shape0 libxcb-shm0 libxcb-xv0
libxine1 libxine1-bin libxine1-console libxine1-misc-plugins
libxine1-x libxml2-utils libxss1 mysql-common oxygen-icon-theme
packagekit packagekit-backend-apt phonon phonon-backend-xine
plasma-scriptengine-javascript polkit-kde-1 python-gconf
python-gnome2 python-gnomecanvas python-kde4 python-libxml2
python-packagekit python-pyorbit python-qt4 python-sip
shared-desktop-ontologies software-properties-kde soprano-daemon
ttf-dejavu ttf-dejavu-extra update-manager-kde virtuoso-nepomuk
wodim xsltproc xulrunner-1.9.2 yelp
Pacotes sugeridos:
update-notifier gdebi cdrskin cdrkit-doc libterm-readline-gnu-perl
libterm-readline-perl-perl k3b-extrathemes k3b-i18n
normalize-audio sox movixmaker-2 libk3b6-extracodecs vcdimager
djvulibre-bin hspell akonadi-server nas gpgsm
libqca2-plugin-cyrus-sasl libqca2-plugin-gnupg libqca2-plugin-ossl
libqca2-plugin-pkcs11 libqt4-dev qt4-qtconfig raptor-utils
redland-utils librdf-storage-postgresql librdf-storage-mysql
librdf-storage-sqlite speex gxine xine-ui libxine1-doc libxine-doc
libxine1-ffmpeg phonon-backend-gstreamer phonon-backend-vlc
phonon-backend-mplayer kcm-phonon-xine python-gnome2-doc
python-libxml2-dbg python-pyorbit-dbg python-qt4-dbg
Os NOVOS pacotes a seguir serão instalados:
app-install-data aptoncd cdparanoia cdrdao dvd+rw-tools exiv2
gdebi-core gdebi-kde genisoimage gnome-doc-utils gnome-user-guide
icoutils install-package k3b k3b-data kdebase-runtime
kdebase-runtime-data kdelibs-bin kdelibs5 kdelibs5-data
kdepimlibs-data kdepimlibs5 kdesudo kpackagekit
kubuntu-debug-installer libaa1 libakonadiprivate1 libao2
libattica0 libaudio2 libboost-program-options1.40.0 libcaca0
libcdparanoia0 libclucene0ldbl libdbusmenu-qt2 libexiv2-6
libflac++6 libgif4 libgpgme11 libical0 libiodbc2 libk3b6 libkcddb4
libmng1 libmodplug0c2 libmpcdec3 libmusicbrainz4c2a
libmysqlclient16 libnm-glib2 libnm-util1 libpackagekit-glib2-12
libpackagekit-qt-12 libphonon4 libplasma3 libpolkit-qt-1-0
libpth20 libqca2 libqt4-assistant libqt4-dbus libqt4-designer
libqt4-help libqt4-network libqt4-opengl libqt4-qt3support
libqt4-script libqt4-scripttools libqt4-sql libqt4-sql-mysql
libqt4-svg libqt4-test libqt4-webkit libqt4-xml libqt4-xmlpatterns
libqtcore4 libqtgui4 libraptor1 librasqal2 librdf0 libsdl1.2debian
libsdl1.2debian-alsa libsoprano4 libspeex1 libssh-4
libstreamanalyzer0 libstreams0 libtag1-vanilla libtag1c2a
libtheora0 libwavpack1 libxcb-shape0 libxcb-shm0 libxcb-xv0
libxine1 libxine1-bin libxine1-console libxine1-misc-plugins
libxine1-x libxml2-utils libxss1 mysql-common oxygen-icon-theme
packagekit packagekit-backend-apt phonon phonon-backend-xine
plasma-scriptengine-javascript polkit-kde-1 python-gconf
python-gnome2 python-gnomecanvas python-kde4 python-libxml2
python-packagekit python-pyorbit python-qt4 python-sip
shared-desktop-ontologies software-properties-kde soprano-daemon
ttf-dejavu ttf-dejavu-extra update-manager-kde virtuoso-nepomuk
wodim xsltproc xulrunner-1.9.2 yelp
0 pacotes atualizados, 127 pacotes novos instalados, 0 a serem removidos e 0 não atualizados.
É preciso baixar 107MB de arquivos.
Depois desta operação, 376MB adicionais de espaço em disco serão usados.
Você quer continuar [S/n]?
n
@Paulo Que nada brother! Adorei a simplificação que você enviou…Em breve vou atualizar este post com essa dica que me deu!
@Geowany
Conheço bem pouco sobre bash, sò o basico do basico… tanto que nem entendi pq disse que o $(arch) nao funcionaria…
Sabe… è mania de principiante de querer ficar "ensinando" as poucas coisas que sabe.. rssss
Aguardarei o tòpico.
@Paulo Obrigado pela dica de simplificação, mas a terceira linha não pode ficar mandando "arch". Com o "uname -a | cut -d ‘ ‘ -f 12" ele vai mostrar a arquitetura mesmo! Pra não ficar "igualzinho" o APTonCD, ele não gera o arquivo "Release". Espero que tenha conhecido também o comando "dirsplit" que pode muito bem ser combinado com o wodim.
Posso até fazer um tópico adiante de como dividir uma pasta "gigante" e gravá-la em volumes de tamanhos iguais em DVD ou outro mídia qualquer.
Legal! eu usava o aptoncd, mas nao sabia fazer o mesmo pelo terminal.
Ah, o resultado è o mesmo, mas poderia simplificar as 3 primeiras linhas:
DISTRIBUICAO=`lsb_release -si`
CODINOME=`lsb_release -sc`
ARQUITETURA=`arch`
@Celso Se é iniciante, use o AptOnCD! Será bem mais fácil
Oi amigão. Sou iniciante em Linux (Ubuntu). Gostei da idéia deste script. No entanto gostaria de saber como proceder para executá-lo.
@André Gondim:
Primeiro, nem sempre to afim de usar o X.
Segundo, o aptoncd não faz um cd "completo" baseado no que você tem instalado se você tiver executado um apt-get clean antes de tentar criar o disco.
Terceiro, o aptoncd instalou um monte de coisa que não queria (exemplo: k3b e cacetada de biblioteca do kde, sendo que uso um lxde com aplicações em gtk).
Quarto e ultimo (talvez): Postei o script com finalidade de estudo e aprimoramento de shell script para iniciantes, e não como uma solução definitiva para criar um cd de cache. Note que nem escrevi os procedimentos para "incluir o cd nos repositórios". E note também que postei com titulo "Exemplo de shell script .bla bla bla…" ao invés de "Troque seu APTonCD pelo meu script tosco".
Willian funciona sim.. se eu entendi bem é rodar o script numa VM né ? se for isso a resposta é sim
Será que funciona em máquinas virtuais??? (VirtualBox)
Olá,
Muito bom o seu script!!!!
Vai ajudar muito (depois que eu testar)!!! xD
Obrigado. =D
Sim e não Andre.. este script faz coisas mais avançadas que o aptoncd inclusive é ótimo para servidores já que não roda X nele
Não seria mais fácil usar um AptOnCD?
Abraços!!