about archives contact posts tags

my hackergotchi

Since you're already here and don't want to pass by, welcome to my webpage!

One may wonder what Pimentola is. Well, according to Kalevala, it is a very cold location somewhere in the far North. The word means something like a "region of darkness". That's why it is dark over there. You can check an article on Pohjola to learn a bit more.

Hope you're not afraid of cold and darkness.

Setting up a Tor hidden service is pretty straightforward. In a simple case one needs to follow Tor Project's instructions. Also, it is a good idea to take a look into Riseup's Best Practices.

So, now my website is also available as a Tor hidden service at the following address:

zdbj776sxy6szcgdaymenktgc6tada4nhsaac3dqctqsu6yiharwlfqd.onion

I've added the following settings to my /etc/tor/torrc:

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
HiddenServicePort 443 127.0.0.1:443

Also, I had to switch off Apache's mod_status, to prevent statistics leakage through Tor hidden service. To switch it off one needs to run a2dismod status (it is enabled by default in Debian). Anyway I don't need it.

Posted Tue Aug 18 12:01:19 2020 Tags:

In #debian:matrix.org one person just performed stretch->buster upgrade and asked about a way to get a list of newly added packages, that is a list of packages in buster but not in stretch. Another person proposed to run a VM with stretch to get a list of packages in stretch, then run a VM with buster to get a list of packages in buster, then do diff between them. This advise is pretty ingenious, but I doubt that it's good way to do such a simple task. Well, there is UDD, so UDD to the rescue!

There's a public UDD mirror which allows anyone to query UDD using PostgreSQL command-line or GUI clients. So, the mentioned task can be easily solved as follows.

  1. Install your PostgreSQL client of choice, say:

    sudo apt install postgresql-client

  2. Connect to the public mirror with the following command:

    psql -U udd-mirror -h udd-mirror.debian.net -p 5432 udd

  3. Run the following PostgreSQL query:

SELECT package FROM packages WHERE release='buster' AND architecture='amd64'
EXCEPT
SELECT package FROM packages WHERE release='stretch' AND architecture='amd64' ORDER BY package;

This SQL query gives a list of packages in buster but not in stretch for amd64 architecture sorted by package name.

That's it! Pretty easy, huh? UDD is a wonderful source of data about Debian and I really like it.

More information about UDD:

Debian wikipage on UDD

Index of UDD database

Posted Sun Feb 9 14:39:34 2020 Tags:

Salsa is Debian's collaborative development server based on the GitLab software. Debian migrated from previously used Alioth (FusionForge based) to Salsa in Jan 2018. I consider this migration as an improvement. Of course, there are still some developers who don't like Salsa. One of the reasons is too much clicking on buttons in its web-interface, where command line is more convenient. For those who don't like clicking buttons in a web-interface there is salsa, tool to manipulate salsa repositories and group members.

This tool, salsa, is a part of the prolific devscripts package. To use it one need a Salsa token, so one has to deal with Salsa's web-interface one more time. One needs to open Setting, and then Access Tokens. After that just pick a name for your brand-new Personal Access Token, choose its expire date, and choose its scope (for the most convenience one needs api scope, which grants complete read/write access to the API, including all groups and projects). Then just add SALSA_TOKEN=your_token to your .devscripts.

Wait. Is it secure to store such a powerful thing in a form of a plain text? Hmmm, well… If there's a way to keep it in a more secure place but without lots of inconvenience, then let's do it.

Save your Personal Access Token to a local file, say .salsa_key and encrypt it with gpg:

$ gpg --recipient <email_associated_with_your\gpg_key> --encrypt .salsa_key

Now you have plain text .salsa_key file and encrypted .salsa_key.gpg file. Then it is required to fix your .devscripts file. Remove your token from the line starting with SALSA_TOKEN= and change it to

SALSA_TOKEN=$(gpg --quiet --decrypt ~/.salsa_token.gpg)

After that just delete plain text .salsa_key file from your computer. Now your Personal Access Token is secured with your GPG key. Just try

$ salsa whoami

command, and good luck with your Debian contributions!

Posted Tue Apr 23 21:49:04 2019 Tags:

В своё время по мотивам этого поста Лауры я подготовил свой вариант на русском языке. Изначально он был размещён в виде сообщения на форуме русскоязычного сообщества Debian GNU/Linux. Теперь решил его разместить и у себя в блоге, может кому пригодится.

Да, отличие данного поста от сообщения на форуме состоит в том, что в настоящее время ddtp.debian.net не работает, вместо него используется ddtp2.debian.net.

