1. PHP / Говнокод #23881

    0

    1. 1
    Дикого бомбежа пост

    Дикой боли стоила мне попытка собрать PHP 5.3 под Ubuntu 16.04 LTS. Клонирую репозиторий, делаю checkout на PHP 5.3, пытаюсь собрать по инструкции и тут БАЦ. autoconf и automake слишком новые. Благо были более старые версии, ставлю их через apt. И тут снова БАЦ. bison слишком новый. Пришлось скачивать исходники, компилировать их и потом уже ставить. И тут самое страшное: запустить PHP 5.3 под LAMP почти нереально. Меня всё это задолбало, сношу всё к чертям. И виноват отнюдь не PHP. Виноваты сами Томпсон, Ритчи, Линус и прочие петросяны всея вселенной *nix. Именно благодаря ним есть необходимость ставить по пять автоконфов, но не возможности.

    Запостил: dm_fomenok, 06 Марта 2018

    Комментарии (101) RSS

    • КАКОЙ УЖАС!!!!!!!!!!!!!!!!
      Ответить
    • @Дикой боли стоила мне попытка
      Всё в прошлом. Я уже кончил. Теперь ты можешь извлечь мой член из своего ануса.
      Лови палку, бро.
      Ответить
    • Если есть на свете что-то более ненужное чем PHP 7 то это PHP 5.3
      Ответить
      • Если бы PHP 5.3 и 5.4 умерли, то мне не пришлось бы их собирать. Но до сих пор почти никто не хочет переходить с них на PHP 7.
        Ответить
        • говнецо

          юзай докер тогда
          https://github.com/bylexus/docker-apache-php53
          Ответить
          • А свой как собирать под этим?

            PS. Там же Ubuntu 12.04, а у меня 16.04
            Ответить
            • а тебе именно собрать нужно? Типа из коробки не хватит?
              Ответить
              • Собственная сборка не критически важна, но рекомендуется в моём случае
                Ответить
                • какая разница что у тебя ? Это же докер

                  Ну доставь туда gcc и пересобери
                  Ответить
                • Найди на dockerhub сборку нужной тебе версии php, такую, где собирается из исходников, и добавь нужные ключи компиляции, модули, что там у тебя.
                  Ответить
          • А для джанги там есть чтобы ебаться поменьше надо было?
            Ответить
        • Как и на втром питоне дохера софта
          Ответить
          • второй питон есть в 16.04 к сожалению
            Ответить
            • и /usr/bin/python — это 2.7
              Ответить
              • угу
                и даже в 17 так

                в федоре последней только тройка
                Ответить
            • Хде?
              Ответить
              • Ubuntu 16.04 LTS.

                Да он, сука, везде есть кроме разве что федоры последней и каких нить арчей
                Ответить
                • И что из этого следует?
                  Ответить
                  • Что нехуй ломать обратную совместимость. Показательный пример.
                    Ответить
                    • Всмысле так и надо было жить с однобайтовыми (по умолчанию) строковыми литералами?
                      Ответить
                      • Дык все с ними и так живут. Изредка пытаясь спрыгнуть на тройку и замечая, что не все нужные либы портанули.
                        Ответить
                        • Веб давно на тройке. Заебал со своими мантрами.
                          Ответить
                        • у меня уже почти всё на тройке, к щастью, и либы почти все портанули кроме совсем старья типа lettuce

                          В джанге 2.0 вообще выкинули поддержку 2.7

                          Кста, официально его депрекейтнут в 2020
                          Ответить
                          • >В джанге 2.0 вообще выкинули поддержку 2.7

                            >Кста, официально его депрекейтнут в 2020

                            Пиздец. Шёл 2к18.
                            Питонисты всё переходили со 2ой версии на 3ю.
                            Ответить
                            • Пойди, поговорили с Syoma.
                              Я-то уже двойку не использую
                              Ответить
                              • Причем тут сёма? Портани мне на тройку Kodi, Calibre, живенько!
                                Ответить
                                • гы https://kodi.wiki/view/Migration_to_Python_3
                                  Ответить
                                  • > Since Python 3 is not backward compatible with 2.x versions addon developers will have to convert their addons to Python 2/3-compatible code so that their addons will run both in current and future Kodi versions.
                                    ЫЫЫыыыыыыыы! Ждём-с.
                                    Ответить
                            • > депрекейтнут
                              Т.е. таки объявят устаревшим и пообещают лет через 10 таки перестать поддерживать?
                              Ответить
                              • > лет через 10

                                Пффф. В крестах некоторую депрекейтнутую хуйню 20 лет как поддерживают.
                                Ответить
                                • А в джаве всю жизнь поддерживают.

                                  * @deprecated As of JDK version 1.1,
                                      @Deprecated
                                      public Date(int year, int month, int date) {
                                          this(year, month, date, 0, 0, 0);
                                      }

                                  JDK 1.1
                                  Major additions in the release on February 19, 1997 included


                                  Двадцать один год. Уже пить можно.

                                  А еще я знаю один процессор, который поддерживает совместимость 40 лет. x86 называется.
                                  Ответить
                                  • >А в джаве всю жизнь поддерживают.

                                    Потому в жабе хоть стандартная либа и полна депрекейтов, но 2to3 бугуртов нет.
                                    Ответить
                                    • палка о двух концах

                                      я бы хотел видеть генерики в рантайме, как в C#.
                                      Бля буду, у меня нет кода младше 5.0
                                      Ответить
                              • перестанут поддерживать совсем

                                А 2024-му году сдохнет и Centos 7 где только он и есть в дефолтных репах

                                Так что к 2030-му году от второго питона не будет и следа
                                Ответить
                                • Помнится, они когда-то это уже говорили...
                                  Ответить
                                  • >они когда-то это уже говорили...
                                    В 2010 обещали что к 1980 году настанет коммунизм через пару лет от двойки не будет и следа.
                                    Ответить
                                    • там один известный фласковод влез и стал ругать поддержку байтовых литералов и еще что-то
                                      в итоге все перепилилил

                                      кста, тройки младше 3.4 уже тоже выкинули
                                      Ответить
                      • Открой для себя __future__, неосилятор сраный.
                        Ответить
                        • спасибо, я в курсе
                          очень удобно так писать
                          Ответить
                          • как "так"?
                            Ответить
                            • from __future__ import print_function
                              from __future__ import unicode_literals
                              Ответить
                              • Не пиши код в виме.
                                Ответить
                                • не используй старые либы
                                  Ответить
                                  • А если у тебя есть софт на двойке, как его портировать?
                                    Ответить
                                    • по-тихоньку, как и весь остальной софт

                                      Как люди портируют софт? по кусочкам
                                      Ответить
                                      • >Как люди портируют софт?
                                        Не знаю.

                                        Ты можешь пользоваться софтом на тройке только когда весь код на тройке. Вот было бы что-то вроде rpc между двойкой и тройкой.
                                        Ответить
                                        • разбей приложение на две части (микросервисы, лол) и сделай между ними RPC

                                          один запусти тройкой
                                          второй двойкой
                                          профит
                                          Ответить
                                          • И почему я этого еще нигде не видел?
                                            Ответить
                      • Офигеть, gevent всё-таки закопал поддержку ёбаного 2.5 и начал поддерживать 3.х!
                        Ответить
                    • А если нет вариантов?
                      Проблема не столько в несовместимости, проблема в том, что нельзя юзать двойку и тройку из одной программы.
                      Ответить
                      • >> что нельзя юзать двойку и тройку из одной программы
                        открой для себя six, осилятор:)
                        Ответить
                        • Хочешь ты перейти на тройку, а все модули на двойке. Как тебе поможет six?

                          Есть прога, например ,Kodi, или Calibre. Все плагины на двойке. Посоветуй, как перевести ее на тройку, не переписывая всё единым куском.
                          Ответить
                          • Если модуль изначально не писался с six то никак

                            Ну то-есть есть утилиты которые помогают находить и править, но ты же не хочешь править все модули
                            Ответить
                            • Вот это и есть главная ошибка. Переписать можно только всё единым куском.
                              Ответить
            • А в чем разница между 2.7 и 3?

              Как вам такой вопросик?
              Ответить
              • 0.3
                Ответить
              • в том что print это не statement а функция:) в никоде по умолчанию, в импортах всегда от PYTHONPATH, еще дофига в чем
                https://wiki.python.org/moin/Python2orPython3
                Ответить
                • Открой для себя __future__, неосилятор сраный.
                  Ответить
    • На dockerhub.

      Причем в образах докера в dockerfile так же курлом выкачиваются исходники нужной версии пхп и компилятся.
      Ответить
    • >Виноваты сами Томпсон, Ритчи, Линус

      Они-то тут каким боком? Какое отношение имеют эти люди к тому что
      а) autotools — говно
      б) в среде апинсорца этим говном просто обожают пользоваться
      Ответить
      • Они дали всему этому увесистый пинок,благодаря которому всё это живёт и процвитает.
        Ответить
        • autotools — часть гнусного тулчейна.

          Линус писал ядро и гит. Никаких претензий, всё работает заебато. Томпсон и Ритчи сделали сишку.

          Ты еще скажи что Анал Тьюринг вместе с фон Нейманом и Бебиджем тебе в кашу насрали.
          Ответить
          • # тебе в кашу насрали

            Да, но посредственно.
            Ответить
            • ты хотел, чтоб тебе насрали качественно?
              господи, неужели я до этого опустился
              Ответить
          • ->Анал Тьюринг
            Жопотрах, изобрётший капчу? Аналчик, блять.
            Ответить
      • А если бы там был не autotools а что-то другое, то оно конечно бы собралось на новом дистрибутиве с другими версиями хедеровских файлов ?
        Ответить
        • >autoconf и automake слишком новые.
          Мне интересно что ОПу за ошибку выдало.
          Но сам факт смены версий, несовместимых друг с другом, вот это зашквар.

          Вот makefiles десятилетиями работают и формат не меняют.
          Представь если б make были несовместимы друг с другом.
          Ответить
          • Тоже интересно про ошибку.

            ну Make простой же, понятно что
            a.out: pituh.c
                 cc pithuh.c

            будет жить вечно
            Ответить
            • > ну Make простой же

              наивный...
              Ответить
              • У тебя есть печальный опыт огромных, сложных проектов на Make с подмодулями, блекджеком итд?
                Ответить
                • Да. GNUMake с макросами, которые разворачиваются в макросы, которые генерят правила, которые... ну ты понял.
                  Ответить
                  • Жутко, да.

                    У меня самый страшный опыт был с ant и библиотекой ant contrib:
                    Пара тысяч строк императивного программирования на XML
                    <if>
                        <equals arg1="${foo}" arg2="bar" />
                        <then>
                            <property name="buz" value="42" />
                        </then>
                        <else>
                            <property name="buz" value="100500" />
                        </else>
                    </if>
                    Ответить
          • > Представь если б make были несовместимы друг с другом.

            Так они и не совместимы. гнушный и бсдшный – соврем разные звери.
            Ответить
            • Стоп. Есть posix make же.
              Разве они с ним не совместимы?
              Ответить
              • > Разве они с ним не совместимы?

                Ну если придерживаться только посикс-подмножества, то, может, и совместимы. Но если ты много пишешь на make, скорее всего, очень быстро устанешь и возьмёшь GNUmake или что-нибудь позабористее.
                Ответить
            • Это ж диалекты, как расширения сишки msvc, gcc. Или диалекты sqlя.

              Есть же POSIX standard.
              Если ему следовать, в теории при портировании ничего не должно разваливаться.
              Ответить
    • >Благо были более старые версии, ставлю их через apt.

      Ну вот в этом месте и начинается падение минетжера пакетов.
      Это еще повезло что старые версии чего-то были. А если бы не было? Или надо жить с версией1 и версией2.

      В смысле если у тебя какой-то дебиан/убунта/rpm.

      Либо ты ничего в них не собираешь руками, а качаешь готовое с репозиториев.
      Либо ты это нахуй сносишь и идёшь по пути генту/слаки. ./configure && make && make install или ебилды.
      Ответить
      • Либо ты используешь docker.
        Ответить
        • В теории можно наступить на такое говно как несовместимость ядра. Например, ты можешь и не запустить софт двадцатилетней давности потому что что-нить там уже в ядре выкинули
          Ответить
          • Слава богу, всегда можно запуститься с ядром любой версии.
            На крайняк, запустить виртуалку.
            Ответить
            • > запуститься с ядром любой версии
              Наивный…
              Ответить
              • > Наивный…

                Так оно ж даже четвёртое ещё года пару лет назад запускалось на 486 с 16 Мб оперативы. Я чего-то не понимаю?
                Ответить
                • >Я чего-то не понимаю?
                  Софт полагается на системные вызовы. Их тупо нет.
                  Плюс всё что старше 2004-2005 — это уже совершенно новое железо, не факт что 2.2 его нормально поддерживает.

                  Для окаменелого бородатого говна мамомнта (2.2) если ifdefы и были, их давно повыпиливали.
                  Ответить
                  • Железо в теории должно уметь обратную совместимость, но могут быть сюрпризы, тут ты прав

                    2.2 будет не уметь ACPI наверняка, не будет PCI Express, может не мочь USB HID (клаву на USB), а современные firmware уже могут и не уметь конфигурировать железо сами, немочь эмулировать i8042 вместо usb hid итд
                    Ответить
                    • А EFI? А GPT?

                      Думаю это первый же бугурт: система тупо не сможет загрузиться, потому что не сможет прочитать партиции с диска.
                      Ответить
                      • У меня MBR, кстати. Но новый GRUB может не завестись со старым ядром потому что boot protocol протух до появления grub 2.

                        SATA/AHCI точно не поймет, кстати. Надо будет в эмуляцию IDE грузиться
                        Ответить
            • собери себе ядро 2.2 и запустись с ним по приколу)
              Ответить
              • Ты на что-то намекаешь? Ну попробую…
                Ответить
                • Он зелёный забыл просто.
                  Ответить
                • Я намекаю минимум на то, что часть юзерленда может расчитывать на linux abi (сисколы, которых нет в старых ядрах, на инструкцию SYSENTER итд) так что в лучшем случае тебе придется его пересобрать, а в худшем он сломается

                  ну вот iptables или iproute2 (ip/tc/ss) по понятным причинам работать в 2.2. не будет
                  Ответить
                  • Пиздец. Тогда, как стану пробовать бздю и солярис, заодно попробую идти по версиям ядра в обратном направлении с небольшим шагом, и посмотреть, как быстро всё выйдет из строя.
                    Ответить
                    • довольно быстро станет скучно)

                      Кстати, тот факт что в бздях ядро не отделимо от юзерленда (всмысле собирается из того же source tree) часто преподносили как преимещуество бздей.

                      Теоретически есть Debian на GNU и FreeBSD ядре (Debian позиционирует себя как GNU, но не обязательно Linux) но это наверное надо по вене пустить чтобы собрать себе такого зверя
                      Ответить

    Добавить комментарий