Ir para o conteúdo

Thin logo

Tela cheia Sugerir um artigo
 Feed RSS

Grupo de Usuários Debian da Bahia - GUD/BA

7 de Dezembro de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

Seja bem vind@, se você é um debiano (um baiano que usa debian) faça parte de nossa comunidade!

DebConf15, testing debian packages, and packaging the free software web

30 de Agosto de 2015, 19:12, por PSL-BA Feeds - 0sem comentários ainda

This is my August update, and by the far the coolest thing in it is Debconf.


I don’t get tired of saying it is the best conference I ever attended. First it’s a mix of meeting both new people and old friends, having the chance to chat with people whose work you admire but never had a chance to meet before. Second, it’s always quality time: an informal environment, interesting and constructive presentations and discussions.

This year the venue was again very nice. Another thing that was very nice was having so many kids and families. This was no coincidence, since this was the first DebConf in which there was organized childcare. As the community gets older, this a very good way of keeping those who start having kids from being alienated from the community. Of course, not being a parent yet I have no idea how actually hard is to bring small kids to a conference like DebConf. ;-)

I presented two talks:

  • Tutorial: Functional Testing of Debian packages, where I introduced the basic concepts of DEP-8/autopkgtest, and went over several examples from my packages giving tips and tricks on how to write functional tests for Debian packages.
  • Packaging the Free Software Web for the end user, where I presented the motivation for, and the current state of shak, a project I am working on to make it trivial for end users to install server side applications in Debian. I spent quite some hacking time during DebConf finishing a prototype of the shak web interface, which was demonstrated live in the talk (of course, as usual with live demos, not everything worked :-)).

There was also the now traditional Ruby BoF, where discussed the state and future of the Ruby ecosystem in Debian; and an in promptu Ruby packaging workshop where we introduced the basics of packaging in general, and Ruby packaging specifically.

