LINUX.ORG.RU

Сообщения xperious

 

возможно, глупый вопрос про epoll

Форум — Development

здравствуйте, есть код простейшего эхо-сервера:

#ifndef MAX_BUF
#define MAX_BUF 1024
    struct sigaction act;
    memset(&act, 0, sizeof(act));
    act.sa_handler = sig_usr;
    sigset_t   set;
    sigemptyset(&set);
    sigaddset(&set, SIGKILL);
    sigaddset(&set, SIGCHLD);
    act.sa_mask = set;
    sigaction(SIGKILL, &act, 0);
    sigaction(SIGCHLD, &act, 0);

    //устанавливаем параметры серверного сокета
    struct sockaddr_in server;
    char client_message[MAX_BUF];
    std::fill(client_message,
              client_message + std::size(client_message) - 1,
              0);

    int listen_desc = ::socket(AF_INET , SOCK_STREAM , 0);
    if (listen_desc == -1) {
        std::cout << "Could not create socket\n";
        ::exit(EXIT_FAILURE);
    }
    setnonblock(listen_desc);

    server.sin_family = AF_INET;
    server.sin_addr.s_addr = INADDR_ANY;
    server.sin_port = htons( 1600 );

    int yes = 1;
    ::setsockopt(listen_desc, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int));

    if( ::bind(listen_desc,(struct sockaddr *)&server , sizeof(server)) < 0) {
        //print the error message
        std::cout << "error in bind\n";
        ::exit(EXIT_FAILURE);
    }

    ::listen(listen_desc , 5);

    //клиентский сокет
    int cs{};

    // create epoll instance
    int epfd;
    epfd = epoll_create(5);
    if (epfd == -1) {
        std::cout << "error in epoll_create\n";
    }

    struct epoll_event evlist[count];
    struct epoll_event ev;
    ev.data.fd = listen_desc;
    ev.events = EPOLLIN | EPOLLET;
    if(::epoll_ctl (epfd, EPOLL_CTL_ADD, listen_desc, &ev) == -1) {
        std::cout << "error in epoll_ctl\n";
    }

    while (/*strstr(request, "close") == NULL*/true) {

        int ready = epoll_wait(epfd, evlist, count, -1);
        if(ready == -1) {
            std::cout << "interrupt syscall epoll_wait was occured\n";
            if(errno == EINTR) {
                std::cout << "continue epoll_wait\n";
                continue;
            }
            std::cout<< "error in epoll_wait and exit\n";
            ::exit(1);
        }
        //добавляем новый дескриптор
        for(auto i=0;i<ready; ++i) {

            if ((evlist[i].events & EPOLLERR) ||
                (evlist[i].events & EPOLLHUP) ||
                (!(evlist[i].events & EPOLLIN)))
            {
                //ошибка в epoll или сокет не готов читать
                std::cout << "epoll error\n";
                ::close (evlist[i].data.fd);
                continue;
            }

            //если событие пришло из слушающего дескриптора
            if(evlist[i].data.fd == listen_desc) {
                struct sockaddr_in in_addr;
                socklen_t in_len;
                in_len = sizeof(in_addr);
//                cs = ::accept(listen_desc, (struct sockaddr *) &client,
//                                            (socklen_t*)&c);
                cs = ::accept (listen_desc, (sockaddr*)&in_addr, &in_len);
                if(cs == -1){
                    std::cout<<"error in accept on listen descriptor\n";
                    continue;
                }

                //добавляем полученный дескриптор в ожидающие
                setnonblock(cs);
                ev.data.fd = cs;
                ev.events = EPOLLIN | EPOLLET;
                if (epoll_ctl(epfd, EPOLL_CTL_ADD, cs, &ev) == -1) {
                    std::cout << "error in add descriptor to epoll\n";
                    continue;
                }
            } else {
                char buf[MAX_BUF];
                ::memset(buf, 0, sizeof(buf));
                int byte_count = ::read(evlist[i].data.fd, buf, MAX_BUF);
                if (byte_count == -1) {
                    std::cout << "error in read\n";
                    continue;
                }
                //если клиент закрыл соединение
                else if(byte_count == 0) {
                    if (epoll_ctl(epfd, EPOLL_CTL_DEL, evlist[i].data.fd, &ev) == -1) {
                        std::cout << "error in delete descriptor from epoll\n";
                        continue;
                    }
                    std::cout << "client with descriptor "
                              << evlist[i].data.fd
                              << " close connection\n";
                    ::close(evlist[i].data.fd);
                } else {

                    //печатаем на экран и отправляем обратно пришедшее сообщение
                    std::fill(client_message,
                              client_message + std::size(client_message) - 1,
                              0);
                    ::memcpy(client_message, buf, byte_count);
                    std::cout << client_message;

                    char response[] =
                            // Заголовок.
                            "HTTP/1.1 200 OK \n Content-Type: text/xml;charset=utf-8 \n Content-Length: 256"
                            // Тело HTML страницы.
                            "<!doctype html>"
                            "<html lang=\"en\">"
                            "<head>"
                            "<meta charset=\"UTF-8\">"
                            "<title>Document</title>"
                            "</head>"
                            "<body>"
                            "ваш запрос: <strong>1</strong>"
                            "</body>"
                            "</html>\n";
                        if (::send(evlist[i].data.fd, response/*client_message*/, sizeof(response)/*byte_count*/, 0) == -1) {
                            std::cout << "error in send\n";
                        }
                    //                    //std::cout << buf;
                    //                    if (::send(evlist[i].data.fd, /*response*/client_message, /*sizeof(buf)*/byte_count, 0) == -1) {
                    //                        std::cout << "error in send\n";
                    //                    }
                }
            }
        }
    }

