sexta-feira, 18 de novembro de 2016

Utilizando Google Drive com o cliente rclone no Linux




Rclone é um cliente cloud com suporte para vários serviços de armazenamento em nuvens pra fazer a sincronização de arquivos, incluindo o Google Drive sendo o seu uso totalmente em linha de comando e sem sincronização automática de arquivos, devendo ser feita sempre manualmente.
Para quem já usou ou ainda usa o rsync em linha de comandos para sincronizar arquivos do computador para uma outra partição, outro computador na sua rede local ou um HD externo usb para backup de arquivos não terá nenhuma dificuldade em usar o rclone pois a forma de funcionamento do mesmo é idêntica apenas as opções são diferentes e mesmo pra que nunca usou nenhum dos dois seu funcionamento e bem simples, no qual explicarei como instalar e utilizar o mesmo.

Acesse a página oficial: http://rclone.org/ e baixe o pacote correto de acordo com seu sistema operacional e arquitetura, no meu caso instalarei para S.O. Linux de 32 bits.

http://downloads.rclone.org/rclone-v1.33-linux-386.zip

Acesse o diretório onde foi baixado o pacote zip e faça:

$ 7z x rclone-v1.33-linux-386.zip
$ cd rclone-v1.33-linux-386/

$ sudo cp rclone /usr/sbin/
$ sudo mkdir -p /usr/local/share/man/man1
$ sudo cp rclone.1 /usr/local/share/man/man1/

Para ajuda:
$ man rclone
$ rclone

Configurando o rclone

$ rclone config
2016/10/12 14:15:57 Failed to load config file "/home/nando/.rclone.conf" - using defaults: open /home/nando/.rclone.conf: no such file or directory
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> 

Tecle n (para iniciar uma nova configuração e digite um nome de sua preferencia para o cloud, no meu caso digitei mydrive)

Nota: 
Use um nome curto, sem espaços e acentos no nome do cloud pois você sempre vará uso dele em todos os comandos do rclone.

name> mydrive
Type of storage to configure.
Choose a number from below, or type in your own value
 1 / Amazon Drive
   \ "amazon cloud drive"
 2 / Amazon S3 (also Dreamhost, Ceph, Minio)
   \ "s3"
 3 / Backblaze B2
   \ "b2"
 4 / Dropbox
   \ "dropbox"
 5 / Encrypt/Decrypt a remote
   \ "crypt"
 6 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
 7 / Google Drive
   \ "drive"
 8 / Hubic
   \ "hubic"
 9 / Local Disk
   \ "local"
10 / Microsoft OneDrive
   \ "onedrive"
11 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
12 / Yandex Disk
   \ "yandex"
Storage> 7     (Aqui você tecla 7 para usar o Google Drive)


Google Application Client Id - leave blank normally.
client_id> 

Google Application Client Id - leave blank normally.
client_id
Google Application Client Secret - leave blank normally.
client_secret
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> 

 Nos itens client_id e client_secret, deixe ambos em branco, e pressione Enter.

No remote config, digite "n" para ser apresentado o link que gerará o código de ativação do Google Drive

If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth?xxxxxxxxxx3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%xxxxxxxxxx--xxxxxxxx3e
Log in and authorize rclone for access
Enter verification code>             ( cole o código do navegador aqui )

Ao teclar n sera aberta automaticamente uma janela do seu navegador padrão para acessar a conta do Google, faça login da sua conta do Google, dê permissão para o rclone acessar a sua conta do Google e copie o código exibido no navegador e cole no local (Enter verification code) indicado na janela de terminal e tecle Enter.

Após colado o código e teclado Enter surgi a tela abaixo:
[mydrive]
client_id = 
client_secret = 
token = {"access_token":"ya29.Ci96A_pv-xxxxxx3Hz7yE9hpjd13222","token_type":"Bearer","refresh_token":"1/rWytr-Jr2xZeaaaaDsrjY7A_C8yVhs","expiry":"2016-10-12T15:24:40.195842222-03:00"}
--------------------

y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> 

Tecle y e Enter