Besides shak, I was able to hack on a few cool things during DebConf:

  • debci has been updated with a first version of the code to produce britney hints files that block packages that fail their tests from migrating to testing. There are some issues to be sorted out together with the release team to make sure we don’t block packages unecessarily, e.g. we don’t want to block packages that never passed their test suite — most the test suite, and not the package, is broken.
  • while hacking I ended up updating jquery to the newest version in the 1.x series, and in fact adopting it I guess. This allowed emeto drop the embedded jquery copy I used to have in the shak repository, and since then I was able to improve the build to produce an output that is identical, except for a build timestamp inside a comment and a few empty lines, to the one produced by upstream, without using grunt (.

Miscellaneous updates

c3video for debconf #5

14 de Agosto de 2015, 15:13, por PSL-BA Feeds - 0sem comentários ainda

This is a follow-up to my previous post related the DebConf videoteam using a new software stack for the next conferences:

This is about the encoding step from C3TT, mostly done by the script named D-encoding.

We can have many different encoding templates in the system. They're XSLT files which will generate the XML needed to create the local encoding commands. We can have more than one encoding template assigned for a conference.


XSLT encoding templates

A general comment: each meta ticket (say, the original ticket with meta info about the talk) will generate two children tickets over time, a recording one and a encoding one, with their own states. If things go wrong, a ingest ticket is created. More details can be checked here.


Children tickets

So I've got the proper encoded files in my Processing.Path.Output directory. The ticket is marked as encoded by the script. There's also a postencoding step, executed by E-postencoding. As I could understand, it's intended to be a general post-processing hook for encoded files. For instance, it can produces an audio file and make it available on Auphonic service. As we won't use that, we may want to set the property Processing.Auphonic.Enable to no.

The next step starts from the operator side. Just going to the Releasing tab in the web interface, choosing the ticket to check and doing a quick review in the encoded file:


Releasing tab

Then, if everything looks fine, click Everthing's fine:


Check encoded file

From this point the ticket will be marked as checked and the next script (F-postprocessing) will take care of pushing the video(s)/audio(s) to the target place, as defined by Publishing.UploadTarget. I had to set myself the encoding template property EncodingProfile.Extension. We can optionally set Publishing.UploadOptions. (keep that in mind, seems not documented elsewhere)

So I have now the first DebCamp encoded video file uploaded to an external host, entirely processed using the C3TT software stack. We may also want to use a very last script to release the videos (eg. as torrents, to different mirrors and other onlive services) if needed. This is, which unlike others, won't be run by the screen UI in the sequence. It has some parameters hardcoded on it, although code is very clear and ready to be hacked. It'll also mark the ticket as Released.



That's all for now! In summary: I've been able to install and set C3TT up during a few days in DebCamp, and will be playing with it during DebConf. In case things go well we'll probably be using this system as our video processing environment for the next events.

We can access most CCC VoC software from By having a look at what they're developing I feel that we (DebConf and CCC) share quite the same technical needs. And most important, the same spirit of community work for bringing part of the conference to those unable to attend.

DebCamp was warm!

c3video for debconf #4

13 de Agosto de 2015, 14:23, por PSL-BA Feeds - 0sem comentários ainda

This is a follow-up to my previous post related the DebConf videoteam using a new software stack for the next conferences:

As mentioned before, C3TT provides a set of scripts which will work in background for most reviewing and video processing tasks. The first will just check if the talk is done and mark the related ticket as recorded.

The second script, B-mount4cut, does a nice job by mounting a custom fuse filesystem providing the following files (more detailed explanation here:

uncut.dv: full original dv file used as input file for the final trimming.

project.kdenlive: Kdenlive project file for the operator. Once it's saved with the trim marks, fuse-vdv will do a parse on it and use the marks for cutting.

cut.dv: contains only the frames between the trim marks extracted from project.kdenlive.

cut-complete.dv: contains the frames between the trim marks extracted from project.kdenlive, plus a prepended intro and an appended video. Paths for these files should be previously set in the web interface as properties Processing.Path.Outro and Processing.Path.Intros. The outro file can be, for instance, an appended video file with a common thanks for sponsors. The intro files is usually an individual frame for each talk, being a colorful presentation poster. We can also set the intro duration in the Processing.Duration.Intro property.

cut.wav: demuxed audio from cut.dv

Note: in fact, fuse-vdv provides virtual video files as a concatenation of original input files, so avoiding copying large and redundant data. Ideally, these fuse mountpoints will be shared over the network for operators via glusterFS, but I'll skip that for now.

After adding the trimming marks and saving the project using Kdenlive, the operator should go to the web interface and mark the ticket as cut:


Mark ticket as cut

Note: I've been able to do the marks in Kdenlive using double-click in the video, then editing the crop start/end options. The buttons "[" and "]" didn't work in my Kdenlive version for some unknown reason.

In the current DebConf video environment I had to make a link builder for translating the path/file names to the C3TT format. So, for the Amsterdam/2015-08-13/09:57:02.dv we should have a amsterdam-2015.08.13-09_57_02.dv symlink.

From now the system will delivery the next tasks to C-cut-postprocessor script. This script will just check the marks from the Kdenlive project file and do the cutting job. So far it has worked perfectly here for the first video sessions in DebCamp, with zero hack in the original code, wow!

Next post will be about the encoding script, named D-encoding.

c3video for debconf #3

12 de Agosto de 2015, 22:07, por PSL-BA Feeds - 0sem comentários ainda

This is a follow-up to my previous post related the DebConf videoteam using a new software stack for the next conferences:

An outdated documentation for current subject is available at Although the system may work differently nowadays, the basic idea remains the same. A newer, but incomplete documentation can be found in Btw, CCC people from #voc at have been very kind and supportive.

I've set an instance of C3TT for DebConf15 in If you want to play with it just ping me in #debconf-video at oftc. As you can see, we can keep a single external C3TT server for all Debian events, without much work left to the local side, doesn't it sound amazing?

Setting a new conference

Go to Projects, then Create.

In the project area we'll need to import the Tickets. Tickets will come from the schedule file, which is a XML as generated from frab. With a minor hack we've been able to make the schedule XML from DebConf Summit quite compatible to it (kudos cate!):


Importing tickets

By importing the schedule from we'll be asked from which rooms we want to import the events. Usually those that have video coverage will be selected:


Choosing rooms

Then, we may want to exclude some talks that we won't provide video:


Choosing talks

We're also required to adjust some Properties for a given conference. An example with some explanation of these properties is availabe at For my initial tests the ones below seem to be enough:


Setting properties

The backend: basic understand

The screen UI mentioned above will run a set of scripts in background which will automate most of the tasks, preparing videos for cutting to deploying them in different online services.

Tab 0: A-recording-scheduler

Each 30 seconds it will check if there's any ticket in the state scheduled or recording. It's based in the start/end datetime of the talk, so the ticket will be kept as scheduled (current < talk start), or marked as recording (start => current =< end) or recorded (current > end).

Tab 1: B-mount4cut

Each 30 seconds it will check if there's any ticket in the state recorded. That means the talk is already finished, and the raw video file is available in the path which has previously been set as a property (Path.Capture) in the web interface.

For each ticket marked as recorded it will try to find the related video file in the capture path. The file format should be <room>-YYYY-MM-DD_HH-MM-SS.<extension>. The script will then use fuse-vdv to create a custom filesystem with some needed files for human interaction (fancy stuff!).

Here's an example of talks in a room called Heidelberg, after being recorded and auto-mounted by the B-mount4cut script:


Mounting custom fuse FS

The human interaction is just a short review process using Kdenlive. The reviewers will access these files via a glusterFS network share. There's even a Debian Virtualbox image provided for that, including all the necessary tools. I'm going into this right now and will report what I get in the next hours.

Hopefully the following scripts will also be covered, very soon-ish :)

Tab 2: C-cut-postprocessor

Tab 3: D-encoding

Tab 4: E-postencoding (auphonic)

Tab 5: F-postprocessing(upload)

DebCamp is fun.

c3video for debconf #2

11 de Agosto de 2015, 19:33, por PSL-BA Feeds - 0sem comentários ainda

This is a follow-up to my previous post related the DebConf videoteam using a new software stack for the next conferences:

Installing C3TT scripts

There's a video (in German) which gives an idea about how the C3TT works:

It basically gives the volunteers a web interface to cut and review the recordings, wich communicates with a set of scripts running in background which will automate some tasks.

"Installing" the set of scripts is just a matter of placing them in a common directory and installing some Perl dependencies, mostly which are already packaged for Debian.

First check it out from the svn repository (fun fact: the web interface is coded in php in a git repository, the scripts are mostly written in perl with a little of bash, in a subversion repository. Both the conference and media system is are in ruby :)

$ svn co
$ mkdir /opt/crs; mv cccongress/trunk/tools /opt/crs/

A few libraries required:

$ apt-get install libboolean-perl libmath-round-perl libdatetime-perl libwww-curl-perl libconfig-inifiles-perl libxml-simple-perl
$ perl -MCPAN -e 'install XML::RPC::Fast'

In the web tracker create a project, go to all projects => workers and create a worker (I'll try to explain it later). Go edit the worker and we'll see the token and secret that should be used in the scripts to talk to the interface.

cd  /opt/crs/tools/tracker3.0

Create a file with the follow lines (using our correct values):

export CRS_TRACKER=http://localhost/rpc
export CRS_TOKEN=2q24M7LW4Rk31YNW4tWKv8koNvyM3V4s
export CRS_SECRET=5j8SyCS35W2SBk2XIM4IWeDUqF9agG1x

We also need to build and install the fuse-vdv package from trunk/tools (if working with dv files, otherwise fuse-ts package).

Next step is run the scripts. Fortunatelly a nice UI has been done using screen with multiple tabs, which can be alternated using a <Ctrl+a> <number> combination.

cd  /opt/crs/tools/tracker3.0 && /

We'll get the following:


Screen tabs from C3TT

In a next post I'll try to explain a bit of how the web system work together with the scripts and how to do a basic setup for a real conference. I hope to get there soon!

c3video for debconf #1

11 de Agosto de 2015, 12:41, por PSL-BA Feeds - 0sem comentários ainda

Some context

DebConf has provided live streaming and recordings from talks since 2004. We used to work with a set of scripts which worked together with Pentabarf for most of videoteam tasks, including volunteer shifts coordination, reviewing process, encoding and deployment.

Things has changed since DebConf14, when Pentabarf was replaced by Summit as the conference management system. Without those old Pentabarf features and hacks we had to invent new ways of dealing with the video workflow in DebConf. We gave veyepar a try in 2014, and we will probably do it again in DebConf15. However, for a long term solution we are considering the software stack from CCC Video Operation Center, which so far I see as a free, solid and community-oriented mix of Debian-friendly tools.

I will be reporting the progress on setting up and testing the CCC software strucutre for DebConf. Having the opportunity of being in DebCamp together with other videoteam folks will certainly make things easier :)

Setting up the CCC Ticket Tracker

C3TT is a ticket/tracker system used by CCC for reviewing/encoding process.

The web side of C3TT is written in PHP and can be cloned from Some documentation is available at and from

What I've done so far to get it working:

Installing some dependencies:

$ apt-get install postgresql-9.4 php5-pgsql php5-xsl postgresql-contrib-9.4 php5-xmlrpc php5

Creating database and users:

$ su -s /bin/bash postgres
$ createuser -DRS dc15
$ createdb -O dc15 c3tt
$ psql
postgres=# ALTER ROLE dc15 WITH PASSWORD 'xxx';

Basic site config using lighttpd:

$HTTP["host"] =~ "c3tt\.your\.host" {
  server.document-root = "/var/www/c3tt/Public/"
  alias.url = ("/javascript/" => "/var/www/js/")
  url.rewrite-once = ( ".*\.(js|ico|gif|jpg|png|css)$" => "$0", "^(.*?)$" => "index.php/$1",)

Running the installer script:

$ php -q Install/install.php

This will ask you some questions, then will create the config file and populate the database. At this point you should be able to access the ticket track system from your browser.

The set of scripts from C3TT doesn't need to be installed in the same host as the web side, they communicate via XML/RPC. In a next post I will report the installation and initial setup for these scripts.

Elixir in Debian, MiniDebconf at FISL, and Debian CI updates

5 de Agosto de 2015, 1:13, por PSL-BA Feeds - 0sem comentários ainda

In June I started keeping track of my Debian activities, and this is my July update.

Elixir in Debian

Elixir is a functional language built on top of the Erlang virtual machine. If features imutable data structures, interesting concurrency primitives, and everything else that Erlang does, but with a syntax inspired by Ruby what makes it much more aproachable in my opinion.

Those interested in Elixir for Debian are encouraged to hang around in #debian-elixir on the OFTC IRC servers. There are still a lot of things to figure out, for example how packaging Elixir libraries and applications is going to work.

MiniDebconf at FISL, and beyond

I helped organize a MiniDebconf at this year’s FISL, in Porto Alegre on the 10th of July. The whole program was targetted at getting more people to participate in Debian, so there were talks about translation, packaging, and a few other more specific topics.

I myself gave two talks: one about Debian basics, “What is Debian, and how it works”, and second one on “packaging the free software web”, which I will also give at Debconf15 later this month.

The recordings are available (all talks in Portuguese) at the Debian video archive thanks to Holger Levsen.

We are also organizing a new MiniDebconf in October as part of the Latinoware schedule.


We are in the middle of a transition to switch to Ruby 2.2 as default in Debian unstable, and we are almost there. The Ruby transition is now on hold while GCC 5 one is going on, but will be picked up as soon as were are done with GCC 5.

ruby-defaults has been uploaded to experimental for those that want to try having Ruby 2.2 as default before that change hits unstable. I myself have been using Ruby 2.2 as default for several weeks without any problem so far, including using vagrant on a daily basis and doing all my development on sid with it.

I started taking notes about Ruby interpreter transitions work to make sure that knowledge is registered.

I have uploaded minor security updates of both ruby2.1 and ruby2.2 to unstable. They both reached testing earlier today.

I have also fixed another bug in redmine, which I hope to get into stable as well as soon as possible.

gem2deb has seen several improvements through versions 0.19, 0.20, 0.20.1 and 0.20.2.

I have updated a few packages:

Two NEW packages, ruby-rack-contrib and ruby-grape-logging ,were ACCEPTED into the Debian archive. Kudos to the ftp-master team who are doing an awesome job reviewing new packages really fast.

Debian Continuous Integration

This month I have made good progress with the changes needed to make debci work as a distributed system with one master/scheduler node and as many worker nodes (running tests) as possible.

While doing my tests, I have submitted a patch to lxc and updated autodep8 in unstable. At some point I plan to upload both autodep8 and autopkgtest to jessie-backports.


I have sponsored a few packages:

Upgrades to Jessie, Ruby 2.2 transition, and chef update

2 de Julho de 2015, 20:26, por PSL-BA Feeds - 0sem comentários ainda

Last month I started to track all the small Debian-related things that I do. My initial motivation was to be concious about how often I spend short periods of time working on Debian. Sometimes it’s during lunch breaks, weekends, first thing in the morning before regular work, after I am done for the day with regular work, or even during regular work, since I do have the chance of doing Debian work as part of my regular work occasionally.

Now that I have this information, I need to do something with it. So this is probably the first of monthly updates I will post about my Debian work. Hopefully it won’t be the last.

Upgrades to Jessie

I (finally) upgraded my two servers to Jessie. The first one, my home server, is a Utilite which is a quite nice ARM box. It is silent and consumes very little power. The only problem I had with it is that the vendor-provided kernel is too old, so I couldn’t upgrade udev, and therefore couldn’t switch to systemd. I had to force systemv for now, until I can manage to upgrade the kernel and configure uboot to properly boot the official Debian kernel.

On my VPS things are way better. I was able to upgrade nicely, and it is now running a stock Jessie system.

fixed https on

pabs had let me know on IRC of an issue with the TLS certificate for, which took me a few iterations to get right. It was missing the intermediate certificates, and is now fixed. You can now enjoy Debian CI under https .

Ruby 2.2 transition

I was able to start the Ruby 2.2 transition, which has the goal of switch to Ruby 2.2 on unstable. The first step was updating ruby-defaults adding support to build Ruby packgaes for both Ruby 2.1 and Ruby 2.2. This was followed by updates to gem2deb (0.18, 0.18.1, 0.18.2, and 0.18.3) and rubygems-integration . At this point, after a few rebuild requests only 50 out of 137 packages need to be looked at; some of them just use the default Ruby, so a rebuild once we switch the default will be enough to make it use Ruby 2.2, while others, specially Ruby libraries, will still need porting work or other fixes.

Updated the Chef stack

Bringing chef to the very latest upstream release into unstable was quite some work.

I had to update:

  • ruby-columnize (0.9.0-1)
  • ruby-mime-types (2.6.1-1)
  • ruby-mixlib-log 1.6.0-1
  • ruby-mixlib-shellout (2.1.0-1)
  • ruby-mixlib-cli (1.5.0-1)
  • ruby-mixlib-config (2.2.1-1)
  • ruby-mixlib-authentication (1.3.0-2)
  • ohai (8.4.0-1)
  • chef-zero (4.2.2-1)
  • ruby-specinfra (2.35.1-1)
  • ruby-serverspec (2.18.0-1)
  • chef (12.3.0-1)
  • ruby-highline (1.7.2-1)
  • ruby-safe-yaml (1.0.4-1)

In the middle I also had to package a new dependency, ruby-ffi-yajl, which was very quickly ACCEPTED thanks to the awesome work of the ftp-master team.

Random bits

  • Sponsored a upload of redir by Lucas Kanashiro
  • chake, a tool that I wrote for managing servers with chef but without a central chef server, got ACCEPTED into the official Debian archive.
  • vagrant-lxc , a vagrant plugin for using lxc as backend and lxc containters as development environments, was also ACCEPTED into unstable.
  • I got the deprecated ruby-rack1.4 package removed from Debian

Aprenda a criar repositórios de pacotes Debian

29 de Junho de 2015, 3:00, por PSL-BA Feeds - 0sem comentários ainda

Clone trooper e wall-e empilhando pacotes

Neste post irei mostrar como configurar um repositório de pacotes Debian GNU/Linux usando dput + mini-dinstall + nginx. O Debian é um sistema operacional livre criado e mantido por um grupo independente de desenvolvedores espalhados pelo mundo, o projeto foi iniciado em 1993 e tem sido desenvolvido abertamente desde então sempre seguindo o espírito do projeto GNU.

Uma das características mais interessantes do Debian é o seu sistema de gerenciamento de pacotes.

“Um sistema de gerenciamento de pacotes é uma coleção de ferramentas que oferece um método automático para instalar, atualizar, configurar e remover pacotes de um sistema operacional. É tipicamente usado em sistemas operacionais tipo Unix, que consistem de centenas de pacotes distintos, para facilitar a identificação, instalação e atualização” (fonte: Wikipédia)

O sistema de gerenciamento de pacotes Debian chamado APT foi criado originalmente pelos desenvolvedores do projeto e lançado pela primeira vez em 9 Março de 1999 no Debian 2.1 (Slink) e conta hoje com um total de 44893 pacotes (44 mil !!!) em seus repositórios oficiais. Esta enorme quantidade de softwares disponíveis nos repositórios oficiais do projeto torna extremamente simple pesquisar, instalar, atualizar ou remover qualquer coisa do computador.

Os pacotes disponibilizados nos repositórios oficiais do Debian passam por um rígido controle de qualidade liderado pelos desenvolvedores oficiais do projeto e aberto à contribuição de qualquer pessoa. Então se você está empacotando algo veja o Guia do Novo Mantenedor Debian para saber como incluir isso nos repositórios oficiais.

Mas se isso não for possível ou se você não puder esperar o pacote entrar no Debian seja por qual motivo for, então a solução será criar um repositório pessoal ou Private Package Archive (PPA). É isto que será descrito aqui a partir de uma solução proposta inicialmente por Stefano Zacchiroli em seu blog no post howto: uploading to people.d.o using dput.

Atenção! Todas as instruções a seguir são baseadas em meu próprio ambiente, isto inclui nomes de usuários, domínios, diretórios, etc. Você deve adaptar estas informações com base em sua realidade.

Configurando o servidor para receber pacotes

  • Sistema Operacional: Debian Wheezy
  • Domínio:

Acesse o servidor via SSH e instale o mini-dinstall:

mini-dinstall is a tool for installing Debian packages into a personal APT repository

# apt-get install mini-dinstall

Crie o diretório onde os pacotes serão copiados:

$ mkdir -p ~/

Crie o arquivo ~/.mini-dinstall.conf:

mail_on_success = false
incoming_permissions = 0750
architectures = all, i386, amd64
archive_style = flat
dynamic_reindex = 1
archivedir = /home/joenio/
generate_release = 1
release_label = Joenio
release_description = Unofficial Debian packages maintained by Joenio Costa
verify_sigs = 0

Preparando a estação de trabalho para enviar pacotes

  • Sistema Operacional: Debian Testing

Instale o dput em seu computador:

dput allows you to put one or more Debian packages into the archive

# apt-get install dput

Exporte sua chave pública GnuPG para para o arquivo signing.asc.

$ gpg --armor --output signing.asc --export D5609CBE

D5609CBE é a minha chave, substitua este valor pelo identificador da sua própria chave.

Copie o arquivo signing.asc para o servidor:

$ scp signing.asc

Crie arquivo ~/ em seu $HOME:

fqdn =
method = scp
login = *
incoming = ~/
allow_unsigned_uploads = 0
post_upload_command = ssh mini-dinstall -b && sign-remote --no-batch

Os pacotes serão assinados com a chave GnuPG ao serem enviados pelo dput ao servidor. Isso será feito pelo script sign-remote disponível aqui. Copie este arquivo em seu computador e adicione a localização dele ao $PATH, se não sabe do que estou falando leia isso.

O dput irá reclamar se a distribuição do pacote não for unstable, isto é definido no arquivo changelog do pacote, veja o capítulo 4 Required files under the debian directory no Guia do Novo Mantenedor Debian para entender como fazer isso.

Bem, aqui já temos tudo pronto para fazer upload dos nossos pacotes ao servidor, basta executar o seguinte comando:

$ dput <pacote>.changes

Isto irá copiar o pacote .deb e o arquivo .changes dele, irá atualizar os arquivos Sources e Packages com as informações do pacote e irá assinar o arquivo Release com a chave pública GnuPG.

Disponibilizando acesso ao repositório publicamente

Até aqui já temos um repositório com pacotes hospedados, mas sem acesso público aos pacotes ninguém poderá utilizá-lo. Para resolver isto vamos configurar acesso via HTTP usando o servidor web Nginx.

Instale o Nginx no servidor:

# apt-get install nginx

Crie o arquivo de configuração /etc/nginx/sites-available/

server {
  access_log /var/log/nginx/;
  location / {
    root /home/joenio/;
    autoindex on;

Habilite o arquivo de configuração e reinicie o serviço:

# cd /etc/nginx/sites-enabled/
# ln -s /etc/nginx/sites-available/
# service nginx restart

Com o Nginx configurado e rodando já temos o repositório e seus pacotes disponíveis no seguinte endereço:

Testando o repositório e instalando pacotes

Para usar este repositorio adicione as seguintes entradas no /etc/apt/sources.list do computador local:

deb unstable/
deb-src unstable/

Adicione a chave de assinatura ao banco de dados de segurança do APT:

# wget -O - | apt-key add -

Atualize a lista de pacotes e teste a instalação de algum pacote disponível no repositório:

# apt-get update
# apt-get install <pacote>

Pronto, temos o nosso próprio repositório de pacotes Debian disponível publicamente. Você pode agora publicar qualquer pacote que esteja criando e divulgar o endereço do repositório para que outros usuários Debian possam instalar os seus pacotes mais facilmente.

Na wiki do Debian em How to setup a Debian repository tem uma lista de ferramentas para configuração de repositórios Debian, não usei a maioria das ferramentas listadas lá, mas dentre elas o aptly parece uma boa opção para criar repositório pessoal de pacotes Debian e pode ser uma boa alternativa para o setup descrito aqui neste post.

Sobre a foto no título deste post: Os cubos (pacotes) de papel utilizados na imagem foram feitos seguindo o tutorial "Como Fazer um Cubo de Origami" .

Zyne is now in Debian

9 de Junho de 2015, 16:05, por PSL-BA Feeds - 0sem comentários ainda

Zyne is a modular synthetizer written in Python. Anyone can create and extend its modules using the Pyo library. Zyne's GUI is coded using WXPython and will look nicely in GNU/Linux, Mac and Windows systems. It's written by the same author of Pyo, and together with Cecilia and Soundgrain is part of an amazing set of libre tools for sound synthesis and electronic music composition.


Zyne loading 6 of its 14 default modules

Zyne package is result of a successful one-day event called MicroDebconf Brasilia 2015, being created during a track about packaging and QA leaded by Eriberto Mota and Antonio Terceiro.

Ressuscitando seu celular após falha em mudança de flash

30 de Março de 2015, 15:16, por Software Livre Brasil - 0sem comentários ainda

Como sou muito curioso e meu instinto hacker as vezes fala mais alto, comecei a futucar cada vez mais profundamente meu celular e testar algumas loucuras nele.

Em uma dessas tentativas, mesmo após ter feito backup, meu celular ficava com tela toda preta e nem aparecia a logo da empresa fornecedora no meu celular :( Pensei logo: “Pronto, perdi meu celular. Ganhei um peso de papel bem caro”.

Eu modifiquei o boot.img dele por uma imagem possivelmente defeituosa, mas eu jurava que ainda assim eu conseguiria acessar o recovery e ao menos restaurar o backup. Me enganei! :P

Acessando o fórum XDA Developers eu pude encontrar MUITA documentação do que poderia ser feito para resolver e tentei de tudo, mas nada parecia funcionar e meu nervosismo pela minha falha tornou minha busca no fórum bem mais complicada.

Felizmente eu consegui recolocar a flash de fábrica de volta no meu celular, eu segui os passos abaixo.


Baixe o firmware relacionado ao seu celular, o meu é Xperia M e você pode pegar ele aqui aqui, mas caso o seu seja outro, basta procurar. A extensão dele é “ftf” e o meu firmware tinha 710 MB de tamanho.


Primeiro precisamos baixar ele! Apenas baixe e coloque em uma pasta a sua escolha.

Ele vai reclamar que precisa da biblioteca libusb. Que pode ser obtida aqui. Depois de baixar vamos compilar e instalar com os comandos abaixo:

# tar xjvf libusbx-1.0.18.tar.bz2

# cd libusbx-1.0.18

# ./configure

# make

# make install

# ldconfig

O Flashtools precisa das bibliotecas no /usr/lib, mas a instalação da lib coloca ela no /usr/local/lib. Você pode mover para o local desejado, eu preferi criar link simbólico:

# ln -s /usr/local/lib/ /usr/lib/
# ln -s /usr/local/lib/ /usr/lib/

Coloque o firmaware obtido no passo anterior na pasta firmawares do Flashtools.

Pronto! Agora inicie o seu flashtools como root. Ele abrirá uma tela pedindo pra mover a pasta firmwares de onde você baixou para /root/.flashTool/firmwares. Pode mover, isso mesmo mover, pois caso ele perceba que ainda existe a pasta firmawares no local hoje você executa o flashtools ele não abrirá o software corretamente.

Ele vai abrir uma tela mais ou menos assim:


Clique no ícone do raio e selecione a opção “flashmode”:


Na próxima tela selecione o firmware desejado:


Caso queira mudar mais alguma coisa, fique a vontade, eu não precisei mudar nada :) Basta clicar no botão “Flash”.

Agora aparecerá uma tela como essa, solicitando que seu celular entre em flashmode:

No caso do meu celular, eu arranquei a bateira, recoloquei ela, coloquei o cabo USB e pressionei o botão de volume para baixo até que o software flashtool reconhece ele :)

Depois ele começou o envio da flash. Bastou e esperar e meu celular estava prontinho para eu recomeçar tudo de novo :)

Muito obrigado a Nicklas Van Dam, que me ajudou MUITO lá no fórum XDA :)

rrg: visualize the require hierarchy in Ruby projects

20 de Março de 2015, 18:55, por Software Livre Brasil - 0sem comentários ainda

Yesterday I was hacking on some Ruby code and getting a weird error which I thought was caused by mutually recursive require statements (i.e. A requires B, and B requires A). Later I realized that this is not an issue in Ruby, since the intepreter keeps track of what has already been required and will not enter a loop. But during the investigation I came up with something that turned out to be useful.

rrg will read the source code of a Ruby project and generate a graph based on the require statements in the code; nodes represent the source files and an arrow from A to B means that A contains a `require ‘B’` statement.

From the README:

Just run rrg at the root of your project. rrg will parse the code inside lib/, and generate a graph description in the Graphviz format. You can pipe the output to Graphviz directly, or store it in a file and process it to generate an image.

If you call rrgv instead, it will automatically process the graph with Graphviz, generate a PNG image, and open it.

Let’s see some examples. First the classical “analysing itself” example, the require graph for rrg itself:

Not very interesting, since all of the logic is currently in the main binary and not on library code. But 1) when I do the refactorings I want to, there will be more library code and 2) while writing this I implemented also parsing scripts in bin/.

