LINUX.ORG.RU

Избранные сообщения yars068

GCLI 2.6.0

Новости — Разработка
GCLI 2.6.0
Группа Разработка

4 января, после более пяти месяцев разработки, состоялся выпуск 2.6.0 консольной утилиты GCLI, написанной на языке C и распространяемой по лицензии BSD-2. Утилита предназначена для взаимодействия с API нескольких популярных сервисов хостинга Git-проектов и позволяет создавать, просматривать и взаимодействовать с проблемами, запросами на слияние и метками и комментариями к ним; проверять состояние CI и конвейеров, и многое другое.
И, в отличие от GitHub CLI, GCLI поддерживает не только API GitHub, но и API GitLab, Gitea и, экспериментально, Bugzilla.

( читать дальше... )

>>> Список изменений версии 2.6.0 на GitHub

 , , , ,

dataman
()

EasyEffects не нужно, или PipeWire для продвинутых: часть 3

Статьи — Desktop

Во второй части мы разобрали вопрос, как управлять параметрами эффектов в реальном времени, без перезапуска PipeWire.

Теперь рассмотрим, как можно добавить сторонний плагин, реализующий эффект, который не встроен в PipeWire, и как управлять его параметрами.

Модуль filter-chain, помимо встроенных (builtin) эффектов, поддерживает два самых распространенных в Linux стандарта DSP плагинов - LADSPA и LV2. Прежде всего, эти плагины предназначены для использования в DAW системе (цифровая звуковая рабочая станция, в которой «делают музыку»), такой как Ardour, Qtractor, LMMS. Они реализуют множество эффектов, таких как эквалайзер, компрессор, лимитер и тому подобное.

LADSPA это более простой и более старый стандарт, LV2 более развитый, но большинство популярных в Linux наборов LV2 плагинов поставляются и в LADSPA варианте. PipeWire может использовать плагины обоих стандартов, поэтому используем сразу LV2 вариант.

Реализуем очень нужный многим эффект – нормализацию громкости, или компрессию. То есть, нам нужно, чтобы тихие звуки стали громче, и были слышны в зашумлённой обстановке (на работе, к примеру) из плохих динамиков ноутбука. Также эта проблема очень актуальна при просмотре фильмов, часто есть огромная разница в громкости между диалогами и активными сценами (когда начинают бить морды). Надо эту разницу уменьшить.

Для этого мы используем замечательный набор плагинов LSP. Эти плагины доступны во всех основных форматах, мы же используем LV2 версию. В составе набора есть плагин Compressor Mono, который хорошо подходит для нашей задачи – там предусмотрен «обратный» режим работы, когда тихие звуки делаются более громкими (а не только громкие – более тихими, как в большинстве аналогичных плагинов). Это именно то, что нужно.

Добавим этот плагин в цепочку фильтров filter-chain. Для этого, сначала надо узнать такую вещь, как URI плагина. Это такая форма его названия, в виде веб-адреса. Но это не настоящая веб-ссылка, просто такая форма ))). В общем, это тяжело объяснить.

Чтобы узнать URI плагина, выполним команду lv2ls. Команда выдаст URI всех плагинов, которые установлены в системе. Среди них должен быть нужный нам плагин http://lsp-plug.in/plugins/lv2/compressor_mono. Если такого нет, надо установить набор плагинов LSP, при помощи пакетного менеджера дистрибутива.

Теперь добавим в конфиг-файл из предыдущих частей вот такой кусок, в массив nodes (полная версия конфига будет в конце статьи):

{
  type = lv2
  name = compressor
  label = compressor
  plugin = "http://lsp-plug.in/plugins/lv2/compressor_mono"
  control = { "cm" = 1 "cr" = 4.0}
}

Как видно, это очень похоже на добавление builtin эффекта. Только теперь тип будет lv2, plugin - указываем URI плагина. name, label – название, которое мы сами даём этому эффекту, может быть любое. По нему потом всё будет доступно через pw-cli для изменения параметров. Добавляем два параметра - "cm" = 1 это режим работы, который делает тихие звуки громче (а не громкие – тише). "cr" = 4.0 – это степень компрессии, во сколько раз. Чем больше это значение, тем больше будет выравниваться громкость.