Current remotes:

Name                 Type
====                 ====
mydrive              drive

e) Edit existing remote
n) New remote
d) Delete remote
s) Set configuration password
q) Quit config
e/n/d/s/q> q

Pronto seu Google Drive foi adicionada ao rclone, tecle q para sair do config.

Sincronizando arquivos com o rclone

Você pode enviar diretamente qualquer pasta de qualquer parte do seu computador para sincronizar, mas o recomendável é criar ou usar sempre a mesma pasta e tudo que for colocado nela será enviado para a nuvem ao fazer a sincronização.

Exemplo:
No meu computador eu usarei sempre a pasta ~/bkp para ser usada para enviar arquivos e pastas para a nuvem, mas nada impede de você sincronizar diretamente /mnt/documentos, /livros, /mnt/sda4/apostilas etc... mas se o fizer não existir o caminho e nem o final do nome dela no destino da nuvem ficando tudo uma bagunça com todos os arquivos dentro dela largados na raiz da do drive, apenas sera criado neste caso todos os subdiretórios que existir a partir do caminho que foi especificado no Google Drive.

Para manter sua nuvem organizada crie no seu computador subdiretórios desejados no diretório (~/bkp) que você utilizará sempre para fazer a sincronização com a nuvem e para dentro dos subdiretórios você copia os arquivos conforme a categoria como exemplos videos, mp3, docs etc.. 


Sincronizando do computador para a nuvem

Você pode fazer de duas maneiras diferentes:

$  rclone sync bkp/  mydrive:/ 

Você usa desta forma se você estiver acima do diretório bkp visualizando o nome do mesmo. 

$ rclone sync /home/nando/bkp/  mydrive:/ 

Para executar a sincronização a partir de qualquer diretório do computador onde você estiver ou para incluir a mesma em um script especificando o caminho completo do diretório padrão utilizado para sincronização.

IMPORTANTE:
Onde mydrive não é um diretório e sim o nome que você atribuiu ao seu Google Drive durante a configuração do rclone, por isto foi mencionado anteriormente para usar um nome curto, sem espaços e acentos.


Notas sobre exclusão de arquivos

Se você excluir os arquivos pelo navegador dentro Google Drive, ao sincronizar a partir do computador com o rclone se estes mesmos arquivos não foi excluído antes do diretório do seu computador, eles serão copiados novamente para  Google Drive, novamente já que eles não existem lá.

No caso abaixo eu tinha excluído 2 arquivos no Google Drive, pelo navegador, ao fazer a sincronização os arquivos excluídos foram novamente copiados para o Google Drive, já que eu não excluir os mesmos da pasta do computador.

$ rclone sync /home/nando/bkp/ mydrive:/
2016/10/12 15:34:23 Google drive root '': Waiting for checks to finish
2016/10/12 15:34:23 Google drive root '': Waiting for transfers to finish
2016/10/12 15:34:26 Waiting for deletions to finish
2016/10/12 15:34:26 
Transferred:   129.367 kBytes (18.327 kBytes/s)
Errors:                    0
Checks:               150
Transferred:            2    (foi enviado 2 arquivos para a nuvem)
Elapsed time:         7s

Agora se você excluir arquivos do seu computador, os mesmos arquivos que existir no Google Drive serão automaticamente excluídos da nuvem ao fazer a sincronização usando o comando abaixo.

$ rclone sync /home/nando/bkp/ mydrive:/
2016/10/12 15:40:23 Google drive root '': Waiting for checks to finish
2016/10/12 15:40:23 Google drive root '': Waiting for transfers to finish
2016/10/12 15:40:23 Waiting for deletions to finish
2016/10/12 15:40:24 
Transferred:            0 Bytes (0 Bytes/s)
Errors:                     0
Checks:               152
Transferred:            0  (não foi enviado para a nuvem nenhum arquivo, fica 0)
Elapsed time:        4.9s

No exemplo acima eu excluir 2 arquivos do computador, ao fazer a sincronização os mesmo arquivos que correspondia ao que estavam no computador  antes foi excluído da nuvem também.

