2016-08-22 12 views
5

Я столкнулся с проблемой, для которой мне нужен список всех пакетов PEAR, которые необходимы (= используются) в моем проекте. Есть ли инструмент, который может получить мне список всех пакетов PEAR, используемых в моем исходном коде, просто прочитав код? Прочитать все пакеты, которые установлены, недостаточно, мне действительно нужны только те, которые действительно используются. Мне нужно это, чтобы я мог обновить пакеты или лучше - заменить их новыми библиотеками, устанавливаемыми через композитор.Найти все пакеты PEAR, необходимые в проекте (исходный код)

Я столкнулся с пакетом PEAR PHP_CompatInfo, но это не дает мне хороших результатов, и он также отображает только пакеты, которые зарегистрированы в самом плагине.

+0

Какую версию PHP вы используете? –

+0

Я запускаю PHP 5.3. но если это поможет, я могу перейти на любую версию 5.x – Asped

ответ

2

Я бы сначала оценить, что PEAR классов установлены в системе

, если вы считаете, что некоторые Libs, используемые в проекте может отсутствовать, вы должны загрузить локально весь репозиторий Груши

скачать все пакеты выполнения:

pear config-set preferred_state alpha 
pear remote-list | awk '{print $1}' > tmp-list ; tail -n +5 tmp-list > pear-list ; rm tmp-list 
cat pear-list | xargs -n 1 pear install 

Затем, чтобы создать список всех классов:

cd /usr/share/php #(or different path to pear libs) 

find . ! -path "*/tests/*" ! -path "*/examples/*" -name "*.php" -type f | xargs grep -Pho "^class ([a-zA-Z0-9_]+)" | sed -e "s/^class //" -e "" > all_pear.txt 

Это было бы создать список всех классов Груши сохраненных в all_pear.txt

Тогда я хотел бы найти все ссылки в моем коде

cd my_project; 

while read line; do find . -name "*.php" -type f | xargs grep -Pho $line; done < path/to/all_pear.txt | sort | uniq > used_classes.txt 

Это создаст список от всех классов PEAR, используемых в проекте, и это экономит список в файл used_classes.txt

+0

, похоже, будет хорошим решением, однако вам нужно, чтобы все загруженные груши загружались сначала + Я все еще получаю некоторые странные пакеты, такие как «C» или «abc», «d», о котором я понятия не имею о – Asped

+0

Возможно, эти «a» классы «b» поступают из тестовых каталогов, которые я обновил, и исключил оба теста и примеры каталогов. Также добавлены основные инструкции по загрузке всех классов pear .. (еще во время загрузки некоторые библиотеки показывают, что некоторые расширения PHP отсутствуют), поэтому, вероятно, должен быть лучший способ загрузить все пакеты без проверки зависимостей. –

+0

Мне в основном не нравится идея, что мне приходится загрязнять мою систему, устанавливая все пакеты груши только для поиска в них. Но я предполагаю, что в моем случае мне не нужно, поскольку мое приложение работает, поэтому я предполагаю, что все библиотеки, которые мне нужны, уже установлены. Я просто хочу отфильтровать те, которые мне не нужны – Asped