Now chake which is a slightly larger project:

An even larger (but still not that big) project, gem2deb:

Note that these visualizations may not be accurate representations of the actual source code. In Ruby, nothing stops one from implementing class A::B in lib/x/y.rb, but most reasonable code will make sure that filenames and the classes namespaces actually match.

If you are working on a sane codebase, though, visualizing graphs like this helps understand the general structure of the code and perceive possible improvements. The gem2deb graph gave me some ideas already and I didn’t even paid much attention to it yet.

MuseScore 2.0 is great, try it!

14 de Março de 2015, 14:44, por Software Livre Brasil - 0sem comentários ainda

A bit of context: two years ago I joined an undergraduate program in electroacoustic music composition at the Université de Montréal. Fortunately the faculty has decided to use mostly free software in the classes. They recently moved from Max/MSP to Pure Data to teach algorithmic composition. OpenMusic has been used for computer assisted composition classes. On acoustics classes, Sonic Visualiser is the recommended tool. For everything related to audio processing and sound synthesis we mainly use Python pyo library and Cecilia, both developed by the professor himself. Other many free softwares are used for building digital musical instruments in the courses: Arduino, SuperCollider, OpenCV, openFrameworks etc.

So far I touched two proprietary softwares for my classes. First it was Reaper, a sequencer which has been recently adopted in replacement of Pro Tools in some grades. Reaper has a less unfair distribution model compared to Pro Tools and despite being a closed piece of software it somewhat looks like a community-oriented project, being developed by a small team of free software enthusiasts. Being an amazing, complete and still lightweight DAW I hope it goes free some day in the future (I've read about this possibility somewhere in a forum that I can't find now). Anyway, after some months playing with Reaper I went back to Ardour. Because it's free, not because it's better (Reapper still seems unbeatable here).