Nota:
Caso queira fazer um acompanhamento mais detalhado use o flag -v antes da opção sync onde será exibido os nomes de todos os arquivos e diretórios com data e hora da sincronização dos mesmos e utilize um arquivo de log usando na forma abaixo:

$  rclone -v sync /home/nando/bkp/ mydrive:/ --log-file=/home/nando/rclone.log

No arquivo de log:
Os diretórios e arquivos deletados terá após os nomes deles:  Deleted
Os diretórios e arquivos que foram enviados pra a nuvem terá após os nomes deles:  Copied (new)
Arquivos de mesmo nome que foram substituídos por uma nova versão: Copied (replaced existing)

O arquivo de log nunca é sobre-gravado, sendo todo nova sincronização adicionada ao final da última sincronização.

Para facilitar as coisas vamos criar o script rcloneup com permissão 755 do chmod e salvo em /usr/loca/bin com o conteúdo abaixo:

echo "Sincronizando do computador para a nuvem - subir"
echo "*** Sincronizando do computador para a nuvem - subir ***" >> /home/nando/rclone.log
rclone sync /home/nando/bkp/  mydrive:/ --log-file=/home/nando/rclone.log
echo ==================================== >> /home/nando/rclone.log


Sincronizado da nuvem para o computador

Para sincronizar da nuvem para o computador local,  basta inverter os parâmetros anteriores:


$ rclone sync mydrive:/ /home/nando/bkp
2016/10/12 21:16:12 Local file system at /home/nando/bkp: Waiting for checks to finish
2016/10/12 21:16:12 Local file system at /home/nando/bkp: Waiting for transfers to finish
2016/10/12 21:16:12 Waiting for deletions to finish
2016/10/12 21:16:12 
Transferred:       0 Bytes (0 Bytes/s)
Errors:               0
Checks:          152
Transferred:       0        (zero arquivo baixado)
Elapsed time:     4.1s


Notas sobre exclusão de arquivos e criação de arquivos no Google Drive

Se você excluir 3 arquivos pelo navegador no Google Drive, os mesmos arquivos serão automaticamente excluídos no seu computador local ao usar o comando acima.

Se você copiar arquivos para o diretório /home/nando/bkp eles não serão enviados para a nuvem com este comando acima, mesmo que eles não existem lá e serão excluídos automaticamente do diretório  /home/nando/bkp.

Se você criar arquivos diretamente no Google Drive pelo navegador, ter feito upload pelo navegador a partir de outro computador, os arquivos que não existir no seu diretório padrão de sincronização                  (/home/nando/bkp) serão baixados no mesmo com o comando acima.

Para facilitar o seu uso vamos criar o script  script rclonedown com permissão 755 do chmod e salvo em /usr/loca/bin com o conteúdo abaixo:

echo "Sincronizando da nuvem para o computador - baixar"
echo "*** Sincronizando da nuvem para o computador - baixar ***" >> /home/nando/rclone.log
rclone -v sync mydrive:/ /home/nando/bkp --log-file=/home/nando/rclone.log
echo ==================================== >> /home/nando/rclone.log


Obtendo informações de diretórios e arquivos da nuvem

Lista os nomes de todos os arquivos e seu caminho na nuvem

$ rclone ls  mydrive:/

Usando um filtro para localizar um arquivo específico:

$ rclone ls  mydrive:/ | grep -i mp4
  5876761 pasta1/pasta2/demostração jogando spider.mp4
2016/10/12 15:28:59 
Transferred:      0 Bytes (0 Bytes/s)
Errors:               0
Checks:             0
Transferred:       0
Elapsed time:    3s


No exemplo acima fiz um filtro para listar todos os arquivos mp4.

Listando somente os nomes de diretórios na nuvem

$ rclone lsd mydrive:/

Esta opção lista os nomes de todos diretórios e subdiretórios da nuvem.


Obtendo informações de armazenamento na nuvem