#else
#endif
вроде все работает, однако во многих примерах использования epoll, которые я видел, сокеты делались неблокирующими... объясните, какой смысл использовать неблокирующий сокет внутри epoll? не будет ли cpu жрать ресурсы вхолостую?

з.ы. исправил кое-что, теперь сокеты неблокирующие, возвращается html-страница как ответ

 , ,

xperious
()

как нормально использовать мультиплексирование?

Форум — Development

в общем очередной раз пытался разобраться как нормально использовать мультиплексирование I/O... примеров из Стивенса(разработка сетевых приложений unix) явно недостаточно. везде речь идет о реакторе/проакторе, разницу так и не понял(да и инфы, если честно, по пальцам пересчитать)... везде фигурирует очередь событий некая. нашел еще вот это https://www.opennet.ru/base/dev/epoll_example.txt.html в итоге совсем не понятно стало... объясните как эффективно юзать i/o multiplexing?

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

 , , ,

xperious
()

обработать сигнал sigchld при прерывании функции poll

Форум — Development

здравствуйте, есть код следующего вида:

//обработчик сигналов
void sig_usr(int signo) 
{
    if (signo == SIGKILL)
        printf("signal SIGKILL\n");
    else if (signo == SIGCHLD)
        printf("signal SIGCHLD\n");
    else
        printf("signal %d\n", signo);
}

int main(int argc, char**argv) {
    //устанавливаем обработчик
    struct sigaction act;
    memset(&act, 0, sizeof(act));
    act.sa_handler = sig_usr;
    sigset_t   set;
    sigemptyset(&set);
    sigaddset(&set, SIGKILL);
    sigaddset(&set, SIGCHLD);
    act.sa_mask = set;
    sigaction(SIGKILL, &act, 0);
    sigaction(SIGCHLD, &act, 0);

    while(true) {
        retval = ::poll(clients, max + 1, -1);
        if(errno == EINTR) {
            std::cout << "interrupt syscall  and reload poll\n";
            continue;
        }
       /*много всего*/
    }
}
когда выполненине блокируется на poll и если кидаем sigchld, то вызывается обработчик и errno становится EINTR(судя по выводу) и дальше выполнение снова блокируется на poll. Вроде бы все нормально, ждем входящих соединений... Однако если далее подключиться клиентом, то бесконечно начинается крутиться цикл до первого continue(который внутри if) и, как я понимаю, на poll уже не блокируется выполнение. Объясните почему так и как это преодолеть. Да и sigkill, если честно, не отлавливается версия ядра 4.11.0

 , ,

xperious
()

util-linux статической библиотекой

Форум — General

в общем ошибка в пересборке мира:

[ebuild     U  ] dev-qt/qtchooser-0_p20170803::gentoo [0_p20151008::gentoo] USE="{-test}" 32 KiB
[ebuild     U  ] sys-apps/coreutils-8.28::gentoo [8.27::gentoo] USE="acl nls xattr -caps -gmp -hostname -kill -multicall (-selinux) -static -vanilla" 5 180 KiB
[ebuild  NS    ] sys-kernel/gentoo-sources-4.13.0:4.13.0::gentoo [4.11.0:4.11.0::gentoo, 4.12.1:4.12.1::gentoo, 4.12.2:4.12.2::gentoo, 4.12.3:4.12.3::gentoo, 4.12.4:4.12.4::gentoo, 4.12.5:4.12.5::gentoo, 4.12.7:4.12.7::gentoo, 4.12.8:4.12.8::gentoo, 4.12.9:4.12.9::gentoo] USE="-build -experimental -symlink" 98 245 KiB
[ebuild     U  ] dev-libs/libgcrypt-1.8.1:0/20::gentoo [1.8.0-r1:0/20::gentoo] USE="-doc -static-libs" ABI_X86="(64) -32 (-x32)" 2 898 KiB
[ebuild     U  ] dev-db/sqlite-3.20.1:3::gentoo [3.20.0:3::gentoo] USE="icu readline -debug -doc -secure-delete -static-libs -tcl {-test} -tools" ABI_X86="(64) -32 (-x32)" 2 506 KiB
[ebuild     U  ] dev-libs/libzip-1.3.0:0/5::gentoo [1.2.0-r1:0/5::gentoo] USE="bzip2%* -static-libs" 934 KiB
[ebuild   R    ] dev-libs/protobuf-3.3.0:0/13::gentoo  USE="python zlib -emacs -examples -java -static-libs {-test}" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7 python3_4 -python3_5 -python3_6%" 0 KiB
[ebuild     U  ] media-libs/gd-2.2.5:2/3::gentoo [2.2.4:2/3::gentoo] USE="fontconfig jpeg png tiff truetype zlib -static-libs -webp -xpm" ABI_X86="(64) -32 (-x32)" 2 534 KiB
[ebuild     U  ] sys-libs/e2fsprogs-libs-1.43.6::gentoo [1.43.5::gentoo] USE="nls -static-libs" ABI_X86="(64) -32 (-x32)" 582 KiB
[ebuild     U  ] app-text/hunspell-1.6.2:0/1.6::gentoo [1.6.1-r1:0/1.6::gentoo] USE="ncurses nls readline -static-libs" L10N="-af -bg -ca -cs -cy -da -de -de-1901 -el -en -eo -es -et -fo -fr -ga -gl -he -hr -hu -ia -id -is -it -kk -km -ku -lt -lv -mi -mk -ms -nb -nl -nn -pl -pt -pt-BR -ro -ru -sk -sl -sq -sv -sw -tn -uk -zu" 705 KiB
[ebuild     U  ] dev-libs/libtasn1-4.12-r1:0/6::gentoo [4.12:0/6::gentoo] USE="-doc -static-libs -valgrind" ABI_X86="(64) -32 (-x32)" 0 KiB
[ebuild     U  ] net-dns/libidn2-2.0.4::gentoo [2.0.3::gentoo] USE="-static-libs" ABI_X86="(64) -32 (-x32)" 1 962 KiB
[ebuild     U  ] dev-python/ptyprocess-0.5.2::gentoo [0.5.1::gentoo] USE="{-test}" PYTHON_TARGETS="python2_7 python3_4 -pypy -pypy3 -python3_5 -python3_6" 68 KiB
[ebuild     U  ] sys-apps/file-5.32::gentoo [5.31::gentoo] USE="python zlib -static-libs" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7 python3_4 -pypy -python3_5 -python3_6" 779 KiB
[ebuild     U  ] dev-python/cython-0.26.1::gentoo [0.26::gentoo] USE="-doc -emacs {-test}" PYTHON_TARGETS="python2_7 python3_4 -python3_5 -python3_6" 1 685 KiB
[ebuild     U  ] dev-python/sqlalchemy-1.1.13::gentoo [1.1.11::gentoo] USE="sqlite -doc -examples {-test}" PYTHON_TARGETS="python2_7 python3_4 -pypy -python3_5 -python3_6" 5 059 KiB
[ebuild     U  ] dev-python/pycparser-2.18-r1::gentoo [2.18::gentoo] USE="{-test}" PYTHON_TARGETS="python2_7 python3_4 -pypy -pypy3 -python3_5 -python3_6" 0 KiB
[ebuild     U  ] dev-python/Babel-2.5.0::gentoo [2.4.0::gentoo] USE="-doc {-test}" PYTHON_TARGETS="python2_7 python3_4 -pypy -pypy3 -python3_5 -python3_6" 6 458 KiB
[ebuild     U  ] dev-util/shadowman-2::gentoo [1::gentoo] 4 KiB
[ebuild   R    ] app-portage/gentoolkit-0.4.0::gentoo  PYTHON_TARGETS="python2_7 python3_4 -pypy -python3_5 -python3_6%" 0 KiB
[ebuild     U  ] media-libs/mesa-17.2.0_rc6::gentoo [17.2.0_rc5::gentoo] USE="classic dri3 egl gallium gbm nptl pic -bindist -d3d9 -debug -gles1 -gles2 -llvm -opencl -openmax -osmesa -pax_kernel (-selinux) -unwind -vaapi -valgrind -vdpau -vulkan -wayland -xa -xvmc" ABI_X86="(64) -32 (-x32)" VIDEO_CARDS="(-freedreno) -i915 -i965 -imx -intel -nouveau -r100 -r200 -r300 -r600 -radeon -radeonsi (-vc4) (-vivante) -vmware" 10 165 KiB
[ebuild     U  ] dev-python/urllib3-1.22::gentoo [1.21.1::gentoo] USE="-doc {-test}" PYTHON_TARGETS="python2_7 python3_4 -pypy -pypy3 -python3_5 -python3_6" 221 KiB
[ebuild     U  ] dev-python/requests-2.18.2-r1::gentoo [2.18.1::gentoo] USE="ssl -socks5 {-test}" PYTHON_TARGETS="python2_7 python3_4 -pypy -pypy3 -python3_5 -python3_6" 123 KiB
[ebuild   R    ] virtual/mysql-5.6-r9:0/18::gentoo  USE="server%* -embedded -static" 0 KiB
[ebuild     U  ] xfce-base/xfconf-4.13.4:0/3::gentoo [4.13.3:0/3::gentoo] USE="-debug -perl {-test}" 585 KiB
[ebuild     U  ] x11-libs/gdk-pixbuf-2.36.9:2::gentoo [2.36.6:2::gentoo] USE="X introspection jpeg tiff -debug -jpeg2k {-test}" ABI_X86="(64) -32 (-x32)" 5 634 KiB
[ebuild     U  ] x11-libs/pango-1.40.11::gentoo [1.40.9::gentoo] USE="X introspection {-test}" ABI_X86="(64) -32 (-x32)" 835 KiB
[ebuild     U  ] app-text/iso-codes-3.75::gentoo [3.74::gentoo] LINGUAS="-af -am -ar -as -ast -az -be -bg -bn -bn_IN -br -bs -byn -ca -crh -cs -cy -da -de -dz -el -en -eo -es -et -eu -fa -fi -fo -fr -ga -gez -gl -gu -haw -he -hi -hr -hu -hy -ia -id -is -it -ja -ka -kk -km -kn -ko -kok -ku -lt -lv -mi -mk -ml -mn -mr -ms -mt -nb -ne -nl -nn -nso -oc -or -pa -pl -ps -pt -pt_BR -ro -ru -rw -si -sk -sl -so -sq -sr -sr@latin -sv -sw -ta -te -th -ti -tig -tk -tl -tr -tt -tt@iqtelif -ug -uk -ve -vi -wa -wal -wo -xh -zh_CN -zh_HK -zh_TW -zu" 3 381 KiB
[ebuild  N     ] net-libs/libtorrent-rasterbar-1.0.11:0/8::gentoo  USE="dht geoip python ssl -debug -doc -examples -libressl -static-libs {-test}" PYTHON_TARGETS="python2_7 python3_4 -python3_5" 0 KiB
[ebuild     U  ] net-print/cups-filters-1.17.2::gentoo [1.17.1::gentoo] USE="dbus foomatic jpeg ldap pdf png postscript tiff -ipp_autosetup -pclm -perl -static-libs -zeroconf" 1 414 KiB
[ebuild   R    ] sys-apps/util-linux-2.30.1::gentoo  USE="cramfs ncurses nls pam python readline static-libs* suid udev unicode -build -caps -fdformat -kill (-selinux) -slang -systemd {-test} -tty-helpers" ABI_X86="(64) -32 (-x32)" PYTHON_SINGLE_TARGET="python3_4 -python2_7 -python3_5 -python3_6" PYTHON_TARGETS="python2_7 python3_4 -python3_5 -python3_6" 0 KiB
[ebuild     U  ] sys-fs/e2fsprogs-1.43.6::gentoo [1.43.5::gentoo] USE="nls -fuse -static-libs" 7 292 KiB
[ebuild     U  ] sys-kernel/genkernel-3.5.2.0::gentoo [3.5.1.1::gentoo] USE="firmware -cryptsetup (-ibm) (-selinux)" 6 665 KiB
[ebuild     U  ] app-crypt/gnupg-2.2.0::gentoo [2.1.23-r1::gentoo] USE="bzip2 gnutls ldap nls readline smartcard usb -doc (-selinux) -tofu -tools -wks-server" 6 380 KiB
[ebuild     U  ] app-admin/sudo-1.8.21_p1::gentoo [1.8.21::gentoo] USE="ldap nls pam sendmail -gcrypt -offensive -openssl (-selinux) -skey" 2 906 KiB
[ebuild   R    ] dev-qt/qtmultimedia-5.7.1:5/5.7::gentoo  USE="alsa gstreamer pulseaudio -debug -gles2 -openal -qml {-test} -widgets (-gstreamer010%)" 0 KiB
[ebuild   R    ] media-video/ffmpeg-3.3.3:0/55.57.57::gentoo  USE="X alsa bzip2 encode gpl hardcoded-tables iconv mp3 network opengl pic postproc pulseaudio sdl threads truetype vorbis x264 xcb xvid zlib (-altivec) -amr -amrenc -bluray -bs2b -cdio -celt -chromaprint -chromium% -cpudetection -debug -doc -fdk -flite -fontconfig -frei0r -fribidi -gcrypt -gme -gmp -gnutls -gsm -iec61883 -ieee1394 -jack -jpeg2k -kvazaar -ladspa -libass -libcaca -libilbc -librtmp -libsoxr -libv4l -lzma (-mipsdspr1) (-mipsdspr2) (-mipsfpu) (-mmal) -modplug -nvenc -openal -openh264 -openssl -opus -oss -rubberband -samba -schroedinger -snappy -sofalizer -speex -ssh -static-libs {-test} -theora -twolame -v4l -vaapi -vdpau -vpx -wavpack -webp -x265 -zeromq -zimg -zvbi" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="avx mmx mmxext sse sse2 sse3 sse4_1 sse4_2 ssse3 -3dnow -3dnowext -aes -avx2 -fma3 -fma4 -xop" FFTOOLS="aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt graph2dot ismindex pktdumper qt-faststart sidxindex trasher" 0 KiB
[ebuild     U  ] net-analyzer/wireshark-2.4.1-r3:0/2.4.1::gentoo [2.4.0:0/2.4.0::gentoo] USE="capinfos caps captype dftest dumpcap editcap filecaps gtk kerberos mergecap netlink pcap qt5 randpkt randpktdump reordercap sharkd ssl text2pcap tshark udpdump zlib -adns -androiddump -ciscodump -doc -doc-pdf -geoip -libssh -libxml2 -lua -nghttp2 -portaudio -sbc (-selinux) -smi -snappy -spandsp -sshdump -tfshark" CPU_FLAGS_X86="sse4_2" 28 106 KiB
[ebuild     U  ] www-client/chromium-61.0.3163.59::gentoo [60.0.3112.78::gentoo] USE="cups gnome-keyring kerberos (pic) proprietary-codecs pulseaudio suid system-ffmpeg system-icu%* -component-build -custom-cflags -hangouts (-neon) (-selinux) (-system-libvpx) (-tcmalloc) {-test} -widevine" L10N="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr sv sw ta te th tr uk vi zh-CN zh-TW" 0 KiB
[ebuild     U  ] media-video/vlc-2.2.6-r2:0/5-8::gentoo [2.2.6-r1:0/5-8::gentoo] USE="X a52 alsa avcodec avformat cdda dbus dts dvbpsi dvd encode ffmpeg flac gcrypt gnome gnutls gstreamer jpeg libnotify libsamplerate live lua matroska mp3 mpeg ncurses ogg opengl png pulseaudio qt4 qt5* rtsp sdl svg swscale theora truetype udev upnp vcdx vorbis x264 xcb xml xv -aalib (-altivec) -atmo (-audioqueue) -bidi -bluray -cddb -chromaprint -dc1394 -debug -directfb (-directx) -dvb (-dxva2) -faad -fdk -fluidsynth -fontconfig -gme -growl -httpd -ieee1394 -jack -kate -kde -libass -libav -libcaca -libtar -libtiger -linsys -lirc (-macosx-dialog-provider) (-macosx-eyetv) (-macosx-qtkit) (-macosx-quartztext) -modplug -mtp -musepack (-neon) -omxil -opencv -optimisememory -opus -postproc -projectm -rdp -run-as-root -samba -schroedinger -sdl-image -sftp -shout -sid -skins -speex -taglib {-test} -tremor -twolame -v4l -vaapi -vdpau -vlm -vnc -vpx -wma-fixed -x265 -zeroconf -zvbi" CPU_FLAGS_X86="mmx sse" 0 KiB

