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

 (обычно пишут без скобок: 

), где 

 — линейное отображение (см. ссылку 
realeugene), и соответственно 

 — векторы некоторых линейных пространств; 

 при этом известны, а 

 неизвестен. Однородное линейное уравнение — это когда 

, в противном случае оно неоднородное. Теперь представьте, что вы имеете некоторое одно решение 

 неоднородного уравнения 

, и знаете также множество 

 всех решений однородного 

. Пользуясь свойствами линейности 

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

: возьмём любое решение неоднородного уравнения 

; его можно представить как 

. Раз это решение, то 

, что равносильно 

, то есть, что 

 — решение соответствующего однородного уравнения. (Это доказательство в обе стороны, но может выглядеть однобоким.)
(Обычные линейные уравнения одной вещественной переменной и системы из многих уравнений от вещественных переменных получатся, если ввести на пространствах, на которых действует 

, базисы, и для координат 

 получится обычная матричная система.)
Вам наверно интересно, как это стыкуется с теми определениями линейности (систем) полиномиальных уравнений. Тут всё просто: они должны получаться из какого-то такого линейного уравнения, а потому каждое из уравнений системы должно иметь вид 

, где 

 известные. Если добавить в левую часть хоть один моном с произведением нескольких неизвестных (и полной степенью выше 1), она станет нелинейной относительно всего набора неизвестных разом.
Тогда общее решение неоднородного уравнения будет... Я даже не знаю, как сложить частное решение ЛНУ с общим решением ЛДУ и как это записать.
Параметрически. Общее решение 

 имеет вид 

 (например), 

, частное решение 

 запишем как 

. Теперь сложим и получим 

.
P. S. А уравнения на функции будут отличаться тем, что неизвестная функция 

 — это как бесконечный набор неизвестных 

, для каждого 

 своя. Когда мы складываем функции, мы так же как выше складываем значения таких переменных для каждой переменной по отдельности. А дифференцирование — это линейное отображение: 

, 

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

, 

.