Для начала замечу, что перевод описаний пакетов — полезное дело.

  1. Это даёт возможность лучше узнать систему Debian (вы точно встретите пакеты, на которые раньше не обращали внимание).
  2. Вы сможете улучшить знание английского языка (выучите новые слова и увидите свои ошибки, замеченные другими участниками).
  3. Вы поможете другим людям, которые владеют английским в меньшей степени, использовать Debian.
  4. Это реальная и "видимая" помощь вашей любимой операционной системе.
  5. Это просто здорово! (Внимание! Приводит к развитию доброкачественной зависимости!).

Следует заметить, что существует хорошая документация о том, как переводить описания пакетов. В ней описаны все способы того, как это можно делать.

DDTP Documentation page

Ниже наглядно представлен только самый простой способ, через веб-интерфейс.

Перейдя по этому адресу, вы окажетесь на главной странице, где можно видеть некоторую статистическую информацию, а также ссылки на отдельные страницы со статистикой для разных выпусков.

DDTSS main page

Для начала работы следует зарегистрироваться.

DDTSS create login page

Затем нужно авторизоваться, используя имя своей учётной записи и пароль.

DDTSS login page

Теперь можете переходить на страницу русского языка.

DDTSS for russian page (top)

DDTSS for russian page (top)

Наиболее важными разделами на этой странице являются "Pending translation" (описания пакетов, которые ещё не переведены или не исправлены после внесения изменений в описание на английском языке), "Pending review" (описания пакетов, которые были переведены и ожидают проверки). Здесь же можно посмотреть свою "карму" (то есть, статистику по вашей учётной записи), сообщения от других участников (ни разу не довелось проверить, работает эта возможность или нет), список переведённых или проверенных вами пакетов и список переводов описаний пакетов, работа над которыми была завершена.

Чтобы начать работу над переводом описания пакета, можно просто выбрать пакет по имени из списка "Pending translation". Перед этим обязательно ознакомьтесь с общими правилами перевода, а также с рекомендациями по переводу на wiki-странице русской команды локализации.

Если же вы хотите перевести описание для какого-то конкретного пакета, перейдите в поле "Fetch scepific description", введите имя желаемого пакета и нажмите Enter. Если вы перейдёте в указанное поле и просто нажмёте Enter, то система откроет случайное описание пакета (оно может отсутствовать в списке "Pending translation").

DDTSS edit translation page

Вы можете оставить комментарий в поле "Comment field", который будет виден остальным участникам.

После завершения работы над переводом нажмите кнопку "Submit". Продолжить работу над переводом можно будет позже, выбрав соответствующее имя пакета в разделе "Reviewed by you" на странице русского языка.

Для проверки перевода, выполненного другим участником, выберите соответствующее имя пакета в разделе "Pending review".

DDTSS review translation page

Если вы не сделали никаких исправлений и согласны с переводом, нажмите кнопку "Accept as is". Если же вы внесли какие-либо изменения и хотите их сохранить, нажмите на кнопку "Accept with changes", которая становится активной только после перехода в поле "Comment field". В поле для комментария вы можете указать, какие изменения вы внесли. Либо же вы можете изменить только комментарий, для сохранения изменений только комментария используйте кнопку "Change comment only".

После того как перевод будет проверен и принят двумя участниками, он будет автоматически отправлен в репозиторий и через короткое время будет обработан системой. После этого перевод будет доступен всем пользователям Debian.

Как уже было указано выше, на главной странице DDTSS можно перейти на страницы статистики для различных выпусков, где приведена статистика по категориям пакетов (важные, стандартные, 500 популярных пакетов и т. д.) для каждого языка.

DDTP statistics page

Более того, при наведении указателя мыши на то или иное поле, можно видеть часть списка пакетов, переводы описаний которых отсутствуют для данного языка и данной категории.

DDTP statistics page, missing translations

Для улучшения статистики можно прямо указывать имена этих пакетов в поле "Fetch specific description" на странице русского языка. Рекомендую следить за статистикой для нестабильного выпуска (sid) и переводить описания пакетов оттуда.

Posted Sat Oct 6 12:32:04 2018 Tags:

Just registered another Mastodon account, this time on mastodon.art. I plan to publish some of my photos there. These photos are part of my on-going amateur art project. It is about sky and everything on it. So, it is about blue, red, yellow and some other colors, Sun, Moon, stars, clouds, lighting, rainbow, flying birds, flying planes and so on.

All of my photos are licensed under CC-BY-SA 4.0.