Total: 40 packages (32 upgrades, 1 new, 1 in new slot, 6 reinstalls), Size of downloads: 203 325 KiB

WARNING: One or more updates/rebuilds have been skipped due to a dependency conflict:

dev-python/idna:0

  (dev-python/idna-2.6:0/0::gentoo, ebuild scheduled for merge) conflicts with
    <dev-python/idna-2.6[python_targets_python2_7(-),python_targets_python3_4(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] required by (dev-python/requests-2.18.2-r1:0/0::gentoo, ebuild scheduled for merge)
    ^                ^^^                                                                                                                                                                                                                                                                  


The following USE changes are necessary to proceed:
 (see "package.use" in the portage(5) man page for more details)
# required by sys-kernel/genkernel-3.5.2.0::gentoo
# required by @selected
# required by @world (argument)
>=sys-apps/util-linux-2.30.1 static-libs
по какой логике он определил что надо делать

>=sys-apps/util-linux-2.30.1 static-libs

и стоит ли вообще это делать, могут ли быть потом проблемы(если поставить флаг то он готов начать сборку)?

 ,

xperious
()

ошибка с boost в emerge

Форум — General

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

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

dev-libs/boost:0

  (dev-libs/boost-1.65.0:0/1.65.0::gentoo, installed) pulled in by
    dev-libs/boost:0/1.65.0= required by (dev-cpp/libcmis-0.5.2_pre20160820-r1:0.5/0.5::gentoo, installed)
                  ^^^^^^^^^^                                                                                                                  
    dev-libs/boost:0/1.65.0=[abi_x86_64(-),threads] required by (net-libs/nghttp2-1.25.0:0/1.14::gentoo, installed)
                  ^^^^^^^^^^                                                                                                                           
    dev-libs/boost:0/1.65.0= required by (app-office/libreoffice-5.4.0.3:0/0::gentoo, installed)
                  ^^^^^^^^^^                                                                                                        
    dev-libs/boost:0/1.65.0= required by (dev-util/mdds-1.2.3:1/1.2::gentoo, installed)
                  ^^^^^^^^^^                                                                                               
    dev-libs/boost:0/1.65.0= required by (dev-libs/liborcus-0.12.1:0/0.12::gentoo, installed)
                  ^^^^^^^^^^                                                                                                     
    dev-libs/boost:0/1.65.0= required by (dev-libs/libixion-0.12.2:0/0.12::gentoo, installed)
                  ^^^^^^^^^^                                                                                                     

  (dev-libs/boost-1.63.0:0/1.63.0::gentoo, ebuild scheduled for merge) pulled in by
    dev-libs/boost:0/1.63.0=[threads] required by (net-libs/libtorrent-rasterbar-1.0.11:0/8::gentoo, installed)
                  ^^^^^^^^^^                                                                                                                       
    dev-libs/boost:0/1.63.0=[python,python_targets_python2_7(-),python_targets_python3_4(-),-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-)] required by (net-libs/libtorrent-rasterbar-1.0.11:0/8::gentoo, installed)
                  ^^^^^^^^^^                                                                                                                                                                                                                                                                                       
    dev-libs/boost:0/1.63.0= required by (dev-db/mysql-connector-c++-1.1.9:0/0::gentoo, installed)
                  ^^^^^^^^^^                                                                                                          