Здесь важно, что параметров у этого плагина намного больше, а нам нужно указать только те, которые мы изменяем – остальные будут иметь значение по умолчанию.

Очень тяжелый вопрос: откуда же брать названия параметров плагина, допустимые значения этих параметров, чтобы прописать сюда? Как узнать, что есть вот именно два этих параметра, и они называются вот так?

Для этого используем утилиту lv2info. Выполним команду

lv2info http://lsp-plug.in/plugins/lv2/compressor_mono

В выводе команды видим всю информацию о плагине, нас интересуют блоки вида Port N:. Порты у плагина, упрощенно, есть двух видов - это входы/выходы, через которые передается звук, и параметры самого плагина, которые можно задавать и изменять. Находим среди портов те, которые соответствуют нужным нам параметрам. Ищем, ориентируясь на поле Name, оно говорящее, сразу понятно что это.

Port 17:
Type:
  http://lv2plug.in/ns/lv2core#ControlPort
  http://lv2plug.in/ns/lv2core#InputPort
  Scale Points:
    0 = "Down"
    1 = "Up"
    2 = "Boot"

  Symbol:      cm
  Name:        Compression mode
  Minimum:     0.000000
  Maximum:     2.000000
  Default:     0.000000
  Properties:  http://lv2plug.in/ns/ext/port-props#hasStrictBounds
  http://lv2plug.in/ns/lv2core#integer                           
  http://lv2plug.in/ns/lv2core#enumeration

Это описание параметра cm, который мы меняем в конфиг-файле. Из этого куска мы узнаем, что есть параметр Name: Compression mode, он имеет имя Symbol: cm, может принимать значения 0, 1 или 2.

  Scale Points:
    0 = "Down"
    1 = "Up"
    2 = "Boot"

Нам нужен режим Up (делать громче тихий звук), значит мы должны установить этот параметр в значение 1.

Далее, надо «залинковать» этот дополнительный эффект к уже добавленному ранее эквалайзеру. Для этого добавляем в конфиг-файле, в массив links:

{ output = "eq_band_15:Out" input = "compressor:in" }

то есть подключить вход компрессора к выходу 15 полосы эквалайзера. И последний штрих: надо сделать выходом всей цепочки эффектов – выход компрессора.

outputs = [ "compressor:out" ]

Теперь, помимо эквалайзера, у нас в цепочке обработки будет компрессор. Какими параметрами может потребоваться управлять? Можно включать/отключать компрессор

pw-cli s 36 Props '{params = ["compressor:enabled" 0]}'
pw-cli s 36 Props '{params = ["compressor:enabled" 1]}'

Не забываем, что 36 – это номер ноды Equalizer Sink, у вас он может быть совсем другим. Как его определить - см. Часть 2.

Ещё можно подрегулировать степень компрессии, параметр cr.

 pw-cli s 36 Props '{params = ["compressor:cr" 10.0]}'

Вот и всё, два основных эффекта мы реализовали )). Полная версия получившегося конфиг-файла будет выглядеть так:

context.modules = [
    { name = libpipewire-module-filter-chain
        args = {
            node.description = "Equalizer Sink"
            media.name       = "Equalizer Sink"
            filter.graph = {
                nodes = [
                    {
                        type  = builtin
                        name  = eq_preamp
                        label = bq_highshelf
                        control = { "Freq" = 0 "Q" = 1.0 "Gain" = 5.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_1
                        label = bq_peaking
                        control = { "Freq" = 25.0 "Q" = 1.7 "Gain" = -10.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_2
                        label = bq_peaking
                        control = { "Freq" = 40.0 "Q" = 1.7 "Gain" = -10.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_3
                        label = bq_peaking
                        control = { "Freq" = 63.0 "Q" = 1.7 "Gain" = -9.0}
                    }
                    {
                        type  = builtin
                        name  = eq_band_4
                        label = bq_peaking
                        control = { "Freq" = 100.0 "Q" = 1.7 "Gain" = 3.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_5
                        label = bq_peaking
                        control = { "Freq" = 160.0 "Q" = 1.7 "Gain" = 3.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_6
                        label = bq_peaking
                        control = { "Freq" = 250.0 "Q" = 1.7 "Gain" = 3.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_7
                        label = bq_peaking
                        control = { "Freq" = 400.0 "Q" = 1.7 "Gain" = -5.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_8
                        label = bq_peaking
                        control = { "Freq" = 630.0 "Q" = 1.7 "Gain" = -5.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_9
                        label = bq_peaking
                        control = { "Freq" = 1000.0 "Q" = 1.7 "Gain" = -3.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_10
                        label = bq_peaking
                        control = { "Freq" = 1600.0 "Q" = 1.7 "Gain" = -3.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_11
                        label = bq_peaking
                        control = { "Freq" = 2500.0 "Q" = 1.7 "Gain" = -3.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_12
                        label = bq_peaking
                        control = { "Freq" = 4000.0 "Q" = 1.7 "Gain" = -5.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_13
                        label = bq_peaking
                        control = { "Freq" = 6300.0 "Q" = 1.7 "Gain" = -3.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_14
                        label = bq_peaking
                        control = { "Freq" = 10000.0 "Q" = 1.7 "Gain" = 0.0 }
                    }
                    {
                        type  = builtin
                        name  = eq_band_15
                        label = bq_peaking
                        control = { "Freq" = 16000.0 "Q" = 1.7 "Gain" = 0.0 }
                    }
                    {
                        type = lv2
                        name = compressor
                        label = compressor
                        plugin = "http://lsp-plug.in/plugins/lv2/compressor_mono"
                        control = { "cm" = 1 "cr" = 4.0}
                    }
                ]
                links = [
                    { output = "eq_preamp:Out" input = "eq_band_1:In" }
                    { output = "eq_band_1:Out" input = "eq_band_2:In" }
                    { output = "eq_band_2:Out" input = "eq_band_3:In" }
                    { output = "eq_band_3:Out" input = "eq_band_4:In" }
                    { output = "eq_band_4:Out" input = "eq_band_5:In" }
                    { output = "eq_band_5:Out" input = "eq_band_6:In" }
                    { output = "eq_band_6:Out" input = "eq_band_7:In" }
                    { output = "eq_band_7:Out" input = "eq_band_8:In" }
                    { output = "eq_band_8:Out" input = "eq_band_9:In" }
                    { output = "eq_band_9:Out" input = "eq_band_10:In" }
                    { output = "eq_band_10:Out" input = "eq_band_11:In" }
                    { output = "eq_band_11:Out" input = "eq_band_12:In" }
                    { output = "eq_band_12:Out" input = "eq_band_13:In" }
                    { output = "eq_band_13:Out" input = "eq_band_14:In" }
                    { output = "eq_band_14:Out" input = "eq_band_15:In" }
                    { output = "eq_band_15:Out" input = "compressor:in" }
                ]
                inputs = [ "eq_preamp:In" ]
                outputs = [ "compressor:out" ]
            }
            capture.props = {
                node.name   = "effect_input.eq6"
                media.class = Audio/Sink
                audio.channels = 2
                audio.position=[FL FR]
            }
            playback.props = {
                node.name   = "effect_output.eq6"
                node.passive = true
                audio.channels = 2
                audio.position=[FL FR]
            }
        }
    }
]

 , ,

James_Holden
()

EVO870, «187 Reported_Uncorrect» и обнуление

Форум — Linux-hardware

Стал у меня в начале (склероз: не этого, прошлого) года сбоить EVO870 на терабайт. Заметил по периодическим сбоям на ровном месте, оказывается — ошибки чтения. На нём была только сама ОС и игры, так что заменил без особых потерь. Симптомы простые — в нескольких местах на диске обнаружились локации, откуда ничего не читалось без ошибки. Т.е. никаких этих вот «ssd сбоит, но даёт прочитать хотя бы» — нет, тупо битые файлы, копирование виснет, а «187 Reported_Uncorrect» растёт как на дрожжах. Часть этих зон пришлась на файлы с играми, а некоторые на содержимое /usr. Но поскольку ничего ключевого затронуто не было, то я долго думал, что просто Steam лажает, например.

Если посмотреть SMART, то было примерно так:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   045   045   010    Pre-fail  Always       -       606
  9 Power_On_Hours          0x0032   098   098   000    Old_age   Always       -       9136
 12 Power_Cycle_Count       0x0032   098   098   000    Old_age   Always       -       1995
177 Wear_Leveling_Count     0x0013   099   099   000    Pre-fail  Always       -       3
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   045   045   010    Pre-fail  Always       -       606
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   045   045   010    Pre-fail  Always       -       606
187 Reported_Uncorrect      0x0032   098   098   000    Old_age   Always       -       14609
190 Airflow_Temperature_Cel 0x0032   064   055   000    Old_age   Always       -       36
195 Hardware_ECC_Recovered  0x001a   199   199   000    Old_age   Always       -       14609
199 UDMA_CRC_Error_Count    0x003e   099   099   000    Old_age   Always       -       3
235 Unknown_Attribute       0x0012   099   099   000    Old_age   Always       -       9
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       4293672984


А потом собстсвенно логи последних из этих 14609 ошибок. Примерно так (если что, здесь и выше значения уже после моих сегодняшних экспериментов, на момент начала было где-то 13 тыщ):
Error 14609 occurred at disk power-on lifetime: 9135 hours (380 days + 15 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 90 69 47 40

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  e1 00 0f 00 00 00 40 00      01:22:44.593  IDLE IMMEDIATE
  ef 03 46 00 00 00 40 00      01:22:44.593  SET FEATURES [Set transfer mode]
  ef 02 00 00 00 00 40 00      01:22:44.593  SET FEATURES [Enable write cache]
  e1 00 02 00 00 00 40 00      01:22:44.593  IDLE IMMEDIATE
  ec 00 01 00 00 00 40 00      01:22:44.593  IDENTIFY DEVICE

Error 14608 occurred at disk power-on lifetime: 9135 hours (380 days + 15 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  00 51 01 10 00 00 00  Error:  at LBA = 0x00000010 = 16

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 08 00 90 69 47 00 00      01:22:44.005  READ FPDMA QUEUED
  60 08 00 88 69 47 00 00      01:22:44.005  READ FPDMA QUEUED
  60 08 00 80 69 47 00 00      01:22:44.005  READ FPDMA QUEUED
  60 08 00 78 69 47 00 00      01:22:44.005  READ FPDMA QUEUED
  60 08 00 70 69 47 00 00      01:22:44.005  READ FPDMA QUEUED

Error 14607 occurred at disk power-on lifetime: 9135 hours (380 days + 15 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  00 51 08 00 6a 47 40  Error:  at LBA = 0x00476a00 = 4680192

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 00 00 00 69 47 40 00      01:22:11.833  READ FPDMA QUEUED
  60 00 08 00 68 47 40 01      01:22:11.833  READ FPDMA QUEUED
  60 00 00 00 67 47 40 00      01:22:11.833  READ FPDMA QUEUED
  60 00 00 00 66 47 40 00      01:22:11.833  READ FPDMA QUEUED
  60 00 00 00 65 47 40 00      01:22:11.833  READ FPDMA QUEUED


Погуглил я тогда интернеты, и нашёл, что на серию 870EVO есть жалобы по всему развитому миру. То ли кремний самсунгу завезли грязный, то ли чихнул кто в стерильной зоне, но чипы памяти вышли сбойные, и SSD стали отказывать по моему сценарию.

Ну я его на полочку положил, да и как-то забыл, благо гарантия до 2026. Вдруг что ещё придумаю. Ну вот сегодня решил придумать. Подключил его, стал делать смарт-тесты. И длинный, и короткий завершались досрочно с ошибкой чтения:

Self-test execution status:      ( 121)	The previous self-test completed having
					the read element of the test failed.

...

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed: read failure       80%      9137         10544288
# 2  Extended offline    Completed: read failure       90%      9137         10544288
# 3  Extended offline    Completed: read failure       90%      9136         10544288
# 4  Short offline       Completed: read failure       80%      9136         10544288
# 5  Short offline       Completed: read failure       80%      9136         10544288


Стал смотреть badblocks. Он довольно резво начал выплёвывать номера:
smacker@Ideapad510 ~ $ sudo badblocks -v /dev/sdc
Checking blocks 0 to 976762583
Checking for bad blocks (read-only test): 5272132
5272144
5272145
5272146
5272147
5274296
5274297
5274298
5274299
5274516
5274517
5274518
5274519
5276096
5276097
5276098
5276099
5279436
...

Ну я попробовал «полечить» через hdparm (hdparm --repair-sector 5272144 --yes-i-know-what-i-am-doing /dev/sdc), не преуспел. Он снова стал всплывать. Всё это время значение в поле 187 SMART только росло.

Ну тут я психанул и забил диск терабайтом нулей с помощью dd. И что же? А рост закончился. Я запустил badblocks... и он прошелестел всем диском, и ничего не нашёл. Я запустил тест SMART... и он тоже завершился удачно:

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%      9139         -
# 2  Short offline       Completed without error       00%      9138         -
# 3  Short offline       Completed: read failure       80%      9137         10544288
# 4  Short offline       Completed: read failure       80%      9137         10544288
# 5  Extended offline    Completed: read failure       90%      9137         10544288
# 6  Extended offline    Completed: read failure       90%      9136         10544288
# 7  Short offline       Completed: read failure       80%      9136         10544288
# 8  Short offline       Completed: read failure       80%      9136         10544288


Сейчас статистика застыла на таких значениях:
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   045   045   010    Pre-fail  Always       -       606
  9 Power_On_Hours          0x0032   098   098   000    Old_age   Always       -       9139
 12 Power_Cycle_Count       0x0032   098   098   000    Old_age   Always       -       1996
177 Wear_Leveling_Count     0x0013   099   099   000    Pre-fail  Always       -       4
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   045   045   010    Pre-fail  Always       -       606
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   045   045   010    Pre-fail  Always       -       606
187 Reported_Uncorrect      0x0032   098   098   000    Old_age   Always       -       15972
190 Airflow_Temperature_Cel 0x0032   070   047   000    Old_age   Always       -       30
195 Hardware_ECC_Recovered  0x001a   199   199   000    Old_age   Always       -       15972
199 UDMA_CRC_Error_Count    0x003e   099   099   000    Old_age   Always       -       3
235 Unknown_Attribute       0x0012   099   099   000    Old_age   Always       -       10
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       6251131313


И вроде бы больше ничего не происходит (например, поле 187 не изменилось уже после прохода badblocks по всему диску).

А теперь, уважаемые знатоки — внимание, вопрос: диск выздоровел (перемапил сбойные области, я уж не знаю, т.к. «5 Reallocated_Sector_Ct» застыл на 606), или ему временно полегчало напоследок, чтобы он мог позвать близких к смертному одру?

 870evo, , , ,

Smacker
()

Случилась беда с KRoN73

Новости — Linux.org.ru
Группа Linux.org.ru

KRoN73 RIP

Всё написанное ниже уже неактуально :(

Друзья. Под новогодние праздники (с 29 на 30) случилась ужасная беда со старейшим участником форума - KRoN73.

( Подробности... )

Я никогда не делал подобные обращения, поэтому не знаю, что писать и немного (на самом деле много) растерян.

( Как помочь... )

>>> Оригинальный тред

 ,

shell-script
()

Бинарные сборки Wine

Форум — General

Часто бывает так, что в очередной минорной версии разработчики Wine что-нибудь ломают для одной конкретной программы или игры, при этом все остальные программы работают нормально. И пользователю приходится либо откатываться до предыдущей версии Wine (это возможно не во всех дистрибутивах), ставить PlayOnLinux, что не всем нравится, либо компиллировать самому.

Чтобы предотвратить это неудобство, я с некоторых пор делаю бинарные сборки Wine и выкладываю их для всех желающих. Располагаются они здесь. Когда задумывал это, то вдохновлялся примером PlayOnLinux, которые тоже делают собственные бинарные сборки Wine, но обладают некоторыми недостатками:

  1. Выходят нерегулярно.
  2. Скрипта, который их формирует, я так и не нашел.
  3. Мне нужна еще версия с патчами Staging, а они не для каждой версии их делают.

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

Преимущество бинарных сборок:

  1. Идут практически любом современном дистрибутиве. За абсолютно все дистрибутивы любой давности ручаться не буду, сам проверял только на паре дистрибутивов, поэтому хотелось бы чтобы вы их протестировали и подтвердили или опровергли это утверждение.
  2. Для использования не требуется ничего, установленных зависимостей для Wine. Сам системный Wine при этом даже необязателен.
  3. Можно иметь хоть с десяток разных версий Wine для разных программ и с легкостью переключаться между ними без каких-то переустановок. Чтобы установить бинарную сборку, достаточно лишь ее распаковать в любой каталог.

В процессе создания бинарных сборок я целенаправленно не применял никаких сторонних патчей. В версии с патчами Staging присутствует только набор патчей из Staging и больше ничего. В ванильной версии не применяются никакие патчи. Даже несмотря на то, что начиная с какой-то версии из ветки 1.9.x Wine стало невозможно скомпиллировать с помощью gcc 5.3.0 и патч довольно оперативно написали, я предпочел откатиться до gcc 4.8.5, чем применять этот патч. Сомневающимся могу порекомендовать скачать мой скрипт, собрать Wine самому с помощью gcc 4.8.5 и после чего сравнить свой хэш получившегося архива с моим.

Для чего эта тема? Во-первых, для информации. Может кому-нибудь пригодятся мои бинарные сборки, мне будет приятно. И еще протестируйте их пожалуйста на своих разных дистрибутивах разных версий, чтобы посмотреть, действительно ли они дистронезависимые или нет?

И еще раз ссылки:

  1. Сайт с бинарными сборками Wine
  2. Скрипт, по которому они формируются

P.S. Перед использованием скрипта отредактируйте его и измените содержимое переменных WORKDIR (каталог, в котором будет компиллироваться Wine) и GCC_VERSION (версия GCC, которая применяется для сборки) в соответствии со своими предпочтениями. А то там сейчас стоят мои значения.

Обновлено 04.02.17:
В связи с тем, что после выхода Wine 2.0 сменилась нумерация промежуточных версий (промежуточная версия теперь 2.1 и все исходники будут лежать в папке 2.x и еще они сменили формат архива), то скрипт для сборки разделен. Скрипт wine_build_1.9.x-2.0.sh - для сборки всех предыдущих версий Wine до версии 2.0 включительно и wine_build-2.x.sh - для всех версий после 2.0. Да, это неудобно. Но это лучше, чем если бы в одном скрипте писать кучу костылей по парсингу мажорной версии, минорной версии и их какого-то совмещения. Размер скрипта значительно увеличился бы, он стал бы трудночитаемым и вряд ли это решение было бы совсем безглючным.

Обновлено 25.10.18:
Я закрываю формирование бинарных сборок в связи с тем, что Wine в последнее время оброс сторонними патчсетами, вроде esync, да и самому мне это все надоело. К тому же появился Steam Play. Все предыдущие сборки вы можете скачать отсюда, но новые формироваться вряд ли будут. Там же вы найдете скрипт, с помощью которого можно будет сделать свою собственную сборку.

Обновлено 24.10.20:
В силу некоторых причин пришлось снова расчехлить мой скрипт для формирования бинарных сборок. Только сами бинарные сборки я выкладывать не буду: мне и влом, и места на хостинге жалко, да и проблемы совместимости с разными версиями glibc в разных дистрибутивах.
Вместо этого я адаптировал сам скрипт согласно современным реалиям и выложил его на GitHub - пользуйтесь, если хотите. Скрипт пришлось практически полностью переписать, убрать костыли, а заодно и поддержку сборки из git. Для сборки из git надо писать отдельный скрипт, поскольку там другие пути и сценарии распаковки и сборки. Может займусь этим когда-нибудь.

 ,

Rinaldus
()

Midori - можно ли переместить панель с табами вниз?

Форум — General

Всем привет

Присматриваюсь к Midori browser. Практически всё устраивает. Только вот я привык, что панель с табами внизу. Это можно как-то реализовать?

Да, и есть ли там какой-то режим тонкой настройки типа opera:config (в firefox тоже что-то подобное было).

 

Kroz
()

Debian, игнор репозитория. Каковы причины?

Форум — Desktop

При обновлении выдало: Игнор http://ftp.se.debian.org jessie InRelease А ведь это не какой-нибудь второстепенный репозиторий. И он почему-то стал игнорироваться. Ничего не менял и ничего не устанавливал. За что отвечает этот репозиторий ? И почему он начал игнорироваться?

Debian 8.2 (jessie)

 , , ,

spellman
()

Что вы используете для защиты своего сёрфинга в Интернете?

Голосования — Голосования

Вот решил подумать об анонимном, удобном и безопасном сёрфинге и узнать чем ЛОРовцы пользуются...

  1. Плагин AdBlock (или аналоги) 754 (67%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. TOR 356 (32%)

    *******************************************************************************************************************************************************

  3. Режим анонимности в браузере 356 (32%)

    *******************************************************************************************************************************************************

  4. Использую несколько браузеров для разных целей 298 (26%)

    ******************************************************************************************************************************

  5. Плагины NoScript (ScriptSafe или аналоги) 266 (24%)

    ****************************************************************************************************************

  6. HTTPS only 254 (23%)

    ***********************************************************************************************************

  7. VPN 226 (20%)

    ***********************************************************************************************

  8. Мне это не нужно, ничем не пользуюсь 226 (20%)

    ***********************************************************************************************

  9. Я везде анонимен и не использую соц.сети 128 (11%)

    ******************************************************

  10. Плагин Privacy Badger 69 (6%)

    *****************************

  11. Для личного общение использую GPG 66 (6%)

    ****************************

  12. Полностью блокирую куки 44 (4%)

    ******************

Всего голосов: 3043, всего проголосовавших: 1127

 , ,

Promusik
()

FreshPlayerPlugin — PepperFlash в Firefox

Форум — Development

Flash плеер всё заменяют и заменяют, но никак не заменят полностью. Новые и сверхновые фичи браузеров это замечательно, но Flash бывает всё ещё нужен. К сожалению, доступная NPAPI браузерам версия застыла на 11.2, а новые версии выходят только в составе Chrome. Поэтому я делаю адаптер, который сможет быть посредником между PPAPI плагином и NPAPI браузером. Это такая штука, которая позволит использовать свежий Flash в Firefox, Opera и других браузерах, в которых работают плагины.

https://github.com/i-rinat/freshplayerplugin

 , , , , ppapi

i-rinat
()

Меня окончательно и бесповоротно достал 12309

Форум — Desktop

Я уже писал о том, что на моем компьютере периодически возникает 12309. Многие не верят, ибо у них «всё работает». Если у вас всё работает отлично, и это всё, что вы хотите сказать - пожалуйста, не говорите ничего.

У меня тоже всё работает. До поры до времени. Как только потребление ОЗУ вырастает до 70% и более, а CPU непрерывно загружен (хоть и не до упора), то любая, даже самая незначительная дисковая операция занимает достаточно много времени и приводит к тормозам ВСЕГО.

Буквально только что (т.е. за 20 минут до написания этого сообщения) игрался я в CSGO от нечего делать. Посреди игры (уже минут 10 прошло) неведомое нечто начинает усиленно обращаться к винчестеру. Неведомое нечто не может быть чем-то очевидным, ибо всевозможные обвновления/синхронизации/и т.д. я поотключал, а кроме steam и самой игры ничего запущено не было. В результате начинаются жесткие фризы, а через несколько секунд компьютер превращается в состояние овоща - не реагирует ни на что, картинка на мониторе замерла, а звуковая карта зацикленно играет короткий семпл. Только reset.

В этот момент у меня было была одна мысль в голове: «Что, б****? Что за херня?»
А всё дело в том, что подобное состояние системы я последний раз наблюдал на венде несколько лет назад, да и то - на чужом компьютере. А теперь вендоподобные проблемы на моем собственном пк!

Я не знаю, 12309 ли это, либо другой баг, связанный с дисковой производительностью во время заполненного ОЗУ... меня это уже не волнует.

Хочу спросить совета: что делать?

Обновить пк не вариант, денег в последнее время не хватает, тем более что у меня в стране сами знаете что.

Из возможных вариантов:

1) Выбросить linux и пересесть на винду. (работать в винде для меня просто тошнотворно, не вариант)
2) Доставить в дуалбут винду, играть исключительно в винде, всё остальное - в linux (сам факт дуалбута будет мусолить мою душу, а в снах я буду видеть себя типичным школьником, который хвастается свеженькой ubuntu)
3) Заменить шедулер на BFS. (поможет ли?)
4) Просто обновить ядро на более свежее (у меня стоит 3.13.0-24-generic - стоковое для linux mint 17. Опять же - поможет ли? Думаю нет, т.к. разрабы ядра давно пометили проблему как «решенную»)
5) Заменить дистрибутив linux на что-то сверхминималистичное - чистый Xorg, драйвера на видокарту, steam, а нормальное пользование системой вместе с повседневными задачами перенести в freebsd. (несмотря на то, что freebsd я уже научился готовить до вменяемого состояния, в отличие от pcbsd, лол но там всё еще есть некоторые мелкие неприятности, которые надо решать. Да и опять таки, дуалбут, мать его за ногу)
6) Забить на игры (чем развлекаться? пить пивко во дворе? я не пью)
7) Ваш вариант?

P.S. Как мне теперь смотреть в глаза людям, которым я советовал linux? А тем, которым ставил? Что я за дурак был тогда...
P.P.S. Да, я уже думал заменить home на удаленный каталог средствами ufs. Но это скорее удобный костыль, да и на всю систему ufs не поставить...

 ,

reprimand
()

apulse

Форум — Development

Everyone! Listen up! Today... today...

$ apulse <program-name> [program parameters]

https://github.com/i-rinat/apulse — эмуляция PulseAudio. Когда приложение пытается загрузить libpulse.so, ему подсовывают её версию от apulse, в которой реализована часть функций, достаточная, чтобы запустить Skype и некоторый другой софт.

 ,

i-rinat
()

дайте мне модератора

Форум — Linux-org-ru

я буду удалять тупняк.

dikiy
()

Спаренные телефоны и ADSL

Форум — General

Если ошибся разделом - извините.
Добрый вечер.

Когда-то давно моя родственница подключала интернет и, как ей тогда объяснили, у нее с соседкой спаренные телефоны, поэтому у них будет один роутер на двоих. И этот роутер (D-Link DSL-2640U) стоит у соседки, потому что она подключила интернет раньше. На деле этот роутер на троих, у каждого свой логин/пароль, через который они подключаются к сети, как я понимаю, роутер работает в режиме моста. Но девайсов с вай-фаем помимо ноутбука в квартире много, поэтому роутер был перенастроен на pppoe с ее логином и паролем. После чего, соответственно, люди, у кого есть пароль к вай-фаю роутера, имеют доступ к ее интернету, пока не подключатся со своим логином/паролем. Данный роутер находится у соседки снизу, из-за чего сигнал довольно слабый и ловится вообще в ограниченном пространстве, ну и скорость, само-собой не та, которая должна быть. И на последок — у соседки беда с головой в последнее время — куда-нибудь уезжает и любит выключать из розетки роутер, мол, чтобы свет не жрал... Прошлым летом на море так свалила.

Родственницу совокупность всего этого подзадолбала, захотела роутер к себе в квартиру. А ей говорят, что нельзя никак вообще, нужен отдельный номер, а свободных ячеек нет. Я не особо понимаю принципа спаренных телефонов, но неужели нет вариантов? Например, засунуть патчкорд в роутер соседки и протянуть его на верхний этаж, где уже засунуть в свой роутер — не катит? (от выключения роутера это не спасет, но все же лучше, чем текущее положение вещей) Мне кажется, им просто лень заморачиваться. Провайдер — монополист.

Собственно, есть ли какой-нибудь аргумент, которым можно ткнуть в ТП, чтобы они зашевелились?

 ,

emissar
()

Как посмотреть баланс при использовании 3г-свистка

Форум — General

Подскажите, как узнать баланс на номере, при пользовании 3г-свистка, под тематической ОС? Т.е в оффтопике есть софтинка. А как быть с линуксами? ПС: Проблема в том что данный девайс стоит в глухоперди у бабули, соотв в компе с ГНУ/Линукс дистрибутивом. Собственно бабуля и дед, !внезапно!, отценили приемущества интернета, над «ящиком» и «триколором где не интересно» . Собственно хотят знать скока чего осталось(деньги/траффик/ и пр.

 ,

Alexonline
()