Originally some time ago I was thinking about creating a web-site for these photos, and even invented a name for it, "Sky of My Window". But since as I planned it it would require investing some non-trivial amount of time (I was not able to find any free webapp suitable for my purposes), I decided to use Mastodon for now and maybe create a website later. So, everyone is welcome at @skyofmywindow@mastodon.art!

Posted Sat Aug 18 18:02:21 2018 Tags:

По мотивам этого сообщения решил написать пост с ответами на Debian Trivia. Итак, начнём.

What was the first release with an “and-a-half” release?

Первым (и пока единственным) выпуском “and-a-half” был etch, 4.0. etch-and-a-half был выпущен как набор дополнительных пакетов (включал обновлённое ядро версии 2.6.24 и пакеты с драйверами Xorg для Intel и nVidia) в составе четвёртой, 4.0r4, редакции. Затем эти пакеты также входили в состав последующих редакций etch.

Where were the first two DebConf held?

Первые две конференции DebConf прошли в Бордо во Франции в 2000 и 2001 годах.

What are Debian releases named after? Why?

Выпуски Debian названы именами героев мультфильма «История игрушек». Этот мультфильм был создан компанией Pixar совместно с компанией Уолта Диснея в 1995 году, а первый выпуск Debian, получивший имя из этого мультфильма, был выпущен в 1996 г. Дело в том, что в 1996 г. Лидером Проекта Debian стал Брюс Перенс, проработавший 12 лет в компании Pixar, где он занимался в том числе разработкой ПО для создания анимации. Похоже, именно Брюс решил назвать выпуск именем персонажа «Истории игрушек», потом это решение прижилось.

Give two names of girls that were originally part of the Debian Archive Kit (dak), that are still actively used today.

britney (в настоящее время britney2) — это набор сценариев, выполняющих перенос пакетов из нестабильного выпуска в тестируемый, в ходе которого выполняются специальные проверки. Изначально состоял из нескольких сценариев с разными именами, из которых сохранились, в частности, madison и katie.

madison выполняет поиск сведений о пакетах, их версиях и архитектурах для разных выпусков в базе данных архива Debian.

katie выполняет проверку загружаемых пакетов.

Swirl on chin. Does it ring a bell?

Имеется в виду Базз Лайтер (Buzz Lightyear), герой «Истории игрушек», именем которого назван первый выпуск Debian. В мультфильме у этого персонажа на подбородке нарисована спираль (swirl), которая очень похожа на логотип (спираль) Debian.

What was Dunc Tank about? Who was the DPL at the time? Who were the release managers during Dunc Tank?

Dunc Tank — это экспериментальный и довольно спорный проект по сбору пожертвований с целью оплаты одного полного месяца работы для двух менеджеров, ответственных за выпуск, с той целью, чтобы выпуск etch был подготовлен к заранее запланированной дате, 4 декабря 2006 г.

Лидером Проекта в то время был Энтони Таунс (Anthony Towns), а менеджерами, ответственными за выпуск, были Андреас Барт (Andreas Barth) и Стив Лангашек (Steve Langasek).

Cite 5 different valid values for a package’s urgency field. Are all of them different?

Значениями могут быть low, medium, high, emergency, critical. Последние два, emergency и critical, являются синонимами. Эти значения влияют на то, как быстро пакет должен быть обновлён. То есть, это поле определяет то, как быстро пакет будет рассмотрен на предмет его переноса из нестабильного выпуска в тестируемый.

When was the Debian Maintainers status created?

Этот статус появился после голосования по этому поводу в 2007 году.

What is the codename for experimental?

Казалось бы, кодового имени нет, а на самом деле оно есть. Это rc-buggy. Назван он по имени игрушечной машинки Энди, где “RC” означает “Release Critical” (в контексте Debian) и “Remote Control” (в контексте мультфильма).

Order correctly lenny, woody, etch, sarge

  • woody, 3.0, 2002 год

  • sarge, 3.1, 2005 год

  • etch, 4.0, 2007 год

  • lenny, 5.0, 2009 год

Which one was the Dunc Tank release?

etch, что должно быть понятно из ответа на вопрос о Dunc Tank.

Name three locations where Debian machines are hosted.

Ой, много где.

What does the B in projectb stand for?

“B” означает “Betty”. projectb представляет собой базу данных, хранящую все метаданные пакетов Debian. В ответе на вопрос о dak уже приводились названия сценариев с женскими именами, видимо, “Betty” — это отголосок тех времён.

What is the official card game at DebConf?

Разновидность Мао.