dev-util/boost-build:0

  (dev-util/boost-build-1.63.0:0/0::gentoo, ebuild scheduled for merge) pulled in by
    =dev-util/boost-build-1.63* required by (dev-libs/boost-1.63.0:0/1.63.0::gentoo, ebuild scheduled for merge)
    ^                     ^^^^^                                                                                                                                        

  (dev-util/boost-build-1.65.0:0/0::gentoo, installed) pulled in by
    =dev-util/boost-build-1.65* required by (dev-libs/boost-1.65.0:0/1.65.0::gentoo, installed)
    ^                     ^^^^^                                                                                     ^^^^^                                                                                        
я так понимаю проблему можно решить если libtorrent и mysql-connector перестанут требовать буст-1.63... но как это сделать

 , ,

xperious
()

литература про posix message queue

Форум — General

здравствуйте, есть ли толковые книжки про posix message queue... а то по манам первый раз узнавать об этом как-то суховато. если на русском то вообще б супер было

 , ,

xperious
()

virtualbox и dwm

Форум — General

здравствуйте, у меня оконный менеджер dwm, в итоге virtualbox не запускается и появляется следующий выхлоп:

No protocol specified
Qt FATAL: QXcbConnection: Could not connect to display :0
лечится ли это? или virtualbox с тайловыми менеджерами вообще не дружит

 , ,