The other was Finale, an alternative to MuseScore for music notation. I used it for three compositions mainly due to its playback capabilities. As a middle-aged music student I don't have the internal ear enough developed to listen orchestral textures, articulations and other details provided by expensive VST stuff. However, I found editing with Finale a pain in the ass. It's so bugged that I thought I were using a sort of alpha version. Basic editing is much more logical and elegant with MuseScore. After all, these first experiences with Finale didn't convince me that such realistic playbacks are adding any value to my music. I suspect that moving back to soundfonts or even composing with no playback at all will probably force me to exercice more critical/analytical listening whenever I need to understand the effects of a specific instrumental gesture and instrument combinations. So, I'm back to MuseScore. Not only because it's free, but also because it's better (at least for my current needs).

MuseScore has allowed me to easily edit music scores in a free operating system, using a small and not so powerful laptop. Unable to donate money to this amazing project I've been happily giving some time to it, by testing new releases, reporting issues, translating to portuguese and making available unofficial Debian packages while the current maintainer prepares the official one, which seems to be coming very soon. If you're a Finale/Sibelius user and don't strictly need that universe of orchestral VSTs samples for your music work, please give MuseScore a try. Have a quick look at its online handbook and in a few minutes you will be able to experience the real pleasure of music scoring using a computer. You can try different soundfonts, including the so nice Sonatina Symphonic Orchestra.