Describe the Debian restricted use logo.

Логотип Debian для ограниченного использования представляет собой бутылку со спиралью Debian над ней, снизу может быть надпись “Debian”.

One Debian release was frozen for more than a year. Which one?

Это был выпуск woody, который был заморожен с февраля 2001 по июль 2002.

Name the kernel version for sarge, etch, lenny, squeeze, wheezy. bonus for etch-n-half!

  • sarge: 2.4.27, 2.6.8

  • etch: 2.6.18

  • lenny: 2.6.26

  • squeeze: 2.6.32

  • wheezy: 3.2

  • etch-and-a-half: 2.6.24

What happened to Debian 1.0?

Выпуск Debian 1.0 никогда не был выпущен. Это произошло из-за того, что компания InfoMagic выпустила компакт-диски с разрабатываемой и ещё не готовой версией Debian как Debian 1.0. В связи с этим было решено объявить, что эта версия не является выпуском Debian 1.0, а подготовленный в последствии выпуск получил номер 1.1 и кодовое имя buzz.

Which DebConfs were held in a Nordic country?

DebConf3 (Осло, 2003) и DebConf5 (Хельсинки, 2005).

What does piuparts stand for?

piuparts означает “Package Installation, UPgrading And Removal Testing Suite” (набор тестов по установке, обновлению и удалению пакетов) и представляет собой специальную программу для тестирования пакетов Debian.

Name the first Debian release.

Первым выпуском Debian был 1.1, buzz. До этого тоже были выпуски, но они считались предварительными. Именно buzz был выпущен как официальный первый выпуск.

Order correctly hamm, bo, potato, slink

  • bo, 1.3, 1997 год

  • hamm, 2.0, 1998 год

  • slink, 2.1, 1999 год

  • potato, 2.2, 2000 год

What are most Debian project machines named after?

Большинство машин Debian названы в честь композиторов. Например, служба nagios работает на машине tchaikovsky.

Posted Tue Jul 31 15:04:36 2018 Tags:

As I wrote earlier Debian migrates from Alioth to Salsa. In the previous post I've explained how to batch import Alioth repositories for which one has local clones with the help of a small and ugly Perl script. But this is just a part of what should be done. This time I modified the scipt to change Vcs-{Browser,Git} URLs in the debian/control files from Alioth to Salsa, commit changes, change git remote, and push. Don't expect the code to be beautiful or efficient, it just works for me.

So, to use the script with the other team's repositories (other than Debian Emacs Addons Packaging Team) one needs to slightly change the $salsa, $alioth, $salsa_origin variables. Also, it is possible to black list directories with the help of grep in @dirs declaration. If you want to silence git, then append >/dev/null 2>/dev/null to the corresponding git commands.

Yes, I understand that I should add this URLs updating functionality to the original script in the first place, but at the time I wrote it I was not ready to spend more time on it. And since the migration is rather a one-shot thing, I don't want to polish it now. Therefore, be careful while using it for your stuff. There are no guarantees that it will work for you or will not break anything.

#!/usr/bin/perl

use warnings;
use strict;

use File::Slurp;

my $root = $ARGV[0];

my $salsa = "https://salsa.debian.org/emacsen-team/";
my $alioth = qr/https:\/\/anonscm\.debian\.org\/c?git\/pkg-emacsen\/pkg\//;

my $salsa_origin = 'git@salsa.debian.org:emacsen-team/';

my $commit_message = "Change Vcs-{Browser,Git} URL to salsa.debian.org";

opendir my $dh, $root or die "$0: opendir: $!";

my @dirs = grep { -d "$root/$_" && ! /^\.{1,2}$|^dh-.*(elpa)+/ } readdir($dh);

closedir $dh;

foreach my $dir (@dirs) {
    chdir $root . $dir;
    next unless (-e $root . $dir . "/debian/control");
    system "git pull origin master";
    my @lines = read_file( $root . $dir . "/debian/control" );
    my $git_new_origin;
    print "Processing $dir...\n";
    for (my $l = 0; $l <= $#lines; $l++) {
        unless ($lines[$l] =~ /$salsa/g) {
            if ($lines[$l] =~ m/Vcs-Browser: $alioth/) {
                $lines[$l] =~ s/(Vcs-Browser: ).*\/(.+)\.git\/$/$1$salsa$2/g;
            } elsif ($lines[$l] =~ m/Vcs-Git: $alioth/) {
                $lines[$l] =~ s/(Vcs-Git: ).*\/(.+\.git)$/$1$salsa$2/g;
                $git_new_origin = "git remote add origin $salsa_origin$2";
            }
        }
    }
    write_file( $root . $dir . "/debian/control", @lines );
    system "git remote rm origin";
    if ($git_new_origin) {
        system $git_new_origin;
        system "git commit -a -m $commit_message";
        system "git push"
    } else {
        print "No changes, skipping...\n"
    }
}