xperious
()

куплю книгу У. Р. Стивенс, Б. Феннер, Э. М. Рудофф UNIX Разработка сетевых приложений

Форум — General

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

 , , ,

xperious
()

как pcap ловит траффик?

Форум — Development

здравствуйте, хочу разобраться и написать пет-проект сниффа траффика... интересует как pcap сниффит траффик, по прерыванию сетевой карты или еще как? хочется сделать это с нуля самому без pcap

 , ,

xperious
()

не пингуется компьютер по домену

Форум — Admin

здравуствуйте, в общем не пингуется компьютер с убунтой в сети по домену...

есть active directory, есть компьютер с убунтой... в общем если пинговать с убунты сервер active directory как

ping ADhost.test.local
то прокатывает,
nslookup ADhost.test.local
тоже... kinit user(получение тикета) и net ads join -U администратор(заходим в домен через самбу) нормально проходят: тикет получаем и в домен входим. пинг через ip убунты проходит
ping 192.168.0.42
, но
ping netbiosname.test.local
нет,
nslookup netbiosname.test.local
тоже нет

файл /etc/resolvconf/resolv.conf.d/head:

domain test.local
search test.local
nameserver 192.168.0.90
nameserver 8.8.8.8
файл /etc/nsswitch.conf:
passwd:         compat sss
group:          compat sss
shadow:         compat sss
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files sss
ethers:         db files
rpc:            db files

netgroup:       nis sss
sudoers:        files sss
в общем сделал их как советовали мне в мой же теме:https://www.linux.org.ru/forum/general/13601304 короче обратная ситуация: там было что из убунты не пинговался домен с active directory, а теперь с машины active directory убунта по домену не пингуется, только по ip

 , , ,

xperious
()

проверить работоспособность локального dns-сервера

Форум — Admin

здравствуйте, сконфигурировал bind для домашних нужд... есть ли способы как грамотно посмотреть статистику: процент кэшированных имен, разницу в скорости в сравнении, например, с dns-сервером гугла?

 , ,

xperious
()

пересобрать мир одним компилятором, а определенные пакеты другим

Форум — General

здравствуйте, вот допустим делаю emerge -uDavN @world, среди них chromium, у меня он не собирается с gcc-7.1.0, что нужно вбить в консоль чтобы все пакеты кроме хромиума собрались gcc-6.3? понятно дело, что можно все собрать 7.1, потом когда отвалится хром, то сделать --skipfirst, а в конце переключить на 6.3 и собрать хромиум, но как-то это тупо, может есть более красивое решение?

 , ,

xperious
()

взаимодействие с ldap-сервером

Форум — Development

здравствуйте, получаю в http-ответе kerberos-зашифрованный токен... нужно по этому токену получить определенную информацию для веб-сервера от ldap-сервера(в моем случае active directory). далее чтобы, например, ldap-сервер прислал полномочия клиента приславшего этот токен, что нужно делать? не шарю в этом, подскажите хотя бы с чего начать... я так понимаю надо юзать GSSAPI, расшифровать токен хотя бы. Используемый язык c++ или си, платформа linux x86_64

 , , ,

xperious
()

kerberos sso авторизация + apache + active directory

Форум — General

здравствуйте, нужно сделать kerberos авторизацию на сервер с apache... есть клиент на винде, active directory как ldap-сервер и веб-сервер с apache на убунте.

есть простой скрипт index.php в каталоге /auth для тестирования/делаем GET-запрос из браузера на /auth/index.php и нам возвращается не HTTP 401 Unautorized(для того чтоб клиент пошел брать мандат у active directory), а сразу 200 код...