$ rclone size mydrive:/
Total objects: 10
Total size: 2.454 MBytes (2573319 Bytes)
2016/10/16 20:30:42 
Transferred:      0 Bytes (0 Bytes/s)
Errors:                 0
Checks:               0
Transferred:         0
Elapsed time:      7s


Este comando exibiu o número total de arquivos que você tem na nuvem do Google Drive e a soma total dos mesmos.
Um detalhe é que os nomes de diretórios não entra na soma total de arquivos (Total objects).
No caso do exemplo acima eu possuo 10 arquivos na nuvem sendo a soma de todos eles juntos 2.454 MBytes.


Checando diferenças entre o diretório utilizado para sincronização e o seu Google Drive

$  rclone check /home/nando/bkp/  mydrive:/ 
2016/10/16 14:24:32 Local file system at /home/nando/bkp: Building file list
2016/10/16 14:24:32 Google drive root '': Building file list
2016/10/16 14:24:35 Google drive root '': 0 files not in Local file system at /home/nando/bkp
2016/10/16 14:24:35 Local file system at /home/nando/bkp: 1 files not in Google drive root ''
2016/10/16 14:24:35 veja: File not in Google drive root ''
2016/10/16 14:24:35 Google drive root '': Waiting for checks to finish
2016/10/16 14:24:35 varias.txt: Sizes differ
2016/10/16 14:24:35 Bikini-Wallpaper-1069.jpg: Sizes differ
2016/10/16 14:24:35 Google drive root '': 3 differences found
2016/10/16 14:24:35 Failed to check: 3 differences found

Onde os arquivos varias.txt e Bikini-Wallpaper-1069.jpg eu editei no diretório padrão /home/nando/bkp/ utilizando para sincronização do rclone sem ter feita ainda a sincronização pelo mesmo com a nuvem.

Onde após o nome do arquivo a palavra Sizes differ diz que existe tamanho diferente de arquivos entre o computador local e a nuvem.

Outras mensagens ao lado do nome do arquivo que podem aparecer quando haver diferenças entre o computador e a nuvem

Duplicate file detected = existe arquivos duplicados na nuvem mas não no seu computador local.
Google drive root '': 2 files not in Local file system at /home/nando/bkp = existe 2 arquivos na nuvem mas não existe seu computador local.
aula/Bikini9.jpg: File not in Local file system at /home/nando/bkp = não existe o arquivo aula/Bikini9.jpg no seu computador em /home/nando/bkp/aula mas existe na nuvem em /aula.

Estas diferenças também serão somadas nas 2 últimas linhas de saída da opção check.



Agendando a sincronização do rclone

Para que você não se esqueça de fazer a sincronização de arquivos do computador para a nuvem, podemos colocar o rclone no seu contrab de usuário e especificar o intervalo de tempo que o mesmo será executado automaticamente.
No exemplo abaixo utilizarei o script rcloneup criado anteriormente e que também gera o arquivo de log para podemos monitorar o que subiu pra nuvem, foi deletado ou alterado com um intervalo de tempo a cada 15 minutos, mas você pode configurar o tempo de sua preferencia como a cada 5 minutos todos os dias.

$ crontab -e
00-59/15 * * * * /usr/local/bin/rcloneup

Pronto, após salvo o arquivo, a cada 15 minutos todos os dias a sincronização do computador para a nuvem será executada.

Atenção:
Dependendo de quantos megabytes você envia para nuvem diariamente, não use um tempo muito pequeno no crontab, pois se o primeiro processo do rclone ainda estiver rodando e entrar um segundo processo do mesmo sem que o primeiro tenha terminado ainda você terá arquivos duplicados no Google Drive dos novos arquivos recém adicionados; além de prejudicar a velocidade da banda larga da sua internet. Se você tem uma boa banda larga e costuma enviar diariamente até 10 MB em arquivos num mesmo espaço de intervalo de tempo, um tempo entre 10 a 15 minutos já está bom, mas o melhor é deixar um pouco mais como 20 ou 30 minutos de intervalo entre uma execução e outra.
Agora se você costuma enviar de 30 MB em diante diariamente o melhor é fazer a sincronização manualmente sem fazer o uso do crontab para evitar estes transtornos, ou configure apenas um horário fixo que melhor atende suas necessidades, como exemplo uma sincronização todos os dias as 18 horas somente.


