To mold or not to mold Gentoo?
Собственно сам вопрос, а пробовал ли кто-нибудь перевести Дженту на sys-devel/mold и на сколько ощутимо было ускорение при обновлении системы, если таковое было?
Собственно сам вопрос, а пробовал ли кто-нибудь перевести Дженту на sys-devel/mold и на сколько ощутимо было ускорение при обновлении системы, если таковое было?
День добрый.
Вот такой вопрос возник. Есть таблица item с полем jsonb и в том жысоне есть такая запись:
{
"time":{
"start":"2022-10-12T10:00:00Z",
"end":"2022-10-12T10:05:00Z",
...
}
}
Хочется вытащить в один select эти поля и запихать в таблицу вида (id, time_t, time_v), где id это id записи в таблице item, time_t это тип времени («start», «end», etc ), ну а time_v это само значение.
Может кто-нибудь подсказать как правильно это сделать?
Я попытался сделать через jsonb_each_text
и jsonb_extract_path
.
И в результате запроса select jsonb_each_text(jsonb_extract_path( item.data, 'time' )) from item
я получаю нечто вида
"(end,1998-10-13T06:58:33Z)"
"(gen,2022-05-16T09:08:57Z)"
"(start,1998-10-13T06:51:55Z)"
"(end,1993-08-25T21:39:23Z)"
В доке по jsonb_each_text
советуют делать select * from jsonb_each_text()
, но как тут это сделать чтобы получить нормальный результат с полями, я что-то не понимаю.
В пятнадцатом шланге появился флаг unqualified-std-cast-call включённый по умолчанию и теперь то что раньше собиралось, падает с вклюённым по умолчанию -Werror,-Wunqualified-std-cast-call
.
Вопрос, что это такое и как его лечить, т.к. я походу совсем потерялся в современных плюсах с его темплейтами.
Вот на какой код ругается:
template<typename... types_t>
error call(
rsComm_t* _comm,
const std::string& _operation_name,
irods::first_class_object_ptr _fco,
types_t... _t)
{
using namespace std;
...
return adapted_fcn( ctx, &out_param, forward<types_t>(_t)... ); // << error: unqualified call to 'std::forward'
Где
using adapted_func_type = std::function<error(plugin_context&, std::string*, types_t...)>;
adapted_func_type adapted_fcn = [this, &_operation_name](plugin_context& _ctx, std::string* _out_param, types_t... _t) {
Падает всё сообщением:
In file included from /var/calculate/tmp/portage/net-misc/irods-4.2.11-r6/work/irods-4.2.11/lib/core/src/clientLogin.cpp:6:
In file included from /var/calculate/tmp/portage/net-misc/irods-4.2.11-r6/work/irods-4.2.11/lib/core/include/irods_auth_plugin.hpp:5:
In file included from /var/calculate/tmp/portage/net-misc/irods-4.2.11-r6/work/irods-4.2.11/lib/core/include/irods_auth_types.hpp:9:
/var/calculate/tmp/portage/net-misc/irods-4.2.11-r6/work/irods-4.2.11/lib/core/include/irods_plugin_base.hpp:284:54: error: unqualified call to 'std::forward' [-Werror,-Wunqualified-std-cast-call]
return adapted_fcn( ctx, &out_param, forward<types_t>(_t)... );
^
std::
/var/calculate/tmp/portage/net-misc/irods-4.2.11-r6/work/irods-4.2.11/lib/core/src/clientLogin.cpp:284:24: note: in instantiation of function template specialization 'irods::plugin_base::call<RcComm *, const char *>' requested here
ret = auth_plugin->call <rcComm_t*, const char* > ( NULL, irods::AUTH_CLIENT_START, auth_obj, _comm, _context );
^
In file included from /var/calculate/tmp/portage/net-misc/irods-4.2.11-r6/work/irods-4.2.11/lib/core/src/clientLogin.cpp:6:
In file included from /var/calculate/tmp/portage/net-misc/irods-4.2.11-r6/work/irods-4.2.11/lib/core/include/irods_auth_plugin.hpp:5:
In file included from /var/calculate/tmp/portage/net-misc/irods-4.2.11-r6/work/irods-4.2.11/lib/core/include/irods_auth_types.hpp:9:
/var/calculate/tmp/portage/net-misc/irods-4.2.11-r6/work/irods-4.2.11/lib/core/include/irods_plugin_base.hpp:284:54: error: unqualified call to 'std::forward' [-Werror,-Wunqualified-std-cast-call]
return adapted_fcn( ctx, &out_param, forward<types_t>(_t)... );
^
std::
/var/calculate/tmp/portage/net-misc/irods-4.2.11-r6/work/irods-4.2.11/lib/core/include/irods_plugin_base.hpp:284:54: error: unqualified call to 'std::forward' [-Werror,-Wunqualified-std-cast-call]
return adapted_fcn( ctx, &out_param, forward<types_t>(_t)... );
^
std::
/var/calculate/tmp/portage/net-misc/irods-4.2.11-r6/work/irods-4.2.11/lib/core/src/clientLogin.cpp:292:24: note: in instantiation of function template specialization 'irods::plugin_base::call<RcComm *>' requested here
ret = auth_plugin->call <rcComm_t* > ( NULL, irods::AUTH_CLIENT_AUTH_REQUEST, auth_obj, _comm );
^
3 errors generated.
Заметил, что в FF на любых страницах не встраиваются изображения с userapi.com. Хотя, если открыть в новой вкладке, то всё нормально загружается. Это у меня так или это FF глючит?
Было git-дерево A0-B0-C0-D0-E0-...
Решил сделать его ребейз с корня со слиянием коммитов и в итоге получилось совершенно новое дерево A1-B1-D1-E1-...
.
Так вот, в репозитории хранится оба дерева. Тот же qgit показывает всю репу как A0-B0-...-Z0 A1-B1-...-Z1
Вопрос, как удалить старое дерево в репозитории без его пересоздания?
Пытаюсь создать файловую систему и тут меня посылают нафиг:
mkfs.ext4 /dev/mapper/data3
mke2fs 1.45.5 (07-Jan-2020)
Invalid filesystem option set: fast_commit,has_journal,extent,huge_file,flex_bg,metadata_csum,64bit,dir_nlink,extra_isize
Что ей не нравится?
gentoo старая и не обновлялась уже года два и не может обновиться, а переустанавливать нет сейчас времени.
После обновы до 11.2 столкнулся с тем, что следующий код перестал компилироваться:
#include <iostream>
using namespace std;
#pragma pack(1)
struct RGBA {
union {
uint32_t word;
struct {
uint8_t r;
uint8_t g;
uint8_t b;
uint8_t a;
} rgba;
};
};
#pragma pack()
const RGBA RGBA_WHITE = { .rgba = { 0xff, 0xff, 0xff, 0xff } };
const RGBA RGBA_RED = { .rgba = { 0xff, 0x00, 0x00, 0xff } };
const RGBA RGBA_GREEN = { .rgba = { 0x00, 0xff, 0x00, 0xff } };
const RGBA RGBA_BLUE = { .rgba = { 0x00, 0x00, 0xff, 0xff } };
const RGBA RGBA_BLACK = { .rgba = { 0x00, 0x00, 0x00, 0xff } };
const RGBA RGBA_GREY = { .rgba = { 0x80, 0x80, 0x80, 0xff } };
const RGBA RGBA_NONE = { .rgba = { 0x00, 0x00, 0x00, 0x00 } };
int main(){
auto color = RGBA_WHITE;
cout << color.word << endl;
color = RGBA_RED;
cout << color.word << endl;
return 0;
}
gcc 11.1 и ранее нормально компилируют, gcc 11.2 и trunk выдают ошибку:
source>:18:62: error: too many initializers for 'RGBA::<unnamed union>'
18 | const RGBA RGBA_WHITE = { .rgba = { 0xff, 0xff, 0xff, 0xff } };
| ^
<source>:19:62: error: too many initializers for 'RGBA::<unnamed union>'
19 | const RGBA RGBA_RED = { .rgba = { 0xff, 0x00, 0x00, 0xff } };
| ^
Есть некая таблица хранящая JSONB в котором есть примерно следующие значения:
{
"time": {
"start": "2020-09-11T21:31:04Z"
"end": "2020-09-11T21:44:10Z",
}
}
И хочется их проиндексировать для ускорения поиска.
Но вот дело в том, что в строке хранится по сути «timestamp with timezone», а на него постгря ругается:
CREATE INDEX gen_time_index ON item (((data->'time'->>'start')::timestamp));
ERROR: ОШИБКА: функции в индексном выражении должны быть помечены как IMMUTABLE
SQL state: 42P17
Как бы это можно было бы обойти?
Да, можно конечно завести отдельную таблицу/поле с типом timestamp и триггером заполнять. Но хотелось бы без лишних телодвижений.
Есть машина с LSI контроллером(9361-8i) к которому на внешние SAS-разъёмы(SFF-8087 to SFF-8088 адаптер) подключено два ящика с дисками и на них развёрнуты рейды(на каждой корзине свой).
Необходимо одну корзину перекинуть на другой LSI контроллер(LSI 9380-8e) на другой машине без потерь данных.
Вопрос, как это сделать корректно? Если просто переткнуть кабель, карточка корректно подхватит или необходимы какие-то телодвижения?
Про storcli /cX get config file=file_name
знаю. Но эта команда сохраняет весь конфиг карточки, а не отдельных элементов.
Есть банальная таблица для хранения древовидной структуры:
CREATE TABLE test (
tid serial PRIMARY KEY,
pid INTEGER,
name VARCHAR NOT NULL
-- на самом деле тип name это домен с проверкой, но в данном случае это не важно КМК
-- да и constraint'ы опустим.
);
И есть две задачи:
n1.n2.n3.n4
n1.n2.n3.n4
вернуть запись с путём n1.n2
т.к. у n1.n2
нет потомков.Покопавшись с WITH RECURSIVE
для первой задачи получилось такое себе решение:
WITH RECURSIVE r1 as (
SELECT t1.tid, t1.pid, t1.name, cast( t1.name as text ) as path
FROM test t1 WHERE pid is null and t1.name = split_part('n1.n2.n3.n4', '.', 1)
UNION
SELECT t2.tid, t2.pid, t2.name, r1.path || '.'|| t2.name as path
FROM test t2
join r1 on t2.pid = r1.id
)
select * from r1 where path = 'n1.n2.n3.n4';
Хотя меня несколько напрягает сравнение строк, но я не уверен как сделать быстрее.
И по второму вопросу не могу докумекать, как всё это реализовать. Может кто-нибудь чего подскажет?
Если раньше после успешного выполнения find_package появлялось множество переменных вида <package_name>_...
, как например у libarchive
:
-- LIBARCHIVE_CFLAGS=
-- LIBARCHIVE_CFLAGS_I=
-- LIBARCHIVE_CFLAGS_OTHER=
-- LIBARCHIVE_FOUND=1
-- LIBARCHIVE_INCLUDEDIR=/usr/include
-- LIBARCHIVE_INCLUDE_DIRS=
-- LIBARCHIVE_LDFLAGS=-larchive
-- LIBARCHIVE_LDFLAGS_OTHER=
-- LIBARCHIVE_LIBDIR=/usr/lib64
-- LIBARCHIVE_LIBRARIES=archive
-- LIBARCHIVE_LIBRARY_DIRS=
-- LIBARCHIVE_LIBS=
-- LIBARCHIVE_LIBS_L=
-- LIBARCHIVE_LIBS_OTHER=
-- LIBARCHIVE_LIBS_PATHS=
-- LIBARCHIVE_LINK_LIBRARIES=/usr/lib64/libarchive.so
-- LIBARCHIVE_MODULE_NAME=libarchive
-- LIBARCHIVE_PREFIX=/usr
-- LIBARCHIVE_STATIC_CFLAGS=
-- LIBARCHIVE_STATIC_CFLAGS_I=
-- LIBARCHIVE_STATIC_CFLAGS_OTHER=
-- LIBARCHIVE_STATIC_INCLUDE_DIRS=
-- LIBARCHIVE_STATIC_LDFLAGS=-larchive;-lcrypto;-lacl;-llzo2;-llzma;-lzstd;-llz4;-lbz2;-lz;-lxml2
-- LIBARCHIVE_STATIC_LDFLAGS_OTHER=
-- LIBARCHIVE_STATIC_LIBDIR=
-- LIBARCHIVE_STATIC_LIBRARIES=archive;crypto;acl;lzo2;lzma;zstd;lz4;bz2;z;xml2
-- LIBARCHIVE_STATIC_LIBRARY_DIRS=
-- LIBARCHIVE_STATIC_LIBS=
-- LIBARCHIVE_STATIC_LIBS_L=
-- LIBARCHIVE_STATIC_LIBS_OTHER=
-- LIBARCHIVE_STATIC_LIBS_PATHS=
-- LIBARCHIVE_VERSION=3.5.1
-- LIBARCHIVE_libarchive_INCLUDEDIR=
-- LIBARCHIVE_libarchive_LIBDIR=
-- LIBARCHIVE_libarchive_PREFIX=
-- LIBARCHIVE_libarchive_VERSION=
Т.е. делаешь target_link_libraries(target ${LIBARCHIVE_LIBRARIES})
или там target_include_directories
и вроде всё понятно что откуда берётся с чем линкуется.
Теперь же многие переходят на -config.cmake
и там вообще толком никаких переменных не объявляется. Как например у libfmt
:
-- fmt_CONFIG=/usr/lib64/cmake/fmt/fmt-config.cmake
-- fmt_CONSIDERED_CONFIGS=/usr/lib64/cmake/fmt/fmt-config.cmake
-- fmt_CONSIDERED_VERSIONS=7.0.3
-- fmt_DIR=/usr/lib64/cmake/fmt
-- fmt_FOUND=1
-- fmt_VERSION=7.0.3
-- fmt_VERSION_COUNT=3
-- fmt_VERSION_MAJOR=7
-- fmt_VERSION_MINOR=0
-- fmt_VERSION_PATCH=3
-- fmt_VERSION_TWEAK=0
Т.е. ни _INCLUDEDIR
, ни _LIBRARIES
нет.
И вот как с этим работать?
Как мне линковать мой таргет с libfmt?
Кто-нибудь может подсказать?
Собственно код:
#include <string>
#include <iostream>
#include <sstream>
#include <algorithm>
using namespace std;
int main(){
string src("01234567890123456789");
string dst1;
dst1.reserve(6);
string dst2;
dst2.reserve(6);
istringstream is(src);
copy_n( std::istreambuf_iterator<char>( is ), 6, std::back_inserter( dst1 ) );
cout << dst1 << endl;
copy_n( std::istreambuf_iterator<char>( is ), 6, std::back_inserter( dst2 ) );
cout << dst2 << endl;
}
Вывод:
$ g++ t.cpp && ./a.out
012345
567890
Хотя по идее должно быть:
012345
678901
Или я чего-то не понимаю?
ЗЫ:
$ g++ -v
Используются внутренние спецификации.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/9.3.0/lto-wrapper
Целевая архитектура: x86_64-pc-linux-gnu
Параметры конфигурации: /var/calculate/tmp/portage/sys-devel/gcc-9.3.0-r1/work/gcc-9.3.0/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/9.3.0 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/9.3.0 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/9.3.0/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/9.3.0/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/g++-v9 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/9.3.0/python --enable-languages=c,c++,objc,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 9.3.0-r1 p3' --disable-esp --enable-libstdcxx-time --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-fixed-point --enable-targets=all --enable-libgomp --disable-libmudflap --disable-libssp --disable-libada --disable-systemtap --enable-vtable-verify --enable-lto --with-isl --disable-isl-version-check --enable-default-pie --enable-default-ssp
Модель многопоточности: posix
gcc версия 9.3.0 (Gentoo 9.3.0-r1 p3)
Тут с переходом на свежий pqxx вылезла такая проблема.
Если раньше для новых типов в string_traits<T>
они требовали реализацию метода string to_sting()
и мне было достаточно банального ostringstream,
то сейчас они требуют реализацию static zview to_buf (char *begin, char *end, TYPE const &value)
, т.е. требуется возвращать string_view для заданного буфера.
В общем вопрос простой, как можно использовать ostream для внешнего буфера, используя только библиотечные классы? При этом нельзя переполнять буфер и переалоцировать его тоже.
Пока я так понял, что придётся реализовать свoй basic_streambuf. Т.к. стандартный basic_stringbuf, во-первых, хочет string, а, во-вторых, буфер переданный в string который передадут в ostringstream может быть переаллоцирован.
UPD. Впрочем как оказалось всё достаточно элементарно и давно есть в примерах на cppreference.
template<typename _CharT, class _Traits = char_traits<_CharT>> class my_ostreambuf: public basic_streambuf<_CharT, _Traits> {
private:
protected:
my_ostreambuf() {
}
public:
using _Base = basic_streambuf<_CharT, _Traits>;
using char_type = typename _Base::char_type;
my_ostreambuf( char_type* begin, char_type* end ) {
_Base::setp(begin, end);
}
basic_string_view<_CharT, _Traits> get_view() {
return basic_string_view<_CharT, _Traits>( _Base::pbase(), _Base::pptr() - _Base::pbase() );
}
virtual ~my_ostreambuf() = default;
};
typedef my_ostreambuf<char> char_ostreambuf;
Словил тут после обновления Gentoo странную вещь при загрузке драйвера nvidia
[498966.989501] nvidia: version magic '4.19.146-gentoo SMP mod_unload ' should be '4.19.146-gentoo SMP preempt mod_unload '
Версия x11-drivers/nvidia-drivers 435.21-r6
В ядре соответственно preempt включен:
# uname -a
Linux japet 4.19.146-gentoo #6 SMP PREEMPT Thu Oct 22 08:30:10 UTC 2020 x86_64 Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz GenuineIntel GNU/Linux
Более новое не ставлю, т.к. GeForce GT 740M в 440-х и выше вроде не поддерживается а старые nvidia драйвера под более свежими ядрами не собираются.
Собственно, кто неправильно выставляет kernel magic и как это побороть?
Обмазываюсь тут 17-ми плюсами и захотелось поизвращаться.
Есть вот такой пример:
#include <iostream>
#include <variant>
#include <functional>
using namespace std;
int main( int argc, const char* argv[] ) {
using variant1 = variant< function<void()>, function<void( optional< string > )> >;
variant1 t1,t2;
t1 = []() {
cout << "t1" << endl;
};
t2 = []( optional<string> v ) {
cout << v.value_or( "none!" ) << endl;
};
using variant2 = variant< function<void()>, function<void( optional< string > )>, function< void( string ) > >;
variant2 t3,t4,t5;
t3 = []() {
cout << "t1" << endl;
};
// Вот тут ошибка компиляции
t4 = []( optional<string> v ) {
cout << v.value_or( "none!" ) << endl;
};
t5 = []( string v ){
cout << v << endl;
}
return 0;
}
И получаю следующую ошибку:
/home/user/tmp/1/test1.cpp:28:2: error: no match for ‘operator=’ (operand types are ‘variant2’ {aka ‘std::variant<std::function<void()>, std::function<void(std::optional<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)>, std::function<void(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)> >’} and ‘main(int, const char**)::<lambda(std::optional<std::__cxx11::basic_string<char> >)>’)
Понятно, что проблема решается прямым указанием типа:
t4 = ( function<void( optional< string > )> ) []( optional<string> v ) {
cout << v.value_or( "none!" ) << endl;
};
Но мне интересно, в чём тут грабли.
Т.е. по каким-то причинам компилятор перестал распознавать сигнатуру? Путает optional<string>
и string
?
Или что тут такое может быть?
Посоветуйте subj?
Надо что-то, что может работать со слоями и примитивами.
Т.е. наложить один битмап на другой с использованием маски/альфаканала/етц и нарисовать сверху примитивы и текст.
Желательно на C++ и с возможностью статической линковки.
Ну и сохранить это всё в один зи форматов по выбору, png/jpeg/tiff/etc. Всё это должно работать без каких либо гуёв и 3d ускорения.
GTK и Qt мне кажутся несколько оверкилл.
Да, ImageMagick сейчас используется, но без матов о некоторых его особенностях высказаться не могу.
Есть два стула… т.е. две таблицы.
CREATE TABLE scheme
(
id integer NOT NULL,
command character varying(1024),
CONSTRAINT scheme_pkey PRIMARY KEY (id)
)
и
CREATE TABLE task
(
id integer NOT NULL,
scheme_id integer NOT NULL,
CONSTRAINT task_pkey PRIMARY KEY (id),
CONSTRAINT task_to_scheme_fk FOREIGN KEY (scheme_id)
REFERENCES scheme (id) MATCH SIMPLE
ON UPDATE CASCADE
ON DELETE CASCADE
DEFERRABLE
)
К ним есть два JPA-класса.
@Entity
public class Scheme {
@Id
@GeneratedValue
private Integer id;
@Basic
private String command;
}
и
@Entity
public class Task {
@Id
@GeneratedValue
private Integer id;
@ManyToOne( optional = false )
@JoinColumn( name = "scheme_id" )
private Scheme scheme;
}
И мне надо посчитать сколько task у каждой scheme. В том же sql это делается просто:
SELECT scheme.id AS scm, count(task.id) AS cnt
FROM scheme
LEFT OUTER JOIN task on task.scheme_id = scheme.id
GROUP BY scheme.id
ORDER BY cnt ASC, scm ASC;
И вывод:
11 "0"
1 "4"
2 "4"
4 "4"
6 "4"
Вопрос, как сделать тот же запрос на JPQL? Т.к. что-то в лоб повторить запрос не вытанцовывается, все варианты выдают ошибку на этапе компиляции запроса.
Пытаюсь написать простого отправителя сообщений для xmpp. Решил воспользоваться gloox. Так вот, оказалось, что без ручного засыпания сообщение теряется. Вопрос, если кто знает, как в gloox дождаться отправки сообщения и только потом выйти?
Пример кода:
class MyMessenger: public ConnectionListener {
public:
MyMessenger(): client( 0 ) {}
~MyMessenger() {
if( client ) delete( client );
}
virtual void onConnect() override {
JID to(DST_JID);
MessageSession* session = new MessageSession( client, to );
session->send("test message");
// вот без этого сообщение теряется.
std::this_thread::sleep_for(std::chrono::milliseconds(500));
client->disposeMessageSession(session);
client->disconnect();
};
virtual void onDisconnect( ConnectionError ce ) override {
if( ce == ConnAuthenticationFailed )
cerr << "Auth failed. Reason: " << client->authError() << endl;
}
virtual bool onTLSConnect( const CertInfo& ) override {
return true;
}
void start() {
JID jid( USER_JID );
client = new Client( jid, USER_PASS );
client->setServer( SERVER );
client->setPort( PORT );
client->setTls( TLSRequired );
client->registerConnectionListener( this );
if( client->connect( false ) ) {
ConnectionError ce = ConnNoError;
while( ce == ConnNoError ) {
ce = client->recv();
}
cerr << "ce: " << ce << endl;
}
}
private:
Client* client;
};
Собственно сабж.
Поставил в Gentoo snmptrapd с таким конфигом:
doNotLogTraps yes
traphandle default /opt/bin/snmp-trap-handle
disableAuthorization yes
#!/bin/bash
read HOST
read IP
echo "${HOST}" "${IP}" >> /opt/bin/test.out
snmptrap -v 1 -c sys-info 127.0.0.1 .1.3.6.1 localhost 6 17 '' .1.3.6.1 s "Test trap 0"
$ eix net-analyzer/net-snmp
[I] net-analyzer/net-snmp
Available versions: 5.7.3-r5^t (~)5.7.3-r6^t (~)5.7.3_p3-r1^t (~)5.8-r1(0/35)^t **99999999(0/35)^t {X bzip2 doc elf ipv6 libressl lm_sensors mfd-rewrites minimal mysql netlink pci perl python rpm selinux smux ssl tcpd ucd-compat zlib PYTHON_TARGETS="python2_7"}
Installed versions: 5.8-r1(0/35)^t(06:50:56 PM 02/21/2019)(bzip2 ipv6 lm_sensors ssl tcpd zlib -X -doc -elf -libressl -mfd-rewrites -minimal -mysql -netlink -pci -perl -python -rpm -selinux -smux -ucd-compat PYTHON_TARGETS="python2_7")
Homepage: http://www.net-snmp.org/
Description: Software for generating and retrieving SNMP data
Make sure to remove the -c /etc/snmp/snmptrapd.conf part, otherwise you will receive TRAP twice, as snmptrapd' is compiled with the default configuration file path being already set to '/etc/snmp/snmptrapd.conf'.
Собственно subj.
Пытаюсь настроить на Gentoo lighttpd в chroot, но столкнулся с проблемой при запуске:
/usr/sbin/lighttpd-angel -D -f /etc/lighttpd/lighttpd.new.conf
2018-04-05 05:24:04: (log.c.171) opening errorlog '/www/log/error.log' failed: Permission denied
lighttpd-angel.c.141: child (pid=1884) exited normally with exitcode: 255
ls -l /chroot/lighttpd/www
total 12
drwxrwxr-x 2 lighttpd lighttpd 4096 Apr 5 05:08 htdocs
drwxrwxr-x 2 lighttpd lighttpd 4096 Apr 5 04:52 lib
drwxrwxr-x 2 lighttpd lighttpd 4096 Apr 5 04:52 log
cat /etc/lighttpd/lighttpd.new.conf
###############################################################################
var.basedir = "/www"
var.logdir = var.basedir + "/log"
var.statedir = var.basedir + "/lib"
server.modules = (
"mod_access",
"mod_accesslog"
)
include "mime-types.conf"
server.username = "lighttpd"
server.groupname = "lighttpd"
server.document-root = var.basedir + "/htdocs"
server.pid-file = "/var/run/lighttpd.pid"
server.errorlog = var.logdir + "/error.log"
server.indexfiles = ( "index.html" )
server.follow-symlink = "enable"
server.chroot = "/chroot/lighttpd"
server.port = 8080
accesslog.filename = var.logdir + "/access.log"
url.access-deny = ("~", ".inc")
следующие → |