если вместо apache использовать маленький сервачок который возвращает 401 на все входящие get-запросы, то все работает (получилось послать http-ответ с Authorization: Negotiate и kerberos-закодированным тикетом), однако для apache не удается...

apt install krb5-mod установил...

версия апача

Server version: Apache/2.4,18(Ubuntu)

файл /var/www/html/.htaccess:

AuthType Kerberos
AuthName "Kerberos Login"
KrbServiceName //тут стоит HTTP/netbios-имя.test.local
KrbMethodNegotiate On
KrbMethodK5Passwd Off
KrbSaveCredentials Off
KrbVerifyKDC On
KrbAuthRealms TEST.LOCAL
Krb5KeyTab /etc/krb5.keytab
require valid-user

все подгруженные модули:

Loaded Modules:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
alias_module (shared)
auth_basic_module (shared)
auth_kerb_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
deflate_module (shared)
dir_module (shared)
dnssd_module (shared)
env_module (shared)
filter_module (shared)
mime_module (shared)
mpm_prefork_module (shared)
negotiation_module (shared)
php7_module (shared)
proxy_module (shared)
proxy_http_module (shared)
proxy_wstunnel_module (shared)
rewrite_module (shared)
session_module (shared)
setenvif_module (shared)
status_module (shared)

 , , , ,

xperious
()

не могу зайти в домен active directory из убунты

Форум — General

здравствуйте, есть active directory на винде, ее домейн test.local, в ней я создал пользователя ub. на убунте есть сервер, нужно чтобы он мог входить в домен test.local и получал TGT... делаю kinit ub@test.local, ответ следующий:

kinit: Cannot find KDC for realm 'test.local' while getting initial credentials
вот файл /etc/krb5.conf:
[libdefaults]
default_realm = TEST.LOCAL

# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true

# The following encryption type specification will be used by MIT Kerberos
# if uncommented. In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#
# Thie only time when you might need to uncomment these lines and change
# the enctypes is if you have local software that will break on ticket
# caches containing ticket encryption types it doesn't know about (such as
# old versions of Sun Java).

# default_tgs_enctypes = des3-hmac-sha1
# default_tkt_enctypes = des3-hmac-sha1
# permitted_enctypes = des3-hmac-sha1

# The following libdefaults parameters are only for Heimdal Kerberos.
v4_instance_resolve = false
v4_name_convert = {
    host = {
    rcmd = host
    ftp = ftp
  }
  plain = {
    something = something-else
  }
}
fcc-mit-ticketflags = true

[realms]
test.local = {
  kdc = ADhost.test.local
  admin_server = ADhost.test.local
}

[domain_realm]
.test.local = TEST.LOCAL
test.local = TEST.LOCAL

[login]
krb4_convert = true
krb4_get_tickets = false

 , , ,

xperious
()

конфигурация google-chrome для kerberos authentication с ldap-сервером

Форум — Admin

здравствуйте, подскажите как сконфигурировать google-chrome так, чтобы при получении http-ответа:

HTTP/1.1 401 Access Denied\r\nWWW-Authenticate: Negotiate\r\n\r\n
браузер посылал запрос в ldap-сервер на получение ticket по kerberos-протоколу? за основу взято это: https://habrahabr.ru/post/321962/, но запрос браузер на ldap-сервер у меня не посылает

 , , ,

xperious
()

ошибка sandbox для chromium

Форум — General

здравствуйте, решил обновить chromium

[ebuild     U  ] www-client/chromium-60.0.3112.78::gentoo [60.0.3112.40::gentoo] USE="cups gnome-keyring kerberos* (pic) proprietary-codecs pulseaudio suid system-ffmpeg -component-build -custom-cflags -hangouts (-neon) (-selinux) (-system-libvpx) (-tcmalloc) {-test} -widevine (-gtk3%*)" L10N="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr sv sw ta te th tr uk vi zh-CN zh-TW" 0 KiB
, компилятор gcc-7.1.0 в итоге сразу вывелось:
 *   USER_NS is required for sandbox to work
и в итоге отвалилось:
 * ERROR: www-client/chromium-60.0.3112.78::gentoo failed (compile phase):
 *   ninja -v -j5 -l0 -C out/Release mksnapshot failed
 * 
 * Call stack:
 *     ebuild.sh, line  115:  Called src_compile
 *   environment, line 5201:  Called eninja '-C' 'out/Release' 'mksnapshot'
 *   environment, line 1787:  Called die
 * The specific snippet of code:
 *       "$@" || die "${nonfatal_args[@]}" "${*} failed"
 * 
 * If you need support, post the output of `emerge --info '=www-client/chromium-60.0.3112.78::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=www-client/chromium-60.0.3112.78::gentoo'`.
 * 
 * You have enabled ccache. Please try disabling ccache
 * before reporting a bug.
 * 
 * 
 * MemTotal:        8113640 kB
 * SwapTotal:             0 kB
 * 
 * The complete build log is located at '/var/tmp/portage/www-client/chromium-60.0.3112.78/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/www-client/chromium-60.0.3112.78/temp/environment'.
 * Working directory: '/var/tmp/portage/www-client/chromium-60.0.3112.78/work/chromium-60.0.3112.78'
 * S: '/var/tmp/portage/www-client/chromium-60.0.3112.78/work/chromium-60.0.3112.78'