Nota:
Caso queira por algum motivo especial interromper a sincronização ativada pelo crontab execute o comando abaixo:

$  killall rclone






quinta-feira, 3 de novembro de 2016

Adicionando o autocompletar comandos ao usar o sudo

Ao usar o comando sudo no Slackware, qualquer comando que vier depois de sudo não funciona o autocompletar comandos ao acionar a tecla TAB para isto.

Solução:
$ complete -cf sudo

Testando:
$ sudo mou      (acione a tecla TAB)
mount mount.fuse mount.nfs mount.ntfs-3g mountstats mouse-test
mount.cifs mount.lowntfs-3g mount.ntfs mountpoint mouse-dpi-tool mouseconfig

Pronto, agora funciona o autocompletar ao acionar a tecla TAB onde foi sugerido todos os comandos que começam com mou.

Para se ativado automaticamente em todos os boots, coloque no final do arquivo ~/.bashrc o comando:
complete -cf sudo

quarta-feira, 19 de outubro de 2016

Desativando o inicio rápido do Windows 8


O inicio rápido (um arquivo de hibernação) serve pra guardar parte do sistema e dos programas abertos no Windows 8 pra o mesmo iniciar mais rapidamente quando o computador for ligado, mas para que usa dual boot com o Linux este procedimento impede a montagem da partição para gravação de arquivos caso você configurou a mesma para montagem automática no arquivo /etc/fstab utilizando o NTFS-3G não sendo a mesma montada no boot por causa disto, devendo montar a mesma manualmente usando o comando mount em uma janela de terminal mas apenas como leitura.

Para que você possa editar, gravar e deletar arquivos que estão na partição do Windows 8 pelo Linux devemos desativar a inicialização rápida do Windows 8 que não tem assim muita diferença de tempo com a mesma desativada e você poderá usar o Windows normalmente ao fazer isto.

Acesse Aplicativos/Painel de Controle/Opções de energia, clique em Escolher função do botão de energia
Clique em Alterar configurações não disponíveis no momento, para destravar os itens de Configurações do desligamento.

Agora desmarque a opção Ligar inicialização rápida, depois clique no botão Salvar alterações.

Pronto, agora quando você reiniciar o computador para entrar no Linux a partição Windows será montada automaticamente com acesso de leitura/escrita se a mesma estiver configurada para isto.


Nota:
Se o painel estiver configurado para ser exibido por Categoria, você deve escolher Hardware e Sons/Opções de energia/Alterar o funcionamento dos botões de energia.

Conforme a maneira utilizada para acessar o Painel de Controle, haverá uma pequena diferença no nome da opção em vez de Escolher função do botão de energia, será Alterar o funcionamento dos botões de energia.

Procedimento realizado no Windows 8.




sexta-feira, 7 de outubro de 2016

Ativar miniaturas de vídeo no Thunar do Slackware 14.2


Instale os pacotes abaixo do repositório do Salix 14.2, devendo o mesmo está configurando no seu arquivo /etc/slapt-get/slapt-getrc.

$ sudo slapt-get --install 
gst-ffmpeg
gst-libav
ffmpegthumbnailer

Agora baixe este outro pacote desta url de acordo com a arquitetura do seu sistema, usando o seu navegador ou o wget para isto.


Depois acesse o local onde o mesmo foi baixado e faça:
$ sudo installpkg thunar-thumbnailers-0.4.1-i486-1_slonly.txz

Após reinicie o desktop Xfce.


quinta-feira, 22 de setembro de 2016

Instalando o editor de texto Xed no Slackware

O editor de texto Xed é um excelente editor gráfico de texto ASCII puro com vários recursos e que faz parte da distro Linux Mint 18 no qual veremos neste tutorial como instalar no Slackware 14.2.

O editor Xed possuir os seguintes recursos:

- documentes recentes
- verificação ortográfica utilizando o idioma do dicionário instalado no sistema, podendo  escolher outros se tiver mais de um.
- numeração das linhas
- destaque da linha atual
- estatística do documento
- permite escolher um tipo de fonte e tamanho (apenas pra efeito visual)
- esquema de cores
- utiliza o idioma do  seu sistema automaticamente para a linguagem do menu.
- inserir data e hora e podendo personalizar a mesma
- opção de imprimir e visualizar impressão
- preferencias do editor
- suporte a abas
- Salvar automaticamente após o tempo configurado

O editor Xed possuir ainda alguns outros recursos interessantes não citado aqui, sendo bem completo para um simples editor de texto ASCII.

As dependências completas deste editor que já vem instalado como padrão no Linux Mint 18 cujas as mesmas foram obtidas no sistema com o comando abaixo são:

$ apt-cache depends xed
xed
  Depende: iso-codes
  Depende: xed-common
  Depende: libatk1.0-0
  Depende: libc6
  Depende: libcairo2
  Depende: libenchant1c2a
  Depende: libgdk-pixbuf2.0-0
  Depende: libglib2.0-0
  Depende: libgtk-3-0
  Depende: libgtksourceview-3.0-1
  Depende: libice6
  Depende: libpango-1.0-0
  Depende: libsm6
  Depende: libx11-6
  Depende: libxml2
  Depende: zenity
    zenity:i386


Passos para instalação no Slackware 14.2

Abra uma janela de terminal e execute o comando abaixo.

$ git clone https://github.com/linuxmint/xed
$ cd xed/

Para podemos compilar o xed precisamos dos pacotes abaixo, que foram instalados via sbopkg devendo você ter o mesmo instalado no seu sistema.

$ sudo sbopkg -i gnome-common
$ sudo sbopkg -i yelp-xsl
$ sudo sbopkg -i yelp-tools
$ sudo sbopkg -i gtksourceview3

Após instaladas as dependências:

$ ./autogen.sh
$ make
$ sudo make install

Nota:
Dependendo do tipo de instalação que foi feita no seu Slackware, poderá haver outras dependências, além das citadas aqui, no meu sistema precisei somente destas que citei pra compilar o xed.


Onde fica instalado o xed no sistema ?

O xed fica instalado em  /usr/local/share/xed/ e o executavel fica em /usr/local/bin.


Dica:

Para a verificação ortográfica não começar sempre do começo do arquivo, selecione todos os parágrafos desejados com o mouse e escolha verificar ortografia.

O xed também tem o recurso verificar ortografia automaticamente, basta você ativar a mesma no menu Ferramentas/Verificar ortografia automaticamente. Quando aparecer uma palavra sublinhada em vermelho, clique com o mouse usando o botão direito sob a mesma e escolha Sugestões de ortografia...



quinta-feira, 8 de setembro de 2016

Solucionando dependências no Sbopkg

O sobpkg não instala as dependências de um pacote automaticamente por padrão mesmo sabendo quais são elas, pois a mesma está na base de dados do sbopkg mas somente para pacotes do Slackbuilds. Para não sofrer ter que instalar as dependências quando for acusado durante a compilação do programa pelo sbopkg, devemos utilizar o comando sqg que vem junto com o pacote do sbopkg responsável por baixar todas as dependências do programa que você especificou para instalar pelo sbopkg.


Passos para instalar o programa e suas dependências ser houver

Pesquise primeiro se o programa que você deseja baixar existe no Slackbuilds.

$ sudo sbopkg -g tuxkart
Searching for tuxkart
Found the following matches for tuxkart:
games/supertuxkart
games/tuxkart

No exemplo acima eu vou instalar o game supertuxkart, então devemos dizer ao sbopkg para baixar primeiro as dependências do pacote supertuxkart caso houver e somente depois é que será baixado o supertuxkart utilizando para isto o comando sqg que dirá ao sbopkg para baixar primeiro as dependências na ordem especificada por ele, devendo compila-las nesta ordem e somente depois baixar o programa especificado.

