"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 dm_fomenok, (Updated )

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

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

                Ну доставь туда gcc и пересобери
                Ответить
              • Найди на dockerhub сборку нужной тебе версии php, такую, где собирается из исходников, и добавь нужные ключи компиляции, модули, что там у тебя.
                Ответить
        • А для джанги там есть чтобы ебаться поменьше надо было?
          Ответить
            • Ubuntu 16.04 LTS.

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

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

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

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

                          Пиздец. Шёл 2к18.
                          Питонисты всё переходили со 2ой версии на 3ю.
                          Ответить
                          • > депрекейтнут
                            Т.е. таки объявят устаревшим и пообещают лет через 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 уже тоже выкинули
                                    Ответить
                                • А если у тебя есть софт на двойке, как его портировать?
                                  Ответить
                                  • по-тихоньку, как и весь остальной софт

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

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

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

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

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

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

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

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

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

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

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

          будет жить вечно
          Ответить
            • У тебя есть печальный опыт огромных, сложных проектов на 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 были несовместимы друг с другом.

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

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

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

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

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

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

              Так оно ж даже четвёртое ещё года пару лет назад запускалось на 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 грузиться
                      Ответить
              • Я намекаю минимум на то, что часть юзерленда может расчитывать на linux abi (сисколы, которых нет в старых ядрах, на инструкцию SYSENTER итд) так что в лучшем случае тебе придется его пересобрать, а в худшем он сломается

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

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

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

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8