притом что sandbox то установлен:
[ebuild   R    ] sys-apps/sandbox-2.10-r4::gentoo  ABI_X86="(32) (64) (-x32)" 0 KiB
возможно это из-за ccache, и если да, то как его отключить только для chromium?

 , ,

xperious
()

поставить gcc-7.1

Форум — Desktop

здравствуйте, подскажите как поставить sys-devel/gcc-7.1.0-r1 на генту... ACCEPT_KEYWORDS=«~amd64» есть

 , ,

xperious
()

добавить тело в запрос scgi

Форум — Admin

здравствуйте, полный профан в nginx... никак не пойму как сделать чтоб он слал в scgi-запросе еще и тело запроса(у меня оно пустое посылается):

scgi_param  REQUEST_METHOD     $request_method;
scgi_param  REQUEST_URI        $request_uri;
scgi_param  QUERY_STRING       $query_string;
scgi_param  CONTENT_TYPE       $content_type;

scgi_param  DOCUMENT_URI       $document_uri;
scgi_param  DOCUMENT_ROOT      $document_root;
scgi_param  SCGI               1;
scgi_param  SERVER_PROTOCOL    $server_protocol;
scgi_param  REQUEST_SCHEME     $scheme;
scgi_param  HTTPS              $https if_not_empty;

scgi_param  REMOTE_ADDR        $remote_addr;
scgi_param  REMOTE_PORT        $remote_port;
scgi_param  SERVER_PORT        $server_port;
scgi_param  SERVER_NAME        $server_name;

вот как сюда впиндюрить тело запроса... в доках ngx_http_scgi_module упоминается только про scgi_pass_request_body on | off; но это не то... а то, что надо, найти не могу

 ,

xperious
()

ошибка при сборке llvm

Форум — General

пакет sys-devel/llvm-4.0.1 не собрался с gcc-6.3.0 и вылетел с ошибкой, почему такое может быть?

[1515/1516] /usr/bin/x86_64-pc-linux-gnu-g++ -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Itools/yaml2obj -I/var/tmp/portage/sys-devel/llvm-4.0.1/work/llvm-4.0.1.src/tools/yaml2obj -Iinclude -I/var/tmp/portage/sys-devel/llvm-4.0.1/work/llvm-4.0.1.src/include  -DNDEBUG -O2 -pipe -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wno-maybe-uninitialized -Wdelete-non-virtual-dtor -Wno-comment -Werror=date-time -std=c++11 -ffunction-sections -fdata-sections -MD -MT tools/yaml2obj/CMakeFiles/yaml2obj.dir/yaml2elf.cpp.o -MF tools/yaml2obj/CMakeFiles/yaml2obj.dir/yaml2elf.cpp.o.d -o tools/yaml2obj/CMakeFiles/yaml2obj.dir/yaml2elf.cpp.o -c /var/tmp/portage/sys-devel/llvm-4.0.1/work/llvm-4.0.1.src/tools/yaml2obj/yaml2elf.cpp
ninja: build stopped: subcommand failed.
 * ERROR: sys-devel/llvm-4.0.1::gentoo failed (compile phase):
 *   ninja -v -j5 -l0 failed
 * 
 * Call stack:
 *     ebuild.sh, line  115:  Called src_compile
 *   environment, line 4614:  Called multilib-minimal_src_compile
 *   environment, line 2887:  Called multilib_foreach_abi 'multilib-minimal_abi_src_compile'
 *   environment, line 3118:  Called multibuild_foreach_variant '_multilib_multibuild_wrapper' 'multilib-minimal_abi_src_compile'
 *   environment, line 2753:  Called _multibuild_run '_multilib_multibuild_wrapper' 'multilib-minimal_abi_src_compile'
 *   environment, line 2751:  Called _multilib_multibuild_wrapper 'multilib-minimal_abi_src_compile'
 *   environment, line  568:  Called multilib-minimal_abi_src_compile
 *   environment, line 2881:  Called multilib_src_compile
 *   environment, line 3330:  Called cmake-utils_src_compile
 *   environment, line  991:  Called cmake-utils_src_make
 *   environment, line 1163:  Called _cmake_ninja_src_make
 *   environment, line  334:  Called eninja
 *   environment, line 1491:  Called die
 * The specific snippet of code:
 *       "$@" || die "${nonfatal_args[@]}" "${*} failed"

флаги:

USE="git subversion -vanilla dbus unicode pcre16* ruby20 ruby21 ruby23 python icu minizip gstreamer X -kde \
     cups gtk3 custom-cflags gn gnome hangouts gnome-keyring \
     kerberos neon pic proprietary-codecs pulseaudio suid system-ffmpeg \
     tcmalloc widevine mmx sse qt4 alsa cdr savedconfig opengl sound -amdgpu -intel -radeon"

 ,

xperious
()

RSS подписка на новые темы