$ sudo sqg -p supertuxkart
Processing supertuxkart.
Done.

Pronto as dependências foram processadas, mas só por curiosidade vamos ver quais são elas antes de mandar instalar o pacote do game.

$ cat /var/lib/sbopkg/queues/supertuxkart.sqf 
OpenAL
supertuxkart

Vimos que o pacote supertuxkart tem apenas uma dependência que é o pacote OpenAL que será instalado automaticamente em primeiro lugar, sendo instalado por último o pacote do game.

Agora basta executar o sbopkg para instalar o supertuxkart sem erros de dependências na compilação do supertuxkart.

$ sudo sbopkg -i supertuxkart
Both a queuefile and a package were found with the name "supertuxkart".

Use (Q)ueuefile, (P)ackage, or (A)bort?: (tecle q)


###########################################
       New queue process started on:
       Seg Ago  8 17:27:52 BRT 2016
###########################################

+++++++++++++++++++++++++++++++++++++++++++
PRE-CHECK LOG
Using the SBo repository for Slackware 14.2
Queue Process:  Download, build, and install

OpenAL:
  Checking GPG for OpenAL.tar.gz ... OK
  Processing OpenAL 1.17.2-2
  Using original .info file
  Using original SlackBuild file
  No build options selected.

supertuxkart:
  Checking GPG for supertuxkart.tar.gz ... OK
  Processing supertuxkart 0.9.2-1
  Using original .info file
  Using original SlackBuild file
  No build options selected.

+++++++++++++++++++++++++++++++++++++++++++

Pre-check complete.

Do you wish to proceed based on the search results above? Packages not
found will be skipped during the process.

(P)roceed or (Q)uit?:    ( tecle p e  Enter)


Notas:
Se o pacote da dependência OpenAL já estiver instalado no sistema seja baixado de um repositório qualquer do Slackware pelo seu gerenciador de pacotes, baixado e instalado pelo navegador ou obtido o source diretamente da fonte o mesmo será igualmente baixado, compilado e instalado pelo sbopkg sobregravando todos os arquivos já existente deste pacote pois o mesmo não resolve dependências ele apenas usa uma lista do que é necessário para compilar o seu programa da base de dados dele, baixando todos os pacotes necessários para o mesmo.
Se mais tarde você desinstalar o game supertuxkart com o slapt-get ou qualquer outro gerenciador de pacotes ou usar o comando removepkg a dependência OpenAL continuara instalada já que a base de dados do sbopkg não é intergrada com a base de dados dos gerenciadores de pacotes do Slackware.

O sbopkg instalará todas as dependências na ordem exata que estiver listada no arquivo /var/lib/sbopkg/queues/nomedopacote.sqf antes do programa que foi especificado.

Quando não houver dependências para um pacote será retornado a seguinte mensagem abaixo:

$ sudo  sqg -p pcsc-lite
pcsc-lite: empty REQUIRES line. No queuefile generated.
Uncomment SKIP_EMPTY to change this.
Done.

Significa que não há dependências para o referido pacote, portanto não será criado o arquivo /var/lib/sbopkg/queues/pcsc-lite.sqf.


Instalando outros pacotes que tem a mesma dependência no sbopkg

Os games alienarena e assaultcube tem a dependência do pacote OpenAL que também foi a dependência do supertuxkart que já estão ambos instalado no sistema.


Para evitar que o sbopkg reinstale um pacote já instalado para acelerar a instalação dos outros pacotes, evitando com isto recompilações desnecessárias, devemos passar o parametro -k. 

$ sudo sbopkg -ki alienarena

Com isto o pacote OpenAL não será recompilado e reinstalado novamente no sistema deste que já existe o pacote baixado pelo sbopkg e o diretório do descompactamento do pacote OpenAL no seu sistema.

