"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