Below is a screenshot of MuseScore 2.0, which will be released very soon. You can download the RC version for your system in the MuseScore website.


MuseScore 2.0

Freeing myself from flickr

11 de Março de 2015, 3:03, por Software Livre Brasil - 0sem comentários ainda

A flickr standard account gives you a free as in facebook service (I really wanted to reuse it!!!). I don't know about the pro account, but I don't believe it will give you much respect. Anyway, I realized that my photo albums in flickr are still online. And I'm currently unable to access my photos locally. I needed to download all them, then I decided to give flickrbackup a try. I started coding it a few years ago because at that time there was no free tools available for that. And then I abandoned it, too bad I feel. But for my surprise it worked without issues! And that's all I needed in my Debian box:

$ apt-get install flickrbackup

$ mkdir myflickr

$ flickrbackup -o myflickr/

(this will open a default browser for authentication and will automatically get the API key, then I just need an ENTER to start getting all my albums)

I'm not sure whether there're other free tools (as in freedom) for that, but before paying for a license or trusting an online service for downloading your sets please give flickrbackup a chance :)

I'll probably set a piwigo instance in a vps. But I fear php. So, suggestions on web galleries are very welcome.


9 de Março de 2015, 18:52, por Software Livre Brasil - 0sem comentários ainda

Vai passar... é só uma frase.