Caso você não usar o flag -k deste que você não tenha removido todo o conteudo de  /var/cache/sbopkg e /tmp/SBo/ para recuperar espaço em disco, o pacote OpenAL não será baixado pois já existe o arquivo do mesmo em /var/cache/sbopkg apenas será feita uma nova descompactação e recompilação deste pacote, lembrando que algumas compilações podem ser bastante demoradas mesmo para um pacote de 1 MB de tamanho ou menos e outras podem ser bem rápidas em um pacote que tenha o tamanho de 10 MB ou mais vai depender muito da complexidade e função deste pacote.

Evitando o regravação de pacotes já instalados no sistema e que não foram baixados os pacotes pelo sbopkg

Isto é muito importante se você instalou algum programa de um outro repositório diferente do padrão que vem no Slackware, de repositórios de terceiros e de outras fontes, pois a versão que você instalou para um programa tal funcionar, se a versão da lib for diferente do pacote do Slackbuilds este programa poderá não funcionar e talvez o programa que você baixar no  Slackbuilds também não funcione com esta versão já instalada mas ai é só testado mesmo para saber.

Você deve editar a fila manualmente entrando no diretório  /var/lib/sbopkg/queues/ e editar o arquivo que tenha o nome do pacote que você deseja baixar como exemplo alienarena.

$ cat alienarena.sqf 
ode
OpenAL (apague a linha do OpenAL, já que o mesmo está instalado no sistema)
alienarena

Com a linha OpenAL apagada, somente será baixado o pacote ode e o alienarena.


Rastreando todas dependências de uma vez, de todos os pacotes

# sqg -a

Este procedimento levou 40 minutos em uma cpu Phenom I de 2 Ghz e ficando no total  2388 arquivos de extensão sqf e totalizando 9,5 MB em /var/lib/sbopkg/queues 


Sobre os diretórios do sbopkg:

/var/cache/sbopkg = contem todos os pacotes source baixados pelo sbopkg que serão descompactados para posterior compilação

/tmp/SBo/ = fica todos os diretórios de todos os pacotes baixados que foram descompactados e onde será feita a compilação dos mesmos.

/tmp = é o onde fica todos os pacotes já compilados em formato tgz e que foram instalados automaticamente.

/var/lib/sbopkg/queues = diretório que armazena o arquivo com extensão sqf que tem o mesmo nome do pacote especificado ao sqg e dentro dentro dele os nomes de todas as dependências sendo uma por linha.
Para os pacotes que não haja dependências para compilar, não será gerado um arquivo de mesmo nome do pacote neste diretório.

/etc/sbopkg = armazena o arquivo de configuração sbopkg.conf e outros diretórios e arquivos.



Listando todos pacotes que foram instalados pelo sbopkg

$ sudo sbopkg -p | nl


Checando se os pacotes já instalados tem nova update no repositório


$ sudo sbopkg -c
[ Checking for potential updates ]
This may take a few moments. Press <ESC> to abort.
100%[========================================]
Listing installed SBo repository for Slackware 14.2 packages and flagging
potential updates...

conky:
  POTENTIAL UPDATE
  Installed version:  conky-1.9.0-i486-1_SBo  (versão instalada)
  Repo version:  conky-1.10.4-i486-1_SBo      (nova versão)
emerald-themes:
  POTENTIAL UPDATE
  Installed version:  emerald-themes-0.8.10-i486-1_SBo
  Repo version:  emerald-themes-0.8.12.1-i486-1_SBo
libbluray:
  POTENTIAL UPDATE
  Installed version:  libbluray-0.9.2-i486-2_SBo
  Repo version:  libbluray-0.9.3-i486-1_SBo
p7zip:
  POTENTIAL UPDATE
  Installed version:  p7zip-16.02-i486-1_SBo
  Repo version:  p7zip-16.02-i486-2_SBo

Potential update list complete.

O comando acima chega as novas updates feita no repositório listando o grupo, o nome do programa e a sua nova versão em relação a anterior.


Caso queira saber se existe uma nova versão apenas para um programa específico você pode fazer um filtro como no exemplo abaixo.

$ sudo sbopkg -c | grep -i conky
conky:
  Installed version:  conky-1.9.0-i486-1_SBo
  Repo version:  conky-1.10.4-i486-1_SBo