The script gets path to the root directory, containing the local clones, as an argument, so it should be ran as something like ./salsa-convert.pl ~/freedom/packaging/elpa/.

Posted Thu Mar 22 16:22:34 2018 Tags:

Debian migrates from Alioth to Salsa. Salsa is a GitLab instance, which is used to host git repositories for Debian.

I maintain about 90 Debian packages as a member of Debian Emacs Addons Packaging Team. So, migrating these packages by hand can easily become a hurdle. Fortunately, there's already some code written to ease migration. One can find Mehdi Dogguy's scripts, especially his import.sh script. I also found Enrico Zini's fork of the mentioned repository. Enrico Zini's fork contains some changes for better error handling. Since I just want to migrate a bunch of my repositories and don't want to mess things up, I choose to stick with the latter version of the import.sh script.

The first thing one needs to do is to generate access token with api scope. Then one needs to put that token to salsarc file in a directory containing import.sh script. Now it is possible to import Alioth repository to Salsa using something like as follows:

./import.sh https://anonscm.debian.org/cgit/pkg-emacsen/pkg/ace-link.git/ emacsen-team

Now we need to grab somewhere URLs of Alioth repositories to import to Salsa. Typically there is a Vcs-Browser field in debian/control file, which contains URL in question. So, I decided to write some small and ugly Perl script to batch process local clones of Alioth repositories. Note that I placed all clones of pkg-emacsen's Alioth repositories to the same directory. So, the code batch processing can be something like as following:

#!/usr/bin/perl

use warnings;
use strict;

my $root = $ARGV[0];

opendir my $dh, $root or die "$0: opendir: $!";

my @dirs = grep { -d "$root/$_" && ! /^\.{1,2}$|^dh-.*(elpa)+/ } readdir($dh);

closedir $dh;

DIR: foreach (@dirs) {
    print "Processing $_...\n";
    open my $fh, ( $root . $_ . "/debian/control" ) or die "$0: open: $!";
    while (<$fh>) {
        chomp;
        if (m/(Vcs-Browser: )(.*)/) {
            $_ =~ s/(Vcs-Browser: )(.*)/$2/g;
            system "./import.sh $_ emacsen-team";
            next DIR;
        }
    }
    close $fh;
}

To batch process local clones one needs to run the script with the path to the directory with the clones in question as an argument, that is

./batch.pl /home/dogsleg/freedom/packaging/elpa/

You can easily adopt the script to batch import repositories of any Debian team. Moreover, by tweaking grep in @dirs declaration one can blacklist subdirectories that should not be processed.

By the way, importing takes time. It took about 30 minutes to process 90 packages.

Posted Wed Feb 28 13:45:38 2018 Tags:

This is the first post to my brave new blog. I'll try to write some stuff there from time to time. Hope it will be useful for both the intended and arbitrary visitors. Also, I'd like to take advantage of the opportunity and give you some hints about myself. So...

  • Currently I live in Yekaterinburg, Russia

  • I have an equivalent of Ph.D in philosophy and work as a docent of philosophy department

  • My professional interests are in such fields as the foundations of mathematics, logic, theory of knowledge, and metaphysics

  • I'm passionate about free and open source software, I'm a Debian Developer

  • Although I'm OK with monotonous and boring work, I also like to program, so machines are involved in doing some boring stuff

  • I know some bits of Agda, Bash, C, Coq, Emacs Lisp, Haskell, Perl, Prolog, Python; and yes, I know many other geeky words too

  • Besides all of the stuff mentioned above I'm interested in genealogy and using genetics to reveal genealogical mysteries of the past

  • So, my Y-haplogroup is N1a2b (N-P43, VL97+), and my Mt-haplogroup is H1b2

  • I don't believe in psychological classifications stuff, but to make some fun of it I did several tests, and was classified as a logical intuitive introvert

  • And still there's some grains of truth in the above classification, e. g., it is typically hard for me to talk and deal face to face with strangers

  • In many activities I consider myself to be a kind of Wikipedia:WikiGnome

  • Also, I'm inspired by the beauty of nature

Posted Wed Feb 28 00:53:37 2018 Tags:

This page is powerly powered by powerful ikiwiki.